ltcai 9.8.0 → 9.9.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 (74) hide show
  1. package/README.md +40 -28
  2. package/docs/BENCHMARKS.md +107 -0
  3. package/docs/CHANGELOG.md +35 -0
  4. package/docs/CI_AND_RELEASE_GATES.md +106 -0
  5. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  6. package/docs/DEVELOPMENT.md +11 -8
  7. package/docs/ONBOARDING.md +1 -1
  8. package/docs/OPERATIONS.md +15 -6
  9. package/docs/PERFORMANCE.md +9 -1
  10. package/docs/SECURITY_AUDIT.md +91 -0
  11. package/docs/TRUST_MODEL.md +1 -1
  12. package/docs/USABILITY_AUDIT.md +164 -0
  13. package/docs/WHY_LATTICE.md +1 -1
  14. package/docs/architecture.md +4 -2
  15. package/docs/kg-schema.md +1 -1
  16. package/docs/spec-vs-impl.md +8 -1
  17. package/lattice_brain/__init__.py +1 -1
  18. package/lattice_brain/runtime/multi_agent.py +1 -1
  19. package/latticeai/__init__.py +1 -1
  20. package/latticeai/api/review_queue.py +7 -0
  21. package/latticeai/core/agent.py +105 -8
  22. package/latticeai/core/agent_eval.py +99 -1
  23. package/latticeai/core/legacy_compatibility.py +1 -1
  24. package/latticeai/core/marketplace.py +1 -1
  25. package/latticeai/core/tool_governor.py +92 -1
  26. package/latticeai/core/workspace_os.py +1 -1
  27. package/latticeai/services/architecture_readiness.py +1 -1
  28. package/latticeai/services/change_proposals.py +165 -23
  29. package/latticeai/services/product_readiness.py +1 -1
  30. package/latticeai/services/tool_dispatch.py +33 -0
  31. package/package.json +5 -3
  32. package/scripts/bench_models.py +312 -0
  33. package/scripts/check_bundle_budget.mjs +103 -0
  34. package/scripts/check_current_release_docs.mjs +1 -1
  35. package/scripts/check_doc_status.mjs +149 -0
  36. package/scripts/generate_sbom.py +70 -0
  37. package/src-tauri/Cargo.lock +1 -1
  38. package/src-tauri/Cargo.toml +1 -1
  39. package/src-tauri/tauri.conf.json +1 -1
  40. package/static/app/asset-manifest.json +27 -11
  41. package/static/app/assets/Act-CfOPUKPs.js +2 -0
  42. package/static/app/assets/{Brain-BMkgdWnI.js → Brain-Cgkh0Hpn.js} +2 -2
  43. package/static/app/assets/BrainHome-D8e3wQiW.js +3 -0
  44. package/static/app/assets/BrainSignals-BjRBA18L.js +1 -0
  45. package/static/app/assets/Capture-CQQYQ1Ga.js +1 -0
  46. package/static/app/assets/CommandPalette-pss56Mg4.js +1 -0
  47. package/static/app/assets/Library-CoI3xYJk.js +1 -0
  48. package/static/app/assets/LivingBrain-CaU_hCxQ.js +1 -0
  49. package/static/app/assets/ProductFlow-Db-1O71-.js +1 -0
  50. package/static/app/assets/System-Dfocn0zN.js +1 -0
  51. package/static/app/assets/bot-Bp2x1i6F.js +1 -0
  52. package/static/app/assets/circle-check-CyGal42W.js +1 -0
  53. package/static/app/assets/cpu-DQFk82hG.js +1 -0
  54. package/static/app/assets/download-C70gKQVi.js +1 -0
  55. package/static/app/assets/folder-open-DNGytsVw.js +1 -0
  56. package/static/app/assets/hard-drive-CYo_bEl4.js +1 -0
  57. package/static/app/assets/i18n-BBMJshCW.js +7 -0
  58. package/static/app/assets/index-BjaXCeOZ.js +10 -0
  59. package/static/app/assets/{index-7gY9t9Sd.css → index-BqRcLZR3.css} +1 -1
  60. package/static/app/assets/input-ChWD-Fsh.js +1 -0
  61. package/static/app/assets/navigation-D9D9_FPC.js +1 -0
  62. package/static/app/assets/network-DzLDGmtV.js +1 -0
  63. package/static/app/assets/primitives-CmaSAyGG.js +1 -0
  64. package/static/app/assets/sparkles-DXiaM1NS.js +1 -0
  65. package/static/app/assets/textarea-CV43-o79.js +1 -0
  66. package/static/app/index.html +4 -2
  67. package/static/sw.js +1 -1
  68. package/static/app/assets/Act-Dd3z8AzF.js +0 -2
  69. package/static/app/assets/Capture-D2Aw9gkv.js +0 -1
  70. package/static/app/assets/Library-Yreq-KW5.js +0 -1
  71. package/static/app/assets/System-CXNmmtEo.js +0 -1
  72. package/static/app/assets/index-CndfILiF.js +0 -18
  73. package/static/app/assets/primitives-DxsIXb6G.js +0 -1
  74. package/static/app/assets/textarea-DH7ne8VI.js +0 -1
@@ -1 +0,0 @@
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};
@@ -1 +0,0 @@
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};