ltcai 10.6.0 → 10.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +61 -52
  2. package/docs/CHANGELOG.md +126 -0
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +1 -1
  5. package/docs/ONBOARDING.md +1 -1
  6. package/docs/OPERATIONS.md +1 -1
  7. package/docs/TRUST_MODEL.md +1 -1
  8. package/docs/WHY_LATTICE.md +1 -1
  9. package/docs/kg-schema.md +1 -1
  10. package/lattice_brain/__init__.py +1 -1
  11. package/lattice_brain/graph/_kg_contract.py +15 -0
  12. package/lattice_brain/graph/provenance.py +61 -5
  13. package/lattice_brain/graph/retrieval.py +16 -4
  14. package/lattice_brain/graph/retrieval_reads.py +136 -23
  15. package/lattice_brain/graph/retrieval_vector.py +156 -8
  16. package/lattice_brain/ingestion.py +14 -1
  17. package/lattice_brain/ingestion_jobs.py +255 -5
  18. package/lattice_brain/portability.py +5 -2
  19. package/lattice_brain/runtime/multi_agent.py +1 -1
  20. package/latticeai/__init__.py +1 -1
  21. package/latticeai/api/browser.py +8 -14
  22. package/latticeai/api/knowledge_graph.py +46 -16
  23. package/latticeai/api/workspace.py +4 -11
  24. package/latticeai/api/workspace_scope.py +125 -0
  25. package/latticeai/core/agent.py +68 -3
  26. package/latticeai/core/config.py +6 -0
  27. package/latticeai/core/csrf.py +293 -0
  28. package/latticeai/core/legacy_compatibility.py +1 -1
  29. package/latticeai/core/marketplace.py +1 -1
  30. package/latticeai/core/workspace_os_constants.py +1 -1
  31. package/latticeai/models/router.py +61 -16
  32. package/latticeai/runtime/build_phases.py +2 -0
  33. package/latticeai/runtime/config_runtime.py +2 -0
  34. package/latticeai/runtime/runtime_context.py +1 -0
  35. package/latticeai/runtime/web_runtime.py +31 -4
  36. package/latticeai/services/architecture_readiness.py +1 -1
  37. package/latticeai/services/product_readiness.py +1 -1
  38. package/latticeai/services/search_service.py +9 -1
  39. package/latticeai/services/tool_dispatch.py +13 -7
  40. package/latticeai/tools/__init__.py +1 -0
  41. package/latticeai/tools/documents.py +44 -13
  42. package/package.json +1 -1
  43. package/scripts/build_frontend_assets.mjs +21 -4
  44. package/scripts/check_current_release_docs.mjs +1 -1
  45. package/scripts/check_frontend_build_freshness.mjs +170 -0
  46. package/src-tauri/Cargo.lock +1 -1
  47. package/src-tauri/Cargo.toml +1 -1
  48. package/src-tauri/tauri.conf.json +1 -1
  49. package/static/app/asset-manifest.json +39 -39
  50. package/static/app/assets/{Act-B3MSgNsJ.js → Act-aNud-lKL.js} +1 -1
  51. package/static/app/assets/{AdminConsole-Ds8u36lf.js → AdminConsole-QiCTH68K.js} +1 -1
  52. package/static/app/assets/{Brain-XdHCIB6a.js → Brain-CMFh5q6k.js} +1 -1
  53. package/static/app/assets/{BrainHome-Dp8gzQoF.js → BrainHome-B4Ar3atu.js} +2 -2
  54. package/static/app/assets/{BrainSignals-D4yZflVt.js → BrainSignals-RVMlmTGC.js} +1 -1
  55. package/static/app/assets/{Capture-BwSZmiZ8.js → Capture-DEBo-0vZ.js} +1 -1
  56. package/static/app/assets/{CommandPalette-Ds0DnRSC.js → CommandPalette-bW5WxWWZ.js} +1 -1
  57. package/static/app/assets/{Library-SqzHjyfx.js → Library-5gFexm83.js} +1 -1
  58. package/static/app/assets/{LivingBrain-DpKt-NKE.js → LivingBrain-FlHFfu9i.js} +1 -1
  59. package/static/app/assets/ProductFlow-CFUNDOHu.js +1 -0
  60. package/static/app/assets/{ReviewCard-DVPi1LPZ.js → ReviewCard-BHj86h2Z.js} +2 -2
  61. package/static/app/assets/{System-w-9miIG8.js → System-CeNHoZRu.js} +1 -1
  62. package/static/app/assets/{activity-C0QavXjd.js → activity-7_ZmZqN0.js} +1 -1
  63. package/static/app/assets/arrow-left-Dv2Tiwhe.js +1 -0
  64. package/static/app/assets/{bot-C1-MbzCF.js → bot-D1gX4xks.js} +1 -1
  65. package/static/app/assets/{brain-CeRqzJVc.js → brain-Dn_bDfl4.js} +1 -1
  66. package/static/app/assets/{button-Z-2N8PUb.js → button-DPFZ9lGw.js} +1 -1
  67. package/static/app/assets/{circle-pause-CgjCLdmO.js → circle-pause-B2P72YOO.js} +1 -1
  68. package/static/app/assets/{circle-play-Bj45uClm.js → circle-play-BiC8z2vg.js} +1 -1
  69. package/static/app/assets/{cpu-B-2Chwfy.js → cpu-Cx-wRR_V.js} +1 -1
  70. package/static/app/assets/{download-CKmiOG3C.js → download-CKxlzxsK.js} +1 -1
  71. package/static/app/assets/{folder-open-fE7lLvhZ.js → folder-open-Bbjju0tt.js} +1 -1
  72. package/static/app/assets/{hard-drive-rDl1xsJ1.js → hard-drive-Bon1VBvq.js} +1 -1
  73. package/static/app/assets/index-DYUs0cWy.css +2 -0
  74. package/static/app/assets/{index-AEIqmjwZ.js → index-mLP0-YNO.js} +3 -3
  75. package/static/app/assets/{input-BflJYT5-.js → input-DrMc0Xns.js} +1 -1
  76. package/static/app/assets/{permissionCopy-BNNvkXSX.js → permissionCopy-BGUsI7vw.js} +1 -1
  77. package/static/app/assets/{primitives-CP68OWk2.js → primitives-CEMTjBz1.js} +1 -1
  78. package/static/app/assets/search-HsIji1wY.js +1 -0
  79. package/static/app/assets/{share-2-CyjG2_yY.js → share-2-D7THHq5K.js} +1 -1
  80. package/static/app/assets/{shield-alert-C_JBPWYd.js → shield-alert-BoU4_8r9.js} +1 -1
  81. package/static/app/assets/{textarea-Ds1Exelb.js → textarea-rU1Lb7ia.js} +1 -1
  82. package/static/app/assets/{useFocusTrap-BgIZQ4if.js → useFocusTrap-BgvK4Nkx.js} +1 -1
  83. package/static/app/assets/{useQuery-6Bu27NQe.js → useQuery-CT2ChyuU.js} +1 -1
  84. package/static/app/assets/{users-31lxlciQ.js → users-DlbfHBQV.js} +1 -1
  85. package/static/app/assets/{utils-C0-C5mZc.js → utils-fEGWreKB.js} +1 -1
  86. package/static/app/assets/workspace-ClDBz_0f.js +1 -0
  87. package/static/app/index.html +4 -4
  88. package/static/sw.js +1 -1
  89. package/static/app/assets/ProductFlow-BimeVtWH.js +0 -1
  90. package/static/app/assets/arrow-left-TsAKz-s_.js +0 -1
  91. package/static/app/assets/index-DcMODGjM.css +0 -2
  92. package/static/app/assets/search-B4O4iIgg.js +0 -1
  93. package/static/app/assets/workspace-DAB-urHL.js +0 -1
@@ -1,3 +1,3 @@
1
- import{S as e,_ as t,b as n,d as r,g as i,m as a,o,y as s}from"./utils-C0-C5mZc.js";import{r as c}from"./useQuery-6Bu27NQe.js";import{t as l}from"./workspace-DAB-urHL.js";import{a as u,t as d,v as f}from"./primitives-CP68OWk2.js";import{t as p}from"./input-BflJYT5-.js";import{d as m}from"./index-AEIqmjwZ.js";import{t as h}from"./button-Z-2N8PUb.js";var g=i(`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`}]]),_=i(`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(n()),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(`
1
+ import{S as e,_ as t,b as n,d as r,g as i,m as a,o,y as s}from"./utils-fEGWreKB.js";import{r as c}from"./useQuery-CT2ChyuU.js";import{t as l}from"./workspace-ClDBz_0f.js";import{a as u,t as d,v as f}from"./primitives-CEMTjBz1.js";import{t as p}from"./input-DrMc0Xns.js";import{d as m}from"./index-mLP0-YNO.js";import{t as h}from"./button-DPFZ9lGw.js";var g=i(`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`}]]),_=i(`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(n()),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
- `):[];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=o(n.payload)?n.payload:{},a=typeof i.path==`string`?i.path:``,s=typeof n.kind==`string`&&n.kind?n.kind:`file_update`;if(!a)throw Error(`proposal payload has no path`);let c=typeof i.new_content==`string`?i.new_content:``,l=await r.readWorkspaceFile(a);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,a),m=u?await C(d):``,h=await r.createReviewItem({title:typeof n.title==`string`&&n.title?n.title:a,summary:typeof n.summary==`string`?n.summary:``,source:`change_proposal`,kind:s,payload:{path:a,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=s();function D({language:e,itemId:t,onResolved:n}){let r=c(),[i,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:a(e,`proposals.conflict.title`)})]}),(0,E.jsx)(`p`,{children:a(e,`proposals.conflict.detail`)}),i===`rebased`?(0,E.jsx)(`p`,{className:`proposal-conflict-done`,role:`status`,children:a(e,`proposals.conflict.rebased`)}):i===`already_applied`?(0,E.jsx)(`p`,{className:`proposal-conflict-done`,role:`status`,children:a(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?a(e,`proposals.conflict.rebasing`):a(e,`proposals.conflict.rebase`)]}),s.isError?(0,E.jsx)(`small`,{className:`proposal-conflict-error`,children:a(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?a(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?a(e,n):t||a(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?a(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?a(e,r):n}function B(){let e=new Date;return e.setDate(e.getDate()+1),e.toISOString()}function V(e,t){if(!t)return a(e,`review.snoozed.badge`);let n=new Date(t);return Number.isNaN(n.getTime())?a(e,`review.snoozed.until`,{value:t}):a(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 i=t.slice(0,W),o=t.length-i.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:a(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":a(e,`proposals.diff`),children:i.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:a(e,`proposals.diff.more`,{count:o})}):null]})}function K(e){return/^\+(?!\+\+)/.test(e)?`text-success`:/^-(?!--)/.test(e)?`text-destructive`:``}function q({item:e,feedback:n,onAction:r}){let i=t(e=>e.mode),o=t(e=>e.language),[s,c]=v.useState(``),l=e.provenance||{},g=e.payload||{},_=U(e),y=e.effective_status===`snoozed`,b=H(e),x=e.source===`change_proposal`,S=e.source!==`chat_followup`&&e.source!==`agent_followup`&&!x,C=Array.isArray(g.diff)?g.diff:[],w=String(g.tier||`small`),T=typeof g.path==`string`&&g.path.trim()?g.path:void 0,O=L(o,l.risk),k=z(o,l.change_class),j=typeof l.tool==`string`&&l.tool.trim()?l.tool:``,N=typeof l.proposed_by==`string`&&l.proposed_by.trim()?l.proposed_by:``;return(0,E.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-4`,children:[(0,E.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,E.jsx)(`div`,{className:`font-medium`,children:e.title}),e.summary?(0,E.jsx)(`p`,{className:`mt-1 text-sm leading-6 text-muted-foreground`,children:e.summary}):null]}),(0,E.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,E.jsx)(f,{variant:`muted`,children:P(o,e.source)}),x?(0,E.jsx)(f,{variant:`muted`,children:a(o,e.kind===`file_delete`?`proposals.kind.delete`:w===`large`?`proposals.tier.large`:`proposals.tier.small`)}):null,(0,E.jsx)(f,{variant:A(e.effective_status),children:M(o,e.effective_status)})]})]}),x&&C.length>0?(0,E.jsx)(G,{language:o,diff:C,path:T,className:`mt-3`}):null,y?(0,E.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center justify-between gap-3 rounded-md border border-border bg-muted/24 p-3 text-sm`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`font-medium`,children:V(o,e.snoozed_until)}),(0,E.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:a(o,`review.snoozed.detail`)})]}),(0,E.jsxs)(h,{size:`sm`,variant:`outline`,onClick:()=>r(e,`unsnooze`),disabled:!b,children:[(0,E.jsx)(m,{className:`h-3.5 w-3.5`}),` `,a(o,`review.unsnooze`)]})]}):null,O||k||j||N?(0,E.jsxs)(`div`,{className:`mt-3 grid gap-2`,children:[k||O?(0,E.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[k?(0,E.jsx)(f,{variant:`muted`,children:k}):null,O?(0,E.jsx)(f,{variant:`muted`,children:O}):null]}):null,j?(0,E.jsxs)(`p`,{className:`m-0 text-sm text-muted-foreground`,children:[(0,E.jsx)(`span`,{className:`font-medium text-foreground`,children:a(o,`review.summary.tool`)}),` · `,j]}):null,N?(0,E.jsxs)(`p`,{className:`m-0 text-sm text-muted-foreground`,children:[(0,E.jsx)(`span`,{className:`font-medium text-foreground`,children:a(o,`review.summary.proposedBy`)}),` · `,N]}):null]}):null,i===`basic`?null:(0,E.jsxs)(`details`,{className:`mt-3 rounded-md border border-border`,children:[(0,E.jsx)(`summary`,{className:`cursor-pointer select-none p-3 text-sm font-medium text-muted-foreground`,children:a(o,`review.technical.title`)}),(0,E.jsx)(`div`,{className:`p-3 pt-0`,children:(0,E.jsx)(u,{data:{workflow:l.workflow_id,trigger:l.trigger_id,run:g.last_run_id||l.run_id,...x?{path:g.path}:{},source_detail:F(o,l,e.source),snoozed_until:e.snoozed_until,created_at:e.created_at,updated_at:e.updated_at},limit:x?12:8})})]}),b?(0,E.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,E.jsx)(`p`,{className:`text-xs leading-5 text-muted-foreground`,children:a(o,S?`review.runNow.detail`:x?`review.proposal.detail`:e.source===`agent_followup`?`review.agent.detail`:`review.chat.detail`)}),x?(0,E.jsx)(p,{value:s,onChange:e=>c(e.target.value),placeholder:a(o,`review.proposal.rejectReason`),"aria-label":a(o,`review.proposal.rejectReason`)}):null,(0,E.jsxs)(`div`,{className:`flex flex-wrap gap-2`,"aria-label":a(o,`review.actions.aria`),children:[S?(0,E.jsx)(d,{label:a(o,`review.runNow`),successLabel:_?a(o,`review.regenerated`):a(o,`review.executed`),action:()=>r(e,`run_now`,_),invalidate:[]}):null,(0,E.jsx)(d,{label:a(o,x?`proposals.approve`:`review.approve`),action:()=>r(e,`approve`),invalidate:[]}),y?null:(0,E.jsx)(d,{label:a(o,`review.snoozeDay`),action:()=>r(e,`snooze`),invalidate:[]}),(0,E.jsx)(d,{label:a(o,x?`proposals.reject`:`review.dismiss`),action:()=>r(e,`dismiss`,!1,x?s:void 0),invalidate:[],variant:`destructive`})]})]}):null,n?.conflict&&x?(0,E.jsx)(D,{language:o,itemId:e.id}):n?(0,E.jsxs)(`p`,{className:`mt-2 text-xs ${n.tone===`error`?`text-warning`:`text-success`}`,children:[n.message,` - `,a(o,`review.feedback.open`),n.detail&&n.detail!==n.message?(0,E.jsx)(`span`,{className:`mt-0.5 block text-[11px] opacity-75`,children:n.detail}):null]}):null]})}export{O as a,k as i,q as n,D as o,B as r,_ as s,G as t};
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=o(n.payload)?n.payload:{},a=typeof i.path==`string`?i.path:``,s=typeof n.kind==`string`&&n.kind?n.kind:`file_update`;if(!a)throw Error(`proposal payload has no path`);let c=typeof i.new_content==`string`?i.new_content:``,l=await r.readWorkspaceFile(a);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,a),m=u?await C(d):``,h=await r.createReviewItem({title:typeof n.title==`string`&&n.title?n.title:a,summary:typeof n.summary==`string`?n.summary:``,source:`change_proposal`,kind:s,payload:{path:a,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=s();function D({language:e,itemId:t,onResolved:n}){let r=c(),[i,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:a(e,`proposals.conflict.title`)})]}),(0,E.jsx)(`p`,{children:a(e,`proposals.conflict.detail`)}),i===`rebased`?(0,E.jsx)(`p`,{className:`proposal-conflict-done`,role:`status`,children:a(e,`proposals.conflict.rebased`)}):i===`already_applied`?(0,E.jsx)(`p`,{className:`proposal-conflict-done`,role:`status`,children:a(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?a(e,`proposals.conflict.rebasing`):a(e,`proposals.conflict.rebase`)]}),s.isError?(0,E.jsx)(`small`,{className:`proposal-conflict-error`,children:a(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?a(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?a(e,n):t||a(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?a(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?a(e,r):n}function B(){let e=new Date;return e.setDate(e.getDate()+1),e.toISOString()}function V(e,t){if(!t)return a(e,`review.snoozed.badge`);let n=new Date(t);return Number.isNaN(n.getTime())?a(e,`review.snoozed.until`,{value:t}):a(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 i=t.slice(0,W),o=t.length-i.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:a(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":a(e,`proposals.diff`),children:i.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:a(e,`proposals.diff.more`,{count:o})}):null]})}function K(e){return/^\+(?!\+\+)/.test(e)?`text-success`:/^-(?!--)/.test(e)?`text-destructive`:``}function q({item:e,feedback:n,onAction:r}){let i=t(e=>e.mode),o=t(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(o,g.risk),j=z(o,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=i!==`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(o,e.source)}),S?(0,E.jsx)(f,{variant:`muted`,className:`text-xs`,children:a(o,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(o,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:o,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(o,e.snoozed_until)}),(0,E.jsx)(`p`,{className:`text-muted-foreground text-[11px]`,children:a(o,`review.snoozed.detail`)})]}),(0,E.jsxs)(h,{size:`sm`,variant:`outline`,onClick:()=>r(e,`unsnooze`),disabled:!x,className:`h-7 text-xs`,children:[(0,E.jsx)(m,{className:`h-3 w-3 mr-1`}),` `,a(o,`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:a(o,`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:a(o,`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:a(o,`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(o,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:a(o,`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:a(o,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:a(o,`review.proposal.rejectReason`),"aria-label":a(o,`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":a(o,`review.actions.aria`),children:[(0,E.jsxs)(`div`,{className:`flex gap-2`,children:[(0,E.jsx)(d,{label:a(o,S?`proposals.approve`:`review.approve`),action:()=>r(e,`approve`),invalidate:[]}),(0,E.jsx)(d,{label:a(o,S?`proposals.reject`:`review.dismiss`),action:()=>r(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:a(o,`review.runNow`),successLabel:y?a(o,`review.regenerated`):a(o,`review.executed`),action:()=>r(e,`run_now`,y),invalidate:[]}):null,b?null:(0,E.jsx)(d,{label:a(o,`review.snoozeDay`),action:()=>r(e,`snooze`),invalidate:[]})]})]})]}):(0,E.jsx)(`p`,{className:`text-xs text-muted-foreground italic`,children:M(o,e.effective_status)}),n?.conflict&&S?(0,E.jsx)(D,{language:o,itemId:e.id}):n?(0,E.jsxs)(`p`,{className:`text-xs p-2 rounded border ${n.tone===`error`?`border-amber-500/30 bg-amber-500/10 text-warning`:`border-emerald-500/30 bg-emerald-500/10 text-success`}`,children:[n.message,` - `,a(o,`review.feedback.open`),n.detail&&n.detail!==n.message?(0,E.jsx)(`span`,{className:`mt-0.5 block text-[11px] opacity-75`,children:n.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{S as e,_ as t,b as n,c as r,d as i,g as a,m as o,o as s,t as c,y as l}from"./utils-C0-C5mZc.js";import{r as u,t as d}from"./useQuery-6Bu27NQe.js";import{t as f}from"./workspace-DAB-urHL.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-CP68OWk2.js";import{t as k}from"./input-BflJYT5-.js";import{a as A,i as j,n as M,r as N,t as P}from"./permissionCopy-BNNvkXSX.js";import{t as F}from"./shield-alert-C_JBPWYd.js";import{t as I}from"./users-31lxlciQ.js";import{h as ee,i as L,t as te,u as R}from"./index-AEIqmjwZ.js";import{t as z}from"./button-Z-2N8PUb.js";var ne=a(`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=e(n()),V=l(),H={low:`success`,medium:`warning`,high:`danger`};function re(e,t){return t===`ko`&&e.label_ko||e.label}function U(e,t){return t===`ko`&&e.summary_ko||e.summary}function W(e,t){return t===`ko`&&e.warning_ko||e.warning||``}function ie(){let e=u(),n=t(e=>e.language),[r,a]=B.useState(null),[s,c]=B.useState(!1),[l,m]=B.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`]}),a(null),c(!1))}}),y=f({mutationFn:e=>i.setHybridPolicy(e),onSuccess:()=>e.invalidateQueries({queryKey:[`networkBoundary`]})}),b=f({mutationFn:e=>i.previewCloudContext(e)}),[S,T]=B.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=r??A,M=k.find(e=>e.id===j),N=!!M?.requires_ack&&j!==A,P=N&&!s,I=j===A,ee=D?.policy??{},L=b.data?.ok?b.data.data:void 0;return h.isLoading?(0,V.jsxs)(C,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(p,{children:o(n,`system.network.title`)})}),(0,V.jsx)(x,{children:(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(n,`ui.loading`)})})]}):!D||k.length===0?(0,V.jsxs)(C,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(p,{children:o(n,`system.network.title`)})}),(0,V.jsx)(x,{children:(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:h.data?.error})})]}):(0,V.jsxs)(C,{"data-testid":`network-boundary-panel`,children:[(0,V.jsxs)(_,{children:[(0,V.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,V.jsx)(ne,{className:`h-4 w-4`,"aria-hidden":`true`}),o(n,`system.network.title`)]}),(0,V.jsx)(v,{children:o(n,`system.network.hint`)})]}),(0,V.jsxs)(x,{className:`space-y-3`,children:[(0,V.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[o(n,`system.network.current`),`:`,` `,(0,V.jsx)(`strong`,{"data-testid":`network-boundary-active`,children:n===`ko`&&D.label_ko||D.label})]}),(0,V.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":o(n,`system.network.title`),children:k.map(e=>{let t=e.id===j;return(0,V.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,"data-testid":`network-boundary-option-${e.id}`,onClick:()=>{a(e.id),c(!1),g.reset()},className:`w-full rounded-md border p-3 text-left transition ${t?`border-primary bg-accent`:`border-border hover:bg-accent/50`}`,children:[(0,V.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`strong`,{className:`text-sm`,children:re(e,n)}),(0,V.jsx)(O,{variant:H[e.risk]||`warning`,children:o(n,`system.permission.risk.${e.risk}`)}),e.id===A?(0,V.jsx)(O,{variant:`muted`,children:o(n,`system.network.current`)}):null]}),(0,V.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:U(e,n)})]},e.id)})}),N?(0,V.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,V.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,V.jsx)(F,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,V.jsx)(`span`,{children:M?W(M,n):``})]}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,V.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-ack`,checked:s,onChange:e=>c(e.target.checked)}),o(n,`system.network.ack`)]})]}):null,(0,V.jsx)(z,{"data-testid":`network-boundary-apply`,disabled:I||P||g.isPending,onClick:()=>g.mutate({mode:j,ack:s}),children:o(n,`system.network.apply`)}),g.data&&!g.data.ok?(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:g.data.error}):null,g.data?.ok?(0,V.jsx)(O,{variant:`success`,"data-testid":`network-boundary-applied`,children:o(n,`ui.requestCompleted`)}):null,(0,V.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:o(n,`system.network.preview.title`)}),(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(n,`system.network.preview.hint`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(`input`,{type:`text`,"data-testid":`network-boundary-probe`,value:l,onChange:e=>m(e.target.value),placeholder:o(n,`system.network.preview.placeholder`),className:`min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1 text-xs`}),(0,V.jsx)(z,{variant:`outline`,"data-testid":`network-boundary-preview`,disabled:!l.trim()||b.isPending,onClick:()=>b.mutate(l.trim()),children:o(n,`system.network.preview.run`)})]}),L?(0,V.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-boundary-preview-result`,children:[L.allows_cloud?null:(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(n,`system.network.preview.localOnly`)}),L.would_block?(0,V.jsx)(O,{variant:`danger`,children:o(n,`system.network.preview.blocked`)}):null,L.titles.length===0?(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(n,`system.network.preview.empty`)}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[o(n,`system.network.preview.count`,{count:L.titles.length}),` · `,o(n,`system.network.preview.tokens`,{tokens:L.token_estimate})]}),(0,V.jsx)(`ul`,{className:`space-y-0.5`,children:L.titles.map((e,t)=>{let r=L.node_ids[t],i=r?S.includes(r):!1;return(0,V.jsxs)(`li`,{className:`flex items-start justify-between gap-2 text-xs`,children:[(0,V.jsxs)(`span`,{className:i?`line-through opacity-60`:void 0,children:[`· `,e]}),r?(0,V.jsx)(`button`,{type:`button`,"data-testid":`network-boundary-hold-${t}`,className:`shrink-0 underline underline-offset-2 opacity-80 hover:opacity-100`,disabled:E.isPending,onClick:()=>E.mutate({nodeId:r,localOnly:!i}),children:o(n,i?`system.network.preview.release`:`system.network.preview.hold`)}):null]},`${r||e}-${t}`)})})]})]}):null,b.data&&!b.data.ok?(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:b.data.error}):null]}),D.allows_cloud?(0,V.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,"data-testid":`network-boundary-policy`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:o(n,`system.network.policy.title`)}),(0,V.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,V.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,V.jsxs)(`span`,{children:[o(n,`system.network.policy.autoCommit`),(0,V.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:o(n,`system.network.policy.autoCommitHint`)})]})]}),(0,V.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,V.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,V.jsxs)(`span`,{children:[o(n,`system.network.policy.multimodal`),(0,V.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:o(n,`system.network.policy.multimodalHint`)})]})]})]}):null,(0,V.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:o(n,`system.network.guards`)}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o(n,`system.network.guards.detail`)}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o(n,`system.network.preview.autoHeld`)})]})]})]})}var G={low:`success`,medium:`warning`,high:`danger`};function ae(){let e=u(),n=t(e=>e.language),[r,a]=B.useState(null),[s,c]=B.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`]}),a(null),c(!1))}}),h=l.data?.ok?l.data.data:void 0,g=h?.catalog??[],y=h?.mode??``,b=r??y,S=g.find(e=>e.id===b),T=!!S?.requires_ack&&b!==y,E=T&&!s,D=b===y;return l.isLoading?(0,V.jsxs)(C,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(p,{children:o(n,`system.permission.title`)})}),(0,V.jsx)(x,{children:(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(n,`ui.loading`)})})]}):!h||g.length===0?(0,V.jsxs)(C,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(p,{children:o(n,`system.permission.title`)})}),(0,V.jsx)(x,{children:(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:l.data?.error})})]}):(0,V.jsxs)(C,{"data-testid":`permission-mode-panel`,children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(n,`system.permission.title`)}),(0,V.jsx)(v,{children:o(n,`system.permission.hint`)})]}),(0,V.jsxs)(x,{className:`space-y-3`,children:[(0,V.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[o(n,`system.permission.current`),`:`,` `,(0,V.jsx)(`strong`,{"data-testid":`permission-mode-active`,children:P(h,n)})]}),(0,V.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":o(n,`system.permission.title`),children:g.map(e=>{let t=e.id===b;return(0,V.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,"data-testid":`permission-mode-option-${e.id}`,onClick:()=>{a(e.id),c(!1),m.reset()},className:`w-full rounded-md border p-3 text-left transition ${t?`border-primary bg-accent`:`border-border hover:bg-accent/50`}`,children:[(0,V.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`strong`,{className:`text-sm`,children:M(e,n)}),(0,V.jsx)(O,{variant:G[e.risk]||`warning`,children:o(n,`system.permission.risk.${e.risk}`)}),e.id===y?(0,V.jsx)(O,{variant:`muted`,children:o(n,`system.permission.current`)}):null]}),(0,V.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:N(e,n)})]},e.id)})}),T?(0,V.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,V.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,V.jsx)(F,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,V.jsx)(`span`,{children:S?j(S,n):``})]}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,V.jsx)(`input`,{type:`checkbox`,"data-testid":`permission-mode-ack`,checked:s,onChange:e=>c(e.target.checked)}),o(n,`system.permission.ack`)]})]}):null,(0,V.jsx)(z,{"data-testid":`permission-mode-apply`,disabled:D||E||m.isPending,onClick:()=>m.mutate({mode:b,ack:s}),children:o(n,`system.permission.apply`)}),m.data&&!m.data.ok?(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:m.data.error}):null,m.data?.ok?(0,V.jsx)(O,{variant:`success`,"data-testid":`permission-mode-applied`,children:o(n,`ui.requestCompleted`)}):null,(0,V.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:o(n,`system.permission.guards`)}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o(n,`system.permission.guards.detail`)})]})]})]})}var K=[{id:`identity`,labelKey:`system.group.identity`},{id:`data`,labelKey:`system.group.data`},{id:`system`,labelKey:`system.group.system`}],q=[{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 J({initialTab:e}){let n=t(e=>e.mode),r=t(e=>e.language),[i,a]=B.useState(e||`account`);B.useEffect(()=>{q.some(t=>t.id===e)&&a(e)},[e]);let s=n===`basic`?q.filter(e=>e.id===`account`||e.id===`workspaces`||e.id===`snapshots`||e.id===`settings`):q,c=e=>{a(e),L(`/`+{account:`account`,workspaces:`workspace-admin`,snapshots:`snapshots`,activity:`activity`,network:`network`,settings:`settings`,admin:`system-admin`}[e])};return(0,V.jsxs)(`div`,{className:`product-page settings-page space-y-5 pb-8`,children:[(0,V.jsxs)(`header`,{className:`page-hero`,children:[(0,V.jsxs)(`div`,{className:`page-kicker`,children:[(0,V.jsx)(R,{className:`h-4 w-4`}),` `,o(r,`system.kicker`)]}),(0,V.jsx)(`h1`,{className:`page-title`,children:o(r,`system.title`)}),(0,V.jsx)(`p`,{className:`page-copy`,children:o(r,`system.body`)})]}),(0,V.jsx)(`div`,{className:`flex flex-wrap items-end gap-x-6 gap-y-3`,"data-testid":`system-tab-groups`,children:K.map(e=>{let t=s.filter(t=>t.group===e.id);if(!t.length)return null;let n=`system-group-${e.id}`;return(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{id:n,className:`px-1 text-xs font-medium text-muted-foreground`,children:o(r,e.labelKey)}),(0,V.jsx)(g,{ariaLabelledBy:n,tabs:t.map(e=>({id:e.id,label:o(r,e.labelKey)})),value:i,onChange:e=>c(e)})]},e.id)})}),i===`account`?(0,V.jsx)(Y,{}):null,i===`workspaces`?(0,V.jsx)(Z,{}):null,i===`settings`?(0,V.jsx)(le,{}):null,i===`snapshots`?(0,V.jsx)(oe,{}):null,i===`activity`?(0,V.jsx)(se,{}):null,i===`network`?(0,V.jsx)(ce,{}):null,i===`admin`?(0,V.jsx)(_e,{}):null]})}function Y(){let e=u(),n=t(e=>e.language),r=t(e=>e.setWorkspaceId),a=d({queryKey:[`profile`],queryFn:i.profile}),s=d({queryKey:[`sso`],queryFn:i.ssoConfig}),[c,l]=B.useState(``),[g,y]=B.useState(``),[b,w]=B.useState(``),[T,D]=B.useState(``),[O,A]=B.useState(``),j=e=>{e.ok&&(te(),r(null))},M=f({mutationFn:()=>i.login(c,g),onSuccess:j}),N=f({mutationFn:()=>i.register({email:c,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,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,V.jsx)(S,{title:o(n,`system.account.profile`),result:a.data,children:e=>(0,V.jsx)(m,{data:e})}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,V.jsx)(ee,{className:`h-4 w-4`}),` `,o(n,`system.account.title`)]}),(0,V.jsx)(v,{children:o(n,`system.account.detail`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsx)(k,{value:c,onChange:e=>l(e.target.value),placeholder:o(n,`system.account.email`)}),(0,V.jsx)(k,{type:`password`,value:g,onChange:e=>y(e.target.value),placeholder:o(n,`system.account.password`)}),(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,V.jsx)(k,{value:b,onChange:e=>w(e.target.value),placeholder:o(n,`system.account.name`)}),(0,V.jsx)(k,{value:T,onChange:e=>D(e.target.value),placeholder:o(n,`system.account.nickname`)})]}),(0,V.jsx)(k,{type:`password`,value:O,onChange:e=>A(e.target.value),placeholder:o(n,`system.account.newPassword`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{onClick:()=>M.mutate(),disabled:!c||!g||M.isPending,children:o(n,`system.account.login`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>N.mutate(),disabled:!c||!g||N.isPending,children:o(n,`system.account.register`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>P.mutate(),disabled:P.isPending,children:o(n,`system.account.save`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>F.mutate(),disabled:!g||!O||F.isPending,children:o(n,`system.account.changePassword`)}),(0,V.jsx)(E,{label:o(n,`system.account.logout`),action:()=>i.logout(),onSuccess:j})]}),[M.data,N.data,P.data,F.data].filter(Boolean).map((e,t)=>(0,V.jsx)(h,{result:e,successLabel:o(n,`system.account.requestDone`)},t))]})]}),(0,V.jsx)(S,{title:o(n,`system.account.signInOptions`),result:s.data,className:`xl:col-span-2`,children:e=>(0,V.jsx)(X,{data:e})})]})}function X({data:e}){let n=t(e=>e.mode),r=t(e=>e.language),i=!!e.enabled||c(e.providers).length>0;return(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)($,{title:o(r,i?`system.account.signIn.sso`:`system.account.signIn.localOnly`),status:o(r,i?`system.value.enabled`:`system.storage.local.badge`),detail:o(r,i?`system.account.signIn.ssoDetail`:`system.account.signIn.localOnlyDetail`)}),n===`basic`?null:(0,V.jsx)(D,{value:e})]})}function Z(){let e=u(),n=t(e=>e.language),{setWorkspaceId:r}=t(),a=d({queryKey:[`workspaceRegistry`],queryFn:i.workspaceRegistry}),s=d({queryKey:[`invitations`],queryFn:i.invitations}),[l,m]=B.useState(``),[h,g]=B.useState(``),[b,w]=B.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`]})}),A=c(a.data?.data?.workspaces);return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.1fr_0.9fr]`,children:[(0,V.jsx)(S,{title:o(n,`system.workspace.yours`),result:a.data,children:()=>(0,V.jsx)(`div`,{className:`grid gap-2`,children:A.map(e=>{let t=String(e.workspace_id||e.id);return(0,V.jsx)(`div`,{className:`rounded-md border border-border p-3`,children:(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`font-medium`,children:String(e.name||t)}),(0,V.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[String(e.type||``),` · `,String(e.your_role||e.role||``)]})]}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{variant:`outline`,onClick:()=>r(t),children:o(n,`system.workspace.use`)}),(0,V.jsx)(E,{label:o(n,`system.workspace.activate`),action:()=>i.activateWorkspace(t),invalidate:[`workspaceRegistry`]}),(0,V.jsx)(E,{label:o(n,`system.workspace.archive`),action:()=>i.archiveWorkspace(t),invalidate:[`workspaceRegistry`],variant:`destructive`})]})]})},t)})})}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,V.jsx)(I,{className:`h-4 w-4`}),` `,o(n,`system.workspace.organizations`)]}),(0,V.jsx)(v,{children:o(n,`system.workspace.organizationsHint`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsx)(k,{value:l,onChange:e=>m(e.target.value),placeholder:o(n,`system.workspace.orgPlaceholder`)}),(0,V.jsx)(z,{disabled:!l.trim()||T.isPending,onClick:()=>T.mutate(),children:o(n,`system.workspace.createOrg`)}),(0,V.jsx)(k,{value:h,onChange:e=>g(e.target.value),placeholder:o(n,`system.workspace.inviteeEmail`)}),(0,V.jsx)(z,{variant:`outline`,disabled:D.isPending,onClick:()=>D.mutate(),children:o(n,`system.workspace.createInvite`)}),(0,V.jsx)(k,{value:b,onChange:e=>w(e.target.value),placeholder:o(n,`system.workspace.inviteToken`)}),(0,V.jsx)(z,{variant:`outline`,disabled:!b.trim()||O.isPending,onClick:()=>O.mutate(),children:o(n,`system.workspace.acceptInvite`)}),(0,V.jsx)(S,{title:o(n,`system.workspace.invitations`),result:s.data,children:e=>(0,V.jsx)(y,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function oe(){let e=t(e=>e.language),n=d({queryKey:[`snapshots`],queryFn:i.snapshots}),r=d({queryKey:[`timeMachine`],queryFn:i.timeMachine}),[a,s]=B.useState(``),[l,u]=B.useState(``),[m,g]=B.useState(``),b=f({mutationFn:()=>i.createSnapshot(a||o(e,`system.snapshots.defaultName`))}),w=f({mutationFn:()=>i.compareSnapshots(l,m)}),T=c(n.data?.data?.snapshots);return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,V.jsx)(S,{title:o(e,`system.snapshots.title`),result:n.data,children:()=>(0,V.jsx)(`div`,{className:`space-y-2`,children:T.map(t=>{let n=String(t.id||t.snapshot_id);return(0,V.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,V.jsx)(`div`,{className:`font-medium`,children:String(t.name||n)}),(0,V.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,V.jsx)(E,{label:o(e,`system.snapshots.export`),action:()=>i.exportSnapshot(n)}),(0,V.jsx)(E,{label:o(e,`system.snapshots.mergeRestore`),action:()=>i.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(e,`system.snapshots.actions`)}),(0,V.jsx)(v,{children:o(e,`system.snapshots.actionsHint`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsx)(k,{value:a,onChange:e=>s(e.target.value),placeholder:o(e,`system.snapshots.namePlaceholder`)}),(0,V.jsx)(z,{onClick:()=>b.mutate(),disabled:b.isPending,children:o(e,`system.snapshots.create`)}),(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,V.jsx)(k,{value:l,onChange:e=>u(e.target.value),placeholder:o(e,`system.snapshots.beforeId`)}),(0,V.jsx)(k,{value:m,onChange:e=>g(e.target.value),placeholder:o(e,`system.snapshots.afterId`)})]}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>w.mutate(),disabled:!l||!m||w.isPending,children:o(e,`system.snapshots.compare`)}),w.data?(0,V.jsx)(h,{result:w.data,successLabel:o(e,`system.snapshots.compareDone`)}):null]})]}),(0,V.jsx)(S,{title:o(e,`system.snapshots.timeline`),result:r.data,className:`xl:col-span-2`,children:e=>(0,V.jsx)(y,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function se(){let e=t(e=>e.language),n=d({queryKey:[`realtimeFeed`],queryFn:i.realtimeFeed}),r=d({queryKey:[`presence`],queryFn:i.presence});return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,V.jsx)(S,{title:o(e,`system.activity.feed`),result:n.data,children:e=>(0,V.jsx)(y,{items:e.events,titleKey:`event_type`,metaKey:`area`,limit:14})}),(0,V.jsx)(S,{title:o(e,`system.activity.presence`),result:r.data,children:e=>(0,V.jsx)(ue,{data:e})})]})}function ce(){let e=u(),n=t(e=>e.language),r=d({queryKey:[`networkIdentity`],queryFn:i.networkIdentity}),a=d({queryKey:[`networkPeers`],queryFn:i.networkPeers}),[s,l]=B.useState(``),[m,g]=B.useState(``),[y,b]=B.useState(``),w=f({mutationFn:()=>i.pairPeer({name:s,base_url:m,public_key:y}),onSuccess:()=>e.invalidateQueries({queryKey:[`networkPeers`]})});return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[0.8fr_1.2fr]`,children:[(0,V.jsx)(S,{title:o(n,`system.network.identity`),result:r.data,children:e=>(0,V.jsx)(de,{data:e})}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,V.jsx)(A,{className:`h-4 w-4`}),` `,o(n,`system.network.pair`)]}),(0,V.jsx)(v,{children:o(n,`system.network.pairHint`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsx)(k,{value:s,onChange:e=>l(e.target.value),placeholder:o(n,`system.network.deviceName`)}),(0,V.jsx)(k,{value:m,onChange:e=>g(e.target.value),placeholder:o(n,`system.network.address`)}),(0,V.jsx)(k,{value:y,onChange:e=>b(e.target.value),placeholder:o(n,`system.network.publicKey`)}),(0,V.jsx)(z,{disabled:!s||!m||!y||w.isPending,onClick:()=>w.mutate(),children:o(n,`system.network.pair`)}),w.data?(0,V.jsx)(h,{result:w.data,successLabel:o(n,`system.network.pairDone`)}):null]})]}),(0,V.jsx)(S,{title:o(n,`system.network.peers`),result:a.data,className:`xl:col-span-2`,children:e=>(0,V.jsx)(`div`,{className:`grid gap-2`,children:c(e.peers).map(e=>{let r=String(e.peer_id||e.id);return(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`font-medium`,children:String(e.name||r)}),(0,V.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.base_url||``)})]}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(E,{label:o(n,`system.network.pushWorkspace`),action:()=>i.pushPeer(r,t.getState().workspaceId)}),(0,V.jsx)(E,{label:o(n,`system.network.unpair`),action:()=>i.unpairPeer(r),invalidate:[`networkPeers`],variant:`destructive`})]})]},r)})})})]})}function le(){let e=u(),{theme:n,setTheme:r,mode:a,setMode:s}=t(),c=t(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}),w=d({queryKey:[`backupHealth`],queryFn:i.backupHealth}),[T,O]=B.useState(``),[A,j]=B.useState(`lattice_brain`),[M,N]=B.useState(!1),[P,F]=B.useState(``),[I,ee]=B.useState(``),[L,te]=B.useState(``),[R,ne]=B.useState(!1),[H,re]=B.useState(!1),U=f({mutationFn:e=>i.dockerPostgres({consent:e,dry_run:!e,port:5432})}),W=f({mutationFn:()=>i.migratePostgres({dsn:T,schema_name:A||`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:H}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}});return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-3`,children:[(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(c,`system.panel.appearance`)}),(0,V.jsx)(v,{children:o(c,`system.panel.appearance.hint`)})]}),(0,V.jsxs)(x,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{variant:n===`dark`?`default`:`outline`,onClick:()=>r(`dark`),children:o(c,`system.theme.dark`)}),(0,V.jsx)(z,{variant:n===`light`?`default`:`outline`,onClick:()=>r(`light`),children:o(c,`system.theme.light`)})]})]}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(c,`system.panel.detailLevel`)}),(0,V.jsx)(v,{children:o(c,`system.panel.detailLevel.hint`)})]}),(0,V.jsx)(x,{className:`flex flex-wrap gap-2`,children:[`basic`,`advanced`,`admin`].map(e=>(0,V.jsx)(z,{variant:a===e?`default`:`outline`,onClick:()=>s(e),children:o(c,`shell.mode.${e}`)},e))})]}),(0,V.jsx)(ae,{}),(0,V.jsx)(ie,{}),(0,V.jsx)(S,{title:a===`basic`?o(c,`system.panel.brainStatus`):o(c,`system.panel.serverHealth`),result:l.data,children:e=>(0,V.jsx)(fe,{data:e})}),(0,V.jsx)(S,{title:a===`basic`?o(c,`system.panel.readiness`):o(c,`system.panel.hostTelemetry`),result:m.data,children:e=>a===`basic`?(0,V.jsx)(b,{stats:[{label:o(c,`system.stat.cpu`),value:`${String(e.cpu_pct||`0`)}%`},{label:o(c,`system.stat.memory`),value:`${String(e.ram_pct||`0`)}%`},{label:o(c,`system.stat.gpu`),value:`${String(e.gpu_mem_pct||`0`)}%`},{label:o(c,`system.stat.localStatus`),value:o(c,`system.stat.ready`)}]}):(0,V.jsx)(D,{value:e})}),(0,V.jsx)(S,{title:a===`basic`?o(c,`system.storage.title`):o(c,`system.panel.brainStorage`),result:y.data,className:`xl:col-span-3`,children:e=>(0,V.jsx)(pe,{data:e,mode:a,language:c})}),a===`basic`?null:(0,V.jsx)(S,{title:o(c,`system.backup.health`),result:w.data,className:`xl:col-span-3`,children:e=>(0,V.jsx)(me,{data:e})}),a===`basic`?null:(0,V.jsxs)(C,{className:`xl:col-span-3`,children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(c,`system.archive.title`)}),(0,V.jsx)(v,{children:o(c,`system.archive.detail`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_1fr]`,children:[(0,V.jsx)(k,{value:P,onChange:e=>F(e.target.value),placeholder:o(c,`system.archive.exportPath`)}),(0,V.jsx)(k,{value:I,onChange:e=>ee(e.target.value),placeholder:o(c,`system.archive.restorePath`)})]}),(0,V.jsx)(k,{type:`password`,value:L,onChange:e=>te(e.target.value),placeholder:o(c,`system.archive.passphrase`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{onClick:()=>G.mutate(),disabled:!L||G.isPending,children:o(c,`system.archive.export`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>K.mutate(),disabled:!I||K.isPending,children:o(c,`system.archive.inspect`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>q.mutate(),disabled:!I||!L||q.isPending,children:o(c,`system.archive.verify`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>J.mutate(),disabled:!I||!L||J.isPending,children:o(c,`system.archive.restoreDryRun`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>X.mutate(),disabled:!I||!L||X.isPending,children:o(c,`system.archive.importDryRun`)}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:R,onChange:e=>ne(e.target.checked)}),o(c,`system.archive.confirmRestore`)]}),(0,V.jsx)(z,{variant:`destructive`,onClick:()=>Y.mutate(),disabled:!I||!L||!R||Y.isPending,children:o(c,`system.archive.restore`)}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:H,onChange:e=>re(e.target.checked)}),o(c,`system.archive.confirmImport`)]}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>Z.mutate(),disabled:!I||!L||!H||Z.isPending,children:o(c,`system.archive.import`)})]}),[G.data,K.data,q.data,J.data,Y.data,X.data,Z.data].filter(Boolean).map((e,t)=>(0,V.jsx)(h,{result:e,successLabel:o(c,`system.archive.requestDone`)},t))]})]}),a===`basic`?null:(0,V.jsxs)(C,{className:`xl:col-span-3`,children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(c,`system.scale.title`)}),(0,V.jsx)(v,{children:o(c,`system.scale.detail`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_220px]`,children:[(0,V.jsx)(k,{value:T,onChange:e=>O(e.target.value),placeholder:o(c,`system.scale.dsn`)}),(0,V.jsx)(k,{value:A,onChange:e=>j(e.target.value),placeholder:o(c,`system.scale.schema`)})]}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{variant:`outline`,onClick:()=>U.mutate(!1),disabled:U.isPending,children:o(c,`system.scale.dockerPlan`)}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>N(e.target.checked)}),o(c,`system.scale.dockerConsent`)]}),(0,V.jsx)(z,{onClick:()=>U.mutate(!0),disabled:!M||U.isPending,children:o(c,`system.scale.dockerStart`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>W.mutate(),disabled:!T||W.isPending,children:o(c,`system.scale.migrationPlan`)})]}),U.data?(0,V.jsx)(h,{result:U.data,successLabel:o(c,`system.scale.dockerDone`)}):null,W.data?(0,V.jsx)(h,{result:W.data,successLabel:o(c,`system.scale.migrationDone`)}):null]})]}),a===`basic`?null:(0,V.jsx)(S,{title:o(c,`system.computerMemory.title`),result:g.data,className:`xl:col-span-3`,children:e=>(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(D,{value:e}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(E,{label:o(c,`system.computerMemory.enable`),action:()=>i.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,V.jsx)(E,{label:o(c,`system.computerMemory.disable`),action:()=>i.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function Q(e,t,n=o(e,`system.value.notReported`)){return t==null||t===``?n:typeof t==`boolean`?o(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function ue({data:e}){let n=t(e=>e.language),r=c(e.presence||e.clients||e);return r.length?(0,V.jsx)(y,{items:r,titleKey:`user`,metaKey:`workspace_id`}):(0,V.jsx)(w,{title:o(n,`system.presence.empty`),detail:o(n,`system.presence.emptyDetail`)})}function de({data:e}){let n=t(e=>e.mode),i=t(e=>e.language),a=Q(i,e.public_key,``);return n===`basic`?(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)($,{title:o(i,`system.device.thisMac`),status:o(i,`system.value.trusted`),detail:o(i,`system.device.thisMacDetail`)}),(0,V.jsx)(O,{variant:`muted`,children:Q(i,e.algorithm,o(i,`system.value.localIdentity`))})]}):(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,V.jsx)(O,{variant:`success`,children:o(i,`system.value.localDevice`)}),(0,V.jsx)(O,{variant:`muted`,children:Q(i,e.algorithm,o(i,`system.value.identityKey`))})]}),(0,V.jsx)(m,{data:{device_id:e.device_id||e.id||o(i,`system.value.notReported`),fingerprint:e.fingerprint||o(i,`system.value.notReported`),public_key:a?r(a.replace(/\s+/g,` `),72):o(i,`system.value.notReported`)}})]})}function fe({data:e}){let n=t(e=>e.mode),r=t(e=>e.language);return n===`basic`?(0,V.jsx)($,{title:o(r,`system.health.title`),status:o(r,`system.health.ok`),detail:o(r,`system.health.detail`)}):(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(b,{stats:[{label:o(r,`system.health.status`),value:e.status||e.ok||o(r,`system.value.reported`)},{label:o(r,`system.health.version`),value:e.version||o(r,`system.value.notReported`)},{label:o(r,`system.health.mode`),value:e.mode||e.environment||o(r,`system.value.local`)},{label:o(r,`system.health.port`),value:e.port||e.backend_port||o(r,`system.value.configured`)}]}),(0,V.jsx)(D,{value:e})]})}function pe({data:e,mode:t=`advanced`,language:n=`en`}){let r=s(e.active)?e.active:e,i=s(e.postgres)?e.postgres:{},a=s(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,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)($,{title:o(n,`system.storage.local.title`),status:o(n,`system.storage.local.badge`),detail:o(n,`system.storage.local.detail`)}),(0,V.jsx)($,{title:o(n,`system.storage.search.title`),status:u?o(n,`system.storage.search.on`):o(n,`system.storage.search.pending`),detail:u?o(n,`system.storage.search.detailOn`):o(n,`system.storage.search.detailPending`)})]}):(0,V.jsxs)(`div`,{className:`space-y-4`,children:[(0,V.jsx)(b,{stats:[{label:o(n,`system.storage.activeEngine`),value:r.engine||e.engine||o(n,`system.storage.sqlite`)},{label:o(n,`system.storage.sqliteDefault`),value:r.engine===`postgres`?o(n,`system.value.scaleMode`):o(n,`system.value.enabled`)},{label:o(n,`system.storage.vector`),value:c||o(n,`system.value.notReported`)},{label:o(n,`system.storage.postgres`),value:l?o(n,`system.value.available`):o(n,`system.value.optional`)}]}),(0,V.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,V.jsx)($,{title:o(n,`system.storage.sqlite`),status:r.available===!1?o(n,`system.value.unavailable`):o(n,`system.value.default`),detail:Q(n,r.reason||r.path||e.path,o(n,`system.storage.sqliteDetail`))}),(0,V.jsx)($,{title:o(n,`system.storage.vector`),status:Q(n,c,o(n,`system.value.reported`)),detail:Q(n,r.vector_reason||r.sqlite_vec_reason||e.vector_reason,o(n,`system.storage.vectorDetail`))}),(0,V.jsx)($,{title:o(n,`system.storage.postgres`),status:l?o(n,`system.value.available`):o(n,`system.value.notEnabled`),detail:Q(n,i.reason||i.dsn||i.status,o(n,`system.storage.postgresDetail`))})]}),Object.keys(a).length?(0,V.jsx)(D,{value:{backup_health:a}}):null]})}function me({data:e}){let n=t(e=>e.language);return(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(b,{stats:[{label:o(n,`system.backup.available`),value:e.available===!1?o(n,`system.value.no`):o(n,`system.value.yes`)},{label:o(n,`system.backup.backups`),value:e.count||e.backups||0},{label:o(n,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:o(n,`system.backup.zip`),value:e.zip_backups||0}]}),(0,V.jsx)(m,{data:{directory:e.directory||o(n,`system.value.notReported`),latest:e.latest||o(n,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||o(n,`system.value.notReported`),failure:e.error||e.reason||o(n,`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,V.jsxs)(`div`,{className:`rounded-md border border-border bg-background p-3`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,V.jsx)(`div`,{className:`font-medium`,children:e}),(0,V.jsx)(O,{variant:r,children:t})]}),(0,V.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:n})]})}function he({data:e}){let n=t(e=>e.language),r=s(e.startup)?e.startup:{},i=s(e.privacy)?e.privacy:{},a=s(e.storage)?e.storage:{},c=s(e.backup)?e.backup:{},l=s(e.device_identity)?e.device_identity:{},u=s(e.permissions)?e.permissions:{};return(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(b,{stats:[{label:o(n,`system.hardening.version`),value:e.version||o(n,`system.value.reported`)},{label:o(n,`system.hardening.localOnly`),value:i.local_only_default??r.local_only_default??o(n,`system.value.reported`)},{label:o(n,`system.hardening.storage`),value:s(a.active)?a.active.engine:o(n,`system.value.reported`)},{label:o(n,`system.hardening.backups`),value:c.count||c.available||o(n,`system.value.reported`)}]}),(0,V.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,V.jsx)($,{title:o(n,`system.hardening.startup`),status:o(n,r.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:o(n,`system.hardening.startupDetail`)}),(0,V.jsx)($,{title:o(n,`system.hardening.integrations`),status:o(n,i.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:o(n,`system.hardening.integrationsDetail`)}),(0,V.jsx)($,{title:o(n,`system.hardening.identity`),status:Q(n,l.algorithm||l.fingerprint,o(n,`system.value.reported`)),detail:Q(n,l.storage,o(n,`system.hardening.identityStorage`))}),(0,V.jsx)($,{title:o(n,`system.hardening.permissions`),status:o(n,u.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:o(n,`system.hardening.permissionsDetail`)})]})]})}function ge({data:e}){let n=t(e=>e.language),r=s(e.cards)?e.cards:{},i=s(e.severity_counts)?e.severity_counts:{};return(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(b,{stats:[{label:o(n,`system.security.eventsToday`),value:r.events_today||0},{label:o(n,`system.security.highRisk`),value:r.high_risk_events||i.high||0},{label:o(n,`system.security.review`),value:r.review_required||0},{label:o(n,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,V.jsx)(D,{value:{severity_counts:i,sensitive_fields:e.field_counts||{}}})]})}function _e(){let e=t(e=>e.mode),n=t(e=>e.language),r=d({queryKey:[`adminSummary`],queryFn:i.adminSummary}),a=d({queryKey:[`adminUsers`],queryFn:i.adminUsers}),s=d({queryKey:[`adminAudit`],queryFn:()=>i.adminAudit()}),c=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,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,V.jsx)(S,{title:o(n,`system.admin.summary`),result:r.data,children:e=>(0,V.jsx)(m,{data:e})}),(0,V.jsx)(S,{title:o(n,`system.admin.users`),result:a.data,children:e=>(0,V.jsx)(y,{items:e,titleKey:`email`,metaKey:`role`})}),(0,V.jsx)(S,{title:o(n,`system.admin.audit`),result:s.data,children:e=>(0,V.jsx)(y,{items:e.recent_events||e,titleKey:`act`,metaKey:`sev`})}),(0,V.jsx)(S,{title:o(n,`system.admin.roles`),result:c.data,children:e=>(0,V.jsx)(y,{items:e.roles||e,titleKey:`role`,metaKey:`members`})}),(0,V.jsx)(S,{title:o(n,`system.admin.policies`),result:l.data,children:e=>(0,V.jsx)(y,{items:e.policies||e,titleKey:`label`,metaKey:`enforced`})}),(0,V.jsx)(S,{title:o(n,`system.admin.hardening`),result:u.data,children:e=>(0,V.jsx)(he,{data:e})}),(0,V.jsx)(S,{title:o(n,`system.admin.security`),result:f.data,children:e=>(0,V.jsx)(ge,{data:e})}),(0,V.jsx)(S,{title:o(n,`system.admin.vpc`),result:p.data,className:`xl:col-span-2`,children:e=>(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(O,{variant:`muted`,children:o(n,`system.admin.communityUnavailable`)}),(0,V.jsx)(D,{value:e})]})})]}):(0,V.jsx)(T,{title:o(n,`system.admin.controls`),detail:o(n,`system.admin.controlsDetail`),target:`admin`})}export{J as SystemPage};
1
+ import{S as e,_ as t,b as n,c as r,d as i,g as a,m as o,o as s,t as c,y as l}from"./utils-fEGWreKB.js";import{r as u,t as d}from"./useQuery-CT2ChyuU.js";import{t as f}from"./workspace-ClDBz_0f.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-CEMTjBz1.js";import{t as k}from"./input-DrMc0Xns.js";import{a as A,i as j,n as M,r as N,t as P}from"./permissionCopy-BGUsI7vw.js";import{t as F}from"./shield-alert-BoU4_8r9.js";import{t as I}from"./users-DlbfHBQV.js";import{h as ee,i as L,t as te,u as R}from"./index-mLP0-YNO.js";import{t as z}from"./button-DPFZ9lGw.js";var ne=a(`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=e(n()),V=l(),H={low:`success`,medium:`warning`,high:`danger`};function re(e,t){return t===`ko`&&e.label_ko||e.label}function U(e,t){return t===`ko`&&e.summary_ko||e.summary}function W(e,t){return t===`ko`&&e.warning_ko||e.warning||``}function ie(){let e=u(),n=t(e=>e.language),[r,a]=B.useState(null),[s,c]=B.useState(!1),[l,m]=B.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`]}),a(null),c(!1))}}),y=f({mutationFn:e=>i.setHybridPolicy(e),onSuccess:()=>e.invalidateQueries({queryKey:[`networkBoundary`]})}),b=f({mutationFn:e=>i.previewCloudContext(e)}),[S,T]=B.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=r??A,M=k.find(e=>e.id===j),N=!!M?.requires_ack&&j!==A,P=N&&!s,I=j===A,ee=D?.policy??{},L=b.data?.ok?b.data.data:void 0;return h.isLoading?(0,V.jsxs)(C,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(p,{children:o(n,`system.network.title`)})}),(0,V.jsx)(x,{children:(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(n,`ui.loading`)})})]}):!D||k.length===0?(0,V.jsxs)(C,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(p,{children:o(n,`system.network.title`)})}),(0,V.jsx)(x,{children:(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:h.data?.error})})]}):(0,V.jsxs)(C,{"data-testid":`network-boundary-panel`,children:[(0,V.jsxs)(_,{children:[(0,V.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,V.jsx)(ne,{className:`h-4 w-4`,"aria-hidden":`true`}),o(n,`system.network.title`)]}),(0,V.jsx)(v,{children:o(n,`system.network.hint`)})]}),(0,V.jsxs)(x,{className:`space-y-3`,children:[(0,V.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[o(n,`system.network.current`),`:`,` `,(0,V.jsx)(`strong`,{"data-testid":`network-boundary-active`,children:n===`ko`&&D.label_ko||D.label})]}),(0,V.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":o(n,`system.network.title`),children:k.map(e=>{let t=e.id===j;return(0,V.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,"data-testid":`network-boundary-option-${e.id}`,onClick:()=>{a(e.id),c(!1),g.reset()},className:`w-full rounded-md border p-3 text-left transition ${t?`border-primary bg-accent`:`border-border hover:bg-accent/50`}`,children:[(0,V.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`strong`,{className:`text-sm`,children:re(e,n)}),(0,V.jsx)(O,{variant:H[e.risk]||`warning`,children:o(n,`system.permission.risk.${e.risk}`)}),e.id===A?(0,V.jsx)(O,{variant:`muted`,children:o(n,`system.network.current`)}):null]}),(0,V.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:U(e,n)})]},e.id)})}),N?(0,V.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,V.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,V.jsx)(F,{className:`mt-0.5 h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,V.jsx)(`span`,{children:M?W(M,n):``})]}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,V.jsx)(`input`,{type:`checkbox`,"data-testid":`network-boundary-ack`,checked:s,onChange:e=>c(e.target.checked)}),o(n,`system.network.ack`)]})]}):null,(0,V.jsx)(z,{"data-testid":`network-boundary-apply`,disabled:I||P||g.isPending,onClick:()=>g.mutate({mode:j,ack:s}),children:o(n,`system.network.apply`)}),g.data&&!g.data.ok?(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:g.data.error}):null,g.data?.ok?(0,V.jsx)(O,{variant:`success`,"data-testid":`network-boundary-applied`,children:o(n,`ui.requestCompleted`)}):null,(0,V.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:o(n,`system.network.preview.title`)}),(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(n,`system.network.preview.hint`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(`input`,{type:`text`,"data-testid":`network-boundary-probe`,value:l,onChange:e=>m(e.target.value),placeholder:o(n,`system.network.preview.placeholder`),className:`min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1 text-xs`}),(0,V.jsx)(z,{variant:`outline`,"data-testid":`network-boundary-preview`,disabled:!l.trim()||b.isPending,onClick:()=>b.mutate(l.trim()),children:o(n,`system.network.preview.run`)})]}),L?(0,V.jsxs)(`div`,{className:`space-y-1`,"data-testid":`network-boundary-preview-result`,children:[L.allows_cloud?null:(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(n,`system.network.preview.localOnly`)}),L.would_block?(0,V.jsx)(O,{variant:`danger`,children:o(n,`system.network.preview.blocked`)}):null,L.titles.length===0?(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(n,`system.network.preview.empty`)}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[o(n,`system.network.preview.count`,{count:L.titles.length}),` · `,o(n,`system.network.preview.tokens`,{tokens:L.token_estimate})]}),(0,V.jsx)(`ul`,{className:`space-y-0.5`,children:L.titles.map((e,t)=>{let r=L.node_ids[t],i=r?S.includes(r):!1;return(0,V.jsxs)(`li`,{className:`flex items-start justify-between gap-2 text-xs`,children:[(0,V.jsxs)(`span`,{className:i?`line-through opacity-60`:void 0,children:[`· `,e]}),r?(0,V.jsx)(`button`,{type:`button`,"data-testid":`network-boundary-hold-${t}`,className:`shrink-0 underline underline-offset-2 opacity-80 hover:opacity-100`,disabled:E.isPending,onClick:()=>E.mutate({nodeId:r,localOnly:!i}),children:o(n,i?`system.network.preview.release`:`system.network.preview.hold`)}):null]},`${r||e}-${t}`)})})]})]}):null,b.data&&!b.data.ok?(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:b.data.error}):null]}),D.allows_cloud?(0,V.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border p-3`,"data-testid":`network-boundary-policy`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:o(n,`system.network.policy.title`)}),(0,V.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,V.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,V.jsxs)(`span`,{children:[o(n,`system.network.policy.autoCommit`),(0,V.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:o(n,`system.network.policy.autoCommitHint`)})]})]}),(0,V.jsxs)(`label`,{className:`flex items-start gap-2 text-xs`,children:[(0,V.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,V.jsxs)(`span`,{children:[o(n,`system.network.policy.multimodal`),(0,V.jsx)(`span`,{className:`mt-0.5 block text-muted-foreground`,children:o(n,`system.network.policy.multimodalHint`)})]})]})]}):null,(0,V.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:o(n,`system.network.guards`)}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o(n,`system.network.guards.detail`)}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o(n,`system.network.preview.autoHeld`)})]})]})]})}var G={low:`success`,medium:`warning`,high:`danger`};function ae(){let e=u(),n=t(e=>e.language),[r,a]=B.useState(null),[s,c]=B.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`]}),a(null),c(!1))}}),h=l.data?.ok?l.data.data:void 0,g=h?.catalog??[],y=h?.mode??``,b=r??y,S=g.find(e=>e.id===b),T=!!S?.requires_ack&&b!==y,E=T&&!s,D=b===y;return l.isLoading?(0,V.jsxs)(C,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(p,{children:o(n,`system.permission.title`)})}),(0,V.jsx)(x,{children:(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(n,`ui.loading`)})})]}):!h||g.length===0?(0,V.jsxs)(C,{children:[(0,V.jsx)(_,{children:(0,V.jsx)(p,{children:o(n,`system.permission.title`)})}),(0,V.jsx)(x,{children:(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:l.data?.error})})]}):(0,V.jsxs)(C,{"data-testid":`permission-mode-panel`,children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(n,`system.permission.title`)}),(0,V.jsx)(v,{children:o(n,`system.permission.hint`)})]}),(0,V.jsxs)(x,{className:`space-y-3`,children:[(0,V.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[o(n,`system.permission.current`),`:`,` `,(0,V.jsx)(`strong`,{"data-testid":`permission-mode-active`,children:P(h,n)})]}),(0,V.jsx)(`div`,{className:`space-y-2`,role:`radiogroup`,"aria-label":o(n,`system.permission.title`),children:g.map(e=>{let t=e.id===b;return(0,V.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,"data-testid":`permission-mode-option-${e.id}`,onClick:()=>{a(e.id),c(!1),m.reset()},className:`w-full rounded-md border p-3 text-left transition ${t?`border-primary bg-accent`:`border-border hover:bg-accent/50`}`,children:[(0,V.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`strong`,{className:`text-sm`,children:M(e,n)}),(0,V.jsx)(O,{variant:G[e.risk]||`warning`,children:o(n,`system.permission.risk.${e.risk}`)}),e.id===y?(0,V.jsx)(O,{variant:`muted`,children:o(n,`system.permission.current`)}):null]}),(0,V.jsx)(`p`,{className:`mt-1 block text-xs text-muted-foreground`,children:N(e,n)})]},e.id)})}),T?(0,V.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-muted p-3`,children:[(0,V.jsxs)(`p`,{className:`flex items-start gap-2 text-xs`,children:[(0,V.jsx)(F,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,V.jsx)(`span`,{children:S?j(S,n):``})]}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 text-xs`,children:[(0,V.jsx)(`input`,{type:`checkbox`,"data-testid":`permission-mode-ack`,checked:s,onChange:e=>c(e.target.checked)}),o(n,`system.permission.ack`)]})]}):null,(0,V.jsx)(z,{"data-testid":`permission-mode-apply`,disabled:D||E||m.isPending,onClick:()=>m.mutate({mode:b,ack:s}),children:o(n,`system.permission.apply`)}),m.data&&!m.data.ok?(0,V.jsx)(w,{title:o(n,`ui.requestUnavailable`),detail:m.data.error}):null,m.data?.ok?(0,V.jsx)(O,{variant:`success`,"data-testid":`permission-mode-applied`,children:o(n,`ui.requestCompleted`)}):null,(0,V.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:o(n,`system.permission.guards`)}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o(n,`system.permission.guards.detail`)})]})]})]})}var K=[{id:`identity`,labelKey:`system.group.identity`},{id:`data`,labelKey:`system.group.data`},{id:`system`,labelKey:`system.group.system`}],q=[{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 J({initialTab:e}){let n=t(e=>e.mode),r=t(e=>e.language),[i,a]=B.useState(e||`account`);B.useEffect(()=>{q.some(t=>t.id===e)&&a(e)},[e]);let s=n===`basic`?q.filter(e=>e.id===`account`||e.id===`workspaces`||e.id===`snapshots`||e.id===`settings`):q,c=e=>{a(e),L(`/`+{account:`account`,workspaces:`workspace-admin`,snapshots:`snapshots`,activity:`activity`,network:`network`,settings:`settings`,admin:`system-admin`}[e])};return(0,V.jsxs)(`div`,{className:`product-page settings-page space-y-5 pb-8`,children:[(0,V.jsxs)(`header`,{className:`page-hero`,children:[(0,V.jsxs)(`div`,{className:`page-kicker`,children:[(0,V.jsx)(R,{className:`h-4 w-4`}),` `,o(r,`system.kicker`)]}),(0,V.jsx)(`h1`,{className:`page-title`,children:o(r,`system.title`)}),(0,V.jsx)(`p`,{className:`page-copy`,children:o(r,`system.body`)})]}),(0,V.jsx)(`div`,{className:`flex flex-wrap items-end gap-x-6 gap-y-3`,"data-testid":`system-tab-groups`,children:K.map(e=>{let t=s.filter(t=>t.group===e.id);if(!t.length)return null;let n=`system-group-${e.id}`;return(0,V.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,V.jsx)(`span`,{id:n,className:`px-1 text-xs font-medium text-muted-foreground`,children:o(r,e.labelKey)}),(0,V.jsx)(g,{ariaLabelledBy:n,tabs:t.map(e=>({id:e.id,label:o(r,e.labelKey)})),value:i,onChange:e=>c(e)})]},e.id)})}),i===`account`?(0,V.jsx)(Y,{}):null,i===`workspaces`?(0,V.jsx)(Z,{}):null,i===`settings`?(0,V.jsx)(le,{}):null,i===`snapshots`?(0,V.jsx)(oe,{}):null,i===`activity`?(0,V.jsx)(se,{}):null,i===`network`?(0,V.jsx)(ce,{}):null,i===`admin`?(0,V.jsx)(_e,{}):null]})}function Y(){let e=u(),n=t(e=>e.language),r=t(e=>e.setWorkspaceId),a=d({queryKey:[`profile`],queryFn:i.profile}),s=d({queryKey:[`sso`],queryFn:i.ssoConfig}),[c,l]=B.useState(``),[g,y]=B.useState(``),[b,w]=B.useState(``),[T,D]=B.useState(``),[O,A]=B.useState(``),j=e=>{e.ok&&(te(),r(null))},M=f({mutationFn:()=>i.login(c,g),onSuccess:j}),N=f({mutationFn:()=>i.register({email:c,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,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,V.jsx)(S,{title:o(n,`system.account.profile`),result:a.data,children:e=>(0,V.jsx)(m,{data:e})}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,V.jsx)(ee,{className:`h-4 w-4`}),` `,o(n,`system.account.title`)]}),(0,V.jsx)(v,{children:o(n,`system.account.detail`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsx)(k,{value:c,onChange:e=>l(e.target.value),placeholder:o(n,`system.account.email`)}),(0,V.jsx)(k,{type:`password`,value:g,onChange:e=>y(e.target.value),placeholder:o(n,`system.account.password`)}),(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,V.jsx)(k,{value:b,onChange:e=>w(e.target.value),placeholder:o(n,`system.account.name`)}),(0,V.jsx)(k,{value:T,onChange:e=>D(e.target.value),placeholder:o(n,`system.account.nickname`)})]}),(0,V.jsx)(k,{type:`password`,value:O,onChange:e=>A(e.target.value),placeholder:o(n,`system.account.newPassword`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{onClick:()=>M.mutate(),disabled:!c||!g||M.isPending,children:o(n,`system.account.login`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>N.mutate(),disabled:!c||!g||N.isPending,children:o(n,`system.account.register`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>P.mutate(),disabled:P.isPending,children:o(n,`system.account.save`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>F.mutate(),disabled:!g||!O||F.isPending,children:o(n,`system.account.changePassword`)}),(0,V.jsx)(E,{label:o(n,`system.account.logout`),action:()=>i.logout(),onSuccess:j})]}),[M.data,N.data,P.data,F.data].filter(Boolean).map((e,t)=>(0,V.jsx)(h,{result:e,successLabel:o(n,`system.account.requestDone`)},t))]})]}),(0,V.jsx)(S,{title:o(n,`system.account.signInOptions`),result:s.data,className:`xl:col-span-2`,children:e=>(0,V.jsx)(X,{data:e})})]})}function X({data:e}){let n=t(e=>e.mode),r=t(e=>e.language),i=!!e.enabled||c(e.providers).length>0;return(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)($,{title:o(r,i?`system.account.signIn.sso`:`system.account.signIn.localOnly`),status:o(r,i?`system.value.enabled`:`system.storage.local.badge`),detail:o(r,i?`system.account.signIn.ssoDetail`:`system.account.signIn.localOnlyDetail`)}),n===`basic`?null:(0,V.jsx)(D,{value:e})]})}function Z(){let e=u(),n=t(e=>e.language),{setWorkspaceId:r}=t(),a=d({queryKey:[`workspaceRegistry`],queryFn:i.workspaceRegistry}),s=d({queryKey:[`invitations`],queryFn:i.invitations}),[l,m]=B.useState(``),[h,g]=B.useState(``),[b,w]=B.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`]})}),A=c(a.data?.data?.workspaces);return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.1fr_0.9fr]`,children:[(0,V.jsx)(S,{title:o(n,`system.workspace.yours`),result:a.data,children:()=>(0,V.jsx)(`div`,{className:`grid gap-2`,children:A.map(e=>{let t=String(e.workspace_id||e.id);return(0,V.jsx)(`div`,{className:`rounded-md border border-border p-3`,children:(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`font-medium`,children:String(e.name||t)}),(0,V.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[String(e.type||``),` · `,String(e.your_role||e.role||``)]})]}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{variant:`outline`,onClick:()=>r(t),children:o(n,`system.workspace.use`)}),(0,V.jsx)(E,{label:o(n,`system.workspace.activate`),action:()=>i.activateWorkspace(t),invalidate:[`workspaceRegistry`]}),(0,V.jsx)(E,{label:o(n,`system.workspace.archive`),action:()=>i.archiveWorkspace(t),invalidate:[`workspaceRegistry`],variant:`destructive`})]})]})},t)})})}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,V.jsx)(I,{className:`h-4 w-4`}),` `,o(n,`system.workspace.organizations`)]}),(0,V.jsx)(v,{children:o(n,`system.workspace.organizationsHint`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsx)(k,{value:l,onChange:e=>m(e.target.value),placeholder:o(n,`system.workspace.orgPlaceholder`)}),(0,V.jsx)(z,{disabled:!l.trim()||T.isPending,onClick:()=>T.mutate(),children:o(n,`system.workspace.createOrg`)}),(0,V.jsx)(k,{value:h,onChange:e=>g(e.target.value),placeholder:o(n,`system.workspace.inviteeEmail`)}),(0,V.jsx)(z,{variant:`outline`,disabled:D.isPending,onClick:()=>D.mutate(),children:o(n,`system.workspace.createInvite`)}),(0,V.jsx)(k,{value:b,onChange:e=>w(e.target.value),placeholder:o(n,`system.workspace.inviteToken`)}),(0,V.jsx)(z,{variant:`outline`,disabled:!b.trim()||O.isPending,onClick:()=>O.mutate(),children:o(n,`system.workspace.acceptInvite`)}),(0,V.jsx)(S,{title:o(n,`system.workspace.invitations`),result:s.data,children:e=>(0,V.jsx)(y,{items:e.invitations,titleKey:`token`,metaKey:`role`})})]})]})]})}function oe(){let e=t(e=>e.language),n=d({queryKey:[`snapshots`],queryFn:i.snapshots}),r=d({queryKey:[`timeMachine`],queryFn:i.timeMachine}),[a,s]=B.useState(``),[l,u]=B.useState(``),[m,g]=B.useState(``),b=f({mutationFn:()=>i.createSnapshot(a||o(e,`system.snapshots.defaultName`))}),w=f({mutationFn:()=>i.compareSnapshots(l,m)}),T=c(n.data?.data?.snapshots);return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,V.jsx)(S,{title:o(e,`system.snapshots.title`),result:n.data,children:()=>(0,V.jsx)(`div`,{className:`space-y-2`,children:T.map(t=>{let n=String(t.id||t.snapshot_id);return(0,V.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,V.jsx)(`div`,{className:`font-medium`,children:String(t.name||n)}),(0,V.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,V.jsx)(E,{label:o(e,`system.snapshots.export`),action:()=>i.exportSnapshot(n)}),(0,V.jsx)(E,{label:o(e,`system.snapshots.mergeRestore`),action:()=>i.restoreSnapshot(n),variant:`outline`})]})]},n)})})}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(e,`system.snapshots.actions`)}),(0,V.jsx)(v,{children:o(e,`system.snapshots.actionsHint`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsx)(k,{value:a,onChange:e=>s(e.target.value),placeholder:o(e,`system.snapshots.namePlaceholder`)}),(0,V.jsx)(z,{onClick:()=>b.mutate(),disabled:b.isPending,children:o(e,`system.snapshots.create`)}),(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,V.jsx)(k,{value:l,onChange:e=>u(e.target.value),placeholder:o(e,`system.snapshots.beforeId`)}),(0,V.jsx)(k,{value:m,onChange:e=>g(e.target.value),placeholder:o(e,`system.snapshots.afterId`)})]}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>w.mutate(),disabled:!l||!m||w.isPending,children:o(e,`system.snapshots.compare`)}),w.data?(0,V.jsx)(h,{result:w.data,successLabel:o(e,`system.snapshots.compareDone`)}):null]})]}),(0,V.jsx)(S,{title:o(e,`system.snapshots.timeline`),result:r.data,className:`xl:col-span-2`,children:e=>(0,V.jsx)(y,{items:e.events||e,titleKey:`event`,metaKey:`type`,limit:14})})]})}function se(){let e=t(e=>e.language),n=d({queryKey:[`realtimeFeed`],queryFn:i.realtimeFeed}),r=d({queryKey:[`presence`],queryFn:i.presence});return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,V.jsx)(S,{title:o(e,`system.activity.feed`),result:n.data,children:e=>(0,V.jsx)(y,{items:e.events,titleKey:`event_type`,metaKey:`area`,limit:14})}),(0,V.jsx)(S,{title:o(e,`system.activity.presence`),result:r.data,children:e=>(0,V.jsx)(ue,{data:e})})]})}function ce(){let e=u(),n=t(e=>e.language),r=d({queryKey:[`networkIdentity`],queryFn:i.networkIdentity}),a=d({queryKey:[`networkPeers`],queryFn:i.networkPeers}),[s,l]=B.useState(``),[m,g]=B.useState(``),[y,b]=B.useState(``),w=f({mutationFn:()=>i.pairPeer({name:s,base_url:m,public_key:y}),onSuccess:()=>e.invalidateQueries({queryKey:[`networkPeers`]})});return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[0.8fr_1.2fr]`,children:[(0,V.jsx)(S,{title:o(n,`system.network.identity`),result:r.data,children:e=>(0,V.jsx)(de,{data:e})}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,V.jsx)(A,{className:`h-4 w-4`}),` `,o(n,`system.network.pair`)]}),(0,V.jsx)(v,{children:o(n,`system.network.pairHint`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsx)(k,{value:s,onChange:e=>l(e.target.value),placeholder:o(n,`system.network.deviceName`)}),(0,V.jsx)(k,{value:m,onChange:e=>g(e.target.value),placeholder:o(n,`system.network.address`)}),(0,V.jsx)(k,{value:y,onChange:e=>b(e.target.value),placeholder:o(n,`system.network.publicKey`)}),(0,V.jsx)(z,{disabled:!s||!m||!y||w.isPending,onClick:()=>w.mutate(),children:o(n,`system.network.pair`)}),w.data?(0,V.jsx)(h,{result:w.data,successLabel:o(n,`system.network.pairDone`)}):null]})]}),(0,V.jsx)(S,{title:o(n,`system.network.peers`),result:a.data,className:`xl:col-span-2`,children:e=>(0,V.jsx)(`div`,{className:`grid gap-2`,children:c(e.peers).map(e=>{let r=String(e.peer_id||e.id);return(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`font-medium`,children:String(e.name||r)}),(0,V.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.base_url||``)})]}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(E,{label:o(n,`system.network.pushWorkspace`),action:()=>i.pushPeer(r,t.getState().workspaceId)}),(0,V.jsx)(E,{label:o(n,`system.network.unpair`),action:()=>i.unpairPeer(r),invalidate:[`networkPeers`],variant:`destructive`})]})]},r)})})})]})}function le(){let e=u(),{theme:n,setTheme:r,mode:a,setMode:s}=t(),c=t(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}),w=d({queryKey:[`backupHealth`],queryFn:i.backupHealth}),[T,O]=B.useState(``),[A,j]=B.useState(`lattice_brain`),[M,N]=B.useState(!1),[P,F]=B.useState(``),[I,ee]=B.useState(``),[L,te]=B.useState(``),[R,ne]=B.useState(!1),[H,re]=B.useState(!1),U=f({mutationFn:e=>i.dockerPostgres({consent:e,dry_run:!e,port:5432})}),W=f({mutationFn:()=>i.migratePostgres({dsn:T,schema_name:A||`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:H}),onSuccess:()=>{e.invalidateQueries({queryKey:[`brainStorage`]}),e.invalidateQueries({queryKey:[`backupHealth`]})}});return(0,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-3`,children:[(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(c,`system.panel.appearance`)}),(0,V.jsx)(v,{children:o(c,`system.panel.appearance.hint`)})]}),(0,V.jsxs)(x,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{variant:n===`dark`?`default`:`outline`,onClick:()=>r(`dark`),children:o(c,`system.theme.dark`)}),(0,V.jsx)(z,{variant:n===`light`?`default`:`outline`,onClick:()=>r(`light`),children:o(c,`system.theme.light`)})]})]}),(0,V.jsxs)(C,{children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(c,`system.panel.detailLevel`)}),(0,V.jsx)(v,{children:o(c,`system.panel.detailLevel.hint`)})]}),(0,V.jsx)(x,{className:`flex flex-wrap gap-2`,children:[`basic`,`advanced`,`admin`].map(e=>(0,V.jsx)(z,{variant:a===e?`default`:`outline`,onClick:()=>s(e),children:o(c,`shell.mode.${e}`)},e))})]}),(0,V.jsx)(ae,{}),(0,V.jsx)(ie,{}),(0,V.jsx)(S,{title:a===`basic`?o(c,`system.panel.brainStatus`):o(c,`system.panel.serverHealth`),result:l.data,children:e=>(0,V.jsx)(fe,{data:e})}),(0,V.jsx)(S,{title:a===`basic`?o(c,`system.panel.readiness`):o(c,`system.panel.hostTelemetry`),result:m.data,children:e=>a===`basic`?(0,V.jsx)(b,{stats:[{label:o(c,`system.stat.cpu`),value:`${String(e.cpu_pct||`0`)}%`},{label:o(c,`system.stat.memory`),value:`${String(e.ram_pct||`0`)}%`},{label:o(c,`system.stat.gpu`),value:`${String(e.gpu_mem_pct||`0`)}%`},{label:o(c,`system.stat.localStatus`),value:o(c,`system.stat.ready`)}]}):(0,V.jsx)(D,{value:e})}),(0,V.jsx)(S,{title:a===`basic`?o(c,`system.storage.title`):o(c,`system.panel.brainStorage`),result:y.data,className:`xl:col-span-3`,children:e=>(0,V.jsx)(pe,{data:e,mode:a,language:c})}),a===`basic`?null:(0,V.jsx)(S,{title:o(c,`system.backup.health`),result:w.data,className:`xl:col-span-3`,children:e=>(0,V.jsx)(me,{data:e})}),a===`basic`?null:(0,V.jsxs)(C,{className:`xl:col-span-3`,children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(c,`system.archive.title`)}),(0,V.jsx)(v,{children:o(c,`system.archive.detail`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_1fr]`,children:[(0,V.jsx)(k,{value:P,onChange:e=>F(e.target.value),placeholder:o(c,`system.archive.exportPath`)}),(0,V.jsx)(k,{value:I,onChange:e=>ee(e.target.value),placeholder:o(c,`system.archive.restorePath`)})]}),(0,V.jsx)(k,{type:`password`,value:L,onChange:e=>te(e.target.value),placeholder:o(c,`system.archive.passphrase`)}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{onClick:()=>G.mutate(),disabled:!L||G.isPending,children:o(c,`system.archive.export`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>K.mutate(),disabled:!I||K.isPending,children:o(c,`system.archive.inspect`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>q.mutate(),disabled:!I||!L||q.isPending,children:o(c,`system.archive.verify`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>J.mutate(),disabled:!I||!L||J.isPending,children:o(c,`system.archive.restoreDryRun`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>X.mutate(),disabled:!I||!L||X.isPending,children:o(c,`system.archive.importDryRun`)}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:R,onChange:e=>ne(e.target.checked)}),o(c,`system.archive.confirmRestore`)]}),(0,V.jsx)(z,{variant:`destructive`,onClick:()=>Y.mutate(),disabled:!I||!L||!R||Y.isPending,children:o(c,`system.archive.restore`)}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:H,onChange:e=>re(e.target.checked)}),o(c,`system.archive.confirmImport`)]}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>Z.mutate(),disabled:!I||!L||!H||Z.isPending,children:o(c,`system.archive.import`)})]}),[G.data,K.data,q.data,J.data,Y.data,X.data,Z.data].filter(Boolean).map((e,t)=>(0,V.jsx)(h,{result:e,successLabel:o(c,`system.archive.requestDone`)},t))]})]}),a===`basic`?null:(0,V.jsxs)(C,{className:`xl:col-span-3`,children:[(0,V.jsxs)(_,{children:[(0,V.jsx)(p,{children:o(c,`system.scale.title`)}),(0,V.jsx)(v,{children:o(c,`system.scale.detail`)})]}),(0,V.jsxs)(x,{className:`grid gap-3`,children:[(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_220px]`,children:[(0,V.jsx)(k,{value:T,onChange:e=>O(e.target.value),placeholder:o(c,`system.scale.dsn`)}),(0,V.jsx)(k,{value:A,onChange:e=>j(e.target.value),placeholder:o(c,`system.scale.schema`)})]}),(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,V.jsx)(z,{variant:`outline`,onClick:()=>U.mutate(!1),disabled:U.isPending,children:o(c,`system.scale.dockerPlan`)}),(0,V.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>N(e.target.checked)}),o(c,`system.scale.dockerConsent`)]}),(0,V.jsx)(z,{onClick:()=>U.mutate(!0),disabled:!M||U.isPending,children:o(c,`system.scale.dockerStart`)}),(0,V.jsx)(z,{variant:`outline`,onClick:()=>W.mutate(),disabled:!T||W.isPending,children:o(c,`system.scale.migrationPlan`)})]}),U.data?(0,V.jsx)(h,{result:U.data,successLabel:o(c,`system.scale.dockerDone`)}):null,W.data?(0,V.jsx)(h,{result:W.data,successLabel:o(c,`system.scale.migrationDone`)}):null]})]}),a===`basic`?null:(0,V.jsx)(S,{title:o(c,`system.computerMemory.title`),result:g.data,className:`xl:col-span-3`,children:e=>(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(D,{value:e}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(E,{label:o(c,`system.computerMemory.enable`),action:()=>i.setComputerMemory(!0),invalidate:[`computerMemory`]}),(0,V.jsx)(E,{label:o(c,`system.computerMemory.disable`),action:()=>i.setComputerMemory(!1),invalidate:[`computerMemory`],variant:`destructive`})]})]})})]})}function Q(e,t,n=o(e,`system.value.notReported`)){return t==null||t===``?n:typeof t==`boolean`?o(e,t?`system.value.enabled`:`system.value.disabled`):String(t)}function ue({data:e}){let n=t(e=>e.language),r=c(e.presence||e.clients||e);return r.length?(0,V.jsx)(y,{items:r,titleKey:`user`,metaKey:`workspace_id`}):(0,V.jsx)(w,{title:o(n,`system.presence.empty`),detail:o(n,`system.presence.emptyDetail`)})}function de({data:e}){let n=t(e=>e.mode),i=t(e=>e.language),a=Q(i,e.public_key,``);return n===`basic`?(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)($,{title:o(i,`system.device.thisMac`),status:o(i,`system.value.trusted`),detail:o(i,`system.device.thisMacDetail`)}),(0,V.jsx)(O,{variant:`muted`,children:Q(i,e.algorithm,o(i,`system.value.localIdentity`))})]}):(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,V.jsx)(O,{variant:`success`,children:o(i,`system.value.localDevice`)}),(0,V.jsx)(O,{variant:`muted`,children:Q(i,e.algorithm,o(i,`system.value.identityKey`))})]}),(0,V.jsx)(m,{data:{device_id:e.device_id||e.id||o(i,`system.value.notReported`),fingerprint:e.fingerprint||o(i,`system.value.notReported`),public_key:a?r(a.replace(/\s+/g,` `),72):o(i,`system.value.notReported`)}})]})}function fe({data:e}){let n=t(e=>e.mode),r=t(e=>e.language);return n===`basic`?(0,V.jsx)($,{title:o(r,`system.health.title`),status:o(r,`system.health.ok`),detail:o(r,`system.health.detail`)}):(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(b,{stats:[{label:o(r,`system.health.status`),value:e.status||e.ok||o(r,`system.value.reported`)},{label:o(r,`system.health.version`),value:e.version||o(r,`system.value.notReported`)},{label:o(r,`system.health.mode`),value:e.mode||e.environment||o(r,`system.value.local`)},{label:o(r,`system.health.port`),value:e.port||e.backend_port||o(r,`system.value.configured`)}]}),(0,V.jsx)(D,{value:e})]})}function pe({data:e,mode:t=`advanced`,language:n=`en`}){let r=s(e.active)?e.active:e,i=s(e.postgres)?e.postgres:{},a=s(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,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)($,{title:o(n,`system.storage.local.title`),status:o(n,`system.storage.local.badge`),detail:o(n,`system.storage.local.detail`)}),(0,V.jsx)($,{title:o(n,`system.storage.search.title`),status:u?o(n,`system.storage.search.on`):o(n,`system.storage.search.pending`),detail:u?o(n,`system.storage.search.detailOn`):o(n,`system.storage.search.detailPending`)})]}):(0,V.jsxs)(`div`,{className:`space-y-4`,children:[(0,V.jsx)(b,{stats:[{label:o(n,`system.storage.activeEngine`),value:r.engine||e.engine||o(n,`system.storage.sqlite`)},{label:o(n,`system.storage.sqliteDefault`),value:r.engine===`postgres`?o(n,`system.value.scaleMode`):o(n,`system.value.enabled`)},{label:o(n,`system.storage.vector`),value:c||o(n,`system.value.notReported`)},{label:o(n,`system.storage.postgres`),value:l?o(n,`system.value.available`):o(n,`system.value.optional`)}]}),(0,V.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,V.jsx)($,{title:o(n,`system.storage.sqlite`),status:r.available===!1?o(n,`system.value.unavailable`):o(n,`system.value.default`),detail:Q(n,r.reason||r.path||e.path,o(n,`system.storage.sqliteDetail`))}),(0,V.jsx)($,{title:o(n,`system.storage.vector`),status:Q(n,c,o(n,`system.value.reported`)),detail:Q(n,r.vector_reason||r.sqlite_vec_reason||e.vector_reason,o(n,`system.storage.vectorDetail`))}),(0,V.jsx)($,{title:o(n,`system.storage.postgres`),status:l?o(n,`system.value.available`):o(n,`system.value.notEnabled`),detail:Q(n,i.reason||i.dsn||i.status,o(n,`system.storage.postgresDetail`))})]}),Object.keys(a).length?(0,V.jsx)(D,{value:{backup_health:a}}):null]})}function me({data:e}){let n=t(e=>e.language);return(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(b,{stats:[{label:o(n,`system.backup.available`),value:e.available===!1?o(n,`system.value.no`):o(n,`system.value.yes`)},{label:o(n,`system.backup.backups`),value:e.count||e.backups||0},{label:o(n,`system.backup.encrypted`),value:e.encrypted_archives||0},{label:o(n,`system.backup.zip`),value:e.zip_backups||0}]}),(0,V.jsx)(m,{data:{directory:e.directory||o(n,`system.value.notReported`),latest:e.latest||o(n,`system.value.noneReported`),last_verified:e.last_verified||e.verified_at||o(n,`system.value.notReported`),failure:e.error||e.reason||o(n,`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,V.jsxs)(`div`,{className:`rounded-md border border-border bg-background p-3`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,V.jsx)(`div`,{className:`font-medium`,children:e}),(0,V.jsx)(O,{variant:r,children:t})]}),(0,V.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:n})]})}function he({data:e}){let n=t(e=>e.language),r=s(e.startup)?e.startup:{},i=s(e.privacy)?e.privacy:{},a=s(e.storage)?e.storage:{},c=s(e.backup)?e.backup:{},l=s(e.device_identity)?e.device_identity:{},u=s(e.permissions)?e.permissions:{};return(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(b,{stats:[{label:o(n,`system.hardening.version`),value:e.version||o(n,`system.value.reported`)},{label:o(n,`system.hardening.localOnly`),value:i.local_only_default??r.local_only_default??o(n,`system.value.reported`)},{label:o(n,`system.hardening.storage`),value:s(a.active)?a.active.engine:o(n,`system.value.reported`)},{label:o(n,`system.hardening.backups`),value:c.count||c.available||o(n,`system.value.reported`)}]}),(0,V.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,V.jsx)($,{title:o(n,`system.hardening.startup`),status:o(n,r.network_exposed?`system.value.networkExposed`:`system.value.localOnly`),detail:o(n,`system.hardening.startupDetail`)}),(0,V.jsx)($,{title:o(n,`system.hardening.integrations`),status:o(n,i.local_only_default===!1?`system.value.reviewRequired`:`system.value.optIn`),detail:o(n,`system.hardening.integrationsDetail`)}),(0,V.jsx)($,{title:o(n,`system.hardening.identity`),status:Q(n,l.algorithm||l.fingerprint,o(n,`system.value.reported`)),detail:Q(n,l.storage,o(n,`system.hardening.identityStorage`))}),(0,V.jsx)($,{title:o(n,`system.hardening.permissions`),status:o(n,u.destructive_restore_requires_confirmation===!1?`system.value.reviewRequired`:`system.value.guarded`),detail:o(n,`system.hardening.permissionsDetail`)})]})]})}function ge({data:e}){let n=t(e=>e.language),r=s(e.cards)?e.cards:{},i=s(e.severity_counts)?e.severity_counts:{};return(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsx)(b,{stats:[{label:o(n,`system.security.eventsToday`),value:r.events_today||0},{label:o(n,`system.security.highRisk`),value:r.high_risk_events||i.high||0},{label:o(n,`system.security.review`),value:r.review_required||0},{label:o(n,`system.security.riskRate`),value:e.risk_rate||0}]}),(0,V.jsx)(D,{value:{severity_counts:i,sensitive_fields:e.field_counts||{}}})]})}function _e(){let e=t(e=>e.mode),n=t(e=>e.language),r=d({queryKey:[`adminSummary`],queryFn:i.adminSummary}),a=d({queryKey:[`adminUsers`],queryFn:i.adminUsers}),s=d({queryKey:[`adminAudit`],queryFn:()=>i.adminAudit()}),c=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,V.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,V.jsx)(S,{title:o(n,`system.admin.summary`),result:r.data,children:e=>(0,V.jsx)(m,{data:e})}),(0,V.jsx)(S,{title:o(n,`system.admin.users`),result:a.data,children:e=>(0,V.jsx)(y,{items:e,titleKey:`email`,metaKey:`role`})}),(0,V.jsx)(S,{title:o(n,`system.admin.audit`),result:s.data,children:e=>(0,V.jsx)(y,{items:e.recent_events||e,titleKey:`act`,metaKey:`sev`})}),(0,V.jsx)(S,{title:o(n,`system.admin.roles`),result:c.data,children:e=>(0,V.jsx)(y,{items:e.roles||e,titleKey:`role`,metaKey:`members`})}),(0,V.jsx)(S,{title:o(n,`system.admin.policies`),result:l.data,children:e=>(0,V.jsx)(y,{items:e.policies||e,titleKey:`label`,metaKey:`enforced`})}),(0,V.jsx)(S,{title:o(n,`system.admin.hardening`),result:u.data,children:e=>(0,V.jsx)(he,{data:e})}),(0,V.jsx)(S,{title:o(n,`system.admin.security`),result:f.data,children:e=>(0,V.jsx)(ge,{data:e})}),(0,V.jsx)(S,{title:o(n,`system.admin.vpc`),result:p.data,className:`xl:col-span-2`,children:e=>(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(O,{variant:`muted`,children:o(n,`system.admin.communityUnavailable`)}),(0,V.jsx)(D,{value:e})]})})]}):(0,V.jsx)(T,{title:o(n,`system.admin.controls`),detail:o(n,`system.admin.controlsDetail`),target:`admin`})}export{J as SystemPage};
@@ -1 +1 @@
1
- import{g as e}from"./utils-C0-C5mZc.js";var t=e(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]);export{t};
1
+ import{g as e}from"./utils-fEGWreKB.js";var t=e(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{g as e}from"./utils-fEGWreKB.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{g as e}from"./utils-C0-C5mZc.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};
1
+ import{g as e}from"./utils-fEGWreKB.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};