@jingyi0605/codingns 0.9.0 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/public/assets/{AdaptiveButlerPage-B17QiMyT.js → AdaptiveButlerPage-kkJDsnCO.js} +2 -2
  2. package/dist/public/assets/{App-CFBwDUNA.js → App-DrNI9lWA.js} +6 -6
  3. package/dist/public/assets/{BootstrapPage-W5wU3BPh.js → BootstrapPage-QgVH5Mps.js} +1 -1
  4. package/dist/public/assets/{ConversationPage-DQLX1bUh.js → ConversationPage-DVk8VfIj.js} +1 -1
  5. package/dist/public/assets/{DesktopDetachPreviewPage-DTPeuAW-.js → DesktopDetachPreviewPage-BhfP0TpH.js} +1 -1
  6. package/dist/public/assets/{DesktopModal-6ii53_Y9.js → DesktopModal-DRmDrv0S.js} +1 -1
  7. package/dist/public/assets/DesktopWindowPage-DNbJXnSs.js +2 -0
  8. package/dist/public/assets/FileContextPanel---fLO4ve.js +1 -0
  9. package/dist/public/assets/GitSidebar-sXUE0TqT.js +6 -0
  10. package/dist/public/assets/MobileCreateSessionSheet-BftZ5pvb.js +1 -0
  11. package/dist/public/assets/{MobileSheet-opTWyRe1.js → MobileSheet-nw5SCa3N.js} +1 -1
  12. package/dist/public/assets/{MobileTopHeaderFrame-BbNON3Y4.js → MobileTopHeaderFrame-DH_D02Wy.js} +1 -1
  13. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-BZEzPeMj.js → MobileWorkspaceSwitcherHeader-2K406G5p.js} +1 -1
  14. package/dist/public/assets/{PluginAccessOverview-mQDmAljp.js → PluginAccessOverview-BVJihw3D.js} +1 -1
  15. package/dist/public/assets/{PluginContainerPage-CcxUJpM4.js → PluginContainerPage-CR4vStvr.js} +1 -1
  16. package/dist/public/assets/{PluginDetailPage-D5--ACIt.js → PluginDetailPage-CrMX0Mnm.js} +1 -1
  17. package/dist/public/assets/{PluginsListPage-D_oJxYXT.js → PluginsListPage-FtIL71Yg.js} +1 -1
  18. package/dist/public/assets/{RelayConnectEntryPage-DROxpnkv.js → RelayConnectEntryPage-Bt1apX53.js} +1 -1
  19. package/dist/public/assets/{ServerSettingsModal-CUUOPqSe.js → ServerSettingsModal-D-guzPrI.js} +1 -1
  20. package/dist/public/assets/{SessionIndexPage-C2Jxh6Gp.js → SessionIndexPage-CX2FppcJ.js} +1 -1
  21. package/dist/public/assets/SettingsPage-BI2Olcvr.js +2 -0
  22. package/dist/public/assets/TerminalManagerPanel-B5MKGPy-.js +1 -0
  23. package/dist/public/assets/{TerminalPage-CwWyFDj8.js → TerminalPage-C2dTNGHK.js} +1 -1
  24. package/dist/public/assets/{TerminalRuntimeFallbackModal-CSVVbO8r.js → TerminalRuntimeFallbackModal-DAqOxFD8.js} +1 -1
  25. package/dist/public/assets/{ToolFilesPage-QBEY8oCf.js → ToolFilesPage-IsNwyE6T.js} +1 -1
  26. package/dist/public/assets/{ToolGitPage-BKoZ2l9v.js → ToolGitPage-BK1JBERN.js} +1 -1
  27. package/dist/public/assets/{ToolProcessesPage-BOH0ib4G.js → ToolProcessesPage-DwTYUQCK.js} +1 -1
  28. package/dist/public/assets/{ToolsHomePage-BcMZ3BCQ.js → ToolsHomePage-BLOy7lPg.js} +1 -1
  29. package/dist/public/assets/{WorkbenchLandingPage-B5zoppEl.js → WorkbenchLandingPage-CqZKR6EA.js} +1 -1
  30. package/dist/public/assets/WorkbenchLayout-CJHQtwuL.js +1022 -0
  31. package/dist/public/assets/{WorkbenchModal-NGmPgqaE.js → WorkbenchModal-BM-OeW-b.js} +1 -1
  32. package/dist/public/assets/WorkbenchShellRoute-2bKI6Q9k.js +1 -0
  33. package/dist/public/assets/WorkbenchShellRoute-BjuZD101.css +1 -0
  34. package/dist/public/assets/WorkspaceDebugDetailPage-BMsEN5iG.js +1 -0
  35. package/dist/public/assets/WorkspaceDetailPage-5H9Gosx2.js +1 -0
  36. package/dist/public/assets/WorkspaceHomePage-DQiXKgiP.js +1 -0
  37. package/dist/public/assets/{client-runtime-manager-DXbI9K1K.js → client-runtime-manager-CgPJq21V.js} +1 -1
  38. package/dist/public/assets/index-BARqMVSw.css +1 -0
  39. package/dist/public/assets/index-BUoNjVrY.js +50 -0
  40. package/dist/public/assets/{login-direct-candidate-resolver-DkKyFtQJ.js → login-direct-candidate-resolver-CGaxAXV8.js} +1 -1
  41. package/dist/public/assets/{plugin-permission-copy-CzN269Bk.js → plugin-permission-copy-BR9gWy8b.js} +1 -1
  42. package/dist/public/assets/{plugins-api-Bv9DHpLF.js → plugins-api-CdCsrG2e.js} +1 -1
  43. package/dist/public/assets/{preferences-service-D2ISL2Zz.js → preferences-service-lOhnlxzP.js} +1 -1
  44. package/dist/public/assets/{relay-entry-Bg0OisQy.js → relay-entry-CQpxTS8y.js} +1 -1
  45. package/dist/public/assets/{terminal-runtime-meta-C8t-CIDF.js → terminal-runtime-meta-oteTx66X.js} +1 -1
  46. package/dist/public/assets/useRegisteredDebugTemplates-Bu2ykZ6s.js +1 -0
  47. package/dist/public/assets/workbench-navigation-DlgXuFW2.js +1 -0
  48. package/dist/public/index.html +2 -2
  49. package/dist/server/config/env.d.ts +1 -0
  50. package/dist/server/config/env.js +3 -0
  51. package/dist/server/config/env.js.map +1 -1
  52. package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.js.map +1 -1
  53. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js.map +1 -1
  54. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js +2 -2
  55. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js.map +1 -1
  56. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.d.ts +20 -3
  57. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js +3 -3
  58. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js.map +1 -1
  59. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +32 -0
  60. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +93 -0
  61. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +1 -0
  62. package/dist/server/modules/butler/assistant-sandbox-service.d.ts +69 -0
  63. package/dist/server/modules/butler/assistant-sandbox-service.js +399 -0
  64. package/dist/server/modules/butler/assistant-sandbox-service.js.map +1 -0
  65. package/dist/server/modules/butler/butler-follow-up-service.d.ts +3 -0
  66. package/dist/server/modules/butler/butler-follow-up-service.js +11 -1
  67. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  68. package/dist/server/modules/butler/butler-inbox-service.d.ts +3 -0
  69. package/dist/server/modules/butler/butler-inbox-service.js +14 -2
  70. package/dist/server/modules/butler/butler-inbox-service.js.map +1 -1
  71. package/dist/server/modules/butler/butler-session-service.d.ts +3 -0
  72. package/dist/server/modules/butler/butler-session-service.js +18 -0
  73. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  74. package/dist/server/modules/channels/wechat-claw-client.d.ts +51 -0
  75. package/dist/server/modules/channels/wechat-claw-client.js +245 -0
  76. package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
  77. package/dist/server/modules/file/file-controller.d.ts +11 -2
  78. package/dist/server/modules/file/file-controller.js +404 -17
  79. package/dist/server/modules/file/file-controller.js.map +1 -1
  80. package/dist/server/modules/file/file-search-service.js +200 -12
  81. package/dist/server/modules/file/file-search-service.js.map +1 -1
  82. package/dist/server/modules/file/runtime/codingns-workspace-bridge.js +18 -5
  83. package/dist/server/modules/file/workspace-file-bridge-service.d.ts +9 -0
  84. package/dist/server/modules/file/workspace-file-bridge-service.js +3 -0
  85. package/dist/server/modules/file/workspace-file-bridge-service.js.map +1 -1
  86. package/dist/server/modules/file/workspace-file-bridge-watch-service.d.ts +9 -0
  87. package/dist/server/modules/file/workspace-file-bridge-watch-service.js +28 -0
  88. package/dist/server/modules/file/workspace-file-bridge-watch-service.js.map +1 -1
  89. package/dist/server/modules/tasks/task-types.d.ts +1 -0
  90. package/dist/server/modules/tasks/task-types.js +1 -0
  91. package/dist/server/modules/tasks/task-types.js.map +1 -1
  92. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.d.ts +1 -1
  93. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js +22 -5
  94. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js.map +1 -1
  95. package/dist/server/modules/workbench/workbench-controller.d.ts +5 -0
  96. package/dist/server/modules/workbench/workbench-controller.js +20 -0
  97. package/dist/server/modules/workbench/workbench-controller.js.map +1 -1
  98. package/dist/server/modules/workbench/workbench-service.d.ts +6 -6
  99. package/dist/server/modules/workbench/workbench-service.js +33 -36
  100. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  101. package/dist/server/modules/workspace/affairs-library-controller.d.ts +8 -0
  102. package/dist/server/modules/workspace/affairs-library-controller.js +11 -0
  103. package/dist/server/modules/workspace/affairs-library-controller.js.map +1 -1
  104. package/dist/server/modules/workspace/affairs-library-preview-link-service.d.ts +6 -0
  105. package/dist/server/modules/workspace/affairs-library-preview-link-service.js +12 -2
  106. package/dist/server/modules/workspace/affairs-library-preview-link-service.js.map +1 -1
  107. package/dist/server/modules/workspace/affairs-library-service.d.ts +9 -0
  108. package/dist/server/modules/workspace/affairs-library-service.js +182 -42
  109. package/dist/server/modules/workspace/affairs-library-service.js.map +1 -1
  110. package/dist/server/modules/workspace/affairs-lightweight-session-controller.d.ts +8 -0
  111. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js +55 -8
  112. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js.map +1 -1
  113. package/dist/server/modules/workspace/affairs-lightweight-session-service.d.ts +13 -0
  114. package/dist/server/modules/workspace/affairs-lightweight-session-service.js +167 -21
  115. package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -1
  116. package/dist/server/modules/workspace/affairs-tag-controller.d.ts +3 -0
  117. package/dist/server/modules/workspace/affairs-tag-controller.js +5 -0
  118. package/dist/server/modules/workspace/affairs-tag-controller.js.map +1 -1
  119. package/dist/server/modules/workspace/affairs-tag-service.d.ts +22 -1
  120. package/dist/server/modules/workspace/affairs-tag-service.js +41 -2
  121. package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -1
  122. package/dist/server/modules/workspace/teable-api-client.d.ts +118 -0
  123. package/dist/server/modules/workspace/teable-api-client.js +142 -0
  124. package/dist/server/modules/workspace/teable-api-client.js.map +1 -0
  125. package/dist/server/modules/workspace/teable-catalog-controller.d.ts +18 -0
  126. package/dist/server/modules/workspace/teable-catalog-controller.js +17 -0
  127. package/dist/server/modules/workspace/teable-catalog-controller.js.map +1 -0
  128. package/dist/server/modules/workspace/teable-catalog-service.d.ts +36 -0
  129. package/dist/server/modules/workspace/teable-catalog-service.js +124 -0
  130. package/dist/server/modules/workspace/teable-catalog-service.js.map +1 -0
  131. package/dist/server/modules/workspace/teable-credential-service.d.ts +8 -0
  132. package/dist/server/modules/workspace/teable-credential-service.js +37 -0
  133. package/dist/server/modules/workspace/teable-credential-service.js.map +1 -0
  134. package/dist/server/modules/workspace/teable-field-mapping-controller.d.ts +25 -0
  135. package/dist/server/modules/workspace/teable-field-mapping-controller.js +31 -0
  136. package/dist/server/modules/workspace/teable-field-mapping-controller.js.map +1 -0
  137. package/dist/server/modules/workspace/teable-field-mapping-service.d.ts +38 -0
  138. package/dist/server/modules/workspace/teable-field-mapping-service.js +215 -0
  139. package/dist/server/modules/workspace/teable-field-mapping-service.js.map +1 -0
  140. package/dist/server/modules/workspace/teable-global-binding-controller.d.ts +22 -0
  141. package/dist/server/modules/workspace/teable-global-binding-controller.js +25 -0
  142. package/dist/server/modules/workspace/teable-global-binding-controller.js.map +1 -0
  143. package/dist/server/modules/workspace/teable-global-binding-service.d.ts +35 -0
  144. package/dist/server/modules/workspace/teable-global-binding-service.js +151 -0
  145. package/dist/server/modules/workspace/teable-global-binding-service.js.map +1 -0
  146. package/dist/server/modules/workspace/teable-mirror-sync-controller.d.ts +29 -0
  147. package/dist/server/modules/workspace/teable-mirror-sync-controller.js +50 -0
  148. package/dist/server/modules/workspace/teable-mirror-sync-controller.js.map +1 -0
  149. package/dist/server/modules/workspace/teable-mirror-sync-service.d.ts +157 -0
  150. package/dist/server/modules/workspace/teable-mirror-sync-service.js +917 -0
  151. package/dist/server/modules/workspace/teable-mirror-sync-service.js.map +1 -0
  152. package/dist/server/modules/workspace/teable-runtime-controller.d.ts +58 -0
  153. package/dist/server/modules/workspace/teable-runtime-controller.js +60 -0
  154. package/dist/server/modules/workspace/teable-runtime-controller.js.map +1 -0
  155. package/dist/server/modules/workspace/teable-runtime-service.d.ts +96 -0
  156. package/dist/server/modules/workspace/teable-runtime-service.js +362 -0
  157. package/dist/server/modules/workspace/teable-runtime-service.js.map +1 -0
  158. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.d.ts +22 -0
  159. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js +20 -0
  160. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js.map +1 -0
  161. package/dist/server/modules/workspace/teable-workbench-sync-config-service.d.ts +22 -0
  162. package/dist/server/modules/workspace/teable-workbench-sync-config-service.js +159 -0
  163. package/dist/server/modules/workspace/teable-workbench-sync-config-service.js.map +1 -0
  164. package/dist/server/routes/affairs.d.ts +9 -1
  165. package/dist/server/routes/affairs.js +120 -1
  166. package/dist/server/routes/affairs.js.map +1 -1
  167. package/dist/server/routes/workbench.js +15 -0
  168. package/dist/server/routes/workbench.js.map +1 -1
  169. package/dist/server/routes/workspaces.js +51 -41
  170. package/dist/server/routes/workspaces.js.map +1 -1
  171. package/dist/server/server/create-server.d.ts +14 -0
  172. package/dist/server/server/create-server.js +73 -7
  173. package/dist/server/server/create-server.js.map +1 -1
  174. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +18 -0
  175. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +191 -0
  176. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +1 -0
  177. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js +8 -5
  178. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js.map +1 -1
  179. package/dist/server/storage/repositories/user-teable-credential-repository.d.ts +9 -0
  180. package/dist/server/storage/repositories/user-teable-credential-repository.js +45 -0
  181. package/dist/server/storage/repositories/user-teable-credential-repository.js.map +1 -0
  182. package/dist/server/storage/repositories/user-teable-field-mapping-repository.d.ts +10 -0
  183. package/dist/server/storage/repositories/user-teable-field-mapping-repository.js +69 -0
  184. package/dist/server/storage/repositories/user-teable-field-mapping-repository.js.map +1 -0
  185. package/dist/server/storage/repositories/user-teable-global-setting-repository.d.ts +8 -0
  186. package/dist/server/storage/repositories/user-teable-global-setting-repository.js +52 -0
  187. package/dist/server/storage/repositories/user-teable-global-setting-repository.js.map +1 -0
  188. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.d.ts +9 -0
  189. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js +66 -0
  190. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js.map +1 -0
  191. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.d.ts +9 -0
  192. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js +67 -0
  193. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js.map +1 -0
  194. package/dist/server/storage/repositories/user-teable-sync-log-repository.d.ts +14 -0
  195. package/dist/server/storage/repositories/user-teable-sync-log-repository.js +97 -0
  196. package/dist/server/storage/repositories/user-teable-sync-log-repository.js.map +1 -0
  197. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.d.ts +8 -0
  198. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js +55 -0
  199. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js.map +1 -0
  200. package/dist/server/storage/sqlite/client.js +404 -1
  201. package/dist/server/storage/sqlite/client.js.map +1 -1
  202. package/dist/server/storage/sqlite/schema.sql +167 -1
  203. package/dist/server/types/domain.d.ts +106 -0
  204. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +22 -3
  205. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +29 -2
  206. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -1
  207. package/node_modules/@codingns/session-sync-core/package.json +3 -1
  208. package/package.json +1 -1
  209. package/dist/public/assets/DesktopWindowPage-D0blSuKd.js +0 -2
  210. package/dist/public/assets/FileContextPanel-BrKO8Xt6.js +0 -1
  211. package/dist/public/assets/GitSidebar-BdwiDtOr.js +0 -6
  212. package/dist/public/assets/MobileCreateSessionSheet-Cx_dBiBb.js +0 -1
  213. package/dist/public/assets/SettingsPage-BlAZCHsy.js +0 -2
  214. package/dist/public/assets/TerminalManagerPanel-CjzbiWjl.js +0 -1
  215. package/dist/public/assets/WorkbenchLayout-CikJBS62.js +0 -1019
  216. package/dist/public/assets/WorkbenchShellRoute-BbbSOiZw.js +0 -1
  217. package/dist/public/assets/WorkbenchShellRoute-DT3VMjWD.css +0 -1
  218. package/dist/public/assets/WorkspaceDebugDetailPage-CVivdPx5.js +0 -1
  219. package/dist/public/assets/WorkspaceDetailPage-DgOSjscR.js +0 -1
  220. package/dist/public/assets/WorkspaceHomePage-HPa7M_Vh.js +0 -1
  221. package/dist/public/assets/index-BxJPQpFM.css +0 -1
  222. package/dist/public/assets/index-CeXGOT_T.js +0 -50
  223. package/dist/public/assets/useRegisteredDebugTemplates-Bol3NVfN.js +0 -1
  224. package/dist/public/assets/workbench-navigation-B7IjRQd8.js +0 -1
@@ -1,2 +0,0 @@
1
- import{b as r,j as e,t as s,C as F,c as He,e as oe,w as Te,A as fe,M as ve,N as Vs,O as $t,P as gs,Q as Kt,S as Fs,h as Gt,f as Jt,T as ms,q as Qt,n as Zt,d as hs,m as Yt}from"./index-CeXGOT_T.js";import{g as Xt,j as _s,k as en,l as sn,m as tn,n as nn,e as Ve,f as yt,u as Bs,o as an,p as ln,c as rn,L as jt,q as Nt,s as wt}from"./App-CFBwDUNA.js";import{R as qs,bq as cn,br as St,bs as se,bt as on,bu as ps,bv as dn,a0 as un,bw as gn,bx as mn,by as hn,G as pn,H as fn,u as Le,f as kt,bz as Ee}from"./WorkbenchLayout-CikJBS62.js";import{M as bn,D as Ce}from"./DesktopModal-6ii53_Y9.js";import{W as De}from"./WorkbenchModal-NGmPgqaE.js";import{j as G,k as Y,M as ee,C as X,J as K,A as de,B as ce,N as xn}from"./workbench-navigation-B7IjRQd8.js";import{M as ye}from"./MobileSheet-opTWyRe1.js";import{l as vn,g as yn,a as jn,b as Nn,r as wn,d as Sn,e as kn}from"./plugins-api-Bv9DHpLF.js";import{P as Tn}from"./PluginAccessOverview-mQDmAljp.js";import{M as Cn}from"./MobileTopHeaderFrame-BbNON3Y4.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-Bg0OisQy.js";import"./plugin-permission-copy-CzN269Bk.js";const Ws=2e4,Dn=1e3,Mn=5e3;function Pn({isOpen:t,onClose:a}){const[n,c]=r.useState(null),[o,m]=r.useState(null),[v,j]=r.useState(!1),[p,D]=r.useState(!1),[d,y]=r.useState(null),k=r.useRef(null);if(r.useEffect(()=>{if(!t)return;let g=!1;async function x(){j(!0),y(null),m(null);try{const h=await F.request("/api/observability/runtime/session",{method:"POST",body:JSON.stringify({ttlMs:Ws})});if(g){await fs(h.sessionId);return}k.current=h.sessionId,c(h);const f=await zs(h.sessionId);if(g){await fs(h.sessionId);return}m(f)}catch(h){g||y(bs(h))}finally{g||j(!1)}}return x(),()=>{g=!0;const h=k.current;k.current=null,c(null),m(null),j(!1),D(!1),y(null),h&&fs(h)}},[t]),r.useEffect(()=>{const g=(n==null?void 0:n.sessionId)??null;if(!t||!g)return;const x=g;let h=!1;async function f(){D(!0);try{const N=await zs(x);h||(m(N),y(null))}catch(N){h||y(bs(N))}finally{h||D(!1)}}const l=window.setInterval(()=>{f()},Dn);return()=>{h=!0,window.clearInterval(l)}},[t,n==null?void 0:n.sessionId]),r.useEffect(()=>{const g=(n==null?void 0:n.sessionId)??null;if(!t||!g)return;const x=g;let h=!1;async function f(){try{const N=await F.request(`/api/observability/runtime/session/${x}/heartbeat`,{method:"POST",body:JSON.stringify({ttlMs:Ws})});h||c(N)}catch(N){h||y(bs(N))}}const l=window.setInterval(()=>{f()},Mn);return()=>{h=!0,window.clearInterval(l)}},[t,n==null?void 0:n.sessionId]),!t||typeof document>"u")return null;const w=Object.entries((o==null?void 0:o.backgroundTasks.taskTypes)??{}),O=(o==null?void 0:o.registeredTasks)??[],b=Object.entries((o==null?void 0:o.schedulers.schedulers)??{}),P=Object.entries((o==null?void 0:o.backgroundTasks.totals)??{});return Xt.createPortal(e.jsxs("div",{className:"workbench-modal-layer parallel-task-debug-modal-layer","aria-hidden":!t,children:[e.jsx("button",{type:"button",className:"workbench-modal-backdrop parallel-task-debug-modal-backdrop","aria-label":s("settings.parallelTaskDebugClose"),onClick:a}),e.jsxs("div",{className:"workbench-modal-card surface-card parallel-task-debug-modal-card",role:"dialog","aria-modal":"true","aria-labelledby":"parallel-task-debug-title",children:[e.jsxs("div",{className:"workbench-modal-header",children:[e.jsxs("div",{className:"workbench-modal-title-wrap",children:[e.jsx("h2",{id:"parallel-task-debug-title",children:s("settings.parallelTaskDebugModalTitle")}),e.jsx("p",{children:s("settings.parallelTaskDebugModalDescription")})]}),e.jsxs("div",{className:"workbench-modal-header-actions",children:[e.jsx("span",{className:"parallel-task-debug-status-chip","data-tone":d?"error":"active",children:d?s("settings.parallelTaskDebugStatusError"):s("settings.parallelTaskDebugStatusActive")}),e.jsx(bn,{onClick:a,"aria-label":s("settings.parallelTaskDebugClose")})]})]}),e.jsxs("div",{className:"workbench-modal-body parallel-task-debug-body",children:[e.jsxs("div",{className:"parallel-task-debug-meta-grid",children:[e.jsxs("div",{className:"parallel-task-debug-meta-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugObservedAt")}),e.jsx("strong",{children:xs(o==null?void 0:o.observedAt)})]}),e.jsxs("div",{className:"parallel-task-debug-meta-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugSessionExpireAt")}),e.jsx("strong",{children:xs(n==null?void 0:n.expiresAt)})]}),e.jsxs("div",{className:"parallel-task-debug-meta-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugSessionTtl")}),e.jsx("strong",{children:An((n==null?void 0:n.ttlMs)??null)})]}),e.jsxs("div",{className:"parallel-task-debug-meta-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugCollectorState")}),e.jsx("strong",{children:o!=null&&o.eventLoop.enabled?s("settings.parallelTaskDebugCollectorEnabled"):s("settings.parallelTaskDebugCollectorDisabled")})]})]}),v?e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugLoading")}):null,!v&&d?e.jsx("div",{className:"parallel-task-debug-error",children:d}):null,!v&&!d&&o?e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugCountersTitle")}),e.jsx("span",{children:p?s("common.loading"):s("settings.parallelTaskDebugAutoRefresh")})]}),e.jsx("div",{className:"parallel-task-debug-counter-grid",children:P.map(([g,x])=>e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:En(g)}),e.jsx("strong",{children:x})]},g))})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugRegisteredTasksTitle")}),e.jsx("span",{children:O.length})]}),O.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:O.map(g=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:g.taskType}),e.jsx("span",{children:vs(g.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCategory"),": ",$s(g.taskType)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRuntime"),": ",Ks(g.executionLane,g.taskType)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskTimeout"),": ",ae(g.timeoutMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskConcurrency"),": ",g.concurrency??s("common.none")]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRetry"),": ",g.retryMaxAttempts??s("common.none")]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskHelper"),": ",g.helperProcessHandler??s("common.none")]})]})]},g.taskType))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugRegisteredTasksEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugTaskMetricsTitle")}),e.jsx("span",{children:w.length})]}),w.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:w.map(([g,x])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:g}),e.jsx("span",{children:vs(x.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCategory"),": ",$s(g)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRuntime"),": ",Ks(x.executionLane,g)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitAvg"),": ",ae(x.waitMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunAvg"),": ",ae(x.runMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMax"),": ",ae(x.runMs.max)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugStartedCount"),": ",x.counters.started??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFinishedCount"),": ",x.counters.finished??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFailedCount"),": ",x.counters.failed??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugCacheHitCount"),": ",x.counters.cache_hit??0]})]})]},g))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugActiveTaskMetricsEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugSchedulerTitle")}),e.jsx("span",{children:b.length})]}),b.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:b.map(([g,x])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:g}),e.jsx("span",{children:x.lastIdle?s("settings.parallelTaskDebugIdle"):s("settings.parallelTaskDebugBusy")})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTickTotal"),": ",x.tickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugIdleTickTotal"),": ",x.idleTickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCountTotal"),": ",x.taskCountTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSchedulerErrorTotal"),": ",x.errorTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugLastDuration"),": ",ae(x.lastDurationMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugNextDelay"),": ",ae(x.nextDelayMs)]})]})]},g))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugEventLoopTitle")}),e.jsx("span",{children:o.eventLoop.enabled?s("settings.parallelTaskDebugCollectorEnabled"):s("settings.parallelTaskDebugCollectorDisabled")})]}),e.jsxs("div",{className:"parallel-task-debug-counter-grid",children:[e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopResolution")}),e.jsx("strong",{children:ae(o.eventLoop.resolutionMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMean")}),e.jsx("strong",{children:ae(o.eventLoop.meanMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP95")}),e.jsx("strong",{children:ae(o.eventLoop.p95Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP99")}),e.jsx("strong",{children:ae(o.eventLoop.p99Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMax")}),e.jsx("strong",{children:ae(o.eventLoop.maxMs)})]})]})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugRecentActivitiesTitle")}),e.jsx("span",{children:o.recentTaskActivities.length})]}),o.recentTaskActivities.length>0?e.jsx("div",{className:"parallel-task-debug-activity-list",children:o.recentTaskActivities.map(g=>e.jsxs("article",{className:"parallel-task-debug-activity-item",children:[e.jsxs("div",{className:"parallel-task-debug-activity-main",children:[e.jsxs("div",{className:"parallel-task-debug-activity-title-row",children:[e.jsx("strong",{children:g.taskType}),e.jsx("span",{children:On(g.eventType)}),e.jsx("span",{children:vs(g.executionLane)})]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugTaskKey"),": ",g.key]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugStatus"),": ",g.status?Rn(g.status):"-"]})]}),e.jsxs("div",{className:"parallel-task-debug-activity-meta",children:[e.jsx("span",{children:xs(g.recordedAt)}),e.jsxs("span",{children:[s("settings.parallelTaskDebugAttempt"),": ",g.attempt??"-"]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitMs"),": ",ae(g.waitMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMs"),": ",ae(g.runMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSource"),": ",g.source??"-"]}),g.errorMessage?e.jsxs("span",{children:[s("settings.parallelTaskDebugError"),": ",g.errorMessage]}):null]})]},g.eventId))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]})]}):null]})]})]}),document.body)}async function zs(t){return await F.request(`/api/observability/runtime?sessionId=${encodeURIComponent(t)}`)}async function fs(t){try{await F.request(`/api/observability/runtime/session/${t}`,{method:"DELETE"})}catch{}}function bs(t){return t instanceof Error&&t.message?t.message:s("settings.parallelTaskDebugLoadFailed")}function xs(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function ae(t){return t==null||Number.isNaN(t)?"-":`${Math.round(t*100)/100} ms`}function An(t){return t===null||Number.isNaN(t)?"-":`${Math.round(t/1e3)} s`}const Ln=new Set(["affairs.library_apply_config","affairs.library_index","affairs.library_export"]);function Tt(t){return Ln.has(t)}function $s(t){return Tt(t)?s("settings.parallelTaskDebugTaskCategoryBuiltinIndexer"):s("settings.parallelTaskDebugTaskCategoryGeneric")}function Ks(t,a){if(t==="helper_process"&&Tt(a))return s("settings.parallelTaskDebugTaskRuntimeBuiltinHelper");switch(t){case"host_background":return s("settings.parallelTaskDebugTaskRuntimeHostBackground");case"helper_process":return s("settings.parallelTaskDebugTaskRuntimeHelperProcess");case"external_process":return s("settings.parallelTaskDebugTaskRuntimeExternalProcess");default:return s("settings.parallelTaskDebugTaskRuntimeMainThread")}}function En(t){switch(t){case"enqueue":return s("settings.parallelTaskDebugMetricEnqueue");case"dedupe":return s("settings.parallelTaskDebugMetricDedupe");case"started":return s("settings.parallelTaskDebugMetricStarted");case"finished":return s("settings.parallelTaskDebugMetricFinished");case"failed":return s("settings.parallelTaskDebugMetricFailed");case"cancelled":return s("settings.parallelTaskDebugMetricCancelled");case"timeout":return s("settings.parallelTaskDebugMetricTimeout");case"cache_hit":return s("settings.parallelTaskDebugMetricCacheHit");default:return t}}function vs(t){switch(t){case"host_background":return s("settings.parallelTaskDebugLaneHostBackground");case"helper_process":return s("settings.parallelTaskDebugLaneHelperProcess");case"external_process":return s("settings.parallelTaskDebugLaneExternalProcess");default:return s("settings.parallelTaskDebugLaneRequestMainThread")}}function On(t){switch(t){case"enqueued":return s("settings.parallelTaskDebugEventEnqueued");case"deduped":return s("settings.parallelTaskDebugEventDeduped");case"started":return s("settings.parallelTaskDebugEventStarted");case"finished":return s("settings.parallelTaskDebugEventFinished");case"failed":return s("settings.parallelTaskDebugEventFailed");case"cancelled":return s("settings.parallelTaskDebugEventCancelled");case"timeout":return s("settings.parallelTaskDebugEventTimeout");case"cache_hit":return s("settings.parallelTaskDebugEventCacheHit");default:return t}}function Rn(t){switch(t){case"queued":return s("settings.parallelTaskDebugTaskStatusQueued");case"running":return s("settings.parallelTaskDebugTaskStatusRunning");case"succeeded":return s("settings.parallelTaskDebugTaskStatusSucceeded");case"failed":return s("settings.parallelTaskDebugTaskStatusFailed");case"cancelled":return s("settings.parallelTaskDebugTaskStatusCancelled");case"timeout":return s("settings.parallelTaskDebugTaskStatusTimeout");default:return t}}async function Gs(){const t=He(),a=oe.getState(),n=await t.bridge.getAndroidRuntimeInfo();if(!n.ok||!n.value)throw new Error(n.detail??"读取 Android 运行时信息失败。");const c=await F.request(`/api/client/release-manifest?channel=${encodeURIComponent(a.releaseChannel)}&platform=android-apk`),o=c.versionCode>n.value.versionCode;return{checkedAt:new Date().toISOString(),currentVersion:n.value.version,currentVersionCode:n.value.versionCode,hasUpdate:o,manifest:c,runtimeInfo:n.value}}async function Un(t){return He().bridge.installAndroidUpdate(t)}function In(){const[t,a]=r.useState(!1),[n,c]=r.useState(!1),[o,m]=r.useState(null),[v,j]=r.useState(null),[p,D]=r.useState(null),[d,y]=r.useState(!1),[k,w]=r.useState(null),O=r.useRef(!1);r.useEffect(()=>{if(k===null){O.current=!1;return}const g=k;async function x(){if(!O.current){O.current=!0;try{const l=await Gs();if(D(l.manifest),j(l.currentVersion),y(l.hasUpdate),!l.hasUpdate||l.currentVersionCode>=g){m(s("settings.androidInstallSucceeded"));return}m(s("settings.androidInstallCancelled"))}catch(l){m(l instanceof Error?l.message:s("settings.releaseCheckFailed"))}finally{w(null)}}}function h(){x()}function f(){document.visibilityState==="visible"&&x()}return window.addEventListener("focus",h),document.addEventListener("visibilitychange",f),()=>{window.removeEventListener("focus",h),document.removeEventListener("visibilitychange",f)}},[k]);async function b(){a(!0),m(null),w(null);try{const g=await Gs();D(g.manifest),j(g.currentVersion),y(g.hasUpdate),m(g.hasUpdate?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate"))}catch(g){m(g instanceof Error?g.message:s("settings.releaseCheckFailed"))}finally{a(!1)}}async function P(){if(p){c(!0),m(null),w(null);try{const g=await Un(p);if(g.status==="installer_started"){m(s("settings.androidInstallerStarted")),w(p.versionCode);return}if(g.status==="permission_required"){m(g.detail??s("settings.androidInstallPermissionRequired")),w(null);return}if(g.status==="already_up_to_date"){m(s("settings.releaseUpToDate")),y(!1),w(null);return}m(g.detail??s("settings.releaseInstallFailed")),w(null)}catch(g){m(g instanceof Error?g.message:s("settings.releaseInstallFailed")),w(null)}finally{c(!1)}}}return e.jsxs("div",{className:"settings-update-card",children:[e.jsxs("div",{className:"settings-update-summary",children:[e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseCurrentVersion")}),e.jsx("strong",{className:"settings-update-value",children:v??s("settings.releaseUnknownVersion")})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(p==null?void 0:p.version)??"-"})]})]}),o?e.jsx("p",{className:"settings-update-status","data-tone":d?"warning":"success",children:o}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:t||n,onClick:b,children:t?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!p||!d||n,onClick:P,children:n?s("common.loading"):s("settings.releaseInstallNow")})]})]})}function Fn(){const t=He(),a=t.isDesktop,[n,c]=r.useState(!1),[o,m]=r.useState(!1),[v,j]=r.useState(!1),[p,D]=r.useState(null),[d,y]=r.useState(null),k=_s(C=>C.latestState),w=_s(C=>C.pendingRestartVersion),O=(k==null?void 0:k.currentVersion)??null,b=(k==null?void 0:k.manifest)??null,P=(k==null?void 0:k.hasUpdate)??!1,g=!!w,x=g&&d!==w;async function h(){if(!g){c(!0),D(null);try{const C=await en({notify:"always"});D(Js(C.manifest,C.hasUpdate))}catch(C){D(C instanceof Error?C.message:s("settings.releaseCheckFailed"))}finally{c(!1)}}}async function f(){if(!(!b||!P||g)){m(!0),D(null);try{const C=await sn();if(!C.ok){D(C.detail??s("settings.releaseInstallFailed"));return}tn(b.version),y(null),D(s("settings.releaseRestartRequired"))}catch(C){D(C instanceof Error?C.message:s("settings.releaseInstallFailed"))}finally{m(!1)}}}async function l(){if(b!=null&&b.htmlUrl){j(!0);try{const C=await t.bridge.openExternal(b.htmlUrl);C.ok||D(C.detail??s("settings.releasePageOpenFailed"))}catch(C){D(C instanceof Error?C.message:s("settings.releasePageOpenFailed"))}finally{j(!1)}}}const N=!!(a&&b&&P&&!g),L=p??(a?g?s("settings.releaseRestartRequired"):k?Js(k.manifest,k.hasUpdate):null:s("settings.clientUpdateUnsupported"));return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-update-card",children:[e.jsxs("div",{className:"settings-update-summary",children:[e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseCurrentVersion")}),e.jsx("strong",{className:"settings-update-value",children:O??s("settings.releaseUnknownVersion")})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(b==null?void 0:b.version)??w??"-"})]})]}),L?e.jsx("p",{className:"settings-update-status","data-tone":Bn(b,P,L,g),children:L}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:!a||n||o||g,onClick:h,children:n?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!N||o,onClick:f,children:o?s("common.loading"):s("settings.releaseInstallNow")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:!(b!=null&&b.htmlUrl)||n||o||v,onClick:l,children:v?s("common.loading"):s("settings.releaseOpenPage")})]})]}),e.jsx(Hn,{open:x,version:w,onClose:()=>y(w)})]})}function Js(t,a){return a?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate")}function Bn(t,a,n,c){return n===s("settings.clientUpdateUnsupported")?"neutral":c||a?"warning":"success"}function Hn({open:t,version:a,onClose:n}){const[c,o]=r.useState(!1),[m,v]=r.useState(null);async function j(){o(!0),v(null);try{await nn()}catch(p){v(p instanceof Error?p.message:s("settings.releaseRestartFailed")),o(!1)}}return e.jsx(De,{open:t,title:s("settings.releaseRestartDialogTitle"),description:s("settings.releaseRestartDialogDescription",{version:a??"-"}),onClose:()=>{c||n()},children:e.jsxs("div",{className:"settings-update-card",children:[m?e.jsx("p",{className:"settings-update-status","data-tone":"danger",children:m}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:c,onClick:n,children:s("settings.releaseRestartLater")}),e.jsx("button",{className:"primary-button",type:"button",disabled:c,onClick:j,children:c?s("common.loading"):s("settings.releaseRestartConfirm")})]})]})})}function Ct(){const t=He();return t.platform==="desktop"?e.jsx(Fn,{}):t.platform==="android"?e.jsx(In,{}):e.jsx("div",{className:"settings-update-card",children:e.jsx("p",{className:"settings-update-status","data-tone":"neutral",children:s("settings.clientUpdateUnsupported")})})}const Vn="https://github.com/SaladDay/cc-switch-cli",_n="当前机器未安装 cc-switch-cli。这里集成的是 CC-Switch 的衍生 CLI 版本,不是 CC-Switch UI 版本。请先安装:",qn=/(https?:\/\/[^\s]+)/i;function Dt(){const t=Te(l=>{var N;return((N=l.session)==null?void 0:N.accessToken)??null}),[a,n]=r.useState(null),[c,o]=r.useState(!0),[m,v]=r.useState(null),[j,p]=r.useState(null),[D,d]=r.useState(null),[y,k]=r.useState(!1),[w,O]=r.useState("codex");r.useEffect(()=>{let l=!0;if(!t){n(null),p(null),d(null),o(!1);return}return(async()=>{o(!0);try{const L=await qs();if(!l)return;n(L),p(null),O(C=>Zs(L,C))}catch(L){if(!l)return;p(ys(L))}finally{l&&o(!1)}})(),()=>{l=!1}},[t]);async function b(){const l=await qs();n(l),p(null),O(N=>Zs(l,N))}async function P(){if(t){v("refresh"),p(null),d(null);try{await b(),d(s("settings.modelManagementRefreshSuccess"))}catch(l){p(ys(l))}finally{v(null)}}}async function g(l,N){if(!t||N.isCurrent)return;const L=Qs(l,N.id);v(L),p(null),d(null);try{const C=await cn({app:l,presetId:N.id});St(),n(S=>Wn(S,C)),d(s("settings.modelManagementSwitchSuccess",{app:C.displayName,preset:C.currentPresetName??N.name}))}catch(C){p(ys(C))}finally{v(null)}}const x=(a==null?void 0:a.items)??[],h=x.find(l=>l.app===w)??x[0]??null,f=$n(x);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-panel",children:e.jsxs("div",{className:"settings-release-card",children:[D?e.jsx("p",{className:"settings-release-status",children:D}):null,j?e.jsx("p",{className:"settings-release-status",children:j}):null,f?e.jsxs("section",{className:"settings-model-missing-state",children:[e.jsx("p",{className:"settings-model-missing-copy",children:f.message}),e.jsx("a",{className:"settings-tailscale-link settings-model-missing-link",href:f.url,rel:"noreferrer",target:"_blank",children:f.url})]}):x.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-grid",children:x.map(l=>e.jsxs("section",{className:"settings-model-card",children:[e.jsxs("div",{className:"settings-model-card-main",children:[e.jsxs("div",{className:"settings-model-card-copy",children:[e.jsx("strong",{className:"settings-model-card-title",children:l.displayName}),e.jsx("span",{className:"settings-model-card-status","data-status":l.status,children:zn(l.status)})]}),e.jsxs("div",{className:"settings-model-value-line",children:[e.jsx("strong",{className:"settings-model-preset-value",children:l.currentPresetName??s("settings.modelManagementPresetMissing")}),e.jsx("strong",{className:"settings-model-current-value",children:l.currentModel??s("settings.modelManagementModelUnknown")})]})]}),l.statusText?e.jsx("p",{className:"settings-model-card-note",children:l.statusText}):null]},l.app))}),e.jsx("div",{className:"settings-model-panel-actions",children:e.jsx("button",{className:"secondary-button settings-model-open-action",type:"button",disabled:!t||c,onClick:()=>{k(!0)},children:s("settings.modelManagementOpenSwitcher")})})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})}),e.jsxs(De,{open:y&&!f,title:s("settings.modelManagementModalTitle"),description:s("settings.modelManagementModalDescription"),className:"settings-model-modal",headerActions:e.jsx("button",{className:"secondary-button",type:"button",disabled:!t||c||m!==null,onClick:()=>{P()},children:m==="refresh"?s("common.loading"):s("settings.modelManagementRefresh")}),onClose:()=>k(!1),children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.modelManagementTabsLabel"),children:x.map(l=>{const N=(h==null?void 0:h.app)===l.app;return e.jsx("button",{type:"button",role:"tab",className:"settings-model-tab","aria-selected":N,"data-active":N?"true":"false",onClick:()=>O(l.app),children:l.displayName},l.app)})}),h?e.jsxs("section",{className:"settings-model-modal-panel",children:[e.jsxs("div",{className:"settings-model-modal-summary",children:[e.jsxs("div",{className:"settings-model-modal-summary-row",children:[e.jsx("span",{children:s("settings.modelManagementCurrentProfile")}),e.jsx("strong",{children:h.currentPresetName??s("settings.modelManagementPresetMissing")})]}),e.jsxs("div",{className:"settings-model-modal-summary-row",children:[e.jsx("span",{children:s("settings.modelManagementCurrentModel")}),e.jsx("strong",{children:h.currentModel??s("settings.modelManagementModelUnknown")})]})]}),h.statusText?e.jsx("p",{className:"settings-model-modal-note",children:h.statusText}):null,h.options.length>0?e.jsx("div",{className:"settings-model-switcher-list",children:h.options.map(l=>{const N=Qs(h.app,l.id);return e.jsxs("div",{className:"settings-model-switcher-item","data-current":l.isCurrent?"true":"false",children:[e.jsxs("div",{className:"settings-model-switcher-item-main",children:[e.jsx("strong",{children:l.name}),e.jsx("span",{children:l.model??s("settings.modelManagementModelUnknown")})]}),e.jsx("div",{className:"settings-model-switcher-item-actions",children:l.isCurrent?e.jsx("span",{className:"settings-model-card-status","data-status":"ready",children:s("settings.modelManagementCurrentTag")}):e.jsx("button",{className:"secondary-button settings-model-option-action",type:"button",disabled:c||m!==null||h.status!=="ready",onClick:()=>{g(h.app,l)},children:m===N?s("common.loading"):s("settings.modelManagementSwitchAction")})})]},`${h.app}:${l.id}`)})}):e.jsx("div",{className:"settings-model-empty",children:h.statusText??s("settings.modelManagementOptionsEmpty")})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})]})}function Qs(t,a){return`switch:${t}:${a}`}function Wn(t,a){return t&&{...t,scannedAt:new Date().toISOString(),items:t.items.map(n=>n.app===a.app?a:n)}}function Zs(t,a){var c;return t.items.some(o=>o.app===a)?a:((c=t.items[0])==null?void 0:c.app)??"codex"}function zn(t){switch(t){case"unconfigured":return s("settings.modelManagementStatusUnconfigured");case"unavailable":return s("settings.modelManagementStatusUnavailable");case"error":return s("settings.modelManagementStatusError");default:return s("settings.modelManagementStatusReady")}}function ys(t){return t instanceof fe?t.message||s("settings.modelManagementLoadFailed"):t instanceof Error?t.message:s("settings.modelManagementLoadFailed")}function $n(t){var c,o,m;if(t.length===0||!t.every(v=>v.status==="unavailable"&&!v.cliAvailable&&!!v.statusText))return null;const n=((m=(((o=(c=t[0])==null?void 0:c.statusText)==null?void 0:o.trim())??"").match(qn))==null?void 0:m[1])??Vn;return{message:_n,url:n}}function Mt({triggerClassName:t="settings-button",triggerLabel:a,mobile:n=!1}){const c=Te(S=>{var E;return((E=S.session)==null?void 0:E.accessToken)??null}),o=Te(S=>{var E;return((E=S.session)==null?void 0:E.user)??null}),[m,v]=r.useState(!1),[j,p]=r.useState(!1),[D,d]=r.useState(null),[y,k]=r.useState(null),[w,O]=r.useState(null),[b,P]=r.useState(null),[g,x]=r.useState(null),[h,f]=r.useState(Qe(null));r.useEffect(()=>{y&&f(Qe(y))},[y]),r.useEffect(()=>{let S=!0;if(!m)return;if(!c){k(null),O(null),x(null),P(null),p(!1);return}return(async()=>{p(!0),x(null);try{const[q,J]=await Promise.all([on(),ps()]);if(!S)return;k(q),O(J)}catch(q){if(!S)return;x(js(q))}finally{S&&p(!1)}})(),()=>{S=!1}},[c,m]);function l(){v(!1),P(null),x(null),f(Qe(y))}async function N(){if(c){d("check"),x(null),P(null);try{const S=await ps();O(S),P(s("settings.skillOnlyOfficeCheckSuccess"))}catch(S){x(js(S))}finally{d(null)}}}async function L(){if(c){d("save"),x(null),P(null);try{const S=await dn({enabled:h.enabled,serverUrl:h.serverUrl,publicBaseUrl:h.publicBaseUrl,callbackBaseUrl:h.callbackBaseUrl,userDisplayName:h.userDisplayName,userAvatarUrl:h.userAvatarUrl,jwtSecret:h.jwtSecret,clearJwtSecret:h.clearJwtSecret}),E=await ps();k(S),O(E),f(Qe(S)),P(s("settings.skillOnlyOfficeSaveSuccess"))}catch(S){x(js(S))}finally{d(null)}}}const C=e.jsxs("div",{className:"settings-onlyoffice-modal-layout",children:[e.jsx(G,{heading:s("settings.skillOnlyOfficeStatusLabel"),children:e.jsx("div",{className:"settings-onlyoffice-metrics",role:"list","aria-label":s("settings.skillOnlyOfficeStatusLabel"),children:Zn(w).map(S=>e.jsxs("div",{className:"settings-onlyoffice-metric-card","data-tone":S.tone,role:"listitem",tabIndex:0,children:[e.jsx("span",{className:"settings-onlyoffice-metric-label",children:S.label}),e.jsx("strong",{className:"settings-onlyoffice-metric-value",children:S.value}),e.jsx("div",{className:"settings-onlyoffice-metric-tooltip",role:"note",children:S.detail})]},S.key))})}),e.jsxs(G,{heading:s("settings.skillOnlyOfficeSectionTitle"),children:[e.jsx(Y,{label:s("settings.skillOnlyOfficeEnabledLabel"),children:e.jsxs("div",{className:"settings-onlyoffice-switch-field",children:[e.jsx(se,{checked:h.enabled,label:s("settings.skillOnlyOfficeEnabledLabel"),semanticRole:"switch",onChange:S=>{f(E=>({...E,enabled:S}))}}),e.jsx("span",{className:"settings-onlyoffice-switch-caption",children:h.enabled?s("common.enabled"):s("settings.skillOnlyOfficeStatusDisabled")})]})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeServerUrlLabel"),htmlFor:"onlyoffice-server-url",children:e.jsx("input",{id:"onlyoffice-server-url",className:"settings-text-input",value:h.serverUrl,onChange:S=>{f(E=>({...E,serverUrl:S.target.value}))},placeholder:s("settings.skillOnlyOfficeServerUrlPlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficePublicBaseUrlLabel"),htmlFor:"onlyoffice-public-base-url",children:e.jsx("input",{id:"onlyoffice-public-base-url",className:"settings-text-input",value:h.publicBaseUrl,onChange:S=>{f(E=>({...E,publicBaseUrl:S.target.value}))},placeholder:s("settings.skillOnlyOfficePublicBaseUrlPlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeCallbackBaseUrlLabel"),htmlFor:"onlyoffice-callback-base-url",children:e.jsx("input",{id:"onlyoffice-callback-base-url",className:"settings-text-input",value:h.callbackBaseUrl,onChange:S=>{f(E=>({...E,callbackBaseUrl:S.target.value}))},placeholder:s("settings.skillOnlyOfficeCallbackBaseUrlPlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeUserDisplayNameLabel"),description:s("settings.skillOnlyOfficeUserDisplayNameDescription",{username:(o==null?void 0:o.username)??"-"}),htmlFor:"onlyoffice-user-display-name",children:e.jsx("input",{id:"onlyoffice-user-display-name",className:"settings-text-input",value:h.userDisplayName,onChange:S=>{f(E=>({...E,userDisplayName:S.target.value}))},placeholder:s("settings.skillOnlyOfficeUserDisplayNamePlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeUserAvatarUrlLabel"),description:s("settings.skillOnlyOfficeUserAvatarUrlDescription"),htmlFor:"onlyoffice-user-avatar-url",children:e.jsx("input",{id:"onlyoffice-user-avatar-url",className:"settings-text-input",value:h.userAvatarUrl,onChange:S=>{f(E=>({...E,userAvatarUrl:S.target.value}))},placeholder:s("settings.skillOnlyOfficeUserAvatarUrlPlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeJwtSecretLabel"),htmlFor:"onlyoffice-jwt-secret",children:e.jsx("input",{id:"onlyoffice-jwt-secret",className:"settings-text-input",value:h.jwtSecret,onChange:S=>{f(E=>({...E,jwtSecret:S.target.value,clearJwtSecret:!1}))},placeholder:y!=null&&y.jwtSecretConfigured?s("settings.skillOnlyOfficeJwtSecretKeepPlaceholder"):s("settings.skillOnlyOfficeJwtSecretPlaceholder")})}),y!=null&&y.jwtSecretConfigured?e.jsx(Y,{label:s("settings.skillOnlyOfficeClearJwtSecretLabel"),children:e.jsxs("div",{className:"settings-onlyoffice-switch-field",children:[e.jsx(se,{checked:h.clearJwtSecret,label:s("settings.skillOnlyOfficeClearJwtSecretLabel"),semanticRole:"switch",onChange:S=>{f(E=>({...E,clearJwtSecret:S}))}}),e.jsx("span",{className:"settings-onlyoffice-switch-caption",children:h.clearJwtSecret?s("common.enabled"):s("common.disabled")})]})}):null]}),b?e.jsx("p",{className:"settings-release-status",children:b}):null,g?e.jsx("p",{className:"settings-release-status",children:g}):null,e.jsxs(ee,{className:"settings-onlyoffice-modal-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:l,children:s("common.cancel")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:j||D!==null,onClick:()=>{N()},children:D==="check"?s("settings.opencliLoading"):s("settings.skillOnlyOfficeCheckAction")}),e.jsx("button",{className:"primary-button",type:"button",disabled:j||D!==null,onClick:()=>{L()},children:D==="save"?s("butlerSettingsSaving"):s("settings.skillOnlyOfficeSaveAction")})]})]});return e.jsxs(e.Fragment,{children:[e.jsx("button",{className:t,type:"button",onClick:()=>{v(!0)},children:a??s("settings.skillOnlyOfficeOpenSettingsAction")}),n?e.jsx(ye,{open:m,title:s("settings.skillOnlyOfficeModalTitle"),description:s("settings.skillOnlyOfficeModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:l,children:C}):e.jsx(Ce,{open:m,title:s("settings.skillOnlyOfficeModalTitle"),description:s("settings.skillOnlyOfficeModalDescription"),size:"regular",layout:"form",className:"settings-onlyoffice-modal",bodyClassName:"settings-onlyoffice-modal-body",onClose:l,children:C})]})}function Qe(t){return{enabled:(t==null?void 0:t.enabled)??!1,serverUrl:(t==null?void 0:t.serverUrl)??"",publicBaseUrl:(t==null?void 0:t.publicBaseUrl)??"",callbackBaseUrl:(t==null?void 0:t.callbackBaseUrl)??"",userDisplayName:(t==null?void 0:t.userDisplayName)??"",userAvatarUrl:(t==null?void 0:t.userAvatarUrl)??"",jwtSecret:"",clearJwtSecret:!1}}function Kn(t){switch(t==null?void 0:t.state){case"ready":return s("settings.skillOnlyOfficeStatusReady");case"warning":return s("settings.skillOnlyOfficeStatusWarning");case"error":return s("settings.skillOnlyOfficeStatusError");case"misconfigured":return s("settings.skillOnlyOfficeStatusMisconfigured");case"disabled":return s("settings.skillOnlyOfficeStatusDisabled");default:return s("settings.skillOnlyOfficeStatusUnknown")}}function Gn(t){switch(t){case"ready":return"success";case"warning":case"misconfigured":return"warning";case"error":return"danger";case"disabled":default:return"default"}}function Jn(t){switch(t){case"pass":return s("settings.skillOnlyOfficeCheckPass");case"warn":return s("settings.skillOnlyOfficeCheckWarn");case"fail":return s("settings.skillOnlyOfficeCheckFail");case"skip":default:return s("settings.skillOnlyOfficeCheckSkip")}}function Qn(t){switch(t){case"pass":return"success";case"warn":return"warning";case"fail":return"danger";case"skip":default:return"default"}}function Zn(t){const a=[{key:"summary",label:s("settings.skillOnlyOfficeStatusLabel"),value:Kn(t),detail:(t==null?void 0:t.summary)??s("settings.skillOnlyOfficeStatusUnknown"),tone:Gn(t==null?void 0:t.state)}];for(const n of(t==null?void 0:t.checks)??[])a.push({key:n.key,label:n.label,value:Jn(n.status),detail:n.detail,tone:Qn(n.status)});return a}function js(t){return t instanceof fe||t instanceof Error&&t.message.trim().length>0?t.message:s("settings.skillLoadError")}const Yn=[{key:"streamingOutput",labelKey:"settings.providerManagementCapabilityStreaming"},{key:"toolCalls",labelKey:"settings.providerManagementCapabilityToolCalls"},{key:"assistantService",labelKey:"settings.providerManagementCapabilityAssistant"},{key:"sessionFork",labelKey:"settings.providerManagementCapabilityFork"},{key:"skillUsage",labelKey:"settings.providerManagementCapabilitySkill"}];function Pt(){const t=Ve(),a=Te(l=>{var N;return((N=l.session)==null?void 0:N.accessToken)??null}),[n,c]=r.useState(!1),[o,m]=r.useState(null),[v,j]=r.useState(null),[p,D]=r.useState(null),{items:d,loading:y}=un(n&&!!a),k=Yn.map(l=>({...l,label:s(l.labelKey)}));r.useEffect(()=>{a||(c(!1),m(null),j(null),D(null))},[a]);async function w(){if(a){D(null);try{await hn(!0)}catch(l){D(ws(l,"load"))}}}function O(){c(!0),j(null),D(null),a&&w()}async function b(l){if(!a)return;const N=!l.enabled;m(l.provider),D(null),j(null);try{await mn(l.provider,N),St(),j(N?s("settings.providerManagementEnableSuccess",{provider:l.displayName}):s("settings.providerManagementDisableSuccess",{provider:l.displayName}))}catch(L){D(ws(L,"save"))}m(null)}async function P(){if(a){D(null),j(null);try{await gn(),j(s("settings.providerManagementRefreshSuccess"))}catch(l){D(ws(l,"load"))}}}const g=d??[],x=g.filter(l=>l.enabled).length,h=g.filter(l=>!l.enabled).length,f=e.jsxs("div",{className:"settings-provider-modal-layout",children:[v?e.jsx("p",{className:"settings-provider-status",children:v}):null,p?e.jsx("p",{className:"settings-provider-error",children:p}):null,e.jsxs("div",{className:"settings-provider-summary-grid","aria-label":s("settings.providerManagementSummaryTitle"),children:[e.jsx(Ns,{label:s("settings.providerManagementSummaryEnabled"),value:String(x)}),e.jsx(Ns,{label:s("settings.providerManagementSummaryDisabled"),value:String(h)}),e.jsx(Ns,{label:s("settings.providerManagementSummaryTotal"),value:String(g.length)})]}),e.jsxs(G,{heading:s("settings.providerManagementMatrixTitle"),description:s("settings.providerManagementMatrixDescription"),className:"settings-provider-modal-section",children:[y&&g.length===0?e.jsx(X,{compact:!0,title:s("settings.providerManagementLoading")}):null,!y&&g.length===0?e.jsx(X,{title:s("settings.providerManagementEmpty"),description:s("settings.providerManagementEmptyDescription"),action:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a,onClick:()=>{P()},children:s("settings.providerManagementRefresh")})}):null,g.length>0?e.jsx("div",{className:"settings-provider-matrix-shell",children:e.jsxs("table",{className:"settings-provider-matrix-table",children:[e.jsxs("colgroup",{children:[e.jsx("col",{className:"settings-provider-matrix-provider-col"}),k.map(l=>e.jsx("col",{className:"settings-provider-matrix-capability-col"},l.key)),e.jsx("col",{className:"settings-provider-matrix-status-col"}),e.jsx("col",{className:"settings-provider-matrix-toggle-col"})]}),e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:s("settings.providerManagementTableProvider")}),k.map(l=>e.jsx("th",{scope:"col",children:l.label},l.key)),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableStatus")}),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableEnabled")})]})}),e.jsx("tbody",{children:g.map(l=>e.jsxs("tr",{children:[e.jsx("th",{scope:"row",className:"settings-provider-matrix-provider-cell",children:e.jsx("div",{className:"settings-provider-matrix-provider",children:e.jsxs("div",{className:"settings-provider-matrix-provider-heading",children:[e.jsx("strong",{className:"settings-provider-matrix-provider-name",children:l.displayName}),e.jsx(K,{tone:ta(l.installState),children:sa(l)})]})})}),k.map(N=>e.jsx("td",{className:"settings-provider-matrix-capability-cell",children:e.jsx(Xn,{enabled:l.productCapabilities[N.key],label:N.label})},N.key)),e.jsx("td",{className:"settings-provider-matrix-status-cell",children:e.jsx(K,{tone:l.enabled?"success":"default",children:l.enabled?s("settings.providerManagementStatusEnabled"):s("settings.providerManagementStatusDisabled")})}),e.jsx("td",{className:"settings-provider-matrix-toggle-cell",children:e.jsxs("label",{className:"settings-provider-matrix-switch",children:[e.jsx("span",{className:"settings-provider-visually-hidden",children:s("settings.providerManagementToggleLabel",{provider:l.displayName})}),e.jsx("input",{type:"checkbox",checked:l.enabled,disabled:o===l.provider,"aria-label":s("settings.providerManagementToggleLabel",{provider:l.displayName}),onChange:()=>{b(l)}}),e.jsx("span",{className:"settings-provider-matrix-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-provider-matrix-switch-thumb"})})]})})]},l.provider))})]})}):null]}),e.jsx(ee,{className:"settings-provider-modal-actions",children:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a||y||o!==null,onClick:()=>{P()},children:y?s("common.loading"):s("settings.providerManagementRefresh")})})]});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-provider-entrypoint",children:[a?null:e.jsx("p",{className:"settings-provider-entrypoint-note",children:s("settings.providerManagementLoginRequired")}),e.jsx("button",{type:"button",className:"settings-button",disabled:!a,onClick:O,children:s("settings.providerManagementManageAction")})]}),t.isMobile?e.jsx(ye,{open:n,title:s("settings.providerManagementModalTitle"),height:"three-quarter",kind:"form",showHandle:!0,cardClassName:"settings-provider-modal",bodyClassName:"settings-provider-modal-body",onClose:()=>c(!1),children:f}):e.jsx(Ce,{open:n,title:s("settings.providerManagementModalTitle"),className:"settings-provider-modal",size:"xwide",layout:"list",bodyClassName:"settings-provider-modal-body",onClose:()=>c(!1),children:f})]})}function Ns({label:t,value:a}){return e.jsxs("div",{className:"settings-provider-summary-card",children:[e.jsx("span",{children:t}),e.jsx("strong",{children:a})]})}function Xn({enabled:t,label:a}){const n=t?s("settings.providerManagementCapabilityAvailable"):s("settings.providerManagementCapabilityUnavailable");return t?e.jsx("span",{className:"settings-provider-matrix-capability","aria-label":`${a}:${n}`,role:"img",children:e.jsx("span",{className:"settings-provider-matrix-capability-check","aria-hidden":"true"})}):e.jsx("span",{className:"settings-provider-visually-hidden",children:`${a}:${n}`})}function ea(t){switch(t){case"ready":return s("settings.providerManagementInstallReady");case"missing":return s("settings.providerManagementInstallMissing");default:return s("settings.providerManagementInstallUnknown")}}function sa(t){return t.installState==="ready"&&t.version?t.version:ea(t.installState)}function ta(t){switch(t){case"ready":return"success";case"missing":return"warning";default:return"default"}}function ws(t,a){return t instanceof fe?t.message:a==="save"?s("settings.providerManagementSaveFailed"):s("settings.providerManagementLoadFailed")}async function na(){return await F.request("/api/channels/platforms")}async function aa(){return await F.request("/api/channels/accounts")}async function ia(t){return await F.request("/api/channels/accounts",{method:"POST",body:JSON.stringify(t)})}async function la(t){return await F.request(`/api/channels/accounts/${t}`,{method:"DELETE"})}async function ra(t){return await F.request(`/api/channels/accounts/${t}/probe`,{method:"POST"})}async function ca(t){return await F.request(`/api/channels/accounts/${t}/poll`,{method:"POST"})}async function oa(t){return await F.request(`/api/channels/accounts/${t}/wechat-claw/start-login`,{method:"POST"})}async function da(t){return await F.request(`/api/channels/accounts/${t}/wechat-claw/refresh-login`,{method:"POST"})}async function ua(t){return await F.request(`/api/channels/accounts/${t}/wechat-claw/logout`,{method:"POST"})}async function ga(t,a=20){return await F.request(`/api/channels/accounts/${t}/threads?limit=${a}`)}async function ma(t,a=20){return await F.request(`/api/channels/accounts/${t}/events?limit=${a}`)}async function ha(t,a=20){return await F.request(`/api/channels/accounts/${t}/deliveries?limit=${a}`)}function At({code:t,...a}){switch(t){case"wechat-claw":return e.jsx(fa,{...a});case"telegram":return e.jsx(pa,{...a});default:return e.jsx(ba,{...a})}}function pa(t){return e.jsxs("svg",{viewBox:"0 0 64 64",fill:"none",...t,children:[e.jsx("circle",{cx:"32",cy:"32",r:"30",fill:"#2AABEE"}),e.jsx("path",{fill:"#fff",d:"M47.8 18.8 15.6 31.2c-2.2.9-2.2 2.1-.4 2.6l8.3 2.6 19.2-12.1c.9-.6 1.8-.3 1.1.4L28.3 38.7l-.6 8.6c.9 0 1.3-.4 1.9-.9l4-3.9 8.3 6.1c1.6.9 2.7.4 3.1-1.5l5.4-25.4c.6-2.3-.9-3.4-2.6-2.9Z"})]})}function fa(t){return e.jsxs("svg",{viewBox:"0 0 64 64",fill:"none",...t,children:[e.jsx("rect",{width:"64",height:"64",rx:"18",fill:"#07C160"}),e.jsx("path",{fill:"#fff",d:"M27.5 18c-8 0-14.5 5.6-14.5 12.4 0 3.8 2 7.3 5.4 9.6l-1.7 5 5.6-2.8c1.7.4 3.4.6 5.2.6 8 0 14.5-5.6 14.5-12.4S35.5 18 27.5 18Zm-5.1 10.6a1.9 1.9 0 1 1 0 3.9 1.9 1.9 0 0 1 0-3.9Zm10.2 0a1.9 1.9 0 1 1 0 3.9 1.9 1.9 0 0 1 0-3.9Z"}),e.jsx("path",{fill:"#E7FFF1",d:"M44 28.7c-5.2 0-9.4 3.7-9.4 8.2 0 4.6 4.2 8.2 9.4 8.2 1.1 0 2.2-.2 3.3-.5l3.7 1.8-1.1-3.3a8 8 0 0 0 3.5-6.2c0-4.5-4.2-8.2-9.4-8.2Zm-3.3 6.5a1.3 1.3 0 1 1 0 2.7 1.3 1.3 0 0 1 0-2.7Zm6.6 0a1.3 1.3 0 1 1 0 2.7 1.3 1.3 0 0 1 0-2.7Z"}),e.jsx("path",{fill:"#0E9B53",d:"M42.5 19.2c4 1.5 6.8 4.4 7.9 8.1-1.8-.8-3.9-1.3-6.1-1.3-1.8 0-3.6.3-5.1.8.9-3.1 1.9-5.2 3.3-7.6Z"})]})}function ba(t){return e.jsxs("svg",{viewBox:"0 0 64 64",fill:"none",...t,children:[e.jsx("rect",{width:"64",height:"64",rx:"18",fill:"#1F2937"}),e.jsx("path",{fill:"#fff",d:"M20 22.5A6.5 6.5 0 0 1 26.5 16h11A6.5 6.5 0 0 1 44 22.5v12A6.5 6.5 0 0 1 37.5 41H30l-7.4 6.2c-1 .8-2.6.1-2.6-1.2V22.5Z"})]})}const xa=["codex","claude-code"],va=["active","disabled","degraded"],Fe="polling",ya=`{
2
- }`,Hs={"wechat-claw":[],telegram:[{key:"botToken",labelKey:"settings.channelsConfigFieldTelegramBotToken",descriptionKey:"settings.channelsConfigFieldTelegramBotTokenDescription",placeholderKey:"settings.channelsConfigFieldTelegramBotTokenPlaceholder",type:"password",required:!0}]},ja={};function Lt(){const t=Ve(),a=Te(i=>{var R;return((R=i.session)==null?void 0:R.accessToken)??null}),[n,c]=r.useState(!1),[o,m]=r.useState(!1),[v,j]=r.useState([]),[p,D]=r.useState([]),[d,y]=r.useState(!1),[k,w]=r.useState(!1),[O,b]=r.useState(null),[P,g]=r.useState(null),[x,h]=r.useState(null),[f,l]=r.useState(null),[N,L]=r.useState(null),[C,S]=r.useState("platform"),[E,q]=r.useState(null),[J,B]=r.useState(null),[I,z]=r.useState(()=>Ze()),[$,Q]=r.useState([]),[Z,T]=r.useState([]),[H,M]=r.useState([]),u=r.useMemo(()=>p.find(i=>i.id===E)??null,[p,E]),U=r.useMemo(()=>v.find(i=>i.code===I.platformCode)??null,[I.platformCode,v]),A=r.useMemo(()=>I.platformCode?Hs[I.platformCode]??[]:[],[I.platformCode]),te=r.useMemo(()=>new Set(p.map(i=>i.platformCode)).size,[p]),ne=r.useMemo(()=>p.filter(i=>i.status==="active").length,[p]),V=(U==null?void 0:U.code)==="wechat-claw",ue=(u==null?void 0:u.platformCode)==="wechat-claw",_=r.useMemo(()=>u?Ta(u):null,[u]),Me=(_==null?void 0:_.loginStatus)==="active";r.useEffect(()=>{a||(c(!1),m(!1),j([]),D([]),y(!1),w(!1),b(null),g(null),h(null),l(null),L(null),S("platform"),q(null),B(null),z(Ze()),Q([]),T([]),M([]))},[a]),r.useEffect(()=>{(!E||J!==E)&&B(null)},[E,J]),r.useEffect(()=>{!n||!a||qe()},[a,n]),r.useEffect(()=>{if(!n||!a||!E){Q([]),T([]),M([]);return}Pe(E)},[a,E,n]);async function qe(i={}){if(a){y(!0),l(null);try{const[R,W]=await Promise.all([na(),aa()]);j(R),D(W),E&&!W.some(Se=>Se.id===E)&&(q(null),Q([]),T([]),M([])),i.showSuccess&&h(s("settings.channelsRefreshSuccess"))}catch(R){l(be(R,"loadOverview"))}finally{y(!1)}}}async function Pe(i){if(a){w(!0),l(null);try{const[R,W,Se]=await Promise.all([ga(i),ma(i),ha(i)]);if(E!==i)return;Q(R),T(W),M(Se)}catch(R){l(be(R,"loadDetails"))}finally{w(!1)}}}function ns(){c(!0),h(null),l(null)}function je(){c(!1),m(!1),B(null)}function ie(){g(null),L(null),S("platform"),z(Ze())}function ge(){ie(),m(!0)}function me(){m(!1),ie()}function Ne(i){q(i.id),B(null),h(null),l(null)}function le(i){S(i==="wechat-claw"?"binding":"config"),z(R=>Ze({platformCode:i,displayName:R.platformCode===i?R.displayName:"",providerId:R.providerId,status:R.status})),L(null)}function we(i,R){z(W=>({...W,configValues:{...W.configValues,[i]:R}}))}function as(){const i=Et(I,U);if(!i.ok){L(i.errorText);return}S("binding"),L(null)}async function is(){if(!a)return;const i=Da(I,U);if(!i.ok){L(i.errorText);return}g("save"),L(null),h(null);try{const R=await ia(i.input);D(W=>[R,...W]),q(R.id),me(),h(s("settings.channelsCreateSuccess",{account:R.displayName}))}catch(R){L(be(R,"save"))}finally{g(null)}}async function We(){if(!(!a||!E)){b("probe"),l(null),h(null);try{const i=await ra(E);D(R=>ks(R,i.account)),h(i.detail),await Pe(E)}catch(i){l(be(i,"probe"))}finally{b(null)}}}async function ls(){if(!(!a||!E)){b("poll"),l(null),h(null);try{const i=await ca(E);D(R=>ks(R,i.account)),h(i.detail),await Pe(E)}catch(i){l(be(i,"poll"))}finally{b(null)}}}async function Ae(i){if(!a||!E||!ue)return;b(i==="start"?"wechat-start-login":i==="refresh"?"wechat-refresh-login":"wechat-logout"),l(null),h(null);try{let W;i==="start"?W=await oa(E):i==="refresh"?W=await da(E):W=await ua(E),cs(W.account),h(W.detail)}catch(W){l(be(W,i))}finally{b(null)}}async function rs(){if(!(!a||!u)){b("remove-account"),l(null),h(null);try{const i=await la(u.id);D(R=>R.filter(W=>W.id!==i.accountId)),E===i.accountId&&(q(null),Q([]),T([]),M([])),B(null),h(s("settings.channelsRemoveSuccess",{account:i.displayName}))}catch(i){l(be(i,"remove"))}finally{b(null)}}}function cs(i){D(R=>ks(R,i))}async function os(){b("refresh"),h(null),l(null);try{await qe({showSuccess:!0})}finally{b(null)}}const ds=e.jsxs("div",{className:"settings-channels-summary-grid","aria-label":s("settings.channelsSummaryTitle"),children:[e.jsx(Ss,{label:s("settings.channelsSummaryAccounts"),value:String(p.length)}),e.jsx(Ss,{label:s("settings.channelsSummaryActive"),value:String(ne)}),e.jsx(Ss,{label:s("settings.channelsSummaryPlatforms"),value:String(te)})]}),ze=e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:ge,children:s("settings.channelsAddAccountAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:d||O!==null,onClick:()=>{os()},children:O==="refresh"?s("settings.channelsActionPending"):s("settings.channelsRefresh")})]}),$e=!ue||Me,Ke=u!==null&&J===u.id,Ge=e.jsxs("div",{className:"settings-channels-modal-layout",children:[N?e.jsx("p",{className:"settings-channels-error",children:N}):null,e.jsxs(G,{heading:s("settings.channelsWizardTitle"),description:s("settings.channelsWizardCreateDescription"),children:[e.jsx(Na,{currentStep:C}),C==="platform"?e.jsxs(e.Fragment,{children:[d&&v.length===0?e.jsx(X,{compact:!0,title:s("settings.channelsLoading")}):null,!d&&v.length===0?e.jsx(X,{title:s("settings.channelsPlatformsEmpty"),description:s("settings.channelsPlatformsEmptyDescription")}):null,v.length>0?e.jsx("div",{className:"settings-channels-platform-grid",children:v.map(i=>e.jsx("button",{className:"settings-channels-platform-card",type:"button","aria-pressed":I.platformCode===i.code,"data-selected":I.platformCode===i.code?"true":void 0,onClick:()=>le(i.code),children:e.jsxs("div",{className:"settings-channels-platform-card-top",children:[e.jsxs("div",{className:"settings-channels-platform-card-brand",children:[e.jsx("div",{className:"settings-channels-platform-card-logo",children:e.jsx(At,{code:i.code,width:40,height:40,"aria-hidden":"true"})}),e.jsxs("div",{className:"settings-channels-platform-card-copy",children:[e.jsx("strong",{children:i.displayName}),e.jsx("span",{children:s("settings.channelsPlatformSummary",{modes:ke(Fe),multiSession:Be(i.multiSessionSupportLevel)})})]})]}),e.jsx(K,{tone:i.multiSessionSupportLevel==="supported"?"success":"warning",children:Be(i.multiSessionSupportLevel)})]})},i.code))}):null,e.jsx(ee,{children:e.jsx("button",{className:"primary-button",type:"button",disabled:!U,onClick:()=>{U&&S("config")},children:s("settings.channelsWizardNextToConfig")})})]}):null,C==="config"?e.jsxs(e.Fragment,{children:[U?e.jsx(wa,{platformCapability:U}):e.jsx(X,{compact:!0,title:s("settings.channelsValidationPlatform"),description:s("settings.channelsWizardSelectPlatformHint")}),U?e.jsxs(e.Fragment,{children:[e.jsx(ka,{platformCode:U.code}),e.jsx(Sa,{platformCode:U.code}),A.length>0?e.jsx("div",{className:"settings-channels-form-grid",children:A.map(i=>e.jsx(Y,{label:s(i.labelKey),description:s(i.descriptionKey),htmlFor:`channels-create-config-${i.key}`,children:e.jsx("input",{id:`channels-create-config-${i.key}`,className:"settings-text-input",type:i.type??"text",placeholder:s(i.placeholderKey),value:I.configValues[i.key]??"",onChange:R=>we(i.key,R.target.value)})},i.key))}):null,e.jsxs("details",{className:"settings-channels-advanced-config",children:[e.jsx("summary",{children:s("settings.channelsAdvancedConfigTitle")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsAdvancedConfigDescription")}),e.jsx(Y,{className:"settings-channels-form-field-wide",label:s("settings.channelsFieldConfig"),htmlFor:"channels-create-config-advanced",children:e.jsx("textarea",{id:"channels-create-config-advanced",className:"settings-channels-textarea",rows:8,value:I.advancedConfigText,onChange:i=>{z(R=>({...R,advancedConfigText:i.target.value}))}})})]})]}):null,e.jsxs(ee,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>S("platform"),children:s("settings.channelsWizardBackToPlatform")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!U,onClick:as,children:s("settings.channelsWizardNextToBinding")})]})]}):null,C==="binding"?e.jsxs(e.Fragment,{children:[U?e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(re,{label:s("settings.channelsDetailPlatform"),value:U.displayName}),e.jsx(re,{label:s("settings.channelsDetailConnectionMode"),value:ke(Fe)}),e.jsx(re,{label:s("settings.channelsWizardBindingSummary"),value:Be(U.multiSessionSupportLevel)})]}):null,e.jsxs("div",{className:"settings-channels-form-grid",children:[e.jsx(Y,{label:s("settings.channelsFieldDisplayName"),description:V?s("settings.channelsWechatCreateDescription"):void 0,htmlFor:"channels-create-display-name",children:e.jsx("input",{id:"channels-create-display-name",className:"settings-text-input",placeholder:s("settings.channelsFieldDisplayNamePlaceholder"),value:I.displayName,onChange:i=>{z(R=>({...R,displayName:i.target.value}))}})}),e.jsx(Y,{label:s("settings.channelsFieldProvider"),description:s("settings.channelsFieldProviderDescription"),htmlFor:"channels-create-provider",children:e.jsx("select",{id:"channels-create-provider",className:"settings-select",value:I.providerId,onChange:i=>{z(R=>({...R,providerId:i.target.value}))},children:xa.map(i=>e.jsx("option",{value:i,children:Ye(i)},i))})}),e.jsx(Y,{label:s("settings.channelsFieldStatus"),description:s("settings.channelsFieldStatusDescription"),htmlFor:"channels-create-status",children:e.jsx("select",{id:"channels-create-status",className:"settings-select",value:I.status,onChange:i=>{z(R=>({...R,status:i.target.value}))},children:va.map(i=>e.jsx("option",{value:i,children:Ts(i)},i))})}),e.jsx(Y,{label:s("settings.channelsFieldConnectionMode"),description:s("settings.channelsFieldConnectionModeDescription"),children:e.jsxs("div",{className:"settings-channels-fixed-field",children:[e.jsx("strong",{children:ke(Fe)}),e.jsx("span",{children:s("settings.channelsConnectionModeFixedHint")})]})})]}),e.jsxs(ee,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>S(V?"platform":"config"),children:V?s("settings.channelsWizardBackToPlatform"):s("settings.channelsWizardBackToConfig")}),e.jsx("button",{className:"primary-button",type:"button",disabled:P==="save",onClick:()=>{is()},children:P==="save"?s("settings.channelsActionPending"):s("settings.channelsCreateAction")})]})]}):null]})]}),Je=e.jsxs("div",{className:"settings-channels-modal-layout",children:[x?e.jsx("p",{className:"settings-channels-status",children:x}):null,f?e.jsx("p",{className:"settings-channels-error",children:f}):null,ds,t.isMobile?e.jsx(ee,{className:"settings-channels-inline-actions",children:ze}):null,e.jsxs(G,{heading:s("settings.channelsAccountsTitle"),description:s("settings.channelsAccountsDescription"),children:[d&&p.length===0?e.jsx(X,{compact:!0,title:s("settings.channelsLoading")}):null,!d&&p.length===0?e.jsx(X,{title:s("settings.channelsAccountsEmpty"),description:s("settings.channelsAccountsEmptyDescription"),action:e.jsx("button",{className:"secondary-button",type:"button",onClick:ge,children:s("settings.channelsAddAccountAction")})}):null,p.length>0?e.jsx(de,{className:"settings-channels-account-list",children:p.map(i=>e.jsx(ce,{as:"button",selected:E===i.id,className:"settings-channels-account-item",label:i.displayName,description:s("settings.channelsAccountRowDescription",{platform:i.capability.displayName,provider:Ye(i.providerId),mode:ke(i.connectionMode)}),trailing:e.jsxs("div",{className:"settings-channels-account-tags",children:[e.jsx(K,{tone:Aa(i.status),children:Ts(i.status)}),e.jsx(K,{children:Ye(i.providerId)})]}),onClick:()=>Ne(i),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsThreadsTitle"),": ",i.threadCount]}),e.jsxs("span",{children:[s("settings.channelsEventsTitle"),": ",i.inboundEventCount]}),e.jsxs("span",{children:[s("settings.channelsDeliveriesTitle"),": ",i.deliveryCount]})]})},i.id))}):null]}),u?e.jsxs(e.Fragment,{children:[e.jsxs(G,{heading:s("settings.channelsDetailTitle"),description:s("settings.channelsDetailDescription"),actions:e.jsxs(ee,{className:"settings-channels-inline-actions",children:[$e?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{We()},children:O==="probe"?s("settings.channelsActionPending"):s("settings.channelsProbeAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{ls()},children:O==="poll"?s("settings.channelsActionPending"):s("settings.channelsPollAction")})]}):null,Ke?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{B(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:O!==null,onClick:()=>{rs()},children:O==="remove-account"?s("settings.channelsActionPending"):s("settings.channelsRemoveConfirmAction")})]}):e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:O!==null,onClick:()=>{u&&B(u.id)},children:s("settings.channelsRemoveAction")})]}),children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(re,{label:s("settings.channelsDetailPlatform"),value:u.capability.displayName}),e.jsx(re,{label:s("settings.channelsDetailProvider"),value:Ye(u.providerId)}),e.jsx(re,{label:s("settings.channelsDetailConnectionMode"),value:ke(u.connectionMode)}),e.jsx(re,{label:s("settings.channelsDetailStatus"),value:Ts(u.status)}),e.jsx(re,{label:s("settings.channelsDetailLastInbound"),value:xe(u.lastInboundAt)}),e.jsx(re,{label:s("settings.channelsDetailLastOutbound"),value:xe(u.lastOutboundAt)})]}),u.lastError?e.jsxs("p",{className:"settings-channels-inline-note",children:[s("settings.channelsDetailLastError"),": ",u.lastError]}):null,Ke?e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsRemoveConfirmDescription")}):null]}),u.platformCode==="wechat-claw"?e.jsxs(G,{heading:s("settings.channelsWechatBindingTitle"),description:s("settings.channelsWechatBindingDescription"),actions:e.jsxs(ee,{className:"settings-channels-inline-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{Ae("start")},children:O==="wechat-start-login"?s("settings.channelsActionPending"):_!=null&&_.qrcodeUrl?s("settings.channelsWechatRestartBindingAction"):s("settings.channelsWechatStartLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{Ae("refresh")},children:O==="wechat-refresh-login"?s("settings.channelsActionPending"):s("settings.channelsWechatRefreshLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{Ae("logout")},children:O==="wechat-logout"?s("settings.channelsActionPending"):s("settings.channelsWechatLogoutAction")})]}),children:[e.jsxs("div",{className:"settings-channels-wechat-binding-entry",children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(re,{label:s("settings.channelsWechatLoginStatus"),value:Ra((_==null?void 0:_.loginStatus)??"not_logged_in")}),e.jsx(re,{label:s("settings.channelsDetailConnectionMode"),value:s("settings.channelsWechatBindingModeValue")}),e.jsx(re,{label:s("settings.channelsMetaUpdatedAt"),value:xe((_==null?void 0:_.updatedAt)??null)})]}),e.jsx("p",{className:"settings-channels-inline-note",children:Me?s("settings.channelsWechatBoundDescription"):s("settings.channelsWechatPendingDescription")}),_!=null&&_.lastDetail?e.jsx("p",{className:"settings-channels-inline-note",children:_.lastDetail}):null,Me?null:e.jsxs("div",{className:"settings-channels-wechat-qr-panel",children:[_!=null&&_.qrcodeUrl?e.jsxs(e.Fragment,{children:[e.jsx("img",{className:"settings-channels-wechat-qr-image",src:_.qrcodeUrl,alt:s("settings.channelsWechatQrAlt")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsWechatQrHint")}),e.jsx(ee,{className:"settings-channels-inline-actions",children:e.jsx("a",{className:"secondary-button",href:_.qrcodeSourceUrl??_.qrcodeUrl,target:"_blank",rel:"noreferrer",children:s("settings.channelsWechatOpenQrLinkAction")})})]}):e.jsx(X,{compact:!0,title:s("settings.channelsWechatQrEmpty"),description:s("settings.channelsWechatQrEmptyDescription")}),_!=null&&_.qrcodeText?e.jsx(Y,{label:s("settings.channelsWechatQrRawTitle"),description:s("settings.channelsWechatQrRawDescription"),children:e.jsx("textarea",{className:"settings-textarea settings-channels-textarea",value:_.qrcodeText,readOnly:!0})}):null]})]}),e.jsx("div",{className:"settings-channels-platform-selected-notes",children:u.capability.stageOneLimitations.map(i=>e.jsx("p",{className:"settings-channels-platform-limitations",children:i},i))})]}):null,e.jsxs(G,{heading:s("settings.channelsThreadsTitle"),description:s("settings.channelsThreadsDescription",{count:u.threadCount}),children:[k?e.jsx(X,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&$.length===0?e.jsx(X,{compact:!0,title:s("settings.channelsThreadsEmpty"),description:s("settings.channelsThreadsEmptyDescription")}):null,!k&&$.length>0?e.jsx(de,{compact:!0,children:$.map(i=>e.jsx(ce,{label:i.title||i.externalConversationKey,description:s("settings.channelsThreadSummary",{status:Xs(i.status),conversationKey:i.externalConversationKey}),trailing:e.jsx(K,{tone:La(i.status),children:Xs(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",xe(i.createdAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaUpdatedAt"),": ",xe(i.updatedAt)]}),i.externalUserId?e.jsxs("span",{children:[s("settings.channelsMetaExternalUser"),": ",i.externalUserId]}):null]})},i.id))}):null]}),e.jsxs(G,{heading:s("settings.channelsEventsTitle"),description:s("settings.channelsEventsDescription",{count:u.inboundEventCount}),children:[k?e.jsx(X,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&Z.length===0?e.jsx(X,{compact:!0,title:s("settings.channelsEventsEmpty"),description:s("settings.channelsEventsEmptyDescription")}):null,!k&&Z.length>0?e.jsx(de,{compact:!0,children:Z.map(i=>e.jsx(ce,{label:Ys(i.textContent),description:s("settings.channelsEventSummary",{status:et(i.status),conversationKey:i.externalConversationKey}),trailing:e.jsx(K,{tone:Ea(i.status),children:et(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaReceivedAt"),": ",xe(i.receivedAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaEventId"),": ",i.externalEventId]}),i.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",i.errorMessage]}):null]})},i.id))}):null]}),e.jsxs(G,{heading:s("settings.channelsDeliveriesTitle"),description:s("settings.channelsDeliveriesDescription",{count:u.deliveryCount}),children:[k?e.jsx(X,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&H.length===0?e.jsx(X,{compact:!0,title:s("settings.channelsDeliveriesEmpty"),description:s("settings.channelsDeliveriesEmptyDescription")}):null,!k&&H.length>0?e.jsx(de,{compact:!0,children:H.map(i=>e.jsx(ce,{label:Ys(i.textContent),description:s("settings.channelsDeliverySummary",{status:st(i.status)}),trailing:e.jsx(K,{tone:Oa(i.status),children:st(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",xe(i.createdAt)]}),i.providerMessageRef?e.jsxs("span",{children:[s("settings.channelsMetaProviderRef"),": ",i.providerMessageRef]}):null,i.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",i.errorMessage]}):null]})},i.id))}):null]})]}):null]});return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-channels-entrypoint",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:!a,onClick:ns,children:s("settings.channelsManageAction")})}),t.isMobile?e.jsx(ye,{open:n,title:s("settings.channelsModalTitle"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:je,children:e.jsx("div",{className:"settings-channels-modal-body",children:Je})}):e.jsx(Ce,{open:n,title:s("settings.channelsModalTitle"),size:"xwide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",headerActions:ze,onClose:je,children:Je}),t.isMobile?e.jsx(ye,{open:o,title:s("settings.channelsAddAccountAction"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:me,children:e.jsx("div",{className:"settings-channels-modal-body",children:Ge})}):e.jsx(Ce,{open:o,title:s("settings.channelsAddAccountAction"),size:"wide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",onClose:me,children:Ge})]})}function Ss({label:t,value:a}){return e.jsxs("div",{className:"settings-channels-summary-card",children:[e.jsx("span",{children:t}),e.jsx("strong",{children:a})]})}function re({label:t,value:a}){return e.jsxs("div",{className:"settings-channels-detail-card",children:[e.jsx("span",{children:t}),e.jsx("strong",{children:a})]})}function Na({currentStep:t}){const a=[{step:"platform",number:1,label:s("settings.channelsWizardStepPlatform")},{step:"config",number:2,label:s("settings.channelsWizardStepConfig")},{step:"binding",number:3,label:s("settings.channelsWizardStepBinding")}],n=a.findIndex(c=>c.step===t);return e.jsx("div",{className:"settings-channels-step-strip","aria-label":s("settings.channelsWizardStepsTitle"),children:a.map((c,o)=>e.jsxs("div",{className:"settings-channels-step-chip","data-state":o===n?"current":o<n?"complete":"pending",children:[e.jsx("span",{className:"settings-channels-step-chip-badge",children:c.number}),e.jsx("span",{className:"settings-channels-step-chip-label",children:c.label})]},c.step))})}function wa({platformCapability:t}){return e.jsxs("div",{className:"settings-channels-platform-selected",children:[e.jsxs("div",{className:"settings-channels-platform-selected-head",children:[e.jsxs("div",{className:"settings-channels-platform-card-brand",children:[e.jsx("div",{className:"settings-channels-platform-card-logo",children:e.jsx(At,{code:t.code,width:40,height:40,"aria-hidden":"true"})}),e.jsxs("div",{className:"settings-channels-platform-card-copy",children:[e.jsx("strong",{children:t.displayName}),e.jsx("span",{children:s("settings.channelsPlatformSummary",{modes:ke(Fe),multiSession:Be(t.multiSessionSupportLevel)})})]})]}),e.jsx(K,{tone:t.multiSessionSupportLevel==="supported"?"success":"warning",children:Be(t.multiSessionSupportLevel)})]}),e.jsx("div",{className:"settings-channels-platform-selected-notes",children:t.stageOneLimitations.map(a=>e.jsx("p",{className:"settings-channels-platform-limitations",children:a},a))})]})}function Sa({platformCode:t}){const a=ja[t];return a?e.jsxs("div",{className:"settings-channels-config-checklist",children:[e.jsxs("div",{className:"settings-channels-config-checklist-head",children:[e.jsx("strong",{children:s(a.titleKey)}),e.jsx("p",{className:"settings-channels-inline-note",children:s(a.summaryKey)})]}),e.jsx("ul",{className:"settings-channels-config-checklist-list",children:a.items.map(n=>e.jsx("li",{children:s(n)},n))})]}):null}function ka({platformCode:t}){return t!=="wechat-claw"?null:e.jsxs("div",{className:"settings-channels-config-unavailable",children:[e.jsx("strong",{children:s("settings.channelsConfigWechatUnavailableTitle")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsConfigWechatUnavailableDescription")})]})}function Ta(t){return{loginStatus:Ca(t.runtimeState.wechatClawLoginStatus),qrcodeUrl:Oe(t.runtimeState.wechatClawQrCodeUrl),qrcodeSourceUrl:Oe(t.runtimeState.wechatClawQrCodeSourceUrl),qrcodeText:Oe(t.runtimeState.wechatClawQrCodeText),lastDetail:Oe(t.runtimeState.wechatClawLastDetail),updatedAt:Oe(t.runtimeState.wechatClawUpdatedAt)}}function Ca(t){return t==="waiting_scan"||t==="scan_confirmed"||t==="active"||t==="expired"?t:"not_logged_in"}function Oe(t){if(typeof t!="string")return null;const a=t.trim();return a.length>0?a:null}function Ze(t={}){return{platformCode:"",displayName:"",providerId:"codex",status:"active",configValues:{},advancedConfigText:ya,...t}}function ks(t,a){return t.findIndex(c=>c.id===a.id)===-1?[a,...t]:t.map(c=>c.id===a.id?a:c)}function Et(t,a){if(!t.platformCode||!a)return{ok:!1,errorText:s("settings.channelsValidationPlatform")};const n=Ma(t.platformCode,t.configValues);if(n)return{ok:!1,errorText:n};try{Ot(t.advancedConfigText)}catch{return{ok:!1,errorText:s("settings.channelsValidationConfigJson")}}return{ok:!0}}function Da(t,a){const n=Et(t,a);if(!n.ok)return n;const c=t.displayName.trim();if(!c)return{ok:!1,errorText:s("settings.channelsValidationDisplayName")};const o=t.platformCode,m=Ot(t.advancedConfigText),v=Pa(o,t.configValues,m);return{ok:!0,input:{displayName:c,platformCode:o,providerId:t.providerId,connectionMode:Fe,status:t.status,config:v}}}function Ma(t,a){const c=(Hs[t]??[]).find(o=>o.required&&!(a[o.key]??"").trim());return c?s("settings.channelsValidationRequiredField",{field:s(c.labelKey)}):null}function Ot(t){if(!t.trim())return{};const a=JSON.parse(t);if(!a||typeof a!="object"||Array.isArray(a))throw new Error("advanced_config_must_be_object");return{...a}}function Pa(t,a,n){const c={...n};for(const o of Hs[t]??[]){const m=(a[o.key]??"").trim();m?c[o.key]=m:delete c[o.key]}return c}function be(t,a){if(t instanceof fe)return t.message;switch(a){case"save":return s("settings.channelsSaveFailed");case"probe":return s("settings.channelsProbeFailed");case"poll":return s("settings.channelsPollFailed");case"remove":return s("settings.channelsRemoveFailed");case"start":case"refresh":case"logout":return s("settings.channelsSaveFailed");case"loadDetails":return s("settings.channelsLoadDetailsFailed");default:return s("settings.channelsLoadFailed")}}function Ys(t){const a=t.trim();return a.length<=72?a||s("settings.channelsTextFallback"):`${a.slice(0,72)}...`}function xe(t){if(!t)return s("settings.channelsTimeUnknown");const a=new Date(t);return Number.isNaN(a.getTime())?t:new Intl.DateTimeFormat(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(a)}function Ye(t){return t==="claude-code"?"Claude Code":"Codex"}function ke(t){return t==="polling"?s("settings.channelsConnectionModePolling"):t==="bridge"?s("settings.channelsConnectionModeBridge"):s("settings.channelsConnectionModeWebhook")}function Be(t){return t==="supported"?s("settings.channelsMultiSessionSupported"):s("settings.channelsMultiSessionLimited")}function Ts(t){switch(t){case"disabled":return s("settings.channelsStatusDisabled");case"degraded":return s("settings.channelsStatusDegraded");default:return s("settings.channelsStatusActive")}}function Aa(t){switch(t){case"disabled":return"default";case"degraded":return"warning";default:return"success"}}function Xs(t){switch(t){case"closed":return s("settings.channelsThreadStatusClosed");case"failed":return s("settings.channelsThreadStatusFailed");default:return s("settings.channelsThreadStatusActive")}}function La(t){switch(t){case"failed":return"danger";case"closed":return"default";default:return"success"}}function et(t){switch(t){case"dispatched":return s("settings.channelsEventStatusDispatched");case"replied":return s("settings.channelsEventStatusReplied");case"failed":return s("settings.channelsEventStatusFailed");case"ignored":return s("settings.channelsEventStatusIgnored");default:return s("settings.channelsEventStatusReceived")}}function Ea(t){switch(t){case"replied":return"success";case"failed":return"danger";case"ignored":return"warning";case"dispatched":return"accent";default:return"default"}}function st(t){switch(t){case"failed":return s("settings.channelsDeliveryStatusFailed");case"skipped":return s("settings.channelsDeliveryStatusSkipped");default:return s("settings.channelsDeliveryStatusSent")}}function Oa(t){switch(t){case"failed":return"danger";case"skipped":return"default";default:return"success"}}function Ra(t){switch(t){case"waiting_scan":return s("settings.channelsWechatLoginStatusWaitingScan");case"scan_confirmed":return s("settings.channelsWechatLoginStatusScanConfirmed");case"active":return s("settings.channelsWechatLoginStatusActive");case"expired":return s("settings.channelsWechatLoginStatusExpired");case"not_logged_in":default:return s("settings.channelsWechatLoginStatusNotLoggedIn")}}var Rt={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},tt=ve.createContext&&ve.createContext(Rt),Ua=["attr","size","title"];function Ia(t,a){if(t==null)return{};var n,c,o=Fa(t,a);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(t);for(c=0;c<m.length;c++)n=m[c],a.indexOf(n)===-1&&{}.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function Fa(t,a){if(t==null)return{};var n={};for(var c in t)if({}.hasOwnProperty.call(t,c)){if(a.indexOf(c)!==-1)continue;n[c]=t[c]}return n}function ss(){return ss=Object.assign?Object.assign.bind():function(t){for(var a=1;a<arguments.length;a++){var n=arguments[a];for(var c in n)({}).hasOwnProperty.call(n,c)&&(t[c]=n[c])}return t},ss.apply(null,arguments)}function nt(t,a){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(t);a&&(c=c.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,c)}return n}function ts(t){for(var a=1;a<arguments.length;a++){var n=arguments[a]!=null?arguments[a]:{};a%2?nt(Object(n),!0).forEach(function(c){Ba(t,c,n[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):nt(Object(n)).forEach(function(c){Object.defineProperty(t,c,Object.getOwnPropertyDescriptor(n,c))})}return t}function Ba(t,a,n){return(a=Ha(a))in t?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,t}function Ha(t){var a=Va(t,"string");return typeof a=="symbol"?a:a+""}function Va(t,a){if(typeof t!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var c=n.call(t,a);if(typeof c!="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(a==="string"?String:Number)(t)}function Ut(t){return t&&t.map((a,n)=>ve.createElement(a.tag,ts({key:n},a.attr),Ut(a.child)))}function _e(t){return a=>ve.createElement(_a,ss({attr:ts({},t.attr)},a),Ut(t.child))}function _a(t){var a=n=>{var{attr:c,size:o,title:m}=t,v=Ia(t,Ua),j=o||n.size||"1em",p;return n.className&&(p=n.className),t.className&&(p=(p?p+" ":"")+t.className),ve.createElement("svg",ss({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,c,v,{className:p,style:ts(ts({color:t.color||n.color},n.style),t.style),height:j,width:j,xmlns:"http://www.w3.org/2000/svg"}),m&&ve.createElement("title",null,m),t.children)};return tt!==void 0?ve.createElement(tt.Consumer,null,n=>a(n)):a(Rt)}function qa(t){return _e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M20 3H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h6v2H8v2h8v-2h-2v-2h6c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2"},child:[]}]})(t)}function Wa(t){return _e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95a15.65 15.65 0 0 0-1.38-3.56A8.03 8.03 0 0 1 18.92 8zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A7.987 7.987 0 0 1 5.08 16zm2.95-8H5.08a7.987 7.987 0 0 1 4.33-3.56A15.65 15.65 0 0 0 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z"},child:[]}]})(t)}function at(t){return _e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z"},child:[]}]})(t)}function za(t){return _e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M15.5 1h-8A2.5 2.5 0 0 0 5 3.5v17A2.5 2.5 0 0 0 7.5 23h8a2.5 2.5 0 0 0 2.5-2.5v-17A2.5 2.5 0 0 0 15.5 1zm-4 21c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5-4H7V4h9v14z"},child:[]}]})(t)}function $a(t){return _e({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M18.4395 5.5586c-.675 1.1664-1.352 2.3318-2.0274 3.498-.0366-.0155-.0742-.0286-.1113-.043-1.8249-.6957-3.484-.8-4.42-.787-1.8551.0185-3.3544.4643-4.2597.8203-.084-.1494-1.7526-3.021-2.0215-3.4864a1.1451 1.1451 0 0 0-.1406-.1914c-.3312-.364-.9054-.4859-1.379-.203-.475.282-.7136.9361-.3886 1.5019 1.9466 3.3696-.0966-.2158 1.9473 3.3593.0172.031-.4946.2642-1.3926 1.0177C2.8987 12.176.452 14.772 0 18.9902h24c-.119-1.1108-.3686-2.099-.7461-3.0683-.7438-1.9118-1.8435-3.2928-2.7402-4.1836a12.1048 12.1048 0 0 0-2.1309-1.6875c.6594-1.122 1.312-2.2559 1.9649-3.3848.2077-.3615.1886-.7956-.0079-1.1191a1.1001 1.1001 0 0 0-.8515-.5332c-.5225-.0536-.9392.3128-1.0488.5449zm-.0391 8.461c.3944.5926.324 1.3306-.1563 1.6503-.4799.3197-1.188.0985-1.582-.4941-.3944-.5927-.324-1.3307.1563-1.6504.4727-.315 1.1812-.1086 1.582.4941zM7.207 13.5273c.4803.3197.5506 1.0577.1563 1.6504-.394.5926-1.1038.8138-1.584.4941-.48-.3197-.5503-1.0577-.1563-1.6504.4008-.6021 1.1087-.8106 1.584-.4941z"},child:[]}]})(t)}function it(){return F.request("/api/auth/devices")}function Ka(t){return F.request("/api/auth/devices/current/primary",{method:"POST",body:JSON.stringify(t)})}function Ga(t){return F.request(`/api/auth/devices/${t}/logout`,{method:"POST"})}function It({compact:t=!1}){const a=Te(u=>{var U;return((U=u.session)==null?void 0:U.accessToken)??null}),[n,c]=r.useState(null),[o,m]=r.useState(!1),[v,j]=r.useState(!1),[p,D]=r.useState(!1),[d,y]=r.useState(null),[k,w]=r.useState(null),[O,b]=r.useState(null),[P,g]=r.useState(null),[x,h]=r.useState(null),[f,l]=r.useState(""),[N,L]=r.useState(null);r.useEffect(()=>{let u=!0;if(!v){m(!1);return}if(!a){c(null),m(!1),b(null),g(null);return}return(async()=>{m(!0);try{const A=await it();if(!u)return;c(A),g(null)}catch(A){if(!u)return;g(Cs(A))}finally{u&&m(!1)}})(),()=>{u=!1}},[a,v]);async function C(){const u=await it();c(u),g(null)}function S(){j(!0),D(!1),b(null),g(null)}function E(){d!=="primary"&&(j(!1),D(!1),h(null),l(""),L(null))}function q(u){h(u),l(""),L(null)}async function J(){if(x){y("primary"),L(null),g(null),b(null);try{await Ka({password:f,primary:x==="enable"}),await C(),b(x==="enable"?s("settings.authDevicePrimaryEnabled"):s("settings.authDevicePrimaryDisabled")),h(null),l("")}catch(u){const U=Cs(u);L(U),g(U)}finally{y(null)}}}async function B(u){if(u.deviceId){w(u.deviceId),g(null),b(null);try{const U=await Ga(u.deviceId);await C(),b(s("settings.authDeviceLogoutDeviceSuccess",{device:Xe(u),count:String(U.revokedSessionCount)}))}catch(U){g(Cs(U))}finally{w(null)}}}const I=(n==null?void 0:n.currentDevice)??null,z=(n==null?void 0:n.otherActiveDevices.filter(u=>!u.isLegacy))??[],$=(n==null?void 0:n.otherActiveDevices.filter(u=>u.isLegacy))??[],Q=(n==null?void 0:n.recentLoginRecords.filter(u=>!u.isLegacy))??[],Z=(n==null?void 0:n.recentLoginRecords.filter(u=>u.isLegacy))??[],T=$.length+Z.length,H=I!==null&&!I.isLegacy,M=(I==null?void 0:I.isPrimary)===!0;return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`settings-device-panel${t?" settings-device-panel-compact":""}`,children:e.jsx("div",{className:"settings-device-entry-actions",children:e.jsx("button",{className:"settings-button",type:"button",disabled:!a,onClick:S,children:s("settings.authDeviceOpenManager")})})}),e.jsx(De,{open:v,title:s("settings.authDeviceManagement"),description:s("settings.authDeviceManagementDescription"),className:"settings-device-browser-modal",onClose:E,children:e.jsxs(e.Fragment,{children:[O?e.jsx("p",{className:"settings-release-status",children:O}):null,P?e.jsx("p",{className:"settings-release-status",children:P}):null,o?e.jsx("div",{className:"settings-device-empty",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[T>0?e.jsx("section",{className:"settings-device-section",children:e.jsxs("div",{className:"settings-device-compat-banner",children:[e.jsx("p",{className:"settings-device-inline-note",children:s("settings.authDeviceLegacyHiddenHint",{count:String(T)})}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>D(u=>!u),children:p?s("settings.authDeviceLegacyHide"):s("settings.authDeviceLegacyReveal")})]})}):null,e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceCurrentTitle")})}),I?e.jsx(Re,{current:!0,title:Xe(I),clientType:I.clientType,browserName:I.browserName,browserVersion:I.browserVersion,osName:I.osName,osVersion:I.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:I.lastSeenAt,sourceAddress:I.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}),I.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null]}),actions:e.jsx(e.Fragment,{children:e.jsx("button",{className:"secondary-button","data-variant":"device-neutral",type:"button",disabled:!H||d!==null,onClick:()=>q(I.isPrimary?"disable":"enable"),children:I.isPrimary?s("settings.authDeviceDisablePrimary"):s("settings.authDeviceEnablePrimary")})}),note:H?null:s("settings.authDevicePrimaryUnavailable")}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceCurrentEmpty")})]}),e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceOthersTitle")})}),z.length>0?e.jsx("div",{className:"settings-device-list",children:z.map((u,U)=>e.jsx(Re,{title:Xe(u),clientType:u.clientType,browserName:u.browserName,browserVersion:u.browserVersion,osName:u.osName,osVersion:u.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:u.lastSeenAt,sourceAddress:u.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[u.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null,u.isLegacy?e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")}):null]}),actions:u.deviceId?e.jsx("button",{className:"settings-button settings-button-danger","data-variant":"device-danger",type:"button",disabled:!M||d!==null||k!==null,onClick:()=>{B(u)},children:k===u.deviceId?s("common.loading"):s("settings.authDeviceLogoutDevice")}):null},`${u.deviceId??"legacy"}-${u.lastSeenAt}-${U}`))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceOthersEmpty")})]}),e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceRecentTitle")})}),Q.length>0?e.jsx("div",{className:"settings-device-list",children:Q.map(u=>e.jsx(Re,{title:lt(u),clientType:u.clientType,browserName:u.browserName,browserVersion:u.browserVersion,osName:u.osName,osVersion:u.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:u.occurredAt,sourceAddress:u.sourceAddress,badges:u.isCurrentDevice?e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}):null},u.id))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceRecentEmpty")})]}),p&&$.length>0?e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceLegacyDevicesTitle")})}),e.jsx("div",{className:"settings-device-list",children:$.map((u,U)=>e.jsx(Re,{title:Xe(u),clientType:u.clientType,browserName:u.browserName,browserVersion:u.browserVersion,osName:u.osName,osVersion:u.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:u.lastSeenAt,sourceAddress:u.lastSourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},`legacy-device-${u.lastSeenAt}-${U}`))})]}):null,p&&Z.length>0?e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceLegacyRecentTitle")})}),e.jsx("div",{className:"settings-device-list",children:Z.map(u=>e.jsx(Re,{title:lt(u),clientType:u.clientType,browserName:u.browserName,browserVersion:u.browserVersion,osName:u.osName,osVersion:u.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:u.occurredAt,sourceAddress:u.sourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},u.id))})]}):null]})]})}),e.jsx(De,{open:x!==null,title:x==="enable"?s("settings.authDeviceEnablePrimaryModalTitle"):s("settings.authDeviceDisablePrimaryModalTitle"),description:x==="enable"?s("settings.authDeviceEnablePrimaryModalDescription"):s("settings.authDeviceDisablePrimaryModalDescription"),className:"settings-device-modal",onClose:()=>{d!=="primary"&&(h(null),l(""),L(null))},children:e.jsxs("div",{className:"settings-device-modal-body",children:[e.jsxs("label",{className:"settings-device-password-field",children:[e.jsx("span",{children:s("settings.authDevicePasswordLabel")}),e.jsx("input",{type:"password",className:"settings-text-input",value:f,onChange:u=>l(u.target.value)})]}),N?e.jsx("p",{className:"settings-release-status",children:N}):null,e.jsxs("div",{className:"settings-device-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:d==="primary",onClick:()=>{h(null),l(""),L(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",disabled:f.trim().length===0||d==="primary",onClick:()=>{J()},children:d==="primary"?s("common.loading"):x==="enable"?s("settings.authDeviceEnablePrimary"):s("settings.authDeviceDisablePrimary")})]})]})})]})}function Xe(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||Ft(t.clientType)}function lt(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||Ft(t.clientType)}function Ja(t){return e.jsxs("div",{className:"settings-device-identity",children:[e.jsx("span",{className:"settings-device-identity-icon","aria-hidden":"true",children:e.jsx(ti,{kind:si(t.clientType)})}),e.jsx("div",{className:"settings-device-identity-body",children:e.jsx("strong",{children:t.title})})]})}function Re(t){const a=ei(t.browserName,t.browserVersion,t.osName,t.osVersion,t.timeLabelKey,t.timestamp,t.sourceAddress);return e.jsx("article",{className:"settings-device-item","data-current":t.current?"true":void 0,children:e.jsxs("div",{className:"settings-device-item-main",children:[e.jsxs("div",{className:"settings-device-item-content",children:[e.jsx(Ja,{title:t.title,clientType:t.clientType}),e.jsx("div",{className:"settings-device-meta",children:a.map(n=>e.jsx("span",{children:n},n))}),t.note?e.jsx("p",{className:"settings-device-inline-note",children:t.note}):null]}),t.badges||t.actions?e.jsxs("div",{className:"settings-device-item-controls",children:[t.badges?e.jsx("div",{className:"settings-device-badges",children:t.badges}):null,t.actions?e.jsx("div",{className:"settings-device-actions",children:t.actions}):null]}):null]})})}function Ft(t){switch(t){case"desktop":return s("settings.authDeviceClientDesktop");case"web":return s("settings.authDeviceClientWeb");case"ios":return s("settings.authDeviceClientIos");case"android":return s("settings.authDeviceClientAndroid");default:return s("settings.authDeviceClientUnknown")}}function Qa(t,a){return s(t,{value:new Date(a).toLocaleString()})}function Za(t){return t?s("settings.authDeviceSourceAddressValue",{value:t}):s("settings.authDeviceSourceAddressUnknown")}function Ya(t,a){return t?s("settings.authDeviceBrowserValue",{value:Bt(t,a)}):null}function Xa(t,a){return t?s("settings.authDeviceOsValue",{value:Bt(t,a)}):null}function ei(t,a,n,c,o,m,v){return[Ya(t,a),Xa(n,c),Qa(o,m),Za(v)].filter(j=>!!j)}function si(t){switch(t){case"desktop":return"desktop";case"web":return"web";case"ios":return"ios";case"android":return"android";default:return"unknown"}}function Bt(t,a){return a!=null&&a.trim()?`${t} ${a}`:t}function ti({kind:t}){const a=ni(t),n=a.icon;return e.jsx(n,{color:a.color})}function ni(t){switch(t){case"desktop":return{icon:qa,color:"#2563eb"};case"web":return{icon:Wa,color:"#0f766e"};case"ios":return{icon:za,color:"#111827"};case"android":return{icon:$a,color:"#3ddc84"};case"unknown":return{icon:at,color:"#64748b"};default:return{icon:at,color:"#64748b"}}}function Cs(t){return t instanceof fe||t instanceof Error?t.message:s("settings.authDeviceLoadFailed")}async function Ds(){const t=oe.getState();return F.request(`/api/client/service-update?channel=${encodeURIComponent(t.releaseChannel)}`)}async function ai(t){const a=oe.getState();return F.request("/api/client/service-update/install",{method:"POST",body:JSON.stringify({packageName:t,channel:a.releaseChannel})})}async function ii(t){return F.request(`/api/client/service-update/tasks/${encodeURIComponent(t)}`)}const li=1500,rt=2e3,ri=2500;function Ht(){const t=He(),[a,n]=r.useState(!1),[c,o]=r.useState(!1),[m,v]=r.useState(!1),[j,p]=r.useState(!1),[D,d]=r.useState(null),[y,k]=r.useState(null),[w,O]=r.useState(null),b=(y==null?void 0:y.packages[0])??null,P=m||!!((w==null?void 0:w.status)==="succeeded"&&w.restartScheduled);r.useEffect(()=>{if(!w||!Ps(w.status))return;let f=!1;const l=window.setTimeout(async()=>{var N;try{const L=await ii(w.taskId);if(f)return;if(O(L),d(Is(L)),!Ps(L.status)){if(o(!1),L.status==="succeeded"&&L.restartScheduled){v(!0),t.bridge.showNotification(s("settings.serverRestarting"),s("settings.serverInstallWarning"));return}const C=await Ds();if(f)return;k(C),O(((N=C.packages[0])==null?void 0:N.installTask)??L),d(Ms(C.packages[0]??null,L)),L.restartRequired&&await t.bridge.showNotification(s("settings.serverRestartRequired"),L.targetVersion??"-")}}catch(L){if(f)return;o(!1),d(L instanceof Error?L.message:s("settings.serverInstallFailed"))}},li);return()=>{f=!0,window.clearTimeout(l)}},[t.bridge,w]),r.useEffect(()=>{if(!m||!w||w.status!=="succeeded"||!w.restartScheduled)return;let f=!1,l=0;const N=async()=>{try{const L=await Ds();if(f)return;const C=L.packages[0]??null;if(!oi(w,C)){l=window.setTimeout(N,rt);return}v(!1),k(L),O((C==null?void 0:C.installTask)??null),d(Ms(C,(C==null?void 0:C.installTask)??null))}catch{if(f)return;d(s("settings.serverRestarting")),l=window.setTimeout(N,rt)}};return d(s("settings.serverRestarting")),l=window.setTimeout(N,Math.max(w.restartDelayMs??0,ri)),()=>{f=!0,window.clearTimeout(l)}},[m,w]);async function g(){n(!0),d(null);try{const f=await Ds(),l=f.packages[0]??null;k(f),O((l==null?void 0:l.installTask)??null),d(Ms(l,(l==null?void 0:l.installTask)??null)),l!=null&&l.hasUpdate&&await t.bridge.showNotification(s("settings.serverUpdateReady"),`${s("settings.serverTargetVersion")}: ${l.latestVersion??"-"}`)}catch(f){d(f instanceof Error?f.message:s("settings.serverCheckFailed"))}finally{n(!1)}}async function x(){if(b!=null&&b.packageName){p(!1),v(!1),o(!0),d(null);try{const f=await ai(b.packageName);O(f),d(Is(f))}catch(f){o(!1),d(f instanceof Error?f.message:s("settings.serverInstallFailed"))}}}const h=!!(b&&b.checkStatus!=="check_failed"&&b.hasUpdate&&!b.restartRequired&&!Ps(w==null?void 0:w.status)&&!P);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-update-card",children:[e.jsxs("div",{className:"settings-update-summary",children:[e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.serverCurrentVersion")}),e.jsx("strong",{className:"settings-update-value",children:(b==null?void 0:b.currentVersion)??"-"})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.serverTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(b==null?void 0:b.latestVersion)??"-"})]})]}),b!=null&&b.hasUpdate&&!P?e.jsx("p",{className:"settings-update-note","data-tone":"warning",children:s("settings.serverInstallWarning")}):null,D?e.jsx("p",{className:"settings-update-status","data-tone":ci(b,w,P),children:D}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:a||c||P,onClick:g,children:a?s("common.loading"):s("settings.serverCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!h||a||c||P,onClick:()=>p(!0),children:c?s("common.loading"):s("settings.serverInstallNow")})]})]}),e.jsx(di,{open:j,busy:c,mobile:t.isMobile,targetVersion:(b==null?void 0:b.latestVersion)??null,onClose:()=>p(!1),onConfirm:()=>{x()}})]})}function Ms(t,a){return a?Is(a):t?t.restartRequired?s("settings.serverRestartRequired"):t.checkStatus==="check_failed"?t.checkError??s("settings.serverCheckFailed"):t.latestVersion?t.hasUpdate?s("settings.serverUpdateReady"):s("settings.serverUpToDate"):s("settings.serverLatestUnknown"):s("settings.serverCheckNow")}function Is(t){switch(t.status){case"queued":return s("settings.serverInstallQueued");case"running":return s("settings.serverInstalling");case"succeeded":return t.restartScheduled?s("settings.serverRestarting"):t.restartRequired?s("settings.serverRestartRequired"):s("settings.serverInstallSucceeded");case"cancelled":return s("settings.serverInstallCancelled");case"timeout":return s("settings.serverInstallTimeout");case"failed":return t.errorMessage??s("settings.serverInstallFailed");default:return t.errorMessage??s("settings.serverInstallFailed")}}function ci(t,a,n){if(n)return"warning";if(a)switch(a.status){case"queued":case"running":return"warning";case"succeeded":return a.restartRequired?"warning":"success";case"failed":case"cancelled":case"timeout":return"danger";default:return"neutral"}return t?t.checkStatus==="check_failed"?"danger":t.restartRequired||t.hasUpdate?"warning":"success":"neutral"}function Ps(t){return t==="queued"||t==="running"}function oi(t,a){return a?t.targetVersion?ct(a.currentVersion)===ct(t.targetVersion):!a.hasUpdate:!1}function ct(t){return(t??"").trim().replace(/^v/i,"")}function di({open:t,busy:a,mobile:n,targetVersion:c,onClose:o,onConfirm:m}){const v=e.jsxs(ee,{children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:a,onClick:o,children:s("common.cancel")}),e.jsx("button",{type:"button",className:"primary-button",disabled:a,onClick:m,children:a?s("common.loading"):s("settings.serverInstallConfirmAction")})]}),j=e.jsxs(G,{className:"settings-update-confirm-section",children:[e.jsx("p",{className:"settings-update-confirm-warning",children:s("settings.serverInstallWarning")}),e.jsxs("div",{className:"settings-update-confirm-meta",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.serverTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:c??"-"})]})]});return n?e.jsx(ye,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),height:"auto",kind:"form",dismissible:!a,footer:v,onClose:o,children:j}):e.jsx(Ce,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),size:"compact",layout:"confirm",bodyClassName:"settings-update-confirm-body",dismissible:!a,footer:v,onClose:o,children:j})}async function ui(){return await F.request("/api/system/relay-tunnel/status")}async function As(t){return await F.request("/api/system/relay-tunnel/config",{method:"PUT",body:JSON.stringify(t)})}async function gi(t){return await F.request("/api/system/relay-tunnel/control/login",{method:"POST",body:JSON.stringify(t)})}async function mi(){return await F.request("/api/system/relay-tunnel/control/logout",{method:"POST"})}async function hi(t){const a=t.hostLabel.trim(),n=`/api/system/relay-tunnel/control/host-label-availability?hostLabel=${encodeURIComponent(a)}`;return await F.request(n)}async function pi(t){return await F.request("/api/system/relay-tunnel/control/bind",{method:"POST",body:JSON.stringify(t)})}async function fi(){return await F.request("/api/system/relay-tunnel/control/wallet")}async function ot(){return await F.request("/api/system/relay-tunnel/enable",{method:"POST"})}async function bi(){return await F.request("/api/system/relay-tunnel/disable",{method:"POST"})}async function xi(){return await F.request("/api/system/relay-tunnel/unbind",{method:"POST"})}function vi(){const t=Ve(),{showToast:a}=yt(),[n,c]=r.useState(null),[o,m]=r.useState(""),[v,j]=r.useState(()=>Vs()),[p,D]=r.useState(()=>$t()),[d,y]=r.useState(""),[k,w]=r.useState(""),[O,b]=r.useState(null),[P,g]=r.useState({status:"idle"}),[x,h]=r.useState(!0),[f,l]=r.useState(null),[N,L]=r.useState(null),[C,S]=r.useState(null),[E,q]=r.useState(null),[J,B]=r.useState(null),I=r.useRef(!0),z=gs(n==null?void 0:n.controlBaseUrl),$=Kt(v),Q=$??z,Z=gs($??(n==null?void 0:n.controlBaseUrl)),T=o.trim(),H=$!==null&&$!==z,M=(n==null?void 0:n.activated)??!1,u=d.trim().length>0&&k.trim().length>0,U=!!(n!=null&&n.controlAccountEmail),A=n!=null&&n.bindingId?!0:P.status==="available"&&P.hostLabel===T,te=!!(n!=null&&n.bindingId)||U&&T.length>0&&A,ne=dt({controlBaseUrl:Z,tunnelDomain:n==null?void 0:n.tunnelDomain,hostLabel:o}),V=!!(n!=null&&n.controlAccountEmail||n!=null&&n.bindingId),ue=!!(n!=null&&n.bindingId||A),_=!!(n!=null&&n.enabled&&(n!=null&&n.bindingId)),Me=!!(n!=null&&n.bindingId)||te,qe=O?Ue(O.grantedBytes):s("settings.tailscaleUnavailable"),Pe=Ue(O?O.usedBytes:n==null?void 0:n.trafficUsedBytes),ns=Ue(O?O.remainingBytes:n==null?void 0:n.trafficRemainingBytes),je=Fs(oe.getState()),ie=pn(),ge=ie?s(fn(ie.kind)):null,me=ie?ji(ie):null;r.useEffect(()=>(I.current=!0,Ne(!1),()=>{I.current=!1}),[]),r.useEffect(()=>{if(!M)return;const i=window.setInterval(()=>{Ne(!0)},5e3);return()=>{window.clearInterval(i)}},[M]),r.useEffect(()=>{!M||!U||we()},[M,U]),r.useEffect(()=>{n!=null&&n.bindingId||P.status!=="idle"&&P.hostLabel!==T&&g({status:"idle"})},[P,T,n==null?void 0:n.bindingId]),r.useEffect(()=>{j(z)},[z]);async function Ne(i,R){i||h(!0);try{const W=await ui();if(!I.current)return;le(W,R),L(null)}catch(W){I.current&&L(Rs(W,"status",je))}finally{I.current&&!i&&h(!1)}}function le(i,R){c(i),B(null),i.controlAccountEmail||b(null),i.tunnelDomain&&o.trim().length===0&&m(Vt(i.tunnelDomain)),((R==null?void 0:R.syncProfile)??!0)&&Ge(i)}async function we(){try{const i=await fi();if(!I.current)return;b(i.wallet)}catch(i){I.current&&B(he(i))}}async function as(){if(u){l("login-control"),B(null);try{const i=await gi({email:d.trim(),password:k});q(null),le(i),await we()}catch(i){q(Rs(i,"login",je))}finally{l(null)}}}async function is(){l("logout-control"),B(null);try{const i=await mi();le(i),b(null),g({status:"idle"})}catch(i){B(he(i))}finally{l(null)}}async function We(){if(!T)throw new Error(s("settings.relayTunnelHostLabelRequired"));if(P.status==="available"&&P.hostLabel===T)return{hostLabel:P.hostLabel,tunnelDomain:P.tunnelDomain,available:!0,reason:"available"};g({status:"checking",hostLabel:T});const i=await hi({hostLabel:T});if(!i.available||!i.tunnelDomain){const R=Ni(i);throw g({status:"error",hostLabel:T,message:R}),new Error(R)}return g({status:"available",hostLabel:T,tunnelDomain:i.tunnelDomain}),i}async function ls(){if(!(!V||n!=null&&n.bindingId)){l("check-host-label"),B(null);try{await We()}catch{}finally{l(null)}}}async function Ae(){l("learn-service"),B(null);try{await Us(t.bridge.openExternal,Z)}catch(i){B(he(i))}finally{l(null)}}async function rs(){l("manage-account"),B(null);try{await Us(t.bridge.openExternal,Z)}catch(i){B(he(i))}finally{l(null)}}async function cs(){if(ne)try{await Si(ne,t),a({title:s("settings.relayTunnelAccessUrlCopied"),tone:"success"})}catch(i){a({title:i instanceof Error?i.message:s("settings.relayTunnelCopyAccessUrlFailed"),tone:"error"})}}async function os(){if(ne)try{await Us(t.bridge.openExternal,ne)}catch(i){a({title:i instanceof Error?i.message:s("settings.relayTunnelOpenAccessUrlFailed"),tone:"error"})}}async function ds(){if(te){l("enable"),B(null);try{let i=n;if(i!=null&&i.activated||(i=await As({activated:!0,controlBaseUrl:Q}),le(i)),i!=null&&i.bindingId||(await We(),i=await pi({hostLabel:T}),le(i),await we()),!(i!=null&&i.enabled)){const R=await ot();le(R)}}catch(i){B(he(i))}finally{l(null)}}}async function ze(){if(n!=null&&n.bindingId){l("reconnect"),B(null);try{n!=null&&n.enabled&&await bi();const i=await ot();le(i),i.controlAccountEmail&&await we()}catch(i){const R=he(i);await Ne(!0,{syncProfile:!1}),B(R)}finally{l(null)}}}async function $e(){l("disconnect-device"),B(null);try{if(n!=null&&n.bindingId||n!=null&&n.accountId){const i=await xi();le(i)}if(n!=null&&n.activated){const i=await As({activated:!1});le(i)}b(null),y(""),m(""),w(""),g({status:"idle"})}catch(i){B(he(i))}finally{l(null)}}async function Ke(){if(!$){S(s("settings.serverInvalid"));return}l("save-config"),S(null);try{const i=await As({controlBaseUrl:$});S(null),le(i)}catch(i){S(Rs(i,"config",je))}finally{l(null)}}return e.jsxs("div",{className:"settings-relay-tunnel-panel",children:[x&&!n?e.jsx(G,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),children:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")})}):null,!x&&!_?e.jsxs(G,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),actions:e.jsx("button",{className:"secondary-button",disabled:f!==null,type:"button",onClick:()=>void Ae(),children:s("settings.relayTunnelLearnService")}),children:[N?e.jsx(Ls,{title:s("settings.relayTunnelStatusErrorTitle"),message:N,action:e.jsx("button",{className:"secondary-button",disabled:x||f!==null,type:"button",onClick:()=>void Ne(!1),children:s("common.retry")})}):null,e.jsxs("div",{className:"settings-relay-tunnel-step-list",children:[e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":Es(V,!0),children:[e.jsxs("div",{className:"settings-relay-tunnel-step-header",children:[e.jsx("span",{className:"settings-relay-tunnel-step-badge",children:"1"}),e.jsxs("div",{className:"settings-relay-tunnel-step-copy",children:[e.jsx("strong",{className:"settings-relay-tunnel-step-title",children:s("settings.relayTunnelStepLoginTitle")}),e.jsx("p",{className:"settings-relay-tunnel-step-description",children:s("settings.relayTunnelStepLoginDescription")})]}),e.jsx(K,{className:"settings-relay-tunnel-step-tag",children:s(Os(V,!0))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:V?e.jsxs(e.Fragment,{children:[n!=null&&n.controlAccountEmail?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelLoggedInAs",{email:n.controlAccountEmail})}):e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelStepLoginConnected")}),e.jsx(ee,{align:"start",children:e.jsx("button",{className:"secondary-button",disabled:f!==null,type:"button",onClick:()=>{if(n!=null&&n.bindingId){$e();return}is()},children:s("common.logout")})})]}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"settings-relay-tunnel-form",children:[e.jsx(Y,{label:s("settings.relayTunnelAccountEmail"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountEmail"),className:"settings-text-input",type:"email",value:d,onChange:i=>{y(i.target.value),q(null)},placeholder:s("settings.relayTunnelAccountEmailPlaceholder")})}),e.jsx(Y,{label:s("settings.relayTunnelAccountPassword"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountPassword"),className:"settings-text-input",type:"password",value:k,onChange:i=>{w(i.target.value),q(null)},placeholder:s("settings.relayTunnelAccountPasswordPlaceholder")})}),E?e.jsx(Ls,{title:s("settings.relayTunnelLoginErrorTitle"),message:E}):null,e.jsxs(ee,{align:"start",children:[e.jsx("button",{className:"settings-button",disabled:f!==null||!u,type:"button",onClick:()=>void as(),children:f==="login-control"?s("common.loading"):s("settings.relayTunnelLoginAccount")}),e.jsx("button",{className:"secondary-button",disabled:f!==null,type:"button",onClick:()=>{D(i=>!i),S(null)},children:p?s("settings.relayTunnelAdvancedSettingsHide"):s("settings.relayTunnelAdvancedSettings")})]}),p?e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[e.jsx(Y,{label:s("settings.relayTunnelControlBaseUrl"),description:s("settings.relayTunnelServerAddressHint"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelControlBaseUrl"),className:"settings-text-input",type:"url",value:v,onChange:i=>{j(i.target.value),S(null)},placeholder:Vs()})}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelAdvancedSettingsDescription")}),C?e.jsx(Ls,{title:s("settings.relayTunnelConfigErrorTitle"),message:C}):null,e.jsx(ee,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:x||f!==null||!H,type:"button",onClick:()=>void Ke(),children:f==="save-config"?s("common.loading"):s("common.save")})})]}):null]})})})]}),e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":Es(ue,V),children:[e.jsxs("div",{className:"settings-relay-tunnel-step-header",children:[e.jsx("span",{className:"settings-relay-tunnel-step-badge",children:"2"}),e.jsxs("div",{className:"settings-relay-tunnel-step-copy",children:[e.jsx("strong",{className:"settings-relay-tunnel-step-title",children:s("settings.relayTunnelStepHostLabelTitle")}),e.jsx("p",{className:"settings-relay-tunnel-step-description",children:s("settings.relayTunnelStepHostLabelDescription")})]}),e.jsx(K,{className:"settings-relay-tunnel-step-tag",children:s(Os(ue,V))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:V?n!=null&&n.bindingId?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:ne??n.tunnelDomain??s("settings.relayTunnelUnbound")})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-relay-tunnel-domain-row",children:[e.jsx("input",{"aria-label":s("settings.relayTunnelHostLabel"),className:"settings-text-input settings-relay-tunnel-domain-prefix",value:o,onChange:i=>m(i.target.value),placeholder:s("settings.relayTunnelHostLabelPlaceholder")}),e.jsx("span",{className:"settings-relay-tunnel-domain-suffix",children:s("settings.relayTunnelHostLabelSuffix")}),e.jsx("button",{className:"settings-button settings-relay-tunnel-domain-check",disabled:f!==null||T.length===0,type:"button",onClick:()=>void ls(),children:f==="check-host-label"?s("common.loading"):s("settings.relayTunnelHostLabelCheck")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[P.status==="available"&&P.hostLabel===T?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:dt({controlBaseUrl:Q,tunnelDomain:P.tunnelDomain,hostLabel:P.hostLabel})??P.tunnelDomain})}):null,P.status==="checking"&&P.hostLabel===T?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelHostLabelChecking")}):null,P.status==="error"&&P.hostLabel===T?e.jsx("p",{className:"settings-relay-tunnel-error",children:P.message}):null]})]}):e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelStepLocked")})})]}),e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":Es(_,ue),children:[e.jsxs("div",{className:"settings-relay-tunnel-step-header",children:[e.jsx("span",{className:"settings-relay-tunnel-step-badge",children:"3"}),e.jsxs("div",{className:"settings-relay-tunnel-step-copy",children:[e.jsx("strong",{className:"settings-relay-tunnel-step-title",children:s("settings.relayTunnelStepStartTitle")}),e.jsx("p",{className:"settings-relay-tunnel-step-description",children:s("settings.relayTunnelStepStartDescription")})]}),e.jsx(K,{className:"settings-relay-tunnel-step-tag",children:s(Os(_,ue))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:ue?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:M?s("settings.relayTunnelStepStartReady"):s("settings.relayTunnelActivationHint")}),e.jsx(ee,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:f!==null||!Me,type:"button",onClick:()=>void ds(),children:f==="enable"?s("common.loading"):s("settings.relayTunnelStartAction")})})]}):e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelStepLocked")})})]})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[ie&&ge&&me?e.jsx(yi,{hint:me,label:ge,url:ie.url}):null,e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelTrustBoundaryNotice")}),n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:s("settings.relayTunnelRecentError",{message:n.lastError})}):null,J?e.jsx("p",{className:"settings-relay-tunnel-error",children:J}):null]})]}):null,!x&&_?e.jsxs(G,{heading:s("settings.relayTunnelReadyTitle"),description:s("settings.relayTunnelReadyDescription"),children:[e.jsxs(de,{compact:!0,children:[ie&&ge?e.jsxs(e.Fragment,{children:[e.jsx(pe,{label:s("settings.relayTunnelClientRouteLabel"),value:ge}),e.jsx(pe,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:ie.url})]}):null,e.jsx(pe,{className:"settings-relay-tunnel-summary-line-access-url",label:s("settings.relayTunnelAccessUrlLabel"),trailing:ne?e.jsxs("div",{className:"settings-relay-tunnel-access-url",children:[e.jsx("span",{className:"settings-relay-tunnel-access-url-text",title:ne,children:ne}),e.jsxs("span",{className:"settings-relay-tunnel-access-url-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void cs(),children:s("settings.relayTunnelCopyAccessUrl")}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void os(),children:s("settings.relayTunnelOpenAccessUrl")})]})]}):e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:s("settings.relayTunnelUnbound")})}),e.jsx(pe,{label:s("settings.relayTunnelTrafficGranted"),value:qe}),e.jsx(pe,{label:s("settings.relayTunnelTrafficUsed"),value:Pe}),e.jsx(pe,{label:s("settings.relayTunnelTrafficRemaining"),value:ns})]}),e.jsxs(ee,{align:"start",className:"settings-relay-tunnel-ready-actions",children:[e.jsx("button",{className:"secondary-button",disabled:f!==null||!(n!=null&&n.bindingId),type:"button",onClick:()=>void ze(),children:f==="reconnect"?s("common.loading"):s("settings.relayTunnelReconnectAction")}),e.jsx("button",{className:"secondary-button",disabled:f!==null,type:"button",onClick:()=>void rs(),children:f==="manage-account"?s("common.loading"):s("settings.relayTunnelManageAccountAction")}),e.jsx("button",{className:"settings-button settings-button-danger",disabled:f!==null,type:"button",onClick:()=>void $e(),children:f==="disconnect-device"?s("common.loading"):s("settings.relayTunnelDisconnectDeviceAction")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[ie&&ge&&me?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:me}):null,e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelTrustBoundaryNotice")}),n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:s("settings.relayTunnelRecentError",{message:n.lastError})}):null,J?e.jsx("p",{className:"settings-relay-tunnel-error",children:J}):null]})]}):null]});function Ge(i){const R=oe.getState(),W=Gt(R);if(!W)return;const Se=Je(i);ki(W.relayTunnel??null,Se)||oe.update({hosts:R.hosts.map(us=>us.id===W.id?{...us,relayTunnel:Se,updatedAt:new Date().toISOString()}:us)})}function Je(i){return!(i!=null&&i.bindingId)||!i.tunnelDomain?null:{provider:"codingns_relay",enabled:i.enabled,tunnelDomain:i.tunnelDomain.trim().toLowerCase(),controlBaseUrl:gs(i.controlBaseUrl),bindingId:i.bindingId,hostFingerprint:i.hostFingerprint,candidateEndpoints:i.candidateEndpoints}}}function yi({label:t,url:a,hint:n}){return e.jsxs(e.Fragment,{children:[e.jsxs(de,{compact:!0,children:[e.jsx(pe,{label:s("settings.relayTunnelClientRouteLabel"),value:t}),e.jsx(pe,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:a})]}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:n})]})}function pe({label:t,value:a,trailing:n,className:c}){return e.jsx(ce,{className:c,label:t,trailing:n??e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:a})})}function ji(t){if(t.probeInProgress)return s("settings.relayTunnelClientRouteHintRelayProbing");switch(t.kind){case"relay":return s("settings.relayTunnelClientRouteHintRelay");case"lan":return s("settings.relayTunnelClientRouteHintLan");case"loopback":return s("settings.relayTunnelClientRouteHintLoopback");case"tailscale":return s("settings.relayTunnelClientRouteHintTailscale");default:return s("settings.relayTunnelClientRouteHintDirect")}}function Ls({title:t,message:a,action:n}){return e.jsxs("div",{className:"settings-relay-tunnel-feedback-banner",role:"alert",children:[e.jsxs("div",{className:"settings-relay-tunnel-feedback-copy",children:[e.jsx("strong",{children:t}),e.jsx("span",{children:a})]}),n?e.jsx("div",{className:"settings-relay-tunnel-feedback-action",children:n}):null]})}function Es(t,a){return t?"done":a?"current":"pending"}function Os(t,a){return t?"settings.relayTunnelStepDone":a?"settings.relayTunnelStepCurrent":"settings.relayTunnelStepPending"}function Ni(t){switch(t.reason){case"reserved":return s("settings.relayTunnelHostLabelReserved");case"occupied":return s("settings.relayTunnelHostLabelOccupied");case"available":return t.tunnelDomain?s("settings.relayTunnelHostLabelAvailable",{domain:t.tunnelDomain}):s("settings.relayTunnelHostLabelUnavailable");default:return s("settings.relayTunnelHostLabelUnavailable")}}function he(t){return t instanceof fe||t instanceof Error?t.message:s("settings.relayTunnelLoadFailed")}function Rs(t,a,n){if(t instanceof fe&&t.errorCode==="NETWORK_ERROR"){const c=(n==null?void 0:n.trim())||s("common.unknown");return a==="login"?s("settings.relayTunnelLoginNetworkError",{address:c}):a==="config"?s("settings.relayTunnelConfigNetworkError",{address:c}):s("settings.relayTunnelStatusNetworkError",{address:c})}return he(t)}function Ue(t){if(!t)return s("settings.tailscaleUnavailable");const a=Number(t);return!Number.isFinite(a)||a<1024?`${t} B`:a<1024**2?`${(a/1024).toFixed(1)} KB`:a<1024**3?`${(a/1024**2).toFixed(1)} MB`:`${(a/1024**3).toFixed(2)} GB`}function Vt(t){return t?t.split(".")[0]||s("common.unknown"):s("common.unknown")}function dt(t){var c,o,m,v;const a=ut(t.hostLabel)??ut(Vt(t.tunnelDomain));if(!a)return((c=t.tunnelDomain)==null?void 0:c.trim())??null;const n=(o=t.controlBaseUrl)==null?void 0:o.trim();if(!n)return((m=t.tunnelDomain)==null?void 0:m.trim())??null;try{const j=new URL(n);return j.hostname=`${a}.${j.hostname}`,j.pathname="/",j.search="",j.hash="",j.origin}catch{return((v=t.tunnelDomain)==null?void 0:v.trim())??null}}function ut(t){const a=(t==null?void 0:t.trim().toLowerCase())??"";return!a||a===s("common.unknown").toLowerCase()?null:a}async function Us(t,a){!(await t(a)).ok&&typeof window<"u"&&window.open(a,"_blank","noopener,noreferrer")}function wi(t){var c;if(typeof document>"u")return!1;const a=(c=document.execCommand)==null?void 0:c.bind(document);if(typeof a!="function")return!1;const n=document.createElement("textarea");n.value=t,n.setAttribute("readonly","true"),n.style.position="fixed",n.style.top="-9999px",n.style.opacity="0",document.body.append(n),n.select();try{return a("copy")}catch{return!1}finally{n.remove()}}async function Si(t,a){var n;if(a.bridge.supported)try{if((await a.bridge.writeClipboardText(t)).ok)return}catch{}if(typeof navigator<"u"&&((n=navigator.clipboard)!=null&&n.writeText))try{await navigator.clipboard.writeText(t);return}catch{}if(!wi(t))throw new Error(s("settings.relayTunnelCopyAccessUrlFailed"))}function ki(t,a){return t===a?!0:!t||!a?!1:t.provider===a.provider&&t.enabled===a.enabled&&t.tunnelDomain===a.tunnelDomain&&t.controlBaseUrl===a.controlBaseUrl&&(t.bindingId??null)===(a.bindingId??null)&&(t.hostFingerprint??null)===(a.hostFingerprint??null)&&JSON.stringify(t.candidateEndpoints??[])===JSON.stringify(a.candidateEndpoints??[])}async function gt(){return await F.request("/api/system/tailscale/status")}async function mt(t){return await F.request("/api/system/tailscale/config",{method:"PUT",body:JSON.stringify(t)})}async function Ti(){return await F.request("/api/system/tailscale/enable",{method:"POST"})}async function Ci(){return await F.request("/api/system/tailscale/disable",{method:"POST"})}async function Di(){return await F.request("/api/system/tailscale/login",{method:"POST"})}async function Mi(){return await F.request("/api/system/tailscale/logout",{method:"POST"})}function Pi({children:t}){return e.jsx("div",{className:"settings-remote-access-metrics",children:t})}function es({label:t,value:a}){return e.jsxs("article",{className:"settings-remote-access-metric-card",children:[e.jsx("span",{className:"settings-remote-access-metric-label",children:t}),e.jsx("strong",{className:"settings-remote-access-metric-value",children:a})]})}function Ai({checked:t,label:a,disabled:n,onChange:c}){return e.jsxs("div",{className:"settings-remote-access-switch",children:[e.jsx("span",{className:"settings-remote-access-switch-label",children:a}),e.jsxs("label",{className:"settings-mobile-switch","data-disabled":n?"true":void 0,onClick:o=>{if(n){o.preventDefault();return}o.target instanceof HTMLInputElement||(o.preventDefault(),c(!t))},children:[e.jsx("input",{type:"checkbox","aria-label":a,checked:t,disabled:n,onChange:o=>c(o.target.checked)}),e.jsx("span",{className:"settings-mobile-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-mobile-switch-thumb"})})]})]})}function Li({configMode:t="modal"}){const a=Ve(),[n,c]=r.useState(null),[o,m]=r.useState(""),[v,j]=r.useState(""),[p,D]=r.useState(!0),[d,y]=r.useState(null),[k,w]=r.useState(null),[O,b]=r.useState(!1),[P,g]=r.useState(!1),x=r.useRef(!0),h=r.useRef(!1),f=r.useRef(async()=>{}),l=t==="inline",N=(n==null?void 0:n.activated)??!1;h.current=P;function L(T){if(c(T),m(T.controlServerUrl??""),j(T.hostname??""),w(null),!T.activated){g(!1),b(!1);return}h.current&&!ft(T.lastError)&&g(!1)}f.current=async T=>{T||D(!0);try{const H=await gt();if(!x.current)return;L(H)}catch(H){if(!x.current)return;w(Ie(H))}finally{x.current&&!T&&D(!1)}},r.useEffect(()=>(x.current=!0,f.current(!1),()=>{x.current=!1}),[]),r.useEffect(()=>{if(!N)return;const T=window.setInterval(()=>{f.current(!0)},5e3);return()=>{window.clearInterval(T)}},[N]),r.useEffect(()=>{if(!P||!N)return;function T(){f.current(!0)}function H(){document.visibilityState==="visible"&&f.current(!0)}return window.addEventListener("focus",T),document.addEventListener("visibilitychange",H),()=>{window.removeEventListener("focus",T),document.removeEventListener("visibilitychange",H)}},[N,P]);const C=((n==null?void 0:n.controlServerUrl)??"")!==o.trim()||((n==null?void 0:n.hostname)??"")!==v.trim(),S=N&&ft(n==null?void 0:n.lastError),E=N&&Ri(a.ui.osFamily)&&S;async function q(){const T=await mt({controlServerUrl:pt(o),hostname:pt(v)});return L(T),T}async function J(T){y("toggle-activation"),w(null);try{const H=await mt({activated:T});L(H)}catch(H){w(Ie(H))}finally{y(null),D(!1)}}async function B(T){y(T),w(null);try{C&&T!=="disable"&&T!=="logout"&&await q();const H=T==="enable"?await Ti():T==="disable"?await Ci():T==="login"?await Di():await Mi();L(H)}catch(H){w(Ie(H))}finally{y(null)}}async function I(){y("save"),w(null);try{await q(),b(!1)}catch(T){w(Ie(T))}finally{y(null)}}async function z(){y("refresh"),w(null);try{const T=await gt();L(T)}catch(T){w(Ie(T))}finally{y(null),D(!1)}}async function $(){const T=Ui(a.ui.osFamily);if(T){y("install"),w(null);try{const H=await a.bridge.openExternal(T);if(!H.ok){w(H.detail??s("settings.tailscaleInstallOpenFailed"));return}g(!0)}catch(H){w(H instanceof Error?H.message:s("settings.tailscaleInstallOpenFailed"))}finally{y(null)}}}function Q(){d!=="save"&&b(!1)}const Z=N?e.jsxs("span",{className:"settings-tailscale-status-indicator","data-tone":Ii((n==null?void 0:n.phase)??"disabled"),children:[e.jsx("span",{className:"settings-tailscale-status-dot","aria-hidden":"true"}),Oi((n==null?void 0:n.phase)??"disabled")]}):s("settings.remoteAccessFeatureDisabledValue");return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-panel",children:[e.jsx(G,{heading:s("settings.tailscaleSectionTitle"),description:s("settings.tailscaleSectionDescription"),actions:e.jsx(Ai,{checked:N,label:s("settings.tailscaleMasterSwitchLabel"),disabled:d!==null,onChange:T=>{J(T)}}),children:p&&!n?e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[e.jsxs(Pi,{children:[e.jsx(es,{label:s("settings.tailscaleStatusIndicator"),value:Z}),e.jsx(es,{label:s("settings.tailscaleServerAddress"),value:N?(n==null?void 0:n.reachableBaseUrl)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(es,{label:s("settings.tailscaleAccountName"),value:N?(n==null?void 0:n.accountName)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(es,{label:s("settings.tailscaleIpAddress"),value:N?Ei(n):s("settings.tailscaleUnavailable")})]}),N?null:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("settings.tailscaleActivationHint")}),N&&(n==null?void 0:n.phase)==="needs_login"&&n.loginUrl?e.jsx("p",{className:"settings-tailscale-login-url",children:e.jsx("a",{className:"settings-tailscale-link",href:n.loginUrl,rel:"noreferrer",target:"_blank",children:n.loginUrl})}):null,k||n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:k??(n==null?void 0:n.lastError)}):null,N?e.jsxs(ee,{align:"start",children:[E?e.jsx("button",{className:"settings-button",type:"button",disabled:p||d!==null,onClick:()=>{$()},children:d==="install"?s("common.loading"):s("settings.tailscaleInstallAction")}):null,l?null:e.jsx("button",{className:"secondary-button",type:"button",disabled:p||d!==null,onClick:()=>b(!0),children:s("settings.tailscaleConfigure")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:p||d!==null,onClick:()=>{z()},children:d==="refresh"?s("common.loading"):s("settings.tailscaleRefresh")}),n!=null&&n.enabled?e.jsx("button",{className:"secondary-button",type:"button",disabled:p||d!==null||S,onClick:()=>{B("disable")},children:d==="disable"?s("common.loading"):s("settings.tailscaleDisable")}):e.jsx("button",{className:"secondary-button",type:"button",disabled:p||d!==null||S,onClick:()=>{B("enable")},children:d==="enable"?s("common.loading"):s("settings.tailscaleEnable")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:p||d!==null||!(n!=null&&n.enabled)||S,onClick:()=>{B("login")},children:d==="login"?s("common.loading"):s("settings.tailscaleLogin")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:p||d!==null||!(n!=null&&n.enabled)||S,onClick:()=>{B("logout")},children:d==="logout"?s("common.loading"):s("settings.tailscaleLogout")})]}):null]})}),l&&N?e.jsx(G,{heading:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),children:e.jsx(ht,{controlServerUrlDraft:o,hostnameDraft:v,pendingAction:d,configDirty:C,onControlServerUrlChange:m,onHostnameChange:j,onSave:()=>{I()}})}):null]}),e.jsx(De,{open:!l&&N&&O,title:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),size:"regular",onClose:Q,children:e.jsx(ht,{controlServerUrlDraft:o,hostnameDraft:v,pendingAction:d,configDirty:C,footer:e.jsx("div",{className:"settings-tailscale-modal-actions",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:d==="save",onClick:Q,children:s("common.cancel")})}),onControlServerUrlChange:m,onHostnameChange:j,onSave:()=>{I()}})})]})}function ht({controlServerUrlDraft:t,hostnameDraft:a,pendingAction:n,configDirty:c,footer:o,onControlServerUrlChange:m,onHostnameChange:v,onSave:j}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-form",children:[e.jsx(Y,{label:s("settings.tailscaleControlServer"),children:e.jsx("input",{"aria-label":s("settings.tailscaleControlServer"),className:"settings-text-input",placeholder:s("settings.tailscaleControlServerPlaceholder"),value:t,onChange:p=>m(p.target.value)})}),e.jsx(Y,{label:s("settings.tailscaleHostname"),children:e.jsx("input",{"aria-label":s("settings.tailscaleHostname"),className:"settings-text-input",placeholder:s("settings.tailscaleHostnamePlaceholder"),value:a,onChange:p=>v(p.target.value)})})]}),e.jsxs(ee,{align:"start",className:"settings-tailscale-config-actions",children:[o,e.jsx("button",{className:"settings-button",type:"button",disabled:n!==null||!c,onClick:j,children:n==="save"?s("common.loading"):s("common.save")})]})]})}function pt(t){const a=t.trim();return a.length>0?a:null}function Ie(t){return t instanceof fe||t instanceof Error?t.message:s("settings.tailscaleLoadFailed")}function Ei(t){if(!t)return s("settings.tailscaleUnavailable");const a=[t.tailnetIpv4,t.tailnetIpv6].filter(n=>!!n);return a.length>0?a.join(" / "):s("settings.tailscaleUnavailable")}function Oi(t){switch(t){case"blocked_uninitialized":return s("settings.tailscalePhaseBlockedUninitialized");case"starting":return s("settings.tailscalePhaseStarting");case"needs_login":return s("settings.tailscalePhaseNeedsLogin");case"running":return s("settings.tailscalePhaseRunning");case"stopping":return s("settings.tailscalePhaseStopping");case"error":return s("settings.tailscalePhaseError");case"disabled":default:return s("settings.tailscalePhaseDisabled")}}function ft(t){return t?t.includes("Tailscale CLI"):!1}function Ri(t){return t==="macos"||t==="windows"}function Ui(t){switch(t){case"macos":return"https://tailscale.com/download/mac";case"windows":return"https://tailscale.com/download/windows";default:return null}}function Ii(t){switch(t){case"running":return"green";case"starting":case"needs_login":case"error":return"yellow";case"disabled":case"blocked_uninitialized":case"stopping":default:return"gray"}}function _t({open:t,mobile:a,onClose:n}){const[c,o]=r.useState("tunnel"),m=r.useId(),v=[{id:"tunnel",label:s("settings.remoteAccessTunnelTab")},{id:"tailscale",label:s("settings.remoteAccessTailscaleTab")}],j=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.remoteAccessTabsLabel"),children:v.map(p=>{const D=`${m}-${p.id}-tab`,d=`${m}-${p.id}-panel`,y=c===p.id;return e.jsx("button",{id:D,type:"button",role:"tab",className:"settings-model-tab","data-active":y?"true":void 0,"aria-selected":y,"aria-controls":d,onClick:()=>o(p.id),children:p.label},p.id)})}),c==="tunnel"?e.jsx("div",{id:`${m}-tunnel-panel`,"aria-labelledby":`${m}-tunnel-tab`,role:"tabpanel",children:e.jsx(vi,{})}):e.jsx("div",{id:`${m}-tailscale-panel`,"aria-labelledby":`${m}-tailscale-tab`,role:"tabpanel",children:e.jsx(Li,{configMode:"inline"})})]});return a?e.jsx(ye,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:n,children:j}):e.jsx(De,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),size:"wide",onClose:n,children:j})}function qt({open:t,mobile:a,workspaceId:n,onClose:c}){var T,H;const o=Bs(),{showToast:m}=yt(),[v,j]=r.useState([]),[p,D]=r.useState(""),[d,y]=r.useState(null),[k,w]=r.useState([]),[O,b]=r.useState([]),[P,g]=r.useState(!1),[x,h]=r.useState(!1),[f,l]=r.useState(!1),[N,L]=r.useState(!1),[C,S]=r.useState(null);async function E(M){g(!0);try{const U=(await vn()).items;j(U);const A=Fi(M??p,U);return D(A),A}catch(u){return m({title:u instanceof Error?u.message:s("plugins.listLoadFailed"),tone:"error"}),""}finally{g(!1)}}async function q(M){if(!M){y(null),w([]);return}h(!0);try{const[u,U]=await Promise.all([yn(M),jn(M)]);y(u),w(U.items)}catch(u){m({title:u instanceof Error?u.message:s("plugins.detailLoadFailed"),tone:"error"}),y(null),w([])}finally{h(!1)}}async function J(M){const u=(n==null?void 0:n.trim())??"";if(!M||!u){b([]);return}l(!0);try{const U=await Nn(M,u);b(U.items)}catch(U){m({title:U instanceof Error?U.message:s("plugins.permissionGrantLoadFailed"),tone:"error"}),b([])}finally{l(!1)}}r.useEffect(()=>{t&&E()},[t]),r.useEffect(()=>{t&&(q(p),J(p))},[t,p]);const B=r.useMemo(()=>(d==null?void 0:d.manifest.permissions.desktop)??[],[d]),I=!!(d!=null&&d.frontend&&(n!=null&&n.trim()));async function z(){if(!(!d||N)){L(!0);try{d.enablement.enabled?await Sn(d.definition.id,s("plugins.disabledByUserReason")):await kn(d.definition.id);const M=await E(d.definition.id);await q(M||d.definition.id),m({title:d.enablement.enabled?s("plugins.disableSuccess"):s("plugins.enableSuccess"),tone:"success"})}catch(M){m({title:M instanceof Error?M.message:s("plugins.saveFailed"),tone:"error"})}finally{L(!1)}}}async function $(M){const u=(n==null?void 0:n.trim())??"";if(!(!d||!u||C)){S(M.id);try{await wn(d.definition.id,M.id,u),await Promise.all([q(d.definition.id),J(d.definition.id)]),m({title:s("plugins.revokeGrantSuccess"),tone:"success"})}catch(U){m({title:U instanceof Error?U.message:s("plugins.revokeGrantFailed"),tone:"error"})}finally{S(null)}}}function Q(){const M=(n==null?void 0:n.trim())??"";!(d!=null&&d.frontend)||!M||(o(xn(M,d.definition.id)),c())}const Z=e.jsxs("div",{className:"settings-plugin-manager-layout",children:[e.jsx(G,{heading:s("settings.pluginManagementModalListTitle"),description:s("settings.pluginManagementModalListDescription"),className:"settings-plugin-modal-section",children:P?e.jsx("p",{className:"plugins-hint-text",children:s("plugins.loading")}):v.length===0?e.jsx(X,{title:s("plugins.emptyTitle"),description:s("plugins.emptyDescription"),compact:!0}):e.jsx(de,{className:"settings-plugin-modal-list",children:v.map(M=>e.jsx(ce,{as:"button",selected:p===M.id,label:M.name,description:`${M.id} · v${M.version}`,trailing:e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(K,{tone:M.enabled?"success":"default",children:M.enabled?s("plugins.enabled"):s("plugins.disabled")}),M.hasFrontend?e.jsx(K,{children:s("plugins.frontendTag")}):null,M.hasBackend?e.jsx(K,{children:s("plugins.backendTag")}):null]}),onClick:()=>D(M.id)},M.id))})}),e.jsx(G,{heading:s("settings.pluginManagementModalDetailTitle"),description:s("settings.pluginManagementModalDetailDescription"),className:"settings-plugin-modal-section settings-plugin-modal-detail-section",children:!p&&!P?e.jsx(X,{title:s("settings.pluginManagementSelectPluginTitle"),description:s("settings.pluginManagementSelectPluginDescription"),compact:!0}):x?e.jsx("p",{className:"plugins-hint-text",children:s("plugins.loading")}):d?e.jsxs("div",{className:"settings-plugin-modal-detail-stack",children:[e.jsxs("header",{className:"settings-plugin-modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:d.manifest.name}),e.jsx("p",{children:d.manifest.description??d.definition.id})]}),e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(K,{tone:d.enablement.enabled?"success":"default",children:d.enablement.enabled?s("plugins.enabled"):s("plugins.disabled")}),e.jsx(K,{children:`v${d.manifest.version}`})]})]}),e.jsx(G,{heading:s("plugins.summaryTitle"),description:s("plugins.summaryDescription"),children:e.jsxs(de,{compact:!0,children:[e.jsx(ce,{label:s("plugins.pluginIdLabel"),description:d.definition.id}),e.jsx(ce,{label:s("plugins.installRootLabel"),description:d.definition.installRoot}),e.jsx(ce,{label:s("plugins.runtimeLabel"),description:d.manifest.backend?`${s("plugins.backendTag")} · ${d.manifest.backend.mode??"on_demand"}`:s("plugins.frontendOnly")})]})}),e.jsx(G,{heading:s("plugins.permissionTitle"),description:s("plugins.permissionDescription"),children:e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(K,{tone:d.manifest.permissions.workspaceRead?"success":"default",children:d.manifest.permissions.workspaceRead?s("plugins.workspaceReadAllowed"):s("plugins.workspaceReadDenied")}),e.jsx(K,{tone:d.manifest.permissions.network?"warning":"default",children:d.manifest.permissions.network?s("plugins.networkAllowed"):s("plugins.networkDenied")}),B.length>0?B.map(M=>e.jsx(K,{children:M},M)):e.jsx(K,{children:s("plugins.noDesktopPermission")})]})}),e.jsx(Tn,{grants:O,auditEvents:d.auditEvents,loading:f,revokingGrantId:C,onRevokeGrant:M=>{$(M)}}),(H=(T=d.manifest.backend)==null?void 0:T.actions)!=null&&H.length?e.jsx(G,{heading:s("plugins.actionTitle"),description:s("plugins.actionDescription"),children:e.jsx(de,{compact:!0,children:d.manifest.backend.actions.map(M=>e.jsx(ce,{label:M.title,description:`${M.id} · ${M.timeoutMs??3e4}ms`},M.id))})}):null,e.jsx(G,{heading:s("plugins.runHistoryTitle"),description:s("plugins.runHistoryDescription"),children:k.length===0?e.jsx(X,{title:s("plugins.runHistoryEmptyTitle"),description:s("plugins.runHistoryEmptyDescription"),compact:!0}):e.jsx(de,{compact:!0,children:k.slice(0,10).map(M=>e.jsx(ce,{label:M.actionId??s("plugins.unknownAction"),description:`${M.status} · ${M.createdAt}`,trailing:M.errorCode?e.jsx(K,{tone:"danger",children:M.errorCode}):null},M.id))})}),I?null:e.jsx("p",{className:"settings-plugin-modal-workspace-note",children:s("settings.pluginManagementWorkspaceRequired")}),e.jsxs(ee,{align:"between",stack:!0,children:[e.jsx("button",{type:"button",className:"secondary-button",onClick:c,children:s("common.close")}),e.jsxs("div",{className:"settings-plugin-modal-actions",children:[d.frontend?e.jsx("button",{type:"button",className:"secondary-button",disabled:!I,onClick:Q,children:s("plugins.openPlugin")}):null,e.jsx("button",{type:"button",className:d.enablement.enabled?"secondary-button":"primary-button",disabled:N,onClick:()=>{z()},children:d.enablement.enabled?s("plugins.disableAction"):s("plugins.enableAction")})]})]})]}):e.jsx(X,{title:s("plugins.detailMissingTitle"),description:s("plugins.detailMissingDescription"),compact:!0})})]});return a?e.jsx(ye,{open:t,title:s("settings.pluginManagementModalTitle"),description:s("settings.pluginManagementModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:c,children:Z}):e.jsx(Ce,{open:t,title:s("settings.pluginManagementModalTitle"),description:s("settings.pluginManagementModalDescription"),size:"xwide",layout:"list",bodyClassName:"settings-plugin-modal-body",onClose:c,children:Z})}function Fi(t,a){var n;return t&&a.some(c=>c.id===t)?t:((n=a[0])==null?void 0:n.id)??""}function bt({title:t,description:a,actions:n,content:c,className:o}){return e.jsx(Cn,{className:o,children:e.jsxs("section",{className:"mobile-workspace-home-header mobile-page-header",children:[e.jsx("h1",{className:"mobile-workspace-switcher-heading",children:t}),e.jsxs("div",{className:"mobile-workspace-home-toolbar-top mobile-page-header-main",children:[e.jsx("div",{className:"mobile-page-header-copy",children:e.jsx("div",{className:"mobile-workspace-home-switcher mobile-page-header-static-title",children:e.jsx("span",{className:"mobile-workspace-home-switcher-label",children:t})})}),n?e.jsx("div",{className:"mobile-workspace-home-toolbar-actions mobile-page-header-actions",children:n}):null]}),a?e.jsx("p",{className:"mobile-workspace-home-path mobile-page-header-description",children:a}):null,c?e.jsx("div",{className:"mobile-page-header-content",children:c}):null]})})}const Wt={start:43e3,end:47999};function Bi(t){return t==="appearance"||t==="ability-management"||t==="channels-management"||t==="model-management"||t==="provider-management"||t==="server-connection"||t==="remote-access"||t==="security-privacy"||t==="software-update"}function Hi(t){return Bi(t)?t==="model-management"||t==="provider-management"?"ability-management":t:null}function Vi(t){return t==="en-US"?s("locale.enUS"):s("locale.zhCN")}function _i(t){return t==="beta"?s("settings.releaseBeta"):s("settings.releaseStable")}function qi(t){switch(t){case"acceptEdits":return s("settings.permissionModeAcceptEdits");case"bypassPermissions":return s("settings.permissionModeBypassPermissions");default:return s("settings.permissionModeDefault")}}function Wi(){const t=Bs(),{theme:a,selectedTheme:n,autoTheme:c,setTheme:o,setAutoTheme:m}=ln(),v=Jt(A=>A),j=ms(A=>A.profile.language),p=ms(A=>A.profile.defaultPermissionMode),D=Le(A=>A.sessionDisplaySortMode),d=Le(A=>A.showSystemFiles),y=Le(A=>A.notificationPreferences.notifyOnPermissionRequest),k=Le(A=>A.notificationPreferences.notifyOnSessionCompleted),w=Le(A=>A.notificationPreferences.notifyOnSessionFailed),O={language:j,defaultPermissionMode:p,debugPortPools:ms(A=>A.profile.debugPortPools)??Wt},b=Ve(),P=Qt(v.platform),g=P,x=Fs(v)??"",[h,f]=r.useState(x);r.useEffect(()=>{f(x)},[x]);function l(){Yt.clear(),hs.resetToLocalFallback(),t("/login",{replace:!0})}function N(A){o(A)}function L(A){m(A)}function C(A){try{return Zt(A)}catch{return null}}const S=C(h),E=S!==null&&S!==x;function q(A){A.preventDefault(),S&&oe.update({hosts:v.hosts.map(te=>te.id===v.activeHostId?{...te,baseUrl:S,updatedAt:new Date().toISOString()}:te)})}const J=[{value:"default",label:s("settings.permissionModeDefault")},{value:"acceptEdits",label:s("settings.permissionModeAcceptEdits")},{value:"bypassPermissions",label:s("settings.permissionModeBypassPermissions")}],B=[{value:"createdAt",label:s("settings.sessionSortModeCreatedAt")},{value:"updatedAt",label:s("settings.sessionSortModeUpdatedAt")},{value:"title",label:s("settings.sessionSortModeTitle")}];function I(A){oe.update({releaseChannel:A==="beta"?"beta":"stable"})}function z(A){oe.update({autoReconnect:A})}function $(A){oe.update({autoCheckUpdate:A})}function Q(A){const te=A==="acceptEdits"||A==="bypassPermissions"?A:"default";hs.updateProfile({defaultPermissionMode:te}).catch(()=>{})}function Z(A){const te=A==="updatedAt"||A==="title"?A:"createdAt";Ee.setSessionDisplaySortMode(te)}function T(A){Ee.setShowSystemFiles(A)}function H(A){Ee.setNotificationPreferences({notifyOnPermissionRequest:A})}function M(A){Ee.setNotificationPreferences({notifyOnSessionCompleted:A})}function u(A){Ee.setNotificationPreferences({notifyOnSessionFailed:A})}async function U(A){await hs.updateProfile({debugPortPools:A})}return{platform:b,theme:a,selectedTheme:n,autoTheme:c,applyTheme:N,applyAutoTheme:L,runtimeConfig:v,accountPreferences:O,sessionDisplaySortMode:D,showSystemFiles:d,notifyOnPermissionRequest:y,notifyOnSessionCompleted:k,notifyOnSessionFailed:w,showServerSettings:g,canConfigureServerAddress:P,hostBaseUrlDraft:h,setHostBaseUrlDraft:f,canSaveHostBaseUrl:E,permissionModeOptions:J,sessionDisplaySortModeOptions:B,handleHostBaseUrlSubmit:q,handleLogout:l,updateReleaseChannel:I,updateAutoReconnect:z,updateAutoCheckUpdate:$,updateDefaultPermissionMode:Q,updateSessionDisplaySortMode:Z,updateShowSystemFiles:T,updateNotifyOnPermissionRequest:H,updateNotifyOnSessionCompleted:M,updateNotifyOnSessionFailed:u,updateDebugPortPools:U}}function Sl(){const t=Wi(),a=an();return t.platform.isMobile?e.jsx($i,{model:t,appVersion:a}):e.jsx(zi,{model:t,appVersion:a})}function zi({model:t,appVersion:a}){var ne;const[n,c]=r.useState(!1),[o,m]=r.useState(!1),[v,j]=r.useState(!1),{currentWorkspaceId:p,navigationGroups:D}=kt(),{theme:d,selectedTheme:y,autoTheme:k,applyTheme:w,applyAutoTheme:O,runtimeConfig:b,accountPreferences:P,sessionDisplaySortMode:g,showSystemFiles:x,notifyOnPermissionRequest:h,notifyOnSessionCompleted:f,notifyOnSessionFailed:l,showServerSettings:N,hostBaseUrlDraft:L,setHostBaseUrlDraft:C,canSaveHostBaseUrl:S,permissionModeOptions:E,sessionDisplaySortModeOptions:q,platform:J,handleHostBaseUrlSubmit:B,handleLogout:I,updateReleaseChannel:z,updateAutoReconnect:$,updateAutoCheckUpdate:Q,updateDefaultPermissionMode:Z,updateSessionDisplaySortMode:T,updateShowSystemFiles:H,updateNotifyOnPermissionRequest:M,updateNotifyOnSessionCompleted:u,updateNotifyOnSessionFailed:U,updateDebugPortPools:A}=t,te=p??((ne=D[0])==null?void 0:ne.workspace.id)??null;return e.jsxs("div",{className:"settings-page",children:[e.jsxs("div",{className:"settings-container",children:[e.jsx("h1",{className:"settings-title",children:s("settings.title")}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.appearance")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.language")}),e.jsx("span",{className:"settings-row-description",children:s("settings.languageDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(jt,{})})]}),e.jsxs("div",{className:"settings-row settings-row-theme",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.theme")}),e.jsx("span",{className:"settings-row-description",children:s("settings.themeDescription")})]}),e.jsxs("div",{className:"settings-row-control settings-row-control-stretch",children:[e.jsxs("div",{className:"settings-theme-panel",children:[e.jsxs("div",{className:"settings-theme-toggle-row",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.autoTheme")}),e.jsx(se,{checked:k,label:s("settings.autoTheme"),onChange:O})]}),e.jsx("span",{className:"settings-theme-note",children:s("settings.autoThemeDescription")})]}),e.jsx("div",{className:"theme-selector",children:Nt.map(V=>e.jsxs("button",{type:"button",className:`theme-card ${y===V.id&&!k?"active":""}`,"aria-pressed":y===V.id&&!k,disabled:k,onClick:()=>w(V.id),children:[e.jsx("span",{className:"theme-preview",style:{background:V.color}}),e.jsx("span",{className:"theme-label",children:wt(V)}),y===V.id&&!k?e.jsx("span",{className:"theme-check",children:"✓"}):null]},V.id))})]})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.workspaceSessionSortMode")}),e.jsx("span",{className:"settings-row-description",children:s("settings.workspaceSessionSortModeDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx("select",{"aria-label":s("settings.workspaceSessionSortMode"),className:"settings-select",value:g,onChange:V=>T(V.target.value),children:q.map(V=>e.jsx("option",{value:V.value,children:V.label},V.value))})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.showSystemFiles")}),e.jsx("span",{className:"settings-row-description",children:s("settings.showSystemFilesDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(se,{checked:x,label:s("settings.showSystemFiles"),onChange:H})})]})]})]}),N?e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.serverConnection")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.serverAddress")}),e.jsx("span",{className:"settings-row-description",children:s("settings.serverDescription")})]}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsxs("form",{className:"settings-inline-form",onSubmit:B,children:[e.jsx("input",{"aria-label":s("settings.serverAddress"),className:"settings-text-input",value:L,onChange:V=>C(V.target.value)}),e.jsx("button",{className:"settings-button",disabled:!S,type:"submit",children:s("common.save")})]})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.autoReconnect")}),e.jsx("span",{className:"settings-row-description",children:s("settings.autoReconnectDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(se,{checked:b.autoReconnect,label:s("settings.autoReconnect"),onChange:$})})]})]})]}):null,e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.abilityManagement")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.pluginManagement")}),e.jsx("span",{className:"settings-row-description",children:s("settings.pluginManagementDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx("button",{className:"settings-button",type:"button",onClick:()=>j(!0),children:s("settings.pluginManagementAction")})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.skillOnlyOfficeSectionTitle")}),e.jsx("span",{className:"settings-row-description",children:s("settings.skillOnlyOfficeSectionDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(Mt,{triggerClassName:"settings-button",triggerLabel:s("settings.skillOnlyOfficeOpenSettingsAction")})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.providerManagement")}),e.jsx("span",{className:"settings-row-description",children:s("settings.providerManagementDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(Pt,{})})]}),e.jsxs("div",{className:"settings-row settings-row-stacked",children:[e.jsx("div",{className:"settings-row-label settings-row-label-single-line",children:e.jsx("span",{className:"settings-row-title settings-row-title-strong",children:s("settings.modelManagementSectionTitle")})}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch settings-row-control-full-width",children:e.jsx(Dt,{})})]})]})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.channelsManagement")}),e.jsx("div",{className:"settings-card",children:e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.channelsManagement")}),e.jsx("span",{className:"settings-row-description",children:s("settings.channelsManagementDescription")})]}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(Lt,{})})]})})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.remoteAccess")}),e.jsx("div",{className:"settings-card",children:e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.remoteAccessManageTitle")}),e.jsx("span",{className:"settings-row-description",children:s("settings.remoteAccessManageDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx("button",{className:"settings-button",type:"button",onClick:()=>m(!0),children:s("settings.remoteAccessManageAction")})})]})})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.securityPrivacy")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.defaultPermissionMode")}),e.jsx("span",{className:"settings-row-description",children:s("settings.defaultPermissionModeDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx("select",{"aria-label":s("settings.defaultPermissionMode"),className:"settings-select",value:P.defaultPermissionMode,onChange:V=>Z(V.target.value),children:E.map(V=>e.jsx("option",{value:V.value,children:V.label},V.value))})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.authDeviceManagement")}),e.jsx("span",{className:"settings-row-description",children:s("settings.authDeviceManagementDescription")})]}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(It,{})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.notifyOnPermissionRequest")}),e.jsx("span",{className:"settings-row-description",children:s("settings.notifyOnPermissionRequestDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(se,{checked:h,label:s("settings.notifyOnPermissionRequest"),onChange:M})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.notifyOnSessionCompleted")}),e.jsx("span",{className:"settings-row-description",children:s("settings.notifyOnSessionCompletedDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(se,{checked:f,label:s("settings.notifyOnSessionCompleted"),onChange:u})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.notifyOnSessionFailed")}),e.jsx("span",{className:"settings-row-description",children:s("settings.notifyOnSessionFailedDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(se,{checked:l,label:s("settings.notifyOnSessionFailed"),onChange:U})})]})]})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.debugPortPool")}),e.jsx("div",{className:"settings-card",children:e.jsx(zt,{value:P.debugPortPools,onSave:A})})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.softwareUpdate")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.releaseChannel")}),e.jsx("span",{className:"settings-row-description",children:s("settings.releaseChannelDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsxs("select",{"aria-label":s("settings.releaseChannel"),className:"settings-select",value:b.releaseChannel,onChange:V=>z(V.target.value),children:[e.jsx("option",{value:"stable",children:s("settings.releaseStable")}),e.jsx("option",{value:"beta",children:s("settings.releaseBeta")})]})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsx("div",{className:"settings-row-label",children:e.jsx("span",{className:"settings-row-title",children:s("settings.serverUpdate")})}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(Ht,{})})]}),J.isWeb?null:e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-row",children:[e.jsx("div",{className:"settings-row-label",children:e.jsx("span",{className:"settings-row-title",children:s("settings.autoCheckUpdate")})}),e.jsx("div",{className:"settings-row-control",children:e.jsx(se,{checked:b.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:Q})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsx("div",{className:"settings-row-label",children:e.jsx("span",{className:"settings-row-title",children:s("settings.clientUpdate")})}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(Ct,{})})]})]})]})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.advancedSettings")}),e.jsx("div",{className:"settings-card",children:e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.parallelTaskDebug")}),e.jsx("span",{className:"settings-row-description",children:s("settings.parallelTaskDebugDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx("button",{className:"settings-button",type:"button",onClick:()=>c(!0),children:s("settings.parallelTaskDebugAction")})})]})})]}),e.jsxs("div",{className:"settings-footer settings-footer-with-logout",children:[e.jsxs("span",{className:"settings-version",children:["CodingNS v",a]}),e.jsx("button",{className:"settings-button settings-button-danger settings-button-sticky",onClick:I,type:"button",children:s("common.logout")})]})]}),e.jsx(Pn,{isOpen:n,onClose:()=>c(!1)}),e.jsx(_t,{open:o,mobile:!1,onClose:()=>m(!1)}),e.jsx(qt,{open:v,mobile:!1,workspaceId:te,onClose:()=>j(!1)})]})}function $i({model:t,appVersion:a}){const n=Bs(),{section:c}=rn(),o=Hi(c),m=[{id:"appearance",title:s("settings.appearance"),description:s("settings.appearanceSectionSummary"),value:Vi(t.accountPreferences.language),icon:e.jsx(sl,{})}];return t.showServerSettings&&m.push({id:"server-connection",title:s("settings.serverConnection"),description:s("settings.serverConnectionSectionSummary"),value:Fs(t.runtimeConfig)??"",icon:e.jsx(tl,{})}),m.push({id:"ability-management",title:s("settings.abilityManagement"),description:s("settings.abilityManagementSectionSummary"),value:s("settings.abilityManagementNavValue"),icon:e.jsx(il,{})},{id:"channels-management",title:s("settings.channelsManagement"),description:s("settings.channelsManagementSectionSummary"),value:s("settings.channelsManagementNavValue"),icon:e.jsx(ll,{})},{id:"remote-access",title:s("settings.remoteAccess"),description:s("settings.remoteAccessSectionSummary"),value:s("settings.remoteAccessNavValue"),icon:e.jsx(al,{})},{id:"security-privacy",title:s("settings.securityPrivacy"),description:s("settings.securityPrivacySectionSummary"),value:qi(t.accountPreferences.defaultPermissionMode),icon:e.jsx(rl,{})},{id:"software-update",title:s("settings.softwareUpdate"),description:s("settings.softwareUpdateSectionSummary"),value:_i(t.runtimeConfig.releaseChannel),icon:e.jsx(nl,{})}),(o?m.find(j=>j.id===o)??null:null)?e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(bt,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[o==="appearance"?e.jsx(Ki,{model:t}):null,o==="ability-management"?e.jsx(Yi,{}):null,o==="channels-management"?e.jsx(Xi,{}):null,o==="server-connection"&&t.showServerSettings?e.jsx(Gi,{model:t}):null,o==="remote-access"?e.jsx(Zi,{model:t}):null,o==="security-privacy"?e.jsx(Ji,{model:t}):null,o==="software-update"?e.jsx(el,{model:t}):null]}),e.jsx(vt,{onLogout:t.handleLogout})]}):e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(bt,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[e.jsx("section",{className:"settings-mobile-group-section",children:e.jsx("div",{className:"settings-mobile-list",children:m.map(j=>e.jsxs("button",{type:"button",className:"settings-mobile-nav-row",onClick:()=>n(`/settings/${j.id}`),children:[e.jsx("span",{className:"settings-mobile-nav-icon",children:j.icon}),e.jsxs("span",{className:"settings-mobile-nav-copy",children:[e.jsx("span",{className:"settings-mobile-nav-title",children:j.title}),e.jsx("span",{className:"settings-mobile-nav-description",children:j.description})]}),e.jsxs("span",{className:"settings-mobile-nav-trailing",children:[j.value?e.jsx("span",{className:"settings-mobile-nav-value",children:j.value}):null,e.jsx(cl,{})]})]},j.id))})}),e.jsx("div",{className:"settings-footer settings-footer-mobile",children:e.jsxs("span",{className:"settings-version",children:["CodingNS v",a]})})]}),e.jsx(vt,{onLogout:t.handleLogout})]})}function Ki({model:t}){return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.language")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.languageDescription")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsx("div",{className:"settings-mobile-row-copy",children:e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.language")})}),e.jsx(jt,{variant:"compact",className:"settings-mobile-language-switcher"})]})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.theme")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.themeDescription")}),e.jsxs("div",{className:"settings-mobile-list",children:[e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.autoTheme")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.autoThemeDescription")})]}),e.jsx(se,{checked:t.autoTheme,label:s("settings.autoTheme"),onChange:t.applyAutoTheme})]}),Nt.map(a=>{const n=t.selectedTheme===a.id&&!t.autoTheme;return e.jsxs("button",{type:"button",className:`settings-mobile-choice-row${n?" active":""}`,"aria-pressed":n,disabled:t.autoTheme,onClick:()=>t.applyTheme(a.id),children:[e.jsxs("span",{className:"settings-mobile-choice-leading",children:[e.jsx("span",{className:"settings-mobile-choice-dot",style:{background:a.color},"aria-hidden":"true"}),e.jsx("span",{className:"settings-mobile-choice-label",children:wt(a)})]}),e.jsx("span",{className:"settings-mobile-choice-indicator","aria-hidden":"true",children:n?e.jsx(ol,{}):null})]},a.id)})]})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.fileManager")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.workspaceSessionSortModeDescription")}),e.jsxs("div",{className:"settings-mobile-list",children:[e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.workspaceSessionSortMode")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.workspaceSessionSortModeDescription")})]}),e.jsx("select",{"aria-label":s("settings.workspaceSessionSortMode"),className:"settings-select settings-mobile-select",value:t.sessionDisplaySortMode,onChange:a=>t.updateSessionDisplaySortMode(a.target.value),children:t.sessionDisplaySortModeOptions.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))})]}),e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.showSystemFiles")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.showSystemFilesDescription")})]}),e.jsx(se,{checked:t.showSystemFiles,label:s("settings.showSystemFiles"),onChange:t.updateShowSystemFiles})]})]})]})]})}function Gi({model:t}){return e.jsxs(e.Fragment,{children:[t.canConfigureServerAddress?e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.serverAddress")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.serverDescription")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("form",{className:"settings-mobile-form-stack",onSubmit:t.handleHostBaseUrlSubmit,children:[e.jsx("input",{"aria-label":s("settings.serverAddress"),className:"settings-text-input settings-mobile-input",value:t.hostBaseUrlDraft,onChange:a=>t.setHostBaseUrlDraft(a.target.value)}),e.jsx("button",{className:"settings-mobile-primary-button",disabled:!t.canSaveHostBaseUrl,type:"submit",children:s("common.save")})]})})]}):null,e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.serverConnection")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.autoReconnect")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.autoReconnectDescription")})]}),e.jsx(se,{checked:t.runtimeConfig.autoReconnect,label:s("settings.autoReconnect"),onChange:t.updateAutoReconnect})]})})]})]})}function Ji({model:t}){return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.securityPrivacy")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.securityPrivacySectionSummary")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.defaultPermissionMode")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.defaultPermissionModeDescription")})]}),e.jsx("select",{"aria-label":s("settings.defaultPermissionMode"),className:"settings-select settings-mobile-select",value:t.accountPreferences.defaultPermissionMode,onChange:a=>t.updateDefaultPermissionMode(a.target.value),children:t.permissionModeOptions.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))})]})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.authDeviceManagement")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.authDeviceManagementDescription")}),e.jsx("div",{className:"settings-mobile-panel-shell",children:e.jsx(It,{compact:!0})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.debugPortPool")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsx(zt,{value:t.accountPreferences.debugPortPools,onSave:t.updateDebugPortPools,compact:!0})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.notificationSettings")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.notificationSettingsDescription")}),e.jsxs("div",{className:"settings-mobile-list",children:[e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.notifyOnPermissionRequest")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.notifyOnPermissionRequestDescription")})]}),e.jsx(se,{checked:t.notifyOnPermissionRequest,label:s("settings.notifyOnPermissionRequest"),onChange:t.updateNotifyOnPermissionRequest})]}),e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.notifyOnSessionCompleted")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.notifyOnSessionCompletedDescription")})]}),e.jsx(se,{checked:t.notifyOnSessionCompleted,label:s("settings.notifyOnSessionCompleted"),onChange:t.updateNotifyOnSessionCompleted})]}),e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.notifyOnSessionFailed")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.notifyOnSessionFailedDescription")})]}),e.jsx(se,{checked:t.notifyOnSessionFailed,label:s("settings.notifyOnSessionFailed"),onChange:t.updateNotifyOnSessionFailed})]})]})]})]})}function zt(t){const[a,n]=r.useState(()=>xt(t.value)),[c,o]=r.useState(!1),[m,v]=r.useState(null),[j,p]=r.useState(!1);r.useEffect(()=>{n(xt(t.value))},[t.value]);async function D(){v(null),p(!1);let d;try{d=Qi(a)}catch(y){v(y instanceof Error?y.message:s("settings.debugPortPoolSaveFailed"));return}try{o(!0),await t.onSave(d),p(!0)}catch(y){v(y instanceof Error?y.message:s("settings.debugPortPoolSaveFailed"))}finally{o(!1)}}return e.jsxs("div",{className:t.compact?"settings-mobile-form-stack":"settings-debug-port-pool-editor",children:[e.jsxs("div",{className:t.compact?"settings-mobile-form-row":"settings-row",children:[e.jsx("div",{className:t.compact?"settings-mobile-row-copy":"settings-row-label settings-debug-port-pool-label",children:e.jsx("span",{className:t.compact?"settings-mobile-row-title":"settings-row-title",children:s("settings.debugPortPoolRangeLabel")})}),e.jsx("div",{className:t.compact?"settings-mobile-form-stack":"settings-row-control settings-row-control-stretch",children:e.jsxs("div",{className:"settings-inline-form",children:[e.jsx("input",{"aria-label":`${s("settings.debugPortPool")} ${s("settings.debugPortPoolStart")}`,className:"settings-text-input",inputMode:"numeric",value:a.start,onChange:d=>{const y=d.target.value;n(k=>({...k,start:y}))}}),e.jsx("span",{children:s("settings.debugPortPoolRangeSeparator")}),e.jsx("input",{"aria-label":`${s("settings.debugPortPool")} ${s("settings.debugPortPoolEnd")}`,className:"settings-text-input",inputMode:"numeric",value:a.end,onChange:d=>{const y=d.target.value;n(k=>({...k,end:y}))}}),e.jsx("button",{type:"button",className:t.compact?"settings-mobile-primary-button":"settings-button",disabled:c,onClick:()=>{D()},children:c?s("common.loading"):s("common.save")}),j?e.jsx("span",{children:s("settings.debugPortPoolSaved")}):null]})})]}),m?e.jsx("p",{className:"status-text settings-debug-port-pool-feedback","data-tone":"error",children:m}):null]})}function xt(t){const a=t??Wt;return{start:String(a.start),end:String(a.end)}}function Qi(t){const a=Number.parseInt(t.start,10),n=Number.parseInt(t.end,10);if(!Number.isInteger(a)||!Number.isInteger(n))throw new Error(s("settings.debugPortPoolValidationInteger"));if(a<1024||n>65535||a>=n)throw new Error(s("settings.debugPortPoolValidationRange"));return{start:a,end:n}}function Zi({model:t}){const[a,n]=r.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.remoteAccess")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.remoteAccessManageDescription")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.remoteAccessManageTitle")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.remoteAccessSectionSummary")})]}),e.jsx("button",{className:"settings-mobile-primary-button",type:"button",onClick:()=>n(!0),children:s("settings.remoteAccessManageAction")})]})})]}),e.jsx(_t,{open:a,mobile:!0,onClose:()=>n(!1)})]})}function Yi(){var m;const[t,a]=r.useState(!1),{currentWorkspaceId:n,navigationGroups:c}=kt(),o=n??((m=c[0])==null?void 0:m.workspace.id)??null;return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.abilityManagement")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.abilityManagementSectionSummary")}),e.jsxs("div",{className:"settings-mobile-list",children:[e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.pluginManagement")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.pluginManagementDescription")})]}),e.jsx("button",{className:"settings-mobile-primary-button",type:"button",onClick:()=>a(!0),children:s("settings.pluginManagementAction")})]}),e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.skillOnlyOfficeSectionTitle")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.skillOnlyOfficeSectionDescription")})]}),e.jsx(Mt,{triggerClassName:"settings-mobile-primary-button",triggerLabel:s("settings.skillOnlyOfficeOpenSettingsAction"),mobile:!0})]})]}),e.jsxs("div",{className:"settings-mobile-ability-stack",children:[e.jsxs("div",{className:"settings-mobile-panel-shell settings-mobile-provider-shell",children:[e.jsxs("div",{className:"settings-mobile-row-copy settings-mobile-ability-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.providerManagement")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.providerManagementDescription")})]}),e.jsx(Pt,{})]}),e.jsxs("div",{className:"settings-mobile-panel-shell settings-mobile-model-shell",children:[e.jsx("div",{className:"settings-mobile-row-copy settings-mobile-ability-copy settings-mobile-row-copy-single-line",children:e.jsx("span",{className:"settings-mobile-row-title settings-mobile-row-title-strong",children:s("settings.modelManagementSectionTitle")})}),e.jsx(Dt,{})]})]})]}),e.jsx(qt,{open:t,mobile:!0,workspaceId:o,onClose:()=>a(!1)})]})}function Xi(){return e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.channelsManagement")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.channelsManagementSectionSummary")}),e.jsxs("div",{className:"settings-mobile-panel-shell settings-mobile-channels-shell",children:[e.jsxs("div",{className:"settings-mobile-row-copy settings-mobile-ability-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.channelsManagement")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.channelsManagementDescription")})]}),e.jsx(Lt,{})]})]})}function el({model:t}){return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.softwareUpdate")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.releaseChannel")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.releaseChannelDescription")})]}),e.jsxs("select",{"aria-label":s("settings.releaseChannel"),className:"settings-select settings-mobile-select",value:t.runtimeConfig.releaseChannel,onChange:a=>t.updateReleaseChannel(a.target.value),children:[e.jsx("option",{value:"stable",children:s("settings.releaseStable")}),e.jsx("option",{value:"beta",children:s("settings.releaseBeta")})]})]})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.serverUpdate")}),e.jsx("div",{className:"settings-mobile-panel-shell settings-mobile-update-shell",children:e.jsx(Ht,{})})]}),t.platform.isWeb?null:e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.clientUpdate")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsx("div",{className:"settings-mobile-row-copy",children:e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.autoCheckUpdate")})}),e.jsx(se,{checked:t.runtimeConfig.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:t.updateAutoCheckUpdate})]})}),e.jsx("div",{className:"settings-mobile-panel-shell settings-mobile-update-shell",children:e.jsx(Ct,{})})]})]})}function vt({onLogout:t}){return e.jsx("div",{className:"settings-mobile-sticky-footer",children:e.jsx("button",{type:"button",className:"settings-mobile-danger-button settings-mobile-danger-button-sticky",onClick:t,children:s("common.logout")})})}function sl(){return e.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[e.jsx("path",{d:"M10 3.5a6.5 6.5 0 1 0 6.5 6.5c0-.8-.6-1.4-1.4-1.4h-1.6A1.5 1.5 0 0 1 12 7.1V5.5c0-1.1-.9-2-2-2Z"}),e.jsx("circle",{cx:"6.6",cy:"9.2",r:".8",fill:"currentColor",stroke:"none"}),e.jsx("circle",{cx:"8.8",cy:"6.8",r:".8",fill:"currentColor",stroke:"none"}),e.jsx("circle",{cx:"12.1",cy:"6.6",r:".8",fill:"currentColor",stroke:"none"})]})}function tl(){return e.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[e.jsx("path",{d:"M4 7.5 10 4l6 3.5v5L10 16l-6-3.5v-5Z"}),e.jsx("path",{d:"M10 9.5V16"}),e.jsx("path",{d:"M4 7.5 10 11l6-3.5"})]})}function nl(){return e.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[e.jsx("rect",{x:"3.5",y:"4",width:"13",height:"9.5",rx:"2.2"}),e.jsx("path",{d:"M7 16h6"}),e.jsx("path",{d:"M10 13.5V16"}),e.jsx("path",{d:"m8 8 2 2 3-3"})]})}function al(){return e.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[e.jsx("circle",{cx:"10",cy:"10",r:"5.8"}),e.jsx("path",{d:"M10 4.2c1.5 1.3 2.4 3.5 2.4 5.8s-.9 4.5-2.4 5.8c-1.5-1.3-2.4-3.5-2.4-5.8s.9-4.5 2.4-5.8Z"}),e.jsx("path",{d:"M4.6 8.1h10.8"}),e.jsx("path",{d:"M4.6 11.9h10.8"})]})}function il(){return e.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[e.jsx("path",{d:"M4 5.5h7"}),e.jsx("path",{d:"M4 10h12"}),e.jsx("path",{d:"M4 14.5h9"}),e.jsx("circle",{cx:"13.5",cy:"5.5",r:"1.5",fill:"currentColor",stroke:"none"}),e.jsx("circle",{cx:"8",cy:"10",r:"1.5",fill:"currentColor",stroke:"none"}),e.jsx("circle",{cx:"15.5",cy:"14.5",r:"1.5",fill:"currentColor",stroke:"none"})]})}function ll(){return e.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[e.jsx("path",{d:"M5 5.5h4.5"}),e.jsx("path",{d:"M10.5 5.5h4.5"}),e.jsx("path",{d:"M5 10h3.5"}),e.jsx("path",{d:"M11.5 10H15"}),e.jsx("path",{d:"M5 14.5h4.5"}),e.jsx("path",{d:"M10.5 14.5h4.5"}),e.jsx("circle",{cx:"10",cy:"10",r:"1.6",fill:"currentColor",stroke:"none"}),e.jsx("path",{d:"m8.9 8.9-1.8-1.8M11.1 8.9l1.8-1.8M8.9 11.1l-1.8 1.8M11.1 11.1l1.8 1.8"})]})}function rl(){return e.jsxs("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[e.jsx("path",{d:"M10 3.2 15 5v4.4c0 3-1.9 5.8-5 7.4-3.1-1.6-5-4.4-5-7.4V5l5-1.8Z"}),e.jsx("path",{d:"m8.3 9.8 1.2 1.2 2.4-2.5"})]})}function cl(){return e.jsx("svg",{viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:e.jsx("path",{d:"m4 2 4 4-4 4"})})}function ol(){return e.jsx("svg",{viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:e.jsx("path",{d:"m3.5 8.2 2.6 2.6 6-6"})})}export{Sl as SettingsPage};
@@ -1 +0,0 @@
1
- import{b as s,E as Ne,F as Ke,j as e,t as n,D as Xe}from"./index-CeXGOT_T.js";import{D as Se}from"./DesktopModal-6ii53_Y9.js";import{S as Je,M as Oe}from"./workbench-navigation-B7IjRQd8.js";import{M as Pe}from"./MobileSheet-opTWyRe1.js";import{f as Qe,ai as J}from"./WorkbenchLayout-CikJBS62.js";import{u as Ye,e as Ze,f as ea}from"./App-CFBwDUNA.js";import{b as aa,g as Te,r as ke,s as na,u as ra,k as la,m as ta}from"./terminal-runtime-meta-C8t-CIDF.js";import{T as ia,i as sa}from"./TerminalRuntimeFallbackModal-CSVVbO8r.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./WorkbenchModal-NGmPgqaE.js";import"./relay-entry-Bg0OisQy.js";const O={mode:"command",name:"",cwd:"",target:"",args:"",port:"",proxyEnabled:!1},Ce=60*1e3;function oa(l){return l?new Date(l).toLocaleString():n("common.unknown")}function ca(l){return l.split(" ").map(t=>t.trim()).filter(Boolean)}function ma(l){var t,c,u;return((t=l.find(p=>p.id==="cmd"&&p.available))==null?void 0:t.id)??((c=l.find(p=>p.available))==null?void 0:c.id)??((u=l[0])==null?void 0:u.id)??""}function da(l){const t=l.name.trim();if(t)return t;const c=l.target.trim(),u=l.args.trim();return c?u?`${c} ${u}`:c:l.mode==="script"?n("terminalManager.defaultScriptName"):n("terminalManager.defaultCommandName")}function ua(l){const t=l.args.join(" ");return t?`${l.command} ${t}`:l.command}function ga(l){return{mode:Ee(l),name:l.name,cwd:l.cwd,target:l.command,args:l.args.join(" "),port:l.port===null?"":String(l.port),proxyEnabled:l.proxyEnabled}}function pa(l){return Xe(`/proxy/${encodeURIComponent(l)}`)}function Ee(l){const t=l.command.toLowerCase();return t.endsWith(".ps1")||t.endsWith(".bat")||t.endsWith(".cmd")||t.endsWith(".sh")?"script":"command"}function ha(l){const t=l.trim();if(!t)return null;const c=Number(t);return Number.isInteger(c)?c:Number.NaN}function we(l,t){return l.get(t)??null}function xa(l,t){return l.port===null?{tone:"untracked",title:n("terminalManager.portUnset"),summary:n("terminalManager.portUnsetDescription"),badgeLabel:n("terminalManager.portUnset")}:t!=null&&t.occupied?{tone:"running",title:n("terminalManager.portOccupied"),summary:t.processName||n("terminalManager.processCommandFallback"),badgeLabel:t.processId?`PID ${t.processId}`:n("terminalManager.statusRunning"),badgeTone:"success"}:{tone:"idle",title:n("terminalManager.portAvailable"),summary:n("terminalManager.portAvailableDescription"),badgeLabel:n("terminalManager.statusStopped")}}function ba(l){return l!=null&&l.terminationScope?l.terminationScope==="process_group"?n("terminalManager.terminationScopeProcessGroup"):n("terminalManager.terminationScopeProcess"):null}function fa({open:l,mobile:t=!1,title:c,description:u,onClose:p,children:y,className:m}){return t?e.jsx(Pe,{open:l,title:c,description:u,kind:"form",height:"three-quarter",className:m,bodyClassName:"terminal-manager-modal-body",showHandle:!0,onClose:p,children:y}):e.jsx(Se,{open:l,title:c,description:u,size:"regular",layout:"form",className:["terminal-manager-modal-card",m].filter(Boolean).join(" "),bodyClassName:"terminal-manager-modal-body",onClose:p,children:y})}function ja({open:l,mobile:t=!1,busy:c,title:u,description:p,confirmLabel:y,onClose:m,onConfirm:h,className:N}){const F=e.jsxs(Oe,{className:"terminal-manager-confirm-actions",children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:c,onClick:m,children:n("common.cancel")}),e.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:c,onClick:()=>{h()},children:c?n("terminalManager.templateRemoving"):y})]});return t?e.jsx(Pe,{open:l,title:u,description:p,kind:"action",height:"auto",dismissible:!c,showHandle:!0,showCancelButton:!1,className:N,bodyClassName:"terminal-manager-confirm-body",footer:F,onClose:m,children:null}):e.jsx(Se,{open:l,title:u,description:p,size:"compact",layout:"confirm",dismissible:!c,className:["terminal-manager-confirm-modal",N].filter(Boolean).join(" "),bodyClassName:"terminal-manager-confirm-body",footer:F,onClose:m,children:null})}function Le({label:l,value:t,options:c,open:u,onToggle:p,onChange:y}){const m=c.find(h=>h.value===t)??c[0]??null;return e.jsxs("div",{className:"field-group terminal-manager-mobile-picker",children:[e.jsx("span",{children:l}),e.jsxs("button",{type:"button",className:"terminal-manager-mobile-picker-trigger","aria-label":`${l} ${(m==null?void 0:m.label)??""}`.trim(),"aria-expanded":u?"true":"false",onClick:p,children:[e.jsxs("span",{className:"terminal-manager-mobile-picker-copy",children:[e.jsx("strong",{children:(m==null?void 0:m.label)??n("common.unknown")}),m!=null&&m.description?e.jsx("span",{children:m.description}):null]}),e.jsx(va,{expanded:u})]}),u?e.jsx("div",{className:"terminal-manager-mobile-picker-list",role:"listbox","aria-label":l,children:c.map(h=>{const N=h.value===t;return e.jsxs("button",{type:"button",role:"option",className:"terminal-manager-mobile-picker-option","aria-selected":N,disabled:h.disabled,onClick:()=>{y(h.value)},children:[e.jsxs("span",{className:"terminal-manager-mobile-picker-option-copy",children:[e.jsx("strong",{children:h.label}),h.description?e.jsx("span",{children:h.description}):null]}),e.jsx("span",{className:"terminal-manager-mobile-picker-option-indicator","aria-hidden":"true",children:N?e.jsx(ya,{}):e.jsx(Ma,{})})]},h.value||"__empty__")})}):null]})}function va({expanded:l}){return e.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",className:"terminal-manager-mobile-picker-chevron","data-expanded":l?"true":"false",children:e.jsx("path",{d:"M4 6.5L8 10l4-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.7"})})}function Ma(){return e.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:e.jsx("path",{d:"M6 3.5L10.5 8 6 12.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.6"})})}function ya(){return e.jsx("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:e.jsx("path",{d:"M3.5 8.5L6.5 11.5L12.5 5.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.8"})})}function Da({className:l,currentWorkspaceId:t,navigationGroups:c,externalWindowMode:u=!1,workbenchShellOverrides:p}){var je,ve,Me,ye;const y=Ye(),m=Ze(),h=Qe(),{subscribeTerminalManagerSnapshot:N,requestTerminalManagerRefresh:F,addTerminalManagerSnapshotListener:te}={...h,...p},i=(t==null?void 0:t.trim())||null,[Q,G]=s.useState([]),[Y,W]=s.useState(null),[f,S]=s.useState([]),[P,D]=s.useState([]),[x,Z]=s.useState([]),[q,ee]=s.useState(""),[A,E]=s.useState(""),[d,j]=s.useState(O),[_,H]=s.useState(null),[I,V]=s.useState(null),[Ie,ie]=s.useState([]),[se,z]=s.useState(!1),[ae,oe]=s.useState(!1),[ce,me]=s.useState(null),[de,ue]=s.useState(null),[k,ge]=s.useState(null),[v,U]=s.useState(null),[K,ne]=s.useState(null),[pe,he]=s.useState(!1),[xe,C]=s.useState(null),{showToast:b}=ea(),B=(l==null?void 0:l.includes("mobile-tool-process-panel"))??!1,$=_!==null,be=_==="edit"?f.find(a=>a.id===I)??null:null,w=_==="edit";s.useEffect(()=>{J("terminal_manager.props",{currentWorkspaceId:t,workspaceCount:c.length,externalWindowMode:u})},[t,u,c.length]);const g=s.useMemo(()=>x.find(a=>a.id===q)??null,[q,x]),R=s.useMemo(()=>aa(m.ui.osFamily),[m.ui.osFamily]),fe=s.useMemo(()=>new Map(P.map(a=>[a.templateId,a])),[P]),Re=s.useMemo(()=>P.filter(a=>a.occupied).length,[P]),Fe=s.useMemo(()=>f.filter(a=>a.port!==null).length,[f]),De=(g==null?void 0:g.available)===!1&&x.length>0;s.useEffect(()=>{ee(a=>x.length?a&&x.some(r=>r.id===a)?a:ma(x):"")},[x]),s.useEffect(()=>{!$||!i||x.length>0||T(i)},[i,x.length,$]),s.useEffect(()=>{$||C(null)},[$]),s.useEffect(()=>{_==="edit"&&I&&!be&&(H(null),V(null),j(O),E(""),C(null))},[be,I,_]),s.useEffect(()=>{!v||k===v.templateId||f.some(a=>a.id===v.templateId)||U(null)},[v,k,f]),s.useEffect(()=>{if(!i){G([]),W(null),S([]),D([]),z(!1);return}const a=Ne(le(i),Ce);J("terminal_manager.snapshot",{workspaceId:i,cached:!!a,cachedTemplateCount:(a==null?void 0:a.templates.length)??0,cachedStatusCount:(a==null?void 0:a.templateStatuses.length)??0}),a?(G(a.terminals),W(typeof a.revision=="string"?a.revision:null),S(a.templates),D(a.templateStatuses),Z(a.shellOptions??[]),z(!1)):(G([]),W(null),S([]),D([]),Z([]),z(!0))},[i]),s.useEffect(()=>{if(i)return te(a=>{a.workspaceId===i&&(J("terminal_manager.snapshot_received",{workspaceId:a.workspaceId,terminalCount:a.terminals.length,templateCount:a.templates.length,statusCount:a.templateStatuses.length}),Ae(a),z(!1))})},[i,te]),s.useEffect(()=>{if(!i)return;const a=Ne(le(i),Ce);N(i,{knownRevision:(a==null?void 0:a.revision)??null}),a||T(i)},[i,F,N]),s.useEffect(()=>{i&&Ke(le(i),{revision:Y,terminals:Q,templates:f,templateStatuses:P,shellOptions:x})},[i,Y,x,P,f,Q]);function Ae(a){W(typeof a.revision=="string"?a.revision:null),G(a.terminals),S(a.templates),D(a.templateStatuses),Z(a.shellOptions??[])}function T(a){J("terminal_manager.refresh_requested",{workspaceId:a}),F(a,{knownRevision:Y})}function X(){H(null),V(null),j(O),E(""),C(null)}function _e(){V(null),j(O),E(""),H("create")}function Ue(a){V(a.id),j(ga(a)),E(a.runtimeType??""),H("edit")}async function Be(a){if(i){ue(a);try{await na(a),T(i),b({title:n("terminalManager.stopProcessSuccess"),tone:"success"})}catch(r){b({title:r instanceof Error?r.message:n("terminalManager.stopProcessFailed"),tone:"error"})}finally{ue(null)}}}async function $e(){if(!i||!d.target.trim())return;const a=ha(d.port);if(Number.isNaN(a)){b({title:n("terminalManager.invalidPort"),tone:"error"});return}if(d.proxyEnabled&&a===null){b({title:n("terminalManager.proxyPortRequired"),tone:"error"});return}oe(!0);try{const r={workspaceId:i,name:da(d),cwd:d.cwd.trim()||void 0,command:d.target.trim(),args:ca(d.args),port:a,proxyEnabled:d.proxyEnabled,runtimeType:A||null};if(w&&I){const o=await ra(I,r);S(M=>M.map(L=>L.id===o.id?o:L))}else await la(r);X(),T(i),b({title:w?n("terminalManager.templateUpdateSuccess"):n("terminalManager.templateSaveSuccess"),tone:"success"})}catch(r){b({title:r instanceof Error?r.message:w?n("terminalManager.templateUpdateFailed"):n("terminalManager.templateSaveFailed"),tone:"error"})}finally{oe(!1)}}async function Ge(a){const r=await m.bridge.openExternal(a);r.ok||b({title:r.detail||n("terminalManager.openProxyUrlFailed"),tone:"error"})}async function We(a,r){if(i){ge(a.id);try{await ta(a.id),S(o=>o.filter(M=>M.id!==a.id)),D(o=>o.filter(M=>M.templateId!==a.id)),ie(o=>o.filter(M=>M!==a.id)),U(o=>(o==null?void 0:o.templateId)===a.id?null:o),I===a.id&&X(),T(i),b({title:n("terminalManager.templateDeleteSuccess"),tone:"success"})}catch(o){b({title:o instanceof Error?o.message:n("terminalManager.templateDeleteFailed"),tone:"error"})}finally{ge(null)}}}async function qe(a){if(!i)return;const r=g!=null&&g.available?g.shell:void 0;me(a);try{await ke(a,{shell:r}),T(i),b({title:n("terminalManager.templateRunSuccess"),tone:"success"})}catch(o){if(sa(o)){ne({templateId:a,shell:r});return}b({title:o instanceof Error?o.message:n("terminalManager.templateRunFailed"),tone:"error"})}finally{me(null)}}async function He(){if(!(!i||!K)){he(!0);try{await ke(K.templateId,{shell:K.shell,runtimeType:"embedded-pty"}),ne(null),T(i),b({title:n("terminalManager.templateRunSuccess"),tone:"success"})}catch(a){b({title:a instanceof Error?a.message:n("terminalManager.templateRunFailed"),tone:"error"})}finally{he(!1)}}}function Ve(a){ie(r=>r.includes(a)?r.filter(o=>o!==a):[...r,a])}return c.length?i?e.jsxs("section",{className:["conversation-panel","surface-card","terminal-manager-panel",l].filter(Boolean).join(" "),children:[e.jsx(ia,{open:K!==null,busy:pe,onClose:()=>{pe||ne(null)},onConfirmFallback:()=>{He()}}),e.jsxs("div",{className:"terminal-manager-header terminal-manager-desktop-header",children:[e.jsx("div",{className:"terminal-manager-panel-heading",children:e.jsxs("div",{children:[e.jsx("h2",{children:n("terminalManager.templateSectionTitle")}),e.jsx("p",{className:"status-text",children:n("terminalManager.desktopPanelDescription")})]})}),e.jsxs("div",{className:"terminal-manager-overview",children:[e.jsxs("article",{className:"terminal-manager-overview-card",children:[e.jsx("span",{children:n("terminalManager.runningCountLabel")}),e.jsx("strong",{children:Re})]}),e.jsxs("article",{className:"terminal-manager-overview-card",children:[e.jsx("span",{children:n("terminalManager.portWatchCountLabel")}),e.jsx("strong",{children:Fe})]}),e.jsxs("article",{className:"terminal-manager-overview-card",children:[e.jsx("span",{children:n("terminalManager.terminalCountLabel")}),e.jsx("strong",{children:Q.length})]})]}),e.jsxs("div",{className:"terminal-manager-toolbar terminal-manager-toolbar-header",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:!i,onClick:()=>{i&&y(Je(i))},children:n("terminalManager.openWorkspaceDebugAction")}),e.jsx("button",{className:"ghost-button",type:"button",disabled:!i||se,onClick:()=>{i&&T(i)},children:n("terminalManager.refresh")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!i,onClick:()=>{_e()},children:n("terminalManager.openCreateModalAction")})]})]}),e.jsxs("section",{className:"terminal-manager-section",children:[e.jsxs("div",{className:"terminal-manager-section-header",children:[e.jsxs("div",{children:[e.jsx("h3",{children:n("terminalManager.templateSectionTitle")}),e.jsx("p",{className:"status-text",children:n("terminalManager.templateSectionDescription")})]}),e.jsx("span",{className:"workbench-section-counter",children:f.length})]}),se&&!f.length?e.jsx("p",{className:"status-text",children:n("common.loading")}):null,f.length?e.jsx("div",{className:"terminal-manager-list",children:f.map(a=>{const r=we(fe,a.id),o=xa(a,r),M=ba(r),L=Ie.includes(a.id),ze=L?n("terminalManager.hideDetailsAction"):n("terminalManager.showDetailsAction"),re=a.proxyEnabled&&a.proxySlug?pa(a.proxySlug):null;return e.jsxs("article",{className:"terminal-manager-card terminal-manager-desktop-card","data-tone":o.tone,"data-expanded":L?"true":"false",children:[e.jsxs("div",{className:"terminal-manager-card-header",children:[e.jsxs("div",{className:"terminal-manager-card-title",children:[e.jsx("span",{className:"terminal-manager-card-indicator","aria-hidden":"true"}),e.jsx("strong",{children:a.name})]}),e.jsxs("div",{className:"terminal-manager-card-tools",children:[e.jsx("span",{className:"badge terminal-runtime-badge",children:Te(a.runtimeType,m.ui.osFamily)}),e.jsx("span",{className:"badge",children:Ee(a)==="script"?n("terminalManager.scriptMode"):n("terminalManager.commandMode")}),e.jsx("button",{className:"terminal-manager-detail-toggle",type:"button","aria-label":ze,"aria-expanded":L,onClick:()=>{Ve(a.id)},children:"i"})]})]}),e.jsxs("div",{className:"terminal-manager-status-panel",children:[e.jsxs("div",{className:"terminal-manager-status-copy",children:[e.jsx("p",{className:"terminal-manager-status-title",children:o.title}),e.jsx("p",{className:"status-text",children:o.summary})]}),e.jsxs("div",{className:"terminal-manager-status-badges",children:[e.jsx("span",{className:"terminal-manager-stat-pill",children:a.port===null?n("terminalManager.portUnset"):`${n("terminalManager.portLabel")} ${a.port}`}),e.jsx("span",{className:"badge","data-tone":o.badgeTone,children:o.badgeLabel}),r!=null&&r.occupied&&r.processGroupId?e.jsx("span",{className:"badge",children:`PGID ${r.processGroupId}`}):null,a.proxyEnabled?e.jsx("span",{className:"badge",children:n("terminalManager.proxyEnabled")}):null]})]}),e.jsxs("div",{className:"terminal-manager-actions",children:[r!=null&&r.occupied?e.jsx("button",{className:"secondary-button",type:"button",disabled:de===a.id,onClick:()=>{Be(a.id)},children:de===a.id?n("terminalManager.stoppingProcess"):n("terminalManager.stopProcessAction")}):null,e.jsx("button",{className:"secondary-button",type:"button",disabled:ce===a.id||De,onClick:()=>{qe(a.id)},children:ce===a.id?n("terminalManager.runningTemplate"):n("terminalManager.runTemplateAction")})]}),L?e.jsxs("section",{className:"terminal-manager-details","aria-label":n("terminalManager.detailsSectionTitle"),children:[e.jsxs("div",{className:"terminal-manager-detail-grid",children:[e.jsxs("div",{className:"terminal-manager-detail-item terminal-manager-detail-item-wide",children:[e.jsx("span",{children:n("terminalManager.commandPreviewLabel")}),e.jsx("strong",{children:ua(a)})]}),e.jsxs("div",{className:"terminal-manager-detail-item",children:[e.jsx("span",{children:n("terminalManager.cwdLabel")}),e.jsx("strong",{children:a.cwd})]}),e.jsxs("div",{className:"terminal-manager-detail-item",children:[e.jsx("span",{children:n("terminal.runtimeField")}),e.jsx("strong",{children:Te(a.runtimeType,m.ui.osFamily)})]}),e.jsxs("div",{className:"terminal-manager-detail-item",children:[e.jsx("span",{children:n("terminalManager.updatedAt")}),e.jsx("strong",{children:oa(a.updatedAt)})]}),e.jsxs("div",{className:"terminal-manager-detail-item",children:[e.jsx("span",{children:n("terminalManager.portLabel")}),e.jsx("strong",{children:a.port===null?n("terminalManager.portUnset"):a.port})]}),e.jsxs("div",{className:"terminal-manager-detail-item terminal-manager-detail-item-wide",children:[e.jsx("span",{children:n("terminalManager.proxyField")}),e.jsx("strong",{children:re??n("terminalManager.proxyDisabledDescription")})]}),r!=null&&r.processId?e.jsxs("div",{className:"terminal-manager-detail-item",children:[e.jsx("span",{children:n("terminalManager.processIdLabel")}),e.jsx("strong",{children:r.processId})]}):null,r!=null&&r.processGroupId?e.jsxs("div",{className:"terminal-manager-detail-item",children:[e.jsx("span",{children:n("terminalManager.processGroupIdLabel")}),e.jsx("strong",{children:r.processGroupId})]}):null,M?e.jsxs("div",{className:"terminal-manager-detail-item",children:[e.jsx("span",{children:n("terminalManager.terminationScopeLabel")}),e.jsx("strong",{children:M})]}):null,r!=null&&r.parentProcessId?e.jsxs("div",{className:"terminal-manager-detail-item",children:[e.jsx("span",{children:n("terminalManager.parentProcessIdLabel")}),e.jsx("strong",{children:r.parentProcessId})]}):null,r!=null&&r.processCommandLine?e.jsxs("div",{className:"terminal-manager-detail-item terminal-manager-detail-item-wide",children:[e.jsx("span",{children:n("terminalManager.processCommandLabel")}),e.jsx("strong",{children:r.processCommandLine})]}):null,r!=null&&r.parentProcessCommandLine?e.jsxs("div",{className:"terminal-manager-detail-item terminal-manager-detail-item-wide",children:[e.jsx("span",{children:n("terminalManager.parentProcessCommandLabel")}),e.jsx("strong",{children:r.parentProcessCommandLine})]}):null]}),e.jsxs("div",{className:"terminal-manager-actions terminal-manager-detail-actions",children:[re?e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>{Ge(re)},children:n("terminalManager.openProxyUrlAction")}):null,e.jsx("button",{className:"secondary-button",type:"button",disabled:ae||k===a.id,onClick:()=>{Ue(a)},children:n("terminalManager.editAction")}),e.jsx("button",{className:"secondary-button workbench-danger-button",type:"button",disabled:k===a.id,onClick:()=>{U({templateId:a.id,name:a.name,occupied:!!(r!=null&&r.occupied)})},children:k===a.id?n("terminalManager.templateRemoving"):n("terminalManager.removeAction")})]})]}):null]},a.id)})}):e.jsx("section",{className:"workbench-empty-state minimal",children:e.jsx("p",{children:n("terminalManager.emptyTemplateBody")})})]}),e.jsx(fa,{open:$,mobile:B,title:w?n("terminalManager.editModalTitle"):n("terminalManager.createModalTitle"),description:w?n("terminalManager.editModalDescription"):n("terminalManager.createModalDescription"),className:B?"terminal-manager-mobile-modal":void 0,onClose:X,children:e.jsxs("section",{className:"terminal-manager-modal-form",children:[B?e.jsxs(e.Fragment,{children:[e.jsx(Le,{label:n("terminalManager.shellField"),value:q,open:xe==="shell",options:x.map(a=>({value:a.id,label:a.label,description:a.available?null:a.unavailableReason??n("terminalManager.shellUnavailable"),disabled:!a.available})),onToggle:()=>{C(a=>a==="shell"?null:"shell")},onChange:a=>{ee(a),C(null)}}),(g==null?void 0:g.available)===!1&&g.unavailableReason?e.jsx("p",{className:"status-text",children:g.unavailableReason}):null,e.jsx(Le,{label:n("terminal.runtimeField"),value:A,open:xe==="runtime",options:R.map(a=>({value:a.value,label:a.label,description:a.description})),onToggle:()=>{C(a=>a==="runtime"?null:"runtime")},onChange:a=>{E(a),C(null)}}),e.jsx("p",{className:"status-text",children:((je=R.find(a=>a.value===A))==null?void 0:je.description)??((ve=R[0])==null?void 0:ve.description)})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"field-group",children:[e.jsx("span",{children:n("terminalManager.shellField")}),e.jsx("select",{value:q,onChange:a=>{ee(a.target.value)},children:x.map(a=>e.jsx("option",{value:a.id,disabled:!a.available,children:a.available?a.label:`${a.label} - ${n("terminalManager.shellUnavailable")}`},a.id))}),(g==null?void 0:g.available)===!1&&g.unavailableReason?e.jsx("p",{className:"status-text",children:g.unavailableReason}):null]}),e.jsxs("div",{className:"field-group",children:[e.jsx("span",{children:n("terminal.runtimeField")}),e.jsx("select",{value:A,onChange:a=>{E(a.target.value)},children:R.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value||"auto"))}),e.jsx("p",{className:"status-text",children:((Me=R.find(a=>a.value===A))==null?void 0:Me.description)??((ye=R[0])==null?void 0:ye.description)})]})]}),e.jsxs("div",{className:"terminal-manager-mode-row",role:"tablist","aria-label":n("terminalManager.modeField"),children:[e.jsx("button",{type:"button",className:d.mode==="command"?"workbench-info-tab active":"workbench-info-tab",onClick:()=>{j(a=>({...a,mode:"command"}))},children:n("terminalManager.commandMode")}),e.jsx("button",{type:"button",className:d.mode==="script"?"workbench-info-tab active":"workbench-info-tab",onClick:()=>{j(a=>({...a,mode:"script"}))},children:n("terminalManager.scriptMode")})]}),e.jsxs("div",{className:"terminal-manager-grid",children:[e.jsxs("div",{className:"field-group",children:[e.jsx("span",{children:n("terminalManager.templateNameField")}),e.jsx("input",{value:d.name,placeholder:n("terminalManager.templateNamePlaceholder"),onChange:a=>{j(r=>({...r,name:a.target.value}))}})]}),e.jsxs("div",{className:"field-group",children:[e.jsx("span",{children:n("terminalManager.cwdField")}),e.jsx("input",{value:d.cwd,placeholder:n("terminalManager.cwdPlaceholder"),onChange:a=>{j(r=>({...r,cwd:a.target.value}))}})]})]}),e.jsxs("div",{className:"terminal-manager-grid",children:[e.jsxs("div",{className:"field-group",children:[e.jsx("span",{children:d.mode==="script"?n("terminalManager.scriptPathField"):n("terminalManager.commandField")}),e.jsx("input",{value:d.target,placeholder:d.mode==="script"?n("terminalManager.scriptPathPlaceholder"):n("terminalManager.commandPlaceholder"),onChange:a=>{j(r=>({...r,target:a.target.value}))}})]}),e.jsxs("div",{className:"field-group",children:[e.jsx("span",{children:n("terminalManager.argsField")}),e.jsx("input",{value:d.args,placeholder:n("terminalManager.argsPlaceholder"),onChange:a=>{j(r=>({...r,args:a.target.value}))}})]})]}),e.jsxs("div",{className:"terminal-manager-grid",children:[e.jsxs("div",{className:"field-group",children:[e.jsx("span",{children:n("terminalManager.portField")}),e.jsx("input",{value:d.port,placeholder:n("terminalManager.portPlaceholder"),onChange:a=>{j(r=>({...r,port:a.target.value}))}})]}),e.jsxs("div",{className:"field-group terminal-manager-proxy-field",children:[e.jsx("span",{children:n("terminalManager.proxyField")}),e.jsxs("div",{className:"terminal-manager-proxy-control",children:[e.jsx("span",{children:n("terminalManager.proxyToggleLabel")}),e.jsxs("label",{className:"terminal-manager-proxy-switch",children:[e.jsx("input",{type:"checkbox",role:"switch","aria-label":n("terminalManager.proxyField"),checked:d.proxyEnabled,onChange:a=>{j(r=>({...r,proxyEnabled:a.target.checked}))}}),e.jsx("span",{className:"terminal-manager-proxy-track","aria-hidden":"true",children:e.jsx("span",{className:"terminal-manager-proxy-thumb"})})]})]})]})]}),e.jsxs("div",{className:"terminal-manager-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:X,children:n("common.close")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!i||ae||!d.target.trim(),onClick:()=>{$e()},children:ae?w?n("terminalManager.templateUpdating"):n("terminalManager.templateSaving"):w?n("terminalManager.saveTemplateChangesAction"):n("terminalManager.saveLaunchAction")})]})]})}),e.jsx(ja,{open:v!==null,mobile:B,busy:v!==null&&k===v.templateId,title:n("terminalManager.removeConfirmTitle"),description:v?n(v.occupied?"terminalManager.removeRunningConfirmTarget":"terminalManager.removeConfirmTarget",{name:v.name}):"",confirmLabel:n("terminalManager.removeConfirmAction"),className:B?"terminal-manager-mobile-modal":"terminal-manager-confirm-modal",onClose:()=>{k||U(null)},onConfirm:()=>{if(!v)return;const a=f.find(r=>r.id===v.templateId);if(!a){U(null);return}we(fe,a.id),We(a)}})]}):e.jsx("section",{className:"workbench-empty-state minimal",children:e.jsx("p",{children:n("terminalManager.noCurrentWorkspaceBody")})}):e.jsx("section",{className:"workbench-empty-state minimal",children:e.jsx("p",{children:n("terminalManager.emptyWorkspaceBody")})})}function le(l){return`terminal-manager.snapshot.${l}`}export{Da as TerminalManagerPanel};