@jingyi0605/codingns 1.0.0-beta.1 → 1.0.0-beta.3

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 (123) hide show
  1. package/dist/public/assets/AdaptiveButlerPage-CLHLiZSY.js +2 -0
  2. package/dist/public/assets/{App-CHsm-VrM.js → App-FYuZfAoO.js} +6 -6
  3. package/dist/public/assets/{BootstrapPage-Bp0KfySv.js → BootstrapPage-3xpnsG-A.js} +1 -1
  4. package/dist/public/assets/ConversationPage-C5_ZqhU3.js +9 -0
  5. package/dist/public/assets/{DesktopDetachPreviewPage-DlDSb_tf.js → DesktopDetachPreviewPage-B77MG82y.js} +1 -1
  6. package/dist/public/assets/{DesktopModal-Csj5AdAN.js → DesktopModal-K5bEcj38.js} +1 -1
  7. package/dist/public/assets/{DesktopWindowPage-CacXiWjV.js → DesktopWindowPage-DbG-RBAf.js} +1 -1
  8. package/dist/public/assets/{FileContextPanel-DzMUQvE5.js → FileContextPanel-C-1yOton.js} +1 -1
  9. package/dist/public/assets/{GitSidebar-C8IC18GH.js → GitSidebar-DFHAPT3S.js} +1 -1
  10. package/dist/public/assets/{MobileCreateSessionSheet-BtqR_hKc.js → MobileCreateSessionSheet-gOyAZ857.js} +1 -1
  11. package/dist/public/assets/{MobileSheet-Co-qPMBD.js → MobileSheet-D0MfNkTv.js} +1 -1
  12. package/dist/public/assets/{PluginAccessOverview-D-KXkcyj.js → PluginAccessOverview-IrYIPLg3.js} +1 -1
  13. package/dist/public/assets/{PluginContainerPage-BKwCIs4r.js → PluginContainerPage-b9LQVuqG.js} +1 -1
  14. package/dist/public/assets/{PluginDetailPage-Djv_swcO.js → PluginDetailPage-BX7gohai.js} +1 -1
  15. package/dist/public/assets/{PluginsListPage-DAECNoN6.js → PluginsListPage-R0SibHMi.js} +1 -1
  16. package/dist/public/assets/{PureConversationPage-DP1X7Hix.js → PureConversationPage-CcakFvo0.js} +1 -1
  17. package/dist/public/assets/{RelayConnectEntryPage-xL_IPH8a.js → RelayConnectEntryPage-cAVq_kNM.js} +1 -1
  18. package/dist/public/assets/{ServerSettingsModal-CyhMgk10.js → ServerSettingsModal-BJwYHdKD.js} +1 -1
  19. package/dist/public/assets/{SessionIndexPage-CVEz50tc.js → SessionIndexPage-CJKRHB_F.js} +1 -1
  20. package/dist/public/assets/SettingsPage-Csp7wEBC.js +2 -0
  21. package/dist/public/assets/{TerminalManagerPanel-wVnoRA8u.js → TerminalManagerPanel-2HG-NyfR.js} +1 -1
  22. package/dist/public/assets/{ToolFilesPage-BospXumK.js → ToolFilesPage-BAZdjNaF.js} +1 -1
  23. package/dist/public/assets/{ToolGitPage-B2zOeCAD.js → ToolGitPage-CGkPmgsz.js} +1 -1
  24. package/dist/public/assets/{ToolProcessesPage-BDShao4b.js → ToolProcessesPage-BHpS7-VH.js} +1 -1
  25. package/dist/public/assets/{ToolsHomePage-s4zH7D9M.js → ToolsHomePage-DDGqYwYU.js} +1 -1
  26. package/dist/public/assets/{WorkbenchLandingPage-D51QCU_u.js → WorkbenchLandingPage-B4aooEYJ.js} +1 -1
  27. package/dist/public/assets/WorkbenchLayout-DrAvGjGK.js +1083 -0
  28. package/dist/public/assets/{WorkbenchModal-YsyEdJ_m.js → WorkbenchModal-BK5ix8YI.js} +1 -1
  29. package/dist/public/assets/WorkbenchShellRoute-DpycFsbp.css +1 -0
  30. package/dist/public/assets/WorkbenchShellRoute-p1FvkoPN.js +1 -0
  31. package/dist/public/assets/{WorkspaceDebugDetailPage-CMjNLqFq.js → WorkspaceDebugDetailPage-CPgAe8dd.js} +1 -1
  32. package/dist/public/assets/{WorkspaceDetailPage-CKxTbPKh.js → WorkspaceDetailPage-YM85dTGg.js} +1 -1
  33. package/dist/public/assets/{WorkspaceHomePage-CEy4ShCu.js → WorkspaceHomePage-DPPvwM93.js} +1 -1
  34. package/dist/public/assets/{client-runtime-manager-BFXU9DmS.js → client-runtime-manager-Clq-8rWh.js} +1 -1
  35. package/dist/public/assets/{host-alias-Zb2xyVrf.js → host-alias-BxzpRYrt.js} +1 -1
  36. package/dist/public/assets/index-BArTKWXk.js +50 -0
  37. package/dist/public/assets/index-CqKepLbu.css +1 -0
  38. package/dist/public/assets/{login-direct-candidate-resolver-DL8DS-Si.js → login-direct-candidate-resolver-BiWwFKnk.js} +1 -1
  39. package/dist/public/assets/peer-host-config-sync-kTom1_pp.js +1 -0
  40. package/dist/public/assets/{plugin-permission-copy-DrLk22m5.js → plugin-permission-copy-1_1wViri.js} +1 -1
  41. package/dist/public/assets/{plugins-api-COF4oh24.js → plugins-api-C0JqR2-W.js} +1 -1
  42. package/dist/public/assets/{preferences-service-CEWNV1w9.js → preferences-service-DWeLWZST.js} +1 -1
  43. package/dist/public/assets/{relay-entry-Cmc8vTlE.js → relay-entry-ClEd3cjN.js} +1 -1
  44. package/dist/public/assets/{useRegisteredDebugTemplates-FdmHG2S4.js → useRegisteredDebugTemplates-wJGOYam9.js} +1 -1
  45. package/dist/public/assets/{workbench-navigation-ED0157V-.js → workbench-navigation-vIWt3Rv_.js} +1 -1
  46. package/dist/public/index.html +2 -2
  47. package/dist/server/modules/client/client-controller.d.ts +1 -0
  48. package/dist/server/modules/client/client-controller.js +4 -0
  49. package/dist/server/modules/client/client-controller.js.map +1 -1
  50. package/dist/server/modules/client/client-service.d.ts +3 -0
  51. package/dist/server/modules/client/client-service.js +3 -0
  52. package/dist/server/modules/client/client-service.js.map +1 -1
  53. package/dist/server/modules/client/npm-global-package-service.js +32 -7
  54. package/dist/server/modules/client/npm-global-package-service.js.map +1 -1
  55. package/dist/server/modules/peer-host/host-ws-proxy-service.js +73 -12
  56. package/dist/server/modules/peer-host/host-ws-proxy-service.js.map +1 -1
  57. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +2 -0
  58. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
  59. package/dist/server/modules/provider/provider-discovery-helper-process.js +6 -3
  60. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  61. package/dist/server/modules/provider/provider-discovery-runtime.js +4 -1
  62. package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -1
  63. package/dist/server/modules/sessions/codex-app-server-helper-process.js +84 -20
  64. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  65. package/dist/server/modules/sessions/session-controller.js +2 -1
  66. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  67. package/dist/server/modules/sessions/session-history-service.d.ts +8 -0
  68. package/dist/server/modules/sessions/session-history-service.js +123 -5
  69. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  70. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +27 -0
  71. package/dist/server/modules/sessions/session-live-runtime-service.js +457 -9
  72. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  73. package/dist/server/modules/sessions/session-permission-request-service.d.ts +17 -1
  74. package/dist/server/modules/sessions/session-permission-request-service.js +397 -9
  75. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  76. package/dist/server/modules/sessions/session-provider-config-service.js +1 -0
  77. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  78. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +15 -1
  79. package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -1
  80. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +1 -0
  81. package/dist/server/modules/tasks/task-helper-process-handlers.js +4 -1
  82. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
  83. package/dist/server/modules/workbench/workbench-service.js +7 -4
  84. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  85. package/dist/server/routes/client.js +1 -0
  86. package/dist/server/routes/client.js.map +1 -1
  87. package/dist/server/shared/utils/peer-host-proxy-log.d.ts +3 -0
  88. package/dist/server/shared/utils/peer-host-proxy-log.js +48 -0
  89. package/dist/server/shared/utils/peer-host-proxy-log.js.map +1 -0
  90. package/dist/server/storage/repositories/session-send-queue-repository.d.ts +1 -0
  91. package/dist/server/storage/repositories/session-send-queue-repository.js +23 -0
  92. package/dist/server/storage/repositories/session-send-queue-repository.js.map +1 -1
  93. package/node_modules/@codingns/session-sync-core/dist/index.d.ts +1 -0
  94. package/node_modules/@codingns/session-sync-core/dist/index.js +1 -0
  95. package/node_modules/@codingns/session-sync-core/dist/index.js.map +1 -1
  96. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +2 -0
  97. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +93 -12
  98. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  99. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +3 -0
  100. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +116 -2
  101. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  102. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.d.ts +1 -0
  103. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +19 -8
  104. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -1
  105. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.d.ts +27 -1
  106. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js +48 -4
  107. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js.map +1 -1
  108. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +53 -15
  109. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  110. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.d.ts +1 -0
  111. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js +30 -2
  112. package/node_modules/@codingns/session-sync-core/dist/runtime/provider-runtime-service.js.map +1 -1
  113. package/package.json +2 -1
  114. package/scripts/claude-hook-bridge.cjs +167 -0
  115. package/dist/public/assets/AdaptiveButlerPage-BYETYaIe.js +0 -2
  116. package/dist/public/assets/ConversationPage-BCrNml1k.js +0 -9
  117. package/dist/public/assets/SettingsPage-CQNCrgaj.js +0 -2
  118. package/dist/public/assets/WorkbenchLayout-Bo2BbMY6.js +0 -1081
  119. package/dist/public/assets/WorkbenchShellRoute-D3l4aWJS.js +0 -1
  120. package/dist/public/assets/WorkbenchShellRoute-D5fnyF8z.css +0 -1
  121. package/dist/public/assets/index-BilHJjYU.js +0 -50
  122. package/dist/public/assets/index-OR7OITpQ.css +0 -1
  123. package/dist/public/assets/peer-host-config-sync-d2ZcPC5P.js +0 -1
@@ -0,0 +1,2 @@
1
+ import{b as i,j as e,t as s,h as Z,c as ts,e as Re,f as tt,x as ss,B as Fe,K as Qe,L as gt,M as zn,N as ks,O as Kn,P as nt,i as Gn,Q as Cs,s as Jn,n as Qn,d as Ds,o as Zn}from"./index-BArTKWXk.js";import{g as Yn,j as Ss,k as Xn,l as Kt,m as Gt,n as Jt,o as ea,p as Qt,q as sa,s as Zt,t as Yt,e as hs,v as Ms,f as at,u as it,w as ta,x as na,c as aa,L as Xt,y as en,z as sn}from"./App-FYuZfAoO.js";import{a2 as mt,bu as ia,bv as tn,bw as he,bx as la,by as As,bz as ra,ab as oa,bA as ca,bB as da,bC as ua,P as ga,Q as ma,bD as ha,bE as pa,bF as ht,bG as ba,bH as fa,bI as xa,bJ as ya,bK as ja,bL as va,bM as Na,bN as Sa,bO as wa,bP as Ta,u as as,b as nn,bQ as is,bR as ka,bS as Ca}from"./WorkbenchLayout-DrAvGjGK.js";import{M as Da,D as Ce}from"./DesktopModal-K5bEcj38.js";import{M as Me}from"./MobileSheet-D0MfNkTv.js";import{M as Y,w as de,s as te,H as re,v as ce,t as fe,u as be,Q as Ma}from"./workbench-navigation-vIWt3Rv_.js";import{W as ms}from"./WorkbenchModal-BK5ix8YI.js";import{l as Aa,g as Pa,a as Ea,b as La,r as Ia,d as Oa,e as Ua}from"./plugins-api-C0JqR2-W.js";import{P as Ra}from"./PluginAccessOverview-IrYIPLg3.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./host-alias-BxzpRYrt.js";import"./relay-entry-ClEd3cjN.js";import"./plugin-permission-copy-1_1wViri.js";const pt=2e4,Fa=1e3,Ba=5e3;function Va({isOpen:t,onClose:a}){const[n,r]=i.useState(null),[o,m]=i.useState(null),[v,w]=i.useState(!1),[b,S]=i.useState(!1),[h,T]=i.useState(null),E=i.useRef(null);if(i.useEffect(()=>{if(!t)return;let u=!1;async function N(){w(!0),T(null),m(null);try{const c=await Z.request("/api/observability/runtime/session",{method:"POST",body:JSON.stringify({ttlMs:pt})});if(u){await Ps(c.sessionId);return}E.current=c.sessionId,r(c);const y=await bt(c.sessionId);if(u){await Ps(c.sessionId);return}m(y)}catch(c){u||T(Es(c))}finally{u||w(!1)}}return N(),()=>{u=!0;const c=E.current;E.current=null,r(null),m(null),w(!1),S(!1),T(null),c&&Ps(c)}},[t]),i.useEffect(()=>{const u=(n==null?void 0:n.sessionId)??null;if(!t||!u)return;const N=u;let c=!1;async function y(){S(!0);try{const j=await bt(N);c||(m(j),T(null))}catch(j){c||T(Es(j))}finally{c||S(!1)}}const d=window.setInterval(()=>{y()},Fa);return()=>{c=!0,window.clearInterval(d)}},[t,n==null?void 0:n.sessionId]),i.useEffect(()=>{const u=(n==null?void 0:n.sessionId)??null;if(!t||!u)return;const N=u;let c=!1;async function y(){try{const j=await Z.request(`/api/observability/runtime/session/${N}/heartbeat`,{method:"POST",body:JSON.stringify({ttlMs:pt})});c||r(j)}catch(j){c||T(Es(j))}}const d=window.setInterval(()=>{y()},Ba);return()=>{c=!0,window.clearInterval(d)}},[t,n==null?void 0:n.sessionId]),!t||typeof document>"u")return null;const V=Object.entries((o==null?void 0:o.backgroundTasks.taskTypes)??{}),L=(o==null?void 0:o.registeredTasks)??[],F=Object.entries((o==null?void 0:o.schedulers.schedulers)??{}),O=Object.entries((o==null?void 0:o.backgroundTasks.totals)??{});return Yn.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":h?"error":"active",children:h?s("settings.parallelTaskDebugStatusError"):s("settings.parallelTaskDebugStatusActive")}),e.jsx(Da,{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:Ls(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:Ls(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:_a((n==null?void 0:n.ttlMs)??null)})]}),e.jsxs("div",{className:"parallel-task-debug-meta-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugCollectorState")}),e.jsx("strong",{children:o!=null&&o.eventLoop.enabled?s("settings.parallelTaskDebugCollectorEnabled"):s("settings.parallelTaskDebugCollectorDisabled")})]})]}),v?e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugLoading")}):null,!v&&h?e.jsx("div",{className:"parallel-task-debug-error",children:h}):null,!v&&!h&&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:O.map(([u,N])=>e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:qa(u)}),e.jsx("strong",{children:N})]},u))})]}),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:L.length})]}),L.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:L.map(u=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:u.taskType}),e.jsx("span",{children:Is(u.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCategory"),": ",ft(u.taskType)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRuntime"),": ",xt(u.executionLane,u.taskType)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskTimeout"),": ",ke(u.timeoutMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskConcurrency"),": ",u.concurrency??s("common.none")]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRetry"),": ",u.retryMaxAttempts??s("common.none")]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskHelper"),": ",u.helperProcessHandler??s("common.none")]})]})]},u.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:V.length})]}),V.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:V.map(([u,N])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:u}),e.jsx("span",{children:Is(N.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCategory"),": ",ft(u)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskRuntime"),": ",xt(N.executionLane,u)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitAvg"),": ",ke(N.waitMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunAvg"),": ",ke(N.runMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMax"),": ",ke(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]})]})]},u))}):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:F.length})]}),F.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:F.map(([u,N])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:u}),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"),": ",ke(N.lastDurationMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugNextDelay"),": ",ke(N.nextDelayMs)]})]})]},u))}):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:ke(o.eventLoop.resolutionMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMean")}),e.jsx("strong",{children:ke(o.eventLoop.meanMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP95")}),e.jsx("strong",{children:ke(o.eventLoop.p95Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP99")}),e.jsx("strong",{children:ke(o.eventLoop.p99Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMax")}),e.jsx("strong",{children:ke(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(u=>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:u.taskType}),e.jsx("span",{children:Wa(u.eventType)}),e.jsx("span",{children:Is(u.executionLane)})]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugTaskKey"),": ",u.key]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugStatus"),": ",u.status?$a(u.status):"-"]})]}),e.jsxs("div",{className:"parallel-task-debug-activity-meta",children:[e.jsx("span",{children:Ls(u.recordedAt)}),e.jsxs("span",{children:[s("settings.parallelTaskDebugAttempt"),": ",u.attempt??"-"]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitMs"),": ",ke(u.waitMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMs"),": ",ke(u.runMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSource"),": ",u.source??"-"]}),u.errorMessage?e.jsxs("span",{children:[s("settings.parallelTaskDebugError"),": ",u.errorMessage]}):null]})]},u.eventId))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]})]}):null]})]})]}),document.body)}async function bt(t){return await Z.request(`/api/observability/runtime?sessionId=${encodeURIComponent(t)}`)}async function Ps(t){try{await Z.request(`/api/observability/runtime/session/${t}`,{method:"DELETE"})}catch{}}function Es(t){return t instanceof Error&&t.message?t.message:s("settings.parallelTaskDebugLoadFailed")}function Ls(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function ke(t){return t==null||Number.isNaN(t)?"-":`${Math.round(t*100)/100} ms`}function _a(t){return t===null||Number.isNaN(t)?"-":`${Math.round(t/1e3)} s`}const Ha=new Set(["affairs.library_apply_config","affairs.library_index","affairs.library_export"]);function an(t){return Ha.has(t)}function ft(t){return an(t)?s("settings.parallelTaskDebugTaskCategoryBuiltinIndexer"):s("settings.parallelTaskDebugTaskCategoryGeneric")}function xt(t,a){if(t==="helper_process"&&an(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 qa(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 Is(t){switch(t){case"host_background":return s("settings.parallelTaskDebugLaneHostBackground");case"helper_process":return s("settings.parallelTaskDebugLaneHelperProcess");case"external_process":return s("settings.parallelTaskDebugLaneExternalProcess");default:return s("settings.parallelTaskDebugLaneRequestMainThread")}}function Wa(t){switch(t){case"enqueued":return s("settings.parallelTaskDebugEventEnqueued");case"deduped":return s("settings.parallelTaskDebugEventDeduped");case"started":return s("settings.parallelTaskDebugEventStarted");case"finished":return s("settings.parallelTaskDebugEventFinished");case"failed":return s("settings.parallelTaskDebugEventFailed");case"cancelled":return s("settings.parallelTaskDebugEventCancelled");case"timeout":return s("settings.parallelTaskDebugEventTimeout");case"cache_hit":return s("settings.parallelTaskDebugEventCacheHit");default:return t}}function $a(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 yt(){const t=ts(),a=Re.getState(),n=await t.bridge.getAndroidRuntimeInfo();if(!n.ok||!n.value)throw new Error(n.detail??"读取 Android 运行时信息失败。");const r=await Z.request(`/api/client/release-manifest?channel=${encodeURIComponent(a.releaseChannel)}&platform=android-apk`),o=r.versionCode>n.value.versionCode;return{checkedAt:new Date().toISOString(),currentVersion:n.value.version,currentVersionCode:n.value.versionCode,hasUpdate:o,manifest:r,runtimeInfo:n.value}}async function za(t){return ts().bridge.installAndroidUpdate(t)}function Ka(t){return t==="beta"?s("settings.releaseChannelBeta"):s("settings.releaseChannelStable")}function lt({open:t,mobile:a,summary:n,onClose:r}){const o=n?e.jsx(Ga,{summary:n}):e.jsx(Y,{children:e.jsx("p",{className:"settings-update-notes-empty",children:s("settings.releaseNotesEmpty")})});return a?e.jsx(Me,{open:t,title:s("settings.releaseNotes"),height:"full",kind:"form",showHandle:!0,onClose:r,children:o}):e.jsx(Ce,{open:t,title:s("settings.releaseNotes"),size:"regular",layout:"viewer",onClose:r,children:o})}function Ga({summary:t}){return e.jsxs(e.Fragment,{children:[e.jsx(Y,{children:e.jsxs("div",{className:"settings-update-notes-header",children:[t.title?e.jsx("strong",{className:"settings-update-notes-title",children:t.title}):null,e.jsxs("div",{className:"settings-update-notes-meta",children:[e.jsxs("span",{className:"settings-update-notes-version",children:["v",t.version]}),e.jsx("span",{className:"settings-update-notes-separator",children:"·"}),e.jsx("span",{className:"settings-update-notes-channel",children:Ka(t.channel)})]}),t.publishedAt?e.jsxs("span",{className:"settings-update-notes-published",children:[s("settings.releaseNotesPublishedAt"),":",t.publishedAt]}):null]})}),e.jsx(Y,{children:e.jsx("div",{className:"settings-update-notes-body",children:t.content?e.jsx("p",{className:"settings-update-notes-content",children:t.content}):e.jsx("p",{className:"settings-update-notes-empty",children:s("settings.releaseNotesEmpty")})})})]})}function Ja(t){return t.notes?{version:t.version,title:t.title||void 0,publishedAt:t.publishedAt||void 0,content:t.notes,channel:t.channel,source:"desktop"}:null}function Qa(t){return t.notes?{version:t.version,publishedAt:t.publishedAt||void 0,content:t.notes,channel:t.channel,source:"android"}:null}function Za(t){return!t.latestNotes||!t.latestVersion?null:{version:t.latestVersion,title:t.latestTitle||void 0,publishedAt:t.latestPublishedAt||void 0,content:t.latestNotes,channel:t.channel,source:"service"}}function Ya(){const[t,a]=i.useState(!1),[n,r]=i.useState(!1),[o,m]=i.useState(null),[v,w]=i.useState(null),[b,S]=i.useState(null),[h,T]=i.useState(!1),[E,V]=i.useState(null),[L,F]=i.useState(!1),O=i.useRef(!1);i.useEffect(()=>{if(E===null){O.current=!1;return}const c=E;async function y(){if(!O.current){O.current=!0;try{const D=await yt();if(S(D.manifest),w(D.currentVersion),T(D.hasUpdate),!D.hasUpdate||D.currentVersionCode>=c){m(s("settings.androidInstallSucceeded"));return}m(s("settings.androidInstallCancelled"))}catch(D){m(D instanceof Error?D.message:s("settings.releaseCheckFailed"))}finally{V(null)}}}function d(){y()}function j(){document.visibilityState==="visible"&&y()}return window.addEventListener("focus",d),document.addEventListener("visibilitychange",j),()=>{window.removeEventListener("focus",d),document.removeEventListener("visibilitychange",j)}},[E]);async function u(){a(!0),m(null),V(null);try{const c=await yt();S(c.manifest),w(c.currentVersion),T(c.hasUpdate),m(c.hasUpdate?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate"))}catch(c){m(c instanceof Error?c.message:s("settings.releaseCheckFailed"))}finally{a(!1)}}async function N(){if(b){r(!0),m(null),V(null);try{const c=await za(b);if(c.status==="installer_started"){m(s("settings.androidInstallerStarted")),V(b.versionCode);return}if(c.status==="permission_required"){m(c.detail??s("settings.androidInstallPermissionRequired")),V(null);return}if(c.status==="already_up_to_date"){m(s("settings.releaseUpToDate")),T(!1),V(null);return}m(c.detail??s("settings.releaseInstallFailed")),V(null)}catch(c){m(c instanceof Error?c.message:s("settings.releaseInstallFailed")),V(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:v??s("settings.releaseUnknownVersion")})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(b==null?void 0:b.version)??"-"})]})]}),o?e.jsx("p",{className:"settings-update-status","data-tone":h?"warning":"success",children:o}):null,e.jsxs("div",{className:"settings-update-actions",children:[b!=null&&b.notes?e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>F(!0),children:s("settings.releaseNotesView")}):null,e.jsx("button",{className:"secondary-button",type:"button",disabled:t||n,onClick:u,children:t?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!b||!h||n,onClick:N,children:n?s("common.loading"):s("settings.releaseInstallNow")})]}),e.jsx(lt,{open:L,mobile:!0,summary:b?Qa(b):null,onClose:()=>F(!1)})]})}function ln({open:t,version:a,installing:n,onClose:r,onConfirm:o}){return e.jsx(Ce,{open:t,title:s("settings.releaseInstallReadyDialogTitle"),description:s("settings.releaseInstallReadyDialogDescription",{version:a??"-"}),size:"compact",layout:"confirm",dismissible:!n,footer:e.jsxs(de,{children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:n,onClick:r,children:s("settings.releaseRestartLater")}),e.jsx("button",{type:"button",className:"primary-button",disabled:n,onClick:o,children:n?s("common.loading"):s("settings.releaseInstallReadyConfirm")})]}),onClose:r,children:e.jsx(Y,{className:"settings-update-confirm-section",children:e.jsx("p",{className:"settings-update-confirm-warning",children:s("settings.releaseInstallReadyWarning")})})})}function Xa(){const t=ts(),a=t.isDesktop,n=tt(_=>_.autoDownloadUpdate),[r,o]=i.useState(!1),[m,v]=i.useState(!1),[w,b]=i.useState(!1),[S,h]=i.useState(!1),[T,E]=i.useState(null),[V,L]=i.useState(null),[F,O]=i.useState(null),[u,N]=i.useState(!1),c=Ss(_=>_.latestState),y=Ss(_=>_.pendingRestartVersion),d=(c==null?void 0:c.currentVersion)??null,j=(c==null?void 0:c.manifest)??null,D=(c==null?void 0:c.hasUpdate)??!1,U=!!y,f=U&&F!==y,M=!!(T&&!U&&T===(j==null?void 0:j.version));async function B(){if(!U){o(!0),E(null),L(null);try{const _=await Xn({notify:"always"});L(jt(_.hasUpdate)),n&&_.hasUpdate&&_.manifest&&await z(_.manifest.version)}catch(_){L(_ instanceof Error?_.message:s("settings.releaseCheckFailed"))}finally{o(!1)}}}async function z(_){var I;b(!0),L(s("settings.releaseDownloading"));try{const $=await Jt();if(!$.ok){L($.detail??s("settings.releaseDownloadFailed"));return}E($.version??_),L(ei(((I=$.progress)==null?void 0:I.percent)??null))}finally{b(!1)}}async function C(){if(!(!j||!D||U)){v(!0),L(null);try{const _=await Kt();if(!_.ok){L(_.detail??s("settings.releaseInstallFailed"));return}Gt(j.version),E(null),O(null),L(s("settings.releaseRestartRequired"))}catch(_){L(_ instanceof Error?_.message:s("settings.releaseInstallFailed"))}finally{v(!1)}}}async function R(){if(j!=null&&j.htmlUrl){h(!0);try{const _=await t.bridge.openExternal(j.htmlUrl);_.ok||L(_.detail??s("settings.releasePageOpenFailed"))}catch(_){L(_ instanceof Error?_.message:s("settings.releasePageOpenFailed"))}finally{h(!1)}}}const J=r||w||m,ee=!!(a&&j&&D&&!U),ie=V??(a?U?s("settings.releaseRestartRequired"):c?jt(c.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:d??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:(j==null?void 0:j.version)??y??"-"})]})]}),ie?e.jsx("p",{className:"settings-update-status","data-tone":si(D,ie,U),children:ie}):null,e.jsxs("div",{className:"settings-update-actions",children:[j!=null&&j.notes?e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>N(!0),children:s("settings.releaseNotesView")}):null,e.jsx("button",{className:"secondary-button",type:"button",disabled:!a||J||U,onClick:B,children:r?s("settings.updateChecking"):s("settings.updateCheckAll")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!ee||J,onClick:C,children:m?s("common.loading"):s("settings.releaseInstallNow")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:!(j!=null&&j.htmlUrl)||J||S,onClick:R,children:S?s("common.loading"):s("settings.releaseOpenPage")})]})]}),e.jsx(ln,{open:M,version:T,installing:m,onClose:()=>E(null),onConfirm:()=>{C()}}),e.jsx(ti,{open:f,version:y,onClose:()=>O(y)}),e.jsx(lt,{open:u,mobile:!1,summary:j?Ja(j):null,onClose:()=>N(!1)})]})}function jt(t){return t?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate")}function ei(t){return t===null?s("settings.releaseDownloadedReady"):s("settings.releaseDownloadedReadyWithProgress",{percent:String(t)})}function si(t,a,n){return a===s("settings.clientUpdateUnsupported")?"neutral":a===s("settings.releaseCheckFailed")||a===s("settings.releaseInstallFailed")||a===s("settings.releaseDownloadFailed")?"danger":n||t?"warning":"success"}function ti({open:t,version:a,onClose:n}){const[r,o]=i.useState(!1),[m,v]=i.useState(null);async function w(){o(!0),v(null);try{await ea()}catch(b){v(b instanceof Error?b.message:s("settings.releaseRestartFailed")),o(!1)}}return e.jsx(Ce,{open:t,title:s("settings.releaseRestartDialogTitle"),description:s("settings.releaseRestartDialogDescription",{version:a??"-"}),size:"compact",layout:"confirm",dismissible:!r,footer:e.jsxs(de,{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:w,children:r?s("common.loading"):s("settings.releaseRestartConfirm")})]}),onClose:()=>{r||n()},children:e.jsx(Y,{className:"settings-update-confirm-section",children:m?e.jsx("p",{className:"settings-update-status","data-tone":"danger",children:m}):null})})}function rn(){const t=ts();return t.platform==="desktop"?e.jsx(Xa,{}):t.platform==="android"?e.jsx(Ya,{}):e.jsx("div",{className:"settings-update-card",children:e.jsx("p",{className:"settings-update-status","data-tone":"neutral",children:s("settings.clientUpdateUnsupported")})})}const ni=1500,ai=12e4;function on(){const t=tt(C=>C.autoDownloadUpdate),a=ts(),n=Ss(C=>C.latestState),r=Ss(C=>C.pendingRestartVersion),[o,m]=i.useState(null),[v,w]=i.useState(null),[b,S]=i.useState(null),[h,T]=i.useState(!1),[E,V]=i.useState(!1),[L,F]=i.useState(!1),[O,u]=i.useState(null),[N,c]=i.useState(null),y=(n==null?void 0:n.manifest)??null,d=(n==null?void 0:n.hasUpdate)??!1,j=!!(o!=null&&o.hasUpdate&&!o.restartRequired),D=j||!!(d&&y),U=!!(N&&!r&&N===(y==null?void 0:y.version)),f=h||E;i.useEffect(()=>{let C=!1;return Qt().then(R=>{C||w(R)}),()=>{C=!0}},[]);async function M(){if(!r){T(!0),u(null),c(null);try{const C=await sa({notify:"never"}),R=C.servicePackage;m(R),S((R==null?void 0:R.installTask)??null);const J=C.clientState;if(t&&(J!=null&&J.hasUpdate)&&J.manifest){const ee=await Jt();ee.ok&&c(ee.version??J.manifest.version)}u(ri(R,!!(J!=null&&J.hasUpdate),C.serviceError,C.clientError))}catch(C){u(C instanceof Error?C.message:s("settings.updateCheckFailed"))}finally{T(!1)}}}async function B(){if(!(!D||r)){V(!0),u(s("settings.updateInstallingSequential"));try{if(j&&(o!=null&&o.packageName)){const C=await Zt(o.packageName);S(C),u(s("settings.updateInstallingServerFirst"));const R=await ii(C);if(S(R),R.status!=="succeeded"){u(R.errorMessage??s("settings.serverInstallFailed"));return}}if(d&&y){u(s("settings.updateInstallingClientNext"));const C=await Kt();if(!C.ok){u(C.detail??s("settings.releaseInstallFailed"));return}Gt(y.version),c(null),u(s("settings.releaseRestartRequired"));return}u(s("settings.serverInstallSucceeded"))}catch(C){u(C instanceof Error?C.message:s("settings.releaseInstallFailed"))}finally{V(!1)}}}async function z(){if(y!=null&&y.htmlUrl){F(!0);try{const C=await a.bridge.openExternal(y.htmlUrl);C.ok||u(C.detail??s("settings.releasePageOpenFailed"))}catch(C){u(C instanceof Error?C.message:s("settings.releasePageOpenFailed"))}finally{F(!1)}}}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:(o==null?void 0:o.currentVersion)??v??"-"})]}),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:(o==null?void 0:o.latestVersion)??"-"})]}),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:(n==null?void 0:n.currentVersion)??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:(y==null?void 0:y.version)??r??"-"})]})]}),b&&cn(b.status)?e.jsxs("div",{className:"settings-update-progress",role:"status","aria-label":s("settings.serverProgressLabel"),children:[e.jsx("div",{className:"settings-update-progress-track",children:e.jsx("span",{className:"settings-update-progress-bar",style:{width:b.status==="queued"?"20%":"65%"}})}),e.jsx("span",{className:"settings-update-progress-text",children:s("settings.serverProgressCurrentStage",{stage:b.status==="queued"?s("settings.serverProgressQueued"):s("settings.serverProgressInstalling")})}),e.jsx("span",{className:"settings-update-progress-hint",children:s("settings.serverProgressHint")})]}):null,N?e.jsx("p",{className:"settings-update-status","data-tone":"warning",children:s("settings.releaseDownloadedReady")}):null,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:f||!!r,onClick:M,children:h?s("settings.updateChecking"):s("settings.updateCheckAll")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!D||f||!!r,onClick:B,children:E?s("common.loading"):s("settings.updateInstallAll")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:!(y!=null&&y.htmlUrl)||f||L,onClick:z,children:L?s("common.loading"):s("settings.releaseOpenPage")})]})]}),e.jsx(ln,{open:U,version:N,installing:E,onClose:()=>c(null),onConfirm:()=>{c(null),B()}})]})}async function ii(t){let a=t;const n=Date.now();for(;cn(a.status);){if(Date.now()-n>ai)return{...a,status:"timeout",errorMessage:s("settings.serverInstallTimeout")};await li(ni),a=await Yt(a.taskId)}return a}function li(t){return new Promise(a=>{window.setTimeout(a,t)})}function cn(t){return t==="queued"||t==="running"}function ri(t,a,n,r){const o=!!(t!=null&&t.hasUpdate);return(t==null?void 0:t.checkStatus)==="check_failed"||n?a?s("settings.updateClientReadyServiceCheckFailed"):(t==null?void 0:t.checkError)??n??s("settings.serverCheckFailed"):r?o?s("settings.updateServerReadyClientCheckFailed"):s("settings.updateCheckIncomplete"):o&&a?s("settings.updateBothReady"):o?s("settings.updateServerReadyOnly"):a?s("settings.updateClientReadyOnly"):s("settings.updateAllUpToDate")}const oi="https://github.com/SaladDay/cc-switch-cli",ci="当前机器未安装 cc-switch-cli。这里集成的是 CC-Switch 的衍生 CLI 版本,不是 CC-Switch UI 版本。请先安装:",di=/(https?:\/\/[^\s]+)/i;function dn(){const t=ss(d=>{var j;return((j=d.session)==null?void 0:j.accessToken)??null}),[a,n]=i.useState(null),[r,o]=i.useState(!0),[m,v]=i.useState(null),[w,b]=i.useState(null),[S,h]=i.useState(null),[T,E]=i.useState(!1),[V,L]=i.useState("codex");i.useEffect(()=>{let d=!0;if(!t){n(null),b(null),h(null),o(!1);return}return(async()=>{o(!0);try{const D=await mt();if(!d)return;n(D),b(null),L(U=>Nt(D,U))}catch(D){if(!d)return;b(Os(D))}finally{d&&o(!1)}})(),()=>{d=!1}},[t]);async function F(){const d=await mt();n(d),b(null),L(j=>Nt(d,j))}async function O(){if(t){v("refresh"),b(null),h(null);try{await F(),h(s("settings.modelManagementRefreshSuccess"))}catch(d){b(Os(d))}finally{v(null)}}}async function u(d,j){if(!t||j.isCurrent)return;const D=vt(d,j.id);v(D),b(null),h(null);try{const U=await ia({app:d,presetId:j.id});tn(),n(f=>ui(f,U)),h(s("settings.modelManagementSwitchSuccess",{app:U.displayName,preset:U.currentPresetName??j.name}))}catch(U){b(Os(U))}finally{v(null)}}const N=(a==null?void 0:a.items)??[],c=N.find(d=>d.app===V)??N[0]??null,y=mi(N);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-panel",children:e.jsxs("div",{className:"settings-release-card",children:[S?e.jsx("p",{className:"settings-release-status",children:S}):null,w?e.jsx("p",{className:"settings-release-status",children:w}):null,y?e.jsxs("section",{className:"settings-model-missing-state",children:[e.jsx("p",{className:"settings-model-missing-copy",children:y.message}),e.jsx("a",{className:"settings-tailscale-link settings-model-missing-link",href:y.url,rel:"noreferrer",target:"_blank",children:y.url})]}):N.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-grid",children:N.map(d=>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:d.displayName}),e.jsx("span",{className:"settings-model-card-status","data-status":d.status,children:gi(d.status)})]}),e.jsxs("div",{className:"settings-model-value-line",children:[e.jsx("strong",{className:"settings-model-preset-value",children:d.currentPresetName??s("settings.modelManagementPresetMissing")}),e.jsx("strong",{className:"settings-model-current-value",children:d.currentModel??s("settings.modelManagementModelUnknown")})]})]}),d.statusText?e.jsx("p",{className:"settings-model-card-note",children:d.statusText}):null]},d.app))}),e.jsx("div",{className:"settings-model-panel-actions",children:e.jsx("button",{className:"secondary-button settings-model-open-action",type:"button",disabled:!t||r,onClick:()=>{E(!0)},children:s("settings.modelManagementOpenSwitcher")})})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})}),e.jsxs(ms,{open:T&&!y,title:s("settings.modelManagementModalTitle"),description:s("settings.modelManagementModalDescription"),className:"settings-model-modal",headerActions:e.jsx("button",{className:"secondary-button",type:"button",disabled:!t||r||m!==null,onClick:()=>{O()},children:m==="refresh"?s("common.loading"):s("settings.modelManagementRefresh")}),onClose:()=>E(!1),children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.modelManagementTabsLabel"),children:N.map(d=>{const j=(c==null?void 0:c.app)===d.app;return e.jsx("button",{type:"button",role:"tab",className:"settings-model-tab","aria-selected":j,"data-active":j?"true":"false",onClick:()=>L(d.app),children:d.displayName},d.app)})}),c?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:c.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:c.currentModel??s("settings.modelManagementModelUnknown")})]})]}),c.statusText?e.jsx("p",{className:"settings-model-modal-note",children:c.statusText}):null,c.options.length>0?e.jsx("div",{className:"settings-model-switcher-list",children:c.options.map(d=>{const j=vt(c.app,d.id);return e.jsxs("div",{className:"settings-model-switcher-item","data-current":d.isCurrent?"true":"false",children:[e.jsxs("div",{className:"settings-model-switcher-item-main",children:[e.jsx("strong",{children:d.name}),e.jsx("span",{children:d.model??s("settings.modelManagementModelUnknown")})]}),e.jsx("div",{className:"settings-model-switcher-item-actions",children:d.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||m!==null||c.status!=="ready",onClick:()=>{u(c.app,d)},children:m===j?s("common.loading"):s("settings.modelManagementSwitchAction")})})]},`${c.app}:${d.id}`)})}):e.jsx("div",{className:"settings-model-empty",children:c.statusText??s("settings.modelManagementOptionsEmpty")})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})]})}function vt(t,a){return`switch:${t}:${a}`}function ui(t,a){return t&&{...t,scannedAt:new Date().toISOString(),items:t.items.map(n=>n.app===a.app?a:n)}}function Nt(t,a){var r;return t.items.some(o=>o.app===a)?a:((r=t.items[0])==null?void 0:r.app)??"codex"}function gi(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 Os(t){return t instanceof Fe?t.message||s("settings.modelManagementLoadFailed"):t instanceof Error?t.message:s("settings.modelManagementLoadFailed")}function mi(t){var r,o,m;if(t.length===0||!t.every(v=>v.status==="unavailable"&&!v.cliAvailable&&!!v.statusText))return null;const n=((m=(((o=(r=t[0])==null?void 0:r.statusText)==null?void 0:o.trim())??"").match(di))==null?void 0:m[1])??oi;return{message:ci,url:n}}function un({triggerClassName:t="settings-button",triggerLabel:a,mobile:n=!1}){const r=ss(f=>{var M;return((M=f.session)==null?void 0:M.accessToken)??null}),o=ss(f=>{var M;return((M=f.session)==null?void 0:M.user)??null}),[m,v]=i.useState(!1),[w,b]=i.useState(!1),[S,h]=i.useState(null),[T,E]=i.useState(null),[V,L]=i.useState(null),[F,O]=i.useState(null),[u,N]=i.useState(null),[c,y]=i.useState(bs(null));i.useEffect(()=>{T&&y(bs(T))},[T]),i.useEffect(()=>{let f=!0;if(!m)return;if(!r){E(null),L(null),N(null),O(null),b(!1);return}return(async()=>{b(!0),N(null);try{const[B,z]=await Promise.all([la(),As()]);if(!f)return;E(B),L(z)}catch(B){if(!f)return;N(Us(B))}finally{f&&b(!1)}})(),()=>{f=!1}},[r,m]);function d(){v(!1),O(null),N(null),y(bs(T))}async function j(){if(r){h("check"),N(null),O(null);try{const f=await As();L(f),O(s("settings.skillOnlyOfficeCheckSuccess"))}catch(f){N(Us(f))}finally{h(null)}}}async function D(){if(r){h("save"),N(null),O(null);try{const f=await ra({enabled:c.enabled,serverUrl:c.serverUrl,publicBaseUrl:c.publicBaseUrl,callbackBaseUrl:c.callbackBaseUrl,userDisplayName:c.userDisplayName,userAvatarUrl:c.userAvatarUrl,jwtSecret:c.jwtSecret,clearJwtSecret:c.clearJwtSecret}),M=await As();E(f),L(M),y(bs(f)),O(s("settings.skillOnlyOfficeSaveSuccess"))}catch(f){N(Us(f))}finally{h(null)}}}const U=e.jsxs("div",{className:"settings-onlyoffice-modal-layout",children:[e.jsx(Y,{heading:s("settings.skillOnlyOfficeStatusLabel"),children:e.jsx("div",{className:"settings-onlyoffice-metrics",role:"list","aria-label":s("settings.skillOnlyOfficeStatusLabel"),children:xi(V).map(f=>e.jsxs("div",{className:"settings-onlyoffice-metric-card","data-tone":f.tone,role:"listitem",tabIndex:0,children:[e.jsx("span",{className:"settings-onlyoffice-metric-label",children:f.label}),e.jsx("strong",{className:"settings-onlyoffice-metric-value",children:f.value}),e.jsx("div",{className:"settings-onlyoffice-metric-tooltip",role:"note",children:f.detail})]},f.key))})}),e.jsxs(Y,{heading:s("settings.skillOnlyOfficeSectionTitle"),children:[e.jsx(te,{label:s("settings.skillOnlyOfficeEnabledLabel"),children:e.jsxs("div",{className:"settings-onlyoffice-switch-field",children:[e.jsx(he,{checked:c.enabled,label:s("settings.skillOnlyOfficeEnabledLabel"),semanticRole:"switch",onChange:f=>{y(M=>({...M,enabled:f}))}}),e.jsx("span",{className:"settings-onlyoffice-switch-caption",children:c.enabled?s("common.enabled"):s("settings.skillOnlyOfficeStatusDisabled")})]})}),e.jsx(te,{label:s("settings.skillOnlyOfficeServerUrlLabel"),htmlFor:"onlyoffice-server-url",children:e.jsx("input",{id:"onlyoffice-server-url",className:"settings-text-input",value:c.serverUrl,onChange:f=>{y(M=>({...M,serverUrl:f.target.value}))},placeholder:s("settings.skillOnlyOfficeServerUrlPlaceholder")})}),e.jsx(te,{label:s("settings.skillOnlyOfficePublicBaseUrlLabel"),htmlFor:"onlyoffice-public-base-url",children:e.jsx("input",{id:"onlyoffice-public-base-url",className:"settings-text-input",value:c.publicBaseUrl,onChange:f=>{y(M=>({...M,publicBaseUrl:f.target.value}))},placeholder:s("settings.skillOnlyOfficePublicBaseUrlPlaceholder")})}),e.jsx(te,{label:s("settings.skillOnlyOfficeCallbackBaseUrlLabel"),htmlFor:"onlyoffice-callback-base-url",children:e.jsx("input",{id:"onlyoffice-callback-base-url",className:"settings-text-input",value:c.callbackBaseUrl,onChange:f=>{y(M=>({...M,callbackBaseUrl:f.target.value}))},placeholder:s("settings.skillOnlyOfficeCallbackBaseUrlPlaceholder")})}),e.jsx(te,{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:c.userDisplayName,onChange:f=>{y(M=>({...M,userDisplayName:f.target.value}))},placeholder:s("settings.skillOnlyOfficeUserDisplayNamePlaceholder")})}),e.jsx(te,{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:c.userAvatarUrl,onChange:f=>{y(M=>({...M,userAvatarUrl:f.target.value}))},placeholder:s("settings.skillOnlyOfficeUserAvatarUrlPlaceholder")})}),e.jsx(te,{label:s("settings.skillOnlyOfficeJwtSecretLabel"),htmlFor:"onlyoffice-jwt-secret",children:e.jsx("input",{id:"onlyoffice-jwt-secret",className:"settings-text-input",value:c.jwtSecret,onChange:f=>{y(M=>({...M,jwtSecret:f.target.value,clearJwtSecret:!1}))},placeholder:T!=null&&T.jwtSecretConfigured?s("settings.skillOnlyOfficeJwtSecretKeepPlaceholder"):s("settings.skillOnlyOfficeJwtSecretPlaceholder")})}),T!=null&&T.jwtSecretConfigured?e.jsx(te,{label:s("settings.skillOnlyOfficeClearJwtSecretLabel"),children:e.jsxs("div",{className:"settings-onlyoffice-switch-field",children:[e.jsx(he,{checked:c.clearJwtSecret,label:s("settings.skillOnlyOfficeClearJwtSecretLabel"),semanticRole:"switch",onChange:f=>{y(M=>({...M,clearJwtSecret:f}))}}),e.jsx("span",{className:"settings-onlyoffice-switch-caption",children:c.clearJwtSecret?s("common.enabled"):s("common.disabled")})]})}):null]}),F?e.jsx("p",{className:"settings-release-status",children:F}):null,u?e.jsx("p",{className:"settings-release-status",children:u}):null,e.jsxs(de,{className:"settings-onlyoffice-modal-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:d,children:s("common.cancel")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:w||S!==null,onClick:()=>{j()},children:S==="check"?s("settings.opencliLoading"):s("settings.skillOnlyOfficeCheckAction")}),e.jsx("button",{className:"primary-button",type:"button",disabled:w||S!==null,onClick:()=>{D()},children:S==="save"?s("butlerSettingsSaving"):s("settings.skillOnlyOfficeSaveAction")})]})]});return e.jsxs(e.Fragment,{children:[e.jsx("button",{className:t,type:"button",onClick:()=>{v(!0)},children:a??s("settings.skillOnlyOfficeOpenSettingsAction")}),n?e.jsx(Me,{open:m,title:s("settings.skillOnlyOfficeModalTitle"),description:s("settings.skillOnlyOfficeModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:d,children:U}):e.jsx(Ce,{open:m,title:s("settings.skillOnlyOfficeModalTitle"),description:s("settings.skillOnlyOfficeModalDescription"),size:"regular",layout:"form",className:"settings-onlyoffice-modal",bodyClassName:"settings-onlyoffice-modal-body",onClose:d,children:U})]})}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 hi(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 pi(t){switch(t){case"ready":return"success";case"warning":case"misconfigured":return"warning";case"error":return"danger";case"disabled":default:return"default"}}function bi(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 fi(t){switch(t){case"pass":return"success";case"warn":return"warning";case"fail":return"danger";case"skip":default:return"default"}}function xi(t){const a=[{key:"summary",label:s("settings.skillOnlyOfficeStatusLabel"),value:hi(t),detail:(t==null?void 0:t.summary)??s("settings.skillOnlyOfficeStatusUnknown"),tone:pi(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:bi(n.status),detail:n.detail,tone:fi(n.status)});return a}function Us(t){return t instanceof Fe||t instanceof Error&&t.message.trim().length>0?t.message:s("settings.skillLoadError")}const yi=[{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 gn(){const t=hs(),a=ss(d=>{var j;return((j=d.session)==null?void 0:j.accessToken)??null}),[n,r]=i.useState(!1),[o,m]=i.useState(null),[v,w]=i.useState(null),[b,S]=i.useState(null),{items:h,loading:T}=oa(n&&!!a),E=yi.map(d=>({...d,label:s(d.labelKey)}));i.useEffect(()=>{a||(r(!1),m(null),w(null),S(null))},[a]);async function V(){if(a){S(null);try{await ua(!0)}catch(d){S(Fs(d,"load"))}}}function L(){r(!0),w(null),S(null),a&&V()}async function F(d){if(!a)return;const j=!d.enabled;m(d.provider),S(null),w(null);try{await da(d.provider,j),tn(),w(j?s("settings.providerManagementEnableSuccess",{provider:d.displayName}):s("settings.providerManagementDisableSuccess",{provider:d.displayName}))}catch(D){S(Fs(D,"save"))}m(null)}async function O(){if(a){S(null),w(null);try{await ca(),w(s("settings.providerManagementRefreshSuccess"))}catch(d){S(Fs(d,"load"))}}}const u=h??[],N=u.filter(d=>d.enabled).length,c=u.filter(d=>!d.enabled).length,y=e.jsxs("div",{className:"settings-provider-modal-layout",children:[v?e.jsx("p",{className:"settings-provider-status",children:v}):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(Rs,{label:s("settings.providerManagementSummaryEnabled"),value:String(N)}),e.jsx(Rs,{label:s("settings.providerManagementSummaryDisabled"),value:String(c)}),e.jsx(Rs,{label:s("settings.providerManagementSummaryTotal"),value:String(u.length)})]}),e.jsxs(Y,{heading:s("settings.providerManagementMatrixTitle"),description:s("settings.providerManagementMatrixDescription"),className:"settings-provider-modal-section",children:[T&&u.length===0?e.jsx(re,{compact:!0,title:s("settings.providerManagementLoading")}):null,!T&&u.length===0?e.jsx(re,{title:s("settings.providerManagementEmpty"),description:s("settings.providerManagementEmptyDescription"),action:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a,onClick:()=>{O()},children:s("settings.providerManagementRefresh")})}):null,u.length>0?e.jsx("div",{className:"settings-provider-matrix-shell",children:e.jsxs("table",{className:"settings-provider-matrix-table",children:[e.jsxs("colgroup",{children:[e.jsx("col",{className:"settings-provider-matrix-provider-col"}),E.map(d=>e.jsx("col",{className:"settings-provider-matrix-capability-col"},d.key)),e.jsx("col",{className:"settings-provider-matrix-status-col"}),e.jsx("col",{className:"settings-provider-matrix-toggle-col"})]}),e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:s("settings.providerManagementTableProvider")}),E.map(d=>e.jsx("th",{scope:"col",children:d.label},d.key)),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableStatus")}),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableEnabled")})]})}),e.jsx("tbody",{children:u.map(d=>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:d.displayName}),e.jsx(ce,{tone:Si(d.installState),children:Ni(d)})]})})}),E.map(j=>e.jsx("td",{className:"settings-provider-matrix-capability-cell",children:e.jsx(ji,{enabled:d.productCapabilities[j.key],label:j.label})},j.key)),e.jsx("td",{className:"settings-provider-matrix-status-cell",children:e.jsx(ce,{tone:d.enabled?"success":"default",children:d.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:d.displayName})}),e.jsx("input",{type:"checkbox",checked:d.enabled,disabled:o===d.provider,"aria-label":s("settings.providerManagementToggleLabel",{provider:d.displayName}),onChange:()=>{F(d)}}),e.jsx("span",{className:"settings-provider-matrix-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-provider-matrix-switch-thumb"})})]})})]},d.provider))})]})}):null]}),e.jsx(de,{className:"settings-provider-modal-actions",children:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a||T||o!==null,onClick:()=>{O()},children:T?s("common.loading"):s("settings.providerManagementRefresh")})})]});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-provider-entrypoint",children:[a?null:e.jsx("p",{className:"settings-provider-entrypoint-note",children:s("settings.providerManagementLoginRequired")}),e.jsx("button",{type:"button",className:"settings-button",disabled:!a,onClick:L,children:s("settings.providerManagementManageAction")})]}),t.isMobile?e.jsx(Me,{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:y}):e.jsx(Ce,{open:n,title:s("settings.providerManagementModalTitle"),className:"settings-provider-modal",size:"xwide",layout:"list",bodyClassName:"settings-provider-modal-body",onClose:()=>r(!1),children:y})]})}function Rs({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 ji({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 vi(t){switch(t){case"ready":return s("settings.providerManagementInstallReady");case"missing":return s("settings.providerManagementInstallMissing");default:return s("settings.providerManagementInstallUnknown")}}function Ni(t){return t.installState==="ready"&&t.version?t.version:vi(t.installState)}function Si(t){switch(t){case"ready":return"success";case"missing":return"warning";default:return"default"}}function Fs(t,a){return t instanceof Fe?t.message:a==="save"?s("settings.providerManagementSaveFailed"):s("settings.providerManagementLoadFailed")}async function wi(){return await Z.request("/api/channels/platforms")}async function Ti(){return await Z.request("/api/channels/accounts")}async function ki(t){return await Z.request("/api/channels/accounts",{method:"POST",body:JSON.stringify(t)})}async function Ci(t){return await Z.request(`/api/channels/accounts/${t}`,{method:"DELETE"})}async function Di(t){return await Z.request(`/api/channels/accounts/${t}/probe`,{method:"POST"})}async function Mi(t){return await Z.request(`/api/channels/accounts/${t}/poll`,{method:"POST"})}async function Ai(t){return await Z.request(`/api/channels/accounts/${t}/wechat-claw/start-login`,{method:"POST"})}async function Pi(t){return await Z.request(`/api/channels/accounts/${t}/wechat-claw/refresh-login`,{method:"POST"})}async function Ei(t){return await Z.request(`/api/channels/accounts/${t}/wechat-claw/logout`,{method:"POST"})}async function Li(t,a=20){return await Z.request(`/api/channels/accounts/${t}/threads?limit=${a}`)}async function Ii(t,a=20){return await Z.request(`/api/channels/accounts/${t}/events?limit=${a}`)}async function Oi(t,a=20){return await Z.request(`/api/channels/accounts/${t}/deliveries?limit=${a}`)}function mn({code:t,...a}){switch(t){case"wechat-claw":return e.jsx(Ri,{...a});case"telegram":return e.jsx(Ui,{...a});default:return e.jsx(Fi,{...a})}}function Ui(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 Ri(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 Fi(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 Bi=["codex","claude-code"],Vi=["active","disabled","degraded"],us="polling",_i=`{
2
+ }`,rt={"wechat-claw":[],telegram:[{key:"botToken",labelKey:"settings.channelsConfigFieldTelegramBotToken",descriptionKey:"settings.channelsConfigFieldTelegramBotTokenDescription",placeholderKey:"settings.channelsConfigFieldTelegramBotTokenPlaceholder",type:"password",required:!0}]},Hi={};function hn(){const t=hs(),a=ss(l=>{var q;return((q=l.session)==null?void 0:q.accessToken)??null}),[n,r]=i.useState(!1),[o,m]=i.useState(!1),[v,w]=i.useState([]),[b,S]=i.useState([]),[h,T]=i.useState(!1),[E,V]=i.useState(!1),[L,F]=i.useState(null),[O,u]=i.useState(null),[N,c]=i.useState(null),[y,d]=i.useState(null),[j,D]=i.useState(null),[U,f]=i.useState("platform"),[M,B]=i.useState(null),[z,C]=i.useState(null),[R,J]=i.useState(()=>fs()),[ee,ie]=i.useState([]),[_,I]=i.useState([]),[$,k]=i.useState([]),p=i.useMemo(()=>b.find(l=>l.id===M)??null,[b,M]),W=i.useMemo(()=>v.find(l=>l.code===R.platformCode)??null,[R.platformCode,v]),me=i.useMemo(()=>R.platformCode?rt[R.platformCode]??[]:[],[R.platformCode]),H=i.useMemo(()=>new Set(b.map(l=>l.platformCode)).size,[b]),oe=i.useMemo(()=>b.filter(l=>l.status==="active").length,[b]),X=(W==null?void 0:W.code)==="wechat-claw",xe=(p==null?void 0:p.platformCode)==="wechat-claw",P=i.useMemo(()=>p?Ki(p):null,[p]),Q=(P==null?void 0:P.loginStatus)==="active";i.useEffect(()=>{a||(r(!1),m(!1),w([]),S([]),T(!1),V(!1),F(null),u(null),c(null),d(null),D(null),f("platform"),B(null),C(null),J(fs()),ie([]),I([]),k([]))},[a]),i.useEffect(()=>{(!M||z!==M)&&C(null)},[M,z]),i.useEffect(()=>{!n||!a||ne()},[a,n]),i.useEffect(()=>{if(!n||!a||!M){ie([]),I([]),k([]);return}ue(M)},[a,M,n]);async function ne(l={}){if(a){T(!0),d(null);try{const[q,le]=await Promise.all([wi(),Ti()]);w(q),S(le),M&&!le.some(_e=>_e.id===M)&&(B(null),ie([]),I([]),k([])),l.showSuccess&&c(s("settings.channelsRefreshSuccess"))}catch(q){d(Ke(q,"loadOverview"))}finally{T(!1)}}}async function ue(l){if(a){V(!0),d(null);try{const[q,le,_e]=await Promise.all([Li(l),Ii(l),Oi(l)]);if(M!==l)return;ie(q),I(le),k(_e)}catch(q){d(Ke(q,"loadDetails"))}finally{V(!1)}}}function G(){r(!0),c(null),d(null)}function pe(){r(!1),m(!1),C(null)}function ye(){u(null),D(null),f("platform"),J(fs())}function Ae(){ye(),m(!0)}function je(){m(!1),ye()}function Ee(l){B(l.id),C(null),c(null),d(null)}function ve(l){f(l==="wechat-claw"?"binding":"config"),J(q=>fs({platformCode:l,displayName:q.platformCode===l?q.displayName:"",providerId:q.providerId,status:q.status})),D(null)}function Pe(l,q){J(le=>({...le,configValues:{...le.configValues,[l]:q}}))}function Ze(){const l=pn(R,W);if(!l.ok){D(l.errorText);return}f("binding"),D(null)}async function Be(){if(!a)return;const l=Ji(R,W);if(!l.ok){D(l.errorText);return}u("save"),D(null),c(null);try{const q=await ki(l.input);S(le=>[q,...le]),B(q.id),je(),c(s("settings.channelsCreateSuccess",{account:q.displayName}))}catch(q){D(Ke(q,"save"))}finally{u(null)}}async function Ye(){if(!(!a||!M)){F("probe"),d(null),c(null);try{const l=await Di(M);S(q=>Vs(q,l.account)),c(l.detail),await ue(M)}catch(l){d(Ke(l,"probe"))}finally{F(null)}}}async function Ie(){if(!(!a||!M)){F("poll"),d(null),c(null);try{const l=await Mi(M);S(q=>Vs(q,l.account)),c(l.detail),await ue(M)}catch(l){d(Ke(l,"poll"))}finally{F(null)}}}async function Se(l){if(!a||!M||!xe)return;F(l==="start"?"wechat-start-login":l==="refresh"?"wechat-refresh-login":"wechat-logout"),d(null),c(null);try{let le;l==="start"?le=await Ai(M):l==="refresh"?le=await Pi(M):le=await Ei(M),Oe(le.account),c(le.detail)}catch(le){d(Ke(le,l))}finally{F(null)}}async function se(){if(!(!a||!p)){F("remove-account"),d(null),c(null);try{const l=await Ci(p.id);S(q=>q.filter(le=>le.id!==l.accountId)),M===l.accountId&&(B(null),ie([]),I([]),k([])),C(null),c(s("settings.channelsRemoveSuccess",{account:l.displayName}))}catch(l){d(Ke(l,"remove"))}finally{F(null)}}}function Oe(l){S(q=>Vs(q,l))}async function Ve(){F("refresh"),c(null),d(null);try{await ne({showSuccess:!0})}finally{F(null)}}const Te=e.jsxs("div",{className:"settings-channels-summary-grid","aria-label":s("settings.channelsSummaryTitle"),children:[e.jsx(Bs,{label:s("settings.channelsSummaryAccounts"),value:String(b.length)}),e.jsx(Bs,{label:s("settings.channelsSummaryActive"),value:String(oe)}),e.jsx(Bs,{label:s("settings.channelsSummaryPlatforms"),value:String(H)})]}),We=e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:Ae,children:s("settings.channelsAddAccountAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:h||L!==null,onClick:()=>{Ve()},children:L==="refresh"?s("settings.channelsActionPending"):s("settings.channelsRefresh")})]}),$e=!xe||Q,we=p!==null&&z===p.id,ze=e.jsxs("div",{className:"settings-channels-modal-layout",children:[j?e.jsx("p",{className:"settings-channels-error",children:j}):null,e.jsxs(Y,{heading:s("settings.channelsWizardTitle"),description:s("settings.channelsWizardCreateDescription"),children:[e.jsx(qi,{currentStep:U}),U==="platform"?e.jsxs(e.Fragment,{children:[h&&v.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsLoading")}):null,!h&&v.length===0?e.jsx(re,{title:s("settings.channelsPlatformsEmpty"),description:s("settings.channelsPlatformsEmptyDescription")}):null,v.length>0?e.jsx("div",{className:"settings-channels-platform-grid",children:v.map(l=>e.jsx("button",{className:"settings-channels-platform-card",type:"button","aria-pressed":R.platformCode===l.code,"data-selected":R.platformCode===l.code?"true":void 0,onClick:()=>ve(l.code),children:e.jsxs("div",{className:"settings-channels-platform-card-top",children:[e.jsxs("div",{className:"settings-channels-platform-card-brand",children:[e.jsx("div",{className:"settings-channels-platform-card-logo",children:e.jsx(mn,{code:l.code,width:40,height:40,"aria-hidden":"true"})}),e.jsxs("div",{className:"settings-channels-platform-card-copy",children:[e.jsx("strong",{children:l.displayName}),e.jsx("span",{children:s("settings.channelsPlatformSummary",{modes:Xe(us),multiSession:gs(l.multiSessionSupportLevel)})})]})]}),e.jsx(ce,{tone:l.multiSessionSupportLevel==="supported"?"success":"warning",children:gs(l.multiSessionSupportLevel)})]})},l.code))}):null,e.jsx(de,{children:e.jsx("button",{className:"primary-button",type:"button",disabled:!W,onClick:()=>{W&&f("config")},children:s("settings.channelsWizardNextToConfig")})})]}):null,U==="config"?e.jsxs(e.Fragment,{children:[W?e.jsx(Wi,{platformCapability:W}):e.jsx(re,{compact:!0,title:s("settings.channelsValidationPlatform"),description:s("settings.channelsWizardSelectPlatformHint")}),W?e.jsxs(e.Fragment,{children:[e.jsx(zi,{platformCode:W.code}),e.jsx($i,{platformCode:W.code}),me.length>0?e.jsx("div",{className:"settings-channels-form-grid",children:me.map(l=>e.jsx(te,{label:s(l.labelKey),description:s(l.descriptionKey),htmlFor:`channels-create-config-${l.key}`,children:e.jsx("input",{id:`channels-create-config-${l.key}`,className:"settings-text-input",type:l.type??"text",placeholder:s(l.placeholderKey),value:R.configValues[l.key]??"",onChange:q=>Pe(l.key,q.target.value)})},l.key))}):null,e.jsxs("details",{className:"settings-channels-advanced-config",children:[e.jsx("summary",{children:s("settings.channelsAdvancedConfigTitle")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsAdvancedConfigDescription")}),e.jsx(te,{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:R.advancedConfigText,onChange:l=>{J(q=>({...q,advancedConfigText:l.target.value}))}})})]})]}):null,e.jsxs(de,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>f("platform"),children:s("settings.channelsWizardBackToPlatform")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!W,onClick:Ze,children:s("settings.channelsWizardNextToBinding")})]})]}):null,U==="binding"?e.jsxs(e.Fragment,{children:[W?e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(De,{label:s("settings.channelsDetailPlatform"),value:W.displayName}),e.jsx(De,{label:s("settings.channelsDetailConnectionMode"),value:Xe(us)}),e.jsx(De,{label:s("settings.channelsWizardBindingSummary"),value:gs(W.multiSessionSupportLevel)})]}):null,e.jsxs("div",{className:"settings-channels-form-grid",children:[e.jsx(te,{label:s("settings.channelsFieldDisplayName"),description:X?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:R.displayName,onChange:l=>{J(q=>({...q,displayName:l.target.value}))}})}),e.jsx(te,{label:s("settings.channelsFieldProvider"),description:s("settings.channelsFieldProviderDescription"),htmlFor:"channels-create-provider",children:e.jsx("select",{id:"channels-create-provider",className:"settings-select",value:R.providerId,onChange:l=>{J(q=>({...q,providerId:l.target.value}))},children:Bi.map(l=>e.jsx("option",{value:l,children:xs(l)},l))})}),e.jsx(te,{label:s("settings.channelsFieldStatus"),description:s("settings.channelsFieldStatusDescription"),htmlFor:"channels-create-status",children:e.jsx("select",{id:"channels-create-status",className:"settings-select",value:R.status,onChange:l=>{J(q=>({...q,status:l.target.value}))},children:Vi.map(l=>e.jsx("option",{value:l,children:_s(l)},l))})}),e.jsx(te,{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(de,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>f(X?"platform":"config"),children:X?s("settings.channelsWizardBackToPlatform"):s("settings.channelsWizardBackToConfig")}),e.jsx("button",{className:"primary-button",type:"button",disabled:O==="save",onClick:()=>{Be()},children:O==="save"?s("settings.channelsActionPending"):s("settings.channelsCreateAction")})]})]}):null]})]}),Le=e.jsxs("div",{className:"settings-channels-modal-layout",children:[N?e.jsx("p",{className:"settings-channels-status",children:N}):null,y?e.jsx("p",{className:"settings-channels-error",children:y}):null,Te,t.isMobile?e.jsx(de,{className:"settings-channels-inline-actions",children:We}):null,e.jsxs(Y,{heading:s("settings.channelsAccountsTitle"),description:s("settings.channelsAccountsDescription"),children:[h&&b.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsLoading")}):null,!h&&b.length===0?e.jsx(re,{title:s("settings.channelsAccountsEmpty"),description:s("settings.channelsAccountsEmptyDescription"),action:e.jsx("button",{className:"secondary-button",type:"button",onClick:Ae,children:s("settings.channelsAddAccountAction")})}):null,b.length>0?e.jsx(fe,{className:"settings-channels-account-list",children:b.map(l=>e.jsx(be,{as:"button",selected:M===l.id,className:"settings-channels-account-item",label:l.displayName,description:s("settings.channelsAccountRowDescription",{platform:l.capability.displayName,provider:xs(l.providerId),mode:Xe(l.connectionMode)}),trailing:e.jsxs("div",{className:"settings-channels-account-tags",children:[e.jsx(ce,{tone:Yi(l.status),children:_s(l.status)}),e.jsx(ce,{children:xs(l.providerId)})]}),onClick:()=>Ee(l),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsThreadsTitle"),": ",l.threadCount]}),e.jsxs("span",{children:[s("settings.channelsEventsTitle"),": ",l.inboundEventCount]}),e.jsxs("span",{children:[s("settings.channelsDeliveriesTitle"),": ",l.deliveryCount]})]})},l.id))}):null]}),p?e.jsxs(e.Fragment,{children:[e.jsxs(Y,{heading:s("settings.channelsDetailTitle"),description:s("settings.channelsDetailDescription"),actions:e.jsxs(de,{className:"settings-channels-inline-actions",children:[$e?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:L!==null,onClick:()=>{Ye()},children:L==="probe"?s("settings.channelsActionPending"):s("settings.channelsProbeAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:L!==null,onClick:()=>{Ie()},children:L==="poll"?s("settings.channelsActionPending"):s("settings.channelsPollAction")})]}):null,we?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:L!==null,onClick:()=>{C(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:L!==null,onClick:()=>{se()},children:L==="remove-account"?s("settings.channelsActionPending"):s("settings.channelsRemoveConfirmAction")})]}):e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:L!==null,onClick:()=>{p&&C(p.id)},children:s("settings.channelsRemoveAction")})]}),children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(De,{label:s("settings.channelsDetailPlatform"),value:p.capability.displayName}),e.jsx(De,{label:s("settings.channelsDetailProvider"),value:xs(p.providerId)}),e.jsx(De,{label:s("settings.channelsDetailConnectionMode"),value:Xe(p.connectionMode)}),e.jsx(De,{label:s("settings.channelsDetailStatus"),value:_s(p.status)}),e.jsx(De,{label:s("settings.channelsDetailLastInbound"),value:Ge(p.lastInboundAt)}),e.jsx(De,{label:s("settings.channelsDetailLastOutbound"),value:Ge(p.lastOutboundAt)})]}),p.lastError?e.jsxs("p",{className:"settings-channels-inline-note",children:[s("settings.channelsDetailLastError"),": ",p.lastError]}):null,we?e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsRemoveConfirmDescription")}):null]}),p.platformCode==="wechat-claw"?e.jsxs(Y,{heading:s("settings.channelsWechatBindingTitle"),description:s("settings.channelsWechatBindingDescription"),actions:e.jsxs(de,{className:"settings-channels-inline-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:L!==null,onClick:()=>{Se("start")},children:L==="wechat-start-login"?s("settings.channelsActionPending"):P!=null&&P.qrcodeUrl?s("settings.channelsWechatRestartBindingAction"):s("settings.channelsWechatStartLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:L!==null,onClick:()=>{Se("refresh")},children:L==="wechat-refresh-login"?s("settings.channelsActionPending"):s("settings.channelsWechatRefreshLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:L!==null,onClick:()=>{Se("logout")},children:L==="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(De,{label:s("settings.channelsWechatLoginStatus"),value:tl((P==null?void 0:P.loginStatus)??"not_logged_in")}),e.jsx(De,{label:s("settings.channelsDetailConnectionMode"),value:s("settings.channelsWechatBindingModeValue")}),e.jsx(De,{label:s("settings.channelsMetaUpdatedAt"),value:Ge((P==null?void 0:P.updatedAt)??null)})]}),e.jsx("p",{className:"settings-channels-inline-note",children:Q?s("settings.channelsWechatBoundDescription"):s("settings.channelsWechatPendingDescription")}),P!=null&&P.lastDetail?e.jsx("p",{className:"settings-channels-inline-note",children:P.lastDetail}):null,Q?null:e.jsxs("div",{className:"settings-channels-wechat-qr-panel",children:[P!=null&&P.qrcodeUrl?e.jsxs(e.Fragment,{children:[e.jsx("img",{className:"settings-channels-wechat-qr-image",src:P.qrcodeUrl,alt:s("settings.channelsWechatQrAlt")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsWechatQrHint")}),e.jsx(de,{className:"settings-channels-inline-actions",children:e.jsx("a",{className:"secondary-button",href:P.qrcodeSourceUrl??P.qrcodeUrl,target:"_blank",rel:"noreferrer",children:s("settings.channelsWechatOpenQrLinkAction")})})]}):e.jsx(re,{compact:!0,title:s("settings.channelsWechatQrEmpty"),description:s("settings.channelsWechatQrEmptyDescription")}),P!=null&&P.qrcodeText?e.jsx(te,{label:s("settings.channelsWechatQrRawTitle"),description:s("settings.channelsWechatQrRawDescription"),children:e.jsx("textarea",{className:"settings-textarea settings-channels-textarea",value:P.qrcodeText,readOnly:!0})}):null]})]}),e.jsx("div",{className:"settings-channels-platform-selected-notes",children:p.capability.stageOneLimitations.map(l=>e.jsx("p",{className:"settings-channels-platform-limitations",children:l},l))})]}):null,e.jsxs(Y,{heading:s("settings.channelsThreadsTitle"),description:s("settings.channelsThreadsDescription",{count:p.threadCount}),children:[E?e.jsx(re,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!E&&ee.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsThreadsEmpty"),description:s("settings.channelsThreadsEmptyDescription")}):null,!E&&ee.length>0?e.jsx(fe,{compact:!0,children:ee.map(l=>e.jsx(be,{label:l.title||l.externalConversationKey,description:s("settings.channelsThreadSummary",{status:wt(l.status),conversationKey:l.externalConversationKey}),trailing:e.jsx(ce,{tone:Xi(l.status),children:wt(l.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",Ge(l.createdAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaUpdatedAt"),": ",Ge(l.updatedAt)]}),l.externalUserId?e.jsxs("span",{children:[s("settings.channelsMetaExternalUser"),": ",l.externalUserId]}):null]})},l.id))}):null]}),e.jsxs(Y,{heading:s("settings.channelsEventsTitle"),description:s("settings.channelsEventsDescription",{count:p.inboundEventCount}),children:[E?e.jsx(re,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!E&&_.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsEventsEmpty"),description:s("settings.channelsEventsEmptyDescription")}):null,!E&&_.length>0?e.jsx(fe,{compact:!0,children:_.map(l=>e.jsx(be,{label:St(l.textContent),description:s("settings.channelsEventSummary",{status:Tt(l.status),conversationKey:l.externalConversationKey}),trailing:e.jsx(ce,{tone:el(l.status),children:Tt(l.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaReceivedAt"),": ",Ge(l.receivedAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaEventId"),": ",l.externalEventId]}),l.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",l.errorMessage]}):null]})},l.id))}):null]}),e.jsxs(Y,{heading:s("settings.channelsDeliveriesTitle"),description:s("settings.channelsDeliveriesDescription",{count:p.deliveryCount}),children:[E?e.jsx(re,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!E&&$.length===0?e.jsx(re,{compact:!0,title:s("settings.channelsDeliveriesEmpty"),description:s("settings.channelsDeliveriesEmptyDescription")}):null,!E&&$.length>0?e.jsx(fe,{compact:!0,children:$.map(l=>e.jsx(be,{label:St(l.textContent),description:s("settings.channelsDeliverySummary",{status:kt(l.status)}),trailing:e.jsx(ce,{tone:sl(l.status),children:kt(l.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",Ge(l.createdAt)]}),l.providerMessageRef?e.jsxs("span",{children:[s("settings.channelsMetaProviderRef"),": ",l.providerMessageRef]}):null,l.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",l.errorMessage]}):null]})},l.id))}):null]})]}):null]});return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-channels-entrypoint",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:!a,onClick:G,children:s("settings.channelsManageAction")})}),t.isMobile?e.jsx(Me,{open:n,title:s("settings.channelsModalTitle"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:pe,children:e.jsx("div",{className:"settings-channels-modal-body",children:Le})}):e.jsx(Ce,{open:n,title:s("settings.channelsModalTitle"),size:"xwide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",headerActions:We,onClose:pe,children:Le}),t.isMobile?e.jsx(Me,{open:o,title:s("settings.channelsAddAccountAction"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:je,children:e.jsx("div",{className:"settings-channels-modal-body",children:ze})}):e.jsx(Ce,{open:o,title:s("settings.channelsAddAccountAction"),size:"wide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",onClose:je,children:ze})]})}function Bs({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 De({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 qi({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 Wi({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(mn,{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(ce,{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 $i({platformCode:t}){const a=Hi[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 zi({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 Ki(t){return{loginStatus:Gi(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 Gi(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:_i,...t}}function Vs(t,a){return t.findIndex(r=>r.id===a.id)===-1?[a,...t]:t.map(r=>r.id===a.id?a:r)}function pn(t,a){if(!t.platformCode||!a)return{ok:!1,errorText:s("settings.channelsValidationPlatform")};const n=Qi(t.platformCode,t.configValues);if(n)return{ok:!1,errorText:n};try{bn(t.advancedConfigText)}catch{return{ok:!1,errorText:s("settings.channelsValidationConfigJson")}}return{ok:!0}}function Ji(t,a){const n=pn(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,m=bn(t.advancedConfigText),v=Zi(o,t.configValues,m);return{ok:!0,input:{displayName:r,platformCode:o,providerId:t.providerId,connectionMode:us,status:t.status,config:v}}}function Qi(t,a){const r=(rt[t]??[]).find(o=>o.required&&!(a[o.key]??"").trim());return r?s("settings.channelsValidationRequiredField",{field:s(r.labelKey)}):null}function bn(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 Zi(t,a,n){const r={...n};for(const o of rt[t]??[]){const m=(a[o.key]??"").trim();m?r[o.key]=m: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 St(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 _s(t){switch(t){case"disabled":return s("settings.channelsStatusDisabled");case"degraded":return s("settings.channelsStatusDegraded");default:return s("settings.channelsStatusActive")}}function Yi(t){switch(t){case"disabled":return"default";case"degraded":return"warning";default:return"success"}}function wt(t){switch(t){case"closed":return s("settings.channelsThreadStatusClosed");case"failed":return s("settings.channelsThreadStatusFailed");default:return s("settings.channelsThreadStatusActive")}}function Xi(t){switch(t){case"failed":return"danger";case"closed":return"default";default:return"success"}}function Tt(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 el(t){switch(t){case"replied":return"success";case"failed":return"danger";case"ignored":return"warning";case"dispatched":return"accent";default:return"default"}}function kt(t){switch(t){case"failed":return s("settings.channelsDeliveryStatusFailed");case"skipped":return s("settings.channelsDeliveryStatusSkipped");default:return s("settings.channelsDeliveryStatusSent")}}function sl(t){switch(t){case"failed":return"danger";case"skipped":return"default";default:return"success"}}function tl(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 fn={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Ct=Qe.createContext&&Qe.createContext(fn),nl=["attr","size","title"];function al(t,a){if(t==null)return{};var n,r,o=il(t,a);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(t);for(r=0;r<m.length;r++)n=m[r],a.indexOf(n)===-1&&{}.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function il(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 ws(){return ws=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},ws.apply(null,arguments)}function Dt(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 Ts(t){for(var a=1;a<arguments.length;a++){var n=arguments[a]!=null?arguments[a]:{};a%2?Dt(Object(n),!0).forEach(function(r){ll(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Dt(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ll(t,a,n){return(a=rl(a))in t?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,t}function rl(t){var a=ol(t,"string");return typeof a=="symbol"?a:a+""}function ol(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 xn(t){return t&&t.map((a,n)=>Qe.createElement(a.tag,Ts({key:n},a.attr),xn(a.child)))}function ps(t){return a=>Qe.createElement(cl,ws({attr:Ts({},t.attr)},a),xn(t.child))}function cl(t){var a=n=>{var{attr:r,size:o,title:m}=t,v=al(t,nl),w=o||n.size||"1em",b;return n.className&&(b=n.className),t.className&&(b=(b?b+" ":"")+t.className),Qe.createElement("svg",ws({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,r,v,{className:b,style:Ts(Ts({color:t.color||n.color},n.style),t.style),height:w,width:w,xmlns:"http://www.w3.org/2000/svg"}),m&&Qe.createElement("title",null,m),t.children)};return Ct!==void 0?Qe.createElement(Ct.Consumer,null,n=>a(n)):a(fn)}function dl(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 ul(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 Mt(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 gl(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 ml(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 At(){return Z.request("/api/auth/devices")}function hl(t){return Z.request("/api/auth/devices/current/primary",{method:"POST",body:JSON.stringify(t)})}function pl(t){return Z.request(`/api/auth/devices/${t}/logout`,{method:"POST"})}function yn({compact:t=!1}){const a=ss(p=>{var W;return((W=p.session)==null?void 0:W.accessToken)??null}),[n,r]=i.useState(null),[o,m]=i.useState(!1),[v,w]=i.useState(!1),[b,S]=i.useState(!1),[h,T]=i.useState(null),[E,V]=i.useState(null),[L,F]=i.useState(null),[O,u]=i.useState(null),[N,c]=i.useState(null),[y,d]=i.useState(""),[j,D]=i.useState(null);i.useEffect(()=>{let p=!0;if(!v){m(!1);return}if(!a){r(null),m(!1),F(null),u(null);return}return(async()=>{m(!0);try{const me=await At();if(!p)return;r(me),u(null)}catch(me){if(!p)return;u(Hs(me))}finally{p&&m(!1)}})(),()=>{p=!1}},[a,v]);async function U(){const p=await At();r(p),u(null)}function f(){w(!0),S(!1),F(null),u(null)}function M(){h!=="primary"&&(w(!1),S(!1),c(null),d(""),D(null))}function B(p){c(p),d(""),D(null)}async function z(){if(N){T("primary"),D(null),u(null),F(null);try{await hl({password:y,primary:N==="enable"}),await U(),F(N==="enable"?s("settings.authDevicePrimaryEnabled"):s("settings.authDevicePrimaryDisabled")),c(null),d("")}catch(p){const W=Hs(p);D(W),u(W)}finally{T(null)}}}async function C(p){if(p.deviceId){V(p.deviceId),u(null),F(null);try{const W=await pl(p.deviceId);await U(),F(s("settings.authDeviceLogoutDeviceSuccess",{device:ys(p),count:String(W.revokedSessionCount)}))}catch(W){u(Hs(W))}finally{V(null)}}}const R=(n==null?void 0:n.currentDevice)??null,J=(n==null?void 0:n.otherActiveDevices.filter(p=>!p.isLegacy))??[],ee=(n==null?void 0:n.otherActiveDevices.filter(p=>p.isLegacy))??[],ie=(n==null?void 0:n.recentLoginRecords.filter(p=>!p.isLegacy))??[],_=(n==null?void 0:n.recentLoginRecords.filter(p=>p.isLegacy))??[],I=ee.length+_.length,$=R!==null&&!R.isLegacy,k=(R==null?void 0:R.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:f,children:s("settings.authDeviceOpenManager")})})}),e.jsx(ms,{open:v,title:s("settings.authDeviceManagement"),description:s("settings.authDeviceManagementDescription"),className:"settings-device-browser-modal",onClose:M,children:e.jsxs(e.Fragment,{children:[L?e.jsx("p",{className:"settings-release-status",children:L}):null,O?e.jsx("p",{className:"settings-release-status",children:O}):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:()=>S(p=>!p),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")})}),R?e.jsx(rs,{current:!0,title:ys(R),clientType:R.clientType,browserName:R.browserName,browserVersion:R.browserVersion,osName:R.osName,osVersion:R.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:R.lastSeenAt,sourceAddress:R.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}),R.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null]}),actions:e.jsx(e.Fragment,{children:e.jsx("button",{className:"secondary-button","data-variant":"device-neutral",type:"button",disabled:!$||h!==null,onClick:()=>B(R.isPrimary?"disable":"enable"),children:R.isPrimary?s("settings.authDeviceDisablePrimary"):s("settings.authDeviceEnablePrimary")})}),note:$?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")})}),J.length>0?e.jsx("div",{className:"settings-device-list",children:J.map((p,W)=>e.jsx(rs,{title:ys(p),clientType:p.clientType,browserName:p.browserName,browserVersion:p.browserVersion,osName:p.osName,osVersion:p.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:p.lastSeenAt,sourceAddress:p.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[p.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null,p.isLegacy?e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")}):null]}),actions:p.deviceId?e.jsx("button",{className:"settings-button settings-button-danger","data-variant":"device-danger",type:"button",disabled:!k||h!==null||E!==null,onClick:()=>{C(p)},children:E===p.deviceId?s("common.loading"):s("settings.authDeviceLogoutDevice")}):null},`${p.deviceId??"legacy"}-${p.lastSeenAt}-${W}`))}):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")})}),ie.length>0?e.jsx("div",{className:"settings-device-list",children:ie.map(p=>e.jsx(rs,{title:Pt(p),clientType:p.clientType,browserName:p.browserName,browserVersion:p.browserVersion,osName:p.osName,osVersion:p.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:p.occurredAt,sourceAddress:p.sourceAddress,badges:p.isCurrentDevice?e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}):null},p.id))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceRecentEmpty")})]}),b&&ee.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:ee.map((p,W)=>e.jsx(rs,{title:ys(p),clientType:p.clientType,browserName:p.browserName,browserVersion:p.browserVersion,osName:p.osName,osVersion:p.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:p.lastSeenAt,sourceAddress:p.lastSourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},`legacy-device-${p.lastSeenAt}-${W}`))})]}):null,b&&_.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:_.map(p=>e.jsx(rs,{title:Pt(p),clientType:p.clientType,browserName:p.browserName,browserVersion:p.browserVersion,osName:p.osName,osVersion:p.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:p.occurredAt,sourceAddress:p.sourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},p.id))})]}):null]})]})}),e.jsx(ms,{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:()=>{h!=="primary"&&(c(null),d(""),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:y,onChange:p=>d(p.target.value)})]}),j?e.jsx("p",{className:"settings-release-status",children:j}):null,e.jsxs("div",{className:"settings-device-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:h==="primary",onClick:()=>{c(null),d(""),D(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",disabled:y.trim().length===0||h==="primary",onClick:()=>{z()},children:h==="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())||jn(t.clientType)}function Pt(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||jn(t.clientType)}function bl(t){return e.jsxs("div",{className:"settings-device-identity",children:[e.jsx("span",{className:"settings-device-identity-icon","aria-hidden":"true",children:e.jsx(Sl,{kind:Nl(t.clientType)})}),e.jsx("div",{className:"settings-device-identity-body",children:e.jsx("strong",{children:t.title})})]})}function rs(t){const a=vl(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(bl,{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 jn(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 fl(t,a){return s(t,{value:new Date(a).toLocaleString()})}function xl(t){return t?s("settings.authDeviceSourceAddressValue",{value:t}):s("settings.authDeviceSourceAddressUnknown")}function yl(t,a){return t?s("settings.authDeviceBrowserValue",{value:vn(t,a)}):null}function jl(t,a){return t?s("settings.authDeviceOsValue",{value:vn(t,a)}):null}function vl(t,a,n,r,o,m,v){return[yl(t,a),jl(n,r),fl(o,m),xl(v)].filter(w=>!!w)}function Nl(t){switch(t){case"desktop":return"desktop";case"web":return"web";case"ios":return"ios";case"android":return"android";default:return"unknown"}}function vn(t,a){return a!=null&&a.trim()?`${t} ${a}`:t}function Sl({kind:t}){const a=wl(t),n=a.icon;return e.jsx(n,{color:a.color})}function wl(t){switch(t){case"desktop":return{icon:dl,color:"#2563eb"};case"web":return{icon:ul,color:"#0f766e"};case"ios":return{icon:gl,color:"#111827"};case"android":return{icon:ml,color:"#3ddc84"};case"unknown":return{icon:Mt,color:"#64748b"};default:return{icon:Mt,color:"#64748b"}}}function Hs(t){return t instanceof Fe||t instanceof Error?t.message:s("settings.authDeviceLoadFailed")}function Tl(){return Z.request("/api/admin/users")}function kl(t){return Z.request("/api/admin/users",{method:"POST",body:JSON.stringify(t)})}function Cl(t,a){return Z.request(`/api/admin/users/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify(a)})}function Dl(t,a){return Z.request(`/api/admin/users/${encodeURIComponent(t)}/status`,{method:"PATCH",body:JSON.stringify({status:a})})}function Ml(t){return Z.request(`/api/admin/users/${encodeURIComponent(t)}`,{method:"DELETE"})}function Al(t){return Z.request(`/api/admin/users/usage?period=${t}`)}const qs={username:"",password:""};function Nn({compact:t=!1,mobile:a=!1}){const[n,r]=i.useState(!1),[o,m]=i.useState("users"),[v,w]=i.useState([]),[b,S]=i.useState(null),[h,T]=i.useState("day"),[E,V]=i.useState(null),[L,F]=i.useState(null),[O,u]=i.useState(null),[N,c]=i.useState(qs),[y,d]=i.useState(null),[j,D]=i.useState(null),[U,f]=i.useState(null),[M,B]=i.useState(null);i.useEffect(()=>{n&&C()},[n]),i.useEffect(()=>{!n||o!=="usage"||R(h)},[o,n,h]);const z=i.useMemo(()=>{const P=(b==null?void 0:b.users)??[];return P.find(Q=>Q.user.userId===E)??P[0]??null},[E,b]);async function C(){D("load-users"),B(null);try{const P=await Tl();w(P.items)}catch(P){B(os(P,"settings.userManagementLoadFailed"))}finally{D(null)}}async function R(P){D("load-usage"),B(null);try{const Q=await Al(P);S(Q),V(ne=>{var ue;return ne&&Q.users.some(G=>G.user.userId===ne)?ne:((ue=Q.users[0])==null?void 0:ue.user.userId)??null})}catch(Q){B(os(Q,"settings.userManagementUsageLoadFailed"))}finally{D(null)}}function J(){F("create"),u(null),c(qs),d(null),f(null),B(null)}function ee(P){F("edit"),u(P.userId),c({username:P.username,password:""}),d(null),f(null),B(null)}function ie(){F(null),u(null),c(qs)}async function _(){D("save-user"),f(null),B(null);try{L==="create"?(await kl({username:N.username,password:N.password}),f(s("settings.userManagementCreateSuccess"))):L==="edit"&&O&&(await Cl(O,{username:N.username,password:N.password.trim().length>0?N.password:void 0}),f(s("settings.userManagementUpdateSuccess"))),ie(),await C(),o==="usage"&&await R(h)}catch(P){B(os(P,"settings.userManagementSaveFailed"))}finally{D(null)}}async function I(P){const Q=P.status==="active"?"disabled":"active";D("status-user"),f(null),B(null);try{await Dl(P.userId,Q),f(Q==="active"?s("settings.userManagementEnableSuccess"):s("settings.userManagementDisableSuccess")),await C(),o==="usage"&&await R(h)}catch(ne){B(os(ne,"settings.userManagementStatusFailed"))}finally{D(null)}}async function $(){if(y){D("delete-user"),f(null),B(null);try{await Ml(y),d(null),f(s("settings.userManagementDeleteSuccess")),await C(),o==="usage"&&await R(h)}catch(P){B(os(P,"settings.userManagementDeleteFailed"))}finally{D(null)}}}function k(){j==="save-user"||j==="delete-user"||(r(!1),F(null),u(null),d(null),f(null),B(null))}const p=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:p,type:"button",onClick:()=>r(!0),children:s("settings.userManagementOpenAction")})}),a?e.jsx(Me,{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:k,children:W()}):e.jsx(Ce,{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:k,children:W()})]});function W(){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:()=>m("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:()=>m("usage"),children:s("settings.userManagementUsageTab")})]}),U?e.jsx("p",{className:"settings-release-status",children:U}):null,M?e.jsx("p",{className:"settings-release-status","data-tone":"error",children:M}):null,o==="users"?me():X()]})}function me(){const P=j==="load-users"&&v.length===0;return e.jsxs("div",{className:"settings-user-management-panel",role:"tabpanel",children:[e.jsx(Y,{heading:s("settings.userManagementUsersTitle"),description:s("settings.userManagementUsersDescription"),actions:e.jsx("button",{className:"settings-button",type:"button",onClick:J,children:s("settings.userManagementAddUser")}),children:P?e.jsx(re,{title:s("common.loading"),description:s("settings.userManagementLoading")}):v.length===0?e.jsx(re,{title:s("settings.userManagementUsersEmptyTitle"),description:s("settings.userManagementUsersEmptyDescription")}):e.jsx(fe,{className:"settings-user-list",children:v.map(Q=>e.jsx(be,{label:Q.username,description:s("settings.userManagementUserMeta",{createdAt:Ll(Q.createdAt)}),trailing:e.jsxs("div",{className:"settings-user-row-actions",children:[e.jsx(ce,{tone:Q.status==="active"?"success":"warning",children:Q.status==="active"?s("settings.userManagementStatusActive"):s("settings.userManagementStatusDisabled")}),e.jsx("button",{className:"settings-button",type:"button",onClick:()=>ee(Q),children:s("settings.userManagementEditUser")}),e.jsx("button",{className:"settings-button",type:"button",onClick:()=>void I(Q),children:Q.status==="active"?s("settings.userManagementDisableUser"):s("settings.userManagementEnableUser")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",onClick:()=>d(Q.userId),children:s("settings.userManagementDeleteUser")})]})},Q.userId))})}),L?H():null,y?oe():null]})}function H(){const P=j==="save-user",Q=L==="create"?s("settings.userManagementAddUser"):s("settings.userManagementEditUser"),ne=L==="create"?s("settings.userManagementAddDescription"):s("settings.userManagementEditDescription");return e.jsx(Y,{heading:Q,description:ne,className:"settings-user-form-section",children:e.jsxs("div",{className:"settings-user-form",children:[e.jsx(te,{label:s("settings.userManagementUsernameLabel"),children:e.jsx("input",{className:"settings-text-input",value:N.username,autoComplete:"off",onChange:ue=>c(G=>({...G,username:ue.target.value}))})}),e.jsx(te,{label:s("settings.userManagementPasswordLabel"),description:L==="edit"?s("settings.userManagementPasswordEditHint"):void 0,children:e.jsx("input",{className:"settings-text-input",type:"password",value:N.password,autoComplete:"new-password",onChange:ue=>c(G=>({...G,password:ue.target.value}))})}),e.jsxs(de,{children:[e.jsx("button",{className:"settings-button",type:"button",onClick:ie,disabled:P,children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",onClick:()=>void _(),disabled:P,children:P?s("common.loading"):s("common.save")})]})]})})}function oe(){const P=v.find(ne=>ne.userId===y),Q=j==="delete-user";return e.jsx(Y,{tone:"danger",heading:s("settings.userManagementDeleteConfirmTitle"),description:s("settings.userManagementDeleteConfirmDescription",{username:(P==null?void 0:P.username)??s("common.unknown")}),children:e.jsxs(de,{children:[e.jsx("button",{className:"settings-button",type:"button",disabled:Q,onClick:()=>d(null),children:s("common.cancel")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:Q,onClick:()=>void $(),children:Q?s("common.loading"):s("settings.userManagementDeleteUser")})]})})}function X(){const P=(b==null?void 0:b.users)??[],Q=j==="load-usage"&&!b;return e.jsx("div",{className:"settings-user-management-panel",role:"tabpanel",children:e.jsx(Y,{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(ne=>e.jsx("button",{type:"button",className:"settings-user-period-tab","data-active":h===ne?"true":void 0,onClick:()=>T(ne),children:El(ne)},ne))}),children:Q?e.jsx(re,{title:s("common.loading"),description:s("settings.userManagementUsageLoading")}):P.length===0?e.jsx(re,{title:s("settings.userManagementUsageEmptyTitle"),description:s("settings.userManagementUsageEmptyDescription")}):e.jsxs("div",{className:"settings-user-usage-layout",children:[e.jsx(fe,{className:"settings-user-usage-users",children:P.map(ne=>e.jsx(be,{as:"button",selected:(z==null?void 0:z.user.userId)===ne.user.userId,label:ne.user.username,description:s("settings.userManagementSessionCount",{count:ne.sessionCount}),trailing:e.jsx(ce,{tone:ne.user.status==="active"?"success":"warning",children:ne.user.status==="active"?s("settings.userManagementStatusActive"):s("settings.userManagementStatusDisabled")}),onClick:()=>V(ne.user.userId)},ne.user.userId))}),z?xe(z):null]})})})}function xe(P){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(P.sessionCount)}),e.jsx(js,{label:s("settings.userManagementMetricTotalTokens"),value:es(P.tokenTotals.totalTokens)}),e.jsx(js,{label:s("settings.userManagementMetricInputTokens"),value:es(P.tokenTotals.inputTokens)}),e.jsx(js,{label:s("settings.userManagementMetricOutputTokens"),value:es(P.tokenTotals.outputTokens)})]}),P.tokenUsageAvailable?null:e.jsx("p",{className:"settings-user-token-note",children:s("settings.userManagementTokenUnavailable")}),e.jsx(Pl,{userUsage:P}),e.jsxs("div",{className:"settings-user-usage-groups",children:[e.jsx(Ws,{title:s("settings.userManagementModelUsage"),items:P.modelUsage}),e.jsx(Ws,{title:s("settings.userManagementCliProviderUsage"),items:P.cliProviderUsage}),e.jsx(Ws,{title:s("settings.userManagementModelProviderUsage"),items:P.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 Pl({userUsage:t}){const a=Math.max(1,...t.timeline.map(n=>n.totalTokens));return t.timeline.length===0?e.jsx(re,{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 Ws({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 El(t){return t==="week"?s("settings.userManagementPeriodWeek"):t==="month"?s("settings.userManagementPeriodMonth"):s("settings.userManagementPeriodDay")}function Ll(t){const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function es(t){return new Intl.NumberFormat().format(t)}function os(t,a){return t instanceof Fe?t.message||s(a):t instanceof Error?t.message:s(a)}const Il=1500,Et=2e3,Ol=2500;function Sn(){const t=ts(),[a,n]=i.useState(!1),[r,o]=i.useState(!1),[m,v]=i.useState(!1),[w,b]=i.useState(!1),[S,h]=i.useState(!1),[T,E]=i.useState(null),[V,L]=i.useState(null),[F,O]=i.useState(null),[u,N]=i.useState(null),c=(F==null?void 0:F.packages[0])??null,y=m||!!((u==null?void 0:u.status)==="succeeded"&&u.restartScheduled);i.useEffect(()=>{let U=!1;return Qt().then(f=>{U||L(f)}),()=>{U=!0}},[]),i.useEffect(()=>{if(!u||!vs(u.status))return;let U=!1;const f=window.setTimeout(async()=>{var M;try{const B=await Yt(u.taskId);if(U)return;if(N(B),E(st(B)),!vs(B.status)){if(o(!1),B.status==="succeeded"&&B.restartScheduled){v(!0),t.bridge.showNotification(s("settings.serverRestarting"),s("settings.serverInstallWarning"));return}const z=await Ms();if(U)return;O(z),N(((M=z.packages[0])==null?void 0:M.installTask)??B),E($s(z.packages[0]??null,B)),B.restartRequired&&await t.bridge.showNotification(s("settings.serverRestartRequired"),B.targetVersion??"-")}}catch(B){if(U)return;o(!1),E(B instanceof Error?B.message:s("settings.serverInstallFailed"))}},Il);return()=>{U=!0,window.clearTimeout(f)}},[t.bridge,u]),i.useEffect(()=>{if(!m||!u||u.status!=="succeeded"||!u.restartScheduled)return;let U=!1,f=0;const M=async()=>{try{const B=await Ms();if(U)return;const z=B.packages[0]??null;if(!Bl(u,z)){f=window.setTimeout(M,Et);return}v(!1),O(B),N((z==null?void 0:z.installTask)??null),E($s(z,(z==null?void 0:z.installTask)??null))}catch{if(U)return;E(s("settings.serverRestarting")),f=window.setTimeout(M,Et)}};return E(s("settings.serverRestarting")),f=window.setTimeout(M,Math.max(u.restartDelayMs??0,Ol)),()=>{U=!0,window.clearTimeout(f)}},[m,u]);async function d(){n(!0),E(null);try{const U=await Ms(),f=U.packages[0]??null;O(U),N((f==null?void 0:f.installTask)??null),E($s(f,(f==null?void 0:f.installTask)??null)),f!=null&&f.hasUpdate&&await t.bridge.showNotification(s("settings.serverUpdateReady"),`${s("settings.serverTargetVersion")}: ${f.latestVersion??"-"}`)}catch(U){E(U instanceof Error?U.message:s("settings.serverCheckFailed"))}finally{n(!1)}}async function j(){if(c!=null&&c.packageName){b(!1),v(!1),o(!0),E(null);try{const U=await Zt(c.packageName);N(U),E(st(U))}catch(U){o(!1),E(U instanceof Error?U.message:s("settings.serverInstallFailed"))}}}const D=!!(c&&c.checkStatus!=="check_failed"&&c.hasUpdate&&!c.restartRequired&&!vs(u==null?void 0:u.status)&&!y);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:(c==null?void 0:c.currentVersion)??V??"-"})]}),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:(c==null?void 0:c.latestVersion)??"-"})]})]}),c!=null&&c.hasUpdate&&!y?e.jsx("p",{className:"settings-update-note","data-tone":"warning",children:s("settings.serverInstallWarning")}):null,vs(u==null?void 0:u.status)||y?e.jsx(Ul,{task:u,restarting:y}):null,T?e.jsx("p",{className:"settings-update-status","data-tone":Fl(c,u,y),children:T}):null,e.jsxs("div",{className:"settings-update-actions",children:[c!=null&&c.latestNotes?e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>h(!0),children:s("settings.releaseNotesView")}):null,e.jsx("button",{className:"secondary-button",type:"button",disabled:a||r||y,onClick:d,children:a?s("common.loading"):s("settings.serverCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!D||a||r||y,onClick:()=>b(!0),children:r?s("common.loading"):s("settings.serverInstallNow")})]})]}),e.jsx(Vl,{open:w,busy:r,mobile:t.isMobile,targetVersion:(c==null?void 0:c.latestVersion)??null,onClose:()=>b(!1),onConfirm:()=>{j()}}),e.jsx(lt,{open:S,mobile:t.isMobile,summary:c?Za(c):null,onClose:()=>h(!1)})]})}function Ul({task:t,restarting:a}){const n=Rl(t,a);return e.jsxs("div",{className:"settings-update-progress",role:"status","aria-label":s("settings.serverProgressLabel"),children:[e.jsx("div",{className:"settings-update-progress-track",children:e.jsx("span",{className:"settings-update-progress-bar",style:{width:`${n.percent}%`}})}),e.jsx("span",{className:"settings-update-progress-text",children:s("settings.serverProgressCurrentStage",{stage:n.label})}),e.jsx("span",{className:"settings-update-progress-hint",children:s("settings.serverProgressHint")})]})}function Rl(t,a){return a?{label:s("settings.serverProgressRestarting"),percent:90}:(t==null?void 0:t.status)==="queued"?{label:s("settings.serverProgressQueued"),percent:20}:(t==null?void 0:t.status)==="running"?{label:s("settings.serverProgressInstalling"),percent:65}:{label:s("settings.serverProgressPreparing"),percent:10}}function $s(t,a){return a?st(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 st(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 Fl(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 Bl(t,a){return a?t.targetVersion?Lt(a.currentVersion)===Lt(t.targetVersion):!a.hasUpdate:!1}function Lt(t){return(t??"").trim().replace(/^v/i,"")}function Vl({open:t,busy:a,mobile:n,targetVersion:r,onClose:o,onConfirm:m}){const v=e.jsxs(de,{children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:a,onClick:o,children:s("common.cancel")}),e.jsx("button",{type:"button",className:"primary-button",disabled:a,onClick:m,children:a?s("common.loading"):s("settings.serverInstallConfirmAction")})]}),w=e.jsxs(Y,{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(Me,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),height:"auto",kind:"form",dismissible:!a,footer:v,onClose:o,children:w}):e.jsx(Ce,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),size:"compact",layout:"confirm",bodyClassName:"settings-update-confirm-body",dismissible:!a,footer:v,onClose:o,children:w})}function wn({open:t,mobile:a,onClose:n,onConfirm:r}){const[o,m]=i.useState(!1);function v(){m(!1),n()}function w(){m(!1),r()}const b=e.jsxs(e.Fragment,{children:[e.jsxs(Y,{tone:"danger",className:"settings-beta-warning-section",children:[e.jsx("p",{className:"settings-beta-warning-description",children:s("settings.betaChannelConsentDescription")}),e.jsxs("ul",{className:"settings-beta-warning-risks",children:[e.jsx("li",{children:s("settings.betaChannelConsentRisk1")}),e.jsx("li",{children:s("settings.betaChannelConsentRisk2")})]})]}),e.jsx(Y,{tone:"accent",className:"settings-beta-consent-section",children:e.jsxs("label",{className:"settings-beta-consent-checkbox-label",children:[e.jsx("input",{type:"checkbox",className:"settings-beta-consent-checkbox",checked:o,onChange:S=>m(S.target.checked)}),e.jsx("span",{children:s("settings.betaChannelConsentCheckbox")})]})}),e.jsxs(de,{children:[e.jsx("button",{type:"button",className:"secondary-button",onClick:v,children:s("common.cancel")}),e.jsx("button",{type:"button",className:"primary-button settings-beta-consent-confirm-button",disabled:!o,onClick:w,children:s("settings.betaChannelConsentConfirm")})]})]});return a?e.jsx(Me,{open:t,title:s("settings.betaChannelConsentTitle"),kind:"form",height:"auto",onClose:v,children:b}):e.jsx(Ce,{open:t,title:s("settings.betaChannelConsentTitle"),size:"compact",layout:"confirm",onClose:v,children:b})}async function _l(){return await Z.request("/api/system/relay-tunnel/status")}async function zs(t){return await Z.request("/api/system/relay-tunnel/config",{method:"PUT",body:JSON.stringify(t)})}async function Hl(t){return await Z.request("/api/system/relay-tunnel/control/login",{method:"POST",body:JSON.stringify(t)})}async function ql(){return await Z.request("/api/system/relay-tunnel/control/logout",{method:"POST"})}async function Wl(t){const a=t.hostLabel.trim(),n=`/api/system/relay-tunnel/control/host-label-availability?hostLabel=${encodeURIComponent(a)}`;return await Z.request(n)}async function $l(t){return await Z.request("/api/system/relay-tunnel/control/bind",{method:"POST",body:JSON.stringify(t)})}async function zl(){return await Z.request("/api/system/relay-tunnel/control/wallet")}async function It(){return await Z.request("/api/system/relay-tunnel/enable",{method:"POST"})}async function Kl(){return await Z.request("/api/system/relay-tunnel/disable",{method:"POST"})}async function Gl(){return await Z.request("/api/system/relay-tunnel/unbind",{method:"POST"})}function Jl(){const t=hs(),{showToast:a}=at(),[n,r]=i.useState(null),[o,m]=i.useState(""),[v,w]=i.useState(()=>gt()),[b,S]=i.useState(()=>zn()),[h,T]=i.useState(""),[E,V]=i.useState(""),[L,F]=i.useState(null),[O,u]=i.useState({status:"idle"}),[N,c]=i.useState(!0),[y,d]=i.useState(null),[j,D]=i.useState(null),[U,f]=i.useState(null),[M,B]=i.useState(null),[z,C]=i.useState(null),R=i.useRef(!0),J=ks(n==null?void 0:n.controlBaseUrl),ee=Kn(v),ie=ee??J,_=ks(ee??(n==null?void 0:n.controlBaseUrl)),I=o.trim(),$=ee!==null&&ee!==J,k=(n==null?void 0:n.activated)??!1,p=h.trim().length>0&&E.trim().length>0,W=!!(n!=null&&n.controlAccountEmail),me=n!=null&&n.bindingId?!0:O.status==="available"&&O.hostLabel===I,H=!!(n!=null&&n.bindingId)||W&&I.length>0&&me,oe=Ot({controlBaseUrl:_,tunnelDomain:n==null?void 0:n.tunnelDomain,hostLabel:o}),X=!!(n!=null&&n.controlAccountEmail||n!=null&&n.bindingId),xe=!!(n!=null&&n.bindingId||me),P=!!(n!=null&&n.enabled&&(n!=null&&n.bindingId)),Q=!!(n!=null&&n.bindingId)||H,ne=L?cs(L.grantedBytes):s("settings.tailscaleUnavailable"),ue=cs(L?L.usedBytes:n==null?void 0:n.trafficUsedBytes),G=cs(L?L.remainingBytes:n==null?void 0:n.trafficRemainingBytes),pe=nt(Re.getState()),ye=ga(),Ae=ye?s(ma(ye.kind)):null,je=ye?Zl(ye):null;i.useEffect(()=>(R.current=!0,Ee(!1),()=>{R.current=!1}),[]),i.useEffect(()=>{if(!k)return;const l=window.setInterval(()=>{Ee(!0)},5e3);return()=>{window.clearInterval(l)}},[k]),i.useEffect(()=>{!k||!W||Pe()},[k,W]),i.useEffect(()=>{n!=null&&n.bindingId||O.status!=="idle"&&O.hostLabel!==I&&u({status:"idle"})},[O,I,n==null?void 0:n.bindingId]),i.useEffect(()=>{w(J)},[J]);async function Ee(l,q){l||c(!0);try{const le=await _l();if(!R.current)return;ve(le,q),D(null)}catch(le){R.current&&D(Qs(le,"status",pe))}finally{R.current&&!l&&c(!1)}}function ve(l,q){r(l),C(null),l.controlAccountEmail||F(null),l.tunnelDomain&&o.trim().length===0&&m(Tn(l.tunnelDomain)),((q==null?void 0:q.syncProfile)??!0)&&ze(l)}async function Pe(){try{const l=await zl();if(!R.current)return;F(l.wallet)}catch(l){R.current&&C(He(l))}}async function Ze(){if(p){d("login-control"),C(null);try{const l=await Hl({email:h.trim(),password:E});B(null),ve(l),await Pe()}catch(l){B(Qs(l,"login",pe))}finally{d(null)}}}async function Be(){d("logout-control"),C(null);try{const l=await ql();ve(l),F(null),u({status:"idle"})}catch(l){C(He(l))}finally{d(null)}}async function Ye(){if(!I)throw new Error(s("settings.relayTunnelHostLabelRequired"));if(O.status==="available"&&O.hostLabel===I)return{hostLabel:O.hostLabel,tunnelDomain:O.tunnelDomain,available:!0,reason:"available"};u({status:"checking",hostLabel:I});const l=await Wl({hostLabel:I});if(!l.available||!l.tunnelDomain){const q=Yl(l);throw u({status:"error",hostLabel:I,message:q}),new Error(q)}return u({status:"available",hostLabel:I,tunnelDomain:l.tunnelDomain}),l}async function Ie(){if(!(!X||n!=null&&n.bindingId)){d("check-host-label"),C(null);try{await Ye()}catch{}finally{d(null)}}}async function Se(){d("learn-service"),C(null);try{await Zs(t.bridge.openExternal,_)}catch(l){C(He(l))}finally{d(null)}}async function se(){d("manage-account"),C(null);try{await Zs(t.bridge.openExternal,_)}catch(l){C(He(l))}finally{d(null)}}async function Oe(){if(oe)try{await er(oe,t),a({title:s("settings.relayTunnelAccessUrlCopied"),tone:"success"})}catch(l){a({title:l instanceof Error?l.message:s("settings.relayTunnelCopyAccessUrlFailed"),tone:"error"})}}async function Ve(){if(oe)try{await Zs(t.bridge.openExternal,oe)}catch(l){a({title:l instanceof Error?l.message:s("settings.relayTunnelOpenAccessUrlFailed"),tone:"error"})}}async function Te(){if(H){d("enable"),C(null);try{let l=n;if(l!=null&&l.activated||(l=await zs({activated:!0,controlBaseUrl:ie}),ve(l)),l!=null&&l.bindingId||(await Ye(),l=await $l({hostLabel:I}),ve(l),await Pe()),!(l!=null&&l.enabled)){const q=await It();ve(q)}}catch(l){C(He(l))}finally{d(null)}}}async function We(){if(n!=null&&n.bindingId){d("reconnect"),C(null);try{n!=null&&n.enabled&&await Kl();const l=await It();ve(l),l.controlAccountEmail&&await Pe()}catch(l){const q=He(l);await Ee(!0,{syncProfile:!1}),C(q)}finally{d(null)}}}async function $e(){d("disconnect-device"),C(null);try{if(n!=null&&n.bindingId||n!=null&&n.accountId){const l=await Gl();ve(l)}if(n!=null&&n.activated){const l=await zs({activated:!1});ve(l)}F(null),T(""),m(""),V(""),u({status:"idle"})}catch(l){C(He(l))}finally{d(null)}}async function we(){if(!ee){f(s("settings.serverInvalid"));return}d("save-config"),f(null);try{const l=await zs({controlBaseUrl:ee});f(null),ve(l)}catch(l){f(Qs(l,"config",pe))}finally{d(null)}}return e.jsxs("div",{className:"settings-relay-tunnel-panel",children:[N&&!n?e.jsx(Y,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),children:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")})}):null,!N&&!P?e.jsxs(Y,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),actions:e.jsx("button",{className:"secondary-button",disabled:y!==null,type:"button",onClick:()=>void Se(),children:s("settings.relayTunnelLearnService")}),children:[j?e.jsx(Ks,{title:s("settings.relayTunnelStatusErrorTitle"),message:j,action:e.jsx("button",{className:"secondary-button",disabled:N||y!==null,type:"button",onClick:()=>void Ee(!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":Gs(X,!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(ce,{className:"settings-relay-tunnel-step-tag",children:s(Js(X,!0))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:X?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(de,{align:"start",children:e.jsx("button",{className:"secondary-button",disabled:y!==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(te,{label:s("settings.relayTunnelAccountEmail"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountEmail"),className:"settings-text-input",type:"email",value:h,onChange:l=>{T(l.target.value),B(null)},placeholder:s("settings.relayTunnelAccountEmailPlaceholder")})}),e.jsx(te,{label:s("settings.relayTunnelAccountPassword"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountPassword"),className:"settings-text-input",type:"password",value:E,onChange:l=>{V(l.target.value),B(null)},placeholder:s("settings.relayTunnelAccountPasswordPlaceholder")})}),M?e.jsx(Ks,{title:s("settings.relayTunnelLoginErrorTitle"),message:M}):null,e.jsxs(de,{align:"start",children:[e.jsx("button",{className:"settings-button",disabled:y!==null||!p,type:"button",onClick:()=>void Ze(),children:y==="login-control"?s("common.loading"):s("settings.relayTunnelLoginAccount")}),e.jsx("button",{className:"secondary-button",disabled:y!==null,type:"button",onClick:()=>{S(l=>!l),f(null)},children:b?s("settings.relayTunnelAdvancedSettingsHide"):s("settings.relayTunnelAdvancedSettings")})]}),b?e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[e.jsx(te,{label:s("settings.relayTunnelControlBaseUrl"),description:s("settings.relayTunnelServerAddressHint"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelControlBaseUrl"),className:"settings-text-input",type:"url",value:v,onChange:l=>{w(l.target.value),f(null)},placeholder:gt()})}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelAdvancedSettingsDescription")}),U?e.jsx(Ks,{title:s("settings.relayTunnelConfigErrorTitle"),message:U}):null,e.jsx(de,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:N||y!==null||!$,type:"button",onClick:()=>void we(),children:y==="save-config"?s("common.loading"):s("common.save")})})]}):null]})})})]}),e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":Gs(xe,X),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(ce,{className:"settings-relay-tunnel-step-tag",children:s(Js(xe,X))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:X?n!=null&&n.bindingId?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:oe??n.tunnelDomain??s("settings.relayTunnelUnbound")})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-relay-tunnel-domain-row",children:[e.jsx("input",{"aria-label":s("settings.relayTunnelHostLabel"),className:"settings-text-input settings-relay-tunnel-domain-prefix",value:o,onChange:l=>m(l.target.value),placeholder:s("settings.relayTunnelHostLabelPlaceholder")}),e.jsx("span",{className:"settings-relay-tunnel-domain-suffix",children:s("settings.relayTunnelHostLabelSuffix")}),e.jsx("button",{className:"settings-button settings-relay-tunnel-domain-check",disabled:y!==null||I.length===0,type:"button",onClick:()=>void Ie(),children:y==="check-host-label"?s("common.loading"):s("settings.relayTunnelHostLabelCheck")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[O.status==="available"&&O.hostLabel===I?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:Ot({controlBaseUrl:ie,tunnelDomain:O.tunnelDomain,hostLabel:O.hostLabel})??O.tunnelDomain})}):null,O.status==="checking"&&O.hostLabel===I?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelHostLabelChecking")}):null,O.status==="error"&&O.hostLabel===I?e.jsx("p",{className:"settings-relay-tunnel-error",children:O.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":Gs(P,xe),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(ce,{className:"settings-relay-tunnel-step-tag",children:s(Js(P,xe))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:xe?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:k?s("settings.relayTunnelStepStartReady"):s("settings.relayTunnelActivationHint")}),e.jsx(de,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:y!==null||!Q,type:"button",onClick:()=>void Te(),children:y==="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:[ye&&Ae&&je?e.jsx(Ql,{hint:je,label:Ae,url:ye.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,z?e.jsx("p",{className:"settings-relay-tunnel-error",children:z}):null]})]}):null,!N&&P?e.jsxs(Y,{heading:s("settings.relayTunnelReadyTitle"),description:s("settings.relayTunnelReadyDescription"),children:[e.jsxs(fe,{compact:!0,children:[ye&&Ae?e.jsxs(e.Fragment,{children:[e.jsx(qe,{label:s("settings.relayTunnelClientRouteLabel"),value:Ae}),e.jsx(qe,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:ye.url})]}):null,e.jsx(qe,{className:"settings-relay-tunnel-summary-line-access-url",label:s("settings.relayTunnelAccessUrlLabel"),trailing:oe?e.jsxs("div",{className:"settings-relay-tunnel-access-url",children:[e.jsx("span",{className:"settings-relay-tunnel-access-url-text",title:oe,children:oe}),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 Ve(),children:s("settings.relayTunnelOpenAccessUrl")})]})]}):e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:s("settings.relayTunnelUnbound")})}),e.jsx(qe,{label:s("settings.relayTunnelTrafficGranted"),value:ne}),e.jsx(qe,{label:s("settings.relayTunnelTrafficUsed"),value:ue}),e.jsx(qe,{label:s("settings.relayTunnelTrafficRemaining"),value:G})]}),e.jsxs(de,{align:"start",className:"settings-relay-tunnel-ready-actions",children:[e.jsx("button",{className:"secondary-button",disabled:y!==null||!(n!=null&&n.bindingId),type:"button",onClick:()=>void We(),children:y==="reconnect"?s("common.loading"):s("settings.relayTunnelReconnectAction")}),e.jsx("button",{className:"secondary-button",disabled:y!==null,type:"button",onClick:()=>void se(),children:y==="manage-account"?s("common.loading"):s("settings.relayTunnelManageAccountAction")}),e.jsx("button",{className:"settings-button settings-button-danger",disabled:y!==null,type:"button",onClick:()=>void $e(),children:y==="disconnect-device"?s("common.loading"):s("settings.relayTunnelDisconnectDeviceAction")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[ye&&Ae&&je?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:je}):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,z?e.jsx("p",{className:"settings-relay-tunnel-error",children:z}):null]})]}):null]});function ze(l){const q=Re.getState(),le=Gn(q);if(!le)return;const _e=Le(l);sr(le.relayTunnel??null,_e)||Re.update({hosts:q.hosts.map(ns=>ns.id===le.id?{...ns,relayTunnel:_e,updatedAt:new Date().toISOString()}:ns)})}function Le(l){return!(l!=null&&l.bindingId)||!l.tunnelDomain?null:{provider:"codingns_relay",enabled:l.enabled,tunnelDomain:l.tunnelDomain.trim().toLowerCase(),controlBaseUrl:ks(l.controlBaseUrl),bindingId:l.bindingId,hostFingerprint:l.hostFingerprint,candidateEndpoints:l.candidateEndpoints}}}function Ql({label:t,url:a,hint:n}){return e.jsxs(e.Fragment,{children:[e.jsxs(fe,{compact:!0,children:[e.jsx(qe,{label:s("settings.relayTunnelClientRouteLabel"),value:t}),e.jsx(qe,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:a})]}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:n})]})}function qe({label:t,value:a,trailing:n,className:r}){return e.jsx(be,{className:r,label:t,trailing:n??e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:a})})}function Zl(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 Ks({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 Gs(t,a){return t?"done":a?"current":"pending"}function Js(t,a){return t?"settings.relayTunnelStepDone":a?"settings.relayTunnelStepCurrent":"settings.relayTunnelStepPending"}function Yl(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 Qs(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 cs(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 Tn(t){return t?t.split(".")[0]||s("common.unknown"):s("common.unknown")}function Ot(t){var r,o,m,v;const a=Ut(t.hostLabel)??Ut(Tn(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((m=t.tunnelDomain)==null?void 0:m.trim())??null;try{const w=new URL(n);return w.hostname=`${a}.${w.hostname}`,w.pathname="/",w.search="",w.hash="",w.origin}catch{return((v=t.tunnelDomain)==null?void 0:v.trim())??null}}function Ut(t){const a=(t==null?void 0:t.trim().toLowerCase())??"";return!a||a===s("common.unknown").toLowerCase()?null:a}async function Zs(t,a){!(await t(a)).ok&&typeof window<"u"&&window.open(a,"_blank","noopener,noreferrer")}function Xl(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 er(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(!Xl(t))throw new Error(s("settings.relayTunnelCopyAccessUrlFailed"))}function sr(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 Rt(){return await Z.request("/api/system/tailscale/status")}async function Ft(t){return await Z.request("/api/system/tailscale/config",{method:"PUT",body:JSON.stringify(t)})}async function tr(){return await Z.request("/api/system/tailscale/enable",{method:"POST"})}async function nr(){return await Z.request("/api/system/tailscale/disable",{method:"POST"})}async function ar(){return await Z.request("/api/system/tailscale/login",{method:"POST"})}async function ir(){return await Z.request("/api/system/tailscale/logout",{method:"POST"})}function lr({children:t}){return e.jsx("div",{className:"settings-remote-access-metrics",children:t})}function Ns({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 rr({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 or({configMode:t="modal"}){const a=hs(),[n,r]=i.useState(null),[o,m]=i.useState(""),[v,w]=i.useState(""),[b,S]=i.useState(!0),[h,T]=i.useState(null),[E,V]=i.useState(null),[L,F]=i.useState(!1),[O,u]=i.useState(!1),N=i.useRef(!0),c=i.useRef(!1),y=i.useRef(async()=>{}),d=t==="inline",j=(n==null?void 0:n.activated)??!1;c.current=O;function D(I){if(r(I),m(I.controlServerUrl??""),w(I.hostname??""),V(null),!I.activated){u(!1),F(!1);return}c.current&&!_t(I.lastError)&&u(!1)}y.current=async I=>{I||S(!0);try{const $=await Rt();if(!N.current)return;D($)}catch($){if(!N.current)return;V(ds($))}finally{N.current&&!I&&S(!1)}},i.useEffect(()=>(N.current=!0,y.current(!1),()=>{N.current=!1}),[]),i.useEffect(()=>{if(!j)return;const I=window.setInterval(()=>{y.current(!0)},5e3);return()=>{window.clearInterval(I)}},[j]),i.useEffect(()=>{if(!O||!j)return;function I(){y.current(!0)}function $(){document.visibilityState==="visible"&&y.current(!0)}return window.addEventListener("focus",I),document.addEventListener("visibilitychange",$),()=>{window.removeEventListener("focus",I),document.removeEventListener("visibilitychange",$)}},[j,O]);const U=((n==null?void 0:n.controlServerUrl)??"")!==o.trim()||((n==null?void 0:n.hostname)??"")!==v.trim(),f=j&&_t(n==null?void 0:n.lastError),M=j&&ur(a.ui.osFamily)&&f;async function B(){const I=await Ft({controlServerUrl:Vt(o),hostname:Vt(v)});return D(I),I}async function z(I){T("toggle-activation"),V(null);try{const $=await Ft({activated:I});D($)}catch($){V(ds($))}finally{T(null),S(!1)}}async function C(I){T(I),V(null);try{U&&I!=="disable"&&I!=="logout"&&await B();const $=I==="enable"?await tr():I==="disable"?await nr():I==="login"?await ar():await ir();D($)}catch($){V(ds($))}finally{T(null)}}async function R(){T("save"),V(null);try{await B(),F(!1)}catch(I){V(ds(I))}finally{T(null)}}async function J(){T("refresh"),V(null);try{const I=await Rt();D(I)}catch(I){V(ds(I))}finally{T(null),S(!1)}}async function ee(){const I=gr(a.ui.osFamily);if(I){T("install"),V(null);try{const $=await a.bridge.openExternal(I);if(!$.ok){V($.detail??s("settings.tailscaleInstallOpenFailed"));return}u(!0)}catch($){V($ instanceof Error?$.message:s("settings.tailscaleInstallOpenFailed"))}finally{T(null)}}}function ie(){h!=="save"&&F(!1)}const _=j?e.jsxs("span",{className:"settings-tailscale-status-indicator","data-tone":mr((n==null?void 0:n.phase)??"disabled"),children:[e.jsx("span",{className:"settings-tailscale-status-dot","aria-hidden":"true"}),dr((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(Y,{heading:s("settings.tailscaleSectionTitle"),description:s("settings.tailscaleSectionDescription"),actions:e.jsx(rr,{checked:j,label:s("settings.tailscaleMasterSwitchLabel"),disabled:h!==null,onChange:I=>{z(I)}}),children:b&&!n?e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[e.jsxs(lr,{children:[e.jsx(Ns,{label:s("settings.tailscaleStatusIndicator"),value:_}),e.jsx(Ns,{label:s("settings.tailscaleServerAddress"),value:j?(n==null?void 0:n.reachableBaseUrl)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(Ns,{label:s("settings.tailscaleAccountName"),value:j?(n==null?void 0:n.accountName)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(Ns,{label:s("settings.tailscaleIpAddress"),value:j?cr(n):s("settings.tailscaleUnavailable")})]}),j?null:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("settings.tailscaleActivationHint")}),j&&(n==null?void 0:n.phase)==="needs_login"&&n.loginUrl?e.jsx("p",{className:"settings-tailscale-login-url",children:e.jsx("a",{className:"settings-tailscale-link",href:n.loginUrl,rel:"noreferrer",target:"_blank",children:n.loginUrl})}):null,E||n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:E??(n==null?void 0:n.lastError)}):null,j?e.jsxs(de,{align:"start",children:[M?e.jsx("button",{className:"settings-button",type:"button",disabled:b||h!==null,onClick:()=>{ee()},children:h==="install"?s("common.loading"):s("settings.tailscaleInstallAction")}):null,d?null:e.jsx("button",{className:"secondary-button",type:"button",disabled:b||h!==null,onClick:()=>F(!0),children:s("settings.tailscaleConfigure")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||h!==null,onClick:()=>{J()},children:h==="refresh"?s("common.loading"):s("settings.tailscaleRefresh")}),n!=null&&n.enabled?e.jsx("button",{className:"secondary-button",type:"button",disabled:b||h!==null||f,onClick:()=>{C("disable")},children:h==="disable"?s("common.loading"):s("settings.tailscaleDisable")}):e.jsx("button",{className:"secondary-button",type:"button",disabled:b||h!==null||f,onClick:()=>{C("enable")},children:h==="enable"?s("common.loading"):s("settings.tailscaleEnable")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||h!==null||!(n!=null&&n.enabled)||f,onClick:()=>{C("login")},children:h==="login"?s("common.loading"):s("settings.tailscaleLogin")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||h!==null||!(n!=null&&n.enabled)||f,onClick:()=>{C("logout")},children:h==="logout"?s("common.loading"):s("settings.tailscaleLogout")})]}):null]})}),d&&j?e.jsx(Y,{heading:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),children:e.jsx(Bt,{controlServerUrlDraft:o,hostnameDraft:v,pendingAction:h,configDirty:U,onControlServerUrlChange:m,onHostnameChange:w,onSave:()=>{R()}})}):null]}),e.jsx(ms,{open:!d&&j&&L,title:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),size:"regular",onClose:ie,children:e.jsx(Bt,{controlServerUrlDraft:o,hostnameDraft:v,pendingAction:h,configDirty:U,footer:e.jsx("div",{className:"settings-tailscale-modal-actions",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:h==="save",onClick:ie,children:s("common.cancel")})}),onControlServerUrlChange:m,onHostnameChange:w,onSave:()=>{R()}})})]})}function Bt({controlServerUrlDraft:t,hostnameDraft:a,pendingAction:n,configDirty:r,footer:o,onControlServerUrlChange:m,onHostnameChange:v,onSave:w}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-form",children:[e.jsx(te,{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=>m(b.target.value)})}),e.jsx(te,{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=>v(b.target.value)})})]}),e.jsxs(de,{align:"start",className:"settings-tailscale-config-actions",children:[o,e.jsx("button",{className:"settings-button",type:"button",disabled:n!==null||!r,onClick:w,children:n==="save"?s("common.loading"):s("common.save")})]})]})}function Vt(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 cr(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 dr(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 _t(t){return t?t.includes("Tailscale CLI"):!1}function ur(t){return t==="macos"||t==="windows"}function gr(t){switch(t){case"macos":return"https://tailscale.com/download/mac";case"windows":return"https://tailscale.com/download/windows";default:return null}}function mr(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 kn({open:t,mobile:a,onClose:n}){const[r,o]=i.useState("tunnel"),m=i.useId(),v=[{id:"tunnel",label:s("settings.remoteAccessTunnelTab")},{id:"tailscale",label:s("settings.remoteAccessTailscaleTab")}],w=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.remoteAccessTabsLabel"),children:v.map(b=>{const S=`${m}-${b.id}-tab`,h=`${m}-${b.id}-panel`,T=r===b.id;return e.jsx("button",{id:S,type:"button",role:"tab",className:"settings-model-tab","data-active":T?"true":void 0,"aria-selected":T,"aria-controls":h,onClick:()=>o(b.id),children:b.label},b.id)})}),r==="tunnel"?e.jsx("div",{id:`${m}-tunnel-panel`,"aria-labelledby":`${m}-tunnel-tab`,role:"tabpanel",children:e.jsx(Jl,{})}):e.jsx("div",{id:`${m}-tailscale-panel`,"aria-labelledby":`${m}-tailscale-tab`,role:"tabpanel",children:e.jsx(or,{configMode:"inline"})})]});return a?e.jsx(Me,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:n,children:w}):e.jsx(ms,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),size:"wide",onClose:n,children:w})}function Cn({open:t,mobile:a,workspaceId:n,onClose:r}){var I,$;const o=it(),{showToast:m}=at(),[v,w]=i.useState([]),[b,S]=i.useState(""),[h,T]=i.useState(null),[E,V]=i.useState([]),[L,F]=i.useState([]),[O,u]=i.useState(!1),[N,c]=i.useState(!1),[y,d]=i.useState(!1),[j,D]=i.useState(!1),[U,f]=i.useState(null);async function M(k){u(!0);try{const W=(await Aa()).items;w(W);const me=hr(k??b,W);return S(me),me}catch(p){return m({title:p instanceof Error?p.message:s("plugins.listLoadFailed"),tone:"error"}),""}finally{u(!1)}}async function B(k){if(!k){T(null),V([]);return}c(!0);try{const[p,W]=await Promise.all([Pa(k),Ea(k)]);T(p),V(W.items)}catch(p){m({title:p instanceof Error?p.message:s("plugins.detailLoadFailed"),tone:"error"}),T(null),V([])}finally{c(!1)}}async function z(k){const p=(n==null?void 0:n.trim())??"";if(!k||!p){F([]);return}d(!0);try{const W=await La(k,p);F(W.items)}catch(W){m({title:W instanceof Error?W.message:s("plugins.permissionGrantLoadFailed"),tone:"error"}),F([])}finally{d(!1)}}i.useEffect(()=>{t&&M()},[t]),i.useEffect(()=>{t&&(B(b),z(b))},[t,b]);const C=i.useMemo(()=>(h==null?void 0:h.manifest.permissions.desktop)??[],[h]),R=!!(h!=null&&h.frontend&&(n!=null&&n.trim()));async function J(){if(!(!h||j)){D(!0);try{h.enablement.enabled?await Oa(h.definition.id,s("plugins.disabledByUserReason")):await Ua(h.definition.id);const k=await M(h.definition.id);await B(k||h.definition.id),m({title:h.enablement.enabled?s("plugins.disableSuccess"):s("plugins.enableSuccess"),tone:"success"})}catch(k){m({title:k instanceof Error?k.message:s("plugins.saveFailed"),tone:"error"})}finally{D(!1)}}}async function ee(k){const p=(n==null?void 0:n.trim())??"";if(!(!h||!p||U)){f(k.id);try{await Ia(h.definition.id,k.id,p),await Promise.all([B(h.definition.id),z(h.definition.id)]),m({title:s("plugins.revokeGrantSuccess"),tone:"success"})}catch(W){m({title:W instanceof Error?W.message:s("plugins.revokeGrantFailed"),tone:"error"})}finally{f(null)}}}function ie(){const k=(n==null?void 0:n.trim())??"";!(h!=null&&h.frontend)||!k||(o(Ma(k,h.definition.id)),r())}const _=e.jsxs("div",{className:"settings-plugin-manager-layout",children:[e.jsx(Y,{heading:s("settings.pluginManagementModalListTitle"),description:s("settings.pluginManagementModalListDescription"),className:"settings-plugin-modal-section",children:O?e.jsx("p",{className:"plugins-hint-text",children:s("plugins.loading")}):v.length===0?e.jsx(re,{title:s("plugins.emptyTitle"),description:s("plugins.emptyDescription"),compact:!0}):e.jsx(fe,{className:"settings-plugin-modal-list",children:v.map(k=>e.jsx(be,{as:"button",selected:b===k.id,label:k.name,description:`${k.id} · v${k.version}`,trailing:e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(ce,{tone:k.enabled?"success":"default",children:k.enabled?s("plugins.enabled"):s("plugins.disabled")}),k.hasFrontend?e.jsx(ce,{children:s("plugins.frontendTag")}):null,k.hasBackend?e.jsx(ce,{children:s("plugins.backendTag")}):null]}),onClick:()=>S(k.id)},k.id))})}),e.jsx(Y,{heading:s("settings.pluginManagementModalDetailTitle"),description:s("settings.pluginManagementModalDetailDescription"),className:"settings-plugin-modal-section settings-plugin-modal-detail-section",children:!b&&!O?e.jsx(re,{title:s("settings.pluginManagementSelectPluginTitle"),description:s("settings.pluginManagementSelectPluginDescription"),compact:!0}):N?e.jsx("p",{className:"plugins-hint-text",children:s("plugins.loading")}):h?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:h.manifest.name}),e.jsx("p",{children:h.manifest.description??h.definition.id})]}),e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(ce,{tone:h.enablement.enabled?"success":"default",children:h.enablement.enabled?s("plugins.enabled"):s("plugins.disabled")}),e.jsx(ce,{children:`v${h.manifest.version}`})]})]}),e.jsx(Y,{heading:s("plugins.summaryTitle"),description:s("plugins.summaryDescription"),children:e.jsxs(fe,{compact:!0,children:[e.jsx(be,{label:s("plugins.pluginIdLabel"),description:h.definition.id}),e.jsx(be,{label:s("plugins.installRootLabel"),description:h.definition.installRoot}),e.jsx(be,{label:s("plugins.runtimeLabel"),description:h.manifest.backend?`${s("plugins.backendTag")} · ${h.manifest.backend.mode??"on_demand"}`:s("plugins.frontendOnly")})]})}),e.jsx(Y,{heading:s("plugins.permissionTitle"),description:s("plugins.permissionDescription"),children:e.jsxs("div",{className:"settings-plugin-modal-tags",children:[e.jsx(ce,{tone:h.manifest.permissions.workspaceRead?"success":"default",children:h.manifest.permissions.workspaceRead?s("plugins.workspaceReadAllowed"):s("plugins.workspaceReadDenied")}),e.jsx(ce,{tone:h.manifest.permissions.network?"warning":"default",children:h.manifest.permissions.network?s("plugins.networkAllowed"):s("plugins.networkDenied")}),C.length>0?C.map(k=>e.jsx(ce,{children:k},k)):e.jsx(ce,{children:s("plugins.noDesktopPermission")})]})}),e.jsx(Ra,{grants:L,auditEvents:h.auditEvents,loading:y,revokingGrantId:U,onRevokeGrant:k=>{ee(k)}}),($=(I=h.manifest.backend)==null?void 0:I.actions)!=null&&$.length?e.jsx(Y,{heading:s("plugins.actionTitle"),description:s("plugins.actionDescription"),children:e.jsx(fe,{compact:!0,children:h.manifest.backend.actions.map(k=>e.jsx(be,{label:k.title,description:`${k.id} · ${k.timeoutMs??3e4}ms`},k.id))})}):null,e.jsx(Y,{heading:s("plugins.runHistoryTitle"),description:s("plugins.runHistoryDescription"),children:E.length===0?e.jsx(re,{title:s("plugins.runHistoryEmptyTitle"),description:s("plugins.runHistoryEmptyDescription"),compact:!0}):e.jsx(fe,{compact:!0,children:E.slice(0,10).map(k=>e.jsx(be,{label:k.actionId??s("plugins.unknownAction"),description:`${k.status} · ${k.createdAt}`,trailing:k.errorCode?e.jsx(ce,{tone:"danger",children:k.errorCode}):null},k.id))})}),R?null:e.jsx("p",{className:"settings-plugin-modal-workspace-note",children:s("settings.pluginManagementWorkspaceRequired")}),e.jsxs(de,{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:[h.frontend?e.jsx("button",{type:"button",className:"secondary-button",disabled:!R,onClick:ie,children:s("plugins.openPlugin")}):null,e.jsx("button",{type:"button",className:h.enablement.enabled?"secondary-button":"primary-button",disabled:j,onClick:()=>{J()},children:h.enablement.enabled?s("plugins.disableAction"):s("plugins.enableAction")})]})]})]}):e.jsx(re,{title:s("plugins.detailMissingTitle"),description:s("plugins.detailMissingDescription"),compact:!0})})]});return a?e.jsx(Me,{open:t,title:s("settings.pluginManagementModalTitle"),description:s("settings.pluginManagementModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:r,children:_}):e.jsx(Ce,{open:t,title:s("settings.pluginManagementModalTitle"),description:s("settings.pluginManagementModalDescription"),size:"xwide",layout:"list",bodyClassName:"settings-plugin-modal-body",onClose:r,children:_})}function hr(t,a){var n;return t&&a.some(r=>r.id===t)?t:((n=a[0])==null?void 0:n.id)??""}const Dn="secret://teable/main",pr=["manual","scheduled","event_driven"],Mn=["sessions","todos","tags"];function An({open:t,mobile:a,workspaceOptions:n=[],onClose:r}){var ut;const{showToast:o}=at(),[m,v]=i.useState("connection"),[w,b]=i.useState(null),[S,h]=i.useState(null),[T,E]=i.useState([]),[V,L]=i.useState({tags:[],sessions:[],todos:[]}),[F,O]=i.useState([]),[u,N]=i.useState({}),[c,y]=i.useState([]),[d,j]=i.useState([]),[D,U]=i.useState(!1),[f,M]=i.useState(!1),[B,z]=i.useState(!1),[C,R]=i.useState(!1),[J,ee]=i.useState(!1),[ie,_]=i.useState(null),[I,$]=i.useState(null),[k,p]=i.useState(Ht(null)),[W,me]=i.useState(Ys([])),[H,oe]=i.useState({tags:Xs("tags"),sessions:Xs("sessions"),todos:Xs("todos")}),[X,xe]=i.useState("sessions"),P=i.useRef(null),[Q,ne]=i.useState([]),[ue,G]=i.useState(null),[pe,ye]=i.useState(""),[Ae,je]=i.useState(!1),[Ee,ve]=i.useState([]),[Pe,Ze]=i.useState(!1),Be=i.useMemo(()=>{const g=new Set,x=[];return n.forEach(A=>{const ae=A.id.trim();!ae||g.has(ae)||(g.add(ae),x.push({id:ae,name:A.name.trim()||ae}))}),x},[n]),Ye=i.useMemo(()=>[{id:"connection",label:s("settings.teableTabConnectionSettings")},{id:"tableSync",label:s("settings.teableTabTableSyncSettings")},{id:"syncLogs",label:s("settings.teableTabSyncLogs")}],[]),Ie=i.useMemo(()=>xr(T,W),[T,W]),Se=i.useMemo(()=>{const g=new Set(Q);return Ie.filter(x=>g.has(x.tableId))},[Q,Ie]),se=i.useMemo(()=>Se.find(g=>g.tableId===ue)??Se[0]??null,[Se,ue]),Oe=H[X],Ve=W.find(g=>g.sourceType===X)??Ys([]).find(g=>g.sourceType===X),Te=V[X]??[],We=se?u[se.tableId]??[]:[],$e=(se==null?void 0:se.tableName)??"",we=i.useMemo(()=>Ie.filter(g=>!Q.includes(g.tableId)),[Q,Ie]),ze=i.useMemo(()=>c.map(g=>({key:g.id,tag:g})),[c]);i.useEffect(()=>{t&&(v("connection"),$(null),_(null),Le())},[t]),i.useEffect(()=>{p(Ht(w))},[w]),i.useEffect(()=>{me(Ys((S==null?void 0:S.syncConfigs)??[]))},[S==null?void 0:S.syncConfigs]),i.useEffect(()=>{oe(fr((S==null?void 0:S.syncConfigs)??[],F))},[S==null?void 0:S.syncConfigs,F]),i.useEffect(()=>{const g=W.map(x=>x.targetTableId.trim()).filter(Boolean);ne(x=>{const A=Array.from(new Set([...x,...g]));return yr(x,A)?x:A})},[W]),i.useEffect(()=>{var g;t&&(ue&&Se.some(x=>x.tableId===ue)||G(((g=Se[0])==null?void 0:g.tableId)??null))},[Se,t,ue]),i.useEffect(()=>{var g;pe&&we.some(x=>x.tableId===pe)||ye(((g=we[0])==null?void 0:g.tableId)??"")},[we,pe]),i.useEffect(()=>{const g=(se==null?void 0:se.tableId.trim())??"";!t||!g||u[g]||l(g)},[t,se,u]),i.useEffect(()=>{!se||P.current===se.tableId||(P.current=se.tableId,se.assignedSourceType&&xe(se.assignedSourceType))},[se]);async function Le(){U(!0);try{const[g,x,A,ae,K,ge]=await Promise.all([ha(),pa(),ht(),ba(),fa(),xa({includeDisabled:!0}).catch(()=>({items:[],summary:{totalActiveTags:0,totalDisabledTags:0,totalRuleEnabledTags:0,totalBoundDocuments:0},status:{recomputeState:"idle",lastRecomputedAt:null,lastError:null}}))]);b(g),h(x),E(A),O(ae.mappings),j(K),L(ae.sourceFieldsByType),y(ge.items.filter(Ne=>Ne.parentId===null)),$(null)}catch(g){$(Je(g))}finally{U(!1)}}async function l(g){try{const x=await ya(g);N(A=>({...A,[g]:x}))}catch(x){$(Je(x))}}function q(){$(null),_(null),je(!1),r()}async function le(){z(!0),$(null),_(null);try{const g=await Sa({baseUrl:k.baseUrl,spaceId:k.spaceId,baseId:k.baseId,authRef:k.authRef||Dn,authToken:k.authToken,enabled:k.enabled,mirrorMode:k.mirrorMode});b(g),_(s("settings.teableBindingSaved")),o({title:s("settings.teableBindingSaved"),tone:"success"}),await Le()}catch(g){const x=Je(g);$(x),o({title:x,tone:"error"})}finally{z(!1)}}async function _e(){M(!0),$(null),_(null);try{const g=await ht();E(g);const x=s("settings.teableConnectionTestSuccess",{tableCount:g.length});_(x),o({title:x,tone:"success"})}catch(g){const x=Je(g);$(x),o({title:x,tone:"error"})}finally{M(!1)}}function ns(g){ne(x=>x.includes(g.tableId)?x:[...x,g.tableId]),G(g.tableId),u[g.tableId]||l(g.tableId)}function In(g){if(ne(x=>x.filter(A=>A!==g)),ue===g){const x=Q.find(A=>A!==g)??null;G(x)}}function On(){const g=Te.filter(x=>!Oe.items.some(A=>A.sourceField===x.key&&A.targetFieldId)).map(x=>x.key);ve(g.length>0?g:Te.map(x=>x.key)),je(!0)}async function Un(){if(!se)return;const g=Te.filter(x=>Ee.includes(x.key)).map(vr);if(g.length===0){$(s("settings.teableFieldAutoCreateEmptyError"));return}Ze(!0),$(null),_(null);try{const x=await wa({tableId:se.tableId,fields:g});Vn(x),await l(se.tableId),je(!1);const A=s("settings.teableFieldAutoCreateSuccess",{count:x.length});_(A),o({title:A,tone:"success"})}catch(x){const A=Je(x);$(A),o({title:A,tone:"error"})}finally{Ze(!1)}}async function Rn(){if(se){R(!0),$(null),_(null);try{const x=(await ja({items:[{sourceType:X,enabled:!0,targetTableId:se.tableId,scope:Ve.scope}]})).find(ae=>ae.sourceType===X),A=(x==null?void 0:x.configId)??Oe.configId;await va({items:[{configId:A,sourceType:X,targetTableId:se.tableId,items:jr(Oe.items)}]}),_(s("settings.teableTableSyncSettingsSaved")),o({title:s("settings.teableTableSyncSettingsSaved"),tone:"success"}),await Le()}catch(g){const x=Je(g);$(x),o({title:x,tone:"error"})}finally{R(!1)}}}async function Fn(){ee(!0),$(null),_(null);try{const x=(await Na({mirrorTypes:[X]})).summary||s("settings.teableLatestTaskEmpty");_(x),o({title:x,tone:"success"}),await Le()}catch(g){const x=Je(g);$(x),o({title:x,tone:"error"})}finally{ee(!1)}}function Ue(g){me(x=>x.map(A=>A.sourceType===X?g(A):A))}function Bn(g,x){const A=We.find(ae=>ae.fieldId===x)??null;oe(ae=>({...ae,[X]:{...ae[X],targetTableId:(se==null?void 0:se.tableId)??ae[X].targetTableId,items:Te.map(K=>K.key!==g.key?ae[X].items.find(ge=>ge.sourceField===K.key)??{sourceField:K.key,targetFieldId:"",targetFieldName:"",required:K.required}:{sourceField:K.key,targetFieldId:x,targetFieldName:(A==null?void 0:A.fieldName)??"",required:K.required}).filter(K=>K.targetFieldId)}}))}function Vn(g){oe(x=>{const A=new Map(x[X].items.map(K=>[K.sourceField,K]));g.forEach(K=>{A.set(K.sourceField,{sourceField:K.sourceField,targetFieldId:K.targetFieldId,targetFieldName:K.targetFieldName,required:K.required})});const ae=Te.map(K=>A.get(K.key)??null).filter(K=>!!(K!=null&&K.targetFieldId));return{...x,[X]:{...x[X],targetTableId:(se==null?void 0:se.tableId)??x[X].targetTableId,items:ae}}})}const _n=e.jsx("div",{className:"settings-teable-tab-panel",children:e.jsxs(Y,{heading:s("settings.teableBindingSectionTitle"),description:s("settings.teableBindingSectionDescription"),children:[e.jsx(te,{label:s("settings.teableEnabledLabel"),children:e.jsxs("div",{className:"settings-teable-switch-field",children:[e.jsx(he,{checked:k.enabled,label:s("settings.teableEnabledLabel"),semanticRole:"switch",onChange:g=>{p(x=>({...x,enabled:g}))}}),e.jsx("span",{className:"settings-teable-switch-caption",children:k.enabled?s("common.enabled"):s("common.disabled")})]})}),e.jsx(te,{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:k.baseUrl,placeholder:s("settings.teableBaseUrlPlaceholder"),onChange:g=>p(x=>({...x,baseUrl:g.target.value}))})}),e.jsx(te,{label:s("settings.teableSpaceIdLabel"),htmlFor:"teable-space-id",children:e.jsx("input",{id:"teable-space-id",className:"settings-text-input",value:k.spaceId,placeholder:s("settings.teableSpaceIdPlaceholder"),onChange:g=>p(x=>({...x,spaceId:g.target.value}))})}),e.jsx(te,{label:s("settings.teableBaseIdLabel"),htmlFor:"teable-base-id",children:e.jsx("input",{id:"teable-base-id",className:"settings-text-input",value:k.baseId,placeholder:s("settings.teableBaseIdPlaceholder"),onChange:g=>p(x=>({...x,baseId:g.target.value}))})}),e.jsx(te,{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:k.authToken,placeholder:s("settings.teableAuthTokenPlaceholder"),onChange:g=>p(x=>({...x,authToken:g.target.value}))})}),e.jsx(te,{label:s("settings.teableMirrorModeLabel"),htmlFor:"teable-mirror-mode",children:e.jsx("select",{id:"teable-mirror-mode",className:"settings-select",value:k.mirrorMode,onChange:g=>p(x=>({...x,mirrorMode:g.target.value})),children:pr.map(g=>e.jsx("option",{value:g,children:s(`settings.teableMirrorMode.${g}`)},g))})})]})}),Hn=e.jsxs("div",{className:"settings-teable-tab-panel settings-teable-table-sync-layout",children:[e.jsx(Y,{className:"settings-teable-table-picker",heading:s("settings.teableTableSyncListTitle"),children:Ie.length===0?e.jsx(re,{title:s("settings.teableTablesCatalogEmptyTitle"),description:s("settings.teableTablesCatalogEmptyDescription"),compact:!0}):e.jsxs("div",{className:"settings-teable-config-fields",children:[e.jsxs("div",{className:"settings-teable-table-add-panel",children:[e.jsx(te,{label:s("settings.teableTableToAddLabel"),htmlFor:"teable-table-to-add",children:e.jsx("select",{id:"teable-table-to-add",className:"settings-select",value:pe,disabled:we.length===0,onChange:g=>ye(g.target.value),children:we.length===0?e.jsx("option",{value:"",children:s("settings.teableAllTablesAdded")}):we.map(g=>e.jsx("option",{value:g.tableId,children:g.tableName},g.tableId))})}),e.jsx("button",{type:"button",className:"secondary-button",disabled:we.length===0,onClick:()=>{const g=we.find(x=>x.tableId===pe)??we[0];g&&ns(g)},children:s("settings.teableAddSyncTableAction")})]}),Se.length===0?e.jsx(re,{title:s("settings.teableSelectSyncTableTitle"),description:s("settings.teableSelectSyncTableDescription"),compact:!0}):e.jsx(fe,{compact:!0,children:Se.map(g=>e.jsx(be,{selected:(se==null?void 0:se.tableId)===g.tableId,label:g.tableName,trailing:e.jsx("button",{type:"button",className:"secondary-button",onClick:x=>{x.stopPropagation(),In(g.tableId)},children:s("settings.teableRemoveSyncTableAction")}),role:"button",tabIndex:0,onClick:()=>G(g.tableId),onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),G(g.tableId))}},g.tableId))})]})}),e.jsx(Y,{className:"settings-teable-table-sync-main",heading:s("settings.teableTableSyncConfigTitle"),description:s("settings.teableTableSyncConfigDescription"),children:se?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(te,{label:s("settings.teableSyncSourceLabel"),htmlFor:"teable-sync-source",children:e.jsx("select",{id:"teable-sync-source",className:"settings-select",value:X,onChange:g=>xe(g.target.value),children:Mn.map(g=>e.jsx("option",{value:g,children:s(`settings.teableSyncSource.${g}`)},g))})}),qn(),e.jsx(Y,{heading:s("settings.teableFieldMappingTitle"),description:s("settings.teableFieldMappingInlineDescription"),actions:Te.length>0?e.jsx("button",{type:"button",className:"secondary-button",disabled:Pe,onClick:On,children:Pe?s("common.loading"):s("settings.teableFieldAutoCreateAction")}):null,children:Te.length===0?e.jsx("div",{className:"settings-field-hint",children:s("settings.teableSourceFieldsEmpty")}):e.jsx(fe,{compact:!0,children:Te.map(g=>{const x=Oe.items.find(A=>A.sourceField===g.key)??{sourceField:g.key,targetFieldId:"",required:g.required};return e.jsx(be,{label:g.label,description:`${g.type} · ${g.required?s("settings.teableFieldRequired"):s("settings.teableFieldOptional")}`,children:e.jsxs("select",{className:"settings-select",value:x.targetFieldId,onChange:A=>Bn(g,A.target.value),children:[e.jsx("option",{value:"",children:s("settings.teableFieldTargetPlaceholder")}),We.map(A=>e.jsx("option",{value:A.fieldId,children:A.fieldName},A.fieldId))]})},g.key)})})}),e.jsx(Y,{heading:s("settings.teableSyncActionSectionTitle"),description:s("settings.teableSyncActionSectionDescription"),children:e.jsx(fe,{compact:!0,children:e.jsx(be,{label:s("settings.teableLatestTaskTitle"),description:((ut=S==null?void 0:S.latestMirrorSyncTask)==null?void 0:ut.summary)??s("settings.teableLatestTaskEmpty"),trailing:S!=null&&S.latestMirrorSyncTask?e.jsx(ce,{tone:qt(S.latestMirrorSyncTask.state),children:s(`settings.teableTaskState.${S.latestMirrorSyncTask.state}`)}):null})})}),e.jsxs("div",{className:"settings-teable-inline-actions",children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:C||D,onClick:()=>{Rn()},children:C?s("common.loading"):s("settings.teableSaveTableSyncSettingsAction")}),e.jsx("button",{type:"button",className:"primary-button",disabled:J||D,onClick:()=>{Fn()},children:J?s("common.loading"):s("settings.teableSyncNowAction")})]})]}):e.jsx(re,{title:s("settings.teableSelectSyncTableTitle"),description:s("settings.teableSelectSyncTableDescription"),compact:!0})})]});function qn(){if(X==="sessions"){const A=Ve.scope,ae=Array.isArray(A.workspaceIds)?A.workspaceIds:[];return e.jsxs(te,{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:A.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:A.mode==="selected_workspaces",onChange:()=>Ue(K=>({...K,scope:{mode:"selected_workspaces",workspaceIds:[]}}))}),e.jsx("span",{children:s("settings.teableWorkspaceScopeSelected")})]})]}),A.mode==="selected_workspaces"?ot(ae,K=>{Ue(ge=>({...ge,scope:{mode:"selected_workspaces",workspaceIds:K}}))}):null]})}if(X==="todos"){const A=Ve.scope,ae=Array.isArray(A.workspaceIds)?A.workspaceIds:[],K=ae.length>0;return e.jsxs("div",{className:"settings-teable-config-fields",children:[e.jsx(te,{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:A.includeWorkspaceTodos!==!1,onChange:ge=>Ue(Ne=>({...Ne,scope:{...A,includeWorkspaceTodos:ge.target.checked,includeAffairsTodos:A.includeAffairsTodos!==!1,workspaceIds:ae}}))}),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:A.includeAffairsTodos!==!1,onChange:ge=>Ue(Ne=>({...Ne,scope:{...A,includeWorkspaceTodos:A.includeWorkspaceTodos!==!1,includeAffairsTodos:ge.target.checked,workspaceIds:ae}}))}),e.jsx("span",{className:"settings-teable-choice-copy",children:e.jsx("strong",{children:s("settings.teableTodoAffairsSource")})})]})]})}),e.jsxs(te,{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(ge=>({...ge,scope:{includeWorkspaceTodos:A.includeWorkspaceTodos!==!1,includeAffairsTodos:A.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(ge=>({...ge,scope:{includeWorkspaceTodos:A.includeWorkspaceTodos!==!1,includeAffairsTodos:A.includeAffairsTodos!==!1,workspaceIds:Be[0]?[Be[0].id]:[]}}))}),e.jsx("span",{children:s("settings.teableWorkspaceScopeSelected")})]})]}),K?ot(ae,ge=>{Ue(Ne=>({...Ne,scope:{includeWorkspaceTodos:A.includeWorkspaceTodos!==!1,includeAffairsTodos:A.includeAffairsTodos!==!1,workspaceIds:ge}}))}):null]})]})}const g=Ve.scope,x=Array.isArray(g.rootTagIds)?g.rootTagIds:[];return e.jsx(te,{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(A=>{const ae=x.includes(A.tag.id);return e.jsxs("label",{className:"settings-teable-choice-row",children:[e.jsx("input",{type:"checkbox",checked:ae,onChange:K=>{const ge=K.target.checked?[...x,A.tag.id]:x.filter(Ne=>Ne!==A.tag.id);Ue(Ne=>({...Ne,scope:{rootTagIds:Array.from(new Set(ge))}}))}}),e.jsxs("span",{className:"settings-teable-choice-copy",children:[e.jsx("strong",{children:A.tag.path}),e.jsx("small",{children:s("shell.affairsTagTreeDocumentCount",{count:A.tag.documentCount})})]})]},A.key)})})})}function ot(g,x){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(A=>{const ae=g.includes(A.id);return e.jsxs("label",{className:"settings-teable-choice-row",children:[e.jsx("input",{type:"checkbox",checked:ae,onChange:K=>{const ge=K.target.checked?[...g,A.id]:g.filter(Ne=>Ne!==A.id);x(Array.from(new Set(ge)))}}),e.jsx("span",{className:"settings-teable-choice-copy",children:e.jsx("strong",{children:A.name})})]},A.id)})})}function ct(){const g=e.jsxs("div",{className:"settings-teable-field-picker",children:[e.jsx(Y,{heading:s("settings.teableFieldAutoCreateModalSectionTitle"),description:s("settings.teableFieldAutoCreateModalSectionDescription",{table:$e}),children:e.jsx(fe,{compact:!0,children:Te.map(x=>{const A=Ee.includes(x.key),ae=Oe.items.find(K=>K.sourceField===x.key&&K.targetFieldId);return e.jsx(be,{label:x.label,description:ae?s("settings.teableFieldAlreadyMappedDescription",{field:ae.targetFieldName}):`${x.type} · ${x.required?s("settings.teableFieldRequired"):s("settings.teableFieldOptional")}`,leading:e.jsx("input",{type:"checkbox",checked:A,onChange:K=>{ve(ge=>K.target.checked?Array.from(new Set([...ge,x.key])):ge.filter(Ne=>Ne!==x.key))}})},x.key)})})}),e.jsxs(de,{align:"end",stack:!0,children:[e.jsx("button",{type:"button",className:"secondary-button",onClick:()=>je(!1),children:s("common.cancel")}),e.jsx("button",{type:"button",className:"primary-button",disabled:Pe||Ee.length===0,onClick:()=>{Un()},children:Pe?s("common.loading"):s("settings.teableFieldAutoCreateConfirmAction")})]})]});return a?e.jsx(Me,{open:Ae,title:s("settings.teableFieldAutoCreateModalTitle"),description:s("settings.teableFieldAutoCreateModalDescription"),height:"three-quarter",kind:"form",showHandle:!0,onClose:()=>je(!1),children:g}):e.jsx(Ce,{open:Ae,title:s("settings.teableFieldAutoCreateModalTitle"),description:s("settings.teableFieldAutoCreateModalDescription"),size:"compact",layout:"form",onClose:()=>je(!1),children:g})}const Wn=e.jsx("div",{className:"settings-teable-tab-panel",children:e.jsx(Y,{heading:s("settings.teableSyncLogsTitle"),description:s("settings.teableSyncLogsDescription"),actions:e.jsx("button",{type:"button",className:"secondary-button",disabled:D,onClick:()=>{Le()},children:D?s("common.loading"):s("settings.teableSyncLogsRefreshAction")}),children:d.length===0?e.jsx(re,{title:s("settings.teableSyncLogsEmptyTitle"),description:s("settings.teableSyncLogsEmptyDescription"),compact:!0}):e.jsx(fe,{compact:!0,children:d.map(g=>e.jsx(be,{label:g.summary,description:Sr(g),trailing:e.jsx(ce,{tone:qt(g.state),children:s(`settings.teableTaskState.${g.state}`)})},g.logId))})})});function $n(){return m==="connection"?_n:m==="syncLogs"?Wn:Hn}const dt=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(g=>e.jsx("button",{type:"button",role:"tab","aria-selected":m===g.id,className:m===g.id?"settings-teable-tab active":"settings-teable-tab",onClick:()=>v(g.id),children:g.label},g.id))}),$n(),ie?e.jsx("p",{className:"settings-release-status",children:ie}):null,I?e.jsx("p",{className:"settings-release-status",children:I}):null,m==="connection"?e.jsxs(de,{className:"settings-teable-modal-actions",align:"end",stack:!0,children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:f||D,onClick:()=>{_e()},children:f?s("common.loading"):s("settings.teableTestConnectionAction")}),e.jsx("button",{type:"button",className:"primary-button",disabled:B||D,onClick:()=>{le()},children:B?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(Me,{open:t,title:s("settings.teableModalTitle"),height:"full",kind:"form",showHandle:!0,onClose:q,children:dt}),ct()]}):e.jsxs(e.Fragment,{children:[e.jsx(Ce,{open:t,title:s("settings.teableModalTitle"),size:"regular",layout:"form",className:"settings-teable-modal",bodyClassName:"settings-teable-modal-body",onClose:q,children:dt}),ct()]})}function Ht(t){return{baseUrl:(t==null?void 0:t.baseUrl)??"",spaceId:(t==null?void 0:t.spaceId)??"",baseId:(t==null?void 0:t.baseId)??"",authRef:(t==null?void 0:t.authRef)??Dn,authToken:"",enabled:(t==null?void 0:t.enabled)??!1,mirrorMode:(t==null?void 0:t.mirrorMode)??"manual"}}function Ys(t){const a=new Map(t.map(n=>[n.sourceType,n]));return Mn.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)??br(n)}})}function br(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 Xs(t){return{configId:`draft-${t}`,sourceType:t,targetTableId:"",items:[]}}function fr(t,a){const n=new Map(t.map(o=>[o.sourceType,o])),r=new Map(a.map(o=>[o.sourceType,o]));return{tags:et("tags",n.get("tags")??null,r.get("tags")??null),sessions:et("sessions",n.get("sessions")??null,r.get("sessions")??null),todos:et("todos",n.get("todos")??null,r.get("todos")??null)}}function et(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 xr(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 yr(t,a){return t.length===a.length&&t.every((n,r)=>n===a[r])}function jr(t){return t.filter(a=>a.sourceField.trim()&&a.targetFieldId.trim()&&a.targetFieldName.trim())}function vr(t){return{sourceField:t.key,fieldName:t.label,fieldType:Nr(t.type),required:t.required}}function Nr(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 Sr(t){var v;const a=t.sourceTypes.map(w=>s(`settings.teableSyncSource.${w}`)).join("、")||s("common.none"),n=s(`settings.teableSyncLogTrigger.${t.triggerType}`),r=Tr(t.finishedAt??t.updatedAt??t.createdAt),o=wr(t),m=[s("settings.teableSyncLogDescription",{trigger:n,source:a,time:r})];return o&&m.push(o),(v=t.errorDetail)!=null&&v.trim()&&m.push(t.errorDetail.trim()),m.join(" · ")}function wr(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 Tr(t){if(!t)return s("common.none");const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function qt(t){switch(t){case"succeeded":return"success";case"partial_failed":case"queued":case"running":return"warning";case"failed":return"danger";default:return"default"}}function Wt({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 Pn={start:43e3,end:47999};function kr(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 Cr(t){return kr(t)?t==="model-management"||t==="provider-management"?"ability-management":t:null}function Dr(t){return t==="en-US"?s("locale.enUS"):s("locale.zhCN")}function Mr(t){switch(t){case"acceptEdits":return s("settings.permissionModeAcceptEdits");case"bypassPermissions":return s("settings.permissionModeBypassPermissions");default:return s("settings.permissionModeDefault")}}function Ar(){const t=it(),{theme:a,selectedTheme:n,autoTheme:r,setTheme:o,setAutoTheme:m}=na(),v=tt(H=>H),w=Cs(H=>H.profile.language),b=Cs(H=>H.profile.defaultPermissionMode),S=as(H=>H.sessionDisplaySortMode),h=as(H=>H.showSystemFiles),T=as(H=>H.notificationPreferences.notifyOnPermissionRequest),E=as(H=>H.notificationPreferences.notifyOnSessionCompleted),V=as(H=>H.notificationPreferences.notifyOnSessionFailed),L={language:w,defaultPermissionMode:b,debugPortPools:Cs(H=>H.profile.debugPortPools)??Pn},F=hs(),O=Jn(v.platform),u=O,N=nt(v)??"",[c,y]=i.useState(N);i.useEffect(()=>{y(N)},[N]);function d(){Zn.clear(),Ds.resetToLocalFallback(),t("/login",{replace:!0})}function j(H){o(H)}function D(H){m(H)}function U(H){try{return Qn(H)}catch{return null}}const f=U(c),M=f!==null&&f!==N;function B(H){H.preventDefault(),f&&Re.update({hosts:v.hosts.map(oe=>oe.id===v.activeHostId?{...oe,baseUrl:f,updatedAt:new Date().toISOString()}:oe)})}const z=[{value:"default",label:s("settings.permissionModeDefault")},{value:"acceptEdits",label:s("settings.permissionModeAcceptEdits")},{value:"bypassPermissions",label:s("settings.permissionModeBypassPermissions")}],C=[{value:"createdAt",label:s("settings.sessionSortModeCreatedAt")},{value:"updatedAt",label:s("settings.sessionSortModeUpdatedAt")},{value:"title",label:s("settings.sessionSortModeTitle")}];function R(H){Re.update({autoReconnect:H})}function J(H){Re.update({autoCheckUpdate:H})}function ee(H){Re.update({autoDownloadUpdate:H})}function ie(H){Re.update({releaseChannel:H,betaChannelConsentAcceptedAt:H==="beta"?new Date().toISOString():null})}function _(H){const oe=H==="acceptEdits"||H==="bypassPermissions"?H:"default";Ds.updateProfile({defaultPermissionMode:oe}).catch(()=>{})}function I(H){const oe=H==="updatedAt"||H==="title"?H:"createdAt";is.setSessionDisplaySortMode(oe)}function $(H){is.setShowSystemFiles(H)}function k(H){is.setNotificationPreferences({notifyOnPermissionRequest:H})}function p(H){is.setNotificationPreferences({notifyOnSessionCompleted:H})}function W(H){is.setNotificationPreferences({notifyOnSessionFailed:H})}async function me(H){await Ds.updateProfile({debugPortPools:H})}return{platform:F,theme:a,selectedTheme:n,autoTheme:r,applyTheme:j,applyAutoTheme:D,runtimeConfig:v,accountPreferences:L,sessionDisplaySortMode:S,showSystemFiles:h,notifyOnPermissionRequest:T,notifyOnSessionCompleted:E,notifyOnSessionFailed:V,showServerSettings:u,canConfigureServerAddress:O,hostBaseUrlDraft:c,setHostBaseUrlDraft:y,canSaveHostBaseUrl:M,permissionModeOptions:z,sessionDisplaySortModeOptions:C,handleHostBaseUrlSubmit:B,handleLogout:d,updateAutoReconnect:R,updateAutoCheckUpdate:J,updateAutoDownloadUpdate:ee,updateReleaseChannel:ie,updateDefaultPermissionMode:_,updateSessionDisplaySortMode:I,updateShowSystemFiles:$,updateNotifyOnPermissionRequest:k,updateNotifyOnSessionCompleted:p,updateNotifyOnSessionFailed:W,updateDebugPortPools:me}}function go(){const t=Ar(),a=ta();return t.platform.isMobile?e.jsx(Lr,{model:t,appVersion:a}):e.jsx(Pr,{model:t,appVersion:a})}function Pr({model:t,appVersion:a}){var ue;const[n,r]=i.useState(!1),[o,m]=i.useState(!1),[v,w]=i.useState(!1),[b,S]=i.useState(!1),[h,T]=i.useState(!1),{currentWorkspaceId:E,navigationGroups:V}=nn(),{theme:L,selectedTheme:F,autoTheme:O,applyTheme:u,applyAutoTheme:N,runtimeConfig:c,accountPreferences:y,sessionDisplaySortMode:d,showSystemFiles:j,notifyOnPermissionRequest:D,notifyOnSessionCompleted:U,notifyOnSessionFailed:f,showServerSettings:M,hostBaseUrlDraft:B,setHostBaseUrlDraft:z,canSaveHostBaseUrl:C,permissionModeOptions:R,sessionDisplaySortModeOptions:J,platform:ee,handleHostBaseUrlSubmit:ie,handleLogout:_,updateAutoReconnect:I,updateAutoCheckUpdate:$,updateAutoDownloadUpdate:k,updateReleaseChannel:p,updateDefaultPermissionMode:W,updateSessionDisplaySortMode:me,updateShowSystemFiles:H,updateNotifyOnPermissionRequest:oe,updateNotifyOnSessionCompleted:X,updateNotifyOnSessionFailed:xe,updateDebugPortPools:P}=t,Q=E??((ue=V[0])==null?void 0:ue.workspace.id)??null,ne=V.map(G=>{var pe;return{id:G.workspace.id,name:((pe=G.workspace.name)==null?void 0:pe.trim())||G.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(Xt,{})})]}),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:O,label:s("settings.autoTheme"),onChange:N})]}),e.jsx("span",{className:"settings-theme-note",children:s("settings.autoThemeDescription")})]}),e.jsx("div",{className:"theme-selector",children:en.map(G=>e.jsxs("button",{type:"button",className:`theme-card ${F===G.id&&!O?"active":""}`,"aria-pressed":F===G.id&&!O,disabled:O,onClick:()=>u(G.id),children:[e.jsx("span",{className:"theme-preview",style:{background:G.color}}),e.jsx("span",{className:"theme-label",children:sn(G)}),F===G.id&&!O?e.jsx("span",{className:"theme-check",children:"✓"}):null]},G.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:d,onChange:G=>me(G.target.value),children:J.map(G=>e.jsx("option",{value:G.value,children:G.label},G.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:j,label:s("settings.showSystemFiles"),onChange:H})})]})]})]}),M?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:ie,children:[e.jsx("input",{"aria-label":s("settings.serverAddress"),className:"settings-text-input",value:B,onChange:G=>z(G.target.value)}),e.jsx("button",{className:"settings-button",disabled:!C,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:c.autoReconnect,label:s("settings.autoReconnect"),onChange:I})})]})]})]}):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:()=>w(!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(un,{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:()=>T(!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.affairsLibraryCapabilityTitle")}),e.jsx("span",{className:"settings-row-description",children:s("settings.affairsLibraryCapabilityDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(En,{})})]}),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(gn,{})})]}),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(dn,{})})]})]})]}),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(hn,{})})]})})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.remoteAccess")}),e.jsx("div",{className:"settings-card",children:e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.remoteAccessManageTitle")}),e.jsx("span",{className:"settings-row-description",children:s("settings.remoteAccessManageDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx("button",{className:"settings-button",type:"button",onClick:()=>m(!0),children:s("settings.remoteAccessManageAction")})})]})})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.securityPrivacy")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.defaultPermissionMode")}),e.jsx("span",{className:"settings-row-description",children:s("settings.defaultPermissionModeDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx("select",{"aria-label":s("settings.defaultPermissionMode"),className:"settings-select",value:y.defaultPermissionMode,onChange:G=>W(G.target.value),children:R.map(G=>e.jsx("option",{value:G.value,children:G.label},G.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(yn,{})})]}),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(Nn,{})})]}),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:D,label:s("settings.notifyOnPermissionRequest"),onChange:oe})})]}),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:U,label:s("settings.notifyOnSessionCompleted"),onChange:X})})]}),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:f,label:s("settings.notifyOnSessionFailed"),onChange:xe})})]})]})]}),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(Ln,{value:y.debugPortPools,onSave:P})})]}),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:c.releaseChannel,onChange:G=>{const pe=G.target.value;pe==="beta"?S(!0):p(pe)},children:[e.jsx("option",{value:"stable",children:s("settings.releaseChannelStable")}),e.jsx("option",{value:"beta",children:s("settings.releaseChannelBeta")})]})})]}),ee.isDesktop?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.updateOneClickTitle")}),e.jsx("span",{className:"settings-row-description",children:s("settings.updateOneClickDescription")})]}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(on,{})})]}):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(Sn,{})})]}),ee.isWeb?null:e.jsxs(e.Fragment,{children:[ee.isDesktop?e.jsxs(e.Fragment,{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.autoCheckUpdate")}),e.jsx("span",{className:"settings-row-description",children:s("settings.autoCheckUpdateDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(he,{checked:c.autoCheckUpdate,label:s("settings.autoCheckUpdate"),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.autoDownloadUpdate")}),e.jsx("span",{className:"settings-row-description",children:s("settings.autoDownloadUpdateDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(he,{checked:c.autoDownloadUpdate,label:s("settings.autoDownloadUpdate"),onChange:k})})]})]}):null,ee.isDesktop?null: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(rn,{})})]})]})]})]}),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:_,type:"button",children:s("common.logout")})]})]}),e.jsx(Va,{isOpen:n,onClose:()=>r(!1)}),e.jsx(kn,{open:o,mobile:!1,onClose:()=>m(!1)}),e.jsx(Cn,{open:v,mobile:!1,workspaceId:Q,onClose:()=>w(!1)}),e.jsx(An,{open:h,mobile:!1,workspaceOptions:ne,onClose:()=>T(!1)}),e.jsx(wn,{open:b,mobile:!1,onClose:()=>S(!1),onConfirm:()=>{p("beta"),S(!1)}})]})}function En(){const t=ka(!0),[a,n]=i.useState(!1),[r,o]=i.useState(null),[m,v]=i.useState(null);async function w(b){if(!a){n(!0),o(null),v(null);try{await Ca(b),o(b?s("settings.affairsLibraryCapabilityEnableSuccess"):s("settings.affairsLibraryCapabilityDisableSuccess"))}catch(S){v(Er(S))}finally{n(!1)}}}return e.jsxs("div",{className:"settings-affairs-library-capability-control",children:[e.jsx(he,{checked:t.enabled,label:s("settings.affairsLibraryCapabilityToggleLabel"),semanticRole:"switch",onChange:b=>{w(b)}}),r?e.jsx("span",{className:"settings-provider-status",children:r}):null,m??t.error?e.jsx("span",{className:"settings-provider-error",children:m??s("settings.affairsLibraryCapabilityLoadFailed")}):null]})}function Er(t){return t instanceof Error&&t.message.trim()?t.message:s("settings.affairsLibraryCapabilitySaveFailed")}function Lr({model:t,appVersion:a}){const n=it(),{section:r}=aa(),o=Cr(r),m=[{id:"appearance",title:s("settings.appearance"),description:s("settings.appearanceSectionSummary"),value:Dr(t.accountPreferences.language),icon:e.jsx(Hr,{})}];return t.showServerSettings&&m.push({id:"server-connection",title:s("settings.serverConnection"),description:s("settings.serverConnectionSectionSummary"),value:nt(t.runtimeConfig)??"",icon:e.jsx(qr,{})}),m.push({id:"ability-management",title:s("settings.abilityManagement"),description:s("settings.abilityManagementSectionSummary"),value:s("settings.abilityManagementNavValue"),icon:e.jsx(zr,{})},{id:"channels-management",title:s("settings.channelsManagement"),description:s("settings.channelsManagementSectionSummary"),value:s("settings.channelsManagementNavValue"),icon:e.jsx(Kr,{})},{id:"remote-access",title:s("settings.remoteAccess"),description:s("settings.remoteAccessSectionSummary"),value:s("settings.remoteAccessNavValue"),icon:e.jsx($r,{})},{id:"security-privacy",title:s("settings.securityPrivacy"),description:s("settings.securityPrivacySectionSummary"),value:Mr(t.accountPreferences.defaultPermissionMode),icon:e.jsx(Gr,{})},{id:"software-update",title:s("settings.softwareUpdate"),description:s("settings.softwareUpdateSectionSummary"),value:t.platform.isWeb?s("settings.serverUpdate"):s("settings.updateOneClickValue"),icon:e.jsx(Wr,{})}),(o?m.find(w=>w.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(Wt,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[o==="appearance"?e.jsx(Ir,{model:t}):null,o==="ability-management"?e.jsx(Br,{}):null,o==="channels-management"?e.jsx(Vr,{}):null,o==="server-connection"&&t.showServerSettings?e.jsx(Or,{model:t}):null,o==="remote-access"?e.jsx(Fr,{model:t}):null,o==="security-privacy"?e.jsx(Ur,{model:t}):null,o==="software-update"?e.jsx(_r,{model:t}):null]}),e.jsx(zt,{onLogout:t.handleLogout})]}):e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(Wt,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[e.jsx("section",{className:"settings-mobile-group-section",children:e.jsx("div",{className:"settings-mobile-list",children:m.map(w=>e.jsxs("button",{type:"button",className:"settings-mobile-nav-row",onClick:()=>n(`/settings/${w.id}`),children:[e.jsx("span",{className:"settings-mobile-nav-icon",children:w.icon}),e.jsxs("span",{className:"settings-mobile-nav-copy",children:[e.jsx("span",{className:"settings-mobile-nav-title",children:w.title}),e.jsx("span",{className:"settings-mobile-nav-description",children:w.description})]}),e.jsxs("span",{className:"settings-mobile-nav-trailing",children:[w.value?e.jsx("span",{className:"settings-mobile-nav-value",children:w.value}):null,e.jsx(Jr,{})]})]},w.id))})}),e.jsx("div",{className:"settings-footer settings-footer-mobile",children:e.jsxs("span",{className:"settings-version",children:["CodingNS v",a]})})]}),e.jsx(zt,{onLogout:t.handleLogout})]})}function Ir({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(Xt,{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})]}),en.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:sn(a)})]}),e.jsx("span",{className:"settings-mobile-choice-indicator","aria-hidden":"true",children:n?e.jsx(Qr,{}):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 Or({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 Ur({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(yn,{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(Nn,{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(Ln,{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 Ln(t){const[a,n]=i.useState(()=>$t(t.value)),[r,o]=i.useState(!1),[m,v]=i.useState(null),[w,b]=i.useState(!1);i.useEffect(()=>{n($t(t.value))},[t.value]);async function S(){v(null),b(!1);let h;try{h=Rr(a)}catch(T){v(T instanceof Error?T.message:s("settings.debugPortPoolSaveFailed"));return}try{o(!0),await t.onSave(h),b(!0)}catch(T){v(T instanceof Error?T.message:s("settings.debugPortPoolSaveFailed"))}finally{o(!1)}}return e.jsxs("div",{className:t.compact?"settings-mobile-form-stack":"settings-debug-port-pool-editor",children:[e.jsxs("div",{className:t.compact?"settings-mobile-form-row":"settings-row",children:[e.jsx("div",{className:t.compact?"settings-mobile-row-copy":"settings-row-label settings-debug-port-pool-label",children:e.jsx("span",{className:t.compact?"settings-mobile-row-title":"settings-row-title",children:s("settings.debugPortPoolRangeLabel")})}),e.jsx("div",{className:t.compact?"settings-mobile-form-stack":"settings-row-control settings-row-control-stretch",children:e.jsxs("div",{className:"settings-inline-form",children:[e.jsx("input",{"aria-label":`${s("settings.debugPortPool")} ${s("settings.debugPortPoolStart")}`,className:"settings-text-input",inputMode:"numeric",value:a.start,onChange:h=>{const T=h.target.value;n(E=>({...E,start:T}))}}),e.jsx("span",{children:s("settings.debugPortPoolRangeSeparator")}),e.jsx("input",{"aria-label":`${s("settings.debugPortPool")} ${s("settings.debugPortPoolEnd")}`,className:"settings-text-input",inputMode:"numeric",value:a.end,onChange:h=>{const T=h.target.value;n(E=>({...E,end:T}))}}),e.jsx("button",{type:"button",className:t.compact?"settings-mobile-primary-button":"settings-button",disabled:r,onClick:()=>{S()},children:r?s("common.loading"):s("common.save")}),w?e.jsx("span",{children:s("settings.debugPortPoolSaved")}):null]})})]}),m?e.jsx("p",{className:"status-text settings-debug-port-pool-feedback","data-tone":"error",children:m}):null]})}function $t(t){const a=t??Pn;return{start:String(a.start),end:String(a.end)}}function Rr(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 Fr({model:t}){const[a,n]=i.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.remoteAccess")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.remoteAccessManageDescription")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.remoteAccessManageTitle")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.remoteAccessSectionSummary")})]}),e.jsx("button",{className:"settings-mobile-primary-button",type:"button",onClick:()=>n(!0),children:s("settings.remoteAccessManageAction")})]})})]}),e.jsx(kn,{open:a,mobile:!0,onClose:()=>n(!1)})]})}function Br(){var b;const[t,a]=i.useState(!1),[n,r]=i.useState(!1),{currentWorkspaceId:o,navigationGroups:m}=nn(),v=o??((b=m[0])==null?void 0:b.workspace.id)??null,w=m.map(S=>{var h;return{id:S.workspace.id,name:((h=S.workspace.name)==null?void 0:h.trim())||S.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(un,{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-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.affairsLibraryCapabilityTitle")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.affairsLibraryCapabilityDescription")})]}),e.jsx(En,{})]})]}),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(gn,{})]}),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(dn,{})]})]})]}),e.jsx(Cn,{open:t,mobile:!0,workspaceId:v,onClose:()=>a(!1)}),e.jsx(An,{open:n,mobile:!0,workspaceOptions:w,onClose:()=>r(!1)})]})}function Vr(){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(hn,{})]})]})}function _r({model:t}){const[a,n]=i.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.softwareUpdate")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.softwareUpdateSectionSummary")}),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:r=>{const o=r.target.value;o==="beta"?n(!0):t.updateReleaseChannel(o)},children:[e.jsx("option",{value:"stable",children:s("settings.releaseChannelStable")}),e.jsx("option",{value:"beta",children:s("settings.releaseChannelBeta")})]})]})})]}),t.platform.isDesktop?e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.updateOneClickTitle")}),e.jsx("div",{className:"settings-mobile-panel-shell settings-mobile-update-shell",children:e.jsx(on,{})})]}):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(Sn,{})})]}),t.platform.isWeb?null:e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:t.platform.isDesktop?s("settings.updateOptions"):s("settings.clientUpdate")}),t.platform.isDesktop?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.autoCheckUpdate")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.autoCheckUpdateDescription")})]}),e.jsx(he,{checked:t.runtimeConfig.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:t.updateAutoCheckUpdate})]}),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.autoDownloadUpdate")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.autoDownloadUpdateDescription")})]}),e.jsx(he,{checked:t.runtimeConfig.autoDownloadUpdate,label:s("settings.autoDownloadUpdate"),onChange:t.updateAutoDownloadUpdate})]})]}):null,t.platform.isDesktop?null:e.jsx("div",{className:"settings-mobile-panel-shell settings-mobile-update-shell",children:e.jsx(rn,{})})]}),e.jsx(wn,{open:a,mobile:!0,onClose:()=>n(!1),onConfirm:()=>{t.updateReleaseChannel("beta"),n(!1)}})]})}function zt({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 Hr(){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 qr(){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 Wr(){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 $r(){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 zr(){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 Kr(){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 Gr(){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 Jr(){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 Qr(){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{go as SettingsPage};