ltcai 10.7.0 → 10.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.
- package/README.md +55 -40
- package/docs/CHANGELOG.md +68 -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 +1 -1
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +1 -1
- package/docs/kg-schema.md +1 -1
- package/lattice_brain/__init__.py +1 -1
- package/lattice_brain/graph/retrieval_vector.py +69 -33
- package/lattice_brain/runtime/multi_agent.py +96 -15
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/admin.py +9 -6
- package/latticeai/api/auth.py +37 -38
- package/latticeai/api/browser.py +7 -6
- package/latticeai/api/chat.py +9 -6
- package/latticeai/api/chat_agent_http.py +2 -1
- package/latticeai/api/chat_history.py +4 -2
- package/latticeai/api/chat_intents.py +14 -14
- package/latticeai/api/knowledge_graph.py +5 -4
- package/latticeai/api/local_files.py +25 -15
- package/latticeai/api/mcp.py +15 -11
- package/latticeai/api/memory.py +2 -1
- package/latticeai/api/models.py +39 -24
- package/latticeai/api/network_boundary.py +9 -4
- package/latticeai/api/portability.py +27 -19
- package/latticeai/api/project_sessions.py +7 -5
- package/latticeai/api/review_queue.py +12 -7
- package/latticeai/api/setup.py +10 -11
- package/latticeai/api/static_routes.py +62 -46
- package/latticeai/api/tools.py +7 -6
- package/latticeai/core/file_generation.py +141 -8
- package/latticeai/core/legacy_compatibility.py +1 -1
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/mcp_registry.py +20 -4
- package/latticeai/core/messages.py +452 -0
- package/latticeai/core/workspace_computer_memory.py +84 -0
- package/latticeai/core/workspace_indexing.py +102 -0
- package/latticeai/core/workspace_onboarding.py +104 -0
- package/latticeai/core/workspace_os.py +24 -207
- package/latticeai/core/workspace_os_constants.py +1 -1
- package/latticeai/core/workspace_relationships.py +99 -0
- package/latticeai/integrations/telegram_bot.py +20 -18
- package/latticeai/services/architecture_readiness.py +1 -1
- package/latticeai/services/model_loading.py +63 -27
- package/latticeai/services/product_readiness.py +1 -1
- package/package.json +3 -2
- package/scripts/check_current_release_docs.mjs +1 -1
- package/scripts/check_screenshot_pixel_delta.py +92 -10
- package/scripts/check_server_i18n.mjs +96 -0
- package/scripts/release_screen_claims.json +46 -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 -37
- package/static/app/assets/{Act-DIbkoJqs.js → Act-CS9IeqUX.js} +1 -1
- package/static/app/assets/{AdminConsole-Cbi6Jre6.js → AdminConsole-3UkIEWGA.js} +1 -1
- package/static/app/assets/{Brain-BPfuXZ71.js → Brain-B22EmNqS.js} +1 -1
- package/static/app/assets/{BrainHome-87XaAS4V.js → BrainHome-CMDqgJF4.js} +2 -2
- package/static/app/assets/{BrainSignals-ExpcdiUi.js → BrainSignals-BeE8RJo3.js} +1 -1
- package/static/app/assets/{Capture-Bxe4WiVX.js → Capture-ZX9bQh68.js} +1 -1
- package/static/app/assets/{CommandPalette-B1PV5Yd4.js → CommandPalette-86m4FCcN.js} +1 -1
- package/static/app/assets/{Library-BRlJJmwZ.js → Library-Bhz5LUca.js} +1 -1
- package/static/app/assets/{LivingBrain-D61qG3WY.js → LivingBrain-BSa0wpFG.js} +1 -1
- package/static/app/assets/ProductFlow-IP4Q-5aQ.js +1 -0
- package/static/app/assets/{ReviewCard-BoiWv0Y1.js → ReviewCard-BepjSDpN.js} +1 -1
- package/static/app/assets/{System-Ci0HEtTJ.js → System-Bwx1h_jT.js} +1 -1
- package/static/app/assets/arrow-left-ig7AZU8B.js +1 -0
- package/static/app/assets/{bot-BaPt4PPn.js → bot-DQj0-LkM.js} +1 -1
- package/static/app/assets/{brain-BSkWaj3i.js → brain-D8OEwmVj.js} +1 -1
- package/static/app/assets/{button-CKwtO1O0.js → button-CmTknyAP.js} +1 -1
- package/static/app/assets/{circle-pause-CiUc5RRk.js → circle-pause-yTCWRziJ.js} +1 -1
- package/static/app/assets/{circle-play-BaTDxzR9.js → circle-play-Ccrva84R.js} +1 -1
- package/static/app/assets/{cpu-Dm1gHuP1.js → cpu-CbJqWTlS.js} +1 -1
- package/static/app/assets/{download-C32oGU-C.js → download-CkSzbzU-.js} +1 -1
- package/static/app/assets/{folder-open-Ch2jLVdD.js → folder-open-CKyjQ4PU.js} +1 -1
- package/static/app/assets/{hard-drive-BBjA5st8.js → hard-drive-DAzk9um0.js} +1 -1
- package/static/app/assets/index-BfD-jhA9.css +2 -0
- package/static/app/assets/{index-J6h01X78.js → index-CxOcwsHV.js} +3 -3
- package/static/app/assets/{input-y6ABdKWY.js → input-DcMETmZ7.js} +1 -1
- package/static/app/assets/{permissionCopy-BEtc0Ihd.js → permissionCopy-BVf13_25.js} +1 -1
- package/static/app/assets/{primitives-GSFXF2Pd.js → primitives-CQV9Q2YM.js} +1 -1
- package/static/app/assets/search-CXGASMMH.js +1 -0
- package/static/app/assets/{share-2-BgGq2A63.js → share-2-COWCHNZm.js} +1 -1
- package/static/app/assets/{shield-alert-BYA491cj.js → shield-alert-BDrvilyK.js} +1 -1
- package/static/app/assets/{textarea-BAcim3fs.js → textarea-rUmsc8cP.js} +1 -1
- package/static/app/assets/{useFocusTrap-qLg24jiv.js → useFocusTrap-Bi5UY_8v.js} +1 -1
- package/static/app/assets/{useQuery-xkAu9eDX.js → useQuery-C-AicB-3.js} +1 -1
- package/static/app/assets/{utils-CogdofAA.js → utils-BMwWg78e.js} +1 -1
- package/static/app/assets/{workspace-BMvfx9_R.js → workspace-Y93tls8P.js} +1 -1
- package/static/app/index.html +4 -4
- package/static/sw.js +1 -1
- package/static/app/assets/ProductFlow-BxjxI8Aa.js +0 -1
- package/static/app/assets/arrow-left-DArdBUxd.js +0 -1
- package/static/app/assets/index-BV7Yf6Eq.css +0 -2
- package/static/app/assets/search-CaIZKyo_.js +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{C as e,_ as t,b as n,d as r,m as i,o as a,v as o,x as s}from"./utils-
|
|
1
|
+
import{C as e,_ as t,b as n,d as r,m as i,o as a,v as o,x as s}from"./utils-BMwWg78e.js";import{r as c}from"./useQuery-C-AicB-3.js";import{t as l}from"./workspace-Y93tls8P.js";import{a as u,t as d,v as f}from"./primitives-CQV9Q2YM.js";import{t as p}from"./input-DcMETmZ7.js";import{d as m}from"./index-CxOcwsHV.js";import{t as h}from"./button-CmTknyAP.js";var g=t(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),_=t(`history`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]]),v=e(s()),y=400,b=40,x=400;function S(e){return new TextEncoder().encode(e).length}async function C(e){let t=globalThis.crypto?.subtle;if(!t)return``;let n=await t.digest(`SHA-256`,new TextEncoder().encode(e));return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function w(e,t,n){let r=[`--- a/${n}`,`+++ b/${n}`],i=e.length?e.split(`
|
|
2
2
|
`):[],a=t.length?t.split(`
|
|
3
3
|
`):[];if(i.length>x||a.length>x)return[...r,...i.map(e=>`-${e}`),...a.map(e=>`+${e}`)].slice(0,y);let o=i.length,s=a.length,c=Array.from({length:o+1},()=>new Uint32Array(s+1));for(let e=o-1;e>=0;--e)for(let t=s-1;t>=0;--t)c[e][t]=i[e]===a[t]?c[e+1][t+1]+1:Math.max(c[e+1][t],c[e][t+1]);let l=[],u=0,d=0;for(;u<o&&d<s;)i[u]===a[d]?(u+=1,d+=1):c[u+1][d]>=c[u][d+1]?(l.push(`-${i[u]}`),u+=1):(l.push(`+${a[d]}`),d+=1);for(;u<o;)l.push(`-${i[u++]}`);for(;d<s;)l.push(`+${a[d++]}`);return l.length?[...r,...l].slice(0,y):[]}async function T(e){let t=await r.proposalDetail(e);if(!t.ok)throw Error(t.error||`HTTP ${t.status}`);let n=t.data,i=a(n.payload)?n.payload:{},o=typeof i.path==`string`?i.path:``,s=typeof n.kind==`string`&&n.kind?n.kind:`file_update`;if(!o)throw Error(`proposal payload has no path`);let c=typeof i.new_content==`string`?i.new_content:``,l=await r.readWorkspaceFile(o);if(!l.ok&&l.status!==404)throw Error(l.error||`HTTP ${l.status}`);let u=l.ok,d=l.ok?l.data.content:``;if(s===`file_update`&&u&&d===c)return await r.rejectProposal(e,`rebase: content already applied`),`already_applied`;if(s===`file_delete`&&!u)return await r.rejectProposal(e,`rebase: file already deleted`),`already_applied`;let f=s===`file_delete`?``:c,p=w(d,f,o),m=u?await C(d):``,h=await r.createReviewItem({title:typeof n.title==`string`&&n.title?n.title:o,summary:typeof n.summary==`string`?n.summary:``,source:`change_proposal`,kind:s,payload:{path:o,diff:p,...s===`file_delete`?{}:{new_content:c},tier:s===`file_delete`?`large`:p.length<=b?`small`:`large`,before_bytes:S(d),after_bytes:S(f),...m||!u?{base_exists:u,base_sha256:m}:{}},provenance:{proposed_by:`user_rebase`,reason:`rebased_from:${e}`,source_detail:`proposal_conflict_rebase`}});if(!h.ok)throw Error(h.error||`HTTP ${h.status}`);let g=String(h.data.id||``);return await r.rejectProposal(e,g?`rebased_to:${g}`:`rebased`),`rebased`}var E=n();function D({language:e,itemId:t,onResolved:n}){let r=c(),[a,o]=v.useState(null),s=l({mutationFn:()=>T(t),onSuccess:async e=>{o(e),await Promise.all([r.invalidateQueries({queryKey:[`pendingProposals`]}),r.invalidateQueries({queryKey:[`proposalCounts`]}),r.invalidateQueries({queryKey:[`automationReviews`]}),r.invalidateQueries({queryKey:[`reviewItems`]})]),n?.(e)}});return(0,E.jsxs)(`div`,{className:`proposal-conflict-note`,role:`alert`,"data-testid":`proposal-conflict-note`,children:[(0,E.jsxs)(`div`,{className:`proposal-conflict-head`,children:[(0,E.jsx)(g,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,E.jsx)(`strong`,{children:i(e,`proposals.conflict.title`)})]}),(0,E.jsx)(`p`,{children:i(e,`proposals.conflict.detail`)}),a===`rebased`?(0,E.jsx)(`p`,{className:`proposal-conflict-done`,role:`status`,children:i(e,`proposals.conflict.rebased`)}):a===`already_applied`?(0,E.jsx)(`p`,{className:`proposal-conflict-done`,role:`status`,children:i(e,`proposals.conflict.alreadyApplied`)}):(0,E.jsxs)(`button`,{type:`button`,className:`proposal-conflict-rebase`,disabled:s.isPending,onClick:()=>s.mutate(),children:[(0,E.jsx)(m,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),s.isPending?i(e,`proposals.conflict.rebasing`):i(e,`proposals.conflict.rebase`)]}),s.isError?(0,E.jsx)(`small`,{className:`proposal-conflict-error`,children:i(e,`proposals.conflict.failed`,{reason:s.error instanceof Error?s.error.message:String(s.error)})}):null]})}var O=[{id:`pending`,labelKey:`review.filter.status.pending`},{id:`snoozed`,labelKey:`review.filter.status.snoozed`},{id:`all`,labelKey:`review.filter.status.all`},{id:`approved`,labelKey:`review.filter.status.approved`},{id:`dismissed`,labelKey:`review.filter.status.dismissed`}],k=[{id:`all`,labelKey:`review.filter.source.all`},{id:`workflow_run`,labelKey:`review.filter.source.workflow_run`},{id:`trigger`,labelKey:`review.filter.source.trigger`},{id:`kg_change_digest`,labelKey:`review.filter.source.kg_change_digest`},{id:`chat_followup`,labelKey:`review.filter.source.chat_followup`},{id:`agent_followup`,labelKey:`review.filter.source.agent_followup`},{id:`change_proposal`,labelKey:`review.filter.source.change_proposal`}];function A(e){return e===`pending`?`warning`:e===`snoozed`?`muted`:e===`approved`?`success`:e===`dismissed`?`danger`:`muted`}var j={pending:`review.itemStatus.pending`,snoozed:`review.itemStatus.snoozed`,approved:`review.itemStatus.approved`,dismissed:`review.itemStatus.dismissed`};function M(e,t){let n=j[t];return n?i(e,n):t}var N={workflow_run:`review.source.workflow_run`,trigger:`review.source.trigger`,kg_change_digest:`review.source.kg_change_digest`,chat_followup:`review.source.chat_followup`,agent_followup:`review.source.agent_followup`,change_proposal:`review.source.change_proposal`};function P(e,t){let n=t?N[t]:void 0;return n?i(e,n):t||i(e,`review.source.automation`)}function F(e,t,n){let r=t.source_detail;if(r!=null&&String(r).trim())return String(r);let i=t.trigger_id;return i!=null&&String(i).trim()?String(i):P(e,n)}var I={read:`review.risk.read`,write:`review.risk.write`,write_scoped:`review.risk.write_scoped`,exec:`review.risk.exec`,destructive:`review.risk.destructive`};function L(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return``;let r=I[n];return r?i(e,r):n}var R={read:`review.change.read`,additive:`review.change.additive`,mutation:`review.change.mutation`,destructive:`review.change.destructive`,exec:`review.change.exec`};function z(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return``;let r=R[n];return r?i(e,r):n}function B(){let e=new Date;return e.setDate(e.getDate()+1),e.toISOString()}function V(e,t){if(!t)return i(e,`review.snoozed.badge`);let n=new Date(t);return Number.isNaN(n.getTime())?i(e,`review.snoozed.until`,{value:t}):i(e,`review.snoozed.until`,{value:new Intl.DateTimeFormat(e===`ko`?`ko-KR`:`en-US`,{dateStyle:`medium`,timeStyle:`short`}).format(n)})}function H(e){return e.effective_status===`pending`||e.effective_status===`snoozed`}function U(e){let t=e.payload||{},n=e.provenance||{};return!!(t.last_run_id||n.run_id)}var W=24;function G({language:e,diff:t,path:n,className:r=``}){if(!t.length)return null;let a=t.slice(0,W),o=t.length-a.length;return(0,E.jsxs)(`figure`,{className:`m-0 grid gap-1 ${r}`,children:[(0,E.jsxs)(`figcaption`,{className:`flex flex-wrap items-baseline gap-2 text-xs text-muted-foreground`,children:[(0,E.jsx)(`strong`,{className:`font-medium text-foreground`,children:i(e,`proposals.diff.header`)}),n?(0,E.jsx)(`code`,{className:`break-all`,children:n}):null]}),(0,E.jsx)(`pre`,{className:`pending-proposal-diff`,"aria-label":i(e,`proposals.diff`),children:a.map((e,t)=>(0,E.jsx)(`span`,{className:`block ${K(e)}`,children:e||` `},t))}),o>0?(0,E.jsx)(`small`,{className:`text-xs text-muted-foreground`,children:i(e,`proposals.diff.more`,{count:o})}):null]})}function K(e){return/^\+(?!\+\+)/.test(e)?`text-success`:/^-(?!--)/.test(e)?`text-destructive`:``}function q({item:e,feedback:t,onAction:n}){let r=o(e=>e.mode),a=o(e=>e.language),[s,c]=v.useState(``),l=v.useId(),g=e.provenance||{},_=e.payload||{},y=U(e),b=e.effective_status===`snoozed`,x=H(e),S=e.source===`change_proposal`,C=e.source!==`chat_followup`&&e.source!==`agent_followup`&&!S,w=Array.isArray(_.diff)?_.diff:[],T=String(_.tier||`small`),O=typeof _.path==`string`&&_.path.trim()?_.path:void 0,k=L(a,g.risk),j=z(a,g.change_class),N=typeof g.tool==`string`&&g.tool.trim()?g.tool:``,I=typeof g.proposed_by==`string`&&g.proposed_by.trim()?g.proposed_by:``,R=r!==`basic`,B=!!(S&&w.length>0||b||k||j||N||I||R);return(0,E.jsxs)(`article`,{"aria-labelledby":l,className:`rounded-xl border border-border bg-card p-5 shadow-sm space-y-4`,children:[(0,E.jsxs)(`header`,{className:`flex flex-wrap items-start justify-between gap-3 border-b border-border/40 pb-3`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,E.jsx)(`h3`,{id:l,className:`font-bold text-base text-foreground`,children:e.title}),e.summary?(0,E.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:e.summary}):null]}),(0,E.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 shrink-0`,children:[(0,E.jsx)(f,{variant:`muted`,className:`text-xs`,children:P(a,e.source)}),S?(0,E.jsx)(f,{variant:`muted`,className:`text-xs`,children:i(a,e.kind===`file_delete`?`proposals.kind.delete`:T===`large`?`proposals.tier.large`:`proposals.tier.small`)}):null,(0,E.jsx)(f,{variant:A(e.effective_status),className:`text-xs font-semibold`,children:M(a,e.effective_status)})]})]}),(0,E.jsxs)(`div`,{className:`grid items-start gap-5 ${B?`md:grid-cols-12`:``}`,children:[(0,E.jsxs)(`div`,{className:B?`md:col-span-7 space-y-3`:`hidden`,children:[S&&w.length>0?(0,E.jsx)(`div`,{className:`rounded-lg border border-border/60 bg-muted/20 p-3 max-h-64 overflow-y-auto`,children:(0,E.jsx)(G,{language:a,diff:w,path:O})}):null,b?(0,E.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-lg border border-amber-500/30 bg-amber-500/5 p-3 text-xs`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`font-semibold text-amber-600`,children:V(a,e.snoozed_until)}),(0,E.jsx)(`p`,{className:`text-muted-foreground text-[11px]`,children:i(a,`review.snoozed.detail`)})]}),(0,E.jsxs)(h,{size:`sm`,variant:`outline`,onClick:()=>n(e,`unsnooze`),disabled:!x,className:`h-7 text-xs`,children:[(0,E.jsx)(m,{className:`h-3 w-3 mr-1`}),` `,i(a,`review.unsnooze`)]})]}):null,k||j||N||I?(0,E.jsxs)(`div`,{className:`rounded-lg border border-border/40 bg-muted/10 p-3 space-y-2 text-xs`,children:[j||k?(0,E.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[j?(0,E.jsx)(f,{variant:`muted`,className:`text-[10px]`,children:j}):null,k?(0,E.jsx)(f,{variant:`muted`,className:`text-[10px]`,children:k}):null]}):null,N?(0,E.jsxs)(`p`,{className:`m-0 text-muted-foreground`,children:[(0,E.jsx)(`span`,{className:`font-semibold text-foreground`,children:i(a,`review.summary.tool`)}),` · `,N]}):null,I?(0,E.jsxs)(`p`,{className:`m-0 text-muted-foreground`,children:[(0,E.jsx)(`span`,{className:`font-semibold text-foreground`,children:i(a,`review.summary.proposedBy`)}),` · `,I]}):null]}):null,R?(0,E.jsxs)(`details`,{className:`rounded-lg border border-border/50 text-xs`,children:[(0,E.jsx)(`summary`,{className:`cursor-pointer select-none p-2.5 font-medium text-muted-foreground hover:text-foreground`,children:i(a,`review.technical.title`)}),(0,E.jsx)(`div`,{className:`p-3 pt-0`,children:(0,E.jsx)(u,{data:{workflow:g.workflow_id,trigger:g.trigger_id,run:_.last_run_id||g.run_id,...S?{path:_.path}:{},source_detail:F(a,g,e.source),snoozed_until:e.snoozed_until,created_at:e.created_at,updated_at:e.updated_at},limit:S?12:8})})]}):null]}),(0,E.jsxs)(`div`,{className:`rounded-xl border border-border/80 bg-muted/20 p-4 space-y-3 ${B?`md:col-span-5`:``}`,children:[(0,E.jsx)(`h4`,{className:`text-xs font-bold tracking-wide text-muted-foreground`,children:i(a,`review.decision.title`)}),x?(0,E.jsxs)(`div`,{className:`space-y-3`,children:[(0,E.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:i(a,C?`review.runNow.detail`:S?`review.proposal.detail`:e.source===`agent_followup`?`review.agent.detail`:`review.chat.detail`)}),S?(0,E.jsx)(p,{value:s,onChange:e=>c(e.target.value),placeholder:i(a,`review.proposal.rejectReason`),"aria-label":i(a,`review.proposal.rejectReason`),className:`text-xs h-8`}):null,(0,E.jsxs)(`div`,{className:`flex flex-col gap-2 pt-1`,role:`group`,"aria-label":i(a,`review.actions.aria`),children:[(0,E.jsxs)(`div`,{className:`flex gap-2`,children:[(0,E.jsx)(d,{label:i(a,S?`proposals.approve`:`review.approve`),action:()=>n(e,`approve`),invalidate:[]}),(0,E.jsx)(d,{label:i(a,S?`proposals.reject`:`review.dismiss`),action:()=>n(e,`dismiss`,!1,S?s:void 0),invalidate:[],variant:`destructive`})]}),(0,E.jsxs)(`div`,{className:`flex gap-2`,children:[C?(0,E.jsx)(d,{label:i(a,`review.runNow`),successLabel:y?i(a,`review.regenerated`):i(a,`review.executed`),action:()=>n(e,`run_now`,y),invalidate:[]}):null,b?null:(0,E.jsx)(d,{label:i(a,`review.snoozeDay`),action:()=>n(e,`snooze`),invalidate:[]})]})]})]}):(0,E.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:M(a,e.effective_status)}),t?.conflict&&S?(0,E.jsx)(D,{language:a,itemId:e.id}):t?(0,E.jsxs)(`p`,{className:`text-xs p-2 rounded border ${t.tone===`error`?`border-amber-500/30 bg-amber-500/10 text-warning`:`border-emerald-500/30 bg-emerald-500/10 text-success`}`,children:[t.message,` - `,i(a,`review.feedback.open`),t.detail&&t.detail!==t.message?(0,E.jsx)(`span`,{className:`mt-0.5 block text-[11px] opacity-75`,children:t.detail}):null]}):null]})]})]})}export{O as a,k as i,q as n,D as o,B as r,_ as s,G as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,_ as t,b as n,c as r,d as i,m as a,o,t as s,v as c,x as l}from"./utils-CogdofAA.js";import{r as u,t as d}from"./useQuery-xkAu9eDX.js";import{t as f}from"./workspace-BMvfx9_R.js";import{_ as p,a as m,c as h,d as g,g as _,h as v,i as y,l as b,m as x,n as S,p as C,r as w,s as T,t as E,u as D,v as O}from"./primitives-GSFXF2Pd.js";import{n as k,t as A}from"./input-y6ABdKWY.js";import{a as j,i as M,n as N,r as P,t as F}from"./permissionCopy-BEtc0Ihd.js";import{t as I}from"./shield-alert-BYA491cj.js";import{h as ee,i as L,t as te,u as R}from"./index-J6h01X78.js";import{t as z}from"./button-CKwtO1O0.js";var ne=t(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),B=t(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),V=e(l()),H=n(),re={low:`success`,medium:`warning`,high:`danger`};function U(e,t){return t===`ko`&&e.label_ko||e.label}function W(e,t){return t===`ko`&&e.summary_ko||e.summary}function G(e,t){return t===`ko`&&e.warning_ko||e.warning||``}function ie(){let e=u(),t=c(e=>e.language),[n,r]=V.useState(null),[o,s]=V.useState(!1),[l,m]=V.useState(``),h=d({queryKey:[`networkBoundary`],queryFn:i.networkBoundary}),g=f({mutationFn:e=>i.setNetworkBoundary(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`networkBoundary`]}),r(null),s(!1))}}),y=f({mutationFn:e=>i.setHybridPolicy(e),onSuccess:()=>e.invalidateQueries({queryKey:[`networkBoundary`]})}),b=f({mutationFn:e=>i.previewCloudContext(e)}),[S,T]=V.useState([]),E=f({mutationFn:e=>i.setNodeSensitivity(e.nodeId,e.localOnly),onSuccess:(e,t)=>{e.ok&&T(e=>t.localOnly?[...e,t.nodeId]:e.filter(e=>e!==t.nodeId))}}),D=h.data?.ok?h.data.data:void 0,k=D?.catalog??[],A=D?.mode??``,j=n??A,M=k.find(e=>e.id===j),N=!!M?.requires_ack&&j!==A,P=N&&!o,F=j===A,ee=D?.policy??{},L=b.data?.ok?b.data.data:void 0;return h.isLoading?(0,H.jsxs)(C,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(p,{children:a(t,`system.network.title`)})}),(0,H.jsx)(x,{children:(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(t,`ui.loading`)})})]}):!D||k.length===0?(0,H.jsxs)(C,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(p,{children:a(t,`system.network.title`)})}),(0,H.jsx)(x,{children:(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:h.data?.error})})]}):(0,H.jsxs)(C,{"data-testid":`network-boundary-panel`,children:[(0,H.jsxs)(_,{children:[(0,H.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,H.jsx)(ne,{className:`h-4 w-4`,"aria-hidden":`true`}),a(t,`system.network.title`)]}),(0,H.jsx)(v,{children:a(t,`system.network.hint`)})]}),(0,H.jsxs)(x,{className:`space-y-3`,children:[(0,H.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[a(t,`system.network.current`),`:`,` `,(0,H.jsx)(`strong`,{"data-testid":`network-boundary-active`,children:t===`ko`&&D.label_ko||D.label})]}),(0,H.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":a(t,`system.network.title`),children:k.map(e=>{let n=e.id===j;return(0,H.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"data-testid":`network-boundary-option-${e.id}`,onClick:()=>{r(e.id),s(!1),g.reset()},className:`w-full rounded-md border p-3 text-left transition ${n?`border-primary bg-accent`:`border-border hover:bg-accent/50`}`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`strong`,{className:`text-sm`,children:U(e,t)}),(0,H.jsx)(O,{variant:re[e.risk]||`warning`,children:a(t,`system.permission.risk.${e.risk}`)}),e.id===A?(0,H.jsx)(O,{variant:`muted`,children:a(t,`system.network.current`)}):null]}),(0,H.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:W(e,t)})]},e.id)})}),N?(0,H.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,H.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,H.jsx)(I,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,H.jsx)(`span`,{children:M?G(M,t):``})]}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,H.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-ack`,checked:o,onChange:e=>s(e.target.checked)}),a(t,`system.network.ack`)]})]}):null,(0,H.jsx)(z,{"data-testid":`network-boundary-apply`,disabled:F||P||g.isPending,onClick:()=>g.mutate({mode:j,ack:o}),children:a(t,`system.network.apply`)}),g.data&&!g.data.ok?(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:g.data.error}):null,g.data?.ok?(0,H.jsx)(O,{variant:`success`,"data-testid":`network-boundary-applied`,children:a(t,`ui.requestCompleted`)}):null,(0,H.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:a(t,`system.network.preview.title`)}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(t,`system.network.preview.hint`)}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(`input`,{type:`text`,"data-testid":`network-boundary-probe`,value:l,onChange:e=>m(e.target.value),placeholder:a(t,`system.network.preview.placeholder`),className:`min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1 text-xs`}),(0,H.jsx)(z,{variant:`outline`,"data-testid":`network-boundary-preview`,disabled:!l.trim()||b.isPending,onClick:()=>b.mutate(l.trim()),children:a(t,`system.network.preview.run`)})]}),L?(0,H.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-boundary-preview-result`,children:[L.allows_cloud?null:(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(t,`system.network.preview.localOnly`)}),L.would_block?(0,H.jsx)(O,{variant:`danger`,children:a(t,`system.network.preview.blocked`)}):null,L.titles.length===0?(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(t,`system.network.preview.empty`)}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[a(t,`system.network.preview.count`,{count:L.titles.length}),` · `,a(t,`system.network.preview.tokens`,{tokens:L.token_estimate})]}),(0,H.jsx)(`ul`,{className:`space-y-0.5`,children:L.titles.map((e,n)=>{let r=L.node_ids[n],i=r?S.includes(r):!1;return(0,H.jsxs)(`li`,{className:`flex items-start justify-between gap-2 text-xs`,children:[(0,H.jsxs)(`span`,{className:i?`line-through opacity-60`:void 0,children:[`· `,e]}),r?(0,H.jsx)(`button`,{type:`button`,"data-testid":`network-boundary-hold-${n}`,className:`shrink-0 underline underline-offset-2 opacity-80 hover:opacity-100`,disabled:E.isPending,onClick:()=>E.mutate({nodeId:r,localOnly:!i}),children:a(t,i?`system.network.preview.release`:`system.network.preview.hold`)}):null]},`${r||e}-${n}`)})})]})]}):null,b.data&&!b.data.ok?(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:b.data.error}):null]}),D.allows_cloud?(0,H.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,"data-testid":`network-boundary-policy`,children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:a(t,`system.network.policy.title`)}),(0,H.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,H.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-auto-commit`,checked:!!ee.auto_commit,disabled:y.isPending,onChange:e=>y.mutate({auto_commit:e.target.checked})}),(0,H.jsxs)(`span`,{children:[a(t,`system.network.policy.autoCommit`),(0,H.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:a(t,`system.network.policy.autoCommitHint`)})]})]}),(0,H.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,H.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-multimodal`,checked:!!ee.allow_multimodal,disabled:y.isPending,onChange:e=>y.mutate({allow_multimodal:e.target.checked})}),(0,H.jsxs)(`span`,{children:[a(t,`system.network.policy.multimodal`),(0,H.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:a(t,`system.network.policy.multimodalHint`)})]})]})]}):null,(0,H.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:a(t,`system.network.guards`)}),(0,H.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:a(t,`system.network.guards.detail`)}),(0,H.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:a(t,`system.network.preview.autoHeld`)})]})]})]})}var K={low:`success`,medium:`warning`,high:`danger`};function ae(){let e=u(),t=c(e=>e.language),[n,r]=V.useState(null),[o,s]=V.useState(!1),l=d({queryKey:[`permissionMode`],queryFn:i.permissionMode}),m=f({mutationFn:e=>i.setPermissionMode(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`permissionMode`]}),r(null),s(!1))}}),h=l.data?.ok?l.data.data:void 0,g=h?.catalog??[],y=h?.mode??``,b=n??y,S=g.find(e=>e.id===b),T=!!S?.requires_ack&&b!==y,E=T&&!o,D=b===y;return l.isLoading?(0,H.jsxs)(C,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(p,{children:a(t,`system.permission.title`)})}),(0,H.jsx)(x,{children:(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(t,`ui.loading`)})})]}):!h||g.length===0?(0,H.jsxs)(C,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(p,{children:a(t,`system.permission.title`)})}),(0,H.jsx)(x,{children:(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:l.data?.error})})]}):(0,H.jsxs)(C,{"data-testid":`permission-mode-panel`,children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(t,`system.permission.title`)}),(0,H.jsx)(v,{children:a(t,`system.permission.hint`)})]}),(0,H.jsxs)(x,{className:`space-y-3`,children:[(0,H.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[a(t,`system.permission.current`),`:`,` `,(0,H.jsx)(`strong`,{"data-testid":`permission-mode-active`,children:F(h,t)})]}),(0,H.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":a(t,`system.permission.title`),children:g.map(e=>{let n=e.id===b;return(0,H.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"data-testid":`permission-mode-option-${e.id}`,onClick:()=>{r(e.id),s(!1),m.reset()},className:`w-full rounded-md border p-3 text-left transition ${n?`border-primary bg-accent`:`border-border hover:bg-accent/50`}`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`strong`,{className:`text-sm`,children:N(e,t)}),(0,H.jsx)(O,{variant:K[e.risk]||`warning`,children:a(t,`system.permission.risk.${e.risk}`)}),e.id===y?(0,H.jsx)(O,{variant:`muted`,children:a(t,`system.permission.current`)}):null]}),(0,H.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:P(e,t)})]},e.id)})}),T?(0,H.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,H.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,H.jsx)(I,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,H.jsx)(`span`,{children:S?M(S,t):``})]}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,H.jsx)(`input`,{type:`checkbox`,"data-testid":`permission-mode-ack`,checked:o,onChange:e=>s(e.target.checked)}),a(t,`system.permission.ack`)]})]}):null,(0,H.jsx)(z,{"data-testid":`permission-mode-apply`,disabled:D||E||m.isPending,onClick:()=>m.mutate({mode:b,ack:o}),children:a(t,`system.permission.apply`)}),m.data&&!m.data.ok?(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:m.data.error}):null,m.data?.ok?(0,H.jsx)(O,{variant:`success`,"data-testid":`permission-mode-applied`,children:a(t,`ui.requestCompleted`)}):null,(0,H.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:a(t,`system.permission.guards`)}),(0,H.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:a(t,`system.permission.guards.detail`)})]})]})]})}var q=[{id:`identity`,labelKey:`system.group.identity`},{id:`data`,labelKey:`system.group.data`},{id:`system`,labelKey:`system.group.system`}],J=[{id:`account`,labelKey:`system.tab.account`,group:`identity`},{id:`workspaces`,labelKey:`system.tab.workspaces`,group:`identity`},{id:`snapshots`,labelKey:`system.tab.snapshots`,group:`data`},{id:`activity`,labelKey:`system.tab.activity`,group:`data`},{id:`settings`,labelKey:`system.tab.settings`,group:`system`},{id:`network`,labelKey:`system.tab.network`,group:`system`},{id:`admin`,labelKey:`system.tab.admin`,group:`system`}];function Y({initialTab:e}){let t=c(e=>e.mode),n=c(e=>e.language),[r,i]=V.useState(e||`account`);V.useEffect(()=>{J.some(t=>t.id===e)&&i(e)},[e]);let o=t===`basic`?J.filter(e=>e.id===`account`||e.id===`workspaces`||e.id===`snapshots`||e.id===`settings`):J,s=e=>{i(e),L(`/`+{account:`account`,workspaces:`workspace-admin`,snapshots:`snapshots`,activity:`activity`,network:`network`,settings:`settings`,admin:`system-admin`}[e])};return(0,H.jsxs)(`div`,{className:`product-page settings-page space-y-5 pb-8`,children:[(0,H.jsxs)(`header`,{className:`page-hero`,children:[(0,H.jsxs)(`div`,{className:`page-kicker`,children:[(0,H.jsx)(R,{className:`h-4 w-4`}),` `,a(n,`system.kicker`)]}),(0,H.jsx)(`h1`,{className:`page-title`,children:a(n,`system.title`)}),(0,H.jsx)(`p`,{className:`page-copy`,children:a(n,`system.body`)})]}),(0,H.jsx)(`div`,{className:`flex flex-wrap items-end gap-x-6 gap-y-3`,"data-testid":`system-tab-groups`,children:q.map(e=>{let t=o.filter(t=>t.group===e.id);if(!t.length)return null;let i=`system-group-${e.id}`;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`span`,{id:i,className:`px-1 text-xs font-medium text-muted-foreground`,children:a(n,e.labelKey)}),(0,H.jsx)(g,{ariaLabelledBy:i,tabs:t.map(e=>({id:e.id,label:a(n,e.labelKey)})),value:r,onChange:e=>s(e)})]},e.id)})}),r===`account`?(0,H.jsx)(X,{}):null,r===`workspaces`?(0,H.jsx)(oe,{}):null,r===`settings`?(0,H.jsx)(ue,{}):null,r===`snapshots`?(0,H.jsx)(se,{}):null,r===`activity`?(0,H.jsx)(ce,{}):null,r===`network`?(0,H.jsx)(le,{}):null,r===`admin`?(0,H.jsx)(ve,{}):null]})}function X(){let e=u(),t=c(e=>e.language),n=c(e=>e.setWorkspaceId),r=d({queryKey:[`profile`],queryFn:i.profile}),o=d({queryKey:[`sso`],queryFn:i.ssoConfig}),[s,l]=V.useState(``),[g,y]=V.useState(``),[b,w]=V.useState(``),[T,D]=V.useState(``),[O,k]=V.useState(``),j=e=>{e.ok&&(te(),n(null))},M=f({mutationFn:()=>i.login(s,g),onSuccess:j}),N=f({mutationFn:()=>i.register({email:s,password:g,name:b,nickname:T}),onSuccess:j}),P=f({mutationFn:()=>i.updateProfile({name:b,nickname:T}),onSuccess:()=>e.invalidateQueries({queryKey:[`profile`]})}),F=f({mutationFn:()=>i.changePassword(g,O)});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(t,`system.account.profile`),result:r.data,children:e=>(0,H.jsx)(m,{data:e})}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,H.jsx)(ee,{className:`h-4 w-4`}),` `,a(t,`system.account.title`)]}),(0,H.jsx)(v,{children:a(t,`system.account.detail`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsx)(A,{value:s,onChange:e=>l(e.target.value),placeholder:a(t,`system.account.email`)}),(0,H.jsx)(A,{type:`password`,value:g,onChange:e=>y(e.target.value),placeholder:a(t,`system.account.password`)}),(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,H.jsx)(A,{value:b,onChange:e=>w(e.target.value),placeholder:a(t,`system.account.name`)}),(0,H.jsx)(A,{value:T,onChange:e=>D(e.target.value),placeholder:a(t,`system.account.nickname`)})]}),(0,H.jsx)(A,{type:`password`,value:O,onChange:e=>k(e.target.value),placeholder:a(t,`system.account.newPassword`)}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{onClick:()=>M.mutate(),disabled:!s||!g||M.isPending,children:a(t,`system.account.login`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>N.mutate(),disabled:!s||!g||N.isPending,children:a(t,`system.account.register`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>P.mutate(),disabled:P.isPending,children:a(t,`system.account.save`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>F.mutate(),disabled:!g||!O||F.isPending,children:a(t,`system.account.changePassword`)}),(0,H.jsx)(E,{label:a(t,`system.account.logout`),action:()=>i.logout(),onSuccess:j})]}),[M.data,N.data,P.data,F.data].filter(Boolean).map((e,n)=>(0,H.jsx)(h,{result:e,successLabel:a(t,`system.account.requestDone`)},n))]})]}),(0,H.jsx)(S,{title:a(t,`system.account.signInOptions`),result:o.data,children:e=>(0,H.jsx)(Z,{data:e})})]})}function Z({data:e}){let t=c(e=>e.mode),n=c(e=>e.language),r=!!e.enabled||s(e.providers).length>0;return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)($,{title:a(n,r?`system.account.signIn.sso`:`system.account.signIn.localOnly`),status:a(n,r?`system.value.enabled`:`system.storage.local.badge`),detail:a(n,r?`system.account.signIn.ssoDetail`:`system.account.signIn.localOnlyDetail`)}),t===`basic`?null:(0,H.jsx)(D,{value:e})]})}function oe(){let e=u(),t=c(e=>e.language),{setWorkspaceId:n}=c(),r=d({queryKey:[`workspaceRegistry`],queryFn:i.workspaceRegistry}),o=d({queryKey:[`invitations`],queryFn:i.invitations}),[l,m]=V.useState(``),[h,g]=V.useState(``),[b,w]=V.useState(``),T=f({mutationFn:()=>i.createOrg(l),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),D=f({mutationFn:()=>i.createInvitation({email:h||null,role:`member`,expires_hours:168}),onSuccess:()=>e.invalidateQueries({queryKey:[`invitations`]})}),O=f({mutationFn:()=>i.acceptInvitation(b),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),k=s(r.data?.data?.workspaces);return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(t,`system.workspace.yours`),result:r.data,children:()=>(0,H.jsx)(`div`,{className:`flex flex-col gap-2`,children:k.map(e=>{let r=String(e.workspace_id||e.id);return(0,H.jsx)(`div`,{className:`rounded-md border border-border p-3`,children:(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-medium`,children:String(e.name||r)}),(0,H.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[String(e.type||``),` · `,String(e.your_role||e.role||``)]})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{variant:`outline`,onClick:()=>n(r),children:a(t,`system.workspace.use`)}),(0,H.jsx)(E,{label:a(t,`system.workspace.activate`),action:()=>i.activateWorkspace(r),invalidate:[`workspaceRegistry`]}),(0,H.jsx)(E,{label:a(t,`system.workspace.archive`),action:()=>i.archiveWorkspace(r),invalidate:[`workspaceRegistry`],variant:`destructive`})]})]})},r)})})}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,H.jsx)(B,{className:`h-4 w-4`}),` `,a(t,`system.workspace.organizations`)]}),(0,H.jsx)(v,{children:a(t,`system.workspace.organizationsHint`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsx)(A,{value:l,onChange:e=>m(e.target.value),placeholder:a(t,`system.workspace.orgPlaceholder`)}),(0,H.jsx)(z,{disabled:!l.trim()||T.isPending,onClick:()=>T.mutate(),children:a(t,`system.workspace.createOrg`)}),(0,H.jsx)(A,{value:h,onChange:e=>g(e.target.value),placeholder:a(t,`system.workspace.inviteeEmail`)}),(0,H.jsx)(z,{variant:`outline`,disabled:D.isPending,onClick:()=>D.mutate(),children:a(t,`system.workspace.createInvite`)}),(0,H.jsx)(A,{value:b,onChange:e=>w(e.target.value),placeholder:a(t,`system.workspace.inviteToken`)}),(0,H.jsx)(z,{variant:`outline`,disabled:!b.trim()||O.isPending,onClick:()=>O.mutate(),children:a(t,`system.workspace.acceptInvite`)}),(0,H.jsx)(S,{title:a(t,`system.workspace.invitations`),result:o.data,children:e=>(0,H.jsx)(y,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function se(){let e=c(e=>e.language),t=d({queryKey:[`snapshots`],queryFn:i.snapshots}),n=d({queryKey:[`timeMachine`],queryFn:i.timeMachine}),[r,o]=V.useState(``),[l,u]=V.useState(``),[m,g]=V.useState(``),b=f({mutationFn:()=>i.createSnapshot(r||a(e,`system.snapshots.defaultName`))}),w=f({mutationFn:()=>i.compareSnapshots(l,m)}),T=s(t.data?.data?.snapshots);return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(e,`system.snapshots.title`),result:t.data,children:()=>(0,H.jsx)(`div`,{className:`space-y-2`,children:T.map(t=>{let n=String(t.id||t.snapshot_id);return(0,H.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,H.jsx)(`div`,{className:`font-medium`,children:String(t.name||n)}),(0,H.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,H.jsx)(E,{label:a(e,`system.snapshots.export`),action:()=>i.exportSnapshot(n)}),(0,H.jsx)(E,{label:a(e,`system.snapshots.mergeRestore`),action:()=>i.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(e,`system.snapshots.actions`)}),(0,H.jsx)(v,{children:a(e,`system.snapshots.actionsHint`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsx)(A,{value:r,onChange:e=>o(e.target.value),placeholder:a(e,`system.snapshots.namePlaceholder`)}),(0,H.jsx)(z,{onClick:()=>b.mutate(),disabled:b.isPending,children:a(e,`system.snapshots.create`)}),(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,H.jsx)(A,{value:l,onChange:e=>u(e.target.value),placeholder:a(e,`system.snapshots.beforeId`)}),(0,H.jsx)(A,{value:m,onChange:e=>g(e.target.value),placeholder:a(e,`system.snapshots.afterId`)})]}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>w.mutate(),disabled:!l||!m||w.isPending,children:a(e,`system.snapshots.compare`)}),w.data?(0,H.jsx)(h,{result:w.data,successLabel:a(e,`system.snapshots.compareDone`)}):null]})]}),(0,H.jsx)(S,{title:a(e,`system.snapshots.timeline`),result:n.data,children:e=>(0,H.jsx)(y,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function ce(){let e=c(e=>e.language),t=d({queryKey:[`realtimeFeed`],queryFn:i.realtimeFeed}),n=d({queryKey:[`presence`],queryFn:i.presence});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(e,`system.activity.feed`),result:t.data,children:e=>(0,H.jsx)(y,{items:e.events,titleKey:`event_type`,metaKey:`area`,limit:14})}),(0,H.jsx)(S,{title:a(e,`system.activity.presence`),result:n.data,children:e=>(0,H.jsx)(de,{data:e})})]})}function le(){let e=u(),t=c(e=>e.language),n=d({queryKey:[`networkIdentity`],queryFn:i.networkIdentity}),r=d({queryKey:[`networkPeers`],queryFn:i.networkPeers}),[o,l]=V.useState(``),[m,g]=V.useState(``),[y,b]=V.useState(``),w=f({mutationFn:()=>i.pairPeer({name:o,base_url:m,public_key:y}),onSuccess:()=>e.invalidateQueries({queryKey:[`networkPeers`]})});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(t,`system.network.identity`),result:n.data,children:e=>(0,H.jsx)(fe,{data:e})}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,H.jsx)(j,{className:`h-4 w-4`}),` `,a(t,`system.network.pair`)]}),(0,H.jsx)(v,{children:a(t,`system.network.pairHint`)})]}),(0,H.jsxs)(x,{className:`grid gap-3`,children:[(0,H.jsx)(A,{value:o,onChange:e=>l(e.target.value),placeholder:a(t,`system.network.deviceName`)}),(0,H.jsx)(A,{value:m,onChange:e=>g(e.target.value),placeholder:a(t,`system.network.address`)}),(0,H.jsx)(A,{value:y,onChange:e=>b(e.target.value),placeholder:a(t,`system.network.publicKey`)}),(0,H.jsx)(z,{disabled:!o||!m||!y||w.isPending,onClick:()=>w.mutate(),children:a(t,`system.network.pair`)}),w.data?(0,H.jsx)(h,{result:w.data,successLabel:a(t,`system.network.pairDone`)}):null]})]}),(0,H.jsx)(S,{title:a(t,`system.network.peers`),result:r.data,className:`xl:col-span-2`,children:e=>(0,H.jsx)(`div`,{className:`grid gap-2`,children:s(e.peers).map(e=>{let n=String(e.peer_id||e.id);return(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-medium`,children:String(e.name||n)}),(0,H.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.base_url||``)})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(E,{label:a(t,`system.network.pushWorkspace`),action:()=>i.pushPeer(n,c.getState().workspaceId)}),(0,H.jsx)(E,{label:a(t,`system.network.unpair`),action:()=>i.unpairPeer(n),invalidate:[`networkPeers`],variant:`destructive`})]})]},n)})})})]})}function ue(){let e=u(),{theme:t,setTheme:n,mode:r,setMode:o}=c(),s=c(e=>e.language),l=d({queryKey:[`health`],queryFn:i.health}),m=d({queryKey:[`sysinfo`],queryFn:i.sysinfo}),g=d({queryKey:[`computerMemory`],queryFn:i.computerMemory}),y=d({queryKey:[`brainStorage`],queryFn:i.brainStorage}),b=d({queryKey:[`backupHealth`],queryFn:i.backupHealth}),[w,T]=V.useState(``),[O,j]=V.useState(`lattice_brain`),[M,N]=V.useState(!1),[P,F]=V.useState(``),[I,ee]=V.useState(``),[L,te]=V.useState(``),[R,ne]=V.useState(!1),[B,re]=V.useState(!1),U=f({mutationFn:e=>i.dockerPostgres({consent:e,dry_run:!e,port:5432})}),W=f({mutationFn:()=>i.migratePostgres({dsn:w,schema_name:O||`lattice_brain`,dry_run:!0})}),G=f({mutationFn:()=>i.brainArchive({path:P.trim()||null,passphrase:L}),onSuccess:()=>e.invalidateQueries({queryKey:[`backupHealth`]})}),K=f({mutationFn:()=>i.brainArchiveInspect({path:I,passphrase:L||null})}),q=f({mutationFn:()=>i.brainArchiveVerify({path:I,passphrase:L})}),J=f({mutationFn:()=>i.brainArchiveRestore({path:I,passphrase:L,dry_run:!0,confirm:!1})}),Y=f({mutationFn:()=>i.brainArchiveRestore({path:I,passphrase:L,dry_run:!1,confirm:R}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}}),X=f({mutationFn:()=>i.brainArchiveImport({path:I,passphrase:L,dry_run:!0,confirm:!1})}),Z=f({mutationFn:()=>i.brainArchiveImport({path:I,passphrase:L,dry_run:!1,confirm:B}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4 max-w-[54rem]`,children:[(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(s,`system.panel.appearance`)}),(0,H.jsx)(v,{children:a(s,`system.panel.appearance.hint`)})]}),(0,H.jsxs)(x,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{variant:t===`dark`?`default`:`outline`,onClick:()=>n(`dark`),children:a(s,`system.theme.dark`)}),(0,H.jsx)(z,{variant:t===`light`?`default`:`outline`,onClick:()=>n(`light`),children:a(s,`system.theme.light`)})]})]}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(s,`system.panel.detailLevel`)}),(0,H.jsx)(v,{children:a(s,`system.panel.detailLevel.hint`)})]}),(0,H.jsx)(x,{className:`flex flex-wrap gap-2`,children:[`basic`,`advanced`,`admin`].map(e=>(0,H.jsx)(z,{variant:r===e?`default`:`outline`,onClick:()=>o(e),children:a(s,`shell.mode.${e}`)},e))})]}),(0,H.jsx)(ae,{}),(0,H.jsx)(ie,{}),(0,H.jsx)(S,{title:r===`basic`?a(s,`system.panel.brainStatus`):a(s,`system.panel.serverHealth`),result:l.data,children:e=>(0,H.jsx)(pe,{data:e})}),(0,H.jsx)(S,{title:r===`basic`?a(s,`system.panel.readiness`):a(s,`system.panel.hostTelemetry`),result:m.data,children:e=>{if(r===`basic`){let t=String(e?.readiness||`roomy`),n=t===`tight`||t===`low`||t===`roomy`?`system.readiness.${t}`:`system.readiness.plenty`;return(0,H.jsxs)(`div`,{className:`flex items-center gap-2.5 p-3 rounded-lg border border-border/60 bg-muted/20 text-sm text-foreground`,children:[(0,H.jsx)(k,{className:`h-4 w-4 ${t===`low`?`text-rose-500`:t===`tight`?`text-amber-500`:`text-emerald-500`} flex-shrink-0`,"aria-hidden":`true`}),(0,H.jsx)(`span`,{children:a(s,n)})]})}return(0,H.jsx)(D,{value:e})}}),(0,H.jsx)(S,{title:r===`basic`?a(s,`system.storage.title`):a(s,`system.panel.brainStorage`),result:y.data,children:e=>(0,H.jsx)(me,{data:e,mode:r,language:s})}),r===`basic`?null:(0,H.jsx)(S,{title:a(s,`system.backup.health`),result:b.data,children:e=>(0,H.jsx)(he,{data:e})}),r===`basic`?null:(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(s,`system.archive.title`)}),(0,H.jsx)(v,{children:a(s,`system.archive.detail`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,H.jsx)(A,{value:P,onChange:e=>F(e.target.value),placeholder:a(s,`system.archive.exportPath`)}),(0,H.jsx)(A,{value:I,onChange:e=>ee(e.target.value),placeholder:a(s,`system.archive.restorePath`)})]}),(0,H.jsx)(A,{type:`password`,value:L,onChange:e=>te(e.target.value),placeholder:a(s,`system.archive.passphrase`)}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{onClick:()=>G.mutate(),disabled:!L||G.isPending,children:a(s,`system.archive.export`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>K.mutate(),disabled:!I||K.isPending,children:a(s,`system.archive.inspect`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>q.mutate(),disabled:!I||!L||q.isPending,children:a(s,`system.archive.verify`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>J.mutate(),disabled:!I||!L||J.isPending,children:a(s,`system.archive.restoreDryRun`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>X.mutate(),disabled:!I||!L||X.isPending,children:a(s,`system.archive.importDryRun`)}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:R,onChange:e=>ne(e.target.checked)}),a(s,`system.archive.confirmRestore`)]}),(0,H.jsx)(z,{variant:`destructive`,onClick:()=>Y.mutate(),disabled:!I||!L||!R||Y.isPending,children:a(s,`system.archive.restore`)}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:B,onChange:e=>re(e.target.checked)}),a(s,`system.archive.confirmImport`)]}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>Z.mutate(),disabled:!I||!L||!B||Z.isPending,children:a(s,`system.archive.import`)})]}),[G.data,K.data,q.data,J.data,Y.data,X.data,Z.data].filter(Boolean).map((e,t)=>(0,H.jsx)(h,{result:e,successLabel:a(s,`system.archive.requestDone`)},t))]})]}),r===`basic`?null:(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(s,`system.scale.title`)}),(0,H.jsx)(v,{children:a(s,`system.scale.detail`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,H.jsx)(A,{value:w,onChange:e=>T(e.target.value),placeholder:a(s,`system.scale.dsn`)}),(0,H.jsx)(A,{value:O,onChange:e=>j(e.target.value),placeholder:a(s,`system.scale.schema`)})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{variant:`outline`,onClick:()=>U.mutate(!1),disabled:U.isPending,children:a(s,`system.scale.dockerPlan`)}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>N(e.target.checked)}),a(s,`system.scale.dockerConsent`)]}),(0,H.jsx)(z,{onClick:()=>U.mutate(!0),disabled:!M||U.isPending,children:a(s,`system.scale.dockerStart`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>W.mutate(),disabled:!w||W.isPending,children:a(s,`system.scale.migrationPlan`)})]}),U.data?(0,H.jsx)(h,{result:U.data,successLabel:a(s,`system.scale.dockerDone`)}):null,W.data?(0,H.jsx)(h,{result:W.data,successLabel:a(s,`system.scale.migrationDone`)}):null]})]}),r===`basic`?null:(0,H.jsx)(S,{title:a(s,`system.computerMemory.title`),result:g.data,children:e=>(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(D,{value:e}),(0,H.jsxs)(`div`,{className:`flex gap-2`,children:[(0,H.jsx)(E,{label:a(s,`system.computerMemory.enable`),action:()=>i.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,H.jsx)(E,{label:a(s,`system.computerMemory.disable`),action:()=>i.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function Q(e,t,n=a(e,`system.value.notReported`)){return t==null||t===``?n:typeof t==`boolean`?a(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function de({data:e}){let t=c(e=>e.language),n=s(e.presence||e.clients||e);return n.length?(0,H.jsx)(y,{items:n,titleKey:`user`,metaKey:`workspace_id`}):(0,H.jsx)(w,{title:a(t,`system.presence.empty`),detail:a(t,`system.presence.emptyDetail`)})}function fe({data:e}){let t=c(e=>e.mode),n=c(e=>e.language),i=Q(n,e.public_key,``);return t===`basic`?(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)($,{title:a(n,`system.device.thisMac`),status:a(n,`system.value.trusted`),detail:a(n,`system.device.thisMacDetail`)}),(0,H.jsx)(O,{variant:`muted`,children:Q(n,e.algorithm,a(n,`system.value.localIdentity`))})]}):(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,H.jsx)(O,{variant:`success`,children:a(n,`system.value.localDevice`)}),(0,H.jsx)(O,{variant:`muted`,children:Q(n,e.algorithm,a(n,`system.value.identityKey`))})]}),(0,H.jsx)(m,{data:{device_id:e.device_id||e.id||a(n,`system.value.notReported`),fingerprint:e.fingerprint||a(n,`system.value.notReported`),public_key:i?r(i.replace(/\s+/g,` `),72):a(n,`system.value.notReported`)}})]})}function pe({data:e}){let t=c(e=>e.mode),n=c(e=>e.language);return t===`basic`?(0,H.jsx)($,{title:a(n,`system.health.title`),status:a(n,`system.health.ok`),detail:a(n,`system.health.detail`)}):(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(b,{stats:[{label:a(n,`system.health.status`),value:e.status||e.ok||a(n,`system.value.reported`)},{label:a(n,`system.health.version`),value:e.version||a(n,`system.value.notReported`)},{label:a(n,`system.health.mode`),value:e.mode||e.environment||a(n,`system.value.local`)},{label:a(n,`system.health.port`),value:e.port||e.backend_port||a(n,`system.value.configured`)}]}),(0,H.jsx)(D,{value:e})]})}function me({data:e,mode:t=`advanced`,language:n=`en`}){let r=o(e.active)?e.active:e,i=o(e.postgres)?e.postgres:{},s=o(e.backup_health)?e.backup_health:{},c=r.vector_search||r.vector||e.vector_search||e.sqlite_vec,l=!!(i.available||i.connected||i.enabled),u=!!c&&String(c).toLowerCase()!==`not reported`;return t===`basic`?(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)($,{title:a(n,`system.storage.local.title`),status:a(n,`system.storage.local.badge`),detail:a(n,`system.storage.local.detail`)}),(0,H.jsx)($,{title:a(n,`system.storage.search.title`),status:u?a(n,`system.storage.search.on`):a(n,`system.storage.search.pending`),detail:u?a(n,`system.storage.search.detailOn`):a(n,`system.storage.search.detailPending`)})]}):(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsx)(b,{stats:[{label:a(n,`system.storage.activeEngine`),value:r.engine||e.engine||a(n,`system.storage.sqlite`)},{label:a(n,`system.storage.sqliteDefault`),value:r.engine===`postgres`?a(n,`system.value.scaleMode`):a(n,`system.value.enabled`)},{label:a(n,`system.storage.vector`),value:c||a(n,`system.value.notReported`)},{label:a(n,`system.storage.postgres`),value:l?a(n,`system.value.available`):a(n,`system.value.optional`)}]}),(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,H.jsx)($,{title:a(n,`system.storage.sqlite`),status:r.available===!1?a(n,`system.value.unavailable`):a(n,`system.value.default`),detail:Q(n,r.reason||r.path||e.path,a(n,`system.storage.sqliteDetail`))}),(0,H.jsx)($,{title:a(n,`system.storage.vector`),status:Q(n,c,a(n,`system.value.reported`)),detail:Q(n,r.vector_reason||r.sqlite_vec_reason||e.vector_reason,a(n,`system.storage.vectorDetail`))}),(0,H.jsx)($,{title:a(n,`system.storage.postgres`),status:l?a(n,`system.value.available`):a(n,`system.value.notEnabled`),detail:Q(n,i.reason||i.dsn||i.status,a(n,`system.storage.postgresDetail`))})]}),Object.keys(s).length?(0,H.jsx)(D,{value:{backup_health:s}}):null]})}function he({data:e}){let t=c(e=>e.language);return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(b,{stats:[{label:a(t,`system.backup.available`),value:e.available===!1?a(t,`system.value.no`):a(t,`system.value.yes`)},{label:a(t,`system.backup.backups`),value:e.count||e.backups||0},{label:a(t,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:a(t,`system.backup.zip`),value:e.zip_backups||0}]}),(0,H.jsx)(m,{data:{directory:e.directory||a(t,`system.value.notReported`),latest:e.latest||a(t,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||a(t,`system.value.notReported`),failure:e.error||e.reason||a(t,`system.value.noneReported`)}})]})}function $({title:e,status:t,detail:n}){let r=/unavailable|failed|denied|disabled|not enabled|사용 불가|실패|거부|비활성|활성화되지 않음/i.test(t)?`warning`:`success`;return(0,H.jsxs)(`div`,{className:`rounded-md border border-border bg-background p-3`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,H.jsx)(`div`,{className:`font-medium`,children:e}),(0,H.jsx)(O,{variant:r,children:t})]}),(0,H.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:n})]})}function ge({data:e}){let t=c(e=>e.language),n=o(e.startup)?e.startup:{},r=o(e.privacy)?e.privacy:{},i=o(e.storage)?e.storage:{},s=o(e.backup)?e.backup:{},l=o(e.device_identity)?e.device_identity:{},u=o(e.permissions)?e.permissions:{};return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(b,{stats:[{label:a(t,`system.hardening.version`),value:e.version||a(t,`system.value.reported`)},{label:a(t,`system.hardening.localOnly`),value:r.local_only_default??n.local_only_default??a(t,`system.value.reported`)},{label:a(t,`system.hardening.storage`),value:o(i.active)?i.active.engine:a(t,`system.value.reported`)},{label:a(t,`system.hardening.backups`),value:s.count||s.available||a(t,`system.value.reported`)}]}),(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row flex-wrap gap-3`,children:[(0,H.jsx)($,{title:a(t,`system.hardening.startup`),status:a(t,n.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:a(t,`system.hardening.startupDetail`)}),(0,H.jsx)($,{title:a(t,`system.hardening.integrations`),status:a(t,r.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:a(t,`system.hardening.integrationsDetail`)}),(0,H.jsx)($,{title:a(t,`system.hardening.identity`),status:Q(t,l.algorithm||l.fingerprint,a(t,`system.value.reported`)),detail:Q(t,l.storage,a(t,`system.hardening.identityStorage`))}),(0,H.jsx)($,{title:a(t,`system.hardening.permissions`),status:a(t,u.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:a(t,`system.hardening.permissionsDetail`)})]})]})}function _e({data:e}){let t=c(e=>e.language),n=o(e.cards)?e.cards:{},r=o(e.severity_counts)?e.severity_counts:{};return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(b,{stats:[{label:a(t,`system.security.eventsToday`),value:n.events_today||0},{label:a(t,`system.security.highRisk`),value:n.high_risk_events||r.high||0},{label:a(t,`system.security.review`),value:n.review_required||0},{label:a(t,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,H.jsx)(D,{value:{severity_counts:r,sensitive_fields:e.field_counts||{}}})]})}function ve(){let e=c(e=>e.mode),t=c(e=>e.language),n=d({queryKey:[`adminSummary`],queryFn:i.adminSummary}),r=d({queryKey:[`adminUsers`],queryFn:i.adminUsers}),o=d({queryKey:[`adminAudit`],queryFn:()=>i.adminAudit()}),s=d({queryKey:[`adminRoles`],queryFn:i.adminRoles}),l=d({queryKey:[`adminPolicies`],queryFn:i.adminPolicies}),u=d({queryKey:[`adminProductHardening`],queryFn:i.adminProductHardening}),f=d({queryKey:[`adminSecurity`],queryFn:i.adminSecurity}),p=d({queryKey:[`vpcStatus`],queryFn:i.vpcStatus});return e===`admin`?(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(t,`system.admin.summary`),result:n.data,children:e=>(0,H.jsx)(m,{data:e})}),(0,H.jsx)(S,{title:a(t,`system.admin.users`),result:r.data,children:e=>(0,H.jsx)(y,{items:e,titleKey:`email`,metaKey:`role`})}),(0,H.jsx)(S,{title:a(t,`system.admin.audit`),result:o.data,children:e=>(0,H.jsx)(y,{items:e.recent_events||e,titleKey:`act`,metaKey:`sev`})}),(0,H.jsx)(S,{title:a(t,`system.admin.roles`),result:s.data,children:e=>(0,H.jsx)(y,{items:e.roles||e,titleKey:`role`,metaKey:`members`})}),(0,H.jsx)(S,{title:a(t,`system.admin.policies`),result:l.data,children:e=>(0,H.jsx)(y,{items:e.policies||e,titleKey:`label`,metaKey:`enforced`})}),(0,H.jsx)(S,{title:a(t,`system.admin.hardening`),result:u.data,children:e=>(0,H.jsx)(ge,{data:e})}),(0,H.jsx)(S,{title:a(t,`system.admin.security`),result:f.data,children:e=>(0,H.jsx)(_e,{data:e})}),(0,H.jsx)(S,{title:a(t,`system.admin.vpc`),result:p.data,children:e=>(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(O,{variant:`muted`,children:a(t,`system.admin.communityUnavailable`)}),(0,H.jsx)(D,{value:e})]})})]}):(0,H.jsx)(T,{title:a(t,`system.admin.controls`),detail:a(t,`system.admin.controlsDetail`),target:`admin`})}export{Y as SystemPage};
|
|
1
|
+
import{C as e,_ as t,b as n,c as r,d as i,m as a,o,t as s,v as c,x as l}from"./utils-BMwWg78e.js";import{r as u,t as d}from"./useQuery-C-AicB-3.js";import{t as f}from"./workspace-Y93tls8P.js";import{_ as p,a as m,c as h,d as g,g as _,h as v,i as y,l as b,m as x,n as S,p as C,r as w,s as T,t as E,u as D,v as O}from"./primitives-CQV9Q2YM.js";import{n as k,t as A}from"./input-DcMETmZ7.js";import{a as j,i as M,n as N,r as P,t as F}from"./permissionCopy-BVf13_25.js";import{t as I}from"./shield-alert-BDrvilyK.js";import{h as ee,i as L,t as te,u as R}from"./index-CxOcwsHV.js";import{t as z}from"./button-CmTknyAP.js";var ne=t(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),B=t(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),V=e(l()),H=n(),re={low:`success`,medium:`warning`,high:`danger`};function U(e,t){return t===`ko`&&e.label_ko||e.label}function W(e,t){return t===`ko`&&e.summary_ko||e.summary}function G(e,t){return t===`ko`&&e.warning_ko||e.warning||``}function ie(){let e=u(),t=c(e=>e.language),[n,r]=V.useState(null),[o,s]=V.useState(!1),[l,m]=V.useState(``),h=d({queryKey:[`networkBoundary`],queryFn:i.networkBoundary}),g=f({mutationFn:e=>i.setNetworkBoundary(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`networkBoundary`]}),r(null),s(!1))}}),y=f({mutationFn:e=>i.setHybridPolicy(e),onSuccess:()=>e.invalidateQueries({queryKey:[`networkBoundary`]})}),b=f({mutationFn:e=>i.previewCloudContext(e)}),[S,T]=V.useState([]),E=f({mutationFn:e=>i.setNodeSensitivity(e.nodeId,e.localOnly),onSuccess:(e,t)=>{e.ok&&T(e=>t.localOnly?[...e,t.nodeId]:e.filter(e=>e!==t.nodeId))}}),D=h.data?.ok?h.data.data:void 0,k=D?.catalog??[],A=D?.mode??``,j=n??A,M=k.find(e=>e.id===j),N=!!M?.requires_ack&&j!==A,P=N&&!o,F=j===A,ee=D?.policy??{},L=b.data?.ok?b.data.data:void 0;return h.isLoading?(0,H.jsxs)(C,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(p,{children:a(t,`system.network.title`)})}),(0,H.jsx)(x,{children:(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(t,`ui.loading`)})})]}):!D||k.length===0?(0,H.jsxs)(C,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(p,{children:a(t,`system.network.title`)})}),(0,H.jsx)(x,{children:(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:h.data?.error})})]}):(0,H.jsxs)(C,{"data-testid":`network-boundary-panel`,children:[(0,H.jsxs)(_,{children:[(0,H.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,H.jsx)(ne,{className:`h-4 w-4`,"aria-hidden":`true`}),a(t,`system.network.title`)]}),(0,H.jsx)(v,{children:a(t,`system.network.hint`)})]}),(0,H.jsxs)(x,{className:`space-y-3`,children:[(0,H.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[a(t,`system.network.current`),`:`,` `,(0,H.jsx)(`strong`,{"data-testid":`network-boundary-active`,children:t===`ko`&&D.label_ko||D.label})]}),(0,H.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":a(t,`system.network.title`),children:k.map(e=>{let n=e.id===j;return(0,H.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"data-testid":`network-boundary-option-${e.id}`,onClick:()=>{r(e.id),s(!1),g.reset()},className:`w-full rounded-md border p-3 text-left transition ${n?`border-primary bg-accent`:`border-border hover:bg-accent/50`}`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`strong`,{className:`text-sm`,children:U(e,t)}),(0,H.jsx)(O,{variant:re[e.risk]||`warning`,children:a(t,`system.permission.risk.${e.risk}`)}),e.id===A?(0,H.jsx)(O,{variant:`muted`,children:a(t,`system.network.current`)}):null]}),(0,H.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:W(e,t)})]},e.id)})}),N?(0,H.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,H.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,H.jsx)(I,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,H.jsx)(`span`,{children:M?G(M,t):``})]}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,H.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-ack`,checked:o,onChange:e=>s(e.target.checked)}),a(t,`system.network.ack`)]})]}):null,(0,H.jsx)(z,{"data-testid":`network-boundary-apply`,disabled:F||P||g.isPending,onClick:()=>g.mutate({mode:j,ack:o}),children:a(t,`system.network.apply`)}),g.data&&!g.data.ok?(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:g.data.error}):null,g.data?.ok?(0,H.jsx)(O,{variant:`success`,"data-testid":`network-boundary-applied`,children:a(t,`ui.requestCompleted`)}):null,(0,H.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:a(t,`system.network.preview.title`)}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(t,`system.network.preview.hint`)}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(`input`,{type:`text`,"data-testid":`network-boundary-probe`,value:l,onChange:e=>m(e.target.value),placeholder:a(t,`system.network.preview.placeholder`),className:`min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1 text-xs`}),(0,H.jsx)(z,{variant:`outline`,"data-testid":`network-boundary-preview`,disabled:!l.trim()||b.isPending,onClick:()=>b.mutate(l.trim()),children:a(t,`system.network.preview.run`)})]}),L?(0,H.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-boundary-preview-result`,children:[L.allows_cloud?null:(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(t,`system.network.preview.localOnly`)}),L.would_block?(0,H.jsx)(O,{variant:`danger`,children:a(t,`system.network.preview.blocked`)}):null,L.titles.length===0?(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(t,`system.network.preview.empty`)}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[a(t,`system.network.preview.count`,{count:L.titles.length}),` · `,a(t,`system.network.preview.tokens`,{tokens:L.token_estimate})]}),(0,H.jsx)(`ul`,{className:`space-y-0.5`,children:L.titles.map((e,n)=>{let r=L.node_ids[n],i=r?S.includes(r):!1;return(0,H.jsxs)(`li`,{className:`flex items-start justify-between gap-2 text-xs`,children:[(0,H.jsxs)(`span`,{className:i?`line-through opacity-60`:void 0,children:[`· `,e]}),r?(0,H.jsx)(`button`,{type:`button`,"data-testid":`network-boundary-hold-${n}`,className:`shrink-0 underline underline-offset-2 opacity-80 hover:opacity-100`,disabled:E.isPending,onClick:()=>E.mutate({nodeId:r,localOnly:!i}),children:a(t,i?`system.network.preview.release`:`system.network.preview.hold`)}):null]},`${r||e}-${n}`)})})]})]}):null,b.data&&!b.data.ok?(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:b.data.error}):null]}),D.allows_cloud?(0,H.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,"data-testid":`network-boundary-policy`,children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:a(t,`system.network.policy.title`)}),(0,H.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,H.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-auto-commit`,checked:!!ee.auto_commit,disabled:y.isPending,onChange:e=>y.mutate({auto_commit:e.target.checked})}),(0,H.jsxs)(`span`,{children:[a(t,`system.network.policy.autoCommit`),(0,H.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:a(t,`system.network.policy.autoCommitHint`)})]})]}),(0,H.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,H.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-multimodal`,checked:!!ee.allow_multimodal,disabled:y.isPending,onChange:e=>y.mutate({allow_multimodal:e.target.checked})}),(0,H.jsxs)(`span`,{children:[a(t,`system.network.policy.multimodal`),(0,H.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:a(t,`system.network.policy.multimodalHint`)})]})]})]}):null,(0,H.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:a(t,`system.network.guards`)}),(0,H.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:a(t,`system.network.guards.detail`)}),(0,H.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:a(t,`system.network.preview.autoHeld`)})]})]})]})}var K={low:`success`,medium:`warning`,high:`danger`};function ae(){let e=u(),t=c(e=>e.language),[n,r]=V.useState(null),[o,s]=V.useState(!1),l=d({queryKey:[`permissionMode`],queryFn:i.permissionMode}),m=f({mutationFn:e=>i.setPermissionMode(e.mode,e.ack),onSuccess:t=>{t.ok&&(e.invalidateQueries({queryKey:[`permissionMode`]}),r(null),s(!1))}}),h=l.data?.ok?l.data.data:void 0,g=h?.catalog??[],y=h?.mode??``,b=n??y,S=g.find(e=>e.id===b),T=!!S?.requires_ack&&b!==y,E=T&&!o,D=b===y;return l.isLoading?(0,H.jsxs)(C,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(p,{children:a(t,`system.permission.title`)})}),(0,H.jsx)(x,{children:(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(t,`ui.loading`)})})]}):!h||g.length===0?(0,H.jsxs)(C,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(p,{children:a(t,`system.permission.title`)})}),(0,H.jsx)(x,{children:(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:l.data?.error})})]}):(0,H.jsxs)(C,{"data-testid":`permission-mode-panel`,children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(t,`system.permission.title`)}),(0,H.jsx)(v,{children:a(t,`system.permission.hint`)})]}),(0,H.jsxs)(x,{className:`space-y-3`,children:[(0,H.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[a(t,`system.permission.current`),`:`,` `,(0,H.jsx)(`strong`,{"data-testid":`permission-mode-active`,children:F(h,t)})]}),(0,H.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":a(t,`system.permission.title`),children:g.map(e=>{let n=e.id===b;return(0,H.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,"data-testid":`permission-mode-option-${e.id}`,onClick:()=>{r(e.id),s(!1),m.reset()},className:`w-full rounded-md border p-3 text-left transition ${n?`border-primary bg-accent`:`border-border hover:bg-accent/50`}`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`strong`,{className:`text-sm`,children:N(e,t)}),(0,H.jsx)(O,{variant:K[e.risk]||`warning`,children:a(t,`system.permission.risk.${e.risk}`)}),e.id===y?(0,H.jsx)(O,{variant:`muted`,children:a(t,`system.permission.current`)}):null]}),(0,H.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:P(e,t)})]},e.id)})}),T?(0,H.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,H.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,H.jsx)(I,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,H.jsx)(`span`,{children:S?M(S,t):``})]}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,H.jsx)(`input`,{type:`checkbox`,"data-testid":`permission-mode-ack`,checked:o,onChange:e=>s(e.target.checked)}),a(t,`system.permission.ack`)]})]}):null,(0,H.jsx)(z,{"data-testid":`permission-mode-apply`,disabled:D||E||m.isPending,onClick:()=>m.mutate({mode:b,ack:o}),children:a(t,`system.permission.apply`)}),m.data&&!m.data.ok?(0,H.jsx)(w,{title:a(t,`ui.requestUnavailable`),detail:m.data.error}):null,m.data?.ok?(0,H.jsx)(O,{variant:`success`,"data-testid":`permission-mode-applied`,children:a(t,`ui.requestCompleted`)}):null,(0,H.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:a(t,`system.permission.guards`)}),(0,H.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:a(t,`system.permission.guards.detail`)})]})]})]})}var q=[{id:`identity`,labelKey:`system.group.identity`},{id:`data`,labelKey:`system.group.data`},{id:`system`,labelKey:`system.group.system`}],J=[{id:`account`,labelKey:`system.tab.account`,group:`identity`},{id:`workspaces`,labelKey:`system.tab.workspaces`,group:`identity`},{id:`snapshots`,labelKey:`system.tab.snapshots`,group:`data`},{id:`activity`,labelKey:`system.tab.activity`,group:`data`},{id:`settings`,labelKey:`system.tab.settings`,group:`system`},{id:`network`,labelKey:`system.tab.network`,group:`system`},{id:`admin`,labelKey:`system.tab.admin`,group:`system`}];function Y({initialTab:e}){let t=c(e=>e.mode),n=c(e=>e.language),[r,i]=V.useState(e||`account`);V.useEffect(()=>{J.some(t=>t.id===e)&&i(e)},[e]);let o=t===`basic`?J.filter(e=>e.id===`account`||e.id===`workspaces`||e.id===`snapshots`||e.id===`settings`):J,s=e=>{i(e),L(`/`+{account:`account`,workspaces:`workspace-admin`,snapshots:`snapshots`,activity:`activity`,network:`network`,settings:`settings`,admin:`system-admin`}[e])};return(0,H.jsxs)(`div`,{className:`product-page settings-page space-y-5 pb-8`,children:[(0,H.jsxs)(`header`,{className:`page-hero`,children:[(0,H.jsxs)(`div`,{className:`page-kicker`,children:[(0,H.jsx)(R,{className:`h-4 w-4`}),` `,a(n,`system.kicker`)]}),(0,H.jsx)(`h1`,{className:`page-title`,children:a(n,`system.title`)}),(0,H.jsx)(`p`,{className:`page-copy`,children:a(n,`system.body`)})]}),(0,H.jsx)(`div`,{className:`flex flex-wrap items-end gap-x-6 gap-y-3`,"data-testid":`system-tab-groups`,children:q.map(e=>{let t=o.filter(t=>t.group===e.id);if(!t.length)return null;let i=`system-group-${e.id}`;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(`span`,{id:i,className:`px-1 text-xs font-medium text-muted-foreground`,children:a(n,e.labelKey)}),(0,H.jsx)(g,{ariaLabelledBy:i,tabs:t.map(e=>({id:e.id,label:a(n,e.labelKey)})),value:r,onChange:e=>s(e)})]},e.id)})}),r===`account`?(0,H.jsx)(X,{}):null,r===`workspaces`?(0,H.jsx)(oe,{}):null,r===`settings`?(0,H.jsx)(ue,{}):null,r===`snapshots`?(0,H.jsx)(se,{}):null,r===`activity`?(0,H.jsx)(ce,{}):null,r===`network`?(0,H.jsx)(le,{}):null,r===`admin`?(0,H.jsx)(ve,{}):null]})}function X(){let e=u(),t=c(e=>e.language),n=c(e=>e.setWorkspaceId),r=d({queryKey:[`profile`],queryFn:i.profile}),o=d({queryKey:[`sso`],queryFn:i.ssoConfig}),[s,l]=V.useState(``),[g,y]=V.useState(``),[b,w]=V.useState(``),[T,D]=V.useState(``),[O,k]=V.useState(``),j=e=>{e.ok&&(te(),n(null))},M=f({mutationFn:()=>i.login(s,g),onSuccess:j}),N=f({mutationFn:()=>i.register({email:s,password:g,name:b,nickname:T}),onSuccess:j}),P=f({mutationFn:()=>i.updateProfile({name:b,nickname:T}),onSuccess:()=>e.invalidateQueries({queryKey:[`profile`]})}),F=f({mutationFn:()=>i.changePassword(g,O)});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(t,`system.account.profile`),result:r.data,children:e=>(0,H.jsx)(m,{data:e})}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,H.jsx)(ee,{className:`h-4 w-4`}),` `,a(t,`system.account.title`)]}),(0,H.jsx)(v,{children:a(t,`system.account.detail`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsx)(A,{value:s,onChange:e=>l(e.target.value),placeholder:a(t,`system.account.email`)}),(0,H.jsx)(A,{type:`password`,value:g,onChange:e=>y(e.target.value),placeholder:a(t,`system.account.password`)}),(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,H.jsx)(A,{value:b,onChange:e=>w(e.target.value),placeholder:a(t,`system.account.name`)}),(0,H.jsx)(A,{value:T,onChange:e=>D(e.target.value),placeholder:a(t,`system.account.nickname`)})]}),(0,H.jsx)(A,{type:`password`,value:O,onChange:e=>k(e.target.value),placeholder:a(t,`system.account.newPassword`)}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{onClick:()=>M.mutate(),disabled:!s||!g||M.isPending,children:a(t,`system.account.login`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>N.mutate(),disabled:!s||!g||N.isPending,children:a(t,`system.account.register`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>P.mutate(),disabled:P.isPending,children:a(t,`system.account.save`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>F.mutate(),disabled:!g||!O||F.isPending,children:a(t,`system.account.changePassword`)}),(0,H.jsx)(E,{label:a(t,`system.account.logout`),action:()=>i.logout(),onSuccess:j})]}),[M.data,N.data,P.data,F.data].filter(Boolean).map((e,n)=>(0,H.jsx)(h,{result:e,successLabel:a(t,`system.account.requestDone`)},n))]})]}),(0,H.jsx)(S,{title:a(t,`system.account.signInOptions`),result:o.data,children:e=>(0,H.jsx)(Z,{data:e})})]})}function Z({data:e}){let t=c(e=>e.mode),n=c(e=>e.language),r=!!e.enabled||s(e.providers).length>0;return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)($,{title:a(n,r?`system.account.signIn.sso`:`system.account.signIn.localOnly`),status:a(n,r?`system.value.enabled`:`system.storage.local.badge`),detail:a(n,r?`system.account.signIn.ssoDetail`:`system.account.signIn.localOnlyDetail`)}),t===`basic`?null:(0,H.jsx)(D,{value:e})]})}function oe(){let e=u(),t=c(e=>e.language),{setWorkspaceId:n}=c(),r=d({queryKey:[`workspaceRegistry`],queryFn:i.workspaceRegistry}),o=d({queryKey:[`invitations`],queryFn:i.invitations}),[l,m]=V.useState(``),[h,g]=V.useState(``),[b,w]=V.useState(``),T=f({mutationFn:()=>i.createOrg(l),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),D=f({mutationFn:()=>i.createInvitation({email:h||null,role:`member`,expires_hours:168}),onSuccess:()=>e.invalidateQueries({queryKey:[`invitations`]})}),O=f({mutationFn:()=>i.acceptInvitation(b),onSuccess:()=>e.invalidateQueries({queryKey:[`workspaceRegistry`]})}),k=s(r.data?.data?.workspaces);return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(t,`system.workspace.yours`),result:r.data,children:()=>(0,H.jsx)(`div`,{className:`flex flex-col gap-2`,children:k.map(e=>{let r=String(e.workspace_id||e.id);return(0,H.jsx)(`div`,{className:`rounded-md border border-border p-3`,children:(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-medium`,children:String(e.name||r)}),(0,H.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[String(e.type||``),` · `,String(e.your_role||e.role||``)]})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{variant:`outline`,onClick:()=>n(r),children:a(t,`system.workspace.use`)}),(0,H.jsx)(E,{label:a(t,`system.workspace.activate`),action:()=>i.activateWorkspace(r),invalidate:[`workspaceRegistry`]}),(0,H.jsx)(E,{label:a(t,`system.workspace.archive`),action:()=>i.archiveWorkspace(r),invalidate:[`workspaceRegistry`],variant:`destructive`})]})]})},r)})})}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,H.jsx)(B,{className:`h-4 w-4`}),` `,a(t,`system.workspace.organizations`)]}),(0,H.jsx)(v,{children:a(t,`system.workspace.organizationsHint`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsx)(A,{value:l,onChange:e=>m(e.target.value),placeholder:a(t,`system.workspace.orgPlaceholder`)}),(0,H.jsx)(z,{disabled:!l.trim()||T.isPending,onClick:()=>T.mutate(),children:a(t,`system.workspace.createOrg`)}),(0,H.jsx)(A,{value:h,onChange:e=>g(e.target.value),placeholder:a(t,`system.workspace.inviteeEmail`)}),(0,H.jsx)(z,{variant:`outline`,disabled:D.isPending,onClick:()=>D.mutate(),children:a(t,`system.workspace.createInvite`)}),(0,H.jsx)(A,{value:b,onChange:e=>w(e.target.value),placeholder:a(t,`system.workspace.inviteToken`)}),(0,H.jsx)(z,{variant:`outline`,disabled:!b.trim()||O.isPending,onClick:()=>O.mutate(),children:a(t,`system.workspace.acceptInvite`)}),(0,H.jsx)(S,{title:a(t,`system.workspace.invitations`),result:o.data,children:e=>(0,H.jsx)(y,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function se(){let e=c(e=>e.language),t=d({queryKey:[`snapshots`],queryFn:i.snapshots}),n=d({queryKey:[`timeMachine`],queryFn:i.timeMachine}),[r,o]=V.useState(``),[l,u]=V.useState(``),[m,g]=V.useState(``),b=f({mutationFn:()=>i.createSnapshot(r||a(e,`system.snapshots.defaultName`))}),w=f({mutationFn:()=>i.compareSnapshots(l,m)}),T=s(t.data?.data?.snapshots);return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(e,`system.snapshots.title`),result:t.data,children:()=>(0,H.jsx)(`div`,{className:`space-y-2`,children:T.map(t=>{let n=String(t.id||t.snapshot_id);return(0,H.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,H.jsx)(`div`,{className:`font-medium`,children:String(t.name||n)}),(0,H.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,H.jsx)(E,{label:a(e,`system.snapshots.export`),action:()=>i.exportSnapshot(n)}),(0,H.jsx)(E,{label:a(e,`system.snapshots.mergeRestore`),action:()=>i.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(e,`system.snapshots.actions`)}),(0,H.jsx)(v,{children:a(e,`system.snapshots.actionsHint`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsx)(A,{value:r,onChange:e=>o(e.target.value),placeholder:a(e,`system.snapshots.namePlaceholder`)}),(0,H.jsx)(z,{onClick:()=>b.mutate(),disabled:b.isPending,children:a(e,`system.snapshots.create`)}),(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,H.jsx)(A,{value:l,onChange:e=>u(e.target.value),placeholder:a(e,`system.snapshots.beforeId`)}),(0,H.jsx)(A,{value:m,onChange:e=>g(e.target.value),placeholder:a(e,`system.snapshots.afterId`)})]}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>w.mutate(),disabled:!l||!m||w.isPending,children:a(e,`system.snapshots.compare`)}),w.data?(0,H.jsx)(h,{result:w.data,successLabel:a(e,`system.snapshots.compareDone`)}):null]})]}),(0,H.jsx)(S,{title:a(e,`system.snapshots.timeline`),result:n.data,children:e=>(0,H.jsx)(y,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function ce(){let e=c(e=>e.language),t=d({queryKey:[`realtimeFeed`],queryFn:i.realtimeFeed}),n=d({queryKey:[`presence`],queryFn:i.presence});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(e,`system.activity.feed`),result:t.data,children:e=>(0,H.jsx)(y,{items:e.events,titleKey:`event_type`,metaKey:`area`,limit:14})}),(0,H.jsx)(S,{title:a(e,`system.activity.presence`),result:n.data,children:e=>(0,H.jsx)(de,{data:e})})]})}function le(){let e=u(),t=c(e=>e.language),n=d({queryKey:[`networkIdentity`],queryFn:i.networkIdentity}),r=d({queryKey:[`networkPeers`],queryFn:i.networkPeers}),[o,l]=V.useState(``),[m,g]=V.useState(``),[y,b]=V.useState(``),w=f({mutationFn:()=>i.pairPeer({name:o,base_url:m,public_key:y}),onSuccess:()=>e.invalidateQueries({queryKey:[`networkPeers`]})});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(t,`system.network.identity`),result:n.data,children:e=>(0,H.jsx)(fe,{data:e})}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,H.jsx)(j,{className:`h-4 w-4`}),` `,a(t,`system.network.pair`)]}),(0,H.jsx)(v,{children:a(t,`system.network.pairHint`)})]}),(0,H.jsxs)(x,{className:`grid gap-3`,children:[(0,H.jsx)(A,{value:o,onChange:e=>l(e.target.value),placeholder:a(t,`system.network.deviceName`)}),(0,H.jsx)(A,{value:m,onChange:e=>g(e.target.value),placeholder:a(t,`system.network.address`)}),(0,H.jsx)(A,{value:y,onChange:e=>b(e.target.value),placeholder:a(t,`system.network.publicKey`)}),(0,H.jsx)(z,{disabled:!o||!m||!y||w.isPending,onClick:()=>w.mutate(),children:a(t,`system.network.pair`)}),w.data?(0,H.jsx)(h,{result:w.data,successLabel:a(t,`system.network.pairDone`)}):null]})]}),(0,H.jsx)(S,{title:a(t,`system.network.peers`),result:r.data,className:`xl:col-span-2`,children:e=>(0,H.jsx)(`div`,{className:`grid gap-2`,children:s(e.peers).map(e=>{let n=String(e.peer_id||e.id);return(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-medium`,children:String(e.name||n)}),(0,H.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.base_url||``)})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(E,{label:a(t,`system.network.pushWorkspace`),action:()=>i.pushPeer(n,c.getState().workspaceId)}),(0,H.jsx)(E,{label:a(t,`system.network.unpair`),action:()=>i.unpairPeer(n),invalidate:[`networkPeers`],variant:`destructive`})]})]},n)})})})]})}function ue(){let e=u(),{theme:t,setTheme:n,mode:r,setMode:o}=c(),s=c(e=>e.language),l=d({queryKey:[`health`],queryFn:i.health}),m=d({queryKey:[`sysinfo`],queryFn:i.sysinfo}),g=d({queryKey:[`computerMemory`],queryFn:i.computerMemory}),y=d({queryKey:[`brainStorage`],queryFn:i.brainStorage}),b=d({queryKey:[`backupHealth`],queryFn:i.backupHealth}),[w,T]=V.useState(``),[O,j]=V.useState(`lattice_brain`),[M,N]=V.useState(!1),[P,F]=V.useState(``),[I,ee]=V.useState(``),[L,te]=V.useState(``),[R,ne]=V.useState(!1),[B,re]=V.useState(!1),U=f({mutationFn:e=>i.dockerPostgres({consent:e,dry_run:!e,port:5432})}),W=f({mutationFn:()=>i.migratePostgres({dsn:w,schema_name:O||`lattice_brain`,dry_run:!0})}),G=f({mutationFn:()=>i.brainArchive({path:P.trim()||null,passphrase:L}),onSuccess:()=>e.invalidateQueries({queryKey:[`backupHealth`]})}),K=f({mutationFn:()=>i.brainArchiveInspect({path:I,passphrase:L||null})}),q=f({mutationFn:()=>i.brainArchiveVerify({path:I,passphrase:L})}),J=f({mutationFn:()=>i.brainArchiveRestore({path:I,passphrase:L,dry_run:!0,confirm:!1})}),Y=f({mutationFn:()=>i.brainArchiveRestore({path:I,passphrase:L,dry_run:!1,confirm:R}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}}),X=f({mutationFn:()=>i.brainArchiveImport({path:I,passphrase:L,dry_run:!0,confirm:!1})}),Z=f({mutationFn:()=>i.brainArchiveImport({path:I,passphrase:L,dry_run:!1,confirm:B}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-4 max-w-[54rem]`,children:[(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(s,`system.panel.appearance`)}),(0,H.jsx)(v,{children:a(s,`system.panel.appearance.hint`)})]}),(0,H.jsxs)(x,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{variant:t===`dark`?`default`:`outline`,onClick:()=>n(`dark`),children:a(s,`system.theme.dark`)}),(0,H.jsx)(z,{variant:t===`light`?`default`:`outline`,onClick:()=>n(`light`),children:a(s,`system.theme.light`)})]})]}),(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(s,`system.panel.detailLevel`)}),(0,H.jsx)(v,{children:a(s,`system.panel.detailLevel.hint`)})]}),(0,H.jsx)(x,{className:`flex flex-wrap gap-2`,children:[`basic`,`advanced`,`admin`].map(e=>(0,H.jsx)(z,{variant:r===e?`default`:`outline`,onClick:()=>o(e),children:a(s,`shell.mode.${e}`)},e))})]}),(0,H.jsx)(ae,{}),(0,H.jsx)(ie,{}),(0,H.jsx)(S,{title:r===`basic`?a(s,`system.panel.brainStatus`):a(s,`system.panel.serverHealth`),result:l.data,children:e=>(0,H.jsx)(pe,{data:e})}),(0,H.jsx)(S,{title:r===`basic`?a(s,`system.panel.readiness`):a(s,`system.panel.hostTelemetry`),result:m.data,children:e=>{if(r===`basic`){let t=String(e?.readiness||`roomy`),n=t===`tight`||t===`low`||t===`roomy`?`system.readiness.${t}`:`system.readiness.plenty`;return(0,H.jsxs)(`div`,{className:`flex items-center gap-2.5 p-3 rounded-lg border border-border/60 bg-muted/20 text-sm text-foreground`,children:[(0,H.jsx)(k,{className:`h-4 w-4 ${t===`low`?`text-rose-500`:t===`tight`?`text-amber-500`:`text-emerald-500`} flex-shrink-0`,"aria-hidden":`true`}),(0,H.jsx)(`span`,{children:a(s,n)})]})}return(0,H.jsx)(D,{value:e})}}),(0,H.jsx)(S,{title:r===`basic`?a(s,`system.storage.title`):a(s,`system.panel.brainStorage`),result:y.data,children:e=>(0,H.jsx)(me,{data:e,mode:r,language:s})}),r===`basic`?null:(0,H.jsx)(S,{title:a(s,`system.backup.health`),result:b.data,children:e=>(0,H.jsx)(he,{data:e})}),r===`basic`?null:(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(s,`system.archive.title`)}),(0,H.jsx)(v,{children:a(s,`system.archive.detail`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,H.jsx)(A,{value:P,onChange:e=>F(e.target.value),placeholder:a(s,`system.archive.exportPath`)}),(0,H.jsx)(A,{value:I,onChange:e=>ee(e.target.value),placeholder:a(s,`system.archive.restorePath`)})]}),(0,H.jsx)(A,{type:`password`,value:L,onChange:e=>te(e.target.value),placeholder:a(s,`system.archive.passphrase`)}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{onClick:()=>G.mutate(),disabled:!L||G.isPending,children:a(s,`system.archive.export`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>K.mutate(),disabled:!I||K.isPending,children:a(s,`system.archive.inspect`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>q.mutate(),disabled:!I||!L||q.isPending,children:a(s,`system.archive.verify`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>J.mutate(),disabled:!I||!L||J.isPending,children:a(s,`system.archive.restoreDryRun`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>X.mutate(),disabled:!I||!L||X.isPending,children:a(s,`system.archive.importDryRun`)}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:R,onChange:e=>ne(e.target.checked)}),a(s,`system.archive.confirmRestore`)]}),(0,H.jsx)(z,{variant:`destructive`,onClick:()=>Y.mutate(),disabled:!I||!L||!R||Y.isPending,children:a(s,`system.archive.restore`)}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:B,onChange:e=>re(e.target.checked)}),a(s,`system.archive.confirmImport`)]}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>Z.mutate(),disabled:!I||!L||!B||Z.isPending,children:a(s,`system.archive.import`)})]}),[G.data,K.data,q.data,J.data,Y.data,X.data,Z.data].filter(Boolean).map((e,t)=>(0,H.jsx)(h,{result:e,successLabel:a(s,`system.archive.requestDone`)},t))]})]}),r===`basic`?null:(0,H.jsxs)(C,{children:[(0,H.jsxs)(_,{children:[(0,H.jsx)(p,{children:a(s,`system.scale.title`)}),(0,H.jsx)(v,{children:a(s,`system.scale.detail`)})]}),(0,H.jsxs)(x,{className:`flex flex-col gap-3`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-2`,children:[(0,H.jsx)(A,{value:w,onChange:e=>T(e.target.value),placeholder:a(s,`system.scale.dsn`)}),(0,H.jsx)(A,{value:O,onChange:e=>j(e.target.value),placeholder:a(s,`system.scale.schema`)})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(z,{variant:`outline`,onClick:()=>U.mutate(!1),disabled:U.isPending,children:a(s,`system.scale.dockerPlan`)}),(0,H.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>N(e.target.checked)}),a(s,`system.scale.dockerConsent`)]}),(0,H.jsx)(z,{onClick:()=>U.mutate(!0),disabled:!M||U.isPending,children:a(s,`system.scale.dockerStart`)}),(0,H.jsx)(z,{variant:`outline`,onClick:()=>W.mutate(),disabled:!w||W.isPending,children:a(s,`system.scale.migrationPlan`)})]}),U.data?(0,H.jsx)(h,{result:U.data,successLabel:a(s,`system.scale.dockerDone`)}):null,W.data?(0,H.jsx)(h,{result:W.data,successLabel:a(s,`system.scale.migrationDone`)}):null]})]}),r===`basic`?null:(0,H.jsx)(S,{title:a(s,`system.computerMemory.title`),result:g.data,children:e=>(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(D,{value:e}),(0,H.jsxs)(`div`,{className:`flex gap-2`,children:[(0,H.jsx)(E,{label:a(s,`system.computerMemory.enable`),action:()=>i.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,H.jsx)(E,{label:a(s,`system.computerMemory.disable`),action:()=>i.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function Q(e,t,n=a(e,`system.value.notReported`)){return t==null||t===``?n:typeof t==`boolean`?a(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function de({data:e}){let t=c(e=>e.language),n=s(e.presence||e.clients||e);return n.length?(0,H.jsx)(y,{items:n,titleKey:`user`,metaKey:`workspace_id`}):(0,H.jsx)(w,{title:a(t,`system.presence.empty`),detail:a(t,`system.presence.emptyDetail`)})}function fe({data:e}){let t=c(e=>e.mode),n=c(e=>e.language),i=Q(n,e.public_key,``);return t===`basic`?(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)($,{title:a(n,`system.device.thisMac`),status:a(n,`system.value.trusted`),detail:a(n,`system.device.thisMacDetail`)}),(0,H.jsx)(O,{variant:`muted`,children:Q(n,e.algorithm,a(n,`system.value.localIdentity`))})]}):(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,H.jsx)(O,{variant:`success`,children:a(n,`system.value.localDevice`)}),(0,H.jsx)(O,{variant:`muted`,children:Q(n,e.algorithm,a(n,`system.value.identityKey`))})]}),(0,H.jsx)(m,{data:{device_id:e.device_id||e.id||a(n,`system.value.notReported`),fingerprint:e.fingerprint||a(n,`system.value.notReported`),public_key:i?r(i.replace(/\s+/g,` `),72):a(n,`system.value.notReported`)}})]})}function pe({data:e}){let t=c(e=>e.mode),n=c(e=>e.language);return t===`basic`?(0,H.jsx)($,{title:a(n,`system.health.title`),status:a(n,`system.health.ok`),detail:a(n,`system.health.detail`)}):(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(b,{stats:[{label:a(n,`system.health.status`),value:e.status||e.ok||a(n,`system.value.reported`)},{label:a(n,`system.health.version`),value:e.version||a(n,`system.value.notReported`)},{label:a(n,`system.health.mode`),value:e.mode||e.environment||a(n,`system.value.local`)},{label:a(n,`system.health.port`),value:e.port||e.backend_port||a(n,`system.value.configured`)}]}),(0,H.jsx)(D,{value:e})]})}function me({data:e,mode:t=`advanced`,language:n=`en`}){let r=o(e.active)?e.active:e,i=o(e.postgres)?e.postgres:{},s=o(e.backup_health)?e.backup_health:{},c=r.vector_search||r.vector||e.vector_search||e.sqlite_vec,l=!!(i.available||i.connected||i.enabled),u=!!c&&String(c).toLowerCase()!==`not reported`;return t===`basic`?(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)($,{title:a(n,`system.storage.local.title`),status:a(n,`system.storage.local.badge`),detail:a(n,`system.storage.local.detail`)}),(0,H.jsx)($,{title:a(n,`system.storage.search.title`),status:u?a(n,`system.storage.search.on`):a(n,`system.storage.search.pending`),detail:u?a(n,`system.storage.search.detailOn`):a(n,`system.storage.search.detailPending`)})]}):(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsx)(b,{stats:[{label:a(n,`system.storage.activeEngine`),value:r.engine||e.engine||a(n,`system.storage.sqlite`)},{label:a(n,`system.storage.sqliteDefault`),value:r.engine===`postgres`?a(n,`system.value.scaleMode`):a(n,`system.value.enabled`)},{label:a(n,`system.storage.vector`),value:c||a(n,`system.value.notReported`)},{label:a(n,`system.storage.postgres`),value:l?a(n,`system.value.available`):a(n,`system.value.optional`)}]}),(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,H.jsx)($,{title:a(n,`system.storage.sqlite`),status:r.available===!1?a(n,`system.value.unavailable`):a(n,`system.value.default`),detail:Q(n,r.reason||r.path||e.path,a(n,`system.storage.sqliteDetail`))}),(0,H.jsx)($,{title:a(n,`system.storage.vector`),status:Q(n,c,a(n,`system.value.reported`)),detail:Q(n,r.vector_reason||r.sqlite_vec_reason||e.vector_reason,a(n,`system.storage.vectorDetail`))}),(0,H.jsx)($,{title:a(n,`system.storage.postgres`),status:l?a(n,`system.value.available`):a(n,`system.value.notEnabled`),detail:Q(n,i.reason||i.dsn||i.status,a(n,`system.storage.postgresDetail`))})]}),Object.keys(s).length?(0,H.jsx)(D,{value:{backup_health:s}}):null]})}function he({data:e}){let t=c(e=>e.language);return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(b,{stats:[{label:a(t,`system.backup.available`),value:e.available===!1?a(t,`system.value.no`):a(t,`system.value.yes`)},{label:a(t,`system.backup.backups`),value:e.count||e.backups||0},{label:a(t,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:a(t,`system.backup.zip`),value:e.zip_backups||0}]}),(0,H.jsx)(m,{data:{directory:e.directory||a(t,`system.value.notReported`),latest:e.latest||a(t,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||a(t,`system.value.notReported`),failure:e.error||e.reason||a(t,`system.value.noneReported`)}})]})}function $({title:e,status:t,detail:n}){let r=/unavailable|failed|denied|disabled|not enabled|사용 불가|실패|거부|비활성|활성화되지 않음/i.test(t)?`warning`:`success`;return(0,H.jsxs)(`div`,{className:`rounded-md border border-border bg-background p-3`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,H.jsx)(`div`,{className:`font-medium`,children:e}),(0,H.jsx)(O,{variant:r,children:t})]}),(0,H.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:n})]})}function ge({data:e}){let t=c(e=>e.language),n=o(e.startup)?e.startup:{},r=o(e.privacy)?e.privacy:{},i=o(e.storage)?e.storage:{},s=o(e.backup)?e.backup:{},l=o(e.device_identity)?e.device_identity:{},u=o(e.permissions)?e.permissions:{};return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(b,{stats:[{label:a(t,`system.hardening.version`),value:e.version||a(t,`system.value.reported`)},{label:a(t,`system.hardening.localOnly`),value:r.local_only_default??n.local_only_default??a(t,`system.value.reported`)},{label:a(t,`system.hardening.storage`),value:o(i.active)?i.active.engine:a(t,`system.value.reported`)},{label:a(t,`system.hardening.backups`),value:s.count||s.available||a(t,`system.value.reported`)}]}),(0,H.jsxs)(`div`,{className:`flex flex-col sm:flex-row flex-wrap gap-3`,children:[(0,H.jsx)($,{title:a(t,`system.hardening.startup`),status:a(t,n.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:a(t,`system.hardening.startupDetail`)}),(0,H.jsx)($,{title:a(t,`system.hardening.integrations`),status:a(t,r.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:a(t,`system.hardening.integrationsDetail`)}),(0,H.jsx)($,{title:a(t,`system.hardening.identity`),status:Q(t,l.algorithm||l.fingerprint,a(t,`system.value.reported`)),detail:Q(t,l.storage,a(t,`system.hardening.identityStorage`))}),(0,H.jsx)($,{title:a(t,`system.hardening.permissions`),status:a(t,u.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:a(t,`system.hardening.permissionsDetail`)})]})]})}function _e({data:e}){let t=c(e=>e.language),n=o(e.cards)?e.cards:{},r=o(e.severity_counts)?e.severity_counts:{};return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsx)(b,{stats:[{label:a(t,`system.security.eventsToday`),value:n.events_today||0},{label:a(t,`system.security.highRisk`),value:n.high_risk_events||r.high||0},{label:a(t,`system.security.review`),value:n.review_required||0},{label:a(t,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,H.jsx)(D,{value:{severity_counts:r,sensitive_fields:e.field_counts||{}}})]})}function ve(){let e=c(e=>e.mode),t=c(e=>e.language),n=d({queryKey:[`adminSummary`],queryFn:i.adminSummary}),r=d({queryKey:[`adminUsers`],queryFn:i.adminUsers}),o=d({queryKey:[`adminAudit`],queryFn:()=>i.adminAudit()}),s=d({queryKey:[`adminRoles`],queryFn:i.adminRoles}),l=d({queryKey:[`adminPolicies`],queryFn:i.adminPolicies}),u=d({queryKey:[`adminProductHardening`],queryFn:i.adminProductHardening}),f=d({queryKey:[`adminSecurity`],queryFn:i.adminSecurity}),p=d({queryKey:[`vpcStatus`],queryFn:i.vpcStatus});return e===`admin`?(0,H.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,H.jsx)(S,{title:a(t,`system.admin.summary`),result:n.data,children:e=>(0,H.jsx)(m,{data:e})}),(0,H.jsx)(S,{title:a(t,`system.admin.users`),result:r.data,children:e=>(0,H.jsx)(y,{items:e,titleKey:`email`,metaKey:`role`})}),(0,H.jsx)(S,{title:a(t,`system.admin.audit`),result:o.data,children:e=>(0,H.jsx)(y,{items:e.recent_events||e,titleKey:`act`,metaKey:`sev`})}),(0,H.jsx)(S,{title:a(t,`system.admin.roles`),result:s.data,children:e=>(0,H.jsx)(y,{items:e.roles||e,titleKey:`role`,metaKey:`members`})}),(0,H.jsx)(S,{title:a(t,`system.admin.policies`),result:l.data,children:e=>(0,H.jsx)(y,{items:e.policies||e,titleKey:`label`,metaKey:`enforced`})}),(0,H.jsx)(S,{title:a(t,`system.admin.hardening`),result:u.data,children:e=>(0,H.jsx)(ge,{data:e})}),(0,H.jsx)(S,{title:a(t,`system.admin.security`),result:f.data,children:e=>(0,H.jsx)(_e,{data:e})}),(0,H.jsx)(S,{title:a(t,`system.admin.vpc`),result:p.data,children:e=>(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(O,{variant:`muted`,children:a(t,`system.admin.communityUnavailable`)}),(0,H.jsx)(D,{value:e})]})})]}):(0,H.jsx)(T,{title:a(t,`system.admin.controls`),detail:a(t,`system.admin.controlsDetail`),target:`admin`})}export{Y as SystemPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as e}from"./utils-BMwWg78e.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);export{t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e}from"./utils-
|
|
1
|
+
import{_ as e}from"./utils-BMwWg78e.js";var t=e(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]);export{t};
|