ltcai 12.1.0 → 12.2.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 +33 -36
- package/docs/CHANGELOG.md +18 -0
- package/docs/CI_AND_RELEASE_GATES.md +7 -4
- 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/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 +23 -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 +45 -45
- package/static/app/assets/{Act-DCRUH46a.js → Act-BjGgeuQd.js} +2 -2
- package/static/app/assets/{AdminConsole-BFBj6OvN.js → AdminConsole-C6hcJGMr.js} +1 -1
- package/static/app/assets/{Brain-BXcoxIvb.js → Brain-CNQnIaA8.js} +2 -2
- package/static/app/assets/BrainHome-CGJ6O69l.js +2 -0
- package/static/app/assets/{BrainSignals-DrfYSNjR.js → BrainSignals-DONPljxz.js} +1 -1
- package/static/app/assets/{Capture-BsO_OAeh.js → Capture-BMCC5544.js} +1 -1
- package/static/app/assets/{Chronicle-BUj_UH3D.js → Chronicle-DF6sOonx.js} +1 -1
- package/static/app/assets/{CommandPalette-B4SWOaR-.js → CommandPalette-DiWyutdM.js} +1 -1
- package/static/app/assets/{DigitalBrainExplorer-S1GSsyIT.js → DigitalBrainExplorer-BL3V6Dqz.js} +1 -1
- package/static/app/assets/{Library-CKUR2eVb.js → Library-B-ue9hXL.js} +1 -1
- package/static/app/assets/{LivingBrain--2UoV3Ki.js → LivingBrain-b1RiM5Rh.js} +1 -1
- package/static/app/assets/{ProductFlow-D7rB6Xsu.js → ProductFlow-wZIKJW7G.js} +1 -1
- package/static/app/assets/{ReviewCard-UzQZ1ULT.js → ReviewCard-D1fGTEn7.js} +1 -1
- package/static/app/assets/{RunsListPanel-CDGFQYMo.js → RunsListPanel-DAirtLkS.js} +1 -1
- package/static/app/assets/System-BEI1eoC4.js +1 -0
- package/static/app/assets/{WorkflowGraph-BIcWZTUQ.js → WorkflowGraph-qrI6GU4R.js} +1 -1
- package/static/app/assets/{WorkflowsPanel-BeT5fmbk.js → WorkflowsPanel-CIMNTw-O.js} +2 -2
- package/static/app/assets/{actHelpers-DhutJObL.js → actHelpers-BMukIRnQ.js} +1 -1
- package/static/app/assets/arrow-left-iVa1goff.js +1 -0
- package/static/app/assets/{bot-D8tZzKMD.js → bot-Dkd-DbiP.js} +1 -1
- package/static/app/assets/brain-BsexlNOA.js +1 -0
- package/static/app/assets/{button-Tzf5D7L1.js → button-BA0N_zId.js} +1 -1
- package/static/app/assets/circle-check-BxaDWjPR.js +1 -0
- package/static/app/assets/{circle-pause-Druue_tZ.js → circle-pause-918Kuvk0.js} +1 -1
- package/static/app/assets/{circle-play-BAht4SSW.js → circle-play-CS0IbVDV.js} +1 -1
- package/static/app/assets/{cpu-BPbmZRPp.js → cpu-BpvoWsjk.js} +1 -1
- package/static/app/assets/{download-BmxPZEwU.js → download-BvkMLLLN.js} +1 -1
- package/static/app/assets/{folder-open-DokOmFQJ.js → folder-open-YmGugIBf.js} +1 -1
- package/static/app/assets/{hard-drive-Cw6aEA2h.js → hard-drive-BOzmS-cq.js} +1 -1
- package/static/app/assets/{index-CB93CZWW.css → index-C8gwOf0C.css} +1 -1
- package/static/app/assets/{index-DhszK7A3.js → index-CfeqZ9Ri.js} +3 -3
- package/static/app/assets/{input-BCdHoZXA.js → input-CFfCfMjO.js} +1 -1
- package/static/app/assets/{link-2-CCModn4z.js → link-2-CcYzeM7M.js} +1 -1
- package/static/app/assets/{permissionCopy-BSp1jYG7.js → permissionCopy-B23r24oX.js} +1 -1
- package/static/app/assets/{primitives-D01WcJn7.js → primitives-BDryQl6H.js} +1 -1
- package/static/app/assets/search-DHsPwmPw.js +1 -0
- package/static/app/assets/{share-2-DMMkM8Iu.js → share-2-B-gPv2ec.js} +1 -1
- package/static/app/assets/{shield-alert--mrCWQko.js → shield-alert-CfyRO1p0.js} +1 -1
- package/static/app/assets/{sourceMeta-nvd3Cdz3.js → sourceMeta-C4LDEy1S.js} +1 -1
- package/static/app/assets/{textarea-DfayhQiX.js → textarea-BdVMYEb1.js} +1 -1
- package/static/app/assets/{useFocusTrap-C5NsTvsI.js → useFocusTrap-CV73DLHn.js} +1 -1
- package/static/app/assets/{useMutation-D7IMQTeI.js → useMutation-B8QKq2NW.js} +1 -1
- package/static/app/assets/workspace-BmfVs66W.js +1 -0
- package/static/app/index.html +2 -2
- package/static/sw.js +1 -1
- package/static/app/assets/BrainHome-IhcEPC3v.js +0 -2
- package/static/app/assets/System-0OSxZrTp.js +0 -1
- package/static/app/assets/arrow-left-BwJfcH8J.js +0 -1
- package/static/app/assets/brain-DP2JPXSV.js +0 -1
- package/static/app/assets/circle-check-D68nHcgS.js +0 -1
- package/static/app/assets/search-C_zAGfvO.js +0 -1
- package/static/app/assets/workspace-C7xidB7c.js +0 -1
|
@@ -0,0 +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-B8QKq2NW.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,y as x}from"./primitives-BDryQl6H.js";import{t as S}from"./circle-check-BxaDWjPR.js";import{a as C,i as w,n as T,r as E,t as D}from"./permissionCopy-B23r24oX.js";import{t as O}from"./shield-alert-CfyRO1p0.js";import{F as k,H as A,R as j,S as M,c as N,h as P,k as F,o as ee,p as I,t as te,v as L,y as R,z}from"./index-CfeqZ9Ri.js";import{t as B}from"./button-BA0N_zId.js";import{t as V}from"./input-CFfCfMjO.js";import"./workspace-BmfVs66W.js";var ne=j(`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`}]]),H=j(`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(),re={low:`success`,medium:`warning`,high:`danger`};function G(e,t){return t===`ko`&&e.label_ko||e.label}function K(e,t){return t===`ko`&&e.summary_ko||e.summary}function q(e,t){return t===`ko`&&e.warning_ko||e.warning||``}function ie(){let e=r(),t=z(e=>e.language),[n,o]=U.useState(null),[s,c]=U.useState(!1),[d,f]=U.useState(``),m=A({queryKey:[`networkBoundary`],queryFn:L.networkBoundary}),_=A({queryKey:[`cloudStatus`],queryFn:L.cloudStatus}),v=i({mutationFn:e=>L.setNetworkBoundary(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`networkBoundary`]}),o(null),c(!1))}}),y=i({mutationFn:e=>L.setHybridPolicy(e),onSuccess:()=>e.invalidateQueries({queryKey:[`networkBoundary`]})}),x=i({mutationFn:e=>L.previewCloudContext(e)}),[S,C]=U.useState([]),w=i({mutationFn:e=>L.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??[],D=T?.mode??``,k=n??D,j=E.find(e=>e.id===k),N=j?.requires_ack&&k!==D?j:void 0,P=N!==void 0&&!s,F=k===D,ee=T?.policy??{},I=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:M(t,`system.network.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:M(t,`ui.loading`)})})]}):!T||E.length===0?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:M(t,`system.network.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(g,{title:M(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)(ne,{className:`h-4 w-4`,"aria-hidden":`true`}),M(t,`system.network.title`)]}),(0,W.jsx)(u,{children:M(t,`system.network.hint`)})]}),(0,W.jsxs)(p,{className:`space-y-3`,children:[(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[M(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":M(t,`system.network.title`),children:E.map(e=>{let n=e.id===k;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:G(e,t)}),(0,W.jsx)(b,{variant:re[e.risk]||`warning`,children:M(t,`system.permission.risk.${e.risk}`)}),e.id===D?(0,W.jsx)(b,{variant:`muted`,children:M(t,`system.network.current`)}):null]}),(0,W.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:K(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)(O,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,W.jsx)(`span`,{children:q(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)}),M(t,`system.network.ack`)]})]}):null,(0,W.jsx)(B,{"data-testid":`network-boundary-apply`,disabled:F||P||v.isPending,onClick:()=>v.mutate({mode:k,ack:s}),children:M(t,`system.network.apply`)}),v.data&&!v.data.ok?(0,W.jsx)(g,{title:M(t,`ui.requestUnavailable`),detail:v.data.error}):null,v.data?.ok?(0,W.jsx)(b,{variant:`success`,"data-testid":`network-boundary-applied`,children:M(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:M(t,`system.network.preview.title`)}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:M(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:M(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:M(t,`system.network.preview.run`)})]}),I?(0,W.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-boundary-preview-result`,children:[I.allows_cloud?null:(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:M(t,`system.network.preview.localOnly`)}),I.would_block?(0,W.jsx)(b,{variant:`danger`,children:M(t,`system.network.preview.blocked`)}):null,I.titles.length===0?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:M(t,`system.network.preview.empty`)}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[M(t,`system.network.preview.count`,{count:I.titles.length}),` · `,M(t,`system.network.preview.tokens`,{tokens:I.token_estimate})]}),(0,W.jsx)(`ul`,{className:`space-y-0.5`,children:I.titles.map((e,n)=>{let r=I.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:M(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:M(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)(Y,{language:t,loading:_.isLoading,status:R(_.data?.data,!!_.data?.ok)}),(0,W.jsx)(`p`,{className:`text-xs font-medium`,children:M(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:!!ee.auto_commit,disabled:y.isPending,onChange:e=>y.mutate({auto_commit:e.target.checked})}),(0,W.jsxs)(`span`,{children:[M(t,`system.network.policy.autoCommit`),(0,W.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:M(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:!!ee.allow_multimodal,disabled:y.isPending,onChange:e=>y.mutate({allow_multimodal:e.target.checked})}),(0,W.jsxs)(`span`,{children:[M(t,`system.network.policy.multimodal`),(0,W.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:M(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:M(t,`system.network.guards`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:M(t,`system.network.guards.detail`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:M(t,`system.network.preview.autoHeld`)})]})]})]})}function J(e,t){return t.mode===`cli_oauth`&&t.provider&&t.model?M(e,`system.network.cloudStatus.identity.cli`,{provider:t.provider,model:t.model}):t.provider&&t.model?M(e,`system.network.cloudStatus.identity`,{provider:t.provider,model:t.model}):t.model?M(e,`system.network.cloudStatus.identity.model`,{model:t.model}):t.provider}function Y({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?J(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:M(e,`system.network.cloudStatus.title`)}),t?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`network-cloud-status-loading`,children:M(e,`system.network.cloudStatus.loading`)}):n.configured?(0,W.jsxs)(`p`,{className:`text-xs`,"data-testid":`network-cloud-status-ready`,children:[M(e,r),i?` · ${i}`:``]}):(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,"data-testid":`network-cloud-status-none`,children:[M(e,`system.network.cloudStatus.none`),(0,W.jsx)(`span`,{className:`mt-0.5 block`,children:M(e,`system.network.cloudStatus.none.hint`)})]})]})}var X=[`proposal_first`,`workspace_writes_auto`,`knowledge_reads_auto`,`exec_auto`,`computer_observation_auto`,`computer_control_auto`,`circuit_breakers`];function ae(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 oe(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 Z(e,t,n){return n===`auto`?M(e,t?`system.permission.preview.auto`:`system.permission.preview.ask`):M(e,t?`system.permission.preview.on`:`system.permission.preview.off`)}function se(e,t){let n=`system.permission.risk.${t}`,r=M(e,n);return r===n?t:r}function ce(e,t,n,r){let i=ae(n.id),a=i===null,o=[{id:`risk`,label:M(e,`system.permission.preview.risk`),current:se(e,t.risk),next:se(e,n.risk),changed:t.risk!==n.risk},{id:`ack`,label:M(e,`system.permission.preview.ack`),current:M(e,t.requires_ack?`system.permission.preview.ack.yes`:`system.permission.preview.ack.no`),next:M(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 X){let n=r[t],a=i[t],s=t===`proposal_first`||t===`circuit_breakers`?`on`:`auto`;o.push({id:t,label:M(e,`system.permission.preview.cap.${t}`),current:Z(e,n,s),next:Z(e,a,s),changed:n!==a})}return{rows:o,fromCatalogOnly:a}}function le(e,t){return{label:T(e,t),summary:E(e,t)}}var ue={low:`success`,medium:`warning`,high:`danger`};function de(){let e=r(),t=z(e=>e.language),[n,o]=U.useState(null),[s,c]=U.useState(!1),d=A({queryKey:[`permissionMode`],queryFn:L.permissionMode}),f=i({mutationFn:e=>L.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,C=S!==void 0&&!s,k=y===v,j=_.find(e=>e.id===v),N=!k&&x&&j&&m?ce(t,j,x,oe(m)):null,P=j?le(j,t):null,F=x?le(x,t):null;return d.isLoading?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:M(t,`system.permission.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:M(t,`ui.loading`)})})]}):!m||_.length===0?(0,W.jsxs)(h,{children:[(0,W.jsx)(l,{children:(0,W.jsx)(a,{children:M(t,`system.permission.title`)})}),(0,W.jsx)(p,{children:(0,W.jsx)(g,{title:M(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:M(t,`system.permission.title`)}),(0,W.jsx)(u,{children:M(t,`system.permission.hint`)})]}),(0,W.jsxs)(p,{className:`space-y-3`,children:[(0,W.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[M(t,`system.permission.current`),`:`,` `,(0,W.jsx)(`strong`,{"data-testid":`permission-mode-active`,children:D(m,t)})]}),(0,W.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":M(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:T(e,t)}),(0,W.jsx)(b,{variant:ue[e.risk]||`warning`,children:M(t,`system.permission.risk.${e.risk}`)}),e.id===v?(0,W.jsx)(b,{variant:`muted`,children:M(t,`system.permission.current`)}):null]}),(0,W.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:E(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:M(t,`system.permission.preview.title`)}),(0,W.jsx)(`p`,{className:`settings-preview-hint`,children:M(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:M(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:M(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:M(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)(O,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,W.jsx)(`span`,{children:w(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)}),M(t,`system.permission.ack`)]})]}):null,(0,W.jsx)(B,{"data-testid":`permission-mode-apply`,disabled:k||C||f.isPending,onClick:()=>f.mutate({mode:y,ack:s}),children:M(t,`system.permission.apply`)}),f.data&&!f.data.ok?(0,W.jsx)(g,{title:M(t,`ui.requestUnavailable`),detail:f.data.error}):null,f.data?.ok?(0,W.jsx)(b,{variant:`success`,"data-testid":`permission-mode-applied`,children:M(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:M(t,`system.permission.guards`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:M(t,`system.permission.guards.detail`)})]})]})]})}var fe=[{id:`identity`,labelKey:`system.group.identity`},{id:`data`,labelKey:`system.group.data`},{id:`system`,labelKey:`system.group.system`}],pe=[{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 me({initialTab:e}){let t=z(e=>e.mode),n=z(e=>e.language),[r,i]=U.useState(e||`account`);U.useEffect(()=>{pe.some(t=>t.id===e)&&i(e)},[e]);let a=t===`basic`?pe.filter(e=>e.id===`account`||e.id===`workspaces`||e.id===`snapshots`||e.id===`settings`):pe,o=e=>{i(e),ee(`/`+{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)(F,{className:`h-4 w-4`}),` `,M(n,`system.kicker`)]}),(0,W.jsx)(`h1`,{className:`page-title`,children:M(n,`system.title`)}),(0,W.jsx)(`p`,{className:`page-copy`,children:M(n,`system.body`)})]}),(0,W.jsx)(`div`,{className:`system-tab-groups`,"data-testid":`system-tab-groups`,children:fe.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:M(n,e.labelKey)}),(0,W.jsx)(c,{ariaLabelledBy:i,tabs:t.map(e=>({id:e.id,label:M(n,e.labelKey)})),value:r,onChange:e=>o(e)})]},e.id)})}),r===`account`?(0,W.jsx)(he,{}):null,r===`workspaces`?(0,W.jsx)(_e,{}):null,r===`settings`?(0,W.jsx)(xe,{}):null,r===`snapshots`?(0,W.jsx)(ve,{}):null,r===`activity`?(0,W.jsx)(ye,{}):null,r===`network`?(0,W.jsx)(be,{}):null,r===`admin`?(0,W.jsx)(ke,{}):null]})}function he(){let e=r(),t=z(e=>e.language),n=z(e=>e.setWorkspaceId),c=A({queryKey:[`profile`],queryFn:L.profile}),d=A({queryKey:[`sso`],queryFn:L.ssoConfig}),[f,g]=U.useState(``),[_,y]=U.useState(``),[b,x]=U.useState(``),[S,C]=U.useState(``),[w,T]=U.useState(``),E=e=>{e.ok&&(te(),n(null))},D=i({mutationFn:()=>L.login(f,_),onSuccess:E}),O=i({mutationFn:()=>L.register({email:f,password:_,name:b,nickname:S}),onSuccess:E}),j=i({mutationFn:()=>L.updateProfile({name:b,nickname:S}),onSuccess:()=>e.invalidateQueries({queryKey:[`profile`]})}),N=i({mutationFn:()=>L.changePassword(_,w)});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:M(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)(k,{className:`h-4 w-4`}),` `,M(t,`system.account.title`)]}),(0,W.jsx)(u,{children:M(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:M(t,`system.account.email`)}),(0,W.jsx)(V,{type:`password`,value:_,onChange:e=>y(e.target.value),placeholder:M(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:M(t,`system.account.name`)}),(0,W.jsx)(V,{value:S,onChange:e=>C(e.target.value),placeholder:M(t,`system.account.nickname`)})]}),(0,W.jsx)(V,{type:`password`,value:w,onChange:e=>T(e.target.value),placeholder:M(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:M(t,`system.account.login`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>O.mutate(),disabled:!f||!_||O.isPending,children:M(t,`system.account.register`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>j.mutate(),disabled:j.isPending,children:M(t,`system.account.save`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>N.mutate(),disabled:!_||!w||N.isPending,children:M(t,`system.account.changePassword`)}),(0,W.jsx)(v,{label:M(t,`system.account.logout`),action:()=>L.logout(),onSuccess:E})]}),[D.data,O.data,j.data,N.data].filter(Boolean).map((e,n)=>(0,W.jsx)(s,{result:e,successLabel:M(t,`system.account.requestDone`)},n))]})]}),(0,W.jsx)(m,{title:M(t,`system.account.signInOptions`),result:d.data,children:e=>(0,W.jsx)(ge,{data:e})})]})}function ge({data:e}){let t=z(e=>e.mode),n=z(e=>e.language),r=!!e.enabled||N(e.providers).length>0;return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)($,{title:M(n,r?`system.account.signIn.sso`:`system.account.signIn.localOnly`),status:M(n,r?`system.value.enabled`:`system.storage.local.badge`),detail:M(n,r?`system.account.signIn.ssoDetail`:`system.account.signIn.localOnlyDetail`)}),t===`basic`?null:(0,W.jsx)(y,{value:e})]})}function _e(){let e=r(),t=z(e=>e.language),{setWorkspaceId:n}=z(),o=A({queryKey:[`workspaceRegistry`],queryFn:L.workspaceRegistry}),s=A({queryKey:[`invitations`],queryFn:L.invitations}),[c,f]=U.useState(``),[g,_]=U.useState(``),[y,b]=U.useState(``),x=i({mutationFn:()=>L.createOrg(c),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),S=i({mutationFn:()=>L.createInvitation({email:g||null,role:`member`,expires_hours:168}),onSuccess:()=>e.invalidateQueries({queryKey:[`invitations`]})}),C=i({mutationFn:()=>L.acceptInvitation(y),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),w=N(o.data?.data?.workspaces);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:M(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:M(t,`system.workspace.use`)}),(0,W.jsx)(v,{label:M(t,`system.workspace.activate`),action:()=>L.activateWorkspace(r),invalidate:[`workspaceRegistry`]}),(0,W.jsx)(v,{label:M(t,`system.workspace.archive`),action:()=>L.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)(H,{className:`h-4 w-4`}),` `,M(t,`system.workspace.organizations`)]}),(0,W.jsx)(u,{children:M(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:M(t,`system.workspace.orgPlaceholder`)}),(0,W.jsx)(B,{disabled:!c.trim()||x.isPending,onClick:()=>x.mutate(),children:M(t,`system.workspace.createOrg`)}),(0,W.jsx)(V,{value:g,onChange:e=>_(e.target.value),placeholder:M(t,`system.workspace.inviteeEmail`)}),(0,W.jsx)(B,{variant:`outline`,disabled:S.isPending,onClick:()=>S.mutate(),children:M(t,`system.workspace.createInvite`)}),(0,W.jsx)(V,{value:y,onChange:e=>b(e.target.value),placeholder:M(t,`system.workspace.inviteToken`)}),(0,W.jsx)(B,{variant:`outline`,disabled:!y.trim()||C.isPending,onClick:()=>C.mutate(),children:M(t,`system.workspace.acceptInvite`)}),(0,W.jsx)(m,{title:M(t,`system.workspace.invitations`),result:s.data,children:e=>(0,W.jsx)(d,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function ve(){let e=z(e=>e.language),t=A({queryKey:[`snapshots`],queryFn:L.snapshots}),n=A({queryKey:[`timeMachine`],queryFn:L.timeMachine}),[r,o]=U.useState(``),[c,f]=U.useState(``),[g,_]=U.useState(``),y=i({mutationFn:()=>L.createSnapshot(r||M(e,`system.snapshots.defaultName`))}),b=i({mutationFn:()=>L.compareSnapshots(c,g)}),x=N(t.data?.data?.snapshots);return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:M(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:M(e,`system.snapshots.export`),action:()=>L.exportSnapshot(n)}),(0,W.jsx)(v,{label:M(e,`system.snapshots.mergeRestore`),action:()=>L.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:M(e,`system.snapshots.actions`)}),(0,W.jsx)(u,{children:M(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:M(e,`system.snapshots.namePlaceholder`)}),(0,W.jsx)(B,{onClick:()=>y.mutate(),disabled:y.isPending,children:M(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:M(e,`system.snapshots.beforeId`)}),(0,W.jsx)(V,{value:g,onChange:e=>_(e.target.value),placeholder:M(e,`system.snapshots.afterId`)})]}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>b.mutate(),disabled:!c||!g||b.isPending,children:M(e,`system.snapshots.compare`)}),b.data?(0,W.jsx)(s,{result:b.data,successLabel:M(e,`system.snapshots.compareDone`)}):null]})]}),(0,W.jsx)(m,{title:M(e,`system.snapshots.timeline`),result:n.data,children:e=>(0,W.jsx)(d,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function ye(){let e=z(e=>e.language),t=A({queryKey:[`realtimeFeed`],queryFn:L.realtimeFeed}),n=A({queryKey:[`presence`],queryFn:L.presence});return(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:M(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:M(e,`system.activity.presence`),result:n.data,children:e=>(0,W.jsx)(Se,{data:e})})]})}function be(){let e=r(),t=z(e=>e.language),n=A({queryKey:[`networkIdentity`],queryFn:L.networkIdentity}),o=A({queryKey:[`networkPeers`],queryFn:L.networkPeers}),[c,d]=U.useState(``),[f,g]=U.useState(``),[_,y]=U.useState(``),b=i({mutationFn:()=>L.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:M(t,`system.network.identity`),result:n.data,children:e=>(0,W.jsx)(Ce,{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)(C,{className:`h-4 w-4`}),` `,M(t,`system.network.pair`)]}),(0,W.jsx)(u,{children:M(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:M(t,`system.network.deviceName`)}),(0,W.jsx)(V,{value:f,onChange:e=>g(e.target.value),placeholder:M(t,`system.network.address`)}),(0,W.jsx)(V,{value:_,onChange:e=>y(e.target.value),placeholder:M(t,`system.network.publicKey`)}),(0,W.jsx)(B,{disabled:!c||!f||!_||b.isPending,onClick:()=>b.mutate(),children:M(t,`system.network.pair`)}),b.data?(0,W.jsx)(s,{result:b.data,successLabel:M(t,`system.network.pairDone`)}):null]})]}),(0,W.jsx)(m,{title:M(t,`system.network.peers`),result:o.data,className:`xl:col-span-2`,children:e=>(0,W.jsx)(`div`,{className:`grid gap-2`,children:N(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:M(t,`system.network.pushWorkspace`),action:()=>L.pushPeer(n,z.getState().workspaceId)}),(0,W.jsx)(v,{label:M(t,`system.network.unpair`),action:()=>L.unpairPeer(n),invalidate:[`networkPeers`],variant:`destructive`})]})]},n)})})})]})}function xe(){let e=r(),{theme:t,setTheme:n,mode:o,setMode:c}=z(),d=z(e=>e.language),f=A({queryKey:[`health`],queryFn:L.health}),g=A({queryKey:[`sysinfo`],queryFn:L.sysinfo}),_=A({queryKey:[`computerMemory`],queryFn:L.computerMemory}),C=A({queryKey:[`brainStorage`],queryFn:L.brainStorage}),w=A({queryKey:[`backupHealth`],queryFn:L.backupHealth}),[T,E]=U.useState(``),[D,O]=U.useState(`lattice_brain`),[k,j]=U.useState(!1),[N,P]=U.useState(``),[F,ee]=U.useState(``),[I,te]=U.useState(``),[R,ne]=U.useState(!1),[H,re]=U.useState(!1),G=i({mutationFn:e=>L.dockerPostgres({consent:e,dry_run:!e,port:5432})}),K=i({mutationFn:()=>L.migratePostgres({dsn:T,schema_name:D||`lattice_brain`,dry_run:!0})}),q=i({mutationFn:()=>L.brainArchive({path:N.trim()||null,passphrase:I}),onSuccess:()=>e.invalidateQueries({queryKey:[`backupHealth`]})}),J=i({mutationFn:()=>L.brainArchiveInspect({path:F,passphrase:I||null})}),Y=i({mutationFn:()=>L.brainArchiveVerify({path:F,passphrase:I})}),X=i({mutationFn:()=>L.brainArchiveRestore({path:F,passphrase:I,dry_run:!0,confirm:!1})}),ae=i({mutationFn:()=>L.brainArchiveRestore({path:F,passphrase:I,dry_run:!1,confirm:R}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}}),oe=i({mutationFn:()=>L.brainArchiveImport({path:F,passphrase:I,dry_run:!0,confirm:!1})}),Z=i({mutationFn:()=>L.brainArchiveImport({path:F,passphrase:I,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:M(d,`system.panel.appearance`)}),(0,W.jsx)(u,{children:M(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:M(d,`system.theme.dark`)}),(0,W.jsx)(B,{variant:t===`light`?`default`:`outline`,onClick:()=>n(`light`),children:M(d,`system.theme.light`)})]})]}),(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:M(d,`system.panel.detailLevel`)}),(0,W.jsx)(u,{children:M(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:M(d,`shell.mode.${e}`)},e))})]}),(0,W.jsxs)(h,{"data-testid":`system-tools-panel`,children:[(0,W.jsxs)(l,{children:[(0,W.jsxs)(a,{className:`flex items-center gap-2`,children:[(0,W.jsx)(x,{className:`h-4 w-4`,"aria-hidden":`true`}),M(d,`system.panel.tools`)]}),(0,W.jsx)(u,{children:M(d,`system.panel.tools.hint`)})]}),(0,W.jsx)(p,{className:`flex flex-wrap gap-2`,children:[`search`,`read`,`skill`,`mcp`].map(e=>(0,W.jsx)(b,{variant:`muted`,children:M(d,`system.panel.tools.${e}`)},e))})]}),(0,W.jsx)(de,{}),(0,W.jsx)(ie,{}),(0,W.jsx)(m,{title:o===`basic`?M(d,`system.panel.brainStatus`):M(d,`system.panel.serverHealth`),result:f.data,children:e=>(0,W.jsx)(we,{data:e})}),(0,W.jsx)(m,{title:o===`basic`?M(d,`system.panel.readiness`):M(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)(S,{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:M(d,n)})]})}return(0,W.jsx)(y,{value:e})}}),(0,W.jsx)(m,{title:o===`basic`?M(d,`system.storage.title`):M(d,`system.panel.brainStorage`),result:C.data,children:e=>(0,W.jsx)(Te,{data:e,mode:o,language:d})}),o===`basic`?null:(0,W.jsx)(m,{title:M(d,`system.backup.health`),result:w.data,children:e=>(0,W.jsx)(Ee,{data:e})}),o===`basic`?null:(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:M(d,`system.archive.title`)}),(0,W.jsx)(u,{children:M(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:N,onChange:e=>P(e.target.value),placeholder:M(d,`system.archive.exportPath`)}),(0,W.jsx)(V,{value:F,onChange:e=>ee(e.target.value),placeholder:M(d,`system.archive.restorePath`)})]}),(0,W.jsx)(V,{type:`password`,value:I,onChange:e=>te(e.target.value),placeholder:M(d,`system.archive.passphrase`)}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(B,{onClick:()=>q.mutate(),disabled:!I||q.isPending,children:M(d,`system.archive.export`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>J.mutate(),disabled:!F||J.isPending,children:M(d,`system.archive.inspect`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>Y.mutate(),disabled:!F||!I||Y.isPending,children:M(d,`system.archive.verify`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>X.mutate(),disabled:!F||!I||X.isPending,children:M(d,`system.archive.restoreDryRun`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>oe.mutate(),disabled:!F||!I||oe.isPending,children:M(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:R,onChange:e=>ne(e.target.checked)}),M(d,`system.archive.confirmRestore`)]}),(0,W.jsx)(B,{variant:`destructive`,onClick:()=>ae.mutate(),disabled:!F||!I||!R||ae.isPending,children:M(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=>re(e.target.checked)}),M(d,`system.archive.confirmImport`)]}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>Z.mutate(),disabled:!F||!I||!H||Z.isPending,children:M(d,`system.archive.import`)})]}),[q.data,J.data,Y.data,X.data,ae.data,oe.data,Z.data].filter(Boolean).map((e,t)=>(0,W.jsx)(s,{result:e,successLabel:M(d,`system.archive.requestDone`)},t))]})]}),o===`basic`?null:(0,W.jsxs)(h,{children:[(0,W.jsxs)(l,{children:[(0,W.jsx)(a,{children:M(d,`system.scale.title`)}),(0,W.jsx)(u,{children:M(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:T,onChange:e=>E(e.target.value),placeholder:M(d,`system.scale.dsn`)}),(0,W.jsx)(V,{value:D,onChange:e=>O(e.target.value),placeholder:M(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:M(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:k,onChange:e=>j(e.target.checked)}),M(d,`system.scale.dockerConsent`)]}),(0,W.jsx)(B,{onClick:()=>G.mutate(!0),disabled:!k||G.isPending,children:M(d,`system.scale.dockerStart`)}),(0,W.jsx)(B,{variant:`outline`,onClick:()=>K.mutate(),disabled:!T||K.isPending,children:M(d,`system.scale.migrationPlan`)})]}),G.data?(0,W.jsx)(s,{result:G.data,successLabel:M(d,`system.scale.dockerDone`)}):null,K.data?(0,W.jsx)(s,{result:K.data,successLabel:M(d,`system.scale.migrationDone`)}):null]})]}),o===`basic`?null:(0,W.jsx)(m,{title:M(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:M(d,`system.computerMemory.enable`),action:()=>L.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,W.jsx)(v,{label:M(d,`system.computerMemory.disable`),action:()=>L.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function Q(e,t,n){return t==null||t===``?n:typeof t==`boolean`?M(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function Se({data:e}){let t=z(e=>e.language),n=N(e.presence||e.clients||e);return n.length?(0,W.jsx)(d,{items:n,titleKey:`user`,metaKey:`workspace_id`}):(0,W.jsx)(g,{title:M(t,`system.presence.empty`),detail:M(t,`system.presence.emptyDetail`)})}function Ce({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:M(n,`system.device.thisMac`),status:M(n,`system.value.trusted`),detail:M(n,`system.device.thisMacDetail`)}),(0,W.jsx)(b,{variant:`muted`,children:Q(n,e.algorithm,M(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:M(n,`system.value.localDevice`)}),(0,W.jsx)(b,{variant:`muted`,children:Q(n,e.algorithm,M(n,`system.value.identityKey`))})]}),(0,W.jsx)(o,{data:{device_id:e.device_id||e.id||M(n,`system.value.notReported`),fingerprint:e.fingerprint||M(n,`system.value.notReported`),public_key:r?P(r.replace(/\s+/g,` `),72):M(n,`system.value.notReported`)}})]})}function we({data:e}){let t=z(e=>e.mode),n=z(e=>e.language);return t===`basic`?(0,W.jsx)($,{title:M(n,`system.health.title`),status:M(n,`system.health.ok`),detail:M(n,`system.health.detail`)}):(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:M(n,`system.health.status`),value:e.status||e.ok||M(n,`system.value.reported`)},{label:M(n,`system.health.version`),value:e.version||M(n,`system.value.notReported`)},{label:M(n,`system.health.mode`),value:e.mode||e.environment||M(n,`system.value.local`)},{label:M(n,`system.health.port`),value:e.port||e.backend_port||M(n,`system.value.configured`)}]}),(0,W.jsx)(y,{value:e})]})}function Te({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:M(n,`system.storage.local.title`),status:M(n,`system.storage.local.badge`),detail:M(n,`system.storage.local.detail`)}),(0,W.jsx)($,{title:M(n,`system.storage.search.title`),status:c?M(n,`system.storage.search.on`):M(n,`system.storage.search.pending`),detail:c?M(n,`system.storage.search.detailOn`):M(n,`system.storage.search.detailPending`)})]}):(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(f,{stats:[{label:M(n,`system.storage.activeEngine`),value:r.engine||e.engine||M(n,`system.storage.sqlite`)},{label:M(n,`system.storage.sqliteDefault`),value:r.engine===`postgres`?M(n,`system.value.scaleMode`):M(n,`system.value.enabled`)},{label:M(n,`system.storage.vector`),value:o||M(n,`system.value.notReported`)},{label:M(n,`system.storage.postgres`),value:s?M(n,`system.value.available`):M(n,`system.value.optional`)}]}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,W.jsx)($,{title:M(n,`system.storage.sqlite`),status:r.available===!1?M(n,`system.value.unavailable`):M(n,`system.value.default`),detail:Q(n,r.reason||r.path||e.path,M(n,`system.storage.sqliteDetail`))}),(0,W.jsx)($,{title:M(n,`system.storage.vector`),status:Q(n,o,M(n,`system.value.reported`)),detail:Q(n,r.vector_reason||r.sqlite_vec_reason||e.vector_reason,M(n,`system.storage.vectorDetail`))}),(0,W.jsx)($,{title:M(n,`system.storage.postgres`),status:s?M(n,`system.value.available`):M(n,`system.value.notEnabled`),detail:Q(n,i.reason||i.dsn||i.status,M(n,`system.storage.postgresDetail`))})]}),Object.keys(a).length?(0,W.jsx)(y,{value:{backup_health:a}}):null]})}function Ee({data:e}){let t=z(e=>e.language);return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(f,{stats:[{label:M(t,`system.backup.available`),value:e.available===!1?M(t,`system.value.no`):M(t,`system.value.yes`)},{label:M(t,`system.backup.backups`),value:e.count||e.backups||0},{label:M(t,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:M(t,`system.backup.zip`),value:e.zip_backups||0}]}),(0,W.jsx)(o,{data:{directory:e.directory||M(t,`system.value.notReported`),latest:e.latest||M(t,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||M(t,`system.value.notReported`),failure:e.error||e.reason||M(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 De({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:M(t,`system.hardening.version`),value:e.version||M(t,`system.value.reported`)},{label:M(t,`system.hardening.localOnly`),value:r.local_only_default??n.local_only_default??M(t,`system.value.reported`)},{label:M(t,`system.hardening.storage`),value:I(i.active)?i.active.engine:M(t,`system.value.reported`)},{label:M(t,`system.hardening.backups`),value:a.count||a.available||M(t,`system.value.reported`)}]}),(0,W.jsxs)(`div`,{className:`flex flex-col sm:flex-row flex-wrap gap-3`,children:[(0,W.jsx)($,{title:M(t,`system.hardening.startup`),status:M(t,n.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:M(t,`system.hardening.startupDetail`)}),(0,W.jsx)($,{title:M(t,`system.hardening.integrations`),status:M(t,r.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:M(t,`system.hardening.integrationsDetail`)}),(0,W.jsx)($,{title:M(t,`system.hardening.identity`),status:Q(t,o.algorithm||o.fingerprint,M(t,`system.value.reported`)),detail:Q(t,o.storage,M(t,`system.hardening.identityStorage`))}),(0,W.jsx)($,{title:M(t,`system.hardening.permissions`),status:M(t,s.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:M(t,`system.hardening.permissionsDetail`)})]})]})}function Oe({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:M(t,`system.security.eventsToday`),value:n.events_today||0},{label:M(t,`system.security.highRisk`),value:n.high_risk_events||r.high||0},{label:M(t,`system.security.review`),value:n.review_required||0},{label:M(t,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,W.jsx)(y,{value:{severity_counts:r,sensitive_fields:e.field_counts||{}}})]})}function ke(){let e=z(e=>e.mode),t=z(e=>e.language),n=A({queryKey:[`adminSummary`],queryFn:L.adminSummary}),r=A({queryKey:[`adminUsers`],queryFn:L.adminUsers}),i=A({queryKey:[`adminAudit`],queryFn:()=>L.adminAudit()}),a=A({queryKey:[`adminRoles`],queryFn:L.adminRoles}),s=A({queryKey:[`adminPolicies`],queryFn:L.adminPolicies}),c=A({queryKey:[`adminProductHardening`],queryFn:L.adminProductHardening}),l=A({queryKey:[`adminSecurity`],queryFn:L.adminSecurity}),u=A({queryKey:[`vpcStatus`],queryFn:L.vpcStatus});return e===`admin`?(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsx)(m,{title:M(t,`system.admin.summary`),result:n.data,children:e=>(0,W.jsx)(o,{data:e})}),(0,W.jsx)(m,{title:M(t,`system.admin.users`),result:r.data,children:e=>(0,W.jsx)(d,{items:e,titleKey:`email`,metaKey:`role`})}),(0,W.jsx)(m,{title:M(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:M(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:M(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:M(t,`system.admin.hardening`),result:c.data,children:e=>(0,W.jsx)(De,{data:e})}),(0,W.jsx)(m,{title:M(t,`system.admin.security`),result:l.data,children:e=>(0,W.jsx)(Oe,{data:e})}),(0,W.jsx)(m,{title:M(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:M(t,`system.admin.communityUnavailable`)}),(0,W.jsx)(y,{value:e})]})})]}):(0,W.jsx)(_,{title:M(t,`system.admin.controls`),detail:M(t,`system.admin.controlsDetail`),target:`admin`})}export{me as SystemPage};
|