ltcai 9.9.5 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -37
- package/docs/CHANGELOG.md +234 -0
- package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
- package/docs/DEVELOPMENT.md +1 -1
- package/docs/ONBOARDING.md +1 -1
- package/docs/OPERATIONS.md +3 -1
- package/docs/PERMISSION_MODE.md +107 -0
- package/docs/SURFACE_PARITY.md +38 -8
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +1 -1
- package/docs/kg-schema.md +1 -1
- package/lattice_brain/__init__.py +1 -1
- package/lattice_brain/context.py +39 -4
- package/lattice_brain/graph/_kg_common.py +189 -14
- package/lattice_brain/graph/curator.py +62 -0
- package/lattice_brain/graph/discovery.py +76 -0
- package/lattice_brain/graph/ingest.py +37 -7
- package/lattice_brain/graph/retrieval_vector.py +10 -0
- package/lattice_brain/ingestion.py +9 -106
- package/lattice_brain/ingestion_jobs.py +133 -0
- package/lattice_brain/runtime/multi_agent.py +1 -1
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/brain_intelligence.py +8 -0
- package/latticeai/api/chat.py +9 -0
- package/latticeai/api/chat_agent_http.py +119 -2
- package/latticeai/api/chat_contracts.py +9 -0
- package/latticeai/api/chat_documents.py +16 -0
- package/latticeai/api/evidence_actions.py +48 -0
- package/latticeai/api/permission_mode.py +61 -0
- package/latticeai/api/project_sessions.py +112 -0
- package/latticeai/api/voice_capture.py +89 -0
- package/latticeai/app_factory.py +53 -0
- package/latticeai/core/agent.py +381 -43
- package/latticeai/core/agent_permission.py +160 -0
- package/latticeai/core/agent_profiles.py +110 -0
- package/latticeai/core/artifact_ledger.py +109 -0
- package/latticeai/core/context_builder.py +101 -2
- package/latticeai/core/legacy_compatibility.py +1 -1
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/permission_mode.py +296 -0
- package/latticeai/core/project_sessions.py +337 -0
- package/latticeai/core/run_explain.py +421 -0
- package/latticeai/core/run_store.py +5 -0
- package/latticeai/core/workspace_os.py +15 -80
- package/latticeai/core/workspace_review_items.py +107 -0
- package/latticeai/integrations/telegram_bot.py +188 -0
- package/latticeai/runtime/chat_wiring.py +8 -0
- package/latticeai/runtime/context_runtime.py +11 -0
- package/latticeai/runtime/permission_mode_wiring.py +116 -0
- package/latticeai/runtime/router_registration.py +9 -0
- package/latticeai/services/app_context.py +3 -0
- package/latticeai/services/architecture_readiness.py +1 -1
- package/latticeai/services/brain_intelligence.py +105 -0
- package/latticeai/services/evidence_actions.py +254 -0
- package/latticeai/services/funnel_metrics.py +111 -16
- package/latticeai/services/local_knowledge.py +26 -0
- package/latticeai/services/memory_service.py +12 -0
- package/latticeai/services/permission_mode_service.py +170 -0
- package/latticeai/services/product_readiness.py +1 -1
- package/latticeai/services/tool_dispatch.py +73 -4
- package/latticeai/services/voice_capture.py +189 -0
- package/package.json +6 -4
- package/scripts/check_bundle_budget.mjs +11 -0
- package/scripts/check_current_release_docs.mjs +1 -1
- package/scripts/check_i18n_namespace_coverage.mjs +148 -0
- package/skills/meeting_notes/SKILL.md +82 -0
- package/skills/meeting_notes/examples.md +41 -0
- package/skills/meeting_notes/risk.json +9 -0
- package/skills/meeting_notes/schema.json +55 -0
- package/skills/weekly_review/SKILL.md +75 -0
- package/skills/weekly_review/examples.md +39 -0
- package/skills/weekly_review/risk.json +9 -0
- package/skills/weekly_review/schema.json +55 -0
- package/src-tauri/Cargo.lock +1 -1
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/tauri.conf.json +1 -1
- package/static/app/asset-manifest.json +37 -29
- package/static/app/assets/Act-BtCREeN1.js +1 -0
- package/static/app/assets/AdminConsole-TPeeN18T.js +1 -0
- package/static/app/assets/Brain-BKs6JAp0.js +321 -0
- package/static/app/assets/BrainHome-BPGOvSd6.js +2 -0
- package/static/app/assets/BrainSignals-CtzQZ15J.js +1 -0
- package/static/app/assets/Capture-1_NaHWqB.js +1 -0
- package/static/app/assets/CommandPalette-pqvQOXe4.js +1 -0
- package/static/app/assets/Library-DhvoPvC7.js +1 -0
- package/static/app/assets/{LivingBrain-BVWk58MW.js → LivingBrain-DlQ20Q75.js} +1 -1
- package/static/app/assets/ProductFlow-BZvGDRi_.js +1 -0
- package/static/app/assets/ReviewCard-BWgI0D2s.js +3 -0
- package/static/app/assets/System-CSMdYLMy.js +1 -0
- package/static/app/assets/activity-Dlfk8YC7.js +1 -0
- package/static/app/assets/{bot-VmP0kkeA.js → bot-CDvUB76P.js} +1 -1
- package/static/app/assets/brain-xczrohrt.js +1 -0
- package/static/app/assets/button-SOdH3Oyf.js +1 -0
- package/static/app/assets/{circle-pause-T9POo4qy.js → circle-pause-CG1ythH4.js} +1 -1
- package/static/app/assets/{circle-play-Bz5iTD0p.js → circle-play-HXwvjS6W.js} +1 -1
- package/static/app/assets/{cpu-CJhjRtNq.js → cpu-B0d-rGyk.js} +1 -1
- package/static/app/assets/download-BGIkTQL6.js +1 -0
- package/static/app/assets/{folder-open-B2K_22VI.js → folder-open-Dst_Z0_K.js} +1 -1
- package/static/app/assets/{hard-drive-CjJtYqHf.js → hard-drive-D53MsWkV.js} +1 -1
- package/static/app/assets/index-C_IrlQMV.js +10 -0
- package/static/app/assets/index-FxDusbr0.css +2 -0
- package/static/app/assets/{input-CSi6OBJ9.js → input-C5m0riF6.js} +1 -1
- package/static/app/assets/{network-Ck1nqc-v.js → network-C5a-E5iS.js} +1 -1
- package/static/app/assets/primitives-vNXYf58F.js +1 -0
- package/static/app/assets/search-DhbSgW6m.js +1 -0
- package/static/app/assets/shield-alert-Cc-WVXqN.js +1 -0
- package/static/app/assets/{textarea-C4wM0D-Z.js → textarea-BkZ0EqVO.js} +1 -1
- package/static/app/assets/{useFocusTrap-CsnIhsDJ.js → useFocusTrap-CTtKbAOU.js} +1 -1
- package/static/app/assets/{navigation-BPQqEQwr.js → useQuery-Dx1fi4Wu.js} +1 -1
- package/static/app/assets/users-BFpQXtEF.js +1 -0
- package/static/app/assets/utils-BA_lmW3J.js +7 -0
- package/static/app/assets/workspace-DBPB0jkX.js +1 -0
- package/static/app/index.html +4 -4
- package/static/sw.js +1 -1
- package/static/app/assets/Act-DmxfbqBp.js +0 -1
- package/static/app/assets/Brain-DK_zKCda.js +0 -321
- package/static/app/assets/BrainHome-CCE_0hni.js +0 -2
- package/static/app/assets/BrainSignals-r_J68_zh.js +0 -1
- package/static/app/assets/Capture-CvxwzpJZ.js +0 -1
- package/static/app/assets/CommandPalette-CVLiFIQC.js +0 -1
- package/static/app/assets/Library-4As9VUvy.js +0 -1
- package/static/app/assets/ProductFlow-B-Tz0Um4.js +0 -1
- package/static/app/assets/ReviewCard-Va3fPQuj.js +0 -3
- package/static/app/assets/System-DSR2zKWd.js +0 -1
- package/static/app/assets/index-7FAfYm4v.css +0 -2
- package/static/app/assets/index-CEu0Wqjl.js +0 -10
- package/static/app/assets/primitives-B2f9N7Dh.js +0 -1
- package/static/app/assets/shield-alert-yA_Y8lOB.js +0 -1
- package/static/app/assets/utils-BqoznzGP.js +0 -7
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,a as t,b as n,h as r,p as i,s as a,t as o,u as s,v as c}from"./utils-BqoznzGP.js";import{a as l,n as u,r as d}from"./navigation-BPQqEQwr.js";import{_ as f,a as p,c as m,d as h,g,h as _,i as v,l as y,m as b,n as x,p as S,r as C,s as w,t as T,u as E,v as D}from"./primitives-B2f9N7Dh.js";import{t as O}from"./input-CSi6OBJ9.js";import{t as k}from"./network-Ck1nqc-v.js";import{_ as A,i as j,l as M,s as N,t as P,w as F}from"./index-CEu0Wqjl.js";var I=n(c()),L=e(),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=r(e=>e.mode),n=r(e=>e.language),[a,o]=I.useState(e||`account`);I.useEffect(()=>{R.some(t=>t.id===e)&&o(e)},[e]);let s=e=>{o(e),u(`/`+{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)(M,{className:`h-4 w-4`}),` `,i(n,`system.kicker`)]}),(0,L.jsx)(`h1`,{className:`page-title`,children:i(n,`system.title`)}),(0,L.jsx)(`p`,{className:`page-copy`,children:i(n,`system.body`)})]}),(0,L.jsx)(h,{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:i(n,e.labelKey)})),value:a,onChange:e=>s(e)}),a===`account`?(0,L.jsx)(B,{}):null,a===`workspaces`?(0,L.jsx)(V,{}):null,a===`snapshots`?(0,L.jsx)(ee,{}):null,a===`activity`?(0,L.jsx)(H,{}):null,a===`network`?(0,L.jsx)(te,{}):null,a===`settings`?(0,L.jsx)(U,{}):null,a===`admin`?(0,L.jsx)(X,{}):null]})}function B(){let e=l(),t=r(e=>e.language),n=r(e=>e.setWorkspaceId),a=d({queryKey:[`profile`],queryFn:s.profile}),o=d({queryKey:[`sso`],queryFn:s.ssoConfig}),[c,u]=I.useState(``),[h,v]=I.useState(``),[y,C]=I.useState(``),[w,D]=I.useState(``),[k,M]=I.useState(``),N=e=>{e.ok&&(P(),n(null))},R=F({mutationFn:()=>s.login(c,h),onSuccess:N}),z=F({mutationFn:()=>s.register({email:c,password:h,name:y,nickname:w}),onSuccess:N}),B=F({mutationFn:()=>s.updateProfile({name:y,nickname:w}),onSuccess:()=>e.invalidateQueries({queryKey:[`profile`]})}),V=F({mutationFn:()=>s.changePassword(h,k)});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(x,{title:i(t,`system.account.profile`),result:a.data,children:e=>(0,L.jsx)(p,{data:e})}),(0,L.jsxs)(S,{children:[(0,L.jsxs)(g,{children:[(0,L.jsxs)(f,{className:`flex items-center gap-2`,children:[(0,L.jsx)(A,{className:`h-4 w-4`}),` `,i(t,`system.account.title`)]}),(0,L.jsx)(_,{children:i(t,`system.account.detail`)})]}),(0,L.jsxs)(b,{className:`grid gap-3`,children:[(0,L.jsx)(O,{value:c,onChange:e=>u(e.target.value),placeholder:i(t,`system.account.email`)}),(0,L.jsx)(O,{type:`password`,value:h,onChange:e=>v(e.target.value),placeholder:i(t,`system.account.password`)}),(0,L.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,L.jsx)(O,{value:y,onChange:e=>C(e.target.value),placeholder:i(t,`system.account.name`)}),(0,L.jsx)(O,{value:w,onChange:e=>D(e.target.value),placeholder:i(t,`system.account.nickname`)})]}),(0,L.jsx)(O,{type:`password`,value:k,onChange:e=>M(e.target.value),placeholder:i(t,`system.account.newPassword`)}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(j,{onClick:()=>R.mutate(),disabled:!c||!h||R.isPending,children:i(t,`system.account.login`)}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>z.mutate(),disabled:!c||!h||z.isPending,children:i(t,`system.account.register`)}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>B.mutate(),disabled:B.isPending,children:i(t,`system.account.save`)}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>V.mutate(),disabled:!h||!k||V.isPending,children:i(t,`system.account.changePassword`)}),(0,L.jsx)(T,{label:i(t,`system.account.logout`),action:()=>s.logout(),onSuccess:N})]}),[R.data,z.data,B.data,V.data].filter(Boolean).map((e,n)=>(0,L.jsx)(m,{result:e,successLabel:i(t,`system.account.requestDone`)},n))]})]}),(0,L.jsx)(x,{title:i(t,`system.account.signInOptions`),result:o.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(E,{value:e})})]})}function V(){let e=l(),t=r(e=>e.language),{setWorkspaceId:n}=r(),a=d({queryKey:[`workspaceRegistry`],queryFn:s.workspaceRegistry}),c=d({queryKey:[`invitations`],queryFn:s.invitations}),[u,p]=I.useState(``),[m,h]=I.useState(``),[y,C]=I.useState(``),w=F({mutationFn:()=>s.createOrg(u),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),E=F({mutationFn:()=>s.createInvitation({email:m||null,role:`member`,expires_hours:168}),onSuccess:()=>e.invalidateQueries({queryKey:[`invitations`]})}),D=F({mutationFn:()=>s.acceptInvitation(y),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),k=o(a.data?.data?.workspaces);return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.1fr_0.9fr]`,children:[(0,L.jsx)(x,{title:i(t,`system.workspace.yours`),result:a.data,children:()=>(0,L.jsx)(`div`,{className:`grid gap-2`,children:k.map(e=>{let r=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||r)}),(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)(j,{variant:`outline`,onClick:()=>n(r),children:i(t,`system.workspace.use`)}),(0,L.jsx)(T,{label:i(t,`system.workspace.activate`),action:()=>s.activateWorkspace(r),invalidate:[`workspaceRegistry`]}),(0,L.jsx)(T,{label:i(t,`system.workspace.archive`),action:()=>s.archiveWorkspace(r),invalidate:[`workspaceRegistry`],variant:`destructive`})]})]})},r)})})}),(0,L.jsxs)(S,{children:[(0,L.jsxs)(g,{children:[(0,L.jsxs)(f,{className:`flex items-center gap-2`,children:[(0,L.jsx)(N,{className:`h-4 w-4`}),` `,i(t,`system.workspace.organizations`)]}),(0,L.jsx)(_,{children:i(t,`system.workspace.organizationsHint`)})]}),(0,L.jsxs)(b,{className:`grid gap-3`,children:[(0,L.jsx)(O,{value:u,onChange:e=>p(e.target.value),placeholder:i(t,`system.workspace.orgPlaceholder`)}),(0,L.jsx)(j,{disabled:!u.trim()||w.isPending,onClick:()=>w.mutate(),children:i(t,`system.workspace.createOrg`)}),(0,L.jsx)(O,{value:m,onChange:e=>h(e.target.value),placeholder:i(t,`system.workspace.inviteeEmail`)}),(0,L.jsx)(j,{variant:`outline`,disabled:E.isPending,onClick:()=>E.mutate(),children:i(t,`system.workspace.createInvite`)}),(0,L.jsx)(O,{value:y,onChange:e=>C(e.target.value),placeholder:i(t,`system.workspace.inviteToken`)}),(0,L.jsx)(j,{variant:`outline`,disabled:!y.trim()||D.isPending,onClick:()=>D.mutate(),children:i(t,`system.workspace.acceptInvite`)}),(0,L.jsx)(x,{title:i(t,`system.workspace.invitations`),result:c.data,children:e=>(0,L.jsx)(v,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function ee(){let e=r(e=>e.language),t=d({queryKey:[`snapshots`],queryFn:s.snapshots}),n=d({queryKey:[`timeMachine`],queryFn:s.timeMachine}),[a,c]=I.useState(``),[l,u]=I.useState(``),[p,h]=I.useState(``),y=F({mutationFn:()=>s.createSnapshot(a||i(e,`system.snapshots.defaultName`))}),C=F({mutationFn:()=>s.compareSnapshots(l,p)}),w=o(t.data?.data?.snapshots);return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(x,{title:i(e,`system.snapshots.title`),result:t.data,children:()=>(0,L.jsx)(`div`,{className:`space-y-2`,children:w.map(t=>{let n=String(t.id||t.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(t.name||n)}),(0,L.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,L.jsx)(T,{label:i(e,`system.snapshots.export`),action:()=>s.exportSnapshot(n)}),(0,L.jsx)(T,{label:i(e,`system.snapshots.mergeRestore`),action:()=>s.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,L.jsxs)(S,{children:[(0,L.jsxs)(g,{children:[(0,L.jsx)(f,{children:i(e,`system.snapshots.actions`)}),(0,L.jsx)(_,{children:i(e,`system.snapshots.actionsHint`)})]}),(0,L.jsxs)(b,{className:`grid gap-3`,children:[(0,L.jsx)(O,{value:a,onChange:e=>c(e.target.value),placeholder:i(e,`system.snapshots.namePlaceholder`)}),(0,L.jsx)(j,{onClick:()=>y.mutate(),disabled:y.isPending,children:i(e,`system.snapshots.create`)}),(0,L.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,L.jsx)(O,{value:l,onChange:e=>u(e.target.value),placeholder:i(e,`system.snapshots.beforeId`)}),(0,L.jsx)(O,{value:p,onChange:e=>h(e.target.value),placeholder:i(e,`system.snapshots.afterId`)})]}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>C.mutate(),disabled:!l||!p||C.isPending,children:i(e,`system.snapshots.compare`)}),C.data?(0,L.jsx)(m,{result:C.data,successLabel:i(e,`system.snapshots.compareDone`)}):null]})]}),(0,L.jsx)(x,{title:i(e,`system.snapshots.timeline`),result:n.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(v,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function H(){let e=r(e=>e.language),t=d({queryKey:[`realtimeFeed`],queryFn:s.realtimeFeed}),n=d({queryKey:[`presence`],queryFn:s.presence});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(x,{title:i(e,`system.activity.feed`),result:t.data,children:e=>(0,L.jsx)(v,{items:e.events,titleKey:`event_type`,metaKey:`area`,limit:14})}),(0,L.jsx)(x,{title:i(e,`system.activity.presence`),result:n.data,children:e=>(0,L.jsx)(G,{data:e})})]})}function te(){let e=l(),t=r(e=>e.language),n=d({queryKey:[`networkIdentity`],queryFn:s.networkIdentity}),a=d({queryKey:[`networkPeers`],queryFn:s.networkPeers}),[c,u]=I.useState(``),[p,h]=I.useState(``),[v,y]=I.useState(``),C=F({mutationFn:()=>s.pairPeer({name:c,base_url:p,public_key:v}),onSuccess:()=>e.invalidateQueries({queryKey:[`networkPeers`]})});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[0.8fr_1.2fr]`,children:[(0,L.jsx)(x,{title:i(t,`system.network.identity`),result:n.data,children:e=>(0,L.jsx)(K,{data:e})}),(0,L.jsxs)(S,{children:[(0,L.jsxs)(g,{children:[(0,L.jsxs)(f,{className:`flex items-center gap-2`,children:[(0,L.jsx)(k,{className:`h-4 w-4`}),` `,i(t,`system.network.pair`)]}),(0,L.jsx)(_,{children:i(t,`system.network.pairHint`)})]}),(0,L.jsxs)(b,{className:`grid gap-3`,children:[(0,L.jsx)(O,{value:c,onChange:e=>u(e.target.value),placeholder:i(t,`system.network.deviceName`)}),(0,L.jsx)(O,{value:p,onChange:e=>h(e.target.value),placeholder:i(t,`system.network.address`)}),(0,L.jsx)(O,{value:v,onChange:e=>y(e.target.value),placeholder:i(t,`system.network.publicKey`)}),(0,L.jsx)(j,{disabled:!c||!p||!v||C.isPending,onClick:()=>C.mutate(),children:i(t,`system.network.pair`)}),C.data?(0,L.jsx)(m,{result:C.data,successLabel:i(t,`system.network.pairDone`)}):null]})]}),(0,L.jsx)(x,{title:i(t,`system.network.peers`),result:a.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(`div`,{className:`grid gap-2`,children:o(e.peers).map(e=>{let n=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||n)}),(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)(T,{label:i(t,`system.network.pushWorkspace`),action:()=>s.pushPeer(n,r.getState().workspaceId)}),(0,L.jsx)(T,{label:i(t,`system.network.unpair`),action:()=>s.unpairPeer(n),invalidate:[`networkPeers`],variant:`destructive`})]})]},n)})})})]})}function U(){let e=l(),{theme:t,setTheme:n,mode:a,setMode:o}=r(),c=r(e=>e.language),u=d({queryKey:[`health`],queryFn:s.health}),p=d({queryKey:[`sysinfo`],queryFn:s.sysinfo}),h=d({queryKey:[`computerMemory`],queryFn:s.computerMemory}),v=d({queryKey:[`brainStorage`],queryFn:s.brainStorage}),C=d({queryKey:[`backupHealth`],queryFn:s.backupHealth}),[w,D]=I.useState(``),[k,A]=I.useState(`lattice_brain`),[M,N]=I.useState(!1),[P,R]=I.useState(``),[z,B]=I.useState(``),[V,ee]=I.useState(``),[H,te]=I.useState(!1),[U,W]=I.useState(!1),G=F({mutationFn:e=>s.dockerPostgres({consent:e,dry_run:!e,port:5432})}),K=F({mutationFn:()=>s.migratePostgres({dsn:w,schema_name:k||`lattice_brain`,dry_run:!0})}),q=F({mutationFn:()=>s.brainArchive({path:P.trim()||null,passphrase:V}),onSuccess:()=>e.invalidateQueries({queryKey:[`backupHealth`]})}),J=F({mutationFn:()=>s.brainArchiveInspect({path:z,passphrase:V||null})}),Y=F({mutationFn:()=>s.brainArchiveVerify({path:z,passphrase:V})}),X=F({mutationFn:()=>s.brainArchiveRestore({path:z,passphrase:V,dry_run:!0,confirm:!1})}),Z=F({mutationFn:()=>s.brainArchiveRestore({path:z,passphrase:V,dry_run:!1,confirm:H}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}}),Q=F({mutationFn:()=>s.brainArchiveImport({path:z,passphrase:V,dry_run:!0,confirm:!1})}),$=F({mutationFn:()=>s.brainArchiveImport({path:z,passphrase:V,dry_run:!1,confirm:U}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-3`,children:[(0,L.jsxs)(S,{children:[(0,L.jsxs)(g,{children:[(0,L.jsx)(f,{children:i(c,`system.panel.appearance`)}),(0,L.jsx)(_,{children:i(c,`system.panel.appearance.hint`)})]}),(0,L.jsxs)(b,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(j,{variant:t===`dark`?`default`:`outline`,onClick:()=>n(`dark`),children:i(c,`system.theme.dark`)}),(0,L.jsx)(j,{variant:t===`light`?`default`:`outline`,onClick:()=>n(`light`),children:i(c,`system.theme.light`)}),[`basic`,`advanced`,`admin`].map(e=>(0,L.jsx)(j,{variant:a===e?`default`:`outline`,onClick:()=>o(e),children:i(c,`shell.mode.${e}`)},e))]})]}),(0,L.jsx)(x,{title:a===`basic`?i(c,`system.panel.brainStatus`):i(c,`system.panel.serverHealth`),result:u.data,children:e=>(0,L.jsx)(ne,{data:e})}),(0,L.jsx)(x,{title:a===`basic`?i(c,`system.panel.readiness`):i(c,`system.panel.hostTelemetry`),result:p.data,children:e=>a===`basic`?(0,L.jsx)(y,{stats:[{label:i(c,`system.stat.cpu`),value:`${String(e.cpu_pct||`0`)}%`},{label:i(c,`system.stat.memory`),value:`${String(e.ram_pct||`0`)}%`},{label:i(c,`system.stat.gpu`),value:`${String(e.gpu_mem_pct||`0`)}%`},{label:i(c,`system.stat.localStatus`),value:i(c,`system.stat.ready`)}]}):(0,L.jsx)(E,{value:e})}),(0,L.jsx)(x,{title:a===`basic`?i(c,`system.storage.title`):i(c,`system.panel.brainStorage`),result:v.data,className:`xl:col-span-3`,children:e=>(0,L.jsx)(re,{data:e,mode:a,language:c})}),a===`basic`?null:(0,L.jsx)(x,{title:i(c,`system.backup.health`),result:C.data,className:`xl:col-span-3`,children:e=>(0,L.jsx)(ie,{data:e})}),a===`basic`?null:(0,L.jsxs)(S,{className:`xl:col-span-3`,children:[(0,L.jsxs)(g,{children:[(0,L.jsx)(f,{children:i(c,`system.archive.title`)}),(0,L.jsx)(_,{children:i(c,`system.archive.detail`)})]}),(0,L.jsxs)(b,{className:`grid gap-3`,children:[(0,L.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_1fr]`,children:[(0,L.jsx)(O,{value:P,onChange:e=>R(e.target.value),placeholder:i(c,`system.archive.exportPath`)}),(0,L.jsx)(O,{value:z,onChange:e=>B(e.target.value),placeholder:i(c,`system.archive.restorePath`)})]}),(0,L.jsx)(O,{type:`password`,value:V,onChange:e=>ee(e.target.value),placeholder:i(c,`system.archive.passphrase`)}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(j,{onClick:()=>q.mutate(),disabled:!V||q.isPending,children:i(c,`system.archive.export`)}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>J.mutate(),disabled:!z||J.isPending,children:i(c,`system.archive.inspect`)}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>Y.mutate(),disabled:!z||!V||Y.isPending,children:i(c,`system.archive.verify`)}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>X.mutate(),disabled:!z||!V||X.isPending,children:i(c,`system.archive.restoreDryRun`)}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>Q.mutate(),disabled:!z||!V||Q.isPending,children:i(c,`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)}),i(c,`system.archive.confirmRestore`)]}),(0,L.jsx)(j,{variant:`destructive`,onClick:()=>Z.mutate(),disabled:!z||!V||!H||Z.isPending,children:i(c,`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)}),i(c,`system.archive.confirmImport`)]}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>$.mutate(),disabled:!z||!V||!U||$.isPending,children:i(c,`system.archive.import`)})]}),[q.data,J.data,Y.data,X.data,Z.data,Q.data,$.data].filter(Boolean).map((e,t)=>(0,L.jsx)(m,{result:e,successLabel:i(c,`system.archive.requestDone`)},t))]})]}),a===`basic`?null:(0,L.jsxs)(S,{className:`xl:col-span-3`,children:[(0,L.jsxs)(g,{children:[(0,L.jsx)(f,{children:i(c,`system.scale.title`)}),(0,L.jsx)(_,{children:i(c,`system.scale.detail`)})]}),(0,L.jsxs)(b,{className:`grid gap-3`,children:[(0,L.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_220px]`,children:[(0,L.jsx)(O,{value:w,onChange:e=>D(e.target.value),placeholder:i(c,`system.scale.dsn`)}),(0,L.jsx)(O,{value:k,onChange:e=>A(e.target.value),placeholder:i(c,`system.scale.schema`)})]}),(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,L.jsx)(j,{variant:`outline`,onClick:()=>G.mutate(!1),disabled:G.isPending,children:i(c,`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:M,onChange:e=>N(e.target.checked)}),i(c,`system.scale.dockerConsent`)]}),(0,L.jsx)(j,{onClick:()=>G.mutate(!0),disabled:!M||G.isPending,children:i(c,`system.scale.dockerStart`)}),(0,L.jsx)(j,{variant:`outline`,onClick:()=>K.mutate(),disabled:!w||K.isPending,children:i(c,`system.scale.migrationPlan`)})]}),G.data?(0,L.jsx)(m,{result:G.data,successLabel:i(c,`system.scale.dockerDone`)}):null,K.data?(0,L.jsx)(m,{result:K.data,successLabel:i(c,`system.scale.migrationDone`)}):null]})]}),a===`basic`?null:(0,L.jsx)(x,{title:i(c,`system.computerMemory.title`),result:h.data,className:`xl:col-span-3`,children:e=>(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(E,{value:e}),(0,L.jsxs)(`div`,{className:`flex gap-2`,children:[(0,L.jsx)(T,{label:i(c,`system.computerMemory.enable`),action:()=>s.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,L.jsx)(T,{label:i(c,`system.computerMemory.disable`),action:()=>s.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function W(e,t,n=i(e,`system.value.notReported`)){return t==null||t===``?n:typeof t==`boolean`?i(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function G({data:e}){let t=r(e=>e.language),n=o(e.presence||e.clients||e);return n.length?(0,L.jsx)(v,{items:n,titleKey:`user`,metaKey:`workspace_id`}):(0,L.jsx)(C,{title:i(t,`system.presence.empty`),detail:i(t,`system.presence.emptyDetail`)})}function K({data:e}){let t=r(e=>e.mode),n=r(e=>e.language),o=W(n,e.public_key,``);return t===`basic`?(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(q,{title:i(n,`system.device.thisMac`),status:i(n,`system.value.trusted`),detail:i(n,`system.device.thisMacDetail`)}),(0,L.jsx)(D,{variant:`muted`,children:W(n,e.algorithm,i(n,`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)(D,{variant:`success`,children:i(n,`system.value.localDevice`)}),(0,L.jsx)(D,{variant:`muted`,children:W(n,e.algorithm,i(n,`system.value.identityKey`))})]}),(0,L.jsx)(p,{data:{device_id:e.device_id||e.id||i(n,`system.value.notReported`),fingerprint:e.fingerprint||i(n,`system.value.notReported`),public_key:o?a(o.replace(/\s+/g,` `),72):i(n,`system.value.notReported`)}})]})}function ne({data:e}){let t=r(e=>e.mode),n=r(e=>e.language);return t===`basic`?(0,L.jsx)(q,{title:i(n,`system.health.title`),status:i(n,`system.health.ok`),detail:i(n,`system.health.detail`)}):(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(y,{stats:[{label:i(n,`system.health.status`),value:e.status||e.ok||i(n,`system.value.reported`)},{label:i(n,`system.health.version`),value:e.version||i(n,`system.value.notReported`)},{label:i(n,`system.health.mode`),value:e.mode||e.environment||i(n,`system.value.local`)},{label:i(n,`system.health.port`),value:e.port||e.backend_port||i(n,`system.value.configured`)}]}),(0,L.jsx)(E,{value:e})]})}function re({data:e,mode:n=`advanced`,language:r=`en`}){let a=t(e.active)?e.active:e,o=t(e.postgres)?e.postgres:{},s=t(e.backup_health)?e.backup_health:{},c=a.vector_search||a.vector||e.vector_search||e.sqlite_vec,l=!!(o.available||o.connected||o.enabled),u=!!c&&String(c).toLowerCase()!==`not reported`;return n===`basic`?(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(q,{title:i(r,`system.storage.local.title`),status:i(r,`system.storage.local.badge`),detail:i(r,`system.storage.local.detail`)}),(0,L.jsx)(q,{title:i(r,`system.storage.search.title`),status:u?i(r,`system.storage.search.on`):i(r,`system.storage.search.pending`),detail:u?i(r,`system.storage.search.detailOn`):i(r,`system.storage.search.detailPending`)})]}):(0,L.jsxs)(`div`,{className:`space-y-4`,children:[(0,L.jsx)(y,{stats:[{label:i(r,`system.storage.activeEngine`),value:a.engine||e.engine||i(r,`system.storage.sqlite`)},{label:i(r,`system.storage.sqliteDefault`),value:a.engine===`postgres`?i(r,`system.value.scaleMode`):i(r,`system.value.enabled`)},{label:i(r,`system.storage.vector`),value:c||i(r,`system.value.notReported`)},{label:i(r,`system.storage.postgres`),value:l?i(r,`system.value.available`):i(r,`system.value.optional`)}]}),(0,L.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,L.jsx)(q,{title:i(r,`system.storage.sqlite`),status:a.available===!1?i(r,`system.value.unavailable`):i(r,`system.value.default`),detail:W(r,a.reason||a.path||e.path,i(r,`system.storage.sqliteDetail`))}),(0,L.jsx)(q,{title:i(r,`system.storage.vector`),status:W(r,c,i(r,`system.value.reported`)),detail:W(r,a.vector_reason||a.sqlite_vec_reason||e.vector_reason,i(r,`system.storage.vectorDetail`))}),(0,L.jsx)(q,{title:i(r,`system.storage.postgres`),status:l?i(r,`system.value.available`):i(r,`system.value.notEnabled`),detail:W(r,o.reason||o.dsn||o.status,i(r,`system.storage.postgresDetail`))})]}),Object.keys(s).length?(0,L.jsx)(E,{value:{backup_health:s}}):null]})}function ie({data:e}){let t=r(e=>e.language);return(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(y,{stats:[{label:i(t,`system.backup.available`),value:e.available===!1?i(t,`system.value.no`):i(t,`system.value.yes`)},{label:i(t,`system.backup.backups`),value:e.count||e.backups||0},{label:i(t,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:i(t,`system.backup.zip`),value:e.zip_backups||0}]}),(0,L.jsx)(p,{data:{directory:e.directory||i(t,`system.value.notReported`),latest:e.latest||i(t,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||i(t,`system.value.notReported`),failure:e.error||e.reason||i(t,`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)(D,{variant:r,children:t})]}),(0,L.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:n})]})}function J({data:e}){let n=r(e=>e.language),a=t(e.startup)?e.startup:{},o=t(e.privacy)?e.privacy:{},s=t(e.storage)?e.storage:{},c=t(e.backup)?e.backup:{},l=t(e.device_identity)?e.device_identity:{},u=t(e.permissions)?e.permissions:{};return(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(y,{stats:[{label:i(n,`system.hardening.version`),value:e.version||i(n,`system.value.reported`)},{label:i(n,`system.hardening.localOnly`),value:o.local_only_default??a.local_only_default??i(n,`system.value.reported`)},{label:i(n,`system.hardening.storage`),value:t(s.active)?s.active.engine:i(n,`system.value.reported`)},{label:i(n,`system.hardening.backups`),value:c.count||c.available||i(n,`system.value.reported`)}]}),(0,L.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,L.jsx)(q,{title:i(n,`system.hardening.startup`),status:i(n,a.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:i(n,`system.hardening.startupDetail`)}),(0,L.jsx)(q,{title:i(n,`system.hardening.integrations`),status:i(n,o.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:i(n,`system.hardening.integrationsDetail`)}),(0,L.jsx)(q,{title:i(n,`system.hardening.identity`),status:W(n,l.algorithm||l.fingerprint,i(n,`system.value.reported`)),detail:W(n,l.storage,i(n,`system.hardening.identityStorage`))}),(0,L.jsx)(q,{title:i(n,`system.hardening.permissions`),status:i(n,u.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:i(n,`system.hardening.permissionsDetail`)})]})]})}function Y({data:e}){let n=r(e=>e.language),a=t(e.cards)?e.cards:{},o=t(e.severity_counts)?e.severity_counts:{};return(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(y,{stats:[{label:i(n,`system.security.eventsToday`),value:a.events_today||0},{label:i(n,`system.security.highRisk`),value:a.high_risk_events||o.high||0},{label:i(n,`system.security.review`),value:a.review_required||0},{label:i(n,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,L.jsx)(E,{value:{severity_counts:o,sensitive_fields:e.field_counts||{}}})]})}function X(){let e=r(e=>e.mode),t=r(e=>e.language),n=d({queryKey:[`adminSummary`],queryFn:s.adminSummary}),a=d({queryKey:[`adminUsers`],queryFn:s.adminUsers}),o=d({queryKey:[`adminAudit`],queryFn:()=>s.adminAudit()}),c=d({queryKey:[`adminRoles`],queryFn:s.adminRoles}),l=d({queryKey:[`adminPolicies`],queryFn:s.adminPolicies}),u=d({queryKey:[`adminProductHardening`],queryFn:s.adminProductHardening}),f=d({queryKey:[`adminSecurity`],queryFn:s.adminSecurity}),m=d({queryKey:[`vpcStatus`],queryFn:s.vpcStatus});return e===`admin`?(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(x,{title:i(t,`system.admin.summary`),result:n.data,children:e=>(0,L.jsx)(p,{data:e})}),(0,L.jsx)(x,{title:i(t,`system.admin.users`),result:a.data,children:e=>(0,L.jsx)(v,{items:e,titleKey:`email`,metaKey:`role`})}),(0,L.jsx)(x,{title:i(t,`system.admin.audit`),result:o.data,children:e=>(0,L.jsx)(v,{items:e.recent_events||e,titleKey:`act`,metaKey:`sev`})}),(0,L.jsx)(x,{title:i(t,`system.admin.roles`),result:c.data,children:e=>(0,L.jsx)(v,{items:e.roles||e,titleKey:`role`,metaKey:`members`})}),(0,L.jsx)(x,{title:i(t,`system.admin.policies`),result:l.data,children:e=>(0,L.jsx)(v,{items:e.policies||e,titleKey:`label`,metaKey:`enforced`})}),(0,L.jsx)(x,{title:i(t,`system.admin.hardening`),result:u.data,children:e=>(0,L.jsx)(J,{data:e})}),(0,L.jsx)(x,{title:i(t,`system.admin.security`),result:f.data,children:e=>(0,L.jsx)(Y,{data:e})}),(0,L.jsx)(x,{title:i(t,`system.admin.vpc`),result:m.data,className:`xl:col-span-2`,children:e=>(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(D,{variant:`muted`,children:i(t,`system.admin.communityUnavailable`)}),(0,L.jsx)(E,{value:e})]})})]}):(0,L.jsx)(w,{title:i(t,`system.admin.controls`),detail:i(t,`system.admin.controlsDetail`),target:`admin`})}export{z as SystemPage};
|