ltcai 12.2.0 → 12.2.1

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 (72) hide show
  1. package/README.md +85 -84
  2. package/docs/CHANGELOG.md +30 -4
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +11 -11
  5. package/docs/ONBOARDING.md +1 -1
  6. package/docs/OPERATIONS.md +1 -1
  7. package/docs/ROADMAP.md +8 -8
  8. package/docs/TRUST_MODEL.md +2 -2
  9. package/docs/WHY_LATTICE.md +1 -1
  10. package/docs/kg-schema.md +1 -1
  11. package/lattice_brain/__init__.py +1 -1
  12. package/latticeai/__init__.py +1 -1
  13. package/latticeai/core/vector_index/hnsw.py +49 -10
  14. package/latticeai/core/vector_index/sidecar.py +120 -31
  15. package/latticeai/services/architecture_readiness.py +1 -1
  16. package/latticeai/services/product_readiness.py +2 -2
  17. package/package.json +1 -1
  18. package/scripts/check_current_release_docs.mjs +1 -1
  19. package/scripts/release_screen_claims.json +11 -0
  20. package/src-tauri/Cargo.lock +10 -10
  21. package/src-tauri/Cargo.toml +1 -1
  22. package/src-tauri/tauri.conf.json +1 -1
  23. package/static/app/asset-manifest.json +44 -44
  24. package/static/app/assets/{Act-BjGgeuQd.js → Act-DC676bqE.js} +2 -2
  25. package/static/app/assets/{AdminConsole-C6hcJGMr.js → AdminConsole-aCxQgD2L.js} +1 -1
  26. package/static/app/assets/{Brain-CNQnIaA8.js → Brain-Dbd0xvsc.js} +2 -2
  27. package/static/app/assets/{BrainHome-CGJ6O69l.js → BrainHome-N00B-MAJ.js} +1 -1
  28. package/static/app/assets/{BrainSignals-DONPljxz.js → BrainSignals-CNA0d6xS.js} +1 -1
  29. package/static/app/assets/{Capture-BMCC5544.js → Capture-BB19fo7P.js} +1 -1
  30. package/static/app/assets/{Chronicle-DF6sOonx.js → Chronicle-D8p3dqxZ.js} +1 -1
  31. package/static/app/assets/{CommandPalette-DiWyutdM.js → CommandPalette-uVFYAa-6.js} +1 -1
  32. package/static/app/assets/{DigitalBrainExplorer-BL3V6Dqz.js → DigitalBrainExplorer-mH6ZSuvK.js} +1 -1
  33. package/static/app/assets/{Library-B-ue9hXL.js → Library-0q8Sdke7.js} +1 -1
  34. package/static/app/assets/{LivingBrain-b1RiM5Rh.js → LivingBrain-wess-qJZ.js} +1 -1
  35. package/static/app/assets/ProductFlow-DeBGF6qz.js +1 -0
  36. package/static/app/assets/{ReviewCard-D1fGTEn7.js → ReviewCard-DyTrDpy0.js} +1 -1
  37. package/static/app/assets/{RunsListPanel-DAirtLkS.js → RunsListPanel-CHJv2Qyw.js} +1 -1
  38. package/static/app/assets/{System-BEI1eoC4.js → System-CyKGHQrW.js} +1 -1
  39. package/static/app/assets/{WorkflowGraph-qrI6GU4R.js → WorkflowGraph-B5nKCCGa.js} +1 -1
  40. package/static/app/assets/{WorkflowsPanel-CIMNTw-O.js → WorkflowsPanel-C7RZNRGo.js} +2 -2
  41. package/static/app/assets/{actHelpers-BMukIRnQ.js → actHelpers-6MYDH2kW.js} +1 -1
  42. package/static/app/assets/arrow-left-DOnpwsVV.js +1 -0
  43. package/static/app/assets/{bot-Dkd-DbiP.js → bot-Dm3fmXAE.js} +1 -1
  44. package/static/app/assets/{brain-BsexlNOA.js → brain-C2XwdQL1.js} +1 -1
  45. package/static/app/assets/{button-BA0N_zId.js → button-xXPeemQr.js} +1 -1
  46. package/static/app/assets/circle-check-D44VI2ZE.js +1 -0
  47. package/static/app/assets/{circle-pause-918Kuvk0.js → circle-pause-B_lmNicW.js} +1 -1
  48. package/static/app/assets/{circle-play-CS0IbVDV.js → circle-play-DSYCP0RD.js} +1 -1
  49. package/static/app/assets/{cpu-BpvoWsjk.js → cpu-D7x-dtxi.js} +1 -1
  50. package/static/app/assets/{download-BvkMLLLN.js → download-BHuJr-5V.js} +1 -1
  51. package/static/app/assets/{folder-open-YmGugIBf.js → folder-open-BiO31EwS.js} +1 -1
  52. package/static/app/assets/{hard-drive-BOzmS-cq.js → hard-drive-CFEaZ-wP.js} +1 -1
  53. package/static/app/assets/{index-CfeqZ9Ri.js → index-DCT79wzR.js} +3 -3
  54. package/static/app/assets/{input-CFfCfMjO.js → input-D3YrgxvO.js} +1 -1
  55. package/static/app/assets/{link-2-CcYzeM7M.js → link-2-3O-By3qc.js} +1 -1
  56. package/static/app/assets/{permissionCopy-B23r24oX.js → permissionCopy-CNK2tfkz.js} +1 -1
  57. package/static/app/assets/{primitives-BDryQl6H.js → primitives-B6DzQC3H.js} +1 -1
  58. package/static/app/assets/search-BwMK0hjs.js +1 -0
  59. package/static/app/assets/{share-2-B-gPv2ec.js → share-2-BljIPAku.js} +1 -1
  60. package/static/app/assets/{shield-alert-CfyRO1p0.js → shield-alert-WDP2DSTM.js} +1 -1
  61. package/static/app/assets/{sourceMeta-C4LDEy1S.js → sourceMeta-By2WIjlN.js} +1 -1
  62. package/static/app/assets/{textarea-BdVMYEb1.js → textarea-5v8vtDlK.js} +1 -1
  63. package/static/app/assets/{useFocusTrap-CV73DLHn.js → useFocusTrap-ssiDeh6P.js} +1 -1
  64. package/static/app/assets/{useMutation-B8QKq2NW.js → useMutation-Bi0PXQMC.js} +1 -1
  65. package/static/app/assets/workspace-BsxrRYQI.js +1 -0
  66. package/static/app/index.html +1 -1
  67. package/static/sw.js +1 -1
  68. package/static/app/assets/ProductFlow-wZIKJW7G.js +0 -1
  69. package/static/app/assets/arrow-left-iVa1goff.js +0 -1
  70. package/static/app/assets/circle-check-BxaDWjPR.js +0 -1
  71. package/static/app/assets/search-DHsPwmPw.js +0 -1
  72. package/static/app/assets/workspace-BmfVs66W.js +0 -1
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DigitalBrainExplorer-BL3V6Dqz.js","assets/jsx-runtime-bzQ4Vb5N.js","assets/index-CfeqZ9Ri.js","assets/QueryClientProvider-B3OjqSyJ.js","assets/index-C8gwOf0C.css","assets/primitives-BDryQl6H.js","assets/button-BA0N_zId.js","assets/useMutation-B8QKq2NW.js","assets/circle-check-BxaDWjPR.js","assets/input-CFfCfMjO.js","assets/brain-BsexlNOA.js","assets/sourceMeta-C4LDEy1S.js","assets/search-DHsPwmPw.js"])))=>i.map(i=>d[i]);
2
- import{i as e,n as t,t as n}from"./jsx-runtime-bzQ4Vb5N.js";import{n as r}from"./QueryClientProvider-B3OjqSyJ.js";import{t as i}from"./useMutation-B8QKq2NW.js";import{t as a}from"./arrow-left-iVa1goff.js";import{O as o,i as s,k as c,r as l}from"./BrainSignals-DONPljxz.js";import{_ as u,c as d,d as f,g as p,h as m,i as h,l as g,m as _,n as v,o as y,p as b,r as x,t as S,v as C,y as w}from"./primitives-BDryQl6H.js";import{t as T}from"./search-DHsPwmPw.js";import{t as E}from"./share-2-B-gPv2ec.js";import{H as D,R as O,S as k,b as A,c as j,d as M,i as N,o as P,v as F,z as I}from"./index-CfeqZ9Ri.js";import"./brain-BsexlNOA.js";import{t as L}from"./button-BA0N_zId.js";import{t as R}from"./input-CFfCfMjO.js";import"./workspace-BmfVs66W.js";import{t as z}from"./textarea-BdVMYEb1.js";import{i as B,o as V,r as H}from"./sourceMeta-C4LDEy1S.js";var U=O(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),W=e(t()),G=n(),K=W.lazy(()=>A(()=>import(`./DigitalBrainExplorer-BL3V6Dqz.js`).then(e=>({default:e.DigitalBrainExplorer})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))),q=[{id:`knowledge`,labelKey:`brain.tab.knowledge`},{id:`memory`,labelKey:`brain.tab.memory`}],J={knowledge:`hybrid-search`,memory:`memory`,graph:`knowledge-graph`};function Y({initialTab:e}){I(e=>e.mode);let t=I(e=>e.language),[n,r]=W.useState(()=>X(e));W.useEffect(()=>{r(X(e))},[e]);let i=e=>{r(e),P(`/`+J[e])},o=D({queryKey:[`graph`],queryFn:F.graph}),u=D({queryKey:[`coverage`],queryFn:F.graphCoverage}),p=n===`graph`;return(0,G.jsxs)(`div`,{className:`product-page memory-page space-y-5`,children:[(0,G.jsxs)(`header`,{className:`brain-layer-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`page-kicker`,children:[(0,G.jsx)(c,{className:`h-4 w-4`}),` `,Q(t,n)]}),(0,G.jsx)(`h1`,{children:k(t,`brain.headline.${n}`)})]}),(0,G.jsx)(Z,{language:t,data:u.data?.data})]}),p?(0,G.jsxs)(`nav`,{className:`memory-subview-bar`,"aria-label":k(t,`brain.graph.subviewAria`),children:[(0,G.jsxs)(`button`,{type:`button`,className:`memory-subview-back`,onClick:()=>i(`knowledge`),children:[(0,G.jsx)(a,{className:`h-4 w-4`,"aria-hidden":`true`}),k(t,`brain.graph.back`)]}),(0,G.jsx)(`span`,{className:`memory-subview-title`,children:k(t,`brain.tab.graph`)})]}):(0,G.jsx)(f,{tabs:q.map(e=>({id:e.id,label:k(t,e.labelKey)})),value:n,onChange:e=>i(e)}),(0,G.jsx)(l,{language:t}),(0,G.jsx)(s,{language:t}),n===`knowledge`?(0,G.jsx)($,{}):null,n===`memory`?(0,G.jsx)(ee,{}):null,p?o.isLoading?(0,G.jsx)(y,{title:k(t,`graph.deep.title`)}):o.data?.ok===!1?(0,G.jsx)(d,{result:o.data}):(0,G.jsx)(N,{language:t,resetKey:`brain-graph`,children:(0,G.jsx)(K,{data:o.data?.data??o.data})}):(0,G.jsxs)(`button`,{type:`button`,className:`memory-map-entry`,"data-testid":`open-connections-map`,onClick:()=>i(`graph`),children:[(0,G.jsx)(E,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,G.jsxs)(`span`,{className:`memory-map-entry-copy`,children:[(0,G.jsx)(`strong`,{children:k(t,`brain.graph.open`)}),(0,G.jsx)(`small`,{children:k(t,`brain.graph.openHint`)})]})]})]})}function X(e){return e===`graph`||e===`knowledge-graph`?`graph`:e===`memory`||e===`relationships`||e===`provenance`||e===`sources`||e===`portability`||e===`care`?`memory`:`knowledge`}function Z({language:e,data:t}){let n=Math.max(0,Math.round(Number(t?.total_nodes)||0)),r=Math.max(0,Math.round(Number(t?.nodes_with_provenance)||0));if(!n)return(0,G.jsxs)(`div`,{className:`brain-layer-meter`,children:[(0,G.jsx)(`span`,{children:k(e,`graph.coverage`)}),(0,G.jsx)(`strong`,{children:k(e,`graph.coverage.empty`)})]});let i=k(e,`graph.coverage.detail`,{covered:M(r),total:M(n)});return(0,G.jsxs)(`div`,{className:`brain-layer-meter`,title:i,children:[(0,G.jsx)(`span`,{children:k(e,`graph.coverage`)}),(0,G.jsx)(`strong`,{children:k(e,`graph.coverage.value`,{covered:M(r),total:M(n)})}),(0,G.jsx)(`small`,{children:i})]})}function Q(e,t){if(t===`graph`)return k(e,`brain.tab.graph`);let n=q.find(e=>e.id===t)?.labelKey;return n?k(e,n):k(e,`brain.title`)}function $(){let e=I(e=>e.language),[t,n]=W.useState(``),r=i({mutationFn:()=>F.hybridSearch(t)});return(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(T,{className:`h-4 w-4`}),` `,k(e,`brain.search.title`)]}),(0,G.jsx)(m,{children:k(e,`brain.search.detail`)})]}),(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,G.jsx)(R,{placeholder:k(e,`brain.search.placeholder`),value:t,onChange:e=>n(e.target.value),onKeyDown:e=>e.key===`Enter`&&!e.nativeEvent.isComposing&&r.mutate()}),(0,G.jsx)(L,{onClick:()=>r.mutate(),disabled:!t.trim()||r.isPending,children:k(e,`brain.search.cta`)})]}),r.data?(0,G.jsx)(v,{title:k(e,`brain.search.results`),result:r.data,children:e=>(0,G.jsx)(h,{items:e.matches||e,titleKey:`title`,metaKey:`type`,limit:12})}):null]})]})}function ee(){let e=r(),t=I(e=>e.mode),n=I(e=>e.language),[a,s]=W.useState(``),[c,l]=W.useState(``),[f,h]=W.useState(`recall`),v=D({queryKey:[`memoryManager`],queryFn:F.memoryManager}),x=D({queryKey:[`provenance`],queryFn:()=>F.graphProvenance(80)}),C=D({queryKey:[`portability`],queryFn:F.graphPortability}),T=i({mutationFn:()=>F.memoryRecall(a,25)}),E=i({mutationFn:async()=>{try{return await F.graphImport(JSON.parse(c),!0)}catch(e){return{ok:!1,status:0,data:{},source:`unavailable`,error:e instanceof Error?e.message:String(e)}}},onSuccess:()=>e.invalidateQueries({queryKey:[`portability`]})}),O=V(v.data?.data)?v.data.data:{},A=V(C.data?.data)?C.data.data:{};V(A.stats)&&A.stats;let j=V(A.storage)?A.storage:{},M=V(O.usage)?O.usage:{},N=e=>h(t=>t===e?null:e);return(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(b,{children:(0,G.jsx)(_,{className:`py-4`,children:(0,G.jsx)(g,{stats:t===`basic`?[{label:k(n,`brain.stats.sources`),value:M.sources??0},{label:k(n,`brain.stats.items`),value:M.total_items??0},{label:k(n,`brain.stats.savedWhere`),value:k(n,`brain.stats.savedWhere.local`)},{label:k(n,`brain.stats.exportable`),value:k(n,C.data?.ok?`brain.stats.exportable.yes`:`brain.stats.exportable.unknown`)}]:[{label:k(n,`brain.stats.sources`),value:M.sources??0},{label:k(n,`brain.stats.items`),value:M.total_items??0},{label:k(n,`brain.stats.format`),value:A.graph_schema_version||A.schema_version||`–`},{label:k(n,`brain.stats.storage`),value:j.engine||`–`}]})})}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`recall`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(w,{className:`h-4 w-4`}),k(n,`brain.memory.recall.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`recall`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.memory.recall.detail`)})]}),f===`recall`&&(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,G.jsx)(R,{value:a,onChange:e=>s(e.target.value),onKeyDown:e=>e.key===`Enter`&&!e.nativeEvent.isComposing&&a.trim()&&T.mutate(),placeholder:k(n,`brain.memory.recall.placeholder`)}),(0,G.jsx)(L,{disabled:!a.trim()||T.isPending,onClick:()=>T.mutate(),children:k(n,`brain.memory.recall.action`)})]}),t!==`basic`&&(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,G.jsx)(S,{label:k(n,`brain.memory.compact`),action:()=>F.memoryCompact()}),(0,G.jsx)(S,{label:k(n,`brain.memory.rebuildVector`),action:()=>F.memoryRebuild()})]}),T.data?(0,G.jsx)(d,{result:T.data,successLabel:k(n,`brain.memory.recall.completed`)}):null]})]}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`sources`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(U,{className:`h-4 w-4`}),k(n,`brain.sources.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`sources`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.sources.detail`)})]}),f===`sources`&&(0,G.jsx)(_,{className:`space-y-3`,children:x.isLoading?(0,G.jsx)(y,{title:k(n,`brain.sources.loading`)}):(0,G.jsx)(te,{items:V(x.data?.data)?x.data.data.items||x.data.data:x.data,limit:10})})]}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`backup`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(o,{className:`h-4 w-4`}),k(n,`brain.portability.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`backup`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.portability.detail`)})]}),f===`backup`&&(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,G.jsx)(S,{label:k(n,`brain.portability.export`),action:()=>F.graphExport()}),(0,G.jsx)(S,{label:k(n,`brain.portability.backup`),action:()=>F.graphBackup()})]}),(0,G.jsx)(z,{value:c,onChange:e=>l(e.target.value),placeholder:k(n,`brain.portability.importPlaceholder`)}),(0,G.jsx)(L,{variant:`outline`,disabled:!c.trim()||E.isPending,onClick:()=>E.mutate(),children:k(n,`brain.portability.previewImport`)}),E.data?(0,G.jsx)(d,{result:E.data,successLabel:k(n,`brain.portability.importCompleted`)}):null]})]})]})}function te({items:e,limit:t=8}){let n=I(e=>e.language),r=j(e).slice(0,t);return r.length?(0,G.jsx)(`div`,{className:`grid gap-2`,children:r.map((e,t)=>{let r=`brain.memoryTier.${String(e.id||``)}`,i=k(n,r),a=i===r?String(e.title||e.label||e.source_title||e.filename||e.path||e.source||k(n,`brain.sources.fallback`,{index:t+1})):i,o=String(e.path||e.source_path||e.source||e.conversation_id||``),s=B(e,n),c=H(e);return(0,G.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`font-medium`,children:a}),(0,G.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[s,` · `,c||k(n,`brain.sources.createdUnknown`)]})]}),(0,G.jsx)(C,{variant:`muted`,children:k(n,o?`brain.sources.inspectable`:`brain.sources.missingProvenance`)})]}),o?(0,G.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,G.jsx)(`span`,{className:`break-all`,children:o}),(0,G.jsx)(L,{variant:`outline`,size:`sm`,onClick:()=>void navigator.clipboard?.writeText(o),children:k(n,`brain.sources.copy`)})]}):(0,G.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:k(n,`brain.sources.legacyMissing`)})]},String(e.id||e.source_id||a))})}):(0,G.jsx)(x,{title:k(n,`brain.sources.empty`),detail:k(n,`brain.sources.emptyDetail`)})}export{Y as BrainPage};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DigitalBrainExplorer-mH6ZSuvK.js","assets/jsx-runtime-bzQ4Vb5N.js","assets/index-DCT79wzR.js","assets/QueryClientProvider-B3OjqSyJ.js","assets/index-C8gwOf0C.css","assets/primitives-B6DzQC3H.js","assets/button-xXPeemQr.js","assets/useMutation-Bi0PXQMC.js","assets/circle-check-D44VI2ZE.js","assets/input-D3YrgxvO.js","assets/brain-C2XwdQL1.js","assets/sourceMeta-By2WIjlN.js","assets/search-BwMK0hjs.js"])))=>i.map(i=>d[i]);
2
+ import{i as e,n as t,t as n}from"./jsx-runtime-bzQ4Vb5N.js";import{n as r}from"./QueryClientProvider-B3OjqSyJ.js";import{t as i}from"./useMutation-Bi0PXQMC.js";import{t as a}from"./arrow-left-DOnpwsVV.js";import{O as o,i as s,k as c,r as l}from"./BrainSignals-CNA0d6xS.js";import{_ as u,c as d,d as f,g as p,h as m,i as h,l as g,m as _,n as v,o as y,p as b,r as x,t as S,v as C,y as w}from"./primitives-B6DzQC3H.js";import{t as T}from"./search-BwMK0hjs.js";import{t as E}from"./share-2-BljIPAku.js";import{H as D,R as O,S as k,b as A,c as j,d as M,i as N,o as P,v as F,z as I}from"./index-DCT79wzR.js";import"./brain-C2XwdQL1.js";import{t as L}from"./button-xXPeemQr.js";import{t as R}from"./input-D3YrgxvO.js";import"./workspace-BsxrRYQI.js";import{t as z}from"./textarea-5v8vtDlK.js";import{i as B,o as V,r as H}from"./sourceMeta-By2WIjlN.js";var U=O(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),W=e(t()),G=n(),K=W.lazy(()=>A(()=>import(`./DigitalBrainExplorer-mH6ZSuvK.js`).then(e=>({default:e.DigitalBrainExplorer})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))),q=[{id:`knowledge`,labelKey:`brain.tab.knowledge`},{id:`memory`,labelKey:`brain.tab.memory`}],J={knowledge:`hybrid-search`,memory:`memory`,graph:`knowledge-graph`};function Y({initialTab:e}){I(e=>e.mode);let t=I(e=>e.language),[n,r]=W.useState(()=>X(e));W.useEffect(()=>{r(X(e))},[e]);let i=e=>{r(e),P(`/`+J[e])},o=D({queryKey:[`graph`],queryFn:F.graph}),u=D({queryKey:[`coverage`],queryFn:F.graphCoverage}),p=n===`graph`;return(0,G.jsxs)(`div`,{className:`product-page memory-page space-y-5`,children:[(0,G.jsxs)(`header`,{className:`brain-layer-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`page-kicker`,children:[(0,G.jsx)(c,{className:`h-4 w-4`}),` `,Q(t,n)]}),(0,G.jsx)(`h1`,{children:k(t,`brain.headline.${n}`)})]}),(0,G.jsx)(Z,{language:t,data:u.data?.data})]}),p?(0,G.jsxs)(`nav`,{className:`memory-subview-bar`,"aria-label":k(t,`brain.graph.subviewAria`),children:[(0,G.jsxs)(`button`,{type:`button`,className:`memory-subview-back`,onClick:()=>i(`knowledge`),children:[(0,G.jsx)(a,{className:`h-4 w-4`,"aria-hidden":`true`}),k(t,`brain.graph.back`)]}),(0,G.jsx)(`span`,{className:`memory-subview-title`,children:k(t,`brain.tab.graph`)})]}):(0,G.jsx)(f,{tabs:q.map(e=>({id:e.id,label:k(t,e.labelKey)})),value:n,onChange:e=>i(e)}),(0,G.jsx)(l,{language:t}),(0,G.jsx)(s,{language:t}),n===`knowledge`?(0,G.jsx)($,{}):null,n===`memory`?(0,G.jsx)(ee,{}):null,p?o.isLoading?(0,G.jsx)(y,{title:k(t,`graph.deep.title`)}):o.data?.ok===!1?(0,G.jsx)(d,{result:o.data}):(0,G.jsx)(N,{language:t,resetKey:`brain-graph`,children:(0,G.jsx)(K,{data:o.data?.data??o.data})}):(0,G.jsxs)(`button`,{type:`button`,className:`memory-map-entry`,"data-testid":`open-connections-map`,onClick:()=>i(`graph`),children:[(0,G.jsx)(E,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,G.jsxs)(`span`,{className:`memory-map-entry-copy`,children:[(0,G.jsx)(`strong`,{children:k(t,`brain.graph.open`)}),(0,G.jsx)(`small`,{children:k(t,`brain.graph.openHint`)})]})]})]})}function X(e){return e===`graph`||e===`knowledge-graph`?`graph`:e===`memory`||e===`relationships`||e===`provenance`||e===`sources`||e===`portability`||e===`care`?`memory`:`knowledge`}function Z({language:e,data:t}){let n=Math.max(0,Math.round(Number(t?.total_nodes)||0)),r=Math.max(0,Math.round(Number(t?.nodes_with_provenance)||0));if(!n)return(0,G.jsxs)(`div`,{className:`brain-layer-meter`,children:[(0,G.jsx)(`span`,{children:k(e,`graph.coverage`)}),(0,G.jsx)(`strong`,{children:k(e,`graph.coverage.empty`)})]});let i=k(e,`graph.coverage.detail`,{covered:M(r),total:M(n)});return(0,G.jsxs)(`div`,{className:`brain-layer-meter`,title:i,children:[(0,G.jsx)(`span`,{children:k(e,`graph.coverage`)}),(0,G.jsx)(`strong`,{children:k(e,`graph.coverage.value`,{covered:M(r),total:M(n)})}),(0,G.jsx)(`small`,{children:i})]})}function Q(e,t){if(t===`graph`)return k(e,`brain.tab.graph`);let n=q.find(e=>e.id===t)?.labelKey;return n?k(e,n):k(e,`brain.title`)}function $(){let e=I(e=>e.language),[t,n]=W.useState(``),r=i({mutationFn:()=>F.hybridSearch(t)});return(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(T,{className:`h-4 w-4`}),` `,k(e,`brain.search.title`)]}),(0,G.jsx)(m,{children:k(e,`brain.search.detail`)})]}),(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,G.jsx)(R,{placeholder:k(e,`brain.search.placeholder`),value:t,onChange:e=>n(e.target.value),onKeyDown:e=>e.key===`Enter`&&!e.nativeEvent.isComposing&&r.mutate()}),(0,G.jsx)(L,{onClick:()=>r.mutate(),disabled:!t.trim()||r.isPending,children:k(e,`brain.search.cta`)})]}),r.data?(0,G.jsx)(v,{title:k(e,`brain.search.results`),result:r.data,children:e=>(0,G.jsx)(h,{items:e.matches||e,titleKey:`title`,metaKey:`type`,limit:12})}):null]})]})}function ee(){let e=r(),t=I(e=>e.mode),n=I(e=>e.language),[a,s]=W.useState(``),[c,l]=W.useState(``),[f,h]=W.useState(`recall`),v=D({queryKey:[`memoryManager`],queryFn:F.memoryManager}),x=D({queryKey:[`provenance`],queryFn:()=>F.graphProvenance(80)}),C=D({queryKey:[`portability`],queryFn:F.graphPortability}),T=i({mutationFn:()=>F.memoryRecall(a,25)}),E=i({mutationFn:async()=>{try{return await F.graphImport(JSON.parse(c),!0)}catch(e){return{ok:!1,status:0,data:{},source:`unavailable`,error:e instanceof Error?e.message:String(e)}}},onSuccess:()=>e.invalidateQueries({queryKey:[`portability`]})}),O=V(v.data?.data)?v.data.data:{},A=V(C.data?.data)?C.data.data:{};V(A.stats)&&A.stats;let j=V(A.storage)?A.storage:{},M=V(O.usage)?O.usage:{},N=e=>h(t=>t===e?null:e);return(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(b,{children:(0,G.jsx)(_,{className:`py-4`,children:(0,G.jsx)(g,{stats:t===`basic`?[{label:k(n,`brain.stats.sources`),value:M.sources??0},{label:k(n,`brain.stats.items`),value:M.total_items??0},{label:k(n,`brain.stats.savedWhere`),value:k(n,`brain.stats.savedWhere.local`)},{label:k(n,`brain.stats.exportable`),value:k(n,C.data?.ok?`brain.stats.exportable.yes`:`brain.stats.exportable.unknown`)}]:[{label:k(n,`brain.stats.sources`),value:M.sources??0},{label:k(n,`brain.stats.items`),value:M.total_items??0},{label:k(n,`brain.stats.format`),value:A.graph_schema_version||A.schema_version||`–`},{label:k(n,`brain.stats.storage`),value:j.engine||`–`}]})})}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`recall`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(w,{className:`h-4 w-4`}),k(n,`brain.memory.recall.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`recall`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.memory.recall.detail`)})]}),f===`recall`&&(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,G.jsx)(R,{value:a,onChange:e=>s(e.target.value),onKeyDown:e=>e.key===`Enter`&&!e.nativeEvent.isComposing&&a.trim()&&T.mutate(),placeholder:k(n,`brain.memory.recall.placeholder`)}),(0,G.jsx)(L,{disabled:!a.trim()||T.isPending,onClick:()=>T.mutate(),children:k(n,`brain.memory.recall.action`)})]}),t!==`basic`&&(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,G.jsx)(S,{label:k(n,`brain.memory.compact`),action:()=>F.memoryCompact()}),(0,G.jsx)(S,{label:k(n,`brain.memory.rebuildVector`),action:()=>F.memoryRebuild()})]}),T.data?(0,G.jsx)(d,{result:T.data,successLabel:k(n,`brain.memory.recall.completed`)}):null]})]}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`sources`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(U,{className:`h-4 w-4`}),k(n,`brain.sources.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`sources`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.sources.detail`)})]}),f===`sources`&&(0,G.jsx)(_,{className:`space-y-3`,children:x.isLoading?(0,G.jsx)(y,{title:k(n,`brain.sources.loading`)}):(0,G.jsx)(te,{items:V(x.data?.data)?x.data.data.items||x.data.data:x.data,limit:10})})]}),(0,G.jsxs)(b,{children:[(0,G.jsxs)(p,{className:`cursor-pointer select-none`,onClick:()=>N(`backup`),children:[(0,G.jsxs)(u,{className:`flex items-center gap-2`,children:[(0,G.jsx)(o,{className:`h-4 w-4`}),k(n,`brain.portability.title`),(0,G.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:f===`backup`?`▲`:`▼`})]}),(0,G.jsx)(m,{children:k(n,`brain.portability.detail`)})]}),f===`backup`&&(0,G.jsxs)(_,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,G.jsx)(S,{label:k(n,`brain.portability.export`),action:()=>F.graphExport()}),(0,G.jsx)(S,{label:k(n,`brain.portability.backup`),action:()=>F.graphBackup()})]}),(0,G.jsx)(z,{value:c,onChange:e=>l(e.target.value),placeholder:k(n,`brain.portability.importPlaceholder`)}),(0,G.jsx)(L,{variant:`outline`,disabled:!c.trim()||E.isPending,onClick:()=>E.mutate(),children:k(n,`brain.portability.previewImport`)}),E.data?(0,G.jsx)(d,{result:E.data,successLabel:k(n,`brain.portability.importCompleted`)}):null]})]})]})}function te({items:e,limit:t=8}){let n=I(e=>e.language),r=j(e).slice(0,t);return r.length?(0,G.jsx)(`div`,{className:`grid gap-2`,children:r.map((e,t)=>{let r=`brain.memoryTier.${String(e.id||``)}`,i=k(n,r),a=i===r?String(e.title||e.label||e.source_title||e.filename||e.path||e.source||k(n,`brain.sources.fallback`,{index:t+1})):i,o=String(e.path||e.source_path||e.source||e.conversation_id||``),s=B(e,n),c=H(e);return(0,G.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`font-medium`,children:a}),(0,G.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[s,` · `,c||k(n,`brain.sources.createdUnknown`)]})]}),(0,G.jsx)(C,{variant:`muted`,children:k(n,o?`brain.sources.inspectable`:`brain.sources.missingProvenance`)})]}),o?(0,G.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,G.jsx)(`span`,{className:`break-all`,children:o}),(0,G.jsx)(L,{variant:`outline`,size:`sm`,onClick:()=>void navigator.clipboard?.writeText(o),children:k(n,`brain.sources.copy`)})]}):(0,G.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:k(n,`brain.sources.legacyMissing`)})]},String(e.id||e.source_id||a))})}):(0,G.jsx)(x,{title:k(n,`brain.sources.empty`),detail:k(n,`brain.sources.emptyDetail`)})}export{Y as BrainPage};