ltcai 9.7.0 → 9.8.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.
Files changed (51) hide show
  1. package/README.md +98 -316
  2. package/docs/CHANGELOG.md +37 -0
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +1 -1
  5. package/docs/ONBOARDING.md +1 -1
  6. package/docs/TRUST_MODEL.md +1 -1
  7. package/docs/WHY_LATTICE.md +1 -1
  8. package/docs/kg-schema.md +1 -1
  9. package/lattice_brain/__init__.py +1 -1
  10. package/lattice_brain/graph/retrieval.py +93 -4
  11. package/lattice_brain/graph/retrieval_vector.py +43 -0
  12. package/lattice_brain/ingestion.py +399 -14
  13. package/lattice_brain/runtime/multi_agent.py +1 -1
  14. package/latticeai/__init__.py +1 -1
  15. package/latticeai/api/brain_intelligence.py +12 -0
  16. package/latticeai/api/chat.py +17 -0
  17. package/latticeai/api/chat_helpers.py +48 -0
  18. package/latticeai/api/chat_stream.py +9 -1
  19. package/latticeai/api/local_files.py +120 -2
  20. package/latticeai/core/agent_eval.py +123 -0
  21. package/latticeai/core/legacy_compatibility.py +1 -1
  22. package/latticeai/core/marketplace.py +1 -1
  23. package/latticeai/core/workspace_os.py +1 -1
  24. package/latticeai/services/architecture_readiness.py +1 -1
  25. package/latticeai/services/automation_intelligence.py +151 -14
  26. package/latticeai/services/brain_intelligence.py +72 -0
  27. package/latticeai/services/product_readiness.py +1 -1
  28. package/package.json +1 -1
  29. package/scripts/check_current_release_docs.mjs +1 -1
  30. package/src-tauri/Cargo.lock +1 -1
  31. package/src-tauri/Cargo.toml +1 -1
  32. package/src-tauri/tauri.conf.json +1 -1
  33. package/static/app/asset-manifest.json +11 -11
  34. package/static/app/assets/{Act-B6c39ays.js → Act-Dd3z8AzF.js} +2 -2
  35. package/static/app/assets/Brain-BMkgdWnI.js +321 -0
  36. package/static/app/assets/Capture-D2Aw9gkv.js +1 -0
  37. package/static/app/assets/Library-Yreq-KW5.js +1 -0
  38. package/static/app/assets/System-CXNmmtEo.js +1 -0
  39. package/static/app/assets/{index-85wQvEie.css → index-7gY9t9Sd.css} +1 -1
  40. package/static/app/assets/index-CndfILiF.js +18 -0
  41. package/static/app/assets/primitives-DxsIXb6G.js +1 -0
  42. package/static/app/assets/textarea-DH7ne8VI.js +1 -0
  43. package/static/app/index.html +2 -2
  44. package/static/sw.js +1 -1
  45. package/static/app/assets/Brain-D7Qg4k6M.js +0 -321
  46. package/static/app/assets/Capture-VF_di68r.js +0 -1
  47. package/static/app/assets/Library-D_Gis2PA.js +0 -1
  48. package/static/app/assets/System-C5s5H2ov.js +0 -1
  49. package/static/app/assets/index-DJC_2oub.js +0 -18
  50. package/static/app/assets/primitives-DL4Nip8C.js +0 -1
  51. package/static/app/assets/textarea-woZfCXHy.js +0 -1
@@ -0,0 +1 @@
1
+ import{_ as e,c as t,d as n,g as r,h as i,i as a,m as o,n as s,p as c,t as l,u,y as d}from"./primitives-DxsIXb6G.js";import{D as f,E as p,F as m,I as h,L as g,P as _,R as v,S as y,T as b,U as x,V as S,_ as C,a as w,d as T,g as E,h as D,i as O,m as k,p as A,r as j,z as M}from"./index-CndfILiF.js";var N=b(`clipboard-paste`,[[`path`,{d:`M11 14h10`,key:`1w8e9d`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v1.344`,key:`1e62lh`}],[`path`,{d:`m17 18 4-4-4-4`,key:`z2g111`}],[`path`,{d:`M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113`,key:`bjbb7m`}],[`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,key:`ublpy`}]]),P=b(`scan-line`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]),F=b(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),I=x(S()),L=M();function R({initialTab:e}){let t=m(e=>e.language),r=m(e=>e.mode),[i,a]=I.useState(e||`files`),o=[{id:`files`,label:p(t,`capture.tab.files`)},{id:`local`,label:p(t,`capture.tab.local`)},{id:`browser`,label:p(t,`capture.tab.browser`)},{id:`pipeline`,label:p(t,`capture.tab.pipeline`)}];I.useEffect(()=>{(e===`pipeline`||e===`local`||e===`browser`||e===`files`)&&a(e)},[e]);let s=e=>{a(e),j(`/`+{files:`capture`,local:`my-computer`,browser:`capture-browser`,pipeline:`pipeline`}[e])};return(0,L.jsxs)(`div`,{className:`product-page capture-page space-y-5`,children:[(0,L.jsxs)(`header`,{className:`page-hero`,children:[(0,L.jsxs)(`div`,{className:`page-kicker`,children:[(0,L.jsx)(F,{className:`h-4 w-4`}),` `,p(t,`capture.kicker`)]}),(0,L.jsx)(`h1`,{className:`page-title`,children:p(t,`capture.title`)}),(0,L.jsx)(`p`,{className:`page-copy`,children:p(t,`capture.body`)})]}),(0,L.jsx)(n,{tabs:r===`basic`?o.filter(e=>e.id!==`pipeline`):o,value:i,onChange:e=>s(e)}),i===`files`?(0,L.jsx)(z,{}):null,i===`local`?(0,L.jsx)(X,{}):null,i===`browser`?(0,L.jsx)(Z,{}):null,i===`pipeline`?(0,L.jsx)($,{}):null]})}function z(){let t=m(e=>e.language),n=v(),l=g({queryKey:[`documents`],queryFn:()=>_.documents(200)}),[u,d]=I.useState([]),f=h({mutationFn:e=>B(e,d),onSuccess:()=>{n.invalidateQueries({queryKey:[`documents`]}),n.invalidateQueries({queryKey:[`graphStats`]}),n.invalidateQueries({queryKey:[`memoryManager`]})}}),y=I.useCallback(e=>{let t=Array.from(e);t.length&&f.mutate(t)},[f]);return(0,L.jsxs)(`div`,{className:`capture-files-flow grid gap-4 xl:grid-cols-[0.75fr_1.25fr]`,children:[(0,L.jsxs)(c,{children:[(0,L.jsxs)(r,{children:[(0,L.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,L.jsx)(F,{className:`h-4 w-4`}),` `,p(t,`capture.files.title`)]}),(0,L.jsx)(i,{children:p(t,`capture.files.description`)})]}),(0,L.jsxs)(o,{children:[(0,L.jsxs)(`label`,{className:`flex min-h-56 cursor-pointer flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-border bg-muted/30 p-6 text-center transition hover:bg-muted/50`,onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault(),y(e.dataTransfer.files)},children:[(0,L.jsx)(F,{className:`h-7 w-7 text-primary`}),(0,L.jsx)(`span`,{className:`text-lg font-semibold`,children:p(t,`capture.files.drop`)}),(0,L.jsx)(`span`,{className:`max-w-sm text-sm leading-6 text-muted-foreground`,children:p(t,`capture.files.dropDetail`)}),(0,L.jsx)(`input`,{type:`file`,multiple:!0,className:`sr-only`,onChange:e=>e.target.files&&y(e.target.files)})]}),(0,L.jsx)(V,{queue:u,onRetry:e=>y([e])})]})]}),(0,L.jsx)(s,{title:p(t,`capture.files.uploaded`),result:l.data,children:e=>(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(a,{items:e.documents||e,titleKey:`filename`,metaKey:`ingest_state`,limit:12}),(0,L.jsx)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm text-muted-foreground`,children:p(t,`capture.files.completed`)})]})})]})}async function B(e,t){let n=e.map(e=>({id:`${e.name}-${e.size}-${e.lastModified}-${Date.now()}`,file:e,name:W(e),size:e.size,status:`queued`}));t(e=>[...n,...e].slice(0,12));let r=[];for(let e of n){t(t=>t.map(t=>t.id===e.id?{...t,status:`uploading`}:t));let n=await _.uploadDocument(e.file);r.push(n),t(t=>t.map(t=>t.id===e.id?{...t,status:n.ok?`done`:`failed`,result:n}:t))}return r}function V({queue:e,onRetry:n}){let r=m(e=>e.language);return e.length?(0,L.jsx)(`div`,{className:`mt-4 space-y-2`,children:e.map(e=>{let i=H(e,r);return(0,L.jsxs)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[e.status===`done`?(0,L.jsx)(y,{className:`h-4 w-4 text-emerald-400`}):e.status===`failed`?(0,L.jsx)(d,{className:`h-4 w-4 text-amber-400`}):(0,L.jsx)(A,{className:`h-4 w-4 animate-spin text-primary`}),e.name]}),(0,L.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[Math.max(1,Math.round(e.size/1024)),` KB · `,i]})]}),e.status===`failed`?(0,L.jsxs)(w,{size:`sm`,variant:`outline`,onClick:()=>n(e.file),children:[(0,L.jsx)(T,{className:`h-3.5 w-3.5`}),` `,p(r,`capture.retry`)]}):null]}),e.result?(0,L.jsx)(t,{result:e.result,successLabel:p(r,`capture.files.success`)}):null]},e.id)})}):null}function H(e,t){if(e.status===`queued`)return p(t,`capture.files.queued`);if(e.status===`uploading`)return p(t,`capture.files.uploading`);if(!e.result?.ok)return e.result?.error||p(t,`capture.files.failed`);let n=e.result.data||{},r=String(n.node_id||n.graph_node||n.provenance_id||``);return r?p(t,`capture.files.capturedWithNode`,{node:r}):p(t,`capture.files.captured`)}var U={webkitdirectory:``,directory:``};function W(e){return e.webkitRelativePath||e.name}function G(e){return(e[0]?.webkitRelativePath||``).split(`/`).filter(Boolean)[0]||``}function K(){let e=window;return!!(e.__TAURI__?.core?.invoke||e.latticeDesktop?.selectFolder||e.__TAURI_INTERNALS__&&window.location.protocol===`tauri:`)}function q(e){return e instanceof DOMException&&e.name===`AbortError`}async function J(e){let t=[];if(typeof e.values==`function`){for await(let n of e.values())t.push(n);return t}if(typeof e.entries==`function`)for await(let[,n]of e.entries())t.push(n);return t}async function Y(e){let t=[];for(let n of await J(e)){if(n.kind===`file`){t.push(await n.getFile());continue}t.push(...await Y(n))}return t}function X(){let n=m(e=>e.language),d=v(),y=I.useRef(null),[b,x]=I.useState(``),[S,C]=I.useState(null),[T,k]=I.useState(``),[j,M]=I.useState(!1),[N,F]=I.useState([]),R=g({queryKey:[`localSources`],queryFn:_.localSources}),z=g({queryKey:[`localAgent`],queryFn:_.localAgent}),H=h({mutationFn:e=>_.connectFolder((e||b).trim()),onSuccess:()=>{C(null),d.invalidateQueries({queryKey:[`localSources`]}),d.invalidateQueries({queryKey:[`graphStats`]}),d.invalidateQueries({queryKey:[`memoryManager`]})}}),W=h({mutationFn:e=>B(e,F),onSuccess:()=>{d.invalidateQueries({queryKey:[`documents`]}),d.invalidateQueries({queryKey:[`graphStats`]}),d.invalidateQueries({queryKey:[`memoryManager`]})}}),J=I.useCallback((e,t)=>{if(!e.length){C(p(n,`capture.local.emptyFolder`));return}C(null),k(t||G(e)||p(n,`capture.local.browserFolder`)),W.mutate(e)},[W,n]),X=I.useCallback(async()=>{if(!j){M(!0),C(null);try{let e=window.showDirectoryPicker;if(!K()&&typeof e==`function`){let t=await e.call(window);J(await Y(t),t.name);return}if(K()){let e=await _.selectFolder();if(e){k(``),x(e),H.mutate(e);return}}if(typeof e==`function`){let t=await e.call(window);J(await Y(t),t.name);return}if(y.current){y.current.click();return}C(p(n,`capture.local.pickUnavailable`))}catch(e){q(e)||C(p(n,`capture.local.pickUnavailable`))}finally{M(!1)}}},[J,j,H,n]),Z=I.useCallback(()=>{let e=b.trim();e&&(C(null),k(``),H.mutate(e))},[H,b]),Q=(W.data||[]).find(e=>!e.ok)?.error,$=!!(W.error||Q);return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[0.9fr_1.1fr]`,children:[(0,L.jsxs)(c,{children:[(0,L.jsxs)(r,{children:[(0,L.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,L.jsx)(D,{className:`h-4 w-4`}),` `,p(n,`capture.local.title`)]}),(0,L.jsx)(i,{children:p(n,`capture.local.description`)})]}),(0,L.jsxs)(o,{className:`space-y-3`,children:[(0,L.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),Z()},children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,L.jsx)(O,{value:b,onChange:e=>x(e.target.value),placeholder:p(n,`capture.local.placeholder`)}),(0,L.jsxs)(w,{type:`button`,variant:`outline`,disabled:j||H.isPending||W.isPending,onClick:()=>void X(),children:[j?(0,L.jsx)(A,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(E,{className:`h-4 w-4`}),j?p(n,`capture.local.choosing`):p(n,`capture.local.choose`)]})]}),(0,L.jsx)(`input`,{ref:y,type:`file`,multiple:!0,className:`sr-only`,"aria-hidden":`true`,tabIndex:-1,...U,onChange:e=>{let t=Array.from(e.currentTarget.files||[]);e.currentTarget.value=``,J(t)}}),(0,L.jsxs)(w,{type:`submit`,disabled:!b.trim()||H.isPending,children:[H.isPending?(0,L.jsx)(A,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(P,{className:`h-4 w-4`}),p(n,`capture.local.connect`)]})]}),S?(0,L.jsx)(t,{result:{ok:!1,status:0,data:{},source:`unavailable`,error:S}}):null,H.data?(0,L.jsx)(t,{result:H.data,successLabel:p(n,`capture.local.success`)}):null,T?(0,L.jsx)(t,{result:{ok:W.isPending||!$,status:$?0:200,data:{folder:T},source:$?`unavailable`:`live`,error:W.error?p(n,`capture.local.browserImportFailed`):Q},successLabel:W.isPending?p(n,`capture.local.browserImporting`):p(n,`capture.local.browserImportSuccess`,{folder:T})}):null,(0,L.jsx)(V,{queue:N,onRetry:e=>J([e],T)})]})]}),(0,L.jsx)(s,{title:p(n,`capture.local.sources`),result:R.data,children:e=>(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(a,{items:e.sources,titleKey:`path`,metaKey:`status`}),f(e.sources).map(e=>(0,L.jsx)(l,{label:p(n,`capture.local.stop`,{source:String(e.path||e.id||p(n,`capture.local.source`))}),action:()=>_.localWatchStop(String(e.id||e.source_id)),invalidate:[`localSources`]},String(e.id||e.source_id||e.path)))]})}),(0,L.jsx)(s,{title:p(n,`capture.local.access`),result:z.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(u,{value:e})})]})}function Z(){let n=m(e=>e.language),a=v(),[s,l]=I.useState(``),u=h({mutationFn:e=>_.browserReadUrl(e),onSuccess:()=>{a.invalidateQueries({queryKey:[`graphStats`]}),a.invalidateQueries({queryKey:[`memoryManager`]})}}),d=I.useCallback(()=>{let e=Q(s);e&&(l(e),u.mutate(e))},[u,s]),f=I.useCallback(async()=>{let e=Q(await navigator.clipboard?.readText().catch(()=>``)||``);e&&(l(e),u.mutate(e))},[u]);return(0,L.jsxs)(c,{children:[(0,L.jsxs)(r,{children:[(0,L.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,L.jsx)(C,{className:`h-4 w-4`}),` `,p(n,`capture.browser.title`)]}),(0,L.jsx)(i,{children:p(n,`capture.browser.description`)})]}),(0,L.jsxs)(o,{className:`space-y-3`,children:[(0,L.jsxs)(`form`,{className:`flex flex-col gap-2 sm:flex-row`,onSubmit:e=>{e.preventDefault(),d()},children:[(0,L.jsx)(O,{value:s,onChange:e=>l(e.target.value),placeholder:p(n,`capture.browser.placeholder`),inputMode:`url`}),(0,L.jsxs)(w,{type:`button`,variant:`outline`,disabled:u.isPending,onClick:()=>void f(),children:[(0,L.jsx)(N,{className:`h-4 w-4`}),` `,p(n,`capture.browser.paste`)]}),(0,L.jsxs)(w,{type:`submit`,disabled:!s.trim()||u.isPending,children:[u.isPending?(0,L.jsx)(A,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(P,{className:`h-4 w-4`}),p(n,`capture.browser.capture`)]})]}),u.data?(0,L.jsx)(t,{result:u.data,successLabel:p(n,`capture.browser.success`)}):null]})]})}function Q(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:/^[\w.-]+\.[a-z]{2,}([/:?#].*)?$/i.test(t)?`https://${t}`:t:``}function $(){let t=m(e=>e.language),n=g({queryKey:[`index`],queryFn:_.indexStatus}),a=g({queryKey:[`graphStats`],queryFn:_.graphStats});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(s,{title:p(t,`capture.pipeline.status`),result:n.data,children:e=>(0,L.jsx)(u,{value:e})}),(0,L.jsx)(s,{title:p(t,`capture.pipeline.growth`),result:a.data,children:e=>(0,L.jsx)(u,{value:e})}),(0,L.jsxs)(c,{className:`xl:col-span-2`,children:[(0,L.jsxs)(r,{children:[(0,L.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,L.jsx)(k,{className:`h-4 w-4`}),` `,p(t,`capture.pipeline.refresh`)]}),(0,L.jsx)(i,{children:p(t,`capture.pipeline.description`)})]}),(0,L.jsx)(o,{children:(0,L.jsx)(l,{label:p(t,`capture.pipeline.rebuild`),action:()=>_.rebuildIndex(),invalidate:[`index`]})})]})]})}export{R as CapturePage};
@@ -0,0 +1 @@
1
+ import{_ as e,c as t,d as n,f as r,g as i,h as a,i as o,l as s,m as c,n as l,p as u,r as d,t as f,u as p,v as m}from"./primitives-DxsIXb6G.js";import{D as h,E as g,F as _,I as v,L as y,P as b,R as x,S,T as C,U as w,V as T,a as E,b as D,i as O,r as k,v as A,z as j}from"./index-CndfILiF.js";var M=C(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),N=C(`circle-play`,[[`path`,{d:`M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z`,key:`kmsa83`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),P=C(`package-plus`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`M16 17h6`,key:`1ook5g`}],[`path`,{d:`M19 14v6`,key:`1ckrd5`}],[`path`,{d:`M21 10.535V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.675-.955`,key:`28k6lz`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),F=C(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),I=C(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),L=w(T()),R=j(),z=[{id:`models`,labelKey:`library.tab.models`},{id:`skills`,labelKey:`library.tab.skills`},{id:`mcp`,labelKey:`library.tab.mcp`},{id:`marketplace`,labelKey:`library.tab.marketplace`}];function B({initialTab:e}){let t=_(e=>e.mode),r=_(e=>e.language),[i,a]=L.useState(e||`models`);L.useEffect(()=>{z.some(t=>t.id===e)&&a(e)},[e]);let o=(t===`basic`?z.filter(e=>e.id===`models`):z).map(e=>({id:e.id,label:g(r,e.labelKey)})),s=e=>{a(e),k(`/`+e)};return(0,R.jsxs)(`div`,{className:`product-page library-page space-y-5`,children:[(0,R.jsxs)(`header`,{className:`page-hero`,children:[(0,R.jsxs)(`div`,{className:`page-kicker`,children:[(0,R.jsx)(M,{className:`h-4 w-4`}),` `,g(r,`library.kicker`)]}),(0,R.jsx)(`h1`,{className:`page-title`,children:g(r,`library.title`)}),(0,R.jsx)(`p`,{className:`page-copy`,children:g(r,`library.body`)})]}),(0,R.jsx)(n,{tabs:o,value:i,onChange:e=>s(e)}),i===`models`?(0,R.jsx)(V,{}):null,i===`skills`?(0,R.jsx)(K,{}):null,i===`mcp`?(0,R.jsx)(q,{}):null,i===`marketplace`?(0,R.jsx)(J,{}):null]})}function V(){let e=x(),t=_(e=>e.mode),n=_(e=>e.language),i=y({queryKey:[`models`],queryFn:b.models}),a=y({queryKey:[`modelRecommendations`,`local_mlx`],queryFn:()=>b.modelRecommendations(`local_mlx`)}),s=y({queryKey:[`embeddings`],queryFn:b.embeddingsStatus}),[c,u]=L.useState(!1),[v,C]=L.useState(null),[w,T]=L.useState([]),[O,k]=L.useState(null),[j,M]=L.useState(null),[F,z]=L.useState(!1),B=[...h(i.data?.data?.catalog),...h(i.data?.data?.recommended)],V=h(a.data?.data?.recommendations?.models),K=new Map(V.map(e=>[String(e.id),e])),q=h(i.data?.data?.loaded),J=String(i.data?.data?.current||``),Y=B.find(e=>q.includes(String(e.id))||String(e.id)===J),X=a.data?.data?.recommendations?.top_pick||null,Z=w[w.length-1]||null,Q=L.useCallback(e=>{let r=String(e||g(n,`library.model.notReady`));if(t!==`basic`)return r;let i=r.replace(/gemma4_unified/gi,g(n,`library.model.localFormat`)).replace(/mlx[-_ ]?vlm|mlx[-_ ]?lm|local_mlx|\bmlx\b|\bgguf\b|\bollama\b|hugging face/gi,g(n,`library.model.localSupport`)).replace(/runtime/gi,g(n,`library.model.support`)).replace(/model_type/gi,g(n,`library.model.format`));return n===`en`?i.replace(/this local model format local model support format/gi,g(n,`library.model.localFormat`)).replace(/local model support model support/gi,g(n,`library.model.localSupport`)):i},[n,t]);async function $(t,n,r){z(!0),C(t),T([]),k(null),M(null);let i=await b.streamModelPrepare({model:t,engine:n||`local_mlx`,allow_download:r},{onProgress:e=>T(t=>[...t.slice(-8),e]),onDone:e=>k(e),onError:e=>M(e)});z(!1),await e.invalidateQueries({queryKey:[`models`]}),await e.invalidateQueries({queryKey:[`modelRecommendations`,`local_mlx`]}),!i.ok&&!j&&M(i.data)}return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.2fr_0.8fr]`,children:[(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(l,{title:g(n,`library.models.setup.title`),description:g(n,`library.models.setup.desc`),result:a.data,children:r=>{let i=r.recommendations,a=r.profile;return(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(U,{language:n,mode:t,profile:a||{},recommendation:i||{},current:Y,currentId:J,latestProgress:Z,lastResult:O,onReload:()=>{Y&&$(String(Y.recommended_load_id||Y.id||J),String(Y.recommended_engine||Y.engine||`local_mlx`),c)},onUnload:()=>{J&&b.unloadModel(J).then(()=>e.invalidateQueries({queryKey:[`models`]}))}}),(0,R.jsx)(`div`,{className:`grid gap-2 md:grid-cols-3 xl:grid-cols-6`,children:[[g(n,`library.step.environment`),!0,D],[g(n,`library.step.recommend`),!!(X||B.length),S],[g(n,`library.step.install`),!!(Y||Z?.stage===`engine`),P],[g(n,`library.step.download`),!!(Y||Z?.stage===`download`),A],[g(n,`library.step.validate`),!!(Y||Z?.stage===`smoke_test`),I],[g(n,`library.step.ready`),!!(Y||O),N]].map(([e,t,r])=>(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3`,children:[L.createElement(r,{className:`h-4 w-4 text-primary`}),(0,R.jsx)(`div`,{className:`mt-2 text-sm font-medium`,children:String(e)}),(0,R.jsx)(m,{variant:t?`success`:`muted`,children:t?g(n,`library.step.done`):g(n,`library.step.pending`)})]},String(e)))}),(0,R.jsxs)(`label`,{className:`flex items-start gap-2 rounded-lg border border-border bg-background/55 p-3 text-sm leading-6`,children:[(0,R.jsx)(`input`,{className:`mt-1`,type:`checkbox`,checked:c,onChange:e=>u(e.target.checked)}),(0,R.jsx)(`span`,{children:g(n,`library.consent`)})]}),Z?(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(Z.message||g(n,`library.preparing`))}),(0,R.jsx)(`div`,{className:`mt-2 h-2 overflow-hidden rounded-full bg-muted`,children:(0,R.jsx)(`div`,{className:`h-full bg-primary`,style:{width:`${Number(Z.percent||8)}%`}})}),Z.detail?(0,R.jsx)(`div`,{className:`mt-2 text-xs text-muted-foreground`,children:String(Z.detail)}):null]}):null,j?(0,R.jsx)(W,{error:j}):null]})}}),(0,R.jsx)(l,{title:t===`basic`?g(n,`library.panel.recommended.basic`):g(n,`library.panel.recommended.other`),result:i.data,children:e=>(0,R.jsxs)(`div`,{className:`grid gap-2`,children:[(B.length?B:h(e.loaded)).slice(0,t===`basic`?3:14).map((r,i)=>{let a=String(r.id||r.model_id||r.name||i),o=h(e.loaded).includes(a)||e.current===a||r.state===`loaded`,s=String(r.recommended_load_id||a),l=String(r.recommended_engine||r.engine||``),u=K.get(a)||K.get(s)||{},d=G(r.verification),p=G(u.verification),_=G(r.hardware),y=G(u.hardware),x=_.notes||y.notes||(_.recommended_ram_gb?g(n,`library.model.ramRecommended`,{ram:String(_.recommended_ram_gb)}):``),S=r.safety_notes||u.safety_notes,C=r.license||u.license,w=r.runtime_compatibility||u.runtime_compatibility||{},T=String(w.status||``)===`fallback_available`,D=r.load_status===`unsupported`||w.supported===!1,O=!!r.download_required,k=(!!r.load_available||o)&&!D,A=String(r.load_status||(o?`loaded`:`unavailable`)),j=Q(r.unavailable_reason||g(n,`library.model.notReady`)),M=String(r.runtime_label||w.preferred_runtime||l||`local_mlx`),N=String(w.action||A.replace(/_/g,` `)),P=D&&t===`basic`?g(n,`library.model.needsAttention`):D?N:A,I=k||O,L=r.download_size||r.estimated_size||u.download_size||u.estimated_size||r.size||u.size,z=r.provider||u.provider||r.organization||u.organization;return(0,R.jsxs)(`div`,{className:`grid gap-3 rounded-lg border border-border bg-background/55 p-4 md:grid-cols-[1fr_auto]`,children:[(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`div`,{className:`text-base font-semibold`,children:String(r.name||a)}),X?.id===a||r.recommended_default?(0,R.jsx)(m,{variant:`success`,children:g(n,`library.model.recommended`)}):null,String(r.modality||u.modality||``).includes(`multi`)||String(r.modality||``)===`multimodal`?(0,R.jsx)(m,{variant:`muted`,children:g(n,`library.model.multimodal`)}):null,d.verified||p.verified?(0,R.jsx)(m,{variant:`success`,title:g(n,`library.model.hfVerified`),children:`✓ HF`}):null]}),(0,R.jsx)(`div`,{className:`mt-1 text-sm text-muted-foreground`,children:t===`basic`?[Q(r.family||u.family||g(n,`library.model.local`)),/mlx|gguf|ollama/i.test(String(r.size||u.size||``))?``:r.size||u.size].filter(Boolean).map(String).join(` · `):[r.family||u.family||g(n,`library.value.local`),r.size||u.size].filter(Boolean).map(String).join(` · `)}),r.hardware||u.hardware?(0,R.jsx)(`div`,{className:`mt-1 text-[11px] text-muted-foreground/80`,children:String(x)}):null,(0,R.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1 text-[11px] text-muted-foreground`,children:[(0,R.jsx)(m,{variant:`muted`,children:O?g(n,`library.model.downloadSize`,{size:String(L||g(n,`library.model.downloadRequired`))}):g(n,`library.model.noDownload`)}),(0,R.jsx)(m,{variant:`muted`,children:O?g(n,`library.model.internetDuringDownload`):g(n,`library.model.runsLocally`)}),z?(0,R.jsx)(m,{variant:`muted`,children:String(z)}):null]}),D?(0,R.jsxs)(`div`,{className:`mt-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:t===`basic`?g(n,`library.model.attentionBeforeLoad`):N}),(0,R.jsx)(`div`,{className:`text-muted-foreground`,children:Q(w.user_message||j)})]}):T?(0,R.jsxs)(`div`,{className:`mt-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:t===`basic`?g(n,`library.model.compatiblePath`):g(n,`library.model.runtimeFallback`)}),(0,R.jsx)(`div`,{className:`text-muted-foreground`,children:Q(w.user_message||g(n,`library.model.compatibilityFallback`))})]}):!o&&!k?(0,R.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:j}):null,t===`basic`?null:(0,R.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`div`,{children:[M,` · `,s,r.load_strategy||u.load_strategy?` · ${String(r.load_strategy||u.load_strategy)}`:``,d.notes?` · ${String(d.notes).slice(0,60)}`:``]}),S||C?(0,R.jsx)(`div`,{children:[C?g(n,`library.model.license`,{license:String(C)}):``,S?String(S):``].filter(Boolean).join(` · `)}):null]}),D||T?(0,R.jsx)(H,{compatibility:w}):null]}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 md:justify-end`,children:[(0,R.jsx)(m,{variant:o?`success`:k?`muted`:`warning`,children:o?g(n,`library.model.loaded`):P}),o?(0,R.jsx)(f,{label:g(n,`library.runtime.unload`),action:()=>b.unloadModel(s),invalidate:[`models`]}):(0,R.jsx)(E,{variant:`outline`,disabled:F||D||!I||O&&!c,onClick:()=>$(s,l||`local_mlx`,c),children:v===s&&F?g(n,`library.btn.preparing`):O?g(n,`library.btn.installLoad`):g(n,`library.btn.validateLoad`)})]})]},a)}),t===`basic`&&B.length>3?(0,R.jsx)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm text-muted-foreground`,children:g(n,`library.model.shortListHint`)}):null]})})]}),(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(l,{title:t===`basic`?g(n,`library.models.embedding.basic`):g(n,`library.models.embedding.advanced`),result:s.data,children:e=>t===`basic`?(0,R.jsx)(r,{value:e.state||g(n,`library.value.ready`)}):(0,R.jsx)(p,{value:e})}),(0,R.jsx)(l,{title:t===`basic`?g(n,`library.models.validation`):g(n,`library.models.validationAdvanced`),result:i.data,children:e=>{let r=h(e.compat_profiles);return r.length?(0,R.jsx)(o,{items:r.map(e=>({...e,name:t===`basic`?e.name||e.display_name||g(n,`library.model.loadedName`):e.name||e.display_name||e.model_id,status:e.quality_status||e.load_status||g(n,`library.model.checked`)})),titleKey:`name`,metaKey:`status`,limit:6}):(0,R.jsx)(d,{title:g(n,`library.model.noneChecked`),detail:g(n,`library.model.noneCheckedHint`)})}})]})]})}function H({compatibility:e}){let t=_(e=>e.mode),n=_(e=>e.language),r=h(e.alternatives);return r.length?(0,R.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:r.slice(0,3).map(e=>(0,R.jsx)(m,{variant:`muted`,children:t===`basic`&&/mlx|gguf|ollama|lm studio/i.test(String(e.name||e.id))?g(n,`library.model.compatibleAlternative`):String(e.name||e.id)},String(e.id||e.name)))}):null}function U({language:e=`en`,mode:t=`advanced`,profile:n,recommendation:r,current:i,currentId:a,latestProgress:o,lastResult:c,onReload:l,onUnload:u}){let d=String(i?.name||i?.id||a||``),f=String(i?.engine||i?.recommended_engine||o?.engine||`local_mlx`),p=String(i?.local_path||i?.storage_location||r.cache_path||r.storage_location||`~/.cache/huggingface / ~/.latticeai/models`),m=String(o?.stage||c?.stage||(d?g(e,`library.value.ready`):g(e,`library.value.idle`))),h=t===`basic`;return(0,R.jsxs)(`div`,{className:`space-y-3`,children:[(0,R.jsx)(s,{stats:h?[{label:g(e,`library.runtime.computer`),value:n?.os?`${String(n.os)} ${String(n.arch||``)}`:g(e,`library.value.detected`)},{label:g(e,`library.runtime.loaded`),value:d||g(e,`library.runtime.noneShort`)}]:[{label:g(e,`library.runtime.computer`),value:n?.os?`${String(n.os)} ${String(n.arch||``)}`:g(e,`library.value.detected`)},{label:g(e,`library.runtime.engine`),value:f},{label:g(e,`library.runtime.loaded`),value:d||g(e,`library.runtime.noLoaded`)},{label:g(e,`library.runtime.state`),value:m}]}),(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:d?g(e,`library.models.runtime.available`):g(e,`library.models.runtime.none`)}),h?null:(0,R.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:g(e,`library.runtime.cacheStorage`,{path:p})})]}),(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,R.jsx)(E,{variant:`outline`,size:`sm`,disabled:!d,onClick:l,children:g(e,`library.runtime.reload`)}),(0,R.jsx)(E,{variant:`outline`,size:`sm`,disabled:!d,onClick:u,children:g(e,`library.runtime.unload`)})]})]}),o?(0,R.jsxs)(`div`,{className:`mt-3`,children:[(0,R.jsxs)(`div`,{className:`flex justify-between text-xs text-muted-foreground`,children:[(0,R.jsx)(`span`,{children:String(o.message||g(e,`library.preparing`))}),(0,R.jsxs)(`span`,{children:[Number(o.percent||0),`%`]})]}),(0,R.jsx)(`div`,{className:`mt-1 h-2 overflow-hidden rounded-full bg-muted`,children:(0,R.jsx)(`div`,{className:`h-full bg-primary`,style:{width:`${Number(o.percent||8)}%`}})})]}):null]})]})}function W({error:e}){let t=_(e=>e.language),n=h(e.recovery_guidance);return(0,R.jsxs)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.user_message||g(t,`library.model.setupAttention`))}),n.length?(0,R.jsx)(`ul`,{className:`mt-2 list-inside list-disc text-muted-foreground`,children:n.slice(0,3).map(e=>(0,R.jsx)(`li`,{children:e},e))}):null]})}function G(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function K(){let e=x(),t=_(e=>e.language),n=y({queryKey:[`skills`],queryFn:b.skills}),r=y({queryKey:[`skillsMarketplace`],queryFn:b.skillsMarketplace}),i=v({mutationFn:e=>b.skillInstall(String(e.name||e.id),String(e.plugin||``)),onSuccess:()=>e.invalidateQueries({queryKey:[`skills`]})});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,R.jsx)(l,{title:g(t,`library.skills.installed`),result:n.data,children:e=>(0,R.jsx)(`div`,{className:`grid gap-2`,children:h(e.skills).map(e=>(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.name||e.id)}),(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.plugin||e.description||``)})]}),(0,R.jsx)(f,{label:g(t,e.enabled?`library.skills.disable`:`library.skills.enable`),action:()=>b.skillToggle(String(e.name||e.id),!!e.enabled),invalidate:[`skills`]})]},String(e.name||e.id)))})}),(0,R.jsx)(l,{title:g(t,`library.skills.marketplace`),result:r.data,children:e=>(0,R.jsx)(`div`,{className:`grid gap-2`,children:h(e.skills).slice(0,10).map(e=>(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.name||e.id)}),(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.description||e.category||``)})]}),(0,R.jsx)(E,{variant:`outline`,disabled:i.isPending,onClick:()=>i.mutate(e),children:g(t,`library.skills.install`)})]},String(e.name||e.id)))})})]})}function q(){let n=_(e=>e.mode),r=_(e=>e.language),[s,d]=L.useState(`github`),f=y({queryKey:[`mcpTools`],queryFn:b.mcpTools}),p=v({mutationFn:()=>b.mcpRecommend(s)});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1fr_1fr]`,children:[(0,R.jsx)(l,{title:g(r,n===`basic`?`library.connector.connections`:`library.connector.mcpTools`),result:f.data,children:e=>(0,R.jsx)(o,{items:e.tools||e.installed_mcps,titleKey:`name`,metaKey:`status`})}),(0,R.jsxs)(u,{children:[(0,R.jsxs)(i,{children:[(0,R.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,R.jsx)(F,{className:`h-4 w-4`}),` `,g(r,`library.connector.recommend`)]}),(0,R.jsx)(a,{children:g(r,`library.connector.recommendHint`)})]}),(0,R.jsxs)(c,{className:`space-y-3`,children:[(0,R.jsxs)(`div`,{className:`flex gap-2`,children:[(0,R.jsx)(O,{value:s,onChange:e=>d(e.target.value)}),(0,R.jsx)(E,{onClick:()=>p.mutate(),disabled:!s.trim()||p.isPending,children:g(r,`library.connector.recommendAction`)})]}),p.data?(0,R.jsx)(t,{result:p.data,successLabel:g(r,`library.connector.recommendDone`)}):null]})]})]})}function J(){let t=_(e=>e.language),n=y({queryKey:[`templates`],queryFn:b.templates}),r=y({queryKey:[`plugins`],queryFn:b.pluginsRegistry}),s=y({queryKey:[`pluginsDirectory`],queryFn:b.pluginsDirectory});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-3`,children:[(0,R.jsx)(l,{title:g(t,`library.market.templates`),result:n.data,children:e=>(0,R.jsx)(o,{items:e.templates,titleKey:`name`,metaKey:`kind`})}),(0,R.jsx)(l,{title:g(t,`library.market.installedPlugins`),result:r.data,children:e=>(0,R.jsx)(o,{items:e.plugins,titleKey:`name`,metaKey:`status`})}),(0,R.jsx)(l,{title:g(t,`library.market.pluginDirectory`),result:s.data,children:e=>(0,R.jsx)(o,{items:e.plugins,titleKey:`name`,metaKey:`category`})}),(0,R.jsxs)(u,{className:`xl:col-span-3`,children:[(0,R.jsxs)(i,{children:[(0,R.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,R.jsx)(P,{className:`h-4 w-4`}),` `,g(t,`library.market.templateInstall`)]}),(0,R.jsx)(a,{children:g(t,`library.market.templateInstallHint`)})]}),(0,R.jsx)(c,{children:h(n.data?.data?.templates).length?(0,R.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:h(n.data?.data?.templates).slice(0,6).map(e=>(0,R.jsx)(f,{label:g(t,`library.market.installTemplate`,{name:String(e.name||e.id)}),action:()=>b.installTemplate(e)},String(e.id||e.name)))}):(0,R.jsx)(o,{items:[]})})]})]})}export{B as LibraryPage};
@@ -0,0 +1 @@
1
+ import{_ as e,a as t,c as n,d as r,g as i,h as a,i as o,l as s,m as c,n as l,p as u,r as d,s as f,t as p,u as m,v as h}from"./primitives-DxsIXb6G.js";import{A as g,D as _,E as v,F as y,I as b,L as x,M as S,P as C,R as w,U as T,V as E,a as D,f as O,i as k,l as A,r as j,s as M,t as N,x as P,z as F}from"./index-CndfILiF.js";var I=T(E()),L=F(),R=[{id:`account`,labelKey:`system.tab.account`},{id:`workspaces`,labelKey:`system.tab.workspaces`},{id:`snapshots`,labelKey:`system.tab.snapshots`},{id:`activity`,labelKey:`system.tab.activity`},{id:`network`,labelKey:`system.tab.network`},{id:`settings`,labelKey:`system.tab.settings`},{id:`admin`,labelKey:`system.tab.admin`}];function z({initialTab:e}){let t=y(e=>e.mode),n=y(e=>e.language),[i,a]=I.useState(e||`account`);I.useEffect(()=>{R.some(t=>t.id===e)&&a(e)},[e]);let o=e=>{a(e),j(`/`+{account:`account`,workspaces:`workspace-admin`,snapshots:`snapshots`,activity:`activity`,network:`network`,settings:`settings`,admin:`system-admin`}[e])};return(0,L.jsxs)(`div`,{className:`product-page settings-page space-y-5`,children:[(0,L.jsxs)(`header`,{className:`page-hero`,children:[(0,L.jsxs)(`div`,{className:`page-kicker`,children:[(0,L.jsx)(A,{className:`h-4 w-4`}),` `,v(n,`system.kicker`)]}),(0,L.jsx)(`h1`,{className:`page-title`,children:v(n,`system.title`)}),(0,L.jsx)(`p`,{className:`page-copy`,children:v(n,`system.body`)})]}),(0,L.jsx)(r,{tabs:(t===`basic`?R.filter(e=>e.id===`account`||e.id===`workspaces`||e.id===`snapshots`||e.id===`settings`):R).map(e=>({id:e.id,label:v(n,e.labelKey)})),value:i,onChange:e=>o(e)}),i===`account`?(0,L.jsx)(B,{}):null,i===`workspaces`?(0,L.jsx)(V,{}):null,i===`snapshots`?(0,L.jsx)(ee,{}):null,i===`activity`?(0,L.jsx)(H,{}):null,i===`network`?(0,L.jsx)(te,{}):null,i===`settings`?(0,L.jsx)(U,{}):null,i===`admin`?(0,L.jsx)(X,{}):null]})}function B(){let r=w(),o=y(e=>e.language),s=y(e=>e.setWorkspaceId),d=x({queryKey:[`profile`],queryFn:C.profile}),f=x({queryKey:[`sso`],queryFn:C.ssoConfig}),[h,g]=I.useState(``),[_,S]=I.useState(``),[T,E]=I.useState(``),[O,A]=I.useState(``),[j,M]=I.useState(``),F=e=>{e.ok&&(N(),s(null))},R=b({mutationFn:()=>C.login(h,_),onSuccess:F}),z=b({mutationFn:()=>C.register({email:h,password:_,name:T,nickname:O}),onSuccess:F}),B=b({mutationFn:()=>C.updateProfile({name:T,nickname:O}),onSuccess:()=>r.invalidateQueries({queryKey:[`profile`]})}),V=b({mutationFn:()=>C.changePassword(_,j)});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(l,{title:v(o,`system.account.profile`),result:d.data,children:e=>(0,L.jsx)(t,{data:e})}),(0,L.jsxs)(u,{children:[(0,L.jsxs)(i,{children:[(0,L.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,L.jsx)(P,{className:`h-4 w-4`}),` `,v(o,`system.account.title`)]}),(0,L.jsx)(a,{children:v(o,`system.account.detail`)})]}),(0,L.jsxs)(c,{className:`grid gap-3`,children:[(0,L.jsx)(k,{value:h,onChange:e=>g(e.target.value),placeholder:v(o,`system.account.email`)}),(0,L.jsx)(k,{type:`password`,value:_,onChange:e=>S(e.target.value),placeholder:v(o,`system.account.password`)}),(0,L.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,L.jsx)(k,{value:T,onChange:e=>E(e.target.value),placeholder:v(o,`system.account.name`)}),(0,L.jsx)(k,{value:O,onChange:e=>A(e.target.value),placeholder:v(o,`system.account.nickname`)})]}),(0,L.jsx)(k,{type:`password`,value:j,onChange:e=>M(e.target.value),placeholder:v(o,`system.account.newPassword`)}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(D,{onClick:()=>R.mutate(),disabled:!h||!_||R.isPending,children:v(o,`system.account.login`)}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>z.mutate(),disabled:!h||!_||z.isPending,children:v(o,`system.account.register`)}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>B.mutate(),disabled:B.isPending,children:v(o,`system.account.save`)}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>V.mutate(),disabled:!_||!j||V.isPending,children:v(o,`system.account.changePassword`)}),(0,L.jsx)(p,{label:v(o,`system.account.logout`),action:()=>C.logout(),onSuccess:F})]}),[R.data,z.data,B.data,V.data].filter(Boolean).map((e,t)=>(0,L.jsx)(n,{result:e,successLabel:v(o,`system.account.requestDone`)},t))]})]}),(0,L.jsx)(l,{title:v(o,`system.account.signInOptions`),result:f.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(m,{value:e})})]})}function V(){let t=w(),n=y(e=>e.language),{setWorkspaceId:r}=y(),s=x({queryKey:[`workspaceRegistry`],queryFn:C.workspaceRegistry}),d=x({queryKey:[`invitations`],queryFn:C.invitations}),[f,m]=I.useState(``),[h,g]=I.useState(``),[S,T]=I.useState(``),E=b({mutationFn:()=>C.createOrg(f),onSuccess:()=>t.invalidateQueries({queryKey:[`workspaceRegistry`]})}),O=b({mutationFn:()=>C.createInvitation({email:h||null,role:`member`,expires_hours:168}),onSuccess:()=>t.invalidateQueries({queryKey:[`invitations`]})}),A=b({mutationFn:()=>C.acceptInvitation(S),onSuccess:()=>t.invalidateQueries({queryKey:[`workspaceRegistry`]})}),j=_(s.data?.data?.workspaces);return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.1fr_0.9fr]`,children:[(0,L.jsx)(l,{title:v(n,`system.workspace.yours`),result:s.data,children:()=>(0,L.jsx)(`div`,{className:`grid gap-2`,children:j.map(e=>{let t=String(e.workspace_id||e.id);return(0,L.jsx)(`div`,{className:`rounded-md border border-border p-3`,children:(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`div`,{className:`font-medium`,children:String(e.name||t)}),(0,L.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[String(e.type||``),` · `,String(e.your_role||e.role||``)]})]}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(D,{variant:`outline`,onClick:()=>r(t),children:v(n,`system.workspace.use`)}),(0,L.jsx)(p,{label:v(n,`system.workspace.activate`),action:()=>C.activateWorkspace(t),invalidate:[`workspaceRegistry`]}),(0,L.jsx)(p,{label:v(n,`system.workspace.archive`),action:()=>C.archiveWorkspace(t),invalidate:[`workspaceRegistry`],variant:`destructive`})]})]})},t)})})}),(0,L.jsxs)(u,{children:[(0,L.jsxs)(i,{children:[(0,L.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,L.jsx)(M,{className:`h-4 w-4`}),` `,v(n,`system.workspace.organizations`)]}),(0,L.jsx)(a,{children:v(n,`system.workspace.organizationsHint`)})]}),(0,L.jsxs)(c,{className:`grid gap-3`,children:[(0,L.jsx)(k,{value:f,onChange:e=>m(e.target.value),placeholder:v(n,`system.workspace.orgPlaceholder`)}),(0,L.jsx)(D,{disabled:!f.trim()||E.isPending,onClick:()=>E.mutate(),children:v(n,`system.workspace.createOrg`)}),(0,L.jsx)(k,{value:h,onChange:e=>g(e.target.value),placeholder:v(n,`system.workspace.inviteeEmail`)}),(0,L.jsx)(D,{variant:`outline`,disabled:O.isPending,onClick:()=>O.mutate(),children:v(n,`system.workspace.createInvite`)}),(0,L.jsx)(k,{value:S,onChange:e=>T(e.target.value),placeholder:v(n,`system.workspace.inviteToken`)}),(0,L.jsx)(D,{variant:`outline`,disabled:!S.trim()||A.isPending,onClick:()=>A.mutate(),children:v(n,`system.workspace.acceptInvite`)}),(0,L.jsx)(l,{title:v(n,`system.workspace.invitations`),result:d.data,children:e=>(0,L.jsx)(o,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function ee(){let t=y(e=>e.language),r=x({queryKey:[`snapshots`],queryFn:C.snapshots}),s=x({queryKey:[`timeMachine`],queryFn:C.timeMachine}),[d,f]=I.useState(``),[m,h]=I.useState(``),[g,S]=I.useState(``),w=b({mutationFn:()=>C.createSnapshot(d||v(t,`system.snapshots.defaultName`))}),T=b({mutationFn:()=>C.compareSnapshots(m,g)}),E=_(r.data?.data?.snapshots);return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(l,{title:v(t,`system.snapshots.title`),result:r.data,children:()=>(0,L.jsx)(`div`,{className:`space-y-2`,children:E.map(e=>{let n=String(e.id||e.snapshot_id);return(0,L.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,L.jsx)(`div`,{className:`font-medium`,children:String(e.name||n)}),(0,L.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,L.jsx)(p,{label:v(t,`system.snapshots.export`),action:()=>C.exportSnapshot(n)}),(0,L.jsx)(p,{label:v(t,`system.snapshots.mergeRestore`),action:()=>C.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,L.jsxs)(u,{children:[(0,L.jsxs)(i,{children:[(0,L.jsx)(e,{children:v(t,`system.snapshots.actions`)}),(0,L.jsx)(a,{children:v(t,`system.snapshots.actionsHint`)})]}),(0,L.jsxs)(c,{className:`grid gap-3`,children:[(0,L.jsx)(k,{value:d,onChange:e=>f(e.target.value),placeholder:v(t,`system.snapshots.namePlaceholder`)}),(0,L.jsx)(D,{onClick:()=>w.mutate(),disabled:w.isPending,children:v(t,`system.snapshots.create`)}),(0,L.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,L.jsx)(k,{value:m,onChange:e=>h(e.target.value),placeholder:v(t,`system.snapshots.beforeId`)}),(0,L.jsx)(k,{value:g,onChange:e=>S(e.target.value),placeholder:v(t,`system.snapshots.afterId`)})]}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>T.mutate(),disabled:!m||!g||T.isPending,children:v(t,`system.snapshots.compare`)}),T.data?(0,L.jsx)(n,{result:T.data,successLabel:v(t,`system.snapshots.compareDone`)}):null]})]}),(0,L.jsx)(l,{title:v(t,`system.snapshots.timeline`),result:s.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(o,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function H(){let e=y(e=>e.language),t=x({queryKey:[`realtimeFeed`],queryFn:C.realtimeFeed}),n=x({queryKey:[`presence`],queryFn:C.presence});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(l,{title:v(e,`system.activity.feed`),result:t.data,children:e=>(0,L.jsx)(o,{items:e.events,titleKey:`event_type`,metaKey:`area`,limit:14})}),(0,L.jsx)(l,{title:v(e,`system.activity.presence`),result:n.data,children:e=>(0,L.jsx)(G,{data:e})})]})}function te(){let t=w(),r=y(e=>e.language),o=x({queryKey:[`networkIdentity`],queryFn:C.networkIdentity}),s=x({queryKey:[`networkPeers`],queryFn:C.networkPeers}),[d,f]=I.useState(``),[m,h]=I.useState(``),[g,S]=I.useState(``),T=b({mutationFn:()=>C.pairPeer({name:d,base_url:m,public_key:g}),onSuccess:()=>t.invalidateQueries({queryKey:[`networkPeers`]})});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[0.8fr_1.2fr]`,children:[(0,L.jsx)(l,{title:v(r,`system.network.identity`),result:o.data,children:e=>(0,L.jsx)(K,{data:e})}),(0,L.jsxs)(u,{children:[(0,L.jsxs)(i,{children:[(0,L.jsxs)(e,{className:`flex items-center gap-2`,children:[(0,L.jsx)(O,{className:`h-4 w-4`}),` `,v(r,`system.network.pair`)]}),(0,L.jsx)(a,{children:v(r,`system.network.pairHint`)})]}),(0,L.jsxs)(c,{className:`grid gap-3`,children:[(0,L.jsx)(k,{value:d,onChange:e=>f(e.target.value),placeholder:v(r,`system.network.deviceName`)}),(0,L.jsx)(k,{value:m,onChange:e=>h(e.target.value),placeholder:v(r,`system.network.address`)}),(0,L.jsx)(k,{value:g,onChange:e=>S(e.target.value),placeholder:v(r,`system.network.publicKey`)}),(0,L.jsx)(D,{disabled:!d||!m||!g||T.isPending,onClick:()=>T.mutate(),children:v(r,`system.network.pair`)}),T.data?(0,L.jsx)(n,{result:T.data,successLabel:v(r,`system.network.pairDone`)}):null]})]}),(0,L.jsx)(l,{title:v(r,`system.network.peers`),result:s.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(`div`,{className:`grid gap-2`,children:_(e.peers).map(e=>{let t=String(e.peer_id||e.id);return(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`div`,{className:`font-medium`,children:String(e.name||t)}),(0,L.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.base_url||``)})]}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(p,{label:v(r,`system.network.pushWorkspace`),action:()=>C.pushPeer(t,y.getState().workspaceId)}),(0,L.jsx)(p,{label:v(r,`system.network.unpair`),action:()=>C.unpairPeer(t),invalidate:[`networkPeers`],variant:`destructive`})]})]},t)})})})]})}function U(){let t=w(),{theme:r,setTheme:o,mode:d,setMode:f}=y(),h=y(e=>e.language),g=x({queryKey:[`health`],queryFn:C.health}),_=x({queryKey:[`sysinfo`],queryFn:C.sysinfo}),S=x({queryKey:[`computerMemory`],queryFn:C.computerMemory}),T=x({queryKey:[`brainStorage`],queryFn:C.brainStorage}),E=x({queryKey:[`backupHealth`],queryFn:C.backupHealth}),[O,A]=I.useState(``),[j,M]=I.useState(`lattice_brain`),[N,P]=I.useState(!1),[F,R]=I.useState(``),[z,B]=I.useState(``),[V,ee]=I.useState(``),[H,te]=I.useState(!1),[U,W]=I.useState(!1),G=b({mutationFn:e=>C.dockerPostgres({consent:e,dry_run:!e,port:5432})}),K=b({mutationFn:()=>C.migratePostgres({dsn:O,schema_name:j||`lattice_brain`,dry_run:!0})}),q=b({mutationFn:()=>C.brainArchive({path:F.trim()||null,passphrase:V}),onSuccess:()=>t.invalidateQueries({queryKey:[`backupHealth`]})}),J=b({mutationFn:()=>C.brainArchiveInspect({path:z,passphrase:V||null})}),Y=b({mutationFn:()=>C.brainArchiveVerify({path:z,passphrase:V})}),X=b({mutationFn:()=>C.brainArchiveRestore({path:z,passphrase:V,dry_run:!0,confirm:!1})}),Z=b({mutationFn:()=>C.brainArchiveRestore({path:z,passphrase:V,dry_run:!1,confirm:H}),onSuccess:()=>{t.invalidateQueries({queryKey:[`brainStorage`]}),t.invalidateQueries({queryKey:[`backupHealth`]})}}),Q=b({mutationFn:()=>C.brainArchiveImport({path:z,passphrase:V,dry_run:!0,confirm:!1})}),$=b({mutationFn:()=>C.brainArchiveImport({path:z,passphrase:V,dry_run:!1,confirm:U}),onSuccess:()=>{t.invalidateQueries({queryKey:[`brainStorage`]}),t.invalidateQueries({queryKey:[`backupHealth`]})}});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-3`,children:[(0,L.jsxs)(u,{children:[(0,L.jsxs)(i,{children:[(0,L.jsx)(e,{children:v(h,`system.panel.appearance`)}),(0,L.jsx)(a,{children:v(h,`system.panel.appearance.hint`)})]}),(0,L.jsxs)(c,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(D,{variant:r===`dark`?`default`:`outline`,onClick:()=>o(`dark`),children:v(h,`system.theme.dark`)}),(0,L.jsx)(D,{variant:r===`light`?`default`:`outline`,onClick:()=>o(`light`),children:v(h,`system.theme.light`)}),[`basic`,`advanced`,`admin`].map(e=>(0,L.jsx)(D,{variant:d===e?`default`:`outline`,onClick:()=>f(e),children:v(h,`shell.mode.${e}`)},e))]})]}),(0,L.jsx)(l,{title:d===`basic`?v(h,`system.panel.brainStatus`):v(h,`system.panel.serverHealth`),result:g.data,children:e=>(0,L.jsx)(ne,{data:e})}),(0,L.jsx)(l,{title:d===`basic`?v(h,`system.panel.readiness`):v(h,`system.panel.hostTelemetry`),result:_.data,children:e=>d===`basic`?(0,L.jsx)(s,{stats:[{label:v(h,`system.stat.cpu`),value:`${String(e.cpu_pct||`0`)}%`},{label:v(h,`system.stat.memory`),value:`${String(e.ram_pct||`0`)}%`},{label:v(h,`system.stat.gpu`),value:`${String(e.gpu_mem_pct||`0`)}%`},{label:v(h,`system.stat.localStatus`),value:v(h,`system.stat.ready`)}]}):(0,L.jsx)(m,{value:e})}),(0,L.jsx)(l,{title:d===`basic`?v(h,`system.storage.title`):v(h,`system.panel.brainStorage`),result:T.data,className:`xl:col-span-3`,children:e=>(0,L.jsx)(re,{data:e,mode:d,language:h})}),d===`basic`?null:(0,L.jsx)(l,{title:v(h,`system.backup.health`),result:E.data,className:`xl:col-span-3`,children:e=>(0,L.jsx)(ie,{data:e})}),d===`basic`?null:(0,L.jsxs)(u,{className:`xl:col-span-3`,children:[(0,L.jsxs)(i,{children:[(0,L.jsx)(e,{children:v(h,`system.archive.title`)}),(0,L.jsx)(a,{children:v(h,`system.archive.detail`)})]}),(0,L.jsxs)(c,{className:`grid gap-3`,children:[(0,L.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_1fr]`,children:[(0,L.jsx)(k,{value:F,onChange:e=>R(e.target.value),placeholder:v(h,`system.archive.exportPath`)}),(0,L.jsx)(k,{value:z,onChange:e=>B(e.target.value),placeholder:v(h,`system.archive.restorePath`)})]}),(0,L.jsx)(k,{type:`password`,value:V,onChange:e=>ee(e.target.value),placeholder:v(h,`system.archive.passphrase`)}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(D,{onClick:()=>q.mutate(),disabled:!V||q.isPending,children:v(h,`system.archive.export`)}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>J.mutate(),disabled:!z||J.isPending,children:v(h,`system.archive.inspect`)}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>Y.mutate(),disabled:!z||!V||Y.isPending,children:v(h,`system.archive.verify`)}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>X.mutate(),disabled:!z||!V||X.isPending,children:v(h,`system.archive.restoreDryRun`)}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>Q.mutate(),disabled:!z||!V||Q.isPending,children:v(h,`system.archive.importDryRun`)}),(0,L.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:H,onChange:e=>te(e.target.checked)}),v(h,`system.archive.confirmRestore`)]}),(0,L.jsx)(D,{variant:`destructive`,onClick:()=>Z.mutate(),disabled:!z||!V||!H||Z.isPending,children:v(h,`system.archive.restore`)}),(0,L.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:U,onChange:e=>W(e.target.checked)}),v(h,`system.archive.confirmImport`)]}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>$.mutate(),disabled:!z||!V||!U||$.isPending,children:v(h,`system.archive.import`)})]}),[q.data,J.data,Y.data,X.data,Z.data,Q.data,$.data].filter(Boolean).map((e,t)=>(0,L.jsx)(n,{result:e,successLabel:v(h,`system.archive.requestDone`)},t))]})]}),d===`basic`?null:(0,L.jsxs)(u,{className:`xl:col-span-3`,children:[(0,L.jsxs)(i,{children:[(0,L.jsx)(e,{children:v(h,`system.scale.title`)}),(0,L.jsx)(a,{children:v(h,`system.scale.detail`)})]}),(0,L.jsxs)(c,{className:`grid gap-3`,children:[(0,L.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_220px]`,children:[(0,L.jsx)(k,{value:O,onChange:e=>A(e.target.value),placeholder:v(h,`system.scale.dsn`)}),(0,L.jsx)(k,{value:j,onChange:e=>M(e.target.value),placeholder:v(h,`system.scale.schema`)})]}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(D,{variant:`outline`,onClick:()=>G.mutate(!1),disabled:G.isPending,children:v(h,`system.scale.dockerPlan`)}),(0,L.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:N,onChange:e=>P(e.target.checked)}),v(h,`system.scale.dockerConsent`)]}),(0,L.jsx)(D,{onClick:()=>G.mutate(!0),disabled:!N||G.isPending,children:v(h,`system.scale.dockerStart`)}),(0,L.jsx)(D,{variant:`outline`,onClick:()=>K.mutate(),disabled:!O||K.isPending,children:v(h,`system.scale.migrationPlan`)})]}),G.data?(0,L.jsx)(n,{result:G.data,successLabel:v(h,`system.scale.dockerDone`)}):null,K.data?(0,L.jsx)(n,{result:K.data,successLabel:v(h,`system.scale.migrationDone`)}):null]})]}),d===`basic`?null:(0,L.jsx)(l,{title:v(h,`system.computerMemory.title`),result:S.data,className:`xl:col-span-3`,children:e=>(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(m,{value:e}),(0,L.jsxs)(`div`,{className:`flex gap-2`,children:[(0,L.jsx)(p,{label:v(h,`system.computerMemory.enable`),action:()=>C.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,L.jsx)(p,{label:v(h,`system.computerMemory.disable`),action:()=>C.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function W(e,t,n=v(e,`system.value.notReported`)){return t==null||t===``?n:typeof t==`boolean`?v(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function G({data:e}){let t=y(e=>e.language),n=_(e.presence||e.clients||e);return n.length?(0,L.jsx)(o,{items:n,titleKey:`user`,metaKey:`workspace_id`}):(0,L.jsx)(d,{title:v(t,`system.presence.empty`),detail:v(t,`system.presence.emptyDetail`)})}function K({data:e}){let n=y(e=>e.mode),r=y(e=>e.language),i=W(r,e.public_key,``);return n===`basic`?(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(q,{title:v(r,`system.device.thisMac`),status:v(r,`system.value.trusted`),detail:v(r,`system.device.thisMacDetail`)}),(0,L.jsx)(h,{variant:`muted`,children:W(r,e.algorithm,v(r,`system.value.localIdentity`))})]}):(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,L.jsx)(h,{variant:`success`,children:v(r,`system.value.localDevice`)}),(0,L.jsx)(h,{variant:`muted`,children:W(r,e.algorithm,v(r,`system.value.identityKey`))})]}),(0,L.jsx)(t,{data:{device_id:e.device_id||e.id||v(r,`system.value.notReported`),fingerprint:e.fingerprint||v(r,`system.value.notReported`),public_key:i?S(i.replace(/\s+/g,` `),72):v(r,`system.value.notReported`)}})]})}function ne({data:e}){let t=y(e=>e.mode),n=y(e=>e.language);return t===`basic`?(0,L.jsx)(q,{title:v(n,`system.health.title`),status:v(n,`system.health.ok`),detail:v(n,`system.health.detail`)}):(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(s,{stats:[{label:v(n,`system.health.status`),value:e.status||e.ok||v(n,`system.value.reported`)},{label:v(n,`system.health.version`),value:e.version||v(n,`system.value.notReported`)},{label:v(n,`system.health.mode`),value:e.mode||e.environment||v(n,`system.value.local`)},{label:v(n,`system.health.port`),value:e.port||e.backend_port||v(n,`system.value.configured`)}]}),(0,L.jsx)(m,{value:e})]})}function re({data:e,mode:t=`advanced`,language:n=`en`}){let r=g(e.active)?e.active:e,i=g(e.postgres)?e.postgres:{},a=g(e.backup_health)?e.backup_health:{},o=r.vector_search||r.vector||e.vector_search||e.sqlite_vec,c=!!(i.available||i.connected||i.enabled),l=!!o&&String(o).toLowerCase()!==`not reported`;return t===`basic`?(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(q,{title:v(n,`system.storage.local.title`),status:v(n,`system.storage.local.badge`),detail:v(n,`system.storage.local.detail`)}),(0,L.jsx)(q,{title:v(n,`system.storage.search.title`),status:l?v(n,`system.storage.search.on`):v(n,`system.storage.search.pending`),detail:l?v(n,`system.storage.search.detailOn`):v(n,`system.storage.search.detailPending`)})]}):(0,L.jsxs)(`div`,{className:`space-y-4`,children:[(0,L.jsx)(s,{stats:[{label:v(n,`system.storage.activeEngine`),value:r.engine||e.engine||v(n,`system.storage.sqlite`)},{label:v(n,`system.storage.sqliteDefault`),value:r.engine===`postgres`?v(n,`system.value.scaleMode`):v(n,`system.value.enabled`)},{label:v(n,`system.storage.vector`),value:o||v(n,`system.value.notReported`)},{label:v(n,`system.storage.postgres`),value:c?v(n,`system.value.available`):v(n,`system.value.optional`)}]}),(0,L.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,L.jsx)(q,{title:v(n,`system.storage.sqlite`),status:r.available===!1?v(n,`system.value.unavailable`):v(n,`system.value.default`),detail:W(n,r.reason||r.path||e.path,v(n,`system.storage.sqliteDetail`))}),(0,L.jsx)(q,{title:v(n,`system.storage.vector`),status:W(n,o,v(n,`system.value.reported`)),detail:W(n,r.vector_reason||r.sqlite_vec_reason||e.vector_reason,v(n,`system.storage.vectorDetail`))}),(0,L.jsx)(q,{title:v(n,`system.storage.postgres`),status:c?v(n,`system.value.available`):v(n,`system.value.notEnabled`),detail:W(n,i.reason||i.dsn||i.status,v(n,`system.storage.postgresDetail`))})]}),Object.keys(a).length?(0,L.jsx)(m,{value:{backup_health:a}}):null]})}function ie({data:e}){let n=y(e=>e.language);return(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(s,{stats:[{label:v(n,`system.backup.available`),value:e.available===!1?v(n,`system.value.no`):v(n,`system.value.yes`)},{label:v(n,`system.backup.backups`),value:e.count||e.backups||0},{label:v(n,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:v(n,`system.backup.zip`),value:e.zip_backups||0}]}),(0,L.jsx)(t,{data:{directory:e.directory||v(n,`system.value.notReported`),latest:e.latest||v(n,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||v(n,`system.value.notReported`),failure:e.error||e.reason||v(n,`system.value.noneReported`)}})]})}function q({title:e,status:t,detail:n}){let r=/unavailable|failed|denied|disabled|not enabled|사용 불가|실패|거부|비활성|활성화되지 않음/i.test(t)?`warning`:`success`;return(0,L.jsxs)(`div`,{className:`rounded-md border border-border bg-background p-3`,children:[(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,L.jsx)(`div`,{className:`font-medium`,children:e}),(0,L.jsx)(h,{variant:r,children:t})]}),(0,L.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:n})]})}function J({data:e}){let t=y(e=>e.language),n=g(e.startup)?e.startup:{},r=g(e.privacy)?e.privacy:{},i=g(e.storage)?e.storage:{},a=g(e.backup)?e.backup:{},o=g(e.device_identity)?e.device_identity:{},c=g(e.permissions)?e.permissions:{};return(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(s,{stats:[{label:v(t,`system.hardening.version`),value:e.version||v(t,`system.value.reported`)},{label:v(t,`system.hardening.localOnly`),value:r.local_only_default??n.local_only_default??v(t,`system.value.reported`)},{label:v(t,`system.hardening.storage`),value:g(i.active)?i.active.engine:v(t,`system.value.reported`)},{label:v(t,`system.hardening.backups`),value:a.count||a.available||v(t,`system.value.reported`)}]}),(0,L.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,L.jsx)(q,{title:v(t,`system.hardening.startup`),status:v(t,n.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:v(t,`system.hardening.startupDetail`)}),(0,L.jsx)(q,{title:v(t,`system.hardening.integrations`),status:v(t,r.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:v(t,`system.hardening.integrationsDetail`)}),(0,L.jsx)(q,{title:v(t,`system.hardening.identity`),status:W(t,o.algorithm||o.fingerprint,v(t,`system.value.reported`)),detail:W(t,o.storage,v(t,`system.hardening.identityStorage`))}),(0,L.jsx)(q,{title:v(t,`system.hardening.permissions`),status:v(t,c.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:v(t,`system.hardening.permissionsDetail`)})]})]})}function Y({data:e}){let t=y(e=>e.language),n=g(e.cards)?e.cards:{},r=g(e.severity_counts)?e.severity_counts:{};return(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(s,{stats:[{label:v(t,`system.security.eventsToday`),value:n.events_today||0},{label:v(t,`system.security.highRisk`),value:n.high_risk_events||r.high||0},{label:v(t,`system.security.review`),value:n.review_required||0},{label:v(t,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,L.jsx)(m,{value:{severity_counts:r,sensitive_fields:e.field_counts||{}}})]})}function X(){let e=y(e=>e.mode),n=y(e=>e.language),r=x({queryKey:[`adminSummary`],queryFn:C.adminSummary}),i=x({queryKey:[`adminUsers`],queryFn:C.adminUsers}),a=x({queryKey:[`adminAudit`],queryFn:()=>C.adminAudit()}),s=x({queryKey:[`adminRoles`],queryFn:C.adminRoles}),c=x({queryKey:[`adminPolicies`],queryFn:C.adminPolicies}),u=x({queryKey:[`adminProductHardening`],queryFn:C.adminProductHardening}),d=x({queryKey:[`adminSecurity`],queryFn:C.adminSecurity}),p=x({queryKey:[`vpcStatus`],queryFn:C.vpcStatus});return e===`admin`?(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(l,{title:v(n,`system.admin.summary`),result:r.data,children:e=>(0,L.jsx)(t,{data:e})}),(0,L.jsx)(l,{title:v(n,`system.admin.users`),result:i.data,children:e=>(0,L.jsx)(o,{items:e,titleKey:`email`,metaKey:`role`})}),(0,L.jsx)(l,{title:v(n,`system.admin.audit`),result:a.data,children:e=>(0,L.jsx)(o,{items:e.recent_events||e,titleKey:`act`,metaKey:`sev`})}),(0,L.jsx)(l,{title:v(n,`system.admin.roles`),result:s.data,children:e=>(0,L.jsx)(o,{items:e.roles||e,titleKey:`role`,metaKey:`members`})}),(0,L.jsx)(l,{title:v(n,`system.admin.policies`),result:c.data,children:e=>(0,L.jsx)(o,{items:e.policies||e,titleKey:`label`,metaKey:`enforced`})}),(0,L.jsx)(l,{title:v(n,`system.admin.hardening`),result:u.data,children:e=>(0,L.jsx)(J,{data:e})}),(0,L.jsx)(l,{title:v(n,`system.admin.security`),result:d.data,children:e=>(0,L.jsx)(Y,{data:e})}),(0,L.jsx)(l,{title:v(n,`system.admin.vpc`),result:p.data,className:`xl:col-span-2`,children:e=>(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(h,{variant:`muted`,children:v(n,`system.admin.communityUnavailable`)}),(0,L.jsx)(m,{value:e})]})})]}):(0,L.jsx)(f,{title:v(n,`system.admin.controls`),detail:v(n,`system.admin.controlsDetail`),target:`admin`})}export{z as SystemPage};