ltcai 12.0.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -52
- package/docs/CHANGELOG.md +23 -0
- package/docs/CI_AND_RELEASE_GATES.md +13 -7
- package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
- package/docs/DEVELOPMENT.md +11 -11
- package/docs/ONBOARDING.md +1 -1
- package/docs/OPERATIONS.md +1 -1
- package/docs/ROADMAP.md +2 -2
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +1 -1
- package/docs/kg-schema.md +1 -1
- package/lattice_brain/__init__.py +1 -1
- package/latticeai/__init__.py +1 -1
- package/latticeai/services/architecture_readiness.py +1 -1
- package/latticeai/services/product_readiness.py +1 -1
- package/package.json +1 -1
- package/scripts/check_current_release_docs.mjs +1 -1
- package/scripts/release_screen_claims.json +11 -0
- package/src-tauri/Cargo.lock +10 -10
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/tauri.conf.json +1 -1
- package/static/app/asset-manifest.json +44 -44
- package/static/app/assets/{Act-Cf1L2709.js → Act-DCRUH46a.js} +2 -2
- package/static/app/assets/{AdminConsole-DPAbLTYV.js → AdminConsole-BFBj6OvN.js} +1 -1
- package/static/app/assets/{Brain-DqamGrj-.js → Brain-BXcoxIvb.js} +2 -2
- package/static/app/assets/{BrainHome-MHe2_RYs.js → BrainHome-IhcEPC3v.js} +1 -1
- package/static/app/assets/{BrainSignals-CQPPfyyH.js → BrainSignals-DrfYSNjR.js} +1 -1
- package/static/app/assets/{Capture-DGdIH_Zc.js → Capture-BsO_OAeh.js} +1 -1
- package/static/app/assets/{Chronicle-C-UlCJoJ.js → Chronicle-BUj_UH3D.js} +1 -1
- package/static/app/assets/{CommandPalette-WNT4EqUX.js → CommandPalette-B4SWOaR-.js} +1 -1
- package/static/app/assets/{DigitalBrainExplorer-CEBH5Cwc.js → DigitalBrainExplorer-S1GSsyIT.js} +1 -1
- package/static/app/assets/{Library-C6xd1dlf.js → Library-CKUR2eVb.js} +1 -1
- package/static/app/assets/{LivingBrain-BEk-0ohw.js → LivingBrain--2UoV3Ki.js} +1 -1
- package/static/app/assets/{ProductFlow-CZLm5iXh.js → ProductFlow-D7rB6Xsu.js} +1 -1
- package/static/app/assets/{ReviewCard-CEHG6evf.js → ReviewCard-UzQZ1ULT.js} +1 -1
- package/static/app/assets/{RunsListPanel-CLtEJSRW.js → RunsListPanel-CDGFQYMo.js} +1 -1
- package/static/app/assets/{System-CAxwBUXw.js → System-0OSxZrTp.js} +1 -1
- package/static/app/assets/{WorkflowGraph-Dj10RuGE.js → WorkflowGraph-BIcWZTUQ.js} +1 -1
- package/static/app/assets/{WorkflowsPanel-Kyeh_LIT.js → WorkflowsPanel-BeT5fmbk.js} +2 -2
- package/static/app/assets/{actHelpers-CtSmK9Dw.js → actHelpers-DhutJObL.js} +1 -1
- package/static/app/assets/arrow-left-BwJfcH8J.js +1 -0
- package/static/app/assets/{bot-DhUGRel2.js → bot-D8tZzKMD.js} +1 -1
- package/static/app/assets/{brain-CLkhHsHF.js → brain-DP2JPXSV.js} +1 -1
- package/static/app/assets/{button-CmaEqG1T.js → button-Tzf5D7L1.js} +1 -1
- package/static/app/assets/circle-check-D68nHcgS.js +1 -0
- package/static/app/assets/{circle-pause-l96izbxj.js → circle-pause-Druue_tZ.js} +1 -1
- package/static/app/assets/{circle-play-CrZa25_q.js → circle-play-BAht4SSW.js} +1 -1
- package/static/app/assets/{cpu-BaXudqwl.js → cpu-BPbmZRPp.js} +1 -1
- package/static/app/assets/{download-hCVFPiyc.js → download-BmxPZEwU.js} +1 -1
- package/static/app/assets/{folder-open-CHL82Yp7.js → folder-open-DokOmFQJ.js} +1 -1
- package/static/app/assets/{hard-drive-DDzET7lk.js → hard-drive-Cw6aEA2h.js} +1 -1
- package/static/app/assets/{index-D2H-wSl6.js → index-DhszK7A3.js} +3 -3
- package/static/app/assets/{input-Df1CAY_I.js → input-BCdHoZXA.js} +1 -1
- package/static/app/assets/{link-2-xNnTIX1_.js → link-2-CCModn4z.js} +1 -1
- package/static/app/assets/{permissionCopy-D3aWHco-.js → permissionCopy-BSp1jYG7.js} +1 -1
- package/static/app/assets/{primitives-BioD2slS.js → primitives-D01WcJn7.js} +1 -1
- package/static/app/assets/search-C_zAGfvO.js +1 -0
- package/static/app/assets/{share-2-FkzGf8Df.js → share-2-DMMkM8Iu.js} +1 -1
- package/static/app/assets/{shield-alert-B3dwzik4.js → shield-alert--mrCWQko.js} +1 -1
- package/static/app/assets/{sourceMeta-DQSY_tah.js → sourceMeta-nvd3Cdz3.js} +1 -1
- package/static/app/assets/{textarea-P8o6pvOP.js → textarea-DfayhQiX.js} +1 -1
- package/static/app/assets/{useFocusTrap-hswOIkXE.js → useFocusTrap-C5NsTvsI.js} +1 -1
- package/static/app/assets/{useMutation-OJLrYSRA.js → useMutation-D7IMQTeI.js} +1 -1
- package/static/app/assets/{workspace-BCuk3Ku9.js → workspace-C7xidB7c.js} +1 -1
- package/static/app/index.html +1 -1
- package/static/sw.js +1 -1
- package/static/app/assets/arrow-left-CRl5EO4D.js +0 -1
- package/static/app/assets/circle-check-CFgejkOS.js +0 -1
- package/static/app/assets/search-BzBw8YcW.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,n as t,t as n}from"./jsx-runtime-bzQ4Vb5N.js";import{n as r}from"./QueryClientProvider-B3OjqSyJ.js";import{t as i}from"./useMutation-OJLrYSRA.js";import{_ as a,a as o,c as s,d as c,g as l,h as u,i as d,l as f,m as p,n as m,p as h,r as g,s as _,t as v,u as y,v as b}from"./primitives-BioD2slS.js";import{t as x}from"./circle-check-CFgejkOS.js";import{a as S,i as C,n as w,r as T,t as E}from"./permissionCopy-D3aWHco-.js";import{t as D}from"./shield-alert-B3dwzik4.js";import{F as O,H as k,R as A,S as j,c as M,h as N,k as P,o as F,p as I,t as L,v as R,y as ee,z}from"./index-D2H-wSl6.js";import{t as B}from"./button-CmaEqG1T.js";import{t as V}from"./input-Df1CAY_I.js";import"./workspace-BCuk3Ku9.js";var H=A(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),te=A(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),U=e(t()),W=n(),G={low:`success`,medium:`warning`,high:`danger`};function K(e,t){return t===`ko`&&e.label_ko||e.label}function q(e,t){return t===`ko`&&e.summary_ko||e.summary}function J(e,t){return t===`ko`&&e.warning_ko||e.warning||``}function ne(){let e=r(),t=z(e=>e.language),[n,o]=U.useState(null),[s,c]=U.useState(!1),[d,f]=U.useState(``),m=k({queryKey:[`networkBoundary`],queryFn:R.networkBoundary}),_=k({queryKey:[`cloudStatus`],queryFn:R.cloudStatus}),v=i({mutationFn:e=>R.setNetworkBoundary(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`networkBoundary`]}),o(null),c(!1))}}),y=i({mutationFn:e=>R.setHybridPolicy(e),onSuccess:()=>e.invalidateQueries({queryKey:[`networkBoundary`]})}),x=i({mutationFn:e=>R.previewCloudContext(e)}),[S,C]=U.useState([]),w=i({mutationFn:e=>R.setNodeSensitivity(e.nodeId,e.localOnly),onSuccess:(e,t)=>{e.ok&&C(e=>t.localOnly?[...e,t.nodeId]:e.filter(e=>e!==t.nodeId))}}),T=m.data?.ok?m.data.data:void 0,E=T?.catalog??[],O=T?.mode??``,A=n??O,M=E.find(e=>e.id===A),N=M?.requires_ack&&A!==O?M:void 0,P=N!==void 0&&!s,F=A===O,I=T?.policy??{},L=x.data?.ok?x.data.data:void 0;return m.isLoading?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:j(t,`system.network.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:j(t,`ui.loading`)})})]}):!T||E.length===0?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:j(t,`system.network.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:m.data?.error})})]}):(0,W.jsxs)(h,{className:`settings-dial`,id:`network-boundary-panel`,"data-testid":`network-boundary-panel`,children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(H,{className:`h-4 w-4`,"aria-hidden":`true`}),j(t,`system.network.title`)]}),(0,W.jsx)(u,{children:j(t,`system.network.hint`)})]}),(0,W.jsxs)(p,{className:`space-y-3`,children:[(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[j(t,`system.network.current`),`:`,` `,(0,W.jsx)(`strong`,{"data-testid":`network-boundary-active`,children:t===`ko`&&T.label_ko||T.label})]}),(0,W.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":j(t,`system.network.title`),children:E.map(e=>{let n=e.id===A;return(0,W.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"data-testid":`network-boundary-option-${e.id}`,onClick:()=>{o(e.id),c(!1),v.reset()},className:`settings-dial-option ${n?`is-active`:``}`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`strong`,{className:`text-sm`,children:K(e,t)}),(0,W.jsx)(b,{variant:G[e.risk]||`warning`,children:j(t,`system.permission.risk.${e.risk}`)}),e.id===O?(0,W.jsx)(b,{variant:`muted`,children:j(t,`system.network.current`)}):null]}),(0,W.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:q(e,t)})]},e.id)})}),N?(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,W.jsx)(D,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{children:J(N,t)})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-ack`,checked:s,onChange:e=>c(e.target.checked)}),j(t,`system.network.ack`)]})]}):null,(0,W.jsx)(B,{"data-testid":`network-boundary-apply`,disabled:F||P||v.isPending,onClick:()=>v.mutate({mode:A,ack:s}),children:j(t,`system.network.apply`)}),v.data&&!v.data.ok?(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:v.data.error}):null,v.data?.ok?(0,W.jsx)(b,{variant:`success`,"data-testid":`network-boundary-applied`,children:j(t,`ui.requestCompleted`)}):null,(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(t,`system.network.preview.title`)}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:j(t,`system.network.preview.hint`)}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(`input`,{type:`text`,"data-testid":`network-boundary-probe`,value:d,onChange:e=>f(e.target.value),placeholder:j(t,`system.network.preview.placeholder`),className:`min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1 text-xs`}),(0,W.jsx)(B,{variant:`outline`,"data-testid":`network-boundary-preview`,disabled:!d.trim()||x.isPending,onClick:()=>x.mutate(d.trim()),children:j(t,`system.network.preview.run`)})]}),L?(0,W.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-boundary-preview-result`,children:[L.allows_cloud?null:(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:j(t,`system.network.preview.localOnly`)}),L.would_block?(0,W.jsx)(b,{variant:`danger`,children:j(t,`system.network.preview.blocked`)}):null,L.titles.length===0?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:j(t,`system.network.preview.empty`)}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[j(t,`system.network.preview.count`,{count:L.titles.length}),` · `,j(t,`system.network.preview.tokens`,{tokens:L.token_estimate})]}),(0,W.jsx)(`ul`,{className:`space-y-0.5`,children:L.titles.map((e,n)=>{let r=L.node_ids[n],i=r?S.includes(r):!1;return(0,W.jsxs)(`li`,{className:`flex items-start justify-between gap-2 text-xs`,children:[(0,W.jsxs)(`span`,{className:i?`line-through opacity-60`:void 0,children:[`· `,e]}),r?(0,W.jsx)(`button`,{type:`button`,"data-testid":`network-boundary-hold-${n}`,className:`shrink-0 underline underline-offset-2 opacity-80 hover:opacity-100`,disabled:w.isPending,onClick:()=>w.mutate({nodeId:r,localOnly:!i}),children:j(t,i?`system.network.preview.release`:`system.network.preview.hold`)}):null]},`${r||e}-${n}`)})})]})]}):null,x.data&&!x.data.ok?(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:x.data.error}):null]}),T.allows_cloud?(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,"data-testid":`network-boundary-policy`,children:[(0,W.jsx)(X,{language:t,loading:_.isLoading,status:ee(_.data?.data,!!_.data?.ok)}),(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(t,`system.network.policy.title`)}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-auto-commit`,checked:!!I.auto_commit,disabled:y.isPending,onChange:e=>y.mutate({auto_commit:e.target.checked})}),(0,W.jsxs)(`span`,{children:[j(t,`system.network.policy.autoCommit`),(0,W.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:j(t,`system.network.policy.autoCommitHint`)})]})]}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-multimodal`,checked:!!I.allow_multimodal,disabled:y.isPending,onChange:e=>y.mutate({allow_multimodal:e.target.checked})}),(0,W.jsxs)(`span`,{children:[j(t,`system.network.policy.multimodal`),(0,W.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:j(t,`system.network.policy.multimodalHint`)})]})]})]}):null,(0,W.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(t,`system.network.guards`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:j(t,`system.network.guards.detail`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:j(t,`system.network.preview.autoHeld`)})]})]})]})}function Y(e,t){return t.mode===`cli_oauth`&&t.provider&&t.model?j(e,`system.network.cloudStatus.identity.cli`,{provider:t.provider,model:t.model}):t.provider&&t.model?j(e,`system.network.cloudStatus.identity`,{provider:t.provider,model:t.model}):t.model?j(e,`system.network.cloudStatus.identity.model`,{model:t.model}):t.provider}function X({language:e,loading:t,status:n}){let r=n.mode===`cli_oauth`?`system.network.cloudStatus.cli`:n.mode===`api_key`?`system.network.cloudStatus.apiKey`:`system.network.cloudStatus.none`,i=n.configured?Y(e,n):``;return(0,W.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-cloud-status`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(e,`system.network.cloudStatus.title`)}),t?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`network-cloud-status-loading`,children:j(e,`system.network.cloudStatus.loading`)}):n.configured?(0,W.jsxs)(`p`,{className:`text-xs`,"data-testid":`network-cloud-status-ready`,children:[j(e,r),i?` · ${i}`:``]}):(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`network-cloud-status-none`,children:[j(e,`system.network.cloudStatus.none`),(0,W.jsx)(`span`,{className:`mt-0.5 block`,children:j(e,`system.network.cloudStatus.none.hint`)})]})]})}var Z=[`proposal_first`,`workspace_writes_auto`,`knowledge_reads_auto`,`exec_auto`,`computer_observation_auto`,`computer_control_auto`,`circuit_breakers`];function re(e){return e===`strict`?{proposal_first:!0,workspace_writes_auto:!1,knowledge_reads_auto:!1,exec_auto:!1,computer_observation_auto:!1,computer_control_auto:!1,circuit_breakers:!0}:e===`trusted`?{proposal_first:!1,workspace_writes_auto:!0,knowledge_reads_auto:!0,exec_auto:!1,computer_observation_auto:!0,computer_control_auto:!1,circuit_breakers:!0}:e===`bypass`?{proposal_first:!1,workspace_writes_auto:!0,knowledge_reads_auto:!0,exec_auto:!0,computer_observation_auto:!0,computer_control_auto:!0,circuit_breakers:!0}:null}function ie(e){return{proposal_first:!!e.proposal_first,workspace_writes_auto:!!e.workspace_writes_auto,knowledge_reads_auto:!!e.knowledge_reads_auto,exec_auto:!!e.exec_auto,computer_observation_auto:!!e.computer_observation_auto,computer_control_auto:!!e.computer_control_auto,circuit_breakers:e.circuit_breakers!==!1}}function ae(e,t,n){return n===`auto`?j(e,t?`system.permission.preview.auto`:`system.permission.preview.ask`):j(e,t?`system.permission.preview.on`:`system.permission.preview.off`)}function oe(e,t){let n=`system.permission.risk.${t}`,r=j(e,n);return r===n?t:r}function se(e,t,n,r){let i=re(n.id),a=i===null,o=[{id:`risk`,label:j(e,`system.permission.preview.risk`),current:oe(e,t.risk),next:oe(e,n.risk),changed:t.risk!==n.risk},{id:`ack`,label:j(e,`system.permission.preview.ack`),current:j(e,t.requires_ack?`system.permission.preview.ack.yes`:`system.permission.preview.ack.no`),next:j(e,n.requires_ack?`system.permission.preview.ack.yes`:`system.permission.preview.ack.no`),changed:!!t.requires_ack!=!!n.requires_ack}];if(i)for(let t of Z){let n=r[t],a=i[t],s=t===`proposal_first`||t===`circuit_breakers`?`on`:`auto`;o.push({id:t,label:j(e,`system.permission.preview.cap.${t}`),current:ae(e,n,s),next:ae(e,a,s),changed:n!==a})}return{rows:o,fromCatalogOnly:a}}function ce(e,t){return{label:w(e,t),summary:T(e,t)}}var le={low:`success`,medium:`warning`,high:`danger`};function ue(){let e=r(),t=z(e=>e.language),[n,o]=U.useState(null),[s,c]=U.useState(!1),d=k({queryKey:[`permissionMode`],queryFn:R.permissionMode}),f=i({mutationFn:e=>R.setPermissionMode(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`permissionMode`]}),o(null),c(!1))}}),m=d.data?.ok?d.data.data:void 0,_=m?.catalog??[],v=m?.mode??``,y=n??v,x=_.find(e=>e.id===y),S=x?.requires_ack&&y!==v?x:void 0,O=S!==void 0&&!s,A=y===v,M=_.find(e=>e.id===v),N=!A&&x&&M&&m?se(t,M,x,ie(m)):null,P=M?ce(M,t):null,F=x?ce(x,t):null;return d.isLoading?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:j(t,`system.permission.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:j(t,`ui.loading`)})})]}):!m||_.length===0?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:j(t,`system.permission.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:d.data?.error})})]}):(0,W.jsxs)(h,{className:`settings-dial`,"data-testid":`permission-mode-panel`,children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(t,`system.permission.title`)}),(0,W.jsx)(u,{children:j(t,`system.permission.hint`)})]}),(0,W.jsxs)(p,{className:`space-y-3`,children:[(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[j(t,`system.permission.current`),`:`,` `,(0,W.jsx)(`strong`,{"data-testid":`permission-mode-active`,children:E(m,t)})]}),(0,W.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":j(t,`system.permission.title`),children:_.map(e=>{let n=e.id===y;return(0,W.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"data-testid":`permission-mode-option-${e.id}`,onClick:()=>{o(e.id),c(!1),f.reset()},className:`settings-dial-option ${n?`is-active`:``}`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`strong`,{className:`text-sm`,children:w(e,t)}),(0,W.jsx)(b,{variant:le[e.risk]||`warning`,children:j(t,`system.permission.risk.${e.risk}`)}),e.id===v?(0,W.jsx)(b,{variant:`muted`,children:j(t,`system.permission.current`)}):null]}),(0,W.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:T(e,t)})]},e.id)})}),N&&P&&F?(0,W.jsxs)(`div`,{className:`settings-preview`,"data-testid":`permission-mode-preview`,children:[(0,W.jsx)(`p`,{className:`settings-preview-title`,children:j(t,`system.permission.preview.title`)}),(0,W.jsx)(`p`,{className:`settings-preview-hint`,children:j(t,`system.permission.preview.hint`)}),(0,W.jsxs)(`div`,{className:`settings-preview-pair`,children:[(0,W.jsxs)(`div`,{className:`settings-preview-col`,children:[(0,W.jsx)(`span`,{children:j(t,`system.permission.preview.from`)}),(0,W.jsx)(`strong`,{children:P.label}),(0,W.jsx)(`p`,{children:P.summary})]}),(0,W.jsxs)(`div`,{className:`settings-preview-col is-next`,children:[(0,W.jsx)(`span`,{children:j(t,`system.permission.preview.to`)}),(0,W.jsx)(`strong`,{children:F.label}),(0,W.jsx)(`p`,{children:F.summary})]})]}),(0,W.jsx)(`ul`,{className:`settings-preview-rows`,children:N.rows.filter(e=>e.changed).map(e=>(0,W.jsxs)(`li`,{"data-testid":`permission-mode-preview-row-${e.id}`,children:[(0,W.jsx)(`span`,{className:`settings-preview-row-label`,children:e.label}),(0,W.jsx)(`span`,{className:`settings-preview-row-from`,children:e.current}),(0,W.jsx)(`span`,{className:`settings-preview-row-to`,children:e.next})]},e.id))}),N.fromCatalogOnly?(0,W.jsx)(`p`,{className:`settings-preview-limit`,"data-testid":`permission-mode-preview-limit`,children:j(t,`system.permission.preview.unknown`)}):null]}):null,S?(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,W.jsx)(D,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,W.jsx)(`span`,{children:C(S,t)})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,"data-testid":`permission-mode-ack`,checked:s,onChange:e=>c(e.target.checked)}),j(t,`system.permission.ack`)]})]}):null,(0,W.jsx)(B,{"data-testid":`permission-mode-apply`,disabled:A||O||f.isPending,onClick:()=>f.mutate({mode:y,ack:s}),children:j(t,`system.permission.apply`)}),f.data&&!f.data.ok?(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:f.data.error}):null,f.data?.ok?(0,W.jsx)(b,{variant:`success`,"data-testid":`permission-mode-applied`,children:j(t,`ui.requestCompleted`)}):null,(0,W.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(t,`system.permission.guards`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:j(t,`system.permission.guards.detail`)})]})]})]})}var de=[{id:`identity`,labelKey:`system.group.identity`},{id:`data`,labelKey:`system.group.data`},{id:`system`,labelKey:`system.group.system`}],fe=[{id:`account`,labelKey:`system.tab.account`,group:`identity`},{id:`workspaces`,labelKey:`system.tab.workspaces`,group:`identity`},{id:`snapshots`,labelKey:`system.tab.snapshots`,group:`data`},{id:`activity`,labelKey:`system.tab.activity`,group:`data`},{id:`settings`,labelKey:`system.tab.settings`,group:`system`},{id:`network`,labelKey:`system.tab.network`,group:`system`},{id:`admin`,labelKey:`system.tab.admin`,group:`system`}];function pe({initialTab:e}){let t=z(e=>e.mode),n=z(e=>e.language),[r,i]=U.useState(e||`account`);U.useEffect(()=>{fe.some(t=>t.id===e)&&i(e)},[e]);let a=t===`basic`?fe.filter(e=>e.id===`account`||e.id===`workspaces`||e.id===`snapshots`||e.id===`settings`):fe,o=e=>{i(e),F(`/`+{account:`account`,workspaces:`workspace-admin`,snapshots:`snapshots`,activity:`activity`,network:`network`,settings:`settings`,admin:`system-admin`}[e])};return(0,W.jsxs)(`div`,{className:`product-page settings-page space-y-5 pb-8`,children:[(0,W.jsxs)(`header`,{className:`page-hero`,children:[(0,W.jsxs)(`div`,{className:`page-kicker`,children:[(0,W.jsx)(P,{className:`h-4 w-4`}),` `,j(n,`system.kicker`)]}),(0,W.jsx)(`h1`,{className:`page-title`,children:j(n,`system.title`)}),(0,W.jsx)(`p`,{className:`page-copy`,children:j(n,`system.body`)})]}),(0,W.jsx)(`div`,{className:`system-tab-groups`,"data-testid":`system-tab-groups`,children:de.map(e=>({group:e,items:a.filter(t=>t.group===e.id)})).filter(({items:e})=>e.length>0).map(({group:e,items:t})=>{let i=`system-group-${e.id}`;return(0,W.jsxs)(`div`,{className:`system-tab-group`,children:[(0,W.jsx)(`span`,{id:i,className:`system-tab-group-label`,children:j(n,e.labelKey)}),(0,W.jsx)(c,{ariaLabelledBy:i,tabs:t.map(e=>({id:e.id,label:j(n,e.labelKey)})),value:r,onChange:e=>o(e)})]},e.id)})}),r===`account`?(0,W.jsx)(me,{}):null,r===`workspaces`?(0,W.jsx)(ge,{}):null,r===`settings`?(0,W.jsx)(be,{}):null,r===`snapshots`?(0,W.jsx)(_e,{}):null,r===`activity`?(0,W.jsx)(ve,{}):null,r===`network`?(0,W.jsx)(ye,{}):null,r===`admin`?(0,W.jsx)(Oe,{}):null]})}function me(){let e=r(),t=z(e=>e.language),n=z(e=>e.setWorkspaceId),c=k({queryKey:[`profile`],queryFn:R.profile}),d=k({queryKey:[`sso`],queryFn:R.ssoConfig}),[f,g]=U.useState(``),[_,y]=U.useState(``),[b,x]=U.useState(``),[S,C]=U.useState(``),[w,T]=U.useState(``),E=e=>{e.ok&&(L(),n(null))},D=i({mutationFn:()=>R.login(f,_),onSuccess:E}),A=i({mutationFn:()=>R.register({email:f,password:_,name:b,nickname:S}),onSuccess:E}),M=i({mutationFn:()=>R.updateProfile({name:b,nickname:S}),onSuccess:()=>e.invalidateQueries({queryKey:[`profile`]})}),N=i({mutationFn:()=>R.changePassword(_,w)});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(t,`system.account.profile`),result:c.data,children:e=>(0,W.jsx)(o,{data:e})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(O,{className:`h-4 w-4`}),` `,j(t,`system.account.title`)]}),(0,W.jsx)(u,{children:j(t,`system.account.detail`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(V,{value:f,onChange:e=>g(e.target.value),placeholder:j(t,`system.account.email`)}),(0,W.jsx)(V,{type:`password`,value:_,onChange:e=>y(e.target.value),placeholder:j(t,`system.account.password`)}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,W.jsx)(V,{value:b,onChange:e=>x(e.target.value),placeholder:j(t,`system.account.name`)}),(0,W.jsx)(V,{value:S,onChange:e=>C(e.target.value),placeholder:j(t,`system.account.nickname`)})]}),(0,W.jsx)(V,{type:`password`,value:w,onChange:e=>T(e.target.value),placeholder:j(t,`system.account.newPassword`)}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{onClick:()=>D.mutate(),disabled:!f||!_||D.isPending,children:j(t,`system.account.login`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>A.mutate(),disabled:!f||!_||A.isPending,children:j(t,`system.account.register`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>M.mutate(),disabled:M.isPending,children:j(t,`system.account.save`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>N.mutate(),disabled:!_||!w||N.isPending,children:j(t,`system.account.changePassword`)}),(0,W.jsx)(v,{label:j(t,`system.account.logout`),action:()=>R.logout(),onSuccess:E})]}),[D.data,A.data,M.data,N.data].filter(Boolean).map((e,n)=>(0,W.jsx)(s,{result:e,successLabel:j(t,`system.account.requestDone`)},n))]})]}),(0,W.jsx)(m,{title:j(t,`system.account.signInOptions`),result:d.data,children:e=>(0,W.jsx)(he,{data:e})})]})}function he({data:e}){let t=z(e=>e.mode),n=z(e=>e.language),r=!!e.enabled||M(e.providers).length>0;return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)($,{title:j(n,r?`system.account.signIn.sso`:`system.account.signIn.localOnly`),status:j(n,r?`system.value.enabled`:`system.storage.local.badge`),detail:j(n,r?`system.account.signIn.ssoDetail`:`system.account.signIn.localOnlyDetail`)}),t===`basic`?null:(0,W.jsx)(y,{value:e})]})}function ge(){let e=r(),t=z(e=>e.language),{setWorkspaceId:n}=z(),o=k({queryKey:[`workspaceRegistry`],queryFn:R.workspaceRegistry}),s=k({queryKey:[`invitations`],queryFn:R.invitations}),[c,f]=U.useState(``),[g,_]=U.useState(``),[y,b]=U.useState(``),x=i({mutationFn:()=>R.createOrg(c),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),S=i({mutationFn:()=>R.createInvitation({email:g||null,role:`member`,expires_hours:168}),onSuccess:()=>e.invalidateQueries({queryKey:[`invitations`]})}),C=i({mutationFn:()=>R.acceptInvitation(y),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),w=M(o.data?.data?.workspaces);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(t,`system.workspace.yours`),result:o.data,children:()=>(0,W.jsx)(`div`,{className:`flex flex-col gap-2`,children:w.map(e=>{let r=String(e.workspace_id||e.id);return(0,W.jsx)(`div`,{className:`rounded-md border border-border p-3`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`font-medium`,children:String(e.name||r)}),(0,W.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[String(e.type||``),` · `,String(e.your_role||e.role||``)]})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{variant:`outline`,onClick:()=>n(r),children:j(t,`system.workspace.use`)}),(0,W.jsx)(v,{label:j(t,`system.workspace.activate`),action:()=>R.activateWorkspace(r),invalidate:[`workspaceRegistry`]}),(0,W.jsx)(v,{label:j(t,`system.workspace.archive`),action:()=>R.archiveWorkspace(r),invalidate:[`workspaceRegistry`],variant:`destructive`})]})]})},r)})})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(te,{className:`h-4 w-4`}),` `,j(t,`system.workspace.organizations`)]}),(0,W.jsx)(u,{children:j(t,`system.workspace.organizationsHint`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(V,{value:c,onChange:e=>f(e.target.value),placeholder:j(t,`system.workspace.orgPlaceholder`)}),(0,W.jsx)(B,{disabled:!c.trim()||x.isPending,onClick:()=>x.mutate(),children:j(t,`system.workspace.createOrg`)}),(0,W.jsx)(V,{value:g,onChange:e=>_(e.target.value),placeholder:j(t,`system.workspace.inviteeEmail`)}),(0,W.jsx)(B,{variant:`outline`,disabled:S.isPending,onClick:()=>S.mutate(),children:j(t,`system.workspace.createInvite`)}),(0,W.jsx)(V,{value:y,onChange:e=>b(e.target.value),placeholder:j(t,`system.workspace.inviteToken`)}),(0,W.jsx)(B,{variant:`outline`,disabled:!y.trim()||C.isPending,onClick:()=>C.mutate(),children:j(t,`system.workspace.acceptInvite`)}),(0,W.jsx)(m,{title:j(t,`system.workspace.invitations`),result:s.data,children:e=>(0,W.jsx)(d,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function _e(){let e=z(e=>e.language),t=k({queryKey:[`snapshots`],queryFn:R.snapshots}),n=k({queryKey:[`timeMachine`],queryFn:R.timeMachine}),[r,o]=U.useState(``),[c,f]=U.useState(``),[g,_]=U.useState(``),y=i({mutationFn:()=>R.createSnapshot(r||j(e,`system.snapshots.defaultName`))}),b=i({mutationFn:()=>R.compareSnapshots(c,g)}),x=M(t.data?.data?.snapshots);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(e,`system.snapshots.title`),result:t.data,children:()=>(0,W.jsx)(`div`,{className:`space-y-2`,children:x.map(t=>{let n=String(t.id||t.snapshot_id);return(0,W.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,W.jsx)(`div`,{className:`font-medium`,children:String(t.name||n)}),(0,W.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,W.jsx)(v,{label:j(e,`system.snapshots.export`),action:()=>R.exportSnapshot(n)}),(0,W.jsx)(v,{label:j(e,`system.snapshots.mergeRestore`),action:()=>R.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(e,`system.snapshots.actions`)}),(0,W.jsx)(u,{children:j(e,`system.snapshots.actionsHint`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(V,{value:r,onChange:e=>o(e.target.value),placeholder:j(e,`system.snapshots.namePlaceholder`)}),(0,W.jsx)(B,{onClick:()=>y.mutate(),disabled:y.isPending,children:j(e,`system.snapshots.create`)}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,W.jsx)(V,{value:c,onChange:e=>f(e.target.value),placeholder:j(e,`system.snapshots.beforeId`)}),(0,W.jsx)(V,{value:g,onChange:e=>_(e.target.value),placeholder:j(e,`system.snapshots.afterId`)})]}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>b.mutate(),disabled:!c||!g||b.isPending,children:j(e,`system.snapshots.compare`)}),b.data?(0,W.jsx)(s,{result:b.data,successLabel:j(e,`system.snapshots.compareDone`)}):null]})]}),(0,W.jsx)(m,{title:j(e,`system.snapshots.timeline`),result:n.data,children:e=>(0,W.jsx)(d,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function ve(){let e=z(e=>e.language),t=k({queryKey:[`realtimeFeed`],queryFn:R.realtimeFeed}),n=k({queryKey:[`presence`],queryFn:R.presence});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(e,`system.activity.feed`),result:t.data,children:e=>(0,W.jsx)(d,{items:e.events,titleKey:`event_type`,metaKey:`area`,limit:14})}),(0,W.jsx)(m,{title:j(e,`system.activity.presence`),result:n.data,children:e=>(0,W.jsx)(xe,{data:e})})]})}function ye(){let e=r(),t=z(e=>e.language),n=k({queryKey:[`networkIdentity`],queryFn:R.networkIdentity}),o=k({queryKey:[`networkPeers`],queryFn:R.networkPeers}),[c,d]=U.useState(``),[f,g]=U.useState(``),[_,y]=U.useState(``),b=i({mutationFn:()=>R.pairPeer({name:c,base_url:f,public_key:_}),onSuccess:()=>e.invalidateQueries({queryKey:[`networkPeers`]})});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(t,`system.network.identity`),result:n.data,children:e=>(0,W.jsx)(Se,{data:e})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(S,{className:`h-4 w-4`}),` `,j(t,`system.network.pair`)]}),(0,W.jsx)(u,{children:j(t,`system.network.pairHint`)})]}),(0,W.jsxs)(p,{className:`grid gap-3`,children:[(0,W.jsx)(V,{value:c,onChange:e=>d(e.target.value),placeholder:j(t,`system.network.deviceName`)}),(0,W.jsx)(V,{value:f,onChange:e=>g(e.target.value),placeholder:j(t,`system.network.address`)}),(0,W.jsx)(V,{value:_,onChange:e=>y(e.target.value),placeholder:j(t,`system.network.publicKey`)}),(0,W.jsx)(B,{disabled:!c||!f||!_||b.isPending,onClick:()=>b.mutate(),children:j(t,`system.network.pair`)}),b.data?(0,W.jsx)(s,{result:b.data,successLabel:j(t,`system.network.pairDone`)}):null]})]}),(0,W.jsx)(m,{title:j(t,`system.network.peers`),result:o.data,className:`xl:col-span-2`,children:e=>(0,W.jsx)(`div`,{className:`grid gap-2`,children:M(e.peers).map(e=>{let n=String(e.peer_id||e.id);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`font-medium`,children:String(e.name||n)}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.base_url||``)})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(v,{label:j(t,`system.network.pushWorkspace`),action:()=>R.pushPeer(n,z.getState().workspaceId)}),(0,W.jsx)(v,{label:j(t,`system.network.unpair`),action:()=>R.unpairPeer(n),invalidate:[`networkPeers`],variant:`destructive`})]})]},n)})})})]})}function be(){let e=r(),{theme:t,setTheme:n,mode:o,setMode:c}=z(),d=z(e=>e.language),f=k({queryKey:[`health`],queryFn:R.health}),g=k({queryKey:[`sysinfo`],queryFn:R.sysinfo}),_=k({queryKey:[`computerMemory`],queryFn:R.computerMemory}),b=k({queryKey:[`brainStorage`],queryFn:R.brainStorage}),S=k({queryKey:[`backupHealth`],queryFn:R.backupHealth}),[C,w]=U.useState(``),[T,E]=U.useState(`lattice_brain`),[D,O]=U.useState(!1),[A,M]=U.useState(``),[N,P]=U.useState(``),[F,I]=U.useState(``),[L,ee]=U.useState(!1),[H,te]=U.useState(!1),G=i({mutationFn:e=>R.dockerPostgres({consent:e,dry_run:!e,port:5432})}),K=i({mutationFn:()=>R.migratePostgres({dsn:C,schema_name:T||`lattice_brain`,dry_run:!0})}),q=i({mutationFn:()=>R.brainArchive({path:A.trim()||null,passphrase:F}),onSuccess:()=>e.invalidateQueries({queryKey:[`backupHealth`]})}),J=i({mutationFn:()=>R.brainArchiveInspect({path:N,passphrase:F||null})}),Y=i({mutationFn:()=>R.brainArchiveVerify({path:N,passphrase:F})}),X=i({mutationFn:()=>R.brainArchiveRestore({path:N,passphrase:F,dry_run:!0,confirm:!1})}),Z=i({mutationFn:()=>R.brainArchiveRestore({path:N,passphrase:F,dry_run:!1,confirm:L}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}}),re=i({mutationFn:()=>R.brainArchiveImport({path:N,passphrase:F,dry_run:!0,confirm:!1})}),ie=i({mutationFn:()=>R.brainArchiveImport({path:N,passphrase:F,dry_run:!1,confirm:H}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4 max-w-[54rem]`,children:[(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(d,`system.panel.appearance`)}),(0,W.jsx)(u,{children:j(d,`system.panel.appearance.hint`)})]}),(0,W.jsxs)(p,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{variant:t===`dark`?`default`:`outline`,onClick:()=>n(`dark`),children:j(d,`system.theme.dark`)}),(0,W.jsx)(B,{variant:t===`light`?`default`:`outline`,onClick:()=>n(`light`),children:j(d,`system.theme.light`)})]})]}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(d,`system.panel.detailLevel`)}),(0,W.jsx)(u,{children:j(d,`system.panel.detailLevel.hint`)})]}),(0,W.jsx)(p,{className:`flex flex-wrap gap-2`,children:[`basic`,`advanced`,`admin`].map(e=>(0,W.jsx)(B,{variant:o===e?`default`:`outline`,onClick:()=>c(e),children:j(d,`shell.mode.${e}`)},e))})]}),(0,W.jsx)(ue,{}),(0,W.jsx)(ne,{}),(0,W.jsx)(m,{title:o===`basic`?j(d,`system.panel.brainStatus`):j(d,`system.panel.serverHealth`),result:f.data,children:e=>(0,W.jsx)(Ce,{data:e})}),(0,W.jsx)(m,{title:o===`basic`?j(d,`system.panel.readiness`):j(d,`system.panel.hostTelemetry`),result:g.data,children:e=>{if(o===`basic`){let t=String(e?.readiness||`roomy`),n=t===`tight`||t===`low`||t===`roomy`?`system.readiness.${t}`:`system.readiness.plenty`;return(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5 p-3 rounded-lg border border-border/60 bg-muted/20 text-sm text-foreground`,children:[(0,W.jsx)(x,{className:`h-4 w-4 ${t===`low`?`text-rose-500`:t===`tight`?`text-amber-500`:`text-emerald-500`} flex-shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{children:j(d,n)})]})}return(0,W.jsx)(y,{value:e})}}),(0,W.jsx)(m,{title:o===`basic`?j(d,`system.storage.title`):j(d,`system.panel.brainStorage`),result:b.data,children:e=>(0,W.jsx)(we,{data:e,mode:o,language:d})}),o===`basic`?null:(0,W.jsx)(m,{title:j(d,`system.backup.health`),result:S.data,children:e=>(0,W.jsx)(Te,{data:e})}),o===`basic`?null:(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(d,`system.archive.title`)}),(0,W.jsx)(u,{children:j(d,`system.archive.detail`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,W.jsx)(V,{value:A,onChange:e=>M(e.target.value),placeholder:j(d,`system.archive.exportPath`)}),(0,W.jsx)(V,{value:N,onChange:e=>P(e.target.value),placeholder:j(d,`system.archive.restorePath`)})]}),(0,W.jsx)(V,{type:`password`,value:F,onChange:e=>I(e.target.value),placeholder:j(d,`system.archive.passphrase`)}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{onClick:()=>q.mutate(),disabled:!F||q.isPending,children:j(d,`system.archive.export`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>J.mutate(),disabled:!N||J.isPending,children:j(d,`system.archive.inspect`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>Y.mutate(),disabled:!N||!F||Y.isPending,children:j(d,`system.archive.verify`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>X.mutate(),disabled:!N||!F||X.isPending,children:j(d,`system.archive.restoreDryRun`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>re.mutate(),disabled:!N||!F||re.isPending,children:j(d,`system.archive.importDryRun`)}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:L,onChange:e=>ee(e.target.checked)}),j(d,`system.archive.confirmRestore`)]}),(0,W.jsx)(B,{variant:`destructive`,onClick:()=>Z.mutate(),disabled:!N||!F||!L||Z.isPending,children:j(d,`system.archive.restore`)}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:H,onChange:e=>te(e.target.checked)}),j(d,`system.archive.confirmImport`)]}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>ie.mutate(),disabled:!N||!F||!H||ie.isPending,children:j(d,`system.archive.import`)})]}),[q.data,J.data,Y.data,X.data,Z.data,re.data,ie.data].filter(Boolean).map((e,t)=>(0,W.jsx)(s,{result:e,successLabel:j(d,`system.archive.requestDone`)},t))]})]}),o===`basic`?null:(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(d,`system.scale.title`)}),(0,W.jsx)(u,{children:j(d,`system.scale.detail`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,W.jsx)(V,{value:C,onChange:e=>w(e.target.value),placeholder:j(d,`system.scale.dsn`)}),(0,W.jsx)(V,{value:T,onChange:e=>E(e.target.value),placeholder:j(d,`system.scale.schema`)})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{variant:`outline`,onClick:()=>G.mutate(!1),disabled:G.isPending,children:j(d,`system.scale.dockerPlan`)}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:D,onChange:e=>O(e.target.checked)}),j(d,`system.scale.dockerConsent`)]}),(0,W.jsx)(B,{onClick:()=>G.mutate(!0),disabled:!D||G.isPending,children:j(d,`system.scale.dockerStart`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>K.mutate(),disabled:!C||K.isPending,children:j(d,`system.scale.migrationPlan`)})]}),G.data?(0,W.jsx)(s,{result:G.data,successLabel:j(d,`system.scale.dockerDone`)}):null,K.data?(0,W.jsx)(s,{result:K.data,successLabel:j(d,`system.scale.migrationDone`)}):null]})]}),o===`basic`?null:(0,W.jsx)(m,{title:j(d,`system.computerMemory.title`),result:_.data,children:e=>(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(y,{value:e}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(v,{label:j(d,`system.computerMemory.enable`),action:()=>R.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,W.jsx)(v,{label:j(d,`system.computerMemory.disable`),action:()=>R.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function Q(e,t,n){return t==null||t===``?n:typeof t==`boolean`?j(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function xe({data:e}){let t=z(e=>e.language),n=M(e.presence||e.clients||e);return n.length?(0,W.jsx)(d,{items:n,titleKey:`user`,metaKey:`workspace_id`}):(0,W.jsx)(g,{title:j(t,`system.presence.empty`),detail:j(t,`system.presence.emptyDetail`)})}function Se({data:e}){let t=z(e=>e.mode),n=z(e=>e.language),r=Q(n,e.public_key,``);return t===`basic`?(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)($,{title:j(n,`system.device.thisMac`),status:j(n,`system.value.trusted`),detail:j(n,`system.device.thisMacDetail`)}),(0,W.jsx)(b,{variant:`muted`,children:Q(n,e.algorithm,j(n,`system.value.localIdentity`))})]}):(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(b,{variant:`success`,children:j(n,`system.value.localDevice`)}),(0,W.jsx)(b,{variant:`muted`,children:Q(n,e.algorithm,j(n,`system.value.identityKey`))})]}),(0,W.jsx)(o,{data:{device_id:e.device_id||e.id||j(n,`system.value.notReported`),fingerprint:e.fingerprint||j(n,`system.value.notReported`),public_key:r?N(r.replace(/\s+/g,` `),72):j(n,`system.value.notReported`)}})]})}function Ce({data:e}){let t=z(e=>e.mode),n=z(e=>e.language);return t===`basic`?(0,W.jsx)($,{title:j(n,`system.health.title`),status:j(n,`system.health.ok`),detail:j(n,`system.health.detail`)}):(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:j(n,`system.health.status`),value:e.status||e.ok||j(n,`system.value.reported`)},{label:j(n,`system.health.version`),value:e.version||j(n,`system.value.notReported`)},{label:j(n,`system.health.mode`),value:e.mode||e.environment||j(n,`system.value.local`)},{label:j(n,`system.health.port`),value:e.port||e.backend_port||j(n,`system.value.configured`)}]}),(0,W.jsx)(y,{value:e})]})}function we({data:e,mode:t,language:n}){let r=I(e.active)?e.active:e,i=I(e.postgres)?e.postgres:{},a=I(e.backup_health)?e.backup_health:{},o=r.vector_search||r.vector||e.vector_search||e.sqlite_vec,s=!!(i.available||i.connected||i.enabled),c=!!o&&String(o).toLowerCase()!==`not reported`;return t===`basic`?(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)($,{title:j(n,`system.storage.local.title`),status:j(n,`system.storage.local.badge`),detail:j(n,`system.storage.local.detail`)}),(0,W.jsx)($,{title:j(n,`system.storage.search.title`),status:c?j(n,`system.storage.search.on`):j(n,`system.storage.search.pending`),detail:c?j(n,`system.storage.search.detailOn`):j(n,`system.storage.search.detailPending`)})]}):(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(f,{stats:[{label:j(n,`system.storage.activeEngine`),value:r.engine||e.engine||j(n,`system.storage.sqlite`)},{label:j(n,`system.storage.sqliteDefault`),value:r.engine===`postgres`?j(n,`system.value.scaleMode`):j(n,`system.value.enabled`)},{label:j(n,`system.storage.vector`),value:o||j(n,`system.value.notReported`)},{label:j(n,`system.storage.postgres`),value:s?j(n,`system.value.available`):j(n,`system.value.optional`)}]}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,W.jsx)($,{title:j(n,`system.storage.sqlite`),status:r.available===!1?j(n,`system.value.unavailable`):j(n,`system.value.default`),detail:Q(n,r.reason||r.path||e.path,j(n,`system.storage.sqliteDetail`))}),(0,W.jsx)($,{title:j(n,`system.storage.vector`),status:Q(n,o,j(n,`system.value.reported`)),detail:Q(n,r.vector_reason||r.sqlite_vec_reason||e.vector_reason,j(n,`system.storage.vectorDetail`))}),(0,W.jsx)($,{title:j(n,`system.storage.postgres`),status:s?j(n,`system.value.available`):j(n,`system.value.notEnabled`),detail:Q(n,i.reason||i.dsn||i.status,j(n,`system.storage.postgresDetail`))})]}),Object.keys(a).length?(0,W.jsx)(y,{value:{backup_health:a}}):null]})}function Te({data:e}){let t=z(e=>e.language);return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:j(t,`system.backup.available`),value:e.available===!1?j(t,`system.value.no`):j(t,`system.value.yes`)},{label:j(t,`system.backup.backups`),value:e.count||e.backups||0},{label:j(t,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:j(t,`system.backup.zip`),value:e.zip_backups||0}]}),(0,W.jsx)(o,{data:{directory:e.directory||j(t,`system.value.notReported`),latest:e.latest||j(t,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||j(t,`system.value.notReported`),failure:e.error||e.reason||j(t,`system.value.noneReported`)}})]})}function $({title:e,status:t,detail:n}){let r=/unavailable|failed|denied|disabled|not enabled|사용 불가|실패|거부|비활성|활성화되지 않음/i.test(t)?`warning`:`success`;return(0,W.jsxs)(`div`,{className:`rounded-md border border-border bg-background p-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`div`,{className:`font-medium`,children:e}),(0,W.jsx)(b,{variant:r,children:t})]}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:n})]})}function Ee({data:e}){let t=z(e=>e.language),n=I(e.startup)?e.startup:{},r=I(e.privacy)?e.privacy:{},i=I(e.storage)?e.storage:{},a=I(e.backup)?e.backup:{},o=I(e.device_identity)?e.device_identity:{},s=I(e.permissions)?e.permissions:{};return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:j(t,`system.hardening.version`),value:e.version||j(t,`system.value.reported`)},{label:j(t,`system.hardening.localOnly`),value:r.local_only_default??n.local_only_default??j(t,`system.value.reported`)},{label:j(t,`system.hardening.storage`),value:I(i.active)?i.active.engine:j(t,`system.value.reported`)},{label:j(t,`system.hardening.backups`),value:a.count||a.available||j(t,`system.value.reported`)}]}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row flex-wrap gap-3`,children:[(0,W.jsx)($,{title:j(t,`system.hardening.startup`),status:j(t,n.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:j(t,`system.hardening.startupDetail`)}),(0,W.jsx)($,{title:j(t,`system.hardening.integrations`),status:j(t,r.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:j(t,`system.hardening.integrationsDetail`)}),(0,W.jsx)($,{title:j(t,`system.hardening.identity`),status:Q(t,o.algorithm||o.fingerprint,j(t,`system.value.reported`)),detail:Q(t,o.storage,j(t,`system.hardening.identityStorage`))}),(0,W.jsx)($,{title:j(t,`system.hardening.permissions`),status:j(t,s.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:j(t,`system.hardening.permissionsDetail`)})]})]})}function De({data:e}){let t=z(e=>e.language),n=I(e.cards)?e.cards:{},r=I(e.severity_counts)?e.severity_counts:{};return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:j(t,`system.security.eventsToday`),value:n.events_today||0},{label:j(t,`system.security.highRisk`),value:n.high_risk_events||r.high||0},{label:j(t,`system.security.review`),value:n.review_required||0},{label:j(t,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,W.jsx)(y,{value:{severity_counts:r,sensitive_fields:e.field_counts||{}}})]})}function Oe(){let e=z(e=>e.mode),t=z(e=>e.language),n=k({queryKey:[`adminSummary`],queryFn:R.adminSummary}),r=k({queryKey:[`adminUsers`],queryFn:R.adminUsers}),i=k({queryKey:[`adminAudit`],queryFn:()=>R.adminAudit()}),a=k({queryKey:[`adminRoles`],queryFn:R.adminRoles}),s=k({queryKey:[`adminPolicies`],queryFn:R.adminPolicies}),c=k({queryKey:[`adminProductHardening`],queryFn:R.adminProductHardening}),l=k({queryKey:[`adminSecurity`],queryFn:R.adminSecurity}),u=k({queryKey:[`vpcStatus`],queryFn:R.vpcStatus});return e===`admin`?(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(t,`system.admin.summary`),result:n.data,children:e=>(0,W.jsx)(o,{data:e})}),(0,W.jsx)(m,{title:j(t,`system.admin.users`),result:r.data,children:e=>(0,W.jsx)(d,{items:e,titleKey:`email`,metaKey:`role`})}),(0,W.jsx)(m,{title:j(t,`system.admin.audit`),result:i.data,children:e=>(0,W.jsx)(d,{items:e.recent_events||e,titleKey:`act`,metaKey:`sev`})}),(0,W.jsx)(m,{title:j(t,`system.admin.roles`),result:a.data,children:e=>(0,W.jsx)(d,{items:e.roles||e,titleKey:`role`,metaKey:`members`})}),(0,W.jsx)(m,{title:j(t,`system.admin.policies`),result:s.data,children:e=>(0,W.jsx)(d,{items:e.policies||e,titleKey:`label`,metaKey:`enforced`})}),(0,W.jsx)(m,{title:j(t,`system.admin.hardening`),result:c.data,children:e=>(0,W.jsx)(Ee,{data:e})}),(0,W.jsx)(m,{title:j(t,`system.admin.security`),result:l.data,children:e=>(0,W.jsx)(De,{data:e})}),(0,W.jsx)(m,{title:j(t,`system.admin.vpc`),result:u.data,children:e=>(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(b,{variant:`muted`,children:j(t,`system.admin.communityUnavailable`)}),(0,W.jsx)(y,{value:e})]})})]}):(0,W.jsx)(_,{title:j(t,`system.admin.controls`),detail:j(t,`system.admin.controlsDetail`),target:`admin`})}export{pe as SystemPage};
|
|
1
|
+
import{i as e,n as t,t as n}from"./jsx-runtime-bzQ4Vb5N.js";import{n as r}from"./QueryClientProvider-B3OjqSyJ.js";import{t as i}from"./useMutation-D7IMQTeI.js";import{_ as a,a as o,c as s,d as c,g as l,h as u,i as d,l as f,m as p,n as m,p as h,r as g,s as _,t as v,u as y,v as b}from"./primitives-D01WcJn7.js";import{t as x}from"./circle-check-D68nHcgS.js";import{a as S,i as C,n as w,r as T,t as E}from"./permissionCopy-BSp1jYG7.js";import{t as D}from"./shield-alert--mrCWQko.js";import{F as O,H as k,R as A,S as j,c as M,h as N,k as P,o as F,p as I,t as L,v as R,y as ee,z}from"./index-DhszK7A3.js";import{t as B}from"./button-Tzf5D7L1.js";import{t as V}from"./input-BCdHoZXA.js";import"./workspace-C7xidB7c.js";var H=A(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),te=A(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),U=e(t()),W=n(),G={low:`success`,medium:`warning`,high:`danger`};function K(e,t){return t===`ko`&&e.label_ko||e.label}function q(e,t){return t===`ko`&&e.summary_ko||e.summary}function J(e,t){return t===`ko`&&e.warning_ko||e.warning||``}function ne(){let e=r(),t=z(e=>e.language),[n,o]=U.useState(null),[s,c]=U.useState(!1),[d,f]=U.useState(``),m=k({queryKey:[`networkBoundary`],queryFn:R.networkBoundary}),_=k({queryKey:[`cloudStatus`],queryFn:R.cloudStatus}),v=i({mutationFn:e=>R.setNetworkBoundary(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`networkBoundary`]}),o(null),c(!1))}}),y=i({mutationFn:e=>R.setHybridPolicy(e),onSuccess:()=>e.invalidateQueries({queryKey:[`networkBoundary`]})}),x=i({mutationFn:e=>R.previewCloudContext(e)}),[S,C]=U.useState([]),w=i({mutationFn:e=>R.setNodeSensitivity(e.nodeId,e.localOnly),onSuccess:(e,t)=>{e.ok&&C(e=>t.localOnly?[...e,t.nodeId]:e.filter(e=>e!==t.nodeId))}}),T=m.data?.ok?m.data.data:void 0,E=T?.catalog??[],O=T?.mode??``,A=n??O,M=E.find(e=>e.id===A),N=M?.requires_ack&&A!==O?M:void 0,P=N!==void 0&&!s,F=A===O,I=T?.policy??{},L=x.data?.ok?x.data.data:void 0;return m.isLoading?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:j(t,`system.network.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:j(t,`ui.loading`)})})]}):!T||E.length===0?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:j(t,`system.network.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:m.data?.error})})]}):(0,W.jsxs)(h,{className:`settings-dial`,id:`network-boundary-panel`,"data-testid":`network-boundary-panel`,children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(H,{className:`h-4 w-4`,"aria-hidden":`true`}),j(t,`system.network.title`)]}),(0,W.jsx)(u,{children:j(t,`system.network.hint`)})]}),(0,W.jsxs)(p,{className:`space-y-3`,children:[(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[j(t,`system.network.current`),`:`,` `,(0,W.jsx)(`strong`,{"data-testid":`network-boundary-active`,children:t===`ko`&&T.label_ko||T.label})]}),(0,W.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":j(t,`system.network.title`),children:E.map(e=>{let n=e.id===A;return(0,W.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"data-testid":`network-boundary-option-${e.id}`,onClick:()=>{o(e.id),c(!1),v.reset()},className:`settings-dial-option ${n?`is-active`:``}`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`strong`,{className:`text-sm`,children:K(e,t)}),(0,W.jsx)(b,{variant:G[e.risk]||`warning`,children:j(t,`system.permission.risk.${e.risk}`)}),e.id===O?(0,W.jsx)(b,{variant:`muted`,children:j(t,`system.network.current`)}):null]}),(0,W.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:q(e,t)})]},e.id)})}),N?(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,W.jsx)(D,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{children:J(N,t)})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-ack`,checked:s,onChange:e=>c(e.target.checked)}),j(t,`system.network.ack`)]})]}):null,(0,W.jsx)(B,{"data-testid":`network-boundary-apply`,disabled:F||P||v.isPending,onClick:()=>v.mutate({mode:A,ack:s}),children:j(t,`system.network.apply`)}),v.data&&!v.data.ok?(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:v.data.error}):null,v.data?.ok?(0,W.jsx)(b,{variant:`success`,"data-testid":`network-boundary-applied`,children:j(t,`ui.requestCompleted`)}):null,(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(t,`system.network.preview.title`)}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:j(t,`system.network.preview.hint`)}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(`input`,{type:`text`,"data-testid":`network-boundary-probe`,value:d,onChange:e=>f(e.target.value),placeholder:j(t,`system.network.preview.placeholder`),className:`min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1 text-xs`}),(0,W.jsx)(B,{variant:`outline`,"data-testid":`network-boundary-preview`,disabled:!d.trim()||x.isPending,onClick:()=>x.mutate(d.trim()),children:j(t,`system.network.preview.run`)})]}),L?(0,W.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-boundary-preview-result`,children:[L.allows_cloud?null:(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:j(t,`system.network.preview.localOnly`)}),L.would_block?(0,W.jsx)(b,{variant:`danger`,children:j(t,`system.network.preview.blocked`)}):null,L.titles.length===0?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:j(t,`system.network.preview.empty`)}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[j(t,`system.network.preview.count`,{count:L.titles.length}),` · `,j(t,`system.network.preview.tokens`,{tokens:L.token_estimate})]}),(0,W.jsx)(`ul`,{className:`space-y-0.5`,children:L.titles.map((e,n)=>{let r=L.node_ids[n],i=r?S.includes(r):!1;return(0,W.jsxs)(`li`,{className:`flex items-start justify-between gap-2 text-xs`,children:[(0,W.jsxs)(`span`,{className:i?`line-through opacity-60`:void 0,children:[`· `,e]}),r?(0,W.jsx)(`button`,{type:`button`,"data-testid":`network-boundary-hold-${n}`,className:`shrink-0 underline underline-offset-2 opacity-80 hover:opacity-100`,disabled:w.isPending,onClick:()=>w.mutate({nodeId:r,localOnly:!i}),children:j(t,i?`system.network.preview.release`:`system.network.preview.hold`)}):null]},`${r||e}-${n}`)})})]})]}):null,x.data&&!x.data.ok?(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:x.data.error}):null]}),T.allows_cloud?(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,"data-testid":`network-boundary-policy`,children:[(0,W.jsx)(X,{language:t,loading:_.isLoading,status:ee(_.data?.data,!!_.data?.ok)}),(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(t,`system.network.policy.title`)}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-auto-commit`,checked:!!I.auto_commit,disabled:y.isPending,onChange:e=>y.mutate({auto_commit:e.target.checked})}),(0,W.jsxs)(`span`,{children:[j(t,`system.network.policy.autoCommit`),(0,W.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:j(t,`system.network.policy.autoCommitHint`)})]})]}),(0,W.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-multimodal`,checked:!!I.allow_multimodal,disabled:y.isPending,onChange:e=>y.mutate({allow_multimodal:e.target.checked})}),(0,W.jsxs)(`span`,{children:[j(t,`system.network.policy.multimodal`),(0,W.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:j(t,`system.network.policy.multimodalHint`)})]})]})]}):null,(0,W.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(t,`system.network.guards`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:j(t,`system.network.guards.detail`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:j(t,`system.network.preview.autoHeld`)})]})]})]})}function Y(e,t){return t.mode===`cli_oauth`&&t.provider&&t.model?j(e,`system.network.cloudStatus.identity.cli`,{provider:t.provider,model:t.model}):t.provider&&t.model?j(e,`system.network.cloudStatus.identity`,{provider:t.provider,model:t.model}):t.model?j(e,`system.network.cloudStatus.identity.model`,{model:t.model}):t.provider}function X({language:e,loading:t,status:n}){let r=n.mode===`cli_oauth`?`system.network.cloudStatus.cli`:n.mode===`api_key`?`system.network.cloudStatus.apiKey`:`system.network.cloudStatus.none`,i=n.configured?Y(e,n):``;return(0,W.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-cloud-status`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(e,`system.network.cloudStatus.title`)}),t?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`network-cloud-status-loading`,children:j(e,`system.network.cloudStatus.loading`)}):n.configured?(0,W.jsxs)(`p`,{className:`text-xs`,"data-testid":`network-cloud-status-ready`,children:[j(e,r),i?` · ${i}`:``]}):(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`network-cloud-status-none`,children:[j(e,`system.network.cloudStatus.none`),(0,W.jsx)(`span`,{className:`mt-0.5 block`,children:j(e,`system.network.cloudStatus.none.hint`)})]})]})}var Z=[`proposal_first`,`workspace_writes_auto`,`knowledge_reads_auto`,`exec_auto`,`computer_observation_auto`,`computer_control_auto`,`circuit_breakers`];function re(e){return e===`strict`?{proposal_first:!0,workspace_writes_auto:!1,knowledge_reads_auto:!1,exec_auto:!1,computer_observation_auto:!1,computer_control_auto:!1,circuit_breakers:!0}:e===`trusted`?{proposal_first:!1,workspace_writes_auto:!0,knowledge_reads_auto:!0,exec_auto:!1,computer_observation_auto:!0,computer_control_auto:!1,circuit_breakers:!0}:e===`bypass`?{proposal_first:!1,workspace_writes_auto:!0,knowledge_reads_auto:!0,exec_auto:!0,computer_observation_auto:!0,computer_control_auto:!0,circuit_breakers:!0}:null}function ie(e){return{proposal_first:!!e.proposal_first,workspace_writes_auto:!!e.workspace_writes_auto,knowledge_reads_auto:!!e.knowledge_reads_auto,exec_auto:!!e.exec_auto,computer_observation_auto:!!e.computer_observation_auto,computer_control_auto:!!e.computer_control_auto,circuit_breakers:e.circuit_breakers!==!1}}function ae(e,t,n){return n===`auto`?j(e,t?`system.permission.preview.auto`:`system.permission.preview.ask`):j(e,t?`system.permission.preview.on`:`system.permission.preview.off`)}function oe(e,t){let n=`system.permission.risk.${t}`,r=j(e,n);return r===n?t:r}function se(e,t,n,r){let i=re(n.id),a=i===null,o=[{id:`risk`,label:j(e,`system.permission.preview.risk`),current:oe(e,t.risk),next:oe(e,n.risk),changed:t.risk!==n.risk},{id:`ack`,label:j(e,`system.permission.preview.ack`),current:j(e,t.requires_ack?`system.permission.preview.ack.yes`:`system.permission.preview.ack.no`),next:j(e,n.requires_ack?`system.permission.preview.ack.yes`:`system.permission.preview.ack.no`),changed:!!t.requires_ack!=!!n.requires_ack}];if(i)for(let t of Z){let n=r[t],a=i[t],s=t===`proposal_first`||t===`circuit_breakers`?`on`:`auto`;o.push({id:t,label:j(e,`system.permission.preview.cap.${t}`),current:ae(e,n,s),next:ae(e,a,s),changed:n!==a})}return{rows:o,fromCatalogOnly:a}}function ce(e,t){return{label:w(e,t),summary:T(e,t)}}var le={low:`success`,medium:`warning`,high:`danger`};function ue(){let e=r(),t=z(e=>e.language),[n,o]=U.useState(null),[s,c]=U.useState(!1),d=k({queryKey:[`permissionMode`],queryFn:R.permissionMode}),f=i({mutationFn:e=>R.setPermissionMode(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`permissionMode`]}),o(null),c(!1))}}),m=d.data?.ok?d.data.data:void 0,_=m?.catalog??[],v=m?.mode??``,y=n??v,x=_.find(e=>e.id===y),S=x?.requires_ack&&y!==v?x:void 0,O=S!==void 0&&!s,A=y===v,M=_.find(e=>e.id===v),N=!A&&x&&M&&m?se(t,M,x,ie(m)):null,P=M?ce(M,t):null,F=x?ce(x,t):null;return d.isLoading?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:j(t,`system.permission.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:j(t,`ui.loading`)})})]}):!m||_.length===0?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:j(t,`system.permission.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:d.data?.error})})]}):(0,W.jsxs)(h,{className:`settings-dial`,"data-testid":`permission-mode-panel`,children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(t,`system.permission.title`)}),(0,W.jsx)(u,{children:j(t,`system.permission.hint`)})]}),(0,W.jsxs)(p,{className:`space-y-3`,children:[(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[j(t,`system.permission.current`),`:`,` `,(0,W.jsx)(`strong`,{"data-testid":`permission-mode-active`,children:E(m,t)})]}),(0,W.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":j(t,`system.permission.title`),children:_.map(e=>{let n=e.id===y;return(0,W.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"data-testid":`permission-mode-option-${e.id}`,onClick:()=>{o(e.id),c(!1),f.reset()},className:`settings-dial-option ${n?`is-active`:``}`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`strong`,{className:`text-sm`,children:w(e,t)}),(0,W.jsx)(b,{variant:le[e.risk]||`warning`,children:j(t,`system.permission.risk.${e.risk}`)}),e.id===v?(0,W.jsx)(b,{variant:`muted`,children:j(t,`system.permission.current`)}):null]}),(0,W.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:T(e,t)})]},e.id)})}),N&&P&&F?(0,W.jsxs)(`div`,{className:`settings-preview`,"data-testid":`permission-mode-preview`,children:[(0,W.jsx)(`p`,{className:`settings-preview-title`,children:j(t,`system.permission.preview.title`)}),(0,W.jsx)(`p`,{className:`settings-preview-hint`,children:j(t,`system.permission.preview.hint`)}),(0,W.jsxs)(`div`,{className:`settings-preview-pair`,children:[(0,W.jsxs)(`div`,{className:`settings-preview-col`,children:[(0,W.jsx)(`span`,{children:j(t,`system.permission.preview.from`)}),(0,W.jsx)(`strong`,{children:P.label}),(0,W.jsx)(`p`,{children:P.summary})]}),(0,W.jsxs)(`div`,{className:`settings-preview-col is-next`,children:[(0,W.jsx)(`span`,{children:j(t,`system.permission.preview.to`)}),(0,W.jsx)(`strong`,{children:F.label}),(0,W.jsx)(`p`,{children:F.summary})]})]}),(0,W.jsx)(`ul`,{className:`settings-preview-rows`,children:N.rows.filter(e=>e.changed).map(e=>(0,W.jsxs)(`li`,{"data-testid":`permission-mode-preview-row-${e.id}`,children:[(0,W.jsx)(`span`,{className:`settings-preview-row-label`,children:e.label}),(0,W.jsx)(`span`,{className:`settings-preview-row-from`,children:e.current}),(0,W.jsx)(`span`,{className:`settings-preview-row-to`,children:e.next})]},e.id))}),N.fromCatalogOnly?(0,W.jsx)(`p`,{className:`settings-preview-limit`,"data-testid":`permission-mode-preview-limit`,children:j(t,`system.permission.preview.unknown`)}):null]}):null,S?(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,W.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,W.jsx)(D,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,W.jsx)(`span`,{children:C(S,t)})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,W.jsx)(`input`,{type:`checkbox`,"data-testid":`permission-mode-ack`,checked:s,onChange:e=>c(e.target.checked)}),j(t,`system.permission.ack`)]})]}):null,(0,W.jsx)(B,{"data-testid":`permission-mode-apply`,disabled:A||O||f.isPending,onClick:()=>f.mutate({mode:y,ack:s}),children:j(t,`system.permission.apply`)}),f.data&&!f.data.ok?(0,W.jsx)(g,{title:j(t,`ui.requestUnavailable`),detail:f.data.error}):null,f.data?.ok?(0,W.jsx)(b,{variant:`success`,"data-testid":`permission-mode-applied`,children:j(t,`ui.requestCompleted`)}):null,(0,W.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:j(t,`system.permission.guards`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:j(t,`system.permission.guards.detail`)})]})]})]})}var de=[{id:`identity`,labelKey:`system.group.identity`},{id:`data`,labelKey:`system.group.data`},{id:`system`,labelKey:`system.group.system`}],fe=[{id:`account`,labelKey:`system.tab.account`,group:`identity`},{id:`workspaces`,labelKey:`system.tab.workspaces`,group:`identity`},{id:`snapshots`,labelKey:`system.tab.snapshots`,group:`data`},{id:`activity`,labelKey:`system.tab.activity`,group:`data`},{id:`settings`,labelKey:`system.tab.settings`,group:`system`},{id:`network`,labelKey:`system.tab.network`,group:`system`},{id:`admin`,labelKey:`system.tab.admin`,group:`system`}];function pe({initialTab:e}){let t=z(e=>e.mode),n=z(e=>e.language),[r,i]=U.useState(e||`account`);U.useEffect(()=>{fe.some(t=>t.id===e)&&i(e)},[e]);let a=t===`basic`?fe.filter(e=>e.id===`account`||e.id===`workspaces`||e.id===`snapshots`||e.id===`settings`):fe,o=e=>{i(e),F(`/`+{account:`account`,workspaces:`workspace-admin`,snapshots:`snapshots`,activity:`activity`,network:`network`,settings:`settings`,admin:`system-admin`}[e])};return(0,W.jsxs)(`div`,{className:`product-page settings-page space-y-5 pb-8`,children:[(0,W.jsxs)(`header`,{className:`page-hero`,children:[(0,W.jsxs)(`div`,{className:`page-kicker`,children:[(0,W.jsx)(P,{className:`h-4 w-4`}),` `,j(n,`system.kicker`)]}),(0,W.jsx)(`h1`,{className:`page-title`,children:j(n,`system.title`)}),(0,W.jsx)(`p`,{className:`page-copy`,children:j(n,`system.body`)})]}),(0,W.jsx)(`div`,{className:`system-tab-groups`,"data-testid":`system-tab-groups`,children:de.map(e=>({group:e,items:a.filter(t=>t.group===e.id)})).filter(({items:e})=>e.length>0).map(({group:e,items:t})=>{let i=`system-group-${e.id}`;return(0,W.jsxs)(`div`,{className:`system-tab-group`,children:[(0,W.jsx)(`span`,{id:i,className:`system-tab-group-label`,children:j(n,e.labelKey)}),(0,W.jsx)(c,{ariaLabelledBy:i,tabs:t.map(e=>({id:e.id,label:j(n,e.labelKey)})),value:r,onChange:e=>o(e)})]},e.id)})}),r===`account`?(0,W.jsx)(me,{}):null,r===`workspaces`?(0,W.jsx)(ge,{}):null,r===`settings`?(0,W.jsx)(be,{}):null,r===`snapshots`?(0,W.jsx)(_e,{}):null,r===`activity`?(0,W.jsx)(ve,{}):null,r===`network`?(0,W.jsx)(ye,{}):null,r===`admin`?(0,W.jsx)(Oe,{}):null]})}function me(){let e=r(),t=z(e=>e.language),n=z(e=>e.setWorkspaceId),c=k({queryKey:[`profile`],queryFn:R.profile}),d=k({queryKey:[`sso`],queryFn:R.ssoConfig}),[f,g]=U.useState(``),[_,y]=U.useState(``),[b,x]=U.useState(``),[S,C]=U.useState(``),[w,T]=U.useState(``),E=e=>{e.ok&&(L(),n(null))},D=i({mutationFn:()=>R.login(f,_),onSuccess:E}),A=i({mutationFn:()=>R.register({email:f,password:_,name:b,nickname:S}),onSuccess:E}),M=i({mutationFn:()=>R.updateProfile({name:b,nickname:S}),onSuccess:()=>e.invalidateQueries({queryKey:[`profile`]})}),N=i({mutationFn:()=>R.changePassword(_,w)});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(t,`system.account.profile`),result:c.data,children:e=>(0,W.jsx)(o,{data:e})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(O,{className:`h-4 w-4`}),` `,j(t,`system.account.title`)]}),(0,W.jsx)(u,{children:j(t,`system.account.detail`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(V,{value:f,onChange:e=>g(e.target.value),placeholder:j(t,`system.account.email`)}),(0,W.jsx)(V,{type:`password`,value:_,onChange:e=>y(e.target.value),placeholder:j(t,`system.account.password`)}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,W.jsx)(V,{value:b,onChange:e=>x(e.target.value),placeholder:j(t,`system.account.name`)}),(0,W.jsx)(V,{value:S,onChange:e=>C(e.target.value),placeholder:j(t,`system.account.nickname`)})]}),(0,W.jsx)(V,{type:`password`,value:w,onChange:e=>T(e.target.value),placeholder:j(t,`system.account.newPassword`)}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{onClick:()=>D.mutate(),disabled:!f||!_||D.isPending,children:j(t,`system.account.login`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>A.mutate(),disabled:!f||!_||A.isPending,children:j(t,`system.account.register`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>M.mutate(),disabled:M.isPending,children:j(t,`system.account.save`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>N.mutate(),disabled:!_||!w||N.isPending,children:j(t,`system.account.changePassword`)}),(0,W.jsx)(v,{label:j(t,`system.account.logout`),action:()=>R.logout(),onSuccess:E})]}),[D.data,A.data,M.data,N.data].filter(Boolean).map((e,n)=>(0,W.jsx)(s,{result:e,successLabel:j(t,`system.account.requestDone`)},n))]})]}),(0,W.jsx)(m,{title:j(t,`system.account.signInOptions`),result:d.data,children:e=>(0,W.jsx)(he,{data:e})})]})}function he({data:e}){let t=z(e=>e.mode),n=z(e=>e.language),r=!!e.enabled||M(e.providers).length>0;return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)($,{title:j(n,r?`system.account.signIn.sso`:`system.account.signIn.localOnly`),status:j(n,r?`system.value.enabled`:`system.storage.local.badge`),detail:j(n,r?`system.account.signIn.ssoDetail`:`system.account.signIn.localOnlyDetail`)}),t===`basic`?null:(0,W.jsx)(y,{value:e})]})}function ge(){let e=r(),t=z(e=>e.language),{setWorkspaceId:n}=z(),o=k({queryKey:[`workspaceRegistry`],queryFn:R.workspaceRegistry}),s=k({queryKey:[`invitations`],queryFn:R.invitations}),[c,f]=U.useState(``),[g,_]=U.useState(``),[y,b]=U.useState(``),x=i({mutationFn:()=>R.createOrg(c),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),S=i({mutationFn:()=>R.createInvitation({email:g||null,role:`member`,expires_hours:168}),onSuccess:()=>e.invalidateQueries({queryKey:[`invitations`]})}),C=i({mutationFn:()=>R.acceptInvitation(y),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),w=M(o.data?.data?.workspaces);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(t,`system.workspace.yours`),result:o.data,children:()=>(0,W.jsx)(`div`,{className:`flex flex-col gap-2`,children:w.map(e=>{let r=String(e.workspace_id||e.id);return(0,W.jsx)(`div`,{className:`rounded-md border border-border p-3`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`font-medium`,children:String(e.name||r)}),(0,W.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[String(e.type||``),` · `,String(e.your_role||e.role||``)]})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{variant:`outline`,onClick:()=>n(r),children:j(t,`system.workspace.use`)}),(0,W.jsx)(v,{label:j(t,`system.workspace.activate`),action:()=>R.activateWorkspace(r),invalidate:[`workspaceRegistry`]}),(0,W.jsx)(v,{label:j(t,`system.workspace.archive`),action:()=>R.archiveWorkspace(r),invalidate:[`workspaceRegistry`],variant:`destructive`})]})]})},r)})})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(te,{className:`h-4 w-4`}),` `,j(t,`system.workspace.organizations`)]}),(0,W.jsx)(u,{children:j(t,`system.workspace.organizationsHint`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(V,{value:c,onChange:e=>f(e.target.value),placeholder:j(t,`system.workspace.orgPlaceholder`)}),(0,W.jsx)(B,{disabled:!c.trim()||x.isPending,onClick:()=>x.mutate(),children:j(t,`system.workspace.createOrg`)}),(0,W.jsx)(V,{value:g,onChange:e=>_(e.target.value),placeholder:j(t,`system.workspace.inviteeEmail`)}),(0,W.jsx)(B,{variant:`outline`,disabled:S.isPending,onClick:()=>S.mutate(),children:j(t,`system.workspace.createInvite`)}),(0,W.jsx)(V,{value:y,onChange:e=>b(e.target.value),placeholder:j(t,`system.workspace.inviteToken`)}),(0,W.jsx)(B,{variant:`outline`,disabled:!y.trim()||C.isPending,onClick:()=>C.mutate(),children:j(t,`system.workspace.acceptInvite`)}),(0,W.jsx)(m,{title:j(t,`system.workspace.invitations`),result:s.data,children:e=>(0,W.jsx)(d,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function _e(){let e=z(e=>e.language),t=k({queryKey:[`snapshots`],queryFn:R.snapshots}),n=k({queryKey:[`timeMachine`],queryFn:R.timeMachine}),[r,o]=U.useState(``),[c,f]=U.useState(``),[g,_]=U.useState(``),y=i({mutationFn:()=>R.createSnapshot(r||j(e,`system.snapshots.defaultName`))}),b=i({mutationFn:()=>R.compareSnapshots(c,g)}),x=M(t.data?.data?.snapshots);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(e,`system.snapshots.title`),result:t.data,children:()=>(0,W.jsx)(`div`,{className:`space-y-2`,children:x.map(t=>{let n=String(t.id||t.snapshot_id);return(0,W.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,W.jsx)(`div`,{className:`font-medium`,children:String(t.name||n)}),(0,W.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,W.jsx)(v,{label:j(e,`system.snapshots.export`),action:()=>R.exportSnapshot(n)}),(0,W.jsx)(v,{label:j(e,`system.snapshots.mergeRestore`),action:()=>R.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(e,`system.snapshots.actions`)}),(0,W.jsx)(u,{children:j(e,`system.snapshots.actionsHint`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsx)(V,{value:r,onChange:e=>o(e.target.value),placeholder:j(e,`system.snapshots.namePlaceholder`)}),(0,W.jsx)(B,{onClick:()=>y.mutate(),disabled:y.isPending,children:j(e,`system.snapshots.create`)}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,W.jsx)(V,{value:c,onChange:e=>f(e.target.value),placeholder:j(e,`system.snapshots.beforeId`)}),(0,W.jsx)(V,{value:g,onChange:e=>_(e.target.value),placeholder:j(e,`system.snapshots.afterId`)})]}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>b.mutate(),disabled:!c||!g||b.isPending,children:j(e,`system.snapshots.compare`)}),b.data?(0,W.jsx)(s,{result:b.data,successLabel:j(e,`system.snapshots.compareDone`)}):null]})]}),(0,W.jsx)(m,{title:j(e,`system.snapshots.timeline`),result:n.data,children:e=>(0,W.jsx)(d,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function ve(){let e=z(e=>e.language),t=k({queryKey:[`realtimeFeed`],queryFn:R.realtimeFeed}),n=k({queryKey:[`presence`],queryFn:R.presence});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(e,`system.activity.feed`),result:t.data,children:e=>(0,W.jsx)(d,{items:e.events,titleKey:`event_type`,metaKey:`area`,limit:14})}),(0,W.jsx)(m,{title:j(e,`system.activity.presence`),result:n.data,children:e=>(0,W.jsx)(xe,{data:e})})]})}function ye(){let e=r(),t=z(e=>e.language),n=k({queryKey:[`networkIdentity`],queryFn:R.networkIdentity}),o=k({queryKey:[`networkPeers`],queryFn:R.networkPeers}),[c,d]=U.useState(``),[f,g]=U.useState(``),[_,y]=U.useState(``),b=i({mutationFn:()=>R.pairPeer({name:c,base_url:f,public_key:_}),onSuccess:()=>e.invalidateQueries({queryKey:[`networkPeers`]})});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(t,`system.network.identity`),result:n.data,children:e=>(0,W.jsx)(Se,{data:e})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(S,{className:`h-4 w-4`}),` `,j(t,`system.network.pair`)]}),(0,W.jsx)(u,{children:j(t,`system.network.pairHint`)})]}),(0,W.jsxs)(p,{className:`grid gap-3`,children:[(0,W.jsx)(V,{value:c,onChange:e=>d(e.target.value),placeholder:j(t,`system.network.deviceName`)}),(0,W.jsx)(V,{value:f,onChange:e=>g(e.target.value),placeholder:j(t,`system.network.address`)}),(0,W.jsx)(V,{value:_,onChange:e=>y(e.target.value),placeholder:j(t,`system.network.publicKey`)}),(0,W.jsx)(B,{disabled:!c||!f||!_||b.isPending,onClick:()=>b.mutate(),children:j(t,`system.network.pair`)}),b.data?(0,W.jsx)(s,{result:b.data,successLabel:j(t,`system.network.pairDone`)}):null]})]}),(0,W.jsx)(m,{title:j(t,`system.network.peers`),result:o.data,className:`xl:col-span-2`,children:e=>(0,W.jsx)(`div`,{className:`grid gap-2`,children:M(e.peers).map(e=>{let n=String(e.peer_id||e.id);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`font-medium`,children:String(e.name||n)}),(0,W.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.base_url||``)})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(v,{label:j(t,`system.network.pushWorkspace`),action:()=>R.pushPeer(n,z.getState().workspaceId)}),(0,W.jsx)(v,{label:j(t,`system.network.unpair`),action:()=>R.unpairPeer(n),invalidate:[`networkPeers`],variant:`destructive`})]})]},n)})})})]})}function be(){let e=r(),{theme:t,setTheme:n,mode:o,setMode:c}=z(),d=z(e=>e.language),f=k({queryKey:[`health`],queryFn:R.health}),g=k({queryKey:[`sysinfo`],queryFn:R.sysinfo}),_=k({queryKey:[`computerMemory`],queryFn:R.computerMemory}),b=k({queryKey:[`brainStorage`],queryFn:R.brainStorage}),S=k({queryKey:[`backupHealth`],queryFn:R.backupHealth}),[C,w]=U.useState(``),[T,E]=U.useState(`lattice_brain`),[D,O]=U.useState(!1),[A,M]=U.useState(``),[N,P]=U.useState(``),[F,I]=U.useState(``),[L,ee]=U.useState(!1),[H,te]=U.useState(!1),G=i({mutationFn:e=>R.dockerPostgres({consent:e,dry_run:!e,port:5432})}),K=i({mutationFn:()=>R.migratePostgres({dsn:C,schema_name:T||`lattice_brain`,dry_run:!0})}),q=i({mutationFn:()=>R.brainArchive({path:A.trim()||null,passphrase:F}),onSuccess:()=>e.invalidateQueries({queryKey:[`backupHealth`]})}),J=i({mutationFn:()=>R.brainArchiveInspect({path:N,passphrase:F||null})}),Y=i({mutationFn:()=>R.brainArchiveVerify({path:N,passphrase:F})}),X=i({mutationFn:()=>R.brainArchiveRestore({path:N,passphrase:F,dry_run:!0,confirm:!1})}),Z=i({mutationFn:()=>R.brainArchiveRestore({path:N,passphrase:F,dry_run:!1,confirm:L}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}}),re=i({mutationFn:()=>R.brainArchiveImport({path:N,passphrase:F,dry_run:!0,confirm:!1})}),ie=i({mutationFn:()=>R.brainArchiveImport({path:N,passphrase:F,dry_run:!1,confirm:H}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4 max-w-[54rem]`,children:[(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(d,`system.panel.appearance`)}),(0,W.jsx)(u,{children:j(d,`system.panel.appearance.hint`)})]}),(0,W.jsxs)(p,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{variant:t===`dark`?`default`:`outline`,onClick:()=>n(`dark`),children:j(d,`system.theme.dark`)}),(0,W.jsx)(B,{variant:t===`light`?`default`:`outline`,onClick:()=>n(`light`),children:j(d,`system.theme.light`)})]})]}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(d,`system.panel.detailLevel`)}),(0,W.jsx)(u,{children:j(d,`system.panel.detailLevel.hint`)})]}),(0,W.jsx)(p,{className:`flex flex-wrap gap-2`,children:[`basic`,`advanced`,`admin`].map(e=>(0,W.jsx)(B,{variant:o===e?`default`:`outline`,onClick:()=>c(e),children:j(d,`shell.mode.${e}`)},e))})]}),(0,W.jsx)(ue,{}),(0,W.jsx)(ne,{}),(0,W.jsx)(m,{title:o===`basic`?j(d,`system.panel.brainStatus`):j(d,`system.panel.serverHealth`),result:f.data,children:e=>(0,W.jsx)(Ce,{data:e})}),(0,W.jsx)(m,{title:o===`basic`?j(d,`system.panel.readiness`):j(d,`system.panel.hostTelemetry`),result:g.data,children:e=>{if(o===`basic`){let t=String(e?.readiness||`roomy`),n=t===`tight`||t===`low`||t===`roomy`?`system.readiness.${t}`:`system.readiness.plenty`;return(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5 p-3 rounded-lg border border-border/60 bg-muted/20 text-sm text-foreground`,children:[(0,W.jsx)(x,{className:`h-4 w-4 ${t===`low`?`text-rose-500`:t===`tight`?`text-amber-500`:`text-emerald-500`} flex-shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{children:j(d,n)})]})}return(0,W.jsx)(y,{value:e})}}),(0,W.jsx)(m,{title:o===`basic`?j(d,`system.storage.title`):j(d,`system.panel.brainStorage`),result:b.data,children:e=>(0,W.jsx)(we,{data:e,mode:o,language:d})}),o===`basic`?null:(0,W.jsx)(m,{title:j(d,`system.backup.health`),result:S.data,children:e=>(0,W.jsx)(Te,{data:e})}),o===`basic`?null:(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(d,`system.archive.title`)}),(0,W.jsx)(u,{children:j(d,`system.archive.detail`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,W.jsx)(V,{value:A,onChange:e=>M(e.target.value),placeholder:j(d,`system.archive.exportPath`)}),(0,W.jsx)(V,{value:N,onChange:e=>P(e.target.value),placeholder:j(d,`system.archive.restorePath`)})]}),(0,W.jsx)(V,{type:`password`,value:F,onChange:e=>I(e.target.value),placeholder:j(d,`system.archive.passphrase`)}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{onClick:()=>q.mutate(),disabled:!F||q.isPending,children:j(d,`system.archive.export`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>J.mutate(),disabled:!N||J.isPending,children:j(d,`system.archive.inspect`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>Y.mutate(),disabled:!N||!F||Y.isPending,children:j(d,`system.archive.verify`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>X.mutate(),disabled:!N||!F||X.isPending,children:j(d,`system.archive.restoreDryRun`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>re.mutate(),disabled:!N||!F||re.isPending,children:j(d,`system.archive.importDryRun`)}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:L,onChange:e=>ee(e.target.checked)}),j(d,`system.archive.confirmRestore`)]}),(0,W.jsx)(B,{variant:`destructive`,onClick:()=>Z.mutate(),disabled:!N||!F||!L||Z.isPending,children:j(d,`system.archive.restore`)}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:H,onChange:e=>te(e.target.checked)}),j(d,`system.archive.confirmImport`)]}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>ie.mutate(),disabled:!N||!F||!H||ie.isPending,children:j(d,`system.archive.import`)})]}),[q.data,J.data,Y.data,X.data,Z.data,re.data,ie.data].filter(Boolean).map((e,t)=>(0,W.jsx)(s,{result:e,successLabel:j(d,`system.archive.requestDone`)},t))]})]}),o===`basic`?null:(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:j(d,`system.scale.title`)}),(0,W.jsx)(u,{children:j(d,`system.scale.detail`)})]}),(0,W.jsxs)(p,{className:`flex flex-col gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,W.jsx)(V,{value:C,onChange:e=>w(e.target.value),placeholder:j(d,`system.scale.dsn`)}),(0,W.jsx)(V,{value:T,onChange:e=>E(e.target.value),placeholder:j(d,`system.scale.schema`)})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{variant:`outline`,onClick:()=>G.mutate(!1),disabled:G.isPending,children:j(d,`system.scale.dockerPlan`)}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:D,onChange:e=>O(e.target.checked)}),j(d,`system.scale.dockerConsent`)]}),(0,W.jsx)(B,{onClick:()=>G.mutate(!0),disabled:!D||G.isPending,children:j(d,`system.scale.dockerStart`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>K.mutate(),disabled:!C||K.isPending,children:j(d,`system.scale.migrationPlan`)})]}),G.data?(0,W.jsx)(s,{result:G.data,successLabel:j(d,`system.scale.dockerDone`)}):null,K.data?(0,W.jsx)(s,{result:K.data,successLabel:j(d,`system.scale.migrationDone`)}):null]})]}),o===`basic`?null:(0,W.jsx)(m,{title:j(d,`system.computerMemory.title`),result:_.data,children:e=>(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(y,{value:e}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(v,{label:j(d,`system.computerMemory.enable`),action:()=>R.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,W.jsx)(v,{label:j(d,`system.computerMemory.disable`),action:()=>R.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function Q(e,t,n){return t==null||t===``?n:typeof t==`boolean`?j(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function xe({data:e}){let t=z(e=>e.language),n=M(e.presence||e.clients||e);return n.length?(0,W.jsx)(d,{items:n,titleKey:`user`,metaKey:`workspace_id`}):(0,W.jsx)(g,{title:j(t,`system.presence.empty`),detail:j(t,`system.presence.emptyDetail`)})}function Se({data:e}){let t=z(e=>e.mode),n=z(e=>e.language),r=Q(n,e.public_key,``);return t===`basic`?(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)($,{title:j(n,`system.device.thisMac`),status:j(n,`system.value.trusted`),detail:j(n,`system.device.thisMacDetail`)}),(0,W.jsx)(b,{variant:`muted`,children:Q(n,e.algorithm,j(n,`system.value.localIdentity`))})]}):(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(b,{variant:`success`,children:j(n,`system.value.localDevice`)}),(0,W.jsx)(b,{variant:`muted`,children:Q(n,e.algorithm,j(n,`system.value.identityKey`))})]}),(0,W.jsx)(o,{data:{device_id:e.device_id||e.id||j(n,`system.value.notReported`),fingerprint:e.fingerprint||j(n,`system.value.notReported`),public_key:r?N(r.replace(/\s+/g,` `),72):j(n,`system.value.notReported`)}})]})}function Ce({data:e}){let t=z(e=>e.mode),n=z(e=>e.language);return t===`basic`?(0,W.jsx)($,{title:j(n,`system.health.title`),status:j(n,`system.health.ok`),detail:j(n,`system.health.detail`)}):(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:j(n,`system.health.status`),value:e.status||e.ok||j(n,`system.value.reported`)},{label:j(n,`system.health.version`),value:e.version||j(n,`system.value.notReported`)},{label:j(n,`system.health.mode`),value:e.mode||e.environment||j(n,`system.value.local`)},{label:j(n,`system.health.port`),value:e.port||e.backend_port||j(n,`system.value.configured`)}]}),(0,W.jsx)(y,{value:e})]})}function we({data:e,mode:t,language:n}){let r=I(e.active)?e.active:e,i=I(e.postgres)?e.postgres:{},a=I(e.backup_health)?e.backup_health:{},o=r.vector_search||r.vector||e.vector_search||e.sqlite_vec,s=!!(i.available||i.connected||i.enabled),c=!!o&&String(o).toLowerCase()!==`not reported`;return t===`basic`?(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)($,{title:j(n,`system.storage.local.title`),status:j(n,`system.storage.local.badge`),detail:j(n,`system.storage.local.detail`)}),(0,W.jsx)($,{title:j(n,`system.storage.search.title`),status:c?j(n,`system.storage.search.on`):j(n,`system.storage.search.pending`),detail:c?j(n,`system.storage.search.detailOn`):j(n,`system.storage.search.detailPending`)})]}):(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(f,{stats:[{label:j(n,`system.storage.activeEngine`),value:r.engine||e.engine||j(n,`system.storage.sqlite`)},{label:j(n,`system.storage.sqliteDefault`),value:r.engine===`postgres`?j(n,`system.value.scaleMode`):j(n,`system.value.enabled`)},{label:j(n,`system.storage.vector`),value:o||j(n,`system.value.notReported`)},{label:j(n,`system.storage.postgres`),value:s?j(n,`system.value.available`):j(n,`system.value.optional`)}]}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,W.jsx)($,{title:j(n,`system.storage.sqlite`),status:r.available===!1?j(n,`system.value.unavailable`):j(n,`system.value.default`),detail:Q(n,r.reason||r.path||e.path,j(n,`system.storage.sqliteDetail`))}),(0,W.jsx)($,{title:j(n,`system.storage.vector`),status:Q(n,o,j(n,`system.value.reported`)),detail:Q(n,r.vector_reason||r.sqlite_vec_reason||e.vector_reason,j(n,`system.storage.vectorDetail`))}),(0,W.jsx)($,{title:j(n,`system.storage.postgres`),status:s?j(n,`system.value.available`):j(n,`system.value.notEnabled`),detail:Q(n,i.reason||i.dsn||i.status,j(n,`system.storage.postgresDetail`))})]}),Object.keys(a).length?(0,W.jsx)(y,{value:{backup_health:a}}):null]})}function Te({data:e}){let t=z(e=>e.language);return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:j(t,`system.backup.available`),value:e.available===!1?j(t,`system.value.no`):j(t,`system.value.yes`)},{label:j(t,`system.backup.backups`),value:e.count||e.backups||0},{label:j(t,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:j(t,`system.backup.zip`),value:e.zip_backups||0}]}),(0,W.jsx)(o,{data:{directory:e.directory||j(t,`system.value.notReported`),latest:e.latest||j(t,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||j(t,`system.value.notReported`),failure:e.error||e.reason||j(t,`system.value.noneReported`)}})]})}function $({title:e,status:t,detail:n}){let r=/unavailable|failed|denied|disabled|not enabled|사용 불가|실패|거부|비활성|활성화되지 않음/i.test(t)?`warning`:`success`;return(0,W.jsxs)(`div`,{className:`rounded-md border border-border bg-background p-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`div`,{className:`font-medium`,children:e}),(0,W.jsx)(b,{variant:r,children:t})]}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:n})]})}function Ee({data:e}){let t=z(e=>e.language),n=I(e.startup)?e.startup:{},r=I(e.privacy)?e.privacy:{},i=I(e.storage)?e.storage:{},a=I(e.backup)?e.backup:{},o=I(e.device_identity)?e.device_identity:{},s=I(e.permissions)?e.permissions:{};return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:j(t,`system.hardening.version`),value:e.version||j(t,`system.value.reported`)},{label:j(t,`system.hardening.localOnly`),value:r.local_only_default??n.local_only_default??j(t,`system.value.reported`)},{label:j(t,`system.hardening.storage`),value:I(i.active)?i.active.engine:j(t,`system.value.reported`)},{label:j(t,`system.hardening.backups`),value:a.count||a.available||j(t,`system.value.reported`)}]}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row flex-wrap gap-3`,children:[(0,W.jsx)($,{title:j(t,`system.hardening.startup`),status:j(t,n.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:j(t,`system.hardening.startupDetail`)}),(0,W.jsx)($,{title:j(t,`system.hardening.integrations`),status:j(t,r.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:j(t,`system.hardening.integrationsDetail`)}),(0,W.jsx)($,{title:j(t,`system.hardening.identity`),status:Q(t,o.algorithm||o.fingerprint,j(t,`system.value.reported`)),detail:Q(t,o.storage,j(t,`system.hardening.identityStorage`))}),(0,W.jsx)($,{title:j(t,`system.hardening.permissions`),status:j(t,s.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:j(t,`system.hardening.permissionsDetail`)})]})]})}function De({data:e}){let t=z(e=>e.language),n=I(e.cards)?e.cards:{},r=I(e.severity_counts)?e.severity_counts:{};return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:j(t,`system.security.eventsToday`),value:n.events_today||0},{label:j(t,`system.security.highRisk`),value:n.high_risk_events||r.high||0},{label:j(t,`system.security.review`),value:n.review_required||0},{label:j(t,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,W.jsx)(y,{value:{severity_counts:r,sensitive_fields:e.field_counts||{}}})]})}function Oe(){let e=z(e=>e.mode),t=z(e=>e.language),n=k({queryKey:[`adminSummary`],queryFn:R.adminSummary}),r=k({queryKey:[`adminUsers`],queryFn:R.adminUsers}),i=k({queryKey:[`adminAudit`],queryFn:()=>R.adminAudit()}),a=k({queryKey:[`adminRoles`],queryFn:R.adminRoles}),s=k({queryKey:[`adminPolicies`],queryFn:R.adminPolicies}),c=k({queryKey:[`adminProductHardening`],queryFn:R.adminProductHardening}),l=k({queryKey:[`adminSecurity`],queryFn:R.adminSecurity}),u=k({queryKey:[`vpcStatus`],queryFn:R.vpcStatus});return e===`admin`?(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:j(t,`system.admin.summary`),result:n.data,children:e=>(0,W.jsx)(o,{data:e})}),(0,W.jsx)(m,{title:j(t,`system.admin.users`),result:r.data,children:e=>(0,W.jsx)(d,{items:e,titleKey:`email`,metaKey:`role`})}),(0,W.jsx)(m,{title:j(t,`system.admin.audit`),result:i.data,children:e=>(0,W.jsx)(d,{items:e.recent_events||e,titleKey:`act`,metaKey:`sev`})}),(0,W.jsx)(m,{title:j(t,`system.admin.roles`),result:a.data,children:e=>(0,W.jsx)(d,{items:e.roles||e,titleKey:`role`,metaKey:`members`})}),(0,W.jsx)(m,{title:j(t,`system.admin.policies`),result:s.data,children:e=>(0,W.jsx)(d,{items:e.policies||e,titleKey:`label`,metaKey:`enforced`})}),(0,W.jsx)(m,{title:j(t,`system.admin.hardening`),result:c.data,children:e=>(0,W.jsx)(Ee,{data:e})}),(0,W.jsx)(m,{title:j(t,`system.admin.security`),result:l.data,children:e=>(0,W.jsx)(De,{data:e})}),(0,W.jsx)(m,{title:j(t,`system.admin.vpc`),result:u.data,children:e=>(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(b,{variant:`muted`,children:j(t,`system.admin.communityUnavailable`)}),(0,W.jsx)(y,{value:e})]})})]}):(0,W.jsx)(_,{title:j(t,`system.admin.controls`),detail:j(t,`system.admin.controlsDetail`),target:`admin`})}export{pe as SystemPage};
|