@jingyi0605/codingns 0.7.4 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/bin/codingns.mjs +747 -28
- package/bin/office-mcp-server.mjs +620 -0
- package/dist/public/assets/{AdaptiveButlerPage-CgBX49t-.js → AdaptiveButlerPage-b7s6F_sd.js} +1 -1
- package/dist/public/assets/{App-tXOqoHNl.js → App-B0q8uDA-.js} +3 -3
- package/dist/public/assets/{BootstrapPage-DoRMz87R.js → BootstrapPage-jFfl7KNK.js} +1 -1
- package/dist/public/assets/{ConversationPage-DXR6Hp4O.js → ConversationPage-sj_rn4q0.js} +6 -6
- package/dist/public/assets/{DesktopDetachPreviewPage-Cyk-ZYCk.js → DesktopDetachPreviewPage-C5c88SOX.js} +1 -1
- package/dist/public/assets/{DesktopWindowPage-DNVNK3hs.js → DesktopWindowPage-BdKUZrKG.js} +1 -1
- package/dist/public/assets/FileContextPanel-lM5mBcfn.js +1 -0
- package/dist/public/assets/{GitSidebar-Cr3Z9OUI.js → GitSidebar-CmXAhyjo.js} +2 -2
- package/dist/public/assets/{MobileCreateSessionSheet-DMW0V6GJ.js → MobileCreateSessionSheet-CceV0-AH.js} +1 -1
- package/dist/public/assets/{MobileTopHeaderFrame-CkdnZ_MU.js → MobileTopHeaderFrame-_I0t7cC_.js} +1 -1
- package/dist/public/assets/{MobileWorkspaceSwitcherHeader-KIbqBYJN.js → MobileWorkspaceSwitcherHeader-DhaM9fgx.js} +1 -1
- package/dist/public/assets/{RelayConnectEntryPage-DIRBH3hw.js → RelayConnectEntryPage-CMtDWyGS.js} +1 -1
- package/dist/public/assets/{ServerSettingsModal-C-9RxdWP.js → ServerSettingsModal-Rkgn3jft.js} +1 -1
- package/dist/public/assets/{SessionIndexPage-bRlIydRA.js → SessionIndexPage-BOumP3ij.js} +1 -1
- package/dist/public/assets/{SettingsPage-CMEt4ua9.js → SettingsPage-vx_c-00-.js} +2 -2
- package/dist/public/assets/{TerminalManagerPanel-2bi9wVhT.js → TerminalManagerPanel-D9JHCS6d.js} +1 -1
- package/dist/public/assets/{TerminalPage-DayZz2Tf.js → TerminalPage-CBIKHI33.js} +1 -1
- package/dist/public/assets/{TerminalRuntimeFallbackModal-DgwYcp-Y.js → TerminalRuntimeFallbackModal-W5NjqFEz.js} +1 -1
- package/dist/public/assets/{ToolFilesPage-YvnP_FXW.js → ToolFilesPage-DWtpaN_7.js} +1 -1
- package/dist/public/assets/{ToolGitPage-GMcQKtV9.js → ToolGitPage-MpGXsw4_.js} +1 -1
- package/dist/public/assets/{ToolProcessesPage-DFIQ7BCd.js → ToolProcessesPage-B1jHQKhZ.js} +1 -1
- package/dist/public/assets/{ToolsHomePage-CSilFzXR.js → ToolsHomePage-CJrn8ZFl.js} +1 -1
- package/dist/public/assets/{WorkbenchLandingPage-1VtToSz9.js → WorkbenchLandingPage-CJQ1V5U-.js} +1 -1
- package/dist/public/assets/WorkbenchLayout-D48i71PU.js +244 -0
- package/dist/public/assets/{WorkbenchModal-BWXYSXmC.js → WorkbenchModal-BYNuMIoV.js} +1 -1
- package/dist/public/assets/WorkbenchShellRoute-B4XB8SwG.css +1 -0
- package/dist/public/assets/WorkbenchShellRoute-CGKjy4J-.js +1 -0
- package/dist/public/assets/{WorkspaceDebugDetailPage-Ux8_Q7la.js → WorkspaceDebugDetailPage-DCAYgays.js} +1 -1
- package/dist/public/assets/{WorkspaceDetailPage-B402p99m.js → WorkspaceDetailPage-D5v-nUIi.js} +1 -1
- package/dist/public/assets/{WorkspaceHomePage-D2pob6HI.js → WorkspaceHomePage-I5G1p5SR.js} +1 -1
- package/dist/public/assets/{client-runtime-manager-C5D76ewj.js → client-runtime-manager-CdJP7nUp.js} +1 -1
- package/dist/public/assets/file-tree-icon-BFwaPxKs.js +590 -0
- package/dist/public/assets/index-CjewzOUG.js +42 -0
- package/dist/public/assets/index-VVxfF0s5.css +1 -0
- package/dist/public/assets/{login-direct-candidate-resolver-wXSaB0i7.js → login-direct-candidate-resolver-C-mo698r.js} +1 -1
- package/dist/public/assets/{model-switch-api-CPtou49j.js → model-switch-api-Br0ivfe5.js} +1 -1
- package/dist/public/assets/{preferences-service-CdaK7zA8.js → preferences-service-CnaTvZq2.js} +1 -1
- package/dist/public/assets/{realtime-client-BjQazYsK.js → realtime-client-BlQRqVmm.js} +1 -1
- package/dist/public/assets/{relay-entry-BwE5nw0l.js → relay-entry-D7OgZZN-.js} +1 -1
- package/dist/public/assets/{terminal-runtime-meta-C-Lbyx2i.js → terminal-runtime-meta-BCtAYB0E.js} +1 -1
- package/dist/public/assets/{useRegisteredDebugTemplates-BM7-c-gx.js → useRegisteredDebugTemplates-CXmxu69X.js} +1 -1
- package/dist/public/index.html +2 -2
- package/dist/server/config/env.d.ts +3 -0
- package/dist/server/config/env.js +67 -1
- package/dist/server/config/env.js.map +1 -1
- package/dist/server/config/opencode-base-url-resolver.d.ts +3 -2
- package/dist/server/config/opencode-base-url-resolver.js +64 -24
- package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
- package/dist/server/main.js +2 -0
- package/dist/server/main.js.map +1 -1
- package/dist/server/middlewares/auth-guard.js +4 -0
- package/dist/server/middlewares/auth-guard.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +169 -1
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js +206 -4
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +297 -2
- package/dist/server/modules/assistant-capability/assistant-capability-service.js +873 -3
- package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
- package/dist/server/modules/auth/auth-service.d.ts +21 -1
- package/dist/server/modules/auth/auth-service.js +64 -0
- package/dist/server/modules/auth/auth-service.js.map +1 -1
- package/dist/server/modules/browser-runtime/browser-profile-service.d.ts +26 -0
- package/dist/server/modules/browser-runtime/browser-profile-service.js +85 -0
- package/dist/server/modules/browser-runtime/browser-profile-service.js.map +1 -0
- package/dist/server/modules/browser-runtime/browser-runtime-controller.d.ts +70 -0
- package/dist/server/modules/browser-runtime/browser-runtime-controller.js +84 -0
- package/dist/server/modules/browser-runtime/browser-runtime-controller.js.map +1 -0
- package/dist/server/modules/browser-runtime/browser-runtime-service.d.ts +59 -0
- package/dist/server/modules/browser-runtime/browser-runtime-service.js +255 -0
- package/dist/server/modules/browser-runtime/browser-runtime-service.js.map +1 -0
- package/dist/server/modules/browser-runtime/browser-task-execution-support.d.ts +65 -0
- package/dist/server/modules/browser-runtime/browser-task-execution-support.js +432 -0
- package/dist/server/modules/browser-runtime/browser-task-execution-support.js.map +1 -0
- package/dist/server/modules/browser-runtime/browser-task-executor-registry.d.ts +7 -0
- package/dist/server/modules/browser-runtime/browser-task-executor-registry.js +21 -0
- package/dist/server/modules/browser-runtime/browser-task-executor-registry.js.map +1 -0
- package/dist/server/modules/browser-runtime/browser-task-executor.d.ts +55 -0
- package/dist/server/modules/browser-runtime/browser-task-executor.js +2 -0
- package/dist/server/modules/browser-runtime/browser-task-executor.js.map +1 -0
- package/dist/server/modules/browser-runtime/browser-task-payload.d.ts +33 -0
- package/dist/server/modules/browser-runtime/browser-task-payload.js +55 -0
- package/dist/server/modules/browser-runtime/browser-task-payload.js.map +1 -0
- package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.d.ts +19 -0
- package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js +219 -0
- package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js.map +1 -0
- package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.d.ts +15 -0
- package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.js +33 -0
- package/dist/server/modules/browser-runtime/opencli-browser-bridge-service.js.map +1 -0
- package/dist/server/modules/browser-runtime/playwright-browser-executor.d.ts +16 -0
- package/dist/server/modules/browser-runtime/playwright-browser-executor.js +272 -0
- package/dist/server/modules/browser-runtime/playwright-browser-executor.js.map +1 -0
- package/dist/server/modules/butler/butler-auth-service.js +4 -0
- package/dist/server/modules/butler/butler-auth-service.js.map +1 -1
- package/dist/server/modules/butler/butler-inbox-instruction-adapter.js +1 -0
- package/dist/server/modules/butler/butler-inbox-instruction-adapter.js.map +1 -1
- package/dist/server/modules/butler/butler-session-summary-service.d.ts +1 -0
- package/dist/server/modules/butler/butler-session-summary-service.js +5 -3
- package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
- package/dist/server/modules/butler/butler-workspace-context.js +23 -0
- package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
- package/dist/server/modules/debug-target/debug-target-service.d.ts +2 -0
- package/dist/server/modules/debug-target/debug-target-service.js +14 -0
- package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
- package/dist/server/modules/document-runtime/document-docx-fallback-renderer.py +139 -0
- package/dist/server/modules/document-runtime/document-export-executor.d.ts +50 -0
- package/dist/server/modules/document-runtime/document-export-executor.js +827 -0
- package/dist/server/modules/document-runtime/document-export-executor.js.map +1 -0
- package/dist/server/modules/document-runtime/document-runtime-controller.d.ts +127 -0
- package/dist/server/modules/document-runtime/document-runtime-controller.js +131 -0
- package/dist/server/modules/document-runtime/document-runtime-controller.js.map +1 -0
- package/dist/server/modules/document-runtime/document-runtime-service.d.ts +125 -0
- package/dist/server/modules/document-runtime/document-runtime-service.js +706 -0
- package/dist/server/modules/document-runtime/document-runtime-service.js.map +1 -0
- package/dist/server/modules/git/git-command-helper-process.js +0 -18
- package/dist/server/modules/git/git-command-helper-process.js.map +1 -1
- package/dist/server/modules/git/git-command-runner.js +0 -18
- package/dist/server/modules/git/git-command-runner.js.map +1 -1
- package/dist/server/modules/office/office-controller.d.ts +77 -0
- package/dist/server/modules/office/office-controller.js +174 -0
- package/dist/server/modules/office/office-controller.js.map +1 -0
- package/dist/server/modules/office/office-preview-link-service.d.ts +27 -0
- package/dist/server/modules/office/office-preview-link-service.js +121 -0
- package/dist/server/modules/office/office-preview-link-service.js.map +1 -0
- package/dist/server/modules/office/office-service.d.ts +67 -0
- package/dist/server/modules/office/office-service.js +359 -0
- package/dist/server/modules/office/office-service.js.map +1 -0
- package/dist/server/modules/opencli/opencli-bridge-skill-service.js +38 -14
- package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -1
- package/dist/server/modules/opencli/opencli-install-discovery.d.ts +4 -0
- package/dist/server/modules/opencli/opencli-install-discovery.js +94 -0
- package/dist/server/modules/opencli/opencli-install-discovery.js.map +1 -1
- package/dist/server/modules/opencli/opencli-runtime-builder.js +29 -0
- package/dist/server/modules/opencli/opencli-runtime-builder.js.map +1 -1
- package/dist/server/modules/opencli/opencli-runtime-guard.d.ts +2 -0
- package/dist/server/modules/opencli/opencli-runtime-guard.js +5 -0
- package/dist/server/modules/opencli/opencli-runtime-guard.js.map +1 -0
- package/dist/server/modules/ops-runtime/ops-runtime-controller.d.ts +70 -0
- package/dist/server/modules/ops-runtime/ops-runtime-controller.js +83 -0
- package/dist/server/modules/ops-runtime/ops-runtime-controller.js.map +1 -0
- package/dist/server/modules/ops-runtime/ops-runtime-service.d.ts +80 -0
- package/dist/server/modules/ops-runtime/ops-runtime-service.js +327 -0
- package/dist/server/modules/ops-runtime/ops-runtime-service.js.map +1 -0
- package/dist/server/modules/ops-runtime/ssh-ops-executor.d.ts +41 -0
- package/dist/server/modules/ops-runtime/ssh-ops-executor.js +478 -0
- package/dist/server/modules/ops-runtime/ssh-ops-executor.js.map +1 -0
- package/dist/server/modules/presentation/presentation-controller.d.ts +22 -0
- package/dist/server/modules/presentation/presentation-controller.js +59 -0
- package/dist/server/modules/presentation/presentation-controller.js.map +1 -0
- package/dist/server/modules/presentation/presentation-export-task-service.d.ts +24 -0
- package/dist/server/modules/presentation/presentation-export-task-service.js +137 -0
- package/dist/server/modules/presentation/presentation-export-task-service.js.map +1 -0
- package/dist/server/modules/presentation/presentation-export-types.d.ts +12 -0
- package/dist/server/modules/presentation/presentation-export-types.js +2 -0
- package/dist/server/modules/presentation/presentation-export-types.js.map +1 -0
- package/dist/server/modules/presentation/presentation-pdf-export-service.d.ts +20 -0
- package/dist/server/modules/presentation/presentation-pdf-export-service.js +29 -0
- package/dist/server/modules/presentation/presentation-pdf-export-service.js.map +1 -0
- package/dist/server/modules/presentation/presentation-pptx-export-service.d.ts +20 -0
- package/dist/server/modules/presentation/presentation-pptx-export-service.js +64 -0
- package/dist/server/modules/presentation/presentation-pptx-export-service.js.map +1 -0
- package/dist/server/modules/presentation/presentation-renderer.d.ts +21 -0
- package/dist/server/modules/presentation/presentation-renderer.js +208 -0
- package/dist/server/modules/presentation/presentation-renderer.js.map +1 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +3 -3
- package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
- package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +6 -1
- package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-process.js +2 -1
- package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/session-controller.d.ts +1 -0
- package/dist/server/modules/sessions/session-controller.js +59 -4
- package/dist/server/modules/sessions/session-controller.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.js +17 -5
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.d.ts +5 -1
- package/dist/server/modules/sessions/session-live-runtime-service.js +129 -8
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-config-service.d.ts +25 -1
- package/dist/server/modules/sessions/session-provider-config-service.js +54 -5
- package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
- package/dist/server/modules/sessions/workspace-office-mcp-config.d.ts +14 -0
- package/dist/server/modules/sessions/workspace-office-mcp-config.js +54 -0
- package/dist/server/modules/sessions/workspace-office-mcp-config.js.map +1 -0
- package/dist/server/modules/sessions/workspace-session-auth-service.d.ts +27 -0
- package/dist/server/modules/sessions/workspace-session-auth-service.js +109 -0
- package/dist/server/modules/sessions/workspace-session-auth-service.js.map +1 -0
- package/dist/server/modules/sessions/workspace-session-runtime-context-service.d.ts +51 -0
- package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +341 -0
- package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -0
- package/dist/server/modules/skills/assistant-runtime-skill-catalog.js +5 -0
- package/dist/server/modules/skills/assistant-runtime-skill-catalog.js.map +1 -1
- package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/SKILL.md +67 -0
- package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/agents/openai.yaml +4 -0
- package/dist/server/modules/skills/builtin-skills/codingns-workspace-session/references/cli-workflow.md +133 -0
- package/dist/server/modules/skills/skill-controller.d.ts +7 -0
- package/dist/server/modules/skills/skill-controller.js +7 -0
- package/dist/server/modules/skills/skill-controller.js.map +1 -1
- package/dist/server/modules/skills/skill-manager-service.d.ts +61 -0
- package/dist/server/modules/skills/skill-manager-service.js +218 -0
- package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
- package/dist/server/modules/skills/skill-name-policy.js +2 -1
- package/dist/server/modules/skills/skill-name-policy.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-client.d.ts +1 -0
- package/dist/server/modules/tasks/task-helper-client.js +45 -9
- package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
- package/dist/server/modules/tasks/task-types.d.ts +5 -0
- package/dist/server/modules/tasks/task-types.js +6 -1
- package/dist/server/modules/tasks/task-types.js.map +1 -1
- package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js +2 -1
- package/dist/server/modules/terminal/runtime/conpty-session-agent-process.js.map +1 -1
- package/dist/server/modules/terminal/runtime/node-pty-loader.d.ts +5 -0
- package/dist/server/modules/terminal/runtime/node-pty-loader.js +68 -0
- package/dist/server/modules/terminal/runtime/node-pty-loader.js.map +1 -0
- package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js +2 -1
- package/dist/server/modules/terminal/runtime/pty-broker-agent-process.js.map +1 -1
- package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js +6 -9
- package/dist/server/modules/terminal/runtime/pty-host-attachment-manager.js.map +1 -1
- package/dist/server/modules/terminal/runtime/pty-runtime-manager.js +6 -9
- package/dist/server/modules/terminal/runtime/pty-runtime-manager.js.map +1 -1
- package/dist/server/routes/assistant.d.ts +2 -1
- package/dist/server/routes/assistant.js +20 -1
- package/dist/server/routes/assistant.js.map +1 -1
- package/dist/server/routes/browser-runtime.d.ts +3 -0
- package/dist/server/routes/browser-runtime.js +14 -0
- package/dist/server/routes/browser-runtime.js.map +1 -0
- package/dist/server/routes/document-runtime.d.ts +3 -0
- package/dist/server/routes/document-runtime.js +18 -0
- package/dist/server/routes/document-runtime.js.map +1 -0
- package/dist/server/routes/office.d.ts +3 -0
- package/dist/server/routes/office.js +16 -0
- package/dist/server/routes/office.js.map +1 -0
- package/dist/server/routes/ops-runtime.d.ts +3 -0
- package/dist/server/routes/ops-runtime.js +13 -0
- package/dist/server/routes/ops-runtime.js.map +1 -0
- package/dist/server/routes/presentation.d.ts +3 -0
- package/dist/server/routes/presentation.js +5 -0
- package/dist/server/routes/presentation.js.map +1 -0
- package/dist/server/routes/skills.js +1 -0
- package/dist/server/routes/skills.js.map +1 -1
- package/dist/server/server/create-server.d.ts +36 -0
- package/dist/server/server/create-server.js +215 -4
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/server/release-manifest-sync.d.ts +1 -0
- package/dist/server/server/release-manifest-sync.js +2 -2
- package/dist/server/server/release-manifest-sync.js.map +1 -1
- package/dist/server/server/start-host.js +1 -1
- package/dist/server/server/start-host.js.map +1 -1
- package/dist/server/shared/http/error-handler.js +53 -19
- package/dist/server/shared/http/error-handler.js.map +1 -1
- package/dist/server/shared/utils/install-console-timestamp-prefix.d.ts +1 -0
- package/dist/server/shared/utils/install-console-timestamp-prefix.js +28 -0
- package/dist/server/shared/utils/install-console-timestamp-prefix.js.map +1 -0
- package/dist/server/storage/repositories/auth-token-repository.js +22 -6
- package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
- package/dist/server/storage/repositories/browser-profile-repository.d.ts +18 -0
- package/dist/server/storage/repositories/browser-profile-repository.js +134 -0
- package/dist/server/storage/repositories/browser-profile-repository.js.map +1 -0
- package/dist/server/storage/repositories/document-comment-repository.d.ts +10 -0
- package/dist/server/storage/repositories/document-comment-repository.js +118 -0
- package/dist/server/storage/repositories/document-comment-repository.js.map +1 -0
- package/dist/server/storage/repositories/document-repository.d.ts +16 -0
- package/dist/server/storage/repositories/document-repository.js +109 -0
- package/dist/server/storage/repositories/document-repository.js.map +1 -0
- package/dist/server/storage/repositories/document-revision-repository.d.ts +10 -0
- package/dist/server/storage/repositories/document-revision-repository.js +79 -0
- package/dist/server/storage/repositories/document-revision-repository.js.map +1 -0
- package/dist/server/storage/repositories/document-template-repository.d.ts +13 -0
- package/dist/server/storage/repositories/document-template-repository.js +244 -0
- package/dist/server/storage/repositories/document-template-repository.js.map +1 -0
- package/dist/server/storage/repositories/office-approval-repository.d.ts +11 -0
- package/dist/server/storage/repositories/office-approval-repository.js +109 -0
- package/dist/server/storage/repositories/office-approval-repository.js.map +1 -0
- package/dist/server/storage/repositories/office-artifact-repository.d.ts +10 -0
- package/dist/server/storage/repositories/office-artifact-repository.js +89 -0
- package/dist/server/storage/repositories/office-artifact-repository.js.map +1 -0
- package/dist/server/storage/repositories/office-audit-event-repository.d.ts +8 -0
- package/dist/server/storage/repositories/office-audit-event-repository.js +54 -0
- package/dist/server/storage/repositories/office-audit-event-repository.js.map +1 -0
- package/dist/server/storage/repositories/office-connector-repository.d.ts +10 -0
- package/dist/server/storage/repositories/office-connector-repository.js +97 -0
- package/dist/server/storage/repositories/office-connector-repository.js.map +1 -0
- package/dist/server/storage/repositories/office-receipt-repository.d.ts +8 -0
- package/dist/server/storage/repositories/office-receipt-repository.js +48 -0
- package/dist/server/storage/repositories/office-receipt-repository.js.map +1 -0
- package/dist/server/storage/repositories/office-rollback-record-repository.d.ts +8 -0
- package/dist/server/storage/repositories/office-rollback-record-repository.js +60 -0
- package/dist/server/storage/repositories/office-rollback-record-repository.js.map +1 -0
- package/dist/server/storage/repositories/office-task-repository.d.ts +19 -0
- package/dist/server/storage/repositories/office-task-repository.js +199 -0
- package/dist/server/storage/repositories/office-task-repository.js.map +1 -0
- package/dist/server/storage/repositories/office-task-step-repository.d.ts +10 -0
- package/dist/server/storage/repositories/office-task-step-repository.js +110 -0
- package/dist/server/storage/repositories/office-task-step-repository.js.map +1 -0
- package/dist/server/storage/repositories/ops-target-repository.d.ts +16 -0
- package/dist/server/storage/repositories/ops-target-repository.js +119 -0
- package/dist/server/storage/repositories/ops-target-repository.js.map +1 -0
- package/dist/server/storage/repositories/session-binding-repository.d.ts +4 -0
- package/dist/server/storage/repositories/session-binding-repository.js +70 -69
- package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-changed-file-repository.d.ts +6 -0
- package/dist/server/storage/repositories/session-changed-file-repository.js +44 -43
- package/dist/server/storage/repositories/session-changed-file-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-fork-repository.d.ts +2 -0
- package/dist/server/storage/repositories/session-fork-repository.js +42 -41
- package/dist/server/storage/repositories/session-fork-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-index-repository.d.ts +5 -0
- package/dist/server/storage/repositories/session-index-repository.js +153 -152
- package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-message-attachment-repository.d.ts +7 -0
- package/dist/server/storage/repositories/session-message-attachment-repository.js +91 -90
- package/dist/server/storage/repositories/session-message-attachment-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-message-origin-repository.d.ts +2 -0
- package/dist/server/storage/repositories/session-message-origin-repository.js +25 -24
- package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-state-repository.d.ts +2 -0
- package/dist/server/storage/repositories/session-state-repository.js +35 -34
- package/dist/server/storage/repositories/session-state-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-status-snapshot-repository.d.ts +2 -0
- package/dist/server/storage/repositories/session-status-snapshot-repository.js +25 -24
- package/dist/server/storage/repositories/session-status-snapshot-repository.js.map +1 -1
- package/dist/server/storage/sqlite/client.js +123 -1
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +300 -1
- package/dist/server/types/domain.d.ts +205 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +3 -2
- package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +26 -19
- package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
- package/package.json +17 -8
- package/scripts/postinstall.mjs +159 -7
- package/vendor/node-pty-fork/LICENSE +69 -0
- package/vendor/node-pty-fork/README.md +91 -0
- package/vendor/node-pty-fork/binding.gyp +117 -0
- package/vendor/node-pty-fork/deps/.editorconfig +2 -0
- package/vendor/node-pty-fork/deps/winpty/.drone.yml +17 -0
- package/vendor/node-pty-fork/deps/winpty/.gitattributes +19 -0
- package/vendor/node-pty-fork/deps/winpty/LICENSE +21 -0
- package/vendor/node-pty-fork/deps/winpty/Makefile +166 -0
- package/vendor/node-pty-fork/deps/winpty/README.md +151 -0
- package/vendor/node-pty-fork/deps/winpty/RELEASES.md +280 -0
- package/vendor/node-pty-fork/deps/winpty/VERSION.txt +1 -0
- package/vendor/node-pty-fork/deps/winpty/configure +167 -0
- package/vendor/node-pty-fork/deps/winpty/misc/BufferResizeTests.cc +90 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ChangeScreenBuffer.cc +53 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ClearConsole.cc +72 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ConinMode.cc +117 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ConinMode.ps1 +116 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ConoutMode.cc +113 -0
- package/vendor/node-pty-fork/deps/winpty/misc/DebugClient.py +42 -0
- package/vendor/node-pty-fork/deps/winpty/misc/DebugServer.py +63 -0
- package/vendor/node-pty-fork/deps/winpty/misc/DumpLines.py +5 -0
- package/vendor/node-pty-fork/deps/winpty/misc/EnableExtendedFlags.txt +46 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +528 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +633 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP932.txt +630 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP936.txt +630 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP949.txt +630 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/CP950.txt +630 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +16 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/Results.txt +4 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +144 -0
- package/vendor/node-pty-fork/deps/winpty/misc/FontSurvey.cc +100 -0
- package/vendor/node-pty-fork/deps/winpty/misc/FormatChar.h +21 -0
- package/vendor/node-pty-fork/deps/winpty/misc/FreezePerfTest.cc +62 -0
- package/vendor/node-pty-fork/deps/winpty/misc/GetCh.cc +20 -0
- package/vendor/node-pty-fork/deps/winpty/misc/GetConsolePos.cc +41 -0
- package/vendor/node-pty-fork/deps/winpty/misc/GetFont.cc +261 -0
- package/vendor/node-pty-fork/deps/winpty/misc/IdentifyConsoleWindow.ps1 +51 -0
- package/vendor/node-pty-fork/deps/winpty/misc/IsNewConsole.cc +87 -0
- package/vendor/node-pty-fork/deps/winpty/misc/MouseInputNotes.txt +90 -0
- package/vendor/node-pty-fork/deps/winpty/misc/MoveConsoleWindow.cc +34 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Notes.txt +219 -0
- package/vendor/node-pty-fork/deps/winpty/misc/OSVersion.cc +27 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ScreenBufferFreezeInactive.cc +101 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ScreenBufferTest.cc +671 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ScreenBufferTest2.cc +151 -0
- package/vendor/node-pty-fork/deps/winpty/misc/SelectAllTest.cc +45 -0
- package/vendor/node-pty-fork/deps/winpty/misc/SetBufferSize.cc +32 -0
- package/vendor/node-pty-fork/deps/winpty/misc/SetCursorPos.cc +10 -0
- package/vendor/node-pty-fork/deps/winpty/misc/SetFont.cc +145 -0
- package/vendor/node-pty-fork/deps/winpty/misc/SetWindowRect.cc +36 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ShowArgv.cc +12 -0
- package/vendor/node-pty-fork/deps/winpty/misc/ShowConsoleInput.cc +40 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Spew.py +5 -0
- package/vendor/node-pty-fork/deps/winpty/misc/TestUtil.cc +172 -0
- package/vendor/node-pty-fork/deps/winpty/misc/UnicodeDoubleWidthTest.cc +102 -0
- package/vendor/node-pty-fork/deps/winpty/misc/UnicodeWideTest1.cc +246 -0
- package/vendor/node-pty-fork/deps/winpty/misc/UnicodeWideTest2.cc +130 -0
- package/vendor/node-pty-fork/deps/winpty/misc/UnixEcho.cc +89 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Utf16Echo.cc +46 -0
- package/vendor/node-pty-fork/deps/winpty/misc/VeryLargeRead.cc +122 -0
- package/vendor/node-pty-fork/deps/winpty/misc/VkEscapeTest.cc +56 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win10ResizeWhileFrozen.cc +52 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win10WrapTest1.cc +57 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win10WrapTest2.cc +30 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win32Echo1.cc +26 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win32Echo2.cc +19 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win32Test1.cc +46 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win32Test2.cc +70 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win32Test3.cc +78 -0
- package/vendor/node-pty-fork/deps/winpty/misc/Win32Write1.cc +44 -0
- package/vendor/node-pty-fork/deps/winpty/misc/WindowsBugCrashReader.cc +27 -0
- package/vendor/node-pty-fork/deps/winpty/misc/WriteConsole.cc +106 -0
- package/vendor/node-pty-fork/deps/winpty/misc/build32.sh +9 -0
- package/vendor/node-pty-fork/deps/winpty/misc/build64.sh +9 -0
- package/vendor/node-pty-fork/deps/winpty/misc/color-test.sh +212 -0
- package/vendor/node-pty-fork/deps/winpty/misc/font-notes.txt +300 -0
- package/vendor/node-pty-fork/deps/winpty/misc/winbug-15048.cc +201 -0
- package/vendor/node-pty-fork/deps/winpty/ship/build-pty4j-libpty.bat +36 -0
- package/vendor/node-pty-fork/deps/winpty/ship/common_ship.py +53 -0
- package/vendor/node-pty-fork/deps/winpty/ship/make_msvc_package.py +165 -0
- package/vendor/node-pty-fork/deps/winpty/ship/ship.py +108 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Agent.cc +605 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Agent.h +103 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/AgentCreateDesktop.cc +84 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/AgentCreateDesktop.h +28 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleFont.cc +632 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleFont.h +28 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleInput.cc +852 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleInput.h +109 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleInputReencoding.cc +121 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleInputReencoding.h +36 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleLine.cc +152 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/ConsoleLine.h +41 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Coord.h +87 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/DebugShowInput.cc +239 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/DebugShowInput.h +32 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/DefaultInputMap.cc +422 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/DefaultInputMap.h +28 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/DsrSender.h +30 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/EventLoop.cc +99 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/EventLoop.h +47 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/InputMap.cc +246 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/InputMap.h +114 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/LargeConsoleRead.cc +71 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/LargeConsoleRead.h +68 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/NamedPipe.cc +378 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/NamedPipe.h +125 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Scraper.cc +699 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Scraper.h +103 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/SimplePool.h +75 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/SmallRect.h +143 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Terminal.cc +535 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Terminal.h +69 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/UnicodeEncoding.h +157 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/UnicodeEncodingTest.cc +189 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Win32Console.cc +107 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Win32Console.h +67 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Win32ConsoleBuffer.cc +193 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/Win32ConsoleBuffer.h +99 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/main.cc +114 -0
- package/vendor/node-pty-fork/deps/winpty/src/agent/subdir.mk +61 -0
- package/vendor/node-pty-fork/deps/winpty/src/configurations.gypi +60 -0
- package/vendor/node-pty-fork/deps/winpty/src/debugserver/DebugServer.cc +117 -0
- package/vendor/node-pty-fork/deps/winpty/src/debugserver/subdir.mk +41 -0
- package/vendor/node-pty-fork/deps/winpty/src/include/winpty.h +242 -0
- package/vendor/node-pty-fork/deps/winpty/src/include/winpty_constants.h +131 -0
- package/vendor/node-pty-fork/deps/winpty/src/libwinpty/AgentLocation.cc +75 -0
- package/vendor/node-pty-fork/deps/winpty/src/libwinpty/AgentLocation.h +28 -0
- package/vendor/node-pty-fork/deps/winpty/src/libwinpty/LibWinptyException.h +54 -0
- package/vendor/node-pty-fork/deps/winpty/src/libwinpty/WinptyInternal.h +72 -0
- package/vendor/node-pty-fork/deps/winpty/src/libwinpty/subdir.mk +46 -0
- package/vendor/node-pty-fork/deps/winpty/src/libwinpty/winpty.cc +970 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/AgentMsg.h +38 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/BackgroundDesktop.cc +122 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/BackgroundDesktop.h +73 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/Buffer.cc +103 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/Buffer.h +102 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/DebugClient.cc +187 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/DebugClient.h +38 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/GenRandom.cc +138 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/GenRandom.h +55 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/GetCommitHash.bat +13 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/Mutex.h +54 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/OsModule.h +63 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/OwnedHandle.cc +36 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/OwnedHandle.h +45 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/PrecompiledHeader.h +43 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/StringBuilder.h +227 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/StringBuilderTest.cc +114 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/StringUtil.cc +55 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/StringUtil.h +80 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/TimeMeasurement.h +63 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/UnixCtrlChars.h +45 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/UpdateGenVersion.bat +20 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WindowsSecurity.cc +460 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WindowsSecurity.h +104 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WindowsVersion.cc +252 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WindowsVersion.h +29 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyAssert.cc +55 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyAssert.h +64 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyException.cc +57 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyException.h +43 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyVersion.cc +42 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/WinptyVersion.h +27 -0
- package/vendor/node-pty-fork/deps/winpty/src/shared/winpty_snprintf.h +99 -0
- package/vendor/node-pty-fork/deps/winpty/src/subdir.mk +5 -0
- package/vendor/node-pty-fork/deps/winpty/src/tests/subdir.mk +28 -0
- package/vendor/node-pty-fork/deps/winpty/src/tests/trivial_test.cc +158 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/InputHandler.cc +114 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/InputHandler.h +56 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/OutputHandler.cc +80 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/OutputHandler.h +53 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/Util.cc +86 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/Util.h +31 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/WakeupFd.cc +70 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/WakeupFd.h +42 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/main.cc +729 -0
- package/vendor/node-pty-fork/deps/winpty/src/unix-adapter/subdir.mk +41 -0
- package/vendor/node-pty-fork/deps/winpty/src/winpty.gyp +206 -0
- package/vendor/node-pty-fork/deps/winpty/vcbuild.bat +83 -0
- package/vendor/node-pty-fork/lib/conpty_console_list_agent.js +20 -0
- package/vendor/node-pty-fork/lib/conpty_console_list_agent.js.map +1 -0
- package/vendor/node-pty-fork/lib/eventEmitter2.js +47 -0
- package/vendor/node-pty-fork/lib/eventEmitter2.js.map +1 -0
- package/vendor/node-pty-fork/lib/eventEmitter2.test.js +30 -0
- package/vendor/node-pty-fork/lib/eventEmitter2.test.js.map +1 -0
- package/vendor/node-pty-fork/lib/index.js +51 -0
- package/vendor/node-pty-fork/lib/index.js.map +1 -0
- package/vendor/node-pty-fork/lib/interfaces.js +7 -0
- package/vendor/node-pty-fork/lib/interfaces.js.map +1 -0
- package/vendor/node-pty-fork/lib/shared/conout.js +11 -0
- package/vendor/node-pty-fork/lib/shared/conout.js.map +1 -0
- package/vendor/node-pty-fork/lib/terminal.js +190 -0
- package/vendor/node-pty-fork/lib/terminal.js.map +1 -0
- package/vendor/node-pty-fork/lib/terminal.test.js +139 -0
- package/vendor/node-pty-fork/lib/terminal.test.js.map +1 -0
- package/vendor/node-pty-fork/lib/testUtils.test.js +28 -0
- package/vendor/node-pty-fork/lib/testUtils.test.js.map +1 -0
- package/vendor/node-pty-fork/lib/types.js +7 -0
- package/vendor/node-pty-fork/lib/types.js.map +1 -0
- package/vendor/node-pty-fork/lib/unixTerminal.js +304 -0
- package/vendor/node-pty-fork/lib/unixTerminal.js.map +1 -0
- package/vendor/node-pty-fork/lib/unixTerminal.test.js +330 -0
- package/vendor/node-pty-fork/lib/unixTerminal.test.js.map +1 -0
- package/vendor/node-pty-fork/lib/utils.js +17 -0
- package/vendor/node-pty-fork/lib/utils.js.map +1 -0
- package/vendor/node-pty-fork/lib/windowsConoutConnection.js +122 -0
- package/vendor/node-pty-fork/lib/windowsConoutConnection.js.map +1 -0
- package/vendor/node-pty-fork/lib/windowsPtyAgent.js +324 -0
- package/vendor/node-pty-fork/lib/windowsPtyAgent.js.map +1 -0
- package/vendor/node-pty-fork/lib/windowsPtyAgent.test.js +90 -0
- package/vendor/node-pty-fork/lib/windowsPtyAgent.test.js.map +1 -0
- package/vendor/node-pty-fork/lib/windowsTerminal.js +201 -0
- package/vendor/node-pty-fork/lib/windowsTerminal.js.map +1 -0
- package/vendor/node-pty-fork/lib/windowsTerminal.test.js +203 -0
- package/vendor/node-pty-fork/lib/windowsTerminal.test.js.map +1 -0
- package/vendor/node-pty-fork/lib/worker/conoutSocketWorker.js +22 -0
- package/vendor/node-pty-fork/lib/worker/conoutSocketWorker.js.map +1 -0
- package/vendor/node-pty-fork/package.json +35 -0
- package/vendor/node-pty-fork/scripts/apply-patches.mjs +341 -0
- package/vendor/node-pty-fork/scripts/fetch-upstream.mjs +41 -0
- package/vendor/node-pty-fork/scripts/install-smoke.cjs +59 -0
- package/vendor/node-pty-fork/scripts/smoke-load.cjs +10 -0
- package/vendor/node-pty-fork/scripts/sync-upstream.mjs +29 -0
- package/vendor/node-pty-fork/scripts/verify-runtime.cjs +54 -0
- package/vendor/node-pty-fork/scripts/verify-runtime.test.cjs +22 -0
- package/vendor/node-pty-fork/scripts/verify-tarball.cjs +80 -0
- package/vendor/node-pty-fork/src/conpty_console_list_agent.ts +19 -0
- package/vendor/node-pty-fork/src/eventEmitter2.test.ts +30 -0
- package/vendor/node-pty-fork/src/eventEmitter2.ts +48 -0
- package/vendor/node-pty-fork/src/index.ts +51 -0
- package/vendor/node-pty-fork/src/interfaces.ts +129 -0
- package/vendor/node-pty-fork/src/native.d.ts +56 -0
- package/vendor/node-pty-fork/src/shared/conout.ts +15 -0
- package/vendor/node-pty-fork/src/terminal.test.ts +119 -0
- package/vendor/node-pty-fork/src/terminal.ts +211 -0
- package/vendor/node-pty-fork/src/testUtils.test.ts +23 -0
- package/vendor/node-pty-fork/src/tsconfig.json +22 -0
- package/vendor/node-pty-fork/src/types.ts +15 -0
- package/vendor/node-pty-fork/src/unix/pty.cc +826 -0
- package/vendor/node-pty-fork/src/unix/spawn-helper.cc +23 -0
- package/vendor/node-pty-fork/src/unixTerminal.test.ts +335 -0
- package/vendor/node-pty-fork/src/unixTerminal.ts +320 -0
- package/vendor/node-pty-fork/src/utils.ts +9 -0
- package/vendor/node-pty-fork/src/win/conpty.cc +500 -0
- package/vendor/node-pty-fork/src/win/conpty_console_list.cc +43 -0
- package/vendor/node-pty-fork/src/win/path_util.cc +73 -0
- package/vendor/node-pty-fork/src/win/path_util.h +22 -0
- package/vendor/node-pty-fork/src/win/winpty.cc +322 -0
- package/vendor/node-pty-fork/src/windowsConoutConnection.ts +79 -0
- package/vendor/node-pty-fork/src/windowsPtyAgent.test.ts +94 -0
- package/vendor/node-pty-fork/src/windowsPtyAgent.ts +323 -0
- package/vendor/node-pty-fork/src/windowsTerminal.test.ts +214 -0
- package/vendor/node-pty-fork/src/windowsTerminal.ts +208 -0
- package/vendor/node-pty-fork/src/worker/conoutSocketWorker.ts +22 -0
- package/vendor/node-pty-fork/typings/node-pty.d.ts +203 -0
- package/dist/public/assets/FileContextPanel-xGTYDclT.js +0 -1
- package/dist/public/assets/WorkbenchLayout-DScHaza9.js +0 -244
- package/dist/public/assets/WorkbenchShellRoute-DN6LdrqC.js +0 -1
- package/dist/public/assets/WorkbenchShellRoute-DhQo_0vu.css +0 -1
- package/dist/public/assets/file-tree-icon-lfU9Ag77.js +0 -3
- package/dist/public/assets/index-CFYXCsyx.css +0 -1
- package/dist/public/assets/index-NGxWr8Ix.js +0 -42
- package/dist/server/modules/channels/wechat-claw-client.d.ts +0 -51
- package/dist/server/modules/channels/wechat-claw-client.js +0 -245
- package/dist/server/modules/channels/wechat-claw-client.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as c,j as e,t as s,C as I,c as Fe,e as ce,w as ss,A as be,Q as fe,S as Us,T as Ut,U as us,V as Ot,W as Rs,h as Ft,f as Bt,X as gs,q as Vt,n as Ht,d as ms,m as qt}from"./index-NGxWr8Ix.js";import{g as _t,i as Os,k as zt,l as Wt,n as $t,o as Kt,e as Be,f as Jt,p as Qt,u as ht,j as Zt,c as Gt,L as pt,T as ft,q as bt}from"./App-tXOqoHNl.js";import{q as Fs,al as Yt,af as xt,A as Xt,f as G,V as Z,k as ie,v as Q,M as Oe,am as en,an as sn,ao as tn,h as ae,i as we,j as Re,l as nn,m as an,u as De,ap as Me}from"./model-switch-api-CPtou49j.js";import{M as ln,W as Se,D as Ye}from"./WorkbenchModal-BWXYSXmC.js";import{M as rn}from"./MobileTopHeaderFrame-CkdnZ_MU.js";const Bs=2e4,cn=1e3,on=5e3;function dn({isOpen:t,onClose:a}){const[n,r]=c.useState(null),[o,u]=c.useState(null),[x,v]=c.useState(!1),[h,M]=c.useState(!1),[p,w]=c.useState(null),k=c.useRef(null);if(c.useEffect(()=>{if(!t)return;let m=!1;async function g(){v(!0),w(null),u(null);try{const y=await I.request("/api/observability/runtime/session",{method:"POST",body:JSON.stringify({ttlMs:Bs})});if(m){await hs(y.sessionId);return}k.current=y.sessionId,r(y);const C=await Vs(y.sessionId);if(m){await hs(y.sessionId);return}u(C)}catch(y){m||w(ps(y))}finally{m||v(!1)}}return g(),()=>{m=!0;const y=k.current;k.current=null,r(null),u(null),v(!1),M(!1),w(null),y&&hs(y)}},[t]),c.useEffect(()=>{const m=(n==null?void 0:n.sessionId)??null;if(!t||!m)return;const g=m;let y=!1;async function C(){M(!0);try{const l=await Vs(g);y||(u(l),w(null))}catch(l){y||w(ps(l))}finally{y||M(!1)}}const b=window.setInterval(()=>{C()},cn);return()=>{y=!0,window.clearInterval(b)}},[t,n==null?void 0:n.sessionId]),c.useEffect(()=>{const m=(n==null?void 0:n.sessionId)??null;if(!t||!m)return;const g=m;let y=!1;async function C(){try{const l=await I.request(`/api/observability/runtime/session/${g}/heartbeat`,{method:"POST",body:JSON.stringify({ttlMs:Bs})});y||r(l)}catch(l){y||w(ps(l))}}const b=window.setInterval(()=>{C()},on);return()=>{y=!0,window.clearInterval(b)}},[t,n==null?void 0:n.sessionId]),!t||typeof document>"u")return null;const j=Object.entries((o==null?void 0:o.backgroundTasks.taskTypes)??{}),E=Object.entries((o==null?void 0:o.schedulers.schedulers)??{}),f=Object.entries((o==null?void 0:o.backgroundTasks.totals)??{});return _t.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":p?"error":"active",children:p?s("settings.parallelTaskDebugStatusError"):s("settings.parallelTaskDebugStatusActive")}),e.jsx(ln,{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:fs(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:fs(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:un((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")})]})]}),x?e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugLoading")}):null,!x&&p?e.jsx("div",{className:"parallel-task-debug-error",children:p}):null,!x&&!p&&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:h?s("common.loading"):s("settings.parallelTaskDebugAutoRefresh")})]}),e.jsx("div",{className:"parallel-task-debug-counter-grid",children:f.map(([m,g])=>e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:gn(m)}),e.jsx("strong",{children:g})]},m))})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugTaskMetricsTitle")}),e.jsx("span",{children:j.length})]}),j.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:j.map(([m,g])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:m}),e.jsx("span",{children:Hs(g.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitAvg"),": ",te(g.waitMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunAvg"),": ",te(g.runMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMax"),": ",te(g.runMs.max)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugStartedCount"),": ",g.counters.started??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFinishedCount"),": ",g.counters.finished??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFailedCount"),": ",g.counters.failed??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugCacheHitCount"),": ",g.counters.cache_hit??0]})]})]},m))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugSchedulerTitle")}),e.jsx("span",{children:E.length})]}),E.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:E.map(([m,g])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:m}),e.jsx("span",{children:g.lastIdle?s("settings.parallelTaskDebugIdle"):s("settings.parallelTaskDebugBusy")})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTickTotal"),": ",g.tickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugIdleTickTotal"),": ",g.idleTickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCountTotal"),": ",g.taskCountTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSchedulerErrorTotal"),": ",g.errorTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugLastDuration"),": ",te(g.lastDurationMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugNextDelay"),": ",te(g.nextDelayMs)]})]})]},m))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugEventLoopTitle")}),e.jsx("span",{children:o.eventLoop.enabled?s("settings.parallelTaskDebugCollectorEnabled"):s("settings.parallelTaskDebugCollectorDisabled")})]}),e.jsxs("div",{className:"parallel-task-debug-counter-grid",children:[e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopResolution")}),e.jsx("strong",{children:te(o.eventLoop.resolutionMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMean")}),e.jsx("strong",{children:te(o.eventLoop.meanMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP95")}),e.jsx("strong",{children:te(o.eventLoop.p95Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP99")}),e.jsx("strong",{children:te(o.eventLoop.p99Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMax")}),e.jsx("strong",{children:te(o.eventLoop.maxMs)})]})]})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugRecentActivitiesTitle")}),e.jsx("span",{children:o.recentTaskActivities.length})]}),o.recentTaskActivities.length>0?e.jsx("div",{className:"parallel-task-debug-activity-list",children:o.recentTaskActivities.map(m=>e.jsxs("article",{className:"parallel-task-debug-activity-item",children:[e.jsxs("div",{className:"parallel-task-debug-activity-main",children:[e.jsxs("div",{className:"parallel-task-debug-activity-title-row",children:[e.jsx("strong",{children:m.taskType}),e.jsx("span",{children:mn(m.eventType)}),e.jsx("span",{children:Hs(m.executionLane)})]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugTaskKey"),": ",m.key]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugStatus"),": ",m.status?hn(m.status):"-"]})]}),e.jsxs("div",{className:"parallel-task-debug-activity-meta",children:[e.jsx("span",{children:fs(m.recordedAt)}),e.jsxs("span",{children:[s("settings.parallelTaskDebugAttempt"),": ",m.attempt??"-"]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitMs"),": ",te(m.waitMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMs"),": ",te(m.runMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSource"),": ",m.source??"-"]}),m.errorMessage?e.jsxs("span",{children:[s("settings.parallelTaskDebugError"),": ",m.errorMessage]}):null]})]},m.eventId))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]})]}):null]})]})]}),document.body)}async function Vs(t){return await I.request(`/api/observability/runtime?sessionId=${encodeURIComponent(t)}`)}async function hs(t){try{await I.request(`/api/observability/runtime/session/${t}`,{method:"DELETE"})}catch{}}function ps(t){return t instanceof Error&&t.message?t.message:s("settings.parallelTaskDebugLoadFailed")}function fs(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function te(t){return t==null||Number.isNaN(t)?"-":`${Math.round(t*100)/100} ms`}function un(t){return t===null||Number.isNaN(t)?"-":`${Math.round(t/1e3)} s`}function gn(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 Hs(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 mn(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 hn(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 qs(){const t=Fe(),a=ce.getState(),n=await t.bridge.getAndroidRuntimeInfo();if(!n.ok||!n.value)throw new Error(n.detail??"读取 Android 运行时信息失败。");const r=await I.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 pn(t){return Fe().bridge.installAndroidUpdate(t)}function fn(){const[t,a]=c.useState(!1),[n,r]=c.useState(!1),[o,u]=c.useState(null),[x,v]=c.useState(null),[h,M]=c.useState(null),[p,w]=c.useState(!1),[k,j]=c.useState(null),E=c.useRef(!1);c.useEffect(()=>{if(k===null){E.current=!1;return}const g=k;async function y(){if(!E.current){E.current=!0;try{const l=await qs();if(M(l.manifest),v(l.currentVersion),w(l.hasUpdate),!l.hasUpdate||l.currentVersionCode>=g){u(s("settings.androidInstallSucceeded"));return}u(s("settings.androidInstallCancelled"))}catch(l){u(l instanceof Error?l.message:s("settings.releaseCheckFailed"))}finally{j(null)}}}function C(){y()}function b(){document.visibilityState==="visible"&&y()}return window.addEventListener("focus",C),document.addEventListener("visibilitychange",b),()=>{window.removeEventListener("focus",C),document.removeEventListener("visibilitychange",b)}},[k]);async function f(){a(!0),u(null),j(null);try{const g=await qs();M(g.manifest),v(g.currentVersion),w(g.hasUpdate),u(g.hasUpdate?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate"))}catch(g){u(g instanceof Error?g.message:s("settings.releaseCheckFailed"))}finally{a(!1)}}async function m(){if(h){r(!0),u(null),j(null);try{const g=await pn(h);if(g.status==="installer_started"){u(s("settings.androidInstallerStarted")),j(h.versionCode);return}if(g.status==="permission_required"){u(g.detail??s("settings.androidInstallPermissionRequired")),j(null);return}if(g.status==="already_up_to_date"){u(s("settings.releaseUpToDate")),w(!1),j(null);return}u(g.detail??s("settings.releaseInstallFailed")),j(null)}catch(g){u(g instanceof Error?g.message:s("settings.releaseInstallFailed")),j(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:x??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:(h==null?void 0:h.version)??"-"})]})]}),o?e.jsx("p",{className:"settings-update-status","data-tone":p?"warning":"success",children:o}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:t||n,onClick:f,children:t?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!h||!p||n,onClick:m,children:n?s("common.loading"):s("settings.releaseInstallNow")})]})]})}function bn(){const t=Fe(),a=t.isDesktop,[n,r]=c.useState(!1),[o,u]=c.useState(!1),[x,v]=c.useState(!1),[h,M]=c.useState(null),[p,w]=c.useState(null),k=Os(T=>T.latestState),j=Os(T=>T.pendingRestartVersion),E=(k==null?void 0:k.currentVersion)??null,f=(k==null?void 0:k.manifest)??null,m=(k==null?void 0:k.hasUpdate)??!1,g=!!j,y=g&&p!==j;async function C(){if(!g){r(!0),M(null);try{const T=await zt({notify:"always"});M(_s(T.manifest,T.hasUpdate))}catch(T){M(T instanceof Error?T.message:s("settings.releaseCheckFailed"))}finally{r(!1)}}}async function b(){if(!(!f||!m||g)){u(!0),M(null);try{const T=await Wt();if(!T.ok){M(T.detail??s("settings.releaseInstallFailed"));return}$t(f.version),w(null),M(s("settings.releaseRestartRequired"))}catch(T){M(T instanceof Error?T.message:s("settings.releaseInstallFailed"))}finally{u(!1)}}}async function l(){if(f!=null&&f.htmlUrl){v(!0);try{const T=await t.bridge.openExternal(f.htmlUrl);T.ok||M(T.detail??s("settings.releasePageOpenFailed"))}catch(T){M(T instanceof Error?T.message:s("settings.releasePageOpenFailed"))}finally{v(!1)}}}const S=!!(a&&f&&m&&!g),A=h??(a?g?s("settings.releaseRestartRequired"):k?_s(k.manifest,k.hasUpdate):null:s("settings.clientUpdateUnsupported"));return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-update-card",children:[e.jsxs("div",{className:"settings-update-summary",children:[e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseCurrentVersion")}),e.jsx("strong",{className:"settings-update-value",children:E??s("settings.releaseUnknownVersion")})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(f==null?void 0:f.version)??j??"-"})]})]}),A?e.jsx("p",{className:"settings-update-status","data-tone":xn(f,m,A,g),children:A}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:!a||n||o||g,onClick:C,children:n?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!S||o,onClick:b,children:o?s("common.loading"):s("settings.releaseInstallNow")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:!(f!=null&&f.htmlUrl)||n||o||x,onClick:l,children:x?s("common.loading"):s("settings.releaseOpenPage")})]})]}),e.jsx(vn,{open:y,version:j,onClose:()=>w(j)})]})}function _s(t,a){return a?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate")}function xn(t,a,n,r){return n===s("settings.clientUpdateUnsupported")?"neutral":r||a?"warning":"success"}function vn({open:t,version:a,onClose:n}){const[r,o]=c.useState(!1),[u,x]=c.useState(null);async function v(){o(!0),x(null);try{await Kt()}catch(h){x(h instanceof Error?h.message:s("settings.releaseRestartFailed")),o(!1)}}return e.jsx(Se,{open:t,title:s("settings.releaseRestartDialogTitle"),description:s("settings.releaseRestartDialogDescription",{version:a??"-"}),onClose:()=>{r||n()},children:e.jsxs("div",{className:"settings-update-card",children:[u?e.jsx("p",{className:"settings-update-status","data-tone":"danger",children:u}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:r,onClick:n,children:s("settings.releaseRestartLater")}),e.jsx("button",{className:"primary-button",type:"button",disabled:r,onClick:v,children:r?s("common.loading"):s("settings.releaseRestartConfirm")})]})]})})}function vt(){const t=Fe();return t.platform==="desktop"?e.jsx(bn,{}):t.platform==="android"?e.jsx(fn,{}):e.jsx("div",{className:"settings-update-card",children:e.jsx("p",{className:"settings-update-status","data-tone":"neutral",children:s("settings.clientUpdateUnsupported")})})}const jn="https://github.com/SaladDay/cc-switch-cli",yn="当前机器未安装 cc-switch-cli。这里集成的是 CC-Switch 的衍生 CLI 版本,不是 CC-Switch UI 版本。请先安装:",Nn=/(https?:\/\/[^\s]+)/i;function jt(){const t=ss(l=>{var S;return((S=l.session)==null?void 0:S.accessToken)??null}),[a,n]=c.useState(null),[r,o]=c.useState(!0),[u,x]=c.useState(null),[v,h]=c.useState(null),[M,p]=c.useState(null),[w,k]=c.useState(!1),[j,E]=c.useState("codex");c.useEffect(()=>{let l=!0;if(!t){n(null),h(null),p(null),o(!1);return}return(async()=>{o(!0);try{const A=await Fs();if(!l)return;n(A),h(null),E(T=>Ws(A,T))}catch(A){if(!l)return;h(bs(A))}finally{l&&o(!1)}})(),()=>{l=!1}},[t]);async function f(){const l=await Fs();n(l),h(null),E(S=>Ws(l,S))}async function m(){if(t){x("refresh"),h(null),p(null);try{await f(),p(s("settings.modelManagementRefreshSuccess"))}catch(l){h(bs(l))}finally{x(null)}}}async function g(l,S){if(!t||S.isCurrent)return;const A=zs(l,S.id);x(A),h(null),p(null);try{const T=await Yt({app:l,presetId:S.id});xt(),n(V=>wn(V,T)),p(s("settings.modelManagementSwitchSuccess",{app:T.displayName,preset:T.currentPresetName??S.name}))}catch(T){h(bs(T))}finally{x(null)}}const y=(a==null?void 0:a.items)??[],C=y.find(l=>l.app===j)??y[0]??null,b=Cn(y);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-panel",children:e.jsxs("div",{className:"settings-release-card",children:[M?e.jsx("p",{className:"settings-release-status",children:M}):null,v?e.jsx("p",{className:"settings-release-status",children:v}):null,b?e.jsxs("section",{className:"settings-model-missing-state",children:[e.jsx("p",{className:"settings-model-missing-copy",children:b.message}),e.jsx("a",{className:"settings-tailscale-link settings-model-missing-link",href:b.url,rel:"noreferrer",target:"_blank",children:b.url})]}):y.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-grid",children:y.map(l=>e.jsxs("section",{className:"settings-model-card",children:[e.jsxs("div",{className:"settings-model-card-main",children:[e.jsxs("div",{className:"settings-model-card-copy",children:[e.jsx("strong",{className:"settings-model-card-title",children:l.displayName}),e.jsx("span",{className:"settings-model-card-status","data-status":l.status,children:Sn(l.status)})]}),e.jsxs("div",{className:"settings-model-value-line",children:[e.jsx("strong",{className:"settings-model-preset-value",children:l.currentPresetName??s("settings.modelManagementPresetMissing")}),e.jsx("strong",{className:"settings-model-current-value",children:l.currentModel??s("settings.modelManagementModelUnknown")})]})]}),l.statusText?e.jsx("p",{className:"settings-model-card-note",children:l.statusText}):null]},l.app))}),e.jsx("div",{className:"settings-model-panel-actions",children:e.jsx("button",{className:"secondary-button settings-model-open-action",type:"button",disabled:!t||r,onClick:()=>{k(!0)},children:s("settings.modelManagementOpenSwitcher")})})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})}),e.jsxs(Se,{open:w&&!b,title:s("settings.modelManagementModalTitle"),description:s("settings.modelManagementModalDescription"),className:"settings-model-modal",headerActions:e.jsx("button",{className:"secondary-button",type:"button",disabled:!t||r||u!==null,onClick:()=>{m()},children:u==="refresh"?s("common.loading"):s("settings.modelManagementRefresh")}),onClose:()=>k(!1),children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.modelManagementTabsLabel"),children:y.map(l=>{const S=(C==null?void 0:C.app)===l.app;return e.jsx("button",{type:"button",role:"tab",className:"settings-model-tab","aria-selected":S,"data-active":S?"true":"false",onClick:()=>E(l.app),children:l.displayName},l.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(l=>{const S=zs(C.app,l.id);return e.jsxs("div",{className:"settings-model-switcher-item","data-current":l.isCurrent?"true":"false",children:[e.jsxs("div",{className:"settings-model-switcher-item-main",children:[e.jsx("strong",{children:l.name}),e.jsx("span",{children:l.model??s("settings.modelManagementModelUnknown")})]}),e.jsx("div",{className:"settings-model-switcher-item-actions",children:l.isCurrent?e.jsx("span",{className:"settings-model-card-status","data-status":"ready",children:s("settings.modelManagementCurrentTag")}):e.jsx("button",{className:"secondary-button settings-model-option-action",type:"button",disabled:r||u!==null||C.status!=="ready",onClick:()=>{g(C.app,l)},children:u===S?s("common.loading"):s("settings.modelManagementSwitchAction")})})]},`${C.app}:${l.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 zs(t,a){return`switch:${t}:${a}`}function wn(t,a){return t&&{...t,scannedAt:new Date().toISOString(),items:t.items.map(n=>n.app===a.app?a:n)}}function Ws(t,a){var r;return t.items.some(o=>o.app===a)?a:((r=t.items[0])==null?void 0:r.app)??"codex"}function Sn(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 bs(t){return t instanceof be?t.message||s("settings.modelManagementLoadFailed"):t instanceof Error?t.message:s("settings.modelManagementLoadFailed")}function Cn(t){var r,o,u;if(t.length===0||!t.every(x=>x.status==="unavailable"&&!x.cliAvailable&&!!x.statusText))return null;const n=((u=(((o=(r=t[0])==null?void 0:r.statusText)==null?void 0:o.trim())??"").match(Nn))==null?void 0:u[1])??jn;return{message:yn,url:n}}const Tn=[{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 yt(){const t=Be(),a=ss(l=>{var S;return((S=l.session)==null?void 0:S.accessToken)??null}),[n,r]=c.useState(!1),[o,u]=c.useState(null),[x,v]=c.useState(null),[h,M]=c.useState(null),{items:p,loading:w}=Xt(n&&!!a),k=Tn.map(l=>({...l,label:s(l.labelKey)}));c.useEffect(()=>{a||(r(!1),u(null),v(null),M(null))},[a]);async function j(){if(a){M(null);try{await tn(!0)}catch(l){M(vs(l,"load"))}}}function E(){r(!0),v(null),M(null),a&&j()}async function f(l){if(!a)return;const S=!l.enabled;u(l.provider),M(null),v(null);try{await sn(l.provider,S),xt(),v(S?s("settings.providerManagementEnableSuccess",{provider:l.displayName}):s("settings.providerManagementDisableSuccess",{provider:l.displayName}))}catch(A){M(vs(A,"save"))}u(null)}async function m(){if(a){M(null),v(null);try{await en(),v(s("settings.providerManagementRefreshSuccess"))}catch(l){M(vs(l,"load"))}}}const g=p??[],y=g.filter(l=>l.enabled).length,C=g.filter(l=>!l.enabled).length,b=e.jsxs("div",{className:"settings-provider-modal-layout",children:[x?e.jsx("p",{className:"settings-provider-status",children:x}):null,h?e.jsx("p",{className:"settings-provider-error",children:h}):null,e.jsxs("div",{className:"settings-provider-summary-grid","aria-label":s("settings.providerManagementSummaryTitle"),children:[e.jsx(xs,{label:s("settings.providerManagementSummaryEnabled"),value:String(y)}),e.jsx(xs,{label:s("settings.providerManagementSummaryDisabled"),value:String(C)}),e.jsx(xs,{label:s("settings.providerManagementSummaryTotal"),value:String(g.length)})]}),e.jsxs(G,{heading:s("settings.providerManagementMatrixTitle"),description:s("settings.providerManagementMatrixDescription"),className:"settings-provider-modal-section",children:[w&&g.length===0?e.jsx(Z,{compact:!0,title:s("settings.providerManagementLoading")}):null,!w&&g.length===0?e.jsx(Z,{title:s("settings.providerManagementEmpty"),description:s("settings.providerManagementEmptyDescription"),action:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a,onClick:()=>{m()},children:s("settings.providerManagementRefresh")})}):null,g.length>0?e.jsx("div",{className:"settings-provider-matrix-shell",children:e.jsxs("table",{className:"settings-provider-matrix-table",children:[e.jsxs("colgroup",{children:[e.jsx("col",{className:"settings-provider-matrix-provider-col"}),k.map(l=>e.jsx("col",{className:"settings-provider-matrix-capability-col"},l.key)),e.jsx("col",{className:"settings-provider-matrix-status-col"}),e.jsx("col",{className:"settings-provider-matrix-toggle-col"})]}),e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:s("settings.providerManagementTableProvider")}),k.map(l=>e.jsx("th",{scope:"col",children:l.label},l.key)),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableStatus")}),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableEnabled")})]})}),e.jsx("tbody",{children:g.map(l=>e.jsxs("tr",{children:[e.jsx("th",{scope:"row",className:"settings-provider-matrix-provider-cell",children:e.jsx("div",{className:"settings-provider-matrix-provider",children:e.jsxs("div",{className:"settings-provider-matrix-provider-heading",children:[e.jsx("strong",{className:"settings-provider-matrix-provider-name",children:l.displayName}),e.jsx(ie,{tone:Pn(l.installState),children:Mn(l)})]})})}),k.map(S=>e.jsx("td",{className:"settings-provider-matrix-capability-cell",children:e.jsx(kn,{enabled:l.productCapabilities[S.key],label:S.label})},S.key)),e.jsx("td",{className:"settings-provider-matrix-status-cell",children:e.jsx(ie,{tone:l.enabled?"success":"default",children:l.enabled?s("settings.providerManagementStatusEnabled"):s("settings.providerManagementStatusDisabled")})}),e.jsx("td",{className:"settings-provider-matrix-toggle-cell",children:e.jsxs("label",{className:"settings-provider-matrix-switch",children:[e.jsx("span",{className:"settings-provider-visually-hidden",children:s("settings.providerManagementToggleLabel",{provider:l.displayName})}),e.jsx("input",{type:"checkbox",checked:l.enabled,disabled:o===l.provider,"aria-label":s("settings.providerManagementToggleLabel",{provider:l.displayName}),onChange:()=>{f(l)}}),e.jsx("span",{className:"settings-provider-matrix-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-provider-matrix-switch-thumb"})})]})})]},l.provider))})]})}):null]}),e.jsx(Q,{className:"settings-provider-modal-actions",children:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a||w||o!==null,onClick:()=>{m()},children:w?s("common.loading"):s("settings.providerManagementRefresh")})})]});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-provider-entrypoint",children:[a?null:e.jsx("p",{className:"settings-provider-entrypoint-note",children:s("settings.providerManagementLoginRequired")}),e.jsx("button",{type:"button",className:"settings-button",disabled:!a,onClick:E,children:s("settings.providerManagementManageAction")})]}),t.isMobile?e.jsx(Oe,{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:b}):e.jsx(Ye,{open:n,title:s("settings.providerManagementModalTitle"),className:"settings-provider-modal",size:"xwide",layout:"list",bodyClassName:"settings-provider-modal-body",onClose:()=>r(!1),children:b})]})}function xs({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 kn({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 Dn(t){switch(t){case"ready":return s("settings.providerManagementInstallReady");case"missing":return s("settings.providerManagementInstallMissing");default:return s("settings.providerManagementInstallUnknown")}}function Mn(t){return t.installState==="ready"&&t.version?t.version:Dn(t.installState)}function Pn(t){switch(t){case"ready":return"success";case"missing":return"warning";default:return"default"}}function vs(t,a){return t instanceof be?t.message:a==="save"?s("settings.providerManagementSaveFailed"):s("settings.providerManagementLoadFailed")}async function An(){return await I.request("/api/channels/platforms")}async function En(){return await I.request("/api/channels/accounts")}async function Ln(t){return await I.request("/api/channels/accounts",{method:"POST",body:JSON.stringify(t)})}async function Rn(t){return await I.request(`/api/channels/accounts/${t}`,{method:"DELETE"})}async function In(t){return await I.request(`/api/channels/accounts/${t}/probe`,{method:"POST"})}async function Un(t){return await I.request(`/api/channels/accounts/${t}/poll`,{method:"POST"})}async function On(t){return await I.request(`/api/channels/accounts/${t}/wechat-claw/start-login`,{method:"POST"})}async function Fn(t){return await I.request(`/api/channels/accounts/${t}/wechat-claw/refresh-login`,{method:"POST"})}async function Bn(t){return await I.request(`/api/channels/accounts/${t}/wechat-claw/logout`,{method:"POST"})}async function Vn(t,a=20){return await I.request(`/api/channels/accounts/${t}/threads?limit=${a}`)}async function Hn(t,a=20){return await I.request(`/api/channels/accounts/${t}/events?limit=${a}`)}async function qn(t,a=20){return await I.request(`/api/channels/accounts/${t}/deliveries?limit=${a}`)}function Nt({code:t,...a}){switch(t){case"wechat-claw":return e.jsx(zn,{...a});case"telegram":return e.jsx(_n,{...a});default:return e.jsx(Wn,{...a})}}function _n(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 zn(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 Wn(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 $n=["codex","claude-code"],Kn=["active","disabled","degraded"],Ie="polling",Jn=`{
|
|
2
|
-
}`,Is={"wechat-claw":[],telegram:[{key:"botToken",labelKey:"settings.channelsConfigFieldTelegramBotToken",descriptionKey:"settings.channelsConfigFieldTelegramBotTokenDescription",placeholderKey:"settings.channelsConfigFieldTelegramBotTokenPlaceholder",type:"password",required:!0}]},Qn={};function wt(){const t=Be(),a=ss(i=>{var P;return((P=i.session)==null?void 0:P.accessToken)??null}),[n,r]=c.useState(!1),[o,u]=c.useState(!1),[x,v]=c.useState([]),[h,M]=c.useState([]),[p,w]=c.useState(!1),[k,j]=c.useState(!1),[E,f]=c.useState(null),[m,g]=c.useState(null),[y,C]=c.useState(null),[b,l]=c.useState(null),[S,A]=c.useState(null),[T,V]=c.useState("platform"),[F,W]=c.useState(null),[J,O]=c.useState(null),[L,_]=c.useState(()=>Je()),[z,$]=c.useState([]),[K,N]=c.useState([]),[B,R]=c.useState([]),d=c.useMemo(()=>h.find(i=>i.id===F)??null,[h,F]),U=c.useMemo(()=>x.find(i=>i.code===L.platformCode)??null,[L.platformCode,x]),D=c.useMemo(()=>L.platformCode?Is[L.platformCode]??[]:[],[L.platformCode]),X=c.useMemo(()=>new Set(h.map(i=>i.platformCode)).size,[h]),re=c.useMemo(()=>h.filter(i=>i.status==="active").length,[h]),le=(U==null?void 0:U.code)==="wechat-claw",oe=(d==null?void 0:d.platformCode)==="wechat-claw",H=c.useMemo(()=>d?ea(d):null,[d]),Ce=(H==null?void 0:H.loginStatus)==="active";c.useEffect(()=>{a||(r(!1),u(!1),v([]),M([]),w(!1),j(!1),f(null),g(null),C(null),l(null),A(null),V("platform"),W(null),O(null),_(Je()),$([]),N([]),R([]))},[a]),c.useEffect(()=>{(!F||J!==F)&&O(null)},[F,J]),c.useEffect(()=>{!n||!a||He()},[a,n]),c.useEffect(()=>{if(!n||!a||!F){$([]),N([]),R([]);return}Te(F)},[a,F,n]);async function He(i={}){if(a){w(!0),l(null);try{const[P,q]=await Promise.all([An(),En()]);v(P),M(q),F&&!q.some(ye=>ye.id===F)&&(W(null),$([]),N([]),R([])),i.showSuccess&&C(s("settings.channelsRefreshSuccess"))}catch(P){l(he(P,"loadOverview"))}finally{w(!1)}}}async function Te(i){if(a){j(!0),l(null);try{const[P,q,ye]=await Promise.all([Vn(i),Hn(i),qn(i)]);if(F!==i)return;$(P),N(q),R(ye)}catch(P){l(he(P,"loadDetails"))}finally{j(!1)}}}function ts(){r(!0),C(null),l(null)}function xe(){r(!1),u(!1),O(null)}function ee(){g(null),A(null),V("platform"),_(Je())}function de(){ee(),u(!0)}function ue(){u(!1),ee()}function ve(i){W(i.id),O(null),C(null),l(null)}function se(i){V(i==="wechat-claw"?"binding":"config"),_(P=>Je({platformCode:i,displayName:P.platformCode===i?P.displayName:"",providerId:P.providerId,status:P.status})),A(null)}function je(i,P){_(q=>({...q,configValues:{...q.configValues,[i]:P}}))}function ns(){const i=St(L,U);if(!i.ok){A(i.errorText);return}V("binding"),A(null)}async function as(){if(!a)return;const i=ta(L,U);if(!i.ok){A(i.errorText);return}g("save"),A(null),C(null);try{const P=await Ln(i.input);M(q=>[P,...q]),W(P.id),ue(),C(s("settings.channelsCreateSuccess",{account:P.displayName}))}catch(P){A(he(P,"save"))}finally{g(null)}}async function qe(){if(!(!a||!F)){f("probe"),l(null),C(null);try{const i=await In(F);M(P=>ys(P,i.account)),C(i.detail),await Te(F)}catch(i){l(he(i,"probe"))}finally{f(null)}}}async function is(){if(!(!a||!F)){f("poll"),l(null),C(null);try{const i=await Un(F);M(P=>ys(P,i.account)),C(i.detail),await Te(F)}catch(i){l(he(i,"poll"))}finally{f(null)}}}async function ke(i){if(!a||!F||!oe)return;f(i==="start"?"wechat-start-login":i==="refresh"?"wechat-refresh-login":"wechat-logout"),l(null),C(null);try{let q;i==="start"?q=await On(F):i==="refresh"?q=await Fn(F):q=await Bn(F),rs(q.account),C(q.detail)}catch(q){l(he(q,i))}finally{f(null)}}async function ls(){if(!(!a||!d)){f("remove-account"),l(null),C(null);try{const i=await Rn(d.id);M(P=>P.filter(q=>q.id!==i.accountId)),F===i.accountId&&(W(null),$([]),N([]),R([])),O(null),C(s("settings.channelsRemoveSuccess",{account:i.displayName}))}catch(i){l(he(i,"remove"))}finally{f(null)}}}function rs(i){M(P=>ys(P,i))}async function cs(){f("refresh"),C(null),l(null);try{await He({showSuccess:!0})}finally{f(null)}}const os=e.jsxs("div",{className:"settings-channels-summary-grid","aria-label":s("settings.channelsSummaryTitle"),children:[e.jsx(js,{label:s("settings.channelsSummaryAccounts"),value:String(h.length)}),e.jsx(js,{label:s("settings.channelsSummaryActive"),value:String(re)}),e.jsx(js,{label:s("settings.channelsSummaryPlatforms"),value:String(X)})]}),_e=e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:de,children:s("settings.channelsAddAccountAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:p||E!==null,onClick:()=>{cs()},children:E==="refresh"?s("settings.channelsActionPending"):s("settings.channelsRefresh")})]}),ze=!oe||Ce,We=d!==null&&J===d.id,$e=e.jsxs("div",{className:"settings-channels-modal-layout",children:[S?e.jsx("p",{className:"settings-channels-error",children:S}):null,e.jsxs(G,{heading:s("settings.channelsWizardTitle"),description:s("settings.channelsWizardCreateDescription"),children:[e.jsx(Zn,{currentStep:T}),T==="platform"?e.jsxs(e.Fragment,{children:[p&&x.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsLoading")}):null,!p&&x.length===0?e.jsx(Z,{title:s("settings.channelsPlatformsEmpty"),description:s("settings.channelsPlatformsEmptyDescription")}):null,x.length>0?e.jsx("div",{className:"settings-channels-platform-grid",children:x.map(i=>e.jsx("button",{className:"settings-channels-platform-card",type:"button","aria-pressed":L.platformCode===i.code,"data-selected":L.platformCode===i.code?"true":void 0,onClick:()=>se(i.code),children:e.jsxs("div",{className:"settings-channels-platform-card-top",children:[e.jsxs("div",{className:"settings-channels-platform-card-brand",children:[e.jsx("div",{className:"settings-channels-platform-card-logo",children:e.jsx(Nt,{code:i.code,width:40,height:40,"aria-hidden":"true"})}),e.jsxs("div",{className:"settings-channels-platform-card-copy",children:[e.jsx("strong",{children:i.displayName}),e.jsx("span",{children:s("settings.channelsPlatformSummary",{modes:Ne(Ie),multiSession:Ue(i.multiSessionSupportLevel)})})]})]}),e.jsx(ie,{tone:i.multiSessionSupportLevel==="supported"?"success":"warning",children:Ue(i.multiSessionSupportLevel)})]})},i.code))}):null,e.jsx(Q,{children:e.jsx("button",{className:"primary-button",type:"button",disabled:!U,onClick:()=>{U&&V("config")},children:s("settings.channelsWizardNextToConfig")})})]}):null,T==="config"?e.jsxs(e.Fragment,{children:[U?e.jsx(Gn,{platformCapability:U}):e.jsx(Z,{compact:!0,title:s("settings.channelsValidationPlatform"),description:s("settings.channelsWizardSelectPlatformHint")}),U?e.jsxs(e.Fragment,{children:[e.jsx(Xn,{platformCode:U.code}),e.jsx(Yn,{platformCode:U.code}),D.length>0?e.jsx("div",{className:"settings-channels-form-grid",children:D.map(i=>e.jsx(ae,{label:s(i.labelKey),description:s(i.descriptionKey),htmlFor:`channels-create-config-${i.key}`,children:e.jsx("input",{id:`channels-create-config-${i.key}`,className:"settings-text-input",type:i.type??"text",placeholder:s(i.placeholderKey),value:L.configValues[i.key]??"",onChange:P=>je(i.key,P.target.value)})},i.key))}):null,e.jsxs("details",{className:"settings-channels-advanced-config",children:[e.jsx("summary",{children:s("settings.channelsAdvancedConfigTitle")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsAdvancedConfigDescription")}),e.jsx(ae,{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:L.advancedConfigText,onChange:i=>{_(P=>({...P,advancedConfigText:i.target.value}))}})})]})]}):null,e.jsxs(Q,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>V("platform"),children:s("settings.channelsWizardBackToPlatform")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!U,onClick:ns,children:s("settings.channelsWizardNextToBinding")})]})]}):null,T==="binding"?e.jsxs(e.Fragment,{children:[U?e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(ne,{label:s("settings.channelsDetailPlatform"),value:U.displayName}),e.jsx(ne,{label:s("settings.channelsDetailConnectionMode"),value:Ne(Ie)}),e.jsx(ne,{label:s("settings.channelsWizardBindingSummary"),value:Ue(U.multiSessionSupportLevel)})]}):null,e.jsxs("div",{className:"settings-channels-form-grid",children:[e.jsx(ae,{label:s("settings.channelsFieldDisplayName"),description:le?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:L.displayName,onChange:i=>{_(P=>({...P,displayName:i.target.value}))}})}),e.jsx(ae,{label:s("settings.channelsFieldProvider"),description:s("settings.channelsFieldProviderDescription"),htmlFor:"channels-create-provider",children:e.jsx("select",{id:"channels-create-provider",className:"settings-select",value:L.providerId,onChange:i=>{_(P=>({...P,providerId:i.target.value}))},children:$n.map(i=>e.jsx("option",{value:i,children:Qe(i)},i))})}),e.jsx(ae,{label:s("settings.channelsFieldStatus"),description:s("settings.channelsFieldStatusDescription"),htmlFor:"channels-create-status",children:e.jsx("select",{id:"channels-create-status",className:"settings-select",value:L.status,onChange:i=>{_(P=>({...P,status:i.target.value}))},children:Kn.map(i=>e.jsx("option",{value:i,children:Ns(i)},i))})}),e.jsx(ae,{label:s("settings.channelsFieldConnectionMode"),description:s("settings.channelsFieldConnectionModeDescription"),children:e.jsxs("div",{className:"settings-channels-fixed-field",children:[e.jsx("strong",{children:Ne(Ie)}),e.jsx("span",{children:s("settings.channelsConnectionModeFixedHint")})]})})]}),e.jsxs(Q,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>V(le?"platform":"config"),children:le?s("settings.channelsWizardBackToPlatform"):s("settings.channelsWizardBackToConfig")}),e.jsx("button",{className:"primary-button",type:"button",disabled:m==="save",onClick:()=>{as()},children:m==="save"?s("settings.channelsActionPending"):s("settings.channelsCreateAction")})]})]}):null]})]}),Ke=e.jsxs("div",{className:"settings-channels-modal-layout",children:[y?e.jsx("p",{className:"settings-channels-status",children:y}):null,b?e.jsx("p",{className:"settings-channels-error",children:b}):null,os,t.isMobile?e.jsx(Q,{className:"settings-channels-inline-actions",children:_e}):null,e.jsxs(G,{heading:s("settings.channelsAccountsTitle"),description:s("settings.channelsAccountsDescription"),children:[p&&h.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsLoading")}):null,!p&&h.length===0?e.jsx(Z,{title:s("settings.channelsAccountsEmpty"),description:s("settings.channelsAccountsEmptyDescription"),action:e.jsx("button",{className:"secondary-button",type:"button",onClick:de,children:s("settings.channelsAddAccountAction")})}):null,h.length>0?e.jsx(we,{className:"settings-channels-account-list",children:h.map(i=>e.jsx(Re,{as:"button",selected:F===i.id,className:"settings-channels-account-item",label:i.displayName,description:s("settings.channelsAccountRowDescription",{platform:i.capability.displayName,provider:Qe(i.providerId),mode:Ne(i.connectionMode)}),trailing:e.jsxs("div",{className:"settings-channels-account-tags",children:[e.jsx(ie,{tone:ia(i.status),children:Ns(i.status)}),e.jsx(ie,{children:Qe(i.providerId)})]}),onClick:()=>ve(i),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsThreadsTitle"),": ",i.threadCount]}),e.jsxs("span",{children:[s("settings.channelsEventsTitle"),": ",i.inboundEventCount]}),e.jsxs("span",{children:[s("settings.channelsDeliveriesTitle"),": ",i.deliveryCount]})]})},i.id))}):null]}),d?e.jsxs(e.Fragment,{children:[e.jsxs(G,{heading:s("settings.channelsDetailTitle"),description:s("settings.channelsDetailDescription"),actions:e.jsxs(Q,{className:"settings-channels-inline-actions",children:[ze?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{qe()},children:E==="probe"?s("settings.channelsActionPending"):s("settings.channelsProbeAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{is()},children:E==="poll"?s("settings.channelsActionPending"):s("settings.channelsPollAction")})]}):null,We?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{O(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:E!==null,onClick:()=>{ls()},children:E==="remove-account"?s("settings.channelsActionPending"):s("settings.channelsRemoveConfirmAction")})]}):e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:E!==null,onClick:()=>{d&&O(d.id)},children:s("settings.channelsRemoveAction")})]}),children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(ne,{label:s("settings.channelsDetailPlatform"),value:d.capability.displayName}),e.jsx(ne,{label:s("settings.channelsDetailProvider"),value:Qe(d.providerId)}),e.jsx(ne,{label:s("settings.channelsDetailConnectionMode"),value:Ne(d.connectionMode)}),e.jsx(ne,{label:s("settings.channelsDetailStatus"),value:Ns(d.status)}),e.jsx(ne,{label:s("settings.channelsDetailLastInbound"),value:pe(d.lastInboundAt)}),e.jsx(ne,{label:s("settings.channelsDetailLastOutbound"),value:pe(d.lastOutboundAt)})]}),d.lastError?e.jsxs("p",{className:"settings-channels-inline-note",children:[s("settings.channelsDetailLastError"),": ",d.lastError]}):null,We?e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsRemoveConfirmDescription")}):null]}),d.platformCode==="wechat-claw"?e.jsxs(G,{heading:s("settings.channelsWechatBindingTitle"),description:s("settings.channelsWechatBindingDescription"),actions:e.jsxs(Q,{className:"settings-channels-inline-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{ke("start")},children:E==="wechat-start-login"?s("settings.channelsActionPending"):H!=null&&H.qrcodeUrl?s("settings.channelsWechatRestartBindingAction"):s("settings.channelsWechatStartLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{ke("refresh")},children:E==="wechat-refresh-login"?s("settings.channelsActionPending"):s("settings.channelsWechatRefreshLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{ke("logout")},children:E==="wechat-logout"?s("settings.channelsActionPending"):s("settings.channelsWechatLogoutAction")})]}),children:[e.jsxs("div",{className:"settings-channels-wechat-binding-entry",children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(ne,{label:s("settings.channelsWechatLoginStatus"),value:oa((H==null?void 0:H.loginStatus)??"not_logged_in")}),e.jsx(ne,{label:s("settings.channelsDetailConnectionMode"),value:s("settings.channelsWechatBindingModeValue")}),e.jsx(ne,{label:s("settings.channelsMetaUpdatedAt"),value:pe((H==null?void 0:H.updatedAt)??null)})]}),e.jsx("p",{className:"settings-channels-inline-note",children:Ce?s("settings.channelsWechatBoundDescription"):s("settings.channelsWechatPendingDescription")}),H!=null&&H.lastDetail?e.jsx("p",{className:"settings-channels-inline-note",children:H.lastDetail}):null,Ce?null:e.jsxs("div",{className:"settings-channels-wechat-qr-panel",children:[H!=null&&H.qrcodeUrl?e.jsxs(e.Fragment,{children:[e.jsx("img",{className:"settings-channels-wechat-qr-image",src:H.qrcodeUrl,alt:s("settings.channelsWechatQrAlt")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsWechatQrHint")}),e.jsx(Q,{className:"settings-channels-inline-actions",children:e.jsx("a",{className:"secondary-button",href:H.qrcodeSourceUrl??H.qrcodeUrl,target:"_blank",rel:"noreferrer",children:s("settings.channelsWechatOpenQrLinkAction")})})]}):e.jsx(Z,{compact:!0,title:s("settings.channelsWechatQrEmpty"),description:s("settings.channelsWechatQrEmptyDescription")}),H!=null&&H.qrcodeText?e.jsx(ae,{label:s("settings.channelsWechatQrRawTitle"),description:s("settings.channelsWechatQrRawDescription"),children:e.jsx("textarea",{className:"settings-textarea settings-channels-textarea",value:H.qrcodeText,readOnly:!0})}):null]})]}),e.jsx("div",{className:"settings-channels-platform-selected-notes",children:d.capability.stageOneLimitations.map(i=>e.jsx("p",{className:"settings-channels-platform-limitations",children:i},i))})]}):null,e.jsxs(G,{heading:s("settings.channelsThreadsTitle"),description:s("settings.channelsThreadsDescription",{count:d.threadCount}),children:[k?e.jsx(Z,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&z.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsThreadsEmpty"),description:s("settings.channelsThreadsEmptyDescription")}):null,!k&&z.length>0?e.jsx(we,{compact:!0,children:z.map(i=>e.jsx(Re,{label:i.title||i.externalConversationKey,description:s("settings.channelsThreadSummary",{status:Ks(i.status),conversationKey:i.externalConversationKey}),trailing:e.jsx(ie,{tone:la(i.status),children:Ks(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",pe(i.createdAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaUpdatedAt"),": ",pe(i.updatedAt)]}),i.externalUserId?e.jsxs("span",{children:[s("settings.channelsMetaExternalUser"),": ",i.externalUserId]}):null]})},i.id))}):null]}),e.jsxs(G,{heading:s("settings.channelsEventsTitle"),description:s("settings.channelsEventsDescription",{count:d.inboundEventCount}),children:[k?e.jsx(Z,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&K.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsEventsEmpty"),description:s("settings.channelsEventsEmptyDescription")}):null,!k&&K.length>0?e.jsx(we,{compact:!0,children:K.map(i=>e.jsx(Re,{label:$s(i.textContent),description:s("settings.channelsEventSummary",{status:Js(i.status),conversationKey:i.externalConversationKey}),trailing:e.jsx(ie,{tone:ra(i.status),children:Js(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaReceivedAt"),": ",pe(i.receivedAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaEventId"),": ",i.externalEventId]}),i.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",i.errorMessage]}):null]})},i.id))}):null]}),e.jsxs(G,{heading:s("settings.channelsDeliveriesTitle"),description:s("settings.channelsDeliveriesDescription",{count:d.deliveryCount}),children:[k?e.jsx(Z,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&B.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsDeliveriesEmpty"),description:s("settings.channelsDeliveriesEmptyDescription")}):null,!k&&B.length>0?e.jsx(we,{compact:!0,children:B.map(i=>e.jsx(Re,{label:$s(i.textContent),description:s("settings.channelsDeliverySummary",{status:Qs(i.status)}),trailing:e.jsx(ie,{tone:ca(i.status),children:Qs(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",pe(i.createdAt)]}),i.providerMessageRef?e.jsxs("span",{children:[s("settings.channelsMetaProviderRef"),": ",i.providerMessageRef]}):null,i.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",i.errorMessage]}):null]})},i.id))}):null]})]}):null]});return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-channels-entrypoint",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:!a,onClick:ts,children:s("settings.channelsManageAction")})}),t.isMobile?e.jsx(Oe,{open:n,title:s("settings.channelsModalTitle"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:xe,children:e.jsx("div",{className:"settings-channels-modal-body",children:Ke})}):e.jsx(Ye,{open:n,title:s("settings.channelsModalTitle"),size:"xwide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",headerActions:_e,onClose:xe,children:Ke}),t.isMobile?e.jsx(Oe,{open:o,title:s("settings.channelsAddAccountAction"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:ue,children:e.jsx("div",{className:"settings-channels-modal-body",children:$e})}):e.jsx(Ye,{open:o,title:s("settings.channelsAddAccountAction"),size:"wide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",onClose:ue,children:$e})]})}function js({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 ne({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 Zn({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 Gn({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(Nt,{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:Ne(Ie),multiSession:Ue(t.multiSessionSupportLevel)})})]})]}),e.jsx(ie,{tone:t.multiSessionSupportLevel==="supported"?"success":"warning",children:Ue(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 Yn({platformCode:t}){const a=Qn[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 Xn({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 ea(t){return{loginStatus:sa(t.runtimeState.wechatClawLoginStatus),qrcodeUrl:Pe(t.runtimeState.wechatClawQrCodeUrl),qrcodeSourceUrl:Pe(t.runtimeState.wechatClawQrCodeSourceUrl),qrcodeText:Pe(t.runtimeState.wechatClawQrCodeText),lastDetail:Pe(t.runtimeState.wechatClawLastDetail),updatedAt:Pe(t.runtimeState.wechatClawUpdatedAt)}}function sa(t){return t==="waiting_scan"||t==="scan_confirmed"||t==="active"||t==="expired"?t:"not_logged_in"}function Pe(t){if(typeof t!="string")return null;const a=t.trim();return a.length>0?a:null}function Je(t={}){return{platformCode:"",displayName:"",providerId:"codex",status:"active",configValues:{},advancedConfigText:Jn,...t}}function ys(t,a){return t.findIndex(r=>r.id===a.id)===-1?[a,...t]:t.map(r=>r.id===a.id?a:r)}function St(t,a){if(!t.platformCode||!a)return{ok:!1,errorText:s("settings.channelsValidationPlatform")};const n=na(t.platformCode,t.configValues);if(n)return{ok:!1,errorText:n};try{Ct(t.advancedConfigText)}catch{return{ok:!1,errorText:s("settings.channelsValidationConfigJson")}}return{ok:!0}}function ta(t,a){const n=St(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,u=Ct(t.advancedConfigText),x=aa(o,t.configValues,u);return{ok:!0,input:{displayName:r,platformCode:o,providerId:t.providerId,connectionMode:Ie,status:t.status,config:x}}}function na(t,a){const r=(Is[t]??[]).find(o=>o.required&&!(a[o.key]??"").trim());return r?s("settings.channelsValidationRequiredField",{field:s(r.labelKey)}):null}function Ct(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 aa(t,a,n){const r={...n};for(const o of Is[t]??[]){const u=(a[o.key]??"").trim();u?r[o.key]=u:delete r[o.key]}return r}function he(t,a){if(t instanceof be)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 $s(t){const a=t.trim();return a.length<=72?a||s("settings.channelsTextFallback"):`${a.slice(0,72)}...`}function pe(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 Qe(t){return t==="claude-code"?"Claude Code":"Codex"}function Ne(t){return t==="polling"?s("settings.channelsConnectionModePolling"):t==="bridge"?s("settings.channelsConnectionModeBridge"):s("settings.channelsConnectionModeWebhook")}function Ue(t){return t==="supported"?s("settings.channelsMultiSessionSupported"):s("settings.channelsMultiSessionLimited")}function Ns(t){switch(t){case"disabled":return s("settings.channelsStatusDisabled");case"degraded":return s("settings.channelsStatusDegraded");default:return s("settings.channelsStatusActive")}}function ia(t){switch(t){case"disabled":return"default";case"degraded":return"warning";default:return"success"}}function Ks(t){switch(t){case"closed":return s("settings.channelsThreadStatusClosed");case"failed":return s("settings.channelsThreadStatusFailed");default:return s("settings.channelsThreadStatusActive")}}function la(t){switch(t){case"failed":return"danger";case"closed":return"default";default:return"success"}}function Js(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 ra(t){switch(t){case"replied":return"success";case"failed":return"danger";case"ignored":return"warning";case"dispatched":return"accent";default:return"default"}}function Qs(t){switch(t){case"failed":return s("settings.channelsDeliveryStatusFailed");case"skipped":return s("settings.channelsDeliveryStatusSkipped");default:return s("settings.channelsDeliveryStatusSent")}}function ca(t){switch(t){case"failed":return"danger";case"skipped":return"default";default:return"success"}}function oa(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 Tt={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Zs=fe.createContext&&fe.createContext(Tt),da=["attr","size","title"];function ua(t,a){if(t==null)return{};var n,r,o=ga(t,a);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(r=0;r<u.length;r++)n=u[r],a.indexOf(n)===-1&&{}.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function ga(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 Xe(){return Xe=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},Xe.apply(null,arguments)}function Gs(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 es(t){for(var a=1;a<arguments.length;a++){var n=arguments[a]!=null?arguments[a]:{};a%2?Gs(Object(n),!0).forEach(function(r){ma(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Gs(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ma(t,a,n){return(a=ha(a))in t?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,t}function ha(t){var a=pa(t,"string");return typeof a=="symbol"?a:a+""}function pa(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 kt(t){return t&&t.map((a,n)=>fe.createElement(a.tag,es({key:n},a.attr),kt(a.child)))}function Ve(t){return a=>fe.createElement(fa,Xe({attr:es({},t.attr)},a),kt(t.child))}function fa(t){var a=n=>{var{attr:r,size:o,title:u}=t,x=ua(t,da),v=o||n.size||"1em",h;return n.className&&(h=n.className),t.className&&(h=(h?h+" ":"")+t.className),fe.createElement("svg",Xe({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,r,x,{className:h,style:es(es({color:t.color||n.color},n.style),t.style),height:v,width:v,xmlns:"http://www.w3.org/2000/svg"}),u&&fe.createElement("title",null,u),t.children)};return Zs!==void 0?fe.createElement(Zs.Consumer,null,n=>a(n)):a(Tt)}function ba(t){return Ve({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 xa(t){return Ve({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 Ys(t){return Ve({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 va(t){return Ve({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 ja(t){return Ve({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 Xs(){return I.request("/api/auth/devices")}function ya(t){return I.request("/api/auth/devices/current/primary",{method:"POST",body:JSON.stringify(t)})}function Na(t){return I.request(`/api/auth/devices/${t}/logout`,{method:"POST"})}function Dt({compact:t=!1}){const a=ss(d=>{var U;return((U=d.session)==null?void 0:U.accessToken)??null}),[n,r]=c.useState(null),[o,u]=c.useState(!1),[x,v]=c.useState(!1),[h,M]=c.useState(!1),[p,w]=c.useState(null),[k,j]=c.useState(null),[E,f]=c.useState(null),[m,g]=c.useState(null),[y,C]=c.useState(null),[b,l]=c.useState(""),[S,A]=c.useState(null);c.useEffect(()=>{let d=!0;if(!x){u(!1);return}if(!a){r(null),u(!1),f(null),g(null);return}return(async()=>{u(!0);try{const D=await Xs();if(!d)return;r(D),g(null)}catch(D){if(!d)return;g(ws(D))}finally{d&&u(!1)}})(),()=>{d=!1}},[a,x]);async function T(){const d=await Xs();r(d),g(null)}function V(){v(!0),M(!1),f(null),g(null)}function F(){p!=="primary"&&(v(!1),M(!1),C(null),l(""),A(null))}function W(d){C(d),l(""),A(null)}async function J(){if(y){w("primary"),A(null),g(null),f(null);try{await ya({password:b,primary:y==="enable"}),await T(),f(y==="enable"?s("settings.authDevicePrimaryEnabled"):s("settings.authDevicePrimaryDisabled")),C(null),l("")}catch(d){const U=ws(d);A(U),g(U)}finally{w(null)}}}async function O(d){if(d.deviceId){j(d.deviceId),g(null),f(null);try{const U=await Na(d.deviceId);await T(),f(s("settings.authDeviceLogoutDeviceSuccess",{device:Ze(d),count:String(U.revokedSessionCount)}))}catch(U){g(ws(U))}finally{j(null)}}}const L=(n==null?void 0:n.currentDevice)??null,_=(n==null?void 0:n.otherActiveDevices.filter(d=>!d.isLegacy))??[],z=(n==null?void 0:n.otherActiveDevices.filter(d=>d.isLegacy))??[],$=(n==null?void 0:n.recentLoginRecords.filter(d=>!d.isLegacy))??[],K=(n==null?void 0:n.recentLoginRecords.filter(d=>d.isLegacy))??[],N=z.length+K.length,B=L!==null&&!L.isLegacy,R=(L==null?void 0:L.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:V,children:s("settings.authDeviceOpenManager")})})}),e.jsx(Se,{open:x,title:s("settings.authDeviceManagement"),description:s("settings.authDeviceManagementDescription"),className:"settings-device-browser-modal",onClose:F,children:e.jsxs(e.Fragment,{children:[E?e.jsx("p",{className:"settings-release-status",children:E}):null,m?e.jsx("p",{className:"settings-release-status",children:m}):null,o?e.jsx("div",{className:"settings-device-empty",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[N>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(N)})}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>M(d=>!d),children:h?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")})}),L?e.jsx(Ae,{current:!0,title:Ze(L),clientType:L.clientType,browserName:L.browserName,browserVersion:L.browserVersion,osName:L.osName,osVersion:L.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:L.lastSeenAt,sourceAddress:L.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}),L.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:!B||p!==null,onClick:()=>W(L.isPrimary?"disable":"enable"),children:L.isPrimary?s("settings.authDeviceDisablePrimary"):s("settings.authDeviceEnablePrimary")})}),note:B?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")})}),_.length>0?e.jsx("div",{className:"settings-device-list",children:_.map((d,U)=>e.jsx(Ae,{title:Ze(d),clientType:d.clientType,browserName:d.browserName,browserVersion:d.browserVersion,osName:d.osName,osVersion:d.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:d.lastSeenAt,sourceAddress:d.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[d.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null,d.isLegacy?e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")}):null]}),actions:d.deviceId?e.jsx("button",{className:"settings-button settings-button-danger","data-variant":"device-danger",type:"button",disabled:!R||p!==null||k!==null,onClick:()=>{O(d)},children:k===d.deviceId?s("common.loading"):s("settings.authDeviceLogoutDevice")}):null},`${d.deviceId??"legacy"}-${d.lastSeenAt}-${U}`))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceOthersEmpty")})]}),e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceRecentTitle")})}),$.length>0?e.jsx("div",{className:"settings-device-list",children:$.map(d=>e.jsx(Ae,{title:et(d),clientType:d.clientType,browserName:d.browserName,browserVersion:d.browserVersion,osName:d.osName,osVersion:d.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:d.occurredAt,sourceAddress:d.sourceAddress,badges:d.isCurrentDevice?e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}):null},d.id))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceRecentEmpty")})]}),h&&z.length>0?e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceLegacyDevicesTitle")})}),e.jsx("div",{className:"settings-device-list",children:z.map((d,U)=>e.jsx(Ae,{title:Ze(d),clientType:d.clientType,browserName:d.browserName,browserVersion:d.browserVersion,osName:d.osName,osVersion:d.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:d.lastSeenAt,sourceAddress:d.lastSourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},`legacy-device-${d.lastSeenAt}-${U}`))})]}):null,h&&K.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:K.map(d=>e.jsx(Ae,{title:et(d),clientType:d.clientType,browserName:d.browserName,browserVersion:d.browserVersion,osName:d.osName,osVersion:d.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:d.occurredAt,sourceAddress:d.sourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},d.id))})]}):null]})]})}),e.jsx(Se,{open:y!==null,title:y==="enable"?s("settings.authDeviceEnablePrimaryModalTitle"):s("settings.authDeviceDisablePrimaryModalTitle"),description:y==="enable"?s("settings.authDeviceEnablePrimaryModalDescription"):s("settings.authDeviceDisablePrimaryModalDescription"),className:"settings-device-modal",onClose:()=>{p!=="primary"&&(C(null),l(""),A(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:b,onChange:d=>l(d.target.value)})]}),S?e.jsx("p",{className:"settings-release-status",children:S}):null,e.jsxs("div",{className:"settings-device-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:p==="primary",onClick:()=>{C(null),l(""),A(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",disabled:b.trim().length===0||p==="primary",onClick:()=>{J()},children:p==="primary"?s("common.loading"):y==="enable"?s("settings.authDeviceEnablePrimary"):s("settings.authDeviceDisablePrimary")})]})]})})]})}function Ze(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||Mt(t.clientType)}function et(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||Mt(t.clientType)}function wa(t){return e.jsxs("div",{className:"settings-device-identity",children:[e.jsx("span",{className:"settings-device-identity-icon","aria-hidden":"true",children:e.jsx(Pa,{kind:Ma(t.clientType)})}),e.jsx("div",{className:"settings-device-identity-body",children:e.jsx("strong",{children:t.title})})]})}function Ae(t){const a=Da(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(wa,{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 Mt(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 Sa(t,a){return s(t,{value:new Date(a).toLocaleString()})}function Ca(t){return t?s("settings.authDeviceSourceAddressValue",{value:t}):s("settings.authDeviceSourceAddressUnknown")}function Ta(t,a){return t?s("settings.authDeviceBrowserValue",{value:Pt(t,a)}):null}function ka(t,a){return t?s("settings.authDeviceOsValue",{value:Pt(t,a)}):null}function Da(t,a,n,r,o,u,x){return[Ta(t,a),ka(n,r),Sa(o,u),Ca(x)].filter(v=>!!v)}function Ma(t){switch(t){case"desktop":return"desktop";case"web":return"web";case"ios":return"ios";case"android":return"android";default:return"unknown"}}function Pt(t,a){return a!=null&&a.trim()?`${t} ${a}`:t}function Pa({kind:t}){const a=Aa(t),n=a.icon;return e.jsx(n,{color:a.color})}function Aa(t){switch(t){case"desktop":return{icon:ba,color:"#2563eb"};case"web":return{icon:xa,color:"#0f766e"};case"ios":return{icon:va,color:"#111827"};case"android":return{icon:ja,color:"#3ddc84"};case"unknown":return{icon:Ys,color:"#64748b"};default:return{icon:Ys,color:"#64748b"}}}function ws(t){return t instanceof be||t instanceof Error?t.message:s("settings.authDeviceLoadFailed")}async function Ss(){const t=ce.getState();return I.request(`/api/client/service-update?channel=${encodeURIComponent(t.releaseChannel)}`)}async function Ea(t){const a=ce.getState();return I.request("/api/client/service-update/install",{method:"POST",body:JSON.stringify({packageName:t,channel:a.releaseChannel})})}async function La(t){return I.request(`/api/client/service-update/tasks/${encodeURIComponent(t)}`)}const Ra=1500,st=2e3,Ia=2500;function At(){const t=Fe(),[a,n]=c.useState(!1),[r,o]=c.useState(!1),[u,x]=c.useState(!1),[v,h]=c.useState(!1),[M,p]=c.useState(null),[w,k]=c.useState(null),[j,E]=c.useState(null),f=(w==null?void 0:w.packages[0])??null,m=u||!!((j==null?void 0:j.status)==="succeeded"&&j.restartScheduled);c.useEffect(()=>{if(!j||!Ts(j.status))return;let b=!1;const l=window.setTimeout(async()=>{var S;try{const A=await La(j.taskId);if(b)return;if(E(A),p(Ls(A)),!Ts(A.status)){if(o(!1),A.status==="succeeded"&&A.restartScheduled){x(!0),t.bridge.showNotification(s("settings.serverRestarting"),s("settings.serverInstallWarning"));return}const T=await Ss();if(b)return;k(T),E(((S=T.packages[0])==null?void 0:S.installTask)??A),p(Cs(T.packages[0]??null,A)),A.restartRequired&&await t.bridge.showNotification(s("settings.serverRestartRequired"),A.targetVersion??"-")}}catch(A){if(b)return;o(!1),p(A instanceof Error?A.message:s("settings.serverInstallFailed"))}},Ra);return()=>{b=!0,window.clearTimeout(l)}},[t.bridge,j]),c.useEffect(()=>{if(!u||!j||j.status!=="succeeded"||!j.restartScheduled)return;let b=!1,l=0;const S=async()=>{try{const A=await Ss();if(b)return;const T=A.packages[0]??null;if(!Oa(j,T)){l=window.setTimeout(S,st);return}x(!1),k(A),E((T==null?void 0:T.installTask)??null),p(Cs(T,(T==null?void 0:T.installTask)??null))}catch{if(b)return;p(s("settings.serverRestarting")),l=window.setTimeout(S,st)}};return p(s("settings.serverRestarting")),l=window.setTimeout(S,Math.max(j.restartDelayMs??0,Ia)),()=>{b=!0,window.clearTimeout(l)}},[u,j]);async function g(){n(!0),p(null);try{const b=await Ss(),l=b.packages[0]??null;k(b),E((l==null?void 0:l.installTask)??null),p(Cs(l,(l==null?void 0:l.installTask)??null)),l!=null&&l.hasUpdate&&await t.bridge.showNotification(s("settings.serverUpdateReady"),`${s("settings.serverTargetVersion")}: ${l.latestVersion??"-"}`)}catch(b){p(b instanceof Error?b.message:s("settings.serverCheckFailed"))}finally{n(!1)}}async function y(){if(f!=null&&f.packageName){h(!1),x(!1),o(!0),p(null);try{const b=await Ea(f.packageName);E(b),p(Ls(b))}catch(b){o(!1),p(b instanceof Error?b.message:s("settings.serverInstallFailed"))}}}const C=!!(f&&f.checkStatus!=="check_failed"&&f.hasUpdate&&!f.restartRequired&&!Ts(j==null?void 0:j.status)&&!m);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:(f==null?void 0:f.currentVersion)??"-"})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.serverTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(f==null?void 0:f.latestVersion)??"-"})]})]}),f!=null&&f.hasUpdate&&!m?e.jsx("p",{className:"settings-update-note","data-tone":"warning",children:s("settings.serverInstallWarning")}):null,M?e.jsx("p",{className:"settings-update-status","data-tone":Ua(f,j,m),children:M}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:a||r||m,onClick:g,children:a?s("common.loading"):s("settings.serverCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!C||a||r||m,onClick:()=>h(!0),children:r?s("common.loading"):s("settings.serverInstallNow")})]})]}),e.jsx(Fa,{open:v,busy:r,mobile:t.isMobile,targetVersion:(f==null?void 0:f.latestVersion)??null,onClose:()=>h(!1),onConfirm:()=>{y()}})]})}function Cs(t,a){return a?Ls(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 Ls(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 Ua(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 Ts(t){return t==="queued"||t==="running"}function Oa(t,a){return a?t.targetVersion?tt(a.currentVersion)===tt(t.targetVersion):!a.hasUpdate:!1}function tt(t){return(t??"").trim().replace(/^v/i,"")}function Fa({open:t,busy:a,mobile:n,targetVersion:r,onClose:o,onConfirm:u}){const x=e.jsxs(Q,{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:u,children:a?s("common.loading"):s("settings.serverInstallConfirmAction")})]}),v=e.jsxs(G,{className:"settings-update-confirm-section",children:[e.jsx("p",{className:"settings-update-confirm-warning",children:s("settings.serverInstallWarning")}),e.jsxs("div",{className:"settings-update-confirm-meta",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.serverTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:r??"-"})]})]});return n?e.jsx(Oe,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),height:"auto",kind:"form",dismissible:!a,footer:x,onClose:o,children:v}):e.jsx(Ye,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),size:"compact",layout:"confirm",bodyClassName:"settings-update-confirm-body",dismissible:!a,footer:x,onClose:o,children:v})}async function Ba(){return await I.request("/api/system/relay-tunnel/status")}async function ks(t){return await I.request("/api/system/relay-tunnel/config",{method:"PUT",body:JSON.stringify(t)})}async function Va(t){return await I.request("/api/system/relay-tunnel/control/login",{method:"POST",body:JSON.stringify(t)})}async function Ha(){return await I.request("/api/system/relay-tunnel/control/logout",{method:"POST"})}async function qa(t){const a=t.hostLabel.trim(),n=`/api/system/relay-tunnel/control/host-label-availability?hostLabel=${encodeURIComponent(a)}`;return await I.request(n)}async function _a(t){return await I.request("/api/system/relay-tunnel/control/bind",{method:"POST",body:JSON.stringify(t)})}async function za(){return await I.request("/api/system/relay-tunnel/control/wallet")}async function nt(){return await I.request("/api/system/relay-tunnel/enable",{method:"POST"})}async function Wa(){return await I.request("/api/system/relay-tunnel/disable",{method:"POST"})}async function $a(){return await I.request("/api/system/relay-tunnel/unbind",{method:"POST"})}function Ka(){const t=Be(),{showToast:a}=Jt(),[n,r]=c.useState(null),[o,u]=c.useState(""),[x,v]=c.useState(()=>Us()),[h,M]=c.useState(()=>Ut()),[p,w]=c.useState(""),[k,j]=c.useState(""),[E,f]=c.useState(null),[m,g]=c.useState({status:"idle"}),[y,C]=c.useState(!0),[b,l]=c.useState(null),[S,A]=c.useState(null),[T,V]=c.useState(null),[F,W]=c.useState(null),[J,O]=c.useState(null),L=c.useRef(!0),_=us(n==null?void 0:n.controlBaseUrl),z=Ot(x),$=z??_,K=us(z??(n==null?void 0:n.controlBaseUrl)),N=o.trim(),B=z!==null&&z!==_,R=(n==null?void 0:n.activated)??!1,d=p.trim().length>0&&k.trim().length>0,U=!!(n!=null&&n.controlAccountEmail),D=n!=null&&n.bindingId?!0:m.status==="available"&&m.hostLabel===N,X=!!(n!=null&&n.bindingId)||U&&N.length>0&&D,re=at({controlBaseUrl:K,tunnelDomain:n==null?void 0:n.tunnelDomain,hostLabel:o}),le=!!(n!=null&&n.controlAccountEmail||n!=null&&n.bindingId),oe=!!(n!=null&&n.bindingId||D),H=!!(n!=null&&n.enabled&&(n!=null&&n.bindingId)),Ce=!!(n!=null&&n.bindingId)||X,He=E?Ee(E.grantedBytes):s("settings.tailscaleUnavailable"),Te=Ee(E?E.usedBytes:n==null?void 0:n.trafficUsedBytes),ts=Ee(E?E.remainingBytes:n==null?void 0:n.trafficRemainingBytes),xe=Rs(ce.getState()),ee=nn(),de=ee?s(an(ee.kind)):null,ue=ee?Qa(ee):null;c.useEffect(()=>(L.current=!0,ve(!1),()=>{L.current=!1}),[]),c.useEffect(()=>{if(!R)return;const i=window.setInterval(()=>{ve(!0)},5e3);return()=>{window.clearInterval(i)}},[R]),c.useEffect(()=>{!R||!U||je()},[R,U]),c.useEffect(()=>{n!=null&&n.bindingId||m.status!=="idle"&&m.hostLabel!==N&&g({status:"idle"})},[m,N,n==null?void 0:n.bindingId]),c.useEffect(()=>{v(_)},[_]);async function ve(i,P){i||C(!0);try{const q=await Ba();if(!L.current)return;se(q,P),A(null)}catch(q){L.current&&A(As(q,"status",xe))}finally{L.current&&!i&&C(!1)}}function se(i,P){r(i),O(null),i.controlAccountEmail||f(null),i.tunnelDomain&&o.trim().length===0&&u(Et(i.tunnelDomain)),((P==null?void 0:P.syncProfile)??!0)&&$e(i)}async function je(){try{const i=await za();if(!L.current)return;f(i.wallet)}catch(i){L.current&&O(ge(i))}}async function ns(){if(d){l("login-control"),O(null);try{const i=await Va({email:p.trim(),password:k});W(null),se(i),await je()}catch(i){W(As(i,"login",xe))}finally{l(null)}}}async function as(){l("logout-control"),O(null);try{const i=await Ha();se(i),f(null),g({status:"idle"})}catch(i){O(ge(i))}finally{l(null)}}async function qe(){if(!N)throw new Error(s("settings.relayTunnelHostLabelRequired"));if(m.status==="available"&&m.hostLabel===N)return{hostLabel:m.hostLabel,tunnelDomain:m.tunnelDomain,available:!0,reason:"available"};g({status:"checking",hostLabel:N});const i=await qa({hostLabel:N});if(!i.available||!i.tunnelDomain){const P=Za(i);throw g({status:"error",hostLabel:N,message:P}),new Error(P)}return g({status:"available",hostLabel:N,tunnelDomain:i.tunnelDomain}),i}async function is(){if(!(!le||n!=null&&n.bindingId)){l("check-host-label"),O(null);try{await qe()}catch{}finally{l(null)}}}async function ke(){l("learn-service"),O(null);try{await Es(t.bridge.openExternal,K)}catch(i){O(ge(i))}finally{l(null)}}async function ls(){l("manage-account"),O(null);try{await Es(t.bridge.openExternal,K)}catch(i){O(ge(i))}finally{l(null)}}async function rs(){if(re)try{await Ya(re,t),a({title:s("settings.relayTunnelAccessUrlCopied"),tone:"success"})}catch(i){a({title:i instanceof Error?i.message:s("settings.relayTunnelCopyAccessUrlFailed"),tone:"error"})}}async function cs(){if(re)try{await Es(t.bridge.openExternal,re)}catch(i){a({title:i instanceof Error?i.message:s("settings.relayTunnelOpenAccessUrlFailed"),tone:"error"})}}async function os(){if(X){l("enable"),O(null);try{let i=n;if(i!=null&&i.activated||(i=await ks({activated:!0,controlBaseUrl:$}),se(i)),i!=null&&i.bindingId||(await qe(),i=await _a({hostLabel:N}),se(i),await je()),!(i!=null&&i.enabled)){const P=await nt();se(P)}}catch(i){O(ge(i))}finally{l(null)}}}async function _e(){if(n!=null&&n.bindingId){l("reconnect"),O(null);try{n!=null&&n.enabled&&await Wa();const i=await nt();se(i),i.controlAccountEmail&&await je()}catch(i){const P=ge(i);await ve(!0,{syncProfile:!1}),O(P)}finally{l(null)}}}async function ze(){l("disconnect-device"),O(null);try{if(n!=null&&n.bindingId||n!=null&&n.accountId){const i=await $a();se(i)}if(n!=null&&n.activated){const i=await ks({activated:!1});se(i)}f(null),w(""),u(""),j(""),g({status:"idle"})}catch(i){O(ge(i))}finally{l(null)}}async function We(){if(!z){V(s("settings.serverInvalid"));return}l("save-config"),V(null);try{const i=await ks({controlBaseUrl:z});V(null),se(i)}catch(i){V(As(i,"config",xe))}finally{l(null)}}return e.jsxs("div",{className:"settings-relay-tunnel-panel",children:[y&&!n?e.jsx(G,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),children:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")})}):null,!y&&!H?e.jsxs(G,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),actions:e.jsx("button",{className:"secondary-button",disabled:b!==null,type:"button",onClick:()=>void ke(),children:s("settings.relayTunnelLearnService")}),children:[S?e.jsx(Ds,{title:s("settings.relayTunnelStatusErrorTitle"),message:S,action:e.jsx("button",{className:"secondary-button",disabled:y||b!==null,type:"button",onClick:()=>void ve(!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":Ms(le,!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(ie,{className:"settings-relay-tunnel-step-tag",children:s(Ps(le,!0))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:le?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(Q,{align:"start",children:e.jsx("button",{className:"secondary-button",disabled:b!==null,type:"button",onClick:()=>{if(n!=null&&n.bindingId){ze();return}as()},children:s("common.logout")})})]}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"settings-relay-tunnel-form",children:[e.jsx(ae,{label:s("settings.relayTunnelAccountEmail"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountEmail"),className:"settings-text-input",type:"email",value:p,onChange:i=>{w(i.target.value),W(null)},placeholder:s("settings.relayTunnelAccountEmailPlaceholder")})}),e.jsx(ae,{label:s("settings.relayTunnelAccountPassword"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountPassword"),className:"settings-text-input",type:"password",value:k,onChange:i=>{j(i.target.value),W(null)},placeholder:s("settings.relayTunnelAccountPasswordPlaceholder")})}),F?e.jsx(Ds,{title:s("settings.relayTunnelLoginErrorTitle"),message:F}):null,e.jsxs(Q,{align:"start",children:[e.jsx("button",{className:"settings-button",disabled:b!==null||!d,type:"button",onClick:()=>void ns(),children:b==="login-control"?s("common.loading"):s("settings.relayTunnelLoginAccount")}),e.jsx("button",{className:"secondary-button",disabled:b!==null,type:"button",onClick:()=>{M(i=>!i),V(null)},children:h?s("settings.relayTunnelAdvancedSettingsHide"):s("settings.relayTunnelAdvancedSettings")})]}),h?e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[e.jsx(ae,{label:s("settings.relayTunnelControlBaseUrl"),description:s("settings.relayTunnelServerAddressHint"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelControlBaseUrl"),className:"settings-text-input",type:"url",value:x,onChange:i=>{v(i.target.value),V(null)},placeholder:Us()})}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelAdvancedSettingsDescription")}),T?e.jsx(Ds,{title:s("settings.relayTunnelConfigErrorTitle"),message:T}):null,e.jsx(Q,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:y||b!==null||!B,type:"button",onClick:()=>void We(),children:b==="save-config"?s("common.loading"):s("common.save")})})]}):null]})})})]}),e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":Ms(oe,le),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(ie,{className:"settings-relay-tunnel-step-tag",children:s(Ps(oe,le))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:le?n!=null&&n.bindingId?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:re??n.tunnelDomain??s("settings.relayTunnelUnbound")})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-relay-tunnel-domain-row",children:[e.jsx("input",{"aria-label":s("settings.relayTunnelHostLabel"),className:"settings-text-input settings-relay-tunnel-domain-prefix",value:o,onChange:i=>u(i.target.value),placeholder:s("settings.relayTunnelHostLabelPlaceholder")}),e.jsx("span",{className:"settings-relay-tunnel-domain-suffix",children:s("settings.relayTunnelHostLabelSuffix")}),e.jsx("button",{className:"settings-button settings-relay-tunnel-domain-check",disabled:b!==null||N.length===0,type:"button",onClick:()=>void is(),children:b==="check-host-label"?s("common.loading"):s("settings.relayTunnelHostLabelCheck")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[m.status==="available"&&m.hostLabel===N?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:at({controlBaseUrl:$,tunnelDomain:m.tunnelDomain,hostLabel:m.hostLabel})??m.tunnelDomain})}):null,m.status==="checking"&&m.hostLabel===N?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelHostLabelChecking")}):null,m.status==="error"&&m.hostLabel===N?e.jsx("p",{className:"settings-relay-tunnel-error",children:m.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":Ms(H,oe),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(ie,{className:"settings-relay-tunnel-step-tag",children:s(Ps(H,oe))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:oe?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:R?s("settings.relayTunnelStepStartReady"):s("settings.relayTunnelActivationHint")}),e.jsx(Q,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:b!==null||!Ce,type:"button",onClick:()=>void os(),children:b==="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:[ee&&de&&ue?e.jsx(Ja,{hint:ue,label:de,url:ee.url}):null,e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelTrustBoundaryNotice")}),n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:s("settings.relayTunnelRecentError",{message:n.lastError})}):null,J?e.jsx("p",{className:"settings-relay-tunnel-error",children:J}):null]})]}):null,!y&&H?e.jsxs(G,{heading:s("settings.relayTunnelReadyTitle"),description:s("settings.relayTunnelReadyDescription"),children:[e.jsxs(we,{compact:!0,children:[ee&&de?e.jsxs(e.Fragment,{children:[e.jsx(me,{label:s("settings.relayTunnelClientRouteLabel"),value:de}),e.jsx(me,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:ee.url})]}):null,e.jsx(me,{className:"settings-relay-tunnel-summary-line-access-url",label:s("settings.relayTunnelAccessUrlLabel"),trailing:re?e.jsxs("div",{className:"settings-relay-tunnel-access-url",children:[e.jsx("span",{className:"settings-relay-tunnel-access-url-text",title:re,children:re}),e.jsxs("span",{className:"settings-relay-tunnel-access-url-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void rs(),children:s("settings.relayTunnelCopyAccessUrl")}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void cs(),children:s("settings.relayTunnelOpenAccessUrl")})]})]}):e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:s("settings.relayTunnelUnbound")})}),e.jsx(me,{label:s("settings.relayTunnelTrafficGranted"),value:He}),e.jsx(me,{label:s("settings.relayTunnelTrafficUsed"),value:Te}),e.jsx(me,{label:s("settings.relayTunnelTrafficRemaining"),value:ts})]}),e.jsxs(Q,{align:"start",className:"settings-relay-tunnel-ready-actions",children:[e.jsx("button",{className:"secondary-button",disabled:b!==null||!(n!=null&&n.bindingId),type:"button",onClick:()=>void _e(),children:b==="reconnect"?s("common.loading"):s("settings.relayTunnelReconnectAction")}),e.jsx("button",{className:"secondary-button",disabled:b!==null,type:"button",onClick:()=>void ls(),children:b==="manage-account"?s("common.loading"):s("settings.relayTunnelManageAccountAction")}),e.jsx("button",{className:"settings-button settings-button-danger",disabled:b!==null,type:"button",onClick:()=>void ze(),children:b==="disconnect-device"?s("common.loading"):s("settings.relayTunnelDisconnectDeviceAction")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[ee&&de&&ue?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:ue}):null,e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelTrustBoundaryNotice")}),n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:s("settings.relayTunnelRecentError",{message:n.lastError})}):null,J?e.jsx("p",{className:"settings-relay-tunnel-error",children:J}):null]})]}):null]});function $e(i){const P=ce.getState(),q=Ft(P);if(!q)return;const ye=Ke(i);Xa(q.relayTunnel??null,ye)||ce.update({hosts:P.hosts.map(ds=>ds.id===q.id?{...ds,relayTunnel:ye,updatedAt:new Date().toISOString()}:ds)})}function Ke(i){return!(i!=null&&i.bindingId)||!i.tunnelDomain?null:{provider:"codingns_relay",enabled:i.enabled,tunnelDomain:i.tunnelDomain.trim().toLowerCase(),controlBaseUrl:us(i.controlBaseUrl),bindingId:i.bindingId,hostFingerprint:i.hostFingerprint,candidateEndpoints:i.candidateEndpoints}}}function Ja({label:t,url:a,hint:n}){return e.jsxs(e.Fragment,{children:[e.jsxs(we,{compact:!0,children:[e.jsx(me,{label:s("settings.relayTunnelClientRouteLabel"),value:t}),e.jsx(me,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:a})]}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:n})]})}function me({label:t,value:a,trailing:n,className:r}){return e.jsx(Re,{className:r,label:t,trailing:n??e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:a})})}function Qa(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 Ds({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 Ms(t,a){return t?"done":a?"current":"pending"}function Ps(t,a){return t?"settings.relayTunnelStepDone":a?"settings.relayTunnelStepCurrent":"settings.relayTunnelStepPending"}function Za(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 ge(t){return t instanceof be||t instanceof Error?t.message:s("settings.relayTunnelLoadFailed")}function As(t,a,n){if(t instanceof be&&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 ge(t)}function Ee(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 Et(t){return t?t.split(".")[0]||s("common.unknown"):s("common.unknown")}function at(t){var r,o,u,x;const a=it(t.hostLabel)??it(Et(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((u=t.tunnelDomain)==null?void 0:u.trim())??null;try{const v=new URL(n);return v.hostname=`${a}.${v.hostname}`,v.pathname="/",v.search="",v.hash="",v.origin}catch{return((x=t.tunnelDomain)==null?void 0:x.trim())??null}}function it(t){const a=(t==null?void 0:t.trim().toLowerCase())??"";return!a||a===s("common.unknown").toLowerCase()?null:a}async function Es(t,a){!(await t(a)).ok&&typeof window<"u"&&window.open(a,"_blank","noopener,noreferrer")}function Ga(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 Ya(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(!Ga(t))throw new Error(s("settings.relayTunnelCopyAccessUrlFailed"))}function Xa(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 lt(){return await I.request("/api/system/tailscale/status")}async function rt(t){return await I.request("/api/system/tailscale/config",{method:"PUT",body:JSON.stringify(t)})}async function ei(){return await I.request("/api/system/tailscale/enable",{method:"POST"})}async function si(){return await I.request("/api/system/tailscale/disable",{method:"POST"})}async function ti(){return await I.request("/api/system/tailscale/login",{method:"POST"})}async function ni(){return await I.request("/api/system/tailscale/logout",{method:"POST"})}function ai({children:t}){return e.jsx("div",{className:"settings-remote-access-metrics",children:t})}function Ge({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 ii({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 li({configMode:t="modal"}){const a=Be(),[n,r]=c.useState(null),[o,u]=c.useState(""),[x,v]=c.useState(""),[h,M]=c.useState(!0),[p,w]=c.useState(null),[k,j]=c.useState(null),[E,f]=c.useState(!1),[m,g]=c.useState(!1),y=c.useRef(!0),C=c.useRef(!1),b=c.useRef(async()=>{}),l=t==="inline",S=(n==null?void 0:n.activated)??!1;C.current=m;function A(N){if(r(N),u(N.controlServerUrl??""),v(N.hostname??""),j(null),!N.activated){g(!1),f(!1);return}C.current&&!dt(N.lastError)&&g(!1)}b.current=async N=>{N||M(!0);try{const B=await lt();if(!y.current)return;A(B)}catch(B){if(!y.current)return;j(Le(B))}finally{y.current&&!N&&M(!1)}},c.useEffect(()=>(y.current=!0,b.current(!1),()=>{y.current=!1}),[]),c.useEffect(()=>{if(!S)return;const N=window.setInterval(()=>{b.current(!0)},5e3);return()=>{window.clearInterval(N)}},[S]),c.useEffect(()=>{if(!m||!S)return;function N(){b.current(!0)}function B(){document.visibilityState==="visible"&&b.current(!0)}return window.addEventListener("focus",N),document.addEventListener("visibilitychange",B),()=>{window.removeEventListener("focus",N),document.removeEventListener("visibilitychange",B)}},[S,m]);const T=((n==null?void 0:n.controlServerUrl)??"")!==o.trim()||((n==null?void 0:n.hostname)??"")!==x.trim(),V=S&&dt(n==null?void 0:n.lastError),F=S&&oi(a.ui.osFamily)&&V;async function W(){const N=await rt({controlServerUrl:ot(o),hostname:ot(x)});return A(N),N}async function J(N){w("toggle-activation"),j(null);try{const B=await rt({activated:N});A(B)}catch(B){j(Le(B))}finally{w(null),M(!1)}}async function O(N){w(N),j(null);try{T&&N!=="disable"&&N!=="logout"&&await W();const B=N==="enable"?await ei():N==="disable"?await si():N==="login"?await ti():await ni();A(B)}catch(B){j(Le(B))}finally{w(null)}}async function L(){w("save"),j(null);try{await W(),f(!1)}catch(N){j(Le(N))}finally{w(null)}}async function _(){w("refresh"),j(null);try{const N=await lt();A(N)}catch(N){j(Le(N))}finally{w(null),M(!1)}}async function z(){const N=di(a.ui.osFamily);if(N){w("install"),j(null);try{const B=await a.bridge.openExternal(N);if(!B.ok){j(B.detail??s("settings.tailscaleInstallOpenFailed"));return}g(!0)}catch(B){j(B instanceof Error?B.message:s("settings.tailscaleInstallOpenFailed"))}finally{w(null)}}}function $(){p!=="save"&&f(!1)}const K=S?e.jsxs("span",{className:"settings-tailscale-status-indicator","data-tone":ui((n==null?void 0:n.phase)??"disabled"),children:[e.jsx("span",{className:"settings-tailscale-status-dot","aria-hidden":"true"}),ci((n==null?void 0:n.phase)??"disabled")]}):s("settings.remoteAccessFeatureDisabledValue");return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-panel",children:[e.jsx(G,{heading:s("settings.tailscaleSectionTitle"),description:s("settings.tailscaleSectionDescription"),actions:e.jsx(ii,{checked:S,label:s("settings.tailscaleMasterSwitchLabel"),disabled:p!==null,onChange:N=>{J(N)}}),children:h&&!n?e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[e.jsxs(ai,{children:[e.jsx(Ge,{label:s("settings.tailscaleStatusIndicator"),value:K}),e.jsx(Ge,{label:s("settings.tailscaleServerAddress"),value:S?(n==null?void 0:n.reachableBaseUrl)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(Ge,{label:s("settings.tailscaleAccountName"),value:S?(n==null?void 0:n.accountName)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(Ge,{label:s("settings.tailscaleIpAddress"),value:S?ri(n):s("settings.tailscaleUnavailable")})]}),S?null:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("settings.tailscaleActivationHint")}),S&&(n==null?void 0:n.phase)==="needs_login"&&n.loginUrl?e.jsx("p",{className:"settings-tailscale-login-url",children:e.jsx("a",{className:"settings-tailscale-link",href:n.loginUrl,rel:"noreferrer",target:"_blank",children:n.loginUrl})}):null,k||n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:k??(n==null?void 0:n.lastError)}):null,S?e.jsxs(Q,{align:"start",children:[F?e.jsx("button",{className:"settings-button",type:"button",disabled:h||p!==null,onClick:()=>{z()},children:p==="install"?s("common.loading"):s("settings.tailscaleInstallAction")}):null,l?null:e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null,onClick:()=>f(!0),children:s("settings.tailscaleConfigure")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null,onClick:()=>{_()},children:p==="refresh"?s("common.loading"):s("settings.tailscaleRefresh")}),n!=null&&n.enabled?e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null||V,onClick:()=>{O("disable")},children:p==="disable"?s("common.loading"):s("settings.tailscaleDisable")}):e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null||V,onClick:()=>{O("enable")},children:p==="enable"?s("common.loading"):s("settings.tailscaleEnable")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null||!(n!=null&&n.enabled)||V,onClick:()=>{O("login")},children:p==="login"?s("common.loading"):s("settings.tailscaleLogin")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null||!(n!=null&&n.enabled)||V,onClick:()=>{O("logout")},children:p==="logout"?s("common.loading"):s("settings.tailscaleLogout")})]}):null]})}),l&&S?e.jsx(G,{heading:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),children:e.jsx(ct,{controlServerUrlDraft:o,hostnameDraft:x,pendingAction:p,configDirty:T,onControlServerUrlChange:u,onHostnameChange:v,onSave:()=>{L()}})}):null]}),e.jsx(Se,{open:!l&&S&&E,title:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),size:"regular",onClose:$,children:e.jsx(ct,{controlServerUrlDraft:o,hostnameDraft:x,pendingAction:p,configDirty:T,footer:e.jsx("div",{className:"settings-tailscale-modal-actions",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:p==="save",onClick:$,children:s("common.cancel")})}),onControlServerUrlChange:u,onHostnameChange:v,onSave:()=>{L()}})})]})}function ct({controlServerUrlDraft:t,hostnameDraft:a,pendingAction:n,configDirty:r,footer:o,onControlServerUrlChange:u,onHostnameChange:x,onSave:v}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-form",children:[e.jsx(ae,{label:s("settings.tailscaleControlServer"),children:e.jsx("input",{"aria-label":s("settings.tailscaleControlServer"),className:"settings-text-input",placeholder:s("settings.tailscaleControlServerPlaceholder"),value:t,onChange:h=>u(h.target.value)})}),e.jsx(ae,{label:s("settings.tailscaleHostname"),children:e.jsx("input",{"aria-label":s("settings.tailscaleHostname"),className:"settings-text-input",placeholder:s("settings.tailscaleHostnamePlaceholder"),value:a,onChange:h=>x(h.target.value)})})]}),e.jsxs(Q,{align:"start",className:"settings-tailscale-config-actions",children:[o,e.jsx("button",{className:"settings-button",type:"button",disabled:n!==null||!r,onClick:v,children:n==="save"?s("common.loading"):s("common.save")})]})]})}function ot(t){const a=t.trim();return a.length>0?a:null}function Le(t){return t instanceof be||t instanceof Error?t.message:s("settings.tailscaleLoadFailed")}function ri(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 ci(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 dt(t){return t?t.includes("Tailscale CLI"):!1}function oi(t){return t==="macos"||t==="windows"}function di(t){switch(t){case"macos":return"https://tailscale.com/download/mac";case"windows":return"https://tailscale.com/download/windows";default:return null}}function ui(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 Lt({open:t,mobile:a,onClose:n}){const[r,o]=c.useState("tunnel"),u=c.useId(),x=[{id:"tunnel",label:s("settings.remoteAccessTunnelTab")},{id:"tailscale",label:s("settings.remoteAccessTailscaleTab")}],v=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.remoteAccessTabsLabel"),children:x.map(h=>{const M=`${u}-${h.id}-tab`,p=`${u}-${h.id}-panel`,w=r===h.id;return e.jsx("button",{id:M,type:"button",role:"tab",className:"settings-model-tab","data-active":w?"true":void 0,"aria-selected":w,"aria-controls":p,onClick:()=>o(h.id),children:h.label},h.id)})}),r==="tunnel"?e.jsx("div",{id:`${u}-tunnel-panel`,"aria-labelledby":`${u}-tunnel-tab`,role:"tabpanel",children:e.jsx(Ka,{})}):e.jsx("div",{id:`${u}-tailscale-panel`,"aria-labelledby":`${u}-tailscale-tab`,role:"tabpanel",children:e.jsx(li,{configMode:"inline"})})]});return a?e.jsx(Oe,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:n,children:v}):e.jsx(Se,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),size:"wide",onClose:n,children:v})}function ut({title:t,description:a,actions:n,content:r,className:o}){return e.jsx(rn,{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 Rt={start:43e3,end:47999};function gi(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 mi(t){return gi(t)?t==="model-management"||t==="provider-management"?"ability-management":t:null}function hi(t){return t==="en-US"?s("locale.enUS"):s("locale.zhCN")}function pi(t){return t==="beta"?s("settings.releaseBeta"):s("settings.releaseStable")}function fi(t){switch(t){case"acceptEdits":return s("settings.permissionModeAcceptEdits");case"bypassPermissions":return s("settings.permissionModeBypassPermissions");default:return s("settings.permissionModeDefault")}}function bi(){const t=ht(),{theme:a,selectedTheme:n,autoTheme:r,setTheme:o,setAutoTheme:u}=Zt(),x=Bt(D=>D),v=gs(D=>D.profile.language),h=gs(D=>D.profile.defaultPermissionMode),M=De(D=>D.sessionDisplaySortMode),p=De(D=>D.showSystemFiles),w=De(D=>D.notificationPreferences.notifyOnPermissionRequest),k=De(D=>D.notificationPreferences.notifyOnSessionCompleted),j=De(D=>D.notificationPreferences.notifyOnSessionFailed),E={language:v,defaultPermissionMode:h,debugPortPools:gs(D=>D.profile.debugPortPools)??Rt},f=Be(),m=Vt(x.platform),g=m,y=Rs(x)??"",[C,b]=c.useState(y);c.useEffect(()=>{b(y)},[y]);function l(){qt.clear(),ms.resetToLocalFallback(),t("/login",{replace:!0})}function S(D){o(D)}function A(D){u(D)}function T(D){try{return Ht(D)}catch{return null}}const V=T(C),F=V!==null&&V!==y;function W(D){D.preventDefault(),V&&ce.update({hosts:x.hosts.map(X=>X.id===x.activeHostId?{...X,baseUrl:V,updatedAt:new Date().toISOString()}:X)})}const J=[{value:"default",label:s("settings.permissionModeDefault")},{value:"acceptEdits",label:s("settings.permissionModeAcceptEdits")},{value:"bypassPermissions",label:s("settings.permissionModeBypassPermissions")}],O=[{value:"createdAt",label:s("settings.sessionSortModeCreatedAt")},{value:"updatedAt",label:s("settings.sessionSortModeUpdatedAt")},{value:"title",label:s("settings.sessionSortModeTitle")}];function L(D){ce.update({releaseChannel:D==="beta"?"beta":"stable"})}function _(D){ce.update({autoReconnect:D})}function z(D){ce.update({autoCheckUpdate:D})}function $(D){const X=D==="acceptEdits"||D==="bypassPermissions"?D:"default";ms.updateProfile({defaultPermissionMode:X}).catch(()=>{})}function K(D){const X=D==="updatedAt"||D==="title"?D:"createdAt";Me.setSessionDisplaySortMode(X)}function N(D){Me.setShowSystemFiles(D)}function B(D){Me.setNotificationPreferences({notifyOnPermissionRequest:D})}function R(D){Me.setNotificationPreferences({notifyOnSessionCompleted:D})}function d(D){Me.setNotificationPreferences({notifyOnSessionFailed:D})}async function U(D){await ms.updateProfile({debugPortPools:D})}return{platform:f,theme:a,selectedTheme:n,autoTheme:r,applyTheme:S,applyAutoTheme:A,runtimeConfig:x,accountPreferences:E,sessionDisplaySortMode:M,showSystemFiles:p,notifyOnPermissionRequest:w,notifyOnSessionCompleted:k,notifyOnSessionFailed:j,showServerSettings:g,canConfigureServerAddress:m,hostBaseUrlDraft:C,setHostBaseUrlDraft:b,canSaveHostBaseUrl:F,permissionModeOptions:J,sessionDisplaySortModeOptions:O,handleHostBaseUrlSubmit:W,handleLogout:l,updateReleaseChannel:L,updateAutoReconnect:_,updateAutoCheckUpdate:z,updateDefaultPermissionMode:$,updateSessionDisplaySortMode:K,updateShowSystemFiles:N,updateNotifyOnPermissionRequest:B,updateNotifyOnSessionCompleted:R,updateNotifyOnSessionFailed:d,updateDebugPortPools:U}}function qi(){const t=bi(),a=Qt();return t.platform.isMobile?e.jsx(vi,{model:t,appVersion:a}):e.jsx(xi,{model:t,appVersion:a})}function xi({model:t,appVersion:a}){const[n,r]=c.useState(!1),[o,u]=c.useState(!1),{theme:x,selectedTheme:v,autoTheme:h,applyTheme:M,applyAutoTheme:p,runtimeConfig:w,accountPreferences:k,sessionDisplaySortMode:j,showSystemFiles:E,notifyOnPermissionRequest:f,notifyOnSessionCompleted:m,notifyOnSessionFailed:g,showServerSettings:y,hostBaseUrlDraft:C,setHostBaseUrlDraft:b,canSaveHostBaseUrl:l,permissionModeOptions:S,sessionDisplaySortModeOptions:A,platform:T,handleHostBaseUrlSubmit:V,handleLogout:F,updateReleaseChannel:W,updateAutoReconnect:J,updateAutoCheckUpdate:O,updateDefaultPermissionMode:L,updateSessionDisplaySortMode:_,updateShowSystemFiles:z,updateNotifyOnPermissionRequest:$,updateNotifyOnSessionCompleted:K,updateNotifyOnSessionFailed:N,updateDebugPortPools:B}=t;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(pt,{})})]}),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(Y,{checked:h,label:s("settings.autoTheme"),onChange:p})]}),e.jsx("span",{className:"settings-theme-note",children:s("settings.autoThemeDescription")})]}),e.jsx("div",{className:"theme-selector",children:ft.map(R=>e.jsxs("button",{type:"button",className:`theme-card ${v===R.id&&!h?"active":""}`,"aria-pressed":v===R.id&&!h,disabled:h,onClick:()=>M(R.id),children:[e.jsx("span",{className:"theme-preview",style:{background:R.color}}),e.jsx("span",{className:"theme-label",children:bt(R)}),v===R.id&&!h?e.jsx("span",{className:"theme-check",children:"✓"}):null]},R.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:j,onChange:R=>_(R.target.value),children:A.map(R=>e.jsx("option",{value:R.value,children:R.label},R.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(Y,{checked:E,label:s("settings.showSystemFiles"),onChange:z})})]})]})]}),y?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:V,children:[e.jsx("input",{"aria-label":s("settings.serverAddress"),className:"settings-text-input",value:C,onChange:R=>b(R.target.value)}),e.jsx("button",{className:"settings-button",disabled:!l,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(Y,{checked:w.autoReconnect,label:s("settings.autoReconnect"),onChange:J})})]})]})]}):null,e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.abilityManagement")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.providerManagement")}),e.jsx("span",{className:"settings-row-description",children:s("settings.providerManagementDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(yt,{})})]}),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.modelManagementSectionTitle")}),e.jsx("span",{className:"settings-row-description",children:s("settings.modelManagementSectionSummary")})]}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(jt,{})})]})]})]}),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(wt,{})})]})})]}),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:()=>u(!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:k.defaultPermissionMode,onChange:R=>L(R.target.value),children:S.map(R=>e.jsx("option",{value:R.value,children:R.label},R.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(Dt,{})})]}),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(Y,{checked:f,label:s("settings.notifyOnPermissionRequest"),onChange:$})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.notifyOnSessionCompleted")}),e.jsx("span",{className:"settings-row-description",children:s("settings.notifyOnSessionCompletedDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(Y,{checked:m,label:s("settings.notifyOnSessionCompleted"),onChange:K})})]}),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(Y,{checked:g,label:s("settings.notifyOnSessionFailed"),onChange:N})})]})]})]}),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(It,{value:k.debugPortPools,onSave:B})})]}),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:w.releaseChannel,onChange:R=>W(R.target.value),children:[e.jsx("option",{value:"stable",children:s("settings.releaseStable")}),e.jsx("option",{value:"beta",children:s("settings.releaseBeta")})]})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsx("div",{className:"settings-row-label",children:e.jsx("span",{className:"settings-row-title",children:s("settings.serverUpdate")})}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(At,{})})]}),T.isWeb?null:e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-row",children:[e.jsx("div",{className:"settings-row-label",children:e.jsx("span",{className:"settings-row-title",children:s("settings.autoCheckUpdate")})}),e.jsx("div",{className:"settings-row-control",children:e.jsx(Y,{checked:w.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:O})})]}),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(vt,{})})]})]})]})]}),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:F,type:"button",children:s("common.logout")})]})]}),e.jsx(dn,{isOpen:n,onClose:()=>r(!1)}),e.jsx(Lt,{open:o,mobile:!1,onClose:()=>u(!1)})]})}function vi({model:t,appVersion:a}){const n=ht(),{section:r}=Gt(),o=mi(r),u=[{id:"appearance",title:s("settings.appearance"),description:s("settings.appearanceSectionSummary"),value:hi(t.accountPreferences.language),icon:e.jsx(Di,{})}];return t.showServerSettings&&u.push({id:"server-connection",title:s("settings.serverConnection"),description:s("settings.serverConnectionSectionSummary"),value:Rs(t.runtimeConfig)??"",icon:e.jsx(Mi,{})}),u.push({id:"ability-management",title:s("settings.abilityManagement"),description:s("settings.abilityManagementSectionSummary"),value:s("settings.abilityManagementNavValue"),icon:e.jsx(Ei,{})},{id:"channels-management",title:s("settings.channelsManagement"),description:s("settings.channelsManagementSectionSummary"),value:s("settings.channelsManagementNavValue"),icon:e.jsx(Li,{})},{id:"remote-access",title:s("settings.remoteAccess"),description:s("settings.remoteAccessSectionSummary"),value:s("settings.remoteAccessNavValue"),icon:e.jsx(Ai,{})},{id:"security-privacy",title:s("settings.securityPrivacy"),description:s("settings.securityPrivacySectionSummary"),value:fi(t.accountPreferences.defaultPermissionMode),icon:e.jsx(Ri,{})},{id:"software-update",title:s("settings.softwareUpdate"),description:s("settings.softwareUpdateSectionSummary"),value:pi(t.runtimeConfig.releaseChannel),icon:e.jsx(Pi,{})}),(o?u.find(v=>v.id===o)??null:null)?e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(ut,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[o==="appearance"?e.jsx(ji,{model:t}):null,o==="ability-management"?e.jsx(Ci,{}):null,o==="channels-management"?e.jsx(Ti,{}):null,o==="server-connection"&&t.showServerSettings?e.jsx(yi,{model:t}):null,o==="remote-access"?e.jsx(Si,{model:t}):null,o==="security-privacy"?e.jsx(Ni,{model:t}):null,o==="software-update"?e.jsx(ki,{model:t}):null]}),e.jsx(mt,{onLogout:t.handleLogout})]}):e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(ut,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[e.jsx("section",{className:"settings-mobile-group-section",children:e.jsx("div",{className:"settings-mobile-list",children:u.map(v=>e.jsxs("button",{type:"button",className:"settings-mobile-nav-row",onClick:()=>n(`/settings/${v.id}`),children:[e.jsx("span",{className:"settings-mobile-nav-icon",children:v.icon}),e.jsxs("span",{className:"settings-mobile-nav-copy",children:[e.jsx("span",{className:"settings-mobile-nav-title",children:v.title}),e.jsx("span",{className:"settings-mobile-nav-description",children:v.description})]}),e.jsxs("span",{className:"settings-mobile-nav-trailing",children:[v.value?e.jsx("span",{className:"settings-mobile-nav-value",children:v.value}):null,e.jsx(Ii,{})]})]},v.id))})}),e.jsx("div",{className:"settings-footer settings-footer-mobile",children:e.jsxs("span",{className:"settings-version",children:["CodingNS v",a]})})]}),e.jsx(mt,{onLogout:t.handleLogout})]})}function ji({model:t}){return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.language")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.languageDescription")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsx("div",{className:"settings-mobile-row-copy",children:e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.language")})}),e.jsx(pt,{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(Y,{checked:t.autoTheme,label:s("settings.autoTheme"),onChange:t.applyAutoTheme})]}),ft.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:bt(a)})]}),e.jsx("span",{className:"settings-mobile-choice-indicator","aria-hidden":"true",children:n?e.jsx(Ui,{}):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(Y,{checked:t.showSystemFiles,label:s("settings.showSystemFiles"),onChange:t.updateShowSystemFiles})]})]})]})]})}function yi({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(Y,{checked:t.runtimeConfig.autoReconnect,label:s("settings.autoReconnect"),onChange:t.updateAutoReconnect})]})})]})]})}function Ni({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(Dt,{compact:!0})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.debugPortPool")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsx(It,{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(Y,{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(Y,{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(Y,{checked:t.notifyOnSessionFailed,label:s("settings.notifyOnSessionFailed"),onChange:t.updateNotifyOnSessionFailed})]})]})]})]})}function It(t){const[a,n]=c.useState(()=>gt(t.value)),[r,o]=c.useState(!1),[u,x]=c.useState(null),[v,h]=c.useState(!1);c.useEffect(()=>{n(gt(t.value))},[t.value]);async function M(){x(null),h(!1);let p;try{p=wi(a)}catch(w){x(w instanceof Error?w.message:s("settings.debugPortPoolSaveFailed"));return}try{o(!0),await t.onSave(p),h(!0)}catch(w){x(w instanceof Error?w.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:p=>{const w=p.target.value;n(k=>({...k,start:w}))}}),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:p=>{const w=p.target.value;n(k=>({...k,end:w}))}}),e.jsx("button",{type:"button",className:t.compact?"settings-mobile-primary-button":"settings-button",disabled:r,onClick:()=>{M()},children:r?s("common.loading"):s("common.save")}),v?e.jsx("span",{children:s("settings.debugPortPoolSaved")}):null]})})]}),u?e.jsx("p",{className:"status-text settings-debug-port-pool-feedback","data-tone":"error",children:u}):null]})}function gt(t){const a=t??Rt;return{start:String(a.start),end:String(a.end)}}function wi(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 Si({model:t}){const[a,n]=c.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(Lt,{open:a,mobile:!0,onClose:()=>n(!1)})]})}function Ci(){return 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-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(yt,{})]}),e.jsxs("div",{className:"settings-mobile-panel-shell settings-mobile-model-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.modelManagementSectionTitle")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.modelManagementSectionSummary")})]}),e.jsx(jt,{})]})]})]})}function Ti(){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(wt,{})]})]})}function ki({model:t}){return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.softwareUpdate")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.releaseChannel")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.releaseChannelDescription")})]}),e.jsxs("select",{"aria-label":s("settings.releaseChannel"),className:"settings-select settings-mobile-select",value:t.runtimeConfig.releaseChannel,onChange:a=>t.updateReleaseChannel(a.target.value),children:[e.jsx("option",{value:"stable",children:s("settings.releaseStable")}),e.jsx("option",{value:"beta",children:s("settings.releaseBeta")})]})]})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.serverUpdate")}),e.jsx("div",{className:"settings-mobile-panel-shell settings-mobile-update-shell",children:e.jsx(At,{})})]}),t.platform.isWeb?null:e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.clientUpdate")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsx("div",{className:"settings-mobile-row-copy",children:e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.autoCheckUpdate")})}),e.jsx(Y,{checked:t.runtimeConfig.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:t.updateAutoCheckUpdate})]})}),e.jsx("div",{className:"settings-mobile-panel-shell settings-mobile-update-shell",children:e.jsx(vt,{})})]})]})}function mt({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 Y({checked:t,label:a,onChange:n}){return e.jsxs("label",{className:"settings-mobile-switch","aria-label":a,onClick:r=>{r.target instanceof HTMLInputElement||(r.preventDefault(),n(!t))},children:[e.jsx("input",{type:"checkbox","aria-label":a,checked:t,onChange:r=>n(r.target.checked)}),e.jsx("span",{className:"settings-mobile-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-mobile-switch-thumb"})})]})}function Di(){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 Mi(){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 Pi(){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 Ai(){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 Ei(){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 Li(){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 Ri(){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 Ii(){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 Ui(){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{qi as SettingsPage};
|
|
1
|
+
import{b as c,j as e,t as s,C as I,c as Fe,e as ce,w as ss,A as be,Q as fe,S as Us,T as Ut,U as us,V as Ot,W as Rs,h as Ft,f as Bt,X as gs,q as Vt,n as Ht,d as ms,m as qt}from"./index-CjewzOUG.js";import{g as _t,i as Os,k as zt,l as Wt,n as $t,o as Kt,e as Be,f as Jt,p as Qt,u as ht,j as Zt,c as Gt,L as pt,T as ft,q as bt}from"./App-B0q8uDA-.js";import{q as Fs,am as Yt,ag as xt,A as Xt,f as G,V as Z,k as ie,v as Q,M as Oe,an as en,ao as sn,ap as tn,h as ae,i as we,j as Re,l as nn,m as an,u as De,aq as Me}from"./model-switch-api-Br0ivfe5.js";import{M as ln,W as Se,D as Ye}from"./WorkbenchModal-BYNuMIoV.js";import{M as rn}from"./MobileTopHeaderFrame-_I0t7cC_.js";const Bs=2e4,cn=1e3,on=5e3;function dn({isOpen:t,onClose:a}){const[n,r]=c.useState(null),[o,u]=c.useState(null),[x,v]=c.useState(!1),[h,M]=c.useState(!1),[p,w]=c.useState(null),k=c.useRef(null);if(c.useEffect(()=>{if(!t)return;let m=!1;async function g(){v(!0),w(null),u(null);try{const y=await I.request("/api/observability/runtime/session",{method:"POST",body:JSON.stringify({ttlMs:Bs})});if(m){await hs(y.sessionId);return}k.current=y.sessionId,r(y);const C=await Vs(y.sessionId);if(m){await hs(y.sessionId);return}u(C)}catch(y){m||w(ps(y))}finally{m||v(!1)}}return g(),()=>{m=!0;const y=k.current;k.current=null,r(null),u(null),v(!1),M(!1),w(null),y&&hs(y)}},[t]),c.useEffect(()=>{const m=(n==null?void 0:n.sessionId)??null;if(!t||!m)return;const g=m;let y=!1;async function C(){M(!0);try{const l=await Vs(g);y||(u(l),w(null))}catch(l){y||w(ps(l))}finally{y||M(!1)}}const b=window.setInterval(()=>{C()},cn);return()=>{y=!0,window.clearInterval(b)}},[t,n==null?void 0:n.sessionId]),c.useEffect(()=>{const m=(n==null?void 0:n.sessionId)??null;if(!t||!m)return;const g=m;let y=!1;async function C(){try{const l=await I.request(`/api/observability/runtime/session/${g}/heartbeat`,{method:"POST",body:JSON.stringify({ttlMs:Bs})});y||r(l)}catch(l){y||w(ps(l))}}const b=window.setInterval(()=>{C()},on);return()=>{y=!0,window.clearInterval(b)}},[t,n==null?void 0:n.sessionId]),!t||typeof document>"u")return null;const j=Object.entries((o==null?void 0:o.backgroundTasks.taskTypes)??{}),E=Object.entries((o==null?void 0:o.schedulers.schedulers)??{}),f=Object.entries((o==null?void 0:o.backgroundTasks.totals)??{});return _t.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":p?"error":"active",children:p?s("settings.parallelTaskDebugStatusError"):s("settings.parallelTaskDebugStatusActive")}),e.jsx(ln,{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:fs(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:fs(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:un((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")})]})]}),x?e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugLoading")}):null,!x&&p?e.jsx("div",{className:"parallel-task-debug-error",children:p}):null,!x&&!p&&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:h?s("common.loading"):s("settings.parallelTaskDebugAutoRefresh")})]}),e.jsx("div",{className:"parallel-task-debug-counter-grid",children:f.map(([m,g])=>e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:gn(m)}),e.jsx("strong",{children:g})]},m))})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugTaskMetricsTitle")}),e.jsx("span",{children:j.length})]}),j.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:j.map(([m,g])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:m}),e.jsx("span",{children:Hs(g.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitAvg"),": ",te(g.waitMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunAvg"),": ",te(g.runMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMax"),": ",te(g.runMs.max)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugStartedCount"),": ",g.counters.started??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFinishedCount"),": ",g.counters.finished??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFailedCount"),": ",g.counters.failed??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugCacheHitCount"),": ",g.counters.cache_hit??0]})]})]},m))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugSchedulerTitle")}),e.jsx("span",{children:E.length})]}),E.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:E.map(([m,g])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:m}),e.jsx("span",{children:g.lastIdle?s("settings.parallelTaskDebugIdle"):s("settings.parallelTaskDebugBusy")})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTickTotal"),": ",g.tickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugIdleTickTotal"),": ",g.idleTickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCountTotal"),": ",g.taskCountTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSchedulerErrorTotal"),": ",g.errorTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugLastDuration"),": ",te(g.lastDurationMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugNextDelay"),": ",te(g.nextDelayMs)]})]})]},m))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugEventLoopTitle")}),e.jsx("span",{children:o.eventLoop.enabled?s("settings.parallelTaskDebugCollectorEnabled"):s("settings.parallelTaskDebugCollectorDisabled")})]}),e.jsxs("div",{className:"parallel-task-debug-counter-grid",children:[e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopResolution")}),e.jsx("strong",{children:te(o.eventLoop.resolutionMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMean")}),e.jsx("strong",{children:te(o.eventLoop.meanMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP95")}),e.jsx("strong",{children:te(o.eventLoop.p95Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP99")}),e.jsx("strong",{children:te(o.eventLoop.p99Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMax")}),e.jsx("strong",{children:te(o.eventLoop.maxMs)})]})]})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugRecentActivitiesTitle")}),e.jsx("span",{children:o.recentTaskActivities.length})]}),o.recentTaskActivities.length>0?e.jsx("div",{className:"parallel-task-debug-activity-list",children:o.recentTaskActivities.map(m=>e.jsxs("article",{className:"parallel-task-debug-activity-item",children:[e.jsxs("div",{className:"parallel-task-debug-activity-main",children:[e.jsxs("div",{className:"parallel-task-debug-activity-title-row",children:[e.jsx("strong",{children:m.taskType}),e.jsx("span",{children:mn(m.eventType)}),e.jsx("span",{children:Hs(m.executionLane)})]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugTaskKey"),": ",m.key]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugStatus"),": ",m.status?hn(m.status):"-"]})]}),e.jsxs("div",{className:"parallel-task-debug-activity-meta",children:[e.jsx("span",{children:fs(m.recordedAt)}),e.jsxs("span",{children:[s("settings.parallelTaskDebugAttempt"),": ",m.attempt??"-"]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitMs"),": ",te(m.waitMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMs"),": ",te(m.runMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSource"),": ",m.source??"-"]}),m.errorMessage?e.jsxs("span",{children:[s("settings.parallelTaskDebugError"),": ",m.errorMessage]}):null]})]},m.eventId))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]})]}):null]})]})]}),document.body)}async function Vs(t){return await I.request(`/api/observability/runtime?sessionId=${encodeURIComponent(t)}`)}async function hs(t){try{await I.request(`/api/observability/runtime/session/${t}`,{method:"DELETE"})}catch{}}function ps(t){return t instanceof Error&&t.message?t.message:s("settings.parallelTaskDebugLoadFailed")}function fs(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function te(t){return t==null||Number.isNaN(t)?"-":`${Math.round(t*100)/100} ms`}function un(t){return t===null||Number.isNaN(t)?"-":`${Math.round(t/1e3)} s`}function gn(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 Hs(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 mn(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 hn(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 qs(){const t=Fe(),a=ce.getState(),n=await t.bridge.getAndroidRuntimeInfo();if(!n.ok||!n.value)throw new Error(n.detail??"读取 Android 运行时信息失败。");const r=await I.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 pn(t){return Fe().bridge.installAndroidUpdate(t)}function fn(){const[t,a]=c.useState(!1),[n,r]=c.useState(!1),[o,u]=c.useState(null),[x,v]=c.useState(null),[h,M]=c.useState(null),[p,w]=c.useState(!1),[k,j]=c.useState(null),E=c.useRef(!1);c.useEffect(()=>{if(k===null){E.current=!1;return}const g=k;async function y(){if(!E.current){E.current=!0;try{const l=await qs();if(M(l.manifest),v(l.currentVersion),w(l.hasUpdate),!l.hasUpdate||l.currentVersionCode>=g){u(s("settings.androidInstallSucceeded"));return}u(s("settings.androidInstallCancelled"))}catch(l){u(l instanceof Error?l.message:s("settings.releaseCheckFailed"))}finally{j(null)}}}function C(){y()}function b(){document.visibilityState==="visible"&&y()}return window.addEventListener("focus",C),document.addEventListener("visibilitychange",b),()=>{window.removeEventListener("focus",C),document.removeEventListener("visibilitychange",b)}},[k]);async function f(){a(!0),u(null),j(null);try{const g=await qs();M(g.manifest),v(g.currentVersion),w(g.hasUpdate),u(g.hasUpdate?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate"))}catch(g){u(g instanceof Error?g.message:s("settings.releaseCheckFailed"))}finally{a(!1)}}async function m(){if(h){r(!0),u(null),j(null);try{const g=await pn(h);if(g.status==="installer_started"){u(s("settings.androidInstallerStarted")),j(h.versionCode);return}if(g.status==="permission_required"){u(g.detail??s("settings.androidInstallPermissionRequired")),j(null);return}if(g.status==="already_up_to_date"){u(s("settings.releaseUpToDate")),w(!1),j(null);return}u(g.detail??s("settings.releaseInstallFailed")),j(null)}catch(g){u(g instanceof Error?g.message:s("settings.releaseInstallFailed")),j(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:x??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:(h==null?void 0:h.version)??"-"})]})]}),o?e.jsx("p",{className:"settings-update-status","data-tone":p?"warning":"success",children:o}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:t||n,onClick:f,children:t?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!h||!p||n,onClick:m,children:n?s("common.loading"):s("settings.releaseInstallNow")})]})]})}function bn(){const t=Fe(),a=t.isDesktop,[n,r]=c.useState(!1),[o,u]=c.useState(!1),[x,v]=c.useState(!1),[h,M]=c.useState(null),[p,w]=c.useState(null),k=Os(T=>T.latestState),j=Os(T=>T.pendingRestartVersion),E=(k==null?void 0:k.currentVersion)??null,f=(k==null?void 0:k.manifest)??null,m=(k==null?void 0:k.hasUpdate)??!1,g=!!j,y=g&&p!==j;async function C(){if(!g){r(!0),M(null);try{const T=await zt({notify:"always"});M(_s(T.manifest,T.hasUpdate))}catch(T){M(T instanceof Error?T.message:s("settings.releaseCheckFailed"))}finally{r(!1)}}}async function b(){if(!(!f||!m||g)){u(!0),M(null);try{const T=await Wt();if(!T.ok){M(T.detail??s("settings.releaseInstallFailed"));return}$t(f.version),w(null),M(s("settings.releaseRestartRequired"))}catch(T){M(T instanceof Error?T.message:s("settings.releaseInstallFailed"))}finally{u(!1)}}}async function l(){if(f!=null&&f.htmlUrl){v(!0);try{const T=await t.bridge.openExternal(f.htmlUrl);T.ok||M(T.detail??s("settings.releasePageOpenFailed"))}catch(T){M(T instanceof Error?T.message:s("settings.releasePageOpenFailed"))}finally{v(!1)}}}const S=!!(a&&f&&m&&!g),A=h??(a?g?s("settings.releaseRestartRequired"):k?_s(k.manifest,k.hasUpdate):null:s("settings.clientUpdateUnsupported"));return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-update-card",children:[e.jsxs("div",{className:"settings-update-summary",children:[e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseCurrentVersion")}),e.jsx("strong",{className:"settings-update-value",children:E??s("settings.releaseUnknownVersion")})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(f==null?void 0:f.version)??j??"-"})]})]}),A?e.jsx("p",{className:"settings-update-status","data-tone":xn(f,m,A,g),children:A}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:!a||n||o||g,onClick:C,children:n?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!S||o,onClick:b,children:o?s("common.loading"):s("settings.releaseInstallNow")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:!(f!=null&&f.htmlUrl)||n||o||x,onClick:l,children:x?s("common.loading"):s("settings.releaseOpenPage")})]})]}),e.jsx(vn,{open:y,version:j,onClose:()=>w(j)})]})}function _s(t,a){return a?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate")}function xn(t,a,n,r){return n===s("settings.clientUpdateUnsupported")?"neutral":r||a?"warning":"success"}function vn({open:t,version:a,onClose:n}){const[r,o]=c.useState(!1),[u,x]=c.useState(null);async function v(){o(!0),x(null);try{await Kt()}catch(h){x(h instanceof Error?h.message:s("settings.releaseRestartFailed")),o(!1)}}return e.jsx(Se,{open:t,title:s("settings.releaseRestartDialogTitle"),description:s("settings.releaseRestartDialogDescription",{version:a??"-"}),onClose:()=>{r||n()},children:e.jsxs("div",{className:"settings-update-card",children:[u?e.jsx("p",{className:"settings-update-status","data-tone":"danger",children:u}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:r,onClick:n,children:s("settings.releaseRestartLater")}),e.jsx("button",{className:"primary-button",type:"button",disabled:r,onClick:v,children:r?s("common.loading"):s("settings.releaseRestartConfirm")})]})]})})}function vt(){const t=Fe();return t.platform==="desktop"?e.jsx(bn,{}):t.platform==="android"?e.jsx(fn,{}):e.jsx("div",{className:"settings-update-card",children:e.jsx("p",{className:"settings-update-status","data-tone":"neutral",children:s("settings.clientUpdateUnsupported")})})}const jn="https://github.com/SaladDay/cc-switch-cli",yn="当前机器未安装 cc-switch-cli。这里集成的是 CC-Switch 的衍生 CLI 版本,不是 CC-Switch UI 版本。请先安装:",Nn=/(https?:\/\/[^\s]+)/i;function jt(){const t=ss(l=>{var S;return((S=l.session)==null?void 0:S.accessToken)??null}),[a,n]=c.useState(null),[r,o]=c.useState(!0),[u,x]=c.useState(null),[v,h]=c.useState(null),[M,p]=c.useState(null),[w,k]=c.useState(!1),[j,E]=c.useState("codex");c.useEffect(()=>{let l=!0;if(!t){n(null),h(null),p(null),o(!1);return}return(async()=>{o(!0);try{const A=await Fs();if(!l)return;n(A),h(null),E(T=>Ws(A,T))}catch(A){if(!l)return;h(bs(A))}finally{l&&o(!1)}})(),()=>{l=!1}},[t]);async function f(){const l=await Fs();n(l),h(null),E(S=>Ws(l,S))}async function m(){if(t){x("refresh"),h(null),p(null);try{await f(),p(s("settings.modelManagementRefreshSuccess"))}catch(l){h(bs(l))}finally{x(null)}}}async function g(l,S){if(!t||S.isCurrent)return;const A=zs(l,S.id);x(A),h(null),p(null);try{const T=await Yt({app:l,presetId:S.id});xt(),n(V=>wn(V,T)),p(s("settings.modelManagementSwitchSuccess",{app:T.displayName,preset:T.currentPresetName??S.name}))}catch(T){h(bs(T))}finally{x(null)}}const y=(a==null?void 0:a.items)??[],C=y.find(l=>l.app===j)??y[0]??null,b=Cn(y);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-panel",children:e.jsxs("div",{className:"settings-release-card",children:[M?e.jsx("p",{className:"settings-release-status",children:M}):null,v?e.jsx("p",{className:"settings-release-status",children:v}):null,b?e.jsxs("section",{className:"settings-model-missing-state",children:[e.jsx("p",{className:"settings-model-missing-copy",children:b.message}),e.jsx("a",{className:"settings-tailscale-link settings-model-missing-link",href:b.url,rel:"noreferrer",target:"_blank",children:b.url})]}):y.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-grid",children:y.map(l=>e.jsxs("section",{className:"settings-model-card",children:[e.jsxs("div",{className:"settings-model-card-main",children:[e.jsxs("div",{className:"settings-model-card-copy",children:[e.jsx("strong",{className:"settings-model-card-title",children:l.displayName}),e.jsx("span",{className:"settings-model-card-status","data-status":l.status,children:Sn(l.status)})]}),e.jsxs("div",{className:"settings-model-value-line",children:[e.jsx("strong",{className:"settings-model-preset-value",children:l.currentPresetName??s("settings.modelManagementPresetMissing")}),e.jsx("strong",{className:"settings-model-current-value",children:l.currentModel??s("settings.modelManagementModelUnknown")})]})]}),l.statusText?e.jsx("p",{className:"settings-model-card-note",children:l.statusText}):null]},l.app))}),e.jsx("div",{className:"settings-model-panel-actions",children:e.jsx("button",{className:"secondary-button settings-model-open-action",type:"button",disabled:!t||r,onClick:()=>{k(!0)},children:s("settings.modelManagementOpenSwitcher")})})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})}),e.jsxs(Se,{open:w&&!b,title:s("settings.modelManagementModalTitle"),description:s("settings.modelManagementModalDescription"),className:"settings-model-modal",headerActions:e.jsx("button",{className:"secondary-button",type:"button",disabled:!t||r||u!==null,onClick:()=>{m()},children:u==="refresh"?s("common.loading"):s("settings.modelManagementRefresh")}),onClose:()=>k(!1),children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.modelManagementTabsLabel"),children:y.map(l=>{const S=(C==null?void 0:C.app)===l.app;return e.jsx("button",{type:"button",role:"tab",className:"settings-model-tab","aria-selected":S,"data-active":S?"true":"false",onClick:()=>E(l.app),children:l.displayName},l.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(l=>{const S=zs(C.app,l.id);return e.jsxs("div",{className:"settings-model-switcher-item","data-current":l.isCurrent?"true":"false",children:[e.jsxs("div",{className:"settings-model-switcher-item-main",children:[e.jsx("strong",{children:l.name}),e.jsx("span",{children:l.model??s("settings.modelManagementModelUnknown")})]}),e.jsx("div",{className:"settings-model-switcher-item-actions",children:l.isCurrent?e.jsx("span",{className:"settings-model-card-status","data-status":"ready",children:s("settings.modelManagementCurrentTag")}):e.jsx("button",{className:"secondary-button settings-model-option-action",type:"button",disabled:r||u!==null||C.status!=="ready",onClick:()=>{g(C.app,l)},children:u===S?s("common.loading"):s("settings.modelManagementSwitchAction")})})]},`${C.app}:${l.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 zs(t,a){return`switch:${t}:${a}`}function wn(t,a){return t&&{...t,scannedAt:new Date().toISOString(),items:t.items.map(n=>n.app===a.app?a:n)}}function Ws(t,a){var r;return t.items.some(o=>o.app===a)?a:((r=t.items[0])==null?void 0:r.app)??"codex"}function Sn(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 bs(t){return t instanceof be?t.message||s("settings.modelManagementLoadFailed"):t instanceof Error?t.message:s("settings.modelManagementLoadFailed")}function Cn(t){var r,o,u;if(t.length===0||!t.every(x=>x.status==="unavailable"&&!x.cliAvailable&&!!x.statusText))return null;const n=((u=(((o=(r=t[0])==null?void 0:r.statusText)==null?void 0:o.trim())??"").match(Nn))==null?void 0:u[1])??jn;return{message:yn,url:n}}const Tn=[{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 yt(){const t=Be(),a=ss(l=>{var S;return((S=l.session)==null?void 0:S.accessToken)??null}),[n,r]=c.useState(!1),[o,u]=c.useState(null),[x,v]=c.useState(null),[h,M]=c.useState(null),{items:p,loading:w}=Xt(n&&!!a),k=Tn.map(l=>({...l,label:s(l.labelKey)}));c.useEffect(()=>{a||(r(!1),u(null),v(null),M(null))},[a]);async function j(){if(a){M(null);try{await tn(!0)}catch(l){M(vs(l,"load"))}}}function E(){r(!0),v(null),M(null),a&&j()}async function f(l){if(!a)return;const S=!l.enabled;u(l.provider),M(null),v(null);try{await sn(l.provider,S),xt(),v(S?s("settings.providerManagementEnableSuccess",{provider:l.displayName}):s("settings.providerManagementDisableSuccess",{provider:l.displayName}))}catch(A){M(vs(A,"save"))}u(null)}async function m(){if(a){M(null),v(null);try{await en(),v(s("settings.providerManagementRefreshSuccess"))}catch(l){M(vs(l,"load"))}}}const g=p??[],y=g.filter(l=>l.enabled).length,C=g.filter(l=>!l.enabled).length,b=e.jsxs("div",{className:"settings-provider-modal-layout",children:[x?e.jsx("p",{className:"settings-provider-status",children:x}):null,h?e.jsx("p",{className:"settings-provider-error",children:h}):null,e.jsxs("div",{className:"settings-provider-summary-grid","aria-label":s("settings.providerManagementSummaryTitle"),children:[e.jsx(xs,{label:s("settings.providerManagementSummaryEnabled"),value:String(y)}),e.jsx(xs,{label:s("settings.providerManagementSummaryDisabled"),value:String(C)}),e.jsx(xs,{label:s("settings.providerManagementSummaryTotal"),value:String(g.length)})]}),e.jsxs(G,{heading:s("settings.providerManagementMatrixTitle"),description:s("settings.providerManagementMatrixDescription"),className:"settings-provider-modal-section",children:[w&&g.length===0?e.jsx(Z,{compact:!0,title:s("settings.providerManagementLoading")}):null,!w&&g.length===0?e.jsx(Z,{title:s("settings.providerManagementEmpty"),description:s("settings.providerManagementEmptyDescription"),action:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a,onClick:()=>{m()},children:s("settings.providerManagementRefresh")})}):null,g.length>0?e.jsx("div",{className:"settings-provider-matrix-shell",children:e.jsxs("table",{className:"settings-provider-matrix-table",children:[e.jsxs("colgroup",{children:[e.jsx("col",{className:"settings-provider-matrix-provider-col"}),k.map(l=>e.jsx("col",{className:"settings-provider-matrix-capability-col"},l.key)),e.jsx("col",{className:"settings-provider-matrix-status-col"}),e.jsx("col",{className:"settings-provider-matrix-toggle-col"})]}),e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:s("settings.providerManagementTableProvider")}),k.map(l=>e.jsx("th",{scope:"col",children:l.label},l.key)),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableStatus")}),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableEnabled")})]})}),e.jsx("tbody",{children:g.map(l=>e.jsxs("tr",{children:[e.jsx("th",{scope:"row",className:"settings-provider-matrix-provider-cell",children:e.jsx("div",{className:"settings-provider-matrix-provider",children:e.jsxs("div",{className:"settings-provider-matrix-provider-heading",children:[e.jsx("strong",{className:"settings-provider-matrix-provider-name",children:l.displayName}),e.jsx(ie,{tone:Pn(l.installState),children:Mn(l)})]})})}),k.map(S=>e.jsx("td",{className:"settings-provider-matrix-capability-cell",children:e.jsx(kn,{enabled:l.productCapabilities[S.key],label:S.label})},S.key)),e.jsx("td",{className:"settings-provider-matrix-status-cell",children:e.jsx(ie,{tone:l.enabled?"success":"default",children:l.enabled?s("settings.providerManagementStatusEnabled"):s("settings.providerManagementStatusDisabled")})}),e.jsx("td",{className:"settings-provider-matrix-toggle-cell",children:e.jsxs("label",{className:"settings-provider-matrix-switch",children:[e.jsx("span",{className:"settings-provider-visually-hidden",children:s("settings.providerManagementToggleLabel",{provider:l.displayName})}),e.jsx("input",{type:"checkbox",checked:l.enabled,disabled:o===l.provider,"aria-label":s("settings.providerManagementToggleLabel",{provider:l.displayName}),onChange:()=>{f(l)}}),e.jsx("span",{className:"settings-provider-matrix-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-provider-matrix-switch-thumb"})})]})})]},l.provider))})]})}):null]}),e.jsx(Q,{className:"settings-provider-modal-actions",children:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a||w||o!==null,onClick:()=>{m()},children:w?s("common.loading"):s("settings.providerManagementRefresh")})})]});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-provider-entrypoint",children:[a?null:e.jsx("p",{className:"settings-provider-entrypoint-note",children:s("settings.providerManagementLoginRequired")}),e.jsx("button",{type:"button",className:"settings-button",disabled:!a,onClick:E,children:s("settings.providerManagementManageAction")})]}),t.isMobile?e.jsx(Oe,{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:b}):e.jsx(Ye,{open:n,title:s("settings.providerManagementModalTitle"),className:"settings-provider-modal",size:"xwide",layout:"list",bodyClassName:"settings-provider-modal-body",onClose:()=>r(!1),children:b})]})}function xs({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 kn({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 Dn(t){switch(t){case"ready":return s("settings.providerManagementInstallReady");case"missing":return s("settings.providerManagementInstallMissing");default:return s("settings.providerManagementInstallUnknown")}}function Mn(t){return t.installState==="ready"&&t.version?t.version:Dn(t.installState)}function Pn(t){switch(t){case"ready":return"success";case"missing":return"warning";default:return"default"}}function vs(t,a){return t instanceof be?t.message:a==="save"?s("settings.providerManagementSaveFailed"):s("settings.providerManagementLoadFailed")}async function An(){return await I.request("/api/channels/platforms")}async function En(){return await I.request("/api/channels/accounts")}async function Ln(t){return await I.request("/api/channels/accounts",{method:"POST",body:JSON.stringify(t)})}async function Rn(t){return await I.request(`/api/channels/accounts/${t}`,{method:"DELETE"})}async function In(t){return await I.request(`/api/channels/accounts/${t}/probe`,{method:"POST"})}async function Un(t){return await I.request(`/api/channels/accounts/${t}/poll`,{method:"POST"})}async function On(t){return await I.request(`/api/channels/accounts/${t}/wechat-claw/start-login`,{method:"POST"})}async function Fn(t){return await I.request(`/api/channels/accounts/${t}/wechat-claw/refresh-login`,{method:"POST"})}async function Bn(t){return await I.request(`/api/channels/accounts/${t}/wechat-claw/logout`,{method:"POST"})}async function Vn(t,a=20){return await I.request(`/api/channels/accounts/${t}/threads?limit=${a}`)}async function Hn(t,a=20){return await I.request(`/api/channels/accounts/${t}/events?limit=${a}`)}async function qn(t,a=20){return await I.request(`/api/channels/accounts/${t}/deliveries?limit=${a}`)}function Nt({code:t,...a}){switch(t){case"wechat-claw":return e.jsx(zn,{...a});case"telegram":return e.jsx(_n,{...a});default:return e.jsx(Wn,{...a})}}function _n(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 zn(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 Wn(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 $n=["codex","claude-code"],Kn=["active","disabled","degraded"],Ie="polling",Jn=`{
|
|
2
|
+
}`,Is={"wechat-claw":[],telegram:[{key:"botToken",labelKey:"settings.channelsConfigFieldTelegramBotToken",descriptionKey:"settings.channelsConfigFieldTelegramBotTokenDescription",placeholderKey:"settings.channelsConfigFieldTelegramBotTokenPlaceholder",type:"password",required:!0}]},Qn={};function wt(){const t=Be(),a=ss(i=>{var P;return((P=i.session)==null?void 0:P.accessToken)??null}),[n,r]=c.useState(!1),[o,u]=c.useState(!1),[x,v]=c.useState([]),[h,M]=c.useState([]),[p,w]=c.useState(!1),[k,j]=c.useState(!1),[E,f]=c.useState(null),[m,g]=c.useState(null),[y,C]=c.useState(null),[b,l]=c.useState(null),[S,A]=c.useState(null),[T,V]=c.useState("platform"),[F,W]=c.useState(null),[J,O]=c.useState(null),[L,_]=c.useState(()=>Je()),[z,$]=c.useState([]),[K,N]=c.useState([]),[B,R]=c.useState([]),d=c.useMemo(()=>h.find(i=>i.id===F)??null,[h,F]),U=c.useMemo(()=>x.find(i=>i.code===L.platformCode)??null,[L.platformCode,x]),D=c.useMemo(()=>L.platformCode?Is[L.platformCode]??[]:[],[L.platformCode]),X=c.useMemo(()=>new Set(h.map(i=>i.platformCode)).size,[h]),re=c.useMemo(()=>h.filter(i=>i.status==="active").length,[h]),le=(U==null?void 0:U.code)==="wechat-claw",oe=(d==null?void 0:d.platformCode)==="wechat-claw",H=c.useMemo(()=>d?ea(d):null,[d]),Ce=(H==null?void 0:H.loginStatus)==="active";c.useEffect(()=>{a||(r(!1),u(!1),v([]),M([]),w(!1),j(!1),f(null),g(null),C(null),l(null),A(null),V("platform"),W(null),O(null),_(Je()),$([]),N([]),R([]))},[a]),c.useEffect(()=>{(!F||J!==F)&&O(null)},[F,J]),c.useEffect(()=>{!n||!a||He()},[a,n]),c.useEffect(()=>{if(!n||!a||!F){$([]),N([]),R([]);return}Te(F)},[a,F,n]);async function He(i={}){if(a){w(!0),l(null);try{const[P,q]=await Promise.all([An(),En()]);v(P),M(q),F&&!q.some(ye=>ye.id===F)&&(W(null),$([]),N([]),R([])),i.showSuccess&&C(s("settings.channelsRefreshSuccess"))}catch(P){l(he(P,"loadOverview"))}finally{w(!1)}}}async function Te(i){if(a){j(!0),l(null);try{const[P,q,ye]=await Promise.all([Vn(i),Hn(i),qn(i)]);if(F!==i)return;$(P),N(q),R(ye)}catch(P){l(he(P,"loadDetails"))}finally{j(!1)}}}function ts(){r(!0),C(null),l(null)}function xe(){r(!1),u(!1),O(null)}function ee(){g(null),A(null),V("platform"),_(Je())}function de(){ee(),u(!0)}function ue(){u(!1),ee()}function ve(i){W(i.id),O(null),C(null),l(null)}function se(i){V(i==="wechat-claw"?"binding":"config"),_(P=>Je({platformCode:i,displayName:P.platformCode===i?P.displayName:"",providerId:P.providerId,status:P.status})),A(null)}function je(i,P){_(q=>({...q,configValues:{...q.configValues,[i]:P}}))}function ns(){const i=St(L,U);if(!i.ok){A(i.errorText);return}V("binding"),A(null)}async function as(){if(!a)return;const i=ta(L,U);if(!i.ok){A(i.errorText);return}g("save"),A(null),C(null);try{const P=await Ln(i.input);M(q=>[P,...q]),W(P.id),ue(),C(s("settings.channelsCreateSuccess",{account:P.displayName}))}catch(P){A(he(P,"save"))}finally{g(null)}}async function qe(){if(!(!a||!F)){f("probe"),l(null),C(null);try{const i=await In(F);M(P=>ys(P,i.account)),C(i.detail),await Te(F)}catch(i){l(he(i,"probe"))}finally{f(null)}}}async function is(){if(!(!a||!F)){f("poll"),l(null),C(null);try{const i=await Un(F);M(P=>ys(P,i.account)),C(i.detail),await Te(F)}catch(i){l(he(i,"poll"))}finally{f(null)}}}async function ke(i){if(!a||!F||!oe)return;f(i==="start"?"wechat-start-login":i==="refresh"?"wechat-refresh-login":"wechat-logout"),l(null),C(null);try{let q;i==="start"?q=await On(F):i==="refresh"?q=await Fn(F):q=await Bn(F),rs(q.account),C(q.detail)}catch(q){l(he(q,i))}finally{f(null)}}async function ls(){if(!(!a||!d)){f("remove-account"),l(null),C(null);try{const i=await Rn(d.id);M(P=>P.filter(q=>q.id!==i.accountId)),F===i.accountId&&(W(null),$([]),N([]),R([])),O(null),C(s("settings.channelsRemoveSuccess",{account:i.displayName}))}catch(i){l(he(i,"remove"))}finally{f(null)}}}function rs(i){M(P=>ys(P,i))}async function cs(){f("refresh"),C(null),l(null);try{await He({showSuccess:!0})}finally{f(null)}}const os=e.jsxs("div",{className:"settings-channels-summary-grid","aria-label":s("settings.channelsSummaryTitle"),children:[e.jsx(js,{label:s("settings.channelsSummaryAccounts"),value:String(h.length)}),e.jsx(js,{label:s("settings.channelsSummaryActive"),value:String(re)}),e.jsx(js,{label:s("settings.channelsSummaryPlatforms"),value:String(X)})]}),_e=e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:de,children:s("settings.channelsAddAccountAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:p||E!==null,onClick:()=>{cs()},children:E==="refresh"?s("settings.channelsActionPending"):s("settings.channelsRefresh")})]}),ze=!oe||Ce,We=d!==null&&J===d.id,$e=e.jsxs("div",{className:"settings-channels-modal-layout",children:[S?e.jsx("p",{className:"settings-channels-error",children:S}):null,e.jsxs(G,{heading:s("settings.channelsWizardTitle"),description:s("settings.channelsWizardCreateDescription"),children:[e.jsx(Zn,{currentStep:T}),T==="platform"?e.jsxs(e.Fragment,{children:[p&&x.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsLoading")}):null,!p&&x.length===0?e.jsx(Z,{title:s("settings.channelsPlatformsEmpty"),description:s("settings.channelsPlatformsEmptyDescription")}):null,x.length>0?e.jsx("div",{className:"settings-channels-platform-grid",children:x.map(i=>e.jsx("button",{className:"settings-channels-platform-card",type:"button","aria-pressed":L.platformCode===i.code,"data-selected":L.platformCode===i.code?"true":void 0,onClick:()=>se(i.code),children:e.jsxs("div",{className:"settings-channels-platform-card-top",children:[e.jsxs("div",{className:"settings-channels-platform-card-brand",children:[e.jsx("div",{className:"settings-channels-platform-card-logo",children:e.jsx(Nt,{code:i.code,width:40,height:40,"aria-hidden":"true"})}),e.jsxs("div",{className:"settings-channels-platform-card-copy",children:[e.jsx("strong",{children:i.displayName}),e.jsx("span",{children:s("settings.channelsPlatformSummary",{modes:Ne(Ie),multiSession:Ue(i.multiSessionSupportLevel)})})]})]}),e.jsx(ie,{tone:i.multiSessionSupportLevel==="supported"?"success":"warning",children:Ue(i.multiSessionSupportLevel)})]})},i.code))}):null,e.jsx(Q,{children:e.jsx("button",{className:"primary-button",type:"button",disabled:!U,onClick:()=>{U&&V("config")},children:s("settings.channelsWizardNextToConfig")})})]}):null,T==="config"?e.jsxs(e.Fragment,{children:[U?e.jsx(Gn,{platformCapability:U}):e.jsx(Z,{compact:!0,title:s("settings.channelsValidationPlatform"),description:s("settings.channelsWizardSelectPlatformHint")}),U?e.jsxs(e.Fragment,{children:[e.jsx(Xn,{platformCode:U.code}),e.jsx(Yn,{platformCode:U.code}),D.length>0?e.jsx("div",{className:"settings-channels-form-grid",children:D.map(i=>e.jsx(ae,{label:s(i.labelKey),description:s(i.descriptionKey),htmlFor:`channels-create-config-${i.key}`,children:e.jsx("input",{id:`channels-create-config-${i.key}`,className:"settings-text-input",type:i.type??"text",placeholder:s(i.placeholderKey),value:L.configValues[i.key]??"",onChange:P=>je(i.key,P.target.value)})},i.key))}):null,e.jsxs("details",{className:"settings-channels-advanced-config",children:[e.jsx("summary",{children:s("settings.channelsAdvancedConfigTitle")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsAdvancedConfigDescription")}),e.jsx(ae,{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:L.advancedConfigText,onChange:i=>{_(P=>({...P,advancedConfigText:i.target.value}))}})})]})]}):null,e.jsxs(Q,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>V("platform"),children:s("settings.channelsWizardBackToPlatform")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!U,onClick:ns,children:s("settings.channelsWizardNextToBinding")})]})]}):null,T==="binding"?e.jsxs(e.Fragment,{children:[U?e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(ne,{label:s("settings.channelsDetailPlatform"),value:U.displayName}),e.jsx(ne,{label:s("settings.channelsDetailConnectionMode"),value:Ne(Ie)}),e.jsx(ne,{label:s("settings.channelsWizardBindingSummary"),value:Ue(U.multiSessionSupportLevel)})]}):null,e.jsxs("div",{className:"settings-channels-form-grid",children:[e.jsx(ae,{label:s("settings.channelsFieldDisplayName"),description:le?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:L.displayName,onChange:i=>{_(P=>({...P,displayName:i.target.value}))}})}),e.jsx(ae,{label:s("settings.channelsFieldProvider"),description:s("settings.channelsFieldProviderDescription"),htmlFor:"channels-create-provider",children:e.jsx("select",{id:"channels-create-provider",className:"settings-select",value:L.providerId,onChange:i=>{_(P=>({...P,providerId:i.target.value}))},children:$n.map(i=>e.jsx("option",{value:i,children:Qe(i)},i))})}),e.jsx(ae,{label:s("settings.channelsFieldStatus"),description:s("settings.channelsFieldStatusDescription"),htmlFor:"channels-create-status",children:e.jsx("select",{id:"channels-create-status",className:"settings-select",value:L.status,onChange:i=>{_(P=>({...P,status:i.target.value}))},children:Kn.map(i=>e.jsx("option",{value:i,children:Ns(i)},i))})}),e.jsx(ae,{label:s("settings.channelsFieldConnectionMode"),description:s("settings.channelsFieldConnectionModeDescription"),children:e.jsxs("div",{className:"settings-channels-fixed-field",children:[e.jsx("strong",{children:Ne(Ie)}),e.jsx("span",{children:s("settings.channelsConnectionModeFixedHint")})]})})]}),e.jsxs(Q,{align:"between",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>V(le?"platform":"config"),children:le?s("settings.channelsWizardBackToPlatform"):s("settings.channelsWizardBackToConfig")}),e.jsx("button",{className:"primary-button",type:"button",disabled:m==="save",onClick:()=>{as()},children:m==="save"?s("settings.channelsActionPending"):s("settings.channelsCreateAction")})]})]}):null]})]}),Ke=e.jsxs("div",{className:"settings-channels-modal-layout",children:[y?e.jsx("p",{className:"settings-channels-status",children:y}):null,b?e.jsx("p",{className:"settings-channels-error",children:b}):null,os,t.isMobile?e.jsx(Q,{className:"settings-channels-inline-actions",children:_e}):null,e.jsxs(G,{heading:s("settings.channelsAccountsTitle"),description:s("settings.channelsAccountsDescription"),children:[p&&h.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsLoading")}):null,!p&&h.length===0?e.jsx(Z,{title:s("settings.channelsAccountsEmpty"),description:s("settings.channelsAccountsEmptyDescription"),action:e.jsx("button",{className:"secondary-button",type:"button",onClick:de,children:s("settings.channelsAddAccountAction")})}):null,h.length>0?e.jsx(we,{className:"settings-channels-account-list",children:h.map(i=>e.jsx(Re,{as:"button",selected:F===i.id,className:"settings-channels-account-item",label:i.displayName,description:s("settings.channelsAccountRowDescription",{platform:i.capability.displayName,provider:Qe(i.providerId),mode:Ne(i.connectionMode)}),trailing:e.jsxs("div",{className:"settings-channels-account-tags",children:[e.jsx(ie,{tone:ia(i.status),children:Ns(i.status)}),e.jsx(ie,{children:Qe(i.providerId)})]}),onClick:()=>ve(i),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsThreadsTitle"),": ",i.threadCount]}),e.jsxs("span",{children:[s("settings.channelsEventsTitle"),": ",i.inboundEventCount]}),e.jsxs("span",{children:[s("settings.channelsDeliveriesTitle"),": ",i.deliveryCount]})]})},i.id))}):null]}),d?e.jsxs(e.Fragment,{children:[e.jsxs(G,{heading:s("settings.channelsDetailTitle"),description:s("settings.channelsDetailDescription"),actions:e.jsxs(Q,{className:"settings-channels-inline-actions",children:[ze?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{qe()},children:E==="probe"?s("settings.channelsActionPending"):s("settings.channelsProbeAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{is()},children:E==="poll"?s("settings.channelsActionPending"):s("settings.channelsPollAction")})]}):null,We?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{O(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:E!==null,onClick:()=>{ls()},children:E==="remove-account"?s("settings.channelsActionPending"):s("settings.channelsRemoveConfirmAction")})]}):e.jsx("button",{className:"settings-button settings-button-danger",type:"button",disabled:E!==null,onClick:()=>{d&&O(d.id)},children:s("settings.channelsRemoveAction")})]}),children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(ne,{label:s("settings.channelsDetailPlatform"),value:d.capability.displayName}),e.jsx(ne,{label:s("settings.channelsDetailProvider"),value:Qe(d.providerId)}),e.jsx(ne,{label:s("settings.channelsDetailConnectionMode"),value:Ne(d.connectionMode)}),e.jsx(ne,{label:s("settings.channelsDetailStatus"),value:Ns(d.status)}),e.jsx(ne,{label:s("settings.channelsDetailLastInbound"),value:pe(d.lastInboundAt)}),e.jsx(ne,{label:s("settings.channelsDetailLastOutbound"),value:pe(d.lastOutboundAt)})]}),d.lastError?e.jsxs("p",{className:"settings-channels-inline-note",children:[s("settings.channelsDetailLastError"),": ",d.lastError]}):null,We?e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsRemoveConfirmDescription")}):null]}),d.platformCode==="wechat-claw"?e.jsxs(G,{heading:s("settings.channelsWechatBindingTitle"),description:s("settings.channelsWechatBindingDescription"),actions:e.jsxs(Q,{className:"settings-channels-inline-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{ke("start")},children:E==="wechat-start-login"?s("settings.channelsActionPending"):H!=null&&H.qrcodeUrl?s("settings.channelsWechatRestartBindingAction"):s("settings.channelsWechatStartLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{ke("refresh")},children:E==="wechat-refresh-login"?s("settings.channelsActionPending"):s("settings.channelsWechatRefreshLoginAction")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:E!==null,onClick:()=>{ke("logout")},children:E==="wechat-logout"?s("settings.channelsActionPending"):s("settings.channelsWechatLogoutAction")})]}),children:[e.jsxs("div",{className:"settings-channels-wechat-binding-entry",children:[e.jsxs("div",{className:"settings-channels-detail-grid",children:[e.jsx(ne,{label:s("settings.channelsWechatLoginStatus"),value:oa((H==null?void 0:H.loginStatus)??"not_logged_in")}),e.jsx(ne,{label:s("settings.channelsDetailConnectionMode"),value:s("settings.channelsWechatBindingModeValue")}),e.jsx(ne,{label:s("settings.channelsMetaUpdatedAt"),value:pe((H==null?void 0:H.updatedAt)??null)})]}),e.jsx("p",{className:"settings-channels-inline-note",children:Ce?s("settings.channelsWechatBoundDescription"):s("settings.channelsWechatPendingDescription")}),H!=null&&H.lastDetail?e.jsx("p",{className:"settings-channels-inline-note",children:H.lastDetail}):null,Ce?null:e.jsxs("div",{className:"settings-channels-wechat-qr-panel",children:[H!=null&&H.qrcodeUrl?e.jsxs(e.Fragment,{children:[e.jsx("img",{className:"settings-channels-wechat-qr-image",src:H.qrcodeUrl,alt:s("settings.channelsWechatQrAlt")}),e.jsx("p",{className:"settings-channels-inline-note",children:s("settings.channelsWechatQrHint")}),e.jsx(Q,{className:"settings-channels-inline-actions",children:e.jsx("a",{className:"secondary-button",href:H.qrcodeSourceUrl??H.qrcodeUrl,target:"_blank",rel:"noreferrer",children:s("settings.channelsWechatOpenQrLinkAction")})})]}):e.jsx(Z,{compact:!0,title:s("settings.channelsWechatQrEmpty"),description:s("settings.channelsWechatQrEmptyDescription")}),H!=null&&H.qrcodeText?e.jsx(ae,{label:s("settings.channelsWechatQrRawTitle"),description:s("settings.channelsWechatQrRawDescription"),children:e.jsx("textarea",{className:"settings-textarea settings-channels-textarea",value:H.qrcodeText,readOnly:!0})}):null]})]}),e.jsx("div",{className:"settings-channels-platform-selected-notes",children:d.capability.stageOneLimitations.map(i=>e.jsx("p",{className:"settings-channels-platform-limitations",children:i},i))})]}):null,e.jsxs(G,{heading:s("settings.channelsThreadsTitle"),description:s("settings.channelsThreadsDescription",{count:d.threadCount}),children:[k?e.jsx(Z,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&z.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsThreadsEmpty"),description:s("settings.channelsThreadsEmptyDescription")}):null,!k&&z.length>0?e.jsx(we,{compact:!0,children:z.map(i=>e.jsx(Re,{label:i.title||i.externalConversationKey,description:s("settings.channelsThreadSummary",{status:Ks(i.status),conversationKey:i.externalConversationKey}),trailing:e.jsx(ie,{tone:la(i.status),children:Ks(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",pe(i.createdAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaUpdatedAt"),": ",pe(i.updatedAt)]}),i.externalUserId?e.jsxs("span",{children:[s("settings.channelsMetaExternalUser"),": ",i.externalUserId]}):null]})},i.id))}):null]}),e.jsxs(G,{heading:s("settings.channelsEventsTitle"),description:s("settings.channelsEventsDescription",{count:d.inboundEventCount}),children:[k?e.jsx(Z,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&K.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsEventsEmpty"),description:s("settings.channelsEventsEmptyDescription")}):null,!k&&K.length>0?e.jsx(we,{compact:!0,children:K.map(i=>e.jsx(Re,{label:$s(i.textContent),description:s("settings.channelsEventSummary",{status:Js(i.status),conversationKey:i.externalConversationKey}),trailing:e.jsx(ie,{tone:ra(i.status),children:Js(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaReceivedAt"),": ",pe(i.receivedAt)]}),e.jsxs("span",{children:[s("settings.channelsMetaEventId"),": ",i.externalEventId]}),i.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",i.errorMessage]}):null]})},i.id))}):null]}),e.jsxs(G,{heading:s("settings.channelsDeliveriesTitle"),description:s("settings.channelsDeliveriesDescription",{count:d.deliveryCount}),children:[k?e.jsx(Z,{compact:!0,title:s("settings.channelsLoadingDetails")}):null,!k&&B.length===0?e.jsx(Z,{compact:!0,title:s("settings.channelsDeliveriesEmpty"),description:s("settings.channelsDeliveriesEmptyDescription")}):null,!k&&B.length>0?e.jsx(we,{compact:!0,children:B.map(i=>e.jsx(Re,{label:$s(i.textContent),description:s("settings.channelsDeliverySummary",{status:Qs(i.status)}),trailing:e.jsx(ie,{tone:ca(i.status),children:Qs(i.status)}),children:e.jsxs("div",{className:"settings-channels-record-meta",children:[e.jsxs("span",{children:[s("settings.channelsMetaCreatedAt"),": ",pe(i.createdAt)]}),i.providerMessageRef?e.jsxs("span",{children:[s("settings.channelsMetaProviderRef"),": ",i.providerMessageRef]}):null,i.errorMessage?e.jsxs("span",{children:[s("settings.channelsMetaError"),": ",i.errorMessage]}):null]})},i.id))}):null]})]}):null]});return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-channels-entrypoint",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:!a,onClick:ts,children:s("settings.channelsManageAction")})}),t.isMobile?e.jsx(Oe,{open:n,title:s("settings.channelsModalTitle"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:xe,children:e.jsx("div",{className:"settings-channels-modal-body",children:Ke})}):e.jsx(Ye,{open:n,title:s("settings.channelsModalTitle"),size:"xwide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",headerActions:_e,onClose:xe,children:Ke}),t.isMobile?e.jsx(Oe,{open:o,title:s("settings.channelsAddAccountAction"),height:"full",kind:"form",bodyClassName:"settings-channels-sheet-body",footer:void 0,onClose:ue,children:e.jsx("div",{className:"settings-channels-modal-body",children:$e})}):e.jsx(Ye,{open:o,title:s("settings.channelsAddAccountAction"),size:"wide",layout:"form",className:"settings-channels-modal",bodyClassName:"settings-channels-modal-body",onClose:ue,children:$e})]})}function js({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 ne({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 Zn({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 Gn({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(Nt,{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:Ne(Ie),multiSession:Ue(t.multiSessionSupportLevel)})})]})]}),e.jsx(ie,{tone:t.multiSessionSupportLevel==="supported"?"success":"warning",children:Ue(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 Yn({platformCode:t}){const a=Qn[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 Xn({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 ea(t){return{loginStatus:sa(t.runtimeState.wechatClawLoginStatus),qrcodeUrl:Pe(t.runtimeState.wechatClawQrCodeUrl),qrcodeSourceUrl:Pe(t.runtimeState.wechatClawQrCodeSourceUrl),qrcodeText:Pe(t.runtimeState.wechatClawQrCodeText),lastDetail:Pe(t.runtimeState.wechatClawLastDetail),updatedAt:Pe(t.runtimeState.wechatClawUpdatedAt)}}function sa(t){return t==="waiting_scan"||t==="scan_confirmed"||t==="active"||t==="expired"?t:"not_logged_in"}function Pe(t){if(typeof t!="string")return null;const a=t.trim();return a.length>0?a:null}function Je(t={}){return{platformCode:"",displayName:"",providerId:"codex",status:"active",configValues:{},advancedConfigText:Jn,...t}}function ys(t,a){return t.findIndex(r=>r.id===a.id)===-1?[a,...t]:t.map(r=>r.id===a.id?a:r)}function St(t,a){if(!t.platformCode||!a)return{ok:!1,errorText:s("settings.channelsValidationPlatform")};const n=na(t.platformCode,t.configValues);if(n)return{ok:!1,errorText:n};try{Ct(t.advancedConfigText)}catch{return{ok:!1,errorText:s("settings.channelsValidationConfigJson")}}return{ok:!0}}function ta(t,a){const n=St(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,u=Ct(t.advancedConfigText),x=aa(o,t.configValues,u);return{ok:!0,input:{displayName:r,platformCode:o,providerId:t.providerId,connectionMode:Ie,status:t.status,config:x}}}function na(t,a){const r=(Is[t]??[]).find(o=>o.required&&!(a[o.key]??"").trim());return r?s("settings.channelsValidationRequiredField",{field:s(r.labelKey)}):null}function Ct(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 aa(t,a,n){const r={...n};for(const o of Is[t]??[]){const u=(a[o.key]??"").trim();u?r[o.key]=u:delete r[o.key]}return r}function he(t,a){if(t instanceof be)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 $s(t){const a=t.trim();return a.length<=72?a||s("settings.channelsTextFallback"):`${a.slice(0,72)}...`}function pe(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 Qe(t){return t==="claude-code"?"Claude Code":"Codex"}function Ne(t){return t==="polling"?s("settings.channelsConnectionModePolling"):t==="bridge"?s("settings.channelsConnectionModeBridge"):s("settings.channelsConnectionModeWebhook")}function Ue(t){return t==="supported"?s("settings.channelsMultiSessionSupported"):s("settings.channelsMultiSessionLimited")}function Ns(t){switch(t){case"disabled":return s("settings.channelsStatusDisabled");case"degraded":return s("settings.channelsStatusDegraded");default:return s("settings.channelsStatusActive")}}function ia(t){switch(t){case"disabled":return"default";case"degraded":return"warning";default:return"success"}}function Ks(t){switch(t){case"closed":return s("settings.channelsThreadStatusClosed");case"failed":return s("settings.channelsThreadStatusFailed");default:return s("settings.channelsThreadStatusActive")}}function la(t){switch(t){case"failed":return"danger";case"closed":return"default";default:return"success"}}function Js(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 ra(t){switch(t){case"replied":return"success";case"failed":return"danger";case"ignored":return"warning";case"dispatched":return"accent";default:return"default"}}function Qs(t){switch(t){case"failed":return s("settings.channelsDeliveryStatusFailed");case"skipped":return s("settings.channelsDeliveryStatusSkipped");default:return s("settings.channelsDeliveryStatusSent")}}function ca(t){switch(t){case"failed":return"danger";case"skipped":return"default";default:return"success"}}function oa(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 Tt={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Zs=fe.createContext&&fe.createContext(Tt),da=["attr","size","title"];function ua(t,a){if(t==null)return{};var n,r,o=ga(t,a);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(t);for(r=0;r<u.length;r++)n=u[r],a.indexOf(n)===-1&&{}.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function ga(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 Xe(){return Xe=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},Xe.apply(null,arguments)}function Gs(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 es(t){for(var a=1;a<arguments.length;a++){var n=arguments[a]!=null?arguments[a]:{};a%2?Gs(Object(n),!0).forEach(function(r){ma(t,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Gs(Object(n)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))})}return t}function ma(t,a,n){return(a=ha(a))in t?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,t}function ha(t){var a=pa(t,"string");return typeof a=="symbol"?a:a+""}function pa(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 kt(t){return t&&t.map((a,n)=>fe.createElement(a.tag,es({key:n},a.attr),kt(a.child)))}function Ve(t){return a=>fe.createElement(fa,Xe({attr:es({},t.attr)},a),kt(t.child))}function fa(t){var a=n=>{var{attr:r,size:o,title:u}=t,x=ua(t,da),v=o||n.size||"1em",h;return n.className&&(h=n.className),t.className&&(h=(h?h+" ":"")+t.className),fe.createElement("svg",Xe({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,r,x,{className:h,style:es(es({color:t.color||n.color},n.style),t.style),height:v,width:v,xmlns:"http://www.w3.org/2000/svg"}),u&&fe.createElement("title",null,u),t.children)};return Zs!==void 0?fe.createElement(Zs.Consumer,null,n=>a(n)):a(Tt)}function ba(t){return Ve({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 xa(t){return Ve({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 Ys(t){return Ve({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 va(t){return Ve({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 ja(t){return Ve({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 Xs(){return I.request("/api/auth/devices")}function ya(t){return I.request("/api/auth/devices/current/primary",{method:"POST",body:JSON.stringify(t)})}function Na(t){return I.request(`/api/auth/devices/${t}/logout`,{method:"POST"})}function Dt({compact:t=!1}){const a=ss(d=>{var U;return((U=d.session)==null?void 0:U.accessToken)??null}),[n,r]=c.useState(null),[o,u]=c.useState(!1),[x,v]=c.useState(!1),[h,M]=c.useState(!1),[p,w]=c.useState(null),[k,j]=c.useState(null),[E,f]=c.useState(null),[m,g]=c.useState(null),[y,C]=c.useState(null),[b,l]=c.useState(""),[S,A]=c.useState(null);c.useEffect(()=>{let d=!0;if(!x){u(!1);return}if(!a){r(null),u(!1),f(null),g(null);return}return(async()=>{u(!0);try{const D=await Xs();if(!d)return;r(D),g(null)}catch(D){if(!d)return;g(ws(D))}finally{d&&u(!1)}})(),()=>{d=!1}},[a,x]);async function T(){const d=await Xs();r(d),g(null)}function V(){v(!0),M(!1),f(null),g(null)}function F(){p!=="primary"&&(v(!1),M(!1),C(null),l(""),A(null))}function W(d){C(d),l(""),A(null)}async function J(){if(y){w("primary"),A(null),g(null),f(null);try{await ya({password:b,primary:y==="enable"}),await T(),f(y==="enable"?s("settings.authDevicePrimaryEnabled"):s("settings.authDevicePrimaryDisabled")),C(null),l("")}catch(d){const U=ws(d);A(U),g(U)}finally{w(null)}}}async function O(d){if(d.deviceId){j(d.deviceId),g(null),f(null);try{const U=await Na(d.deviceId);await T(),f(s("settings.authDeviceLogoutDeviceSuccess",{device:Ze(d),count:String(U.revokedSessionCount)}))}catch(U){g(ws(U))}finally{j(null)}}}const L=(n==null?void 0:n.currentDevice)??null,_=(n==null?void 0:n.otherActiveDevices.filter(d=>!d.isLegacy))??[],z=(n==null?void 0:n.otherActiveDevices.filter(d=>d.isLegacy))??[],$=(n==null?void 0:n.recentLoginRecords.filter(d=>!d.isLegacy))??[],K=(n==null?void 0:n.recentLoginRecords.filter(d=>d.isLegacy))??[],N=z.length+K.length,B=L!==null&&!L.isLegacy,R=(L==null?void 0:L.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:V,children:s("settings.authDeviceOpenManager")})})}),e.jsx(Se,{open:x,title:s("settings.authDeviceManagement"),description:s("settings.authDeviceManagementDescription"),className:"settings-device-browser-modal",onClose:F,children:e.jsxs(e.Fragment,{children:[E?e.jsx("p",{className:"settings-release-status",children:E}):null,m?e.jsx("p",{className:"settings-release-status",children:m}):null,o?e.jsx("div",{className:"settings-device-empty",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[N>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(N)})}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>M(d=>!d),children:h?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")})}),L?e.jsx(Ae,{current:!0,title:Ze(L),clientType:L.clientType,browserName:L.browserName,browserVersion:L.browserVersion,osName:L.osName,osVersion:L.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:L.lastSeenAt,sourceAddress:L.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}),L.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:!B||p!==null,onClick:()=>W(L.isPrimary?"disable":"enable"),children:L.isPrimary?s("settings.authDeviceDisablePrimary"):s("settings.authDeviceEnablePrimary")})}),note:B?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")})}),_.length>0?e.jsx("div",{className:"settings-device-list",children:_.map((d,U)=>e.jsx(Ae,{title:Ze(d),clientType:d.clientType,browserName:d.browserName,browserVersion:d.browserVersion,osName:d.osName,osVersion:d.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:d.lastSeenAt,sourceAddress:d.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[d.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null,d.isLegacy?e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")}):null]}),actions:d.deviceId?e.jsx("button",{className:"settings-button settings-button-danger","data-variant":"device-danger",type:"button",disabled:!R||p!==null||k!==null,onClick:()=>{O(d)},children:k===d.deviceId?s("common.loading"):s("settings.authDeviceLogoutDevice")}):null},`${d.deviceId??"legacy"}-${d.lastSeenAt}-${U}`))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceOthersEmpty")})]}),e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceRecentTitle")})}),$.length>0?e.jsx("div",{className:"settings-device-list",children:$.map(d=>e.jsx(Ae,{title:et(d),clientType:d.clientType,browserName:d.browserName,browserVersion:d.browserVersion,osName:d.osName,osVersion:d.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:d.occurredAt,sourceAddress:d.sourceAddress,badges:d.isCurrentDevice?e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}):null},d.id))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceRecentEmpty")})]}),h&&z.length>0?e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceLegacyDevicesTitle")})}),e.jsx("div",{className:"settings-device-list",children:z.map((d,U)=>e.jsx(Ae,{title:Ze(d),clientType:d.clientType,browserName:d.browserName,browserVersion:d.browserVersion,osName:d.osName,osVersion:d.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:d.lastSeenAt,sourceAddress:d.lastSourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},`legacy-device-${d.lastSeenAt}-${U}`))})]}):null,h&&K.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:K.map(d=>e.jsx(Ae,{title:et(d),clientType:d.clientType,browserName:d.browserName,browserVersion:d.browserVersion,osName:d.osName,osVersion:d.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:d.occurredAt,sourceAddress:d.sourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},d.id))})]}):null]})]})}),e.jsx(Se,{open:y!==null,title:y==="enable"?s("settings.authDeviceEnablePrimaryModalTitle"):s("settings.authDeviceDisablePrimaryModalTitle"),description:y==="enable"?s("settings.authDeviceEnablePrimaryModalDescription"):s("settings.authDeviceDisablePrimaryModalDescription"),className:"settings-device-modal",onClose:()=>{p!=="primary"&&(C(null),l(""),A(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:b,onChange:d=>l(d.target.value)})]}),S?e.jsx("p",{className:"settings-release-status",children:S}):null,e.jsxs("div",{className:"settings-device-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:p==="primary",onClick:()=>{C(null),l(""),A(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",disabled:b.trim().length===0||p==="primary",onClick:()=>{J()},children:p==="primary"?s("common.loading"):y==="enable"?s("settings.authDeviceEnablePrimary"):s("settings.authDeviceDisablePrimary")})]})]})})]})}function Ze(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||Mt(t.clientType)}function et(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||Mt(t.clientType)}function wa(t){return e.jsxs("div",{className:"settings-device-identity",children:[e.jsx("span",{className:"settings-device-identity-icon","aria-hidden":"true",children:e.jsx(Pa,{kind:Ma(t.clientType)})}),e.jsx("div",{className:"settings-device-identity-body",children:e.jsx("strong",{children:t.title})})]})}function Ae(t){const a=Da(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(wa,{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 Mt(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 Sa(t,a){return s(t,{value:new Date(a).toLocaleString()})}function Ca(t){return t?s("settings.authDeviceSourceAddressValue",{value:t}):s("settings.authDeviceSourceAddressUnknown")}function Ta(t,a){return t?s("settings.authDeviceBrowserValue",{value:Pt(t,a)}):null}function ka(t,a){return t?s("settings.authDeviceOsValue",{value:Pt(t,a)}):null}function Da(t,a,n,r,o,u,x){return[Ta(t,a),ka(n,r),Sa(o,u),Ca(x)].filter(v=>!!v)}function Ma(t){switch(t){case"desktop":return"desktop";case"web":return"web";case"ios":return"ios";case"android":return"android";default:return"unknown"}}function Pt(t,a){return a!=null&&a.trim()?`${t} ${a}`:t}function Pa({kind:t}){const a=Aa(t),n=a.icon;return e.jsx(n,{color:a.color})}function Aa(t){switch(t){case"desktop":return{icon:ba,color:"#2563eb"};case"web":return{icon:xa,color:"#0f766e"};case"ios":return{icon:va,color:"#111827"};case"android":return{icon:ja,color:"#3ddc84"};case"unknown":return{icon:Ys,color:"#64748b"};default:return{icon:Ys,color:"#64748b"}}}function ws(t){return t instanceof be||t instanceof Error?t.message:s("settings.authDeviceLoadFailed")}async function Ss(){const t=ce.getState();return I.request(`/api/client/service-update?channel=${encodeURIComponent(t.releaseChannel)}`)}async function Ea(t){const a=ce.getState();return I.request("/api/client/service-update/install",{method:"POST",body:JSON.stringify({packageName:t,channel:a.releaseChannel})})}async function La(t){return I.request(`/api/client/service-update/tasks/${encodeURIComponent(t)}`)}const Ra=1500,st=2e3,Ia=2500;function At(){const t=Fe(),[a,n]=c.useState(!1),[r,o]=c.useState(!1),[u,x]=c.useState(!1),[v,h]=c.useState(!1),[M,p]=c.useState(null),[w,k]=c.useState(null),[j,E]=c.useState(null),f=(w==null?void 0:w.packages[0])??null,m=u||!!((j==null?void 0:j.status)==="succeeded"&&j.restartScheduled);c.useEffect(()=>{if(!j||!Ts(j.status))return;let b=!1;const l=window.setTimeout(async()=>{var S;try{const A=await La(j.taskId);if(b)return;if(E(A),p(Ls(A)),!Ts(A.status)){if(o(!1),A.status==="succeeded"&&A.restartScheduled){x(!0),t.bridge.showNotification(s("settings.serverRestarting"),s("settings.serverInstallWarning"));return}const T=await Ss();if(b)return;k(T),E(((S=T.packages[0])==null?void 0:S.installTask)??A),p(Cs(T.packages[0]??null,A)),A.restartRequired&&await t.bridge.showNotification(s("settings.serverRestartRequired"),A.targetVersion??"-")}}catch(A){if(b)return;o(!1),p(A instanceof Error?A.message:s("settings.serverInstallFailed"))}},Ra);return()=>{b=!0,window.clearTimeout(l)}},[t.bridge,j]),c.useEffect(()=>{if(!u||!j||j.status!=="succeeded"||!j.restartScheduled)return;let b=!1,l=0;const S=async()=>{try{const A=await Ss();if(b)return;const T=A.packages[0]??null;if(!Oa(j,T)){l=window.setTimeout(S,st);return}x(!1),k(A),E((T==null?void 0:T.installTask)??null),p(Cs(T,(T==null?void 0:T.installTask)??null))}catch{if(b)return;p(s("settings.serverRestarting")),l=window.setTimeout(S,st)}};return p(s("settings.serverRestarting")),l=window.setTimeout(S,Math.max(j.restartDelayMs??0,Ia)),()=>{b=!0,window.clearTimeout(l)}},[u,j]);async function g(){n(!0),p(null);try{const b=await Ss(),l=b.packages[0]??null;k(b),E((l==null?void 0:l.installTask)??null),p(Cs(l,(l==null?void 0:l.installTask)??null)),l!=null&&l.hasUpdate&&await t.bridge.showNotification(s("settings.serverUpdateReady"),`${s("settings.serverTargetVersion")}: ${l.latestVersion??"-"}`)}catch(b){p(b instanceof Error?b.message:s("settings.serverCheckFailed"))}finally{n(!1)}}async function y(){if(f!=null&&f.packageName){h(!1),x(!1),o(!0),p(null);try{const b=await Ea(f.packageName);E(b),p(Ls(b))}catch(b){o(!1),p(b instanceof Error?b.message:s("settings.serverInstallFailed"))}}}const C=!!(f&&f.checkStatus!=="check_failed"&&f.hasUpdate&&!f.restartRequired&&!Ts(j==null?void 0:j.status)&&!m);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:(f==null?void 0:f.currentVersion)??"-"})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.serverTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(f==null?void 0:f.latestVersion)??"-"})]})]}),f!=null&&f.hasUpdate&&!m?e.jsx("p",{className:"settings-update-note","data-tone":"warning",children:s("settings.serverInstallWarning")}):null,M?e.jsx("p",{className:"settings-update-status","data-tone":Ua(f,j,m),children:M}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:a||r||m,onClick:g,children:a?s("common.loading"):s("settings.serverCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!C||a||r||m,onClick:()=>h(!0),children:r?s("common.loading"):s("settings.serverInstallNow")})]})]}),e.jsx(Fa,{open:v,busy:r,mobile:t.isMobile,targetVersion:(f==null?void 0:f.latestVersion)??null,onClose:()=>h(!1),onConfirm:()=>{y()}})]})}function Cs(t,a){return a?Ls(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 Ls(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 Ua(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 Ts(t){return t==="queued"||t==="running"}function Oa(t,a){return a?t.targetVersion?tt(a.currentVersion)===tt(t.targetVersion):!a.hasUpdate:!1}function tt(t){return(t??"").trim().replace(/^v/i,"")}function Fa({open:t,busy:a,mobile:n,targetVersion:r,onClose:o,onConfirm:u}){const x=e.jsxs(Q,{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:u,children:a?s("common.loading"):s("settings.serverInstallConfirmAction")})]}),v=e.jsxs(G,{className:"settings-update-confirm-section",children:[e.jsx("p",{className:"settings-update-confirm-warning",children:s("settings.serverInstallWarning")}),e.jsxs("div",{className:"settings-update-confirm-meta",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.serverTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:r??"-"})]})]});return n?e.jsx(Oe,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),height:"auto",kind:"form",dismissible:!a,footer:x,onClose:o,children:v}):e.jsx(Ye,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),size:"compact",layout:"confirm",bodyClassName:"settings-update-confirm-body",dismissible:!a,footer:x,onClose:o,children:v})}async function Ba(){return await I.request("/api/system/relay-tunnel/status")}async function ks(t){return await I.request("/api/system/relay-tunnel/config",{method:"PUT",body:JSON.stringify(t)})}async function Va(t){return await I.request("/api/system/relay-tunnel/control/login",{method:"POST",body:JSON.stringify(t)})}async function Ha(){return await I.request("/api/system/relay-tunnel/control/logout",{method:"POST"})}async function qa(t){const a=t.hostLabel.trim(),n=`/api/system/relay-tunnel/control/host-label-availability?hostLabel=${encodeURIComponent(a)}`;return await I.request(n)}async function _a(t){return await I.request("/api/system/relay-tunnel/control/bind",{method:"POST",body:JSON.stringify(t)})}async function za(){return await I.request("/api/system/relay-tunnel/control/wallet")}async function nt(){return await I.request("/api/system/relay-tunnel/enable",{method:"POST"})}async function Wa(){return await I.request("/api/system/relay-tunnel/disable",{method:"POST"})}async function $a(){return await I.request("/api/system/relay-tunnel/unbind",{method:"POST"})}function Ka(){const t=Be(),{showToast:a}=Jt(),[n,r]=c.useState(null),[o,u]=c.useState(""),[x,v]=c.useState(()=>Us()),[h,M]=c.useState(()=>Ut()),[p,w]=c.useState(""),[k,j]=c.useState(""),[E,f]=c.useState(null),[m,g]=c.useState({status:"idle"}),[y,C]=c.useState(!0),[b,l]=c.useState(null),[S,A]=c.useState(null),[T,V]=c.useState(null),[F,W]=c.useState(null),[J,O]=c.useState(null),L=c.useRef(!0),_=us(n==null?void 0:n.controlBaseUrl),z=Ot(x),$=z??_,K=us(z??(n==null?void 0:n.controlBaseUrl)),N=o.trim(),B=z!==null&&z!==_,R=(n==null?void 0:n.activated)??!1,d=p.trim().length>0&&k.trim().length>0,U=!!(n!=null&&n.controlAccountEmail),D=n!=null&&n.bindingId?!0:m.status==="available"&&m.hostLabel===N,X=!!(n!=null&&n.bindingId)||U&&N.length>0&&D,re=at({controlBaseUrl:K,tunnelDomain:n==null?void 0:n.tunnelDomain,hostLabel:o}),le=!!(n!=null&&n.controlAccountEmail||n!=null&&n.bindingId),oe=!!(n!=null&&n.bindingId||D),H=!!(n!=null&&n.enabled&&(n!=null&&n.bindingId)),Ce=!!(n!=null&&n.bindingId)||X,He=E?Ee(E.grantedBytes):s("settings.tailscaleUnavailable"),Te=Ee(E?E.usedBytes:n==null?void 0:n.trafficUsedBytes),ts=Ee(E?E.remainingBytes:n==null?void 0:n.trafficRemainingBytes),xe=Rs(ce.getState()),ee=nn(),de=ee?s(an(ee.kind)):null,ue=ee?Qa(ee):null;c.useEffect(()=>(L.current=!0,ve(!1),()=>{L.current=!1}),[]),c.useEffect(()=>{if(!R)return;const i=window.setInterval(()=>{ve(!0)},5e3);return()=>{window.clearInterval(i)}},[R]),c.useEffect(()=>{!R||!U||je()},[R,U]),c.useEffect(()=>{n!=null&&n.bindingId||m.status!=="idle"&&m.hostLabel!==N&&g({status:"idle"})},[m,N,n==null?void 0:n.bindingId]),c.useEffect(()=>{v(_)},[_]);async function ve(i,P){i||C(!0);try{const q=await Ba();if(!L.current)return;se(q,P),A(null)}catch(q){L.current&&A(As(q,"status",xe))}finally{L.current&&!i&&C(!1)}}function se(i,P){r(i),O(null),i.controlAccountEmail||f(null),i.tunnelDomain&&o.trim().length===0&&u(Et(i.tunnelDomain)),((P==null?void 0:P.syncProfile)??!0)&&$e(i)}async function je(){try{const i=await za();if(!L.current)return;f(i.wallet)}catch(i){L.current&&O(ge(i))}}async function ns(){if(d){l("login-control"),O(null);try{const i=await Va({email:p.trim(),password:k});W(null),se(i),await je()}catch(i){W(As(i,"login",xe))}finally{l(null)}}}async function as(){l("logout-control"),O(null);try{const i=await Ha();se(i),f(null),g({status:"idle"})}catch(i){O(ge(i))}finally{l(null)}}async function qe(){if(!N)throw new Error(s("settings.relayTunnelHostLabelRequired"));if(m.status==="available"&&m.hostLabel===N)return{hostLabel:m.hostLabel,tunnelDomain:m.tunnelDomain,available:!0,reason:"available"};g({status:"checking",hostLabel:N});const i=await qa({hostLabel:N});if(!i.available||!i.tunnelDomain){const P=Za(i);throw g({status:"error",hostLabel:N,message:P}),new Error(P)}return g({status:"available",hostLabel:N,tunnelDomain:i.tunnelDomain}),i}async function is(){if(!(!le||n!=null&&n.bindingId)){l("check-host-label"),O(null);try{await qe()}catch{}finally{l(null)}}}async function ke(){l("learn-service"),O(null);try{await Es(t.bridge.openExternal,K)}catch(i){O(ge(i))}finally{l(null)}}async function ls(){l("manage-account"),O(null);try{await Es(t.bridge.openExternal,K)}catch(i){O(ge(i))}finally{l(null)}}async function rs(){if(re)try{await Ya(re,t),a({title:s("settings.relayTunnelAccessUrlCopied"),tone:"success"})}catch(i){a({title:i instanceof Error?i.message:s("settings.relayTunnelCopyAccessUrlFailed"),tone:"error"})}}async function cs(){if(re)try{await Es(t.bridge.openExternal,re)}catch(i){a({title:i instanceof Error?i.message:s("settings.relayTunnelOpenAccessUrlFailed"),tone:"error"})}}async function os(){if(X){l("enable"),O(null);try{let i=n;if(i!=null&&i.activated||(i=await ks({activated:!0,controlBaseUrl:$}),se(i)),i!=null&&i.bindingId||(await qe(),i=await _a({hostLabel:N}),se(i),await je()),!(i!=null&&i.enabled)){const P=await nt();se(P)}}catch(i){O(ge(i))}finally{l(null)}}}async function _e(){if(n!=null&&n.bindingId){l("reconnect"),O(null);try{n!=null&&n.enabled&&await Wa();const i=await nt();se(i),i.controlAccountEmail&&await je()}catch(i){const P=ge(i);await ve(!0,{syncProfile:!1}),O(P)}finally{l(null)}}}async function ze(){l("disconnect-device"),O(null);try{if(n!=null&&n.bindingId||n!=null&&n.accountId){const i=await $a();se(i)}if(n!=null&&n.activated){const i=await ks({activated:!1});se(i)}f(null),w(""),u(""),j(""),g({status:"idle"})}catch(i){O(ge(i))}finally{l(null)}}async function We(){if(!z){V(s("settings.serverInvalid"));return}l("save-config"),V(null);try{const i=await ks({controlBaseUrl:z});V(null),se(i)}catch(i){V(As(i,"config",xe))}finally{l(null)}}return e.jsxs("div",{className:"settings-relay-tunnel-panel",children:[y&&!n?e.jsx(G,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),children:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")})}):null,!y&&!H?e.jsxs(G,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),actions:e.jsx("button",{className:"secondary-button",disabled:b!==null,type:"button",onClick:()=>void ke(),children:s("settings.relayTunnelLearnService")}),children:[S?e.jsx(Ds,{title:s("settings.relayTunnelStatusErrorTitle"),message:S,action:e.jsx("button",{className:"secondary-button",disabled:y||b!==null,type:"button",onClick:()=>void ve(!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":Ms(le,!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(ie,{className:"settings-relay-tunnel-step-tag",children:s(Ps(le,!0))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:le?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(Q,{align:"start",children:e.jsx("button",{className:"secondary-button",disabled:b!==null,type:"button",onClick:()=>{if(n!=null&&n.bindingId){ze();return}as()},children:s("common.logout")})})]}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"settings-relay-tunnel-form",children:[e.jsx(ae,{label:s("settings.relayTunnelAccountEmail"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountEmail"),className:"settings-text-input",type:"email",value:p,onChange:i=>{w(i.target.value),W(null)},placeholder:s("settings.relayTunnelAccountEmailPlaceholder")})}),e.jsx(ae,{label:s("settings.relayTunnelAccountPassword"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountPassword"),className:"settings-text-input",type:"password",value:k,onChange:i=>{j(i.target.value),W(null)},placeholder:s("settings.relayTunnelAccountPasswordPlaceholder")})}),F?e.jsx(Ds,{title:s("settings.relayTunnelLoginErrorTitle"),message:F}):null,e.jsxs(Q,{align:"start",children:[e.jsx("button",{className:"settings-button",disabled:b!==null||!d,type:"button",onClick:()=>void ns(),children:b==="login-control"?s("common.loading"):s("settings.relayTunnelLoginAccount")}),e.jsx("button",{className:"secondary-button",disabled:b!==null,type:"button",onClick:()=>{M(i=>!i),V(null)},children:h?s("settings.relayTunnelAdvancedSettingsHide"):s("settings.relayTunnelAdvancedSettings")})]}),h?e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[e.jsx(ae,{label:s("settings.relayTunnelControlBaseUrl"),description:s("settings.relayTunnelServerAddressHint"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelControlBaseUrl"),className:"settings-text-input",type:"url",value:x,onChange:i=>{v(i.target.value),V(null)},placeholder:Us()})}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelAdvancedSettingsDescription")}),T?e.jsx(Ds,{title:s("settings.relayTunnelConfigErrorTitle"),message:T}):null,e.jsx(Q,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:y||b!==null||!B,type:"button",onClick:()=>void We(),children:b==="save-config"?s("common.loading"):s("common.save")})})]}):null]})})})]}),e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":Ms(oe,le),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(ie,{className:"settings-relay-tunnel-step-tag",children:s(Ps(oe,le))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:le?n!=null&&n.bindingId?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:re??n.tunnelDomain??s("settings.relayTunnelUnbound")})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-relay-tunnel-domain-row",children:[e.jsx("input",{"aria-label":s("settings.relayTunnelHostLabel"),className:"settings-text-input settings-relay-tunnel-domain-prefix",value:o,onChange:i=>u(i.target.value),placeholder:s("settings.relayTunnelHostLabelPlaceholder")}),e.jsx("span",{className:"settings-relay-tunnel-domain-suffix",children:s("settings.relayTunnelHostLabelSuffix")}),e.jsx("button",{className:"settings-button settings-relay-tunnel-domain-check",disabled:b!==null||N.length===0,type:"button",onClick:()=>void is(),children:b==="check-host-label"?s("common.loading"):s("settings.relayTunnelHostLabelCheck")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[m.status==="available"&&m.hostLabel===N?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:at({controlBaseUrl:$,tunnelDomain:m.tunnelDomain,hostLabel:m.hostLabel})??m.tunnelDomain})}):null,m.status==="checking"&&m.hostLabel===N?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelHostLabelChecking")}):null,m.status==="error"&&m.hostLabel===N?e.jsx("p",{className:"settings-relay-tunnel-error",children:m.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":Ms(H,oe),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(ie,{className:"settings-relay-tunnel-step-tag",children:s(Ps(H,oe))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:oe?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:R?s("settings.relayTunnelStepStartReady"):s("settings.relayTunnelActivationHint")}),e.jsx(Q,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:b!==null||!Ce,type:"button",onClick:()=>void os(),children:b==="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:[ee&&de&&ue?e.jsx(Ja,{hint:ue,label:de,url:ee.url}):null,e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelTrustBoundaryNotice")}),n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:s("settings.relayTunnelRecentError",{message:n.lastError})}):null,J?e.jsx("p",{className:"settings-relay-tunnel-error",children:J}):null]})]}):null,!y&&H?e.jsxs(G,{heading:s("settings.relayTunnelReadyTitle"),description:s("settings.relayTunnelReadyDescription"),children:[e.jsxs(we,{compact:!0,children:[ee&&de?e.jsxs(e.Fragment,{children:[e.jsx(me,{label:s("settings.relayTunnelClientRouteLabel"),value:de}),e.jsx(me,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:ee.url})]}):null,e.jsx(me,{className:"settings-relay-tunnel-summary-line-access-url",label:s("settings.relayTunnelAccessUrlLabel"),trailing:re?e.jsxs("div",{className:"settings-relay-tunnel-access-url",children:[e.jsx("span",{className:"settings-relay-tunnel-access-url-text",title:re,children:re}),e.jsxs("span",{className:"settings-relay-tunnel-access-url-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void rs(),children:s("settings.relayTunnelCopyAccessUrl")}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void cs(),children:s("settings.relayTunnelOpenAccessUrl")})]})]}):e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:s("settings.relayTunnelUnbound")})}),e.jsx(me,{label:s("settings.relayTunnelTrafficGranted"),value:He}),e.jsx(me,{label:s("settings.relayTunnelTrafficUsed"),value:Te}),e.jsx(me,{label:s("settings.relayTunnelTrafficRemaining"),value:ts})]}),e.jsxs(Q,{align:"start",className:"settings-relay-tunnel-ready-actions",children:[e.jsx("button",{className:"secondary-button",disabled:b!==null||!(n!=null&&n.bindingId),type:"button",onClick:()=>void _e(),children:b==="reconnect"?s("common.loading"):s("settings.relayTunnelReconnectAction")}),e.jsx("button",{className:"secondary-button",disabled:b!==null,type:"button",onClick:()=>void ls(),children:b==="manage-account"?s("common.loading"):s("settings.relayTunnelManageAccountAction")}),e.jsx("button",{className:"settings-button settings-button-danger",disabled:b!==null,type:"button",onClick:()=>void ze(),children:b==="disconnect-device"?s("common.loading"):s("settings.relayTunnelDisconnectDeviceAction")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[ee&&de&&ue?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:ue}):null,e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelTrustBoundaryNotice")}),n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:s("settings.relayTunnelRecentError",{message:n.lastError})}):null,J?e.jsx("p",{className:"settings-relay-tunnel-error",children:J}):null]})]}):null]});function $e(i){const P=ce.getState(),q=Ft(P);if(!q)return;const ye=Ke(i);Xa(q.relayTunnel??null,ye)||ce.update({hosts:P.hosts.map(ds=>ds.id===q.id?{...ds,relayTunnel:ye,updatedAt:new Date().toISOString()}:ds)})}function Ke(i){return!(i!=null&&i.bindingId)||!i.tunnelDomain?null:{provider:"codingns_relay",enabled:i.enabled,tunnelDomain:i.tunnelDomain.trim().toLowerCase(),controlBaseUrl:us(i.controlBaseUrl),bindingId:i.bindingId,hostFingerprint:i.hostFingerprint,candidateEndpoints:i.candidateEndpoints}}}function Ja({label:t,url:a,hint:n}){return e.jsxs(e.Fragment,{children:[e.jsxs(we,{compact:!0,children:[e.jsx(me,{label:s("settings.relayTunnelClientRouteLabel"),value:t}),e.jsx(me,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:a})]}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:n})]})}function me({label:t,value:a,trailing:n,className:r}){return e.jsx(Re,{className:r,label:t,trailing:n??e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:a})})}function Qa(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 Ds({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 Ms(t,a){return t?"done":a?"current":"pending"}function Ps(t,a){return t?"settings.relayTunnelStepDone":a?"settings.relayTunnelStepCurrent":"settings.relayTunnelStepPending"}function Za(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 ge(t){return t instanceof be||t instanceof Error?t.message:s("settings.relayTunnelLoadFailed")}function As(t,a,n){if(t instanceof be&&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 ge(t)}function Ee(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 Et(t){return t?t.split(".")[0]||s("common.unknown"):s("common.unknown")}function at(t){var r,o,u,x;const a=it(t.hostLabel)??it(Et(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((u=t.tunnelDomain)==null?void 0:u.trim())??null;try{const v=new URL(n);return v.hostname=`${a}.${v.hostname}`,v.pathname="/",v.search="",v.hash="",v.origin}catch{return((x=t.tunnelDomain)==null?void 0:x.trim())??null}}function it(t){const a=(t==null?void 0:t.trim().toLowerCase())??"";return!a||a===s("common.unknown").toLowerCase()?null:a}async function Es(t,a){!(await t(a)).ok&&typeof window<"u"&&window.open(a,"_blank","noopener,noreferrer")}function Ga(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 Ya(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(!Ga(t))throw new Error(s("settings.relayTunnelCopyAccessUrlFailed"))}function Xa(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 lt(){return await I.request("/api/system/tailscale/status")}async function rt(t){return await I.request("/api/system/tailscale/config",{method:"PUT",body:JSON.stringify(t)})}async function ei(){return await I.request("/api/system/tailscale/enable",{method:"POST"})}async function si(){return await I.request("/api/system/tailscale/disable",{method:"POST"})}async function ti(){return await I.request("/api/system/tailscale/login",{method:"POST"})}async function ni(){return await I.request("/api/system/tailscale/logout",{method:"POST"})}function ai({children:t}){return e.jsx("div",{className:"settings-remote-access-metrics",children:t})}function Ge({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 ii({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 li({configMode:t="modal"}){const a=Be(),[n,r]=c.useState(null),[o,u]=c.useState(""),[x,v]=c.useState(""),[h,M]=c.useState(!0),[p,w]=c.useState(null),[k,j]=c.useState(null),[E,f]=c.useState(!1),[m,g]=c.useState(!1),y=c.useRef(!0),C=c.useRef(!1),b=c.useRef(async()=>{}),l=t==="inline",S=(n==null?void 0:n.activated)??!1;C.current=m;function A(N){if(r(N),u(N.controlServerUrl??""),v(N.hostname??""),j(null),!N.activated){g(!1),f(!1);return}C.current&&!dt(N.lastError)&&g(!1)}b.current=async N=>{N||M(!0);try{const B=await lt();if(!y.current)return;A(B)}catch(B){if(!y.current)return;j(Le(B))}finally{y.current&&!N&&M(!1)}},c.useEffect(()=>(y.current=!0,b.current(!1),()=>{y.current=!1}),[]),c.useEffect(()=>{if(!S)return;const N=window.setInterval(()=>{b.current(!0)},5e3);return()=>{window.clearInterval(N)}},[S]),c.useEffect(()=>{if(!m||!S)return;function N(){b.current(!0)}function B(){document.visibilityState==="visible"&&b.current(!0)}return window.addEventListener("focus",N),document.addEventListener("visibilitychange",B),()=>{window.removeEventListener("focus",N),document.removeEventListener("visibilitychange",B)}},[S,m]);const T=((n==null?void 0:n.controlServerUrl)??"")!==o.trim()||((n==null?void 0:n.hostname)??"")!==x.trim(),V=S&&dt(n==null?void 0:n.lastError),F=S&&oi(a.ui.osFamily)&&V;async function W(){const N=await rt({controlServerUrl:ot(o),hostname:ot(x)});return A(N),N}async function J(N){w("toggle-activation"),j(null);try{const B=await rt({activated:N});A(B)}catch(B){j(Le(B))}finally{w(null),M(!1)}}async function O(N){w(N),j(null);try{T&&N!=="disable"&&N!=="logout"&&await W();const B=N==="enable"?await ei():N==="disable"?await si():N==="login"?await ti():await ni();A(B)}catch(B){j(Le(B))}finally{w(null)}}async function L(){w("save"),j(null);try{await W(),f(!1)}catch(N){j(Le(N))}finally{w(null)}}async function _(){w("refresh"),j(null);try{const N=await lt();A(N)}catch(N){j(Le(N))}finally{w(null),M(!1)}}async function z(){const N=di(a.ui.osFamily);if(N){w("install"),j(null);try{const B=await a.bridge.openExternal(N);if(!B.ok){j(B.detail??s("settings.tailscaleInstallOpenFailed"));return}g(!0)}catch(B){j(B instanceof Error?B.message:s("settings.tailscaleInstallOpenFailed"))}finally{w(null)}}}function $(){p!=="save"&&f(!1)}const K=S?e.jsxs("span",{className:"settings-tailscale-status-indicator","data-tone":ui((n==null?void 0:n.phase)??"disabled"),children:[e.jsx("span",{className:"settings-tailscale-status-dot","aria-hidden":"true"}),ci((n==null?void 0:n.phase)??"disabled")]}):s("settings.remoteAccessFeatureDisabledValue");return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-panel",children:[e.jsx(G,{heading:s("settings.tailscaleSectionTitle"),description:s("settings.tailscaleSectionDescription"),actions:e.jsx(ii,{checked:S,label:s("settings.tailscaleMasterSwitchLabel"),disabled:p!==null,onChange:N=>{J(N)}}),children:h&&!n?e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[e.jsxs(ai,{children:[e.jsx(Ge,{label:s("settings.tailscaleStatusIndicator"),value:K}),e.jsx(Ge,{label:s("settings.tailscaleServerAddress"),value:S?(n==null?void 0:n.reachableBaseUrl)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(Ge,{label:s("settings.tailscaleAccountName"),value:S?(n==null?void 0:n.accountName)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(Ge,{label:s("settings.tailscaleIpAddress"),value:S?ri(n):s("settings.tailscaleUnavailable")})]}),S?null:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("settings.tailscaleActivationHint")}),S&&(n==null?void 0:n.phase)==="needs_login"&&n.loginUrl?e.jsx("p",{className:"settings-tailscale-login-url",children:e.jsx("a",{className:"settings-tailscale-link",href:n.loginUrl,rel:"noreferrer",target:"_blank",children:n.loginUrl})}):null,k||n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:k??(n==null?void 0:n.lastError)}):null,S?e.jsxs(Q,{align:"start",children:[F?e.jsx("button",{className:"settings-button",type:"button",disabled:h||p!==null,onClick:()=>{z()},children:p==="install"?s("common.loading"):s("settings.tailscaleInstallAction")}):null,l?null:e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null,onClick:()=>f(!0),children:s("settings.tailscaleConfigure")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null,onClick:()=>{_()},children:p==="refresh"?s("common.loading"):s("settings.tailscaleRefresh")}),n!=null&&n.enabled?e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null||V,onClick:()=>{O("disable")},children:p==="disable"?s("common.loading"):s("settings.tailscaleDisable")}):e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null||V,onClick:()=>{O("enable")},children:p==="enable"?s("common.loading"):s("settings.tailscaleEnable")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null||!(n!=null&&n.enabled)||V,onClick:()=>{O("login")},children:p==="login"?s("common.loading"):s("settings.tailscaleLogin")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:h||p!==null||!(n!=null&&n.enabled)||V,onClick:()=>{O("logout")},children:p==="logout"?s("common.loading"):s("settings.tailscaleLogout")})]}):null]})}),l&&S?e.jsx(G,{heading:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),children:e.jsx(ct,{controlServerUrlDraft:o,hostnameDraft:x,pendingAction:p,configDirty:T,onControlServerUrlChange:u,onHostnameChange:v,onSave:()=>{L()}})}):null]}),e.jsx(Se,{open:!l&&S&&E,title:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),size:"regular",onClose:$,children:e.jsx(ct,{controlServerUrlDraft:o,hostnameDraft:x,pendingAction:p,configDirty:T,footer:e.jsx("div",{className:"settings-tailscale-modal-actions",children:e.jsx("button",{className:"secondary-button",type:"button",disabled:p==="save",onClick:$,children:s("common.cancel")})}),onControlServerUrlChange:u,onHostnameChange:v,onSave:()=>{L()}})})]})}function ct({controlServerUrlDraft:t,hostnameDraft:a,pendingAction:n,configDirty:r,footer:o,onControlServerUrlChange:u,onHostnameChange:x,onSave:v}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-form",children:[e.jsx(ae,{label:s("settings.tailscaleControlServer"),children:e.jsx("input",{"aria-label":s("settings.tailscaleControlServer"),className:"settings-text-input",placeholder:s("settings.tailscaleControlServerPlaceholder"),value:t,onChange:h=>u(h.target.value)})}),e.jsx(ae,{label:s("settings.tailscaleHostname"),children:e.jsx("input",{"aria-label":s("settings.tailscaleHostname"),className:"settings-text-input",placeholder:s("settings.tailscaleHostnamePlaceholder"),value:a,onChange:h=>x(h.target.value)})})]}),e.jsxs(Q,{align:"start",className:"settings-tailscale-config-actions",children:[o,e.jsx("button",{className:"settings-button",type:"button",disabled:n!==null||!r,onClick:v,children:n==="save"?s("common.loading"):s("common.save")})]})]})}function ot(t){const a=t.trim();return a.length>0?a:null}function Le(t){return t instanceof be||t instanceof Error?t.message:s("settings.tailscaleLoadFailed")}function ri(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 ci(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 dt(t){return t?t.includes("Tailscale CLI"):!1}function oi(t){return t==="macos"||t==="windows"}function di(t){switch(t){case"macos":return"https://tailscale.com/download/mac";case"windows":return"https://tailscale.com/download/windows";default:return null}}function ui(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 Lt({open:t,mobile:a,onClose:n}){const[r,o]=c.useState("tunnel"),u=c.useId(),x=[{id:"tunnel",label:s("settings.remoteAccessTunnelTab")},{id:"tailscale",label:s("settings.remoteAccessTailscaleTab")}],v=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.remoteAccessTabsLabel"),children:x.map(h=>{const M=`${u}-${h.id}-tab`,p=`${u}-${h.id}-panel`,w=r===h.id;return e.jsx("button",{id:M,type:"button",role:"tab",className:"settings-model-tab","data-active":w?"true":void 0,"aria-selected":w,"aria-controls":p,onClick:()=>o(h.id),children:h.label},h.id)})}),r==="tunnel"?e.jsx("div",{id:`${u}-tunnel-panel`,"aria-labelledby":`${u}-tunnel-tab`,role:"tabpanel",children:e.jsx(Ka,{})}):e.jsx("div",{id:`${u}-tailscale-panel`,"aria-labelledby":`${u}-tailscale-tab`,role:"tabpanel",children:e.jsx(li,{configMode:"inline"})})]});return a?e.jsx(Oe,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:n,children:v}):e.jsx(Se,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),size:"wide",onClose:n,children:v})}function ut({title:t,description:a,actions:n,content:r,className:o}){return e.jsx(rn,{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 Rt={start:43e3,end:47999};function gi(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 mi(t){return gi(t)?t==="model-management"||t==="provider-management"?"ability-management":t:null}function hi(t){return t==="en-US"?s("locale.enUS"):s("locale.zhCN")}function pi(t){return t==="beta"?s("settings.releaseBeta"):s("settings.releaseStable")}function fi(t){switch(t){case"acceptEdits":return s("settings.permissionModeAcceptEdits");case"bypassPermissions":return s("settings.permissionModeBypassPermissions");default:return s("settings.permissionModeDefault")}}function bi(){const t=ht(),{theme:a,selectedTheme:n,autoTheme:r,setTheme:o,setAutoTheme:u}=Zt(),x=Bt(D=>D),v=gs(D=>D.profile.language),h=gs(D=>D.profile.defaultPermissionMode),M=De(D=>D.sessionDisplaySortMode),p=De(D=>D.showSystemFiles),w=De(D=>D.notificationPreferences.notifyOnPermissionRequest),k=De(D=>D.notificationPreferences.notifyOnSessionCompleted),j=De(D=>D.notificationPreferences.notifyOnSessionFailed),E={language:v,defaultPermissionMode:h,debugPortPools:gs(D=>D.profile.debugPortPools)??Rt},f=Be(),m=Vt(x.platform),g=m,y=Rs(x)??"",[C,b]=c.useState(y);c.useEffect(()=>{b(y)},[y]);function l(){qt.clear(),ms.resetToLocalFallback(),t("/login",{replace:!0})}function S(D){o(D)}function A(D){u(D)}function T(D){try{return Ht(D)}catch{return null}}const V=T(C),F=V!==null&&V!==y;function W(D){D.preventDefault(),V&&ce.update({hosts:x.hosts.map(X=>X.id===x.activeHostId?{...X,baseUrl:V,updatedAt:new Date().toISOString()}:X)})}const J=[{value:"default",label:s("settings.permissionModeDefault")},{value:"acceptEdits",label:s("settings.permissionModeAcceptEdits")},{value:"bypassPermissions",label:s("settings.permissionModeBypassPermissions")}],O=[{value:"createdAt",label:s("settings.sessionSortModeCreatedAt")},{value:"updatedAt",label:s("settings.sessionSortModeUpdatedAt")},{value:"title",label:s("settings.sessionSortModeTitle")}];function L(D){ce.update({releaseChannel:D==="beta"?"beta":"stable"})}function _(D){ce.update({autoReconnect:D})}function z(D){ce.update({autoCheckUpdate:D})}function $(D){const X=D==="acceptEdits"||D==="bypassPermissions"?D:"default";ms.updateProfile({defaultPermissionMode:X}).catch(()=>{})}function K(D){const X=D==="updatedAt"||D==="title"?D:"createdAt";Me.setSessionDisplaySortMode(X)}function N(D){Me.setShowSystemFiles(D)}function B(D){Me.setNotificationPreferences({notifyOnPermissionRequest:D})}function R(D){Me.setNotificationPreferences({notifyOnSessionCompleted:D})}function d(D){Me.setNotificationPreferences({notifyOnSessionFailed:D})}async function U(D){await ms.updateProfile({debugPortPools:D})}return{platform:f,theme:a,selectedTheme:n,autoTheme:r,applyTheme:S,applyAutoTheme:A,runtimeConfig:x,accountPreferences:E,sessionDisplaySortMode:M,showSystemFiles:p,notifyOnPermissionRequest:w,notifyOnSessionCompleted:k,notifyOnSessionFailed:j,showServerSettings:g,canConfigureServerAddress:m,hostBaseUrlDraft:C,setHostBaseUrlDraft:b,canSaveHostBaseUrl:F,permissionModeOptions:J,sessionDisplaySortModeOptions:O,handleHostBaseUrlSubmit:W,handleLogout:l,updateReleaseChannel:L,updateAutoReconnect:_,updateAutoCheckUpdate:z,updateDefaultPermissionMode:$,updateSessionDisplaySortMode:K,updateShowSystemFiles:N,updateNotifyOnPermissionRequest:B,updateNotifyOnSessionCompleted:R,updateNotifyOnSessionFailed:d,updateDebugPortPools:U}}function qi(){const t=bi(),a=Qt();return t.platform.isMobile?e.jsx(vi,{model:t,appVersion:a}):e.jsx(xi,{model:t,appVersion:a})}function xi({model:t,appVersion:a}){const[n,r]=c.useState(!1),[o,u]=c.useState(!1),{theme:x,selectedTheme:v,autoTheme:h,applyTheme:M,applyAutoTheme:p,runtimeConfig:w,accountPreferences:k,sessionDisplaySortMode:j,showSystemFiles:E,notifyOnPermissionRequest:f,notifyOnSessionCompleted:m,notifyOnSessionFailed:g,showServerSettings:y,hostBaseUrlDraft:C,setHostBaseUrlDraft:b,canSaveHostBaseUrl:l,permissionModeOptions:S,sessionDisplaySortModeOptions:A,platform:T,handleHostBaseUrlSubmit:V,handleLogout:F,updateReleaseChannel:W,updateAutoReconnect:J,updateAutoCheckUpdate:O,updateDefaultPermissionMode:L,updateSessionDisplaySortMode:_,updateShowSystemFiles:z,updateNotifyOnPermissionRequest:$,updateNotifyOnSessionCompleted:K,updateNotifyOnSessionFailed:N,updateDebugPortPools:B}=t;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(pt,{})})]}),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(Y,{checked:h,label:s("settings.autoTheme"),onChange:p})]}),e.jsx("span",{className:"settings-theme-note",children:s("settings.autoThemeDescription")})]}),e.jsx("div",{className:"theme-selector",children:ft.map(R=>e.jsxs("button",{type:"button",className:`theme-card ${v===R.id&&!h?"active":""}`,"aria-pressed":v===R.id&&!h,disabled:h,onClick:()=>M(R.id),children:[e.jsx("span",{className:"theme-preview",style:{background:R.color}}),e.jsx("span",{className:"theme-label",children:bt(R)}),v===R.id&&!h?e.jsx("span",{className:"theme-check",children:"✓"}):null]},R.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:j,onChange:R=>_(R.target.value),children:A.map(R=>e.jsx("option",{value:R.value,children:R.label},R.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(Y,{checked:E,label:s("settings.showSystemFiles"),onChange:z})})]})]})]}),y?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:V,children:[e.jsx("input",{"aria-label":s("settings.serverAddress"),className:"settings-text-input",value:C,onChange:R=>b(R.target.value)}),e.jsx("button",{className:"settings-button",disabled:!l,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(Y,{checked:w.autoReconnect,label:s("settings.autoReconnect"),onChange:J})})]})]})]}):null,e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.abilityManagement")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.providerManagement")}),e.jsx("span",{className:"settings-row-description",children:s("settings.providerManagementDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(yt,{})})]}),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(jt,{})})]})]})]}),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(wt,{})})]})})]}),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:()=>u(!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:k.defaultPermissionMode,onChange:R=>L(R.target.value),children:S.map(R=>e.jsx("option",{value:R.value,children:R.label},R.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(Dt,{})})]}),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(Y,{checked:f,label:s("settings.notifyOnPermissionRequest"),onChange:$})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.notifyOnSessionCompleted")}),e.jsx("span",{className:"settings-row-description",children:s("settings.notifyOnSessionCompletedDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(Y,{checked:m,label:s("settings.notifyOnSessionCompleted"),onChange:K})})]}),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(Y,{checked:g,label:s("settings.notifyOnSessionFailed"),onChange:N})})]})]})]}),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(It,{value:k.debugPortPools,onSave:B})})]}),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:w.releaseChannel,onChange:R=>W(R.target.value),children:[e.jsx("option",{value:"stable",children:s("settings.releaseStable")}),e.jsx("option",{value:"beta",children:s("settings.releaseBeta")})]})})]}),e.jsxs("div",{className:"settings-row",children:[e.jsx("div",{className:"settings-row-label",children:e.jsx("span",{className:"settings-row-title",children:s("settings.serverUpdate")})}),e.jsx("div",{className:"settings-row-control settings-row-control-stretch",children:e.jsx(At,{})})]}),T.isWeb?null:e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-row",children:[e.jsx("div",{className:"settings-row-label",children:e.jsx("span",{className:"settings-row-title",children:s("settings.autoCheckUpdate")})}),e.jsx("div",{className:"settings-row-control",children:e.jsx(Y,{checked:w.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:O})})]}),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(vt,{})})]})]})]})]}),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:F,type:"button",children:s("common.logout")})]})]}),e.jsx(dn,{isOpen:n,onClose:()=>r(!1)}),e.jsx(Lt,{open:o,mobile:!1,onClose:()=>u(!1)})]})}function vi({model:t,appVersion:a}){const n=ht(),{section:r}=Gt(),o=mi(r),u=[{id:"appearance",title:s("settings.appearance"),description:s("settings.appearanceSectionSummary"),value:hi(t.accountPreferences.language),icon:e.jsx(Di,{})}];return t.showServerSettings&&u.push({id:"server-connection",title:s("settings.serverConnection"),description:s("settings.serverConnectionSectionSummary"),value:Rs(t.runtimeConfig)??"",icon:e.jsx(Mi,{})}),u.push({id:"ability-management",title:s("settings.abilityManagement"),description:s("settings.abilityManagementSectionSummary"),value:s("settings.abilityManagementNavValue"),icon:e.jsx(Ei,{})},{id:"channels-management",title:s("settings.channelsManagement"),description:s("settings.channelsManagementSectionSummary"),value:s("settings.channelsManagementNavValue"),icon:e.jsx(Li,{})},{id:"remote-access",title:s("settings.remoteAccess"),description:s("settings.remoteAccessSectionSummary"),value:s("settings.remoteAccessNavValue"),icon:e.jsx(Ai,{})},{id:"security-privacy",title:s("settings.securityPrivacy"),description:s("settings.securityPrivacySectionSummary"),value:fi(t.accountPreferences.defaultPermissionMode),icon:e.jsx(Ri,{})},{id:"software-update",title:s("settings.softwareUpdate"),description:s("settings.softwareUpdateSectionSummary"),value:pi(t.runtimeConfig.releaseChannel),icon:e.jsx(Pi,{})}),(o?u.find(v=>v.id===o)??null:null)?e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(ut,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[o==="appearance"?e.jsx(ji,{model:t}):null,o==="ability-management"?e.jsx(Ci,{}):null,o==="channels-management"?e.jsx(Ti,{}):null,o==="server-connection"&&t.showServerSettings?e.jsx(yi,{model:t}):null,o==="remote-access"?e.jsx(Si,{model:t}):null,o==="security-privacy"?e.jsx(Ni,{model:t}):null,o==="software-update"?e.jsx(ki,{model:t}):null]}),e.jsx(mt,{onLogout:t.handleLogout})]}):e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(ut,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[e.jsx("section",{className:"settings-mobile-group-section",children:e.jsx("div",{className:"settings-mobile-list",children:u.map(v=>e.jsxs("button",{type:"button",className:"settings-mobile-nav-row",onClick:()=>n(`/settings/${v.id}`),children:[e.jsx("span",{className:"settings-mobile-nav-icon",children:v.icon}),e.jsxs("span",{className:"settings-mobile-nav-copy",children:[e.jsx("span",{className:"settings-mobile-nav-title",children:v.title}),e.jsx("span",{className:"settings-mobile-nav-description",children:v.description})]}),e.jsxs("span",{className:"settings-mobile-nav-trailing",children:[v.value?e.jsx("span",{className:"settings-mobile-nav-value",children:v.value}):null,e.jsx(Ii,{})]})]},v.id))})}),e.jsx("div",{className:"settings-footer settings-footer-mobile",children:e.jsxs("span",{className:"settings-version",children:["CodingNS v",a]})})]}),e.jsx(mt,{onLogout:t.handleLogout})]})}function ji({model:t}){return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.language")}),e.jsx("p",{className:"settings-mobile-group-note",children:s("settings.languageDescription")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsx("div",{className:"settings-mobile-row-copy",children:e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.language")})}),e.jsx(pt,{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(Y,{checked:t.autoTheme,label:s("settings.autoTheme"),onChange:t.applyAutoTheme})]}),ft.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:bt(a)})]}),e.jsx("span",{className:"settings-mobile-choice-indicator","aria-hidden":"true",children:n?e.jsx(Ui,{}):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(Y,{checked:t.showSystemFiles,label:s("settings.showSystemFiles"),onChange:t.updateShowSystemFiles})]})]})]})]})}function yi({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(Y,{checked:t.runtimeConfig.autoReconnect,label:s("settings.autoReconnect"),onChange:t.updateAutoReconnect})]})})]})]})}function Ni({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(Dt,{compact:!0})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.debugPortPool")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsx(It,{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(Y,{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(Y,{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(Y,{checked:t.notifyOnSessionFailed,label:s("settings.notifyOnSessionFailed"),onChange:t.updateNotifyOnSessionFailed})]})]})]})]})}function It(t){const[a,n]=c.useState(()=>gt(t.value)),[r,o]=c.useState(!1),[u,x]=c.useState(null),[v,h]=c.useState(!1);c.useEffect(()=>{n(gt(t.value))},[t.value]);async function M(){x(null),h(!1);let p;try{p=wi(a)}catch(w){x(w instanceof Error?w.message:s("settings.debugPortPoolSaveFailed"));return}try{o(!0),await t.onSave(p),h(!0)}catch(w){x(w instanceof Error?w.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:p=>{const w=p.target.value;n(k=>({...k,start:w}))}}),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:p=>{const w=p.target.value;n(k=>({...k,end:w}))}}),e.jsx("button",{type:"button",className:t.compact?"settings-mobile-primary-button":"settings-button",disabled:r,onClick:()=>{M()},children:r?s("common.loading"):s("common.save")}),v?e.jsx("span",{children:s("settings.debugPortPoolSaved")}):null]})})]}),u?e.jsx("p",{className:"status-text settings-debug-port-pool-feedback","data-tone":"error",children:u}):null]})}function gt(t){const a=t??Rt;return{start:String(a.start),end:String(a.end)}}function wi(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 Si({model:t}){const[a,n]=c.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(Lt,{open:a,mobile:!0,onClose:()=>n(!1)})]})}function Ci(){return 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-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(yt,{})]}),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(jt,{})]})]})]})}function Ti(){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(wt,{})]})]})}function ki({model:t}){return e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.softwareUpdate")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsxs("div",{className:"settings-mobile-row-copy",children:[e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.releaseChannel")}),e.jsx("span",{className:"settings-mobile-row-description",children:s("settings.releaseChannelDescription")})]}),e.jsxs("select",{"aria-label":s("settings.releaseChannel"),className:"settings-select settings-mobile-select",value:t.runtimeConfig.releaseChannel,onChange:a=>t.updateReleaseChannel(a.target.value),children:[e.jsx("option",{value:"stable",children:s("settings.releaseStable")}),e.jsx("option",{value:"beta",children:s("settings.releaseBeta")})]})]})})]}),e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.serverUpdate")}),e.jsx("div",{className:"settings-mobile-panel-shell settings-mobile-update-shell",children:e.jsx(At,{})})]}),t.platform.isWeb?null:e.jsxs("section",{className:"settings-mobile-group-section",children:[e.jsx("h2",{className:"settings-mobile-group-title",children:s("settings.clientUpdate")}),e.jsx("div",{className:"settings-mobile-list",children:e.jsxs("div",{className:"settings-mobile-form-row",children:[e.jsx("div",{className:"settings-mobile-row-copy",children:e.jsx("span",{className:"settings-mobile-row-title",children:s("settings.autoCheckUpdate")})}),e.jsx(Y,{checked:t.runtimeConfig.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:t.updateAutoCheckUpdate})]})}),e.jsx("div",{className:"settings-mobile-panel-shell settings-mobile-update-shell",children:e.jsx(vt,{})})]})]})}function mt({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 Y({checked:t,label:a,onChange:n}){return e.jsxs("label",{className:"settings-mobile-switch","aria-label":a,onClick:r=>{r.target instanceof HTMLInputElement||(r.preventDefault(),n(!t))},children:[e.jsx("input",{type:"checkbox","aria-label":a,checked:t,onChange:r=>n(r.target.checked)}),e.jsx("span",{className:"settings-mobile-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-mobile-switch-thumb"})})]})}function Di(){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 Mi(){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 Pi(){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 Ai(){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 Ei(){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 Li(){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 Ri(){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 Ii(){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 Ui(){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{qi as SettingsPage};
|