@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
@@ -0,0 +1,2 @@
1
+ import{b as i,j as e,t as s,C as z,c as us,e as Pe,w as es,A as We,M as Qe,N as at,O as Cn,P as vs,Q as Dn,S as Qs,h as Mn,f as An,T as Ns,q as Pn,n as Ln,d as Ss,m as En}from"./index-BUoNjVrY.js";import{g as On,j as lt,k as In,l as Rn,m as Un,n as Fn,e as gs,f as Zs,u as Ys,o as Bn,p as _n,c as qn,L as _t,q as qt,s as Ht}from"./App-DrNI9lWA.js";import{k as it,bk as Hn,bl as Wt,bm as oe,bn as Wn,bo as Ts,bp as Vn,z as zn,bq as $n,br as Kn,bs as Gn,c as Jn,d as Qn,bt as Zn,bu as Yn,bv as rt,bw as Xn,bx as ea,by as sa,bz as ta,bA as na,bB as aa,bC as la,bD as ia,bE as ra,u as ns,b as Vt,bF as as}from"./WorkbenchLayout-CJHQtwuL.js";import{M as ca,D as He}from"./DesktopModal-DRmDrv0S.js";import{W as ss}from"./WorkbenchModal-BM-OeW-b.js";import{c as ee,d as Z,M as ce,x as re,K as ae,u as fe,v as ge,O as oa}from"./workbench-navigation-DlgXuFW2.js";import{M as Re}from"./MobileSheet-nw5SCa3N.js";import{l as da,g as ua,a as ga,b as ma,r as ha,d as pa,e as ba}from"./plugins-api-CdCsrG2e.js";import{P as fa}from"./PluginAccessOverview-BVJihw3D.js";import{M as xa}from"./MobileTopHeaderFrame-DH_D02Wy.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-CQpxTS8y.js";import"./plugin-permission-copy-BR9gWy8b.js";const ct=2e4,ya=1e3,ja=5e3;function va({isOpen:t,onClose:a}){const[n,r]=i.useState(null),[o,h]=i.useState(null),[j,N]=i.useState(!1),[f,y]=i.useState(!1),[u,T]=i.useState(null),E=i.useRef(null);if(i.useEffect(()=>{if(!t)return;let m=!1;async function S(){N(!0),T(null),h(null);try{const b=await z.request("/api/observability/runtime/session",{method:"POST",body:JSON.stringify({ttlMs:ct})});if(m){await ws(b.sessionId);return}E.current=b.sessionId,r(b);const x=await ot(b.sessionId);if(m){await ws(b.sessionId);return}h(x)}catch(b){m||T(ks(b))}finally{m||N(!1)}}return S(),()=>{m=!0;const b=E.current;E.current=null,r(null),h(null),N(!1),y(!1),T(null),b&&ws(b)}},[t]),i.useEffect(()=>{const m=(n==null?void 0:n.sessionId)??null;if(!t||!m)return;const S=m;let b=!1;async function x(){y(!0);try{const C=await ot(S);b||(h(C),T(null))}catch(C){b||T(ks(C))}finally{b||y(!1)}}const c=window.setInterval(()=>{x()},ya);return()=>{b=!0,window.clearInterval(c)}},[t,n==null?void 0:n.sessionId]),i.useEffect(()=>{const m=(n==null?void 0:n.sessionId)??null;if(!t||!m)return;const S=m;let b=!1;async function x(){try{const C=await z.request(`/api/observability/runtime/session/${S}/heartbeat`,{method:"POST",body:JSON.stringify({ttlMs:ct})});b||r(C)}catch(C){b||T(ks(C))}}const c=window.setInterval(()=>{x()},ja);return()=>{b=!0,window.clearInterval(c)}},[t,n==null?void 0:n.sessionId]),!t||typeof document>"u")return null;const k=Object.entries((o==null?void 0:o.backgroundTasks.taskTypes)??{}),O=(o==null?void 0:o.registeredTasks)??[],v=Object.entries((o==null?void 0:o.schedulers.schedulers)??{}),R=Object.entries((o==null?void 0:o.backgroundTasks.totals)??{});return On.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":u?"error":"active",children:u?s("settings.parallelTaskDebugStatusError"):s("settings.parallelTaskDebugStatusActive")}),e.jsx(ca,{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:Cs(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:Cs(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:Na((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")})]})]}),j?e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugLoading")}):null,!j&&u?e.jsx("div",{className:"parallel-task-debug-error",children:u}):null,!j&&!u&&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:f?s("common.loading"):s("settings.parallelTaskDebugAutoRefresh")})]}),e.jsx("div",{className:"parallel-task-debug-counter-grid",children:R.map(([m,S])=>e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:Ta(m)}),e.jsx("strong",{children:S})]},m))})]}),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(m=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:m.taskType}),e.jsx("span",{children:Ds(m.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCategory"),": ",dt(m.taskType)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRuntime"),": ",ut(m.executionLane,m.taskType)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskTimeout"),": ",Ne(m.timeoutMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskConcurrency"),": ",m.concurrency??s("common.none")]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRetry"),": ",m.retryMaxAttempts??s("common.none")]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskHelper"),": ",m.helperProcessHandler??s("common.none")]})]})]},m.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:k.length})]}),k.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:k.map(([m,S])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:m}),e.jsx("span",{children:Ds(S.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCategory"),": ",dt(m)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRuntime"),": ",ut(S.executionLane,m)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitAvg"),": ",Ne(S.waitMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunAvg"),": ",Ne(S.runMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMax"),": ",Ne(S.runMs.max)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugStartedCount"),": ",S.counters.started??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFinishedCount"),": ",S.counters.finished??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFailedCount"),": ",S.counters.failed??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugCacheHitCount"),": ",S.counters.cache_hit??0]})]})]},m))}):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:v.length})]}),v.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:v.map(([m,S])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:m}),e.jsx("span",{children:S.lastIdle?s("settings.parallelTaskDebugIdle"):s("settings.parallelTaskDebugBusy")})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTickTotal"),": ",S.tickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugIdleTickTotal"),": ",S.idleTickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCountTotal"),": ",S.taskCountTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSchedulerErrorTotal"),": ",S.errorTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugLastDuration"),": ",Ne(S.lastDurationMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugNextDelay"),": ",Ne(S.nextDelayMs)]})]})]},m))}):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:Ne(o.eventLoop.resolutionMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMean")}),e.jsx("strong",{children:Ne(o.eventLoop.meanMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP95")}),e.jsx("strong",{children:Ne(o.eventLoop.p95Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP99")}),e.jsx("strong",{children:Ne(o.eventLoop.p99Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMax")}),e.jsx("strong",{children:Ne(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(m=>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:m.taskType}),e.jsx("span",{children:wa(m.eventType)}),e.jsx("span",{children:Ds(m.executionLane)})]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugTaskKey"),": ",m.key]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugStatus"),": ",m.status?ka(m.status):"-"]})]}),e.jsxs("div",{className:"parallel-task-debug-activity-meta",children:[e.jsx("span",{children:Cs(m.recordedAt)}),e.jsxs("span",{children:[s("settings.parallelTaskDebugAttempt"),": ",m.attempt??"-"]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitMs"),": ",Ne(m.waitMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMs"),": ",Ne(m.runMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSource"),": ",m.source??"-"]}),m.errorMessage?e.jsxs("span",{children:[s("settings.parallelTaskDebugError"),": ",m.errorMessage]}):null]})]},m.eventId))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]})]}):null]})]})]}),document.body)}async function ot(t){return await z.request(`/api/observability/runtime?sessionId=${encodeURIComponent(t)}`)}async function ws(t){try{await z.request(`/api/observability/runtime/session/${t}`,{method:"DELETE"})}catch{}}function ks(t){return t instanceof Error&&t.message?t.message:s("settings.parallelTaskDebugLoadFailed")}function Cs(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function Ne(t){return t==null||Number.isNaN(t)?"-":`${Math.round(t*100)/100} ms`}function Na(t){return t===null||Number.isNaN(t)?"-":`${Math.round(t/1e3)} s`}const Sa=new Set(["affairs.library_apply_config","affairs.library_index","affairs.library_export"]);function zt(t){return Sa.has(t)}function dt(t){return zt(t)?s("settings.parallelTaskDebugTaskCategoryBuiltinIndexer"):s("settings.parallelTaskDebugTaskCategoryGeneric")}function ut(t,a){if(t==="helper_process"&&zt(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 Ta(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 Ds(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 wa(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 ka(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 gt(){const t=us(),a=Pe.getState(),n=await t.bridge.getAndroidRuntimeInfo();if(!n.ok||!n.value)throw new Error(n.detail??"读取 Android 运行时信息失败。");const r=await z.request(`/api/client/release-manifest?channel=${encodeURIComponent(a.releaseChannel)}&platform=android-apk`),o=r.versionCode>n.value.versionCode;return{checkedAt:new Date().toISOString(),currentVersion:n.value.version,currentVersionCode:n.value.versionCode,hasUpdate:o,manifest:r,runtimeInfo:n.value}}async function Ca(t){return us().bridge.installAndroidUpdate(t)}function Da(){const[t,a]=i.useState(!1),[n,r]=i.useState(!1),[o,h]=i.useState(null),[j,N]=i.useState(null),[f,y]=i.useState(null),[u,T]=i.useState(!1),[E,k]=i.useState(null),O=i.useRef(!1);i.useEffect(()=>{if(E===null){O.current=!1;return}const m=E;async function S(){if(!O.current){O.current=!0;try{const c=await gt();if(y(c.manifest),N(c.currentVersion),T(c.hasUpdate),!c.hasUpdate||c.currentVersionCode>=m){h(s("settings.androidInstallSucceeded"));return}h(s("settings.androidInstallCancelled"))}catch(c){h(c instanceof Error?c.message:s("settings.releaseCheckFailed"))}finally{k(null)}}}function b(){S()}function x(){document.visibilityState==="visible"&&S()}return window.addEventListener("focus",b),document.addEventListener("visibilitychange",x),()=>{window.removeEventListener("focus",b),document.removeEventListener("visibilitychange",x)}},[E]);async function v(){a(!0),h(null),k(null);try{const m=await gt();y(m.manifest),N(m.currentVersion),T(m.hasUpdate),h(m.hasUpdate?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate"))}catch(m){h(m instanceof Error?m.message:s("settings.releaseCheckFailed"))}finally{a(!1)}}async function R(){if(f){r(!0),h(null),k(null);try{const m=await Ca(f);if(m.status==="installer_started"){h(s("settings.androidInstallerStarted")),k(f.versionCode);return}if(m.status==="permission_required"){h(m.detail??s("settings.androidInstallPermissionRequired")),k(null);return}if(m.status==="already_up_to_date"){h(s("settings.releaseUpToDate")),T(!1),k(null);return}h(m.detail??s("settings.releaseInstallFailed")),k(null)}catch(m){h(m instanceof Error?m.message:s("settings.releaseInstallFailed")),k(null)}finally{r(!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:j??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:(f==null?void 0:f.version)??"-"})]})]}),o?e.jsx("p",{className:"settings-update-status","data-tone":u?"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:v,children:t?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!f||!u||n,onClick:R,children:n?s("common.loading"):s("settings.releaseInstallNow")})]})]})}function Ma(){const t=us(),a=t.isDesktop,[n,r]=i.useState(!1),[o,h]=i.useState(!1),[j,N]=i.useState(!1),[f,y]=i.useState(null),[u,T]=i.useState(null),E=lt(P=>P.latestState),k=lt(P=>P.pendingRestartVersion),O=(E==null?void 0:E.currentVersion)??null,v=(E==null?void 0:E.manifest)??null,R=(E==null?void 0:E.hasUpdate)??!1,m=!!k,S=m&&u!==k;async function b(){if(!m){r(!0),y(null);try{const P=await In({notify:"always"});y(mt(P.manifest,P.hasUpdate))}catch(P){y(P instanceof Error?P.message:s("settings.releaseCheckFailed"))}finally{r(!1)}}}async function x(){if(!(!v||!R||m)){h(!0),y(null);try{const P=await Rn();if(!P.ok){y(P.detail??s("settings.releaseInstallFailed"));return}Un(v.version),T(null),y(s("settings.releaseRestartRequired"))}catch(P){y(P instanceof Error?P.message:s("settings.releaseInstallFailed"))}finally{h(!1)}}}async function c(){if(v!=null&&v.htmlUrl){N(!0);try{const P=await t.bridge.openExternal(v.htmlUrl);P.ok||y(P.detail??s("settings.releasePageOpenFailed"))}catch(P){y(P instanceof Error?P.message:s("settings.releasePageOpenFailed"))}finally{N(!1)}}}const C=!!(a&&v&&R&&!m),L=f??(a?m?s("settings.releaseRestartRequired"):E?mt(E.manifest,E.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:(v==null?void 0:v.version)??k??"-"})]})]}),L?e.jsx("p",{className:"settings-update-status","data-tone":Aa(v,R,L,m),children:L}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:!a||n||o||m,onClick:b,children:n?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!C||o,onClick:x,children:o?s("common.loading"):s("settings.releaseInstallNow")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:!(v!=null&&v.htmlUrl)||n||o||j,onClick:c,children:j?s("common.loading"):s("settings.releaseOpenPage")})]})]}),e.jsx(Pa,{open:S,version:k,onClose:()=>T(k)})]})}function mt(t,a){return a?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate")}function Aa(t,a,n,r){return n===s("settings.clientUpdateUnsupported")?"neutral":r||a?"warning":"success"}function Pa({open:t,version:a,onClose:n}){const[r,o]=i.useState(!1),[h,j]=i.useState(null);async function N(){o(!0),j(null);try{await Fn()}catch(f){j(f instanceof Error?f.message:s("settings.releaseRestartFailed")),o(!1)}}return e.jsx(ss,{open:t,title:s("settings.releaseRestartDialogTitle"),description:s("settings.releaseRestartDialogDescription",{version:a??"-"}),onClose:()=>{r||n()},children:e.jsxs("div",{className:"settings-update-card",children:[h?e.jsx("p",{className:"settings-update-status","data-tone":"danger",children:h}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:r,onClick:n,children:s("settings.releaseRestartLater")}),e.jsx("button",{className:"primary-button",type:"button",disabled:r,onClick:N,children:r?s("common.loading"):s("settings.releaseRestartConfirm")})]})]})})}function $t(){const t=us();return t.platform==="desktop"?e.jsx(Ma,{}):t.platform==="android"?e.jsx(Da,{}):e.jsx("div",{className:"settings-update-card",children:e.jsx("p",{className:"settings-update-status","data-tone":"neutral",children:s("settings.clientUpdateUnsupported")})})}const La="https://github.com/SaladDay/cc-switch-cli",Ea="当前机器未安装 cc-switch-cli。这里集成的是 CC-Switch 的衍生 CLI 版本,不是 CC-Switch UI 版本。请先安装:",Oa=/(https?:\/\/[^\s]+)/i;function Kt(){const t=es(c=>{var C;return((C=c.session)==null?void 0:C.accessToken)??null}),[a,n]=i.useState(null),[r,o]=i.useState(!0),[h,j]=i.useState(null),[N,f]=i.useState(null),[y,u]=i.useState(null),[T,E]=i.useState(!1),[k,O]=i.useState("codex");i.useEffect(()=>{let c=!0;if(!t){n(null),f(null),u(null),o(!1);return}return(async()=>{o(!0);try{const L=await it();if(!c)return;n(L),f(null),O(P=>pt(L,P))}catch(L){if(!c)return;f(Ms(L))}finally{c&&o(!1)}})(),()=>{c=!1}},[t]);async function v(){const c=await it();n(c),f(null),O(C=>pt(c,C))}async function R(){if(t){j("refresh"),f(null),u(null);try{await v(),u(s("settings.modelManagementRefreshSuccess"))}catch(c){f(Ms(c))}finally{j(null)}}}async function m(c,C){if(!t||C.isCurrent)return;const L=ht(c,C.id);j(L),f(null),u(null);try{const P=await Hn({app:c,presetId:C.id});Wt(),n(M=>Ia(M,P)),u(s("settings.modelManagementSwitchSuccess",{app:P.displayName,preset:P.currentPresetName??C.name}))}catch(P){f(Ms(P))}finally{j(null)}}const S=(a==null?void 0:a.items)??[],b=S.find(c=>c.app===k)??S[0]??null,x=Ua(S);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-panel",children:e.jsxs("div",{className:"settings-release-card",children:[y?e.jsx("p",{className:"settings-release-status",children:y}):null,N?e.jsx("p",{className:"settings-release-status",children:N}):null,x?e.jsxs("section",{className:"settings-model-missing-state",children:[e.jsx("p",{className:"settings-model-missing-copy",children:x.message}),e.jsx("a",{className:"settings-tailscale-link settings-model-missing-link",href:x.url,rel:"noreferrer",target:"_blank",children:x.url})]}):S.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-grid",children:S.map(c=>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:c.displayName}),e.jsx("span",{className:"settings-model-card-status","data-status":c.status,children:Ra(c.status)})]}),e.jsxs("div",{className:"settings-model-value-line",children:[e.jsx("strong",{className:"settings-model-preset-value",children:c.currentPresetName??s("settings.modelManagementPresetMissing")}),e.jsx("strong",{className:"settings-model-current-value",children:c.currentModel??s("settings.modelManagementModelUnknown")})]})]}),c.statusText?e.jsx("p",{className:"settings-model-card-note",children:c.statusText}):null]},c.app))}),e.jsx("div",{className:"settings-model-panel-actions",children:e.jsx("button",{className:"secondary-button settings-model-open-action",type:"button",disabled:!t||r,onClick:()=>{E(!0)},children:s("settings.modelManagementOpenSwitcher")})})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})}),e.jsxs(ss,{open:T&&!x,title:s("settings.modelManagementModalTitle"),description:s("settings.modelManagementModalDescription"),className:"settings-model-modal",headerActions:e.jsx("button",{className:"secondary-button",type:"button",disabled:!t||r||h!==null,onClick:()=>{R()},children:h==="refresh"?s("common.loading"):s("settings.modelManagementRefresh")}),onClose:()=>E(!1),children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.modelManagementTabsLabel"),children:S.map(c=>{const C=(b==null?void 0:b.app)===c.app;return e.jsx("button",{type:"button",role:"tab",className:"settings-model-tab","aria-selected":C,"data-active":C?"true":"false",onClick:()=>O(c.app),children:c.displayName},c.app)})}),b?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:b.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:b.currentModel??s("settings.modelManagementModelUnknown")})]})]}),b.statusText?e.jsx("p",{className:"settings-model-modal-note",children:b.statusText}):null,b.options.length>0?e.jsx("div",{className:"settings-model-switcher-list",children:b.options.map(c=>{const C=ht(b.app,c.id);return e.jsxs("div",{className:"settings-model-switcher-item","data-current":c.isCurrent?"true":"false",children:[e.jsxs("div",{className:"settings-model-switcher-item-main",children:[e.jsx("strong",{children:c.name}),e.jsx("span",{children:c.model??s("settings.modelManagementModelUnknown")})]}),e.jsx("div",{className:"settings-model-switcher-item-actions",children:c.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:r||h!==null||b.status!=="ready",onClick:()=>{m(b.app,c)},children:h===C?s("common.loading"):s("settings.modelManagementSwitchAction")})})]},`${b.app}:${c.id}`)})}):e.jsx("div",{className:"settings-model-empty",children:b.statusText??s("settings.modelManagementOptionsEmpty")})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})]})}function ht(t,a){return`switch:${t}:${a}`}function Ia(t,a){return t&&{...t,scannedAt:new Date().toISOString(),items:t.items.map(n=>n.app===a.app?a:n)}}function pt(t,a){var r;return t.items.some(o=>o.app===a)?a:((r=t.items[0])==null?void 0:r.app)??"codex"}function Ra(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 Ms(t){return t instanceof We?t.message||s("settings.modelManagementLoadFailed"):t instanceof Error?t.message:s("settings.modelManagementLoadFailed")}function Ua(t){var r,o,h;if(t.length===0||!t.every(j=>j.status==="unavailable"&&!j.cliAvailable&&!!j.statusText))return null;const n=((h=(((o=(r=t[0])==null?void 0:r.statusText)==null?void 0:o.trim())??"").match(Oa))==null?void 0:h[1])??La;return{message:Ea,url:n}}function Gt({triggerClassName:t="settings-button",triggerLabel:a,mobile:n=!1}){const r=es(M=>{var U;return((U=M.session)==null?void 0:U.accessToken)??null}),o=es(M=>{var U;return((U=M.session)==null?void 0:U.user)??null}),[h,j]=i.useState(!1),[N,f]=i.useState(!1),[y,u]=i.useState(null),[T,E]=i.useState(null),[k,O]=i.useState(null),[v,R]=i.useState(null),[m,S]=i.useState(null),[b,x]=i.useState(hs(null));i.useEffect(()=>{T&&x(hs(T))},[T]),i.useEffect(()=>{let M=!0;if(!h)return;if(!r){E(null),O(null),S(null),R(null),f(!1);return}return(async()=>{f(!0),S(null);try{const[Y,ne]=await Promise.all([Wn(),Ts()]);if(!M)return;E(Y),O(ne)}catch(Y){if(!M)return;S(As(Y))}finally{M&&f(!1)}})(),()=>{M=!1}},[r,h]);function c(){j(!1),R(null),S(null),x(hs(T))}async function C(){if(r){u("check"),S(null),R(null);try{const M=await Ts();O(M),R(s("settings.skillOnlyOfficeCheckSuccess"))}catch(M){S(As(M))}finally{u(null)}}}async function L(){if(r){u("save"),S(null),R(null);try{const M=await Vn({enabled:b.enabled,serverUrl:b.serverUrl,publicBaseUrl:b.publicBaseUrl,callbackBaseUrl:b.callbackBaseUrl,userDisplayName:b.userDisplayName,userAvatarUrl:b.userAvatarUrl,jwtSecret:b.jwtSecret,clearJwtSecret:b.clearJwtSecret}),U=await Ts();E(M),O(U),x(hs(M)),R(s("settings.skillOnlyOfficeSaveSuccess"))}catch(M){S(As(M))}finally{u(null)}}}const P=e.jsxs("div",{className:"settings-onlyoffice-modal-layout",children:[e.jsx(ee,{heading:s("settings.skillOnlyOfficeStatusLabel"),children:e.jsx("div",{className:"settings-onlyoffice-metrics",role:"list","aria-label":s("settings.skillOnlyOfficeStatusLabel"),children:Ha(k).map(M=>e.jsxs("div",{className:"settings-onlyoffice-metric-card","data-tone":M.tone,role:"listitem",tabIndex:0,children:[e.jsx("span",{className:"settings-onlyoffice-metric-label",children:M.label}),e.jsx("strong",{className:"settings-onlyoffice-metric-value",children:M.value}),e.jsx("div",{className:"settings-onlyoffice-metric-tooltip",role:"note",children:M.detail})]},M.key))})}),e.jsxs(ee,{heading:s("settings.skillOnlyOfficeSectionTitle"),children:[e.jsx(Z,{label:s("settings.skillOnlyOfficeEnabledLabel"),children:e.jsxs("div",{className:"settings-onlyoffice-switch-field",children:[e.jsx(oe,{checked:b.enabled,label:s("settings.skillOnlyOfficeEnabledLabel"),semanticRole:"switch",onChange:M=>{x(U=>({...U,enabled:M}))}}),e.jsx("span",{className:"settings-onlyoffice-switch-caption",children:b.enabled?s("common.enabled"):s("settings.skillOnlyOfficeStatusDisabled")})]})}),e.jsx(Z,{label:s("settings.skillOnlyOfficeServerUrlLabel"),htmlFor:"onlyoffice-server-url",children:e.jsx("input",{id:"onlyoffice-server-url",className:"settings-text-input",value:b.serverUrl,onChange:M=>{x(U=>({...U,serverUrl:M.target.value}))},placeholder:s("settings.skillOnlyOfficeServerUrlPlaceholder")})}),e.jsx(Z,{label:s("settings.skillOnlyOfficePublicBaseUrlLabel"),htmlFor:"onlyoffice-public-base-url",children:e.jsx("input",{id:"onlyoffice-public-base-url",className:"settings-text-input",value:b.publicBaseUrl,onChange:M=>{x(U=>({...U,publicBaseUrl:M.target.value}))},placeholder:s("settings.skillOnlyOfficePublicBaseUrlPlaceholder")})}),e.jsx(Z,{label:s("settings.skillOnlyOfficeCallbackBaseUrlLabel"),htmlFor:"onlyoffice-callback-base-url",children:e.jsx("input",{id:"onlyoffice-callback-base-url",className:"settings-text-input",value:b.callbackBaseUrl,onChange:M=>{x(U=>({...U,callbackBaseUrl:M.target.value}))},placeholder:s("settings.skillOnlyOfficeCallbackBaseUrlPlaceholder")})}),e.jsx(Z,{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:b.userDisplayName,onChange:M=>{x(U=>({...U,userDisplayName:M.target.value}))},placeholder:s("settings.skillOnlyOfficeUserDisplayNamePlaceholder")})}),e.jsx(Z,{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:b.userAvatarUrl,onChange:M=>{x(U=>({...U,userAvatarUrl:M.target.value}))},placeholder:s("settings.skillOnlyOfficeUserAvatarUrlPlaceholder")})}),e.jsx(Z,{label:s("settings.skillOnlyOfficeJwtSecretLabel"),htmlFor:"onlyoffice-jwt-secret",children:e.jsx("input",{id:"onlyoffice-jwt-secret",className:"settings-text-input",value:b.jwtSecret,onChange:M=>{x(U=>({...U,jwtSecret:M.target.value,clearJwtSecret:!1}))},placeholder:T!=null&&T.jwtSecretConfigured?s("settings.skillOnlyOfficeJwtSecretKeepPlaceholder"):s("settings.skillOnlyOfficeJwtSecretPlaceholder")})}),T!=null&&T.jwtSecretConfigured?e.jsx(Z,{label:s("settings.skillOnlyOfficeClearJwtSecretLabel"),children:e.jsxs("div",{className:"settings-onlyoffice-switch-field",children:[e.jsx(oe,{checked:b.clearJwtSecret,label:s("settings.skillOnlyOfficeClearJwtSecretLabel"),semanticRole:"switch",onChange:M=>{x(U=>({...U,clearJwtSecret:M}))}}),e.jsx("span",{className:"settings-onlyoffice-switch-caption",children:b.clearJwtSecret?s("common.enabled"):s("common.disabled")})]})}):null]}),v?e.jsx("p",{className:"settings-release-status",children:v}):null,m?e.jsx("p",{className:"settings-release-status",children:m}):null,e.jsxs(ce,{className:"settings-onlyoffice-modal-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:c,children:s("common.cancel")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:N||y!==null,onClick:()=>{C()},children:y==="check"?s("settings.opencliLoading"):s("settings.skillOnlyOfficeCheckAction")}),e.jsx("button",{className:"primary-button",type:"button",disabled:N||y!==null,onClick:()=>{L()},children:y==="save"?s("butlerSettingsSaving"):s("settings.skillOnlyOfficeSaveAction")})]})]});return e.jsxs(e.Fragment,{children:[e.jsx("button",{className:t,type:"button",onClick:()=>{j(!0)},children:a??s("settings.skillOnlyOfficeOpenSettingsAction")}),n?e.jsx(Re,{open:h,title:s("settings.skillOnlyOfficeModalTitle"),description:s("settings.skillOnlyOfficeModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:c,children:P}):e.jsx(He,{open:h,title:s("settings.skillOnlyOfficeModalTitle"),description:s("settings.skillOnlyOfficeModalDescription"),size:"regular",layout:"form",className:"settings-onlyoffice-modal",bodyClassName:"settings-onlyoffice-modal-body",onClose:c,children:P})]})}function hs(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 Fa(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 Ba(t){switch(t){case"ready":return"success";case"warning":case"misconfigured":return"warning";case"error":return"danger";case"disabled":default:return"default"}}function _a(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 qa(t){switch(t){case"pass":return"success";case"warn":return"warning";case"fail":return"danger";case"skip":default:return"default"}}function Ha(t){const a=[{key:"summary",label:s("settings.skillOnlyOfficeStatusLabel"),value:Fa(t),detail:(t==null?void 0:t.summary)??s("settings.skillOnlyOfficeStatusUnknown"),tone:Ba(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:_a(n.status),detail:n.detail,tone:qa(n.status)});return a}function As(t){return t instanceof We||t instanceof Error&&t.message.trim().length>0?t.message:s("settings.skillLoadError")}const Wa=[{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 Jt(){const t=gs(),a=es(c=>{var C;return((C=c.session)==null?void 0:C.accessToken)??null}),[n,r]=i.useState(!1),[o,h]=i.useState(null),[j,N]=i.useState(null),[f,y]=i.useState(null),{items:u,loading:T}=zn(n&&!!a),E=Wa.map(c=>({...c,label:s(c.labelKey)}));i.useEffect(()=>{a||(r(!1),h(null),N(null),y(null))},[a]);async function k(){if(a){y(null);try{await Gn(!0)}catch(c){y(Ls(c,"load"))}}}function O(){r(!0),N(null),y(null),a&&k()}async function v(c){if(!a)return;const C=!c.enabled;h(c.provider),y(null),N(null);try{await Kn(c.provider,C),Wt(),N(C?s("settings.providerManagementEnableSuccess",{provider:c.displayName}):s("settings.providerManagementDisableSuccess",{provider:c.displayName}))}catch(L){y(Ls(L,"save"))}h(null)}async function R(){if(a){y(null),N(null);try{await $n(),N(s("settings.providerManagementRefreshSuccess"))}catch(c){y(Ls(c,"load"))}}}const m=u??[],S=m.filter(c=>c.enabled).length,b=m.filter(c=>!c.enabled).length,x=e.jsxs("div",{className:"settings-provider-modal-layout",children:[j?e.jsx("p",{className:"settings-provider-status",children:j}):null,f?e.jsx("p",{className:"settings-provider-error",children:f}):null,e.jsxs("div",{className:"settings-provider-summary-grid","aria-label":s("settings.providerManagementSummaryTitle"),children:[e.jsx(Ps,{label:s("settings.providerManagementSummaryEnabled"),value:String(S)}),e.jsx(Ps,{label:s("settings.providerManagementSummaryDisabled"),value:String(b)}),e.jsx(Ps,{label:s("settings.providerManagementSummaryTotal"),value:String(m.length)})]}),e.jsxs(ee,{heading:s("settings.providerManagementMatrixTitle"),description:s("settings.providerManagementMatrixDescription"),className:"settings-provider-modal-section",children:[T&&m.length===0?e.jsx(re,{compact:!0,title:s("settings.providerManagementLoading")}):null,!T&&m.length===0?e.jsx(re,{title:s("settings.providerManagementEmpty"),description:s("settings.providerManagementEmptyDescription"),action:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a,onClick:()=>{R()},children:s("settings.providerManagementRefresh")})}):null,m.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"}),E.map(c=>e.jsx("col",{className:"settings-provider-matrix-capability-col"},c.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")}),E.map(c=>e.jsx("th",{scope:"col",children:c.label},c.key)),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableStatus")}),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableEnabled")})]})}),e.jsx("tbody",{children:m.map(c=>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:c.displayName}),e.jsx(ae,{tone:Ka(c.installState),children:$a(c)})]})})}),E.map(C=>e.jsx("td",{className:"settings-provider-matrix-capability-cell",children:e.jsx(Va,{enabled:c.productCapabilities[C.key],label:C.label})},C.key)),e.jsx("td",{className:"settings-provider-matrix-status-cell",children:e.jsx(ae,{tone:c.enabled?"success":"default",children:c.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:c.displayName})}),e.jsx("input",{type:"checkbox",checked:c.enabled,disabled:o===c.provider,"aria-label":s("settings.providerManagementToggleLabel",{provider:c.displayName}),onChange:()=>{v(c)}}),e.jsx("span",{className:"settings-provider-matrix-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-provider-matrix-switch-thumb"})})]})})]},c.provider))})]})}):null]}),e.jsx(ce,{className:"settings-provider-modal-actions",children:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a||T||o!==null,onClick:()=>{R()},children:T?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(Re,{open:n,title:s("settings.providerManagementModalTitle"),height:"three-quarter",kind:"form",showHandle:!0,cardClassName:"settings-provider-modal",bodyClassName:"settings-provider-modal-body",onClose:()=>r(!1),children:x}):e.jsx(He,{open:n,title:s("settings.providerManagementModalTitle"),className:"settings-provider-modal",size:"xwide",layout:"list",bodyClassName:"settings-provider-modal-body",onClose:()=>r(!1),children:x})]})}function Ps({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 Va({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 za(t){switch(t){case"ready":return s("settings.providerManagementInstallReady");case"missing":return s("settings.providerManagementInstallMissing");default:return s("settings.providerManagementInstallUnknown")}}function $a(t){return t.installState==="ready"&&t.version?t.version:za(t.installState)}function Ka(t){switch(t){case"ready":return"success";case"missing":return"warning";default:return"default"}}function Ls(t,a){return t instanceof We?t.message:a==="save"?s("settings.providerManagementSaveFailed"):s("settings.providerManagementLoadFailed")}async function Ga(){return await z.request("/api/channels/platforms")}async function Ja(){return await z.request("/api/channels/accounts")}async function Qa(t){return await z.request("/api/channels/accounts",{method:"POST",body:JSON.stringify(t)})}async function Za(t){return await z.request(`/api/channels/accounts/${t}`,{method:"DELETE"})}async function Ya(t){return await z.request(`/api/channels/accounts/${t}/probe`,{method:"POST"})}async function Xa(t){return await z.request(`/api/channels/accounts/${t}/poll`,{method:"POST"})}async function el(t){return await z.request(`/api/channels/accounts/${t}/wechat-claw/start-login`,{method:"POST"})}async function sl(t){return await z.request(`/api/channels/accounts/${t}/wechat-claw/refresh-login`,{method:"POST"})}async function tl(t){return await z.request(`/api/channels/accounts/${t}/wechat-claw/logout`,{method:"POST"})}async function nl(t,a=20){return await z.request(`/api/channels/accounts/${t}/threads?limit=${a}`)}async function al(t,a=20){return await z.request(`/api/channels/accounts/${t}/events?limit=${a}`)}async function ll(t,a=20){return await z.request(`/api/channels/accounts/${t}/deliveries?limit=${a}`)}function Qt({code:t,...a}){switch(t){case"wechat-claw":return e.jsx(rl,{...a});case"telegram":return e.jsx(il,{...a});default:return e.jsx(cl,{...a})}}function il(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 rl(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 cl(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 ol=["codex","claude-code"],dl=["active","disabled","degraded"],os="polling",ul=`{
2
+ }`,Xs={"wechat-claw":[],telegram:[{key:"botToken",labelKey:"settings.channelsConfigFieldTelegramBotToken",descriptionKey:"settings.channelsConfigFieldTelegramBotTokenDescription",placeholderKey:"settings.channelsConfigFieldTelegramBotTokenPlaceholder",type:"password",required:!0}]},gl={};function Zt(){const t=gs(),a=es(l=>{var F;return((F=l.session)==null?void 0:F.accessToken)??null}),[n,r]=i.useState(!1),[o,h]=i.useState(!1),[j,N]=i.useState([]),[f,y]=i.useState([]),[u,T]=i.useState(!1),[E,k]=i.useState(!1),[O,v]=i.useState(null),[R,m]=i.useState(null),[S,b]=i.useState(null),[x,c]=i.useState(null),[C,L]=i.useState(null),[P,M]=i.useState("platform"),[U,Y]=i.useState(null),[ne,W]=i.useState(null),[_,se]=i.useState(()=>ps()),[te,le]=i.useState([]),[J,A]=i.useState([]),[q,w]=i.useState([]),g=i.useMemo(()=>f.find(l=>l.id===U)??null,[f,U]),B=i.useMemo(()=>j.find(l=>l.code===_.platformCode)??null,[_.platformCode,j]),I=i.useMemo(()=>_.platformCode?Xs[_.platformCode]??[]:[],[_.platformCode]),de=i.useMemo(()=>new Set(f.map(l=>l.platformCode)).size,[f]),ue=i.useMemo(()=>f.filter(l=>l.status==="active").length,[f]),G=(B==null?void 0:B.code)==="wechat-claw",je=(g==null?void 0:g.platformCode)==="wechat-claw",$=i.useMemo(()=>g?fl(g):null,[g]),V=($==null?void 0:$.loginStatus)==="active";i.useEffect(()=>{a||(r(!1),h(!1),N([]),y([]),T(!1),k(!1),v(null),m(null),b(null),c(null),L(null),M("platform"),Y(null),W(null),se(ps()),le([]),A([]),w([]))},[a]),i.useEffect(()=>{(!U||ne!==U)&&W(null)},[U,ne]),i.useEffect(()=>{!n||!a||ke()},[a,n]),i.useEffect(()=>{if(!n||!a||!U){le([]),A([]),w([]);return}Se(U)},[a,U,n]);async function ke(l={}){if(a){T(!0),c(null);try{const[F,X]=await Promise.all([Ga(),Ja()]);N(F),y(X),U&&!X.some(Be=>Be.id===U)&&(Y(null),le([]),A([]),w([])),l.showSuccess&&b(s("settings.channelsRefreshSuccess"))}catch(F){c(Ke(F,"loadOverview"))}finally{T(!1)}}}async function Se(l){if(a){k(!0),c(null);try{const[F,X,Be]=await Promise.all([nl(l),al(l),ll(l)]);if(U!==l)return;le(F),A(X),w(Be)}catch(F){c(Ke(F,"loadDetails"))}finally{k(!1)}}}function Le(){r(!0),b(null),c(null)}function Te(){r(!1),h(!1),W(null)}function me(){m(null),L(null),M("platform"),se(ps())}function Ce(){me(),h(!0)}function he(){h(!1),me()}function Me(l){Y(l.id),W(null),b(null),c(null)}function pe(l){M(l==="wechat-claw"?"binding":"config"),se(F=>ps({platformCode:l,displayName:F.platformCode===l?F.displayName:"",providerId:F.providerId,status:F.status})),L(null)}function De(l,F){se(X=>({...X,configValues:{...X.configValues,[l]:F}}))}function Ze(){const l=Yt(_,B);if(!l.ok){L(l.errorText);return}M("binding"),L(null)}async function Ue(){if(!a)return;const l=yl(_,B);if(!l.ok){L(l.errorText);return}m("save"),L(null),b(null);try{const F=await Qa(l.input);y(X=>[F,...X]),Y(F.id),he(),b(s("settings.channelsCreateSuccess",{account:F.displayName}))}catch(F){L(Ke(F,"save"))}finally{m(null)}}async function Ye(){if(!(!a||!U)){v("probe"),c(null),b(null);try{const l=await Ya(U);y(F=>Os(F,l.account)),b(l.detail),await Se(U)}catch(l){c(Ke(l,"probe"))}finally{v(null)}}}async function Ee(){if(!(!a||!U)){v("poll"),c(null),b(null);try{const l=await Xa(U);y(F=>Os(F,l.account)),b(l.detail),await Se(U)}catch(l){c(Ke(l,"poll"))}finally{v(null)}}}async function xe(l){if(!a||!U||!je)return;v(l==="start"?"wechat-start-login":l==="refresh"?"wechat-refresh-login":"wechat-logout"),c(null),b(null);try{let X;l==="start"?X=await el(U):l==="refresh"?X=await sl(U):X=await tl(U),Oe(X.account),b(X.detail)}catch(X){c(Ke(X,l))}finally{v(null)}}async function K(){if(!(!a||!g)){v("remove-account"),c(null),b(null);try{const l=await Za(g.id);y(F=>F.filter(X=>X.id!==l.accountId)),U===l.accountId&&(Y(null),le([]),A([]),w([])),W(null),b(s("settings.channelsRemoveSuccess",{account:l.displayName}))}catch(l){c(Ke(l,"remove"))}finally{v(null)}}}function Oe(l){y(F=>Os(F,l))}async function Fe(){v("refresh"),b(null),c(null);try{await ke({showSuccess:!0})}finally{v(null)}}const ve=e.jsxs("div",{className:"settings-channels-summary-grid","aria-label":s("settings.channelsSummaryTitle"),children:[e.jsx(Es,{label:s("settings.channelsSummaryAccounts"),value:String(f.length)}),e.jsx(Es,{label:s("settings.channelsSummaryActive"),value:String(ue)}),e.jsx(Es,{label:s("settings.channelsSummaryPlatforms"),value:String(de)})]}),Ve=e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:Ce,children:s("settings.channelsAddAccountAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:u||O!==null,onClick:()=>{Fe()},children:O==="refresh"?s("settings.channelsActionPending"):s("settings.channelsRefresh")})]}),ze=!je||V,ye=g!==null&&ne===g.id,$e=e.jsxs("div",{className:"settings-channels-modal-layout",children:[C?e.jsx("p",{className:"settings-channels-error",children:C}):null,e.jsxs(ee,{heading:s("settings.channelsWizardTitle"),description:s("settings.channelsWizardCreateDescription"),children:[e.jsx(ml,{currentStep:P}),P==="platform"?e.jsxs(e.Fragment,{children:[u&&j.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsLoading")}):null,!u&&j.length===0?e.jsx(re,{title:s("settings.channelsPlatformsEmpty"),description:s("settings.channelsPlatformsEmptyDescription")}):null,j.length>0?e.jsx("div",{className:"settings-channels-platform-grid",children:j.map(l=>e.jsx("button",{className:"settings-channels-platform-card",type:"button","aria-pressed":_.platformCode===l.code,"data-selected":_.platformCode===l.code?"true":void 0,onClick:()=>pe(l.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(Qt,{code:l.code,width:40,height:40,"aria-hidden":"true"})}),e.jsxs("div",{className:"settings-channels-platform-card-copy",children:[e.jsx("strong",{children:l.displayName}),e.jsx("span",{children:s("settings.channelsPlatformSummary",{modes:Xe(os),multiSession:ds(l.multiSessionSupportLevel)})})]})]}),e.jsx(ae,{tone:l.multiSessionSupportLevel==="supported"?"success":"warning",children:ds(l.multiSessionSupportLevel)})]})},l.code))}):null,e.jsx(ce,{children:e.jsx("button",{className:"primary-button",type:"button",disabled:!B,onClick:()=>{B&&M("config")},children:s("settings.channelsWizardNextToConfig")})})]}):null,P==="config"?e.jsxs(e.Fragment,{children:[B?e.jsx(hl,{platformCapability:B}):e.jsx(re,{compact:!0,title:s("settings.channelsValidationPlatform"),description:s("settings.channelsWizardSelectPlatformHint")}),B?e.jsxs(e.Fragment,{children:[e.jsx(bl,{platformCode:B.code}),e.jsx(pl,{platformCode:B.code}),I.length>0?e.jsx("div",{className:"settings-channels-form-grid",children:I.map(l=>e.jsx(Z,{label:s(l.labelKey),description:s(l.descriptionKey),htmlFor:`channels-create-config-${l.key}`,children:e.jsx("input",{id:`channels-create-config-${l.key}`,className:"settings-text-input",type:l.type??"text",placeholder:s(l.placeholderKey),value:_.configValues[l.key]??"",onChange:F=>De(l.key,F.target.value)})},l.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(Z,{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:_.advancedConfigText,onChange:l=>{se(F=>({...F,advancedConfigText:l.target.value}))}})})]})]}):null,e.jsxs(ce,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>M("platform"),children:s("settings.channelsWizardBackToPlatform")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!B,onClick:Ze,children:s("settings.channelsWizardNextToBinding")})]})]}):null,P==="binding"?e.jsxs(e.Fragment,{children:[B?e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(we,{label:s("settings.channelsDetailPlatform"),value:B.displayName}),e.jsx(we,{label:s("settings.channelsDetailConnectionMode"),value:Xe(os)}),e.jsx(we,{label:s("settings.channelsWizardBindingSummary"),value:ds(B.multiSessionSupportLevel)})]}):null,e.jsxs("div",{className:"settings-channels-form-grid",children:[e.jsx(Z,{label:s("settings.channelsFieldDisplayName"),description:G?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:_.displayName,onChange:l=>{se(F=>({...F,displayName:l.target.value}))}})}),e.jsx(Z,{label:s("settings.channelsFieldProvider"),description:s("settings.channelsFieldProviderDescription"),htmlFor:"channels-create-provider",children:e.jsx("select",{id:"channels-create-provider",className:"settings-select",value:_.providerId,onChange:l=>{se(F=>({...F,providerId:l.target.value}))},children:ol.map(l=>e.jsx("option",{value:l,children:bs(l)},l))})}),e.jsx(Z,{label:s("settings.channelsFieldStatus"),description:s("settings.channelsFieldStatusDescription"),htmlFor:"channels-create-status",children:e.jsx("select",{id:"channels-create-status",className:"settings-select",value:_.status,onChange:l=>{se(F=>({...F,status:l.target.value}))},children:dl.map(l=>e.jsx("option",{value:l,children:Is(l)},l))})}),e.jsx(Z,{label:s("settings.channelsFieldConnectionMode"),description:s("settings.channelsFieldConnectionModeDescription"),children:e.jsxs("div",{className:"settings-channels-fixed-field",children:[e.jsx("strong",{children:Xe(os)}),e.jsx("span",{children:s("settings.channelsConnectionModeFixedHint")})]})})]}),e.jsxs(ce,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>M(G?"platform":"config"),children:G?s("settings.channelsWizardBackToPlatform"):s("settings.channelsWizardBackToConfig")}),e.jsx("button",{className:"primary-button",type:"button",disabled:R==="save",onClick:()=>{Ue()},children:R==="save"?s("settings.channelsActionPending"):s("settings.channelsCreateAction")})]})]}):null]})]}),Ae=e.jsxs("div",{className:"settings-channels-modal-layout",children:[S?e.jsx("p",{className:"settings-channels-status",children:S}):null,x?e.jsx("p",{className:"settings-channels-error",children:x}):null,ve,t.isMobile?e.jsx(ce,{className:"settings-channels-inline-actions",children:Ve}):null,e.jsxs(ee,{heading:s("settings.channelsAccountsTitle"),description:s("settings.channelsAccountsDescription"),children:[u&&f.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsLoading")}):null,!u&&f.length===0?e.jsx(re,{title:s("settings.channelsAccountsEmpty"),description:s("settings.channelsAccountsEmptyDescription"),action:e.jsx("button",{className:"secondary-button",type:"button",onClick:Ce,children:s("settings.channelsAddAccountAction")})}):null,f.length>0?e.jsx(fe,{className:"settings-channels-account-list",children:f.map(l=>e.jsx(ge,{as:"button",selected:U===l.id,className:"settings-channels-account-item",label:l.displayName,description:s("settings.channelsAccountRowDescription",{platform:l.capability.displayName,provider:bs(l.providerId),mode:Xe(l.connectionMode)}),trailing:e.jsxs("div",{className:"settings-channels-account-tags",children:[e.jsx(ae,{tone:Nl(l.status),children:Is(l.status)}),e.jsx(ae,{children:bs(l.providerId)})]}),onClick:()=>Me(l),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsThreadsTitle"),": ",l.threadCount]}),e.jsxs("span",{children:[s("settings.channelsEventsTitle"),": ",l.inboundEventCount]}),e.jsxs("span",{children:[s("settings.channelsDeliveriesTitle"),": ",l.deliveryCount]})]})},l.id))}):null]}),g?e.jsxs(e.Fragment,{children:[e.jsxs(ee,{heading:s("settings.channelsDetailTitle"),description:s("settings.channelsDetailDescription"),actions:e.jsxs(ce,{className:"settings-channels-inline-actions",children:[ze?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{Ye()},children:O==="probe"?s("settings.channelsActionPending"):s("settings.channelsProbeAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{Ee()},children:O==="poll"?s("settings.channelsActionPending"):s("settings.channelsPollAction")})]}):null,ye?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{W(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:O!==null,onClick:()=>{K()},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:()=>{g&&W(g.id)},children:s("settings.channelsRemoveAction")})]}),children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(we,{label:s("settings.channelsDetailPlatform"),value:g.capability.displayName}),e.jsx(we,{label:s("settings.channelsDetailProvider"),value:bs(g.providerId)}),e.jsx(we,{label:s("settings.channelsDetailConnectionMode"),value:Xe(g.connectionMode)}),e.jsx(we,{label:s("settings.channelsDetailStatus"),value:Is(g.status)}),e.jsx(we,{label:s("settings.channelsDetailLastInbound"),value:Ge(g.lastInboundAt)}),e.jsx(we,{label:s("settings.channelsDetailLastOutbound"),value:Ge(g.lastOutboundAt)})]}),g.lastError?e.jsxs("p",{className:"settings-channels-inline-note",children:[s("settings.channelsDetailLastError"),": ",g.lastError]}):null,ye?e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsRemoveConfirmDescription")}):null]}),g.platformCode==="wechat-claw"?e.jsxs(ee,{heading:s("settings.channelsWechatBindingTitle"),description:s("settings.channelsWechatBindingDescription"),actions:e.jsxs(ce,{className:"settings-channels-inline-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{xe("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:()=>{xe("refresh")},children:O==="wechat-refresh-login"?s("settings.channelsActionPending"):s("settings.channelsWechatRefreshLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:O!==null,onClick:()=>{xe("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(we,{label:s("settings.channelsWechatLoginStatus"),value:kl(($==null?void 0:$.loginStatus)??"not_logged_in")}),e.jsx(we,{label:s("settings.channelsDetailConnectionMode"),value:s("settings.channelsWechatBindingModeValue")}),e.jsx(we,{label:s("settings.channelsMetaUpdatedAt"),value:Ge(($==null?void 0:$.updatedAt)??null)})]}),e.jsx("p",{className:"settings-channels-inline-note",children:V?s("settings.channelsWechatBoundDescription"):s("settings.channelsWechatPendingDescription")}),$!=null&&$.lastDetail?e.jsx("p",{className:"settings-channels-inline-note",children:$.lastDetail}):null,V?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(ce,{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(re,{compact:!0,title:s("settings.channelsWechatQrEmpty"),description:s("settings.channelsWechatQrEmptyDescription")}),$!=null&&$.qrcodeText?e.jsx(Z,{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:g.capability.stageOneLimitations.map(l=>e.jsx("p",{className:"settings-channels-platform-limitations",children:l},l))})]}):null,e.jsxs(ee,{heading:s("settings.channelsThreadsTitle"),description:s("settings.channelsThreadsDescription",{count:g.threadCount}),children:[E?e.jsx(re,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!E&&te.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsThreadsEmpty"),description:s("settings.channelsThreadsEmptyDescription")}):null,!E&&te.length>0?e.jsx(fe,{compact:!0,children:te.map(l=>e.jsx(ge,{label:l.title||l.externalConversationKey,description:s("settings.channelsThreadSummary",{status:ft(l.status),conversationKey:l.externalConversationKey}),trailing:e.jsx(ae,{tone:Sl(l.status),children:ft(l.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",Ge(l.createdAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaUpdatedAt"),": ",Ge(l.updatedAt)]}),l.externalUserId?e.jsxs("span",{children:[s("settings.channelsMetaExternalUser"),": ",l.externalUserId]}):null]})},l.id))}):null]}),e.jsxs(ee,{heading:s("settings.channelsEventsTitle"),description:s("settings.channelsEventsDescription",{count:g.inboundEventCount}),children:[E?e.jsx(re,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!E&&J.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsEventsEmpty"),description:s("settings.channelsEventsEmptyDescription")}):null,!E&&J.length>0?e.jsx(fe,{compact:!0,children:J.map(l=>e.jsx(ge,{label:bt(l.textContent),description:s("settings.channelsEventSummary",{status:xt(l.status),conversationKey:l.externalConversationKey}),trailing:e.jsx(ae,{tone:Tl(l.status),children:xt(l.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaReceivedAt"),": ",Ge(l.receivedAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaEventId"),": ",l.externalEventId]}),l.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",l.errorMessage]}):null]})},l.id))}):null]}),e.jsxs(ee,{heading:s("settings.channelsDeliveriesTitle"),description:s("settings.channelsDeliveriesDescription",{count:g.deliveryCount}),children:[E?e.jsx(re,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!E&&q.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsDeliveriesEmpty"),description:s("settings.channelsDeliveriesEmptyDescription")}):null,!E&&q.length>0?e.jsx(fe,{compact:!0,children:q.map(l=>e.jsx(ge,{label:bt(l.textContent),description:s("settings.channelsDeliverySummary",{status:yt(l.status)}),trailing:e.jsx(ae,{tone:wl(l.status),children:yt(l.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",Ge(l.createdAt)]}),l.providerMessageRef?e.jsxs("span",{children:[s("settings.channelsMetaProviderRef"),": ",l.providerMessageRef]}):null,l.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",l.errorMessage]}):null]})},l.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:Le,children:s("settings.channelsManageAction")})}),t.isMobile?e.jsx(Re,{open:n,title:s("settings.channelsModalTitle"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:Te,children:e.jsx("div",{className:"settings-channels-modal-body",children:Ae})}):e.jsx(He,{open:n,title:s("settings.channelsModalTitle"),size:"xwide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",headerActions:Ve,onClose:Te,children:Ae}),t.isMobile?e.jsx(Re,{open:o,title:s("settings.channelsAddAccountAction"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:he,children:e.jsx("div",{className:"settings-channels-modal-body",children:$e})}):e.jsx(He,{open:o,title:s("settings.channelsAddAccountAction"),size:"wide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",onClose:he,children:$e})]})}function Es({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 we({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 ml({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(r=>r.step===t);return e.jsx("div",{className:"settings-channels-step-strip","aria-label":s("settings.channelsWizardStepsTitle"),children:a.map((r,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:r.number}),e.jsx("span",{className:"settings-channels-step-chip-label",children:r.label})]},r.step))})}function hl({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(Qt,{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:Xe(os),multiSession:ds(t.multiSessionSupportLevel)})})]})]}),e.jsx(ae,{tone:t.multiSessionSupportLevel==="supported"?"success":"warning",children:ds(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 pl({platformCode:t}){const a=gl[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 bl({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 fl(t){return{loginStatus:xl(t.runtimeState.wechatClawLoginStatus),qrcodeUrl:ls(t.runtimeState.wechatClawQrCodeUrl),qrcodeSourceUrl:ls(t.runtimeState.wechatClawQrCodeSourceUrl),qrcodeText:ls(t.runtimeState.wechatClawQrCodeText),lastDetail:ls(t.runtimeState.wechatClawLastDetail),updatedAt:ls(t.runtimeState.wechatClawUpdatedAt)}}function xl(t){return t==="waiting_scan"||t==="scan_confirmed"||t==="active"||t==="expired"?t:"not_logged_in"}function ls(t){if(typeof t!="string")return null;const a=t.trim();return a.length>0?a:null}function ps(t={}){return{platformCode:"",displayName:"",providerId:"codex",status:"active",configValues:{},advancedConfigText:ul,...t}}function Os(t,a){return t.findIndex(r=>r.id===a.id)===-1?[a,...t]:t.map(r=>r.id===a.id?a:r)}function Yt(t,a){if(!t.platformCode||!a)return{ok:!1,errorText:s("settings.channelsValidationPlatform")};const n=jl(t.platformCode,t.configValues);if(n)return{ok:!1,errorText:n};try{Xt(t.advancedConfigText)}catch{return{ok:!1,errorText:s("settings.channelsValidationConfigJson")}}return{ok:!0}}function yl(t,a){const n=Yt(t,a);if(!n.ok)return n;const r=t.displayName.trim();if(!r)return{ok:!1,errorText:s("settings.channelsValidationDisplayName")};const o=t.platformCode,h=Xt(t.advancedConfigText),j=vl(o,t.configValues,h);return{ok:!0,input:{displayName:r,platformCode:o,providerId:t.providerId,connectionMode:os,status:t.status,config:j}}}function jl(t,a){const r=(Xs[t]??[]).find(o=>o.required&&!(a[o.key]??"").trim());return r?s("settings.channelsValidationRequiredField",{field:s(r.labelKey)}):null}function Xt(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 vl(t,a,n){const r={...n};for(const o of Xs[t]??[]){const h=(a[o.key]??"").trim();h?r[o.key]=h:delete r[o.key]}return r}function Ke(t,a){if(t instanceof We)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 bt(t){const a=t.trim();return a.length<=72?a||s("settings.channelsTextFallback"):`${a.slice(0,72)}...`}function Ge(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 bs(t){return t==="claude-code"?"Claude Code":"Codex"}function Xe(t){return t==="polling"?s("settings.channelsConnectionModePolling"):t==="bridge"?s("settings.channelsConnectionModeBridge"):s("settings.channelsConnectionModeWebhook")}function ds(t){return t==="supported"?s("settings.channelsMultiSessionSupported"):s("settings.channelsMultiSessionLimited")}function Is(t){switch(t){case"disabled":return s("settings.channelsStatusDisabled");case"degraded":return s("settings.channelsStatusDegraded");default:return s("settings.channelsStatusActive")}}function Nl(t){switch(t){case"disabled":return"default";case"degraded":return"warning";default:return"success"}}function ft(t){switch(t){case"closed":return s("settings.channelsThreadStatusClosed");case"failed":return s("settings.channelsThreadStatusFailed");default:return s("settings.channelsThreadStatusActive")}}function Sl(t){switch(t){case"failed":return"danger";case"closed":return"default";default:return"success"}}function xt(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 Tl(t){switch(t){case"replied":return"success";case"failed":return"danger";case"ignored":return"warning";case"dispatched":return"accent";default:return"default"}}function yt(t){switch(t){case"failed":return s("settings.channelsDeliveryStatusFailed");case"skipped":return s("settings.channelsDeliveryStatusSkipped");default:return s("settings.channelsDeliveryStatusSent")}}function wl(t){switch(t){case"failed":return"danger";case"skipped":return"default";default:return"success"}}function kl(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 en={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},jt=Qe.createContext&&Qe.createContext(en),Cl=["attr","size","title"];function Dl(t,a){if(t==null)return{};var n,r,o=Ml(t,a);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(t);for(r=0;r<h.length;r++)n=h[r],a.indexOf(n)===-1&&{}.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function Ml(t,a){if(t==null)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(a.indexOf(r)!==-1)continue;n[r]=t[r]}return n}function ys(){return ys=Object.assign?Object.assign.bind():function(t){for(var a=1;a<arguments.length;a++){var n=arguments[a];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},ys.apply(null,arguments)}function vt(t,a){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);a&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,r)}return n}function js(t){for(var a=1;a<arguments.length;a++){var n=arguments[a]!=null?arguments[a]:{};a%2?vt(Object(n),!0).forEach(function(r){Al(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):vt(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Al(t,a,n){return(a=Pl(a))in t?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,t}function Pl(t){var a=Ll(t,"string");return typeof a=="symbol"?a:a+""}function Ll(t,a){if(typeof t!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,a);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(a==="string"?String:Number)(t)}function sn(t){return t&&t.map((a,n)=>Qe.createElement(a.tag,js({key:n},a.attr),sn(a.child)))}function ms(t){return a=>Qe.createElement(El,ys({attr:js({},t.attr)},a),sn(t.child))}function El(t){var a=n=>{var{attr:r,size:o,title:h}=t,j=Dl(t,Cl),N=o||n.size||"1em",f;return n.className&&(f=n.className),t.className&&(f=(f?f+" ":"")+t.className),Qe.createElement("svg",ys({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,r,j,{className:f,style:js(js({color:t.color||n.color},n.style),t.style),height:N,width:N,xmlns:"http://www.w3.org/2000/svg"}),h&&Qe.createElement("title",null,h),t.children)};return jt!==void 0?Qe.createElement(jt.Consumer,null,n=>a(n)):a(en)}function Ol(t){return ms({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 Il(t){return ms({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 Nt(t){return ms({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 Rl(t){return ms({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 Ul(t){return ms({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 St(){return z.request("/api/auth/devices")}function Fl(t){return z.request("/api/auth/devices/current/primary",{method:"POST",body:JSON.stringify(t)})}function Bl(t){return z.request(`/api/auth/devices/${t}/logout`,{method:"POST"})}function tn({compact:t=!1}){const a=es(g=>{var B;return((B=g.session)==null?void 0:B.accessToken)??null}),[n,r]=i.useState(null),[o,h]=i.useState(!1),[j,N]=i.useState(!1),[f,y]=i.useState(!1),[u,T]=i.useState(null),[E,k]=i.useState(null),[O,v]=i.useState(null),[R,m]=i.useState(null),[S,b]=i.useState(null),[x,c]=i.useState(""),[C,L]=i.useState(null);i.useEffect(()=>{let g=!0;if(!j){h(!1);return}if(!a){r(null),h(!1),v(null),m(null);return}return(async()=>{h(!0);try{const I=await St();if(!g)return;r(I),m(null)}catch(I){if(!g)return;m(Rs(I))}finally{g&&h(!1)}})(),()=>{g=!1}},[a,j]);async function P(){const g=await St();r(g),m(null)}function M(){N(!0),y(!1),v(null),m(null)}function U(){u!=="primary"&&(N(!1),y(!1),b(null),c(""),L(null))}function Y(g){b(g),c(""),L(null)}async function ne(){if(S){T("primary"),L(null),m(null),v(null);try{await Fl({password:x,primary:S==="enable"}),await P(),v(S==="enable"?s("settings.authDevicePrimaryEnabled"):s("settings.authDevicePrimaryDisabled")),b(null),c("")}catch(g){const B=Rs(g);L(B),m(B)}finally{T(null)}}}async function W(g){if(g.deviceId){k(g.deviceId),m(null),v(null);try{const B=await Bl(g.deviceId);await P(),v(s("settings.authDeviceLogoutDeviceSuccess",{device:fs(g),count:String(B.revokedSessionCount)}))}catch(B){m(Rs(B))}finally{k(null)}}}const _=(n==null?void 0:n.currentDevice)??null,se=(n==null?void 0:n.otherActiveDevices.filter(g=>!g.isLegacy))??[],te=(n==null?void 0:n.otherActiveDevices.filter(g=>g.isLegacy))??[],le=(n==null?void 0:n.recentLoginRecords.filter(g=>!g.isLegacy))??[],J=(n==null?void 0:n.recentLoginRecords.filter(g=>g.isLegacy))??[],A=te.length+J.length,q=_!==null&&!_.isLegacy,w=(_==null?void 0:_.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:M,children:s("settings.authDeviceOpenManager")})})}),e.jsx(ss,{open:j,title:s("settings.authDeviceManagement"),description:s("settings.authDeviceManagementDescription"),className:"settings-device-browser-modal",onClose:U,children:e.jsxs(e.Fragment,{children:[O?e.jsx("p",{className:"settings-release-status",children:O}):null,R?e.jsx("p",{className:"settings-release-status",children:R}):null,o?e.jsx("div",{className:"settings-device-empty",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[A>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(A)})}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>y(g=>!g),children:f?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")})}),_?e.jsx(is,{current:!0,title:fs(_),clientType:_.clientType,browserName:_.browserName,browserVersion:_.browserVersion,osName:_.osName,osVersion:_.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:_.lastSeenAt,sourceAddress:_.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}),_.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:!q||u!==null,onClick:()=>Y(_.isPrimary?"disable":"enable"),children:_.isPrimary?s("settings.authDeviceDisablePrimary"):s("settings.authDeviceEnablePrimary")})}),note:q?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")})}),se.length>0?e.jsx("div",{className:"settings-device-list",children:se.map((g,B)=>e.jsx(is,{title:fs(g),clientType:g.clientType,browserName:g.browserName,browserVersion:g.browserVersion,osName:g.osName,osVersion:g.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:g.lastSeenAt,sourceAddress:g.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[g.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null,g.isLegacy?e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")}):null]}),actions:g.deviceId?e.jsx("button",{className:"settings-button settings-button-danger","data-variant":"device-danger",type:"button",disabled:!w||u!==null||E!==null,onClick:()=>{W(g)},children:E===g.deviceId?s("common.loading"):s("settings.authDeviceLogoutDevice")}):null},`${g.deviceId??"legacy"}-${g.lastSeenAt}-${B}`))}):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")})}),le.length>0?e.jsx("div",{className:"settings-device-list",children:le.map(g=>e.jsx(is,{title:Tt(g),clientType:g.clientType,browserName:g.browserName,browserVersion:g.browserVersion,osName:g.osName,osVersion:g.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:g.occurredAt,sourceAddress:g.sourceAddress,badges:g.isCurrentDevice?e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}):null},g.id))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceRecentEmpty")})]}),f&&te.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:te.map((g,B)=>e.jsx(is,{title:fs(g),clientType:g.clientType,browserName:g.browserName,browserVersion:g.browserVersion,osName:g.osName,osVersion:g.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:g.lastSeenAt,sourceAddress:g.lastSourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},`legacy-device-${g.lastSeenAt}-${B}`))})]}):null,f&&J.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:J.map(g=>e.jsx(is,{title:Tt(g),clientType:g.clientType,browserName:g.browserName,browserVersion:g.browserVersion,osName:g.osName,osVersion:g.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:g.occurredAt,sourceAddress:g.sourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},g.id))})]}):null]})]})}),e.jsx(ss,{open:S!==null,title:S==="enable"?s("settings.authDeviceEnablePrimaryModalTitle"):s("settings.authDeviceDisablePrimaryModalTitle"),description:S==="enable"?s("settings.authDeviceEnablePrimaryModalDescription"):s("settings.authDeviceDisablePrimaryModalDescription"),className:"settings-device-modal",onClose:()=>{u!=="primary"&&(b(null),c(""),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:x,onChange:g=>c(g.target.value)})]}),C?e.jsx("p",{className:"settings-release-status",children:C}):null,e.jsxs("div",{className:"settings-device-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:u==="primary",onClick:()=>{b(null),c(""),L(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",disabled:x.trim().length===0||u==="primary",onClick:()=>{ne()},children:u==="primary"?s("common.loading"):S==="enable"?s("settings.authDeviceEnablePrimary"):s("settings.authDeviceDisablePrimary")})]})]})})]})}function fs(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||nn(t.clientType)}function Tt(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||nn(t.clientType)}function _l(t){return e.jsxs("div",{className:"settings-device-identity",children:[e.jsx("span",{className:"settings-device-identity-icon","aria-hidden":"true",children:e.jsx(Kl,{kind:$l(t.clientType)})}),e.jsx("div",{className:"settings-device-identity-body",children:e.jsx("strong",{children:t.title})})]})}function is(t){const a=zl(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(_l,{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 nn(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 ql(t,a){return s(t,{value:new Date(a).toLocaleString()})}function Hl(t){return t?s("settings.authDeviceSourceAddressValue",{value:t}):s("settings.authDeviceSourceAddressUnknown")}function Wl(t,a){return t?s("settings.authDeviceBrowserValue",{value:an(t,a)}):null}function Vl(t,a){return t?s("settings.authDeviceOsValue",{value:an(t,a)}):null}function zl(t,a,n,r,o,h,j){return[Wl(t,a),Vl(n,r),ql(o,h),Hl(j)].filter(N=>!!N)}function $l(t){switch(t){case"desktop":return"desktop";case"web":return"web";case"ios":return"ios";case"android":return"android";default:return"unknown"}}function an(t,a){return a!=null&&a.trim()?`${t} ${a}`:t}function Kl({kind:t}){const a=Gl(t),n=a.icon;return e.jsx(n,{color:a.color})}function Gl(t){switch(t){case"desktop":return{icon:Ol,color:"#2563eb"};case"web":return{icon:Il,color:"#0f766e"};case"ios":return{icon:Rl,color:"#111827"};case"android":return{icon:Ul,color:"#3ddc84"};case"unknown":return{icon:Nt,color:"#64748b"};default:return{icon:Nt,color:"#64748b"}}}function Rs(t){return t instanceof We||t instanceof Error?t.message:s("settings.authDeviceLoadFailed")}async function Us(){const t=Pe.getState();return z.request(`/api/client/service-update?channel=${encodeURIComponent(t.releaseChannel)}`)}async function Jl(t){const a=Pe.getState();return z.request("/api/client/service-update/install",{method:"POST",body:JSON.stringify({packageName:t,channel:a.releaseChannel})})}async function Ql(t){return z.request(`/api/client/service-update/tasks/${encodeURIComponent(t)}`)}const Zl=1500,wt=2e3,Yl=2500;function ln(){const t=us(),[a,n]=i.useState(!1),[r,o]=i.useState(!1),[h,j]=i.useState(!1),[N,f]=i.useState(!1),[y,u]=i.useState(null),[T,E]=i.useState(null),[k,O]=i.useState(null),v=(T==null?void 0:T.packages[0])??null,R=h||!!((k==null?void 0:k.status)==="succeeded"&&k.restartScheduled);i.useEffect(()=>{if(!k||!Bs(k.status))return;let x=!1;const c=window.setTimeout(async()=>{var C;try{const L=await Ql(k.taskId);if(x)return;if(O(L),u(Js(L)),!Bs(L.status)){if(o(!1),L.status==="succeeded"&&L.restartScheduled){j(!0),t.bridge.showNotification(s("settings.serverRestarting"),s("settings.serverInstallWarning"));return}const P=await Us();if(x)return;E(P),O(((C=P.packages[0])==null?void 0:C.installTask)??L),u(Fs(P.packages[0]??null,L)),L.restartRequired&&await t.bridge.showNotification(s("settings.serverRestartRequired"),L.targetVersion??"-")}}catch(L){if(x)return;o(!1),u(L instanceof Error?L.message:s("settings.serverInstallFailed"))}},Zl);return()=>{x=!0,window.clearTimeout(c)}},[t.bridge,k]),i.useEffect(()=>{if(!h||!k||k.status!=="succeeded"||!k.restartScheduled)return;let x=!1,c=0;const C=async()=>{try{const L=await Us();if(x)return;const P=L.packages[0]??null;if(!ei(k,P)){c=window.setTimeout(C,wt);return}j(!1),E(L),O((P==null?void 0:P.installTask)??null),u(Fs(P,(P==null?void 0:P.installTask)??null))}catch{if(x)return;u(s("settings.serverRestarting")),c=window.setTimeout(C,wt)}};return u(s("settings.serverRestarting")),c=window.setTimeout(C,Math.max(k.restartDelayMs??0,Yl)),()=>{x=!0,window.clearTimeout(c)}},[h,k]);async function m(){n(!0),u(null);try{const x=await Us(),c=x.packages[0]??null;E(x),O((c==null?void 0:c.installTask)??null),u(Fs(c,(c==null?void 0:c.installTask)??null)),c!=null&&c.hasUpdate&&await t.bridge.showNotification(s("settings.serverUpdateReady"),`${s("settings.serverTargetVersion")}: ${c.latestVersion??"-"}`)}catch(x){u(x instanceof Error?x.message:s("settings.serverCheckFailed"))}finally{n(!1)}}async function S(){if(v!=null&&v.packageName){f(!1),j(!1),o(!0),u(null);try{const x=await Jl(v.packageName);O(x),u(Js(x))}catch(x){o(!1),u(x instanceof Error?x.message:s("settings.serverInstallFailed"))}}}const b=!!(v&&v.checkStatus!=="check_failed"&&v.hasUpdate&&!v.restartRequired&&!Bs(k==null?void 0:k.status)&&!R);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:(v==null?void 0:v.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:(v==null?void 0:v.latestVersion)??"-"})]})]}),v!=null&&v.hasUpdate&&!R?e.jsx("p",{className:"settings-update-note","data-tone":"warning",children:s("settings.serverInstallWarning")}):null,y?e.jsx("p",{className:"settings-update-status","data-tone":Xl(v,k,R),children:y}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:a||r||R,onClick:m,children:a?s("common.loading"):s("settings.serverCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!b||a||r||R,onClick:()=>f(!0),children:r?s("common.loading"):s("settings.serverInstallNow")})]})]}),e.jsx(si,{open:N,busy:r,mobile:t.isMobile,targetVersion:(v==null?void 0:v.latestVersion)??null,onClose:()=>f(!1),onConfirm:()=>{S()}})]})}function Fs(t,a){return a?Js(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 Js(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 Xl(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 Bs(t){return t==="queued"||t==="running"}function ei(t,a){return a?t.targetVersion?kt(a.currentVersion)===kt(t.targetVersion):!a.hasUpdate:!1}function kt(t){return(t??"").trim().replace(/^v/i,"")}function si({open:t,busy:a,mobile:n,targetVersion:r,onClose:o,onConfirm:h}){const j=e.jsxs(ce,{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:h,children:a?s("common.loading"):s("settings.serverInstallConfirmAction")})]}),N=e.jsxs(ee,{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:r??"-"})]})]});return n?e.jsx(Re,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),height:"auto",kind:"form",dismissible:!a,footer:j,onClose:o,children:N}):e.jsx(He,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),size:"compact",layout:"confirm",bodyClassName:"settings-update-confirm-body",dismissible:!a,footer:j,onClose:o,children:N})}async function ti(){return await z.request("/api/system/relay-tunnel/status")}async function _s(t){return await z.request("/api/system/relay-tunnel/config",{method:"PUT",body:JSON.stringify(t)})}async function ni(t){return await z.request("/api/system/relay-tunnel/control/login",{method:"POST",body:JSON.stringify(t)})}async function ai(){return await z.request("/api/system/relay-tunnel/control/logout",{method:"POST"})}async function li(t){const a=t.hostLabel.trim(),n=`/api/system/relay-tunnel/control/host-label-availability?hostLabel=${encodeURIComponent(a)}`;return await z.request(n)}async function ii(t){return await z.request("/api/system/relay-tunnel/control/bind",{method:"POST",body:JSON.stringify(t)})}async function ri(){return await z.request("/api/system/relay-tunnel/control/wallet")}async function Ct(){return await z.request("/api/system/relay-tunnel/enable",{method:"POST"})}async function ci(){return await z.request("/api/system/relay-tunnel/disable",{method:"POST"})}async function oi(){return await z.request("/api/system/relay-tunnel/unbind",{method:"POST"})}function di(){const t=gs(),{showToast:a}=Zs(),[n,r]=i.useState(null),[o,h]=i.useState(""),[j,N]=i.useState(()=>at()),[f,y]=i.useState(()=>Cn()),[u,T]=i.useState(""),[E,k]=i.useState(""),[O,v]=i.useState(null),[R,m]=i.useState({status:"idle"}),[S,b]=i.useState(!0),[x,c]=i.useState(null),[C,L]=i.useState(null),[P,M]=i.useState(null),[U,Y]=i.useState(null),[ne,W]=i.useState(null),_=i.useRef(!0),se=vs(n==null?void 0:n.controlBaseUrl),te=Dn(j),le=te??se,J=vs(te??(n==null?void 0:n.controlBaseUrl)),A=o.trim(),q=te!==null&&te!==se,w=(n==null?void 0:n.activated)??!1,g=u.trim().length>0&&E.trim().length>0,B=!!(n!=null&&n.controlAccountEmail),I=n!=null&&n.bindingId?!0:R.status==="available"&&R.hostLabel===A,de=!!(n!=null&&n.bindingId)||B&&A.length>0&&I,ue=Dt({controlBaseUrl:J,tunnelDomain:n==null?void 0:n.tunnelDomain,hostLabel:o}),G=!!(n!=null&&n.controlAccountEmail||n!=null&&n.bindingId),je=!!(n!=null&&n.bindingId||I),$=!!(n!=null&&n.enabled&&(n!=null&&n.bindingId)),V=!!(n!=null&&n.bindingId)||de,ke=O?rs(O.grantedBytes):s("settings.tailscaleUnavailable"),Se=rs(O?O.usedBytes:n==null?void 0:n.trafficUsedBytes),Le=rs(O?O.remainingBytes:n==null?void 0:n.trafficRemainingBytes),Te=Qs(Pe.getState()),me=Jn(),Ce=me?s(Qn(me.kind)):null,he=me?gi(me):null;i.useEffect(()=>(_.current=!0,Me(!1),()=>{_.current=!1}),[]),i.useEffect(()=>{if(!w)return;const l=window.setInterval(()=>{Me(!0)},5e3);return()=>{window.clearInterval(l)}},[w]),i.useEffect(()=>{!w||!B||De()},[w,B]),i.useEffect(()=>{n!=null&&n.bindingId||R.status!=="idle"&&R.hostLabel!==A&&m({status:"idle"})},[R,A,n==null?void 0:n.bindingId]),i.useEffect(()=>{N(se)},[se]);async function Me(l,F){l||b(!0);try{const X=await ti();if(!_.current)return;pe(X,F),L(null)}catch(X){_.current&&L(Vs(X,"status",Te))}finally{_.current&&!l&&b(!1)}}function pe(l,F){r(l),W(null),l.controlAccountEmail||v(null),l.tunnelDomain&&o.trim().length===0&&h(rn(l.tunnelDomain)),((F==null?void 0:F.syncProfile)??!0)&&$e(l)}async function De(){try{const l=await ri();if(!_.current)return;v(l.wallet)}catch(l){_.current&&W(_e(l))}}async function Ze(){if(g){c("login-control"),W(null);try{const l=await ni({email:u.trim(),password:E});Y(null),pe(l),await De()}catch(l){Y(Vs(l,"login",Te))}finally{c(null)}}}async function Ue(){c("logout-control"),W(null);try{const l=await ai();pe(l),v(null),m({status:"idle"})}catch(l){W(_e(l))}finally{c(null)}}async function Ye(){if(!A)throw new Error(s("settings.relayTunnelHostLabelRequired"));if(R.status==="available"&&R.hostLabel===A)return{hostLabel:R.hostLabel,tunnelDomain:R.tunnelDomain,available:!0,reason:"available"};m({status:"checking",hostLabel:A});const l=await li({hostLabel:A});if(!l.available||!l.tunnelDomain){const F=mi(l);throw m({status:"error",hostLabel:A,message:F}),new Error(F)}return m({status:"available",hostLabel:A,tunnelDomain:l.tunnelDomain}),l}async function Ee(){if(!(!G||n!=null&&n.bindingId)){c("check-host-label"),W(null);try{await Ye()}catch{}finally{c(null)}}}async function xe(){c("learn-service"),W(null);try{await zs(t.bridge.openExternal,J)}catch(l){W(_e(l))}finally{c(null)}}async function K(){c("manage-account"),W(null);try{await zs(t.bridge.openExternal,J)}catch(l){W(_e(l))}finally{c(null)}}async function Oe(){if(ue)try{await pi(ue,t),a({title:s("settings.relayTunnelAccessUrlCopied"),tone:"success"})}catch(l){a({title:l instanceof Error?l.message:s("settings.relayTunnelCopyAccessUrlFailed"),tone:"error"})}}async function Fe(){if(ue)try{await zs(t.bridge.openExternal,ue)}catch(l){a({title:l instanceof Error?l.message:s("settings.relayTunnelOpenAccessUrlFailed"),tone:"error"})}}async function ve(){if(de){c("enable"),W(null);try{let l=n;if(l!=null&&l.activated||(l=await _s({activated:!0,controlBaseUrl:le}),pe(l)),l!=null&&l.bindingId||(await Ye(),l=await ii({hostLabel:A}),pe(l),await De()),!(l!=null&&l.enabled)){const F=await Ct();pe(F)}}catch(l){W(_e(l))}finally{c(null)}}}async function Ve(){if(n!=null&&n.bindingId){c("reconnect"),W(null);try{n!=null&&n.enabled&&await ci();const l=await Ct();pe(l),l.controlAccountEmail&&await De()}catch(l){const F=_e(l);await Me(!0,{syncProfile:!1}),W(F)}finally{c(null)}}}async function ze(){c("disconnect-device"),W(null);try{if(n!=null&&n.bindingId||n!=null&&n.accountId){const l=await oi();pe(l)}if(n!=null&&n.activated){const l=await _s({activated:!1});pe(l)}v(null),T(""),h(""),k(""),m({status:"idle"})}catch(l){W(_e(l))}finally{c(null)}}async function ye(){if(!te){M(s("settings.serverInvalid"));return}c("save-config"),M(null);try{const l=await _s({controlBaseUrl:te});M(null),pe(l)}catch(l){M(Vs(l,"config",Te))}finally{c(null)}}return e.jsxs("div",{className:"settings-relay-tunnel-panel",children:[S&&!n?e.jsx(ee,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),children:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")})}):null,!S&&!$?e.jsxs(ee,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),actions:e.jsx("button",{className:"secondary-button",disabled:x!==null,type:"button",onClick:()=>void xe(),children:s("settings.relayTunnelLearnService")}),children:[C?e.jsx(qs,{title:s("settings.relayTunnelStatusErrorTitle"),message:C,action:e.jsx("button",{className:"secondary-button",disabled:S||x!==null,type:"button",onClick:()=>void Me(!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":Hs(G,!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(ae,{className:"settings-relay-tunnel-step-tag",children:s(Ws(G,!0))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:G?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(ce,{align:"start",children:e.jsx("button",{className:"secondary-button",disabled:x!==null,type:"button",onClick:()=>{if(n!=null&&n.bindingId){ze();return}Ue()},children:s("common.logout")})})]}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"settings-relay-tunnel-form",children:[e.jsx(Z,{label:s("settings.relayTunnelAccountEmail"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountEmail"),className:"settings-text-input",type:"email",value:u,onChange:l=>{T(l.target.value),Y(null)},placeholder:s("settings.relayTunnelAccountEmailPlaceholder")})}),e.jsx(Z,{label:s("settings.relayTunnelAccountPassword"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountPassword"),className:"settings-text-input",type:"password",value:E,onChange:l=>{k(l.target.value),Y(null)},placeholder:s("settings.relayTunnelAccountPasswordPlaceholder")})}),U?e.jsx(qs,{title:s("settings.relayTunnelLoginErrorTitle"),message:U}):null,e.jsxs(ce,{align:"start",children:[e.jsx("button",{className:"settings-button",disabled:x!==null||!g,type:"button",onClick:()=>void Ze(),children:x==="login-control"?s("common.loading"):s("settings.relayTunnelLoginAccount")}),e.jsx("button",{className:"secondary-button",disabled:x!==null,type:"button",onClick:()=>{y(l=>!l),M(null)},children:f?s("settings.relayTunnelAdvancedSettingsHide"):s("settings.relayTunnelAdvancedSettings")})]}),f?e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[e.jsx(Z,{label:s("settings.relayTunnelControlBaseUrl"),description:s("settings.relayTunnelServerAddressHint"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelControlBaseUrl"),className:"settings-text-input",type:"url",value:j,onChange:l=>{N(l.target.value),M(null)},placeholder:at()})}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelAdvancedSettingsDescription")}),P?e.jsx(qs,{title:s("settings.relayTunnelConfigErrorTitle"),message:P}):null,e.jsx(ce,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:S||x!==null||!q,type:"button",onClick:()=>void ye(),children:x==="save-config"?s("common.loading"):s("common.save")})})]}):null]})})})]}),e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":Hs(je,G),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(ae,{className:"settings-relay-tunnel-step-tag",children:s(Ws(je,G))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:G?n!=null&&n.bindingId?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:ue??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:l=>h(l.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:x!==null||A.length===0,type:"button",onClick:()=>void Ee(),children:x==="check-host-label"?s("common.loading"):s("settings.relayTunnelHostLabelCheck")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[R.status==="available"&&R.hostLabel===A?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:Dt({controlBaseUrl:le,tunnelDomain:R.tunnelDomain,hostLabel:R.hostLabel})??R.tunnelDomain})}):null,R.status==="checking"&&R.hostLabel===A?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelHostLabelChecking")}):null,R.status==="error"&&R.hostLabel===A?e.jsx("p",{className:"settings-relay-tunnel-error",children:R.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":Hs($,je),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(ae,{className:"settings-relay-tunnel-step-tag",children:s(Ws($,je))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:je?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:w?s("settings.relayTunnelStepStartReady"):s("settings.relayTunnelActivationHint")}),e.jsx(ce,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:x!==null||!V,type:"button",onClick:()=>void ve(),children:x==="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:[me&&Ce&&he?e.jsx(ui,{hint:he,label:Ce,url:me.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,ne?e.jsx("p",{className:"settings-relay-tunnel-error",children:ne}):null]})]}):null,!S&&$?e.jsxs(ee,{heading:s("settings.relayTunnelReadyTitle"),description:s("settings.relayTunnelReadyDescription"),children:[e.jsxs(fe,{compact:!0,children:[me&&Ce?e.jsxs(e.Fragment,{children:[e.jsx(qe,{label:s("settings.relayTunnelClientRouteLabel"),value:Ce}),e.jsx(qe,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:me.url})]}):null,e.jsx(qe,{className:"settings-relay-tunnel-summary-line-access-url",label:s("settings.relayTunnelAccessUrlLabel"),trailing:ue?e.jsxs("div",{className:"settings-relay-tunnel-access-url",children:[e.jsx("span",{className:"settings-relay-tunnel-access-url-text",title:ue,children:ue}),e.jsxs("span",{className:"settings-relay-tunnel-access-url-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void Oe(),children:s("settings.relayTunnelCopyAccessUrl")}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void Fe(),children:s("settings.relayTunnelOpenAccessUrl")})]})]}):e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:s("settings.relayTunnelUnbound")})}),e.jsx(qe,{label:s("settings.relayTunnelTrafficGranted"),value:ke}),e.jsx(qe,{label:s("settings.relayTunnelTrafficUsed"),value:Se}),e.jsx(qe,{label:s("settings.relayTunnelTrafficRemaining"),value:Le})]}),e.jsxs(ce,{align:"start",className:"settings-relay-tunnel-ready-actions",children:[e.jsx("button",{className:"secondary-button",disabled:x!==null||!(n!=null&&n.bindingId),type:"button",onClick:()=>void Ve(),children:x==="reconnect"?s("common.loading"):s("settings.relayTunnelReconnectAction")}),e.jsx("button",{className:"secondary-button",disabled:x!==null,type:"button",onClick:()=>void K(),children:x==="manage-account"?s("common.loading"):s("settings.relayTunnelManageAccountAction")}),e.jsx("button",{className:"settings-button settings-button-danger",disabled:x!==null,type:"button",onClick:()=>void ze(),children:x==="disconnect-device"?s("common.loading"):s("settings.relayTunnelDisconnectDeviceAction")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[me&&Ce&&he?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:he}):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,ne?e.jsx("p",{className:"settings-relay-tunnel-error",children:ne}):null]})]}):null]});function $e(l){const F=Pe.getState(),X=Mn(F);if(!X)return;const Be=Ae(l);bi(X.relayTunnel??null,Be)||Pe.update({hosts:F.hosts.map(ts=>ts.id===X.id?{...ts,relayTunnel:Be,updatedAt:new Date().toISOString()}:ts)})}function Ae(l){return!(l!=null&&l.bindingId)||!l.tunnelDomain?null:{provider:"codingns_relay",enabled:l.enabled,tunnelDomain:l.tunnelDomain.trim().toLowerCase(),controlBaseUrl:vs(l.controlBaseUrl),bindingId:l.bindingId,hostFingerprint:l.hostFingerprint,candidateEndpoints:l.candidateEndpoints}}}function ui({label:t,url:a,hint:n}){return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{compact:!0,children:[e.jsx(qe,{label:s("settings.relayTunnelClientRouteLabel"),value:t}),e.jsx(qe,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:a})]}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:n})]})}function qe({label:t,value:a,trailing:n,className:r}){return e.jsx(ge,{className:r,label:t,trailing:n??e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:a})})}function gi(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 qs({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 Hs(t,a){return t?"done":a?"current":"pending"}function Ws(t,a){return t?"settings.relayTunnelStepDone":a?"settings.relayTunnelStepCurrent":"settings.relayTunnelStepPending"}function mi(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 _e(t){return t instanceof We||t instanceof Error?t.message:s("settings.relayTunnelLoadFailed")}function Vs(t,a,n){if(t instanceof We&&t.errorCode==="NETWORK_ERROR"){const r=(n==null?void 0:n.trim())||s("common.unknown");return a==="login"?s("settings.relayTunnelLoginNetworkError",{address:r}):a==="config"?s("settings.relayTunnelConfigNetworkError",{address:r}):s("settings.relayTunnelStatusNetworkError",{address:r})}return _e(t)}function rs(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 rn(t){return t?t.split(".")[0]||s("common.unknown"):s("common.unknown")}function Dt(t){var r,o,h,j;const a=Mt(t.hostLabel)??Mt(rn(t.tunnelDomain));if(!a)return((r=t.tunnelDomain)==null?void 0:r.trim())??null;const n=(o=t.controlBaseUrl)==null?void 0:o.trim();if(!n)return((h=t.tunnelDomain)==null?void 0:h.trim())??null;try{const N=new URL(n);return N.hostname=`${a}.${N.hostname}`,N.pathname="/",N.search="",N.hash="",N.origin}catch{return((j=t.tunnelDomain)==null?void 0:j.trim())??null}}function Mt(t){const a=(t==null?void 0:t.trim().toLowerCase())??"";return!a||a===s("common.unknown").toLowerCase()?null:a}async function zs(t,a){!(await t(a)).ok&&typeof window<"u"&&window.open(a,"_blank","noopener,noreferrer")}function hi(t){var r;if(typeof document>"u")return!1;const a=(r=document.execCommand)==null?void 0:r.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 pi(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(!hi(t))throw new Error(s("settings.relayTunnelCopyAccessUrlFailed"))}function bi(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 At(){return await z.request("/api/system/tailscale/status")}async function Pt(t){return await z.request("/api/system/tailscale/config",{method:"PUT",body:JSON.stringify(t)})}async function fi(){return await z.request("/api/system/tailscale/enable",{method:"POST"})}async function xi(){return await z.request("/api/system/tailscale/disable",{method:"POST"})}async function yi(){return await z.request("/api/system/tailscale/login",{method:"POST"})}async function ji(){return await z.request("/api/system/tailscale/logout",{method:"POST"})}function vi({children:t}){return e.jsx("div",{className:"settings-remote-access-metrics",children:t})}function xs({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 Ni({checked:t,label:a,disabled:n,onChange:r}){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(),r(!t))},children:[e.jsx("input",{type:"checkbox","aria-label":a,checked:t,disabled:n,onChange:o=>r(o.target.checked)}),e.jsx("span",{className:"settings-mobile-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-mobile-switch-thumb"})})]})]})}function Si({configMode:t="modal"}){const a=gs(),[n,r]=i.useState(null),[o,h]=i.useState(""),[j,N]=i.useState(""),[f,y]=i.useState(!0),[u,T]=i.useState(null),[E,k]=i.useState(null),[O,v]=i.useState(!1),[R,m]=i.useState(!1),S=i.useRef(!0),b=i.useRef(!1),x=i.useRef(async()=>{}),c=t==="inline",C=(n==null?void 0:n.activated)??!1;b.current=R;function L(A){if(r(A),h(A.controlServerUrl??""),N(A.hostname??""),k(null),!A.activated){m(!1),v(!1);return}b.current&&!Ot(A.lastError)&&m(!1)}x.current=async A=>{A||y(!0);try{const q=await At();if(!S.current)return;L(q)}catch(q){if(!S.current)return;k(cs(q))}finally{S.current&&!A&&y(!1)}},i.useEffect(()=>(S.current=!0,x.current(!1),()=>{S.current=!1}),[]),i.useEffect(()=>{if(!C)return;const A=window.setInterval(()=>{x.current(!0)},5e3);return()=>{window.clearInterval(A)}},[C]),i.useEffect(()=>{if(!R||!C)return;function A(){x.current(!0)}function q(){document.visibilityState==="visible"&&x.current(!0)}return window.addEventListener("focus",A),document.addEventListener("visibilitychange",q),()=>{window.removeEventListener("focus",A),document.removeEventListener("visibilitychange",q)}},[C,R]);const P=((n==null?void 0:n.controlServerUrl)??"")!==o.trim()||((n==null?void 0:n.hostname)??"")!==j.trim(),M=C&&Ot(n==null?void 0:n.lastError),U=C&&ki(a.ui.osFamily)&&M;async function Y(){const A=await Pt({controlServerUrl:Et(o),hostname:Et(j)});return L(A),A}async function ne(A){T("toggle-activation"),k(null);try{const q=await Pt({activated:A});L(q)}catch(q){k(cs(q))}finally{T(null),y(!1)}}async function W(A){T(A),k(null);try{P&&A!=="disable"&&A!=="logout"&&await Y();const q=A==="enable"?await fi():A==="disable"?await xi():A==="login"?await yi():await ji();L(q)}catch(q){k(cs(q))}finally{T(null)}}async function _(){T("save"),k(null);try{await Y(),v(!1)}catch(A){k(cs(A))}finally{T(null)}}async function se(){T("refresh"),k(null);try{const A=await At();L(A)}catch(A){k(cs(A))}finally{T(null),y(!1)}}async function te(){const A=Ci(a.ui.osFamily);if(A){T("install"),k(null);try{const q=await a.bridge.openExternal(A);if(!q.ok){k(q.detail??s("settings.tailscaleInstallOpenFailed"));return}m(!0)}catch(q){k(q instanceof Error?q.message:s("settings.tailscaleInstallOpenFailed"))}finally{T(null)}}}function le(){u!=="save"&&v(!1)}const J=C?e.jsxs("span",{className:"settings-tailscale-status-indicator","data-tone":Di((n==null?void 0:n.phase)??"disabled"),children:[e.jsx("span",{className:"settings-tailscale-status-dot","aria-hidden":"true"}),wi((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(ee,{heading:s("settings.tailscaleSectionTitle"),description:s("settings.tailscaleSectionDescription"),actions:e.jsx(Ni,{checked:C,label:s("settings.tailscaleMasterSwitchLabel"),disabled:u!==null,onChange:A=>{ne(A)}}),children:f&&!n?e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[e.jsxs(vi,{children:[e.jsx(xs,{label:s("settings.tailscaleStatusIndicator"),value:J}),e.jsx(xs,{label:s("settings.tailscaleServerAddress"),value:C?(n==null?void 0:n.reachableBaseUrl)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(xs,{label:s("settings.tailscaleAccountName"),value:C?(n==null?void 0:n.accountName)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(xs,{label:s("settings.tailscaleIpAddress"),value:C?Ti(n):s("settings.tailscaleUnavailable")})]}),C?null:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("settings.tailscaleActivationHint")}),C&&(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,E||n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:E??(n==null?void 0:n.lastError)}):null,C?e.jsxs(ce,{align:"start",children:[U?e.jsx("button",{className:"settings-button",type:"button",disabled:f||u!==null,onClick:()=>{te()},children:u==="install"?s("common.loading"):s("settings.tailscaleInstallAction")}):null,c?null:e.jsx("button",{className:"secondary-button",type:"button",disabled:f||u!==null,onClick:()=>v(!0),children:s("settings.tailscaleConfigure")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:f||u!==null,onClick:()=>{se()},children:u==="refresh"?s("common.loading"):s("settings.tailscaleRefresh")}),n!=null&&n.enabled?e.jsx("button",{className:"secondary-button",type:"button",disabled:f||u!==null||M,onClick:()=>{W("disable")},children:u==="disable"?s("common.loading"):s("settings.tailscaleDisable")}):e.jsx("button",{className:"secondary-button",type:"button",disabled:f||u!==null||M,onClick:()=>{W("enable")},children:u==="enable"?s("common.loading"):s("settings.tailscaleEnable")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:f||u!==null||!(n!=null&&n.enabled)||M,onClick:()=>{W("login")},children:u==="login"?s("common.loading"):s("settings.tailscaleLogin")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:f||u!==null||!(n!=null&&n.enabled)||M,onClick:()=>{W("logout")},children:u==="logout"?s("common.loading"):s("settings.tailscaleLogout")})]}):null]})}),c&&C?e.jsx(ee,{heading:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),children:e.jsx(Lt,{controlServerUrlDraft:o,hostnameDraft:j,pendingAction:u,configDirty:P,onControlServerUrlChange:h,onHostnameChange:N,onSave:()=>{_()}})}):null]}),e.jsx(ss,{open:!c&&C&&O,title:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),size:"regular",onClose:le,children:e.jsx(Lt,{controlServerUrlDraft:o,hostnameDraft:j,pendingAction:u,configDirty:P,footer:e.jsx("div",{className:"settings-tailscale-modal-actions",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:u==="save",onClick:le,children:s("common.cancel")})}),onControlServerUrlChange:h,onHostnameChange:N,onSave:()=>{_()}})})]})}function Lt({controlServerUrlDraft:t,hostnameDraft:a,pendingAction:n,configDirty:r,footer:o,onControlServerUrlChange:h,onHostnameChange:j,onSave:N}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-form",children:[e.jsx(Z,{label:s("settings.tailscaleControlServer"),children:e.jsx("input",{"aria-label":s("settings.tailscaleControlServer"),className:"settings-text-input",placeholder:s("settings.tailscaleControlServerPlaceholder"),value:t,onChange:f=>h(f.target.value)})}),e.jsx(Z,{label:s("settings.tailscaleHostname"),children:e.jsx("input",{"aria-label":s("settings.tailscaleHostname"),className:"settings-text-input",placeholder:s("settings.tailscaleHostnamePlaceholder"),value:a,onChange:f=>j(f.target.value)})})]}),e.jsxs(ce,{align:"start",className:"settings-tailscale-config-actions",children:[o,e.jsx("button",{className:"settings-button",type:"button",disabled:n!==null||!r,onClick:N,children:n==="save"?s("common.loading"):s("common.save")})]})]})}function Et(t){const a=t.trim();return a.length>0?a:null}function cs(t){return t instanceof We||t instanceof Error?t.message:s("settings.tailscaleLoadFailed")}function Ti(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 wi(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 Ot(t){return t?t.includes("Tailscale CLI"):!1}function ki(t){return t==="macos"||t==="windows"}function Ci(t){switch(t){case"macos":return"https://tailscale.com/download/mac";case"windows":return"https://tailscale.com/download/windows";default:return null}}function Di(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 cn({open:t,mobile:a,onClose:n}){const[r,o]=i.useState("tunnel"),h=i.useId(),j=[{id:"tunnel",label:s("settings.remoteAccessTunnelTab")},{id:"tailscale",label:s("settings.remoteAccessTailscaleTab")}],N=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.remoteAccessTabsLabel"),children:j.map(f=>{const y=`${h}-${f.id}-tab`,u=`${h}-${f.id}-panel`,T=r===f.id;return e.jsx("button",{id:y,type:"button",role:"tab",className:"settings-model-tab","data-active":T?"true":void 0,"aria-selected":T,"aria-controls":u,onClick:()=>o(f.id),children:f.label},f.id)})}),r==="tunnel"?e.jsx("div",{id:`${h}-tunnel-panel`,"aria-labelledby":`${h}-tunnel-tab`,role:"tabpanel",children:e.jsx(di,{})}):e.jsx("div",{id:`${h}-tailscale-panel`,"aria-labelledby":`${h}-tailscale-tab`,role:"tabpanel",children:e.jsx(Si,{configMode:"inline"})})]});return a?e.jsx(Re,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:n,children:N}):e.jsx(ss,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),size:"wide",onClose:n,children:N})}function on({open:t,mobile:a,workspaceId:n,onClose:r}){var A,q;const o=Ys(),{showToast:h}=Zs(),[j,N]=i.useState([]),[f,y]=i.useState(""),[u,T]=i.useState(null),[E,k]=i.useState([]),[O,v]=i.useState([]),[R,m]=i.useState(!1),[S,b]=i.useState(!1),[x,c]=i.useState(!1),[C,L]=i.useState(!1),[P,M]=i.useState(null);async function U(w){m(!0);try{const B=(await da()).items;N(B);const I=Mi(w??f,B);return y(I),I}catch(g){return h({title:g instanceof Error?g.message:s("plugins.listLoadFailed"),tone:"error"}),""}finally{m(!1)}}async function Y(w){if(!w){T(null),k([]);return}b(!0);try{const[g,B]=await Promise.all([ua(w),ga(w)]);T(g),k(B.items)}catch(g){h({title:g instanceof Error?g.message:s("plugins.detailLoadFailed"),tone:"error"}),T(null),k([])}finally{b(!1)}}async function ne(w){const g=(n==null?void 0:n.trim())??"";if(!w||!g){v([]);return}c(!0);try{const B=await ma(w,g);v(B.items)}catch(B){h({title:B instanceof Error?B.message:s("plugins.permissionGrantLoadFailed"),tone:"error"}),v([])}finally{c(!1)}}i.useEffect(()=>{t&&U()},[t]),i.useEffect(()=>{t&&(Y(f),ne(f))},[t,f]);const W=i.useMemo(()=>(u==null?void 0:u.manifest.permissions.desktop)??[],[u]),_=!!(u!=null&&u.frontend&&(n!=null&&n.trim()));async function se(){if(!(!u||C)){L(!0);try{u.enablement.enabled?await pa(u.definition.id,s("plugins.disabledByUserReason")):await ba(u.definition.id);const w=await U(u.definition.id);await Y(w||u.definition.id),h({title:u.enablement.enabled?s("plugins.disableSuccess"):s("plugins.enableSuccess"),tone:"success"})}catch(w){h({title:w instanceof Error?w.message:s("plugins.saveFailed"),tone:"error"})}finally{L(!1)}}}async function te(w){const g=(n==null?void 0:n.trim())??"";if(!(!u||!g||P)){M(w.id);try{await ha(u.definition.id,w.id,g),await Promise.all([Y(u.definition.id),ne(u.definition.id)]),h({title:s("plugins.revokeGrantSuccess"),tone:"success"})}catch(B){h({title:B instanceof Error?B.message:s("plugins.revokeGrantFailed"),tone:"error"})}finally{M(null)}}}function le(){const w=(n==null?void 0:n.trim())??"";!(u!=null&&u.frontend)||!w||(o(oa(w,u.definition.id)),r())}const J=e.jsxs("div",{className:"settings-plugin-manager-layout",children:[e.jsx(ee,{heading:s("settings.pluginManagementModalListTitle"),description:s("settings.pluginManagementModalListDescription"),className:"settings-plugin-modal-section",children:R?e.jsx("p",{className:"plugins-hint-text",children:s("plugins.loading")}):j.length===0?e.jsx(re,{title:s("plugins.emptyTitle"),description:s("plugins.emptyDescription"),compact:!0}):e.jsx(fe,{className:"settings-plugin-modal-list",children:j.map(w=>e.jsx(ge,{as:"button",selected:f===w.id,label:w.name,description:`${w.id} · v${w.version}`,trailing:e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(ae,{tone:w.enabled?"success":"default",children:w.enabled?s("plugins.enabled"):s("plugins.disabled")}),w.hasFrontend?e.jsx(ae,{children:s("plugins.frontendTag")}):null,w.hasBackend?e.jsx(ae,{children:s("plugins.backendTag")}):null]}),onClick:()=>y(w.id)},w.id))})}),e.jsx(ee,{heading:s("settings.pluginManagementModalDetailTitle"),description:s("settings.pluginManagementModalDetailDescription"),className:"settings-plugin-modal-section settings-plugin-modal-detail-section",children:!f&&!R?e.jsx(re,{title:s("settings.pluginManagementSelectPluginTitle"),description:s("settings.pluginManagementSelectPluginDescription"),compact:!0}):S?e.jsx("p",{className:"plugins-hint-text",children:s("plugins.loading")}):u?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:u.manifest.name}),e.jsx("p",{children:u.manifest.description??u.definition.id})]}),e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(ae,{tone:u.enablement.enabled?"success":"default",children:u.enablement.enabled?s("plugins.enabled"):s("plugins.disabled")}),e.jsx(ae,{children:`v${u.manifest.version}`})]})]}),e.jsx(ee,{heading:s("plugins.summaryTitle"),description:s("plugins.summaryDescription"),children:e.jsxs(fe,{compact:!0,children:[e.jsx(ge,{label:s("plugins.pluginIdLabel"),description:u.definition.id}),e.jsx(ge,{label:s("plugins.installRootLabel"),description:u.definition.installRoot}),e.jsx(ge,{label:s("plugins.runtimeLabel"),description:u.manifest.backend?`${s("plugins.backendTag")} · ${u.manifest.backend.mode??"on_demand"}`:s("plugins.frontendOnly")})]})}),e.jsx(ee,{heading:s("plugins.permissionTitle"),description:s("plugins.permissionDescription"),children:e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(ae,{tone:u.manifest.permissions.workspaceRead?"success":"default",children:u.manifest.permissions.workspaceRead?s("plugins.workspaceReadAllowed"):s("plugins.workspaceReadDenied")}),e.jsx(ae,{tone:u.manifest.permissions.network?"warning":"default",children:u.manifest.permissions.network?s("plugins.networkAllowed"):s("plugins.networkDenied")}),W.length>0?W.map(w=>e.jsx(ae,{children:w},w)):e.jsx(ae,{children:s("plugins.noDesktopPermission")})]})}),e.jsx(fa,{grants:O,auditEvents:u.auditEvents,loading:x,revokingGrantId:P,onRevokeGrant:w=>{te(w)}}),(q=(A=u.manifest.backend)==null?void 0:A.actions)!=null&&q.length?e.jsx(ee,{heading:s("plugins.actionTitle"),description:s("plugins.actionDescription"),children:e.jsx(fe,{compact:!0,children:u.manifest.backend.actions.map(w=>e.jsx(ge,{label:w.title,description:`${w.id} · ${w.timeoutMs??3e4}ms`},w.id))})}):null,e.jsx(ee,{heading:s("plugins.runHistoryTitle"),description:s("plugins.runHistoryDescription"),children:E.length===0?e.jsx(re,{title:s("plugins.runHistoryEmptyTitle"),description:s("plugins.runHistoryEmptyDescription"),compact:!0}):e.jsx(fe,{compact:!0,children:E.slice(0,10).map(w=>e.jsx(ge,{label:w.actionId??s("plugins.unknownAction"),description:`${w.status} · ${w.createdAt}`,trailing:w.errorCode?e.jsx(ae,{tone:"danger",children:w.errorCode}):null},w.id))})}),_?null:e.jsx("p",{className:"settings-plugin-modal-workspace-note",children:s("settings.pluginManagementWorkspaceRequired")}),e.jsxs(ce,{align:"between",stack:!0,children:[e.jsx("button",{type:"button",className:"secondary-button",onClick:r,children:s("common.close")}),e.jsxs("div",{className:"settings-plugin-modal-actions",children:[u.frontend?e.jsx("button",{type:"button",className:"secondary-button",disabled:!_,onClick:le,children:s("plugins.openPlugin")}):null,e.jsx("button",{type:"button",className:u.enablement.enabled?"secondary-button":"primary-button",disabled:C,onClick:()=>{se()},children:u.enablement.enabled?s("plugins.disableAction"):s("plugins.enableAction")})]})]})]}):e.jsx(re,{title:s("plugins.detailMissingTitle"),description:s("plugins.detailMissingDescription"),compact:!0})})]});return a?e.jsx(Re,{open:t,title:s("settings.pluginManagementModalTitle"),description:s("settings.pluginManagementModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:r,children:J}):e.jsx(He,{open:t,title:s("settings.pluginManagementModalTitle"),description:s("settings.pluginManagementModalDescription"),size:"xwide",layout:"list",bodyClassName:"settings-plugin-modal-body",onClose:r,children:J})}function Mi(t,a){var n;return t&&a.some(r=>r.id===t)?t:((n=a[0])==null?void 0:n.id)??""}const dn="secret://teable/main",Ai=["manual","scheduled","event_driven"],un=["sessions","todos","tags"];function gn({open:t,mobile:a,workspaceOptions:n=[],onClose:r}){var nt;const{showToast:o}=Zs(),[h,j]=i.useState("connection"),[N,f]=i.useState(null),[y,u]=i.useState(null),[T,E]=i.useState([]),[k,O]=i.useState({tags:[],sessions:[],todos:[]}),[v,R]=i.useState([]),[m,S]=i.useState({}),[b,x]=i.useState([]),[c,C]=i.useState([]),[L,P]=i.useState(!1),[M,U]=i.useState(!1),[Y,ne]=i.useState(!1),[W,_]=i.useState(!1),[se,te]=i.useState(!1),[le,J]=i.useState(null),[A,q]=i.useState(null),[w,g]=i.useState(It(null)),[B,I]=i.useState($s([])),[de,ue]=i.useState({tags:Ks("tags"),sessions:Ks("sessions"),todos:Ks("todos")}),[G,je]=i.useState("sessions"),$=i.useRef(null),[V,ke]=i.useState([]),[Se,Le]=i.useState(null),[Te,me]=i.useState(""),[Ce,he]=i.useState(!1),[Me,pe]=i.useState([]),[De,Ze]=i.useState(!1),Ue=i.useMemo(()=>{const d=new Set,p=[];return n.forEach(D=>{const Q=D.id.trim();!Q||d.has(Q)||(d.add(Q),p.push({id:Q,name:D.name.trim()||Q}))}),p},[n]),Ye=i.useMemo(()=>[{id:"connection",label:s("settings.teableTabConnectionSettings")},{id:"tableSync",label:s("settings.teableTabTableSyncSettings")},{id:"syncLogs",label:s("settings.teableTabSyncLogs")}],[]),Ee=i.useMemo(()=>Ei(T,B),[T,B]),xe=i.useMemo(()=>{const d=new Set(V);return Ee.filter(p=>d.has(p.tableId))},[V,Ee]),K=i.useMemo(()=>xe.find(d=>d.tableId===Se)??xe[0]??null,[xe,Se]),Oe=de[G],Fe=B.find(d=>d.sourceType===G)??$s([]).find(d=>d.sourceType===G),ve=k[G]??[],Ve=K?m[K.tableId]??[]:[],ze=(K==null?void 0:K.tableName)??"",ye=i.useMemo(()=>Ee.filter(d=>!V.includes(d.tableId)),[V,Ee]),$e=i.useMemo(()=>b.map(d=>({key:d.id,tag:d})),[b]);i.useEffect(()=>{t&&(j("connection"),q(null),J(null),Ae())},[t]),i.useEffect(()=>{g(It(N))},[N]),i.useEffect(()=>{I($s((y==null?void 0:y.syncConfigs)??[]))},[y==null?void 0:y.syncConfigs]),i.useEffect(()=>{ue(Li((y==null?void 0:y.syncConfigs)??[],v))},[y==null?void 0:y.syncConfigs,v]),i.useEffect(()=>{const d=B.map(p=>p.targetTableId.trim()).filter(Boolean);ke(p=>{const D=Array.from(new Set([...p,...d]));return Oi(p,D)?p:D})},[B]),i.useEffect(()=>{var d;t&&(Se&&xe.some(p=>p.tableId===Se)||Le(((d=xe[0])==null?void 0:d.tableId)??null))},[xe,t,Se]),i.useEffect(()=>{var d;Te&&ye.some(p=>p.tableId===Te)||me(((d=ye[0])==null?void 0:d.tableId)??"")},[ye,Te]),i.useEffect(()=>{const d=(K==null?void 0:K.tableId.trim())??"";!t||!d||m[d]||l(d)},[t,K,m]),i.useEffect(()=>{!K||$.current===K.tableId||($.current=K.tableId,K.assignedSourceType&&je(K.assignedSourceType))},[K]);async function Ae(){P(!0);try{const[d,p,D,Q,H,ie]=await Promise.all([Zn(),Yn(),rt(),Xn(),ea(),sa({includeDisabled:!0}).catch(()=>({items:[],summary:{totalActiveTags:0,totalDisabledTags:0,totalRuleEnabledTags:0,totalBoundDocuments:0},status:{recomputeState:"idle",lastRecomputedAt:null,lastError:null}}))]);f(d),u(p),E(D),R(Q.mappings),C(H),O(Q.sourceFieldsByType),x(ie.items.filter(be=>be.parentId===null)),q(null)}catch(d){q(Je(d))}finally{P(!1)}}async function l(d){try{const p=await ta(d);S(D=>({...D,[d]:p}))}catch(p){q(Je(p))}}function F(){q(null),J(null),he(!1),r()}async function X(){ne(!0),q(null),J(null);try{const d=await ia({baseUrl:w.baseUrl,spaceId:w.spaceId,baseId:w.baseId,authRef:w.authRef||dn,authToken:w.authToken,enabled:w.enabled,mirrorMode:w.mirrorMode});f(d),J(s("settings.teableBindingSaved")),o({title:s("settings.teableBindingSaved"),tone:"success"}),await Ae()}catch(d){const p=Je(d);q(p),o({title:p,tone:"error"})}finally{ne(!1)}}async function Be(){U(!0),q(null),J(null);try{const d=await rt();E(d);const p=s("settings.teableConnectionTestSuccess",{tableCount:d.length});J(p),o({title:p,tone:"success"})}catch(d){const p=Je(d);q(p),o({title:p,tone:"error"})}finally{U(!1)}}function ts(d){ke(p=>p.includes(d.tableId)?p:[...p,d.tableId]),Le(d.tableId),m[d.tableId]||l(d.tableId)}function pn(d){if(ke(p=>p.filter(D=>D!==d)),Se===d){const p=V.find(D=>D!==d)??null;Le(p)}}function bn(){const d=ve.filter(p=>!Oe.items.some(D=>D.sourceField===p.key&&D.targetFieldId)).map(p=>p.key);pe(d.length>0?d:ve.map(p=>p.key)),he(!0)}async function fn(){if(!K)return;const d=ve.filter(p=>Me.includes(p.key)).map(Ri);if(d.length===0){q(s("settings.teableFieldAutoCreateEmptyError"));return}Ze(!0),q(null),J(null);try{const p=await ra({tableId:K.tableId,fields:d});vn(p),await l(K.tableId),he(!1);const D=s("settings.teableFieldAutoCreateSuccess",{count:p.length});J(D),o({title:D,tone:"success"})}catch(p){const D=Je(p);q(D),o({title:D,tone:"error"})}finally{Ze(!1)}}async function xn(){if(K){_(!0),q(null),J(null);try{const p=(await na({items:[{sourceType:G,enabled:!0,targetTableId:K.tableId,scope:Fe.scope}]})).find(Q=>Q.sourceType===G),D=(p==null?void 0:p.configId)??Oe.configId;await aa({items:[{configId:D,sourceType:G,targetTableId:K.tableId,items:Ii(Oe.items)}]}),J(s("settings.teableTableSyncSettingsSaved")),o({title:s("settings.teableTableSyncSettingsSaved"),tone:"success"}),await Ae()}catch(d){const p=Je(d);q(p),o({title:p,tone:"error"})}finally{_(!1)}}}async function yn(){te(!0),q(null),J(null);try{const p=(await la({mirrorTypes:[G]})).summary||s("settings.teableLatestTaskEmpty");J(p),o({title:p,tone:"success"}),await Ae()}catch(d){const p=Je(d);q(p),o({title:p,tone:"error"})}finally{te(!1)}}function Ie(d){I(p=>p.map(D=>D.sourceType===G?d(D):D))}function jn(d,p){const D=Ve.find(Q=>Q.fieldId===p)??null;ue(Q=>({...Q,[G]:{...Q[G],targetTableId:(K==null?void 0:K.tableId)??Q[G].targetTableId,items:ve.map(H=>H.key!==d.key?Q[G].items.find(ie=>ie.sourceField===H.key)??{sourceField:H.key,targetFieldId:"",targetFieldName:"",required:H.required}:{sourceField:H.key,targetFieldId:p,targetFieldName:(D==null?void 0:D.fieldName)??"",required:H.required}).filter(H=>H.targetFieldId)}}))}function vn(d){ue(p=>{const D=new Map(p[G].items.map(H=>[H.sourceField,H]));d.forEach(H=>{D.set(H.sourceField,{sourceField:H.sourceField,targetFieldId:H.targetFieldId,targetFieldName:H.targetFieldName,required:H.required})});const Q=ve.map(H=>D.get(H.key)??null).filter(H=>!!(H!=null&&H.targetFieldId));return{...p,[G]:{...p[G],targetTableId:(K==null?void 0:K.tableId)??p[G].targetTableId,items:Q}}})}const Nn=e.jsx("div",{className:"settings-teable-tab-panel",children:e.jsxs(ee,{heading:s("settings.teableBindingSectionTitle"),description:s("settings.teableBindingSectionDescription"),children:[e.jsx(Z,{label:s("settings.teableEnabledLabel"),children:e.jsxs("div",{className:"settings-teable-switch-field",children:[e.jsx(oe,{checked:w.enabled,label:s("settings.teableEnabledLabel"),semanticRole:"switch",onChange:d=>{g(p=>({...p,enabled:d}))}}),e.jsx("span",{className:"settings-teable-switch-caption",children:w.enabled?s("common.enabled"):s("common.disabled")})]})}),e.jsx(Z,{label:s("settings.teableBaseUrlLabel"),description:s("settings.teableBaseUrlDescription"),htmlFor:"teable-base-url",children:e.jsx("input",{id:"teable-base-url",className:"settings-text-input",value:w.baseUrl,placeholder:s("settings.teableBaseUrlPlaceholder"),onChange:d=>g(p=>({...p,baseUrl:d.target.value}))})}),e.jsx(Z,{label:s("settings.teableSpaceIdLabel"),htmlFor:"teable-space-id",children:e.jsx("input",{id:"teable-space-id",className:"settings-text-input",value:w.spaceId,placeholder:s("settings.teableSpaceIdPlaceholder"),onChange:d=>g(p=>({...p,spaceId:d.target.value}))})}),e.jsx(Z,{label:s("settings.teableBaseIdLabel"),htmlFor:"teable-base-id",children:e.jsx("input",{id:"teable-base-id",className:"settings-text-input",value:w.baseId,placeholder:s("settings.teableBaseIdPlaceholder"),onChange:d=>g(p=>({...p,baseId:d.target.value}))})}),e.jsx(Z,{label:s("settings.teableAuthTokenLabel"),description:s("settings.teableAuthTokenDescription"),htmlFor:"teable-auth-token",children:e.jsx("input",{id:"teable-auth-token",type:"password",className:"settings-text-input",value:w.authToken,placeholder:s("settings.teableAuthTokenPlaceholder"),onChange:d=>g(p=>({...p,authToken:d.target.value}))})}),e.jsx(Z,{label:s("settings.teableMirrorModeLabel"),htmlFor:"teable-mirror-mode",children:e.jsx("select",{id:"teable-mirror-mode",className:"settings-select",value:w.mirrorMode,onChange:d=>g(p=>({...p,mirrorMode:d.target.value})),children:Ai.map(d=>e.jsx("option",{value:d,children:s(`settings.teableMirrorMode.${d}`)},d))})})]})}),Sn=e.jsxs("div",{className:"settings-teable-tab-panel settings-teable-table-sync-layout",children:[e.jsx(ee,{className:"settings-teable-table-picker",heading:s("settings.teableTableSyncListTitle"),children:Ee.length===0?e.jsx(re,{title:s("settings.teableTablesCatalogEmptyTitle"),description:s("settings.teableTablesCatalogEmptyDescription"),compact:!0}):e.jsxs("div",{className:"settings-teable-config-fields",children:[e.jsxs("div",{className:"settings-teable-table-add-panel",children:[e.jsx(Z,{label:s("settings.teableTableToAddLabel"),htmlFor:"teable-table-to-add",children:e.jsx("select",{id:"teable-table-to-add",className:"settings-select",value:Te,disabled:ye.length===0,onChange:d=>me(d.target.value),children:ye.length===0?e.jsx("option",{value:"",children:s("settings.teableAllTablesAdded")}):ye.map(d=>e.jsx("option",{value:d.tableId,children:d.tableName},d.tableId))})}),e.jsx("button",{type:"button",className:"secondary-button",disabled:ye.length===0,onClick:()=>{const d=ye.find(p=>p.tableId===Te)??ye[0];d&&ts(d)},children:s("settings.teableAddSyncTableAction")})]}),xe.length===0?e.jsx(re,{title:s("settings.teableSelectSyncTableTitle"),description:s("settings.teableSelectSyncTableDescription"),compact:!0}):e.jsx(fe,{compact:!0,children:xe.map(d=>e.jsx(ge,{selected:(K==null?void 0:K.tableId)===d.tableId,label:d.tableName,trailing:e.jsx("button",{type:"button",className:"secondary-button",onClick:p=>{p.stopPropagation(),pn(d.tableId)},children:s("settings.teableRemoveSyncTableAction")}),role:"button",tabIndex:0,onClick:()=>Le(d.tableId),onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),Le(d.tableId))}},d.tableId))})]})}),e.jsx(ee,{className:"settings-teable-table-sync-main",heading:s("settings.teableTableSyncConfigTitle"),description:s("settings.teableTableSyncConfigDescription"),children:K?e.jsxs("div",{className:"settings-teable-config-fields",children:[e.jsx("div",{className:"settings-teable-table-summary",children:e.jsxs("div",{children:[e.jsx("span",{children:s("settings.teableSelectedSyncTableLabel")}),e.jsx("strong",{children:ze})]})}),e.jsx(Z,{label:s("settings.teableSyncSourceLabel"),htmlFor:"teable-sync-source",children:e.jsx("select",{id:"teable-sync-source",className:"settings-select",value:G,onChange:d=>je(d.target.value),children:un.map(d=>e.jsx("option",{value:d,children:s(`settings.teableSyncSource.${d}`)},d))})}),Tn(),e.jsx(ee,{heading:s("settings.teableFieldMappingTitle"),description:s("settings.teableFieldMappingInlineDescription"),actions:ve.length>0?e.jsx("button",{type:"button",className:"secondary-button",disabled:De,onClick:bn,children:De?s("common.loading"):s("settings.teableFieldAutoCreateAction")}):null,children:ve.length===0?e.jsx("div",{className:"settings-field-hint",children:s("settings.teableSourceFieldsEmpty")}):e.jsx(fe,{compact:!0,children:ve.map(d=>{const p=Oe.items.find(D=>D.sourceField===d.key)??{sourceField:d.key,targetFieldId:"",required:d.required};return e.jsx(ge,{label:d.label,description:`${d.type} · ${d.required?s("settings.teableFieldRequired"):s("settings.teableFieldOptional")}`,children:e.jsxs("select",{className:"settings-select",value:p.targetFieldId,onChange:D=>jn(d,D.target.value),children:[e.jsx("option",{value:"",children:s("settings.teableFieldTargetPlaceholder")}),Ve.map(D=>e.jsx("option",{value:D.fieldId,children:D.fieldName},D.fieldId))]})},d.key)})})}),e.jsx(ee,{heading:s("settings.teableSyncActionSectionTitle"),description:s("settings.teableSyncActionSectionDescription"),children:e.jsx(fe,{compact:!0,children:e.jsx(ge,{label:s("settings.teableLatestTaskTitle"),description:((nt=y==null?void 0:y.latestMirrorSyncTask)==null?void 0:nt.summary)??s("settings.teableLatestTaskEmpty"),trailing:y!=null&&y.latestMirrorSyncTask?e.jsx(ae,{tone:Rt(y.latestMirrorSyncTask.state),children:s(`settings.teableTaskState.${y.latestMirrorSyncTask.state}`)}):null})})}),e.jsxs("div",{className:"settings-teable-inline-actions",children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:W||L,onClick:()=>{xn()},children:W?s("common.loading"):s("settings.teableSaveTableSyncSettingsAction")}),e.jsx("button",{type:"button",className:"primary-button",disabled:se||L,onClick:()=>{yn()},children:se?s("common.loading"):s("settings.teableSyncNowAction")})]})]}):e.jsx(re,{title:s("settings.teableSelectSyncTableTitle"),description:s("settings.teableSelectSyncTableDescription"),compact:!0})})]});function Tn(){if(G==="sessions"){const D=Fe.scope,Q=Array.isArray(D.workspaceIds)?D.workspaceIds:[];return e.jsxs(Z,{label:s("settings.teableWorkspaceScopeLabel"),children:[e.jsxs("div",{className:"settings-teable-radio-group",children:[e.jsxs("label",{className:"settings-teable-radio-line",children:[e.jsx("input",{type:"radio",name:"teable-session-workspace-scope",checked:D.mode!=="selected_workspaces",onChange:()=>Ie(H=>({...H,scope:{mode:"all_workspaces"}}))}),e.jsx("span",{children:s("settings.teableWorkspaceScopeAll")})]}),e.jsxs("label",{className:"settings-teable-radio-line",children:[e.jsx("input",{type:"radio",name:"teable-session-workspace-scope",checked:D.mode==="selected_workspaces",onChange:()=>Ie(H=>({...H,scope:{mode:"selected_workspaces",workspaceIds:[]}}))}),e.jsx("span",{children:s("settings.teableWorkspaceScopeSelected")})]})]}),D.mode==="selected_workspaces"?et(Q,H=>{Ie(ie=>({...ie,scope:{mode:"selected_workspaces",workspaceIds:H}}))}):null]})}if(G==="todos"){const D=Fe.scope,Q=Array.isArray(D.workspaceIds)?D.workspaceIds:[],H=Q.length>0;return e.jsxs("div",{className:"settings-teable-config-fields",children:[e.jsx(Z,{label:s("settings.teableTodoSourceLabel"),children:e.jsxs("div",{className:"settings-teable-choice-list",children:[e.jsxs("label",{className:"settings-teable-choice-row",children:[e.jsx("input",{type:"checkbox",checked:D.includeWorkspaceTodos!==!1,onChange:ie=>Ie(be=>({...be,scope:{...D,includeWorkspaceTodos:ie.target.checked,includeAffairsTodos:D.includeAffairsTodos!==!1,workspaceIds:Q}}))}),e.jsx("span",{className:"settings-teable-choice-copy",children:e.jsx("strong",{children:s("settings.teableTodoWorkspaceSource")})})]}),e.jsxs("label",{className:"settings-teable-choice-row",children:[e.jsx("input",{type:"checkbox",checked:D.includeAffairsTodos!==!1,onChange:ie=>Ie(be=>({...be,scope:{...D,includeWorkspaceTodos:D.includeWorkspaceTodos!==!1,includeAffairsTodos:ie.target.checked,workspaceIds:Q}}))}),e.jsx("span",{className:"settings-teable-choice-copy",children:e.jsx("strong",{children:s("settings.teableTodoAffairsSource")})})]})]})}),e.jsxs(Z,{label:s("settings.teableWorkspaceScopeLabel"),children:[e.jsxs("div",{className:"settings-teable-radio-group",children:[e.jsxs("label",{className:"settings-teable-radio-line",children:[e.jsx("input",{type:"radio",name:"teable-todo-workspace-scope",checked:!H,onChange:()=>Ie(ie=>({...ie,scope:{includeWorkspaceTodos:D.includeWorkspaceTodos!==!1,includeAffairsTodos:D.includeAffairsTodos!==!1,workspaceIds:[]}}))}),e.jsx("span",{children:s("settings.teableWorkspaceScopeAll")})]}),e.jsxs("label",{className:"settings-teable-radio-line",children:[e.jsx("input",{type:"radio",name:"teable-todo-workspace-scope",checked:H,onChange:()=>Ie(ie=>({...ie,scope:{includeWorkspaceTodos:D.includeWorkspaceTodos!==!1,includeAffairsTodos:D.includeAffairsTodos!==!1,workspaceIds:Ue[0]?[Ue[0].id]:[]}}))}),e.jsx("span",{children:s("settings.teableWorkspaceScopeSelected")})]})]}),H?et(Q,ie=>{Ie(be=>({...be,scope:{includeWorkspaceTodos:D.includeWorkspaceTodos!==!1,includeAffairsTodos:D.includeAffairsTodos!==!1,workspaceIds:ie}}))}):null]})]})}const d=Fe.scope,p=Array.isArray(d.rootTagIds)?d.rootTagIds:[];return e.jsx(Z,{label:s("settings.teableDocumentTagRootsLabel"),description:s("settings.teableDocumentTagRootsDescription"),children:$e.length===0?e.jsx("div",{className:"settings-field-hint",children:s("settings.teableDocumentTagRootsEmpty")}):e.jsx("div",{className:"settings-teable-choice-list",children:$e.map(D=>{const Q=p.includes(D.tag.id);return e.jsxs("label",{className:"settings-teable-choice-row",children:[e.jsx("input",{type:"checkbox",checked:Q,onChange:H=>{const ie=H.target.checked?[...p,D.tag.id]:p.filter(be=>be!==D.tag.id);Ie(be=>({...be,scope:{rootTagIds:Array.from(new Set(ie))}}))}}),e.jsxs("span",{className:"settings-teable-choice-copy",children:[e.jsx("strong",{children:D.tag.path}),e.jsx("small",{children:s("shell.affairsTagTreeDocumentCount",{count:D.tag.documentCount})})]})]},D.key)})})})}function et(d,p){return Ue.length===0?e.jsx("div",{className:"settings-field-hint",children:s("settings.teableWorkspaceScopeEmpty")}):e.jsx("div",{className:"settings-teable-choice-list settings-teable-workspace-list",children:Ue.map(D=>{const Q=d.includes(D.id);return e.jsxs("label",{className:"settings-teable-choice-row",children:[e.jsx("input",{type:"checkbox",checked:Q,onChange:H=>{const ie=H.target.checked?[...d,D.id]:d.filter(be=>be!==D.id);p(Array.from(new Set(ie)))}}),e.jsx("span",{className:"settings-teable-choice-copy",children:e.jsx("strong",{children:D.name})})]},D.id)})})}function st(){const d=e.jsxs("div",{className:"settings-teable-field-picker",children:[e.jsx(ee,{heading:s("settings.teableFieldAutoCreateModalSectionTitle"),description:s("settings.teableFieldAutoCreateModalSectionDescription",{table:ze}),children:e.jsx(fe,{compact:!0,children:ve.map(p=>{const D=Me.includes(p.key),Q=Oe.items.find(H=>H.sourceField===p.key&&H.targetFieldId);return e.jsx(ge,{label:p.label,description:Q?s("settings.teableFieldAlreadyMappedDescription",{field:Q.targetFieldName}):`${p.type} · ${p.required?s("settings.teableFieldRequired"):s("settings.teableFieldOptional")}`,leading:e.jsx("input",{type:"checkbox",checked:D,onChange:H=>{pe(ie=>H.target.checked?Array.from(new Set([...ie,p.key])):ie.filter(be=>be!==p.key))}})},p.key)})})}),e.jsxs(ce,{align:"end",stack:!0,children:[e.jsx("button",{type:"button",className:"secondary-button",onClick:()=>he(!1),children:s("common.cancel")}),e.jsx("button",{type:"button",className:"primary-button",disabled:De||Me.length===0,onClick:()=>{fn()},children:De?s("common.loading"):s("settings.teableFieldAutoCreateConfirmAction")})]})]});return a?e.jsx(Re,{open:Ce,title:s("settings.teableFieldAutoCreateModalTitle"),description:s("settings.teableFieldAutoCreateModalDescription"),height:"three-quarter",kind:"form",showHandle:!0,onClose:()=>he(!1),children:d}):e.jsx(He,{open:Ce,title:s("settings.teableFieldAutoCreateModalTitle"),description:s("settings.teableFieldAutoCreateModalDescription"),size:"compact",layout:"form",onClose:()=>he(!1),children:d})}const wn=e.jsx("div",{className:"settings-teable-tab-panel",children:e.jsx(ee,{heading:s("settings.teableSyncLogsTitle"),description:s("settings.teableSyncLogsDescription"),actions:e.jsx("button",{type:"button",className:"secondary-button",disabled:L,onClick:()=>{Ae()},children:L?s("common.loading"):s("settings.teableSyncLogsRefreshAction")}),children:c.length===0?e.jsx(re,{title:s("settings.teableSyncLogsEmptyTitle"),description:s("settings.teableSyncLogsEmptyDescription"),compact:!0}):e.jsx(fe,{compact:!0,children:c.map(d=>e.jsx(ge,{label:d.summary,description:Fi(d),trailing:e.jsx(ae,{tone:Rt(d.state),children:s(`settings.teableTaskState.${d.state}`)})},d.logId))})})});function kn(){return h==="connection"?Nn:h==="syncLogs"?wn:Sn}const tt=e.jsxs("div",{className:"settings-teable-modal-layout",children:[e.jsx("div",{className:"settings-teable-tabs",role:"tablist","aria-label":s("settings.teableModalTitle"),children:Ye.map(d=>e.jsx("button",{type:"button",role:"tab","aria-selected":h===d.id,className:h===d.id?"settings-teable-tab active":"settings-teable-tab",onClick:()=>j(d.id),children:d.label},d.id))}),kn(),le?e.jsx("p",{className:"settings-release-status",children:le}):null,A?e.jsx("p",{className:"settings-release-status",children:A}):null,h==="connection"?e.jsxs(ce,{className:"settings-teable-modal-actions",align:"end",stack:!0,children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:M||L,onClick:()=>{Be()},children:M?s("common.loading"):s("settings.teableTestConnectionAction")}),e.jsx("button",{type:"button",className:"primary-button",disabled:Y||L,onClick:()=>{X()},children:Y?s("common.loading"):s("settings.teableSaveBindingAction")}),e.jsx("button",{type:"button",className:"secondary-button",onClick:F,children:s("common.cancel")})]}):null]});return a?e.jsxs(e.Fragment,{children:[e.jsx(Re,{open:t,title:s("settings.teableModalTitle"),height:"full",kind:"form",showHandle:!0,onClose:F,children:tt}),st()]}):e.jsxs(e.Fragment,{children:[e.jsx(He,{open:t,title:s("settings.teableModalTitle"),size:"regular",layout:"form",className:"settings-teable-modal",bodyClassName:"settings-teable-modal-body",onClose:F,children:tt}),st()]})}function It(t){return{baseUrl:(t==null?void 0:t.baseUrl)??"",spaceId:(t==null?void 0:t.spaceId)??"",baseId:(t==null?void 0:t.baseId)??"",authRef:(t==null?void 0:t.authRef)??dn,authToken:"",enabled:(t==null?void 0:t.enabled)??!1,mirrorMode:(t==null?void 0:t.mirrorMode)??"manual"}}function $s(t){const a=new Map(t.map(n=>[n.sourceType,n]));return un.map(n=>{const r=a.get(n);return{configId:(r==null?void 0:r.configId)??`draft-${n}`,sourceType:n,enabled:(r==null?void 0:r.enabled)??!1,targetTableId:(r==null?void 0:r.targetTableId)??"",scope:(r==null?void 0:r.scope)??Pi(n)}})}function Pi(t){switch(t){case"tags":return{rootTagIds:[]};case"sessions":return{mode:"all_workspaces"};case"todos":return{includeWorkspaceTodos:!0,includeAffairsTodos:!0,workspaceIds:[]};default:return{rootTagIds:[]}}}function Ks(t){return{configId:`draft-${t}`,sourceType:t,targetTableId:"",items:[]}}function Li(t,a){const n=new Map(t.map(o=>[o.sourceType,o])),r=new Map(a.map(o=>[o.sourceType,o]));return{tags:Gs("tags",n.get("tags")??null,r.get("tags")??null),sessions:Gs("sessions",n.get("sessions")??null,r.get("sessions")??null),todos:Gs("todos",n.get("todos")??null,r.get("todos")??null)}}function Gs(t,a,n){return{configId:(a==null?void 0:a.configId)??`draft-${t}`,sourceType:t,targetTableId:(n==null?void 0:n.targetTableId)??(a==null?void 0:a.targetTableId)??"",items:(n==null?void 0:n.items)??[]}}function Ei(t,a){const n=new Map;return a.forEach(r=>{const o=r.targetTableId.trim();o&&n.set(o,r.sourceType)}),t.map(r=>({tableId:r.tableId,tableName:r.tableName,assignedSourceType:n.get(r.tableId)??null})).sort((r,o)=>r.tableName.localeCompare(o.tableName,"zh-Hans-CN"))}function Oi(t,a){return t.length===a.length&&t.every((n,r)=>n===a[r])}function Ii(t){return t.filter(a=>a.sourceField.trim()&&a.targetFieldId.trim()&&a.targetFieldName.trim())}function Ri(t){return{sourceField:t.key,fieldName:t.label,fieldType:Ui(t.type),required:t.required}}function Ui(t){switch(t){case"datetime":return"date";default:return"singleLineText"}}function Je(t){return t instanceof Error&&t.message.trim()?t.message.trim():s("settings.teableLoadFailed")}function Fi(t){var j;const a=t.sourceTypes.map(N=>s(`settings.teableSyncSource.${N}`)).join("、")||s("common.none"),n=s(`settings.teableSyncLogTrigger.${t.triggerType}`),r=_i(t.finishedAt??t.updatedAt??t.createdAt),o=Bi(t),h=[s("settings.teableSyncLogDescription",{trigger:n,source:a,time:r})];return o&&h.push(o),(j=t.errorDetail)!=null&&j.trim()&&h.push(t.errorDetail.trim()),h.join(" · ")}function Bi(t){const a=Object.values(t.counts).reduce((n,r)=>r?{created:n.created+(r.created??0),updated:n.updated+(r.updated??0),deleted:n.deleted+(r.deleted??0),skipped:n.skipped+(r.skipped??0)}:n,{created:0,updated:0,deleted:0,skipped:0});return a.created+a.updated+a.deleted+a.skipped===0?"":s("settings.teableSyncLogCounts",a)}function _i(t){if(!t)return s("common.none");const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function Rt(t){switch(t){case"succeeded":return"success";case"partial_failed":case"queued":case"running":return"warning";case"failed":return"danger";default:return"default"}}function Ut({title:t,description:a,actions:n,content:r,className:o}){return e.jsx(xa,{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,r?e.jsx("div",{className:"mobile-page-header-content",children:r}):null]})})}const mn={start:43e3,end:47999};function qi(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 qi(t)?t==="model-management"||t==="provider-management"?"ability-management":t:null}function Wi(t){return t==="en-US"?s("locale.enUS"):s("locale.zhCN")}function Vi(t){return t==="beta"?s("settings.releaseBeta"):s("settings.releaseStable")}function zi(t){switch(t){case"acceptEdits":return s("settings.permissionModeAcceptEdits");case"bypassPermissions":return s("settings.permissionModeBypassPermissions");default:return s("settings.permissionModeDefault")}}function $i(){const t=Ys(),{theme:a,selectedTheme:n,autoTheme:r,setTheme:o,setAutoTheme:h}=_n(),j=An(I=>I),N=Ns(I=>I.profile.language),f=Ns(I=>I.profile.defaultPermissionMode),y=ns(I=>I.sessionDisplaySortMode),u=ns(I=>I.showSystemFiles),T=ns(I=>I.notificationPreferences.notifyOnPermissionRequest),E=ns(I=>I.notificationPreferences.notifyOnSessionCompleted),k=ns(I=>I.notificationPreferences.notifyOnSessionFailed),O={language:N,defaultPermissionMode:f,debugPortPools:Ns(I=>I.profile.debugPortPools)??mn},v=gs(),R=Pn(j.platform),m=R,S=Qs(j)??"",[b,x]=i.useState(S);i.useEffect(()=>{x(S)},[S]);function c(){En.clear(),Ss.resetToLocalFallback(),t("/login",{replace:!0})}function C(I){o(I)}function L(I){h(I)}function P(I){try{return Ln(I)}catch{return null}}const M=P(b),U=M!==null&&M!==S;function Y(I){I.preventDefault(),M&&Pe.update({hosts:j.hosts.map(de=>de.id===j.activeHostId?{...de,baseUrl:M,updatedAt:new Date().toISOString()}:de)})}const ne=[{value:"default",label:s("settings.permissionModeDefault")},{value:"acceptEdits",label:s("settings.permissionModeAcceptEdits")},{value:"bypassPermissions",label:s("settings.permissionModeBypassPermissions")}],W=[{value:"createdAt",label:s("settings.sessionSortModeCreatedAt")},{value:"updatedAt",label:s("settings.sessionSortModeUpdatedAt")},{value:"title",label:s("settings.sessionSortModeTitle")}];function _(I){Pe.update({releaseChannel:I==="beta"?"beta":"stable"})}function se(I){Pe.update({autoReconnect:I})}function te(I){Pe.update({autoCheckUpdate:I})}function le(I){const de=I==="acceptEdits"||I==="bypassPermissions"?I:"default";Ss.updateProfile({defaultPermissionMode:de}).catch(()=>{})}function J(I){const de=I==="updatedAt"||I==="title"?I:"createdAt";as.setSessionDisplaySortMode(de)}function A(I){as.setShowSystemFiles(I)}function q(I){as.setNotificationPreferences({notifyOnPermissionRequest:I})}function w(I){as.setNotificationPreferences({notifyOnSessionCompleted:I})}function g(I){as.setNotificationPreferences({notifyOnSessionFailed:I})}async function B(I){await Ss.updateProfile({debugPortPools:I})}return{platform:v,theme:a,selectedTheme:n,autoTheme:r,applyTheme:C,applyAutoTheme:L,runtimeConfig:j,accountPreferences:O,sessionDisplaySortMode:y,showSystemFiles:u,notifyOnPermissionRequest:T,notifyOnSessionCompleted:E,notifyOnSessionFailed:k,showServerSettings:m,canConfigureServerAddress:R,hostBaseUrlDraft:b,setHostBaseUrlDraft:x,canSaveHostBaseUrl:U,permissionModeOptions:ne,sessionDisplaySortModeOptions:W,handleHostBaseUrlSubmit:Y,handleLogout:c,updateReleaseChannel:_,updateAutoReconnect:se,updateAutoCheckUpdate:te,updateDefaultPermissionMode:le,updateSessionDisplaySortMode:J,updateShowSystemFiles:A,updateNotifyOnPermissionRequest:q,updateNotifyOnSessionCompleted:w,updateNotifyOnSessionFailed:g,updateDebugPortPools:B}}function kr(){const t=$i(),a=Bn();return t.platform.isMobile?e.jsx(Gi,{model:t,appVersion:a}):e.jsx(Ki,{model:t,appVersion:a})}function Ki({model:t,appVersion:a}){var $;const[n,r]=i.useState(!1),[o,h]=i.useState(!1),[j,N]=i.useState(!1),[f,y]=i.useState(!1),{currentWorkspaceId:u,navigationGroups:T}=Vt(),{theme:E,selectedTheme:k,autoTheme:O,applyTheme:v,applyAutoTheme:R,runtimeConfig:m,accountPreferences:S,sessionDisplaySortMode:b,showSystemFiles:x,notifyOnPermissionRequest:c,notifyOnSessionCompleted:C,notifyOnSessionFailed:L,showServerSettings:P,hostBaseUrlDraft:M,setHostBaseUrlDraft:U,canSaveHostBaseUrl:Y,permissionModeOptions:ne,sessionDisplaySortModeOptions:W,platform:_,handleHostBaseUrlSubmit:se,handleLogout:te,updateReleaseChannel:le,updateAutoReconnect:J,updateAutoCheckUpdate:A,updateDefaultPermissionMode:q,updateSessionDisplaySortMode:w,updateShowSystemFiles:g,updateNotifyOnPermissionRequest:B,updateNotifyOnSessionCompleted:I,updateNotifyOnSessionFailed:de,updateDebugPortPools:ue}=t,G=u??(($=T[0])==null?void 0:$.workspace.id)??null,je=T.map(V=>{var ke;return{id:V.workspace.id,name:((ke=V.workspace.name)==null?void 0:ke.trim())||V.workspace.id}});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(_t,{})})]}),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(oe,{checked:O,label:s("settings.autoTheme"),onChange:R})]}),e.jsx("span",{className:"settings-theme-note",children:s("settings.autoThemeDescription")})]}),e.jsx("div",{className:"theme-selector",children:qt.map(V=>e.jsxs("button",{type:"button",className:`theme-card ${k===V.id&&!O?"active":""}`,"aria-pressed":k===V.id&&!O,disabled:O,onClick:()=>v(V.id),children:[e.jsx("span",{className:"theme-preview",style:{background:V.color}}),e.jsx("span",{className:"theme-label",children:Ht(V)}),k===V.id&&!O?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:b,onChange:V=>w(V.target.value),children:W.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(oe,{checked:x,label:s("settings.showSystemFiles"),onChange:g})})]})]})]}),P?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:se,children:[e.jsx("input",{"aria-label":s("settings.serverAddress"),className:"settings-text-input",value:M,onChange:V=>U(V.target.value)}),e.jsx("button",{className:"settings-button",disabled:!Y,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(oe,{checked:m.autoReconnect,label:s("settings.autoReconnect"),onChange:J})})]})]})]}):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:()=>N(!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(Gt,{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.teableEntryTitle")}),e.jsx("span",{className:"settings-row-description",children:s("settings.teableEntryDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx("button",{className:"settings-button",type:"button",onClick:()=>y(!0),children:s("settings.teableOpenSettingsAction")})})]}),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(Jt,{})})]}),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(Kt,{})})]})]})]}),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(Zt,{})})]})})]}),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:()=>h(!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:S.defaultPermissionMode,onChange:V=>q(V.target.value),children:ne.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(tn,{})})]}),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(oe,{checked:c,label:s("settings.notifyOnPermissionRequest"),onChange:B})})]}),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(oe,{checked:C,label:s("settings.notifyOnSessionCompleted"),onChange:I})})]}),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(oe,{checked:L,label:s("settings.notifyOnSessionFailed"),onChange:de})})]})]})]}),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(hn,{value:S.debugPortPools,onSave:ue})})]}),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:m.releaseChannel,onChange:V=>le(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(ln,{})})]}),_.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(oe,{checked:m.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:A})})]}),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($t,{})})]})]})]})]}),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:()=>r(!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:te,type:"button",children:s("common.logout")})]})]}),e.jsx(va,{isOpen:n,onClose:()=>r(!1)}),e.jsx(cn,{open:o,mobile:!1,onClose:()=>h(!1)}),e.jsx(on,{open:j,mobile:!1,workspaceId:G,onClose:()=>N(!1)}),e.jsx(gn,{open:f,mobile:!1,workspaceOptions:je,onClose:()=>y(!1)})]})}function Gi({model:t,appVersion:a}){const n=Ys(),{section:r}=qn(),o=Hi(r),h=[{id:"appearance",title:s("settings.appearance"),description:s("settings.appearanceSectionSummary"),value:Wi(t.accountPreferences.language),icon:e.jsx(nr,{})}];return t.showServerSettings&&h.push({id:"server-connection",title:s("settings.serverConnection"),description:s("settings.serverConnectionSectionSummary"),value:Qs(t.runtimeConfig)??"",icon:e.jsx(ar,{})}),h.push({id:"ability-management",title:s("settings.abilityManagement"),description:s("settings.abilityManagementSectionSummary"),value:s("settings.abilityManagementNavValue"),icon:e.jsx(rr,{})},{id:"channels-management",title:s("settings.channelsManagement"),description:s("settings.channelsManagementSectionSummary"),value:s("settings.channelsManagementNavValue"),icon:e.jsx(cr,{})},{id:"remote-access",title:s("settings.remoteAccess"),description:s("settings.remoteAccessSectionSummary"),value:s("settings.remoteAccessNavValue"),icon:e.jsx(ir,{})},{id:"security-privacy",title:s("settings.securityPrivacy"),description:s("settings.securityPrivacySectionSummary"),value:zi(t.accountPreferences.defaultPermissionMode),icon:e.jsx(or,{})},{id:"software-update",title:s("settings.softwareUpdate"),description:s("settings.softwareUpdateSectionSummary"),value:Vi(t.runtimeConfig.releaseChannel),icon:e.jsx(lr,{})}),(o?h.find(N=>N.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(Ut,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[o==="appearance"?e.jsx(Ji,{model:t}):null,o==="ability-management"?e.jsx(er,{}):null,o==="channels-management"?e.jsx(sr,{}):null,o==="server-connection"&&t.showServerSettings?e.jsx(Qi,{model:t}):null,o==="remote-access"?e.jsx(Xi,{model:t}):null,o==="security-privacy"?e.jsx(Zi,{model:t}):null,o==="software-update"?e.jsx(tr,{model:t}):null]}),e.jsx(Bt,{onLogout:t.handleLogout})]}):e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(Ut,{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:h.map(N=>e.jsxs("button",{type:"button",className:"settings-mobile-nav-row",onClick:()=>n(`/settings/${N.id}`),children:[e.jsx("span",{className:"settings-mobile-nav-icon",children:N.icon}),e.jsxs("span",{className:"settings-mobile-nav-copy",children:[e.jsx("span",{className:"settings-mobile-nav-title",children:N.title}),e.jsx("span",{className:"settings-mobile-nav-description",children:N.description})]}),e.jsxs("span",{className:"settings-mobile-nav-trailing",children:[N.value?e.jsx("span",{className:"settings-mobile-nav-value",children:N.value}):null,e.jsx(dr,{})]})]},N.id))})}),e.jsx("div",{className:"settings-footer settings-footer-mobile",children:e.jsxs("span",{className:"settings-version",children:["CodingNS v",a]})})]}),e.jsx(Bt,{onLogout:t.handleLogout})]})}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.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(_t,{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(oe,{checked:t.autoTheme,label:s("settings.autoTheme"),onChange:t.applyAutoTheme})]}),qt.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:Ht(a)})]}),e.jsx("span",{className:"settings-mobile-choice-indicator","aria-hidden":"true",children:n?e.jsx(ur,{}):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(oe,{checked:t.showSystemFiles,label:s("settings.showSystemFiles"),onChange:t.updateShowSystemFiles})]})]})]})]})}function Qi({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(oe,{checked:t.runtimeConfig.autoReconnect,label:s("settings.autoReconnect"),onChange:t.updateAutoReconnect})]})})]})]})}function Zi({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(tn,{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(hn,{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(oe,{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(oe,{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(oe,{checked:t.notifyOnSessionFailed,label:s("settings.notifyOnSessionFailed"),onChange:t.updateNotifyOnSessionFailed})]})]})]})]})}function hn(t){const[a,n]=i.useState(()=>Ft(t.value)),[r,o]=i.useState(!1),[h,j]=i.useState(null),[N,f]=i.useState(!1);i.useEffect(()=>{n(Ft(t.value))},[t.value]);async function y(){j(null),f(!1);let u;try{u=Yi(a)}catch(T){j(T instanceof Error?T.message:s("settings.debugPortPoolSaveFailed"));return}try{o(!0),await t.onSave(u),f(!0)}catch(T){j(T instanceof Error?T.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:u=>{const T=u.target.value;n(E=>({...E,start:T}))}}),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:u=>{const T=u.target.value;n(E=>({...E,end:T}))}}),e.jsx("button",{type:"button",className:t.compact?"settings-mobile-primary-button":"settings-button",disabled:r,onClick:()=>{y()},children:r?s("common.loading"):s("common.save")}),N?e.jsx("span",{children:s("settings.debugPortPoolSaved")}):null]})})]}),h?e.jsx("p",{className:"status-text settings-debug-port-pool-feedback","data-tone":"error",children:h}):null]})}function Ft(t){const a=t??mn;return{start:String(a.start),end:String(a.end)}}function Yi(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 Xi({model:t}){const[a,n]=i.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(cn,{open:a,mobile:!0,onClose:()=>n(!1)})]})}function er(){var f;const[t,a]=i.useState(!1),[n,r]=i.useState(!1),{currentWorkspaceId:o,navigationGroups:h}=Vt(),j=o??((f=h[0])==null?void 0:f.workspace.id)??null,N=h.map(y=>{var u;return{id:y.workspace.id,name:((u=y.workspace.name)==null?void 0:u.trim())||y.workspace.id}});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(Gt,{triggerClassName:"settings-mobile-primary-button",triggerLabel:s("settings.skillOnlyOfficeOpenSettingsAction"),mobile:!0})]}),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.teableEntryTitle")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.teableEntryDescription")})]}),e.jsx("button",{className:"settings-mobile-primary-button",type:"button",onClick:()=>r(!0),children:s("settings.teableOpenSettingsAction")})]})]}),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(Jt,{})]}),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(Kt,{})]})]})]}),e.jsx(on,{open:t,mobile:!0,workspaceId:j,onClose:()=>a(!1)}),e.jsx(gn,{open:n,mobile:!0,workspaceOptions:N,onClose:()=>r(!1)})]})}function sr(){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(Zt,{})]})]})}function tr({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(ln,{})})]}),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(oe,{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($t,{})})]})]})}function Bt({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 nr(){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 ar(){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 lr(){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 ir(){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 rr(){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 cr(){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 or(){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 dr(){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 ur(){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{kr as SettingsPage};