@jingyi0605/codingns 0.6.5 → 0.7.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/dist/public/assets/AdaptiveButlerPage-Cd8nPdO0.js +3 -0
- package/dist/public/assets/{App-B9HcTkMT.js → App-CyxK-Nos.js} +6 -6
- package/dist/public/assets/{BootstrapPage-BgLdZEKQ.js → BootstrapPage-DEwPKWR8.js} +1 -1
- package/dist/public/assets/ConversationPage-CxWtRhfz.js +6 -0
- package/dist/public/assets/{DesktopDetachPreviewPage-YCBnyC58.js → DesktopDetachPreviewPage-DDOWolgB.js} +1 -1
- package/dist/public/assets/{DesktopWindowPage-CrvndE23.js → DesktopWindowPage-CtS9D8FD.js} +1 -1
- package/dist/public/assets/{FileContextPanel-CdC7GGw5.js → FileContextPanel-CNOjhsi5.js} +1 -1
- package/dist/public/assets/GitSidebar-DpC4UhFy.js +6 -0
- package/dist/public/assets/{MobileCreateSessionSheet-Cb2HM-y3.js → MobileCreateSessionSheet-DE4pTyXj.js} +1 -1
- package/dist/public/assets/{MobileTopHeaderFrame-etF2HKlm.js → MobileTopHeaderFrame-D_ZbS0qi.js} +1 -1
- package/dist/public/assets/{MobileWorkspaceSwitcherHeader-CuGJ31kb.js → MobileWorkspaceSwitcherHeader-Dc12IAXc.js} +1 -1
- package/dist/public/assets/{RelayConnectEntryPage-BB6DbGtP.js → RelayConnectEntryPage-D8kyZfdm.js} +1 -1
- package/dist/public/assets/{ServerSettingsModal-Bl1sacZg.js → ServerSettingsModal-8eRu6VXr.js} +1 -1
- package/dist/public/assets/SessionIndexPage-DIi0JWKP.js +1 -0
- package/dist/public/assets/SettingsPage-OQq3kp32.js +2 -0
- package/dist/public/assets/{TerminalManagerPanel-BOm8Hi_v.js → TerminalManagerPanel-BEMzisSy.js} +1 -1
- package/dist/public/assets/{TerminalPage-B5JNFU6w.js → TerminalPage-CXLQfwjU.js} +18 -18
- package/dist/public/assets/{TerminalRuntimeFallbackModal-CM3LRKOJ.js → TerminalRuntimeFallbackModal-BY_VUAbq.js} +1 -1
- package/dist/public/assets/ToolFilesPage-CYx3DgHg.js +1 -0
- package/dist/public/assets/ToolGitPage-fgQcvF6v.js +1 -0
- package/dist/public/assets/ToolProcessesPage-BL6yDDPV.js +1 -0
- package/dist/public/assets/{ToolsHomePage-DsJp0y8A.js → ToolsHomePage-B1n2OeVw.js} +1 -1
- package/dist/public/assets/{WorkbenchLandingPage-DyPei0e-.js → WorkbenchLandingPage-Cu9yAWYo.js} +1 -1
- package/dist/public/assets/WorkbenchLayout-D6hGXWGE.js +244 -0
- package/dist/public/assets/{WorkbenchModal-LNfB69qx.js → WorkbenchModal-Bpb_G1-U.js} +1 -1
- package/dist/public/assets/WorkbenchShellRoute-BCjcGWhl.js +1 -0
- package/dist/public/assets/{WorkspaceDebugDetailPage-CaXj5zVI.js → WorkspaceDebugDetailPage-CZwT99iQ.js} +1 -1
- package/dist/public/assets/{WorkspaceDetailPage-DOexuuaw.js → WorkspaceDetailPage-DCM-olfU.js} +1 -1
- package/dist/public/assets/{WorkspaceHomePage-DkCHNjKD.js → WorkspaceHomePage-CsIIqIma.js} +1 -1
- package/dist/public/assets/{client-runtime-manager-6OoYHXGd.js → client-runtime-manager-CMK7kLp8.js} +1 -1
- package/dist/public/assets/file-tree-icon-Bv-apgA1.js +3 -0
- package/dist/public/assets/index-CkkzIvxs.css +1 -0
- package/dist/public/assets/index-O3gOb1E0.js +42 -0
- package/dist/public/assets/{login-direct-candidate-resolver-CLlYtBRq.js → login-direct-candidate-resolver-Bn4I5JHh.js} +1 -1
- package/dist/public/assets/model-switch-api-ZGnyVir7.js +1 -0
- package/dist/public/assets/{preferences-service-BCcfYP_d.js → preferences-service-scuqVhuA.js} +1 -1
- package/dist/public/assets/realtime-client-TRootbbB.js +1 -0
- package/dist/public/assets/{relay-entry-BmLkMKuq.js → relay-entry-eyCjVFMA.js} +1 -1
- package/dist/public/assets/styles-DkbkRgWw.css +1 -0
- package/dist/public/assets/{terminal-runtime-meta-0h-75uRy.js → terminal-runtime-meta-BGcnzxqn.js} +1 -1
- package/dist/public/assets/{useRegisteredDebugTemplates-rBVmAqh3.js → useRegisteredDebugTemplates-BdgPIDVM.js} +1 -1
- package/dist/public/index.html +2 -2
- package/dist/server/config/env.js +21 -1
- package/dist/server/config/env.js.map +1 -1
- package/dist/server/config/opencode-base-url-resolver.d.ts +16 -0
- package/dist/server/config/opencode-base-url-resolver.js +154 -0
- package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
- package/dist/server/helpers/wechat-claw-runtime/main.d.ts +1 -0
- package/dist/server/helpers/wechat-claw-runtime/main.js +38 -0
- package/dist/server/helpers/wechat-claw-runtime/main.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/errors.d.ts +5 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/errors.js +32 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/errors.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/login-service.d.ts +16 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/login-service.js +209 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/login-service.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.d.ts +18 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.js +135 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/poll-service.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.d.ts +34 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.js +394 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/runtime-state-store.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/send-service.d.ts +9 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/send-service.js +64 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/send-service.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/types.d.ts +167 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/types.js +3 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/types.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.d.ts +34 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.js +160 -0
- package/dist/server/helpers/wechat-claw-runtime/modules/wechat-api-client.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/routes/accounts.d.ts +9 -0
- package/dist/server/helpers/wechat-claw-runtime/routes/accounts.js +24 -0
- package/dist/server/helpers/wechat-claw-runtime/routes/accounts.js.map +1 -0
- package/dist/server/helpers/wechat-claw-runtime/server.d.ts +5 -0
- package/dist/server/helpers/wechat-claw-runtime/server.js +36 -0
- package/dist/server/helpers/wechat-claw-runtime/server.js.map +1 -0
- package/dist/server/middlewares/auth-guard.js +4 -1
- package/dist/server/middlewares/auth-guard.js.map +1 -1
- package/dist/server/modules/butler/butler-control-session-service.d.ts +16 -1
- package/dist/server/modules/butler/butler-control-session-service.js +106 -75
- package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-service.js +44 -15
- package/dist/server/modules/butler/butler-session-service.js.map +1 -1
- package/dist/server/modules/channels/channel-bridge-service.d.ts +55 -0
- package/dist/server/modules/channels/channel-bridge-service.js +340 -0
- package/dist/server/modules/channels/channel-bridge-service.js.map +1 -0
- package/dist/server/modules/channels/channel-controller.d.ts +52 -0
- package/dist/server/modules/channels/channel-controller.js +54 -0
- package/dist/server/modules/channels/channel-controller.js.map +1 -0
- package/dist/server/modules/channels/channel-delivery-service.d.ts +63 -0
- package/dist/server/modules/channels/channel-delivery-service.js +429 -0
- package/dist/server/modules/channels/channel-delivery-service.js.map +1 -0
- package/dist/server/modules/channels/channel-gateway-controller.d.ts +15 -0
- package/dist/server/modules/channels/channel-gateway-controller.js +16 -0
- package/dist/server/modules/channels/channel-gateway-controller.js.map +1 -0
- package/dist/server/modules/channels/channel-gateway-service.d.ts +24 -0
- package/dist/server/modules/channels/channel-gateway-service.js +56 -0
- package/dist/server/modules/channels/channel-gateway-service.js.map +1 -0
- package/dist/server/modules/channels/channel-platform-adapters.d.ts +46 -0
- package/dist/server/modules/channels/channel-platform-adapters.js +315 -0
- package/dist/server/modules/channels/channel-platform-adapters.js.map +1 -0
- package/dist/server/modules/channels/channel-platform-catalog.d.ts +3 -0
- package/dist/server/modules/channels/channel-platform-catalog.js +42 -0
- package/dist/server/modules/channels/channel-platform-catalog.js.map +1 -0
- package/dist/server/modules/channels/channel-polling-scheduler.d.ts +31 -0
- package/dist/server/modules/channels/channel-polling-scheduler.js +93 -0
- package/dist/server/modules/channels/channel-polling-scheduler.js.map +1 -0
- package/dist/server/modules/channels/channel-polling-service.d.ts +46 -0
- package/dist/server/modules/channels/channel-polling-service.js +176 -0
- package/dist/server/modules/channels/channel-polling-service.js.map +1 -0
- package/dist/server/modules/channels/channel-service.d.ts +108 -0
- package/dist/server/modules/channels/channel-service.js +397 -0
- package/dist/server/modules/channels/channel-service.js.map +1 -0
- package/dist/server/modules/channels/wechat-claw-runtime-boundary.d.ts +4 -0
- package/dist/server/modules/channels/wechat-claw-runtime-boundary.js +13 -0
- package/dist/server/modules/channels/wechat-claw-runtime-boundary.js.map +1 -0
- package/dist/server/modules/channels/wechat-claw-runtime-client.d.ts +14 -0
- package/dist/server/modules/channels/wechat-claw-runtime-client.js +95 -0
- package/dist/server/modules/channels/wechat-claw-runtime-client.js.map +1 -0
- package/dist/server/modules/channels/wechat-claw-runtime-manager.d.ts +16 -0
- package/dist/server/modules/channels/wechat-claw-runtime-manager.js +133 -0
- package/dist/server/modules/channels/wechat-claw-runtime-manager.js.map +1 -0
- package/dist/server/modules/channels/wechat-claw-runtime-types.d.ts +1 -0
- package/dist/server/modules/channels/wechat-claw-runtime-types.js +2 -0
- package/dist/server/modules/channels/wechat-claw-runtime-types.js.map +1 -0
- package/dist/server/modules/git/git-controller.d.ts +3 -1
- package/dist/server/modules/git/git-controller.js +9 -2
- package/dist/server/modules/git/git-controller.js.map +1 -1
- package/dist/server/modules/git/git-read-service.js +2 -1
- package/dist/server/modules/git/git-read-service.js.map +1 -1
- package/dist/server/modules/git/git-remote-credential-service.d.ts +1 -0
- package/dist/server/modules/git/git-remote-credential-service.js +4 -0
- package/dist/server/modules/git/git-remote-credential-service.js.map +1 -1
- package/dist/server/modules/git/types.d.ts +1 -0
- package/dist/server/modules/opencli/opencli-bridge-skill-service.js +2 -1
- package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -1
- package/dist/server/modules/provider/codex-model-options.js +14 -15
- package/dist/server/modules/provider/codex-model-options.js.map +1 -1
- package/dist/server/modules/provider/provider-catalog-service.d.ts +5 -6
- package/dist/server/modules/provider/provider-catalog-service.js +12 -57
- package/dist/server/modules/provider/provider-catalog-service.js.map +1 -1
- package/dist/server/modules/provider/provider-controller.d.ts +1 -0
- package/dist/server/modules/provider/provider-controller.js +5 -0
- package/dist/server/modules/provider/provider-controller.js.map +1 -1
- package/dist/server/modules/provider/provider-discovery-helper-process.js +2 -1
- package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
- package/dist/server/modules/provider/provider-runtime-state-service.d.ts +24 -0
- package/dist/server/modules/provider/provider-runtime-state-service.js +141 -0
- package/dist/server/modules/provider/provider-runtime-state-service.js.map +1 -0
- package/dist/server/modules/sessions/session-history-service.d.ts +3 -3
- package/dist/server/modules/sessions/session-history-service.js +150 -47
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.js +9 -11
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-config-service.d.ts +1 -0
- package/dist/server/modules/sessions/session-provider-config-service.js +28 -7
- package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-error-mapper.js +7 -0
- package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
- package/dist/server/modules/tasks/task-types.d.ts +2 -0
- package/dist/server/modules/tasks/task-types.js +2 -0
- package/dist/server/modules/tasks/task-types.js.map +1 -1
- package/dist/server/routes/channels.d.ts +3 -0
- package/dist/server/routes/channels.js +16 -0
- package/dist/server/routes/channels.js.map +1 -0
- package/dist/server/routes/providers.js +1 -0
- package/dist/server/routes/providers.js.map +1 -1
- package/dist/server/routes/public.d.ts +2 -1
- package/dist/server/routes/public.js +3 -1
- package/dist/server/routes/public.js.map +1 -1
- package/dist/server/server/create-server.d.ts +22 -0
- package/dist/server/server/create-server.js +63 -4
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/shared/http/error-handler.js +59 -3
- package/dist/server/shared/http/error-handler.js.map +1 -1
- package/dist/server/storage/repositories/channel-account-repository.d.ts +12 -0
- package/dist/server/storage/repositories/channel-account-repository.js +153 -0
- package/dist/server/storage/repositories/channel-account-repository.js.map +1 -0
- package/dist/server/storage/repositories/channel-delivery-repository.d.ts +13 -0
- package/dist/server/storage/repositories/channel-delivery-repository.js +156 -0
- package/dist/server/storage/repositories/channel-delivery-repository.js.map +1 -0
- package/dist/server/storage/repositories/channel-inbound-event-repository.d.ts +12 -0
- package/dist/server/storage/repositories/channel-inbound-event-repository.js +144 -0
- package/dist/server/storage/repositories/channel-inbound-event-repository.js.map +1 -0
- package/dist/server/storage/repositories/channel-thread-repository.d.ts +12 -0
- package/dist/server/storage/repositories/channel-thread-repository.js +152 -0
- package/dist/server/storage/repositories/channel-thread-repository.js.map +1 -0
- package/dist/server/storage/repositories/provider-runtime-state-repository.d.ts +9 -0
- package/dist/server/storage/repositories/provider-runtime-state-repository.js +50 -0
- package/dist/server/storage/repositories/provider-runtime-state-repository.js.map +1 -0
- package/dist/server/storage/sqlite/schema.sql +114 -0
- package/dist/server/types/domain.d.ts +82 -0
- package/dist/server/ws/workbench-ws-hub.js +8 -2
- package/dist/server/ws/workbench-ws-hub.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +6 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +398 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +75 -15
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +61 -8
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +32 -4
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.d.ts +3 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +94 -21
- package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
- package/package.json +5 -1
- package/dist/public/assets/AdaptiveButlerPage-CfsUVZKl.js +0 -3
- package/dist/public/assets/ConversationPage-Cj8go7L0.js +0 -4
- package/dist/public/assets/GitSidebar-z2SBinQh.js +0 -6
- package/dist/public/assets/SessionIndexPage-NbF9gJnp.js +0 -1
- package/dist/public/assets/SettingsPage-DGsmQpLv.js +0 -1
- package/dist/public/assets/ToolFilesPage-GSqKQsj_.js +0 -1
- package/dist/public/assets/ToolGitPage-BVFWMMQp.js +0 -1
- package/dist/public/assets/ToolProcessesPage-DZ456fYz.js +0 -1
- package/dist/public/assets/WorkbenchLayout-DlbgBT3n.js +0 -4
- package/dist/public/assets/WorkbenchShellRoute-BsxumYx5.js +0 -1
- package/dist/public/assets/file-tree-icon-9pt1OStn.js +0 -31
- package/dist/public/assets/index-BwlbvwaA.css +0 -1
- package/dist/public/assets/index-DSw-TkQL.js +0 -42
- package/dist/public/assets/model-switch-api-C-l8-E1S.js +0 -1
- package/dist/public/assets/session-runtime-machine-DgtvREca.js +0 -21
- package/dist/public/assets/styles-CsEMfdaS.css +0 -1
- /package/dist/public/assets/{styles-DRVvx_kv.js → styles-JKFlsYFv.js} +0 -0
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{b as l,t as n,j as e,A as Bn}from"./index-DSw-TkQL.js";import{u as Ri,e as wi,f as Ai,g as jn}from"./App-B9HcTkMT.js";import{u as Pi,a5 as st,b as Cn,bc as Nn,w as Di,bd as Li,be as _i,b4 as Fi,bf as vn,bg as Oi,bh as Sn,bi as ki,b6 as Gi,bj as $i,b5 as Bi,bk as Ui,a_ as Un,bl as Vi,bb as Wi,bm as Tn,_ as zi,c as Ki,bn as Ii,bo as Xi}from"./WorkbenchLayout-DlbgBT3n.js";import{S as qi,y as Yi,z as Zi,e as Ji}from"./model-switch-api-C-l8-E1S.js";import{F as Qi,a as Ft,b as Ot}from"./file-tree-icon-9pt1OStn.js";import{W as Oe}from"./WorkbenchModal-LNfB69qx.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./relay-entry-BmLkMKuq.js";const Rt=56,Mn=28,wt=72,at=8,En=960,Hn=60*1e3,Rn=20,wn=9,An=9,At=68,F=12,rt=8,kt=260,es=120,Pt=6e4,ot={authMode:"none",username:"",password:"",token:"",rememberOnHost:!1};function Ms({className:a,workspaceId:i,panelActive:u=!0,externalWindowMode:h=!1,workbenchShellOverrides:d}){const j=Ri(),f=wi(),x=Pi(),{subscribeGitSnapshot:b,requestGitRefresh:v,addGitSnapshotListener:E,requestNavigationRefresh:S,selectWorkspace:T,upsertNavigationSession:p}={...x,...d},[r,m]=l.useState(null),[y,R]=l.useState(null),[C,M]=l.useState([]),[_,w]=l.useState(0),[I,ie]=l.useState(null),[he,ct]=l.useState(!1),[$,ge]=l.useState(null),[se,X]=l.useState(null),[fe,pe]=l.useState(""),[$e,B]=l.useState(!1),[N,A]=l.useState(!1),[Zn,Vt]=l.useState([]),[ee,Wt]=l.useState(!0),[te,W]=l.useState(!1),[O,Jn]=l.useState(()=>typeof window<"u"?window.innerWidth<=En:!1),[ut,U]=l.useState([]),[be,z]=l.useState(null),[xe,ae]=l.useState("unstaged"),[ye,q]=l.useState(null),[re,Y]=l.useState(null),[Qn,dt]=l.useState(!1),[ei,mt]=l.useState(null),[ti,Be]=l.useState(!1),[zt,Ue]=l.useState(null),[D,je]=l.useState(null),[Kt,Ce]=l.useState(null),[ni,Ne]=l.useState(!1),[ve,oe]=l.useState(null),[ne,ht]=l.useState(!1),[ii,Se]=l.useState(!1),[si,It]=l.useState([]),[ps,Xt]=l.useState(!1),[Ve,gt]=l.useState(new Set),[ai,Te]=l.useState(new Map),[We,qt]=l.useState(null),[ri,Me]=l.useState(!1),[P,Z]=l.useState(ot),[Yt,ze]=l.useState("generic"),[Zt,Ke]=l.useState(null),[k,ft]=l.useState(null),[G,pt]=l.useState(null),[Jt,Qt]=l.useState(Rt),[bt,xt]=l.useState(!1),[en,Ee]=l.useState(null),[oi,He]=l.useState(null),tn=l.useRef(null),nn=l.useRef(null),sn=l.useRef(null),an=l.useRef(null),rn=l.useRef(null),on=l.useRef(null),yt=l.useRef(null),Re=l.useRef(new Map),Ie=l.useRef(new Map),we=l.useRef(0),ln=l.useRef(u),cn=l.useRef(u),Xe=l.useRef(null),{showToast:H}=Ai(),un=f.isDesktop&&!O;l.useEffect(()=>{st("git_sidebar.props",{workspaceId:i,externalWindowMode:h})},[h,i]),l.useEffect(()=>{cn.current=u},[u]),l.useEffect(()=>{Vt([]),Wt(!0),w(0),ie(null),ct(!1),X(null),pe(""),W(!1),U([]),z(null),ae("unstaged"),q(null),Y(null),dt(!1),mt(null),Be(!1),Ue(null),je(null),Ce(null),Ne(!1),oe(null),ht(!1),Se(!1),It([]),gt(new Set),Te(new Map),qt(null),Me(!1),Z(ot),ze("generic"),Ke(null),ft(null),pt(null),xt(!1),Qt(Rt),Ee(null),He(null),Ie.current.clear(),Re.current.clear()},[i]),l.useEffect(()=>{function t(){Jn(window.innerWidth<=En)}return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[]),l.useEffect(()=>{if(!bt)return;const t=document.body.style.cursor,s=document.body.style.userSelect;document.body.style.cursor="row-resize",document.body.style.userSelect="none";function o(g){fn(g.clientY)}function c(){xt(!1)}return window.addEventListener("pointermove",o),window.addEventListener("pointerup",c),()=>{document.body.style.cursor=t,document.body.style.userSelect=s,window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",c)}},[bt]),l.useEffect(()=>{var c,g;if(!(i!=null&&i.trim())){Xe.current=null,m(null),R(null),M([]),w(0),ie(null),ge(null),B(!1);return}const t=i.trim(),s=Cn(ke(t),Hn),o=Lt(s);if(st("git_sidebar.snapshot",{workspaceId:t,cached:o,cachedHistoryCount:((c=s==null?void 0:s.history)==null?void 0:c.length)??0,cachedChangedCount:((g=s==null?void 0:s.status)==null?void 0:g.changes.length)??0}),o&&s){jt(s,t),B(!1);return}Xe.current=null,Nn(ke(t)),m(null),R(null),M([]),w(0),ie(null),ge(null),B(!0)},[i]),l.useEffect(()=>{if(i!=null&&i.trim())return E(t=>{var s,o,c;t.workspaceId===i.trim()&&(st("git_sidebar.snapshot_received",{workspaceId:t.workspaceId,changedCount:((s=t.status)==null?void 0:s.changes.length)??0,historyCount:t.history.length,branchCount:(((o=t.branches)==null?void 0:o.local.length)??0)+(((c=t.branches)==null?void 0:c.remote.length)??0)}),jt(t,t.workspaceId),B(!1))})},[E,i]),l.useEffect(()=>{if(!(i!=null&&i.trim()))return;const t=i.trim(),s=Cn(ke(t),Hn),o=Lt(s)?(s==null?void 0:s.revision)??null:null;b(t,{knownRevision:o}),cn.current&&K()},[v,b,i]),l.useEffect(()=>{const t=ln.current;ln.current=u,i!=null&&i.trim()&&!t&&u&&v(i.trim(),{knownRevision:y})},[u,v,y,i]),l.useEffect(()=>{const t=i==null?void 0:i.trim();if(!t||Xe.current!==t)return;const s={revision:y,status:r,history:C,historyTotalCount:_,historyNextCursor:I,branches:$};if(!Lt(s)){Nn(ke(t));return}Di(ke(t),s)},[$,C,I,_,y,r,i]),l.useEffect(()=>{if(!r||!se)return;r.changes.find(s=>s.path===se)||X(null)},[se,r]),l.useEffect(()=>{os(an.current)},[fe]),l.useEffect(()=>{O||(U([]),z(null),q(null),Ke(null))},[O]),l.useEffect(()=>{if(!r){U([]);return}const t=new Set(r.changes.map(s=>s.path));U(s=>s.filter(o=>t.has(o)))},[r]);function li(){const t=sn.current;if(!t)return;t.querySelectorAll(".git-tree-shell").forEach(o=>{o.scrollTop=0})}function jt(t,s){Xe.current=(s==null?void 0:s.trim())??(i==null?void 0:i.trim())??null,R(typeof t.revision=="string"?t.revision:null),m(t.status),M(Array.isArray(t.history)?t.history:[]),w(typeof t.historyTotalCount=="number"?t.historyTotalCount:0),ie(typeof t.historyNextCursor=="string"?t.historyNextCursor:null),ge(t.branches??null)}function K(t){i!=null&&i.trim()&&(B(!0),st("git_sidebar.refresh_requested",{workspaceId:i.trim(),resetTreeScroll:!1}),v(i.trim(),{knownRevision:y}))}async function Ct(t){if(!(i!=null&&i.trim()))return;const s=i.trim();B(!0);try{const[o,c,g]=await Promise.all([Fi(s),vn(s,Rn,null),Oi(s)]);jt({status:o,history:c.items,historyTotalCount:c.totalCount,historyNextCursor:c.nextCursor,branches:g}),v(s),t!=null&&t.resetTreeScroll&&requestAnimationFrame(()=>{li()})}catch(o){H({title:L(o,n("git.panelLoadFailed")),tone:"error"})}finally{B(!1)}}async function qe(){if(!(!i||!I||he)){ct(!0);try{const t=await vn(i,Rn,I);M(s=>{const o=new Set(s.map(g=>g.commitHash)),c=t.items.filter(g=>!o.has(g.commitHash));return[...s,...c]}),w(t.totalCount),ie(t.nextCursor)}catch(t){H({title:L(t,n("git.panelLoadFailed")),tone:"error"})}finally{ct(!1)}}}function ci(t){if(!ee||he||!I)return;const s=t.currentTarget;s.scrollHeight-s.scrollTop-s.clientHeight<=40&&qe()}async function ui(){if(i){A(!0);try{const t=await _i(i,"ai");pe(t.validation.normalizedDraft.subject||t.draft.subject)}catch(t){H({title:L(t,n("git.draftFailed")),tone:"error"})}finally{A(!1)}}}async function Ye(t,s){if(i&&t.length){A(!0);try{const o=s?await $i(i,t):await Bi(i,t);m(o),X(t[t.length-1]??null),U(c=>c.filter(g=>!t.includes(g))),z(null),K()}catch(o){B(!1),H({title:L(o,n("git.stageFailed")),tone:"error"})}finally{A(!1)}}}async function Nt(t){if(i&&t.length){A(!0);try{const s=await Vi(i,t);m(s),t.includes(se??"")&&X(null),U(o=>o.filter(c=>!t.includes(c))),z(null),K()}catch(s){B(!1),H({title:L(s,n("git.discardFailed")),tone:"error"})}finally{A(!1)}}}async function di(){if(!(!i||!fe.trim())){A(!0);try{await ki(i,ss(fe)),H({title:n("git.commitSuccess"),tone:"success"}),pe(""),X(null),K()}catch(t){H({title:L(t,n("git.commitFailed")),tone:"error"})}finally{A(!1)}}}async function mi(){if(i!=null&&i.trim()){A(!0),B(!0);try{const t=await Li(i.trim());m(t),M([]),w(0),ie(null),ge(null),H({title:n("git.initSuccess"),tone:"success"}),K()}catch(t){H({title:L(t,n("git.initFailed")),tone:"error"})}finally{A(!1),B(!1)}}}function Ze(t){Z(ds(We)),Me(!0),hi(t)}async function hi(t){const s=i==null?void 0:i.trim();if(!s){ze("generic");return}try{const o=await Sn(s);if((i==null?void 0:i.trim())!==s)return;ze(hs(o,t))}catch{if((i==null?void 0:i.trim())!==s)return;ze("generic")}}function gi(){const t=ms(P),s=Yt==="github"?n("git.remoteAuthGithubPatPlaceholder"):n("shell.clonePasswordPlaceholder");if(P.authMode==="basic"){if(!P.username.trim()){H({title:n("shell.cloneUsernamePlaceholder"),tone:"error"});return}if(!P.password){H({title:s,tone:"error"});return}}if(P.authMode==="token"&&!P.token){H({title:n("shell.cloneTokenPlaceholder"),tone:"error"});return}qt(t),Me(!1),H({title:t?n("git.remoteAuthSaved"):n("git.remoteAuthCleared"),description:t&&P.rememberOnHost?n("git.remoteAuthRememberHint"):void 0,tone:"success"})}async function dn(){if(i){Xt(!0);try{const t=await Sn(i);if(t.length===0){H({title:n("git.noRemotes"),tone:"error"});return}if(t.length===1){mn([t[0].name]);return}It(t),gt(new Set),Te(new Map),Se(!0)}catch(t){H({title:L(t,n("git.remoteFailed")),tone:"error"})}finally{Xt(!1)}}}async function mn(t){if(!i||t.length===0)return;A(!0),Te(new Map);const s=new Map;let o=!1;try{for(const c of t)try{const g=await Tn(i,"push",c,We,P.rememberOnHost);s.set(c,{ok:!0,summary:g.summary})}catch(g){if(o=!0,s.set(c,{ok:!1,summary:L(g,n("git.remoteFailed"))}),Te(new Map(s)),Gn(g)){Ze(c);return}}Te(s),K(),o||(H({title:n("git.pushAllSuccess",{count:String(t.length)}),tone:"success"}),Se(!1))}finally{A(!1)}}async function vt(t){if(i){if(t==="push"){W(!1),dn();return}A(!0);try{const s=await Tn(i,t,void 0,We,P.rememberOnHost);H({title:s.summary,tone:"success"}),W(!1),K()}catch(s){if(Gn(s)){Ze();return}H({title:L(s,n("git.remoteFailed")),tone:"error"})}finally{A(!1)}}}async function le(){if(i){A(!0);try{const t=await Ui(i);pe(t.commitSubject??""),H({title:t.summary||n("git.undoLastCommitSuccess"),tone:"success"}),W(!1),K()}catch(t){H({title:L(t,n("git.undoLastCommitFailed")),tone:"error"})}finally{A(!1)}}}async function fi(t){if(i){A(!0);try{const s=await Ii(i,t,!1);ge(s),W(!1),K()}catch(s){H({title:L(s,n("git.branchFailed")),tone:"error"})}finally{A(!1)}}}async function St(t){const s=i==null?void 0:i.trim();if(!s)throw new Error(n("git.panelLoadFailed"));const o=Ie.current.get(t);if(o)return o;const c=await Xi(s,t);return Ie.current.set(t,c),c}async function Ae(t){Y(null),q(null),mt(t),Ue(null);const s=Ie.current.get(t)??null;if(je(s),Be(!s),s)return;const o=we.current+1;we.current=o;try{const c=await St(t);if(we.current!==o)return;je(c)}catch(c){if(we.current!==o)return;Ue(L(c,n("git.commitDetailLoadFailed"))),je(null)}finally{we.current===o&&Be(!1)}}function pi(){mt(null),Be(!1),Ue(null),je(null)}async function Pe(t){try{const s=await St(t);await V(s.versionLabel,n("git.copyCommitVersionSuccess"))}catch(s){H({title:L(s,n("git.commitDetailLoadFailed")),tone:"error"})}}function De(t){Y(null),q(null),Ce(t),oe(null),Ne(!0)}function bi(t){var o;const s=((o=C[0])==null?void 0:o.commitHash)===t.commitHash&&t.commitKind==="local";return[{id:`view-changes:${t.commitHash}`,label:n("git.viewCommitChanges"),onSelect:()=>void Ae(t.commitHash)},{id:`copy-hash:${t.commitHash}`,label:n("git.copyCommitHash"),onSelect:()=>void V(t.commitHash,n("git.copyCommitHashSuccess"))},{id:`copy-message:${t.commitHash}`,label:n("git.copyCommitMessage"),onSelect:()=>void V(me(t),n("git.copyCommitMessageSuccess"))},{id:`copy-version:${t.commitHash}`,label:n("git.copyCommitVersion"),onSelect:()=>void Pe(t.commitHash)},{id:`explain:${t.commitHash}`,label:n("git.explainCommitAction"),onSelect:()=>De(t.commitHash)},...s?[{id:`undo:${t.commitHash}`,label:n("git.undoLastCommit"),disabled:N,onSelect:()=>void le()}]:[]]}async function hn(t){Y(null),q(null),await Wi(bi(t))}async function xi(){var t,s;if(!(!i||!Kt||!ve||ne)){ht(!0);try{const o=await St(Kt),c=await Yi({workspaceId:i,provider:ve,content:rs(o),clientRequestId:((s=(t=globalThis.crypto)==null?void 0:t.randomUUID)==null?void 0:s.call(t))??`git-explain-${Date.now()}-${Math.random().toString(16).slice(2)}`,permissionMode:zi()}),g=c.session??await Zi(c.sessionId);p(g),S(),T(g.workspaceId),j(Ki(g.workspaceId,g.sessionId)),Ne(!1),Ce(null),oe(null),H({title:n("git.explainCommitStarted"),tone:"success"})}catch(o){H({title:L(o,n("git.explainCommitFailed")),tone:"error"})}finally{ht(!1)}}}function Je(t){Vt(s=>s.includes(t)?s.filter(o=>o!==t):[...s,t])}const yi=450;function gn(t){const s=Date.now(),o=tn.current;return tn.current={filePath:t,timestamp:s},(o==null?void 0:o.filePath)===t&&s-o.timestamp<=yi}async function Qe(t,s){if(s.binary){H({title:n("git.binaryDiff"),tone:"info"});return}if(s.status==="A"||s.status==="?")He(null),Ee(t);else if(i)try{const o=await Gi(i,t,s.staged);He(o.content),Ee(t)}catch{He(null),Ee(t)}}function et(t){X(t),z(null),U(s=>s.includes(t)?s.filter(o=>o!==t):[...s,t])}function fn(t){const s=nn.current;if(!s||!Number.isFinite(t))return;const o=s.getBoundingClientRect(),c=o.height-at;if(!Number.isFinite(o.top)||!Number.isFinite(o.height)||c<=0)return;const g=(t-o.top-at/2)/c*100;if(!Number.isFinite(g))return;const Fe=Math.max(Mn,Math.min(wt,Math.round(g)));Qt(Fe)}function ji(t){t.preventDefault(),fn(t.clientY),xt(!0)}const Le=(r==null?void 0:r.changes)??[],J=Le.filter(t=>Gt(t,"staged")),ce=Le.filter(t=>Gt(t,"unstaged")),pn=On(J,"staged"),bn=On(ce,"unstaged"),tt=new Set(Zn),nt=new Set(ut),ue=kn(ut,Le,"staged"),de=kn(ut,Le,"unstaged"),Tt=Le.length===0&&((r==null?void 0:r.snapshot.ahead)??0)>0,Ci=J.length>0&&fe.trim().length>0,it=($==null?void 0:$.currentBranch)??(r==null?void 0:r.snapshot.branch)??n("common.unknown"),Mt=We!==null,_e=Yt==="github",Ni=_e?n("git.remoteAuthDescriptionGithub"):n("git.remoteAuthDescription"),vi=_e?n("git.remoteAuthGithubPatLabel"):n("shell.clonePasswordLabel"),Si=_e?n("git.remoteAuthGithubPatPlaceholder"):n("shell.clonePasswordPlaceholder"),Ti=_e?n("git.remoteAuthGithubUsernamePlaceholder"):n("shell.cloneUsernamePlaceholder"),Et=Number.isFinite(Jt)?Jt:Rt,Mi=ee?`minmax(120px, ${Et}fr) ${at}px minmax(140px, ${100-Et}fr)`:`minmax(120px, 1fr) ${at}px auto`,Ei=cs(r);l.useEffect(()=>{be==="staged"&&ue.length===0&&z(null),be==="unstaged"&&de.length===0&&z(null)},[be,ue.length,de.length]),l.useEffect(()=>{if(!O)return;const t=ce.length>0?"unstaged":J.length>0?"staged":"history";ae(s=>s==="unstaged"&&ce.length>0||s==="staged"&&J.length>0?s:t)},[O,J.length,ce.length]),l.useEffect(()=>{ye&&(C.some(t=>t.commitHash===ye)||q(null))},[C,ye]),l.useEffect(()=>{re&&(C.some(t=>t.commitHash===re)||Y(null))},[re,C]),l.useEffect(()=>{O&&xe!=="history"&&te&&W(!1)},[O,te,xe]),l.useLayoutEffect(()=>{if(O||!te){ft(null);return}function t(){const o=rn.current,c=on.current;!o||!c||typeof window>"u"||ft($n(o.getBoundingClientRect(),{width:c.getBoundingClientRect().width||kt,height:c.getBoundingClientRect().height||c.scrollHeight||0},{width:window.innerWidth,height:window.innerHeight}))}t();const s=window.requestAnimationFrame(t);return window.addEventListener("resize",t),window.addEventListener("scroll",t,!0),()=>{window.cancelAnimationFrame(s),window.removeEventListener("resize",t),window.removeEventListener("scroll",t,!0)}},[N,$==null?void 0:$.local.length,it,O,te,Mt]);const Q=ye??re;l.useLayoutEffect(()=>{if(!Q){pt(null);return}const t=Q;function s(){const c=Re.current.get(t)??null,g=yt.current;!c||!g||typeof window>"u"||pt($n(c.getBoundingClientRect(),{width:g.getBoundingClientRect().width||kt,height:g.getBoundingClientRect().height||g.scrollHeight||0},{width:window.innerWidth,height:window.innerHeight}))}s();const o=window.requestAnimationFrame(s);return window.addEventListener("resize",s),window.addEventListener("scroll",s,!0),()=>{window.cancelAnimationFrame(o),window.removeEventListener("resize",s),window.removeEventListener("scroll",s,!0)}},[Q,C.length]),l.useEffect(()=>{if(!Q||typeof document>"u")return;const t=Q;function s(o){const c=o.target;if(!(c instanceof Node))return;const g=Re.current.get(t)??null,Fe=yt.current;g!=null&&g.contains(c)||Fe!=null&&Fe.contains(c)||(q(null),Y(null))}return document.addEventListener("pointerdown",s),()=>{document.removeEventListener("pointerdown",s)}},[Q]);async function V(t,s){var o;try{if(f.isDesktop&&(await f.bridge.writeClipboardText(t)).ok){H({title:s,tone:"success"});return}if(typeof navigator<"u"&&((o=navigator.clipboard)!=null&&o.writeText)){await navigator.clipboard.writeText(t),H({title:s,tone:"success"});return}if(as(t)){H({title:s,tone:"success"});return}}catch{H({title:n("common.copyContentFailed"),tone:"error"})}}async function xn(t,s){typeof window<"u"&&!window.confirm(n("git.discardConfirm",{path:s}))||await Nt(t)}function yn(t){const s=(t==null?void 0:t.desktopFloating)===!0&&!O,o=s?{top:(k==null?void 0:k.top)??F,left:(k==null?void 0:k.left)??F,maxHeight:k==null?void 0:k.maxHeight,transformOrigin:(k==null?void 0:k.transformOrigin)??"top right"}:void 0,c=e.jsxs("div",{ref:s?on:void 0,className:"git-operations-menu","data-floating":s?"true":"false",style:o,children:[e.jsxs("div",{className:"git-menu-section",children:[e.jsx("span",{className:"git-menu-caption",children:n("git.currentBranch")}),e.jsx("strong",{className:"git-menu-branch",children:it})]}),e.jsxs("div",{className:"git-menu-section",children:[e.jsx("span",{className:"git-menu-caption",children:n("git.remoteAuthStatusLabel")}),e.jsxs("div",{className:"git-menu-branch-list",children:[e.jsx("strong",{className:"git-menu-branch",children:Mt?n("git.remoteAuthConfigured"):n("git.remoteAuthNotConfigured")}),e.jsx("button",{className:"git-menu-item",type:"button",disabled:N,onClick:()=>Ze(),children:e.jsx("span",{children:n("git.remoteAuthAction")})})]})]}),e.jsxs("div",{className:"git-menu-section",children:[e.jsx("span",{className:"git-menu-caption",children:n("git.branchTitle")}),e.jsx("div",{className:"git-menu-branch-list",children:$==null?void 0:$.local.map(g=>e.jsx("button",{className:"git-menu-item",type:"button",disabled:N||g.current,onClick:()=>void fi(g.name),children:e.jsx("span",{children:g.current?`${n("git.switchBranch")} ${g.name}`:`${n("git.switchBranchTo")} ${g.name}`})},g.name))})]}),e.jsxs("div",{className:"git-menu-section",children:[e.jsx("button",{className:"git-menu-item",type:"button",disabled:N,onClick:()=>{W(!1),dt(!0)},children:e.jsx("span",{children:n("git.viewAllVersions")})}),e.jsx("button",{className:"git-menu-item",type:"button",disabled:N,onClick:()=>void vt("fetch"),children:e.jsx("span",{children:n("git.fetch")})}),e.jsx("button",{className:"git-menu-item",type:"button",disabled:N,onClick:()=>void vt("pull"),children:e.jsx("span",{children:n("git.pull")})}),e.jsx("button",{className:"git-menu-item",type:"button",disabled:N,onClick:()=>void vt("push"),children:e.jsx("span",{children:n("git.push")})}),e.jsx("button",{className:"git-menu-item",type:"button",disabled:N,onClick:()=>void le(),children:e.jsx("span",{children:n("git.undoLastCommit")})}),e.jsx("button",{className:"git-menu-item",type:"button",disabled:N||$e,onClick:()=>void Ct({resetTreeScroll:!0}),children:e.jsx("span",{children:n("git.refresh")})})]})]});return s?typeof document>"u"?null:jn.createPortal(c,document.body):c}function Ht(t,s){if(s){Re.current.set(t,s);return}Re.current.delete(t)}function Hi(){var o;if(!Q||typeof document>"u")return null;const t=C.find(c=>c.commitHash===Q);if(!t)return null;const s=((o=C[0])==null?void 0:o.commitHash)===t.commitHash&&t.commitKind==="local";return jn.createPortal(e.jsx("div",{ref:yt,className:"git-history-entry-menu","data-floating":"true",style:{top:(G==null?void 0:G.top)??F,left:(G==null?void 0:G.left)??F,maxHeight:G==null?void 0:G.maxHeight,transformOrigin:(G==null?void 0:G.transformOrigin)??"top right"},children:e.jsx(ns,{item:t,canUndo:s,actioning:N,onViewCommitChanges:c=>void Ae(c),onCopyCommitHash:c=>void V(c,n("git.copyCommitHashSuccess")),onCopyCommitMessage:c=>void V(me(c),n("git.copyCommitMessageSuccess")),onCopyCommitVersion:c=>void Pe(c),onExplainCommitChange:c=>void De(c),onUndoLastCommit:()=>void le()})}),document.body)}return r&&!Ei?e.jsx("section",{className:["conversation-panel","surface-card","git-sidebar",a].filter(Boolean).join(" "),"data-testid":"git-sidebar",children:e.jsxs("section",{className:"git-card git-scaffold-section git-disabled-state",children:[e.jsxs("div",{className:"git-disabled-copy",children:[e.jsx("h3",{children:n("git.uninitializedTitle")}),e.jsx("p",{children:n("git.uninitializedDescription")})]}),e.jsx("div",{className:"git-primary-actions",children:e.jsx("button",{className:"primary-button git-primary-submit",type:"button",onClick:()=>void mi(),disabled:N||$e||!i,children:N?n("git.initInProgress"):n("git.initRepository")})})]})}):e.jsxs("section",{className:["conversation-panel","surface-card","git-sidebar",a].filter(Boolean).join(" "),"data-testid":"git-sidebar",children:[e.jsxs("section",{className:"git-card git-scaffold-section",children:[e.jsxs("div",{className:"git-editor-row",children:[e.jsx("textarea",{ref:an,rows:1,value:fe,onChange:t=>pe(In(t.target.value)),onKeyDown:t=>{t.key==="Enter"&&t.preventDefault()},placeholder:n("git.commitSubjectPlaceholder")}),e.jsx("button",{className:"git-icon-button",type:"button","aria-label":n("git.generateDraft"),title:n("git.generateDraft"),onClick:()=>void ui(),disabled:N||$e,children:e.jsx(fs,{})})]}),e.jsxs("div",{className:"git-primary-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void Ct({resetTreeScroll:!0}),disabled:N||$e||!i,children:n("git.refreshNow")}),e.jsx("button",{className:"primary-button git-primary-submit",type:"button",onClick:()=>{if(Tt){dn();return}di()},disabled:N||!Tt&&!Ci,children:Tt?n("git.pushNow"):n("git.commitNow")})]})]}),O?e.jsxs("div",{className:"git-mobile-sections",children:[e.jsx(Dt,{title:n("git.stagedChangesTitle"),count:J.length,expanded:xe==="staged",onToggle:()=>ae("staged"),children:e.jsx(Dn,{title:n("git.stagedChangesTitle"),nodes:pn,collapsedTreePathSet:tt,onToggleTreePath:Je,onToggleMobileSelection:et,selectedMobilePathSet:nt,selectedTargets:ue,actioning:N,variant:"staged",swipeRowState:Zt,onSwipeRowChange:Ke,onStageToggle:Ye,onDiscardWithConfirm:xn,onClearSelectedTargets:()=>U(t=>t.filter(s=>!ue.includes(s))),onPreviewFile:Qe})}),e.jsx(Dt,{title:n("git.changesTitle"),count:ce.length,expanded:xe==="unstaged",onToggle:()=>ae("unstaged"),children:e.jsx(Dn,{title:n("git.changesTitle"),nodes:bn,collapsedTreePathSet:tt,onToggleTreePath:Je,onToggleMobileSelection:et,selectedMobilePathSet:nt,selectedTargets:de,actioning:N,variant:"unstaged",swipeRowState:Zt,onSwipeRowChange:Ke,onStageToggle:Ye,onDiscardWithConfirm:xn,onClearSelectedTargets:()=>U(t=>t.filter(s=>!de.includes(s))),onPreviewFile:Qe})}),e.jsxs(Dt,{title:n("git.recentVersionsTitle"),count:_,expanded:xe==="history",onToggle:()=>ae("history"),trailingContent:e.jsx("span",{className:"badge",children:it}),headerAction:e.jsx("button",{className:"git-icon-button git-mobile-section-action",type:"button","aria-label":n("git.operationMenu"),title:n("git.operationMenu"),"aria-expanded":te,onClick:()=>{ae("history"),W(t=>!t)},disabled:N,children:e.jsx(Ge,{})}),children:[te?e.jsx("div",{className:"git-mobile-operations-shell",children:yn()}):null,e.jsx(ts,{history:C,historyLoadingMore:he,hasMore:!!I,actioning:N,openCommitHash:ye,onMenuTriggerRef:Ht,onToggleMenu:t=>q(s=>s===t?null:t),onViewCommitChanges:t=>void Ae(t),onCopyCommitHash:t=>void V(t,n("git.copyCommitHashSuccess")),onCopyCommitMessage:t=>void V(me(t),n("git.copyCommitMessageSuccess")),onCopyCommitVersion:t=>void Pe(t),onExplainCommitChange:t=>void De(t),onUndoLastCommit:()=>void le(),onLoadMore:()=>void qe()})]})]}):e.jsxs("div",{ref:nn,className:"git-content-split",style:{gridTemplateRows:Mi},children:[e.jsx("section",{className:"git-card git-tree-panel",children:e.jsxs("div",{ref:sn,className:"git-tree-panel-body",children:[J.length>0?e.jsx(Pn,{title:n("git.stagedChangesTitle"),count:J.length,nodes:pn,selectedPath:se,collapsedTreePathSet:tt,onToggleTreePath:Je,onSelectFile:X,onPreviewFile:(t,s)=>{gn(t)&&Qe(t,s)},onToggleMobileSelection:et,onStageToggle:Ye,onDiscard:Nt,actioning:N,variant:"staged",isMobileViewport:O,selectedMobilePathSet:nt,selectedTargets:ue,mobileActionMenuOpen:be==="staged",onToggleMobileActionMenu:()=>z(t=>t==="staged"?null:"staged"),onClearSelectedTargets:()=>U(t=>t.filter(s=>!ue.includes(s)))}):null,e.jsx(Pn,{title:n("git.changesTitle"),count:ce.length,nodes:bn,selectedPath:se,collapsedTreePathSet:tt,onToggleTreePath:Je,onSelectFile:X,onPreviewFile:(t,s)=>{gn(t)&&Qe(t,s)},onToggleMobileSelection:et,onStageToggle:Ye,onDiscard:Nt,actioning:N,variant:"unstaged",isMobileViewport:O,selectedMobilePathSet:nt,selectedTargets:de,mobileActionMenuOpen:be==="unstaged",onToggleMobileActionMenu:()=>z(t=>t==="unstaged"?null:"unstaged"),onClearSelectedTargets:()=>U(t=>t.filter(s=>!de.includes(s)))})]})}),e.jsx("button",{className:"git-panel-divider",type:"button",role:"separator","aria-label":n("git.resizePanels"),"aria-orientation":"horizontal","aria-valuemin":Mn,"aria-valuemax":wt,"aria-valuenow":ee?Et:wt,"data-dragging":bt,onPointerDown:ji,children:e.jsx("span",{className:"git-panel-divider-handle","aria-hidden":"true"})}),e.jsxs("section",{className:"git-card git-history-section",children:[e.jsxs("div",{className:"git-history-topbar",children:[e.jsxs("button",{className:"git-section-toggle",type:"button","aria-expanded":ee,"aria-label":ee?n("git.collapseRecentVersions"):n("git.expandRecentVersions"),onClick:()=>Wt(t=>!t),children:[e.jsxs("span",{className:"git-section-toggle-main",children:[e.jsx(lt,{expanded:ee}),e.jsx("span",{children:n("git.recentVersionsTitle")})]}),e.jsx("span",{className:"workbench-section-counter",children:_})]}),e.jsxs("div",{className:"git-history-actions",children:[e.jsx("span",{className:"badge",children:it}),e.jsx("button",{className:"git-icon-button",type:"button",ref:rn,"aria-label":n("git.operationMenu"),title:n("git.operationMenu"),onClick:()=>W(t=>!t),disabled:N,children:e.jsx(Ge,{})}),te?yn({desktopFloating:!0}):null]})]}),ee?e.jsx(_n,{history:C,historyLoadingMore:he,hasMore:!!I,actioning:N,openCommitHash:re,useNativeContextMenu:un,onMenuTriggerRef:Ht,onScroll:ci,onToggleMenu:t=>{if(un){const s=C.find(o=>o.commitHash===t);s&&hn(s);return}Y(s=>s===t?null:t)},onOpenContextMenu:t=>void hn(t),onViewCommitChanges:t=>void Ae(t),onCopyCommitHash:t=>void V(t,n("git.copyCommitHashSuccess")),onCopyCommitMessage:t=>void V(me(t),n("git.copyCommitMessageSuccess")),onCopyCommitVersion:t=>void Pe(t),onExplainCommitChange:t=>void De(t),onUndoLastCommit:()=>void le(),onLoadMore:()=>void qe()}):null]})]}),e.jsxs(Oe,{open:ii,title:n("git.selectRemoteTitle"),description:n("git.selectRemoteDesc"),onClose:()=>{N||Se(!1)},children:[e.jsxs("div",{className:"git-remote-auth-banner",children:[e.jsxs("div",{className:"git-remote-auth-banner-copy",children:[e.jsx("strong",{children:n("git.remoteAuthStatusLabel")}),e.jsx("span",{children:Mt?n("git.remoteAuthConfigured"):n("git.remoteAuthNotConfigured")})]}),e.jsx("button",{className:"secondary-button",type:"button",disabled:N,onClick:()=>Ze(),children:n("git.remoteAuthAction")})]}),e.jsx("div",{className:"git-remote-select-list",children:si.map(t=>{const s=Ve.has(t.name),o=ai.get(t.name);return e.jsxs("label",{className:"git-remote-item",children:[e.jsx("input",{type:"checkbox",checked:s,disabled:N,onChange:()=>{gt(c=>{const g=new Set(c);return g.has(t.name)?g.delete(t.name):g.add(t.name),g})}}),e.jsxs("span",{className:"git-remote-item-body",children:[e.jsx("span",{className:"git-remote-name",children:t.name}),e.jsx("span",{className:"git-remote-url",children:t.pushUrl}),o&&e.jsx("span",{className:`git-remote-result ${o.ok?"ok":"err"}`,children:o.summary})]})]},t.name)})}),e.jsxs("div",{className:"git-remote-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:N,onClick:()=>Se(!1),children:n("common.close")}),e.jsx("button",{className:"primary-button",type:"button",disabled:N||Ve.size===0,onClick:()=>void mn(Array.from(Ve)),children:N?n("git.pushing"):n("git.pushSelected",{count:String(Ve.size)})})]})]}),e.jsxs(Oe,{open:ri,title:n("git.remoteAuthTitle"),description:Ni,onClose:()=>{N||Me(!1)},children:[e.jsxs("div",{className:"workbench-clone-form",children:[e.jsxs("label",{className:"workbench-modal-field",children:[e.jsx("span",{children:n("shell.cloneAuthModeLabel")}),e.jsxs("select",{value:P.authMode,disabled:N,onChange:t=>Z(s=>({...s,authMode:t.target.value})),children:[e.jsx("option",{value:"none",children:n("shell.cloneAuthModeNone")}),e.jsx("option",{value:"basic",children:n("shell.cloneAuthModeBasic")}),e.jsx("option",{value:"token",children:n("shell.cloneAuthModeToken")})]})]}),P.authMode==="basic"?e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"workbench-modal-field",children:[e.jsx("span",{children:n("shell.cloneUsernameLabel")}),e.jsx("input",{type:"text",value:P.username,placeholder:Ti,autoComplete:"username",onChange:t=>Z(s=>({...s,username:t.target.value}))})]}),e.jsxs("label",{className:"workbench-modal-field",children:[e.jsx("span",{children:vi}),e.jsx("input",{type:"password",value:P.password,placeholder:Si,autoComplete:"current-password",onChange:t=>Z(s=>({...s,password:t.target.value}))})]})]}):null,P.authMode==="token"?e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"workbench-modal-field",children:[e.jsx("span",{children:n("shell.cloneUsernameLabel")}),e.jsx("input",{type:"text",value:P.username,placeholder:n("shell.cloneTokenUsernamePlaceholder"),autoComplete:"username",onChange:t=>Z(s=>({...s,username:t.target.value}))})]}),e.jsxs("label",{className:"workbench-modal-field",children:[e.jsx("span",{children:n("shell.cloneTokenLabel")}),e.jsx("input",{type:"password",value:P.token,placeholder:n("shell.cloneTokenPlaceholder"),autoComplete:"current-password",onChange:t=>Z(s=>({...s,token:t.target.value}))})]})]}):null,_e?e.jsx("p",{className:"git-remote-auth-hint",children:n("git.remoteAuthGithubPatHint")}):null,P.authMode!=="none"?e.jsxs("label",{className:"settings-checkbox git-remote-auth-remember-toggle",children:[e.jsx("input",{type:"checkbox",checked:P.rememberOnHost,onChange:t=>Z(s=>({...s,rememberOnHost:t.target.checked}))}),e.jsx("span",{children:n("git.remoteAuthRemember")})]}):null,e.jsx("p",{className:"git-remote-auth-hint",children:n("git.remoteAuthSessionHint")})]}),e.jsxs("div",{className:"git-remote-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:N,onClick:()=>Me(!1),children:n("common.close")}),e.jsx("button",{className:"primary-button",type:"button",disabled:N,onClick:gi,children:n("git.remoteAuthSave")})]})]}),e.jsx(Oe,{open:Qn,title:n("git.viewAllVersions"),description:n("git.viewAllVersionsDescription",{count:String(_)}),onClose:()=>dt(!1),children:e.jsx(_n,{history:C,historyLoadingMore:he,hasMore:!!I,actioning:N,openCommitHash:re,className:"git-history-modal-list",onMenuTriggerRef:Ht,onToggleMenu:t=>Y(s=>s===t?null:t),onViewCommitChanges:t=>void Ae(t),onCopyCommitHash:t=>void V(t,n("git.copyCommitHashSuccess")),onCopyCommitMessage:t=>void V(me(t),n("git.copyCommitMessageSuccess")),onCopyCommitVersion:t=>void Pe(t),onExplainCommitChange:t=>void De(t),onUndoLastCommit:()=>void le(),onLoadMore:()=>void qe()})}),e.jsx(Oe,{open:ei!==null,className:"git-commit-detail-modal",title:(D==null?void 0:D.subject)||n("git.commitDetailTitle"),description:D?n("git.commitDetailDescription",{hash:D.shortHash}):n("git.commitDetailLoading"),onClose:pi,children:ti?e.jsx("div",{className:"git-commit-detail-state",children:e.jsx("p",{children:n("git.commitDetailLoading")})}):zt?e.jsx("div",{className:"git-commit-detail-state is-error",children:e.jsx("p",{children:zt})}):D?e.jsxs("div",{className:"git-commit-detail-shell",children:[e.jsxs("div",{className:"git-commit-detail-meta-grid",children:[e.jsxs("div",{className:"git-commit-detail-meta-card",children:[e.jsx("span",{children:n("git.commitVersionLabel")}),e.jsx("strong",{children:D.versionLabel})]}),e.jsxs("div",{className:"git-commit-detail-meta-card",children:[e.jsx("span",{children:n("git.commitHashLabel")}),e.jsx("strong",{children:D.commitHash})]}),e.jsxs("div",{className:"git-commit-detail-meta-card",children:[e.jsx("span",{children:n("git.commitAuthorLabel")}),e.jsx("strong",{children:D.authorName})]}),e.jsxs("div",{className:"git-commit-detail-meta-card",children:[e.jsx("span",{children:n("git.commitTimeLabel")}),e.jsx("strong",{children:ls(D.authoredAt)})]})]}),e.jsxs("section",{className:"git-commit-detail-section",children:[e.jsx("div",{className:"git-commit-detail-section-header",children:e.jsx("h3",{children:n("git.commitMessageLabel")})}),e.jsx("pre",{className:"git-commit-detail-message",children:me(D)})]}),e.jsxs("section",{className:"git-commit-detail-section",children:[e.jsxs("div",{className:"git-commit-detail-section-header",children:[e.jsx("h3",{children:n("git.changedFilesTitle")}),e.jsx("span",{className:"workbench-section-counter",children:D.changedFiles.length})]}),e.jsx("div",{className:"git-commit-detail-file-list",children:D.changedFiles.map(t=>e.jsxs("div",{className:"git-commit-detail-file-item",children:[e.jsx("span",{className:"git-commit-detail-file-status","data-status":t.status,children:t.status}),e.jsxs("div",{className:"git-commit-detail-file-copy",children:[e.jsx("strong",{children:t.path}),t.oldPath?e.jsx("span",{children:n("git.renamedFromLabel",{path:t.oldPath})}):null]})]},`${t.status}:${t.oldPath??""}:${t.path}`))})]}),e.jsxs("section",{className:"git-commit-detail-section",children:[e.jsxs("div",{className:"git-commit-detail-section-header",children:[e.jsx("h3",{children:n("git.commitDiffLabel")}),D.diffTruncated?e.jsx("span",{className:"git-commit-detail-truncated",children:n("git.diffTruncated")}):null]}),e.jsx("pre",{className:"git-commit-detail-diff",children:D.diffContent||n("git.emptyDiff")})]})]}):e.jsx("div",{className:"git-commit-detail-state",children:e.jsx("p",{children:n("git.commitDetailEmpty")})})}),e.jsx(Oe,{open:ni,className:"git-explain-provider-modal",title:n("git.explainCommitTitle"),description:n("git.explainCommitDescription"),onClose:()=>{ne||(Ne(!1),Ce(null),oe(null))},children:e.jsxs("div",{className:"git-explain-provider-shell",children:[e.jsx(qi,{workspaceId:i,selectedProvider:ve,pendingProvider:ne?ve:null,disabled:ne,onSelect:t=>oe(t)}),e.jsxs("div",{className:"git-explain-provider-actions",children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:ne,onClick:()=>{Ne(!1),Ce(null),oe(null)},children:n("common.cancel")}),e.jsx("button",{type:"button",className:"primary-button",disabled:!ve||ne,onClick:()=>void xi(),children:ne?n("conversation.sendingState"):n("git.startExplainCommit")})]})]})}),e.jsx(Qi,{workspaceId:i,filePath:en,open:en!==null,onClose:()=>{Ee(null),He(null)},onSaved:async()=>{await Ct({resetTreeScroll:!0})},diffContent:oi}),Hi()]})}function Pn({title:a,count:i,nodes:u,selectedPath:h,collapsedTreePathSet:d,onToggleTreePath:j,onSelectFile:f,onPreviewFile:x,onToggleMobileSelection:b,onStageToggle:v,onDiscard:E,actioning:S,variant:T,isMobileViewport:p,selectedMobilePathSet:r,selectedTargets:m,mobileActionMenuOpen:y,onToggleMobileActionMenu:R,onClearSelectedTargets:C}){const M=Un(),_=Ut(u),w=T==="staged"?n("git.unstageAll"):n("git.stageAll");return e.jsxs("section",{className:"git-tree-group","data-variant":T,children:[e.jsxs("div",{className:"git-section-header git-tree-group-header",children:[e.jsx("h3",{children:a}),e.jsxs("div",{className:"git-tree-group-actions",children:[e.jsx("span",{className:"workbench-section-counter",children:i}),!p&&_.length>0?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"git-icon-button",type:"button","aria-label":w,title:w,onClick:()=>void v(_,T==="staged"),disabled:S,children:e.jsx($t,{staged:T==="staged"})}),T==="unstaged"?e.jsx("button",{className:"git-icon-button danger",type:"button","aria-label":n("git.discardAll"),title:n("git.discardAll"),onClick:()=>void E(_),disabled:S,children:e.jsx(Bt,{})}):null]}):null,p&&m.length>0?e.jsx("button",{className:"git-icon-button",type:"button","aria-label":n("git.operationMenu"),title:n("git.operationMenu"),onClick:R,disabled:S,children:e.jsx(Ge,{})}):null]}),p&&y?e.jsxs("div",{className:"git-selection-menu",children:[e.jsxs("div",{className:"git-menu-section",children:[e.jsx("span",{className:"git-menu-caption",children:n("git.selectedFiles")}),e.jsx("strong",{className:"git-menu-branch",children:m.length})]}),e.jsxs("div",{className:"git-menu-section",children:[e.jsx("button",{className:"git-menu-item",type:"button",disabled:S,onClick:()=>void v(m,T==="staged"),children:e.jsx("span",{children:T==="staged"?n("git.unstage"):n("git.stage")})}),T==="unstaged"?e.jsx("button",{className:"git-menu-item",type:"button",disabled:S,onClick:()=>void E(m),children:e.jsx("span",{children:n("git.discard")})}):null,e.jsx("button",{className:"git-menu-item",type:"button",disabled:S,onClick:C,children:e.jsx("span",{children:n("git.clearSelection")})})]})]}):null]}),e.jsx("div",{ref:M,className:"git-tree-shell",role:"tree","aria-label":a,"data-scrollbar-autohide":"true",children:u.length?Wn({nodes:u,depth:0,collapsedTreePathSet:d,selectedPath:h,onToggleTreePath:j,onSelectFile:f,onPreviewFile:x,onToggleMobileSelection:b,onStageToggle:v,onDiscard:E,actioning:S,variant:T,isMobileViewport:p,selectedMobilePathSet:r}):e.jsx("p",{className:"git-tree-status",children:n("git.noChanges")})})]})}function Dt({title:a,count:i,expanded:u,onToggle:h,trailingContent:d,headerAction:j,children:f}){return e.jsxs("section",{className:"git-mobile-section","data-expanded":u,children:[e.jsxs("div",{className:"git-mobile-section-header",children:[e.jsxs("button",{className:"git-mobile-section-toggle",type:"button","aria-expanded":u,onClick:h,children:[e.jsxs("span",{className:"git-mobile-section-toggle-main",children:[e.jsx(lt,{expanded:u}),e.jsx("h3",{children:a})]}),e.jsxs("span",{className:"git-mobile-section-toggle-meta",children:[d,e.jsx("span",{className:"workbench-section-counter",children:i})]})]}),j?e.jsx("div",{className:"git-mobile-section-header-action",children:j}):null]}),u?e.jsx("div",{className:"git-mobile-section-body",children:f}):null]})}function Dn({title:a,nodes:i,collapsedTreePathSet:u,onToggleTreePath:h,onToggleMobileSelection:d,selectedMobilePathSet:j,selectedTargets:f,actioning:x,variant:b,swipeRowState:v,onSwipeRowChange:E,onStageToggle:S,onDiscardWithConfirm:T,onClearSelectedTargets:p,onPreviewFile:r}){return e.jsxs("div",{className:"git-mobile-record-shell",children:[f.length>0?e.jsxs("div",{className:"git-mobile-selection-toolbar",children:[e.jsxs("span",{className:"git-mobile-selection-count",children:[n("git.selectedFiles")," ",f.length]}),e.jsxs("div",{className:"git-mobile-selection-actions",children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:x,onClick:()=>void S(f,b==="staged"),children:b==="staged"?n("git.unstage"):n("git.stage")}),b==="unstaged"?e.jsx("button",{type:"button",className:"secondary-button workbench-danger-button",disabled:x,onClick:()=>void T(f,`${f.length}`),children:n("git.discard")}):null,e.jsx("button",{type:"button",className:"secondary-button",disabled:x,onClick:p,children:n("git.clearSelection")})]})]}):null,e.jsx("div",{className:"git-mobile-record-list",role:"tree","aria-label":a,children:i.length?Vn({nodes:i,depth:0,collapsedTreePathSet:u,onToggleTreePath:h,onToggleMobileSelection:d,selectedMobilePathSet:j,actioning:x,variant:b,swipeRowState:v,onSwipeRowChange:E,onStageToggle:S,onDiscardWithConfirm:T,onPreviewFile:r}):e.jsx("p",{className:"git-tree-status",children:n("git.noChanges")})})]})}function Vn({nodes:a,depth:i,collapsedTreePathSet:u,onToggleTreePath:h,onToggleMobileSelection:d,selectedMobilePathSet:j,actioning:f,variant:x,swipeRowState:b,onSwipeRowChange:v,onStageToggle:E,onDiscardWithConfirm:S,onPreviewFile:T}){return a.map(p=>{if(p.kind==="directory"){const y=!u.has(p.path),R=Ut(p.children),C=`directory:${p.path}`;return e.jsxs("div",{className:"git-mobile-record-branch",children:[e.jsx(Ln,{rowKey:C,openState:(b==null?void 0:b.path)===C?b.direction:null,onOpenStateChange:M=>v(M?{path:C,direction:M}:null),trailingActions:R.length>0?[{label:x==="staged"?n("git.unstage"):n("git.stage"),tone:"accent",onPress:()=>void E(R,x==="staged")},...x==="unstaged"?[{label:n("git.discard"),tone:"danger",onPress:()=>void S(R,p.path)}]:[]]:null,children:e.jsxs("button",{className:"git-mobile-record git-mobile-record-directory",type:"button",style:{paddingInlineStart:`${wn+i*An}px`},onClick:()=>h(p.path),children:[e.jsxs("span",{className:"git-mobile-record-leading",children:[e.jsx("span",{className:"git-tree-chevron","data-expanded":y,children:e.jsx(lt,{expanded:y})}),e.jsx("span",{className:"git-mobile-record-title",children:p.name})]}),e.jsx("span",{className:"git-mobile-record-meta",children:R.length})]})}),y?e.jsx("div",{className:"git-mobile-record-children",role:"group",children:Vn({nodes:p.children,depth:i+1,collapsedTreePathSet:u,onToggleTreePath:h,onToggleMobileSelection:d,selectedMobilePathSet:j,actioning:f,variant:x,swipeRowState:b,onSwipeRowChange:v,onStageToggle:E,onDiscardWithConfirm:S,onPreviewFile:T})}):null]},C)}const r=`file:${p.path}`,m=j.has(p.path);return e.jsx(Ln,{rowKey:r,openState:(b==null?void 0:b.path)===r?b.direction:null,onOpenStateChange:y=>v(y?{path:r,direction:y}:null),trailingActions:[{label:n("git.preview"),tone:"neutral",onPress:()=>T(p.change.path,p.change)},{label:x==="staged"?n("git.unstage"):n("git.stage"),tone:"accent",onPress:()=>void E([p.change.path],x==="staged")},...x==="unstaged"?[{label:n("git.discard"),tone:"danger",onPress:()=>void S([p.change.path],p.path)}]:[]],children:e.jsxs("div",{className:"git-mobile-record git-mobile-record-file","data-active":m,style:{paddingInlineStart:`${wn+i*An}px`},children:[e.jsx("input",{className:"git-tree-select-checkbox",type:"checkbox",checked:m,"aria-label":`${n("git.selectFile")} ${p.name}`,onChange:()=>d(p.change.path)}),e.jsxs("button",{className:"git-mobile-record-file-main",type:"button",onClick:()=>d(p.change.path),children:[e.jsx("span",{className:"git-tree-file-icon","data-kind":Ot(p.name),"aria-hidden":"true",children:Ft(p.name)}),e.jsxs("span",{className:"git-mobile-record-copy",children:[e.jsx("span",{className:"git-mobile-record-title",children:p.name}),e.jsx("span",{className:"git-mobile-record-path",children:p.path})]}),e.jsx("span",{className:"git-status-badge","data-status":p.status,children:p.status})]})]})},r)})}function Ln({rowKey:a,openState:i,onOpenStateChange:u,trailingActions:h,children:d}){const j=Ji(),f=l.useRef(null),[x,b]=l.useState(0),v=((h==null?void 0:h.length)??0)*At;l.useEffect(()=>{i||b(0)},[i,a]);const E=x!==0?x:i==="trailing"?-v:0;function S(m){var y,R;m.button===0&&(f.current={pointerId:m.pointerId,startX:m.clientX},(R=(y=m.currentTarget).setPointerCapture)==null||R.call(y,m.pointerId))}function T(m){const y=f.current;if(!y||y.pointerId!==m.pointerId)return;const R=v>0?v+10:0,C=Math.max(-R,Math.min(0,m.clientX-y.startX));b(C)}function p(m){var R,C;const y=f.current;if(!(!y||y.pointerId!==m.pointerId)){if((C=(R=m.currentTarget).releasePointerCapture)==null||C.call(R,m.pointerId),f.current=null,x<=-44&&(h!=null&&h.length)){j.trigger("gesture"),u("trailing"),b(0);return}u(null),b(0)}}function r(m){var R,C;const y=f.current;!y||y.pointerId!==m.pointerId||((C=(R=m.currentTarget).releasePointerCapture)==null||C.call(R,m.pointerId),f.current=null,b(0))}return e.jsxs("div",{className:"git-mobile-swipe-row","data-open-state":i??"closed","data-dragging":x!==0,children:[h==null?void 0:h.map((m,y)=>e.jsx("button",{type:"button",className:"git-mobile-swipe-action trailing","data-tone":m.tone,style:{right:y*At,width:At},onClick:()=>{j.trigger(m.tone==="danger"?"warning":"action"),u(null),m.onPress()},children:m.label},`trailing-${y}`)),e.jsx("div",{className:"git-mobile-swipe-content",style:{transform:`translateX(${E}px)`},onPointerDown:S,onPointerMove:T,onPointerUp:p,onPointerCancel:r,children:d})]})}function ts({history:a,historyLoadingMore:i,hasMore:u,actioning:h,openCommitHash:d,onMenuTriggerRef:j,onToggleMenu:f,onViewCommitChanges:x,onCopyCommitHash:b,onCopyCommitMessage:v,onCopyCommitVersion:E,onExplainCommitChange:S,onUndoLastCommit:T,onLoadMore:p}){return a.length?e.jsxs("div",{className:"git-mobile-history-list",children:[a.map(r=>e.jsx("article",{className:"git-mobile-history-entry","data-kind":r.commitKind,children:e.jsxs("div",{className:"git-mobile-history-entry-main",children:[e.jsx("span",{className:"git-history-marker","data-kind":r.commitKind,"aria-hidden":"true"}),e.jsxs("div",{className:"git-mobile-history-copy",children:[e.jsxs("div",{className:"git-history-title-row",children:[e.jsx("strong",{title:r.subject,children:r.subject}),e.jsx("span",{className:"git-history-kind-badge","data-kind":r.commitKind,children:Xn(r.commitKind)})]}),r.refs.length>0?e.jsx("div",{className:"git-history-ref-list",children:r.refs.map(m=>e.jsx("span",{className:"git-history-ref-pill","data-kind":m.kind,"data-remote-index":String(qn(m.remoteName)),children:m.name},`${r.commitHash}:${m.kind}:${m.name}`))}):null,e.jsxs("div",{className:"git-history-meta",children:[e.jsx("span",{className:"git-history-hash",children:r.commitHash.slice(0,8)}),e.jsx("span",{children:r.authorName}),e.jsx("time",{dateTime:r.authoredAt,children:Yn(r.authoredAt)})]})]}),e.jsx("button",{type:"button",className:"git-icon-button",ref:m=>j(r.commitHash,m),"aria-label":n("git.historyItemMenu"),onClick:()=>f(r.commitHash),children:e.jsx(Ge,{})})]})},r.commitHash)),u?e.jsx("button",{type:"button",className:"secondary-button git-mobile-history-more",disabled:i,onClick:p,children:i?`${n("git.refreshNow")}...`:n("common.loadMore")}):null]}):e.jsx("p",{className:"git-tree-status",children:n("git.noHistory")})}function _n({history:a,historyLoadingMore:i,hasMore:u,actioning:h,openCommitHash:d,className:j,useNativeContextMenu:f=!1,onMenuTriggerRef:x,onScroll:b,onToggleMenu:v,onOpenContextMenu:E,onViewCommitChanges:S,onCopyCommitHash:T,onCopyCommitMessage:p,onCopyCommitVersion:r,onExplainCommitChange:m,onUndoLastCommit:y,onLoadMore:R}){const C=Un();return a.length?e.jsxs("div",{ref:C,className:["git-history-list",j].filter(Boolean).join(" "),onScroll:b,"data-scrollbar-autohide":"true",children:[a.map(M=>{const _=d===M.commitHash;return e.jsxs("article",{className:"git-history-entry","data-kind":M.commitKind,"data-menu-open":_?"true":"false",onContextMenu:w=>{!f||!E||(w.preventDefault(),w.stopPropagation(),E(M))},children:[e.jsx("span",{className:"git-history-marker","data-kind":M.commitKind,"aria-hidden":"true"}),e.jsxs("div",{className:"git-history-body",children:[e.jsxs("div",{className:"git-history-title-row",children:[e.jsx("strong",{title:M.subject,children:M.subject}),e.jsxs("div",{className:"git-history-title-actions",children:[e.jsx("span",{className:"git-history-kind-badge","data-kind":M.commitKind,children:Xn(M.commitKind)}),f?null:e.jsx("button",{type:"button",className:"git-icon-button git-history-more",ref:w=>x(M.commitHash,w),"aria-label":n("git.historyItemMenu"),onClick:()=>{v(M.commitHash)},children:e.jsx(Ge,{})})]})]}),M.refs.length>0?e.jsx("div",{className:"git-history-ref-list",children:M.refs.map(w=>e.jsx("span",{className:"git-history-ref-pill","data-kind":w.kind,"data-remote-index":String(qn(w.remoteName)),children:w.name},`${M.commitHash}:${w.kind}:${w.name}`))}):null,e.jsxs("div",{className:"git-history-meta",children:[e.jsx("span",{className:"git-history-hash",children:M.commitHash.slice(0,8)}),e.jsx("span",{children:M.authorName}),e.jsx("time",{dateTime:M.authoredAt,children:Yn(M.authoredAt)})]})]})]},M.commitHash)}),i?e.jsxs("p",{className:"git-history-loading",children:[n("git.refreshNow"),"..."]}):null,u?e.jsx("button",{type:"button",className:"secondary-button git-mobile-history-more",disabled:i,onClick:R,children:i?`${n("git.refreshNow")}...`:n("common.loadMore")}):null]}):e.jsx("p",{className:"status-text",children:n("git.noHistory")})}function ns({item:a,canUndo:i,actioning:u,onViewCommitChanges:h,onCopyCommitHash:d,onCopyCommitMessage:j,onCopyCommitVersion:f,onExplainCommitChange:x,onUndoLastCommit:b}){return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"git-menu-item",onClick:()=>h(a.commitHash),children:e.jsx("span",{children:n("git.viewCommitChanges")})}),e.jsx("button",{type:"button",className:"git-menu-item",onClick:()=>d(a.commitHash),children:e.jsx("span",{children:n("git.copyCommitHash")})}),e.jsx("button",{type:"button",className:"git-menu-item",onClick:()=>j(a),children:e.jsx("span",{children:n("git.copyCommitMessage")})}),e.jsx("button",{type:"button",className:"git-menu-item",onClick:()=>f(a.commitHash),children:e.jsx("span",{children:n("git.copyCommitVersion")})}),e.jsx("button",{type:"button",className:"git-menu-item",onClick:()=>x(a.commitHash),children:e.jsx("span",{children:n("git.explainCommitAction")})}),i?e.jsx("button",{type:"button",className:"git-menu-item",disabled:u,onClick:b,children:e.jsx("span",{children:n("git.undoLastCommit")})}):null]})}function Wn({nodes:a,depth:i,collapsedTreePathSet:u,selectedPath:h,onToggleTreePath:d,onSelectFile:j,onPreviewFile:f,onToggleMobileSelection:x,onStageToggle:b,onDiscard:v,actioning:E,variant:S,isMobileViewport:T,selectedMobilePathSet:p}){return a.map(r=>{if(r.kind==="directory"){const R=!u.has(r.path),C=Ut(r.children),M=`${S==="staged"?n("git.unstage"):n("git.stage")} ${r.path}`,_=`${n("git.discard")} ${r.path}`;return e.jsxs("div",{className:"git-tree-node",children:[e.jsxs("div",{className:"git-tree-row",role:"treeitem","aria-expanded":R,children:[e.jsxs("button",{className:"git-tree-trigger",type:"button",style:{paddingInlineStart:`${6+i*8}px`},onClick:()=>d(r.path),children:[e.jsx("span",{className:"git-tree-chevron","data-expanded":R,children:e.jsx(lt,{expanded:R})}),e.jsx("span",{className:"git-tree-label git-tree-label-directory",children:r.name})]}),!T&&C.length>0?e.jsxs("div",{className:"git-row-actions",children:[e.jsx("button",{className:"git-icon-button",type:"button","aria-label":M,title:M,onClick:()=>void b(C,S==="staged"),disabled:E,children:e.jsx($t,{staged:S==="staged"})}),S==="unstaged"?e.jsx("button",{className:"git-icon-button danger",type:"button","aria-label":_,title:_,onClick:()=>void v(C),disabled:E,children:e.jsx(Bt,{})}):null]}):null]}),R?e.jsx("div",{className:"git-tree-children",role:"group",children:Wn({nodes:r.children,depth:i+1,collapsedTreePathSet:u,selectedPath:h,onToggleTreePath:d,onSelectFile:j,onPreviewFile:f,onToggleMobileSelection:x,onStageToggle:b,onDiscard:v,actioning:E,variant:S,isMobileViewport:T,selectedMobilePathSet:p})}):null]},`directory:${r.path}`)}const m=p.has(r.path),y=T?m:h===r.path;return T?e.jsxs("div",{className:"git-tree-row",role:"treeitem","data-active":y,"data-mobile":"true",children:[e.jsx("input",{className:"git-tree-select-checkbox",type:"checkbox",checked:m,"aria-label":`${n("git.selectFile")} ${r.name}`,onChange:()=>x(r.change.path)}),e.jsxs("button",{className:"git-tree-file-button",type:"button","data-active":y,"data-mobile":"true",style:{paddingInlineStart:`${18+i*8}px`},onClick:()=>x(r.change.path),children:[e.jsx("span",{className:"git-tree-file-icon","data-kind":Ot(r.name),"aria-hidden":"true",children:Ft(r.name)}),e.jsx("span",{className:"git-tree-label-wrap",children:e.jsx("span",{className:"git-tree-label",children:r.name})}),e.jsx("span",{className:"git-tree-file-meta",children:e.jsx("span",{className:"git-status-badge","data-status":r.status,children:r.status})})]})]},`file:${r.path}`):e.jsxs("div",{className:"git-tree-row",role:"treeitem","data-active":y,children:[e.jsxs("button",{className:"git-tree-file-button",type:"button","data-active":y,style:{paddingInlineStart:`${18+i*8}px`},onClick:()=>{j(r.change.path),f&&f(r.change.path,r.change)},children:[e.jsx("span",{className:"git-tree-file-icon","data-kind":Ot(r.name),"aria-hidden":"true",children:Ft(r.name)}),e.jsx("span",{className:"git-tree-label-wrap",children:e.jsx("span",{className:"git-tree-label",children:r.name})}),e.jsx("span",{className:"git-tree-file-meta",children:e.jsx("span",{className:"git-status-badge","data-status":r.status,children:r.status})})]}),e.jsxs("div",{className:"git-row-actions",children:[e.jsx("button",{className:"git-icon-button",type:"button","aria-label":r.variant==="staged"?n("git.unstage"):n("git.stage"),title:r.variant==="staged"?n("git.unstage"):n("git.stage"),onClick:()=>void b([r.change.path],r.variant==="staged"),disabled:E,children:e.jsx($t,{staged:r.variant==="staged"})}),S==="unstaged"?e.jsx("button",{className:"git-icon-button danger",type:"button","aria-label":n("git.discard"),title:n("git.discard"),onClick:()=>void v([r.change.path]),disabled:E,children:e.jsx(Bt,{})}):null]})]},`file:${r.path}`)})}function Fn(a,i){return{kind:"directory",name:a,path:i,children:new Map}}function On(a,i){const u=Fn("","");for(const h of a){const d=h.path.replace(/\\/g,"/"),j=d.split("/").filter(Boolean);let f=u;j.forEach((x,b)=>{const v=j.slice(0,b+1).join("/");if(b===j.length-1){f.children.set(`file:${v}`,{kind:"file",name:x,path:d,change:h,status:is(h,i),variant:i});return}const E=`directory:${v}`,S=f.children.get(E);if(S&&S.kind==="directory"){f=S;return}const T=Fn(x,v);f.children.set(E,T),f=T})}return Kn(zn([...u.children.values()]))}function zn(a){return[...a].sort((i,u)=>i.kind!==u.kind?i.kind==="directory"?-1:1:i.name.localeCompare(u.name,"zh-CN")).map(i=>i.kind==="directory"?{kind:"directory",name:i.name,path:i.path,children:zn([...i.children.values()])}:i)}function Kn(a){return a.map(i=>{var f;if(i.kind!=="directory")return i;const u=Kn(i.children);let h=i.name,d=i.path,j=u;for(;j.length===1&&((f=j[0])==null?void 0:f.kind)==="directory";){const x=j[0];h=`${h}/${x.name}`,d=x.path,j=x.children}return{kind:"directory",name:h,path:d,children:j}})}function kn(a,i,u){const h=new Set(a);return i.filter(d=>Gt(d,u)&&h.has(d.path)).map(d=>d.path)}function Ut(a){const i=[],u=new Set;function h(d){if(d.kind==="file"){u.has(d.path)||(u.add(d.path),i.push(d.path));return}d.children.forEach(h)}return a.forEach(h),i}function Gt(a,i){return i==="staged"?!!a.stagedStatus:!!a.worktreeStatus}function is(a,i){return i==="staged"?a.stagedStatus??a.status:a.worktreeStatus??a.status}function ss(a){return{subject:In(a).trim(),body:null,footer:null,source:"manual"}}function In(a){return a.replace(/[\r\n]+/g," ")}function as(a){if(typeof document>"u"||typeof document.execCommand!="function")return!1;const i=document.createElement("textarea");i.value=a,i.setAttribute("readonly","true"),i.style.position="fixed",i.style.top="-9999px",i.style.left="-9999px",i.style.opacity="0",document.body.appendChild(i),i.focus(),i.select();try{return document.execCommand("copy")}catch{return!1}finally{document.body.removeChild(i)}}function me(a){const i=a.subject.trim(),u=a.body.trim();return u?`${i}
|
|
2
|
-
|
|
3
|
-
${u}`:i}function rs(a){const i=a.changedFiles.map(d=>`- [${d.status}] ${d.path}${d.oldPath?` (from ${d.oldPath})`:""}`).join(`
|
|
4
|
-
`),u=a.diffContent.length>Pt?a.diffContent.slice(0,Pt):a.diffContent,h=a.diffContent.length>Pt||a.diffTruncated?`
|
|
5
|
-
注意:diff 内容过长,下面已经截断,只分析可见部分,同时明确指出可能遗漏的区域。`:"";return["请你分析下面这个 Git 提交。","输出要求:","1. 先用 3 到 5 句话说明这次改动的核心目的。","2. 按文件说明关键改动点,不要泛泛而谈。","3. 指出潜在风险、边界情况和可能的回归点。","4. 如果提交信息写得差,给出一条更合适的中文提交说明。","",`版本号:${a.versionLabel}`,`Commit Hash:${a.commitHash}`,`提交标题:${a.subject}`,`提交作者:${a.authorName} <${a.authorEmail}>`,`提交时间:${a.authoredAt}`,"","变更文件:",i||"- 无",h,"","Diff:",u||"(empty diff)"].join(`
|
|
6
|
-
`)}function os(a){if(!a)return;a.style.height="0px";const i=Math.min(Math.max(a.scrollHeight,34),120);a.style.height=`${i}px`,a.style.overflowY=a.scrollHeight>120?"auto":"hidden"}function Xn(a){switch(a){case"local":return n("git.historyKindLocal");case"remote":return n("git.historyKindRemote");default:return n("git.historyKindShared")}}function qn(a){if(!a)return 0;let i=0;for(const u of a)i=i*33+u.charCodeAt(0)>>>0;return i%6}function ls(a){const i=Date.parse(a);return Number.isNaN(i)?a:new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).format(i)}function L(a,i){return a instanceof Bn?us(a)??a.message:typeof a=="object"&&a&&"message"in a?a.message:i}function ke(a){return`git-sidebar.snapshot.${a}`}function Lt(a){return a?!!(a.status||a.branches||a.history.length>0||a.historyTotalCount>0||a.historyNextCursor||a.revision):!1}function cs(a){return a?a.snapshot.enabled!==!1:!0}function us(a){switch(a.errorCode){case"UNAUTHORIZED":return n("git.errors.unauthorized");case"WORKSPACE_NOT_FOUND":return n("git.errors.workspaceNotFound");case"INVALID_WORKSPACE":return n("git.errors.invalidWorkspace");case"NOT_GIT_REPOSITORY":return n("git.errors.notGitRepository");case"GIT_REPO_NOT_FOUND":return n("git.errors.repoNotFound");case"PATH_OUT_OF_WORKSPACE":return n("git.errors.pathOutOfWorkspace");case"INVALID_TARGET":return n("git.errors.invalidTarget");case"NOT_STAGED":return n("git.errors.notStaged");case"EMPTY_STAGED_CHANGES":return n("git.errors.emptyStagedChanges");case"BRANCH_CONFLICT":return n("git.errors.branchConflict");case"BRANCH_NOT_FOUND":return n("git.errors.branchNotFound");case"REMOTE_NOT_FOUND":return n("git.errors.remoteNotFound");case"GIT_REMOTE_AUTH_FAILED":return n("git.errors.remoteAuthFailed");case"GIT_PUSH_FAILED":return n("git.errors.pushFailed");case"GIT_PULL_FAILED":return n("git.errors.pullFailed");case"GIT_REMOTE_FAILED":return n("git.errors.remoteFailed");case"GIT_COMMAND_TIMEOUT":return n("git.errors.commandTimeout");case"GIT_INIT_FAILED":return n("git.errors.initFailed");case"GIT_DISCARD_FAILED":return n("git.discardFailed");case"GIT_UNDO_FAILED":return n("git.undoLastCommitFailed");default:return null}}function Gn(a){return a instanceof Bn&&a.errorCode==="GIT_REMOTE_AUTH_FAILED"}function ds(a){return!a||!a.mode||a.mode==="none"?ot:a.mode==="basic"?{authMode:"basic",username:a.username??"",password:a.password??"",token:"",rememberOnHost:!1}:a.mode==="token"?{authMode:"token",username:a.username??"",password:"",token:a.token??"",rememberOnHost:!1}:ot}function ms(a){return a.authMode==="none"?null:a.authMode==="basic"?{mode:"basic",username:a.username.trim(),password:a.password}:{mode:"token",username:a.username.trim()||void 0,token:a.token}}function hs(a,i){const u=a.find(d=>d.name===i)??a.find(d=>d.name==="origin")??a[0];if(!u)return"generic";const h=u.pushUrl||u.fetchUrl;return gs(h)?"github":"generic"}function gs(a){const i=(a==null?void 0:a.trim().toLowerCase())??"";return i.startsWith("https://github.com/")||i.startsWith("http://github.com/")||i.startsWith("ssh://git@github.com/")||i.startsWith("git@github.com:")}function $n(a,i,u){const h=Math.max(0,u.width),d=Math.max(0,u.height),j=Math.max(0,d-F*2),f=Math.max(0,h-F*2),x=Math.min(Math.max(i.width||kt,0),f),b=Math.max(0,d-a.bottom-rt-F),v=Math.max(0,a.top-rt-F),E=b<i.height&&v>b,T=_t(Math.max(E?v:b,es),0,j),p=Math.min(Math.max(i.height,0),T),r=E?a.top-rt-p:a.bottom+rt,m=Math.max(F,d-F-p),y=Math.max(F,h-F-x);return{top:_t(r,F,m),left:_t(a.right-x,F,y),maxHeight:Math.max(0,T),transformOrigin:`${E?"bottom":"top"} right`}}function _t(a,i,u){return!Number.isFinite(a)||u<i?i:Math.min(Math.max(a,i),u)}function lt({expanded:a}){return e.jsx("svg",{className:"git-chevron-icon",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",style:{transform:a?"rotate(0deg)":"rotate(-90deg)"},"aria-hidden":"true",children:e.jsx("polyline",{points:"6 9 12 15 18 9"})})}function $t({staged:a}){return a?e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:e.jsx("path",{d:"M5 12h14"})}):e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:[e.jsx("path",{d:"M12 5v14"}),e.jsx("path",{d:"M5 12h14"})]})}function Bt(){return e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:[e.jsx("path",{d:"M10 7L6 11l4 4",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M7 11h7c3.87 0 7 3.13 7 7 0 1.9-.76 3.63-2 4.89",strokeLinecap:"round",strokeLinejoin:"round"})]})}function fs(){return e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:e.jsx("path",{d:"M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9L12 3z"})})}function Ge(){return e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:[e.jsx("circle",{cx:"5",cy:"12",r:"1.8"}),e.jsx("circle",{cx:"12",cy:"12",r:"1.8"}),e.jsx("circle",{cx:"19",cy:"12",r:"1.8"})]})}function Yn(a){try{return new Intl.DateTimeFormat("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(a))}catch{return a}}export{Ms as GitSidebar,$n as resolveGitOperationsMenuPosition};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as h,j as e,t as a}from"./index-DSw-TkQL.js";import{g as ve,u as ye}from"./App-B9HcTkMT.js";import{e as je,a as be}from"./model-switch-api-C-l8-E1S.js";import{D as ue,E as Ne,F as ke,G as Me,H as Ee,I as xe,J as Ae,K as Ce,u as Pe,L as Ie,M as De,N as he,g as Le,O as ie,P as oe,Q as Te,n as Re,c as Ge}from"./WorkbenchLayout-DlbgBT3n.js";import{f as Oe,a as me,M as We}from"./MobileWorkspaceSwitcherHeader-CuGJ31kb.js";import{M as $e}from"./MobileCreateSessionSheet-Cb2HM-y3.js";import{w as pe}from"./styles-DRVvx_kv.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./WorkbenchModal-LNfB69qx.js";import"./relay-entry-BmLkMKuq.js";import"./MobileTopHeaderFrame-etF2HKlm.js";const Be=420,Fe=156;function He({entry:n,isFavorite:t,isActive:r=!1,depth:d=0,variant:l="default",workspaceTone:N="root",hasSubsessions:m=!1,subsessionsExpanded:k=!1,showActions:z=!0,onActivate:J,onToggleSubsessions:$,onToggleFavorite:ae,onArchive:B,onUnarchive:re,onRename:u}){var C;const[g,L]=h.useState(!1),[T,R]=h.useState(null),[w,F]=h.useState(null),M=h.useRef(null),G=h.useRef(!1),O=h.useRef(null),H=je(),{session:c,workspace:le}=n,V=c.title??c.sessionId,Q=be(c.provider),_=[Q,Ve(c.lastMessageAt??c.updatedAt??null),ue(c)].filter(Boolean).join(" · "),K=Ke(c),U=K?Ue(K):null,W=l==="mobile"?null:ue(c),X=W?Ne("session-list-activity-badge",c):null,E=l!=="mobile",Z=E?ke(c.parallelGroup):null,q=E?Me(c.parallelGroup):null,ce=E?Ee(c.parallelGroup):void 0;h.useEffect(()=>()=>{A()},[]),h.useLayoutEffect(()=>{if(!g||!w||typeof window>"u"){R(null);return}const i=()=>{var P,I;const f=Ae(w,{width:((P=O.current)==null?void 0:P.offsetWidth)??0,height:((I=O.current)==null?void 0:I.offsetHeight)??0},{width:window.innerWidth,height:window.innerHeight},{estimatedHeightPx:Fe});R({position:"fixed",left:`${Math.round(f.left)}px`,top:`${Math.round(f.top)}px`,width:`${Math.round(f.width)}px`,maxWidth:"calc(100vw - 24px)",maxHeight:`${Math.round(f.maxHeight)}px`,transformOrigin:f.transformOrigin})},S=f=>{var I;const P=f.target;P&&!((I=O.current)!=null&&I.contains(P))&&y()},ne=f=>{f.key==="Escape"&&y()};return i(),window.addEventListener("pointerdown",S),window.addEventListener("keydown",ne),window.addEventListener("resize",i),window.addEventListener("scroll",i,!0),()=>{window.removeEventListener("pointerdown",S),window.removeEventListener("keydown",ne),window.removeEventListener("resize",i),window.removeEventListener("scroll",i,!0)}},[w,g]);function Y(i){F(i),L(!0)}function y(){L(!1),F(null)}function A(){M.current!==null&&(window.clearTimeout(M.current),M.current=null)}function ee(i){if(!z||i.pointerType==="mouse")return;const S={x:i.clientX,y:i.clientY};A(),M.current=window.setTimeout(()=>{G.current=!0,H.trigger("gesture"),Y(S)},Be)}function s(){A()}function o(){if(G.current){G.current=!1;return}H.trigger("selection"),J(c.sessionId)}const p=async()=>{const i=window.prompt(a("shell.renameModalDescription"),V);i&&(await u(c.sessionId,i.trim()),y())},v=async()=>{if(c.isArchived){await re(c.sessionId),y();return}await B(c.sessionId),y()},j=()=>{ae(c.sessionId),y()},x=i=>{if(i.key!=="ContextMenu"&&!(i.shiftKey&&i.key==="F10"))return;i.preventDefault(),i.stopPropagation();const S=i.currentTarget.getBoundingClientRect();Y({x:S.right,y:S.bottom})},se=g&&typeof document<"u"?ve.createPortal(e.jsxs("div",{ref:O,className:"session-action-menu surface-card",role:"menu","aria-label":a("shell.sessionMoreAction"),style:T??{position:"fixed",top:0,left:0,visibility:"hidden"},onClick:i=>i.stopPropagation(),children:[e.jsx("button",{type:"button",className:"session-action-menu-item",role:"menuitem",onClick:j,children:t?a("shell.unfavoriteAction"):a("shell.favoriteAction")}),e.jsx("button",{type:"button",className:"session-action-menu-item",role:"menuitem",onClick:()=>void v(),children:c.isArchived?a("shell.unarchiveAction"):a("shell.archiveAction")}),e.jsx("button",{type:"button",className:"session-action-menu-item",role:"menuitem",onClick:()=>void p(),children:a("shell.renameAction")})]}),document.body):null;return e.jsxs("article",{className:"session-list-item","data-depth":d,"data-active":r,"data-workspace-tone":N,"data-has-subsessions":m,"data-variant":l,"data-parallel-group":E&&c.parallelGroup?"true":void 0,"data-parallel-role":E?((C=c.parallelGroup)==null?void 0:C.role)??void 0:void 0,style:ce,onContextMenu:i=>{z&&(i.preventDefault(),i.stopPropagation(),Y({x:i.clientX,y:i.clientY}))},children:[m?e.jsx("button",{type:"button",className:"session-list-subsession-toggle","aria-label":k?a("shell.subagentCollapse"):a("shell.subagentExpand"),title:k?a("shell.subagentCollapse"):a("shell.subagentExpand"),"aria-expanded":k,onClick:i=>{i.stopPropagation(),H.trigger("selection"),$==null||$()},children:e.jsx("span",{className:fe(c,{isActive:r,hasSubsessions:m}),"aria-hidden":"true"})}):e.jsx("span",{className:fe(c,{isActive:r,hasSubsessions:m}),"aria-hidden":"true"}),e.jsx("button",{type:"button",className:"session-list-link",onClick:o,onPointerDown:ee,onPointerUp:s,onPointerCancel:s,onPointerLeave:s,onKeyDown:x,children:e.jsxs("div",{className:"session-list-copy",children:[e.jsxs("div",{className:"session-list-title-row",children:[e.jsx("div",{className:"session-list-title",children:V||a("shell.searchEntry")}),Z?e.jsx("span",{className:"session-list-parallel-badge",children:Z}):null,q?e.jsx("span",{className:"session-list-parallel-role-badge",children:q}):null]}),e.jsx("div",{className:"session-list-meta",children:l==="mobile"?e.jsx(e.Fragment,{children:e.jsx("span",{children:_})}):e.jsxs(e.Fragment,{children:[e.jsx("span",{children:le.name}),W&&X?e.jsxs(e.Fragment,{children:[e.jsx("span",{"aria-hidden":"true",children:"·"}),e.jsx("span",{className:X,children:W})]}):null,e.jsx("span",{"aria-hidden":"true",children:"·"}),e.jsx("span",{children:Q})]})}),U?e.jsx("div",{className:"session-list-error",title:K??void 0,children:U}):null]})}),se]})}function fe(n,t){return Ce("session-list-indicator",n,{isActive:t.isActive,hasSubagents:t.hasSubsessions})}function Ve(n){return n?new Date(n).toLocaleString(void 0,{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"}):a("common.unknown")}function _e(n){return xe(n)||n.syncStatus==="error"}function Ke(n){var d,l;if(!_e(n))return null;const t=((d=n.lastErrorCode)==null?void 0:d.trim())??"",r=((l=n.lastErrorDetail)==null?void 0:l.replace(/\s+/g," ").trim())??"";return t&&r&&!r.includes(t)?`${t} · ${r}`:r||t||(n.syncStatus==="error"&&!xe(n)?a("conversation.syncStatusError"):a("conversation.runtimeErrorTitle"))}function Ue(n,t=96){return n.length<=t?n:`${n.slice(0,Math.max(0,t-1)).trimEnd()}…`}const te=5;function us(){var ee;const n=ye(),{navigationGroups:t,favoriteSessionIds:r,currentWorkspaceId:d,currentSessionId:l,navigationLoading:N,selectWorkspace:m,toggleFavoriteSession:k,archiveSession:z,unarchiveSession:J,renameSession:$,startDraftSession:ae}=Pe(),B=Oe(t),re=h.useMemo(()=>Ie(t),[t]),u=me(t,d)??me(t,((ee=t[0])==null?void 0:ee.workspace.id)??null),g=B.find(s=>s.workspace.id===(u==null?void 0:u.workspace.id))??(u?{workspace:u.workspace,label:u.workspace.name,subtitle:u.workspace.path}:null),L=h.useMemo(()=>new Set(r),[r]),T=h.useMemo(()=>u?u.sessions.filter(s=>{if(s.isArchived)return!1;const o=De(s,{mode:"mobile"});if(!o)return!0;const p=u.sessions.find(v=>v.sessionId===o);return!p||!p.isArchived}).map(s=>({session:s,workspace:u.workspace})):[],[u]),R=h.useMemo(()=>T.filter(s=>L.has(s.session.sessionId)),[T,L]),w=h.useMemo(()=>he(T,{mode:"mobile"}),[T]),F=h.useMemo(()=>he(R,{mode:"mobile"}),[R]),M=h.useMemo(()=>u?u.sessions.filter(s=>s.isArchived===!0&&!Le(s)):[],[u]),G=(u==null?void 0:u.workspace.id)??"",O=!!G,[H,c]=h.useState([]),[le,V]=h.useState({}),[Q,_]=h.useState(!1),[K,U]=h.useState(!1),[W,X]=h.useState(null);h.useEffect(()=>{V(s=>{const o={};for(const p of w){const v=ie(oe(p));if(v.length===0)continue;const j=v.findIndex(x=>x.item.session.sessionId===l);o[p.item.session.sessionId]=Qe(v.length,te,s[p.item.session.sessionId],j)}return Ze(s,o)?s:o})},[l,w]),h.useEffect(()=>{if(!l)return;const s=Te(w,l,o=>o.session.sessionId);s.length!==0&&c(o=>{const p=new Set(o);let v=!1;for(const j of s)p.has(j)||(p.add(j),v=!0);return v?Array.from(p):o})},[l,w]);function E(s){c(o=>o.includes(s)?o.filter(p=>p!==s):[...o,s])}function Z(s){return le[s]??te}function q(s){V(o=>({...o,[s]:(o[s]??te)+te}))}function ce(s,o){pe("immersive"),n(Ge(s,o))}function Y(s,o){_(!1),pe("immersive"),ae(s,o)}async function y(s){X(s);try{await J(s)}finally{X(o=>o===s?null:o)}}function A(s,o=!1,p=[],v=!1,j=!1){var de;const x=s.item.session.sessionId,se=s.children,C=s.depth===0&&se.length>0,i=o||C&&H.includes(x),S=i&&C,ne=S?Je(s,Z(x)):s,f=i?ne.children:[],P=ie(se).length,I=ie(f).length,we=S&&I<P,Se=s.depth>0?[...p,v]:[...p];return e.jsxs("div",{className:"session-list-tree-node",children:[e.jsxs("div",{className:"session-list-tree-row",style:{"--session-tree-depth":s.depth},children:[s.depth>0?e.jsxs("div",{className:"session-tree-guides","aria-hidden":"true",style:{"--session-tree-depth":s.depth},children:[p.map((b,D)=>b?e.jsx("span",{className:"session-tree-guide-column",style:{"--session-tree-level":D+1}},`${x}:ancestor:${D}`):null),e.jsx("span",{className:"session-tree-guide-branch","data-continue":v,"data-first":j,style:{"--session-tree-level":s.depth},children:e.jsx("span",{className:"session-tree-guide-branch-horizontal"})})]}):null,e.jsx(He,{entry:s.item,isFavorite:L.has(x),isActive:l===x,depth:s.depth,variant:"mobile",workspaceTone:((de=re[s.item.workspace.id])==null?void 0:de.tone)??"root",hasSubsessions:C,subsessionsExpanded:i,onActivate:b=>ce(s.item.workspace.id,b),onToggleSubsessions:C?()=>E(x):void 0,onToggleFavorite:b=>{k(b)},onArchive:b=>z(b),onUnarchive:b=>J(b),onRename:(b,D)=>$(b,D)})]}),i&&f.length>0?e.jsx("div",{className:"session-list-children",children:f.map((b,D)=>A(b,!0,Se,D<f.length-1,D===0))}):null,we?e.jsx("div",{className:"session-list-children",children:e.jsx("button",{type:"button",className:"secondary-button",onClick:()=>q(x),children:a("shell.subagentExpandMore")})}):null]},`${s.item.workspace.id}:${x}`)}return e.jsxs("main",{className:"session-index-page mobile-feature-page mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(We,{currentWorkspace:g?{id:g.workspace.id,name:g.label,path:g.subtitle}:null,workspaces:t.map(s=>s.workspace),workspaceOptions:B,onSelectWorkspace:s=>{m(s),n(Re(s))},content:e.jsx("button",{type:"button",className:"primary-button mobile-session-index-create-button",disabled:N||!O,onClick:()=>_(!0),children:a("shell.createSession")})}),e.jsxs("div",{className:"mobile-page-top-body",children:[e.jsx("div",{className:"session-index-archive-actions",children:e.jsxs("button",{type:"button",className:"primary-button mobile-session-index-create-button session-index-archive-button",disabled:N||!u,onClick:()=>U(!0),children:[e.jsx("span",{children:a("shell.archiveViewAction")}),e.jsx("span",{className:"session-index-archive-count",children:M.length})]})}),F.length>0?e.jsxs("section",{className:"session-section session-section-sheet",children:[e.jsxs("header",{className:"session-section-heading",children:[e.jsx("div",{children:e.jsx("h2",{children:a("shell.favoriteSectionTitle")})}),e.jsx("span",{className:"session-section-count",children:R.length})]}),e.jsx("div",{className:"session-current-workspace-list",children:F.map(s=>A(s))})]}):null,e.jsxs("section",{className:"session-section session-section-sheet",children:[e.jsxs("header",{className:"session-section-heading",children:[e.jsx("div",{children:e.jsx("h2",{children:a("shell.mobileConversationCurrentWorkspaceSection")})}),e.jsx("span",{className:"session-section-count",children:w.length})]}),w.length===0?e.jsx("p",{className:"session-section-empty",children:N?a("shell.searchSessionHint"):a("shell.emptyWorkspaceSessions")}):e.jsx("div",{className:"session-current-workspace-list",children:w.map(s=>A(s))})]})]}),e.jsx($e,{open:Q,workspaces:t.map(s=>s.workspace),workspaceOptions:B,initialWorkspaceId:d??G,onClose:()=>_(!1),onSelect:Y}),e.jsx(Xe,{open:K,workspaceName:(g==null?void 0:g.label)??(u==null?void 0:u.workspace.name)??null,sessions:M,restoringSessionId:W,onClose:()=>{W||U(!1)},onRestore:s=>void y(s)})]})}function Xe({open:n,workspaceName:t,sessions:r,restoringSessionId:d,onClose:l,onRestore:N}){return h.useEffect(()=>{if(!n)return;function m(k){k.key==="Escape"&&!d&&l()}return window.addEventListener("keydown",m),()=>{window.removeEventListener("keydown",m)}},[l,n,d]),!n||typeof document>"u"?null:ve.createPortal(e.jsxs("div",{className:"workbench-modal-layer",children:[e.jsx("button",{type:"button",className:"workbench-modal-backdrop","aria-label":a("common.close"),disabled:!!d,onClick:l}),e.jsxs("section",{className:"workbench-modal-card surface-card",role:"dialog","aria-modal":"true","aria-label":a("shell.archiveModalTitle"),children:[e.jsx("div",{className:"workbench-modal-header",children:e.jsxs("div",{className:"workbench-modal-title-wrap",children:[e.jsx("h2",{children:a("shell.archiveModalTitle")}),e.jsx("p",{children:t?`${t} · ${a("shell.archiveModalDescription")}`:a("shell.archiveModalDescription")})]})}),e.jsx("div",{className:"workbench-modal-body",children:r.length>0?e.jsx("div",{className:"workbench-archive-list",children:r.map(m=>e.jsxs("article",{className:"workbench-archive-item",children:[e.jsxs("div",{className:"workbench-archive-item-main",children:[e.jsx("strong",{title:m.title??m.sessionId,children:m.title??m.sessionId}),e.jsx("p",{children:Ye(m)})]}),e.jsx("button",{type:"button",className:"secondary-button",disabled:d===m.sessionId,onClick:()=>{N(m.sessionId)},children:a("shell.unarchiveAction")})]},m.sessionId))}):e.jsx("p",{className:"workbench-section-empty",children:a("shell.archiveEmpty")})})]})]}),document.body)}function Ye(n){const t=be(n.provider),r=ze(n.lastMessageAt??n.updatedAt??null);return[t,r].filter(Boolean).join(" · ")}function ze(n){if(!n)return null;const t=Date.parse(n);return Number.isNaN(t)?null:new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(t)}function Je(n,t){const r=new Set(ie(oe(n)).sort((d,l)=>(l.item.session.lastMessageAt??l.item.session.updatedAt).localeCompare(d.item.session.lastMessageAt??d.item.session.updatedAt)).slice(0,t).map(d=>d.item.session.sessionId));return{...n,children:ge(oe(n),r)}}function ge(n,t){return n.flatMap(r=>{const d=ge(oe(r),t);return!t.has(r.item.session.sessionId)&&d.length===0?[]:[{...r,children:d}]})}function Qe(n,t,r,d=-1){if(n<=0)return 0;const l=d>=0?Math.max(t,d+1):t;return Math.min(n,Math.max(r??0,l))}function Ze(n,t){const r=Object.keys(n),d=Object.keys(t);return r.length!==d.length?!1:r.every(l=>n[l]===t[l])}export{us as SessionIndexPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as o,j as e,t as s,C as I,c as ve,e as Z,w as Ye,A as oe,Q as ie,S as ts,T as ht,U as Le,V as pt,W as Ze,h as bt,f as ft,X as Ee,q as vt,n as xt,d as Re,m as jt}from"./index-DSw-TkQL.js";import{g as yt,i as ns,k as Nt,l as wt,n as St,o as Tt,e as De,f as Ct,p as kt,u as Es,j as Dt,c as Mt,L as Rs,T as As,q as Us}from"./App-B9HcTkMT.js";import{q as as,al as Pt,af as Is,f as le,V as is,k as be,v as X,M as Qe,A as Lt,am as Et,l as Rt,m as At,h as fe,i as Os,j as Ut,u as ue,an as ge}from"./model-switch-api-C-l8-E1S.js";import{M as It,W as re,D as Fs}from"./WorkbenchModal-LNfB69qx.js";import{M as Ot}from"./MobileTopHeaderFrame-etF2HKlm.js";const ls=2e4,Ft=1e3,Bt=5e3;function Vt({isOpen:t,onClose:a}){const[n,i]=o.useState(null),[r,d]=o.useState(null),[y,x]=o.useState(!1),[b,P]=o.useState(!1),[p,w]=o.useState(null),D=o.useRef(null);if(o.useEffect(()=>{if(!t)return;let g=!1;async function m(){x(!0),w(null),d(null);try{const j=await I.request("/api/observability/runtime/session",{method:"POST",body:JSON.stringify({ttlMs:ls})});if(g){await Ae(j.sessionId);return}D.current=j.sessionId,i(j);const M=await rs(j.sessionId);if(g){await Ae(j.sessionId);return}d(M)}catch(j){g||w(Ue(j))}finally{g||x(!1)}}return m(),()=>{g=!0;const j=D.current;D.current=null,i(null),d(null),x(!1),P(!1),w(null),j&&Ae(j)}},[t]),o.useEffect(()=>{const g=(n==null?void 0:n.sessionId)??null;if(!t||!g)return;const m=g;let j=!1;async function M(){P(!0);try{const l=await rs(m);j||(d(l),w(null))}catch(l){j||w(Ue(l))}finally{j||P(!1)}}const f=window.setInterval(()=>{M()},Ft);return()=>{j=!0,window.clearInterval(f)}},[t,n==null?void 0:n.sessionId]),o.useEffect(()=>{const g=(n==null?void 0:n.sessionId)??null;if(!t||!g)return;const m=g;let j=!1;async function M(){try{const l=await I.request(`/api/observability/runtime/session/${m}/heartbeat`,{method:"POST",body:JSON.stringify({ttlMs:ls})});j||i(l)}catch(l){j||w(Ue(l))}}const f=window.setInterval(()=>{M()},Bt);return()=>{j=!0,window.clearInterval(f)}},[t,n==null?void 0:n.sessionId]),!t||typeof document>"u")return null;const v=Object.entries((r==null?void 0:r.backgroundTasks.taskTypes)??{}),L=Object.entries((r==null?void 0:r.schedulers.schedulers)??{}),N=Object.entries((r==null?void 0:r.backgroundTasks.totals)??{});return yt.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(It,{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:Ie(r==null?void 0:r.observedAt)})]}),e.jsxs("div",{className:"parallel-task-debug-meta-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugSessionExpireAt")}),e.jsx("strong",{children:Ie(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:Ht((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:r!=null&&r.eventLoop.enabled?s("settings.parallelTaskDebugCollectorEnabled"):s("settings.parallelTaskDebugCollectorDisabled")})]})]}),y?e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugLoading")}):null,!y&&p?e.jsx("div",{className:"parallel-task-debug-error",children:p}):null,!y&&!p&&r?e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugCountersTitle")}),e.jsx("span",{children:b?s("common.loading"):s("settings.parallelTaskDebugAutoRefresh")})]}),e.jsx("div",{className:"parallel-task-debug-counter-grid",children:N.map(([g,m])=>e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:qt(g)}),e.jsx("strong",{children:m})]},g))})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugTaskMetricsTitle")}),e.jsx("span",{children:v.length})]}),v.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:v.map(([g,m])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:g}),e.jsx("span",{children:os(m.executionLane)})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitAvg"),": ",K(m.waitMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunAvg"),": ",K(m.runMs.avg)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMax"),": ",K(m.runMs.max)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugStartedCount"),": ",m.counters.started??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFinishedCount"),": ",m.counters.finished??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugFailedCount"),": ",m.counters.failed??0]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugCacheHitCount"),": ",m.counters.cache_hit??0]})]})]},g))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugSchedulerTitle")}),e.jsx("span",{children:L.length})]}),L.length>0?e.jsx("div",{className:"parallel-task-debug-grid",children:L.map(([g,m])=>e.jsxs("article",{className:"parallel-task-debug-panel",children:[e.jsxs("div",{className:"parallel-task-debug-panel-header",children:[e.jsx("strong",{children:g}),e.jsx("span",{children:m.lastIdle?s("settings.parallelTaskDebugIdle"):s("settings.parallelTaskDebugBusy")})]}),e.jsxs("div",{className:"parallel-task-debug-panel-body",children:[e.jsxs("span",{children:[s("settings.parallelTaskDebugTickTotal"),": ",m.tickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugIdleTickTotal"),": ",m.idleTickTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugTaskCountTotal"),": ",m.taskCountTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSchedulerErrorTotal"),": ",m.errorTotal]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugLastDuration"),": ",K(m.lastDurationMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugNextDelay"),": ",K(m.nextDelayMs)]})]})]},g))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]}),e.jsxs("section",{className:"parallel-task-debug-section",children:[e.jsxs("div",{className:"parallel-task-debug-section-header",children:[e.jsx("h3",{children:s("settings.parallelTaskDebugEventLoopTitle")}),e.jsx("span",{children:r.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:K(r.eventLoop.resolutionMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMean")}),e.jsx("strong",{children:K(r.eventLoop.meanMs)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP95")}),e.jsx("strong",{children:K(r.eventLoop.p95Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopP99")}),e.jsx("strong",{children:K(r.eventLoop.p99Ms)})]}),e.jsxs("div",{className:"parallel-task-debug-counter-card",children:[e.jsx("span",{children:s("settings.parallelTaskDebugEventLoopMax")}),e.jsx("strong",{children:K(r.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:r.recentTaskActivities.length})]}),r.recentTaskActivities.length>0?e.jsx("div",{className:"parallel-task-debug-activity-list",children:r.recentTaskActivities.map(g=>e.jsxs("article",{className:"parallel-task-debug-activity-item",children:[e.jsxs("div",{className:"parallel-task-debug-activity-main",children:[e.jsxs("div",{className:"parallel-task-debug-activity-title-row",children:[e.jsx("strong",{children:g.taskType}),e.jsx("span",{children:_t(g.eventType)}),e.jsx("span",{children:os(g.executionLane)})]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugTaskKey"),": ",g.key]}),e.jsxs("p",{children:[s("settings.parallelTaskDebugStatus"),": ",g.status?zt(g.status):"-"]})]}),e.jsxs("div",{className:"parallel-task-debug-activity-meta",children:[e.jsx("span",{children:Ie(g.recordedAt)}),e.jsxs("span",{children:[s("settings.parallelTaskDebugAttempt"),": ",g.attempt??"-"]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugWaitMs"),": ",K(g.waitMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugRunMs"),": ",K(g.runMs)]}),e.jsxs("span",{children:[s("settings.parallelTaskDebugSource"),": ",g.source??"-"]}),g.errorMessage?e.jsxs("span",{children:[s("settings.parallelTaskDebugError"),": ",g.errorMessage]}):null]})]},g.eventId))}):e.jsx("div",{className:"parallel-task-debug-empty",children:s("settings.parallelTaskDebugEmpty")})]})]}):null]})]})]}),document.body)}async function rs(t){return await I.request(`/api/observability/runtime?sessionId=${encodeURIComponent(t)}`)}async function Ae(t){try{await I.request(`/api/observability/runtime/session/${t}`,{method:"DELETE"})}catch{}}function Ue(t){return t instanceof Error&&t.message?t.message:s("settings.parallelTaskDebugLoadFailed")}function Ie(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString()}function K(t){return t==null||Number.isNaN(t)?"-":`${Math.round(t*100)/100} ms`}function Ht(t){return t===null||Number.isNaN(t)?"-":`${Math.round(t/1e3)} s`}function qt(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 os(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 _t(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 zt(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 cs(){const t=ve(),a=Z.getState(),n=await t.bridge.getAndroidRuntimeInfo();if(!n.ok||!n.value)throw new Error(n.detail??"读取 Android 运行时信息失败。");const i=await I.request(`/api/client/release-manifest?channel=${encodeURIComponent(a.releaseChannel)}&platform=android-apk`),r=i.versionCode>n.value.versionCode;return{checkedAt:new Date().toISOString(),currentVersion:n.value.version,currentVersionCode:n.value.versionCode,hasUpdate:r,manifest:i,runtimeInfo:n.value}}async function $t(t){return ve().bridge.installAndroidUpdate(t)}function Wt(){const[t,a]=o.useState(!1),[n,i]=o.useState(!1),[r,d]=o.useState(null),[y,x]=o.useState(null),[b,P]=o.useState(null),[p,w]=o.useState(!1),[D,v]=o.useState(null),L=o.useRef(!1);o.useEffect(()=>{if(D===null){L.current=!1;return}const m=D;async function j(){if(!L.current){L.current=!0;try{const l=await cs();if(P(l.manifest),x(l.currentVersion),w(l.hasUpdate),!l.hasUpdate||l.currentVersionCode>=m){d(s("settings.androidInstallSucceeded"));return}d(s("settings.androidInstallCancelled"))}catch(l){d(l instanceof Error?l.message:s("settings.releaseCheckFailed"))}finally{v(null)}}}function M(){j()}function f(){document.visibilityState==="visible"&&j()}return window.addEventListener("focus",M),document.addEventListener("visibilitychange",f),()=>{window.removeEventListener("focus",M),document.removeEventListener("visibilitychange",f)}},[D]);async function N(){a(!0),d(null),v(null);try{const m=await cs();P(m.manifest),x(m.currentVersion),w(m.hasUpdate),d(m.hasUpdate?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate"))}catch(m){d(m instanceof Error?m.message:s("settings.releaseCheckFailed"))}finally{a(!1)}}async function g(){if(b){i(!0),d(null),v(null);try{const m=await $t(b);if(m.status==="installer_started"){d(s("settings.androidInstallerStarted")),v(b.versionCode);return}if(m.status==="permission_required"){d(m.detail??s("settings.androidInstallPermissionRequired")),v(null);return}if(m.status==="already_up_to_date"){d(s("settings.releaseUpToDate")),w(!1),v(null);return}d(m.detail??s("settings.releaseInstallFailed")),v(null)}catch(m){d(m instanceof Error?m.message:s("settings.releaseInstallFailed")),v(null)}finally{i(!1)}}}return e.jsxs("div",{className:"settings-update-card",children:[e.jsxs("div",{className:"settings-update-summary",children:[e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseCurrentVersion")}),e.jsx("strong",{className:"settings-update-value",children:y??s("settings.releaseUnknownVersion")})]}),e.jsxs("div",{className:"settings-update-field",children:[e.jsx("span",{className:"settings-update-label",children:s("settings.releaseTargetVersion")}),e.jsx("strong",{className:"settings-update-value",children:(b==null?void 0:b.version)??"-"})]})]}),r?e.jsx("p",{className:"settings-update-status","data-tone":p?"warning":"success",children:r}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:t||n,onClick:N,children:t?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!b||!p||n,onClick:g,children:n?s("common.loading"):s("settings.releaseInstallNow")})]})]})}function Kt(){const t=ve(),a=t.isDesktop,[n,i]=o.useState(!1),[r,d]=o.useState(!1),[y,x]=o.useState(!1),[b,P]=o.useState(null),[p,w]=o.useState(null),D=ns(T=>T.latestState),v=ns(T=>T.pendingRestartVersion),L=(D==null?void 0:D.currentVersion)??null,N=(D==null?void 0:D.manifest)??null,g=(D==null?void 0:D.hasUpdate)??!1,m=!!v,j=m&&p!==v;async function M(){if(!m){i(!0),P(null);try{const T=await Nt({notify:"always"});P(ds(T.manifest,T.hasUpdate))}catch(T){P(T instanceof Error?T.message:s("settings.releaseCheckFailed"))}finally{i(!1)}}}async function f(){if(!(!N||!g||m)){d(!0),P(null);try{const T=await wt();if(!T.ok){P(T.detail??s("settings.releaseInstallFailed"));return}St(N.version),w(null),P(s("settings.releaseRestartRequired"))}catch(T){P(T instanceof Error?T.message:s("settings.releaseInstallFailed"))}finally{d(!1)}}}async function l(){if(N!=null&&N.htmlUrl){x(!0);try{const T=await t.bridge.openExternal(N.htmlUrl);T.ok||P(T.detail??s("settings.releasePageOpenFailed"))}catch(T){P(T instanceof Error?T.message:s("settings.releasePageOpenFailed"))}finally{x(!1)}}}const u=!!(a&&N&&g&&!m),S=b??(a?m?s("settings.releaseRestartRequired"):D?ds(D.manifest,D.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:L??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:(N==null?void 0:N.version)??v??"-"})]})]}),S?e.jsx("p",{className:"settings-update-status","data-tone":Jt(N,g,S,m),children:S}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:!a||n||r||m,onClick:M,children:n?s("common.loading"):s("settings.releaseCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!u||r,onClick:f,children:r?s("common.loading"):s("settings.releaseInstallNow")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:!(N!=null&&N.htmlUrl)||n||r||y,onClick:l,children:y?s("common.loading"):s("settings.releaseOpenPage")})]})]}),e.jsx(Gt,{open:j,version:v,onClose:()=>w(v)})]})}function ds(t,a){return a?s("settings.releaseUpdateReady"):s("settings.releaseUpToDate")}function Jt(t,a,n,i){return n===s("settings.clientUpdateUnsupported")?"neutral":i||a?"warning":"success"}function Gt({open:t,version:a,onClose:n}){const[i,r]=o.useState(!1),[d,y]=o.useState(null);async function x(){r(!0),y(null);try{await Tt()}catch(b){y(b instanceof Error?b.message:s("settings.releaseRestartFailed")),r(!1)}}return e.jsx(re,{open:t,title:s("settings.releaseRestartDialogTitle"),description:s("settings.releaseRestartDialogDescription",{version:a??"-"}),onClose:()=>{i||n()},children:e.jsxs("div",{className:"settings-update-card",children:[d?e.jsx("p",{className:"settings-update-status","data-tone":"danger",children:d}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:i,onClick:n,children:s("settings.releaseRestartLater")}),e.jsx("button",{className:"primary-button",type:"button",disabled:i,onClick:x,children:i?s("common.loading"):s("settings.releaseRestartConfirm")})]})]})})}function Bs(){const t=ve();return t.platform==="desktop"?e.jsx(Kt,{}):t.platform==="android"?e.jsx(Wt,{}):e.jsx("div",{className:"settings-update-card",children:e.jsx("p",{className:"settings-update-status","data-tone":"neutral",children:s("settings.clientUpdateUnsupported")})})}const Yt="https://github.com/SaladDay/cc-switch-cli",Zt="当前机器未安装 cc-switch-cli。这里集成的是 CC-Switch 的衍生 CLI 版本,不是 CC-Switch UI 版本。请先安装:",Qt=/(https?:\/\/[^\s]+)/i;function Vs(){const t=Ye(l=>{var u;return((u=l.session)==null?void 0:u.accessToken)??null}),[a,n]=o.useState(null),[i,r]=o.useState(!0),[d,y]=o.useState(null),[x,b]=o.useState(null),[P,p]=o.useState(null),[w,D]=o.useState(!1),[v,L]=o.useState("codex");o.useEffect(()=>{let l=!0;if(!t){n(null),b(null),p(null),r(!1);return}return(async()=>{r(!0);try{const S=await as();if(!l)return;n(S),b(null),L(T=>gs(S,T))}catch(S){if(!l)return;b(Oe(S))}finally{l&&r(!1)}})(),()=>{l=!1}},[t]);async function N(){const l=await as();n(l),b(null),L(u=>gs(l,u))}async function g(){if(t){y("refresh"),b(null),p(null);try{await N(),p(s("settings.modelManagementRefreshSuccess"))}catch(l){b(Oe(l))}finally{y(null)}}}async function m(l,u){if(!t||u.isCurrent)return;const S=us(l,u.id);y(S),b(null),p(null);try{const T=await Pt({app:l,presetId:u.id});Is(),n(O=>Xt(O,T)),p(s("settings.modelManagementSwitchSuccess",{app:T.displayName,preset:T.currentPresetName??u.name}))}catch(T){b(Oe(T))}finally{y(null)}}const j=(a==null?void 0:a.items)??[],M=j.find(l=>l.app===v)??j[0]??null,f=sn(j);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-panel",children:e.jsxs("div",{className:"settings-release-card",children:[P?e.jsx("p",{className:"settings-release-status",children:P}):null,x?e.jsx("p",{className:"settings-release-status",children:x}):null,f?e.jsxs("section",{className:"settings-model-missing-state",children:[e.jsx("p",{className:"settings-model-missing-copy",children:f.message}),e.jsx("a",{className:"settings-tailscale-link settings-model-missing-link",href:f.url,rel:"noreferrer",target:"_blank",children:f.url})]}):j.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-grid",children:j.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:en(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||i,onClick:()=>{D(!0)},children:s("settings.modelManagementOpenSwitcher")})})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})}),e.jsxs(re,{open:w&&!f,title:s("settings.modelManagementModalTitle"),description:s("settings.modelManagementModalDescription"),className:"settings-model-modal",headerActions:e.jsx("button",{className:"secondary-button",type:"button",disabled:!t||i||d!==null,onClick:()=>{g()},children:d==="refresh"?s("common.loading"):s("settings.modelManagementRefresh")}),onClose:()=>D(!1),children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.modelManagementTabsLabel"),children:j.map(l=>{const u=(M==null?void 0:M.app)===l.app;return e.jsx("button",{type:"button",role:"tab",className:"settings-model-tab","aria-selected":u,"data-active":u?"true":"false",onClick:()=>L(l.app),children:l.displayName},l.app)})}),M?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:M.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:M.currentModel??s("settings.modelManagementModelUnknown")})]})]}),M.statusText?e.jsx("p",{className:"settings-model-modal-note",children:M.statusText}):null,M.options.length>0?e.jsx("div",{className:"settings-model-switcher-list",children:M.options.map(l=>{const u=us(M.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:i||d!==null||M.status!=="ready",onClick:()=>{m(M.app,l)},children:d===u?s("common.loading"):s("settings.modelManagementSwitchAction")})})]},`${M.app}:${l.id}`)})}):e.jsx("div",{className:"settings-model-empty",children:M.statusText??s("settings.modelManagementOptionsEmpty")})]}):e.jsx("div",{className:"settings-model-empty",children:s("settings.modelManagementOptionsEmpty")})]})]})}function us(t,a){return`switch:${t}:${a}`}function Xt(t,a){return t&&{...t,scannedAt:new Date().toISOString(),items:t.items.map(n=>n.app===a.app?a:n)}}function gs(t,a){var i;return t.items.some(r=>r.app===a)?a:((i=t.items[0])==null?void 0:i.app)??"codex"}function en(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 Oe(t){return t instanceof oe?t.message||s("settings.modelManagementLoadFailed"):t instanceof Error?t.message:s("settings.modelManagementLoadFailed")}function sn(t){var i,r,d;if(t.length===0||!t.every(y=>y.status==="unavailable"&&!y.cliAvailable&&!!y.statusText))return null;const n=((d=(((r=(i=t[0])==null?void 0:i.statusText)==null?void 0:r.trim())??"").match(Qt))==null?void 0:d[1])??Yt;return{message:Zt,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 Hs(){const t=De(),a=Ye(u=>{var S;return((S=u.session)==null?void 0:S.accessToken)??null}),[n,i]=o.useState(!1),[r,d]=o.useState(null),[y,x]=o.useState(!1),[b,P]=o.useState(null),[p,w]=o.useState(null),[D,v]=o.useState(null),L=tn.map(u=>({...u,label:s(u.labelKey)}));o.useEffect(()=>{a||(i(!1),d(null),x(!1),P(null),w(null),v(null))},[a]);async function N(u={}){if(a){x(!0),v(null);try{const S=await Lt();d(S),u.showRefreshSuccess&&w(s("settings.providerManagementRefreshSuccess"))}catch(S){v(ms(S,"load"))}finally{x(!1)}}}function g(){i(!0),w(null),v(null),a&&N()}async function m(u){if(!a)return;const S=!u.enabled;P(u.provider),v(null),w(null);try{const T=await Et(u.provider,S);Is(),d(O=>an(O,T)),w(S?s("settings.providerManagementEnableSuccess",{provider:u.displayName}):s("settings.providerManagementDisableSuccess",{provider:u.displayName}))}catch(T){v(ms(T,"save"))}finally{P(null)}}const j=r??[],M=j.filter(u=>u.enabled).length,f=j.filter(u=>!u.enabled).length,l=e.jsxs("div",{className:"settings-provider-modal-layout",children:[p?e.jsx("p",{className:"settings-provider-status",children:p}):null,D?e.jsx("p",{className:"settings-provider-error",children:D}):null,e.jsxs("div",{className:"settings-provider-summary-grid","aria-label":s("settings.providerManagementSummaryTitle"),children:[e.jsx(Fe,{label:s("settings.providerManagementSummaryEnabled"),value:String(M)}),e.jsx(Fe,{label:s("settings.providerManagementSummaryDisabled"),value:String(f)}),e.jsx(Fe,{label:s("settings.providerManagementSummaryTotal"),value:String(j.length)})]}),e.jsxs(le,{heading:s("settings.providerManagementMatrixTitle"),description:s("settings.providerManagementMatrixDescription"),className:"settings-provider-modal-section",children:[y&&j.length===0?e.jsx(is,{compact:!0,title:s("settings.providerManagementLoading")}):null,!y&&j.length===0?e.jsx(is,{title:s("settings.providerManagementEmpty"),description:s("settings.providerManagementEmptyDescription"),action:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a,onClick:()=>{N()},children:s("settings.providerManagementRefresh")})}):null,j.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"}),L.map(u=>e.jsx("col",{className:"settings-provider-matrix-capability-col"},u.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")}),L.map(u=>e.jsx("th",{scope:"col",children:u.label},u.key)),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableStatus")}),e.jsx("th",{scope:"col",children:s("settings.providerManagementTableEnabled")})]})}),e.jsx("tbody",{children:j.map(u=>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:u.displayName}),e.jsx(be,{tone:on(u.installState),children:rn(u)})]})})}),L.map(S=>e.jsx("td",{className:"settings-provider-matrix-capability-cell",children:e.jsx(nn,{enabled:u.productCapabilities[S.key],label:S.label})},S.key)),e.jsx("td",{className:"settings-provider-matrix-status-cell",children:e.jsx(be,{tone:u.enabled?"success":"default",children:u.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:u.displayName})}),e.jsx("input",{type:"checkbox",checked:u.enabled,disabled:b===u.provider,"aria-label":s("settings.providerManagementToggleLabel",{provider:u.displayName}),onChange:()=>{m(u)}}),e.jsx("span",{className:"settings-provider-matrix-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-provider-matrix-switch-thumb"})})]})})]},u.provider))})]})}):null]}),e.jsx(X,{className:"settings-provider-modal-actions",children:e.jsx("button",{type:"button",className:"secondary-button",disabled:!a||y||b!==null,onClick:()=>{N({showRefreshSuccess:!0})},children:y?s("common.loading"):s("settings.providerManagementRefresh")})})]});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-provider-entrypoint",children:[a?null:e.jsx("p",{className:"settings-provider-entrypoint-note",children:s("settings.providerManagementLoginRequired")}),e.jsx("button",{type:"button",className:"settings-button",disabled:!a,onClick:g,children:s("settings.providerManagementManageAction")})]}),t.isMobile?e.jsx(Qe,{open:n,title:s("settings.providerManagementModalTitle"),height:"three-quarter",kind:"form",showHandle:!0,cardClassName:"settings-provider-modal",bodyClassName:"settings-provider-modal-body",onClose:()=>i(!1),children:l}):e.jsx(Fs,{open:n,title:s("settings.providerManagementModalTitle"),className:"settings-provider-modal",size:"xwide",layout:"list",bodyClassName:"settings-provider-modal-body",onClose:()=>i(!1),children:l})]})}function Fe({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 nn({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 an(t,a){if(!t||t.length===0)return[a];const n=t.map(i=>i.provider===a.provider?a:i);return n.some(i=>i.provider===a.provider)?n:[...n,a]}function ln(t){switch(t){case"ready":return s("settings.providerManagementInstallReady");case"missing":return s("settings.providerManagementInstallMissing");default:return s("settings.providerManagementInstallUnknown")}}function rn(t){return t.installState==="ready"&&t.version?t.version:ln(t.installState)}function on(t){switch(t){case"ready":return"success";case"missing":return"warning";default:return"default"}}function ms(t,a){return t instanceof oe?t.message:a==="save"?s("settings.providerManagementSaveFailed"):s("settings.providerManagementLoadFailed")}var qs={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},hs=ie.createContext&&ie.createContext(qs),cn=["attr","size","title"];function dn(t,a){if(t==null)return{};var n,i,r=un(t,a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(t);for(i=0;i<d.length;i++)n=d[i],a.indexOf(n)===-1&&{}.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function un(t,a){if(t==null)return{};var n={};for(var i in t)if({}.hasOwnProperty.call(t,i)){if(a.indexOf(i)!==-1)continue;n[i]=t[i]}return n}function Ce(){return Ce=Object.assign?Object.assign.bind():function(t){for(var a=1;a<arguments.length;a++){var n=arguments[a];for(var i in n)({}).hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},Ce.apply(null,arguments)}function ps(t,a){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);a&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),n.push.apply(n,i)}return n}function ke(t){for(var a=1;a<arguments.length;a++){var n=arguments[a]!=null?arguments[a]:{};a%2?ps(Object(n),!0).forEach(function(i){gn(t,i,n[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ps(Object(n)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(n,i))})}return t}function gn(t,a,n){return(a=mn(a))in t?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,t}function mn(t){var a=hn(t,"string");return typeof a=="symbol"?a:a+""}function hn(t,a){if(typeof t!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var i=n.call(t,a);if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(a==="string"?String:Number)(t)}function _s(t){return t&&t.map((a,n)=>ie.createElement(a.tag,ke({key:n},a.attr),_s(a.child)))}function xe(t){return a=>ie.createElement(pn,Ce({attr:ke({},t.attr)},a),_s(t.child))}function pn(t){var a=n=>{var{attr:i,size:r,title:d}=t,y=dn(t,cn),x=r||n.size||"1em",b;return n.className&&(b=n.className),t.className&&(b=(b?b+" ":"")+t.className),ie.createElement("svg",Ce({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,i,y,{className:b,style:ke(ke({color:t.color||n.color},n.style),t.style),height:x,width:x,xmlns:"http://www.w3.org/2000/svg"}),d&&ie.createElement("title",null,d),t.children)};return hs!==void 0?ie.createElement(hs.Consumer,null,n=>a(n)):a(qs)}function bn(t){return xe({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 fn(t){return xe({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 bs(t){return xe({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 vn(t){return xe({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 xn(t){return xe({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 fs(){return I.request("/api/auth/devices")}function jn(t){return I.request("/api/auth/devices/current/primary",{method:"POST",body:JSON.stringify(t)})}function yn(t){return I.request(`/api/auth/devices/${t}/logout`,{method:"POST"})}function zs({compact:t=!1}){const a=Ye(h=>{var F;return((F=h.session)==null?void 0:F.accessToken)??null}),[n,i]=o.useState(null),[r,d]=o.useState(!1),[y,x]=o.useState(!1),[b,P]=o.useState(!1),[p,w]=o.useState(null),[D,v]=o.useState(null),[L,N]=o.useState(null),[g,m]=o.useState(null),[j,M]=o.useState(null),[f,l]=o.useState(""),[u,S]=o.useState(null);o.useEffect(()=>{let h=!0;if(!y){d(!1);return}if(!a){i(null),d(!1),N(null),m(null);return}return(async()=>{d(!0);try{const k=await fs();if(!h)return;i(k),m(null)}catch(k){if(!h)return;m(Be(k))}finally{h&&d(!1)}})(),()=>{h=!1}},[a,y]);async function T(){const h=await fs();i(h),m(null)}function O(){x(!0),P(!1),N(null),m(null)}function J(){p!=="primary"&&(x(!1),P(!1),M(null),l(""),S(null))}function q(h){M(h),l(""),S(null)}async function $(){if(j){w("primary"),S(null),m(null),N(null);try{await jn({password:f,primary:j==="enable"}),await T(),N(j==="enable"?s("settings.authDevicePrimaryEnabled"):s("settings.authDevicePrimaryDisabled")),M(null),l("")}catch(h){const F=Be(h);S(F),m(F)}finally{w(null)}}}async function U(h){if(h.deviceId){v(h.deviceId),m(null),N(null);try{const F=await yn(h.deviceId);await T(),N(s("settings.authDeviceLogoutDeviceSuccess",{device:Se(h),count:String(F.revokedSessionCount)}))}catch(F){m(Be(F))}finally{v(null)}}}const R=(n==null?void 0:n.currentDevice)??null,_=(n==null?void 0:n.otherActiveDevices.filter(h=>!h.isLegacy))??[],B=(n==null?void 0:n.otherActiveDevices.filter(h=>h.isLegacy))??[],W=(n==null?void 0:n.recentLoginRecords.filter(h=>!h.isLegacy))??[],z=(n==null?void 0:n.recentLoginRecords.filter(h=>h.isLegacy))??[],C=B.length+z.length,A=R!==null&&!R.isLegacy,E=(R==null?void 0:R.isPrimary)===!0;return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`settings-device-panel${t?" settings-device-panel-compact":""}`,children:e.jsx("div",{className:"settings-device-entry-actions",children:e.jsx("button",{className:"settings-button",type:"button",disabled:!a,onClick:O,children:s("settings.authDeviceOpenManager")})})}),e.jsx(re,{open:y,title:s("settings.authDeviceManagement"),description:s("settings.authDeviceManagementDescription"),className:"settings-device-browser-modal",onClose:J,children:e.jsxs(e.Fragment,{children:[L?e.jsx("p",{className:"settings-release-status",children:L}):null,g?e.jsx("p",{className:"settings-release-status",children:g}):null,r?e.jsx("div",{className:"settings-device-empty",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[C>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(C)})}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>P(h=>!h),children:b?s("settings.authDeviceLegacyHide"):s("settings.authDeviceLegacyReveal")})]})}):null,e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceCurrentTitle")})}),R?e.jsx(me,{current:!0,title:Se(R),clientType:R.clientType,browserName:R.browserName,browserVersion:R.browserVersion,osName:R.osName,osVersion:R.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:R.lastSeenAt,sourceAddress:R.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}),R.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null]}),actions:e.jsx(e.Fragment,{children:e.jsx("button",{className:"secondary-button","data-variant":"device-neutral",type:"button",disabled:!A||p!==null,onClick:()=>q(R.isPrimary?"disable":"enable"),children:R.isPrimary?s("settings.authDeviceDisablePrimary"):s("settings.authDeviceEnablePrimary")})}),note:A?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((h,F)=>e.jsx(me,{title:Se(h),clientType:h.clientType,browserName:h.browserName,browserVersion:h.browserVersion,osName:h.osName,osVersion:h.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:h.lastSeenAt,sourceAddress:h.lastSourceAddress,badges:e.jsxs(e.Fragment,{children:[h.isPrimary?e.jsx("span",{className:"settings-device-tag","data-tone":"primary",children:s("settings.authDevicePrimaryTag")}):null,h.isLegacy?e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")}):null]}),actions:h.deviceId?e.jsx("button",{className:"settings-button settings-button-danger","data-variant":"device-danger",type:"button",disabled:!E||p!==null||D!==null,onClick:()=>{U(h)},children:D===h.deviceId?s("common.loading"):s("settings.authDeviceLogoutDevice")}):null},`${h.deviceId??"legacy"}-${h.lastSeenAt}-${F}`))}):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")})}),W.length>0?e.jsx("div",{className:"settings-device-list",children:W.map(h=>e.jsx(me,{title:vs(h),clientType:h.clientType,browserName:h.browserName,browserVersion:h.browserVersion,osName:h.osName,osVersion:h.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:h.occurredAt,sourceAddress:h.sourceAddress,badges:h.isCurrentDevice?e.jsx("span",{className:"settings-device-tag","data-tone":"current",children:s("settings.authDeviceCurrentTag")}):null},h.id))}):e.jsx("div",{className:"settings-device-empty",children:s("settings.authDeviceRecentEmpty")})]}),b&&B.length>0?e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceLegacyDevicesTitle")})}),e.jsx("div",{className:"settings-device-list",children:B.map((h,F)=>e.jsx(me,{title:Se(h),clientType:h.clientType,browserName:h.browserName,browserVersion:h.browserVersion,osName:h.osName,osVersion:h.osVersion,timeLabelKey:"settings.authDeviceLastSeen",timestamp:h.lastSeenAt,sourceAddress:h.lastSourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},`legacy-device-${h.lastSeenAt}-${F}`))})]}):null,b&&z.length>0?e.jsxs("section",{className:"settings-device-section",children:[e.jsx("div",{className:"settings-device-section-header",children:e.jsx("strong",{children:s("settings.authDeviceLegacyRecentTitle")})}),e.jsx("div",{className:"settings-device-list",children:z.map(h=>e.jsx(me,{title:vs(h),clientType:h.clientType,browserName:h.browserName,browserVersion:h.browserVersion,osName:h.osName,osVersion:h.osVersion,timeLabelKey:"settings.authDeviceLoginAt",timestamp:h.occurredAt,sourceAddress:h.sourceAddress,badges:e.jsx("span",{className:"settings-device-tag","data-tone":"legacy",children:s("settings.authDeviceLegacyTag")})},h.id))})]}):null]})]})}),e.jsx(re,{open:j!==null,title:j==="enable"?s("settings.authDeviceEnablePrimaryModalTitle"):s("settings.authDeviceDisablePrimaryModalTitle"),description:j==="enable"?s("settings.authDeviceEnablePrimaryModalDescription"):s("settings.authDeviceDisablePrimaryModalDescription"),className:"settings-device-modal",onClose:()=>{p!=="primary"&&(M(null),l(""),S(null))},children:e.jsxs("div",{className:"settings-device-modal-body",children:[e.jsxs("label",{className:"settings-device-password-field",children:[e.jsx("span",{children:s("settings.authDevicePasswordLabel")}),e.jsx("input",{type:"password",className:"settings-text-input",value:f,onChange:h=>l(h.target.value)})]}),u?e.jsx("p",{className:"settings-release-status",children:u}):null,e.jsxs("div",{className:"settings-device-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:p==="primary",onClick:()=>{M(null),l(""),S(null)},children:s("common.cancel")}),e.jsx("button",{className:"settings-button",type:"button",disabled:f.trim().length===0||p==="primary",onClick:()=>{$()},children:p==="primary"?s("common.loading"):j==="enable"?s("settings.authDeviceEnablePrimary"):s("settings.authDeviceDisablePrimary")})]})]})})]})}function Se(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||$s(t.clientType)}function vs(t){var a;return t.isLegacy?s("settings.authDeviceLegacyLabel"):((a=t.displayName)==null?void 0:a.trim())||$s(t.clientType)}function Nn(t){return e.jsxs("div",{className:"settings-device-identity",children:[e.jsx("span",{className:"settings-device-identity-icon","aria-hidden":"true",children:e.jsx(Mn,{kind:Dn(t.clientType)})}),e.jsx("div",{className:"settings-device-identity-body",children:e.jsx("strong",{children:t.title})})]})}function me(t){const a=kn(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(Nn,{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 $s(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 wn(t,a){return s(t,{value:new Date(a).toLocaleString()})}function Sn(t){return t?s("settings.authDeviceSourceAddressValue",{value:t}):s("settings.authDeviceSourceAddressUnknown")}function Tn(t,a){return t?s("settings.authDeviceBrowserValue",{value:Ws(t,a)}):null}function Cn(t,a){return t?s("settings.authDeviceOsValue",{value:Ws(t,a)}):null}function kn(t,a,n,i,r,d,y){return[Tn(t,a),Cn(n,i),wn(r,d),Sn(y)].filter(x=>!!x)}function Dn(t){switch(t){case"desktop":return"desktop";case"web":return"web";case"ios":return"ios";case"android":return"android";default:return"unknown"}}function Ws(t,a){return a!=null&&a.trim()?`${t} ${a}`:t}function Mn({kind:t}){const a=Pn(t),n=a.icon;return e.jsx(n,{color:a.color})}function Pn(t){switch(t){case"desktop":return{icon:bn,color:"#2563eb"};case"web":return{icon:fn,color:"#0f766e"};case"ios":return{icon:vn,color:"#111827"};case"android":return{icon:xn,color:"#3ddc84"};case"unknown":return{icon:bs,color:"#64748b"};default:return{icon:bs,color:"#64748b"}}}function Be(t){return t instanceof oe||t instanceof Error?t.message:s("settings.authDeviceLoadFailed")}async function Ve(){const t=Z.getState();return I.request(`/api/client/service-update?channel=${encodeURIComponent(t.releaseChannel)}`)}async function Ln(t){const a=Z.getState();return I.request("/api/client/service-update/install",{method:"POST",body:JSON.stringify({packageName:t,channel:a.releaseChannel})})}async function En(t){return I.request(`/api/client/service-update/tasks/${encodeURIComponent(t)}`)}const Rn=1500,xs=2e3,An=2500;function Ks(){const t=ve(),[a,n]=o.useState(!1),[i,r]=o.useState(!1),[d,y]=o.useState(!1),[x,b]=o.useState(!1),[P,p]=o.useState(null),[w,D]=o.useState(null),[v,L]=o.useState(null),N=(w==null?void 0:w.packages[0])??null,g=d||!!((v==null?void 0:v.status)==="succeeded"&&v.restartScheduled);o.useEffect(()=>{if(!v||!qe(v.status))return;let f=!1;const l=window.setTimeout(async()=>{var u;try{const S=await En(v.taskId);if(f)return;if(L(S),p(Ge(S)),!qe(S.status)){if(r(!1),S.status==="succeeded"&&S.restartScheduled){y(!0),t.bridge.showNotification(s("settings.serverRestarting"),s("settings.serverInstallWarning"));return}const T=await Ve();if(f)return;D(T),L(((u=T.packages[0])==null?void 0:u.installTask)??S),p(He(T.packages[0]??null,S)),S.restartRequired&&await t.bridge.showNotification(s("settings.serverRestartRequired"),S.targetVersion??"-")}}catch(S){if(f)return;r(!1),p(S instanceof Error?S.message:s("settings.serverInstallFailed"))}},Rn);return()=>{f=!0,window.clearTimeout(l)}},[t.bridge,v]),o.useEffect(()=>{if(!d||!v||v.status!=="succeeded"||!v.restartScheduled)return;let f=!1,l=0;const u=async()=>{try{const S=await Ve();if(f)return;const T=S.packages[0]??null;if(!In(v,T)){l=window.setTimeout(u,xs);return}y(!1),D(S),L((T==null?void 0:T.installTask)??null),p(He(T,(T==null?void 0:T.installTask)??null))}catch{if(f)return;p(s("settings.serverRestarting")),l=window.setTimeout(u,xs)}};return p(s("settings.serverRestarting")),l=window.setTimeout(u,Math.max(v.restartDelayMs??0,An)),()=>{f=!0,window.clearTimeout(l)}},[d,v]);async function m(){n(!0),p(null);try{const f=await Ve(),l=f.packages[0]??null;D(f),L((l==null?void 0:l.installTask)??null),p(He(l,(l==null?void 0:l.installTask)??null)),l!=null&&l.hasUpdate&&await t.bridge.showNotification(s("settings.serverUpdateReady"),`${s("settings.serverTargetVersion")}: ${l.latestVersion??"-"}`)}catch(f){p(f instanceof Error?f.message:s("settings.serverCheckFailed"))}finally{n(!1)}}async function j(){if(N!=null&&N.packageName){b(!1),y(!1),r(!0),p(null);try{const f=await Ln(N.packageName);L(f),p(Ge(f))}catch(f){r(!1),p(f instanceof Error?f.message:s("settings.serverInstallFailed"))}}}const M=!!(N&&N.checkStatus!=="check_failed"&&N.hasUpdate&&!N.restartRequired&&!qe(v==null?void 0:v.status)&&!g);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:(N==null?void 0:N.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:(N==null?void 0:N.latestVersion)??"-"})]})]}),N!=null&&N.hasUpdate&&!g?e.jsx("p",{className:"settings-update-note","data-tone":"warning",children:s("settings.serverInstallWarning")}):null,P?e.jsx("p",{className:"settings-update-status","data-tone":Un(N,v,g),children:P}):null,e.jsxs("div",{className:"settings-update-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",disabled:a||i||g,onClick:m,children:a?s("common.loading"):s("settings.serverCheckNow")}),e.jsx("button",{className:"primary-button",type:"button",disabled:!M||a||i||g,onClick:()=>b(!0),children:i?s("common.loading"):s("settings.serverInstallNow")})]})]}),e.jsx(On,{open:x,busy:i,mobile:t.isMobile,targetVersion:(N==null?void 0:N.latestVersion)??null,onClose:()=>b(!1),onConfirm:()=>{j()}})]})}function He(t,a){return a?Ge(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 Ge(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 Un(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 qe(t){return t==="queued"||t==="running"}function In(t,a){return a?t.targetVersion?js(a.currentVersion)===js(t.targetVersion):!a.hasUpdate:!1}function js(t){return(t??"").trim().replace(/^v/i,"")}function On({open:t,busy:a,mobile:n,targetVersion:i,onClose:r,onConfirm:d}){const y=e.jsxs(X,{children:[e.jsx("button",{type:"button",className:"secondary-button",disabled:a,onClick:r,children:s("common.cancel")}),e.jsx("button",{type:"button",className:"primary-button",disabled:a,onClick:d,children:a?s("common.loading"):s("settings.serverInstallConfirmAction")})]}),x=e.jsxs(le,{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:i??"-"})]})]});return n?e.jsx(Qe,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),height:"auto",kind:"form",dismissible:!a,footer:y,onClose:r,children:x}):e.jsx(Fs,{open:t,title:s("settings.serverInstallConfirmTitle"),description:s("settings.serverInstallConfirmDescription"),size:"compact",layout:"confirm",bodyClassName:"settings-update-confirm-body",dismissible:!a,footer:y,onClose:r,children:x})}async function Fn(){return await I.request("/api/system/relay-tunnel/status")}async function _e(t){return await I.request("/api/system/relay-tunnel/config",{method:"PUT",body:JSON.stringify(t)})}async function Bn(t){return await I.request("/api/system/relay-tunnel/control/login",{method:"POST",body:JSON.stringify(t)})}async function Vn(){return await I.request("/api/system/relay-tunnel/control/logout",{method:"POST"})}async function Hn(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 qn(t){return await I.request("/api/system/relay-tunnel/control/bind",{method:"POST",body:JSON.stringify(t)})}async function _n(){return await I.request("/api/system/relay-tunnel/control/wallet")}async function ys(){return await I.request("/api/system/relay-tunnel/enable",{method:"POST"})}async function zn(){return await I.request("/api/system/relay-tunnel/disable",{method:"POST"})}async function $n(){return await I.request("/api/system/relay-tunnel/unbind",{method:"POST"})}function Wn(){const t=De(),{showToast:a}=Ct(),[n,i]=o.useState(null),[r,d]=o.useState(""),[y,x]=o.useState(()=>ts()),[b,P]=o.useState(()=>ht()),[p,w]=o.useState(""),[D,v]=o.useState(""),[L,N]=o.useState(null),[g,m]=o.useState({status:"idle"}),[j,M]=o.useState(!0),[f,l]=o.useState(null),[u,S]=o.useState(null),[T,O]=o.useState(null),[J,q]=o.useState(null),[$,U]=o.useState(null),R=o.useRef(!0),_=Le(n==null?void 0:n.controlBaseUrl),B=pt(y),W=B??_,z=Le(B??(n==null?void 0:n.controlBaseUrl)),C=r.trim(),A=B!==null&&B!==_,E=(n==null?void 0:n.activated)??!1,h=p.trim().length>0&&D.trim().length>0,F=!!(n!=null&&n.controlAccountEmail),k=n!=null&&n.bindingId?!0:g.status==="available"&&g.hostLabel===C,G=!!(n!=null&&n.bindingId)||F&&C.length>0&&k,ee=Ns({controlBaseUrl:z,tunnelDomain:n==null?void 0:n.tunnelDomain,hostLabel:r}),ne=!!(n!=null&&n.controlAccountEmail||n!=null&&n.bindingId),ce=!!(n!=null&&n.bindingId||k),je=!!(n!=null&&n.enabled&&(n!=null&&n.bindingId)),Qs=!!(n!=null&&n.bindingId)||G,Xs=L?he(L.grantedBytes):s("settings.tailscaleUnavailable"),et=he(L?L.usedBytes:n==null?void 0:n.trafficUsedBytes),st=he(L?L.remainingBytes:n==null?void 0:n.trafficRemainingBytes),Me=Ze(Z.getState()),Q=Rt(),de=Q?s(At(Q.kind)):null,ye=Q?Jn(Q):null;o.useEffect(()=>(R.current=!0,Ne(!1),()=>{R.current=!1}),[]),o.useEffect(()=>{if(!E)return;const c=window.setInterval(()=>{Ne(!0)},5e3);return()=>{window.clearInterval(c)}},[E]),o.useEffect(()=>{!E||!F||we()},[E,F]),o.useEffect(()=>{n!=null&&n.bindingId||g.status!=="idle"&&g.hostLabel!==C&&m({status:"idle"})},[g,C,n==null?void 0:n.bindingId]),o.useEffect(()=>{x(_)},[_]);async function Ne(c,V){c||M(!0);try{const ae=await Fn();if(!R.current)return;Y(ae,V),S(null)}catch(ae){R.current&&S(Ke(ae,"status",Me))}finally{R.current&&!c&&M(!1)}}function Y(c,V){i(c),U(null),c.controlAccountEmail||N(null),c.tunnelDomain&&r.trim().length===0&&d(Js(c.tunnelDomain)),((V==null?void 0:V.syncProfile)??!0)&>(c)}async function we(){try{const c=await _n();if(!R.current)return;N(c.wallet)}catch(c){R.current&&U(se(c))}}async function tt(){if(h){l("login-control"),U(null);try{const c=await Bn({email:p.trim(),password:D});q(null),Y(c),await we()}catch(c){q(Ke(c,"login",Me))}finally{l(null)}}}async function nt(){l("logout-control"),U(null);try{const c=await Vn();Y(c),N(null),m({status:"idle"})}catch(c){U(se(c))}finally{l(null)}}async function Xe(){if(!C)throw new Error(s("settings.relayTunnelHostLabelRequired"));if(g.status==="available"&&g.hostLabel===C)return{hostLabel:g.hostLabel,tunnelDomain:g.tunnelDomain,available:!0,reason:"available"};m({status:"checking",hostLabel:C});const c=await Hn({hostLabel:C});if(!c.available||!c.tunnelDomain){const V=Gn(c);throw m({status:"error",hostLabel:C,message:V}),new Error(V)}return m({status:"available",hostLabel:C,tunnelDomain:c.tunnelDomain}),c}async function at(){if(!(!ne||n!=null&&n.bindingId)){l("check-host-label"),U(null);try{await Xe()}catch{}finally{l(null)}}}async function it(){l("learn-service"),U(null);try{await Je(t.bridge.openExternal,z)}catch(c){U(se(c))}finally{l(null)}}async function lt(){l("manage-account"),U(null);try{await Je(t.bridge.openExternal,z)}catch(c){U(se(c))}finally{l(null)}}async function rt(){if(ee)try{await Zn(ee,t),a({title:s("settings.relayTunnelAccessUrlCopied"),tone:"success"})}catch(c){a({title:c instanceof Error?c.message:s("settings.relayTunnelCopyAccessUrlFailed"),tone:"error"})}}async function ot(){if(ee)try{await Je(t.bridge.openExternal,ee)}catch(c){a({title:c instanceof Error?c.message:s("settings.relayTunnelOpenAccessUrlFailed"),tone:"error"})}}async function ct(){if(G){l("enable"),U(null);try{let c=n;if(c!=null&&c.activated||(c=await _e({activated:!0,controlBaseUrl:W}),Y(c)),c!=null&&c.bindingId||(await Xe(),c=await qn({hostLabel:C}),Y(c),await we()),!(c!=null&&c.enabled)){const V=await ys();Y(V)}}catch(c){U(se(c))}finally{l(null)}}}async function dt(){if(n!=null&&n.bindingId){l("reconnect"),U(null);try{n!=null&&n.enabled&&await zn();const c=await ys();Y(c),c.controlAccountEmail&&await we()}catch(c){const V=se(c);await Ne(!0,{syncProfile:!1}),U(V)}finally{l(null)}}}async function es(){l("disconnect-device"),U(null);try{if(n!=null&&n.bindingId||n!=null&&n.accountId){const c=await $n();Y(c)}if(n!=null&&n.activated){const c=await _e({activated:!1});Y(c)}N(null),w(""),d(""),v(""),m({status:"idle"})}catch(c){U(se(c))}finally{l(null)}}async function ut(){if(!B){O(s("settings.serverInvalid"));return}l("save-config"),O(null);try{const c=await _e({controlBaseUrl:B});O(null),Y(c)}catch(c){O(Ke(c,"config",Me))}finally{l(null)}}return e.jsxs("div",{className:"settings-relay-tunnel-panel",children:[j&&!n?e.jsx(le,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),children:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")})}):null,!j&&!je?e.jsxs(le,{heading:s("settings.relayTunnelWizardTitle"),description:s("settings.relayTunnelWizardDescription"),actions:e.jsx("button",{className:"secondary-button",disabled:f!==null,type:"button",onClick:()=>void it(),children:s("settings.relayTunnelLearnService")}),children:[u?e.jsx(ze,{title:s("settings.relayTunnelStatusErrorTitle"),message:u,action:e.jsx("button",{className:"secondary-button",disabled:j||f!==null,type:"button",onClick:()=>void Ne(!1),children:s("common.retry")})}):null,e.jsxs("div",{className:"settings-relay-tunnel-step-list",children:[e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":$e(ne,!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(be,{className:"settings-relay-tunnel-step-tag",children:s(We(ne,!0))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:ne?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(X,{align:"start",children:e.jsx("button",{className:"secondary-button",disabled:f!==null,type:"button",onClick:()=>{if(n!=null&&n.bindingId){es();return}nt()},children:s("common.logout")})})]}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"settings-relay-tunnel-form",children:[e.jsx(fe,{label:s("settings.relayTunnelAccountEmail"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountEmail"),className:"settings-text-input",type:"email",value:p,onChange:c=>{w(c.target.value),q(null)},placeholder:s("settings.relayTunnelAccountEmailPlaceholder")})}),e.jsx(fe,{label:s("settings.relayTunnelAccountPassword"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelAccountPassword"),className:"settings-text-input",type:"password",value:D,onChange:c=>{v(c.target.value),q(null)},placeholder:s("settings.relayTunnelAccountPasswordPlaceholder")})}),J?e.jsx(ze,{title:s("settings.relayTunnelLoginErrorTitle"),message:J}):null,e.jsxs(X,{align:"start",children:[e.jsx("button",{className:"settings-button",disabled:f!==null||!h,type:"button",onClick:()=>void tt(),children:f==="login-control"?s("common.loading"):s("settings.relayTunnelLoginAccount")}),e.jsx("button",{className:"secondary-button",disabled:f!==null,type:"button",onClick:()=>{P(c=>!c),O(null)},children:b?s("settings.relayTunnelAdvancedSettingsHide"):s("settings.relayTunnelAdvancedSettings")})]}),b?e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[e.jsx(fe,{label:s("settings.relayTunnelControlBaseUrl"),description:s("settings.relayTunnelServerAddressHint"),children:e.jsx("input",{"aria-label":s("settings.relayTunnelControlBaseUrl"),className:"settings-text-input",type:"url",value:y,onChange:c=>{x(c.target.value),O(null)},placeholder:ts()})}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelAdvancedSettingsDescription")}),T?e.jsx(ze,{title:s("settings.relayTunnelConfigErrorTitle"),message:T}):null,e.jsx(X,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:j||f!==null||!A,type:"button",onClick:()=>void ut(),children:f==="save-config"?s("common.loading"):s("common.save")})})]}):null]})})})]}),e.jsxs("section",{className:"settings-relay-tunnel-step","data-state":$e(ce,ne),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(be,{className:"settings-relay-tunnel-step-tag",children:s(We(ce,ne))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:ne?n!=null&&n.bindingId?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:ee??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:r,onChange:c=>d(c.target.value),placeholder:s("settings.relayTunnelHostLabelPlaceholder")}),e.jsx("span",{className:"settings-relay-tunnel-domain-suffix",children:s("settings.relayTunnelHostLabelSuffix")}),e.jsx("button",{className:"settings-button settings-relay-tunnel-domain-check",disabled:f!==null||C.length===0,type:"button",onClick:()=>void at(),children:f==="check-host-label"?s("common.loading"):s("settings.relayTunnelHostLabelCheck")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[g.status==="available"&&g.hostLabel===C?e.jsx("p",{className:"settings-relay-tunnel-success",children:s("settings.relayTunnelHostLabelAvailable",{domain:Ns({controlBaseUrl:W,tunnelDomain:g.tunnelDomain,hostLabel:g.hostLabel})??g.tunnelDomain})}):null,g.status==="checking"&&g.hostLabel===C?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelHostLabelChecking")}):null,g.status==="error"&&g.hostLabel===C?e.jsx("p",{className:"settings-relay-tunnel-error",children:g.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":$e(je,ce),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(be,{className:"settings-relay-tunnel-step-tag",children:s(We(je,ce))})]}),e.jsx("div",{className:"settings-relay-tunnel-step-body",children:ce?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:E?s("settings.relayTunnelStepStartReady"):s("settings.relayTunnelActivationHint")}),e.jsx(X,{align:"start",children:e.jsx("button",{className:"settings-button",disabled:f!==null||!Qs,type:"button",onClick:()=>void ct(),children:f==="enable"?s("common.loading"):s("settings.relayTunnelStartAction")})})]}):e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelStepLocked")})})]})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[Q&&de&&ye?e.jsx(Kn,{hint:ye,label:de,url:Q.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,$?e.jsx("p",{className:"settings-relay-tunnel-error",children:$}):null]})]}):null,!j&&je?e.jsxs(le,{heading:s("settings.relayTunnelReadyTitle"),description:s("settings.relayTunnelReadyDescription"),children:[e.jsxs(Os,{compact:!0,children:[Q&&de?e.jsxs(e.Fragment,{children:[e.jsx(te,{label:s("settings.relayTunnelClientRouteLabel"),value:de}),e.jsx(te,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:Q.url})]}):null,e.jsx(te,{className:"settings-relay-tunnel-summary-line-access-url",label:s("settings.relayTunnelAccessUrlLabel"),trailing:ee?e.jsxs("div",{className:"settings-relay-tunnel-access-url",children:[e.jsx("span",{className:"settings-relay-tunnel-access-url-text",title:ee,children:ee}),e.jsxs("span",{className:"settings-relay-tunnel-access-url-actions",children:[e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void rt(),children:s("settings.relayTunnelCopyAccessUrl")}),e.jsx("button",{className:"secondary-button",type:"button",onClick:()=>void ot(),children:s("settings.relayTunnelOpenAccessUrl")})]})]}):e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:s("settings.relayTunnelUnbound")})}),e.jsx(te,{label:s("settings.relayTunnelTrafficGranted"),value:Xs}),e.jsx(te,{label:s("settings.relayTunnelTrafficUsed"),value:et}),e.jsx(te,{label:s("settings.relayTunnelTrafficRemaining"),value:st})]}),e.jsxs(X,{align:"start",className:"settings-relay-tunnel-ready-actions",children:[e.jsx("button",{className:"secondary-button",disabled:f!==null||!(n!=null&&n.bindingId),type:"button",onClick:()=>void dt(),children:f==="reconnect"?s("common.loading"):s("settings.relayTunnelReconnectAction")}),e.jsx("button",{className:"secondary-button",disabled:f!==null,type:"button",onClick:()=>void lt(),children:f==="manage-account"?s("common.loading"):s("settings.relayTunnelManageAccountAction")}),e.jsx("button",{className:"settings-button settings-button-danger",disabled:f!==null,type:"button",onClick:()=>void es(),children:f==="disconnect-device"?s("common.loading"):s("settings.relayTunnelDisconnectDeviceAction")})]}),e.jsxs("div",{className:"settings-relay-tunnel-inline-stack",children:[Q&&de&&ye?e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:ye}):null,e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:s("settings.relayTunnelTrustBoundaryNotice")}),n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:s("settings.relayTunnelRecentError",{message:n.lastError})}):null,$?e.jsx("p",{className:"settings-relay-tunnel-error",children:$}):null]})]}):null]});function gt(c){const V=Z.getState(),ae=bt(V);if(!ae)return;const ss=mt(c);Qn(ae.relayTunnel??null,ss)||Z.update({hosts:V.hosts.map(Pe=>Pe.id===ae.id?{...Pe,relayTunnel:ss,updatedAt:new Date().toISOString()}:Pe)})}function mt(c){return!(c!=null&&c.bindingId)||!c.tunnelDomain?null:{provider:"codingns_relay",enabled:c.enabled,tunnelDomain:c.tunnelDomain.trim().toLowerCase(),controlBaseUrl:Le(c.controlBaseUrl),bindingId:c.bindingId,hostFingerprint:c.hostFingerprint,candidateEndpoints:c.candidateEndpoints}}}function Kn({label:t,url:a,hint:n}){return e.jsxs(e.Fragment,{children:[e.jsxs(Os,{compact:!0,children:[e.jsx(te,{label:s("settings.relayTunnelClientRouteLabel"),value:t}),e.jsx(te,{label:s("settings.relayTunnelClientRouteAddressLabel"),value:a})]}),e.jsx("p",{className:"settings-relay-tunnel-inline-note",children:n})]})}function te({label:t,value:a,trailing:n,className:i}){return e.jsx(Ut,{className:i,label:t,trailing:n??e.jsx("span",{className:"settings-relay-tunnel-summary-value",children:a})})}function Jn(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 ze({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 $e(t,a){return t?"done":a?"current":"pending"}function We(t,a){return t?"settings.relayTunnelStepDone":a?"settings.relayTunnelStepCurrent":"settings.relayTunnelStepPending"}function Gn(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 se(t){return t instanceof oe||t instanceof Error?t.message:s("settings.relayTunnelLoadFailed")}function Ke(t,a,n){if(t instanceof oe&&t.errorCode==="NETWORK_ERROR"){const i=(n==null?void 0:n.trim())||s("common.unknown");return a==="login"?s("settings.relayTunnelLoginNetworkError",{address:i}):a==="config"?s("settings.relayTunnelConfigNetworkError",{address:i}):s("settings.relayTunnelStatusNetworkError",{address:i})}return se(t)}function he(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 Js(t){return t?t.split(".")[0]||s("common.unknown"):s("common.unknown")}function Ns(t){var i,r,d,y;const a=ws(t.hostLabel)??ws(Js(t.tunnelDomain));if(!a)return((i=t.tunnelDomain)==null?void 0:i.trim())??null;const n=(r=t.controlBaseUrl)==null?void 0:r.trim();if(!n)return((d=t.tunnelDomain)==null?void 0:d.trim())??null;try{const x=new URL(n);return x.hostname=`${a}.${x.hostname}`,x.pathname="/",x.search="",x.hash="",x.origin}catch{return((y=t.tunnelDomain)==null?void 0:y.trim())??null}}function ws(t){const a=(t==null?void 0:t.trim().toLowerCase())??"";return!a||a===s("common.unknown").toLowerCase()?null:a}async function Je(t,a){!(await t(a)).ok&&typeof window<"u"&&window.open(a,"_blank","noopener,noreferrer")}function Yn(t){var i;if(typeof document>"u")return!1;const a=(i=document.execCommand)==null?void 0:i.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 Zn(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(!Yn(t))throw new Error(s("settings.relayTunnelCopyAccessUrlFailed"))}function Qn(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 Ss(){return await I.request("/api/system/tailscale/status")}async function Ts(t){return await I.request("/api/system/tailscale/config",{method:"PUT",body:JSON.stringify(t)})}async function Xn(){return await I.request("/api/system/tailscale/enable",{method:"POST"})}async function ea(){return await I.request("/api/system/tailscale/disable",{method:"POST"})}async function sa(){return await I.request("/api/system/tailscale/login",{method:"POST"})}async function ta(){return await I.request("/api/system/tailscale/logout",{method:"POST"})}function na({children:t}){return e.jsx("div",{className:"settings-remote-access-metrics",children:t})}function Te({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 aa({checked:t,label:a,disabled:n,onChange:i}){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:r=>{if(n){r.preventDefault();return}r.target instanceof HTMLInputElement||(r.preventDefault(),i(!t))},children:[e.jsx("input",{type:"checkbox","aria-label":a,checked:t,disabled:n,onChange:r=>i(r.target.checked)}),e.jsx("span",{className:"settings-mobile-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-mobile-switch-thumb"})})]})]})}function ia({configMode:t="modal"}){const a=De(),[n,i]=o.useState(null),[r,d]=o.useState(""),[y,x]=o.useState(""),[b,P]=o.useState(!0),[p,w]=o.useState(null),[D,v]=o.useState(null),[L,N]=o.useState(!1),[g,m]=o.useState(!1),j=o.useRef(!0),M=o.useRef(!1),f=o.useRef(async()=>{}),l=t==="inline",u=(n==null?void 0:n.activated)??!1;M.current=g;function S(C){if(i(C),d(C.controlServerUrl??""),x(C.hostname??""),v(null),!C.activated){m(!1),N(!1);return}M.current&&!Ds(C.lastError)&&m(!1)}f.current=async C=>{C||P(!0);try{const A=await Ss();if(!j.current)return;S(A)}catch(A){if(!j.current)return;v(pe(A))}finally{j.current&&!C&&P(!1)}},o.useEffect(()=>(j.current=!0,f.current(!1),()=>{j.current=!1}),[]),o.useEffect(()=>{if(!u)return;const C=window.setInterval(()=>{f.current(!0)},5e3);return()=>{window.clearInterval(C)}},[u]),o.useEffect(()=>{if(!g||!u)return;function C(){f.current(!0)}function A(){document.visibilityState==="visible"&&f.current(!0)}return window.addEventListener("focus",C),document.addEventListener("visibilitychange",A),()=>{window.removeEventListener("focus",C),document.removeEventListener("visibilitychange",A)}},[u,g]);const T=((n==null?void 0:n.controlServerUrl)??"")!==r.trim()||((n==null?void 0:n.hostname)??"")!==y.trim(),O=u&&Ds(n==null?void 0:n.lastError),J=u&&oa(a.ui.osFamily)&&O;async function q(){const C=await Ts({controlServerUrl:ks(r),hostname:ks(y)});return S(C),C}async function $(C){w("toggle-activation"),v(null);try{const A=await Ts({activated:C});S(A)}catch(A){v(pe(A))}finally{w(null),P(!1)}}async function U(C){w(C),v(null);try{T&&C!=="disable"&&C!=="logout"&&await q();const A=C==="enable"?await Xn():C==="disable"?await ea():C==="login"?await sa():await ta();S(A)}catch(A){v(pe(A))}finally{w(null)}}async function R(){w("save"),v(null);try{await q(),N(!1)}catch(C){v(pe(C))}finally{w(null)}}async function _(){w("refresh"),v(null);try{const C=await Ss();S(C)}catch(C){v(pe(C))}finally{w(null),P(!1)}}async function B(){const C=ca(a.ui.osFamily);if(C){w("install"),v(null);try{const A=await a.bridge.openExternal(C);if(!A.ok){v(A.detail??s("settings.tailscaleInstallOpenFailed"));return}m(!0)}catch(A){v(A instanceof Error?A.message:s("settings.tailscaleInstallOpenFailed"))}finally{w(null)}}}function W(){p!=="save"&&N(!1)}const z=u?e.jsxs("span",{className:"settings-tailscale-status-indicator","data-tone":da((n==null?void 0:n.phase)??"disabled"),children:[e.jsx("span",{className:"settings-tailscale-status-dot","aria-hidden":"true"}),ra((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(le,{heading:s("settings.tailscaleSectionTitle"),description:s("settings.tailscaleSectionDescription"),actions:e.jsx(aa,{checked:u,label:s("settings.tailscaleMasterSwitchLabel"),disabled:p!==null,onChange:C=>{$(C)}}),children:b&&!n?e.jsx("p",{className:"settings-remote-access-panel-note",children:s("common.loading")}):e.jsxs(e.Fragment,{children:[e.jsxs(na,{children:[e.jsx(Te,{label:s("settings.tailscaleStatusIndicator"),value:z}),e.jsx(Te,{label:s("settings.tailscaleServerAddress"),value:u?(n==null?void 0:n.reachableBaseUrl)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(Te,{label:s("settings.tailscaleAccountName"),value:u?(n==null?void 0:n.accountName)??s("settings.tailscaleUnavailable"):s("settings.tailscaleUnavailable")}),e.jsx(Te,{label:s("settings.tailscaleIpAddress"),value:u?la(n):s("settings.tailscaleUnavailable")})]}),u?null:e.jsx("p",{className:"settings-remote-access-panel-note",children:s("settings.tailscaleActivationHint")}),u&&(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,D||n!=null&&n.lastError?e.jsx("p",{className:"settings-relay-tunnel-error",children:D??(n==null?void 0:n.lastError)}):null,u?e.jsxs(X,{align:"start",children:[J?e.jsx("button",{className:"settings-button",type:"button",disabled:b||p!==null,onClick:()=>{B()},children:p==="install"?s("common.loading"):s("settings.tailscaleInstallAction")}):null,l?null:e.jsx("button",{className:"secondary-button",type:"button",disabled:b||p!==null,onClick:()=>N(!0),children:s("settings.tailscaleConfigure")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||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:b||p!==null||O,onClick:()=>{U("disable")},children:p==="disable"?s("common.loading"):s("settings.tailscaleDisable")}):e.jsx("button",{className:"secondary-button",type:"button",disabled:b||p!==null||O,onClick:()=>{U("enable")},children:p==="enable"?s("common.loading"):s("settings.tailscaleEnable")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||p!==null||!(n!=null&&n.enabled)||O,onClick:()=>{U("login")},children:p==="login"?s("common.loading"):s("settings.tailscaleLogin")}),e.jsx("button",{className:"secondary-button",type:"button",disabled:b||p!==null||!(n!=null&&n.enabled)||O,onClick:()=>{U("logout")},children:p==="logout"?s("common.loading"):s("settings.tailscaleLogout")})]}):null]})}),l&&u?e.jsx(le,{heading:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),children:e.jsx(Cs,{controlServerUrlDraft:r,hostnameDraft:y,pendingAction:p,configDirty:T,onControlServerUrlChange:d,onHostnameChange:x,onSave:()=>{R()}})}):null]}),e.jsx(re,{open:!l&&u&&L,title:s("settings.tailscaleConfigModalTitle"),description:s("settings.tailscaleConfigModalDescription"),size:"regular",onClose:W,children:e.jsx(Cs,{controlServerUrlDraft:r,hostnameDraft:y,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:W,children:s("common.cancel")})}),onControlServerUrlChange:d,onHostnameChange:x,onSave:()=>{R()}})})]})}function Cs({controlServerUrlDraft:t,hostnameDraft:a,pendingAction:n,configDirty:i,footer:r,onControlServerUrlChange:d,onHostnameChange:y,onSave:x}){return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"settings-tailscale-form",children:[e.jsx(fe,{label:s("settings.tailscaleControlServer"),children:e.jsx("input",{"aria-label":s("settings.tailscaleControlServer"),className:"settings-text-input",placeholder:s("settings.tailscaleControlServerPlaceholder"),value:t,onChange:b=>d(b.target.value)})}),e.jsx(fe,{label:s("settings.tailscaleHostname"),children:e.jsx("input",{"aria-label":s("settings.tailscaleHostname"),className:"settings-text-input",placeholder:s("settings.tailscaleHostnamePlaceholder"),value:a,onChange:b=>y(b.target.value)})})]}),e.jsxs(X,{align:"start",className:"settings-tailscale-config-actions",children:[r,e.jsx("button",{className:"settings-button",type:"button",disabled:n!==null||!i,onClick:x,children:n==="save"?s("common.loading"):s("common.save")})]})]})}function ks(t){const a=t.trim();return a.length>0?a:null}function pe(t){return t instanceof oe||t instanceof Error?t.message:s("settings.tailscaleLoadFailed")}function la(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 ra(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 Ds(t){return t?t.includes("Tailscale CLI"):!1}function oa(t){return t==="macos"||t==="windows"}function ca(t){switch(t){case"macos":return"https://tailscale.com/download/mac";case"windows":return"https://tailscale.com/download/windows";default:return null}}function da(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 Gs({open:t,mobile:a,onClose:n}){const[i,r]=o.useState("tunnel"),d=o.useId(),y=[{id:"tunnel",label:s("settings.remoteAccessTunnelTab")},{id:"tailscale",label:s("settings.remoteAccessTailscaleTab")}],x=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"settings-model-tabs",role:"tablist","aria-label":s("settings.remoteAccessTabsLabel"),children:y.map(b=>{const P=`${d}-${b.id}-tab`,p=`${d}-${b.id}-panel`,w=i===b.id;return e.jsx("button",{id:P,type:"button",role:"tab",className:"settings-model-tab","data-active":w?"true":void 0,"aria-selected":w,"aria-controls":p,onClick:()=>r(b.id),children:b.label},b.id)})}),i==="tunnel"?e.jsx("div",{id:`${d}-tunnel-panel`,"aria-labelledby":`${d}-tunnel-tab`,role:"tabpanel",children:e.jsx(Wn,{})}):e.jsx("div",{id:`${d}-tailscale-panel`,"aria-labelledby":`${d}-tailscale-tab`,role:"tabpanel",children:e.jsx(ia,{configMode:"inline"})})]});return a?e.jsx(Qe,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),height:"full",kind:"form",showHandle:!0,onClose:n,children:x}):e.jsx(re,{open:t,title:s("settings.remoteAccessModalTitle"),description:s("settings.remoteAccessModalDescription"),size:"wide",onClose:n,children:x})}function Ms({title:t,description:a,actions:n,content:i,className:r}){return e.jsx(Ot,{className:r,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,i?e.jsx("div",{className:"mobile-page-header-content",children:i}):null]})})}const Ys={start:43e3,end:47999};function ua(t){return t==="appearance"||t==="ability-management"||t==="model-management"||t==="provider-management"||t==="server-connection"||t==="remote-access"||t==="security-privacy"||t==="software-update"}function ga(t){return ua(t)?t==="model-management"||t==="provider-management"?"ability-management":t:null}function ma(t){return t==="en-US"?s("locale.enUS"):s("locale.zhCN")}function ha(t){return t==="beta"?s("settings.releaseBeta"):s("settings.releaseStable")}function pa(t){switch(t){case"acceptEdits":return s("settings.permissionModeAcceptEdits");case"bypassPermissions":return s("settings.permissionModeBypassPermissions");default:return s("settings.permissionModeDefault")}}function ba(){const t=Es(),{theme:a,selectedTheme:n,autoTheme:i,setTheme:r,setAutoTheme:d}=Dt(),y=ft(k=>k),x=Ee(k=>k.profile.language),b=Ee(k=>k.profile.defaultPermissionMode),P=ue(k=>k.sessionDisplaySortMode),p=ue(k=>k.showSystemFiles),w=ue(k=>k.notificationPreferences.notifyOnPermissionRequest),D=ue(k=>k.notificationPreferences.notifyOnSessionCompleted),v=ue(k=>k.notificationPreferences.notifyOnSessionFailed),L={language:x,defaultPermissionMode:b,debugPortPools:Ee(k=>k.profile.debugPortPools)??Ys},N=De(),g=vt(y.platform),m=g,j=Ze(y)??"",[M,f]=o.useState(j);o.useEffect(()=>{f(j)},[j]);function l(){jt.clear(),Re.resetToLocalFallback(),t("/login",{replace:!0})}function u(k){r(k)}function S(k){d(k)}function T(k){try{return xt(k)}catch{return null}}const O=T(M),J=O!==null&&O!==j;function q(k){k.preventDefault(),O&&Z.update({hosts:y.hosts.map(G=>G.id===y.activeHostId?{...G,baseUrl:O,updatedAt:new Date().toISOString()}:G)})}const $=[{value:"default",label:s("settings.permissionModeDefault")},{value:"acceptEdits",label:s("settings.permissionModeAcceptEdits")},{value:"bypassPermissions",label:s("settings.permissionModeBypassPermissions")}],U=[{value:"createdAt",label:s("settings.sessionSortModeCreatedAt")},{value:"updatedAt",label:s("settings.sessionSortModeUpdatedAt")},{value:"title",label:s("settings.sessionSortModeTitle")}];function R(k){Z.update({releaseChannel:k==="beta"?"beta":"stable"})}function _(k){Z.update({autoReconnect:k})}function B(k){Z.update({autoCheckUpdate:k})}function W(k){const G=k==="acceptEdits"||k==="bypassPermissions"?k:"default";Re.updateProfile({defaultPermissionMode:G}).catch(()=>{})}function z(k){const G=k==="updatedAt"||k==="title"?k:"createdAt";ge.setSessionDisplaySortMode(G)}function C(k){ge.setShowSystemFiles(k)}function A(k){ge.setNotificationPreferences({notifyOnPermissionRequest:k})}function E(k){ge.setNotificationPreferences({notifyOnSessionCompleted:k})}function h(k){ge.setNotificationPreferences({notifyOnSessionFailed:k})}async function F(k){await Re.updateProfile({debugPortPools:k})}return{platform:N,theme:a,selectedTheme:n,autoTheme:i,applyTheme:u,applyAutoTheme:S,runtimeConfig:y,accountPreferences:L,sessionDisplaySortMode:P,showSystemFiles:p,notifyOnPermissionRequest:w,notifyOnSessionCompleted:D,notifyOnSessionFailed:v,showServerSettings:m,canConfigureServerAddress:g,hostBaseUrlDraft:M,setHostBaseUrlDraft:f,canSaveHostBaseUrl:J,permissionModeOptions:$,sessionDisplaySortModeOptions:U,handleHostBaseUrlSubmit:q,handleLogout:l,updateReleaseChannel:R,updateAutoReconnect:_,updateAutoCheckUpdate:B,updateDefaultPermissionMode:W,updateSessionDisplaySortMode:z,updateShowSystemFiles:C,updateNotifyOnPermissionRequest:A,updateNotifyOnSessionCompleted:E,updateNotifyOnSessionFailed:h,updateDebugPortPools:F}}function Ba(){const t=ba(),a=kt();return t.platform.isMobile?e.jsx(va,{model:t,appVersion:a}):e.jsx(fa,{model:t,appVersion:a})}function fa({model:t,appVersion:a}){const[n,i]=o.useState(!1),[r,d]=o.useState(!1),{theme:y,selectedTheme:x,autoTheme:b,applyTheme:P,applyAutoTheme:p,runtimeConfig:w,accountPreferences:D,sessionDisplaySortMode:v,showSystemFiles:L,notifyOnPermissionRequest:N,notifyOnSessionCompleted:g,notifyOnSessionFailed:m,showServerSettings:j,hostBaseUrlDraft:M,setHostBaseUrlDraft:f,canSaveHostBaseUrl:l,permissionModeOptions:u,sessionDisplaySortModeOptions:S,platform:T,handleHostBaseUrlSubmit:O,handleLogout:J,updateReleaseChannel:q,updateAutoReconnect:$,updateAutoCheckUpdate:U,updateDefaultPermissionMode:R,updateSessionDisplaySortMode:_,updateShowSystemFiles:B,updateNotifyOnPermissionRequest:W,updateNotifyOnSessionCompleted:z,updateNotifyOnSessionFailed:C,updateDebugPortPools:A}=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(Rs,{})})]}),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(H,{checked:b,label:s("settings.autoTheme"),onChange:p})]}),e.jsx("span",{className:"settings-theme-note",children:s("settings.autoThemeDescription")})]}),e.jsx("div",{className:"theme-selector",children:As.map(E=>e.jsxs("button",{type:"button",className:`theme-card ${x===E.id&&!b?"active":""}`,"aria-pressed":x===E.id&&!b,disabled:b,onClick:()=>P(E.id),children:[e.jsx("span",{className:"theme-preview",style:{background:E.color}}),e.jsx("span",{className:"theme-label",children:Us(E)}),x===E.id&&!b?e.jsx("span",{className:"theme-check",children:"✓"}):null]},E.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:v,onChange:E=>_(E.target.value),children:S.map(E=>e.jsx("option",{value:E.value,children:E.label},E.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(H,{checked:L,label:s("settings.showSystemFiles"),onChange:B})})]})]})]}),j?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:O,children:[e.jsx("input",{"aria-label":s("settings.serverAddress"),className:"settings-text-input",value:M,onChange:E=>f(E.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(H,{checked:w.autoReconnect,label:s("settings.autoReconnect"),onChange:$})})]})]})]}):null,e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.abilityManagement")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.providerManagement")}),e.jsx("span",{className:"settings-row-description",children:s("settings.providerManagementDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsx(Hs,{})})]}),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(Vs,{})})]})]})]}),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:()=>d(!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:D.defaultPermissionMode,onChange:E=>R(E.target.value),children:u.map(E=>e.jsx("option",{value:E.value,children:E.label},E.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(zs,{})})]}),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(H,{checked:N,label:s("settings.notifyOnPermissionRequest"),onChange:W})})]}),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(H,{checked:g,label:s("settings.notifyOnSessionCompleted"),onChange:z})})]}),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(H,{checked:m,label:s("settings.notifyOnSessionFailed"),onChange:C})})]})]})]}),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(Zs,{value:D.debugPortPools,onSave:A})})]}),e.jsxs("section",{className:"settings-section",children:[e.jsx("h2",{className:"settings-section-title",children:s("settings.softwareUpdate")}),e.jsxs("div",{className:"settings-card",children:[e.jsxs("div",{className:"settings-row",children:[e.jsxs("div",{className:"settings-row-label",children:[e.jsx("span",{className:"settings-row-title",children:s("settings.releaseChannel")}),e.jsx("span",{className:"settings-row-description",children:s("settings.releaseChannelDescription")})]}),e.jsx("div",{className:"settings-row-control",children:e.jsxs("select",{"aria-label":s("settings.releaseChannel"),className:"settings-select",value:w.releaseChannel,onChange:E=>q(E.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(Ks,{})})]}),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(H,{checked:w.autoCheckUpdate,label:s("settings.autoCheckUpdate"),onChange:U})})]}),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(Bs,{})})]})]})]})]}),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:()=>i(!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:J,type:"button",children:s("common.logout")})]})]}),e.jsx(Vt,{isOpen:n,onClose:()=>i(!1)}),e.jsx(Gs,{open:r,mobile:!1,onClose:()=>d(!1)})]})}function va({model:t,appVersion:a}){const n=Es(),{section:i}=Mt(),r=ga(i),d=[{id:"appearance",title:s("settings.appearance"),description:s("settings.appearanceSectionSummary"),value:ma(t.accountPreferences.language),icon:e.jsx(Ca,{})}];return t.showServerSettings&&d.push({id:"server-connection",title:s("settings.serverConnection"),description:s("settings.serverConnectionSectionSummary"),value:Ze(t.runtimeConfig)??"",icon:e.jsx(ka,{})}),d.push({id:"ability-management",title:s("settings.abilityManagement"),description:s("settings.abilityManagementSectionSummary"),value:s("settings.abilityManagementNavValue"),icon:e.jsx(Pa,{})},{id:"remote-access",title:s("settings.remoteAccess"),description:s("settings.remoteAccessSectionSummary"),value:s("settings.remoteAccessNavValue"),icon:e.jsx(Ma,{})},{id:"security-privacy",title:s("settings.securityPrivacy"),description:s("settings.securityPrivacySectionSummary"),value:pa(t.accountPreferences.defaultPermissionMode),icon:e.jsx(La,{})},{id:"software-update",title:s("settings.softwareUpdate"),description:s("settings.softwareUpdateSectionSummary"),value:ha(t.runtimeConfig.releaseChannel),icon:e.jsx(Da,{})}),(r?d.find(x=>x.id===r)??null:null)?e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(Ms,{title:s("settings.title")}),e.jsxs("div",{className:"settings-mobile-container",children:[r==="appearance"?e.jsx(xa,{model:t}):null,r==="ability-management"?e.jsx(Sa,{}):null,r==="server-connection"&&t.showServerSettings?e.jsx(ja,{model:t}):null,r==="remote-access"?e.jsx(wa,{model:t}):null,r==="security-privacy"?e.jsx(ya,{model:t}):null,r==="software-update"?e.jsx(Ta,{model:t}):null]}),e.jsx(Ls,{onLogout:t.handleLogout})]}):e.jsxs("div",{className:"settings-page settings-page-mobile mobile-page-scroll-root mobile-page-with-top-header",children:[e.jsx(Ms,{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:d.map(x=>e.jsxs("button",{type:"button",className:"settings-mobile-nav-row",onClick:()=>n(`/settings/${x.id}`),children:[e.jsx("span",{className:"settings-mobile-nav-icon",children:x.icon}),e.jsxs("span",{className:"settings-mobile-nav-copy",children:[e.jsx("span",{className:"settings-mobile-nav-title",children:x.title}),e.jsx("span",{className:"settings-mobile-nav-description",children:x.description})]}),e.jsxs("span",{className:"settings-mobile-nav-trailing",children:[x.value?e.jsx("span",{className:"settings-mobile-nav-value",children:x.value}):null,e.jsx(Ea,{})]})]},x.id))})}),e.jsx("div",{className:"settings-footer settings-footer-mobile",children:e.jsxs("span",{className:"settings-version",children:["CodingNS v",a]})})]}),e.jsx(Ls,{onLogout:t.handleLogout})]})}function xa({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(Rs,{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(H,{checked:t.autoTheme,label:s("settings.autoTheme"),onChange:t.applyAutoTheme})]}),As.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:Us(a)})]}),e.jsx("span",{className:"settings-mobile-choice-indicator","aria-hidden":"true",children:n?e.jsx(Ra,{}):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(H,{checked:t.showSystemFiles,label:s("settings.showSystemFiles"),onChange:t.updateShowSystemFiles})]})]})]})]})}function ja({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(H,{checked:t.runtimeConfig.autoReconnect,label:s("settings.autoReconnect"),onChange:t.updateAutoReconnect})]})})]})]})}function ya({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(zs,{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(Zs,{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(H,{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(H,{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(H,{checked:t.notifyOnSessionFailed,label:s("settings.notifyOnSessionFailed"),onChange:t.updateNotifyOnSessionFailed})]})]})]})]})}function Zs(t){const[a,n]=o.useState(()=>Ps(t.value)),[i,r]=o.useState(!1),[d,y]=o.useState(null),[x,b]=o.useState(!1);o.useEffect(()=>{n(Ps(t.value))},[t.value]);async function P(){y(null),b(!1);let p;try{p=Na(a)}catch(w){y(w instanceof Error?w.message:s("settings.debugPortPoolSaveFailed"));return}try{r(!0),await t.onSave(p),b(!0)}catch(w){y(w instanceof Error?w.message:s("settings.debugPortPoolSaveFailed"))}finally{r(!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(D=>({...D,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(D=>({...D,end:w}))}}),e.jsx("button",{type:"button",className:t.compact?"settings-mobile-primary-button":"settings-button",disabled:i,onClick:()=>{P()},children:i?s("common.loading"):s("common.save")}),x?e.jsx("span",{children:s("settings.debugPortPoolSaved")}):null]})})]}),d?e.jsx("p",{className:"status-text settings-debug-port-pool-feedback","data-tone":"error",children:d}):null]})}function Ps(t){const a=t??Ys;return{start:String(a.start),end:String(a.end)}}function Na(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 wa({model:t}){const[a,n]=o.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(Gs,{open:a,mobile:!0,onClose:()=>n(!1)})]})}function Sa(){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(Hs,{})]}),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(Vs,{})]})]})]})}function Ta({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(Ks,{})})]}),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(H,{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(Bs,{})})]})]})}function Ls({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 H({checked:t,label:a,onChange:n}){return e.jsxs("label",{className:"settings-mobile-switch","aria-label":a,onClick:i=>{i.target instanceof HTMLInputElement||(i.preventDefault(),n(!t))},children:[e.jsx("input",{type:"checkbox","aria-label":a,checked:t,onChange:i=>n(i.target.checked)}),e.jsx("span",{className:"settings-mobile-switch-track","aria-hidden":"true",children:e.jsx("span",{className:"settings-mobile-switch-thumb"})})]})}function Ca(){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 ka(){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 Da(){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 Ma(){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 Pa(){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 La(){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 Ea(){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 Ra(){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{Ba as SettingsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e,t}from"./index-DSw-TkQL.js";import{u as l,c,n as p}from"./WorkbenchLayout-DlbgBT3n.js";import{N as m}from"./App-B9HcTkMT.js";import"./model-switch-api-C-l8-E1S.js";import"./window-BVUB8gMK.js";import"./event-DvH9tcej.js";import"./WorkbenchModal-LNfB69qx.js";import"./relay-entry-BmLkMKuq.js";function b(){const{currentWorkspaceId:s,currentSessionId:a,navigationGroups:i}=l();if(!s)return e.jsx("main",{className:"mobile-feature-page mobile-page-scroll-root",children:e.jsxs("article",{className:"mobile-feature-empty surface-card",children:[e.jsx("h1",{children:t("shell.filesEntry")}),e.jsx("p",{children:t("shell.toolsWorkspaceRequiredBody")})]})});const o=i.flatMap(r=>r.sessions).find(r=>r.sessionId===a&&r.workspaceId===s),n=o?c(s,o.sessionId):p(s);return e.jsx(m,{to:`${n}?toolPanel=files`,replace:!0})}export{b as ToolFilesPage};
|