@jingyi0605/codingns 0.9.0 → 0.9.6

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 (331) hide show
  1. package/bin/codingns.mjs +75 -0
  2. package/dist/public/assets/{AdaptiveButlerPage-B17QiMyT.js → AdaptiveButlerPage-khJQh6a_.js} +2 -2
  3. package/dist/public/assets/{App-CFBwDUNA.js → App-If9gThKM.js} +6 -6
  4. package/dist/public/assets/{BootstrapPage-W5wU3BPh.js → BootstrapPage-DcfYtoLC.js} +1 -1
  5. package/dist/public/assets/{ConversationPage-DQLX1bUh.js → ConversationPage-Bfb7GLTM.js} +1 -1
  6. package/dist/public/assets/{DesktopDetachPreviewPage-DTPeuAW-.js → DesktopDetachPreviewPage-CXUPMcBz.js} +1 -1
  7. package/dist/public/assets/{DesktopModal-6ii53_Y9.js → DesktopModal-bMdI1jEe.js} +1 -1
  8. package/dist/public/assets/DesktopWindowPage-D1xwgS-7.js +2 -0
  9. package/dist/public/assets/FileContextPanel-C4syif3B.js +1 -0
  10. package/dist/public/assets/GitSidebar-DduL9aTV.js +6 -0
  11. package/dist/public/assets/MobileCreateSessionSheet-DWPBsEx8.js +1 -0
  12. package/dist/public/assets/{MobileSheet-opTWyRe1.js → MobileSheet-BXvQPkxt.js} +1 -1
  13. package/dist/public/assets/{MobileTopHeaderFrame-BbNON3Y4.js → MobileTopHeaderFrame-vdYOyaaB.js} +1 -1
  14. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-BZEzPeMj.js → MobileWorkspaceSwitcherHeader-DT330cAx.js} +1 -1
  15. package/dist/public/assets/{PluginAccessOverview-mQDmAljp.js → PluginAccessOverview-C77TeZTK.js} +1 -1
  16. package/dist/public/assets/{PluginContainerPage-CcxUJpM4.js → PluginContainerPage-DdSwOCw-.js} +1 -1
  17. package/dist/public/assets/{PluginDetailPage-D5--ACIt.js → PluginDetailPage-BK1yTzvO.js} +1 -1
  18. package/dist/public/assets/{PluginsListPage-D_oJxYXT.js → PluginsListPage-DAAwSc6W.js} +1 -1
  19. package/dist/public/assets/{RelayConnectEntryPage-DROxpnkv.js → RelayConnectEntryPage-4Yyo2p8b.js} +1 -1
  20. package/dist/public/assets/{ServerSettingsModal-CUUOPqSe.js → ServerSettingsModal-C_DEisHs.js} +1 -1
  21. package/dist/public/assets/{SessionIndexPage-C2Jxh6Gp.js → SessionIndexPage-DyMikN_x.js} +1 -1
  22. package/dist/public/assets/SettingsPage-CDAVsPr3.js +2 -0
  23. package/dist/public/assets/TerminalManagerPanel-4OR47vcf.js +1 -0
  24. package/dist/public/assets/{TerminalPage-CwWyFDj8.js → TerminalPage-Pvx396YX.js} +1 -1
  25. package/dist/public/assets/{TerminalRuntimeFallbackModal-CSVVbO8r.js → TerminalRuntimeFallbackModal-KvG6k4AQ.js} +1 -1
  26. package/dist/public/assets/{ToolFilesPage-QBEY8oCf.js → ToolFilesPage-DrYHk0N-.js} +1 -1
  27. package/dist/public/assets/{ToolGitPage-BKoZ2l9v.js → ToolGitPage-Dz1q-Ns_.js} +1 -1
  28. package/dist/public/assets/{ToolProcessesPage-BOH0ib4G.js → ToolProcessesPage-CRhphOmM.js} +1 -1
  29. package/dist/public/assets/{ToolsHomePage-BcMZ3BCQ.js → ToolsHomePage-BJSDLR6T.js} +1 -1
  30. package/dist/public/assets/{WorkbenchLandingPage-B5zoppEl.js → WorkbenchLandingPage-BlkxdOLC.js} +1 -1
  31. package/dist/public/assets/WorkbenchLayout-D-U7ghT0.js +1022 -0
  32. package/dist/public/assets/{WorkbenchModal-NGmPgqaE.js → WorkbenchModal-xbx1o6MO.js} +1 -1
  33. package/dist/public/assets/WorkbenchShellRoute-DyWSCHz_.js +1 -0
  34. package/dist/public/assets/WorkbenchShellRoute-htbkGbtW.css +1 -0
  35. package/dist/public/assets/WorkspaceDebugDetailPage-B4ol2_a5.js +1 -0
  36. package/dist/public/assets/WorkspaceDetailPage-DMakfmHR.js +1 -0
  37. package/dist/public/assets/WorkspaceHomePage-tmCafatd.js +1 -0
  38. package/dist/public/assets/{client-runtime-manager-DXbI9K1K.js → client-runtime-manager-Bwau7p1v.js} +1 -1
  39. package/dist/public/assets/index-DmUJ8tIw.css +1 -0
  40. package/dist/public/assets/index-_OCkVmfl.js +50 -0
  41. package/dist/public/assets/{login-direct-candidate-resolver-DkKyFtQJ.js → login-direct-candidate-resolver-CKUQ07IA.js} +1 -1
  42. package/dist/public/assets/{plugin-permission-copy-CzN269Bk.js → plugin-permission-copy-DIVk5jNp.js} +1 -1
  43. package/dist/public/assets/{plugins-api-Bv9DHpLF.js → plugins-api-DHJVvPZw.js} +1 -1
  44. package/dist/public/assets/{preferences-service-D2ISL2Zz.js → preferences-service-CyxxeBmS.js} +1 -1
  45. package/dist/public/assets/{relay-entry-Bg0OisQy.js → relay-entry-B5GmiOrR.js} +1 -1
  46. package/dist/public/assets/{terminal-runtime-meta-C8t-CIDF.js → terminal-runtime-meta-DBsyT35T.js} +1 -1
  47. package/dist/public/assets/useRegisteredDebugTemplates-wCGD2SLW.js +1 -0
  48. package/dist/public/assets/workbench-navigation-RyUjchbD.js +1 -0
  49. package/dist/public/index.html +2 -2
  50. package/dist/server/config/env.d.ts +1 -0
  51. package/dist/server/config/env.js +3 -0
  52. package/dist/server/config/env.js.map +1 -1
  53. package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.js.map +1 -1
  54. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.d.ts +1 -0
  55. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js +31 -0
  56. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js.map +1 -1
  57. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js.map +1 -1
  58. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.d.ts +1 -0
  59. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js +1 -0
  60. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js.map +1 -1
  61. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js +4 -1
  62. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js.map +1 -1
  63. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js +140 -16
  64. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js.map +1 -1
  65. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js +2 -2
  66. package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js.map +1 -1
  67. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.d.ts +20 -3
  68. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js +3 -3
  69. package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js.map +1 -1
  70. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +1 -1
  71. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +8 -7
  72. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  73. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +14 -13
  74. package/dist/server/modules/assistant-capability/assistant-capability-service.js +27 -24
  75. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  76. package/dist/server/modules/auth/auth-controller.d.ts +27 -1
  77. package/dist/server/modules/auth/auth-controller.js +20 -0
  78. package/dist/server/modules/auth/auth-controller.js.map +1 -1
  79. package/dist/server/modules/auth/auth-service.d.ts +32 -1
  80. package/dist/server/modules/auth/auth-service.js +217 -2
  81. package/dist/server/modules/auth/auth-service.js.map +1 -1
  82. package/dist/server/modules/bootstrap/bootstrap-service.js +1 -0
  83. package/dist/server/modules/bootstrap/bootstrap-service.js.map +1 -1
  84. package/dist/server/modules/butler/assistant-automation-service.d.ts +1 -1
  85. package/dist/server/modules/butler/assistant-automation-service.js +9 -10
  86. package/dist/server/modules/butler/assistant-automation-service.js.map +1 -1
  87. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +32 -0
  88. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +93 -0
  89. package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +1 -0
  90. package/dist/server/modules/butler/assistant-sandbox-service.d.ts +69 -0
  91. package/dist/server/modules/butler/assistant-sandbox-service.js +399 -0
  92. package/dist/server/modules/butler/assistant-sandbox-service.js.map +1 -0
  93. package/dist/server/modules/butler/butler-action-context-service.js +2 -2
  94. package/dist/server/modules/butler/butler-action-context-service.js.map +1 -1
  95. package/dist/server/modules/butler/butler-control-action-service.d.ts +5 -5
  96. package/dist/server/modules/butler/butler-control-action-service.js +19 -19
  97. package/dist/server/modules/butler/butler-control-action-service.js.map +1 -1
  98. package/dist/server/modules/butler/butler-control-session-service.d.ts +1 -1
  99. package/dist/server/modules/butler/butler-control-session-service.js +27 -26
  100. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  101. package/dist/server/modules/butler/butler-control-timer-service.js +4 -5
  102. package/dist/server/modules/butler/butler-control-timer-service.js.map +1 -1
  103. package/dist/server/modules/butler/butler-controller.d.ts +2 -2
  104. package/dist/server/modules/butler/butler-controller.js +19 -17
  105. package/dist/server/modules/butler/butler-controller.js.map +1 -1
  106. package/dist/server/modules/butler/butler-follow-up-service.d.ts +3 -0
  107. package/dist/server/modules/butler/butler-follow-up-service.js +11 -1
  108. package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
  109. package/dist/server/modules/butler/butler-inbox-service.d.ts +3 -0
  110. package/dist/server/modules/butler/butler-inbox-service.js +14 -2
  111. package/dist/server/modules/butler/butler-inbox-service.js.map +1 -1
  112. package/dist/server/modules/butler/butler-profile-service.d.ts +5 -5
  113. package/dist/server/modules/butler/butler-profile-service.js +17 -16
  114. package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
  115. package/dist/server/modules/butler/butler-project-service.d.ts +7 -6
  116. package/dist/server/modules/butler/butler-project-service.js +35 -21
  117. package/dist/server/modules/butler/butler-project-service.js.map +1 -1
  118. package/dist/server/modules/butler/butler-session-service.d.ts +5 -2
  119. package/dist/server/modules/butler/butler-session-service.js +51 -27
  120. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  121. package/dist/server/modules/butler/butler-session-summary-service.d.ts +2 -2
  122. package/dist/server/modules/butler/butler-session-summary-service.js +23 -9
  123. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  124. package/dist/server/modules/butler/context-aggregator.js +9 -9
  125. package/dist/server/modules/butler/context-aggregator.js.map +1 -1
  126. package/dist/server/modules/butler/patrol-execution-service.d.ts +0 -1
  127. package/dist/server/modules/butler/patrol-execution-service.js +6 -12
  128. package/dist/server/modules/butler/patrol-execution-service.js.map +1 -1
  129. package/dist/server/modules/channels/wechat-claw-client.d.ts +51 -0
  130. package/dist/server/modules/channels/wechat-claw-client.js +245 -0
  131. package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
  132. package/dist/server/modules/file/file-controller.d.ts +11 -2
  133. package/dist/server/modules/file/file-controller.js +404 -17
  134. package/dist/server/modules/file/file-controller.js.map +1 -1
  135. package/dist/server/modules/file/file-search-service.js +200 -12
  136. package/dist/server/modules/file/file-search-service.js.map +1 -1
  137. package/dist/server/modules/file/runtime/codingns-workspace-bridge.js +18 -5
  138. package/dist/server/modules/file/workspace-file-bridge-service.d.ts +9 -0
  139. package/dist/server/modules/file/workspace-file-bridge-service.js +3 -0
  140. package/dist/server/modules/file/workspace-file-bridge-service.js.map +1 -1
  141. package/dist/server/modules/file/workspace-file-bridge-watch-service.d.ts +9 -0
  142. package/dist/server/modules/file/workspace-file-bridge-watch-service.js +28 -0
  143. package/dist/server/modules/file/workspace-file-bridge-watch-service.js.map +1 -1
  144. package/dist/server/modules/sessions/session-controller.js +3 -3
  145. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  146. package/dist/server/modules/sessions/session-history-service.d.ts +8 -3
  147. package/dist/server/modules/sessions/session-history-service.js +126 -11
  148. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  149. package/dist/server/modules/sessions/session-live-runtime-service.js +25 -15
  150. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  151. package/dist/server/modules/sessions/session-permission-request-service.js +28 -15
  152. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  153. package/dist/server/modules/tasks/task-types.d.ts +1 -0
  154. package/dist/server/modules/tasks/task-types.js +1 -0
  155. package/dist/server/modules/tasks/task-types.js.map +1 -1
  156. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.d.ts +1 -1
  157. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js +22 -5
  158. package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js.map +1 -1
  159. package/dist/server/modules/workbench/workbench-controller.d.ts +5 -0
  160. package/dist/server/modules/workbench/workbench-controller.js +20 -0
  161. package/dist/server/modules/workbench/workbench-controller.js.map +1 -1
  162. package/dist/server/modules/workbench/workbench-service.d.ts +6 -6
  163. package/dist/server/modules/workbench/workbench-service.js +42 -45
  164. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  165. package/dist/server/modules/workspace/affairs-library-controller.d.ts +8 -0
  166. package/dist/server/modules/workspace/affairs-library-controller.js +11 -0
  167. package/dist/server/modules/workspace/affairs-library-controller.js.map +1 -1
  168. package/dist/server/modules/workspace/affairs-library-preview-link-service.d.ts +6 -0
  169. package/dist/server/modules/workspace/affairs-library-preview-link-service.js +12 -2
  170. package/dist/server/modules/workspace/affairs-library-preview-link-service.js.map +1 -1
  171. package/dist/server/modules/workspace/affairs-library-service.d.ts +12 -1
  172. package/dist/server/modules/workspace/affairs-library-service.js +294 -96
  173. package/dist/server/modules/workspace/affairs-library-service.js.map +1 -1
  174. package/dist/server/modules/workspace/affairs-lightweight-session-controller.d.ts +8 -0
  175. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js +55 -8
  176. package/dist/server/modules/workspace/affairs-lightweight-session-controller.js.map +1 -1
  177. package/dist/server/modules/workspace/affairs-lightweight-session-service.d.ts +13 -0
  178. package/dist/server/modules/workspace/affairs-lightweight-session-service.js +167 -21
  179. package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -1
  180. package/dist/server/modules/workspace/affairs-tag-controller.d.ts +3 -0
  181. package/dist/server/modules/workspace/affairs-tag-controller.js +5 -0
  182. package/dist/server/modules/workspace/affairs-tag-controller.js.map +1 -1
  183. package/dist/server/modules/workspace/affairs-tag-service.d.ts +34 -1
  184. package/dist/server/modules/workspace/affairs-tag-service.js +568 -4
  185. package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -1
  186. package/dist/server/modules/workspace/teable-api-client.d.ts +118 -0
  187. package/dist/server/modules/workspace/teable-api-client.js +142 -0
  188. package/dist/server/modules/workspace/teable-api-client.js.map +1 -0
  189. package/dist/server/modules/workspace/teable-catalog-controller.d.ts +18 -0
  190. package/dist/server/modules/workspace/teable-catalog-controller.js +17 -0
  191. package/dist/server/modules/workspace/teable-catalog-controller.js.map +1 -0
  192. package/dist/server/modules/workspace/teable-catalog-service.d.ts +36 -0
  193. package/dist/server/modules/workspace/teable-catalog-service.js +124 -0
  194. package/dist/server/modules/workspace/teable-catalog-service.js.map +1 -0
  195. package/dist/server/modules/workspace/teable-credential-service.d.ts +8 -0
  196. package/dist/server/modules/workspace/teable-credential-service.js +37 -0
  197. package/dist/server/modules/workspace/teable-credential-service.js.map +1 -0
  198. package/dist/server/modules/workspace/teable-field-mapping-controller.d.ts +25 -0
  199. package/dist/server/modules/workspace/teable-field-mapping-controller.js +31 -0
  200. package/dist/server/modules/workspace/teable-field-mapping-controller.js.map +1 -0
  201. package/dist/server/modules/workspace/teable-field-mapping-service.d.ts +38 -0
  202. package/dist/server/modules/workspace/teable-field-mapping-service.js +215 -0
  203. package/dist/server/modules/workspace/teable-field-mapping-service.js.map +1 -0
  204. package/dist/server/modules/workspace/teable-global-binding-controller.d.ts +22 -0
  205. package/dist/server/modules/workspace/teable-global-binding-controller.js +25 -0
  206. package/dist/server/modules/workspace/teable-global-binding-controller.js.map +1 -0
  207. package/dist/server/modules/workspace/teable-global-binding-service.d.ts +35 -0
  208. package/dist/server/modules/workspace/teable-global-binding-service.js +151 -0
  209. package/dist/server/modules/workspace/teable-global-binding-service.js.map +1 -0
  210. package/dist/server/modules/workspace/teable-mirror-sync-controller.d.ts +29 -0
  211. package/dist/server/modules/workspace/teable-mirror-sync-controller.js +50 -0
  212. package/dist/server/modules/workspace/teable-mirror-sync-controller.js.map +1 -0
  213. package/dist/server/modules/workspace/teable-mirror-sync-service.d.ts +157 -0
  214. package/dist/server/modules/workspace/teable-mirror-sync-service.js +917 -0
  215. package/dist/server/modules/workspace/teable-mirror-sync-service.js.map +1 -0
  216. package/dist/server/modules/workspace/teable-runtime-controller.d.ts +58 -0
  217. package/dist/server/modules/workspace/teable-runtime-controller.js +60 -0
  218. package/dist/server/modules/workspace/teable-runtime-controller.js.map +1 -0
  219. package/dist/server/modules/workspace/teable-runtime-service.d.ts +96 -0
  220. package/dist/server/modules/workspace/teable-runtime-service.js +362 -0
  221. package/dist/server/modules/workspace/teable-runtime-service.js.map +1 -0
  222. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.d.ts +22 -0
  223. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js +20 -0
  224. package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js.map +1 -0
  225. package/dist/server/modules/workspace/teable-workbench-sync-config-service.d.ts +22 -0
  226. package/dist/server/modules/workspace/teable-workbench-sync-config-service.js +159 -0
  227. package/dist/server/modules/workspace/teable-workbench-sync-config-service.js.map +1 -0
  228. package/dist/server/modules/workspace/workspace-controller.d.ts +1 -1
  229. package/dist/server/modules/workspace/workspace-controller.js +7 -7
  230. package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
  231. package/dist/server/modules/workspace/workspace-service.d.ts +7 -0
  232. package/dist/server/modules/workspace/workspace-service.js +151 -10
  233. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  234. package/dist/server/routes/affairs.d.ts +9 -1
  235. package/dist/server/routes/affairs.js +120 -1
  236. package/dist/server/routes/affairs.js.map +1 -1
  237. package/dist/server/routes/auth.js +6 -0
  238. package/dist/server/routes/auth.js.map +1 -1
  239. package/dist/server/routes/workbench.js +15 -0
  240. package/dist/server/routes/workbench.js.map +1 -1
  241. package/dist/server/routes/workspaces.js +51 -41
  242. package/dist/server/routes/workspaces.js.map +1 -1
  243. package/dist/server/server/create-server.d.ts +18 -0
  244. package/dist/server/server/create-server.js +99 -7
  245. package/dist/server/server/create-server.js.map +1 -1
  246. package/dist/server/server/start-host.js +20 -0
  247. package/dist/server/server/start-host.js.map +1 -1
  248. package/dist/server/shared/http/request-diagnostics.d.ts +56 -0
  249. package/dist/server/shared/http/request-diagnostics.js +256 -0
  250. package/dist/server/shared/http/request-diagnostics.js.map +1 -0
  251. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +18 -0
  252. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +191 -0
  253. package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +1 -0
  254. package/dist/server/storage/repositories/auth-token-repository.d.ts +1 -0
  255. package/dist/server/storage/repositories/auth-token-repository.js +8 -0
  256. package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
  257. package/dist/server/storage/repositories/auth-user-repository.d.ts +50 -0
  258. package/dist/server/storage/repositories/auth-user-repository.js +198 -27
  259. package/dist/server/storage/repositories/auth-user-repository.js.map +1 -1
  260. package/dist/server/storage/repositories/butler-control-session-repository.d.ts +4 -1
  261. package/dist/server/storage/repositories/butler-control-session-repository.js +55 -8
  262. package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -1
  263. package/dist/server/storage/repositories/butler-profile-repository.d.ts +2 -1
  264. package/dist/server/storage/repositories/butler-profile-repository.js +35 -6
  265. package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -1
  266. package/dist/server/storage/repositories/butler-project-repository.d.ts +2 -0
  267. package/dist/server/storage/repositories/butler-project-repository.js +38 -4
  268. package/dist/server/storage/repositories/butler-project-repository.js.map +1 -1
  269. package/dist/server/storage/repositories/butler-session-repository.d.ts +2 -1
  270. package/dist/server/storage/repositories/butler-session-repository.js +35 -6
  271. package/dist/server/storage/repositories/butler-session-repository.js.map +1 -1
  272. package/dist/server/storage/repositories/session-binding-repository.d.ts +3 -0
  273. package/dist/server/storage/repositories/session-binding-repository.js +70 -2
  274. package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
  275. package/dist/server/storage/repositories/session-index-repository.js +7 -5
  276. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  277. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js +8 -5
  278. package/dist/server/storage/repositories/user-affairs-library-setting-repository.js.map +1 -1
  279. package/dist/server/storage/repositories/user-teable-credential-repository.d.ts +9 -0
  280. package/dist/server/storage/repositories/user-teable-credential-repository.js +45 -0
  281. package/dist/server/storage/repositories/user-teable-credential-repository.js.map +1 -0
  282. package/dist/server/storage/repositories/user-teable-field-mapping-repository.d.ts +10 -0
  283. package/dist/server/storage/repositories/user-teable-field-mapping-repository.js +69 -0
  284. package/dist/server/storage/repositories/user-teable-field-mapping-repository.js.map +1 -0
  285. package/dist/server/storage/repositories/user-teable-global-setting-repository.d.ts +8 -0
  286. package/dist/server/storage/repositories/user-teable-global-setting-repository.js +52 -0
  287. package/dist/server/storage/repositories/user-teable-global-setting-repository.js.map +1 -0
  288. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.d.ts +9 -0
  289. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js +66 -0
  290. package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js.map +1 -0
  291. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.d.ts +9 -0
  292. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js +67 -0
  293. package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js.map +1 -0
  294. package/dist/server/storage/repositories/user-teable-sync-log-repository.d.ts +14 -0
  295. package/dist/server/storage/repositories/user-teable-sync-log-repository.js +97 -0
  296. package/dist/server/storage/repositories/user-teable-sync-log-repository.js.map +1 -0
  297. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.d.ts +8 -0
  298. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js +55 -0
  299. package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js.map +1 -0
  300. package/dist/server/storage/repositories/workspace-repository.d.ts +3 -1
  301. package/dist/server/storage/repositories/workspace-repository.js +24 -10
  302. package/dist/server/storage/repositories/workspace-repository.js.map +1 -1
  303. package/dist/server/storage/sqlite/client.js +692 -1
  304. package/dist/server/storage/sqlite/client.js.map +1 -1
  305. package/dist/server/storage/sqlite/schema.sql +200 -10
  306. package/dist/server/types/domain.d.ts +114 -1
  307. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +34 -7
  308. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +1 -1
  309. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +3 -7
  310. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -1
  311. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +22 -3
  312. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +29 -2
  313. package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -1
  314. package/node_modules/@codingns/session-sync-core/package.json +3 -1
  315. package/package.json +1 -1
  316. package/dist/public/assets/DesktopWindowPage-D0blSuKd.js +0 -2
  317. package/dist/public/assets/FileContextPanel-BrKO8Xt6.js +0 -1
  318. package/dist/public/assets/GitSidebar-BdwiDtOr.js +0 -6
  319. package/dist/public/assets/MobileCreateSessionSheet-Cx_dBiBb.js +0 -1
  320. package/dist/public/assets/SettingsPage-BlAZCHsy.js +0 -2
  321. package/dist/public/assets/TerminalManagerPanel-CjzbiWjl.js +0 -1
  322. package/dist/public/assets/WorkbenchLayout-CikJBS62.js +0 -1019
  323. package/dist/public/assets/WorkbenchShellRoute-BbbSOiZw.js +0 -1
  324. package/dist/public/assets/WorkbenchShellRoute-DT3VMjWD.css +0 -1
  325. package/dist/public/assets/WorkspaceDebugDetailPage-CVivdPx5.js +0 -1
  326. package/dist/public/assets/WorkspaceDetailPage-DgOSjscR.js +0 -1
  327. package/dist/public/assets/WorkspaceHomePage-HPa7M_Vh.js +0 -1
  328. package/dist/public/assets/index-BxJPQpFM.css +0 -1
  329. package/dist/public/assets/index-CeXGOT_T.js +0 -50
  330. package/dist/public/assets/useRegisteredDebugTemplates-Bol3NVfN.js +0 -1
  331. package/dist/public/assets/workbench-navigation-B7IjRQd8.js +0 -1
@@ -0,0 +1,2 @@
1
+ import{b as l,j as e,t as s,C as $,c as ms,e as Ee,w as ss,A as Fe,M as Qe,N as ot,O as Ln,P as Ts,Q as In,S as st,h as On,f as Un,T as ws,q as Rn,n as Fn,d as ks,m as Bn}from"./index-_OCkVmfl.js";import{g as qn,j as dt,k as _n,l as Hn,m as Wn,n as Vn,e as hs,f as tt,u as nt,o as $n,p as zn,c as Kn,L as $t,q as zt,s as Kt}from"./App-If9gThKM.js";import{k as ut,bk as Gn,bl as Gt,bm as he,bn as Jn,bo as Cs,bp as Qn,z as Zn,bq as Yn,br as Xn,bs as ea,c as sa,d as ta,bt as na,bu as aa,bv as gt,bw as ia,bx as la,by as ra,bz as ca,bA as oa,bB as da,bC as ua,bD as ga,bE as ma,u as as,b as Jt,bF as is}from"./WorkbenchLayout-D-U7ghT0.js";import{M as ha,D as Re}from"./DesktopModal-bMdI1jEe.js";import{W as ts}from"./WorkbenchModal-xbx1o6MO.js";import{c as ee,d as Y,M as oe,x as ie,K as re,u as pe,v as me,O as pa}from"./workbench-navigation-RyUjchbD.js";import{M as Le}from"./MobileSheet-BXvQPkxt.js";import{l as ba,g as fa,a as xa,b as ya,r as ja,d as va,e as Na}from"./plugins-api-DHJVvPZw.js";import{P as Sa}from"./PluginAccessOverview-C77TeZTK.js";import{M as Ta}from"./MobileTopHeaderFrame-vdYOyaaB.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-B5GmiOrR.js";import"./plugin-permission-copy-DIVk5jNp.js";const mt=2e4,wa=1e3,ka=5e3;function Ca({isOpen:t,onClose:a}){const[n,r]=l.useState(null),[o,h]=l.useState(null),[y,T]=l.useState(!1),[b,j]=l.useState(!1),[d,k]=l.useState(null),O=l.useRef(null);if(l.useEffect(()=>{if(!t)return;let g=!1;async function N(){T(!0),k(null),h(null);try{const f=await $.request("/api/observability/runtime/session",{method:"POST",body:JSON.stringify({ttlMs:mt})});if(g){await Ms(f.sessionId);return}O.current=f.sessionId,r(f);const x=await ht(f.sessionId);if(g){await Ms(f.sessionId);return}h(x)}catch(f){g||k(Ds(f))}finally{g||T(!1)}}return N(),()=>{g=!0;const f=O.current;O.current=null,r(null),h(null),T(!1),j(!1),k(null),f&&Ms(f)}},[t]),l.useEffect(()=>{const g=(n==null?void 0:n.sessionId)??null;if(!t||!g)return;const N=g;let f=!1;async function x(){j(!0);try{const w=await ht(N);f||(h(w),k(null))}catch(w){f||k(Ds(w))}finally{f||j(!1)}}const c=window.setInterval(()=>{x()},wa);return()=>{f=!0,window.clearInterval(c)}},[t,n==null?void 0:n.sessionId]),l.useEffect(()=>{const g=(n==null?void 0:n.sessionId)??null;if(!t||!g)return;const N=g;let f=!1;async function x(){try{const w=await $.request(`/api/observability/runtime/session/${N}/heartbeat`,{method:"POST",body:JSON.stringify({ttlMs:mt})});f||r(w)}catch(w){f||k(Ds(w))}}const c=window.setInterval(()=>{x()},ka);return()=>{f=!0,window.clearInterval(c)}},[t,n==null?void 0:n.sessionId]),!t||typeof document>"u")return null;const M=Object.entries((o==null?void 0:o.backgroundTasks.taskTypes)??{}),E=(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 qn.createPortal(e.jsxs("div",{className:"workbench-modal-layer parallel-task-debug-modal-layer","aria-hidden":!t,children:[e.jsx("button",{type:"button",className:"workbench-modal-backdrop parallel-task-debug-modal-backdrop","aria-label":s("settings.parallelTaskDebugClose"),onClick:a}),e.jsxs("div",{className:"workbench-modal-card surface-card parallel-task-debug-modal-card",role:"dialog","aria-modal":"true","aria-labelledby":"parallel-task-debug-title",children:[e.jsxs("div",{className:"workbench-modal-header",children:[e.jsxs("div",{className:"workbench-modal-title-wrap",children:[e.jsx("h2",{id:"parallel-task-debug-title",children:s("settings.parallelTaskDebugModalTitle")}),e.jsx("p",{children:s("settings.parallelTaskDebugModalDescription")})]}),e.jsxs("div",{className:"workbench-modal-header-actions",children:[e.jsx("span",{className:"parallel-task-debug-status-chip","data-tone":d?"error":"active",children:d?s("settings.parallelTaskDebugStatusError"):s("settings.parallelTaskDebugStatusActive")}),e.jsx(ha,{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:As(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:As(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:Ma((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")})]})]}),y?e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugLoading")}):null,!y&&d?e.jsx("div",{className:"parallel-task-debug-error",children:d}):null,!y&&!d&&o?e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugCountersTitle")}),e.jsx("span",{children:b?s("common.loading"):s("settings.parallelTaskDebugAutoRefresh")})]}),e.jsx("div",{className:"parallel-task-debug-counter-grid",children:R.map(([g,N])=>e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:Aa(g)}),e.jsx("strong",{children:N})]},g))})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugRegisteredTasksTitle")}),e.jsx("span",{children:E.length})]}),E.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:E.map(g=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:g.taskType}),e.jsx("span",{children:Ps(g.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCategory"),": ",pt(g.taskType)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRuntime"),": ",bt(g.executionLane,g.taskType)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskTimeout"),": ",we(g.timeoutMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskConcurrency"),": ",g.concurrency??s("common.none")]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRetry"),": ",g.retryMaxAttempts??s("common.none")]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskHelper"),": ",g.helperProcessHandler??s("common.none")]})]})]},g.taskType))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugRegisteredTasksEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugTaskMetricsTitle")}),e.jsx("span",{children:M.length})]}),M.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:M.map(([g,N])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:g}),e.jsx("span",{children:Ps(N.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCategory"),": ",pt(g)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRuntime"),": ",bt(N.executionLane,g)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitAvg"),": ",we(N.waitMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunAvg"),": ",we(N.runMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMax"),": ",we(N.runMs.max)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugStartedCount"),": ",N.counters.started??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFinishedCount"),": ",N.counters.finished??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFailedCount"),": ",N.counters.failed??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugCacheHitCount"),": ",N.counters.cache_hit??0]})]})]},g))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugActiveTaskMetricsEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugSchedulerTitle")}),e.jsx("span",{children:v.length})]}),v.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:v.map(([g,N])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:g}),e.jsx("span",{children:N.lastIdle?s("settings.parallelTaskDebugIdle"):s("settings.parallelTaskDebugBusy")})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTickTotal"),": ",N.tickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugIdleTickTotal"),": ",N.idleTickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCountTotal"),": ",N.taskCountTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSchedulerErrorTotal"),": ",N.errorTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugLastDuration"),": ",we(N.lastDurationMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugNextDelay"),": ",we(N.nextDelayMs)]})]})]},g))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugEventLoopTitle")}),e.jsx("span",{children:o.eventLoop.enabled?s("settings.parallelTaskDebugCollectorEnabled"):s("settings.parallelTaskDebugCollectorDisabled")})]}),e.jsxs("div",{className:"parallel-task-debug-counter-grid",children:[e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopResolution")}),e.jsx("strong",{children:we(o.eventLoop.resolutionMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMean")}),e.jsx("strong",{children:we(o.eventLoop.meanMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP95")}),e.jsx("strong",{children:we(o.eventLoop.p95Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP99")}),e.jsx("strong",{children:we(o.eventLoop.p99Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMax")}),e.jsx("strong",{children:we(o.eventLoop.maxMs)})]})]})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugRecentActivitiesTitle")}),e.jsx("span",{children:o.recentTaskActivities.length})]}),o.recentTaskActivities.length>0?e.jsx("div",{className:"parallel-task-debug-activity-list",children:o.recentTaskActivities.map(g=>e.jsxs("article",{className:"parallel-task-debug-activity-item",children:[e.jsxs("div",{className:"parallel-task-debug-activity-main",children:[e.jsxs("div",{className:"parallel-task-debug-activity-title-row",children:[e.jsx("strong",{children:g.taskType}),e.jsx("span",{children:Pa(g.eventType)}),e.jsx("span",{children:Ps(g.executionLane)})]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugTaskKey"),": ",g.key]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugStatus"),": ",g.status?Ea(g.status):"-"]})]}),e.jsxs("div",{className:"parallel-task-debug-activity-meta",children:[e.jsx("span",{children:As(g.recordedAt)}),e.jsxs("span",{children:[s("settings.parallelTaskDebugAttempt"),": ",g.attempt??"-"]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitMs"),": ",we(g.waitMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMs"),": ",we(g.runMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSource"),": ",g.source??"-"]}),g.errorMessage?e.jsxs("span",{children:[s("settings.parallelTaskDebugError"),": ",g.errorMessage]}):null]})]},g.eventId))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]})]}):null]})]})]}),document.body)}async function ht(t){return await $.request(`/api/observability/runtime?sessionId=${encodeURIComponent(t)}`)}async function Ms(t){try{await $.request(`/api/observability/runtime/session/${t}`,{method:"DELETE"})}catch{}}function Ds(t){return t instanceof Error&&t.message?t.message:s("settings.parallelTaskDebugLoadFailed")}function As(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function we(t){return t==null||Number.isNaN(t)?"-":`${Math.round(t*100)/100} ms`}function Ma(t){return t===null||Number.isNaN(t)?"-":`${Math.round(t/1e3)} s`}const Da=new Set(["affairs.library_apply_config","affairs.library_index","affairs.library_export"]);function Qt(t){return Da.has(t)}function pt(t){return Qt(t)?s("settings.parallelTaskDebugTaskCategoryBuiltinIndexer"):s("settings.parallelTaskDebugTaskCategoryGeneric")}function bt(t,a){if(t==="helper_process"&&Qt(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 Aa(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 Ps(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 Pa(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 Ea(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 ft(){const t=ms(),a=Ee.getState(),n=await t.bridge.getAndroidRuntimeInfo();if(!n.ok||!n.value)throw new Error(n.detail??"读取 Android 运行时信息失败。");const r=await $.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 La(t){return ms().bridge.installAndroidUpdate(t)}function Ia(){const[t,a]=l.useState(!1),[n,r]=l.useState(!1),[o,h]=l.useState(null),[y,T]=l.useState(null),[b,j]=l.useState(null),[d,k]=l.useState(!1),[O,M]=l.useState(null),E=l.useRef(!1);l.useEffect(()=>{if(O===null){E.current=!1;return}const g=O;async function N(){if(!E.current){E.current=!0;try{const c=await ft();if(j(c.manifest),T(c.currentVersion),k(c.hasUpdate),!c.hasUpdate||c.currentVersionCode>=g){h(s("settings.androidInstallSucceeded"));return}h(s("settings.androidInstallCancelled"))}catch(c){h(c instanceof Error?c.message:s("settings.releaseCheckFailed"))}finally{M(null)}}}function f(){N()}function x(){document.visibilityState==="visible"&&N()}return window.addEventListener("focus",f),document.addEventListener("visibilitychange",x),()=>{window.removeEventListener("focus",f),document.removeEventListener("visibilitychange",x)}},[O]);async function v(){a(!0),h(null),M(null);try{const g=await ft();j(g.manifest),T(g.currentVersion),k(g.hasUpdate),h(g.hasUpdate?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate"))}catch(g){h(g instanceof Error?g.message:s("settings.releaseCheckFailed"))}finally{a(!1)}}async function R(){if(b){r(!0),h(null),M(null);try{const g=await La(b);if(g.status==="installer_started"){h(s("settings.androidInstallerStarted")),M(b.versionCode);return}if(g.status==="permission_required"){h(g.detail??s("settings.androidInstallPermissionRequired")),M(null);return}if(g.status==="already_up_to_date"){h(s("settings.releaseUpToDate")),k(!1),M(null);return}h(g.detail??s("settings.releaseInstallFailed")),M(null)}catch(g){h(g instanceof Error?g.message:s("settings.releaseInstallFailed")),M(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:y??s("settings.releaseUnknownVersion")})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(b==null?void 0:b.version)??"-"})]})]}),o?e.jsx("p",{className:"settings-update-status","data-tone":d?"warning":"success",children:o}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:t||n,onClick:v,children:t?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!b||!d||n,onClick:R,children:n?s("common.loading"):s("settings.releaseInstallNow")})]})]})}function Oa(){const t=ms(),a=t.isDesktop,[n,r]=l.useState(!1),[o,h]=l.useState(!1),[y,T]=l.useState(!1),[b,j]=l.useState(null),[d,k]=l.useState(null),O=dt(L=>L.latestState),M=dt(L=>L.pendingRestartVersion),E=(O==null?void 0:O.currentVersion)??null,v=(O==null?void 0:O.manifest)??null,R=(O==null?void 0:O.hasUpdate)??!1,g=!!M,N=g&&d!==M;async function f(){if(!g){r(!0),j(null);try{const L=await _n({notify:"always"});j(xt(L.manifest,L.hasUpdate))}catch(L){j(L instanceof Error?L.message:s("settings.releaseCheckFailed"))}finally{r(!1)}}}async function x(){if(!(!v||!R||g)){h(!0),j(null);try{const L=await Hn();if(!L.ok){j(L.detail??s("settings.releaseInstallFailed"));return}Wn(v.version),k(null),j(s("settings.releaseRestartRequired"))}catch(L){j(L instanceof Error?L.message:s("settings.releaseInstallFailed"))}finally{h(!1)}}}async function c(){if(v!=null&&v.htmlUrl){T(!0);try{const L=await t.bridge.openExternal(v.htmlUrl);L.ok||j(L.detail??s("settings.releasePageOpenFailed"))}catch(L){j(L instanceof Error?L.message:s("settings.releasePageOpenFailed"))}finally{T(!1)}}}const w=!!(a&&v&&R&&!g),D=b??(a?g?s("settings.releaseRestartRequired"):O?xt(O.manifest,O.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:E??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)??M??"-"})]})]}),D?e.jsx("p",{className:"settings-update-status","data-tone":Ua(v,R,D,g),children:D}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:!a||n||o||g,onClick:f,children:n?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!w||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||y,onClick:c,children:y?s("common.loading"):s("settings.releaseOpenPage")})]})]}),e.jsx(Ra,{open:N,version:M,onClose:()=>k(M)})]})}function xt(t,a){return a?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate")}function Ua(t,a,n,r){return n===s("settings.clientUpdateUnsupported")?"neutral":r||a?"warning":"success"}function Ra({open:t,version:a,onClose:n}){const[r,o]=l.useState(!1),[h,y]=l.useState(null);async function T(){o(!0),y(null);try{await Vn()}catch(b){y(b instanceof Error?b.message:s("settings.releaseRestartFailed")),o(!1)}}return e.jsx(ts,{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:T,children:r?s("common.loading"):s("settings.releaseRestartConfirm")})]})]})})}function Zt(){const t=ms();return t.platform==="desktop"?e.jsx(Oa,{}):t.platform==="android"?e.jsx(Ia,{}):e.jsx("div",{className:"settings-update-card",children:e.jsx("p",{className:"settings-update-status","data-tone":"neutral",children:s("settings.clientUpdateUnsupported")})})}const Fa="https://github.com/SaladDay/cc-switch-cli",Ba="当前机器未安装 cc-switch-cli。这里集成的是 CC-Switch 的衍生 CLI 版本,不是 CC-Switch UI 版本。请先安装:",qa=/(https?:\/\/[^\s]+)/i;function Yt(){const t=ss(c=>{var w;return((w=c.session)==null?void 0:w.accessToken)??null}),[a,n]=l.useState(null),[r,o]=l.useState(!0),[h,y]=l.useState(null),[T,b]=l.useState(null),[j,d]=l.useState(null),[k,O]=l.useState(!1),[M,E]=l.useState("codex");l.useEffect(()=>{let c=!0;if(!t){n(null),b(null),d(null),o(!1);return}return(async()=>{o(!0);try{const D=await ut();if(!c)return;n(D),b(null),E(L=>jt(D,L))}catch(D){if(!c)return;b(Es(D))}finally{c&&o(!1)}})(),()=>{c=!1}},[t]);async function v(){const c=await ut();n(c),b(null),E(w=>jt(c,w))}async function R(){if(t){y("refresh"),b(null),d(null);try{await v(),d(s("settings.modelManagementRefreshSuccess"))}catch(c){b(Es(c))}finally{y(null)}}}async function g(c,w){if(!t||w.isCurrent)return;const D=yt(c,w.id);y(D),b(null),d(null);try{const L=await Gn({app:c,presetId:w.id});Gt(),n(S=>_a(S,L)),d(s("settings.modelManagementSwitchSuccess",{app:L.displayName,preset:L.currentPresetName??w.name}))}catch(L){b(Es(L))}finally{y(null)}}const N=(a==null?void 0:a.items)??[],f=N.find(c=>c.app===M)??N[0]??null,x=Wa(N);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-panel",children:e.jsxs("div",{className:"settings-release-card",children:[j?e.jsx("p",{className:"settings-release-status",children:j}):null,T?e.jsx("p",{className:"settings-release-status",children:T}):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})]}):N.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-grid",children:N.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:Ha(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:()=>{O(!0)},children:s("settings.modelManagementOpenSwitcher")})})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})}),e.jsxs(ts,{open:k&&!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:()=>O(!1),children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.modelManagementTabsLabel"),children:N.map(c=>{const w=(f==null?void 0:f.app)===c.app;return e.jsx("button",{type:"button",role:"tab",className:"settings-model-tab","aria-selected":w,"data-active":w?"true":"false",onClick:()=>E(c.app),children:c.displayName},c.app)})}),f?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:f.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:f.currentModel??s("settings.modelManagementModelUnknown")})]})]}),f.statusText?e.jsx("p",{className:"settings-model-modal-note",children:f.statusText}):null,f.options.length>0?e.jsx("div",{className:"settings-model-switcher-list",children:f.options.map(c=>{const w=yt(f.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||f.status!=="ready",onClick:()=>{g(f.app,c)},children:h===w?s("common.loading"):s("settings.modelManagementSwitchAction")})})]},`${f.app}:${c.id}`)})}):e.jsx("div",{className:"settings-model-empty",children:f.statusText??s("settings.modelManagementOptionsEmpty")})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})]})}function yt(t,a){return`switch:${t}:${a}`}function _a(t,a){return t&&{...t,scannedAt:new Date().toISOString(),items:t.items.map(n=>n.app===a.app?a:n)}}function jt(t,a){var r;return t.items.some(o=>o.app===a)?a:((r=t.items[0])==null?void 0:r.app)??"codex"}function Ha(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 Es(t){return t instanceof Fe?t.message||s("settings.modelManagementLoadFailed"):t instanceof Error?t.message:s("settings.modelManagementLoadFailed")}function Wa(t){var r,o,h;if(t.length===0||!t.every(y=>y.status==="unavailable"&&!y.cliAvailable&&!!y.statusText))return null;const n=((h=(((o=(r=t[0])==null?void 0:r.statusText)==null?void 0:o.trim())??"").match(qa))==null?void 0:h[1])??Fa;return{message:Ba,url:n}}function Xt({triggerClassName:t="settings-button",triggerLabel:a,mobile:n=!1}){const r=ss(S=>{var F;return((F=S.session)==null?void 0:F.accessToken)??null}),o=ss(S=>{var F;return((F=S.session)==null?void 0:F.user)??null}),[h,y]=l.useState(!1),[T,b]=l.useState(!1),[j,d]=l.useState(null),[k,O]=l.useState(null),[M,E]=l.useState(null),[v,R]=l.useState(null),[g,N]=l.useState(null),[f,x]=l.useState(bs(null));l.useEffect(()=>{k&&x(bs(k))},[k]),l.useEffect(()=>{let S=!0;if(!h)return;if(!r){O(null),E(null),N(null),R(null),b(!1);return}return(async()=>{b(!0),N(null);try{const[z,se]=await Promise.all([Jn(),Cs()]);if(!S)return;O(z),E(se)}catch(z){if(!S)return;N(Ls(z))}finally{S&&b(!1)}})(),()=>{S=!1}},[r,h]);function c(){y(!1),R(null),N(null),x(bs(k))}async function w(){if(r){d("check"),N(null),R(null);try{const S=await Cs();E(S),R(s("settings.skillOnlyOfficeCheckSuccess"))}catch(S){N(Ls(S))}finally{d(null)}}}async function D(){if(r){d("save"),N(null),R(null);try{const S=await Qn({enabled:f.enabled,serverUrl:f.serverUrl,publicBaseUrl:f.publicBaseUrl,callbackBaseUrl:f.callbackBaseUrl,userDisplayName:f.userDisplayName,userAvatarUrl:f.userAvatarUrl,jwtSecret:f.jwtSecret,clearJwtSecret:f.clearJwtSecret}),F=await Cs();O(S),E(F),x(bs(S)),R(s("settings.skillOnlyOfficeSaveSuccess"))}catch(S){N(Ls(S))}finally{d(null)}}}const L=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:Ga(M).map(S=>e.jsxs("div",{className:"settings-onlyoffice-metric-card","data-tone":S.tone,role:"listitem",tabIndex:0,children:[e.jsx("span",{className:"settings-onlyoffice-metric-label",children:S.label}),e.jsx("strong",{className:"settings-onlyoffice-metric-value",children:S.value}),e.jsx("div",{className:"settings-onlyoffice-metric-tooltip",role:"note",children:S.detail})]},S.key))})}),e.jsxs(ee,{heading:s("settings.skillOnlyOfficeSectionTitle"),children:[e.jsx(Y,{label:s("settings.skillOnlyOfficeEnabledLabel"),children:e.jsxs("div",{className:"settings-onlyoffice-switch-field",children:[e.jsx(he,{checked:f.enabled,label:s("settings.skillOnlyOfficeEnabledLabel"),semanticRole:"switch",onChange:S=>{x(F=>({...F,enabled:S}))}}),e.jsx("span",{className:"settings-onlyoffice-switch-caption",children:f.enabled?s("common.enabled"):s("settings.skillOnlyOfficeStatusDisabled")})]})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeServerUrlLabel"),htmlFor:"onlyoffice-server-url",children:e.jsx("input",{id:"onlyoffice-server-url",className:"settings-text-input",value:f.serverUrl,onChange:S=>{x(F=>({...F,serverUrl:S.target.value}))},placeholder:s("settings.skillOnlyOfficeServerUrlPlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficePublicBaseUrlLabel"),htmlFor:"onlyoffice-public-base-url",children:e.jsx("input",{id:"onlyoffice-public-base-url",className:"settings-text-input",value:f.publicBaseUrl,onChange:S=>{x(F=>({...F,publicBaseUrl:S.target.value}))},placeholder:s("settings.skillOnlyOfficePublicBaseUrlPlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeCallbackBaseUrlLabel"),htmlFor:"onlyoffice-callback-base-url",children:e.jsx("input",{id:"onlyoffice-callback-base-url",className:"settings-text-input",value:f.callbackBaseUrl,onChange:S=>{x(F=>({...F,callbackBaseUrl:S.target.value}))},placeholder:s("settings.skillOnlyOfficeCallbackBaseUrlPlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeUserDisplayNameLabel"),description:s("settings.skillOnlyOfficeUserDisplayNameDescription",{username:(o==null?void 0:o.username)??"-"}),htmlFor:"onlyoffice-user-display-name",children:e.jsx("input",{id:"onlyoffice-user-display-name",className:"settings-text-input",value:f.userDisplayName,onChange:S=>{x(F=>({...F,userDisplayName:S.target.value}))},placeholder:s("settings.skillOnlyOfficeUserDisplayNamePlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeUserAvatarUrlLabel"),description:s("settings.skillOnlyOfficeUserAvatarUrlDescription"),htmlFor:"onlyoffice-user-avatar-url",children:e.jsx("input",{id:"onlyoffice-user-avatar-url",className:"settings-text-input",value:f.userAvatarUrl,onChange:S=>{x(F=>({...F,userAvatarUrl:S.target.value}))},placeholder:s("settings.skillOnlyOfficeUserAvatarUrlPlaceholder")})}),e.jsx(Y,{label:s("settings.skillOnlyOfficeJwtSecretLabel"),htmlFor:"onlyoffice-jwt-secret",children:e.jsx("input",{id:"onlyoffice-jwt-secret",className:"settings-text-input",value:f.jwtSecret,onChange:S=>{x(F=>({...F,jwtSecret:S.target.value,clearJwtSecret:!1}))},placeholder:k!=null&&k.jwtSecretConfigured?s("settings.skillOnlyOfficeJwtSecretKeepPlaceholder"):s("settings.skillOnlyOfficeJwtSecretPlaceholder")})}),k!=null&&k.jwtSecretConfigured?e.jsx(Y,{label:s("settings.skillOnlyOfficeClearJwtSecretLabel"),children:e.jsxs("div",{className:"settings-onlyoffice-switch-field",children:[e.jsx(he,{checked:f.clearJwtSecret,label:s("settings.skillOnlyOfficeClearJwtSecretLabel"),semanticRole:"switch",onChange:S=>{x(F=>({...F,clearJwtSecret:S}))}}),e.jsx("span",{className:"settings-onlyoffice-switch-caption",children:f.clearJwtSecret?s("common.enabled"):s("common.disabled")})]})}):null]}),v?e.jsx("p",{className:"settings-release-status",children:v}):null,g?e.jsx("p",{className:"settings-release-status",children:g}):null,e.jsxs(oe,{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:T||j!==null,onClick:()=>{w()},children:j==="check"?s("settings.opencliLoading"):s("settings.skillOnlyOfficeCheckAction")}),e.jsx("button",{className:"primary-button",type:"button",disabled:T||j!==null,onClick:()=>{D()},children:j==="save"?s("butlerSettingsSaving"):s("settings.skillOnlyOfficeSaveAction")})]})]});return e.jsxs(e.Fragment,{children:[e.jsx("button",{className:t,type:"button",onClick:()=>{y(!0)},children:a??s("settings.skillOnlyOfficeOpenSettingsAction")}),n?e.jsx(Le,{open:h,title:s("settings.skillOnlyOfficeModalTitle"),description:s("settings.skillOnlyOfficeModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:c,children:L}):e.jsx(Re,{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:L})]})}function bs(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 Va(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 $a(t){switch(t){case"ready":return"success";case"warning":case"misconfigured":return"warning";case"error":return"danger";case"disabled":default:return"default"}}function za(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 Ka(t){switch(t){case"pass":return"success";case"warn":return"warning";case"fail":return"danger";case"skip":default:return"default"}}function Ga(t){const a=[{key:"summary",label:s("settings.skillOnlyOfficeStatusLabel"),value:Va(t),detail:(t==null?void 0:t.summary)??s("settings.skillOnlyOfficeStatusUnknown"),tone:$a(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:za(n.status),detail:n.detail,tone:Ka(n.status)});return a}function Ls(t){return t instanceof Fe||t instanceof Error&&t.message.trim().length>0?t.message:s("settings.skillLoadError")}const Ja=[{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 en(){const t=hs(),a=ss(c=>{var w;return((w=c.session)==null?void 0:w.accessToken)??null}),[n,r]=l.useState(!1),[o,h]=l.useState(null),[y,T]=l.useState(null),[b,j]=l.useState(null),{items:d,loading:k}=Zn(n&&!!a),O=Ja.map(c=>({...c,label:s(c.labelKey)}));l.useEffect(()=>{a||(r(!1),h(null),T(null),j(null))},[a]);async function M(){if(a){j(null);try{await ea(!0)}catch(c){j(Os(c,"load"))}}}function E(){r(!0),T(null),j(null),a&&M()}async function v(c){if(!a)return;const w=!c.enabled;h(c.provider),j(null),T(null);try{await Xn(c.provider,w),Gt(),T(w?s("settings.providerManagementEnableSuccess",{provider:c.displayName}):s("settings.providerManagementDisableSuccess",{provider:c.displayName}))}catch(D){j(Os(D,"save"))}h(null)}async function R(){if(a){j(null),T(null);try{await Yn(),T(s("settings.providerManagementRefreshSuccess"))}catch(c){j(Os(c,"load"))}}}const g=d??[],N=g.filter(c=>c.enabled).length,f=g.filter(c=>!c.enabled).length,x=e.jsxs("div",{className:"settings-provider-modal-layout",children:[y?e.jsx("p",{className:"settings-provider-status",children:y}):null,b?e.jsx("p",{className:"settings-provider-error",children:b}):null,e.jsxs("div",{className:"settings-provider-summary-grid","aria-label":s("settings.providerManagementSummaryTitle"),children:[e.jsx(Is,{label:s("settings.providerManagementSummaryEnabled"),value:String(N)}),e.jsx(Is,{label:s("settings.providerManagementSummaryDisabled"),value:String(f)}),e.jsx(Is,{label:s("settings.providerManagementSummaryTotal"),value:String(g.length)})]}),e.jsxs(ee,{heading:s("settings.providerManagementMatrixTitle"),description:s("settings.providerManagementMatrixDescription"),className:"settings-provider-modal-section",children:[k&&g.length===0?e.jsx(ie,{compact:!0,title:s("settings.providerManagementLoading")}):null,!k&&g.length===0?e.jsx(ie,{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,g.length>0?e.jsx("div",{className:"settings-provider-matrix-shell",children:e.jsxs("table",{className:"settings-provider-matrix-table",children:[e.jsxs("colgroup",{children:[e.jsx("col",{className:"settings-provider-matrix-provider-col"}),O.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")}),O.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:g.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(re,{tone:Xa(c.installState),children:Ya(c)})]})})}),O.map(w=>e.jsx("td",{className:"settings-provider-matrix-capability-cell",children:e.jsx(Qa,{enabled:c.productCapabilities[w.key],label:w.label})},w.key)),e.jsx("td",{className:"settings-provider-matrix-status-cell",children:e.jsx(re,{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(oe,{className:"settings-provider-modal-actions",children:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a||k||o!==null,onClick:()=>{R()},children:k?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:E,children:s("settings.providerManagementManageAction")})]}),t.isMobile?e.jsx(Le,{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(Re,{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 Is({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 Qa({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 Ya(t){return t.installState==="ready"&&t.version?t.version:Za(t.installState)}function Xa(t){switch(t){case"ready":return"success";case"missing":return"warning";default:return"default"}}function Os(t,a){return t instanceof Fe?t.message:a==="save"?s("settings.providerManagementSaveFailed"):s("settings.providerManagementLoadFailed")}async function ei(){return await $.request("/api/channels/platforms")}async function si(){return await $.request("/api/channels/accounts")}async function ti(t){return await $.request("/api/channels/accounts",{method:"POST",body:JSON.stringify(t)})}async function ni(t){return await $.request(`/api/channels/accounts/${t}`,{method:"DELETE"})}async function ai(t){return await $.request(`/api/channels/accounts/${t}/probe`,{method:"POST"})}async function ii(t){return await $.request(`/api/channels/accounts/${t}/poll`,{method:"POST"})}async function li(t){return await $.request(`/api/channels/accounts/${t}/wechat-claw/start-login`,{method:"POST"})}async function ri(t){return await $.request(`/api/channels/accounts/${t}/wechat-claw/refresh-login`,{method:"POST"})}async function ci(t){return await $.request(`/api/channels/accounts/${t}/wechat-claw/logout`,{method:"POST"})}async function oi(t,a=20){return await $.request(`/api/channels/accounts/${t}/threads?limit=${a}`)}async function di(t,a=20){return await $.request(`/api/channels/accounts/${t}/events?limit=${a}`)}async function ui(t,a=20){return await $.request(`/api/channels/accounts/${t}/deliveries?limit=${a}`)}function sn({code:t,...a}){switch(t){case"wechat-claw":return e.jsx(mi,{...a});case"telegram":return e.jsx(gi,{...a});default:return e.jsx(hi,{...a})}}function gi(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 mi(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 hi(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 pi=["codex","claude-code"],bi=["active","disabled","degraded"],us="polling",fi=`{
2
+ }`,at={"wechat-claw":[],telegram:[{key:"botToken",labelKey:"settings.channelsConfigFieldTelegramBotToken",descriptionKey:"settings.channelsConfigFieldTelegramBotTokenDescription",placeholderKey:"settings.channelsConfigFieldTelegramBotTokenPlaceholder",type:"password",required:!0}]},xi={};function tn(){const t=hs(),a=ss(i=>{var q;return((q=i.session)==null?void 0:q.accessToken)??null}),[n,r]=l.useState(!1),[o,h]=l.useState(!1),[y,T]=l.useState([]),[b,j]=l.useState([]),[d,k]=l.useState(!1),[O,M]=l.useState(!1),[E,v]=l.useState(null),[R,g]=l.useState(null),[N,f]=l.useState(null),[x,c]=l.useState(null),[w,D]=l.useState(null),[L,S]=l.useState("platform"),[F,z]=l.useState(null),[se,V]=l.useState(null),[H,te]=l.useState(()=>fs()),[ae,le]=l.useState([]),[J,I]=l.useState([]),[W,C]=l.useState([]),m=l.useMemo(()=>b.find(i=>i.id===F)??null,[b,F]),_=l.useMemo(()=>y.find(i=>i.code===H.platformCode)??null,[H.platformCode,y]),U=l.useMemo(()=>H.platformCode?at[H.platformCode]??[]:[],[H.platformCode]),ue=l.useMemo(()=>new Set(b.map(i=>i.platformCode)).size,[b]),ge=l.useMemo(()=>b.filter(i=>i.status==="active").length,[b]),G=(_==null?void 0:_.code)==="wechat-claw",be=(m==null?void 0:m.platformCode)==="wechat-claw",A=l.useMemo(()=>m?Si(m):null,[m]),B=(A==null?void 0:A.loginStatus)==="active";l.useEffect(()=>{a||(r(!1),h(!1),T([]),j([]),k(!1),M(!1),v(null),g(null),f(null),c(null),D(null),S("platform"),z(null),V(null),te(fs()),le([]),I([]),C([]))},[a]),l.useEffect(()=>{(!F||se!==F)&&V(null)},[F,se]),l.useEffect(()=>{!n||!a||Z()},[a,n]),l.useEffect(()=>{if(!n||!a||!F){le([]),I([]),C([]);return}de(F)},[a,F,n]);async function Z(i={}){if(a){k(!0),c(null);try{const[q,ne]=await Promise.all([ei(),si()]);T(q),j(ne),F&&!ne.some(_e=>_e.id===F)&&(z(null),le([]),I([]),C([])),i.showSuccess&&f(s("settings.channelsRefreshSuccess"))}catch(q){c(Ke(q,"loadOverview"))}finally{k(!1)}}}async function de(i){if(a){M(!0),c(null);try{const[q,ne,_e]=await Promise.all([oi(i),di(i),ui(i)]);if(F!==i)return;le(q),I(ne),C(_e)}catch(q){c(Ke(q,"loadDetails"))}finally{M(!1)}}}function fe(){r(!0),f(null),c(null)}function ke(){r(!1),h(!1),V(null)}function xe(){g(null),D(null),S("platform"),te(fs())}function Me(){xe(),h(!0)}function ye(){h(!1),xe()}function Ae(i){z(i.id),V(null),f(null),c(null)}function je(i){S(i==="wechat-claw"?"binding":"config"),te(q=>fs({platformCode:i,displayName:q.platformCode===i?q.displayName:"",providerId:q.providerId,status:q.status})),D(null)}function De(i,q){te(ne=>({...ne,configValues:{...ne.configValues,[i]:q}}))}function Ze(){const i=nn(H,_);if(!i.ok){D(i.errorText);return}S("binding"),D(null)}async function Be(){if(!a)return;const i=wi(H,_);if(!i.ok){D(i.errorText);return}g("save"),D(null),f(null);try{const q=await ti(i.input);j(ne=>[q,...ne]),z(q.id),ye(),f(s("settings.channelsCreateSuccess",{account:q.displayName}))}catch(q){D(Ke(q,"save"))}finally{g(null)}}async function Ye(){if(!(!a||!F)){v("probe"),c(null),f(null);try{const i=await ai(F);j(q=>Rs(q,i.account)),f(i.detail),await de(F)}catch(i){c(Ke(i,"probe"))}finally{v(null)}}}async function Ie(){if(!(!a||!F)){v("poll"),c(null),f(null);try{const i=await ii(F);j(q=>Rs(q,i.account)),f(i.detail),await de(F)}catch(i){c(Ke(i,"poll"))}finally{v(null)}}}async function Ne(i){if(!a||!F||!be)return;v(i==="start"?"wechat-start-login":i==="refresh"?"wechat-refresh-login":"wechat-logout"),c(null),f(null);try{let ne;i==="start"?ne=await li(F):i==="refresh"?ne=await ri(F):ne=await ci(F),Oe(ne.account),f(ne.detail)}catch(ne){c(Ke(ne,i))}finally{v(null)}}async function Q(){if(!(!a||!m)){v("remove-account"),c(null),f(null);try{const i=await ni(m.id);j(q=>q.filter(ne=>ne.id!==i.accountId)),F===i.accountId&&(z(null),le([]),I([]),C([])),V(null),f(s("settings.channelsRemoveSuccess",{account:i.displayName}))}catch(i){c(Ke(i,"remove"))}finally{v(null)}}}function Oe(i){j(q=>Rs(q,i))}async function qe(){v("refresh"),f(null),c(null);try{await Z({showSuccess:!0})}finally{v(null)}}const Te=e.jsxs("div",{className:"settings-channels-summary-grid","aria-label":s("settings.channelsSummaryTitle"),children:[e.jsx(Us,{label:s("settings.channelsSummaryAccounts"),value:String(b.length)}),e.jsx(Us,{label:s("settings.channelsSummaryActive"),value:String(ge)}),e.jsx(Us,{label:s("settings.channelsSummaryPlatforms"),value:String(ue)})]}),Ve=e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:Me,children:s("settings.channelsAddAccountAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:d||E!==null,onClick:()=>{qe()},children:E==="refresh"?s("settings.channelsActionPending"):s("settings.channelsRefresh")})]}),$e=!be||B,Se=m!==null&&se===m.id,ze=e.jsxs("div",{className:"settings-channels-modal-layout",children:[w?e.jsx("p",{className:"settings-channels-error",children:w}):null,e.jsxs(ee,{heading:s("settings.channelsWizardTitle"),description:s("settings.channelsWizardCreateDescription"),children:[e.jsx(yi,{currentStep:L}),L==="platform"?e.jsxs(e.Fragment,{children:[d&&y.length===0?e.jsx(ie,{compact:!0,title:s("settings.channelsLoading")}):null,!d&&y.length===0?e.jsx(ie,{title:s("settings.channelsPlatformsEmpty"),description:s("settings.channelsPlatformsEmptyDescription")}):null,y.length>0?e.jsx("div",{className:"settings-channels-platform-grid",children:y.map(i=>e.jsx("button",{className:"settings-channels-platform-card",type:"button","aria-pressed":H.platformCode===i.code,"data-selected":H.platformCode===i.code?"true":void 0,onClick:()=>je(i.code),children:e.jsxs("div",{className:"settings-channels-platform-card-top",children:[e.jsxs("div",{className:"settings-channels-platform-card-brand",children:[e.jsx("div",{className:"settings-channels-platform-card-logo",children:e.jsx(sn,{code:i.code,width:40,height:40,"aria-hidden":"true"})}),e.jsxs("div",{className:"settings-channels-platform-card-copy",children:[e.jsx("strong",{children:i.displayName}),e.jsx("span",{children:s("settings.channelsPlatformSummary",{modes:Xe(us),multiSession:gs(i.multiSessionSupportLevel)})})]})]}),e.jsx(re,{tone:i.multiSessionSupportLevel==="supported"?"success":"warning",children:gs(i.multiSessionSupportLevel)})]})},i.code))}):null,e.jsx(oe,{children:e.jsx("button",{className:"primary-button",type:"button",disabled:!_,onClick:()=>{_&&S("config")},children:s("settings.channelsWizardNextToConfig")})})]}):null,L==="config"?e.jsxs(e.Fragment,{children:[_?e.jsx(ji,{platformCapability:_}):e.jsx(ie,{compact:!0,title:s("settings.channelsValidationPlatform"),description:s("settings.channelsWizardSelectPlatformHint")}),_?e.jsxs(e.Fragment,{children:[e.jsx(Ni,{platformCode:_.code}),e.jsx(vi,{platformCode:_.code}),U.length>0?e.jsx("div",{className:"settings-channels-form-grid",children:U.map(i=>e.jsx(Y,{label:s(i.labelKey),description:s(i.descriptionKey),htmlFor:`channels-create-config-${i.key}`,children:e.jsx("input",{id:`channels-create-config-${i.key}`,className:"settings-text-input",type:i.type??"text",placeholder:s(i.placeholderKey),value:H.configValues[i.key]??"",onChange:q=>De(i.key,q.target.value)})},i.key))}):null,e.jsxs("details",{className:"settings-channels-advanced-config",children:[e.jsx("summary",{children:s("settings.channelsAdvancedConfigTitle")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsAdvancedConfigDescription")}),e.jsx(Y,{className:"settings-channels-form-field-wide",label:s("settings.channelsFieldConfig"),htmlFor:"channels-create-config-advanced",children:e.jsx("textarea",{id:"channels-create-config-advanced",className:"settings-channels-textarea",rows:8,value:H.advancedConfigText,onChange:i=>{te(q=>({...q,advancedConfigText:i.target.value}))}})})]})]}):null,e.jsxs(oe,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>S("platform"),children:s("settings.channelsWizardBackToPlatform")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!_,onClick:Ze,children:s("settings.channelsWizardNextToBinding")})]})]}):null,L==="binding"?e.jsxs(e.Fragment,{children:[_?e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(Ce,{label:s("settings.channelsDetailPlatform"),value:_.displayName}),e.jsx(Ce,{label:s("settings.channelsDetailConnectionMode"),value:Xe(us)}),e.jsx(Ce,{label:s("settings.channelsWizardBindingSummary"),value:gs(_.multiSessionSupportLevel)})]}):null,e.jsxs("div",{className:"settings-channels-form-grid",children:[e.jsx(Y,{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:H.displayName,onChange:i=>{te(q=>({...q,displayName:i.target.value}))}})}),e.jsx(Y,{label:s("settings.channelsFieldProvider"),description:s("settings.channelsFieldProviderDescription"),htmlFor:"channels-create-provider",children:e.jsx("select",{id:"channels-create-provider",className:"settings-select",value:H.providerId,onChange:i=>{te(q=>({...q,providerId:i.target.value}))},children:pi.map(i=>e.jsx("option",{value:i,children:xs(i)},i))})}),e.jsx(Y,{label:s("settings.channelsFieldStatus"),description:s("settings.channelsFieldStatusDescription"),htmlFor:"channels-create-status",children:e.jsx("select",{id:"channels-create-status",className:"settings-select",value:H.status,onChange:i=>{te(q=>({...q,status:i.target.value}))},children:bi.map(i=>e.jsx("option",{value:i,children:Fs(i)},i))})}),e.jsx(Y,{label:s("settings.channelsFieldConnectionMode"),description:s("settings.channelsFieldConnectionModeDescription"),children:e.jsxs("div",{className:"settings-channels-fixed-field",children:[e.jsx("strong",{children:Xe(us)}),e.jsx("span",{children:s("settings.channelsConnectionModeFixedHint")})]})})]}),e.jsxs(oe,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>S(G?"platform":"config"),children:G?s("settings.channelsWizardBackToPlatform"):s("settings.channelsWizardBackToConfig")}),e.jsx("button",{className:"primary-button",type:"button",disabled:R==="save",onClick:()=>{Be()},children:R==="save"?s("settings.channelsActionPending"):s("settings.channelsCreateAction")})]})]}):null]})]}),Pe=e.jsxs("div",{className:"settings-channels-modal-layout",children:[N?e.jsx("p",{className:"settings-channels-status",children:N}):null,x?e.jsx("p",{className:"settings-channels-error",children:x}):null,Te,t.isMobile?e.jsx(oe,{className:"settings-channels-inline-actions",children:Ve}):null,e.jsxs(ee,{heading:s("settings.channelsAccountsTitle"),description:s("settings.channelsAccountsDescription"),children:[d&&b.length===0?e.jsx(ie,{compact:!0,title:s("settings.channelsLoading")}):null,!d&&b.length===0?e.jsx(ie,{title:s("settings.channelsAccountsEmpty"),description:s("settings.channelsAccountsEmptyDescription"),action:e.jsx("button",{className:"secondary-button",type:"button",onClick:Me,children:s("settings.channelsAddAccountAction")})}):null,b.length>0?e.jsx(pe,{className:"settings-channels-account-list",children:b.map(i=>e.jsx(me,{as:"button",selected:F===i.id,className:"settings-channels-account-item",label:i.displayName,description:s("settings.channelsAccountRowDescription",{platform:i.capability.displayName,provider:xs(i.providerId),mode:Xe(i.connectionMode)}),trailing:e.jsxs("div",{className:"settings-channels-account-tags",children:[e.jsx(re,{tone:Mi(i.status),children:Fs(i.status)}),e.jsx(re,{children:xs(i.providerId)})]}),onClick:()=>Ae(i),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsThreadsTitle"),": ",i.threadCount]}),e.jsxs("span",{children:[s("settings.channelsEventsTitle"),": ",i.inboundEventCount]}),e.jsxs("span",{children:[s("settings.channelsDeliveriesTitle"),": ",i.deliveryCount]})]})},i.id))}):null]}),m?e.jsxs(e.Fragment,{children:[e.jsxs(ee,{heading:s("settings.channelsDetailTitle"),description:s("settings.channelsDetailDescription"),actions:e.jsxs(oe,{className:"settings-channels-inline-actions",children:[$e?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{Ye()},children:E==="probe"?s("settings.channelsActionPending"):s("settings.channelsProbeAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{Ie()},children:E==="poll"?s("settings.channelsActionPending"):s("settings.channelsPollAction")})]}):null,Se?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{V(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:E!==null,onClick:()=>{Q()},children:E==="remove-account"?s("settings.channelsActionPending"):s("settings.channelsRemoveConfirmAction")})]}):e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:E!==null,onClick:()=>{m&&V(m.id)},children:s("settings.channelsRemoveAction")})]}),children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(Ce,{label:s("settings.channelsDetailPlatform"),value:m.capability.displayName}),e.jsx(Ce,{label:s("settings.channelsDetailProvider"),value:xs(m.providerId)}),e.jsx(Ce,{label:s("settings.channelsDetailConnectionMode"),value:Xe(m.connectionMode)}),e.jsx(Ce,{label:s("settings.channelsDetailStatus"),value:Fs(m.status)}),e.jsx(Ce,{label:s("settings.channelsDetailLastInbound"),value:Ge(m.lastInboundAt)}),e.jsx(Ce,{label:s("settings.channelsDetailLastOutbound"),value:Ge(m.lastOutboundAt)})]}),m.lastError?e.jsxs("p",{className:"settings-channels-inline-note",children:[s("settings.channelsDetailLastError"),": ",m.lastError]}):null,Se?e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsRemoveConfirmDescription")}):null]}),m.platformCode==="wechat-claw"?e.jsxs(ee,{heading:s("settings.channelsWechatBindingTitle"),description:s("settings.channelsWechatBindingDescription"),actions:e.jsxs(oe,{className:"settings-channels-inline-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{Ne("start")},children:E==="wechat-start-login"?s("settings.channelsActionPending"):A!=null&&A.qrcodeUrl?s("settings.channelsWechatRestartBindingAction"):s("settings.channelsWechatStartLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{Ne("refresh")},children:E==="wechat-refresh-login"?s("settings.channelsActionPending"):s("settings.channelsWechatRefreshLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{Ne("logout")},children:E==="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(Ce,{label:s("settings.channelsWechatLoginStatus"),value:Ei((A==null?void 0:A.loginStatus)??"not_logged_in")}),e.jsx(Ce,{label:s("settings.channelsDetailConnectionMode"),value:s("settings.channelsWechatBindingModeValue")}),e.jsx(Ce,{label:s("settings.channelsMetaUpdatedAt"),value:Ge((A==null?void 0:A.updatedAt)??null)})]}),e.jsx("p",{className:"settings-channels-inline-note",children:B?s("settings.channelsWechatBoundDescription"):s("settings.channelsWechatPendingDescription")}),A!=null&&A.lastDetail?e.jsx("p",{className:"settings-channels-inline-note",children:A.lastDetail}):null,B?null:e.jsxs("div",{className:"settings-channels-wechat-qr-panel",children:[A!=null&&A.qrcodeUrl?e.jsxs(e.Fragment,{children:[e.jsx("img",{className:"settings-channels-wechat-qr-image",src:A.qrcodeUrl,alt:s("settings.channelsWechatQrAlt")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsWechatQrHint")}),e.jsx(oe,{className:"settings-channels-inline-actions",children:e.jsx("a",{className:"secondary-button",href:A.qrcodeSourceUrl??A.qrcodeUrl,target:"_blank",rel:"noreferrer",children:s("settings.channelsWechatOpenQrLinkAction")})})]}):e.jsx(ie,{compact:!0,title:s("settings.channelsWechatQrEmpty"),description:s("settings.channelsWechatQrEmptyDescription")}),A!=null&&A.qrcodeText?e.jsx(Y,{label:s("settings.channelsWechatQrRawTitle"),description:s("settings.channelsWechatQrRawDescription"),children:e.jsx("textarea",{className:"settings-textarea settings-channels-textarea",value:A.qrcodeText,readOnly:!0})}):null]})]}),e.jsx("div",{className:"settings-channels-platform-selected-notes",children:m.capability.stageOneLimitations.map(i=>e.jsx("p",{className:"settings-channels-platform-limitations",children:i},i))})]}):null,e.jsxs(ee,{heading:s("settings.channelsThreadsTitle"),description:s("settings.channelsThreadsDescription",{count:m.threadCount}),children:[O?e.jsx(ie,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!O&&ae.length===0?e.jsx(ie,{compact:!0,title:s("settings.channelsThreadsEmpty"),description:s("settings.channelsThreadsEmptyDescription")}):null,!O&&ae.length>0?e.jsx(pe,{compact:!0,children:ae.map(i=>e.jsx(me,{label:i.title||i.externalConversationKey,description:s("settings.channelsThreadSummary",{status:Nt(i.status),conversationKey:i.externalConversationKey}),trailing:e.jsx(re,{tone:Di(i.status),children:Nt(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",Ge(i.createdAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaUpdatedAt"),": ",Ge(i.updatedAt)]}),i.externalUserId?e.jsxs("span",{children:[s("settings.channelsMetaExternalUser"),": ",i.externalUserId]}):null]})},i.id))}):null]}),e.jsxs(ee,{heading:s("settings.channelsEventsTitle"),description:s("settings.channelsEventsDescription",{count:m.inboundEventCount}),children:[O?e.jsx(ie,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!O&&J.length===0?e.jsx(ie,{compact:!0,title:s("settings.channelsEventsEmpty"),description:s("settings.channelsEventsEmptyDescription")}):null,!O&&J.length>0?e.jsx(pe,{compact:!0,children:J.map(i=>e.jsx(me,{label:vt(i.textContent),description:s("settings.channelsEventSummary",{status:St(i.status),conversationKey:i.externalConversationKey}),trailing:e.jsx(re,{tone:Ai(i.status),children:St(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaReceivedAt"),": ",Ge(i.receivedAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaEventId"),": ",i.externalEventId]}),i.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",i.errorMessage]}):null]})},i.id))}):null]}),e.jsxs(ee,{heading:s("settings.channelsDeliveriesTitle"),description:s("settings.channelsDeliveriesDescription",{count:m.deliveryCount}),children:[O?e.jsx(ie,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!O&&W.length===0?e.jsx(ie,{compact:!0,title:s("settings.channelsDeliveriesEmpty"),description:s("settings.channelsDeliveriesEmptyDescription")}):null,!O&&W.length>0?e.jsx(pe,{compact:!0,children:W.map(i=>e.jsx(me,{label:vt(i.textContent),description:s("settings.channelsDeliverySummary",{status:Tt(i.status)}),trailing:e.jsx(re,{tone:Pi(i.status),children:Tt(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",Ge(i.createdAt)]}),i.providerMessageRef?e.jsxs("span",{children:[s("settings.channelsMetaProviderRef"),": ",i.providerMessageRef]}):null,i.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",i.errorMessage]}):null]})},i.id))}):null]})]}):null]});return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-channels-entrypoint",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:!a,onClick:fe,children:s("settings.channelsManageAction")})}),t.isMobile?e.jsx(Le,{open:n,title:s("settings.channelsModalTitle"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:ke,children:e.jsx("div",{className:"settings-channels-modal-body",children:Pe})}):e.jsx(Re,{open:n,title:s("settings.channelsModalTitle"),size:"xwide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",headerActions:Ve,onClose:ke,children:Pe}),t.isMobile?e.jsx(Le,{open:o,title:s("settings.channelsAddAccountAction"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:ye,children:e.jsx("div",{className:"settings-channels-modal-body",children:ze})}):e.jsx(Re,{open:o,title:s("settings.channelsAddAccountAction"),size:"wide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",onClose:ye,children:ze})]})}function Us({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 Ce({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 yi({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 ji({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(sn,{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(us),multiSession:gs(t.multiSessionSupportLevel)})})]})]}),e.jsx(re,{tone:t.multiSessionSupportLevel==="supported"?"success":"warning",children:gs(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 vi({platformCode:t}){const a=xi[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 Ni({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 Si(t){return{loginStatus:Ti(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 Ti(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 fs(t={}){return{platformCode:"",displayName:"",providerId:"codex",status:"active",configValues:{},advancedConfigText:fi,...t}}function Rs(t,a){return t.findIndex(r=>r.id===a.id)===-1?[a,...t]:t.map(r=>r.id===a.id?a:r)}function nn(t,a){if(!t.platformCode||!a)return{ok:!1,errorText:s("settings.channelsValidationPlatform")};const n=ki(t.platformCode,t.configValues);if(n)return{ok:!1,errorText:n};try{an(t.advancedConfigText)}catch{return{ok:!1,errorText:s("settings.channelsValidationConfigJson")}}return{ok:!0}}function wi(t,a){const n=nn(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=an(t.advancedConfigText),y=Ci(o,t.configValues,h);return{ok:!0,input:{displayName:r,platformCode:o,providerId:t.providerId,connectionMode:us,status:t.status,config:y}}}function ki(t,a){const r=(at[t]??[]).find(o=>o.required&&!(a[o.key]??"").trim());return r?s("settings.channelsValidationRequiredField",{field:s(r.labelKey)}):null}function an(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 Ci(t,a,n){const r={...n};for(const o of at[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 Fe)return t.message;switch(a){case"save":return s("settings.channelsSaveFailed");case"probe":return s("settings.channelsProbeFailed");case"poll":return s("settings.channelsPollFailed");case"remove":return s("settings.channelsRemoveFailed");case"start":case"refresh":case"logout":return s("settings.channelsSaveFailed");case"loadDetails":return s("settings.channelsLoadDetailsFailed");default:return s("settings.channelsLoadFailed")}}function vt(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 xs(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 gs(t){return t==="supported"?s("settings.channelsMultiSessionSupported"):s("settings.channelsMultiSessionLimited")}function Fs(t){switch(t){case"disabled":return s("settings.channelsStatusDisabled");case"degraded":return s("settings.channelsStatusDegraded");default:return s("settings.channelsStatusActive")}}function Mi(t){switch(t){case"disabled":return"default";case"degraded":return"warning";default:return"success"}}function Nt(t){switch(t){case"closed":return s("settings.channelsThreadStatusClosed");case"failed":return s("settings.channelsThreadStatusFailed");default:return s("settings.channelsThreadStatusActive")}}function Di(t){switch(t){case"failed":return"danger";case"closed":return"default";default:return"success"}}function St(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 Ai(t){switch(t){case"replied":return"success";case"failed":return"danger";case"ignored":return"warning";case"dispatched":return"accent";default:return"default"}}function Tt(t){switch(t){case"failed":return s("settings.channelsDeliveryStatusFailed");case"skipped":return s("settings.channelsDeliveryStatusSkipped");default:return s("settings.channelsDeliveryStatusSent")}}function Pi(t){switch(t){case"failed":return"danger";case"skipped":return"default";default:return"success"}}function Ei(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 ln={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},wt=Qe.createContext&&Qe.createContext(ln),Li=["attr","size","title"];function Ii(t,a){if(t==null)return{};var n,r,o=Oi(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 Oi(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 Ns(){return Ns=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},Ns.apply(null,arguments)}function kt(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 Ss(t){for(var a=1;a<arguments.length;a++){var n=arguments[a]!=null?arguments[a]:{};a%2?kt(Object(n),!0).forEach(function(r){Ui(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):kt(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function Ui(t,a,n){return(a=Ri(a))in t?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,t}function Ri(t){var a=Fi(t,"string");return typeof a=="symbol"?a:a+""}function Fi(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 rn(t){return t&&t.map((a,n)=>Qe.createElement(a.tag,Ss({key:n},a.attr),rn(a.child)))}function ps(t){return a=>Qe.createElement(Bi,Ns({attr:Ss({},t.attr)},a),rn(t.child))}function Bi(t){var a=n=>{var{attr:r,size:o,title:h}=t,y=Ii(t,Li),T=o||n.size||"1em",b;return n.className&&(b=n.className),t.className&&(b=(b?b+" ":"")+t.className),Qe.createElement("svg",Ns({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,r,y,{className:b,style:Ss(Ss({color:t.color||n.color},n.style),t.style),height:T,width:T,xmlns:"http://www.w3.org/2000/svg"}),h&&Qe.createElement("title",null,h),t.children)};return wt!==void 0?Qe.createElement(wt.Consumer,null,n=>a(n)):a(ln)}function qi(t){return ps({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 _i(t){return ps({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 Ct(t){return ps({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 Hi(t){return ps({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 Wi(t){return ps({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 Mt(){return $.request("/api/auth/devices")}function Vi(t){return $.request("/api/auth/devices/current/primary",{method:"POST",body:JSON.stringify(t)})}function $i(t){return $.request(`/api/auth/devices/${t}/logout`,{method:"POST"})}function cn({compact:t=!1}){const a=ss(m=>{var _;return((_=m.session)==null?void 0:_.accessToken)??null}),[n,r]=l.useState(null),[o,h]=l.useState(!1),[y,T]=l.useState(!1),[b,j]=l.useState(!1),[d,k]=l.useState(null),[O,M]=l.useState(null),[E,v]=l.useState(null),[R,g]=l.useState(null),[N,f]=l.useState(null),[x,c]=l.useState(""),[w,D]=l.useState(null);l.useEffect(()=>{let m=!0;if(!y){h(!1);return}if(!a){r(null),h(!1),v(null),g(null);return}return(async()=>{h(!0);try{const U=await Mt();if(!m)return;r(U),g(null)}catch(U){if(!m)return;g(Bs(U))}finally{m&&h(!1)}})(),()=>{m=!1}},[a,y]);async function L(){const m=await Mt();r(m),g(null)}function S(){T(!0),j(!1),v(null),g(null)}function F(){d!=="primary"&&(T(!1),j(!1),f(null),c(""),D(null))}function z(m){f(m),c(""),D(null)}async function se(){if(N){k("primary"),D(null),g(null),v(null);try{await Vi({password:x,primary:N==="enable"}),await L(),v(N==="enable"?s("settings.authDevicePrimaryEnabled"):s("settings.authDevicePrimaryDisabled")),f(null),c("")}catch(m){const _=Bs(m);D(_),g(_)}finally{k(null)}}}async function V(m){if(m.deviceId){M(m.deviceId),g(null),v(null);try{const _=await $i(m.deviceId);await L(),v(s("settings.authDeviceLogoutDeviceSuccess",{device:ys(m),count:String(_.revokedSessionCount)}))}catch(_){g(Bs(_))}finally{M(null)}}}const H=(n==null?void 0:n.currentDevice)??null,te=(n==null?void 0:n.otherActiveDevices.filter(m=>!m.isLegacy))??[],ae=(n==null?void 0:n.otherActiveDevices.filter(m=>m.isLegacy))??[],le=(n==null?void 0:n.recentLoginRecords.filter(m=>!m.isLegacy))??[],J=(n==null?void 0:n.recentLoginRecords.filter(m=>m.isLegacy))??[],I=ae.length+J.length,W=H!==null&&!H.isLegacy,C=(H==null?void 0:H.isPrimary)===!0;return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`settings-device-panel${t?" settings-device-panel-compact":""}`,children:e.jsx("div",{className:"settings-device-entry-actions",children:e.jsx("button",{className:"settings-button",type:"button",disabled:!a,onClick:S,children:s("settings.authDeviceOpenManager")})})}),e.jsx(ts,{open:y,title:s("settings.authDeviceManagement"),description:s("settings.authDeviceManagementDescription"),className:"settings-device-browser-modal",onClose:F,children:e.jsxs(e.Fragment,{children:[E?e.jsx("p",{className:"settings-release-status",children:E}):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:[I>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(I)})}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>j(m=>!m),children:b?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")})}),H?e.jsx(rs,{current:!0,title:ys(H),clientType:H.clientType,browserName:H.browserName,browserVersion:H.browserVersion,osName:H.osName,osVersion:H.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:H.lastSeenAt,sourceAddress:H.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}),H.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:!W||d!==null,onClick:()=>z(H.isPrimary?"disable":"enable"),children:H.isPrimary?s("settings.authDeviceDisablePrimary"):s("settings.authDeviceEnablePrimary")})}),note:W?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")})}),te.length>0?e.jsx("div",{className:"settings-device-list",children:te.map((m,_)=>e.jsx(rs,{title:ys(m),clientType:m.clientType,browserName:m.browserName,browserVersion:m.browserVersion,osName:m.osName,osVersion:m.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:m.lastSeenAt,sourceAddress:m.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[m.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null,m.isLegacy?e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")}):null]}),actions:m.deviceId?e.jsx("button",{className:"settings-button settings-button-danger","data-variant":"device-danger",type:"button",disabled:!C||d!==null||O!==null,onClick:()=>{V(m)},children:O===m.deviceId?s("common.loading"):s("settings.authDeviceLogoutDevice")}):null},`${m.deviceId??"legacy"}-${m.lastSeenAt}-${_}`))}):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(m=>e.jsx(rs,{title:Dt(m),clientType:m.clientType,browserName:m.browserName,browserVersion:m.browserVersion,osName:m.osName,osVersion:m.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:m.occurredAt,sourceAddress:m.sourceAddress,badges:m.isCurrentDevice?e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}):null},m.id))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceRecentEmpty")})]}),b&&ae.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:ae.map((m,_)=>e.jsx(rs,{title:ys(m),clientType:m.clientType,browserName:m.browserName,browserVersion:m.browserVersion,osName:m.osName,osVersion:m.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:m.lastSeenAt,sourceAddress:m.lastSourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},`legacy-device-${m.lastSeenAt}-${_}`))})]}):null,b&&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(m=>e.jsx(rs,{title:Dt(m),clientType:m.clientType,browserName:m.browserName,browserVersion:m.browserVersion,osName:m.osName,osVersion:m.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:m.occurredAt,sourceAddress:m.sourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},m.id))})]}):null]})]})}),e.jsx(ts,{open:N!==null,title:N==="enable"?s("settings.authDeviceEnablePrimaryModalTitle"):s("settings.authDeviceDisablePrimaryModalTitle"),description:N==="enable"?s("settings.authDeviceEnablePrimaryModalDescription"):s("settings.authDeviceDisablePrimaryModalDescription"),className:"settings-device-modal",onClose:()=>{d!=="primary"&&(f(null),c(""),D(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:m=>c(m.target.value)})]}),w?e.jsx("p",{className:"settings-release-status",children:w}):null,e.jsxs("div",{className:"settings-device-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:d==="primary",onClick:()=>{f(null),c(""),D(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",disabled:x.trim().length===0||d==="primary",onClick:()=>{se()},children:d==="primary"?s("common.loading"):N==="enable"?s("settings.authDeviceEnablePrimary"):s("settings.authDeviceDisablePrimary")})]})]})})]})}function ys(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||on(t.clientType)}function Dt(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||on(t.clientType)}function zi(t){return e.jsxs("div",{className:"settings-device-identity",children:[e.jsx("span",{className:"settings-device-identity-icon","aria-hidden":"true",children:e.jsx(Xi,{kind:Yi(t.clientType)})}),e.jsx("div",{className:"settings-device-identity-body",children:e.jsx("strong",{children:t.title})})]})}function rs(t){const a=Zi(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(zi,{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 on(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 Ki(t,a){return s(t,{value:new Date(a).toLocaleString()})}function Gi(t){return t?s("settings.authDeviceSourceAddressValue",{value:t}):s("settings.authDeviceSourceAddressUnknown")}function Ji(t,a){return t?s("settings.authDeviceBrowserValue",{value:dn(t,a)}):null}function Qi(t,a){return t?s("settings.authDeviceOsValue",{value:dn(t,a)}):null}function Zi(t,a,n,r,o,h,y){return[Ji(t,a),Qi(n,r),Ki(o,h),Gi(y)].filter(T=>!!T)}function Yi(t){switch(t){case"desktop":return"desktop";case"web":return"web";case"ios":return"ios";case"android":return"android";default:return"unknown"}}function dn(t,a){return a!=null&&a.trim()?`${t} ${a}`:t}function Xi({kind:t}){const a=el(t),n=a.icon;return e.jsx(n,{color:a.color})}function el(t){switch(t){case"desktop":return{icon:qi,color:"#2563eb"};case"web":return{icon:_i,color:"#0f766e"};case"ios":return{icon:Hi,color:"#111827"};case"android":return{icon:Wi,color:"#3ddc84"};case"unknown":return{icon:Ct,color:"#64748b"};default:return{icon:Ct,color:"#64748b"}}}function Bs(t){return t instanceof Fe||t instanceof Error?t.message:s("settings.authDeviceLoadFailed")}function sl(){return $.request("/api/admin/users")}function tl(t){return $.request("/api/admin/users",{method:"POST",body:JSON.stringify(t)})}function nl(t,a){return $.request(`/api/admin/users/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify(a)})}function al(t,a){return $.request(`/api/admin/users/${encodeURIComponent(t)}/status`,{method:"PATCH",body:JSON.stringify({status:a})})}function il(t){return $.request(`/api/admin/users/${encodeURIComponent(t)}`,{method:"DELETE"})}function ll(t){return $.request(`/api/admin/users/usage?period=${t}`)}const qs={username:"",password:""};function un({compact:t=!1,mobile:a=!1}){const[n,r]=l.useState(!1),[o,h]=l.useState("users"),[y,T]=l.useState([]),[b,j]=l.useState(null),[d,k]=l.useState("day"),[O,M]=l.useState(null),[E,v]=l.useState(null),[R,g]=l.useState(null),[N,f]=l.useState(qs),[x,c]=l.useState(null),[w,D]=l.useState(null),[L,S]=l.useState(null),[F,z]=l.useState(null);l.useEffect(()=>{n&&V()},[n]),l.useEffect(()=>{!n||o!=="usage"||H(d)},[o,n,d]);const se=l.useMemo(()=>{const A=(b==null?void 0:b.users)??[];return A.find(B=>B.user.userId===O)??A[0]??null},[O,b]);async function V(){D("load-users"),z(null);try{const A=await sl();T(A.items)}catch(A){z(cs(A,"settings.userManagementLoadFailed"))}finally{D(null)}}async function H(A){D("load-usage"),z(null);try{const B=await ll(A);j(B),M(Z=>{var de;return Z&&B.users.some(fe=>fe.user.userId===Z)?Z:((de=B.users[0])==null?void 0:de.user.userId)??null})}catch(B){z(cs(B,"settings.userManagementUsageLoadFailed"))}finally{D(null)}}function te(){v("create"),g(null),f(qs),c(null),S(null),z(null)}function ae(A){v("edit"),g(A.userId),f({username:A.username,password:""}),c(null),S(null),z(null)}function le(){v(null),g(null),f(qs)}async function J(){D("save-user"),S(null),z(null);try{E==="create"?(await tl({username:N.username,password:N.password}),S(s("settings.userManagementCreateSuccess"))):E==="edit"&&R&&(await nl(R,{username:N.username,password:N.password.trim().length>0?N.password:void 0}),S(s("settings.userManagementUpdateSuccess"))),le(),await V(),o==="usage"&&await H(d)}catch(A){z(cs(A,"settings.userManagementSaveFailed"))}finally{D(null)}}async function I(A){const B=A.status==="active"?"disabled":"active";D("status-user"),S(null),z(null);try{await al(A.userId,B),S(B==="active"?s("settings.userManagementEnableSuccess"):s("settings.userManagementDisableSuccess")),await V(),o==="usage"&&await H(d)}catch(Z){z(cs(Z,"settings.userManagementStatusFailed"))}finally{D(null)}}async function W(){if(x){D("delete-user"),S(null),z(null);try{await il(x),c(null),S(s("settings.userManagementDeleteSuccess")),await V(),o==="usage"&&await H(d)}catch(A){z(cs(A,"settings.userManagementDeleteFailed"))}finally{D(null)}}}function C(){w==="save-user"||w==="delete-user"||(r(!1),v(null),g(null),c(null),S(null),z(null))}const m=t?"settings-mobile-primary-button":"settings-button";return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`settings-user-management-entry${t?" settings-user-management-entry-compact":""}`,children:e.jsx("button",{className:m,type:"button",onClick:()=>r(!0),children:s("settings.userManagementOpenAction")})}),a?e.jsx(Le,{open:n,title:s("settings.userManagementTitle"),description:s("settings.userManagementDescription"),height:"full",kind:"form",className:"settings-user-management-sheet",bodyClassName:"settings-user-management-modal-body",onClose:C,children:_()}):e.jsx(Re,{open:n,title:s("settings.userManagementTitle"),description:s("settings.userManagementDescription"),size:"wide",layout:"form",className:"settings-user-management-modal",bodyClassName:"settings-user-management-modal-body",onClose:C,children:_()})]});function _(){return e.jsxs("div",{className:"settings-user-management-shell",children:[e.jsxs("div",{className:"settings-user-management-tabs",role:"tablist","aria-label":s("settings.userManagementTabsLabel"),children:[e.jsx("button",{type:"button",className:"settings-user-management-tab","data-active":o==="users"?"true":void 0,role:"tab","aria-selected":o==="users",onClick:()=>h("users"),children:s("settings.userManagementUsersTab")}),e.jsx("button",{type:"button",className:"settings-user-management-tab","data-active":o==="usage"?"true":void 0,role:"tab","aria-selected":o==="usage",onClick:()=>h("usage"),children:s("settings.userManagementUsageTab")})]}),L?e.jsx("p",{className:"settings-release-status",children:L}):null,F?e.jsx("p",{className:"settings-release-status","data-tone":"error",children:F}):null,o==="users"?U():G()]})}function U(){const A=w==="load-users"&&y.length===0;return e.jsxs("div",{className:"settings-user-management-panel",role:"tabpanel",children:[e.jsx(ee,{heading:s("settings.userManagementUsersTitle"),description:s("settings.userManagementUsersDescription"),actions:e.jsx("button",{className:"settings-button",type:"button",onClick:te,children:s("settings.userManagementAddUser")}),children:A?e.jsx(ie,{title:s("common.loading"),description:s("settings.userManagementLoading")}):y.length===0?e.jsx(ie,{title:s("settings.userManagementUsersEmptyTitle"),description:s("settings.userManagementUsersEmptyDescription")}):e.jsx(pe,{className:"settings-user-list",children:y.map(B=>e.jsx(me,{label:B.username,description:s("settings.userManagementUserMeta",{createdAt:ol(B.createdAt)}),trailing:e.jsxs("div",{className:"settings-user-row-actions",children:[e.jsx(re,{tone:B.status==="active"?"success":"warning",children:B.status==="active"?s("settings.userManagementStatusActive"):s("settings.userManagementStatusDisabled")}),e.jsx("button",{className:"settings-button",type:"button",onClick:()=>ae(B),children:s("settings.userManagementEditUser")}),e.jsx("button",{className:"settings-button",type:"button",onClick:()=>void I(B),children:B.status==="active"?s("settings.userManagementDisableUser"):s("settings.userManagementEnableUser")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",onClick:()=>c(B.userId),children:s("settings.userManagementDeleteUser")})]})},B.userId))})}),E?ue():null,x?ge():null]})}function ue(){const A=w==="save-user",B=E==="create"?s("settings.userManagementAddUser"):s("settings.userManagementEditUser"),Z=E==="create"?s("settings.userManagementAddDescription"):s("settings.userManagementEditDescription");return e.jsx(ee,{heading:B,description:Z,className:"settings-user-form-section",children:e.jsxs("div",{className:"settings-user-form",children:[e.jsx(Y,{label:s("settings.userManagementUsernameLabel"),children:e.jsx("input",{className:"settings-text-input",value:N.username,autoComplete:"off",onChange:de=>f(fe=>({...fe,username:de.target.value}))})}),e.jsx(Y,{label:s("settings.userManagementPasswordLabel"),description:E==="edit"?s("settings.userManagementPasswordEditHint"):void 0,children:e.jsx("input",{className:"settings-text-input",type:"password",value:N.password,autoComplete:"new-password",onChange:de=>f(fe=>({...fe,password:de.target.value}))})}),e.jsxs(oe,{children:[e.jsx("button",{className:"settings-button",type:"button",onClick:le,disabled:A,children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",onClick:()=>void J(),disabled:A,children:A?s("common.loading"):s("common.save")})]})]})})}function ge(){const A=y.find(Z=>Z.userId===x),B=w==="delete-user";return e.jsx(ee,{tone:"danger",heading:s("settings.userManagementDeleteConfirmTitle"),description:s("settings.userManagementDeleteConfirmDescription",{username:(A==null?void 0:A.username)??s("common.unknown")}),children:e.jsxs(oe,{children:[e.jsx("button",{className:"settings-button",type:"button",disabled:B,onClick:()=>c(null),children:s("common.cancel")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:B,onClick:()=>void W(),children:B?s("common.loading"):s("settings.userManagementDeleteUser")})]})})}function G(){const A=(b==null?void 0:b.users)??[],B=w==="load-usage"&&!b;return e.jsx("div",{className:"settings-user-management-panel",role:"tabpanel",children:e.jsx(ee,{heading:s("settings.userManagementUsageTitle"),description:s("settings.userManagementUsageDescription"),actions:e.jsx("div",{className:"settings-user-period-tabs",role:"tablist","aria-label":s("settings.userManagementPeriodLabel"),children:["day","week","month"].map(Z=>e.jsx("button",{type:"button",className:"settings-user-period-tab","data-active":d===Z?"true":void 0,onClick:()=>k(Z),children:cl(Z)},Z))}),children:B?e.jsx(ie,{title:s("common.loading"),description:s("settings.userManagementUsageLoading")}):A.length===0?e.jsx(ie,{title:s("settings.userManagementUsageEmptyTitle"),description:s("settings.userManagementUsageEmptyDescription")}):e.jsxs("div",{className:"settings-user-usage-layout",children:[e.jsx(pe,{className:"settings-user-usage-users",children:A.map(Z=>e.jsx(me,{as:"button",selected:(se==null?void 0:se.user.userId)===Z.user.userId,label:Z.user.username,description:s("settings.userManagementSessionCount",{count:Z.sessionCount}),trailing:e.jsx(re,{tone:Z.user.status==="active"?"success":"warning",children:Z.user.status==="active"?s("settings.userManagementStatusActive"):s("settings.userManagementStatusDisabled")}),onClick:()=>M(Z.user.userId)},Z.user.userId))}),se?be(se):null]})})})}function be(A){return e.jsxs("div",{className:"settings-user-usage-detail",children:[e.jsxs("div",{className:"settings-user-usage-summary",children:[e.jsx(js,{label:s("settings.userManagementMetricSessions"),value:es(A.sessionCount)}),e.jsx(js,{label:s("settings.userManagementMetricTotalTokens"),value:es(A.tokenTotals.totalTokens)}),e.jsx(js,{label:s("settings.userManagementMetricInputTokens"),value:es(A.tokenTotals.inputTokens)}),e.jsx(js,{label:s("settings.userManagementMetricOutputTokens"),value:es(A.tokenTotals.outputTokens)})]}),A.tokenUsageAvailable?null:e.jsx("p",{className:"settings-user-token-note",children:s("settings.userManagementTokenUnavailable")}),e.jsx(rl,{userUsage:A}),e.jsxs("div",{className:"settings-user-usage-groups",children:[e.jsx(_s,{title:s("settings.userManagementModelUsage"),items:A.modelUsage}),e.jsx(_s,{title:s("settings.userManagementCliProviderUsage"),items:A.cliProviderUsage}),e.jsx(_s,{title:s("settings.userManagementModelProviderUsage"),items:A.modelProviderUsage})]})]})}}function js({label:t,value:a}){return e.jsxs("div",{className:"settings-user-summary-metric",children:[e.jsx("span",{children:t}),e.jsx("strong",{children:a})]})}function rl({userUsage:t}){const a=Math.max(1,...t.timeline.map(n=>n.totalTokens));return t.timeline.length===0?e.jsx(ie,{compact:!0,title:s("settings.userManagementTokenChartEmptyTitle"),description:s("settings.userManagementTokenChartEmptyDescription")}):e.jsxs("div",{className:"settings-user-token-chart","aria-label":s("settings.userManagementTokenChartTitle"),children:[e.jsx("div",{className:"settings-user-token-chart-header",children:e.jsx("strong",{children:s("settings.userManagementTokenChartTitle")})}),e.jsx("div",{className:"settings-user-token-bars",children:t.timeline.map(n=>{const r=Math.max(6,Math.round(n.totalTokens/a*96));return e.jsxs("div",{className:"settings-user-token-bar-item",children:[e.jsx("div",{className:"settings-user-token-bar-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-user-token-bar",style:{height:r}})}),e.jsx("span",{className:"settings-user-token-bar-value",children:es(n.totalTokens)}),e.jsx("span",{className:"settings-user-token-bar-label",children:n.bucket})]},n.bucket)})})]})}function _s({title:t,items:a}){const n=Math.max(1,...a.map(r=>r.count));return e.jsxs("div",{className:"settings-user-usage-group",children:[e.jsx("strong",{children:t}),a.length===0?e.jsx("p",{className:"settings-user-usage-empty",children:s("settings.userManagementUsageGroupEmpty")}):e.jsx("div",{className:"settings-user-usage-bars",children:a.map(r=>e.jsxs("div",{className:"settings-user-usage-bar-row",children:[e.jsx("span",{className:"settings-user-usage-bar-label",children:r.label}),e.jsx("span",{className:"settings-user-usage-bar-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-user-usage-bar",style:{width:`${Math.max(6,Math.round(r.count/n*100))}%`}})}),e.jsx("span",{className:"settings-user-usage-bar-value",children:es(r.count)})]},r.label))})]})}function cl(t){return t==="week"?s("settings.userManagementPeriodWeek"):t==="month"?s("settings.userManagementPeriodMonth"):s("settings.userManagementPeriodDay")}function ol(t){const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function es(t){return new Intl.NumberFormat().format(t)}function cs(t,a){return t instanceof Fe?t.message||s(a):t instanceof Error?t.message:s(a)}async function Hs(){const t=Ee.getState();return $.request(`/api/client/service-update?channel=${encodeURIComponent(t.releaseChannel)}`)}async function dl(t){const a=Ee.getState();return $.request("/api/client/service-update/install",{method:"POST",body:JSON.stringify({packageName:t,channel:a.releaseChannel})})}async function ul(t){return $.request(`/api/client/service-update/tasks/${encodeURIComponent(t)}`)}const gl=1500,At=2e3,ml=2500;function gn(){const t=ms(),[a,n]=l.useState(!1),[r,o]=l.useState(!1),[h,y]=l.useState(!1),[T,b]=l.useState(!1),[j,d]=l.useState(null),[k,O]=l.useState(null),[M,E]=l.useState(null),v=(k==null?void 0:k.packages[0])??null,R=h||!!((M==null?void 0:M.status)==="succeeded"&&M.restartScheduled);l.useEffect(()=>{if(!M||!Vs(M.status))return;let x=!1;const c=window.setTimeout(async()=>{var w;try{const D=await ul(M.taskId);if(x)return;if(E(D),d(et(D)),!Vs(D.status)){if(o(!1),D.status==="succeeded"&&D.restartScheduled){y(!0),t.bridge.showNotification(s("settings.serverRestarting"),s("settings.serverInstallWarning"));return}const L=await Hs();if(x)return;O(L),E(((w=L.packages[0])==null?void 0:w.installTask)??D),d(Ws(L.packages[0]??null,D)),D.restartRequired&&await t.bridge.showNotification(s("settings.serverRestartRequired"),D.targetVersion??"-")}}catch(D){if(x)return;o(!1),d(D instanceof Error?D.message:s("settings.serverInstallFailed"))}},gl);return()=>{x=!0,window.clearTimeout(c)}},[t.bridge,M]),l.useEffect(()=>{if(!h||!M||M.status!=="succeeded"||!M.restartScheduled)return;let x=!1,c=0;const w=async()=>{try{const D=await Hs();if(x)return;const L=D.packages[0]??null;if(!pl(M,L)){c=window.setTimeout(w,At);return}y(!1),O(D),E((L==null?void 0:L.installTask)??null),d(Ws(L,(L==null?void 0:L.installTask)??null))}catch{if(x)return;d(s("settings.serverRestarting")),c=window.setTimeout(w,At)}};return d(s("settings.serverRestarting")),c=window.setTimeout(w,Math.max(M.restartDelayMs??0,ml)),()=>{x=!0,window.clearTimeout(c)}},[h,M]);async function g(){n(!0),d(null);try{const x=await Hs(),c=x.packages[0]??null;O(x),E((c==null?void 0:c.installTask)??null),d(Ws(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){d(x instanceof Error?x.message:s("settings.serverCheckFailed"))}finally{n(!1)}}async function N(){if(v!=null&&v.packageName){b(!1),y(!1),o(!0),d(null);try{const x=await dl(v.packageName);E(x),d(et(x))}catch(x){o(!1),d(x instanceof Error?x.message:s("settings.serverInstallFailed"))}}}const f=!!(v&&v.checkStatus!=="check_failed"&&v.hasUpdate&&!v.restartRequired&&!Vs(M==null?void 0:M.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,j?e.jsx("p",{className:"settings-update-status","data-tone":hl(v,M,R),children:j}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:a||r||R,onClick:g,children:a?s("common.loading"):s("settings.serverCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!f||a||r||R,onClick:()=>b(!0),children:r?s("common.loading"):s("settings.serverInstallNow")})]})]}),e.jsx(bl,{open:T,busy:r,mobile:t.isMobile,targetVersion:(v==null?void 0:v.latestVersion)??null,onClose:()=>b(!1),onConfirm:()=>{N()}})]})}function Ws(t,a){return a?et(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 et(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 hl(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 Vs(t){return t==="queued"||t==="running"}function pl(t,a){return a?t.targetVersion?Pt(a.currentVersion)===Pt(t.targetVersion):!a.hasUpdate:!1}function Pt(t){return(t??"").trim().replace(/^v/i,"")}function bl({open:t,busy:a,mobile:n,targetVersion:r,onClose:o,onConfirm:h}){const y=e.jsxs(oe,{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")})]}),T=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(Le,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),height:"auto",kind:"form",dismissible:!a,footer:y,onClose:o,children:T}):e.jsx(Re,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),size:"compact",layout:"confirm",bodyClassName:"settings-update-confirm-body",dismissible:!a,footer:y,onClose:o,children:T})}async function fl(){return await $.request("/api/system/relay-tunnel/status")}async function $s(t){return await $.request("/api/system/relay-tunnel/config",{method:"PUT",body:JSON.stringify(t)})}async function xl(t){return await $.request("/api/system/relay-tunnel/control/login",{method:"POST",body:JSON.stringify(t)})}async function yl(){return await $.request("/api/system/relay-tunnel/control/logout",{method:"POST"})}async function jl(t){const a=t.hostLabel.trim(),n=`/api/system/relay-tunnel/control/host-label-availability?hostLabel=${encodeURIComponent(a)}`;return await $.request(n)}async function vl(t){return await $.request("/api/system/relay-tunnel/control/bind",{method:"POST",body:JSON.stringify(t)})}async function Nl(){return await $.request("/api/system/relay-tunnel/control/wallet")}async function Et(){return await $.request("/api/system/relay-tunnel/enable",{method:"POST"})}async function Sl(){return await $.request("/api/system/relay-tunnel/disable",{method:"POST"})}async function Tl(){return await $.request("/api/system/relay-tunnel/unbind",{method:"POST"})}function wl(){const t=hs(),{showToast:a}=tt(),[n,r]=l.useState(null),[o,h]=l.useState(""),[y,T]=l.useState(()=>ot()),[b,j]=l.useState(()=>Ln()),[d,k]=l.useState(""),[O,M]=l.useState(""),[E,v]=l.useState(null),[R,g]=l.useState({status:"idle"}),[N,f]=l.useState(!0),[x,c]=l.useState(null),[w,D]=l.useState(null),[L,S]=l.useState(null),[F,z]=l.useState(null),[se,V]=l.useState(null),H=l.useRef(!0),te=Ts(n==null?void 0:n.controlBaseUrl),ae=In(y),le=ae??te,J=Ts(ae??(n==null?void 0:n.controlBaseUrl)),I=o.trim(),W=ae!==null&&ae!==te,C=(n==null?void 0:n.activated)??!1,m=d.trim().length>0&&O.trim().length>0,_=!!(n!=null&&n.controlAccountEmail),U=n!=null&&n.bindingId?!0:R.status==="available"&&R.hostLabel===I,ue=!!(n!=null&&n.bindingId)||_&&I.length>0&&U,ge=Lt({controlBaseUrl:J,tunnelDomain:n==null?void 0:n.tunnelDomain,hostLabel:o}),G=!!(n!=null&&n.controlAccountEmail||n!=null&&n.bindingId),be=!!(n!=null&&n.bindingId||U),A=!!(n!=null&&n.enabled&&(n!=null&&n.bindingId)),B=!!(n!=null&&n.bindingId)||ue,Z=E?os(E.grantedBytes):s("settings.tailscaleUnavailable"),de=os(E?E.usedBytes:n==null?void 0:n.trafficUsedBytes),fe=os(E?E.remainingBytes:n==null?void 0:n.trafficRemainingBytes),ke=st(Ee.getState()),xe=sa(),Me=xe?s(ta(xe.kind)):null,ye=xe?Cl(xe):null;l.useEffect(()=>(H.current=!0,Ae(!1),()=>{H.current=!1}),[]),l.useEffect(()=>{if(!C)return;const i=window.setInterval(()=>{Ae(!0)},5e3);return()=>{window.clearInterval(i)}},[C]),l.useEffect(()=>{!C||!_||De()},[C,_]),l.useEffect(()=>{n!=null&&n.bindingId||R.status!=="idle"&&R.hostLabel!==I&&g({status:"idle"})},[R,I,n==null?void 0:n.bindingId]),l.useEffect(()=>{T(te)},[te]);async function Ae(i,q){i||f(!0);try{const ne=await fl();if(!H.current)return;je(ne,q),D(null)}catch(ne){H.current&&D(Js(ne,"status",ke))}finally{H.current&&!i&&f(!1)}}function je(i,q){r(i),V(null),i.controlAccountEmail||v(null),i.tunnelDomain&&o.trim().length===0&&h(mn(i.tunnelDomain)),((q==null?void 0:q.syncProfile)??!0)&&ze(i)}async function De(){try{const i=await Nl();if(!H.current)return;v(i.wallet)}catch(i){H.current&&V(He(i))}}async function Ze(){if(m){c("login-control"),V(null);try{const i=await xl({email:d.trim(),password:O});z(null),je(i),await De()}catch(i){z(Js(i,"login",ke))}finally{c(null)}}}async function Be(){c("logout-control"),V(null);try{const i=await yl();je(i),v(null),g({status:"idle"})}catch(i){V(He(i))}finally{c(null)}}async function Ye(){if(!I)throw new Error(s("settings.relayTunnelHostLabelRequired"));if(R.status==="available"&&R.hostLabel===I)return{hostLabel:R.hostLabel,tunnelDomain:R.tunnelDomain,available:!0,reason:"available"};g({status:"checking",hostLabel:I});const i=await jl({hostLabel:I});if(!i.available||!i.tunnelDomain){const q=Ml(i);throw g({status:"error",hostLabel:I,message:q}),new Error(q)}return g({status:"available",hostLabel:I,tunnelDomain:i.tunnelDomain}),i}async function Ie(){if(!(!G||n!=null&&n.bindingId)){c("check-host-label"),V(null);try{await Ye()}catch{}finally{c(null)}}}async function Ne(){c("learn-service"),V(null);try{await Qs(t.bridge.openExternal,J)}catch(i){V(He(i))}finally{c(null)}}async function Q(){c("manage-account"),V(null);try{await Qs(t.bridge.openExternal,J)}catch(i){V(He(i))}finally{c(null)}}async function Oe(){if(ge)try{await Al(ge,t),a({title:s("settings.relayTunnelAccessUrlCopied"),tone:"success"})}catch(i){a({title:i instanceof Error?i.message:s("settings.relayTunnelCopyAccessUrlFailed"),tone:"error"})}}async function qe(){if(ge)try{await Qs(t.bridge.openExternal,ge)}catch(i){a({title:i instanceof Error?i.message:s("settings.relayTunnelOpenAccessUrlFailed"),tone:"error"})}}async function Te(){if(ue){c("enable"),V(null);try{let i=n;if(i!=null&&i.activated||(i=await $s({activated:!0,controlBaseUrl:le}),je(i)),i!=null&&i.bindingId||(await Ye(),i=await vl({hostLabel:I}),je(i),await De()),!(i!=null&&i.enabled)){const q=await Et();je(q)}}catch(i){V(He(i))}finally{c(null)}}}async function Ve(){if(n!=null&&n.bindingId){c("reconnect"),V(null);try{n!=null&&n.enabled&&await Sl();const i=await Et();je(i),i.controlAccountEmail&&await De()}catch(i){const q=He(i);await Ae(!0,{syncProfile:!1}),V(q)}finally{c(null)}}}async function $e(){c("disconnect-device"),V(null);try{if(n!=null&&n.bindingId||n!=null&&n.accountId){const i=await Tl();je(i)}if(n!=null&&n.activated){const i=await $s({activated:!1});je(i)}v(null),k(""),h(""),M(""),g({status:"idle"})}catch(i){V(He(i))}finally{c(null)}}async function Se(){if(!ae){S(s("settings.serverInvalid"));return}c("save-config"),S(null);try{const i=await $s({controlBaseUrl:ae});S(null),je(i)}catch(i){S(Js(i,"config",ke))}finally{c(null)}}return e.jsxs("div",{className:"settings-relay-tunnel-panel",children:[N&&!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,!N&&!A?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 Ne(),children:s("settings.relayTunnelLearnService")}),children:[w?e.jsx(zs,{title:s("settings.relayTunnelStatusErrorTitle"),message:w,action:e.jsx("button",{className:"secondary-button",disabled:N||x!==null,type:"button",onClick:()=>void Ae(!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":Ks(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(re,{className:"settings-relay-tunnel-step-tag",children:s(Gs(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(oe,{align:"start",children:e.jsx("button",{className:"secondary-button",disabled:x!==null,type:"button",onClick:()=>{if(n!=null&&n.bindingId){$e();return}Be()},children:s("common.logout")})})]}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"settings-relay-tunnel-form",children:[e.jsx(Y,{label:s("settings.relayTunnelAccountEmail"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountEmail"),className:"settings-text-input",type:"email",value:d,onChange:i=>{k(i.target.value),z(null)},placeholder:s("settings.relayTunnelAccountEmailPlaceholder")})}),e.jsx(Y,{label:s("settings.relayTunnelAccountPassword"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountPassword"),className:"settings-text-input",type:"password",value:O,onChange:i=>{M(i.target.value),z(null)},placeholder:s("settings.relayTunnelAccountPasswordPlaceholder")})}),F?e.jsx(zs,{title:s("settings.relayTunnelLoginErrorTitle"),message:F}):null,e.jsxs(oe,{align:"start",children:[e.jsx("button",{className:"settings-button",disabled:x!==null||!m,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:()=>{j(i=>!i),S(null)},children:b?s("settings.relayTunnelAdvancedSettingsHide"):s("settings.relayTunnelAdvancedSettings")})]}),b?e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[e.jsx(Y,{label:s("settings.relayTunnelControlBaseUrl"),description:s("settings.relayTunnelServerAddressHint"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelControlBaseUrl"),className:"settings-text-input",type:"url",value:y,onChange:i=>{T(i.target.value),S(null)},placeholder:ot()})}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelAdvancedSettingsDescription")}),L?e.jsx(zs,{title:s("settings.relayTunnelConfigErrorTitle"),message:L}):null,e.jsx(oe,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:N||x!==null||!W,type:"button",onClick:()=>void Se(),children:x==="save-config"?s("common.loading"):s("common.save")})})]}):null]})})})]}),e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":Ks(be,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(re,{className:"settings-relay-tunnel-step-tag",children:s(Gs(be,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:ge??n.tunnelDomain??s("settings.relayTunnelUnbound")})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-relay-tunnel-domain-row",children:[e.jsx("input",{"aria-label":s("settings.relayTunnelHostLabel"),className:"settings-text-input settings-relay-tunnel-domain-prefix",value:o,onChange:i=>h(i.target.value),placeholder:s("settings.relayTunnelHostLabelPlaceholder")}),e.jsx("span",{className:"settings-relay-tunnel-domain-suffix",children:s("settings.relayTunnelHostLabelSuffix")}),e.jsx("button",{className:"settings-button settings-relay-tunnel-domain-check",disabled:x!==null||I.length===0,type:"button",onClick:()=>void Ie(),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===I?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:Lt({controlBaseUrl:le,tunnelDomain:R.tunnelDomain,hostLabel:R.hostLabel})??R.tunnelDomain})}):null,R.status==="checking"&&R.hostLabel===I?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelHostLabelChecking")}):null,R.status==="error"&&R.hostLabel===I?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":Ks(A,be),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(re,{className:"settings-relay-tunnel-step-tag",children:s(Gs(A,be))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:be?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:C?s("settings.relayTunnelStepStartReady"):s("settings.relayTunnelActivationHint")}),e.jsx(oe,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:x!==null||!B,type:"button",onClick:()=>void Te(),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:[xe&&Me&&ye?e.jsx(kl,{hint:ye,label:Me,url:xe.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,se?e.jsx("p",{className:"settings-relay-tunnel-error",children:se}):null]})]}):null,!N&&A?e.jsxs(ee,{heading:s("settings.relayTunnelReadyTitle"),description:s("settings.relayTunnelReadyDescription"),children:[e.jsxs(pe,{compact:!0,children:[xe&&Me?e.jsxs(e.Fragment,{children:[e.jsx(We,{label:s("settings.relayTunnelClientRouteLabel"),value:Me}),e.jsx(We,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:xe.url})]}):null,e.jsx(We,{className:"settings-relay-tunnel-summary-line-access-url",label:s("settings.relayTunnelAccessUrlLabel"),trailing:ge?e.jsxs("div",{className:"settings-relay-tunnel-access-url",children:[e.jsx("span",{className:"settings-relay-tunnel-access-url-text",title:ge,children:ge}),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 qe(),children:s("settings.relayTunnelOpenAccessUrl")})]})]}):e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:s("settings.relayTunnelUnbound")})}),e.jsx(We,{label:s("settings.relayTunnelTrafficGranted"),value:Z}),e.jsx(We,{label:s("settings.relayTunnelTrafficUsed"),value:de}),e.jsx(We,{label:s("settings.relayTunnelTrafficRemaining"),value:fe})]}),e.jsxs(oe,{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 Q(),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 $e(),children:x==="disconnect-device"?s("common.loading"):s("settings.relayTunnelDisconnectDeviceAction")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[xe&&Me&&ye?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:ye}):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,se?e.jsx("p",{className:"settings-relay-tunnel-error",children:se}):null]})]}):null]});function ze(i){const q=Ee.getState(),ne=On(q);if(!ne)return;const _e=Pe(i);Pl(ne.relayTunnel??null,_e)||Ee.update({hosts:q.hosts.map(ns=>ns.id===ne.id?{...ns,relayTunnel:_e,updatedAt:new Date().toISOString()}:ns)})}function Pe(i){return!(i!=null&&i.bindingId)||!i.tunnelDomain?null:{provider:"codingns_relay",enabled:i.enabled,tunnelDomain:i.tunnelDomain.trim().toLowerCase(),controlBaseUrl:Ts(i.controlBaseUrl),bindingId:i.bindingId,hostFingerprint:i.hostFingerprint,candidateEndpoints:i.candidateEndpoints}}}function kl({label:t,url:a,hint:n}){return e.jsxs(e.Fragment,{children:[e.jsxs(pe,{compact:!0,children:[e.jsx(We,{label:s("settings.relayTunnelClientRouteLabel"),value:t}),e.jsx(We,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:a})]}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:n})]})}function We({label:t,value:a,trailing:n,className:r}){return e.jsx(me,{className:r,label:t,trailing:n??e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:a})})}function Cl(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 zs({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 Ks(t,a){return t?"done":a?"current":"pending"}function Gs(t,a){return t?"settings.relayTunnelStepDone":a?"settings.relayTunnelStepCurrent":"settings.relayTunnelStepPending"}function Ml(t){switch(t.reason){case"reserved":return s("settings.relayTunnelHostLabelReserved");case"occupied":return s("settings.relayTunnelHostLabelOccupied");case"available":return t.tunnelDomain?s("settings.relayTunnelHostLabelAvailable",{domain:t.tunnelDomain}):s("settings.relayTunnelHostLabelUnavailable");default:return s("settings.relayTunnelHostLabelUnavailable")}}function He(t){return t instanceof Fe||t instanceof Error?t.message:s("settings.relayTunnelLoadFailed")}function Js(t,a,n){if(t instanceof Fe&&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 He(t)}function os(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 mn(t){return t?t.split(".")[0]||s("common.unknown"):s("common.unknown")}function Lt(t){var r,o,h,y;const a=It(t.hostLabel)??It(mn(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 T=new URL(n);return T.hostname=`${a}.${T.hostname}`,T.pathname="/",T.search="",T.hash="",T.origin}catch{return((y=t.tunnelDomain)==null?void 0:y.trim())??null}}function It(t){const a=(t==null?void 0:t.trim().toLowerCase())??"";return!a||a===s("common.unknown").toLowerCase()?null:a}async function Qs(t,a){!(await t(a)).ok&&typeof window<"u"&&window.open(a,"_blank","noopener,noreferrer")}function Dl(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 Al(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(!Dl(t))throw new Error(s("settings.relayTunnelCopyAccessUrlFailed"))}function Pl(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 Ot(){return await $.request("/api/system/tailscale/status")}async function Ut(t){return await $.request("/api/system/tailscale/config",{method:"PUT",body:JSON.stringify(t)})}async function El(){return await $.request("/api/system/tailscale/enable",{method:"POST"})}async function Ll(){return await $.request("/api/system/tailscale/disable",{method:"POST"})}async function Il(){return await $.request("/api/system/tailscale/login",{method:"POST"})}async function Ol(){return await $.request("/api/system/tailscale/logout",{method:"POST"})}function Ul({children:t}){return e.jsx("div",{className:"settings-remote-access-metrics",children:t})}function vs({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 Rl({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 Fl({configMode:t="modal"}){const a=hs(),[n,r]=l.useState(null),[o,h]=l.useState(""),[y,T]=l.useState(""),[b,j]=l.useState(!0),[d,k]=l.useState(null),[O,M]=l.useState(null),[E,v]=l.useState(!1),[R,g]=l.useState(!1),N=l.useRef(!0),f=l.useRef(!1),x=l.useRef(async()=>{}),c=t==="inline",w=(n==null?void 0:n.activated)??!1;f.current=R;function D(I){if(r(I),h(I.controlServerUrl??""),T(I.hostname??""),M(null),!I.activated){g(!1),v(!1);return}f.current&&!Bt(I.lastError)&&g(!1)}x.current=async I=>{I||j(!0);try{const W=await Ot();if(!N.current)return;D(W)}catch(W){if(!N.current)return;M(ds(W))}finally{N.current&&!I&&j(!1)}},l.useEffect(()=>(N.current=!0,x.current(!1),()=>{N.current=!1}),[]),l.useEffect(()=>{if(!w)return;const I=window.setInterval(()=>{x.current(!0)},5e3);return()=>{window.clearInterval(I)}},[w]),l.useEffect(()=>{if(!R||!w)return;function I(){x.current(!0)}function W(){document.visibilityState==="visible"&&x.current(!0)}return window.addEventListener("focus",I),document.addEventListener("visibilitychange",W),()=>{window.removeEventListener("focus",I),document.removeEventListener("visibilitychange",W)}},[w,R]);const L=((n==null?void 0:n.controlServerUrl)??"")!==o.trim()||((n==null?void 0:n.hostname)??"")!==y.trim(),S=w&&Bt(n==null?void 0:n.lastError),F=w&&_l(a.ui.osFamily)&&S;async function z(){const I=await Ut({controlServerUrl:Ft(o),hostname:Ft(y)});return D(I),I}async function se(I){k("toggle-activation"),M(null);try{const W=await Ut({activated:I});D(W)}catch(W){M(ds(W))}finally{k(null),j(!1)}}async function V(I){k(I),M(null);try{L&&I!=="disable"&&I!=="logout"&&await z();const W=I==="enable"?await El():I==="disable"?await Ll():I==="login"?await Il():await Ol();D(W)}catch(W){M(ds(W))}finally{k(null)}}async function H(){k("save"),M(null);try{await z(),v(!1)}catch(I){M(ds(I))}finally{k(null)}}async function te(){k("refresh"),M(null);try{const I=await Ot();D(I)}catch(I){M(ds(I))}finally{k(null),j(!1)}}async function ae(){const I=Hl(a.ui.osFamily);if(I){k("install"),M(null);try{const W=await a.bridge.openExternal(I);if(!W.ok){M(W.detail??s("settings.tailscaleInstallOpenFailed"));return}g(!0)}catch(W){M(W instanceof Error?W.message:s("settings.tailscaleInstallOpenFailed"))}finally{k(null)}}}function le(){d!=="save"&&v(!1)}const J=w?e.jsxs("span",{className:"settings-tailscale-status-indicator","data-tone":Wl((n==null?void 0:n.phase)??"disabled"),children:[e.jsx("span",{className:"settings-tailscale-status-dot","aria-hidden":"true"}),ql((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(Rl,{checked:w,label:s("settings.tailscaleMasterSwitchLabel"),disabled:d!==null,onChange:I=>{se(I)}}),children:b&&!n?e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[e.jsxs(Ul,{children:[e.jsx(vs,{label:s("settings.tailscaleStatusIndicator"),value:J}),e.jsx(vs,{label:s("settings.tailscaleServerAddress"),value:w?(n==null?void 0:n.reachableBaseUrl)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(vs,{label:s("settings.tailscaleAccountName"),value:w?(n==null?void 0:n.accountName)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(vs,{label:s("settings.tailscaleIpAddress"),value:w?Bl(n):s("settings.tailscaleUnavailable")})]}),w?null:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("settings.tailscaleActivationHint")}),w&&(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,O||n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:O??(n==null?void 0:n.lastError)}):null,w?e.jsxs(oe,{align:"start",children:[F?e.jsx("button",{className:"settings-button",type:"button",disabled:b||d!==null,onClick:()=>{ae()},children:d==="install"?s("common.loading"):s("settings.tailscaleInstallAction")}):null,c?null:e.jsx("button",{className:"secondary-button",type:"button",disabled:b||d!==null,onClick:()=>v(!0),children:s("settings.tailscaleConfigure")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||d!==null,onClick:()=>{te()},children:d==="refresh"?s("common.loading"):s("settings.tailscaleRefresh")}),n!=null&&n.enabled?e.jsx("button",{className:"secondary-button",type:"button",disabled:b||d!==null||S,onClick:()=>{V("disable")},children:d==="disable"?s("common.loading"):s("settings.tailscaleDisable")}):e.jsx("button",{className:"secondary-button",type:"button",disabled:b||d!==null||S,onClick:()=>{V("enable")},children:d==="enable"?s("common.loading"):s("settings.tailscaleEnable")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||d!==null||!(n!=null&&n.enabled)||S,onClick:()=>{V("login")},children:d==="login"?s("common.loading"):s("settings.tailscaleLogin")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||d!==null||!(n!=null&&n.enabled)||S,onClick:()=>{V("logout")},children:d==="logout"?s("common.loading"):s("settings.tailscaleLogout")})]}):null]})}),c&&w?e.jsx(ee,{heading:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),children:e.jsx(Rt,{controlServerUrlDraft:o,hostnameDraft:y,pendingAction:d,configDirty:L,onControlServerUrlChange:h,onHostnameChange:T,onSave:()=>{H()}})}):null]}),e.jsx(ts,{open:!c&&w&&E,title:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),size:"regular",onClose:le,children:e.jsx(Rt,{controlServerUrlDraft:o,hostnameDraft:y,pendingAction:d,configDirty:L,footer:e.jsx("div",{className:"settings-tailscale-modal-actions",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:d==="save",onClick:le,children:s("common.cancel")})}),onControlServerUrlChange:h,onHostnameChange:T,onSave:()=>{H()}})})]})}function Rt({controlServerUrlDraft:t,hostnameDraft:a,pendingAction:n,configDirty:r,footer:o,onControlServerUrlChange:h,onHostnameChange:y,onSave:T}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-form",children:[e.jsx(Y,{label:s("settings.tailscaleControlServer"),children:e.jsx("input",{"aria-label":s("settings.tailscaleControlServer"),className:"settings-text-input",placeholder:s("settings.tailscaleControlServerPlaceholder"),value:t,onChange:b=>h(b.target.value)})}),e.jsx(Y,{label:s("settings.tailscaleHostname"),children:e.jsx("input",{"aria-label":s("settings.tailscaleHostname"),className:"settings-text-input",placeholder:s("settings.tailscaleHostnamePlaceholder"),value:a,onChange:b=>y(b.target.value)})})]}),e.jsxs(oe,{align:"start",className:"settings-tailscale-config-actions",children:[o,e.jsx("button",{className:"settings-button",type:"button",disabled:n!==null||!r,onClick:T,children:n==="save"?s("common.loading"):s("common.save")})]})]})}function Ft(t){const a=t.trim();return a.length>0?a:null}function ds(t){return t instanceof Fe||t instanceof Error?t.message:s("settings.tailscaleLoadFailed")}function Bl(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 ql(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 Bt(t){return t?t.includes("Tailscale CLI"):!1}function _l(t){return t==="macos"||t==="windows"}function Hl(t){switch(t){case"macos":return"https://tailscale.com/download/mac";case"windows":return"https://tailscale.com/download/windows";default:return null}}function Wl(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 hn({open:t,mobile:a,onClose:n}){const[r,o]=l.useState("tunnel"),h=l.useId(),y=[{id:"tunnel",label:s("settings.remoteAccessTunnelTab")},{id:"tailscale",label:s("settings.remoteAccessTailscaleTab")}],T=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.remoteAccessTabsLabel"),children:y.map(b=>{const j=`${h}-${b.id}-tab`,d=`${h}-${b.id}-panel`,k=r===b.id;return e.jsx("button",{id:j,type:"button",role:"tab",className:"settings-model-tab","data-active":k?"true":void 0,"aria-selected":k,"aria-controls":d,onClick:()=>o(b.id),children:b.label},b.id)})}),r==="tunnel"?e.jsx("div",{id:`${h}-tunnel-panel`,"aria-labelledby":`${h}-tunnel-tab`,role:"tabpanel",children:e.jsx(wl,{})}):e.jsx("div",{id:`${h}-tailscale-panel`,"aria-labelledby":`${h}-tailscale-tab`,role:"tabpanel",children:e.jsx(Fl,{configMode:"inline"})})]});return a?e.jsx(Le,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:n,children:T}):e.jsx(ts,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),size:"wide",onClose:n,children:T})}function pn({open:t,mobile:a,workspaceId:n,onClose:r}){var I,W;const o=nt(),{showToast:h}=tt(),[y,T]=l.useState([]),[b,j]=l.useState(""),[d,k]=l.useState(null),[O,M]=l.useState([]),[E,v]=l.useState([]),[R,g]=l.useState(!1),[N,f]=l.useState(!1),[x,c]=l.useState(!1),[w,D]=l.useState(!1),[L,S]=l.useState(null);async function F(C){g(!0);try{const _=(await ba()).items;T(_);const U=Vl(C??b,_);return j(U),U}catch(m){return h({title:m instanceof Error?m.message:s("plugins.listLoadFailed"),tone:"error"}),""}finally{g(!1)}}async function z(C){if(!C){k(null),M([]);return}f(!0);try{const[m,_]=await Promise.all([fa(C),xa(C)]);k(m),M(_.items)}catch(m){h({title:m instanceof Error?m.message:s("plugins.detailLoadFailed"),tone:"error"}),k(null),M([])}finally{f(!1)}}async function se(C){const m=(n==null?void 0:n.trim())??"";if(!C||!m){v([]);return}c(!0);try{const _=await ya(C,m);v(_.items)}catch(_){h({title:_ instanceof Error?_.message:s("plugins.permissionGrantLoadFailed"),tone:"error"}),v([])}finally{c(!1)}}l.useEffect(()=>{t&&F()},[t]),l.useEffect(()=>{t&&(z(b),se(b))},[t,b]);const V=l.useMemo(()=>(d==null?void 0:d.manifest.permissions.desktop)??[],[d]),H=!!(d!=null&&d.frontend&&(n!=null&&n.trim()));async function te(){if(!(!d||w)){D(!0);try{d.enablement.enabled?await va(d.definition.id,s("plugins.disabledByUserReason")):await Na(d.definition.id);const C=await F(d.definition.id);await z(C||d.definition.id),h({title:d.enablement.enabled?s("plugins.disableSuccess"):s("plugins.enableSuccess"),tone:"success"})}catch(C){h({title:C instanceof Error?C.message:s("plugins.saveFailed"),tone:"error"})}finally{D(!1)}}}async function ae(C){const m=(n==null?void 0:n.trim())??"";if(!(!d||!m||L)){S(C.id);try{await ja(d.definition.id,C.id,m),await Promise.all([z(d.definition.id),se(d.definition.id)]),h({title:s("plugins.revokeGrantSuccess"),tone:"success"})}catch(_){h({title:_ instanceof Error?_.message:s("plugins.revokeGrantFailed"),tone:"error"})}finally{S(null)}}}function le(){const C=(n==null?void 0:n.trim())??"";!(d!=null&&d.frontend)||!C||(o(pa(C,d.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")}):y.length===0?e.jsx(ie,{title:s("plugins.emptyTitle"),description:s("plugins.emptyDescription"),compact:!0}):e.jsx(pe,{className:"settings-plugin-modal-list",children:y.map(C=>e.jsx(me,{as:"button",selected:b===C.id,label:C.name,description:`${C.id} · v${C.version}`,trailing:e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(re,{tone:C.enabled?"success":"default",children:C.enabled?s("plugins.enabled"):s("plugins.disabled")}),C.hasFrontend?e.jsx(re,{children:s("plugins.frontendTag")}):null,C.hasBackend?e.jsx(re,{children:s("plugins.backendTag")}):null]}),onClick:()=>j(C.id)},C.id))})}),e.jsx(ee,{heading:s("settings.pluginManagementModalDetailTitle"),description:s("settings.pluginManagementModalDetailDescription"),className:"settings-plugin-modal-section settings-plugin-modal-detail-section",children:!b&&!R?e.jsx(ie,{title:s("settings.pluginManagementSelectPluginTitle"),description:s("settings.pluginManagementSelectPluginDescription"),compact:!0}):N?e.jsx("p",{className:"plugins-hint-text",children:s("plugins.loading")}):d?e.jsxs("div",{className:"settings-plugin-modal-detail-stack",children:[e.jsxs("header",{className:"settings-plugin-modal-header",children:[e.jsxs("div",{children:[e.jsx("strong",{children:d.manifest.name}),e.jsx("p",{children:d.manifest.description??d.definition.id})]}),e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(re,{tone:d.enablement.enabled?"success":"default",children:d.enablement.enabled?s("plugins.enabled"):s("plugins.disabled")}),e.jsx(re,{children:`v${d.manifest.version}`})]})]}),e.jsx(ee,{heading:s("plugins.summaryTitle"),description:s("plugins.summaryDescription"),children:e.jsxs(pe,{compact:!0,children:[e.jsx(me,{label:s("plugins.pluginIdLabel"),description:d.definition.id}),e.jsx(me,{label:s("plugins.installRootLabel"),description:d.definition.installRoot}),e.jsx(me,{label:s("plugins.runtimeLabel"),description:d.manifest.backend?`${s("plugins.backendTag")} · ${d.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(re,{tone:d.manifest.permissions.workspaceRead?"success":"default",children:d.manifest.permissions.workspaceRead?s("plugins.workspaceReadAllowed"):s("plugins.workspaceReadDenied")}),e.jsx(re,{tone:d.manifest.permissions.network?"warning":"default",children:d.manifest.permissions.network?s("plugins.networkAllowed"):s("plugins.networkDenied")}),V.length>0?V.map(C=>e.jsx(re,{children:C},C)):e.jsx(re,{children:s("plugins.noDesktopPermission")})]})}),e.jsx(Sa,{grants:E,auditEvents:d.auditEvents,loading:x,revokingGrantId:L,onRevokeGrant:C=>{ae(C)}}),(W=(I=d.manifest.backend)==null?void 0:I.actions)!=null&&W.length?e.jsx(ee,{heading:s("plugins.actionTitle"),description:s("plugins.actionDescription"),children:e.jsx(pe,{compact:!0,children:d.manifest.backend.actions.map(C=>e.jsx(me,{label:C.title,description:`${C.id} · ${C.timeoutMs??3e4}ms`},C.id))})}):null,e.jsx(ee,{heading:s("plugins.runHistoryTitle"),description:s("plugins.runHistoryDescription"),children:O.length===0?e.jsx(ie,{title:s("plugins.runHistoryEmptyTitle"),description:s("plugins.runHistoryEmptyDescription"),compact:!0}):e.jsx(pe,{compact:!0,children:O.slice(0,10).map(C=>e.jsx(me,{label:C.actionId??s("plugins.unknownAction"),description:`${C.status} · ${C.createdAt}`,trailing:C.errorCode?e.jsx(re,{tone:"danger",children:C.errorCode}):null},C.id))})}),H?null:e.jsx("p",{className:"settings-plugin-modal-workspace-note",children:s("settings.pluginManagementWorkspaceRequired")}),e.jsxs(oe,{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:[d.frontend?e.jsx("button",{type:"button",className:"secondary-button",disabled:!H,onClick:le,children:s("plugins.openPlugin")}):null,e.jsx("button",{type:"button",className:d.enablement.enabled?"secondary-button":"primary-button",disabled:w,onClick:()=>{te()},children:d.enablement.enabled?s("plugins.disableAction"):s("plugins.enableAction")})]})]})]}):e.jsx(ie,{title:s("plugins.detailMissingTitle"),description:s("plugins.detailMissingDescription"),compact:!0})})]});return a?e.jsx(Le,{open:t,title:s("settings.pluginManagementModalTitle"),description:s("settings.pluginManagementModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:r,children:J}):e.jsx(Re,{open:t,title:s("settings.pluginManagementModalTitle"),description:s("settings.pluginManagementModalDescription"),size:"xwide",layout:"list",bodyClassName:"settings-plugin-modal-body",onClose:r,children:J})}function Vl(t,a){var n;return t&&a.some(r=>r.id===t)?t:((n=a[0])==null?void 0:n.id)??""}const bn="secret://teable/main",$l=["manual","scheduled","event_driven"],fn=["sessions","todos","tags"];function xn({open:t,mobile:a,workspaceOptions:n=[],onClose:r}){var ct;const{showToast:o}=tt(),[h,y]=l.useState("connection"),[T,b]=l.useState(null),[j,d]=l.useState(null),[k,O]=l.useState([]),[M,E]=l.useState({tags:[],sessions:[],todos:[]}),[v,R]=l.useState([]),[g,N]=l.useState({}),[f,x]=l.useState([]),[c,w]=l.useState([]),[D,L]=l.useState(!1),[S,F]=l.useState(!1),[z,se]=l.useState(!1),[V,H]=l.useState(!1),[te,ae]=l.useState(!1),[le,J]=l.useState(null),[I,W]=l.useState(null),[C,m]=l.useState(qt(null)),[_,U]=l.useState(Zs([])),[ue,ge]=l.useState({tags:Ys("tags"),sessions:Ys("sessions"),todos:Ys("todos")}),[G,be]=l.useState("sessions"),A=l.useRef(null),[B,Z]=l.useState([]),[de,fe]=l.useState(null),[ke,xe]=l.useState(""),[Me,ye]=l.useState(!1),[Ae,je]=l.useState([]),[De,Ze]=l.useState(!1),Be=l.useMemo(()=>{const u=new Set,p=[];return n.forEach(P=>{const X=P.id.trim();!X||u.has(X)||(u.add(X),p.push({id:X,name:P.name.trim()||X}))}),p},[n]),Ye=l.useMemo(()=>[{id:"connection",label:s("settings.teableTabConnectionSettings")},{id:"tableSync",label:s("settings.teableTabTableSyncSettings")},{id:"syncLogs",label:s("settings.teableTabSyncLogs")}],[]),Ie=l.useMemo(()=>Gl(k,_),[k,_]),Ne=l.useMemo(()=>{const u=new Set(B);return Ie.filter(p=>u.has(p.tableId))},[B,Ie]),Q=l.useMemo(()=>Ne.find(u=>u.tableId===de)??Ne[0]??null,[Ne,de]),Oe=ue[G],qe=_.find(u=>u.sourceType===G)??Zs([]).find(u=>u.sourceType===G),Te=M[G]??[],Ve=Q?g[Q.tableId]??[]:[],$e=(Q==null?void 0:Q.tableName)??"",Se=l.useMemo(()=>Ie.filter(u=>!B.includes(u.tableId)),[B,Ie]),ze=l.useMemo(()=>f.map(u=>({key:u.id,tag:u})),[f]);l.useEffect(()=>{t&&(y("connection"),W(null),J(null),Pe())},[t]),l.useEffect(()=>{m(qt(T))},[T]),l.useEffect(()=>{U(Zs((j==null?void 0:j.syncConfigs)??[]))},[j==null?void 0:j.syncConfigs]),l.useEffect(()=>{ge(Kl((j==null?void 0:j.syncConfigs)??[],v))},[j==null?void 0:j.syncConfigs,v]),l.useEffect(()=>{const u=_.map(p=>p.targetTableId.trim()).filter(Boolean);Z(p=>{const P=Array.from(new Set([...p,...u]));return Jl(p,P)?p:P})},[_]),l.useEffect(()=>{var u;t&&(de&&Ne.some(p=>p.tableId===de)||fe(((u=Ne[0])==null?void 0:u.tableId)??null))},[Ne,t,de]),l.useEffect(()=>{var u;ke&&Se.some(p=>p.tableId===ke)||xe(((u=Se[0])==null?void 0:u.tableId)??"")},[Se,ke]),l.useEffect(()=>{const u=(Q==null?void 0:Q.tableId.trim())??"";!t||!u||g[u]||i(u)},[t,Q,g]),l.useEffect(()=>{!Q||A.current===Q.tableId||(A.current=Q.tableId,Q.assignedSourceType&&be(Q.assignedSourceType))},[Q]);async function Pe(){L(!0);try{const[u,p,P,X,K,ce]=await Promise.all([na(),aa(),gt(),ia(),la(),ra({includeDisabled:!0}).catch(()=>({items:[],summary:{totalActiveTags:0,totalDisabledTags:0,totalRuleEnabledTags:0,totalBoundDocuments:0},status:{recomputeState:"idle",lastRecomputedAt:null,lastError:null}}))]);b(u),d(p),O(P),R(X.mappings),w(K),E(X.sourceFieldsByType),x(ce.items.filter(ve=>ve.parentId===null)),W(null)}catch(u){W(Je(u))}finally{L(!1)}}async function i(u){try{const p=await ca(u);N(P=>({...P,[u]:p}))}catch(p){W(Je(p))}}function q(){W(null),J(null),ye(!1),r()}async function ne(){se(!0),W(null),J(null);try{const u=await ga({baseUrl:C.baseUrl,spaceId:C.spaceId,baseId:C.baseId,authRef:C.authRef||bn,authToken:C.authToken,enabled:C.enabled,mirrorMode:C.mirrorMode});b(u),J(s("settings.teableBindingSaved")),o({title:s("settings.teableBindingSaved"),tone:"success"}),await Pe()}catch(u){const p=Je(u);W(p),o({title:p,tone:"error"})}finally{se(!1)}}async function _e(){F(!0),W(null),J(null);try{const u=await gt();O(u);const p=s("settings.teableConnectionTestSuccess",{tableCount:u.length});J(p),o({title:p,tone:"success"})}catch(u){const p=Je(u);W(p),o({title:p,tone:"error"})}finally{F(!1)}}function ns(u){Z(p=>p.includes(u.tableId)?p:[...p,u.tableId]),fe(u.tableId),g[u.tableId]||i(u.tableId)}function vn(u){if(Z(p=>p.filter(P=>P!==u)),de===u){const p=B.find(P=>P!==u)??null;fe(p)}}function Nn(){const u=Te.filter(p=>!Oe.items.some(P=>P.sourceField===p.key&&P.targetFieldId)).map(p=>p.key);je(u.length>0?u:Te.map(p=>p.key)),ye(!0)}async function Sn(){if(!Q)return;const u=Te.filter(p=>Ae.includes(p.key)).map(Zl);if(u.length===0){W(s("settings.teableFieldAutoCreateEmptyError"));return}Ze(!0),W(null),J(null);try{const p=await ma({tableId:Q.tableId,fields:u});Cn(p),await i(Q.tableId),ye(!1);const P=s("settings.teableFieldAutoCreateSuccess",{count:p.length});J(P),o({title:P,tone:"success"})}catch(p){const P=Je(p);W(P),o({title:P,tone:"error"})}finally{Ze(!1)}}async function Tn(){if(Q){H(!0),W(null),J(null);try{const p=(await oa({items:[{sourceType:G,enabled:!0,targetTableId:Q.tableId,scope:qe.scope}]})).find(X=>X.sourceType===G),P=(p==null?void 0:p.configId)??Oe.configId;await da({items:[{configId:P,sourceType:G,targetTableId:Q.tableId,items:Ql(Oe.items)}]}),J(s("settings.teableTableSyncSettingsSaved")),o({title:s("settings.teableTableSyncSettingsSaved"),tone:"success"}),await Pe()}catch(u){const p=Je(u);W(p),o({title:p,tone:"error"})}finally{H(!1)}}}async function wn(){ae(!0),W(null),J(null);try{const p=(await ua({mirrorTypes:[G]})).summary||s("settings.teableLatestTaskEmpty");J(p),o({title:p,tone:"success"}),await Pe()}catch(u){const p=Je(u);W(p),o({title:p,tone:"error"})}finally{ae(!1)}}function Ue(u){U(p=>p.map(P=>P.sourceType===G?u(P):P))}function kn(u,p){const P=Ve.find(X=>X.fieldId===p)??null;ge(X=>({...X,[G]:{...X[G],targetTableId:(Q==null?void 0:Q.tableId)??X[G].targetTableId,items:Te.map(K=>K.key!==u.key?X[G].items.find(ce=>ce.sourceField===K.key)??{sourceField:K.key,targetFieldId:"",targetFieldName:"",required:K.required}:{sourceField:K.key,targetFieldId:p,targetFieldName:(P==null?void 0:P.fieldName)??"",required:K.required}).filter(K=>K.targetFieldId)}}))}function Cn(u){ge(p=>{const P=new Map(p[G].items.map(K=>[K.sourceField,K]));u.forEach(K=>{P.set(K.sourceField,{sourceField:K.sourceField,targetFieldId:K.targetFieldId,targetFieldName:K.targetFieldName,required:K.required})});const X=Te.map(K=>P.get(K.key)??null).filter(K=>!!(K!=null&&K.targetFieldId));return{...p,[G]:{...p[G],targetTableId:(Q==null?void 0:Q.tableId)??p[G].targetTableId,items:X}}})}const Mn=e.jsx("div",{className:"settings-teable-tab-panel",children:e.jsxs(ee,{heading:s("settings.teableBindingSectionTitle"),description:s("settings.teableBindingSectionDescription"),children:[e.jsx(Y,{label:s("settings.teableEnabledLabel"),children:e.jsxs("div",{className:"settings-teable-switch-field",children:[e.jsx(he,{checked:C.enabled,label:s("settings.teableEnabledLabel"),semanticRole:"switch",onChange:u=>{m(p=>({...p,enabled:u}))}}),e.jsx("span",{className:"settings-teable-switch-caption",children:C.enabled?s("common.enabled"):s("common.disabled")})]})}),e.jsx(Y,{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:C.baseUrl,placeholder:s("settings.teableBaseUrlPlaceholder"),onChange:u=>m(p=>({...p,baseUrl:u.target.value}))})}),e.jsx(Y,{label:s("settings.teableSpaceIdLabel"),htmlFor:"teable-space-id",children:e.jsx("input",{id:"teable-space-id",className:"settings-text-input",value:C.spaceId,placeholder:s("settings.teableSpaceIdPlaceholder"),onChange:u=>m(p=>({...p,spaceId:u.target.value}))})}),e.jsx(Y,{label:s("settings.teableBaseIdLabel"),htmlFor:"teable-base-id",children:e.jsx("input",{id:"teable-base-id",className:"settings-text-input",value:C.baseId,placeholder:s("settings.teableBaseIdPlaceholder"),onChange:u=>m(p=>({...p,baseId:u.target.value}))})}),e.jsx(Y,{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:C.authToken,placeholder:s("settings.teableAuthTokenPlaceholder"),onChange:u=>m(p=>({...p,authToken:u.target.value}))})}),e.jsx(Y,{label:s("settings.teableMirrorModeLabel"),htmlFor:"teable-mirror-mode",children:e.jsx("select",{id:"teable-mirror-mode",className:"settings-select",value:C.mirrorMode,onChange:u=>m(p=>({...p,mirrorMode:u.target.value})),children:$l.map(u=>e.jsx("option",{value:u,children:s(`settings.teableMirrorMode.${u}`)},u))})})]})}),Dn=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:Ie.length===0?e.jsx(ie,{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(Y,{label:s("settings.teableTableToAddLabel"),htmlFor:"teable-table-to-add",children:e.jsx("select",{id:"teable-table-to-add",className:"settings-select",value:ke,disabled:Se.length===0,onChange:u=>xe(u.target.value),children:Se.length===0?e.jsx("option",{value:"",children:s("settings.teableAllTablesAdded")}):Se.map(u=>e.jsx("option",{value:u.tableId,children:u.tableName},u.tableId))})}),e.jsx("button",{type:"button",className:"secondary-button",disabled:Se.length===0,onClick:()=>{const u=Se.find(p=>p.tableId===ke)??Se[0];u&&ns(u)},children:s("settings.teableAddSyncTableAction")})]}),Ne.length===0?e.jsx(ie,{title:s("settings.teableSelectSyncTableTitle"),description:s("settings.teableSelectSyncTableDescription"),compact:!0}):e.jsx(pe,{compact:!0,children:Ne.map(u=>e.jsx(me,{selected:(Q==null?void 0:Q.tableId)===u.tableId,label:u.tableName,trailing:e.jsx("button",{type:"button",className:"secondary-button",onClick:p=>{p.stopPropagation(),vn(u.tableId)},children:s("settings.teableRemoveSyncTableAction")}),role:"button",tabIndex:0,onClick:()=>fe(u.tableId),onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),fe(u.tableId))}},u.tableId))})]})}),e.jsx(ee,{className:"settings-teable-table-sync-main",heading:s("settings.teableTableSyncConfigTitle"),description:s("settings.teableTableSyncConfigDescription"),children:Q?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:$e})]})}),e.jsx(Y,{label:s("settings.teableSyncSourceLabel"),htmlFor:"teable-sync-source",children:e.jsx("select",{id:"teable-sync-source",className:"settings-select",value:G,onChange:u=>be(u.target.value),children:fn.map(u=>e.jsx("option",{value:u,children:s(`settings.teableSyncSource.${u}`)},u))})}),An(),e.jsx(ee,{heading:s("settings.teableFieldMappingTitle"),description:s("settings.teableFieldMappingInlineDescription"),actions:Te.length>0?e.jsx("button",{type:"button",className:"secondary-button",disabled:De,onClick:Nn,children:De?s("common.loading"):s("settings.teableFieldAutoCreateAction")}):null,children:Te.length===0?e.jsx("div",{className:"settings-field-hint",children:s("settings.teableSourceFieldsEmpty")}):e.jsx(pe,{compact:!0,children:Te.map(u=>{const p=Oe.items.find(P=>P.sourceField===u.key)??{sourceField:u.key,targetFieldId:"",required:u.required};return e.jsx(me,{label:u.label,description:`${u.type} · ${u.required?s("settings.teableFieldRequired"):s("settings.teableFieldOptional")}`,children:e.jsxs("select",{className:"settings-select",value:p.targetFieldId,onChange:P=>kn(u,P.target.value),children:[e.jsx("option",{value:"",children:s("settings.teableFieldTargetPlaceholder")}),Ve.map(P=>e.jsx("option",{value:P.fieldId,children:P.fieldName},P.fieldId))]})},u.key)})})}),e.jsx(ee,{heading:s("settings.teableSyncActionSectionTitle"),description:s("settings.teableSyncActionSectionDescription"),children:e.jsx(pe,{compact:!0,children:e.jsx(me,{label:s("settings.teableLatestTaskTitle"),description:((ct=j==null?void 0:j.latestMirrorSyncTask)==null?void 0:ct.summary)??s("settings.teableLatestTaskEmpty"),trailing:j!=null&&j.latestMirrorSyncTask?e.jsx(re,{tone:_t(j.latestMirrorSyncTask.state),children:s(`settings.teableTaskState.${j.latestMirrorSyncTask.state}`)}):null})})}),e.jsxs("div",{className:"settings-teable-inline-actions",children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:V||D,onClick:()=>{Tn()},children:V?s("common.loading"):s("settings.teableSaveTableSyncSettingsAction")}),e.jsx("button",{type:"button",className:"primary-button",disabled:te||D,onClick:()=>{wn()},children:te?s("common.loading"):s("settings.teableSyncNowAction")})]})]}):e.jsx(ie,{title:s("settings.teableSelectSyncTableTitle"),description:s("settings.teableSelectSyncTableDescription"),compact:!0})})]});function An(){if(G==="sessions"){const P=qe.scope,X=Array.isArray(P.workspaceIds)?P.workspaceIds:[];return e.jsxs(Y,{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:P.mode!=="selected_workspaces",onChange:()=>Ue(K=>({...K,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:P.mode==="selected_workspaces",onChange:()=>Ue(K=>({...K,scope:{mode:"selected_workspaces",workspaceIds:[]}}))}),e.jsx("span",{children:s("settings.teableWorkspaceScopeSelected")})]})]}),P.mode==="selected_workspaces"?it(X,K=>{Ue(ce=>({...ce,scope:{mode:"selected_workspaces",workspaceIds:K}}))}):null]})}if(G==="todos"){const P=qe.scope,X=Array.isArray(P.workspaceIds)?P.workspaceIds:[],K=X.length>0;return e.jsxs("div",{className:"settings-teable-config-fields",children:[e.jsx(Y,{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:P.includeWorkspaceTodos!==!1,onChange:ce=>Ue(ve=>({...ve,scope:{...P,includeWorkspaceTodos:ce.target.checked,includeAffairsTodos:P.includeAffairsTodos!==!1,workspaceIds:X}}))}),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:P.includeAffairsTodos!==!1,onChange:ce=>Ue(ve=>({...ve,scope:{...P,includeWorkspaceTodos:P.includeWorkspaceTodos!==!1,includeAffairsTodos:ce.target.checked,workspaceIds:X}}))}),e.jsx("span",{className:"settings-teable-choice-copy",children:e.jsx("strong",{children:s("settings.teableTodoAffairsSource")})})]})]})}),e.jsxs(Y,{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:!K,onChange:()=>Ue(ce=>({...ce,scope:{includeWorkspaceTodos:P.includeWorkspaceTodos!==!1,includeAffairsTodos:P.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:K,onChange:()=>Ue(ce=>({...ce,scope:{includeWorkspaceTodos:P.includeWorkspaceTodos!==!1,includeAffairsTodos:P.includeAffairsTodos!==!1,workspaceIds:Be[0]?[Be[0].id]:[]}}))}),e.jsx("span",{children:s("settings.teableWorkspaceScopeSelected")})]})]}),K?it(X,ce=>{Ue(ve=>({...ve,scope:{includeWorkspaceTodos:P.includeWorkspaceTodos!==!1,includeAffairsTodos:P.includeAffairsTodos!==!1,workspaceIds:ce}}))}):null]})]})}const u=qe.scope,p=Array.isArray(u.rootTagIds)?u.rootTagIds:[];return e.jsx(Y,{label:s("settings.teableDocumentTagRootsLabel"),description:s("settings.teableDocumentTagRootsDescription"),children:ze.length===0?e.jsx("div",{className:"settings-field-hint",children:s("settings.teableDocumentTagRootsEmpty")}):e.jsx("div",{className:"settings-teable-choice-list",children:ze.map(P=>{const X=p.includes(P.tag.id);return e.jsxs("label",{className:"settings-teable-choice-row",children:[e.jsx("input",{type:"checkbox",checked:X,onChange:K=>{const ce=K.target.checked?[...p,P.tag.id]:p.filter(ve=>ve!==P.tag.id);Ue(ve=>({...ve,scope:{rootTagIds:Array.from(new Set(ce))}}))}}),e.jsxs("span",{className:"settings-teable-choice-copy",children:[e.jsx("strong",{children:P.tag.path}),e.jsx("small",{children:s("shell.affairsTagTreeDocumentCount",{count:P.tag.documentCount})})]})]},P.key)})})})}function it(u,p){return Be.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:Be.map(P=>{const X=u.includes(P.id);return e.jsxs("label",{className:"settings-teable-choice-row",children:[e.jsx("input",{type:"checkbox",checked:X,onChange:K=>{const ce=K.target.checked?[...u,P.id]:u.filter(ve=>ve!==P.id);p(Array.from(new Set(ce)))}}),e.jsx("span",{className:"settings-teable-choice-copy",children:e.jsx("strong",{children:P.name})})]},P.id)})})}function lt(){const u=e.jsxs("div",{className:"settings-teable-field-picker",children:[e.jsx(ee,{heading:s("settings.teableFieldAutoCreateModalSectionTitle"),description:s("settings.teableFieldAutoCreateModalSectionDescription",{table:$e}),children:e.jsx(pe,{compact:!0,children:Te.map(p=>{const P=Ae.includes(p.key),X=Oe.items.find(K=>K.sourceField===p.key&&K.targetFieldId);return e.jsx(me,{label:p.label,description:X?s("settings.teableFieldAlreadyMappedDescription",{field:X.targetFieldName}):`${p.type} · ${p.required?s("settings.teableFieldRequired"):s("settings.teableFieldOptional")}`,leading:e.jsx("input",{type:"checkbox",checked:P,onChange:K=>{je(ce=>K.target.checked?Array.from(new Set([...ce,p.key])):ce.filter(ve=>ve!==p.key))}})},p.key)})})}),e.jsxs(oe,{align:"end",stack:!0,children:[e.jsx("button",{type:"button",className:"secondary-button",onClick:()=>ye(!1),children:s("common.cancel")}),e.jsx("button",{type:"button",className:"primary-button",disabled:De||Ae.length===0,onClick:()=>{Sn()},children:De?s("common.loading"):s("settings.teableFieldAutoCreateConfirmAction")})]})]});return a?e.jsx(Le,{open:Me,title:s("settings.teableFieldAutoCreateModalTitle"),description:s("settings.teableFieldAutoCreateModalDescription"),height:"three-quarter",kind:"form",showHandle:!0,onClose:()=>ye(!1),children:u}):e.jsx(Re,{open:Me,title:s("settings.teableFieldAutoCreateModalTitle"),description:s("settings.teableFieldAutoCreateModalDescription"),size:"compact",layout:"form",onClose:()=>ye(!1),children:u})}const Pn=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:D,onClick:()=>{Pe()},children:D?s("common.loading"):s("settings.teableSyncLogsRefreshAction")}),children:c.length===0?e.jsx(ie,{title:s("settings.teableSyncLogsEmptyTitle"),description:s("settings.teableSyncLogsEmptyDescription"),compact:!0}):e.jsx(pe,{compact:!0,children:c.map(u=>e.jsx(me,{label:u.summary,description:Xl(u),trailing:e.jsx(re,{tone:_t(u.state),children:s(`settings.teableTaskState.${u.state}`)})},u.logId))})})});function En(){return h==="connection"?Mn:h==="syncLogs"?Pn:Dn}const rt=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(u=>e.jsx("button",{type:"button",role:"tab","aria-selected":h===u.id,className:h===u.id?"settings-teable-tab active":"settings-teable-tab",onClick:()=>y(u.id),children:u.label},u.id))}),En(),le?e.jsx("p",{className:"settings-release-status",children:le}):null,I?e.jsx("p",{className:"settings-release-status",children:I}):null,h==="connection"?e.jsxs(oe,{className:"settings-teable-modal-actions",align:"end",stack:!0,children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:S||D,onClick:()=>{_e()},children:S?s("common.loading"):s("settings.teableTestConnectionAction")}),e.jsx("button",{type:"button",className:"primary-button",disabled:z||D,onClick:()=>{ne()},children:z?s("common.loading"):s("settings.teableSaveBindingAction")}),e.jsx("button",{type:"button",className:"secondary-button",onClick:q,children:s("common.cancel")})]}):null]});return a?e.jsxs(e.Fragment,{children:[e.jsx(Le,{open:t,title:s("settings.teableModalTitle"),height:"full",kind:"form",showHandle:!0,onClose:q,children:rt}),lt()]}):e.jsxs(e.Fragment,{children:[e.jsx(Re,{open:t,title:s("settings.teableModalTitle"),size:"regular",layout:"form",className:"settings-teable-modal",bodyClassName:"settings-teable-modal-body",onClose:q,children:rt}),lt()]})}function qt(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)??bn,authToken:"",enabled:(t==null?void 0:t.enabled)??!1,mirrorMode:(t==null?void 0:t.mirrorMode)??"manual"}}function Zs(t){const a=new Map(t.map(n=>[n.sourceType,n]));return fn.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)??zl(n)}})}function zl(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 Ys(t){return{configId:`draft-${t}`,sourceType:t,targetTableId:"",items:[]}}function Kl(t,a){const n=new Map(t.map(o=>[o.sourceType,o])),r=new Map(a.map(o=>[o.sourceType,o]));return{tags:Xs("tags",n.get("tags")??null,r.get("tags")??null),sessions:Xs("sessions",n.get("sessions")??null,r.get("sessions")??null),todos:Xs("todos",n.get("todos")??null,r.get("todos")??null)}}function Xs(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 Gl(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 Jl(t,a){return t.length===a.length&&t.every((n,r)=>n===a[r])}function Ql(t){return t.filter(a=>a.sourceField.trim()&&a.targetFieldId.trim()&&a.targetFieldName.trim())}function Zl(t){return{sourceField:t.key,fieldName:t.label,fieldType:Yl(t.type),required:t.required}}function Yl(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 Xl(t){var y;const a=t.sourceTypes.map(T=>s(`settings.teableSyncSource.${T}`)).join("、")||s("common.none"),n=s(`settings.teableSyncLogTrigger.${t.triggerType}`),r=sr(t.finishedAt??t.updatedAt??t.createdAt),o=er(t),h=[s("settings.teableSyncLogDescription",{trigger:n,source:a,time:r})];return o&&h.push(o),(y=t.errorDetail)!=null&&y.trim()&&h.push(t.errorDetail.trim()),h.join(" · ")}function er(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 sr(t){if(!t)return s("common.none");const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function _t(t){switch(t){case"succeeded":return"success";case"partial_failed":case"queued":case"running":return"warning";case"failed":return"danger";default:return"default"}}function Ht({title:t,description:a,actions:n,content:r,className:o}){return e.jsx(Ta,{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 yn={start:43e3,end:47999};function tr(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 nr(t){return tr(t)?t==="model-management"||t==="provider-management"?"ability-management":t:null}function ar(t){return t==="en-US"?s("locale.enUS"):s("locale.zhCN")}function ir(t){return t==="beta"?s("settings.releaseBeta"):s("settings.releaseStable")}function lr(t){switch(t){case"acceptEdits":return s("settings.permissionModeAcceptEdits");case"bypassPermissions":return s("settings.permissionModeBypassPermissions");default:return s("settings.permissionModeDefault")}}function rr(){const t=nt(),{theme:a,selectedTheme:n,autoTheme:r,setTheme:o,setAutoTheme:h}=zn(),y=Un(U=>U),T=ws(U=>U.profile.language),b=ws(U=>U.profile.defaultPermissionMode),j=as(U=>U.sessionDisplaySortMode),d=as(U=>U.showSystemFiles),k=as(U=>U.notificationPreferences.notifyOnPermissionRequest),O=as(U=>U.notificationPreferences.notifyOnSessionCompleted),M=as(U=>U.notificationPreferences.notifyOnSessionFailed),E={language:T,defaultPermissionMode:b,debugPortPools:ws(U=>U.profile.debugPortPools)??yn},v=hs(),R=Rn(y.platform),g=R,N=st(y)??"",[f,x]=l.useState(N);l.useEffect(()=>{x(N)},[N]);function c(){Bn.clear(),ks.resetToLocalFallback(),t("/login",{replace:!0})}function w(U){o(U)}function D(U){h(U)}function L(U){try{return Fn(U)}catch{return null}}const S=L(f),F=S!==null&&S!==N;function z(U){U.preventDefault(),S&&Ee.update({hosts:y.hosts.map(ue=>ue.id===y.activeHostId?{...ue,baseUrl:S,updatedAt:new Date().toISOString()}:ue)})}const se=[{value:"default",label:s("settings.permissionModeDefault")},{value:"acceptEdits",label:s("settings.permissionModeAcceptEdits")},{value:"bypassPermissions",label:s("settings.permissionModeBypassPermissions")}],V=[{value:"createdAt",label:s("settings.sessionSortModeCreatedAt")},{value:"updatedAt",label:s("settings.sessionSortModeUpdatedAt")},{value:"title",label:s("settings.sessionSortModeTitle")}];function H(U){Ee.update({releaseChannel:U==="beta"?"beta":"stable"})}function te(U){Ee.update({autoReconnect:U})}function ae(U){Ee.update({autoCheckUpdate:U})}function le(U){const ue=U==="acceptEdits"||U==="bypassPermissions"?U:"default";ks.updateProfile({defaultPermissionMode:ue}).catch(()=>{})}function J(U){const ue=U==="updatedAt"||U==="title"?U:"createdAt";is.setSessionDisplaySortMode(ue)}function I(U){is.setShowSystemFiles(U)}function W(U){is.setNotificationPreferences({notifyOnPermissionRequest:U})}function C(U){is.setNotificationPreferences({notifyOnSessionCompleted:U})}function m(U){is.setNotificationPreferences({notifyOnSessionFailed:U})}async function _(U){await ks.updateProfile({debugPortPools:U})}return{platform:v,theme:a,selectedTheme:n,autoTheme:r,applyTheme:w,applyAutoTheme:D,runtimeConfig:y,accountPreferences:E,sessionDisplaySortMode:j,showSystemFiles:d,notifyOnPermissionRequest:k,notifyOnSessionCompleted:O,notifyOnSessionFailed:M,showServerSettings:g,canConfigureServerAddress:R,hostBaseUrlDraft:f,setHostBaseUrlDraft:x,canSaveHostBaseUrl:F,permissionModeOptions:se,sessionDisplaySortModeOptions:V,handleHostBaseUrlSubmit:z,handleLogout:c,updateReleaseChannel:H,updateAutoReconnect:te,updateAutoCheckUpdate:ae,updateDefaultPermissionMode:le,updateSessionDisplaySortMode:J,updateShowSystemFiles:I,updateNotifyOnPermissionRequest:W,updateNotifyOnSessionCompleted:C,updateNotifyOnSessionFailed:m,updateDebugPortPools:_}}function _r(){const t=rr(),a=$n();return t.platform.isMobile?e.jsx(or,{model:t,appVersion:a}):e.jsx(cr,{model:t,appVersion:a})}function cr({model:t,appVersion:a}){var A;const[n,r]=l.useState(!1),[o,h]=l.useState(!1),[y,T]=l.useState(!1),[b,j]=l.useState(!1),{currentWorkspaceId:d,navigationGroups:k}=Jt(),{theme:O,selectedTheme:M,autoTheme:E,applyTheme:v,applyAutoTheme:R,runtimeConfig:g,accountPreferences:N,sessionDisplaySortMode:f,showSystemFiles:x,notifyOnPermissionRequest:c,notifyOnSessionCompleted:w,notifyOnSessionFailed:D,showServerSettings:L,hostBaseUrlDraft:S,setHostBaseUrlDraft:F,canSaveHostBaseUrl:z,permissionModeOptions:se,sessionDisplaySortModeOptions:V,platform:H,handleHostBaseUrlSubmit:te,handleLogout:ae,updateReleaseChannel:le,updateAutoReconnect:J,updateAutoCheckUpdate:I,updateDefaultPermissionMode:W,updateSessionDisplaySortMode:C,updateShowSystemFiles:m,updateNotifyOnPermissionRequest:_,updateNotifyOnSessionCompleted:U,updateNotifyOnSessionFailed:ue,updateDebugPortPools:ge}=t,G=d??((A=k[0])==null?void 0:A.workspace.id)??null,be=k.map(B=>{var Z;return{id:B.workspace.id,name:((Z=B.workspace.name)==null?void 0:Z.trim())||B.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(he,{checked:E,label:s("settings.autoTheme"),onChange:R})]}),e.jsx("span",{className:"settings-theme-note",children:s("settings.autoThemeDescription")})]}),e.jsx("div",{className:"theme-selector",children:zt.map(B=>e.jsxs("button",{type:"button",className:`theme-card ${M===B.id&&!E?"active":""}`,"aria-pressed":M===B.id&&!E,disabled:E,onClick:()=>v(B.id),children:[e.jsx("span",{className:"theme-preview",style:{background:B.color}}),e.jsx("span",{className:"theme-label",children:Kt(B)}),M===B.id&&!E?e.jsx("span",{className:"theme-check",children:"✓"}):null]},B.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:f,onChange:B=>C(B.target.value),children:V.map(B=>e.jsx("option",{value:B.value,children:B.label},B.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(he,{checked:x,label:s("settings.showSystemFiles"),onChange:m})})]})]})]}),L?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:te,children:[e.jsx("input",{"aria-label":s("settings.serverAddress"),className:"settings-text-input",value:S,onChange:B=>F(B.target.value)}),e.jsx("button",{className:"settings-button",disabled:!z,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(he,{checked:g.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:()=>T(!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(Xt,{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:()=>j(!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(en,{})})]}),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(Yt,{})})]})]})]}),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(tn,{})})]})})]}),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:N.defaultPermissionMode,onChange:B=>W(B.target.value),children:se.map(B=>e.jsx("option",{value:B.value,children:B.label},B.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(cn,{})})]}),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.userManagementEntryTitle")}),e.jsx("span",{className:"settings-row-description",children:s("settings.userManagementEntryDescription")})]}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(un,{})})]}),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(he,{checked:c,label:s("settings.notifyOnPermissionRequest"),onChange:_})})]}),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(he,{checked:w,label:s("settings.notifyOnSessionCompleted"),onChange:U})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.notifyOnSessionFailed")}),e.jsx("span",{className:"settings-row-description",children:s("settings.notifyOnSessionFailedDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(he,{checked:D,label:s("settings.notifyOnSessionFailed"),onChange:ue})})]})]})]}),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(jn,{value:N.debugPortPools,onSave:ge})})]}),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:g.releaseChannel,onChange:B=>le(B.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(gn,{})})]}),H.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(he,{checked:g.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:I})})]}),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(Zt,{})})]})]})]})]}),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:ae,type:"button",children:s("common.logout")})]})]}),e.jsx(Ca,{isOpen:n,onClose:()=>r(!1)}),e.jsx(hn,{open:o,mobile:!1,onClose:()=>h(!1)}),e.jsx(pn,{open:y,mobile:!1,workspaceId:G,onClose:()=>T(!1)}),e.jsx(xn,{open:b,mobile:!1,workspaceOptions:be,onClose:()=>j(!1)})]})}function or({model:t,appVersion:a}){const n=nt(),{section:r}=Kn(),o=nr(r),h=[{id:"appearance",title:s("settings.appearance"),description:s("settings.appearanceSectionSummary"),value:ar(t.accountPreferences.language),icon:e.jsx(xr,{})}];return t.showServerSettings&&h.push({id:"server-connection",title:s("settings.serverConnection"),description:s("settings.serverConnectionSectionSummary"),value:st(t.runtimeConfig)??"",icon:e.jsx(yr,{})}),h.push({id:"ability-management",title:s("settings.abilityManagement"),description:s("settings.abilityManagementSectionSummary"),value:s("settings.abilityManagementNavValue"),icon:e.jsx(Nr,{})},{id:"channels-management",title:s("settings.channelsManagement"),description:s("settings.channelsManagementSectionSummary"),value:s("settings.channelsManagementNavValue"),icon:e.jsx(Sr,{})},{id:"remote-access",title:s("settings.remoteAccess"),description:s("settings.remoteAccessSectionSummary"),value:s("settings.remoteAccessNavValue"),icon:e.jsx(vr,{})},{id:"security-privacy",title:s("settings.securityPrivacy"),description:s("settings.securityPrivacySectionSummary"),value:lr(t.accountPreferences.defaultPermissionMode),icon:e.jsx(Tr,{})},{id:"software-update",title:s("settings.softwareUpdate"),description:s("settings.softwareUpdateSectionSummary"),value:ir(t.runtimeConfig.releaseChannel),icon:e.jsx(jr,{})}),(o?h.find(T=>T.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(Ht,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[o==="appearance"?e.jsx(dr,{model:t}):null,o==="ability-management"?e.jsx(pr,{}):null,o==="channels-management"?e.jsx(br,{}):null,o==="server-connection"&&t.showServerSettings?e.jsx(ur,{model:t}):null,o==="remote-access"?e.jsx(hr,{model:t}):null,o==="security-privacy"?e.jsx(gr,{model:t}):null,o==="software-update"?e.jsx(fr,{model:t}):null]}),e.jsx(Vt,{onLogout:t.handleLogout})]}):e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(Ht,{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(T=>e.jsxs("button",{type:"button",className:"settings-mobile-nav-row",onClick:()=>n(`/settings/${T.id}`),children:[e.jsx("span",{className:"settings-mobile-nav-icon",children:T.icon}),e.jsxs("span",{className:"settings-mobile-nav-copy",children:[e.jsx("span",{className:"settings-mobile-nav-title",children:T.title}),e.jsx("span",{className:"settings-mobile-nav-description",children:T.description})]}),e.jsxs("span",{className:"settings-mobile-nav-trailing",children:[T.value?e.jsx("span",{className:"settings-mobile-nav-value",children:T.value}):null,e.jsx(wr,{})]})]},T.id))})}),e.jsx("div",{className:"settings-footer settings-footer-mobile",children:e.jsxs("span",{className:"settings-version",children:["CodingNS v",a]})})]}),e.jsx(Vt,{onLogout:t.handleLogout})]})}function dr({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(he,{checked:t.autoTheme,label:s("settings.autoTheme"),onChange:t.applyAutoTheme})]}),zt.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:Kt(a)})]}),e.jsx("span",{className:"settings-mobile-choice-indicator","aria-hidden":"true",children:n?e.jsx(kr,{}):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(he,{checked:t.showSystemFiles,label:s("settings.showSystemFiles"),onChange:t.updateShowSystemFiles})]})]})]})]})}function ur({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(he,{checked:t.runtimeConfig.autoReconnect,label:s("settings.autoReconnect"),onChange:t.updateAutoReconnect})]})})]})]})}function gr({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(cn,{compact:!0})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.userManagementEntryTitle")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.userManagementEntryDescription")}),e.jsx("div",{className:"settings-mobile-panel-shell",children:e.jsx(un,{compact:!0,mobile:!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(jn,{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(he,{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(he,{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(he,{checked:t.notifyOnSessionFailed,label:s("settings.notifyOnSessionFailed"),onChange:t.updateNotifyOnSessionFailed})]})]})]})]})}function jn(t){const[a,n]=l.useState(()=>Wt(t.value)),[r,o]=l.useState(!1),[h,y]=l.useState(null),[T,b]=l.useState(!1);l.useEffect(()=>{n(Wt(t.value))},[t.value]);async function j(){y(null),b(!1);let d;try{d=mr(a)}catch(k){y(k instanceof Error?k.message:s("settings.debugPortPoolSaveFailed"));return}try{o(!0),await t.onSave(d),b(!0)}catch(k){y(k instanceof Error?k.message:s("settings.debugPortPoolSaveFailed"))}finally{o(!1)}}return e.jsxs("div",{className:t.compact?"settings-mobile-form-stack":"settings-debug-port-pool-editor",children:[e.jsxs("div",{className:t.compact?"settings-mobile-form-row":"settings-row",children:[e.jsx("div",{className:t.compact?"settings-mobile-row-copy":"settings-row-label settings-debug-port-pool-label",children:e.jsx("span",{className:t.compact?"settings-mobile-row-title":"settings-row-title",children:s("settings.debugPortPoolRangeLabel")})}),e.jsx("div",{className:t.compact?"settings-mobile-form-stack":"settings-row-control settings-row-control-stretch",children:e.jsxs("div",{className:"settings-inline-form",children:[e.jsx("input",{"aria-label":`${s("settings.debugPortPool")} ${s("settings.debugPortPoolStart")}`,className:"settings-text-input",inputMode:"numeric",value:a.start,onChange:d=>{const k=d.target.value;n(O=>({...O,start:k}))}}),e.jsx("span",{children:s("settings.debugPortPoolRangeSeparator")}),e.jsx("input",{"aria-label":`${s("settings.debugPortPool")} ${s("settings.debugPortPoolEnd")}`,className:"settings-text-input",inputMode:"numeric",value:a.end,onChange:d=>{const k=d.target.value;n(O=>({...O,end:k}))}}),e.jsx("button",{type:"button",className:t.compact?"settings-mobile-primary-button":"settings-button",disabled:r,onClick:()=>{j()},children:r?s("common.loading"):s("common.save")}),T?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 Wt(t){const a=t??yn;return{start:String(a.start),end:String(a.end)}}function mr(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 hr({model:t}){const[a,n]=l.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(hn,{open:a,mobile:!0,onClose:()=>n(!1)})]})}function pr(){var b;const[t,a]=l.useState(!1),[n,r]=l.useState(!1),{currentWorkspaceId:o,navigationGroups:h}=Jt(),y=o??((b=h[0])==null?void 0:b.workspace.id)??null,T=h.map(j=>{var d;return{id:j.workspace.id,name:((d=j.workspace.name)==null?void 0:d.trim())||j.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(Xt,{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(en,{})]}),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(Yt,{})]})]})]}),e.jsx(pn,{open:t,mobile:!0,workspaceId:y,onClose:()=>a(!1)}),e.jsx(xn,{open:n,mobile:!0,workspaceOptions:T,onClose:()=>r(!1)})]})}function br(){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(tn,{})]})]})}function fr({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(gn,{})})]}),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(he,{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(Zt,{})})]})]})}function Vt({onLogout:t}){return e.jsx("div",{className:"settings-mobile-sticky-footer",children:e.jsx("button",{type:"button",className:"settings-mobile-danger-button settings-mobile-danger-button-sticky",onClick:t,children:s("common.logout")})})}function xr(){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 yr(){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 jr(){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 vr(){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 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:"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 Sr(){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 Tr(){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 wr(){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 kr(){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{_r as SettingsPage};