ltcai 10.6.3 → 10.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +43 -59
  2. package/docs/CHANGELOG.md +37 -0
  3. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  4. package/docs/DEVELOPMENT.md +1 -1
  5. package/docs/LAYOUT_REBUILD_SPEC.md +810 -0
  6. package/docs/ONBOARDING.md +1 -1
  7. package/docs/OPERATIONS.md +29 -1
  8. package/docs/TRUST_MODEL.md +1 -1
  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/lattice_brain/runtime/multi_agent.py +1 -1
  13. package/latticeai/__init__.py +1 -1
  14. package/latticeai/api/admin.py +72 -0
  15. package/latticeai/api/automation_intelligence.py +112 -0
  16. package/latticeai/api/knowledge_graph.py +133 -0
  17. package/latticeai/api/static_routes.py +35 -1
  18. package/latticeai/core/legacy_compatibility.py +1 -1
  19. package/latticeai/core/marketplace.py +1 -1
  20. package/latticeai/core/workspace_os.py +3 -0
  21. package/latticeai/core/workspace_os_constants.py +1 -1
  22. package/latticeai/core/workspace_runs.py +111 -0
  23. package/latticeai/services/architecture_readiness.py +1 -1
  24. package/latticeai/services/product_readiness.py +1 -1
  25. package/package.json +5 -3
  26. package/scripts/capture_release_evidence.mjs +335 -1
  27. package/scripts/check_current_release_docs.mjs +1 -1
  28. package/scripts/check_release_evidence_bound.mjs +116 -0
  29. package/scripts/check_screenshot_pixel_delta.py +435 -0
  30. package/scripts/measure_brain_home_fill.mjs +141 -0
  31. package/src-tauri/Cargo.lock +1 -1
  32. package/src-tauri/Cargo.toml +1 -1
  33. package/src-tauri/tauri.conf.json +1 -1
  34. package/static/app/asset-manifest.json +37 -39
  35. package/static/app/assets/{Act-05uZSgyw.js → Act-DIbkoJqs.js} +1 -1
  36. package/static/app/assets/AdminConsole-Cbi6Jre6.js +1 -0
  37. package/static/app/assets/{Brain-jjMYTdnU.js → Brain-BPfuXZ71.js} +2 -2
  38. package/static/app/assets/BrainHome-87XaAS4V.js +2 -0
  39. package/static/app/assets/{BrainSignals-BYxDqBH3.js → BrainSignals-ExpcdiUi.js} +1 -1
  40. package/static/app/assets/Capture-Bxe4WiVX.js +1 -0
  41. package/static/app/assets/{CommandPalette-Cj7z-qUE.js → CommandPalette-B1PV5Yd4.js} +1 -1
  42. package/static/app/assets/Library-BRlJJmwZ.js +1 -0
  43. package/static/app/assets/{LivingBrain-CTokkZn1.js → LivingBrain-D61qG3WY.js} +1 -1
  44. package/static/app/assets/ProductFlow-BxjxI8Aa.js +1 -0
  45. package/static/app/assets/{ReviewCard-uAII_l9v.js → ReviewCard-BoiWv0Y1.js} +2 -2
  46. package/static/app/assets/System-Ci0HEtTJ.js +1 -0
  47. package/static/app/assets/arrow-left-DArdBUxd.js +1 -0
  48. package/static/app/assets/{bot-CkrHFdUl.js → bot-BaPt4PPn.js} +1 -1
  49. package/static/app/assets/brain-BSkWaj3i.js +1 -0
  50. package/static/app/assets/{button-Ic6omIbs.js → button-CKwtO1O0.js} +1 -1
  51. package/static/app/assets/{circle-pause-DBaaUR08.js → circle-pause-CiUc5RRk.js} +1 -1
  52. package/static/app/assets/{circle-play-Dz0OLYN9.js → circle-play-BaTDxzR9.js} +1 -1
  53. package/static/app/assets/{cpu-N8uE9ono.js → cpu-Dm1gHuP1.js} +1 -1
  54. package/static/app/assets/{download-CCjhOjms.js → download-C32oGU-C.js} +1 -1
  55. package/static/app/assets/{folder-open-Bld9TtHp.js → folder-open-Ch2jLVdD.js} +1 -1
  56. package/static/app/assets/{hard-drive-BMIqDSyY.js → hard-drive-BBjA5st8.js} +1 -1
  57. package/static/app/assets/index-BV7Yf6Eq.css +2 -0
  58. package/static/app/assets/{index-yNtiRyw3.js → index-J6h01X78.js} +4 -4
  59. package/static/app/assets/{input-DW1tXtc0.js → input-y6ABdKWY.js} +1 -1
  60. package/static/app/assets/{permissionCopy-Djpwn54H.js → permissionCopy-BEtc0Ihd.js} +1 -1
  61. package/static/app/assets/{primitives-B6WtkLgB.js → primitives-GSFXF2Pd.js} +1 -1
  62. package/static/app/assets/search-CaIZKyo_.js +1 -0
  63. package/static/app/assets/{share-2-DR5L1qRc.js → share-2-BgGq2A63.js} +1 -1
  64. package/static/app/assets/{shield-alert-CVE5eXsl.js → shield-alert-BYA491cj.js} +1 -1
  65. package/static/app/assets/{textarea-DdaVFgvk.js → textarea-BAcim3fs.js} +1 -1
  66. package/static/app/assets/{useFocusTrap-B5TyGaiB.js → useFocusTrap-qLg24jiv.js} +1 -1
  67. package/static/app/assets/{useQuery-CiRdTQlD.js → useQuery-xkAu9eDX.js} +1 -1
  68. package/static/app/assets/utils-CogdofAA.js +4 -0
  69. package/static/app/assets/workspace-BMvfx9_R.js +1 -0
  70. package/static/app/index.html +4 -4
  71. package/static/sw.js +1 -1
  72. package/static/app/assets/AdminConsole-C8yz1Cs_.js +0 -1
  73. package/static/app/assets/BrainHome-D3t45_D4.js +0 -2
  74. package/static/app/assets/Capture-DKgu7fB0.js +0 -1
  75. package/static/app/assets/Library-CO76FWeO.js +0 -1
  76. package/static/app/assets/ProductFlow-Bmted2ys.js +0 -1
  77. package/static/app/assets/System-PUMzDmof.js +0 -1
  78. package/static/app/assets/activity-C_7182GG.js +0 -1
  79. package/static/app/assets/arrow-left-BQCpWR37.js +0 -1
  80. package/static/app/assets/brain-CdPX7svt.js +0 -1
  81. package/static/app/assets/index-DYUs0cWy.css +0 -2
  82. package/static/app/assets/search-CkHYuKpY.js +0 -1
  83. package/static/app/assets/users-pZqCRxdD.js +0 -1
  84. package/static/app/assets/utils-C3rXoa-U.js +0 -4
  85. package/static/app/assets/workspace-DfxKEttN.js +0 -1
@@ -1,2 +0,0 @@
1
- import{S as e,_ as t,b as n,d as r,g as i,m as a,o,t as s,y as c}from"./utils-C3rXoa-U.js";import{r as l,t as u}from"./useQuery-CiRdTQlD.js";import{t as d}from"./workspace-DfxKEttN.js";import{t as f}from"./activity-C_7182GG.js";import{i as p,n as m,r as h,t as g}from"./LivingBrain-CTokkZn1.js";import{t as _}from"./bot-CkrHFdUl.js";import{C as v,E as y,S as b,T as x,_ as S,a as C,b as w,c as T,d as E,f as D,g as O,h as k,i as A,l as j,m as ee,n as M,o as N,p as P,r as te,s as F,t as ne,u as I,v as re,w as L,x as R,y as z}from"./BrainSignals-BYxDqBH3.js";import{b as ie,y as B}from"./primitives-B6WtkLgB.js";import{n as V}from"./input-DW1tXtc0.js";import{t as ae}from"./cpu-N8uE9ono.js";import{t as oe}from"./download-CCjhOjms.js";import{n as se,r as ce,t as le}from"./hard-drive-BMIqDSyY.js";import{o as ue,s as de,t as fe}from"./ReviewCard-uAII_l9v.js";import{t as H}from"./folder-open-Bld9TtHp.js";import{a as pe,i as me,n as U,r as he}from"./permissionCopy-Djpwn54H.js";import{t as ge}from"./search-CkHYuKpY.js";import{t as _e}from"./shield-alert-CVE5eXsl.js";import{n as ve,t as ye}from"./useFocusTrap-B5TyGaiB.js";import{_ as be,a as xe,d as Se,g as Ce,i as we,n as W,p as Te,r as Ee,s as G,u as K}from"./index-yNtiRyw3.js";import"./brain-CdPX7svt.js";import{t as q}from"./button-Ic6omIbs.js";var De=i(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),Oe=i(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),ke=i(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),Ae=i(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),je=i(`database-zap`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`,key:`14ibmq`}],[`path`,{d:`M21 5V8`,key:`1marbg`}],[`path`,{d:`M21 12L18 17H22L19 22`,key:`zafso`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`,key:`1y4wr8`}]]),Me=i(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Ne=i(`file-check-corner`,[[`path`,{d:`M10.5 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v6`,key:`g5mvt7`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m14 20 2 2 4-4`,key:`15kota`}]]),Pe=i(`file-text`,[[`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:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),Fe=i(`file-up`,[[`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:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),Ie=i(`git-pull-request-arrow`,[[`circle`,{cx:`5`,cy:`6`,r:`3`,key:`1qnov2`}],[`path`,{d:`M5 9v12`,key:`ih889a`}],[`circle`,{cx:`19`,cy:`18`,r:`3`,key:`1qljk2`}],[`path`,{d:`m15 9-3-3 3-3`,key:`1lwv8l`}],[`path`,{d:`M12 6h5a2 2 0 0 1 2 2v7`,key:`1yj91y`}]]),Le=i(`image-plus`,[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]),Re=i(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),ze=i(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),Be=i(`message-circle-plus`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),Ve=i(`message-square-text`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M7 11h10`,key:`1twpyw`}],[`path`,{d:`M7 15h6`,key:`d9of3u`}],[`path`,{d:`M7 7h8`,key:`af5zfr`}]]),He=i(`pencil-line`,[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]),Ue=i(`repeat-2`,[[`path`,{d:`m2 9 3-3 3 3`,key:`1ltn5i`}],[`path`,{d:`M13 18H7a2 2 0 0 1-2-2V6`,key:`1r6tfw`}],[`path`,{d:`m22 15-3 3-3-3`,key:`4rnwn2`}],[`path`,{d:`M11 6h6a2 2 0 0 1 2 2v10`,key:`2f72bc`}]]),We=i(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),Ge=i(`search-check`,[[`path`,{d:`m8 11 2 2 4-4`,key:`1sed1v`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]),Ke=i(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),qe=i(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),Je=i(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),J=e(n());function Ye(e){if(e.status!==`awaiting_approval`)return null;let t=typeof e.run_id==`string`?e.run_id:``,n=typeof e.approval?.token==`string`?e.approval.token:``;return!t||!n?null:{runId:t,token:n,expiresAt:typeof e.approval?.expires_at==`string`?e.approval.expires_at:``,planSummary:typeof e.approval?.plan_summary==`string`?e.approval.plan_summary:``,plan:e.plan&&typeof e.plan==`object`?e.plan:null,status:`pending`}}function Xe(e){if(!e||typeof e!=`object`)return``;let t=e,n=(t.detail&&typeof t.detail==`object`&&!Array.isArray(t.detail)?t.detail:t).replan;if(!n||typeof n!=`object`||Array.isArray(n))return``;let r=n.message;return typeof r==`string`?r.trim():``}async function Ze(e,t){let n=await r.resumeAgentApproval({run_id:e.runId,approval_token:e.token,approve:t.approve,...t.editedPlan?{edited_plan:t.editedPlan}:{}});if(!n.ok){if(n.status===410||n.status===404){let e=Xe(n.data);return{kind:`expired`,...e?{replanMessage:e}:{}}}return{kind:`error`,reason:n.error||String(n.status||``)}}let i=n.data;return i.status===`cancelled`?{kind:`cancelled`}:{kind:`finished`,payload:i}}var Y=c();function Qe(e,t){if(!t)return``;let n=new Date(t);return Number.isNaN(n.getTime())?``:n.toLocaleTimeString(e===`ko`?`ko-KR`:`en-US`,{hour:`2-digit`,minute:`2-digit`})}function $e(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/60),r=t%60;return`${n}:${String(r).padStart(2,`0`)}`}var et=12e4;function tt({language:e,approval:t,onResolved:n,onReplan:r}){let[i,o]=J.useState(!1),[s,c]=J.useState(!1),[l,u]=J.useState(``),[d,f]=J.useState(!1),p=J.useRef(null);J.useEffect(()=>{t.status===`pending`&&p.current?.focus()},[]);let m=t.status===`pending`,h=J.useMemo(()=>{if(!t.expiresAt)return null;let e=Date.parse(t.expiresAt);return Number.isFinite(e)?e:null},[t.expiresAt]),[g,_]=J.useState(()=>Date.now());J.useEffect(()=>{if(!m||h===null)return;_(Date.now());let e=window.setInterval(()=>_(Date.now()),1e3);return()=>window.clearInterval(e)},[m,h]);let v=h===null?null:h-g,y=m&&v!==null&&v>0&&v<et,b=J.useRef(!1);J.useEffect(()=>{!m||v===null||v>0||b.current||(b.current=!0,n({kind:`expired`}))},[m,v,n]);async function x(e){if(!i){o(!0);try{n(await Ze(t,e))}finally{o(!1)}}}function S(){u(JSON.stringify(t.plan??{goal:t.planSummary,steps:[]},null,2)),f(!1),c(!0)}function C(){let e;try{e=JSON.parse(l)}catch{f(!0);return}if(!e||typeof e!=`object`||Array.isArray(e)){f(!0);return}f(!1),x({approve:!0,editedPlan:e})}if(t.status!==`pending`){let n=t.status===`approved`?`brain.approval.resolved`:t.status===`cancelled`?`brain.approval.cancelled`:t.status===`expired`?`brain.approval.expired`:`brain.approval.error`,i=t.status===`expired`&&t.replanMessage||``;return(0,Y.jsxs)(`div`,{className:`brain-approval-note is-${t.status}`,role:t.status===`approved`?`status`:`alert`,"data-testid":`agent-approval-note`,children:[(0,Y.jsx)(`span`,{children:a(e,n,{reason:t.errorReason||``})}),i&&r?(0,Y.jsx)(`button`,{type:`button`,className:`brain-approval-replan`,"data-testid":`approval-replan`,onClick:()=>r(i),children:a(e,`brain.approval.expiredReplan`)}):null]})}let w=Qe(e,t.expiresAt);return(0,Y.jsxs)(`section`,{className:`brain-approval-card ${y?`is-urgent`:``}`,"aria-label":a(e,`brain.approval.aria`),"data-testid":`agent-approval-card`,children:[(0,Y.jsxs)(`header`,{className:`brain-approval-head`,children:[(0,Y.jsx)(_e,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`strong`,{children:a(e,`brain.approval.title`)}),v===null?null:(0,Y.jsx)(`span`,{className:`brain-approval-countdown ${y?`is-urgent`:``}`,"data-testid":`approval-countdown`,children:a(e,`brain.approval.countdown`,{time:$e(v)})})]}),t.planSummary?(0,Y.jsxs)(`div`,{className:`brain-approval-summary`,children:[(0,Y.jsx)(`span`,{className:`brain-approval-summary-label`,children:a(e,`brain.approval.summaryLabel`)}),(0,Y.jsx)(`pre`,{"data-testid":`approval-plan-summary`,children:t.planSummary})]}):null,w?(0,Y.jsx)(`small`,{className:`brain-approval-expiry`,children:a(e,`brain.approval.expiry`,{time:w})}):null,y?(0,Y.jsx)(`small`,{className:`brain-approval-urgency`,role:`alert`,"data-testid":`approval-urgency`,children:a(e,`brain.approval.countdown.warning`)}):null,s?(0,Y.jsxs)(`div`,{className:`brain-approval-editor`,children:[(0,Y.jsx)(`label`,{htmlFor:`brain-approval-plan-editor`,children:a(e,`brain.approval.edit.label`)}),(0,Y.jsx)(`textarea`,{id:`brain-approval-plan-editor`,"data-testid":`approval-edit-textarea`,value:l,rows:8,spellCheck:!1,onChange:e=>u(e.target.value)}),d?(0,Y.jsx)(`small`,{className:`brain-approval-edit-error`,role:`alert`,children:a(e,`brain.approval.edit.invalid`)}):null,(0,Y.jsxs)(`div`,{className:`brain-approval-actions`,children:[(0,Y.jsx)(`button`,{type:`button`,className:`brain-approval-primary`,"data-testid":`approval-edit-run`,disabled:i,onClick:C,children:i?a(e,`brain.approval.running`):a(e,`brain.approval.edit.run`)}),(0,Y.jsx)(`button`,{type:`button`,disabled:i,onClick:()=>c(!1),children:a(e,`brain.approval.edit.close`)})]})]}):(0,Y.jsxs)(`div`,{className:`brain-approval-actions`,children:[(0,Y.jsx)(`button`,{ref:p,type:`button`,className:`brain-approval-primary`,"data-testid":`approval-approve`,disabled:i,onClick:()=>void x({approve:!0}),children:i?a(e,`brain.approval.running`):a(e,`brain.approval.approve`)}),(0,Y.jsxs)(`button`,{type:`button`,"data-testid":`approval-edit`,disabled:i,onClick:S,children:[(0,Y.jsx)(He,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),a(e,`brain.approval.edit`)]}),(0,Y.jsx)(`button`,{type:`button`,"data-testid":`approval-cancel`,disabled:i,onClick:()=>void x({approve:!1}),children:a(e,`brain.approval.cancel`)})]})]})}function nt(e){return e.event===`blocked`?`blocked`:e.event===`parse_error`||e.ok===!1?`error`:e.event===`proposed`?`proposed`:e.event===`tool`?`ok`:e.phase===`rollback`?`error`:`info`}function rt(e){if(e.phase===`rollback`)return`brain.steps.rollback`;switch(e.event){case`planned`:return`brain.steps.planned`;case`tool`:return e.ok===!1?`brain.steps.tool.failed`:`brain.steps.tool`;case`proposed`:return`brain.steps.proposed`;case`blocked`:return`brain.steps.blocked`;case`parse_error`:return`brain.steps.parseError`;case`verdict`:return`brain.steps.verdict`;case`final`:return`brain.steps.final`;case`state`:return`brain.steps.state`;default:return`brain.steps.step`}}function it(e){return e.split(/[\\/]/).filter(Boolean).pop()||e}function at(e){return[e.action,e.path?it(e.path):``,e.decision,e.verdict,e.state].filter(Boolean).join(` · `)}function ot({language:e,steps:t,streaming:n}){if(!t.length)return null;let r=(0,Y.jsx)(`ol`,{className:`brain-step-list`,children:t.slice(-30).map((t,n)=>{let r=nt(t),i=at(t);return(0,Y.jsxs)(`li`,{className:`brain-step-item is-${r}`,children:[(0,Y.jsx)(`span`,{className:`brain-step-dot`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{className:`brain-step-label`,children:a(e,rt(t))}),i?(0,Y.jsx)(`span`,{className:`brain-step-meta`,children:i}):null,t.detail?(0,Y.jsx)(`small`,{className:`brain-step-detail`,children:t.detail}):null]},n)})});return n?(0,Y.jsxs)(`section`,{className:`brain-step-timeline is-live`,"aria-label":a(e,`brain.steps.aria`),"data-testid":`agent-step-timeline`,children:[(0,Y.jsxs)(`p`,{className:`brain-step-live-head`,role:`status`,children:[(0,Y.jsx)(`span`,{className:`brain-step-dot is-live`,"aria-hidden":`true`}),a(e,`brain.steps.live`,{count:t.length})]}),r]}):(0,Y.jsxs)(`details`,{className:`brain-step-timeline`,"aria-label":a(e,`brain.steps.aria`),"data-testid":`agent-step-timeline`,children:[(0,Y.jsx)(`summary`,{children:a(e,`brain.steps.summary`,{count:t.length})}),r]})}function st({language:e,summary:t}){if(t.total<1)return null;let n=Object.entries(t.repairs).sort((e,t)=>t[1]-e[1]).slice(0,3).map(([e,t])=>`${e} ×${t}`);return t.parseRecovered>0&&n.push(`parse ×${t.parseRecovered}`),(0,Y.jsx)(`p`,{className:`brain-loop-repairs`,role:`note`,"data-testid":`loop-repairs-note`,title:n.join(`, `)||void 0,children:a(e,`brain.agent.repairs`,{count:t.total})})}function ct({language:e,explanation:t}){return(0,Y.jsxs)(`div`,{className:`brain-run-explanation is-${t.ok?`ok`:`caution`} strain-${t.strainLevel}`,role:`note`,"data-testid":`run-explanation`,"data-code":t.code,children:[t.headline?(0,Y.jsx)(`strong`,{children:t.headline}):null,t.details.length?(0,Y.jsx)(`ul`,{children:t.details.map(e=>(0,Y.jsx)(`li`,{children:e},e))}):null,(0,Y.jsx)(`small`,{children:a(e,`brain.agent.explanation.why`)})]})}function lt(e,t){return`${e}-cite-${t}`}function ut({language:e,proof:t,messageId:n}){let r=e=>{let t=document.getElementById(lt(n,e));t&&(t.scrollIntoView({behavior:`smooth`,block:`nearest`}),t.focus())};return(0,Y.jsx)(`span`,{className:`brain-inline-citations`,"aria-label":a(e,`brain.answerProof.citationsLabel`,{count:t.citations.length}),children:t.citations.map((t,i)=>(0,Y.jsx)(`button`,{type:`button`,className:`brain-inline-citation`,"aria-label":a(e,`brain.answerProof.marker`,{index:i+1}),"aria-controls":lt(n,t.id),title:t.title,onClick:()=>r(t.id),children:i+1},t.id))})}function dt({language:e,proof:t,messageId:n,onUseEvidence:r}){let[i,o]=J.useState(null);return(0,Y.jsxs)(`section`,{className:`brain-answer-proof`,role:`group`,"aria-label":a(e,`brain.answerProof.aria`),children:[(0,Y.jsxs)(`div`,{className:`brain-answer-proof-head`,children:[(0,Y.jsx)(`span`,{children:a(e,`brain.answerProof.title`)}),(0,Y.jsx)(`strong`,{children:t.provenAcrossModels?a(e,`brain.answerProof.modelProven`,{model:t.model}):a(e,`brain.answerProof.modelPending`,{model:t.model})}),t.citations.length?(0,Y.jsx)(`small`,{className:`brain-answer-proof-count`,children:a(e,`brain.answerProof.citationsLabel`,{count:t.citations.length})}):null]}),t.citations.length?(0,Y.jsx)(`ol`,{children:t.citations.map((r,i)=>(0,Y.jsx)(`li`,{id:lt(n,r.id),tabIndex:-1,"aria-label":a(e,`brain.answerProof.citationItem`,{index:i+1,title:r.title}),children:(0,Y.jsxs)(`button`,{type:`button`,className:`brain-citation-open`,"aria-haspopup":`dialog`,"aria-label":a(e,`brain.sourceModal.openAria`,{title:r.title}),"data-testid":`citation-open`,onClick:()=>o(r),children:[(0,Y.jsx)(`span`,{className:`brain-answer-proof-index`,"aria-hidden":`true`,children:i+1}),(0,Y.jsx)(`span`,{children:r.source}),(0,Y.jsx)(`strong`,{children:r.title}),r.locator?(0,Y.jsx)(`em`,{className:`brain-citation-locator`,"data-testid":`citation-locator`,children:r.locator}):null,(0,Y.jsx)(`small`,{children:r.snippet||t.query}),(0,Y.jsx)(pt,{language:e,citation:r}),(0,Y.jsx)(`span`,{className:`brain-citation-open-hint`,"aria-hidden":`true`,children:a(e,`brain.sourceModal.open`)})]})},r.id))}):(0,Y.jsx)(`small`,{children:a(e,`brain.answerProof.empty`)}),r&&t.citations.length?(0,Y.jsx)(ft,{language:e,query:t.query,sourceIds:t.citations.map(e=>e.id),onUseEvidence:r}):null,i?(0,Y.jsx)(gt,{language:e,citation:i,onClose:()=>o(null)}):null]})}function ft({language:e,query:t,sourceIds:n,onUseEvidence:i}){let[o,s]=J.useState({status:`idle`}),c=J.useCallback(()=>{s({status:`loading`}),r.evidenceActions(t,n,e).then(e=>{let t=e.data;s({status:`ready`,actions:e.ok?t.actions:[],reason:e.ok?t.reason:e.error||``})})},[e,t,n]);return o.status===`idle`?(0,Y.jsx)(`div`,{className:`brain-evidence-actions`,children:(0,Y.jsx)(`button`,{type:`button`,className:`brain-evidence-action-trigger`,"data-testid":`evidence-actions-open`,onClick:c,children:a(e,`brain.evidenceActions.open`)})}):o.status===`loading`?(0,Y.jsx)(`div`,{className:`brain-evidence-actions`,children:(0,Y.jsx)(`small`,{role:`status`,children:a(e,`brain.evidenceActions.loading`)})}):o.actions.length?(0,Y.jsxs)(`div`,{className:`brain-evidence-actions`,"data-testid":`evidence-actions`,children:[(0,Y.jsx)(`small`,{children:a(e,`brain.evidenceActions.title`)}),(0,Y.jsx)(`div`,{className:`brain-evidence-action-list`,children:o.actions.map(t=>(0,Y.jsx)(`button`,{type:`button`,className:`brain-evidence-action`,"data-testid":`evidence-action-${t.id}`,title:t.suggested_path||void 0,onClick:()=>i(t.prompt),children:t.label[e===`ko`?`ko`:`en`]},t.id))})]}):(0,Y.jsx)(`div`,{className:`brain-evidence-actions`,children:(0,Y.jsx)(`small`,{className:`is-error`,role:`status`,children:o.reason||a(e,`brain.evidenceActions.unavailable`)})})}function pt({language:e,citation:t}){let n=t.matchedTerms.length>0;return(0,Y.jsxs)(`span`,{className:`brain-citation-why`,"aria-label":a(e,`brain.answerProof.why.aria`),children:[(0,Y.jsx)(`em`,{className:`brain-citation-confidence is-${t.confidence}`,children:a(e,`brain.answerProof.confidence.${t.confidence}`)}),n?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`brain-citation-why-label`,children:a(e,`brain.answerProof.matched`)}),t.matchedTerms.slice(0,4).map(e=>(0,Y.jsx)(`mark`,{children:e},e))]}):(0,Y.jsx)(`span`,{className:`brain-citation-why-label`,children:a(e,`brain.answerProof.matched.none`)})]})}var mt=[`source`,`source_uri`,`origin`,`relative_path`,`path`,`filename`,`conversation_id`,`provenance_id`];function ht(e){let t=k(e)?e:{},n=k(t.node)?t.node:null;if(!n)return null;let r=k(n.metadata)?n.metadata:{},i=mt.flatMap(e=>{let t=L(r,[e]);return t?[{key:e,value:t}]:[]});return{title:L(n,[`title`,`label`,`id`]),type:L(n,[`type`]),summary:L(n,[`summary`,`content`,`text`]),provenance:i}}function gt({language:e,citation:t,onClose:n}){let i=ye(n),[o,s]=J.useState({status:`loading`});J.useEffect(()=>{let e=!1;return s({status:`loading`}),r.graphNode(t.id).then(t=>{if(e)return;let n=t.ok?ht(t.data):null;s(n?{status:`ready`,node:n}:{status:`error`,reason:t.error||String(t.status||``)})}),()=>{e=!0}},[t.id]);let c=o.status===`ready`&&o.node.title?o.node.title:t.title;return(0,Y.jsx)(`div`,{className:`file-preview-backdrop`,role:`presentation`,onMouseDown:e=>{e.target===e.currentTarget&&n()},children:(0,Y.jsxs)(`div`,{ref:i,className:`file-preview-modal source-chunk-modal`,role:`dialog`,"aria-modal":`true`,"aria-label":a(e,`brain.sourceModal.aria`,{title:c}),"data-testid":`source-chunk-modal`,children:[(0,Y.jsxs)(`header`,{className:`file-preview-head`,children:[(0,Y.jsx)(`strong`,{className:`file-preview-name`,children:c}),(0,Y.jsxs)(`div`,{className:`file-preview-actions`,children:[o.status===`ready`&&o.node.type?(0,Y.jsx)(`span`,{className:`source-chunk-type`,children:o.node.type}):null,(0,Y.jsx)(`button`,{type:`button`,className:`file-preview-close`,"aria-label":a(e,`brain.sourceModal.close`),onClick:n,children:(0,Y.jsx)(G,{className:`h-4 w-4`,"aria-hidden":`true`})})]})]}),(0,Y.jsx)(`div`,{className:`file-preview-body source-chunk-body`,children:o.status===`loading`?(0,Y.jsx)(`p`,{className:`file-preview-note`,role:`status`,children:a(e,`brain.sourceModal.loading`)}):o.status===`error`?(0,Y.jsx)(`p`,{className:`file-preview-note is-error`,role:`alert`,children:a(e,`brain.sourceModal.error`,{reason:o.reason})}):(0,Y.jsxs)(Y.Fragment,{children:[o.node.summary?(0,Y.jsx)(`pre`,{className:`source-chunk-text`,"data-testid":`source-chunk-text`,children:o.node.summary}):(0,Y.jsx)(`p`,{className:`file-preview-note`,children:a(e,`brain.sourceModal.empty`)}),o.node.provenance.length?(0,Y.jsxs)(`div`,{className:`source-chunk-provenance`,"data-testid":`source-chunk-provenance`,children:[(0,Y.jsx)(`small`,{children:a(e,`brain.sourceModal.provenance`)}),(0,Y.jsx)(`ul`,{children:o.node.provenance.map(e=>(0,Y.jsxs)(`li`,{children:[(0,Y.jsx)(`span`,{children:e.key}),(0,Y.jsx)(`code`,{children:e.value})]},e.key))})]}):null]})})]})})}function _t({language:e}){let t=l(),[n,i]=J.useState(!1),[o,s]=J.useState(``),[c,d]=J.useState(``),[f,p]=J.useState(``),[m,h]=J.useState(null),g=u({queryKey:[`portability`],queryFn:r.graphPortability}),_=u({queryKey:[`backupHealth`],queryFn:r.backupHealth}),v=J.useCallback(e=>h(e),[]),y=o.trim()?Ct(o.trim(),e):``,b=c.trim()?wt(c,e):``,S=!c||c===f,C=!!c.trim()&&S&&!b,w=!!o.trim()&&!y,T=vt(()=>r.graphExport(),void 0,v),E=vt(()=>r.graphBackup(),()=>{t.invalidateQueries({queryKey:[`backupHealth`]}),t.invalidateQueries({queryKey:[`portability`]})},v),D=vt(()=>r.brainArchive({path:o.trim()||null,passphrase:c}),()=>void t.invalidateQueries({queryKey:[`backupHealth`]}),v),O=vt(()=>r.brainArchiveInspect({path:o.trim(),passphrase:c||null}),void 0,v),k=vt(()=>r.brainArchiveRestore({path:o.trim(),passphrase:c,dry_run:!0,confirm:!1}),void 0,v),A=bt(g.data?.data),j=xt(_.data?.data,e);return(0,Y.jsxs)(`section`,{className:`brain-care-panel ${n?`is-expanded`:`is-collapsed`}`,"aria-label":a(e,`care.title`),children:[(0,Y.jsxs)(`button`,{className:`brain-care-summary`,type:`button`,"aria-expanded":n,"aria-controls":`brain-care-details`,onClick:()=>i(e=>!e),children:[(0,Y.jsxs)(`span`,{className:`brain-care-summary-main`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(K,{className:`h-3.5 w-3.5`}),` `,a(e,`care.title`)]}),(0,Y.jsx)(`strong`,{children:a(e,`care.subtitle`)})]}),(0,Y.jsxs)(`div`,{className:`brain-care-proof`,"aria-label":a(e,`care.ownershipModel`),children:[(0,Y.jsx)(`span`,{children:a(e,`care.private`)}),(0,Y.jsx)(`span`,{children:A}),(0,Y.jsx)(`span`,{children:j})]}),(0,Y.jsx)(Ce,{className:`brain-care-toggle h-4 w-4`,"aria-hidden":`true`})]}),n?(0,Y.jsxs)(`div`,{id:`brain-care-details`,className:`brain-care-details`,children:[(0,Y.jsxs)(`div`,{className:`brain-care-actions`,children:[(0,Y.jsx)(yt,{icon:(0,Y.jsx)(oe,{className:`h-3.5 w-3.5`}),label:a(e,`care.export`),detail:a(e,`care.export.detail`),pendingLabel:a(e,`care.working`),pending:T.isPending,onClick:()=>T.mutate()}),(0,Y.jsx)(yt,{icon:(0,Y.jsx)(x,{className:`h-3.5 w-3.5`}),label:a(e,`care.backup`),detail:a(e,`care.backup.detail`),pendingLabel:a(e,`care.working`),pending:E.isPending,onClick:()=>E.mutate()}),(0,Y.jsx)(yt,{icon:(0,Y.jsx)(De,{className:`h-3.5 w-3.5`}),label:a(e,`care.archive`),detail:a(e,`care.archive.detail`),pendingLabel:a(e,`care.working`),pending:D.isPending,disabled:!C,onClick:()=>D.mutate()})]}),(0,Y.jsxs)(`div`,{className:`brain-care-archive`,children:[(0,Y.jsx)(`input`,{value:o,onChange:e=>s(e.target.value),placeholder:a(e,`care.path.placeholder`),"aria-label":a(e,`care.path.label`)}),(0,Y.jsx)(`input`,{type:`password`,value:c,onChange:e=>d(e.target.value),placeholder:a(e,`care.passphrase.placeholder`),"aria-label":a(e,`care.passphrase.label`)}),(0,Y.jsx)(`input`,{type:`password`,value:f,onChange:e=>p(e.target.value),placeholder:a(e,`care.passphrase.confirmPlaceholder`),"aria-label":a(e,`care.passphrase.confirmLabel`)}),(0,Y.jsxs)(`div`,{className:`brain-care-guidance`,role:`status`,children:[y?(0,Y.jsx)(`span`,{className:`is-error`,children:y}):o.trim()?(0,Y.jsx)(`span`,{children:a(e,`care.path.ready`)}):null,b?(0,Y.jsx)(`span`,{className:`is-error`,children:b}):c?(0,Y.jsx)(`span`,{children:a(e,`care.passphrase.strong`)}):null,S?null:(0,Y.jsx)(`span`,{className:`is-error`,children:a(e,`care.passphrase.mismatch`)})]}),(0,Y.jsxs)(`div`,{className:`brain-care-archive-actions`,children:[(0,Y.jsxs)(q,{variant:`outline`,size:`sm`,disabled:!w||O.isPending,onClick:()=>O.mutate(),children:[(0,Y.jsx)(Me,{className:`h-3.5 w-3.5`}),` `,a(e,`care.inspect`)]}),(0,Y.jsxs)(q,{variant:`outline`,size:`sm`,disabled:!w||!c.trim()||!S||k.isPending,onClick:()=>k.mutate(),children:[(0,Y.jsx)(Se,{className:`h-3.5 w-3.5`}),` `,a(e,`care.restorePreview`)]})]})]}),m?(0,Y.jsx)(`div`,{className:`brain-care-result ${m.ok?`is-ok`:`is-error`}`,role:`status`,children:(0,Y.jsx)(St,{result:m,language:e})}):(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`care.note`)})]}):null]})}function vt(e,t,n){return d({mutationFn:e,onSuccess:e=>{n?.(e),t?.()}})}function yt({icon:e,label:t,detail:n,pendingLabel:r,pending:i,disabled:a,onClick:o}){return(0,Y.jsxs)(`button`,{className:`brain-care-button`,type:`button`,disabled:a||i,onClick:o,children:[e,(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:i?r:t}),(0,Y.jsx)(`small`,{children:n})]})]})}function bt(e){return L(k(e)?e:{},[`archive_format`,`format`,`graph_schema_version`,`schema_version`],`.latticebrain`)}function xt(e,t){let n=k(e)?e:{},r=n.count||n.backups||n.available;return r!=null&&r!==``?a(t,`care.backup.count`,{count:String(r)}):a(t,`care.backup.ready`)}function St({result:e,language:t}){if(!e.ok)return(0,Y.jsxs)(`div`,{className:`brain-care-result-summary`,children:[(0,Y.jsx)(`strong`,{children:a(t,`care.result.error`)}),e.error&&e.error!==a(t,`care.result.error`)?(0,Y.jsx)(`span`,{children:e.error}):null]});let n=k(e.data)?e.data:{},r=L(n,[`path`,`archive_path`,`backup_path`,`export_path`,`latest_backup`]),i=L(n,[`message`,`status`,`result`],a(t,`care.result.completed`)),o={memories:L(n,[`nodes`,`total_nodes`,`memories`,`memory_count`]),links:L(n,[`edges`,`total_edges`,`relationships`,`relationship_count`]),conversations:L(n,[`conversations`,`conversation_count`])};return(0,Y.jsxs)(`div`,{className:`brain-care-result-summary`,children:[(0,Y.jsx)(`strong`,{children:i}),r?(0,Y.jsx)(`span`,{children:a(t,`care.result.path`,{path:r})}):null,o.memories||o.links||o.conversations?(0,Y.jsx)(`span`,{children:a(t,`care.result.contents`,{memories:o.memories||`0`,links:o.links||`0`,conversations:o.conversations||`0`})}):null,n.dry_run===!0?(0,Y.jsx)(`span`,{children:a(t,`care.result.dryRun`)}):null]})}function Ct(e,t){return/[<>:"|?*]/.test(e)?a(t,`care.path.invalidChars`):/\.(latticebrain|zip|json)$/i.test(e)?``:a(t,`care.path.extension`)}function wt(e,t){return e.length<12?a(t,`care.passphrase.tooShort`):[/[a-z]/,/[A-Z]/,/\d/,/[^A-Za-z0-9]/].filter(t=>t.test(e)).length<3?a(t,`care.passphrase.tooSimple`):``}var Tt=[`freshness`,`connectivity`,`embedding_coverage`,`consistency`],Et=new Set([`rebuild_vector_index`,`review_orphans`,`refresh_stale_knowledge`,`resolve_contradictions`]);function Dt({language:e}){let t=l(),[n,i]=J.useState(!1),o=u({queryKey:[`brainHealth`],queryFn:r.brainHealth,enabled:n}),s=u({queryKey:[`brainInsights`],queryFn:r.brainInsights,enabled:n}),c=u({queryKey:[`brainContradictions`],queryFn:r.brainContradictions,enabled:n}),[p,m]=J.useState(null),h=d({mutationFn:()=>r.brainConsolidate(!1),onSuccess:e=>{e.ok&&k(e.data)&&m(e.data)}}),g=d({mutationFn:()=>r.brainConsolidate(!0),onSuccess:e=>{e.ok&&k(e.data)&&m(e.data),t.invalidateQueries({queryKey:[`brainHealth`]})}}),_=o.data?.ok&&k(o.data.data)?o.data.data:null,v=n&&!o.isPending&&(o.isError||!o.data?.ok||o.data?.source===`unavailable`),y=()=>{o.refetch(),s.refetch(),c.refetch()},b=s.data?.ok&&k(s.data.data)?s.data.data:null,x=c.data?.ok&&k(c.data.data)?Number(c.data.data.count||0):0,S=_&&typeof _.overall_score==`number`?_.overall_score:null,C=_&&typeof _.grade==`string`?_.grade:null,w=_&&k(_.dimensions)?_.dimensions:{},T=_&&Array.isArray(_.recommended_actions)?_.recommended_actions:[],E=b&&k(b.activity)?b.activity:{},D=b&&k(b.attention)?b.attention:{};return(0,Y.jsxs)(`section`,{className:`brain-care-panel brain-intelligence-panel ${n?`is-expanded`:`is-collapsed`}`,"aria-label":a(e,`intelligence.title`),children:[(0,Y.jsxs)(`button`,{className:`brain-care-summary`,type:`button`,"aria-expanded":n,"aria-controls":`brain-intelligence-details`,onClick:()=>i(e=>!e),children:[(0,Y.jsxs)(`span`,{className:`brain-care-summary-main`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(B,{className:`h-3.5 w-3.5`}),` `,a(e,`intelligence.title`)]}),(0,Y.jsx)(`strong`,{children:a(e,`intelligence.subtitle`)})]}),n&&S!==null?(0,Y.jsxs)(`div`,{className:`brain-care-proof`,children:[(0,Y.jsxs)(`span`,{children:[a(e,`intelligence.score`),`: `,S]}),(0,Y.jsx)(`span`,{children:Ot(C,e)})]}):null,(0,Y.jsx)(Ce,{className:`brain-care-toggle h-4 w-4`,"aria-hidden":`true`})]}),n?(0,Y.jsx)(`div`,{id:`brain-intelligence-details`,className:`brain-care-details`,children:o.isPending?(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`intelligence.loading`)}):v?(0,Y.jsxs)(`div`,{className:`grid gap-2`,role:`alert`,children:[(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`intelligence.loadError`)}),o.data?.error?(0,Y.jsx)(`small`,{className:`text-xs text-muted-foreground opacity-75`,children:o.data.error}):null,(0,Y.jsx)(`div`,{children:(0,Y.jsx)(q,{variant:`outline`,size:`sm`,onClick:y,children:a(e,`common.retry`)})})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`brain-intelligence-dimensions`,role:`list`,children:Tt.map(t=>{let n=k(w[t])?w[t]:{},r=typeof n.score==`number`?n.score:null;return(0,Y.jsxs)(`div`,{className:`brain-intelligence-dimension`,role:`listitem`,children:[(0,Y.jsx)(`small`,{children:a(e,`intelligence.dim.${t}`)}),(0,Y.jsx)(`strong`,{children:r===null?`—`:r})]},t)})}),(0,Y.jsxs)(`div`,{className:`brain-intelligence-insights`,role:`status`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(f,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),` `,a(e,`intelligence.insights.recent`,{count:String(X(E.recent_nodes))})]}),(0,Y.jsx)(`span`,{children:a(e,`intelligence.insights.stale`,{count:String(X(D.stale_nodes))})}),(0,Y.jsx)(`span`,{children:a(e,`intelligence.insights.orphans`,{count:String(X(D.orphan_nodes))})}),(0,Y.jsx)(`span`,{children:a(e,`intelligence.contradictions`,{count:String(x)})})]}),T.length?(0,Y.jsxs)(`div`,{className:`brain-intelligence-actions`,children:[(0,Y.jsx)(`small`,{children:a(e,`intelligence.actions`)}),(0,Y.jsx)(`ul`,{children:T.map((t,n)=>{let r=k(t)?t:{},i=String(r.id||``);return(0,Y.jsx)(`li`,{children:Et.has(i)?a(e,`intelligence.action.${i}`):String(r.reason||i)},`${i}-${n}`)})})]}):null,(0,Y.jsxs)(`div`,{className:`brain-care-archive-actions`,children:[(0,Y.jsx)(q,{variant:`outline`,size:`sm`,disabled:h.isPending,onClick:()=>h.mutate(),children:h.isPending?a(e,`intelligence.consolidate.working`):a(e,`intelligence.consolidate`)}),p&&X(p.duplicate_memory_count)>0&&p.mode!==`applied`?(0,Y.jsx)(q,{variant:`outline`,size:`sm`,disabled:g.isPending,onClick:()=>g.mutate(),children:a(e,`intelligence.consolidate.apply`)}):null]}),p?(0,Y.jsx)(`p`,{className:`brain-care-note`,role:`status`,children:p.mode===`applied`?a(e,`intelligence.consolidate.applied`,{count:String(X(p.pruned))}):X(p.duplicate_memory_count)>0||X(p.duplicate_edge_count)>0?a(e,`intelligence.consolidate.found`,{memories:String(X(p.duplicate_memory_count)),edges:String(X(p.duplicate_edge_count))}):a(e,`intelligence.consolidate.none`)}):null]})}):null]})}function Ot(e,t){return a(t,`intelligence.grade.${e&&new Set([`excellent`,`good`,`attention`,`critical`]).has(e)?e:`unknown`}`)}function X(e){let t=Number(e);return Number.isFinite(t)?t:0}var kt=[`recent`,`contradictions`,`stale`,`frequent`];function At(e,t){for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t.trim();if(typeof t==`number`&&Number.isFinite(t))return String(t)}return``}function jt(e){let t=o(e)?e:{},n=o(t.beds)?t.beds:{};return{available:t.available===!0,beds:kt.map(e=>{let t=o(n[e])?n[e]:{},r=Number(t.count),i=s(t.items).flatMap(t=>{let n=o(t)?t:{},r=At(n,[`id`]),i=At(n,[`title`,`summary`,`label`]);return!r||!i?[]:[{id:r,title:i,type:At(n,[`type`,`kind`]),detail:e===`frequent`?At(n,[`degree`]):At(n,[`updated_at`,`detail`])}]});return{id:e,count:Number.isFinite(r)&&r>0?Math.round(r):i.length,items:i}})}}function Mt({language:e}){let[t,n]=J.useState(!1),i=u({queryKey:[`knowledgeGarden`],queryFn:()=>r.brainGarden(),enabled:t,staleTime:6e4}),o=J.useMemo(()=>i.data?.ok?jt(i.data.data):null,[i.data]);return(0,Y.jsxs)(`details`,{className:`brain-garden`,"data-testid":`knowledge-garden`,open:t,onToggle:e=>n(e.currentTarget.open),children:[(0,Y.jsx)(`summary`,{children:a(e,`brain.garden.title`)}),t?i.isLoading?(0,Y.jsx)(`p`,{role:`status`,children:a(e,`brain.garden.loading`)}):!o||!o.available?(0,Y.jsx)(`p`,{role:`status`,className:`is-muted`,children:a(e,`brain.garden.unavailable`)}):(0,Y.jsx)(`div`,{className:`brain-garden-beds`,children:o.beds.map(t=>(0,Y.jsxs)(`section`,{"data-testid":`garden-bed-${t.id}`,children:[(0,Y.jsxs)(`h4`,{children:[a(e,`brain.garden.bed.${t.id}`),(0,Y.jsx)(`span`,{className:`brain-garden-count`,children:t.count})]}),t.items.length?(0,Y.jsx)(`ul`,{children:t.items.map(e=>(0,Y.jsxs)(`li`,{children:[(0,Y.jsx)(`strong`,{children:e.title}),e.type?(0,Y.jsx)(`em`,{children:e.type}):null,e.detail?(0,Y.jsx)(`small`,{children:e.detail}):null]},e.id))}):(0,Y.jsx)(`p`,{className:`is-muted`,children:a(e,`brain.garden.empty.${t.id}`)})]},t.id))}):null]})}var Nt={"review-pending":`briefing.action.reviewPending`,"enable-drafts":`briefing.action.enableDrafts`,"install-suggestion":`briefing.action.installSuggestion`,"connect-knowledge":`briefing.action.connectKnowledge`,"check-health":`briefing.action.checkHealth`,"ask-brain":`briefing.action.askBrain`};function Z(e,t){let n=(e.sections||{})[t];return n&&typeof n==`object`?n:{}}function Pt({language:e,variant:t=`drawer`}){let[n,i]=J.useState(t===`home`),o=J.useRef(null),c=u({queryKey:[`commandBriefing`],queryFn:r.commandBriefing,enabled:n});J.useEffect(()=>{let e=()=>{i(!0);let e=o.current;e&&(e.closest(`details`)?.setAttribute(`open`,``),window.setTimeout(()=>e.scrollIntoView?.({behavior:`smooth`,block:`center`}),0))};return window.addEventListener(`lattice:open-briefing`,e),()=>window.removeEventListener(`lattice:open-briefing`,e)},[]);let l=c.data?.data||{},d=!!c.data&&(!c.data?.ok||Object.keys(l.sections||{}).length===0),f=Z(l,`knowledge`),m=Z(l,`conversations`),h=Z(l,`automations`),g=Z(l,`review`),_=Z(l,`health`),v=Z(l,`suggestions`),y=s(l.quick_actions),b=s(f.recent);return(0,Y.jsxs)(`section`,{ref:o,className:`brain-care-panel daily-briefing-panel ${n?`is-expanded`:`is-collapsed`} ${t===`home`?`is-home`:``}`,"aria-label":a(e,`briefing.title`),"data-testid":`daily-briefing`,children:[(0,Y.jsxs)(`button`,{className:`brain-care-summary`,type:`button`,"aria-expanded":n,"aria-controls":`daily-briefing-details`,onClick:()=>i(e=>!e),children:[(0,Y.jsxs)(`span`,{className:`brain-care-summary-main`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(ve,{className:`h-3.5 w-3.5`}),` `,a(e,`briefing.title`)]}),(0,Y.jsx)(`strong`,{children:a(e,`briefing.subtitle`)})]}),(0,Y.jsx)(Ce,{className:`brain-care-toggle h-4 w-4`,"aria-hidden":`true`})]}),n?(0,Y.jsx)(`div`,{id:`daily-briefing-details`,className:`brain-care-details`,children:c.isPending?(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`briefing.loading`)}):d?(0,Y.jsx)(`p`,{className:`brain-care-note`,"data-testid":`daily-briefing-empty`,children:a(e,`briefing.empty`)}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`daily-briefing-stats`,role:`list`,children:[(0,Y.jsxs)(`div`,{role:`listitem`,className:`daily-briefing-stat`,children:[(0,Y.jsx)(`strong`,{children:String(m.questions??0)}),(0,Y.jsx)(`span`,{children:a(e,`briefing.stat.questions`)})]}),(0,Y.jsxs)(`div`,{role:`listitem`,className:`daily-briefing-stat`,children:[(0,Y.jsxs)(`strong`,{children:[String(h.enabled??0),`/`,String(h.total??0)]}),(0,Y.jsx)(`span`,{children:a(e,`briefing.stat.automations`)})]}),(0,Y.jsxs)(`div`,{role:`listitem`,className:`daily-briefing-stat`,children:[(0,Y.jsx)(`strong`,{children:String(g.pending??0)}),(0,Y.jsx)(`span`,{children:a(e,`briefing.stat.review`)})]}),(0,Y.jsxs)(`div`,{role:`listitem`,className:`daily-briefing-stat`,children:[(0,Y.jsx)(`strong`,{children:_.available&&_.grade?String(_.grade):`—`}),(0,Y.jsx)(`span`,{children:a(e,`briefing.stat.health`)})]})]}),b.length>0?(0,Y.jsxs)(`div`,{className:`daily-briefing-recent`,children:[(0,Y.jsx)(`p`,{className:`command-palette-group`,children:a(e,`briefing.recent`)}),(0,Y.jsx)(`ul`,{children:b.slice(0,3).map(e=>(0,Y.jsx)(`li`,{title:String(e.title||``),children:String(e.title||e.id||``)},String(e.id)))})]}):null,Number(v.count??0)>0?(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`briefing.suggestions`,{count:String(v.count)})}):null,y.length>0?(0,Y.jsx)(`div`,{className:`daily-briefing-actions`,children:y.map(t=>{let n=Nt[t.id];return n?(0,Y.jsxs)(`button`,{type:`button`,className:`daily-briefing-action`,onClick:()=>we(t.target),children:[(0,Y.jsx)(`span`,{children:a(e,n,{count:String(t.count||0)})}),(0,Y.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":`true`})]},t.id):null})}):null]})}):null]})}function Ft({language:e}){let t=l(),[n,i]=J.useState(!1),o=u({queryKey:[`pendingProposals`],queryFn:r.proposals,enabled:n}),c=async()=>{await Promise.all([t.invalidateQueries({queryKey:[`pendingProposals`]}),t.invalidateQueries({queryKey:[`reviewItems`]})])},[f,p]=J.useState({}),m=d({mutationFn:e=>r.approveReviewItem(e),onSuccess:async(e,t)=>{if(!e.ok&&e.status===409){p(e=>({...e,[t]:!0}));return}e.ok&&(p(e=>{let n={...e};return delete n[t],n}),await c())}}),h=d({mutationFn:e=>r.rejectProposal(e),onSuccess:c}),g=s((o.data?.data||{}).items),_=m.isPending||h.isPending,v=o.isError||(o.data?!o.data.ok:!1);return(0,Y.jsxs)(`section`,{className:`brain-care-panel pending-proposals-panel ${n?`is-expanded`:`is-collapsed`}`,"aria-label":a(e,`proposals.title`),"data-testid":`pending-proposals`,children:[(0,Y.jsxs)(`button`,{className:`brain-care-summary`,type:`button`,"aria-expanded":n,"aria-controls":`pending-proposals-details`,onClick:()=>i(e=>!e),children:[(0,Y.jsxs)(`span`,{className:`brain-care-summary-main`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(Ie,{className:`h-3.5 w-3.5`}),` `,a(e,`proposals.title`)]}),(0,Y.jsx)(`strong`,{children:a(e,`proposals.subtitle`)})]}),(0,Y.jsx)(Ce,{className:`brain-care-toggle h-4 w-4`,"aria-hidden":`true`})]}),n?(0,Y.jsxs)(`div`,{id:`pending-proposals-details`,className:`brain-care-details`,children:[o.isPending?(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`proposals.loading`)}):v?(0,Y.jsxs)(`div`,{className:`grid gap-2`,role:`alert`,children:[(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`proposals.error`)}),o.data?.error?(0,Y.jsx)(`small`,{className:`text-xs text-muted-foreground opacity-75`,children:o.data.error}):null,(0,Y.jsx)(`button`,{type:`button`,className:`daily-briefing-action`,onClick:()=>void o.refetch(),children:(0,Y.jsx)(`span`,{children:a(e,`common.retry`)})})]}):g.length===0?(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`proposals.empty`)}):(0,Y.jsx)(`div`,{className:`pending-proposals-list`,children:g.map(t=>{let n=t.payload||{},r=s(n.diff),i=String(n.tier||`small`);return(0,Y.jsxs)(`article`,{className:`pending-proposal`,children:[(0,Y.jsxs)(`header`,{children:[(0,Y.jsx)(`strong`,{title:String(n.path||t.title),children:String(n.path||t.title)}),(0,Y.jsx)(`span`,{className:`pending-proposal-tier`,children:a(e,t.kind===`file_delete`?`proposals.kind.delete`:i===`large`?`proposals.tier.large`:`proposals.tier.small`)})]}),(0,Y.jsx)(`p`,{className:`brain-care-note`,children:t.summary}),r.length>0?(0,Y.jsx)(fe,{language:e,diff:r}):null,f[t.id]?(0,Y.jsx)(ue,{language:e,itemId:t.id}):null,(0,Y.jsxs)(`div`,{className:`pending-proposal-actions`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:`daily-briefing-action`,disabled:_,onClick:()=>m.mutate(t.id),children:[(0,Y.jsx)(be,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`proposals.approve`)})]}),(0,Y.jsxs)(`button`,{type:`button`,className:`daily-briefing-action pending-proposal-reject`,disabled:_,onClick:()=>h.mutate(t.id),children:[(0,Y.jsx)(G,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`proposals.reject`)})]})]})]},t.id)})}),(0,Y.jsx)(`p`,{className:`brain-care-note`,children:a(e,`proposals.note`)})]}):null]})}function It({language:e,draft:t,streaming:n,imageData:r,uploadingDocument:i,onDraftChange:o,onImageDataChange:s,onUploadDocument:c,onSend:l,onStop:u,attachments:d}){let f=J.useRef(null);return J.useEffect(()=>{let e=f.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,152)}px`)},[t]),(0,Y.jsxs)(`div`,{className:`brain-composer`,"aria-busy":n,children:[(0,Y.jsx)(`textarea`,{ref:f,rows:1,value:t,onChange:e=>o(e.target.value),onKeyDown:e=>{e.nativeEvent.isComposing||e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),l())},"aria-label":a(e,`brain.placeholder`),"aria-describedby":`brain-composer-hint`,"aria-keyshortcuts":`Control+K Meta+K`,placeholder:a(e,`brain.placeholder`)}),(0,Y.jsxs)(`div`,{className:`brain-composer-actions`,children:[(0,Y.jsxs)(`div`,{className:`brain-composer-attachments`,"aria-label":a(e,`brain.composer.attachments`),children:[(0,Y.jsxs)(`label`,{className:`brain-document-input ${i?`is-disabled`:``}`,children:[(0,Y.jsx)(Fe,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:i?a(e,`brain.upload.uploading`):a(e,`brain.upload.ctaShort`)}),(0,Y.jsx)(`input`,{type:`file`,accept:`.pdf,.docx,.xlsx,.pptx,.txt,.md,.csv,application/pdf,text/plain,text/markdown,text/csv`,className:`sr-only`,disabled:i,onChange:e=>{let t=e.target.files?.[0];e.currentTarget.value=``,t&&c(t)}})]}),(0,Y.jsxs)(`label`,{className:`brain-image-input`,children:[(0,Y.jsx)(Le,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.image`)}),(0,Y.jsx)(`input`,{type:`file`,accept:`image/*`,className:`sr-only`,onChange:async e=>{let t=e.target.files?.[0];e.currentTarget.value=``,t&&s(await Lt(t))}})]}),d,r?(0,Y.jsx)(`span`,{className:`brain-quiet-success`,children:a(e,`brain.imageAttached`)}):null]}),(0,Y.jsx)(`span`,{id:`brain-composer-hint`,className:`brain-composer-hint`,children:a(e,`brain.composer.hint`)}),n&&u?(0,Y.jsxs)(q,{onClick:u,variant:`outline`,className:`brain-composer-submit`,children:[(0,Y.jsx)(qe,{className:`h-4 w-4`,"aria-hidden":`true`}),` `,a(e,`brain.stop`)]}):(0,Y.jsxs)(q,{onClick:l,disabled:!t.trim()||n,className:`brain-composer-submit`,children:[(0,Y.jsx)(Ke,{className:`h-4 w-4`,"aria-hidden":`true`}),` `,a(e,`brain.send`)]})]})]})}function Lt(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||``)),r.onerror=()=>n(r.error),r.readAsDataURL(e)})}function Rt({memories:e,concepts:n,readiness:r,proof:i,onOpenDepth:o}){let s=t(e=>e.language),c=e.filter(e=>e.agentGenerated).slice(0,3),l=e.filter(e=>!e.agentGenerated),u=l.slice(0,3),d=l.slice(3,6),f=n.slice(0,4),p=i.proofs.hasDurableEvidence||i.modelContinuity.proven,m=i.recall.items.length>0,h=i.modelContinuity.proven&&i.claims.keepsContextAcrossModels?i.modelContinuity.activeModel||a(s,`brain.proof.noModel`):a(s,`brain.proof.modelPending`);return(0,Y.jsxs)(`section`,{className:`brain-overview-panel`,"aria-label":a(s,`brain.aria.overview`),children:[(0,Y.jsxs)(`div`,{className:`brain-overview-head`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{children:a(s,`brain.overview.kicker`)}),(0,Y.jsx)(`strong`,{children:a(s,`brain.overview.title`)})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>o(5),children:a(s,`brain.overview.graph`)})]}),(0,Y.jsxs)(`div`,{className:`brain-overview-grid`,children:[(0,Y.jsx)(Bt,{title:a(s,`brain.overview.agent`),empty:a(s,`brain.overview.agentEmpty`),items:c.map(e=>e.title),featured:c.length>0,onOpen:()=>o(2)}),(0,Y.jsx)(Bt,{title:a(s,`brain.overview.recent`),empty:a(s,`brain.overview.recentEmpty`),items:u.map(e=>e.title),onOpen:()=>o(2)}),(0,Y.jsx)(Bt,{title:a(s,`brain.overview.older`),empty:a(s,`brain.overview.olderEmpty`),items:d.map(e=>e.title),onOpen:()=>o(2)}),(0,Y.jsx)(Bt,{title:a(s,`brain.overview.topics`),empty:a(s,`brain.overview.topicsEmpty`),items:f.map(e=>e.label),onOpen:()=>o(3)})]}),(0,Y.jsxs)(`div`,{className:`brain-readiness-strip`,"data-state":r.state,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{children:a(s,`brain.readiness.kicker`)}),(0,Y.jsx)(`strong`,{children:a(s,r.titleKey)})]}),(0,Y.jsx)(`div`,{className:`brain-readiness-meter`,"aria-label":a(s,`brain.readiness.aria`),children:(0,Y.jsx)(`i`,{style:{width:`${r.score}%`}})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>o(r.depth),children:a(s,r.actionKey)})]}),(0,Y.jsxs)(`div`,{className:`brain-proof-strip`,"aria-label":a(s,`brain.proof.aria`),children:[(0,Y.jsx)(zt,{icon:(0,Y.jsx)(je,{className:`h-4 w-4`}),label:a(s,`brain.proof.context`),value:p?a(s,`brain.proof.contextValue`,{count:i.proofs.durableItems}):a(s,`brain.proof.contextEmpty`)}),(0,Y.jsx)(zt,{icon:(0,Y.jsx)(Ue,{className:`h-4 w-4`}),label:a(s,`brain.proof.model`),value:h}),(0,Y.jsx)(zt,{icon:(0,Y.jsx)(y,{className:`h-4 w-4`}),label:a(s,`brain.proof.store`),value:a(s,`brain.proof.storeValue`,{topics:i.proofs.graphConcepts,vectors:i.proofs.vectorItems})})]}),m?(0,Y.jsxs)(`button`,{type:`button`,className:`brain-recall-proof`,onClick:()=>o(2),children:[(0,Y.jsx)(`span`,{children:a(s,`brain.proof.recall`)}),(0,Y.jsx)(`strong`,{children:i.recall.items[0].title}),(0,Y.jsx)(`small`,{children:i.recall.items[0].snippet||i.recall.query})]}):(0,Y.jsxs)(`div`,{className:`brain-recall-proof is-empty`,role:`status`,children:[(0,Y.jsx)(`span`,{children:a(s,`brain.proof.recallEmpty.kicker`)}),(0,Y.jsx)(`strong`,{children:a(s,p?`brain.proof.recallPending`:`brain.proof.recallEmpty.title`)}),(0,Y.jsx)(`small`,{children:a(s,p?`brain.proof.recallPending.detail`:`brain.proof.recallEmpty.detail`)})]})]})}function zt({icon:e,label:t,value:n}){return(0,Y.jsxs)(`div`,{className:`brain-proof-point`,children:[e,(0,Y.jsx)(`span`,{children:t}),(0,Y.jsx)(`strong`,{children:n})]})}function Bt({title:e,empty:t,items:n,featured:r=!1,onOpen:i}){return(0,Y.jsxs)(`button`,{type:`button`,className:`brain-overview-column${r?` is-featured`:``}`,onClick:i,children:[(0,Y.jsx)(`span`,{children:e}),n.length?n.slice(0,3).map(e=>(0,Y.jsx)(`strong`,{children:e},e)):(0,Y.jsx)(`em`,{children:t})]})}function Vt({language:e}){return(0,Y.jsxs)(`div`,{className:`brain-model-missing`,role:`note`,children:[(0,Y.jsx)(ae,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.noModel.banner`)}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>we(`/models`),children:[a(e,`brain.noModel.cta`),(0,Y.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":`true`})]})]})}function Ht(e,t){if(!t)return``;let n=e===`ko`?`ko-KR`:`en-US`,r=new Date(t),i=new Date;return r.getFullYear()===i.getFullYear()&&r.getMonth()===i.getMonth()&&r.getDate()===i.getDate()?r.toLocaleTimeString(n,{hour:`2-digit`,minute:`2-digit`}):r.toLocaleDateString(n,{month:`short`,day:`numeric`})}var Ut=5,Wt=20;function Gt({language:e,items:t,busyId:n,onResume:r,onDelete:i}){let[o,s]=J.useState(null),[c,l]=J.useState(!1),u=t.slice(0,c?Wt:Ut),d=Math.min(t.length,Wt)-Ut;return u.length?(0,Y.jsxs)(`section`,{className:`brain-history-panel`,"aria-label":a(e,`brain.history.aria`),children:[(0,Y.jsxs)(`div`,{className:`brain-history-head`,children:[(0,Y.jsx)(de,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`strong`,{children:a(e,`brain.history.title`)}),(0,Y.jsx)(`span`,{children:a(e,`brain.history.hint`)})]}),(0,Y.jsx)(`ul`,{className:`brain-history-list`,children:u.map(t=>{let c=n===t.id,l=o===t.id;return(0,Y.jsxs)(`li`,{className:`brain-history-item${c?` is-busy`:``}`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:`brain-history-resume`,disabled:c,"aria-label":a(e,`brain.history.resumeAria`,{title:t.title}),onClick:()=>r(t.id),children:[c?(0,Y.jsx)(ie,{className:`h-3.5 w-3.5 brain-ingest-spin`,"aria-hidden":`true`}):null,(0,Y.jsx)(`span`,{className:`brain-history-title`,children:t.title}),(0,Y.jsxs)(`small`,{children:[a(e,`brain.history.messages`,{count:t.messageCount}),t.updatedAt?` · ${Ht(e,t.updatedAt)}`:``]})]}),(0,Y.jsxs)(`button`,{type:`button`,className:`brain-history-delete${l?` is-confirming`:``}`,disabled:c,"aria-label":l?a(e,`brain.history.deleteConfirm`):a(e,`brain.history.deleteAria`,{title:t.title}),onClick:()=>{l?(s(null),i(t.id)):s(t.id)},onBlur:()=>s(e=>e===t.id?null:e),children:[(0,Y.jsx)(Je,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),l?(0,Y.jsx)(`span`,{children:a(e,`brain.history.deleteConfirm`)}):null]})]},t.id)})}),d>0?(0,Y.jsx)(`button`,{type:`button`,className:`brain-history-more`,"aria-expanded":c,onClick:()=>l(e=>!e),children:c?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(ke,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),a(e,`brain.history.showLess`)]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Ce,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),a(e,`brain.history.showMore`,{count:d})]})}):null]}):null}function Kt(e,t){if(e.id===`ask_brain`){Ee();return}if(e.id===`verify_model`){t();return}e.route&&we(e.route)}function qt({language:e,brief:t,showEvidence:n=!0,onAction:r}){let i=t.focus.title||a(e,`brain.brief.focus.empty`),o=t.focus.detail||a(e,`brain.brief.focus.empty.detail`),s=t.nextActions.slice(0,3);return(0,Y.jsxs)(`section`,{className:`brain-brief-panel`,"aria-label":a(e,`brain.brief.aria`),children:[(0,Y.jsxs)(`div`,{className:`brain-brief-copy`,children:[(0,Y.jsx)(`span`,{children:a(e,`brain.brief.kicker`)}),(0,Y.jsx)(`strong`,{children:a(e,t.headlineKey)}),(0,Y.jsx)(`p`,{children:a(e,t.bodyKey,{focus:i})})]}),(0,Y.jsxs)(`div`,{className:`brain-brief-focus`,children:[(0,Y.jsx)(B,{className:`h-4 w-4`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{children:a(e,`brain.brief.focus`)}),(0,Y.jsx)(`strong`,{children:i}),(0,Y.jsx)(`small`,{children:o})]})]}),n?(0,Y.jsx)(`div`,{className:`brain-brief-evidence`,"aria-label":a(e,`brain.brief.evidence.aria`),children:t.evidence.slice(0,3).map(t=>(0,Y.jsxs)(`span`,{title:a(e,t.detailKey),children:[(0,Y.jsx)(`strong`,{children:t.value}),a(e,t.labelKey)]},t.id))}):null,s.length?(0,Y.jsx)(`div`,{className:`brain-brief-actions`,"aria-label":a(e,`brain.brief.actions`),children:s.map(t=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(t),children:[Jt(t.id),(0,Y.jsx)(`span`,{children:a(e,t.labelKey)}),(0,Y.jsx)(`small`,{children:a(e,t.detailKey)})]},t.id))}):null]})}function Jt(e){return e===`add_source`?(0,Y.jsx)(Fe,{className:`h-4 w-4`}):e===`inspect_topics`?(0,Y.jsx)(ge,{className:`h-4 w-4`}):e===`verify_model`?(0,Y.jsx)(Ue,{className:`h-4 w-4`}):e===`backup_brain`?(0,Y.jsx)(le,{className:`h-4 w-4`}):(0,Y.jsx)(p,{className:`h-4 w-4`})}function Yt({language:e,proof:t,modelName:n,onVerify:r}){return(0,Y.jsxs)(`section`,{className:`brain-model-demo`,"aria-label":a(e,`brain.modelDemo.aria`),children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{children:a(e,`brain.modelDemo.kicker`)}),(0,Y.jsx)(`strong`,{children:t.modelContinuity.proven?a(e,`brain.modelDemo.proven`):a(e,`brain.modelDemo.pending`)}),(0,Y.jsx)(`small`,{children:a(e,`brain.modelDemo.detail`,{model:t.modelContinuity.activeModel||n})})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:r,children:[(0,Y.jsx)(Ue,{className:`h-3.5 w-3.5`}),a(e,`brain.modelDemo.verify`)]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>we(`/models`),children:[(0,Y.jsx)(ae,{className:`h-3.5 w-3.5`}),a(e,`brain.modelDemo.change`)]})]})}var Xt={chat:`brain.ingest.type.chat`,file:`brain.ingest.type.file`,folder:`brain.ingest.type.folder`,note:`brain.ingest.type.note`,web:`brain.ingest.type.web`};function Zt({language:e,uploadingDocument:t,ingestionStates:n,onUploadDocument:r,onPickFolder:i,onConnectFolder:o,onIngestNote:s,onIngestWeb:c}){let[l,u]=J.useState(``),[d,f]=J.useState(``),[p,m]=J.useState(``);return(0,Y.jsxs)(`section`,{className:`brain-ingestion-panel`,"aria-label":a(e,`brain.ingest.aria`),children:[(0,Y.jsxs)(`div`,{className:`brain-ingestion-head`,children:[(0,Y.jsx)(`span`,{children:a(e,`brain.ingest.kicker`)}),(0,Y.jsx)(`strong`,{children:a(e,`brain.ingest.title`)})]}),(0,Y.jsxs)(`div`,{className:`brain-ingestion-grid`,children:[(0,Y.jsxs)(`label`,{className:`brain-ingest-tile is-primary ${Q(n.file)} ${t?`is-disabled`:``}`,children:[(0,Y.jsx)(Fe,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:t?a(e,`brain.upload.uploading`):a(e,`brain.ingest.file`)}),(0,Y.jsx)(`small`,{children:a(e,`brain.ingest.file.detail`)}),(0,Y.jsx)(`input`,{type:`file`,accept:`.pdf,.docx,.xlsx,.pptx,.txt,.md,.csv,application/pdf,text/plain,text/markdown,text/csv`,className:`sr-only`,disabled:t,onChange:e=>{let t=e.target.files?.[0];e.currentTarget.value=``,t&&r(t)}}),(0,Y.jsx)(en,{language:e,state:n.file,ctaKey:`brain.ingest.cta.file`})]}),(0,Y.jsxs)(`form`,{className:`brain-ingest-tile ${Q(n.folder)}`,onSubmit:e=>{e.preventDefault(),o(l),u(``)},children:[(0,Y.jsx)(se,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:a(e,`brain.ingest.folder`)}),(0,Y.jsxs)(`button`,{type:`button`,className:`brain-ingest-folder-picker`,onClick:i,children:[(0,Y.jsx)(H,{className:`h-4 w-4`,"aria-hidden":`true`}),a(e,`capture.local.choose`)]}),(0,Y.jsx)(`input`,{value:l,onChange:e=>u(e.target.value),placeholder:a(e,`brain.ingest.folder.placeholder`)}),(0,Y.jsx)(en,{language:e,state:n.folder,ctaKey:`brain.ingest.cta.folder`})]}),(0,Y.jsxs)(`form`,{className:`brain-ingest-tile ${Q(n.note)}`,onSubmit:e=>{e.preventDefault(),s(d),f(``)},children:[(0,Y.jsx)(Pe,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:a(e,`brain.ingest.note`)}),(0,Y.jsx)(`input`,{value:d,onChange:e=>f(e.target.value),placeholder:a(e,`brain.ingest.note.placeholder`)}),(0,Y.jsx)(en,{language:e,state:n.note,ctaKey:`brain.ingest.cta.note`})]}),(0,Y.jsxs)(`form`,{className:`brain-ingest-tile ${Q(n.web)}`,onSubmit:e=>{e.preventDefault(),c(p),m(``)},children:[(0,Y.jsx)(ce,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:a(e,`brain.ingest.web`)}),(0,Y.jsx)(`input`,{value:p,onChange:e=>m(e.target.value),placeholder:a(e,`brain.ingest.web.placeholder`)}),(0,Y.jsx)(en,{language:e,state:n.web,ctaKey:`brain.ingest.cta.web`})]})]})]})}function Qt({language:e,uploadingDocument:t,ingestionStates:n,onUploadDocument:r,onPickFolder:i,onConnectFolder:o,onIngestNote:s,onIngestWeb:c,variant:l=`panel`}){let[u,d]=J.useState(null),[f,p]=J.useState(``),[m,h]=J.useState(``),[g,_]=J.useState(``),v=J.useId(),y=e=>{d(t=>t===e?null:e)},b=e=>{if(e===`folder`){if(!f.trim())return;o(f),p(``)}else if(e===`note`){if(!m.trim())return;s(m),h(``)}else{if(!g.trim())return;c(g),_(``)}d(null)};return(0,Y.jsxs)(`section`,{className:`brain-ingestion-dock${l===`inline`?` is-inline`:``}`,"data-testid":`brain-ingestion-dock`,"aria-label":a(e,`brain.ingest.aria`),onKeyDown:e=>{e.key===`Escape`&&d(null)},children:[l===`inline`?null:(0,Y.jsxs)(`div`,{className:`brain-ingestion-dock-head`,children:[(0,Y.jsx)(B,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`small`,{children:a(e,`brain.ingest.kicker`)}),(0,Y.jsx)(`strong`,{children:a(e,`brain.ingest.dock.title`)})]})]}),(0,Y.jsxs)(`div`,{className:`brain-ingestion-dock-actions`,children:[(0,Y.jsxs)(`label`,{className:`brain-ingestion-dock-action ${Q(n.file)} ${t?`is-disabled`:``}`,children:[(0,Y.jsx)(Fe,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.ingest.type.file`)}),(0,Y.jsx)(`i`,{"aria-hidden":`true`}),(0,Y.jsx)(`input`,{type:`file`,accept:`.pdf,.docx,.xlsx,.pptx,.txt,.md,.csv,application/pdf,text/plain,text/markdown,text/csv`,className:`sr-only`,disabled:t,onChange:e=>{let t=e.target.files?.[0];e.currentTarget.value=``,t&&r(t)}})]}),[[`folder`,H],[`note`,Pe],[`web`,ce]].map(([t,r])=>(0,Y.jsxs)(`button`,{type:`button`,className:`brain-ingestion-dock-action ${Q(n[t])}`,"aria-expanded":u===t,"aria-controls":u===t?v:void 0,onClick:()=>y(t),children:[(0,Y.jsx)(r,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.ingest.type.${t}`)}),(0,Y.jsx)(`i`,{"aria-hidden":`true`})]},t))]}),u?(0,Y.jsxs)(`div`,{id:v,className:`brain-ingestion-dock-popover`,children:[(0,Y.jsxs)(`header`,{children:[(0,Y.jsx)(`span`,{children:a(e,`brain.ingest.${u}`)}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":a(e,`brain.ingest.dock.close`),onClick:()=>d(null),children:(0,Y.jsx)(G,{className:`h-4 w-4`,"aria-hidden":`true`})})]}),u===`folder`?(0,Y.jsxs)(`button`,{type:`button`,className:`brain-ingestion-dock-picker`,onClick:i,children:[(0,Y.jsx)(H,{className:`h-4 w-4`,"aria-hidden":`true`}),a(e,`capture.local.choose`)]}):null,(0,Y.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),b(u)},children:[(0,Y.jsx)(`input`,{autoFocus:!0,value:u===`folder`?f:u===`note`?m:g,onChange:e=>{u===`folder`?p(e.target.value):u===`note`?h(e.target.value):_(e.target.value)},placeholder:a(e,`brain.ingest.${u}.placeholder`),"aria-label":a(e,`brain.ingest.${u}.placeholder`)}),(0,Y.jsx)(`button`,{type:`submit`,"aria-label":a(e,`brain.action.add`),children:(0,Y.jsx)(Oe,{className:`h-4 w-4`,"aria-hidden":`true`})})]}),(0,Y.jsx)(en,{language:e,state:n[u],ctaKey:`brain.ingest.cta.${u}`})]}):null]})}function Q(e){return e?e.stage===`error`?`is-failed`:e.stage===`complete`?`is-emerged`:`is-ingesting`:``}var $t={preparing:`brain.ingest.stage.preparing.hint`,parsing:`brain.ingest.stage.parsing.hint`,embedding:`brain.ingest.stage.embedding.hint`,indexing:`brain.ingest.stage.indexing.hint`,complete:`brain.ingest.stage.complete.hint`,error:`brain.ingest.stage.error`};function en({language:e,state:t,ctaKey:n}){if(!t)return(0,Y.jsx)(`small`,{className:`brain-ingest-cta`,children:a(e,n)});let r=t.stage===`error`,i=t.stage===`complete`,o=t.newMemories>0||t.newEntities>0;return(0,Y.jsxs)(`div`,{className:`brain-ingest-progress`,role:`status`,"aria-live":`polite`,"aria-label":a(e,`brain.ingest.progress.aria`,{label:t.label}),children:[(0,Y.jsx)(`div`,{className:`brain-ingest-stage-badges`,"aria-hidden":`true`,children:(0,Y.jsxs)(`span`,{className:`brain-ingest-stage-badge ${r?`is-failed`:i?`is-done`:`is-active`}`,children:[!r&&!i?(0,Y.jsx)(ie,{className:`h-3 w-3 brain-ingest-spin`}):null,a(e,`brain.ingest.stage.${t.stage}`)]})}),(0,Y.jsx)(`small`,{className:`brain-ingest-stage-hint ${r?`is-failed`:i?`is-emerged`:``}`,children:r?a(e,`brain.ingest.stage.error`):i?o?a(e,`brain.ingest.result`,{memories:t.newMemories,entities:t.newEntities}):a(e,`brain.ingest.result.empty`):a(e,$t[t.stage])}),i&&o?(0,Y.jsxs)(`span`,{className:`lattice-inflow`,"aria-hidden":`true`,children:[(0,Y.jsx)(`i`,{}),(0,Y.jsx)(`i`,{}),(0,Y.jsx)(`i`,{})]}):null,i?(0,Y.jsx)(tn,{language:e,state:t}):null]})}function tn({language:e,state:t}){let n=t.extraction;if(!n||n.level!==`low`)return null;let r=n.warnings.slice(0,3);return(0,Y.jsxs)(`div`,{className:`brain-ingest-quality-note`,role:`note`,"data-testid":`extraction-quality-note`,children:[(0,Y.jsx)(`p`,{children:a(e,`brain.ingest.quality.low`)}),r.length?(0,Y.jsx)(`ul`,{children:r.map(e=>(0,Y.jsx)(`li`,{children:e},e))}):null]})}function nn(e,t,n){let r=Math.floor((n-t)/6e4);return r<1?a(e,`brain.timeline.justNow`):a(e,`brain.timeline.minutesAgo`,{count:r})}function rn({language:e,emergenceEvents:t}){let n=Date.now();return(0,Y.jsxs)(`section`,{className:`brain-emergence-timeline`,"aria-label":a(e,`brain.timeline.aria`),"aria-live":`polite`,children:[(0,Y.jsxs)(`div`,{className:`brain-emergence-head`,children:[(0,Y.jsx)(B,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(`strong`,{children:a(e,`brain.timeline.emergenceTitle`)}),(0,Y.jsx)(`span`,{children:a(e,`brain.timeline.recent`)})]}),t.length===0?(0,Y.jsx)(`p`,{className:`brain-emergence-empty`,children:a(e,`brain.timeline.empty`)}):(0,Y.jsx)(`ol`,{className:`brain-emergence-list`,children:t.map(t=>(0,Y.jsxs)(`li`,{className:`brain-emergence-item`,children:[(0,Y.jsx)(`span`,{className:`brain-emergence-type`,children:a(e,Xt[t.sourceType])}),(0,Y.jsx)(`span`,{className:`brain-emergence-label`,children:t.label}),(0,Y.jsxs)(`span`,{className:`brain-emergence-counts`,children:[(0,Y.jsx)(`strong`,{children:a(e,`brain.timeline.newMemories`,{count:t.newMemories})}),(0,Y.jsx)(`strong`,{children:a(e,`brain.timeline.newEntities`,{count:t.newEntities})})]}),(0,Y.jsx)(`time`,{className:`brain-emergence-at`,children:nn(e,t.at,n)})]},t.id))})]})}var an=[{x:62,y:26},{x:78,y:26},{x:93,y:26},{x:62,y:45},{x:78,y:45},{x:93,y:45},{x:70,y:64},{x:86,y:64}];function $(e){let t=String(e??``).trim();return!t||/^[A-Za-z][\w-]*[-_]?\d{6,}$/.test(t)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t)||/^\d+$/.test(t)?``:t}var on=[`chat`,`file`,`folder`,`note`,`web`],sn={chat:Ve,file:Fe,folder:H,note:Pe,web:ce};function cn(e){return!!(e&&e.stage!==`complete`&&e.stage!==`error`)}J.memo(function({language:e,brainState:t,intensity:n,graph:r,readiness:i,brief:o,memories:s,ingestionStates:c,emergenceEvents:l,streaming:u,onExploreBrain:d}){let f=l[0],m=J.useMemo(()=>{let e=new Map;for(let t of r.edges)e.set(t.source,(e.get(t.source)??0)+1),e.set(t.target,(e.get(t.target)??0)+1);let t=new Set(f?.nodeIds??[]);return[...r.nodes].sort((n,r)=>Number(t.has(r.id))-Number(t.has(n.id))||(e.get(r.id)??0)-(e.get(n.id)??0)||r.importance-n.importance).slice(0,an.length)},[r.edges,r.nodes,f?.nodeIds]),h=J.useMemo(()=>new Map(m.map((e,t)=>[e.id,an[t]])),[m]),_=J.useMemo(()=>r.edges.filter(e=>h.has(e.source)&&h.has(e.target)).slice(0,16),[r.edges,h]),v=on.map(e=>c[e]).find(e=>cn(e)),y=J.useMemo(()=>new Set(f?.nodeIds??[]),[f]),b=u||!!v,x=u?`chat`:v?.sourceType,S=$(v?.label)||$(f?.label)||$(o.focus.title)||$(s[0]?.title)||a(e,`brain.flow.source.empty`),C=v?a(e,`brain.ingest.stage.${v.stage}.hint`):f?a(e,`brain.flow.status.emerged`,{memories:f.newMemories,entities:f.newEntities}):m.length?a(e,`brain.flow.status.ready`,{focus:$(o.focus.title)||$(m[0]?.label)||`Brain`}):a(e,`brain.flow.status.empty`),w=Math.max(i.signals.memoryCount,s.length),T=Math.max(i.signals.conceptCount,r.nodes.length),E=Math.max(i.signals.relationshipCount,r.edges.length);return(0,Y.jsxs)(`section`,{className:`brain-knowledge-flow ${b?`is-absorbing`:``}`,"data-source":x||`idle`,"data-stage":v?.stage||(f?`connected`:`ready`),"data-brain-state":t,"aria-labelledby":`brain-home-title`,children:[(0,Y.jsxs)(`header`,{className:`brain-flow-heading`,children:[(0,Y.jsxs)(`div`,{className:`brain-flow-heading-copy`,children:[(0,Y.jsx)(`span`,{className:`brain-home-kicker`,children:a(e,`brain.home.kicker`)}),(0,Y.jsx)(`h1`,{id:`brain-home-title`,children:a(e,`brain.firstScreen.title`)}),(0,Y.jsx)(`p`,{children:a(e,`brain.firstScreen.body`)})]}),(0,Y.jsxs)(`div`,{className:`brain-flow-vital`,"data-state":t,children:[(0,Y.jsxs)(`span`,{"aria-hidden":`true`,children:[(0,Y.jsx)(`i`,{}),(0,Y.jsx)(`i`,{})]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`small`,{children:a(e,`brain.flow.vital`)}),(0,Y.jsx)(`strong`,{children:a(e,`brain.living.state.${t}`)})]})]})]}),(0,Y.jsxs)(`div`,{className:`brain-flow-canvas`,"data-testid":`brain-knowledge-flow`,children:[(0,Y.jsxs)(`div`,{className:`brain-flow-sources`,"aria-label":a(e,`brain.flow.sources.aria`),children:[(0,Y.jsx)(`span`,{className:`brain-flow-column-label`,children:a(e,`brain.flow.sources`)}),on.map(t=>{let n=sn[t],r=c[t],i=t===x,o=r?.stage===`complete`;return(0,Y.jsxs)(`span`,{className:`brain-flow-source ${i?`is-active`:``} ${o?`is-remembered`:``}`,"aria-current":i?`step`:void 0,children:[(0,Y.jsx)(n,{className:`h-4 w-4`,"aria-hidden":`true`}),a(e,`brain.ingest.type.${t}`)]},t)})]}),(0,Y.jsxs)(`svg`,{className:`brain-flow-transfer`,viewBox:`0 0 100 100`,preserveAspectRatio:`none`,"aria-hidden":`true`,children:[(0,Y.jsx)(`path`,{className:`brain-flow-transfer-path`,d:`M20 50 C28 50 31 50 38 50`}),(0,Y.jsx)(`path`,{className:`brain-flow-transfer-path is-output`,d:`M54 50 C59 50 62 50 67 50`}),b?Array.from({length:4}).map((e,t)=>(0,Y.jsx)(`circle`,{className:`brain-flow-particle`,r:`0.8`,style:{animationDelay:`${t*240}ms`},children:(0,Y.jsx)(`animateMotion`,{dur:`1.7s`,repeatCount:`indefinite`,path:`M20 50 C28 50 31 50 43 50`})},t)):null,m.length?Array.from({length:3}).map((e,t)=>(0,Y.jsx)(`circle`,{className:`brain-flow-particle is-output`,r:`0.66`,children:(0,Y.jsx)(`animateMotion`,{begin:`${t*1.15}s`,dur:b?`2.1s`:`4.2s`,repeatCount:`indefinite`,path:`M51 50 C58 46 61 44 70 42`})},`output-${t}`)):null]}),(0,Y.jsxs)(`div`,{className:`brain-flow-organism`,children:[(0,Y.jsx)(`span`,{className:`brain-flow-column-label`,children:a(e,`brain.flow.memory`)}),(0,Y.jsx)(g,{state:t,intensity:b?Math.max(n,.9):n,size:`large`,depth:i.depth,showLabel:!1,onInteract:d}),(0,Y.jsxs)(`span`,{className:`brain-flow-organism-vital`,"aria-hidden":`true`,children:[(0,Y.jsx)(`i`,{}),a(e,`brain.living.state.${t}`)]})]}),(0,Y.jsxs)(`div`,{className:`brain-flow-graph`,"aria-label":a(e,`brain.flow.graph.aria`,{concepts:T,relationships:E}),children:[(0,Y.jsx)(`span`,{className:`brain-flow-column-label`,children:a(e,`brain.flow.graph`)}),(0,Y.jsx)(`svg`,{className:`brain-flow-edges`,viewBox:`0 0 100 100`,preserveAspectRatio:`none`,"aria-hidden":`true`,children:_.map((e,t)=>{let n=h.get(e.source),r=h.get(e.target);return!n||!r?null:(0,Y.jsx)(`line`,{x1:n.x,y1:n.y,x2:r.x,y2:r.y,vectorEffect:`non-scaling-stroke`,style:{animationDelay:`${t*-.72}s`}},e.id)})}),m.length?m.map((t,n)=>{let r=an[n];return(0,Y.jsxs)(`button`,{type:`button`,className:`brain-flow-node ${y.has(t.id)?`is-emerging`:``}`,style:{left:`${r.x}%`,top:`${r.y}%`},"aria-label":a(e,`brain.flow.node.aria`,{label:t.label,type:t.type}),title:t.summary||t.type,onClick:d,children:[(0,Y.jsx)(`span`,{children:t.type}),(0,Y.jsx)(`strong`,{children:t.label})]},t.id)}):(0,Y.jsxs)(`div`,{className:`brain-flow-empty-graph`,children:[(0,Y.jsx)(pe,{className:`h-5 w-5`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.flow.graph.empty`)})]}),(0,Y.jsx)(`ul`,{className:`sr-only`,children:_.map(e=>{let t=m.find(t=>t.id===e.source),n=m.find(t=>t.id===e.target);return!t||!n?null:(0,Y.jsxs)(`li`,{children:[t.label,` — `,e.label,` — `,n.label]},`accessible-${e.id}`)})})]}),(0,Y.jsxs)(`div`,{className:`brain-flow-live-status`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:[(0,Y.jsx)(`span`,{className:`brain-flow-status-icon`,"aria-hidden":`true`,children:b?(0,Y.jsx)(B,{className:`h-4 w-4`}):(0,Y.jsx)(V,{className:`h-4 w-4`})}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:S}),(0,Y.jsx)(`small`,{children:C})]})]}),(0,Y.jsxs)(`ol`,{className:`brain-flow-path`,"aria-label":a(e,`brain.flow.path.aria`),children:[(0,Y.jsxs)(`li`,{"data-active":!!x,children:[(0,Y.jsx)(`span`,{children:a(e,`brain.flow.path.input`)}),(0,Y.jsx)(`strong`,{children:x?a(e,`brain.ingest.type.${x}`):a(e,`brain.flow.path.waiting`)})]}),(0,Y.jsx)(p,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsxs)(`li`,{"data-active":b,children:[(0,Y.jsx)(`span`,{children:a(e,`brain.flow.path.memory`)}),(0,Y.jsx)(`strong`,{children:a(e,`brain.flow.path.memoryCount`,{count:w})})]}),(0,Y.jsx)(p,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsxs)(`li`,{children:[(0,Y.jsx)(`span`,{children:a(e,`brain.flow.path.connections`)}),(0,Y.jsx)(`strong`,{children:a(e,`brain.flow.path.graphCount`,{concepts:T,relationships:E})})]}),(0,Y.jsx)(p,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsxs)(`li`,{children:[(0,Y.jsx)(`span`,{children:a(e,`brain.flow.path.automation`)}),(0,Y.jsx)(`strong`,{children:a(e,`brain.flow.path.actionCount`,{count:o.proactiveActions.length})})]})]})]})]})});function ln({language:e,brief:t,activities:n,streaming:r,onAction:i,compact:o=!1}){let s=J.useRef(null),c=t.proactiveActions.slice(0,3),l=t.evidence.filter(e=>e.value>0).slice(0,3),u=t.focus.title||a(e,`brain.brief.focus.empty`),d=()=>{let e=s.current;e&&(e.removeAttribute(`open`),e.querySelector(`summary`)?.focus())};if(o){let t=c[0];return(0,Y.jsxs)(`section`,{className:`brain-memory-automation is-compact ${c.length>1?`has-more-actions`:c.length===1?`has-single-action`:`has-no-actions`}`,"data-testid":`brain-automation-dock`,"aria-labelledby":`brain-memory-automation-compact-title`,children:[(0,Y.jsxs)(`div`,{className:`brain-automation-compact-head`,children:[(0,Y.jsx)(`span`,{className:`brain-memory-automation-mark`,"aria-hidden":`true`,children:(0,Y.jsx)(_,{className:`h-4 w-4`})}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`small`,{children:a(e,`brain.automation.kicker`)}),(0,Y.jsx)(`strong`,{id:`brain-memory-automation-compact-title`,children:a(e,`brain.automation.title`)})]}),c.length>1?(0,Y.jsxs)(`details`,{ref:s,className:`brain-automation-more`,"data-testid":`brain-automation-more`,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),d())},children:[(0,Y.jsx)(`summary`,{"aria-label":a(e,`brain.automation.more`),children:(0,Y.jsx)(Te,{className:`h-4 w-4`,"aria-hidden":`true`})}),(0,Y.jsxs)(`div`,{className:`brain-automation-more-popover`,children:[(0,Y.jsxs)(`header`,{className:`brain-automation-more-head`,children:[(0,Y.jsx)(`strong`,{children:a(e,`brain.automation.title`)}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":a(e,`brain.automation.close`),onClick:d,children:(0,Y.jsx)(G,{className:`h-4 w-4`,"aria-hidden":`true`})})]}),(0,Y.jsx)(`div`,{className:`brain-automation-actions`,children:c.map(t=>(0,Y.jsxs)(`button`,{type:`button`,disabled:r,onClick:()=>i(t),children:[(0,Y.jsx)(`span`,{className:`brain-automation-action-icon`,"aria-hidden":`true`,children:dn(t.intent)}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:a(e,t.labelKey)}),(0,Y.jsx)(`small`,{children:a(e,t.detailKey)})]}),(0,Y.jsx)(`em`,{children:a(e,fn(t.intent))}),(0,Y.jsx)(p,{className:`h-4 w-4`,"aria-hidden":`true`})]},t.id))}),(0,Y.jsxs)(`div`,{className:`brain-automation-guard`,children:[(0,Y.jsx)(K,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.automation.guard`)})]}),n.length?(0,Y.jsx)(`ol`,{className:`brain-automation-activity`,"aria-label":a(e,`brain.proactive.trail.aria`),"aria-live":`polite`,children:n.slice(0,3).map(t=>(0,Y.jsxs)(`li`,{"data-status":t.status,children:[(0,Y.jsx)(V,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsx)(`strong`,{children:a(e,t.labelKey)}),(0,Y.jsx)(`span`,{children:a(e,`brain.proactive.status.${t.status}`)})]},t.id))}):null]})]}):null]}),(0,Y.jsx)(`span`,{className:`brain-automation-compact-focus`,title:u,children:u}),t?(0,Y.jsxs)(`button`,{type:`button`,className:`brain-automation-primary-action`,disabled:r,onClick:()=>i(t),children:[(0,Y.jsx)(`span`,{"aria-hidden":`true`,children:dn(t.intent)}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:a(e,t.labelKey)}),(0,Y.jsx)(`small`,{children:a(e,fn(t.intent))})]}),(0,Y.jsx)(p,{className:`h-4 w-4`,"aria-hidden":`true`})]}):(0,Y.jsx)(`p`,{className:`brain-automation-empty`,children:a(e,`brain.automation.empty`)})]})}return(0,Y.jsxs)(`section`,{className:`brain-memory-automation`,"aria-labelledby":`brain-memory-automation-title`,children:[(0,Y.jsxs)(`div`,{className:`brain-memory-automation-head`,children:[(0,Y.jsx)(`div`,{className:`brain-memory-automation-mark`,"aria-hidden":`true`,children:(0,Y.jsx)(_,{className:`h-5 w-5`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{children:a(e,`brain.automation.kicker`)}),(0,Y.jsx)(`h2`,{id:`brain-memory-automation-title`,children:a(e,`brain.automation.title`)}),(0,Y.jsx)(`p`,{children:a(e,`brain.automation.body`)})]})]}),(0,Y.jsxs)(`div`,{className:`brain-automation-grounding`,children:[(0,Y.jsx)(Re,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`small`,{children:a(e,`brain.automation.basedOn`)}),(0,Y.jsx)(`strong`,{children:u}),t.focus.empty?null:(0,Y.jsx)(`em`,{children:t.focus.source})]}),l.length?(0,Y.jsx)(`div`,{className:`brain-automation-evidence`,"aria-label":a(e,`brain.brief.evidence.aria`),children:l.map(t=>(0,Y.jsxs)(`span`,{title:a(e,t.detailKey),children:[(0,Y.jsx)(`strong`,{children:t.value}),` `,a(e,t.labelKey)]},t.id))}):null]}),c.length?(0,Y.jsx)(`div`,{className:`brain-automation-actions`,children:c.map(t=>(0,Y.jsxs)(`button`,{type:`button`,disabled:r,onClick:()=>i(t),children:[(0,Y.jsx)(`span`,{className:`brain-automation-action-icon`,"aria-hidden":`true`,children:dn(t.intent)}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:a(e,t.labelKey)}),(0,Y.jsx)(`small`,{children:a(e,t.detailKey)})]}),(0,Y.jsx)(`em`,{children:a(e,fn(t.intent))}),(0,Y.jsx)(p,{className:`h-4 w-4`,"aria-hidden":`true`})]},t.id))}):(0,Y.jsx)(`p`,{className:`brain-automation-empty`,children:a(e,`brain.automation.empty`)}),(0,Y.jsxs)(`div`,{className:`brain-automation-guard`,children:[(0,Y.jsx)(K,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.automation.guard`)})]}),n.length?(0,Y.jsx)(`ol`,{className:`brain-automation-activity`,"aria-label":a(e,`brain.proactive.trail.aria`),"aria-live":`polite`,children:n.slice(0,3).map(t=>(0,Y.jsxs)(`li`,{"data-status":t.status,children:[(0,Y.jsx)(V,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsx)(`strong`,{children:a(e,t.labelKey)}),(0,Y.jsx)(`span`,{children:a(e,`brain.proactive.status.${t.status}`)})]},t.id))}):null]})}function un({language:e,state:t,concepts:n,relationshipCount:r,onExploreBrain:i}){return(0,Y.jsxs)(`div`,{className:`brain-conversation-trace ${cn(t)?`is-active`:``}`,role:`status`,"aria-live":`polite`,children:[(0,Y.jsxs)(`span`,{className:`brain-conversation-trace-source`,children:[(0,Y.jsx)(Ve,{className:`h-4 w-4`,"aria-hidden":`true`}),a(e,`brain.flow.conversation`)]}),(0,Y.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsxs)(`span`,{className:`brain-conversation-trace-memory`,children:[(0,Y.jsx)(B,{className:`h-4 w-4`,"aria-hidden":`true`}),t?a(e,`brain.ingest.stage.${t.stage}.hint`):a(e,`brain.flow.conversation.ready`)]}),(0,Y.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsxs)(`button`,{type:`button`,onClick:i,children:[(0,Y.jsx)(pe,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:n.slice(0,3).map(e=>e.label).join(` · `)||a(e,`brain.flow.graph.empty.short`)}),(0,Y.jsx)(`small`,{children:a(e,`brain.flow.relationships`,{count:r})})]})]})}function dn(e){return e===`delegate`?(0,Y.jsx)(_,{className:`h-4 w-4`}):e===`review`?(0,Y.jsx)(Ge,{className:`h-4 w-4`}):e===`route`?(0,Y.jsx)(pe,{className:`h-4 w-4`}):(0,Y.jsx)(Ve,{className:`h-4 w-4`})}function fn(e){return e===`delegate`?`brain.automation.intent.delegate`:e===`review`?`brain.automation.intent.review`:e===`route`?`brain.automation.intent.route`:`brain.automation.intent.ask`}var pn=J.memo(function({language:e,brainState:t,intensity:n,readiness:r,memories:i,graph:o,onExploreBrain:s}){let c=Math.max(r.signals.memoryCount,i.length),l=Math.max(r.signals.conceptCount,o.nodes.length),u=c===0&&l===0;return(0,Y.jsxs)(`section`,{className:`brain-hero`,"data-testid":`brain-knowledge-flow`,"aria-labelledby":`brain-home-title`,children:[(0,Y.jsx)(`div`,{className:`brain-hero-organism`,children:(0,Y.jsx)(g,{state:t,intensity:n,size:`normal`,depth:r.depth,showLabel:!1,onInteract:s})}),(0,Y.jsxs)(`div`,{className:`brain-hero-header-text`,children:[(0,Y.jsx)(`h1`,{id:`brain-home-title`,children:a(e,`brain.firstScreen.title`)}),(0,Y.jsxs)(`p`,{className:`brain-hero-line`,children:[u?a(e,`brain.hero.empty`):a(e,`brain.hero.summary`,{memories:c,concepts:l}),(0,Y.jsx)(`span`,{className:`brain-hero-hint`,children:a(e,`brain.hero.hint`)})]})]})]})}),mn={low:`is-low`,medium:`is-medium`,high:`is-high`};function hn({language:e}){let t=l(),[n,i]=J.useState(null),o=u({queryKey:[`permissionMode`],queryFn:r.permissionMode}),s=d({mutationFn:e=>r.setPermissionMode(e.mode,e.ack),onSuccess:e=>{e.ok&&(t.invalidateQueries({queryKey:[`permissionMode`]}),i(null))}}),c=o.data?.ok?o.data.data:void 0,f=c?.catalog??[],p=c?.mode??``,m=f.find(e=>e.id===n);function h(e){if(e.id!==p){if(e.requires_ack){i(e.id);return}i(null),s.mutate({mode:e.id,ack:!1})}}return(0,Y.jsxs)(`div`,{className:`brain-quick-controls`,"data-testid":`brain-quick-controls`,children:[f.length?(0,Y.jsxs)(`div`,{className:`brain-quick-dial`,role:`radiogroup`,"aria-label":a(e,`system.permission.title`),children:[(0,Y.jsx)(`span`,{className:`brain-quick-label`,children:a(e,`system.permission.title`)}),(0,Y.jsx)(`div`,{className:`brain-quick-segments`,children:f.map(t=>(0,Y.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t.id===p,className:t.id===p?`is-active`:``,"data-testid":`quick-mode-${t.id}`,title:he(t,e),disabled:s.isPending,onClick:()=>h(t),children:[(0,Y.jsx)(`i`,{className:`brain-quick-dot ${mn[t.risk]||`is-medium`}`,"aria-hidden":`true`}),U(t,e)]},t.id))})]}):null,m?(0,Y.jsxs)(`div`,{className:`brain-quick-confirm`,role:`alertdialog`,"data-testid":`quick-mode-confirm`,children:[(0,Y.jsx)(_e,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`p`,{children:me(m,e)}),(0,Y.jsx)(`button`,{type:`button`,className:`is-primary`,"data-testid":`quick-mode-confirm-apply`,disabled:s.isPending,onClick:()=>s.mutate({mode:m.id,ack:!0}),children:U(m,e)}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>i(null),children:a(e,`ui.cancel`)})]}):null,s.data&&!s.data.ok?(0,Y.jsx)(`p`,{className:`brain-quick-error`,role:`status`,children:s.data.error||a(e,`ui.requestUnavailable`)}):null]})}var gn=new Set([`html`,`htm`,`md`,`markdown`,`txt`,`json`,`css`,`js`,`csv`,`py`,`yaml`,`yml`,`xml`,`sql`,`sh`]);function _n(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t+1).toLowerCase():``}function vn(e){return typeof e.previewable==`boolean`?e.previewable:gn.has(_n(e.filename))}function yn(e){let t=_n(e);return t===`html`||t===`htm`?`html`:t===`md`||t===`markdown`?`markdown`:t===`json`?`json`:`text`}var bn=`<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data:; style-src 'unsafe-inline'; font-src data:;">`;function xn(e){return/<head[^>]*>/i.test(e)?e.replace(/<head[^>]*>/i,e=>`${e}${bn}`):`${bn}${e}`}function Sn(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function Cn({language:e,file:t,onClose:n}){let i=ye(n),[o,s]=J.useState({status:`loading`}),[c,l]=J.useState(!1),u=yn(t.filename);J.useEffect(()=>{let e=!1;return r.readWorkspaceFile(t.path).then(t=>{e||(t.ok?s({status:`ready`,content:t.data.content}):s({status:`error`,reason:t.error||String(t.status||``)}))}),()=>{e=!0}},[t.path]);async function d(){c||(l(!0),await r.downloadWorkspaceFile(t.path,t.filename),l(!1))}return(0,Y.jsx)(`div`,{className:`file-preview-backdrop`,role:`presentation`,onMouseDown:e=>{e.target===e.currentTarget&&n()},children:(0,Y.jsxs)(`div`,{ref:i,className:`file-preview-modal`,role:`dialog`,"aria-modal":`true`,"aria-label":a(e,`brain.preview.aria`,{name:t.filename}),"data-testid":`file-preview-modal`,children:[(0,Y.jsxs)(`header`,{className:`file-preview-head`,children:[(0,Y.jsx)(`strong`,{className:`file-preview-name`,children:t.filename}),(0,Y.jsxs)(`div`,{className:`file-preview-actions`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void d(),disabled:c,children:[(0,Y.jsx)(oe,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),c?a(e,`brain.files.downloading`):a(e,`brain.files.download`)]}),(0,Y.jsx)(`button`,{type:`button`,className:`file-preview-close`,"aria-label":a(e,`brain.preview.close`),onClick:n,children:(0,Y.jsx)(G,{className:`h-4 w-4`,"aria-hidden":`true`})})]})]}),(0,Y.jsx)(`div`,{className:`file-preview-body`,children:o.status===`loading`?(0,Y.jsx)(`p`,{className:`file-preview-note`,role:`status`,children:a(e,`brain.preview.loading`)}):o.status===`error`?(0,Y.jsx)(`p`,{className:`file-preview-note is-error`,role:`alert`,children:a(e,`brain.preview.error`,{reason:o.reason})}):u===`html`?(0,Y.jsx)(`iframe`,{className:`file-preview-frame`,sandbox:``,title:a(e,`brain.preview.aria`,{name:t.filename}),srcDoc:xn(o.content)}):u===`markdown`?(0,Y.jsx)(`div`,{className:`file-preview-markdown`,"data-testid":`file-preview-markdown`,children:(0,Y.jsx)(wn,{language:e,content:o.content})}):(0,Y.jsx)(`pre`,{className:`file-preview-code`,"data-testid":`file-preview-code`,children:u===`json`?Sn(o.content):o.content})}),u===`html`?(0,Y.jsxs)(`footer`,{className:`file-preview-foot`,role:`note`,children:[(0,Y.jsx)(K,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),a(e,`brain.preview.sandboxNote`)]}):null]})})}function wn({language:e,content:t}){return(0,Y.jsx)(Y.Fragment,{children:J.useMemo(()=>On(t),[t]).map((t,n)=>t.kind===`code`?(0,Y.jsx)(jn,{language:e,code:t.value,lang:t.lang},n):t.value.trim()?(0,Y.jsx)(Dn,{value:t.value},n):null)})}function Tn(e){let t=[],n=[],r=()=>{n.length&&(t.push({kind:`paragraph`,lines:n}),n=[])};for(let i of e.split(`
2
- `)){let e=i.trim();if(!e){r();continue}let a=/^(#{1,4})\s+(.+)$/.exec(e);if(a){r(),t.push({kind:`heading`,depth:a[1].length,text:a[2]});continue}let o=/^[-*•]\s+(.+)$/.exec(e);if(o){r();let e=t[t.length-1];e?.kind===`list`&&!e.ordered?e.items.push(o[1]):t.push({kind:`list`,ordered:!1,items:[o[1]]});continue}let s=/^\d+[.)]\s+(.+)$/.exec(e);if(s){r();let e=t[t.length-1];e?.kind===`list`&&e.ordered?e.items.push(s[1]):t.push({kind:`list`,ordered:!0,items:[s[1]]});continue}let c=/^>\s?(.*)$/.exec(e);if(c){r();let e=t[t.length-1];e?.kind===`quote`?e.lines.push(c[1]):t.push({kind:`quote`,lines:[c[1]]});continue}if(/^([-_*])\1{2,}$/.test(e)){r();continue}n.push(e)}return r(),t}function En(e){let t=/(\*\*[^*]+\*\*|`[^`]+`|\[[^\]]+\]\(https?:\/\/[^)\s]+\))/g,n=[],r=0,i=0;for(let a=t.exec(e);a;a=t.exec(e)){a.index>r&&n.push(e.slice(r,a.index));let t=a[0];if(t.startsWith(`**`))n.push((0,Y.jsx)(`strong`,{children:t.slice(2,-2)},i++));else if(t.startsWith("`"))n.push((0,Y.jsx)(`code`,{children:t.slice(1,-1)},i++));else{let e=/^\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)$/.exec(t);e?n.push((0,Y.jsx)(`a`,{href:e[2],target:`_blank`,rel:`noreferrer noopener`,children:e[1]},i++)):n.push(t)}r=a.index+t.length}return r<e.length&&n.push(e.slice(r)),n}function Dn({value:e}){return(0,Y.jsx)(`div`,{className:`brain-md`,children:J.useMemo(()=>Tn(e),[e]).map((e,t)=>{if(e.kind===`heading`)return(0,Y.jsx)(`p`,{className:`brain-md-heading is-depth-${Math.min(e.depth,3)}`,children:En(e.text)},t);if(e.kind===`list`){let n=e.items.map((e,t)=>(0,Y.jsx)(`li`,{children:En(e)},t));return e.ordered?(0,Y.jsx)(`ol`,{children:n},t):(0,Y.jsx)(`ul`,{children:n},t)}return e.kind===`quote`?(0,Y.jsx)(`blockquote`,{children:En(e.lines.join(` `))},t):(0,Y.jsx)(`p`,{children:e.lines.map((e,t)=>(0,Y.jsxs)(J.Fragment,{children:[t>0?(0,Y.jsx)(`br`,{}):null,En(e)]},t))},t)})})}function On(e){let t=[],n=/```([\w.+-]*)\n([\s\S]*?)(?:```|$)/g,r=0;for(let i=n.exec(e);i;i=n.exec(e))i.index>r&&t.push({kind:`text`,value:e.slice(r,i.index)}),t.push({kind:`code`,value:i[2].replace(/\n$/,``),lang:i[1]||void 0}),r=i.index+i[0].length;return r<e.length&&t.push({kind:`text`,value:e.slice(r)}),t.length?t:[{kind:`text`,value:e}]}var kn={python:`py`,py:`py`,javascript:`js`,js:`js`,typescript:`ts`,ts:`ts`,tsx:`tsx`,jsx:`jsx`,html:`html`,css:`css`,json:`json`,markdown:`md`,md:`md`,bash:`sh`,sh:`sh`,shell:`sh`,zsh:`sh`,sql:`sql`,yaml:`yml`,yml:`yml`,toml:`toml`,csv:`csv`,xml:`xml`,text:`txt`,txt:`txt`};function An(e){let t=kn[(e||``).toLowerCase()]||`txt`,n=new Date;return`chat-${[n.getFullYear(),String(n.getMonth()+1).padStart(2,`0`),String(n.getDate()).padStart(2,`0`)].join(``)+`-`+[String(n.getHours()).padStart(2,`0`),String(n.getMinutes()).padStart(2,`0`),String(n.getSeconds()).padStart(2,`0`)].join(``)}.${t}`}function jn({language:e,code:t,lang:n}){let[i,o]=J.useState(!1),[s,c]=J.useState(`idle`),[l,u]=J.useState(null),[d,f]=J.useState(``);async function p(){try{await navigator.clipboard?.writeText(t),o(!0),window.setTimeout(()=>o(!1),2e3)}catch{}}async function m(){if(s===`saving`)return;c(`saving`),f(``);let i=An(n),o=await r.saveChatFile(i,t);if(!o.ok){c(`error`),f(o.error||a(e,`common.error.unknown`));return}let l=o.data,d=l.path||i;u({path:d,filename:d.split(`/`).pop()||i,bytes:l.bytes||0}),c(`saved`)}return(0,Y.jsxs)(`div`,{className:`brain-code-block`,children:[(0,Y.jsxs)(`div`,{className:`brain-code-head`,children:[(0,Y.jsx)(`span`,{className:`brain-code-lang`,children:n||`text`}),(0,Y.jsxs)(`div`,{className:`brain-code-actions`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void p(),children:i?a(e,`brain.code.copied`):a(e,`brain.code.copy`)}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void m(),disabled:s===`saving`,children:[(0,Y.jsx)(We,{className:`h-3 w-3`,"aria-hidden":`true`}),s===`saving`?a(e,`brain.code.saving`):a(e,`brain.code.save`)]})]})]}),(0,Y.jsx)(`pre`,{children:(0,Y.jsx)(`code`,{children:t})}),s===`saved`&&l?(0,Y.jsx)(Pn,{language:e,files:[l],compact:!0}):null,s===`error`?(0,Y.jsx)(`small`,{className:`brain-code-save-error`,role:`alert`,children:a(e,`brain.code.saveError`,{reason:d})}):null]})}function Mn(e){return e?e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`:``}function Nn({language:e,ingest:t}){let n=t.status===`ok`?`brain.files.brainOk`:t.status===`pending`?`brain.files.brainPending`:t.status===`failed`?`brain.files.brainFailed`:null;return n?(0,Y.jsx)(`span`,{className:`brain-created-file-brain is-${t.status}`,role:`note`,"data-testid":`brain-ingest-chip`,title:t.status===`failed`&&t.detail?t.detail:void 0,children:a(e,n)}):null}function Pn({language:e,files:t,compact:n=!1}){let[i,o]=J.useState(null),[s,c]=J.useState(``),[l,u]=J.useState(null);async function d(t){if(i)return;o(t.path),c(``);let n=await r.downloadWorkspaceFile(t.path,t.filename);n.ok||c(n.error||a(e,`common.error.unknown`)),o(null)}return(0,Y.jsxs)(`section`,{className:`brain-created-files lattice-success-pulse ${n?`is-compact`:``}`,"aria-label":a(e,`brain.files.title`),children:[(0,Y.jsxs)(`div`,{className:`brain-created-files-head`,children:[(0,Y.jsx)(Ne,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,Y.jsx)(`strong`,{children:a(e,`brain.files.title`)})]}),(0,Y.jsx)(`ul`,{children:t.map(t=>(0,Y.jsxs)(`li`,{children:[(0,Y.jsx)(`span`,{className:`brain-created-file-name`,children:t.filename}),t.bytes?(0,Y.jsx)(`small`,{children:Mn(t.bytes)}):null,t.repaired?(0,Y.jsx)(`span`,{className:`brain-created-file-repaired`,role:`note`,children:a(e,`brain.files.repaired`)}):null,t.brainIngest?(0,Y.jsx)(Nn,{language:e,ingest:t.brainIngest}):null,vn(t)?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>u(t),children:[(0,Y.jsx)(Me,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),a(e,`brain.preview.open`)]}):null,(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void d(t),disabled:i===t.path,children:[(0,Y.jsx)(oe,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),i===t.path?a(e,`brain.files.downloading`):a(e,`brain.files.download`)]})]},t.path))}),l?(0,Y.jsx)(Cn,{language:e,file:l,onClose:()=>u(null)}):null,(0,Y.jsx)(`small`,{className:`brain-created-files-hint`,children:a(e,`brain.files.hint`)}),s?(0,Y.jsx)(`small`,{className:`brain-created-files-error`,role:`alert`,children:a(e,`brain.files.downloadError`,{reason:s})}):null]})}function Fn({language:e,brainState:t,intensity:n,readiness:r,memories:i,concepts:o,relationshipCount:s,onExploreBrain:c,onOpenDepth:l}){let[u,d]=J.useState(null),f=J.useMemo(()=>{let e=i.filter(e=>e.kind===`Conversation`),t=i.filter(e=>e.kind!==`Conversation`).sort((e,t)=>Number(t.agentGenerated)-Number(e.agentGenerated));return[{id:`now`,depth:1,labelKey:`brain.rings.1`,emptyKey:`brain.rings.empty.now`,position:`top`,count:e.length,items:e.slice(0,3).map(e=>e.title)},{id:`memories`,depth:2,labelKey:`brain.rings.2`,emptyKey:`brain.rings.empty.memories`,position:`left`,count:t.length,items:t.slice(0,3).map(e=>e.title)},{id:`topics`,depth:3,labelKey:`brain.rings.3`,emptyKey:`brain.rings.empty.topics`,position:`bottom`,count:o.length,items:o.slice(0,3).map(e=>e.label)},{id:`graph`,depth:5,labelKey:`brain.rings.5`,emptyKey:`brain.rings.empty.graph`,position:`right`,count:s,items:[]}]},[i,o,s]);J.useEffect(()=>{if(u===null)return;let e=e=>{e.key===`Escape`&&d(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u]);let p=f.find(e=>e.id===u)??null;return(0,Y.jsxs)(`div`,{className:`brain-rings`,"aria-label":a(e,`brain.rings.aria`),children:[(0,Y.jsxs)(`div`,{className:`brain-concentric-container`,children:[(0,Y.jsx)(`div`,{className:`brain-orbit-field`,"aria-hidden":`true`,children:f.map((e,t)=>(0,Y.jsx)(`div`,{className:`brain-concentric-ring ring-${t+1} ${e.count>0?`is-populated`:`is-dormant`}`},e.id))}),f.map(t=>(0,Y.jsxs)(`button`,{type:`button`,className:`ring-label ring-label-${t.position} ${t.count>0?`is-populated`:``} ${u===t.id?`is-active`:``}`,"aria-expanded":u===t.id,"aria-controls":`brain-ring-peek`,"aria-label":a(e,`brain.rings.peek.aria`,{label:a(e,t.labelKey),count:t.count}),onClick:()=>d(e=>e===t.id?null:t.id),children:[a(e,t.labelKey),(0,Y.jsx)(`em`,{children:t.count})]},t.id)),(0,Y.jsx)(`div`,{className:`brain-center-orb`,children:(0,Y.jsx)(g,{state:t,intensity:n,size:`large`,depth:r.depth||Math.max(1,Math.floor(r.score/20)),showLabel:!1,className:`brain-home-presence`,onInteract:c})})]}),p?(0,Y.jsxs)(`section`,{id:`brain-ring-peek`,className:`brain-ring-peek`,"aria-label":a(e,`brain.rings.peek.title`,{label:a(e,p.labelKey)}),children:[(0,Y.jsxs)(`header`,{children:[(0,Y.jsx)(`strong`,{children:a(e,p.labelKey)}),(0,Y.jsx)(`span`,{children:a(e,`brain.rings.count`,{count:p.count})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>d(null),"aria-label":a(e,`brain.rings.close`),children:`×`})]}),p.items.length?(0,Y.jsx)(`ul`,{children:p.items.map(e=>(0,Y.jsx)(`li`,{children:e},e))}):(0,Y.jsx)(`p`,{children:a(e,p.count>0?`brain.rings.peek.summary`:p.emptyKey,{count:p.count})}),(0,Y.jsx)(`button`,{type:`button`,className:`brain-ring-peek-deeper`,onClick:()=>l(p.depth),children:a(e,`brain.rings.deeper`)})]}):null]})}function In({language:e,modelName:n,modelReady:r,messages:i,pastConversations:o,historyBusyId:s,starterPrompts:c,memoryFeedback:l,ingestionStates:u,emergenceEvents:d,proactiveActivities:f,draft:p,streaming:m,imageData:h,streamRef:_,memories:v,graph:y,concepts:b,relationshipCount:x,readiness:S,proof:w,brief:T,uploadingDocument:E,onOpenDepth:D,onDraftChange:O,onImageDataChange:k,onUploadDocument:j,onPickFolder:ee,onConnectFolder:N,onIngestNote:P,onIngestWeb:F,onVerifyModelContinuity:I,onSend:re,onSendText:L,onCreateActionItem:R,onProactiveAction:z,onApprovalResolved:ie,onStop:ae,onRegenerate:oe,onNewConversation:se,onResumeConversation:ce,onDeleteConversation:le,brainState:ue,intensity:fe,onExploreBrain:H,onRequestDetails:pe}){let me=i.length>0,U=t(e=>e.mode)===`basic`,he=Hn(i),ge=T.suggestedQuestions.slice(0,3);Bn();let _e=J.useRef(null),ve=J.useMemo(()=>i.flatMap(e=>e.approval?[e.approval.runId]:[]),[i]);return(0,Y.jsx)(`section`,{className:`brain-conversation`,"aria-label":a(e,`brain.aria.conversation`),children:(0,Y.jsx)(`div`,{className:`brain-chat-home-layout`,children:(0,Y.jsxs)(`section`,{className:`brain-chat-home-card ${me?`has-messages`:`is-empty-home`}`,"aria-label":a(e,`brain.chatHome.aria`),children:[(0,Y.jsx)(te,{language:e}),(0,Y.jsx)(A,{language:e}),(0,Y.jsx)(M,{language:e,knownRunIds:ve}),me?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`header`,{className:`brain-chat-header`,children:[(0,Y.jsxs)(`div`,{className:`brain-header-presence`,children:[(0,Y.jsx)(g,{state:ue,intensity:fe,size:`trace`,showLabel:!1,onInteract:H}),(0,Y.jsxs)(`div`,{className:`brain-header-title`,children:[(0,Y.jsx)(`strong`,{children:a(e,`brain.title`)}),(0,Y.jsxs)(`span`,{children:[a(e,`brain.firstScreen.state.${S.state}`),U?``:` (${S.score}%)`]})]})]}),(0,Y.jsxs)(`div`,{className:`brain-header-actions`,children:[U?null:(0,Y.jsx)(`div`,{className:`brain-model-pill`,children:n}),(0,Y.jsxs)(`button`,{type:`button`,className:`brain-deeper-btn`,onClick:se,children:[(0,Y.jsx)(Be,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),a(e,`brain.newChat`)]}),(0,Y.jsx)(`button`,{type:`button`,className:`brain-deeper-btn`,onClick:H,children:a(e,`brain.firstScreen.action.graph`)})]})]}),(0,Y.jsx)(un,{language:e,state:u.chat,concepts:b,relationshipCount:x,onExploreBrain:H}),(0,Y.jsx)(`div`,{ref:_,className:`brain-stream`,children:i.map((t,n)=>{let r=`brain-msg-${n}`,a=t.role===`assistant`?t.proof:void 0,o=t.role===`assistant`&&!!t.content.trim()&&!m,s=o&&n===he;return(0,Y.jsxs)(`div`,{className:`brain-message ${t.role}`,children:[(0,Y.jsxs)(`div`,{className:`brain-message-bubble`,children:[t.role===`assistant`?(0,Y.jsx)(wn,{language:e,content:t.content}):t.content,a&&a.citations.length?(0,Y.jsx)(ut,{language:e,proof:a,messageId:r}):null,t.role===`assistant`&&t.contextQuality?.limited?(0,Y.jsx)(zn,{language:e,reason:U?null:t.contextQuality.reason}):null,t.role===`assistant`&&t.content.trim()&&t.grounding?(0,Y.jsx)(Rn,{language:e,grounding:t.grounding}):null]}),t.role===`assistant`&&t.approval?(0,Y.jsx)(tt,{language:e,approval:t.approval,onResolved:e=>ie(n,e),onReplan:L}):null,t.role===`assistant`&&t.agentSteps?.length?(0,Y.jsx)(ot,{language:e,steps:t.agentSteps,streaming:m&&n===i.length-1}):null,o?(0,Y.jsx)(Un,{language:e,content:t.content,canRegenerate:n===he,onRegenerate:oe,canFollowUp:s,onFollowUp:L,onCreateActionItem:R}):null,t.files?.length?(0,Y.jsx)(Pn,{language:e,files:t.files}):null,t.role===`assistant`&&t.agentState?(0,Y.jsx)(Ln,{language:e,state:t.agentState}):null,t.role===`assistant`&&t.loopSummary?(0,Y.jsx)(st,{language:e,summary:t.loopSummary}):null,t.role===`assistant`&&t.runExplanation?(0,Y.jsx)(ct,{language:e,explanation:t.runExplanation}):null,a?(0,Y.jsx)(dt,{language:e,proof:a,messageId:r,onUseEvidence:L}):null]},`${t.role}-${n}`)})}),(0,Y.jsx)(ln,{language:e,brief:T,activities:f,streaming:m,onAction:z}),r?null:(0,Y.jsx)(Vt,{language:e}),(0,Y.jsx)(It,{language:e,draft:p,streaming:m,imageData:h,uploadingDocument:E,onDraftChange:O,onImageDataChange:k,onUploadDocument:j,onSend:re,onStop:ae,attachments:(0,Y.jsx)(Qt,{language:e,variant:`inline`,uploadingDocument:E,ingestionStates:u,onUploadDocument:j,onPickFolder:ee,onConnectFolder:N,onIngestNote:P,onIngestWeb:F})})]}):(0,Y.jsxs)(`div`,{className:`brain-centered-home`,"data-testid":`brain-home-stage`,children:[(0,Y.jsxs)(`section`,{className:`brain-home-station`,"data-testid":`brain-home-station`,children:[(0,Y.jsx)(pn,{language:e,brainState:ue,intensity:fe,readiness:S,memories:v,graph:y,onExploreBrain:H}),r?null:(0,Y.jsx)(Vt,{language:e}),(0,Y.jsx)(`div`,{className:`brain-composer-wrapper`,children:(0,Y.jsx)(It,{language:e,draft:p,streaming:m,imageData:h,uploadingDocument:E,onDraftChange:O,onImageDataChange:k,onUploadDocument:j,onSend:re,onStop:ae})}),(0,Y.jsxs)(`div`,{className:`brain-station-toolbar`,role:`group`,"aria-label":a(e,`brain.station.toolbar.aria`),children:[(0,Y.jsx)(Qt,{language:e,variant:`inline`,uploadingDocument:E,ingestionStates:u,onUploadDocument:j,onPickFolder:ee,onConnectFolder:N,onIngestNote:P,onIngestWeb:F}),(0,Y.jsx)(hn,{language:e})]})]}),(0,Y.jsx)(`section`,{className:`brain-secondary-deck`,"data-testid":`brain-secondary-deck`,"aria-label":a(e,`brain.suggestions.aria`),children:ge.length?(0,Y.jsxs)(`div`,{className:`brain-home-prompt-strip`,children:[(0,Y.jsxs)(`div`,{className:`brain-home-prompt-strip-label`,children:[(0,Y.jsx)(B,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.suggestions.title`)})]}),(0,Y.jsx)(`div`,{className:`brain-prompt-grid`,children:ge.map(t=>{let n=a(e,t.promptKey,t.params);return(0,Y.jsxs)(`button`,{type:`button`,disabled:m,title:a(e,t.detailKey),onClick:()=>{O(``),L(n)},children:[(0,Y.jsx)(`strong`,{children:a(e,t.labelKey)}),(0,Y.jsx)(`span`,{children:a(e,t.detailKey)})]},t.id)})})]}):(0,Y.jsxs)(`div`,{className:`brain-home-prompt-strip`,children:[(0,Y.jsxs)(`div`,{className:`brain-home-prompt-strip-label`,children:[(0,Y.jsx)(B,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.suggestions.title`)})]}),(0,Y.jsx)(`div`,{className:`brain-prompt-pills-row`,children:c.slice(0,3).map(e=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>O(e),className:`brain-prompt-pill`,children:e},e))})]})}),(0,Y.jsx)(`footer`,{className:`brain-home-quiet`,children:(0,Y.jsxs)(`div`,{className:`brain-home-shelves`,children:[(0,Y.jsxs)(`details`,{className:`brain-home-history-shelf`,"data-testid":`brain-history-shelf`,onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),Vn(e.currentTarget))},children:[(0,Y.jsxs)(`summary`,{children:[(0,Y.jsx)(de,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.history.title`)}),(0,Y.jsx)(`small`,{className:`brain-shelf-count`,children:o.length})]}),(0,Y.jsxs)(`div`,{className:`brain-home-shelf-popover`,children:[(0,Y.jsx)(`button`,{type:`button`,className:`brain-home-shelf-close`,"aria-label":a(e,`brain.home.shelf.close`),onClick:e=>Vn(e.currentTarget),children:(0,Y.jsx)(G,{className:`h-4 w-4`,"aria-hidden":`true`})}),(0,Y.jsx)(Gt,{language:e,items:o,busyId:s,onResume:ce,onDelete:le})]})]}),(0,Y.jsxs)(`details`,{ref:_e,className:`brain-home-insights`,"data-testid":`brain-insights-shelf`,onToggle:e=>e.currentTarget.open&&pe(),onKeyDown:e=>{e.key===`Escape`&&(e.currentTarget.querySelector(`#brain-ring-peek`)||(e.preventDefault(),Vn(e.currentTarget)))},children:[(0,Y.jsxs)(`summary`,{children:[(0,Y.jsx)(B,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:a(e,`brain.home.insights`)})]}),(0,Y.jsxs)(`div`,{className:`brain-home-shelf-popover brain-home-insights-content`,children:[(0,Y.jsx)(`button`,{type:`button`,className:`brain-home-shelf-close`,"aria-label":a(e,`brain.home.shelf.close`),onClick:e=>Vn(e.currentTarget),children:(0,Y.jsx)(G,{className:`h-4 w-4`,"aria-hidden":`true`})}),(0,Y.jsx)(ln,{language:e,brief:T,activities:f,streaming:m,onAction:z}),(0,Y.jsx)(Fn,{language:e,brainState:ue,intensity:fe,readiness:S,memories:v,concepts:b,relationshipCount:x,onExploreBrain:H,onOpenDepth:D}),(0,Y.jsx)(qt,{language:e,brief:T,showEvidence:!U,onAction:e=>Kt(e,I)}),U?null:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(rn,{language:e,emergenceEvents:d}),(0,Y.jsx)(Yt,{language:e,proof:w,modelName:n,onVerify:I}),(0,Y.jsx)(Rt,{memories:v,concepts:b,readiness:S,proof:w,onOpenDepth:D})]}),(0,Y.jsx)(Pt,{language:e,variant:`home`}),(0,Y.jsx)(C,{language:e}),(0,Y.jsx)(ne,{language:e}),(0,Y.jsx)(Ft,{language:e}),(0,Y.jsx)(Dt,{language:e}),(0,Y.jsx)(Mt,{language:e}),(0,Y.jsx)(_t,{language:e})]})]})]})})]}),l?(0,Y.jsxs)(`div`,{className:`brain-save-feedback`,role:`status`,children:[(0,Y.jsx)(je,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(`span`,{children:l}),(0,Y.jsx)(`small`,{children:a(e,`brain.saved.detail`)})]}):null,me?(0,Y.jsxs)(`details`,{className:`brain-utility-drawer`,onToggle:e=>e.currentTarget.open&&pe(),children:[(0,Y.jsx)(`summary`,{children:a(e,U?`brain.chatHome.utility.basic`:`brain.chatHome.utility`)}),(0,Y.jsxs)(`div`,{className:`brain-utility-tools`,"aria-label":a(e,`brain.chatHome.contextAria`),children:[(0,Y.jsx)(xe,{compact:!0}),U?null:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`brain-model-pill`,children:n}),(0,Y.jsxs)(`button`,{className:`brain-admin-link`,type:`button`,onClick:()=>we(`/admin`),children:[(0,Y.jsx)(K,{className:`h-3.5 w-3.5`}),a(e,`brain.admin`)]})]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(V,{className:`h-3.5 w-3.5`}),a(e,`brain.local`)]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(V,{className:`h-3.5 w-3.5`}),a(e,`brain.private`)]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(V,{className:`h-3.5 w-3.5`}),a(e,`brain.portable`)]})]}),(0,Y.jsxs)(`div`,{className:`brain-utility-grid`,children:[me?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Zt,{language:e,uploadingDocument:E,ingestionStates:u,onUploadDocument:j,onPickFolder:ee,onConnectFolder:N,onIngestNote:P,onIngestWeb:F}),(0,Y.jsx)(ne,{language:e})]}):null,U?null:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(rn,{language:e,emergenceEvents:d}),(0,Y.jsx)(Yt,{language:e,proof:w,modelName:n,onVerify:I}),(0,Y.jsx)(Rt,{memories:v,concepts:b,readiness:S,proof:w,onOpenDepth:D})]}),(0,Y.jsx)(Pt,{language:e}),(0,Y.jsx)(Ft,{language:e}),(0,Y.jsx)(Dt,{language:e}),(0,Y.jsx)(Mt,{language:e}),(0,Y.jsx)(_t,{language:e})]})]}):null]})})})}function Ln({language:e,state:t}){return(0,Y.jsx)(`p`,{className:`brain-agent-state-note ${t===`FAILED`?`is-failed`:`is-review`}`,role:`alert`,"data-testid":`agent-state-note`,children:a(e,t===`FAILED`?`brain.agent.failed`:`brain.agent.needsReview`)})}function Rn({language:e,grounding:t}){let n=t.status===`supported`;return(0,Y.jsx)(`span`,{className:`brain-grounding-badge ${n?`is-supported`:`is-none`}`,role:`note`,"data-testid":`grounding-badge`,title:t.reason||void 0,children:a(e,n?`brain.grounding.supported`:`brain.grounding.none`)})}function zn({language:e,reason:t}){return(0,Y.jsxs)(`p`,{className:`brain-context-quality-note`,role:`note`,"data-testid":`context-quality-note`,children:[(0,Y.jsx)(`span`,{children:a(e,`brain.contextQuality.limited`)}),t?(0,Y.jsx)(`small`,{children:a(e,`brain.contextQuality.reason`,{reason:t})}):null]})}function Bn(){J.useEffect(()=>{let e=e=>{let t=e.target;for(let e of document.querySelectorAll(`.brain-home-history-shelf[open], .brain-home-insights[open]`))t&&e.contains(t)||e.removeAttribute(`open`)};return document.addEventListener(`pointerdown`,e,!0),document.addEventListener(`focusin`,e,!0),()=>{document.removeEventListener(`pointerdown`,e,!0),document.removeEventListener(`focusin`,e,!0)}},[])}function Vn(e){let t=e instanceof HTMLDetailsElement?e:e.closest(`details`);t&&(t.removeAttribute(`open`),t.querySelector(`summary`)?.focus())}function Hn(e){for(let t=e.length-1;t>=0;--t)if(e[t].role===`assistant`)return t;return-1}function Un({language:e,content:t,canRegenerate:n,onRegenerate:r,canFollowUp:i,onFollowUp:o,onCreateActionItem:s}){let[c,l]=J.useState(!1),u=J.useMemo(()=>[{labelKey:`brain.message.followup.checklist`,promptKey:`brain.message.followup.checklist.prompt`},{labelKey:`brain.message.followup.evidence`,promptKey:`brain.message.followup.evidence.prompt`},{labelKey:`brain.message.followup.next`,promptKey:`brain.message.followup.next.prompt`}],[]);async function d(){try{await navigator.clipboard?.writeText(t),l(!0),window.setTimeout(()=>l(!1),2e3)}catch{}}return(0,Y.jsxs)(`div`,{className:`brain-message-actions`,children:[(0,Y.jsxs)(`button`,{type:`button`,"aria-label":a(e,`brain.message.copyAria`),onClick:()=>void d(),children:[(0,Y.jsx)(Ae,{className:`h-3 w-3`,"aria-hidden":`true`}),c?a(e,`brain.message.copied`):a(e,`brain.message.copy`)]}),n?(0,Y.jsxs)(`button`,{type:`button`,"aria-label":a(e,`brain.message.regenerateAria`),onClick:r,children:[(0,Y.jsx)(h,{className:`h-3 w-3`,"aria-hidden":`true`}),a(e,`brain.message.regenerate`)]}):null,i?(0,Y.jsxs)(`button`,{type:`button`,"aria-label":a(e,`brain.message.saveTaskAria`),onClick:()=>s(t),children:[(0,Y.jsx)(ze,{className:`h-3 w-3`,"aria-hidden":`true`}),a(e,`brain.message.saveTask`)]}):null,i?(0,Y.jsx)(`div`,{className:`brain-message-followups`,"aria-label":a(e,`brain.message.followup.aria`),children:u.map(t=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>o(a(e,t.promptKey)),children:a(e,t.labelKey)},t.promptKey))}):null]})}var Wn=64;function Gn(e){if(e.scrollHeight-e.clientHeight<=1)return!1;let t=e.ownerDocument.defaultView?.getComputedStyle(e).overflowY;return t===`auto`||t===`scroll`||t===`overlay`}function Kn(e){for(let t=e;t;t=t.parentElement)if(Gn(t))return{element:t,isDocument:!1};let t=e?.ownerDocument,n=t?.scrollingElement??t?.documentElement??null;return n instanceof HTMLElement?{element:n,isDocument:!0}:null}function qn(e){return e.scrollHeight-e.clientHeight-e.scrollTop<=Wn}function Jn(e){let t=J.useRef(null),n=J.useRef(null),r=J.useRef(!0),i=J.useRef(0),a=J.useCallback(()=>{let e=n.current;return e&&e.element.isConnected?e:(n.current=Kn(t.current),n.current)},[]);return J.useEffect(()=>{let e=e=>{let t=n.current;if(!t||!(t.isDocument&&e.target===t.element.ownerDocument||e.target===t.element))return;let a=t.element.scrollTop,o=a<i.current-1;i.current=a,o?r.current=qn(t.element):qn(t.element)&&(r.current=!0)};return document.addEventListener(`scroll`,e,{capture:!0,passive:!0}),()=>document.removeEventListener(`scroll`,e,{capture:!0})},[]),J.useEffect(()=>{let e=a();!e||!r.current||(e.element.scrollTop=e.element.scrollHeight,i.current=e.element.scrollTop)},[e,a]),t}function Yn({language:e,modelReady:t,onBrainChange:n,setMemoryFeedback:i,beginIngestion:o,completeIngestion:s,failIngestion:c,setLastRecallQuery:u,attachAnswerProof:f}){let p=l(),h=W(e=>e.messages),g=W(e=>e.setMessages),_=W(e=>e.conversationId),y=W(e=>e.setConversationId),[x,C]=J.useState(``),[T,E]=J.useState(null),[D,k]=J.useState(!1),[A,j]=J.useState([]),ee=Jn(h),M=J.useRef(null),P=J.useRef(null),te=d({mutationFn:async t=>{let n=await r.runAgent(t,[`planner`,`executor`,`reviewer`]);if(!n.ok)throw Error(n.error||a(e,`ui.status.unavailable`));return n},onSuccess:()=>{p.invalidateQueries({queryKey:[`memoryManager`]}),p.invalidateQueries({queryKey:[`memoryBrainBrief`]}),p.invalidateQueries({queryKey:[`graphPreview`]}),p.invalidateQueries({queryKey:[`graph`]}),p.invalidateQueries({queryKey:[`agentRuntime`]}),i(a(e,`brain.delegate.done`)),window.setTimeout(()=>i(null),4200)},onError:t=>i(a(e,`brain.delegate.failed`,{reason:String(t)}))});J.useEffect(()=>{D?n(`thinking`,.94):x.trim().length>4?n(`listening`,.76):n(`idle`,.58)},[x,n,D]),J.useEffect(()=>()=>{P.current!==null&&window.clearTimeout(P.current),M.current?.abort()},[]);async function F(){let e=x.trim();!e||D||(C(``),await I(e))}async function ne(){if(D)return;let e=[...h].reverse().find(e=>e.role===`user`);e&&(g(e=>{let t=[...e];return t[t.length-1]?.role===`assistant`&&t.pop(),t[t.length-1]?.role===`user`&&t.pop(),t}),await I(e.content))}async function I(l){if(!l||D)return;let d=_||`brain-${Date.now()}`;if(_||y(d),!t){g(t=>[...t,{role:`user`,content:l},{role:`assistant`,content:a(e,`brain.noModel.message`)}]),E(null),i(a(e,`brain.noModel.status`));return}g(e=>[...e,{role:`user`,content:l},{role:`assistant`,content:``}]),E(null),k(!0),i(null),o(`chat`,l.slice(0,120)),n(`thinking`,.96);let h=new AbortController;M.current=h;try{let t=await r.streamChat({message:l,conversation_id:d,image_data:T||void 0},{signal:h.signal,onChunk:(e,t)=>{g(e=>{let n=[...e];return n[n.length-1]={...n[n.length-1],role:`assistant`,content:t},n})},onAgentStep:e=>{let t=O(e);t&&g(e=>{let n=[...e],r=n[n.length-1];return n[n.length-1]={...r,role:`assistant`,agentSteps:[...r.agentSteps||[],t]},n})},onAgent:t=>{let n=Ye(t);if(n){g(e=>{let t=[...e];return t[t.length-1]={...t[t.length-1],approval:n},t});return}let r=N(t),i=t.final_state===`NEEDS_REVIEW`||t.final_state===`FAILED`?t.final_state:void 0,a=b(t.loop),o=v(t.explanation,e),s=S(t.steps);!r.length&&!i&&!a&&!o&&!s.length||g(e=>{let t=[...e],n=t[t.length-1],c=n.agentSteps?.length?n.agentSteps:s;return t[t.length-1]={...n,...r.length?{files:r}:{},...i?{agentState:i}:{},...a?{loopSummary:a}:{},...o?{runExplanation:o}:{},...c.length?{agentSteps:c}:{}},t})},onTrace:e=>{e&&(n(`recalling`,.9),m(),P.current!==null&&window.clearTimeout(P.current),P.current=window.setTimeout(()=>n(`thinking`,.9),900))}});if(t.error)g(n=>Xn(n,`${a(e,`brain.unavailable`)}: ${t.error}`)),c(`chat`,String(t.error));else{let n=re(`contextQuality`in t?t.contextQuality:null)||re(t.trace),r=w(`grounding`in t?t.grounding:null)||w(t.trace);(n||r)&&g(e=>{let t=[...e];for(let e=t.length-1;e>=0;--e)if(t[e].role===`assistant`){t[e]={...t[e],...n?{contextQuality:n}:{},...r?{grounding:r}:{}};break}return t}),u(l);let o=await s(`chat`);i(a(e,`brain.saved`,{topics:o.entities,memories:o.memories})),m(),f(l)}}catch(t){let n=t instanceof DOMException&&t.name===`AbortError`;g(r=>{let i=[...r],o=i[i.length-1];return o?.role===`assistant`&&!o.content.trim()&&(i[i.length-1]={...o,content:n?a(e,`brain.stopped.empty`):`${a(e,`brain.unavailable`)}: ${t instanceof Error?t.message:String(t)}`}),i}),i(n?a(e,`brain.stopped`):null),c(`chat`,n?`stopped`:t instanceof Error?t.message:String(t))}finally{M.current=null,k(!1);for(let e of[`chatHistory`,`memoryManager`,`graphPreview`,`graph`,`memoryBrainProof`,`memoryBrainBrief`])p.invalidateQueries({queryKey:[e]})}}function L(t,n){if(g(r=>{let i=r[t];if(!i?.approval)return r;let a=[...r];if(n.kind===`finished`){let r=n.payload,o=N(r),s=r.final_state===`NEEDS_REVIEW`||r.final_state===`FAILED`?r.final_state:void 0,c=typeof r.response==`string`?r.response.trim():``,l=b(r.loop),u=v(r.explanation,e),d=S(r.steps),f=i.agentSteps?.length?i.agentSteps:d;a[t]={...i,content:c||i.content,...o.length?{files:o}:{},...s?{agentState:s}:{},...l?{loopSummary:l}:{},...u?{runExplanation:u}:{},...f.length?{agentSteps:f}:{},approval:{...i.approval,status:`approved`}}}else n.kind===`error`?a[t]={...i,approval:{...i.approval,status:`error`,errorReason:n.reason}}:a[t]={...i,approval:{...i.approval,status:n.kind,...n.kind===`expired`&&n.replanMessage?{replanMessage:n.replanMessage}:{}}};return a}),n.kind===`finished`){m();for(let e of[`chatHistory`,`memoryManager`,`graphPreview`,`graph`,`memoryBrainProof`,`memoryBrainBrief`,`agentRuntime`])p.invalidateQueries({queryKey:[e]})}}async function R(t){let n=t.trim();if(!n)return!1;let o=([...h].reverse().find(e=>e.role===`user`)?.content||a(e,`brain.action.defaultTitle`)).trim().slice(0,96),s=await r.createReviewItem({title:o,summary:n.slice(0,420),source:`chat_followup`,kind:`task_draft`,payload:{answer_preview:n.slice(0,2e3),conversation_id:_||``},provenance:{conversation_id:_||``,source_detail:`brain_chat`}});return i(s.ok?a(e,`brain.action.saved`):a(e,`brain.action.saveFailed`,{reason:s.error||String(s.status||``)})),s.ok}function z(e,t,n,r=`${e.id}-${Date.now()}`){let i=Date.now();return j(a=>{let o=a.find(e=>e.id===r);return[{id:r,actionId:e.id,labelKey:e.labelKey,intent:e.intent,status:t,startedAt:o?.startedAt??i,completedAt:t===`running`?void 0:i,detail:n},...a.filter(e=>e.id!==r)].slice(0,6)}),r}async function ie(e){let t=e.prompt.trim(),n=z(e,`running`);if(e.intent===`route`&&e.route){window.location.hash=e.route,z(e,`completed`,e.route,n);return}if(!t){z(e,`failed`,`empty prompt`,n);return}try{e.intent===`delegate`?(await te.mutateAsync(t),z(e,`completed`,`agent`,n)):e.intent===`review`?z(e,await R(t)?`completed`:`failed`,`review`,n):(await I(t),z(e,`completed`,`chat`,n))}catch(t){z(e,`failed`,t instanceof Error?t.message:String(t),n)}}return{messages:h,conversationId:_,draft:x,setDraft:C,imageData:T,setImageData:E,streaming:D,streamRef:ee,proactiveActivities:A,send:F,sendText:I,regenerate:ne,createActionItem:R,handleProactiveAction:ie,handleApprovalResolved:L,stopStreaming:()=>M.current?.abort()}}function Xn(e,t){let n=[...e];return n[n.length-1]={role:`assistant`,content:t},n}function Zn({language:e,setMemoryFeedback:t}){let n=l(),i=W(e=>e.conversationId),o=W(e=>e.setConversationId),s=W(e=>e.setMessages),c=W(e=>e.resetConversation),[d,f]=J.useState(null),p=u({queryKey:[`chatHistory`],queryFn:r.chatHistory});return{historyQ:p,pastConversations:J.useMemo(()=>I(p.data?.data),[p.data]),historyBusyId:d,resetConversation:c,resumeConversation:J.useCallback(async(n,i)=>{if(!(d||i)){f(n),t(a(e,`brain.history.loading`));try{let i=await r.conversation(n);if(!i.ok){t(a(e,`brain.history.loadFailed`,{reason:i.error||`unavailable`}));return}let c=z(i.data);if(!c.length){t(a(e,`brain.history.loadFailed`,{reason:a(e,`brain.history.emptyConversation`)}));return}o(n),s(c),t(a(e,`brain.history.resumed`))}finally{f(null)}}},[d,e,o,t,s]),deleteConversation:J.useCallback(async o=>{if(!d){f(o);try{let s=await r.deleteConversation(o);if(!s.ok){t(a(e,`brain.history.deleteFailed`,{reason:s.error||`unavailable`}));return}i===o&&c(),t(a(e,`brain.history.deleted`)),n.invalidateQueries({queryKey:[`chatHistory`]}),n.invalidateQueries({queryKey:[`memoryManager`]})}finally{f(null)}}},[i,d,e,n,c,t])}}function Qn(){let e=window;return!!(e.__TAURI__?.core?.invoke||e.latticeDesktop?.selectFolder||e.__TAURI_INTERNALS__&&window.location.protocol===`tauri:`)}function $n(e){return e instanceof DOMException&&e.name===`AbortError`}function er(e){return(e[0]?.webkitRelativePath||``).split(`/`).filter(Boolean)[0]||``}async function tr(e){let t=[];if(typeof e.values==`function`){for await(let n of e.values())t.push(n);return t}if(typeof e.entries==`function`)for await(let[,n]of e.entries())t.push(n);return t}async function nr(e){let t=[];for(let n of await tr(e)){if(n.kind===`file`){t.push(await n.getFile());continue}t.push(...await nr(n))}return t}async function rr(){try{if(Qn()){let e=await r.selectFolder();if(e)return{kind:`path`,path:e}}let e=window.showDirectoryPicker;if(typeof e==`function`){let t=await e.call(window);return{kind:`files`,files:await nr(t),name:t.name}}return{kind:`unavailable`}}catch(e){return $n(e)?{kind:`cancelled`}:{kind:`unavailable`}}}var ir={chat:null,file:null,folder:null,note:null,web:null};function ar({language:e,brainReadiness:t,memoryFragments:n,graphModel:i,memoriesFetched:o,graphFetched:s,requestDetails:c,setLastRecallQuery:u,setMemoryFeedback:d,onBrainChange:f}){let p=l(),[h,g]=J.useState(!1),[_,v]=J.useState(ir),[y,b]=J.useState([]),[x,S]=J.useState(!1),C=J.useRef({});J.useEffect(()=>{if(!y[0]?.id)return;S(!0);let e=window.setTimeout(()=>S(!1),1650);return()=>window.clearTimeout(e)},[y]);let w=J.useCallback((e,t)=>{v(n=>{let r=n[e];return r?{...n,[e]:{...r,stage:t,completedAt:t===`complete`||t===`error`?Date.now():r.completedAt}}:n})},[]),T=J.useCallback((e,r)=>{c(),C.current[e]={memories:Math.max(t.signals.memoryCount,n.length),entities:Math.max(t.signals.conceptCount,i.nodes.length),label:r,memoryKnown:o,graphKnown:s,nodeIds:new Set(i.nodes.map(e=>e.id))},v(t=>({...t,[e]:{sourceType:e,label:r,stage:`preparing`,startedAt:Date.now(),completedAt:null,newMemories:0,newEntities:0,nodeIds:[]}}))},[t.signals.conceptCount,t.signals.memoryCount,s,i.nodes,o,n.length,c]),E=J.useCallback((e,t,n,r,i)=>{let a=C.current[e],o=a?.label??``,s=a?.graphKnown?r.nodes.filter(e=>!a.nodeIds.has(e.id)).map(e=>e.id):[],c=i.nodeIds.filter(e=>!a?.graphKnown||!a.nodeIds.has(e)),l=Array.from(new Set([...s,...c])).slice(0,24),u=a?.memoryKnown?Math.max(0,t-a.memories):0,d=a?.graphKnown?Math.max(l.length,Math.max(0,n-a.entities)):l.length;delete C.current[e],v(t=>{let n=t[e];return n?{...t,[e]:{...n,stage:`complete`,completedAt:Date.now(),newMemories:u,newEntities:d,nodeIds:l,chunkCount:i.chunkCount,duplicate:i.duplicate,provenanceId:i.provenanceId,extraction:i.extraction}}:t}),b(t=>[{id:`${e}-${Date.now()}`,sourceType:e,label:o,newMemories:u,newEntities:d,nodeIds:l,at:Date.now()},...t].slice(0,10))},[]),D=J.useCallback(async(e,a=null)=>{w(e,`indexing`);let o=P(a),[s,c]=await Promise.all([r.memoryManager(),r.graphPreview(48)]),l=c.ok?R(c.data):i,u=s.ok?j(s.data,n.length,l.nodes.length):t;return s.ok&&p.setQueryData([`memoryManager`],s),c.ok&&p.setQueryData([`graphPreview`],c),E(e,Math.max(u.signals.memoryCount,n.length),Math.max(u.signals.conceptCount,l.nodes.length),l,o),await Promise.all([p.invalidateQueries({queryKey:[`chatHistory`]}),p.invalidateQueries({queryKey:[`graph`]}),p.invalidateQueries({queryKey:[`memoryBrainProof`]}),p.invalidateQueries({queryKey:[`memoryBrainBrief`]}),p.invalidateQueries({queryKey:[`vectorFreshness`]}),p.invalidateQueries({queryKey:[`ingestionJobs`]})]),{memories:Math.max(u.signals.memoryCount,n.length),entities:Math.max(u.signals.conceptCount,l.nodes.length)}},[t,i,n.length,p,E,w]),O=J.useCallback((e,t)=>{delete C.current[e],v(n=>{let r=n[e];return r?{...n,[e]:{...r,stage:`error`,completedAt:Date.now(),error:t}}:n})},[]),k=J.useCallback(async t=>{if(!h){g(!0),d(a(e,`brain.upload.pending`,{name:t.name})),f(`recalling`,.86),T(`file`,t.name);try{let n=await r.uploadDocument(t);if(!n.ok){let t=n.error||`unavailable`;d(a(e,`brain.upload.failed`,{reason:t})),O(`file`,t);return}d(a(e,`brain.upload.saved`,{name:t.name})),u(t.name),await D(`file`,n.data),m()}finally{g(!1)}}},[T,D,O,e,f,u,d,h]),A=J.useCallback(async t=>{let n=t.trim();if(!n)return;d(a(e,`brain.ingest.folder.pending`,{path:n})),f(`recalling`,.84),T(`folder`,n);let i=await r.connectFolder(n);if(!i.ok){let t=i.error||`unavailable`;d(a(e,`brain.ingest.folder.failed`,{reason:t})),O(`folder`,t);return}d(a(e,`brain.ingest.folder.saved`,{path:n})),u(n),await D(`folder`,i.data),m()},[T,D,O,e,f,u,d]);return{ingestionStates:_,emergenceEvents:y,synthesisActive:x,uploadingDocument:h,beginIngestion:T,completeIngestion:D,failIngestion:O,uploadDocument:k,pickFolder:J.useCallback(async()=>{let t=await rr();if(t.kind===`cancelled`)return;if(t.kind===`unavailable`){d(a(e,`brain.ingest.folder.unavailable`));return}if(t.kind===`path`){await A(t.path);return}let n=t.name||er(t.files);if(!t.files.length){d(a(e,`brain.ingest.folder.empty`)),O(`folder`,`empty`);return}d(a(e,`brain.ingest.folder.reading`)),f(`recalling`,.84),T(`folder`,n);let i=0,o=null;for(let e of t.files){let t=await r.uploadDocument(e);t.ok&&(i+=1,o=t)}if(!i){d(a(e,`brain.ingest.folder.empty`)),O(`folder`,`empty`);return}d(a(e,`brain.ingest.folder.browserSaved`,{name:n,count:i})),u(n),await D(`folder`,o?.data),m()},[T,D,A,O,e,f,u,d]),connectFolder:A,ingestNote:J.useCallback(async t=>{let n=t.trim();if(!n)return;d(a(e,`brain.ingest.note.pending`)),f(`recalling`,.84),T(`note`,n.slice(0,80));let i=await r.ingestNote(n,n.slice(0,80));if(!i.ok){let t=i.error||`unavailable`;d(a(e,`brain.ingest.note.failed`,{reason:t})),O(`note`,t);return}d(a(e,`brain.ingest.note.saved`)),u(n.slice(0,120)),await D(`note`,i.data),m()},[T,D,O,e,f,u,d]),ingestWeb:J.useCallback(async t=>{let n=t.trim();if(!n)return;d(a(e,`brain.ingest.web.pending`,{url:n})),f(`recalling`,.84),T(`web`,n);let i=await r.browserReadUrl(n),o=i.data&&typeof i.data==`object`?i.data:{},s=typeof o.status==`string`?o.status:``;if(!i.ok||s!==`ok`){let t=i.error||(typeof o.detail==`string`?o.detail:s)||`unavailable`;d(a(e,`brain.ingest.web.failed`,{reason:t})),O(`web`,t);return}d(a(e,`brain.ingest.web.saved`,{url:n})),u(n),await D(`web`,i.data),m()},[T,D,O,e,f,u,d]),resetChatIngestion:()=>v(e=>({...e,chat:null}))}}function or({language:e,messages:t,modelName:n,setMemoryFeedback:i}){let o=W(e=>e.setMessages),[s,c]=J.useState(``),[l,d]=J.useState(!1),f=u({queryKey:[`memoryBrainProof`,s],queryFn:()=>r.memoryBrainProof(s,3),enabled:l||!!s||t.length>0}),p=u({queryKey:[`memoryBrainBrief`,s],queryFn:()=>r.memoryBrainBrief(s,3)}),m=J.useMemo(()=>T(f.data,n),[f.data,n]),h=J.useMemo(()=>F(p.data?.data),[p.data]),g=J.useCallback(async t=>{let s=await r.memoryBrainProof(t,4);if(!s.ok)return i(a(e,`brain.proof.unavailable`,{reason:s.error||a(e,`ui.status.unavailable`)})),!1;let c=sr(T(s,n),t,n);return o(e=>{let t=[...e];for(let e=t.length-1;e>=0;--e)if(t[e].role===`assistant`){t[e]={...t[e],proof:c};break}return t}),!0},[e,n,i,o]);return{brainProof:m,brainBrief:h,lastRecallQuery:s,setLastRecallQuery:c,requestDetails:()=>d(!0),attachAnswerProof:g,verifyModelContinuity:J.useCallback(async()=>{let r=[...t].reverse().find(e=>e.role===`user`),o=s||r?.content||``;if(!o.trim()){i(a(e,`brain.modelDemo.needQuestion`));return}i(a(e,`brain.modelDemo.checking`,{model:n})),await g(o)&&(c(o),i(a(e,`brain.modelDemo.done`,{model:n})))},[g,e,s,t,n,i])}}function sr(e,t,n){return{query:t,model:e.modelContinuity.activeModel||n,provenAcrossModels:e.modelContinuity.proven&&e.claims.keepsContextAcrossModels,citations:e.recall.items.slice(0,4).map(e=>({id:e.id,source:e.source,title:e.title,snippet:e.snippet,matchedTerms:e.matchedTerms,confidence:e.confidence,score:e.score,locator:e.locator}))}}function cr(e){let t=e.dataTransfer?.types;return t?Array.from(t).includes(`Files`):!1}function lr(e){let[t,n]=J.useState(!1),r=J.useRef(0),i=J.useRef(e);return i.current=e,J.useEffect(()=>{let e=e=>{cr(e)&&(e.preventDefault(),r.current+=1,n(!0))},t=e=>{cr(e)&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`))},a=e=>{cr(e)&&(r.current=Math.max(0,r.current-1),r.current===0&&n(!1))},o=e=>{if(r.current=0,n(!1),!cr(e))return;e.preventDefault();let t=Array.from(e.dataTransfer?.files||[]);t.length&&i.current(t)},s=()=>{r.current=0,n(!1)};return window.addEventListener(`dragenter`,e),window.addEventListener(`dragover`,t),window.addEventListener(`dragleave`,a),window.addEventListener(`drop`,o),window.addEventListener(`dragend`,s),()=>{window.removeEventListener(`dragenter`,e),window.removeEventListener(`dragover`,t),window.removeEventListener(`dragleave`,a),window.removeEventListener(`drop`,o),window.removeEventListener(`dragend`,s)}},[]),t}function ur({brainState:e,intensity:n,onBrainChange:i}){let o=t(e=>e.language),s=W(e=>e.messages),[c,l]=J.useState(null),d=u({queryKey:[`memoryManager`],queryFn:r.memoryManager}),f=u({queryKey:[`graphPreview`],queryFn:()=>r.graphPreview(48)}),p=u({queryKey:[`models`],queryFn:r.models}),h=Zn({language:o,setMemoryFeedback:l}),g=J.useMemo(()=>E(d.data?.data,h.historyQ.data?.data,o),[h.historyQ.data,d.data]),_=J.useMemo(()=>R(f.data?.data),[f.data]),v=J.useMemo(()=>_.nodes.slice(0,10),[_.nodes]),y=J.useMemo(()=>j(d.data?.data,g.length,v.length),[v.length,d.data,g.length]),b=J.useMemo(()=>D(p.data?.data),[p.data]),x=J.useMemo(()=>ee(p.data?.data),[p.data]),S=or({language:o,messages:s,modelName:b,setMemoryFeedback:l}),C=ar({language:o,brainReadiness:y,memoryFragments:g,graphModel:_,memoriesFetched:d.isFetched,graphFetched:f.isFetched,requestDetails:S.requestDetails,setLastRecallQuery:S.setLastRecallQuery,setMemoryFeedback:l,onBrainChange:i}),w=Yn({language:o,modelReady:x,onBrainChange:i,setMemoryFeedback:l,beginIngestion:C.beginIngestion,completeIngestion:C.completeIngestion,failIngestion:C.failIngestion,setLastRecallQuery:S.setLastRecallQuery,attachAnswerProof:S.attachAnswerProof}),T=J.useMemo(()=>[a(o,`brain.prompt.remember`),a(o,`brain.prompt.know`),a(o,`brain.prompt.plan`)],[o]),O=J.useCallback(e=>{m(),i(`recalling`,.82),window.location.hash=e<=2?`/memory`:`/knowledge-graph`},[i]),k=J.useRef(C.uploadDocument);k.current=C.uploadDocument;let A=lr(J.useCallback(e=>{(async()=>{for(let t of e.slice(0,5))await k.current(t)})()},[])),M=J.useCallback(()=>{w.streaming&&w.stopStreaming(),h.resetConversation(),C.resetChatIngestion(),l(null),i(`idle`,.58)},[w,h,C,i]),N=w.proactiveActivities.some(e=>e.status===`running`),P=Object.values(C.ingestionStates).some(e=>e&&e.stage!==`complete`&&e.stage!==`error`),te=N?`acting`:w.streaming&&e===`recalling`?`recalling`:w.streaming?`thinking`:P?`recalling`:C.synthesisActive?`synthesizing`:w.draft.trim()?`listening`:`idle`,F=te===`idle`?.62:te===`listening`?.76:Math.max(.92,n);return(0,Y.jsxs)(`main`,{className:`brain-home`,"aria-label":a(o,`brain.aria.home`),children:[A?(0,Y.jsx)(`div`,{className:`brain-drop-overlay`,role:`status`,"data-testid":`brain-drop-overlay`,children:(0,Y.jsxs)(`div`,{className:`brain-drop-overlay-card`,children:[(0,Y.jsx)(`strong`,{children:a(o,`brain.dnd.title`)}),(0,Y.jsx)(`span`,{children:a(o,`brain.dnd.detail`)})]})}):null,(0,Y.jsx)(In,{language:o,brainState:te,intensity:F,modelName:b,modelReady:x,messages:w.messages,pastConversations:h.pastConversations,historyBusyId:h.historyBusyId,starterPrompts:T,memoryFeedback:c,ingestionStates:C.ingestionStates,emergenceEvents:C.emergenceEvents,proactiveActivities:w.proactiveActivities,draft:w.draft,streaming:w.streaming,imageData:w.imageData,streamRef:w.streamRef,memories:g,graph:_,concepts:v,relationshipCount:Math.max(y.signals.relationshipCount,_.edges.length),readiness:y,proof:S.brainProof,brief:S.brainBrief,uploadingDocument:C.uploadingDocument,onOpenDepth:O,onDraftChange:w.setDraft,onImageDataChange:w.setImageData,onUploadDocument:e=>void C.uploadDocument(e),onPickFolder:()=>void C.pickFolder(),onConnectFolder:e=>void C.connectFolder(e),onIngestNote:e=>void C.ingestNote(e),onIngestWeb:e=>void C.ingestWeb(e),onVerifyModelContinuity:()=>void S.verifyModelContinuity(),onSend:()=>void w.send(),onSendText:e=>void w.sendText(e),onCreateActionItem:e=>void w.createActionItem(e),onProactiveAction:e=>void w.handleProactiveAction(e),onApprovalResolved:w.handleApprovalResolved,onStop:w.stopStreaming,onRegenerate:()=>void w.regenerate(),onNewConversation:M,onResumeConversation:e=>void h.resumeConversation(e,w.streaming),onDeleteConversation:e=>void h.deleteConversation(e),onExploreBrain:()=>O(5),onRequestDetails:S.requestDetails})]})}export{ur as BrainHome};
@@ -1 +0,0 @@
1
- import{S as e,_ as t,b as n,d as r,g as i,i as a,m as o,o as s,t as c,y as l}from"./utils-C3rXoa-U.js";import{r as u,t as d}from"./useQuery-CiRdTQlD.js";import{t as f}from"./workspace-DfxKEttN.js";import{_ as p,b as m,c as h,g,h as _,i as v,m as y,n as b,p as x,t as S,u as C,v as w,x as T,y as E}from"./primitives-B6WtkLgB.js";import{n as D,t as O}from"./input-DW1tXtc0.js";import{n as k,r as A,t as ee}from"./hard-drive-BMIqDSyY.js";import{t as j}from"./folder-open-Bld9TtHp.js";import{t as M}from"./share-2-DR5L1qRc.js";import{d as te,i as N}from"./index-yNtiRyw3.js";import{t as P}from"./button-Ic6omIbs.js";var F=i(`clipboard-paste`,[[`path`,{d:`M11 14h10`,key:`1w8e9d`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v1.344`,key:`1e62lh`}],[`path`,{d:`m17 18 4-4-4-4`,key:`z2g111`}],[`path`,{d:`M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113`,key:`bjbb7m`}],[`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,key:`ublpy`}]]),I=i(`scan-line`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]),L=i(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),R=e(n()),z=l();function B(e,t){for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t.trim()}return``}function V(e,t){let n=Number(e[t]);return Number.isFinite(n)&&n>0?Math.round(n):0}function ne(e){let t=s(e)?e:{},n=s(t.vector_freshness_global)?t.vector_freshness_global:{};return{vectorStatus:B(n,[`status`])||`unavailable`,vectorPending:V(n,`pending_items`),folders:c(t.folders).flatMap(e=>{let t=s(e)?e:{},n=B(t,[`id`]);if(!n)return[];let r=s(t.files)?t.files:{},i=t.coverage;return[{id:n,label:B(t,[`label`,`root_path`])||n,status:B(t,[`status`]),watchActive:t.watch_active===!0,total:V(r,`total`),indexed:V(r,`indexed`),failed:V(r,`failed`),coverage:typeof i==`number`&&Number.isFinite(i)?i:null,errors:c(t.recent_errors).flatMap(e=>{let t=s(e)?e:{},n=B(t,[`detail`]);return n?[{path:B(t,[`path`]),detail:n}]:[]})}]})}}function re({language:e}){let t=d({queryKey:[`folderMemoryHealth`],queryFn:()=>r.localFolderHealth(),staleTime:3e4}),n=R.useMemo(()=>t.data?.ok?ne(t.data.data):null,[t.data]);return!n||!n.folders.length?null:(0,z.jsxs)(`section`,{className:`folder-memory-health`,"data-testid":`folder-memory-health`,children:[(0,z.jsx)(`h3`,{children:o(e,`capture.folderHealth.title`)}),(0,z.jsx)(`ul`,{children:n.folders.map(t=>(0,z.jsxs)(`li`,{"data-testid":`folder-health-${t.id}`,children:[(0,z.jsxs)(`div`,{className:`folder-memory-head`,children:[(0,z.jsx)(`strong`,{children:t.label}),(0,z.jsx)(`span`,{className:`folder-memory-coverage`,children:t.coverage===null?o(e,`capture.folderHealth.unknown`):o(e,`capture.folderHealth.coverage`,{percent:Math.round(t.coverage*100),indexed:t.indexed,total:t.total})})]}),t.coverage===null?null:(0,z.jsx)(`div`,{className:`folder-memory-bar`,role:`progressbar`,"aria-valuenow":Math.round(t.coverage*100),"aria-valuemin":0,"aria-valuemax":100,children:(0,z.jsx)(`span`,{style:{width:`${Math.round(t.coverage*100)}%`}})}),t.watchActive?(0,z.jsx)(`small`,{children:o(e,`capture.folderHealth.watching`)}):null,t.failed>0?(0,z.jsxs)(`details`,{className:`folder-memory-errors`,children:[(0,z.jsx)(`summary`,{children:o(e,`capture.folderHealth.failed`,{count:t.failed})}),(0,z.jsx)(`ul`,{children:t.errors.map(e=>(0,z.jsxs)(`li`,{children:[(0,z.jsx)(`code`,{children:e.path}),(0,z.jsx)(`span`,{children:e.detail})]},`${t.id}-${e.path}-${e.detail}`))})]}):null]},t.id))}),n.vectorPending>0?(0,z.jsx)(`small`,{className:`folder-memory-vector`,children:o(e,`capture.folderHealth.vectorGlobal`,{count:n.vectorPending})}):null]})}var H=[{id:`files`,labelKey:`capture.method.files`,icon:L,path:`capture`},{id:`local`,labelKey:`capture.method.local`,icon:k,path:`my-computer`},{id:`browser`,labelKey:`capture.method.browser`,icon:A,path:`capture-browser`}];function U(e){return H.some(t=>t.id===e)?e:`files`}function W({initialTab:e}){let n=t(e=>e.language),[r,i]=R.useState(()=>U(e));R.useEffect(()=>{i(U(e))},[e]);let a=e=>{i(e),N(`/`+(H.find(t=>t.id===e)?.path||`capture`))};return(0,z.jsxs)(`div`,{className:`product-page capture-page space-y-5`,children:[(0,z.jsxs)(`header`,{className:`page-hero`,children:[(0,z.jsxs)(`div`,{className:`page-kicker`,children:[(0,z.jsx)(L,{className:`h-4 w-4`}),` `,o(n,`capture.kicker`)]}),(0,z.jsx)(`h1`,{className:`page-title`,children:o(n,`capture.title`)}),(0,z.jsx)(`p`,{className:`page-copy`,children:o(n,`capture.body`)})]}),(0,z.jsxs)(`section`,{className:`capture-station`,"aria-label":o(n,`capture.station.aria`),children:[(0,z.jsxs)(`div`,{className:`capture-station-head`,children:[(0,z.jsx)(`h2`,{children:o(n,`capture.station.title`)}),(0,z.jsx)(`p`,{children:o(n,`capture.station.detail`)})]}),(0,z.jsx)(`div`,{className:`capture-method-switch`,role:`group`,"aria-label":o(n,`capture.method.aria`),children:H.map(({id:e,labelKey:t,icon:i})=>(0,z.jsxs)(`button`,{type:`button`,"aria-pressed":r===e,className:r===e?`is-active`:``,"data-testid":`capture-method-${e}`,onClick:()=>a(e),children:[(0,z.jsx)(i,{className:`h-4 w-4`,"aria-hidden":`true`}),o(n,t)]},e))}),(0,z.jsxs)(`div`,{className:`capture-station-body`,children:[r===`files`?(0,z.jsx)(G,{}):null,r===`local`?(0,z.jsx)(ce,{}):null,r===`browser`?(0,z.jsx)(le,{}):null]})]}),(0,z.jsxs)(`div`,{className:`capture-secondary`,children:[(0,z.jsx)(de,{}),(0,z.jsx)(K,{})]})]})}function G(){let e=t(e=>e.language),n=u(),[r,i]=R.useState([]),a=f({mutationFn:e=>q(e,i),onSuccess:()=>{n.invalidateQueries({queryKey:[`documents`]}),n.invalidateQueries({queryKey:[`graphStats`]}),n.invalidateQueries({queryKey:[`memoryManager`]})}}),s=R.useCallback(e=>{let t=Array.from(e);t.length&&a.mutate(t)},[a]);return(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`label`,{className:`flex min-h-48 cursor-pointer flex-col items-center justify-center gap-3 rounded-xl border-2 border-dashed border-primary/30 bg-muted/20 p-6 text-center transition hover:border-primary/60 hover:bg-muted/40`,onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault(),s(e.dataTransfer.files)},children:[(0,z.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-primary/10 text-primary`,children:(0,z.jsx)(L,{className:`h-6 w-6`})}),(0,z.jsxs)(`div`,{className:`space-y-1`,children:[(0,z.jsx)(`span`,{className:`text-lg font-semibold block`,children:o(e,`capture.files.drop`)}),(0,z.jsx)(`span`,{className:`max-w-md text-sm text-muted-foreground block`,children:o(e,`capture.files.dropDetail`)})]}),(0,z.jsx)(`input`,{type:`file`,multiple:!0,className:`sr-only`,onChange:e=>e.target.files&&s(e.target.files)})]}),(0,z.jsx)(J,{queue:r,onRetry:e=>s([e])})]})}function K(){let e=t(e=>e.language),n=t(e=>e.mode),i=d({queryKey:[`documents`],queryFn:()=>r.documents(200)}),a=d({queryKey:[`localSources`],queryFn:r.localSources}),s=d({queryKey:[`localAgent`],queryFn:r.localAgent});return(0,z.jsxs)(`div`,{className:`capture-secondary-column space-y-4`,children:[(0,z.jsx)(b,{title:o(e,`capture.files.uploaded`),result:i.data,children:t=>(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsx)(v,{items:t.documents||t,titleKey:`filename`,metaKey:`ingest_state`,limit:12}),(0,z.jsx)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm text-muted-foreground`,children:o(e,`capture.files.completed`)})]})}),(0,z.jsx)(re,{language:e}),(0,z.jsx)(b,{title:o(e,`capture.local.sources`),result:a.data,children:t=>(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsx)(v,{items:t.sources,titleKey:`path`,metaKey:`status`}),c(t.sources).map(t=>(0,z.jsx)(S,{label:o(e,`capture.local.stop`,{source:String(t.path||t.id||o(e,`capture.local.source`))}),action:()=>r.localWatchStop(String(t.id||t.source_id)),invalidate:[`localSources`]},String(t.id||t.source_id||t.path)))]})}),n===`basic`?null:(0,z.jsx)(b,{title:o(e,`capture.local.access`),result:s.data,children:e=>(0,z.jsx)(C,{value:e})})]})}async function q(e,t){let n=e.map(e=>({id:`${e.name}-${e.size}-${e.lastModified}-${Date.now()}`,file:e,name:ae(e),size:e.size,status:`queued`}));t(e=>[...n,...e].slice(0,12));let i=[];for(let e of n){t(t=>t.map(t=>t.id===e.id?{...t,status:`uploading`}:t));let n=await r.uploadDocument(e.file);i.push(n),t(t=>t.map(t=>t.id===e.id?{...t,status:n.ok?`done`:`failed`,result:n}:t))}return i}function J({queue:e,onRetry:n}){let r=t(e=>e.language);return e.length?(0,z.jsx)(`div`,{className:`mt-4 space-y-2`,children:e.map(e=>{let t=Y(e,r);return(0,z.jsxs)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm`,children:[(0,z.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[e.status===`done`?(0,z.jsx)(D,{className:`h-4 w-4 text-emerald-400`}):e.status===`failed`?(0,z.jsx)(T,{className:`h-4 w-4 text-amber-400`}):(0,z.jsx)(m,{className:`h-4 w-4 animate-spin text-primary`}),e.name]}),(0,z.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[Math.max(1,Math.round(e.size/1024)),` KB · `,t]})]}),e.status===`failed`?(0,z.jsxs)(P,{size:`sm`,variant:`outline`,onClick:()=>n(e.file),children:[(0,z.jsx)(te,{className:`h-3.5 w-3.5`}),` `,o(r,`capture.retry`)]}):null]}),e.result?(0,z.jsx)(h,{result:e.result,successLabel:o(r,`capture.files.success`)}):null]},e.id)})}):null}function Y(e,t){if(e.status===`queued`)return o(t,`capture.files.queued`);if(e.status===`uploading`)return o(t,`capture.files.uploading`);if(!e.result?.ok)return e.result?.error||o(t,`capture.files.failed`);let n=e.result.data||{},r=String(n.node_id||n.graph_node||n.provenance_id||``);return r?o(t,`capture.files.capturedWithNode`,{node:r}):o(t,`capture.files.captured`)}var ie={webkitdirectory:``,directory:``};function ae(e){return e.webkitRelativePath||e.name}function oe(e){return(e[0]?.webkitRelativePath||``).split(`/`).filter(Boolean)[0]||``}function X(){let e=window;return!!(e.__TAURI__?.core?.invoke||e.latticeDesktop?.selectFolder||e.__TAURI_INTERNALS__&&window.location.protocol===`tauri:`)}function se(e){return e instanceof DOMException&&e.name===`AbortError`}async function Z(e){let t=[];if(typeof e.values==`function`){for await(let n of e.values())t.push(n);return t}if(typeof e.entries==`function`)for await(let[,n]of e.entries())t.push(n);return t}async function Q(e){let t=[];for(let n of await Z(e)){if(n.kind===`file`){t.push(await n.getFile());continue}t.push(...await Q(n))}return t}function ce(){let e=t(e=>e.language),n=u(),i=R.useRef(null),[a,s]=R.useState(``),[c,l]=R.useState(null),[d,p]=R.useState(``),[g,_]=R.useState(!1),[v,y]=R.useState([]),b=f({mutationFn:e=>r.connectFolder((e||a).trim()),onSuccess:()=>{l(null),n.invalidateQueries({queryKey:[`localSources`]}),n.invalidateQueries({queryKey:[`graphStats`]}),n.invalidateQueries({queryKey:[`memoryManager`]})}}),x=f({mutationFn:e=>q(e,y),onSuccess:()=>{n.invalidateQueries({queryKey:[`documents`]}),n.invalidateQueries({queryKey:[`graphStats`]}),n.invalidateQueries({queryKey:[`memoryManager`]})}}),S=R.useCallback((t,n)=>{if(!t.length){l(o(e,`capture.local.emptyFolder`));return}l(null),p(n||oe(t)||o(e,`capture.local.browserFolder`)),x.mutate(t)},[x,e]),C=R.useCallback(async()=>{if(!g){_(!0),l(null);try{let t=window.showDirectoryPicker;if(!X()&&typeof t==`function`){let e=await t.call(window);S(await Q(e),e.name);return}if(X()){let e=await r.selectFolder();if(e){p(``),s(e),b.mutate(e);return}}if(typeof t==`function`){let e=await t.call(window);S(await Q(e),e.name);return}if(i.current){i.current.click();return}l(o(e,`capture.local.pickUnavailable`))}catch(t){se(t)||l(o(e,`capture.local.pickUnavailable`))}finally{_(!1)}}},[S,g,b,e]),w=R.useCallback(()=>{let e=a.trim();e&&(l(null),p(``),b.mutate(e))},[b,a]),T=(x.data||[]).find(e=>!e.ok)?.error,E=!!(x.error||T);return(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`capture-intake-lead`,children:[(0,z.jsx)(k,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:o(e,`capture.local.title`)}),(0,z.jsx)(`p`,{children:o(e,`capture.local.description`)})]})]}),(0,z.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),w()},children:[(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,z.jsx)(O,{value:a,onChange:e=>s(e.target.value),placeholder:o(e,`capture.local.placeholder`)}),(0,z.jsxs)(P,{type:`button`,variant:`outline`,disabled:g||b.isPending||x.isPending,onClick:()=>void C(),children:[g?(0,z.jsx)(m,{className:`h-4 w-4 animate-spin`}):(0,z.jsx)(j,{className:`h-4 w-4`}),g?o(e,`capture.local.choosing`):o(e,`capture.local.choose`)]})]}),(0,z.jsx)(`input`,{ref:i,type:`file`,multiple:!0,className:`sr-only`,"aria-hidden":`true`,tabIndex:-1,...ie,onChange:e=>{let t=Array.from(e.currentTarget.files||[]);e.currentTarget.value=``,S(t)}}),(0,z.jsxs)(P,{type:`submit`,disabled:!a.trim()||b.isPending,children:[b.isPending?(0,z.jsx)(m,{className:`h-4 w-4 animate-spin`}):(0,z.jsx)(I,{className:`h-4 w-4`}),o(e,`capture.local.connect`)]})]}),c?(0,z.jsx)(h,{result:{ok:!1,status:0,data:{},source:`unavailable`,error:c}}):null,b.data?(0,z.jsx)(h,{result:b.data,successLabel:o(e,`capture.local.success`)}):null,d?(0,z.jsx)(h,{result:{ok:x.isPending||!E,status:E?0:200,data:{folder:d},source:E?`unavailable`:`live`,error:x.error?o(e,`capture.local.browserImportFailed`):T},successLabel:x.isPending?o(e,`capture.local.browserImporting`):o(e,`capture.local.browserImportSuccess`,{folder:d})}):null,(0,z.jsx)(J,{queue:v,onRetry:e=>S([e],d)})]})}function le(){let e=t(e=>e.language),n=u(),[i,a]=R.useState(``),s=f({mutationFn:e=>r.browserReadUrl(e),onSuccess:()=>{n.invalidateQueries({queryKey:[`graphStats`]}),n.invalidateQueries({queryKey:[`memoryManager`]})}}),c=R.useCallback(()=>{let e=$(i);e&&(a(e),s.mutate(e))},[s,i]),l=R.useCallback(async()=>{let e=$(await navigator.clipboard?.readText().catch(()=>``)||``);e&&(a(e),s.mutate(e))},[s]);return(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`capture-intake-lead`,children:[(0,z.jsx)(A,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:o(e,`capture.browser.title`)}),(0,z.jsx)(`p`,{children:o(e,`capture.browser.description`)})]})]}),(0,z.jsxs)(`form`,{className:`flex flex-col gap-2 sm:flex-row`,onSubmit:e=>{e.preventDefault(),c()},children:[(0,z.jsx)(O,{value:i,onChange:e=>a(e.target.value),placeholder:o(e,`capture.browser.placeholder`),inputMode:`url`}),(0,z.jsxs)(P,{type:`button`,variant:`outline`,disabled:s.isPending,onClick:()=>void l(),children:[(0,z.jsx)(F,{className:`h-4 w-4`}),` `,o(e,`capture.browser.paste`)]}),(0,z.jsxs)(P,{type:`submit`,disabled:!i.trim()||s.isPending,children:[s.isPending?(0,z.jsx)(m,{className:`h-4 w-4 animate-spin`}):(0,z.jsx)(I,{className:`h-4 w-4`}),o(e,`capture.browser.capture`)]})]}),s.data?(0,z.jsx)(h,{result:s.data,successLabel:o(e,`capture.browser.success`)}):null]})}function $(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:/^[\w.-]+\.[a-z]{2,}([/:?#].*)?$/i.test(t)?`https://${t}`:t:``}function ue(e,t){let n=s(e)?e:{},r=s(t)?t:{},i=s(n.pipelines)?n.pipelines:{},a=e=>{let t=s(i[e])?i[e]:null;if(!t)return null;let n=String(t.state||t.status||``).toLowerCase();return/\b(ready|ok|complete(?:d)?|idle)\b/.test(n)?`done`:/\b(build(?:ing)?|index(?:ing)?|run(?:ning)?|pending|queue(?:d)?)\b/.test(n)?`working`:`waiting`},o=(...e)=>{for(let t of e){let e=Number(t);if(Number.isFinite(e)&&e>0)return Math.round(e)}return 0},c=o(n.total,n.total_items,r.nodes,r.total_nodes),l=o(r.edges,r.total_edges),u=o(n.pending,n.pending_items);return{remembered:c,connections:l,waiting:u,steps:[{key:`read`,state:u?`working`:c?`done`:`waiting`},{key:`understand`,state:a(`vector_index`)??(c?`done`:`waiting`)},{key:`connect`,state:a(`knowledge_graph`)??(l?`done`:`waiting`)}]}}function de(){let e=t(e=>e.language),n=t(e=>e.mode),i=d({queryKey:[`index`],queryFn:r.indexStatus}),s=d({queryKey:[`graphStats`],queryFn:r.graphStats}),c=ue(i.data?.data,s.data?.data),l={read:I,understand:E,connect:M};return(0,z.jsxs)(`div`,{className:`capture-secondary-column space-y-4`,children:[(0,z.jsxs)(x,{children:[(0,z.jsxs)(g,{children:[(0,z.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,z.jsx)(I,{className:`h-4 w-4`}),` `,o(e,`capture.pipeline.journey.title`)]}),(0,z.jsx)(_,{children:o(e,`capture.pipeline.journey.detail`)})]}),(0,z.jsxs)(y,{className:`space-y-4`,children:[(0,z.jsx)(`ol`,{className:`capture-journey`,"aria-label":o(e,`capture.pipeline.journey.aria`),children:c.steps.map(({key:t,state:n})=>{let r=l[t];return(0,z.jsxs)(`li`,{className:`capture-journey-step is-${n}`,children:[(0,z.jsx)(`span`,{className:`capture-journey-mark`,"aria-hidden":`true`,children:(0,z.jsx)(r,{className:`h-4 w-4`})}),(0,z.jsxs)(`div`,{className:`capture-journey-copy`,children:[(0,z.jsx)(`strong`,{children:o(e,`capture.pipeline.step.${t}`)}),(0,z.jsx)(`small`,{children:o(e,`capture.pipeline.step.${t}.detail`)})]}),(0,z.jsx)(`span`,{className:`capture-journey-state`,children:o(e,`capture.pipeline.step.${n}`)})]},t)})}),c.remembered||c.connections?(0,z.jsxs)(`div`,{className:`flex flex-wrap gap-2 text-sm`,children:[(0,z.jsx)(w,{variant:`success`,children:o(e,`capture.pipeline.count.remembered`,{count:a(c.remembered)})}),(0,z.jsx)(w,{variant:`muted`,children:o(e,`capture.pipeline.count.connections`,{count:a(c.connections)})}),(0,z.jsx)(w,{variant:c.waiting?`warning`:`muted`,children:c.waiting?o(e,`capture.pipeline.count.waiting`,{count:a(c.waiting)}):o(e,`capture.pipeline.count.none`)})]}):(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(e,`capture.pipeline.empty`)})]})]}),(0,z.jsxs)(x,{children:[(0,z.jsxs)(g,{children:[(0,z.jsxs)(p,{className:`flex items-center gap-2`,children:[(0,z.jsx)(ee,{className:`h-4 w-4`}),` `,o(e,`capture.pipeline.refresh`)]}),(0,z.jsx)(_,{children:o(e,`capture.pipeline.description`)})]}),(0,z.jsx)(y,{children:(0,z.jsx)(S,{label:o(e,`capture.pipeline.rebuild`),action:()=>r.rebuildIndex(),invalidate:[`index`]})})]}),n===`basic`?null:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(b,{title:o(e,`capture.pipeline.status`),result:i.data,children:e=>(0,z.jsx)(C,{value:e})}),(0,z.jsx)(b,{title:o(e,`capture.pipeline.growth`),result:s.data,children:e=>(0,z.jsx)(C,{value:e})})]})]})}export{W as CapturePage};
@@ -1 +0,0 @@
1
- import{S as e,_ as t,a as n,b as r,d as i,g as a,m as o,t as s,y as c}from"./utils-C3rXoa-U.js";import{r as l,t as u}from"./useQuery-CiRdTQlD.js";import{t as d}from"./workspace-DfxKEttN.js";import{_ as f,b as p,c as m,d as h,f 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,t as T,u as E,v as D}from"./primitives-B6WtkLgB.js";import{n as O,t as k}from"./input-DW1tXtc0.js";import{t as A}from"./circle-play-Dz0OLYN9.js";import{t as j}from"./cpu-N8uE9ono.js";import{t as M}from"./download-CCjhOjms.js";import{t as N}from"./shield-alert-CVE5eXsl.js";import{i as P}from"./index-yNtiRyw3.js";import{t as F}from"./button-Ic6omIbs.js";var I=a(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),L=a(`package-plus`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`M16 17h6`,key:`1ook5g`}],[`path`,{d:`M19 14v6`,key:`1ckrd5`}],[`path`,{d:`M21 10.535V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.675-.955`,key:`28k6lz`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),R=a(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),z=e(r()),B=c();function V(e,t){let n=String(e||``).toLowerCase();return n===`production`?o(t,`library.embedding.state.production`):n===`fallback`||n===`hash`||n===`local`?o(t,`library.embedding.state.fallback`):o(t,`library.embedding.state.unknown`)}function H(e,t){let n=String(e?.os||``).toLowerCase(),r=String(e?.arch||``).toLowerCase();return n?n===`darwin`&&r.startsWith(`arm`)?o(t,`library.runtime.appleSilicon`):n===`darwin`?`Mac`:n===`win32`||n.startsWith(`win`)?`Windows`:n===`linux`?`Linux`:o(t,`library.runtime.thisComputer`):o(t,`library.value.detected`)}function U(e){return/[ㄱ-힝]/u.test(e)?!1:e.trim().split(/\s+/).length>=6}var ee=new Set([`loaded`,`ready`,`download_required`,`unavailable`,`unsupported`]),W=[{id:`models`,labelKey:`library.tab.models`},{id:`skills`,labelKey:`library.tab.skills`},{id:`mcp`,labelKey:`library.tab.mcp`},{id:`marketplace`,labelKey:`library.tab.marketplace`}];function G({initialTab:e}){let n=t(e=>e.mode),r=t(e=>e.language),[i,a]=z.useState(e||`models`);z.useEffect(()=>{W.some(t=>t.id===e)&&a(e)},[e]);let s=(n===`basic`?W.filter(e=>e.id===`models`):W).map(e=>({id:e.id,label:o(r,e.labelKey)})),c=e=>{a(e),P(`/`+e)};return(0,B.jsxs)(`div`,{className:`product-page library-page space-y-5`,children:[(0,B.jsxs)(`header`,{className:`page-hero`,children:[(0,B.jsxs)(`div`,{className:`page-kicker`,children:[(0,B.jsx)(I,{className:`h-4 w-4`}),` `,o(r,`library.kicker`)]}),(0,B.jsx)(`h1`,{className:`page-title`,children:o(r,`library.title`)}),(0,B.jsx)(`p`,{className:`page-copy`,children:o(r,`library.body`)})]}),(0,B.jsx)(K,{}),(0,B.jsx)(h,{tabs:s,value:i,onChange:e=>c(e)}),i===`models`?(0,B.jsx)(q,{}):null,i===`skills`?(0,B.jsx)(Y,{}):null,i===`mcp`?(0,B.jsx)(X,{}):null,i===`marketplace`?(0,B.jsx)(Z,{}):null]})}function K(){let e=l(),r=t(e=>e.language),a=u({queryKey:[`models`],queryFn:i.models}),[c,d]=z.useState(null),[f,m]=z.useState(null),h=a.data?.data||{},g=s(h.loaded),_=String(h.current||g[0]||``),v=[...s(h.catalog),...s(h.recommended),...s(h.models)],y=e=>String(e.id||e.model_id||``),b=_?v.find(e=>y(e)===_):void 0,x=String(b?.name||``)||(_?n(_):``),S=v.filter(e=>{let t=y(e);return!t||t===_||g.includes(t)||e.download_required||J(e.runtime_compatibility).supported===!1||e.load_status===`unsupported`?!1:!!e.load_available||e.load_status===`ready`}).slice(0,3);async function C(t){let n=y(t);d(n),m(null);let a=String(t.recommended_engine||t.engine||``)||void 0,s=await i.loadModel(String(t.recommended_load_id||n),a,!1);d(null),s.ok||m(s.error||o(r,`library.active.switchFailed`)),await e.invalidateQueries({queryKey:[`models`]})}let w=!!(a.data&&!a.data.ok);return(0,B.jsxs)(`section`,{className:`library-active`,"aria-label":o(r,`library.active.title`),"data-testid":`library-active-model`,children:[(0,B.jsxs)(`div`,{className:`library-active-main`,children:[(0,B.jsx)(`span`,{className:`library-active-mark`,"aria-hidden":`true`,children:x&&!w?(0,B.jsx)(A,{className:`h-5 w-5`}):(0,B.jsx)(j,{className:`h-5 w-5`})}),(0,B.jsxs)(`div`,{className:`library-active-copy`,children:[(0,B.jsx)(`span`,{className:`library-active-kicker`,children:o(r,`library.active.title`)}),w?(0,B.jsx)(`strong`,{children:o(r,`library.active.unknown`)}):x?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`strong`,{children:x}),(0,B.jsx)(`small`,{children:o(r,`library.active.ready`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`strong`,{children:o(r,`library.active.none`)}),(0,B.jsx)(`small`,{children:o(r,`library.active.noneHint`)})]})]}),x&&!w?(0,B.jsx)(D,{variant:`success`,children:o(r,`library.model.loaded`)}):null]}),S.length&&!w?(0,B.jsxs)(`div`,{className:`library-active-switch`,children:[(0,B.jsxs)(`span`,{className:`library-active-switch-label`,children:[o(r,`library.active.switchTitle`),(0,B.jsx)(`small`,{children:o(r,`library.active.switchHint`)})]}),(0,B.jsx)(`div`,{className:`library-active-switch-options`,children:S.map(e=>{let t=y(e),i=String(e.name||``)||n(t);return(0,B.jsxs)(`button`,{type:`button`,disabled:!!c,"data-testid":`library-switch-${t}`,onClick:()=>void C(e),children:[c===t?(0,B.jsx)(p,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":`true`}):(0,B.jsx)(O,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),c===t?o(r,`library.active.switching`):i]},t)})})]}):null,f?(0,B.jsx)(`p`,{className:`library-active-error`,role:`status`,children:f}):null]})}function q(){let e=l(),n=t(e=>e.mode),r=t(e=>e.language),a=u({queryKey:[`models`],queryFn:i.models}),c=u({queryKey:[`modelRecommendations`,`local_mlx`],queryFn:()=>i.modelRecommendations(`local_mlx`)}),d=u({queryKey:[`embeddings`],queryFn:i.embeddingsStatus}),[f,p]=z.useState(!1),[m,h]=z.useState(null),[_,v]=z.useState([]),[b,x]=z.useState(null),[C,k]=z.useState(null),[P,I]=z.useState(!1),R=s(a.data?.data?.loaded),H=String(a.data?.data?.current||``),W=e=>{let t=String(e.id||e.model_id||``);return R.includes(t)||t===H?0:e.load_available||e.load_status===`ready`?1:e.pulled?2:3},G=[...s(a.data?.data?.catalog),...s(a.data?.data?.recommended)].map((e,t)=>({model:e,index:t})).sort((e,t)=>W(e.model)-W(t.model)||e.index-t.index).map(e=>e.model),K=s(c.data?.data?.recommendations?.models),q=new Map(K.map(e=>[String(e.id),e])),Y=G.find(e=>R.includes(String(e.id))||String(e.id)===H),X=c.data?.data?.recommendations?.top_pick||null,Z=_[_.length-1]||null,Q=z.useCallback((e,t=`library.model.notReady`)=>{let i=String(e||o(r,t));if(r===`ko`&&U(i))return o(r,t);if(n!==`basic`)return i;let a=i.replace(/gemma4_unified/gi,o(r,`library.model.localFormat`)).replace(/mlx[-_ ]?vlm|mlx[-_ ]?lm|local_mlx|\bmlx\b|\bgguf\b|\bollama\b|hugging face/gi,o(r,`library.model.localSupport`)).replace(/runtime/gi,o(r,`library.model.support`)).replace(/model_type/gi,o(r,`library.model.format`));return r===`en`?a.replace(/this local model format local model support format/gi,o(r,`library.model.localFormat`)).replace(/local model support model support/gi,o(r,`library.model.localSupport`)):a},[r,n]);async function $(t,n,r){I(!0),h(t),v([]),x(null),k(null);let a=await i.streamModelPrepare({model:t,engine:n||`local_mlx`,allow_download:r},{onProgress:e=>v(t=>[...t.slice(-8),e]),onDone:e=>x(e),onError:e=>k(e)});I(!1),await e.invalidateQueries({queryKey:[`models`]}),await e.invalidateQueries({queryKey:[`modelRecommendations`,`local_mlx`]}),!a.ok&&!C&&k(a.data)}return(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.2fr_0.8fr]`,children:[(0,B.jsxs)(`div`,{className:`space-y-4`,children:[(0,B.jsx)(S,{title:o(r,`library.models.setup.title`),description:o(r,`library.models.setup.desc`),result:c.data,children:t=>{let a=t.recommendations,s=t.profile;return(0,B.jsxs)(`div`,{className:`space-y-4`,children:[(0,B.jsx)(ne,{language:r,mode:n,profile:s||{},recommendation:a||{},current:Y,currentId:H,latestProgress:Z,lastResult:b,onReload:()=>{Y&&$(String(Y.recommended_load_id||Y.id||H),String(Y.recommended_engine||Y.engine||`local_mlx`),f)},onUnload:()=>{H&&i.unloadModel(H).then(()=>e.invalidateQueries({queryKey:[`models`]}))}}),(0,B.jsx)(`ol`,{className:`library-setup-track`,"aria-label":o(r,`library.steps.aria`),children:[[o(r,`library.step.environment`),!0,j],[o(r,`library.step.recommend`),!!(X||G.length),O],[o(r,`library.step.install`),!!(Y||Z?.stage===`engine`),L],[o(r,`library.step.download`),!!(Y||Z?.stage===`download`),M],[o(r,`library.step.validate`),!!(Y||Z?.stage===`smoke_test`),N],[o(r,`library.step.ready`),!!(Y||b),A]].map(([e,t,n])=>(0,B.jsxs)(`li`,{className:t?`is-done`:``,children:[(0,B.jsx)(`span`,{className:`library-setup-mark`,"aria-hidden":`true`,children:z.createElement(n,{className:`h-3.5 w-3.5`})}),(0,B.jsx)(`span`,{className:`library-setup-label`,children:String(e)}),(0,B.jsx)(`span`,{className:`library-setup-state`,children:t?o(r,`library.step.done`):o(r,`library.step.pending`)})]},String(e)))}),(0,B.jsxs)(`label`,{className:`flex items-start gap-2 rounded-lg border border-border bg-background/55 p-3 text-sm leading-6`,children:[(0,B.jsx)(`input`,{className:`mt-1`,type:`checkbox`,checked:f,onChange:e=>p(e.target.checked)}),(0,B.jsx)(`span`,{children:o(r,`library.consent`)})]}),Z?(0,B.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm`,children:[(0,B.jsx)(`div`,{className:`font-medium`,children:String(Z.message||o(r,`library.preparing`))}),(0,B.jsx)(`div`,{className:`mt-2 h-2 overflow-hidden rounded-full bg-muted`,children:(0,B.jsx)(`div`,{className:`h-full bg-primary`,style:{width:`${Number(Z.percent||8)}%`}})}),Z.detail?(0,B.jsx)(`div`,{className:`mt-2 text-xs text-muted-foreground`,children:String(Z.detail)}):null]}):null,C?(0,B.jsx)(re,{error:C}):null]})}}),(0,B.jsx)(S,{title:n===`basic`?o(r,`library.panel.recommended.basic`):o(r,`library.panel.recommended.other`),result:a.data,children:e=>(0,B.jsxs)(`div`,{className:`grid gap-2`,children:[(G.length?G:s(e.loaded)).slice(0,n===`basic`?3:14).map((t,a)=>{let c=String(t.id||t.model_id||t.name||a),l=s(e.loaded).includes(c)||e.current===c||t.state===`loaded`,u=String(t.recommended_load_id||c),d=String(t.recommended_engine||t.engine||``),p=q.get(c)||q.get(u)||{},h=J(t.verification),g=J(p.verification),_=J(t.hardware),v=J(p.hardware),y=!!t.download_required,b=_.recommended_ram_gb||v.recommended_ram_gb,x=b?o(r,`library.model.ramRecommended`,{ram:String(b)}):n===`basic`?``:String(_.notes||v.notes||``),S=t.safety_notes||p.safety_notes,C=t.license||p.license,w=t.runtime_compatibility||p.runtime_compatibility||{},E=String(w.status||``)===`fallback_available`,O=t.load_status===`unsupported`||w.supported===!1,k=(!!t.load_available||l)&&!O,A=String(t.load_status||(l?`loaded`:`unavailable`)),j=y?o(r,`library.model.needsDownloadFirst`):Q(t.unavailable_reason||o(r,`library.model.notReady`)),M=String(t.runtime_label||w.preferred_runtime||d||`local_mlx`),N=String(w.action||A.replace(/_/g,` `)),I=ee.has(A)?o(r,`library.model.status.${A}`):o(r,`library.model.status.unknown`),L=O&&n===`basic`?o(r,`library.model.needsAttention`):I,R=k||y,z=t.download_size||t.estimated_size||p.download_size||p.estimated_size||t.size||p.size,V=t.provider||p.provider||t.organization||p.organization;return(0,B.jsxs)(`div`,{className:`grid gap-3 rounded-lg border border-border bg-background/55 p-4 md:grid-cols-[1fr_auto]`,children:[(0,B.jsxs)(`div`,{className:`min-w-0`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(`div`,{className:`text-base font-semibold`,children:String(t.name||c)}),X?.id===c||t.recommended_default?(0,B.jsx)(D,{variant:`success`,children:o(r,`library.model.recommended`)}):null,String(t.modality||p.modality||``).includes(`multi`)||String(t.modality||``)===`multimodal`?(0,B.jsx)(D,{variant:`muted`,children:o(r,`library.model.multimodal`)}):null,h.verified||g.verified?(0,B.jsx)(D,{variant:`success`,title:o(r,`library.model.hfVerified`),children:o(r,`library.model.sourceVerified`)}):null]}),(0,B.jsx)(`div`,{className:`mt-1 text-sm text-muted-foreground`,children:n===`basic`?[Q(t.family||p.family||o(r,`library.model.local`)),/mlx|gguf|ollama/i.test(String(t.size||p.size||``))?``:t.size||p.size].filter(Boolean).map(String).join(` · `):[t.family||p.family||o(r,`library.value.local`),t.size||p.size].filter(Boolean).map(String).join(` · `)}),t.hardware||p.hardware?(0,B.jsx)(`div`,{className:`mt-1 text-[11px] text-muted-foreground/80`,children:String(x)}):null,(0,B.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1 text-[11px] text-muted-foreground`,children:[(0,B.jsx)(D,{variant:`muted`,children:y?o(r,`library.model.downloadSize`,{size:String(z||o(r,`library.model.downloadRequired`))}):o(r,`library.model.noDownload`)}),(0,B.jsx)(D,{variant:`muted`,children:y?o(r,`library.model.internetDuringDownload`):o(r,`library.model.runsLocally`)}),V?(0,B.jsx)(D,{variant:`muted`,children:String(V)}):null]}),O?(0,B.jsxs)(`div`,{className:`mt-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,B.jsx)(`div`,{className:`font-medium`,children:n===`basic`?o(r,`library.model.attentionBeforeLoad`):N}),(0,B.jsx)(`div`,{className:`text-muted-foreground`,children:Q(w.user_message||j,`library.model.unsupportedHere`)})]}):E?(0,B.jsxs)(`div`,{className:`mt-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,B.jsx)(`div`,{className:`font-medium`,children:n===`basic`?o(r,`library.model.compatiblePath`):o(r,`library.model.runtimeFallback`)}),(0,B.jsx)(`div`,{className:`text-muted-foreground`,children:Q(w.user_message||o(r,`library.model.compatibilityFallback`),`library.model.compatibilityFallback`)})]}):!l&&!k?(0,B.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:j}):null,n===`basic`?null:(0,B.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-muted-foreground`,children:[(0,B.jsxs)(`div`,{children:[M,` · `,u,t.load_strategy||p.load_strategy?` · ${String(t.load_strategy||p.load_strategy)}`:``,h.notes?` · ${String(h.notes).slice(0,60)}`:``]}),S||C?(0,B.jsx)(`div`,{children:[C?o(r,`library.model.license`,{license:String(C)}):``,S?String(S):``].filter(Boolean).join(` · `)}):null]}),O||E?(0,B.jsx)(te,{compatibility:w}):null]}),(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 md:justify-end`,children:[(0,B.jsx)(D,{variant:l?`success`:k?`muted`:`warning`,children:l?o(r,`library.model.loaded`):L}),l?(0,B.jsx)(T,{label:o(r,`library.runtime.unload`),action:()=>i.unloadModel(u),invalidate:[`models`]}):(0,B.jsx)(F,{variant:`outline`,disabled:P||O||!R||y&&!f,title:O?o(r,`library.model.status.unsupported`):y&&!f?o(r,`library.btn.needsConsent`):R?void 0:j,onClick:()=>$(u,d||`local_mlx`,f),children:m===u&&P?o(r,`library.btn.preparing`):y?o(r,`library.btn.installLoad`):o(r,`library.btn.validateLoad`)})]})]},c)}),n===`basic`&&G.length>3?(0,B.jsx)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm text-muted-foreground`,children:o(r,`library.model.shortListHint`)}):null]})})]}),(0,B.jsxs)(`div`,{className:`space-y-4`,children:[(0,B.jsx)(S,{title:n===`basic`?o(r,`library.models.embedding.basic`):o(r,`library.models.embedding.advanced`),result:d.data,children:e=>(0,B.jsxs)(`div`,{className:`space-y-3`,children:[(0,B.jsx)(g,{value:V(e.state,r)}),n===`basic`?null:(0,B.jsx)(E,{value:e})]})}),(0,B.jsx)(S,{title:n===`basic`?o(r,`library.models.validation`):o(r,`library.models.validationAdvanced`),result:a.data,children:e=>{let t=s(e.compat_profiles);return t.length?(0,B.jsx)(y,{items:t.map(e=>({...e,name:n===`basic`?e.name||e.display_name||o(r,`library.model.loadedName`):e.name||e.display_name||e.model_id,status:e.quality_status||e.load_status||o(r,`library.model.checked`)})),titleKey:`name`,metaKey:`status`,limit:6}):(0,B.jsx)(w,{title:o(r,`library.model.noneChecked`),detail:o(r,`library.model.noneCheckedHint`)})}})]})]})}function te({compatibility:e}){let n=t(e=>e.mode),r=t(e=>e.language),i=s(e.alternatives);return i.length?(0,B.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:i.slice(0,3).map(e=>(0,B.jsx)(D,{variant:`muted`,children:n===`basic`&&/mlx|gguf|ollama|lm studio/i.test(String(e.name||e.id))?o(r,`library.model.compatibleAlternative`):String(e.name||e.id)},String(e.id||e.name)))}):null}function ne({language:e=`en`,mode:t=`advanced`,profile:r,recommendation:i,current:a,currentId:s,latestProgress:c,lastResult:l,onReload:u,onUnload:d}){let f=String(a?.id||s||``),p=String(a?.name||``)||(f?n(f):``),m=String(a?.engine||a?.recommended_engine||c?.engine||`local_mlx`),h=String(a?.local_path||a?.storage_location||i.cache_path||i.storage_location||`~/.cache/huggingface / ~/.latticeai/models`),g=String(c?.stage||l?.stage||(p?o(e,`library.value.ready`):o(e,`library.value.idle`))),_=t===`basic`;return(0,B.jsxs)(`div`,{className:`space-y-3`,children:[(0,B.jsx)(b,{stats:_?[{label:o(e,`library.runtime.computer`),value:H(r,e)},{label:o(e,`library.runtime.loaded`),value:p||o(e,`library.runtime.noneShort`)}]:[{label:o(e,`library.runtime.computer`),value:H(r,e)},{label:o(e,`library.runtime.engine`),value:m},{label:o(e,`library.runtime.loaded`),value:p||o(e,`library.runtime.noLoaded`)},{label:o(e,`library.runtime.state`),value:g}]}),(0,B.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`font-medium`,children:p?o(e,`library.models.runtime.available`):o(e,`library.models.runtime.none`)}),_?null:(0,B.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:o(e,`library.runtime.cacheStorage`,{path:h})})]}),(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(F,{variant:`outline`,size:`sm`,disabled:!p,onClick:u,children:o(e,`library.runtime.reload`)}),(0,B.jsx)(F,{variant:`outline`,size:`sm`,disabled:!p,onClick:d,children:o(e,`library.runtime.unload`)})]})]}),c?(0,B.jsxs)(`div`,{className:`mt-3`,children:[(0,B.jsxs)(`div`,{className:`flex justify-between text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:String(c.message||o(e,`library.preparing`))}),(0,B.jsxs)(`span`,{children:[Number(c.percent||0),`%`]})]}),(0,B.jsx)(`div`,{className:`mt-1 h-2 overflow-hidden rounded-full bg-muted`,children:(0,B.jsx)(`div`,{className:`h-full bg-primary`,style:{width:`${Number(c.percent||8)}%`}})})]}):null]})]})}function re({error:e}){let n=t(e=>e.language),r=s(e.recovery_guidance);return(0,B.jsxs)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,B.jsx)(`div`,{className:`font-medium`,children:String(e.user_message||o(n,`library.model.setupAttention`))}),r.length?(0,B.jsx)(`ul`,{className:`mt-2 list-inside list-disc text-muted-foreground`,children:r.slice(0,3).map(e=>(0,B.jsx)(`li`,{children:e},e))}):null]})}function J(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Y(){let e=l(),n=t(e=>e.language),r=u({queryKey:[`skills`],queryFn:i.skills}),a=u({queryKey:[`skillsMarketplace`],queryFn:i.skillsMarketplace}),c=d({mutationFn:e=>i.skillInstall(String(e.name||e.id),String(e.plugin||``)),onSuccess:()=>e.invalidateQueries({queryKey:[`skills`]})});return(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,B.jsx)(S,{title:o(n,`library.skills.installed`),result:r.data,children:e=>(0,B.jsx)(`div`,{className:`grid gap-2`,children:s(e.skills).map(e=>(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`font-medium`,children:String(e.name||e.id)}),(0,B.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.plugin||e.description||``)})]}),(0,B.jsx)(T,{label:o(n,e.enabled?`library.skills.disable`:`library.skills.enable`),action:()=>i.skillToggle(String(e.name||e.id),!!e.enabled),invalidate:[`skills`]})]},String(e.name||e.id)))})}),(0,B.jsx)(S,{title:o(n,`library.skills.marketplace`),result:a.data,children:e=>(0,B.jsx)(`div`,{className:`grid gap-2`,children:s(e.skills).slice(0,10).map(e=>(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`font-medium`,children:String(e.name||e.id)}),(0,B.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.description||e.category||``)})]}),(0,B.jsx)(F,{variant:`outline`,disabled:c.isPending,onClick:()=>c.mutate(e),children:o(n,`library.skills.install`)})]},String(e.name||e.id)))})})]})}function X(){let e=t(e=>e.mode),n=t(e=>e.language),[r,a]=z.useState(`github`),s=u({queryKey:[`mcpTools`],queryFn:i.mcpTools}),c=d({mutationFn:()=>i.mcpRecommend(r)});return(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1fr_1fr]`,children:[(0,B.jsx)(S,{title:o(n,e===`basic`?`library.connector.connections`:`library.connector.mcpTools`),result:s.data,children:e=>(0,B.jsx)(y,{items:e.tools||e.installed_mcps,titleKey:`name`,metaKey:`status`})}),(0,B.jsxs)(C,{children:[(0,B.jsxs)(_,{children:[(0,B.jsxs)(f,{className:`flex items-center gap-2`,children:[(0,B.jsx)(R,{className:`h-4 w-4`}),` `,o(n,`library.connector.recommend`)]}),(0,B.jsx)(v,{children:o(n,`library.connector.recommendHint`)})]}),(0,B.jsxs)(x,{className:`space-y-3`,children:[(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(k,{value:r,onChange:e=>a(e.target.value)}),(0,B.jsx)(F,{onClick:()=>c.mutate(),disabled:!r.trim()||c.isPending,children:o(n,`library.connector.recommendAction`)})]}),c.data?(0,B.jsx)(m,{result:c.data,successLabel:o(n,`library.connector.recommendDone`)}):null]})]})]})}function Z(){let e=t(e=>e.language),n=u({queryKey:[`templates`],queryFn:i.templates}),r=u({queryKey:[`plugins`],queryFn:i.pluginsRegistry}),a=u({queryKey:[`pluginsDirectory`],queryFn:i.pluginsDirectory});return(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-3`,children:[(0,B.jsx)(S,{title:o(e,`library.market.templates`),result:n.data,children:e=>(0,B.jsx)(y,{items:e.templates,titleKey:`name`,metaKey:`kind`})}),(0,B.jsx)(S,{title:o(e,`library.market.installedPlugins`),result:r.data,children:e=>(0,B.jsx)(y,{items:e.plugins,titleKey:`name`,metaKey:`status`})}),(0,B.jsx)(S,{title:o(e,`library.market.pluginDirectory`),result:a.data,children:e=>(0,B.jsx)(y,{items:e.plugins,titleKey:`name`,metaKey:`category`})}),(0,B.jsxs)(C,{className:`xl:col-span-3`,children:[(0,B.jsxs)(_,{children:[(0,B.jsxs)(f,{className:`flex items-center gap-2`,children:[(0,B.jsx)(L,{className:`h-4 w-4`}),` `,o(e,`library.market.templateInstall`)]}),(0,B.jsx)(v,{children:o(e,`library.market.templateInstallHint`)})]}),(0,B.jsx)(x,{children:s(n.data?.data?.templates).length?(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:s(n.data?.data?.templates).slice(0,6).map(t=>(0,B.jsx)(T,{label:o(e,`library.market.installTemplate`,{name:String(t.name||t.id)}),action:()=>i.installTemplate(t)},String(t.id||t.name)))}):(0,B.jsx)(y,{items:[]})})]})]})}export{G as LibraryPage};
@@ -1 +0,0 @@
1
- import{S as e,_ as t,b as n,d as r,g as i,h as a,m as o,p as s,t as c,y as l}from"./utils-C3rXoa-U.js";import{i as u,r as d,t as f}from"./LivingBrain-CTokkZn1.js";import{n as p,t as m}from"./input-DW1tXtc0.js";import{t as h}from"./cpu-N8uE9ono.js";import{l as g,v as _}from"./index-yNtiRyw3.js";import"./brain-CdPX7svt.js";import{t as v}from"./button-Ic6omIbs.js";var y=i(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),b=i(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),x=i(`star`,[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]),S=i(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),C=e(n());a({ko:{"flow.analysis.fact.computer":`컴퓨터`,"flow.analysis.fact.memory":`메모리`,"flow.analysis.fact.graphics":`그래픽`,"flow.analysis.fact.support":`로컬 지원`,"flow.analysis.fact.models":`모델`,"flow.analysis.checking":`확인 중`,"flow.analysis.fact.computerDetail":`운영체제와 칩`,"flow.analysis.fact.memoryDetail":`로컬 사고를 위한 여유 공간`,"flow.analysis.fact.graphicsDetail":`로컬 가속 지원`,"flow.analysis.fact.supportDetail":`설치된 모델 도우미`,"flow.analysis.fact.modelsDetail":`설치된 로컬 Brain`,"flow.analysis.apple":`Apple Silicon Mac`,"flow.analysis.detected":`감지됨`,"flow.analysis.localReady":`로컬 가속 준비됨`,"flow.analysis.standardLocal":`표준 로컬 모드`,"flow.analysis.supportReady":`준비됨`,"flow.analysis.supportInstall":`준비 예정`,"flow.analysis.modelsInstalled":`{count}개 이미 설치됨`,"flow.analysis.noModels":`아직 설치된 모델 없음`,"flow.analysis.readyDetail":`로컬 Digital Brain 사용 준비 완료`,"flow.analysis.memoryReadyDetail":`추천 모델에 충분한 컨텍스트`,"flow.analysis.graphicsReadyDetail":`Lattice가 가장 좋은 경로를 선택합니다.`,"flow.analysis.supportReadyDetail":`설치된 모델 도우미가 감지되었습니다.`,"flow.analysis.supportInstallDetail":`Lattice가 필요한 항목을 추가합니다.`,"flow.analysis.modelsReadyDetail":`즉시 로드할 수 있는 모델이 있습니다.`,"flow.analysis.modelsInstallDetail":`Lattice가 첫 설치를 안내합니다.`,"flow.recommend.reason.best":`최적 경험`,"flow.recommend.reason.faster":`빠른 선택`,"flow.recommend.reason.advanced":`고급 선택`,"flow.recommend.reason.default":`추천`,"flow.recommend.sizeReady":`준비됨`,"flow.recommend.fallbackName":`추천 Brain`,"flow.install.stage.download":`모델 파일을 받는 중입니다.`,"flow.install.stage.validate":`Brain이 응답할 수 있는지 확인 중입니다.`,"flow.install.stage.load":`Brain을 불러오는 중입니다.`,"flow.install.stage.error":`확인이 필요한 일이 있습니다.`,"flow.install.step.install":`준비`,"flow.install.step.download":`다운로드`,"flow.install.step.ready":`로컬 확인`,"flow.install.step.validate":`확인`,"flow.install.step.load":`로드`,"flow.analysis.hardware.icon.chip":`🖥️`,"flow.analysis.hardware.icon.ram":`🧠`,"flow.analysis.hardware.icon.gpu":`⚡`,"flow.analysis.hardware.icon.support":`🧩`,"flow.analysis.hardware.icon.models":`📦`,"flow.analysis.hardware.label.chip":`컴퓨터 (운영체제와 칩)`,"flow.analysis.hardware.label.ram":`메모리 (생각할 작업 공간, RAM)`,"flow.analysis.hardware.label.gpu":`그래픽 (계산을 도와주는 GPU)`,"flow.analysis.hardware.label.support":`로컬 지원 (모델 실행 도우미)`,"flow.analysis.hardware.label.models":`모델 (설치된 AI Brain)`,"flow.recommend.timeEstimate":`다운로드 약 {download} · 첫 응답 약 {response}초`,"flow.recommend.timeEstimate.ready":`다운로드 불필요 · 첫 응답 약 {response}초`,"flow.recommend.timeEstimate.unknown":`다운로드 시간 미확인 · 첫 응답 약 {response}초`,"flow.recommend.timeNote":`네트워크 속도에 따라 달라질 수 있어요.`,"flow.recommend.alternatives":`다른 선택지`,"flow.recommend.minutes":`{count}분`,"flow.recommend.comparison.faster":`(더 빠름)`,"flow.recommend.comparison.advanced":`(더 강력함)`,"flow.recommend.choose":`이 모델 선택`,"flow.recommend.primaryNote":`약 {time} 후 사용 준비 완료`,"flow.recommend.primaryNote.ready":`다운로드 없이 바로 사용 준비 완료`,"flow.recommend.primaryNote.unknown":`다운로드 시간 확인 후 사용 준비`,"flow.recommend.nextHint":`선택하면 다운로드와 준비 화면으로 넘어가고, 끝나면 바로 Brain이 열립니다.`,"flow.recommend.nextHint.ready":`선택하면 준비 확인 화면으로 넘어가고, 끝나면 바로 Brain이 열립니다.`,"flow.install.expectedTitle":`예상 진행`,"flow.install.expected":`약 {download} 다운로드 후 약 {response}초 안에 첫 응답`,"flow.install.expected.ready":`다운로드 없이 약 {response}초 안에 첫 응답`,"flow.install.expected.unknown":`다운로드 후 약 {response}초 안에 첫 응답`,"flow.install.timelineStep.download":`모델 다운로드`,"flow.install.timelineStep.ready":`로컬 모델 확인`,"flow.install.timelineStep.validate":`응답 확인`,"flow.install.timelineStep.load":`Brain에 로드`,"flow.install.timelineApprox":`약 {time}`,"flow.install.timelineQuick":`잠깐`,"flow.install.expectedCompletion":`끝나면 바로 Brain이 열립니다.`,"flow.shell":`내 로컬 AI 브레인 만들기`,"flow.wake.aria":`Brain 깨우기`,"flow.wake.title":`내 지식이 살아나는 Brain을 시작하세요.`,"flow.wake.body":`Lattice AI는 이 컴퓨터 안에서 내 대화, 문서, 결정이 오래 남는 작업 기억이 되게 합니다. 모델은 바꿔도 Brain은 계속 내 것입니다.`,"flow.wake.value.aria":`Brain 시작 가치`,"flow.wake.value.local.k":`완전 로컬`,"flow.wake.value.local.v":`지식과 대화는 이 컴퓨터에서 먼저 정리됩니다.`,"flow.wake.value.instant.k":`바로 이해`,"flow.wake.value.instant.v":`복잡한 설정 대신 3단계로 첫 대화를 엽니다.`,"flow.wake.value.brain.k":`지속되는 Brain`,"flow.wake.value.brain.v":`모델을 바꿔도 내 기억과 그래프는 이어집니다.`,"flow.wake.plan.aria":`Brain 시작 단계`,"flow.wake.step.identity":`주인 확인`,"flow.wake.step.check":`컴퓨터 확인`,"flow.wake.step.voice":`목소리 선택`,"flow.wake.primary":`Brain 지금 깨우기`,"flow.wake.existing":`기존 Brain 열기`,"flow.wake.startNote":`평균 2분 안에 첫 대화 시작 · 로컬 우선 · 사용자가 제어`,"flow.login.title":`이 Brain의 주인을 정합니다.`,"flow.login.body":`프로필은 로컬 Brain의 소유권을 묶는 기준입니다. 기존 Brain이 있으면 새로 만들기 전에 먼저 안전하게 확인합니다.`,"flow.name":`이름`,"flow.name.placeholder":`나`,"flow.email":`이메일`,"flow.email.placeholder":`you@local`,"flow.password":`비밀번호`,"flow.password.placeholder":`로컬 Brain 비밀번호`,"flow.login.busy":`Brain 여는 중...`,"flow.login.submit":`내 Brain 시작하기`,"flow.login.note":`이 프로필은 내 AI 브레인의 주인입니다. 기존 Brain과 다른 이메일이면 새로 만들지 않고 먼저 확인합니다.`,"flow.login.passwordLocal":`이 비밀번호는 이 컴퓨터의 Brain 전용입니다. 클라우드로 전송되지 않습니다.`,"flow.login.missing":`이름과 이메일, 비밀번호를 입력하면 기존 Brain을 안전하게 확인합니다.`,"flow.login.otherEmail":`이 컴퓨터의 기존 Brain과 다른 이메일입니다. 오타인지 확인해 주세요.`,"flow.login.wrongPassword":`기존 Brain 이메일은 맞지만 비밀번호가 다릅니다. 비밀번호를 다시 확인해 주세요.`,"flow.login.unavailable":`로컬 프로필을 열 수 없습니다. 이메일과 비밀번호를 확인해 주세요.`,"flow.promise.memory.k":`오래 남는 지식`,"flow.promise.memory.v":`내 일이 장기 기억이 됩니다.`,"flow.promise.model.k":`교체 가능한 모델`,"flow.promise.model.v":`모델은 목소리이고, 자산은 Brain입니다.`,"flow.promise.ownership.k":`사용자 소유`,"flow.promise.ownership.v":`백업, 복원, 이동을 직접 결정합니다.`,"flow.promise.aria":`Lattice AI 제품 약속`,"flow.analysis.title":`이 컴퓨터에 맞는 Brain 경험을 확인합니다.`,"flow.analysis.body":`스펙 점수가 아니라, 이 Mac에서 어떤 로컬 AI 브레인 경험이 편한지 보여드립니다. 확인은 로컬 상태를 읽는 것이고, 클라우드 모델은 선택 사항입니다.`,"flow.analysis.finding":`가장 편한 설정을 찾는 중...`,"flow.analysis.ready":`추천 모델을 바로 시작할 수 있게 준비했습니다.`,"flow.analysis.wait":`잠시만 기다리면 자동으로 정리됩니다.`,"flow.analysis.error":`Lattice가 이 컴퓨터를 끝까지 확인하지 못했습니다. 그래도 안전한 기본값으로 계속할 수 있습니다.`,"flow.analysis.continue":`추천 모델 보기`,"flow.analysis.bestFit":`{model}이 이 컴퓨터에 가장 잘 맞습니다.`,"flow.analysis.privateRecommended":`이 컴퓨터에는 개인 로컬 Brain을 추천합니다.`,"flow.analysis.os.windows":`Windows PC`,"flow.analysis.os.linux":`Linux 컴퓨터`,"flow.recommend.title":`추천대로 시작하세요.`,"flow.recommend.environment.apple":`컴퓨터 준비 완료: 로컬 MLX 지원(Apple Silicon, {ram}GB RAM 감지)`,"flow.recommend.environment.standard":`권장: 가벼운 로컬 모델로 시작하세요({ram}GB RAM 감지)`,"flow.recommend.body":`모델은 Brain의 현재 목소리입니다. 추천, 빠른 선택, 강한 선택만 먼저 보여드려 바로 결정할 수 있게 합니다.`,"flow.recommend.primary":`추천으로 바로 시작`,"flow.recommend.unsupported":`이 컴퓨터에서 추가 확인이 필요합니다`,"flow.recommend.back":`뒤로`,"flow.recommend.skip":`모델 없이 Brain 열기`,"flow.recommend.hint":`잘 모르겠다면 추천대로 시작하면 됩니다.`,"flow.recommend.loading":`이 컴퓨터에 맞는 모델을 확인하는 중...`,"flow.recommend.unavailable.aria":`로컬 모델 준비 상태`,"flow.recommend.unavailable.title":`지금은 이 컴퓨터에서 바로 쓸 로컬 모델을 준비하지 못했습니다.`,"flow.recommend.unavailable.probe":`Lattice가 이 컴퓨터의 로컬 환경을 확인하지 못했습니다. 네트워크와 로컬 서비스 상태를 확인한 뒤 다시 시도해 주세요.`,"flow.recommend.unavailable.empty":`이 컴퓨터에서 바로 실행할 수 있는 추천 모델을 찾지 못했습니다. 다시 확인하거나, 모델 없이 Brain을 먼저 열 수 있습니다.`,"flow.recommend.unavailable.retry":`다시 확인`,"flow.recommend.unavailable.hint":`모델은 나중에 라이브러리에서 언제든 추가할 수 있습니다.`,"flow.recommend.rank.best":`추천`,"flow.recommend.rank.faster":`빠른 선택`,"flow.recommend.rank.advanced":`고급 선택`,"flow.recommend.rank.choice":`선택 {index}`,"flow.install.title":`모델을 설치하고 시작합니다.`,"flow.install.title.ready":`모델을 준비하고 시작합니다.`,"flow.install.body":`이 모델이 Brain의 로컬 목소리가 됩니다. 다운로드는 사용자가 시작할 때만 진행되고, 실행과 기억은 이 컴퓨터에서 유지됩니다.`,"flow.install.body.ready":`이 모델이 Brain의 로컬 목소리가 됩니다. 이미 준비된 모델은 외부 다운로드 없이 응답 확인과 로드만 진행합니다.`,"flow.install.wait":`Brain이 사용할 모델을 기다리고 있습니다.`,"flow.install.prepare":`Brain 준비 중입니다.`,"flow.install.done":`Brain이 준비되었습니다.`,"flow.install.note":`큰 모델은 다운로드에 몇 분 이상 걸릴 수 있습니다. 진행률은 모델 런타임이 알려주는 만큼 표시하고, 멈춘 것처럼 보여도 현재 단계가 유지됩니다.`,"flow.install.note.ready":`로컬 응답 확인은 보통 잠깐이면 끝납니다. 실패하면 다른 모델을 고르거나 나중에 다시 시도할 수 있습니다.`,"flow.install.retry":`다른 모델을 고르거나 다시 시도할 수 있습니다.`,"flow.install.back":`다른 모델 고르기`,"flow.install.start":`다운로드하고 시작하기`,"flow.install.startReady":`준비하고 시작하기`,"flow.install.busy":`모델 준비 중...`,"flow.install.enter":`Brain으로 들어가기`,"flow.install.later":`나중에 하기`,"flow.install.local":`모델 다운로드와 외부 통신은 사용자가 시작할 때만 진행됩니다.`,"flow.install.local.ready":`이 선택은 외부 다운로드 없이 로컬 준비 상태만 확인합니다.`,"flow.consent.title":`다운로드 전 확인`,"flow.consent.readyTitle":`로컬 준비 상태`,"flow.consent.body":`시작하면 아래 모델 파일을 외부 저장소에서 받아 이 컴퓨터에 저장합니다.`,"flow.consent.ready":`이미 준비된 모델입니다. 시작해도 외부 다운로드를 요청하지 않고 로컬에서 응답 가능 여부만 확인합니다.`,"flow.consent.state":`다운로드 필요`,"flow.consent.stateReady":`없음`,"flow.consent.size":`다운로드 크기`,"flow.consent.sizeUnknown":`런타임 확인 후 표시`,"flow.consent.location":`저장 위치`,"flow.consent.external":`외부 접속 대상`,"flow.consent.externalUnknown":`런타임 확인 후 표시`,"flow.consent.externalNone":`선택 전 외부 접속 없음`},en:{"flow.analysis.fact.computer":`Computer`,"flow.analysis.fact.memory":`Memory`,"flow.analysis.fact.graphics":`Graphics`,"flow.analysis.fact.support":`Local Support`,"flow.analysis.fact.models":`Models`,"flow.analysis.checking":`Checking`,"flow.analysis.fact.computerDetail":`Operating system and chip`,"flow.analysis.fact.memoryDetail":`Available room for local thinking`,"flow.analysis.fact.graphicsDetail":`Local acceleration support`,"flow.analysis.fact.supportDetail":`Installed model helpers`,"flow.analysis.fact.modelsDetail":`Installed local Brains`,"flow.analysis.apple":`Apple Silicon Mac`,"flow.analysis.detected":`Detected`,"flow.analysis.localReady":`Local acceleration ready`,"flow.analysis.standardLocal":`Standard local mode`,"flow.analysis.supportReady":`Ready`,"flow.analysis.supportInstall":`Will be prepared`,"flow.analysis.modelsInstalled":`{count} already installed`,"flow.analysis.noModels":`None installed yet`,"flow.analysis.readyDetail":`Ready for local Digital Brain use`,"flow.analysis.memoryReadyDetail":`Enough context for the recommended model`,"flow.analysis.graphicsReadyDetail":`Lattice will choose the best available path`,"flow.analysis.supportReadyDetail":`Installed model helpers detected`,"flow.analysis.supportInstallDetail":`Lattice will add what is needed`,"flow.analysis.modelsReadyDetail":`One can be loaded immediately`,"flow.analysis.modelsInstallDetail":`Lattice will guide the first install`,"flow.recommend.reason.best":`Best Experience`,"flow.recommend.reason.faster":`Faster`,"flow.recommend.reason.advanced":`Advanced`,"flow.recommend.reason.default":`Recommended`,"flow.recommend.sizeReady":`ready`,"flow.recommend.fallbackName":`Recommended Brain`,"flow.install.stage.download":`Getting the model files.`,"flow.install.stage.validate":`Checking that the Brain can answer.`,"flow.install.stage.load":`Loading the Brain.`,"flow.install.stage.error":`Something needs attention.`,"flow.install.step.install":`Install`,"flow.install.step.download":`Download`,"flow.install.step.ready":`Local check`,"flow.install.step.validate":`Validate`,"flow.install.step.load":`Load`,"flow.analysis.hardware.icon.chip":`🖥️`,"flow.analysis.hardware.icon.ram":`🧠`,"flow.analysis.hardware.icon.gpu":`⚡`,"flow.analysis.hardware.icon.support":`🧩`,"flow.analysis.hardware.icon.models":`📦`,"flow.analysis.hardware.label.chip":`Computer (operating system and chip)`,"flow.analysis.hardware.label.ram":`Memory (working space to think, RAM)`,"flow.analysis.hardware.label.gpu":`Graphics (the GPU that speeds up math)`,"flow.analysis.hardware.label.support":`Local support (helpers that run models)`,"flow.analysis.hardware.label.models":`Models (AI Brains already installed)`,"flow.recommend.timeEstimate":`Download about {download} · first reply about {response}s`,"flow.recommend.timeEstimate.ready":`No download needed · first reply about {response}s`,"flow.recommend.timeEstimate.unknown":`Download time unknown · first reply about {response}s`,"flow.recommend.timeNote":`Actual time depends on your network speed.`,"flow.recommend.alternatives":`Other options`,"flow.recommend.minutes":`{count} min`,"flow.recommend.comparison.faster":`(faster)`,"flow.recommend.comparison.advanced":`(more capable)`,"flow.recommend.choose":`Choose this model`,"flow.recommend.primaryNote":`Ready to use in about {time}`,"flow.recommend.primaryNote.ready":`Ready with no download`,"flow.recommend.primaryNote.unknown":`Ready after download time is confirmed`,"flow.recommend.nextHint":`Choosing takes you to download and setup, then your Brain opens automatically.`,"flow.recommend.nextHint.ready":`Choosing takes you to a readiness check, then your Brain opens automatically.`,"flow.install.expectedTitle":`What to expect`,"flow.install.expected":`About {download} to download, then a first reply within about {response}s`,"flow.install.expected.ready":`No download — first reply within about {response}s`,"flow.install.expected.unknown":`After download, a first reply within about {response}s`,"flow.install.timelineStep.download":`Download model`,"flow.install.timelineStep.ready":`Check local model`,"flow.install.timelineStep.validate":`Check the reply`,"flow.install.timelineStep.load":`Load into Brain`,"flow.install.timelineApprox":`about {time}`,"flow.install.timelineQuick":`moment`,"flow.install.expectedCompletion":`When it finishes, your Brain opens right away.`,"flow.shell":`Create your local AI Brain`,"flow.wake.aria":`Wake your Brain`,"flow.wake.title":`Start the Brain where your knowledge comes alive.`,"flow.wake.body":`Lattice AI turns your conversations, documents, and decisions into durable working memory on this computer. Models can change while your Brain remains yours.`,"flow.wake.value.aria":`Brain startup value`,"flow.wake.value.local.k":`Fully local`,"flow.wake.value.local.v":`Knowledge and conversations are organized on this computer first.`,"flow.wake.value.instant.k":`Clear start`,"flow.wake.value.instant.v":`Open the first conversation in three guided steps.`,"flow.wake.value.brain.k":`Durable Brain`,"flow.wake.value.brain.v":`Your memories and graph continue even when models change.`,"flow.wake.plan.aria":`Brain start steps`,"flow.wake.step.identity":`Confirm owner`,"flow.wake.step.check":`Check computer`,"flow.wake.step.voice":`Choose voice`,"flow.wake.primary":`Wake Brain`,"flow.wake.existing":`Open existing Brain`,"flow.wake.startNote":`First conversation in about 2 minutes · local-first · user controlled`,"flow.login.title":`Choose the owner of this Brain.`,"flow.login.body":`Your profile anchors ownership of the local Brain. If a Brain already exists here, Lattice checks safely before creating anything new.`,"flow.name":`Name`,"flow.name.placeholder":`You`,"flow.email":`Email`,"flow.email.placeholder":`you@local`,"flow.password":`Password`,"flow.password.placeholder":`Local Brain password`,"flow.login.busy":`Opening Brain...`,"flow.login.submit":`Start my Brain`,"flow.login.note":`This profile owns your AI Brain. If the email differs from this computer's Brain, Lattice checks before creating anything new.`,"flow.login.passwordLocal":`This password is only for the Brain on this computer. It is not sent to the cloud.`,"flow.login.missing":`Enter your name, email, and password so Lattice can safely check your Brain.`,"flow.login.otherEmail":`This email differs from the Brain on this computer. Please check for a typo.`,"flow.login.wrongPassword":`The email matches this Brain, but the password is different. Please check it again.`,"flow.login.unavailable":`Could not open the local profile. Check your email and password.`,"flow.promise.memory.k":`Durable knowledge`,"flow.promise.memory.v":`Your work becomes long-term memory.`,"flow.promise.model.k":`Replaceable models`,"flow.promise.model.v":`The model is the voice; the Brain is the asset.`,"flow.promise.ownership.k":`User owned`,"flow.promise.ownership.v":`You decide when to back up, restore, or move it.`,"flow.promise.aria":`Lattice AI product promise`,"flow.analysis.title":`Checking the Brain experience for this computer.`,"flow.analysis.body":`This is not a spec score. Lattice reads local capability and explains which local AI Brain experience will feel comfortable on this Mac. Cloud models remain optional.`,"flow.analysis.finding":`Finding the easiest setup...`,"flow.analysis.ready":`Your recommended model is ready to start.`,"flow.analysis.wait":`This will be summarized automatically in a moment.`,"flow.analysis.error":`Lattice could not finish checking this computer. You can still continue with a safe default.`,"flow.analysis.continue":`View recommended models`,"flow.analysis.bestFit":`{model} looks like the best fit.`,"flow.analysis.privateRecommended":`A private local Brain is recommended for this computer.`,"flow.analysis.os.windows":`Windows PC`,"flow.analysis.os.linux":`Linux computer`,"flow.recommend.title":`Start with the recommendation.`,"flow.recommend.environment.apple":`Computer ready: local MLX supported (Apple Silicon, {ram}GB RAM detected)`,"flow.recommend.environment.standard":`Recommended: start with a lighter local model ({ram}GB RAM detected)`,"flow.recommend.body":`The model is your Brain's current voice. Lattice shows the recommendation, a faster choice, and a stronger choice first so you can decide quickly.`,"flow.recommend.primary":`Start with recommendation`,"flow.recommend.unsupported":`This computer needs one more check`,"flow.recommend.back":`Back`,"flow.recommend.skip":`Open Brain without a model`,"flow.recommend.hint":`If unsure, start with the recommendation.`,"flow.recommend.loading":`Checking which model fits this computer...`,"flow.recommend.unavailable.aria":`Local model readiness`,"flow.recommend.unavailable.title":`A local model isn't ready to run on this computer yet.`,"flow.recommend.unavailable.probe":`Lattice couldn't check this computer's local environment. Check your network and local services, then try again.`,"flow.recommend.unavailable.empty":`No recommended model can run on this computer right now. Try checking again, or open your Brain without a model first.`,"flow.recommend.unavailable.retry":`Check again`,"flow.recommend.unavailable.hint":`You can add a model anytime later from the library.`,"flow.recommend.rank.best":`Best Experience`,"flow.recommend.rank.faster":`Faster`,"flow.recommend.rank.advanced":`Advanced`,"flow.recommend.rank.choice":`Choice {index}`,"flow.install.title":`Install the model and start.`,"flow.install.title.ready":`Prepare the model and start.`,"flow.install.body":`This model becomes your Brain's local voice. Download starts only when you choose it; execution and memory stay on this computer.`,"flow.install.body.ready":`This model becomes your Brain's local voice. Because it is already ready, Lattice only checks the reply path and loads it locally.`,"flow.install.wait":`Waiting for the model your Brain will use.`,"flow.install.prepare":`Preparing your Brain.`,"flow.install.done":`Your Brain is ready.`,"flow.install.note":`Large models can take several minutes to download. Progress is shown when the model runtime reports it; a steady stage still means work is continuing.`,"flow.install.note.ready":`The local reply check usually takes a moment. If it fails, choose another model or try again later.`,"flow.install.retry":`Choose another model or try again.`,"flow.install.back":`Choose another model`,"flow.install.start":`Download and start`,"flow.install.startReady":`Check and start`,"flow.install.busy":`Preparing model...`,"flow.install.enter":`Enter Brain`,"flow.install.later":`Do later`,"flow.install.local":`Downloads and external communication start only when you choose them.`,"flow.install.local.ready":`This choice checks local readiness without starting an external download.`,"flow.consent.title":`Before downloading`,"flow.consent.readyTitle":`Local readiness`,"flow.consent.body":`Starting will fetch these model files from an external repository and store them on this computer.`,"flow.consent.ready":`This model is already ready. Starting checks whether it can answer locally without requesting an external download.`,"flow.consent.state":`Download needed`,"flow.consent.stateReady":`No`,"flow.consent.size":`Download size`,"flow.consent.sizeUnknown":`Reported by runtime`,"flow.consent.location":`Storage location`,"flow.consent.external":`External target`,"flow.consent.externalUnknown":`Reported by runtime`,"flow.consent.externalNone":`No external connection before selection`}});function ee(e){let t=j(e?.models),n=[...c(t.recommended),...c(t.catalog)],r=j(e?.recommendations?.recommendations),i=c(r.models),a=j(r.top_pick),o=new Map;for(let e of[...i,...n]){let t=String(e.id||e.model_id||e.recommended_load_id||``);t&&o.set(t,{...o.get(t)||{},...e})}a.id&&!o.has(String(a.id))&&o.set(String(a.id),a);let s=Array.from(o.values()).map(E).filter(e=>e.id),l=s.filter(e=>e.supported),u=l.length?l:s,d=(e=>u.find(t=>t.id===String(e)))(a.id)||(e=>u.find(t=>e.test(`${t.name} ${t.id}`)))(/gemma.*12|12b/i)||u[0],f=u.find(e=>e.id!==d?.id&&/qwen|8b|7b/i.test(`${e.name} ${e.id}`))||u.find(e=>e.id!==d?.id),p=u.find(e=>e.id!==d?.id&&e.id!==f?.id&&/26b|32b|70b|advanced/i.test(`${e.name} ${e.id}`))||u.find(e=>e.id!==d?.id&&e.id!==f?.id);return[d?{...d,role:`best`,reason:d.reason||`best`}:null,f?{...f,role:`faster`,reason:f.reason||`faster`}:null,p?{...p,role:`advanced`,reason:p.reason||`advanced`}:null].filter(Boolean)}function w(e){let{analysis:t,endpoints:n}=e;if(!n)return{status:`loading`,recommendations:[],reason:null,failedEndpoints:[]};let r=Object.keys(n).filter(e=>!n[e]);if(!(n.recommendations||n.models))return{status:`unavailable`,recommendations:[],reason:`probe_failed`,failedEndpoints:r};let i=ee(t).filter(e=>e.supported);return i.length?{status:`ready`,recommendations:i,reason:null,failedEndpoints:r}:{status:`unavailable`,recommendations:[],reason:`no_supported_model`,failedEndpoints:r}}function T(){return{id:`mlx-community/Qwen3-VL-8B-Instruct-4bit`,loadId:`mlx-community/Qwen3-VL-8B-Instruct-4bit`,engine:`local_mlx`,name:`Qwen3-VL 8B`,shortName:`Qwen 3`,family:`Qwen 3`,size:``,role:`best`,reason:`best`,supported:!0,downloadRequired:!1,downloadSize:``,storageLocation:`~/.latticeai/models`,externalHost:``,estimatedDownloadMinutes:0,estimatedFirstResponseSeconds:5,parameterBillions:8}}function E(e){let t=j(e.runtime_compatibility),n=String(e.id||e.model_id||e.recommended_load_id||``),r=String(e.recommended_load_id||e.load_id||n),i=String(e.display_name||e.name||n||`recommended_brain`),a=e.load_status!==`unsupported`&&e.load_status!==`runtime_update_needed`&&e.status!==`not_recommended`&&t.supported!==!1,o=!!e.download_required,s=o?String(e.download_size||e.size||``):``,c=D(`${i} ${n}`);return{id:n,loadId:r,engine:String(e.recommended_engine||e.engine||`local_mlx`),name:i,shortName:A(i||n),family:A(String(e.family||i||`local_brain`)),size:String(e.size||``),role:`best`,reason:String(e.reason||``),supported:a,downloadRequired:o,downloadSize:s,storageLocation:String(e.storage_location||e.local_path||`~/.latticeai/models`),externalHost:o?k(e):``,estimatedDownloadMinutes:o?ne(s):0,estimatedFirstResponseSeconds:O(c),parameterBillions:c}}function te(e){let t=String(e||``).match(/([\d.]+)\s*(t|g|m)?b?/i);if(!t)return null;let n=Number(t[1]);if(!Number.isFinite(n)||n<=0)return null;let r=(t[2]||`g`).toLowerCase();return r===`t`?n*1024*1024:r===`m`?n:n*1024}function ne(e){let t=te(e);if(t===null)return null;let n=t/(15/8)/60;return Math.max(1,Math.round(n))}function D(e){let t=String(e||``).match(/(\d{1,3}(?:\.\d)?)\s*b\b/i);if(!t)return null;let n=Number(t[1]);return Number.isFinite(n)&&n>0?n:null}function O(e){return e===null?8:e<=9?5:e<=16?10:e<=40?18:30}function k(e){let t=String(e.source_url||e.download_url||e.repository||e.provider||e.id||``);return t?/huggingface|hf\\.co|mlx-community/i.test(t)?`huggingface`:/ollama/i.test(t)?`ollama`:t.replace(/^https?:\/\//,``).split(`/`)[0]||t:``}function A(e){return String(e||`recommended_brain`).replace(/^mlx-community\//i,``).replace(/[-_]?Instruct/gi,``).replace(/[-_]?4bit/gi,``).replace(/Qwen3[-_ ]?VL/gi,`Qwen 3`).replace(/Qwen3/gi,`Qwen 3`).replace(/Gemma[-_ ]?4/gi,`Gemma 4`).replace(/A4B/gi,``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim()}function j(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}var M=l();function re({model:e}){let n=t(e=>e.language),r=e.downloadRequired?[{label:o(n,`flow.consent.size`),value:e.downloadSize||o(n,`flow.consent.sizeUnknown`)},{label:o(n,`flow.consent.location`),value:e.storageLocation},{label:o(n,`flow.consent.external`),value:e.externalHost||o(n,`flow.consent.externalUnknown`)}]:[{label:o(n,`flow.consent.state`),value:o(n,`flow.consent.stateReady`)},{label:o(n,`flow.consent.location`),value:e.storageLocation},{label:o(n,`flow.consent.external`),value:o(n,`flow.consent.externalNone`)}],i=e.downloadRequired?`flow.consent.title`:`flow.consent.readyTitle`;return(0,M.jsxs)(`section`,{className:`ritual-consent-panel`,"aria-label":o(n,i),children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`strong`,{children:o(n,i)}),(0,M.jsx)(`p`,{children:e.downloadRequired?o(n,`flow.consent.body`):o(n,`flow.consent.ready`)})]}),(0,M.jsx)(`dl`,{children:r.map(e=>(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`dt`,{children:e.label}),(0,M.jsx)(`dd`,{children:e.value})]},e.label))})]})}function ie({model:e,onBack:n,onComplete:i,onLater:a}){let s=t(e=>e.language),[c,l]=C.useState(!1),[u,d]=C.useState(`idle`),[m,h]=C.useState(0),[g,_]=C.useState(o(s,`flow.install.wait`)),[y,b]=C.useState(null);async function x(){l(!0),b(null),d(`install`),h(8),_(o(s,`flow.install.prepare`));let t=await r.streamModelPrepare({model:e.loadId,engine:e.engine||`local_mlx`,allow_download:e.downloadRequired},{onProgress:e=>{let t=F(String(e.stage||``));d(t),h(Number(e.percent||I(t))),_(L(e,t,s))},onDone:()=>{d(`done`),h(100),_(o(s,`flow.install.done`))},onError:e=>{d(`error`),b(V(e))}});l(!1),t.ok?(d(`done`),h(100),_(o(s,`flow.install.done`)),window.setTimeout(i,700)):(d(`error`),b(V(t.data)))}let S=u===`download`?`thinking`:u===`validate`?`recalling`:u===`load`?`synthesizing`:u===`done`?`idle`:`listening`;return(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`ritual-title`,children:o(s,e.downloadRequired?`flow.install.title`:`flow.install.title.ready`)}),(0,M.jsxs)(`div`,{className:`ritual-subtitle`,children:[(0,M.jsx)(`strong`,{children:e.shortName}),` — `,e.reason,`.`,(0,M.jsx)(`br`,{}),o(s,e.downloadRequired?`flow.install.body`:`flow.install.body.ready`)]}),(0,M.jsxs)(`section`,{className:`ritual-card ritual-expected-card`,"aria-label":o(s,`flow.install.expectedTitle`),children:[(0,M.jsx)(`div`,{className:`ritual-fact-label`,children:o(s,`flow.install.expectedTitle`)}),(0,M.jsx)(`div`,{className:`ritual-time-estimate ritual-expected-line`,children:N(e,s)}),(0,M.jsx)(`ol`,{className:`ritual-timeline`,children:P(e,s).map(e=>(0,M.jsxs)(`li`,{className:`ritual-timeline-step`,children:[(0,M.jsx)(`span`,{className:`ritual-timeline-name`,children:e.name}),(0,M.jsx)(`span`,{className:`ritual-timeline-time`,children:e.time})]},e.key))}),(0,M.jsx)(`div`,{className:`ritual-muted-hint`,children:o(s,`flow.install.expectedCompletion`)})]}),(0,M.jsx)(`div`,{className:`ritual-install-brain`,children:(0,M.jsx)(f,{state:S,intensity:u===`download`||u===`load`?.96:.82,size:`normal`})}),(0,M.jsx)(re,{model:e}),(0,M.jsxs)(`div`,{className:`ritual-progress`,children:[(0,M.jsx)(`div`,{className:`ritual-stage-list`,children:[`install`,`download`,`validate`,`load`].map(t=>(0,M.jsxs)(`div`,{className:`ritual-stage ${B(u,t)}`,children:[(0,M.jsx)(p,{className:`ritual-stage-icon`}),(0,M.jsx)(`span`,{children:R(t,s,e)})]},t))}),(0,M.jsx)(`div`,{className:`ritual-bar`,children:(0,M.jsx)(`span`,{className:`ritual-bar-fill ${z(m)}`})})]}),(0,M.jsx)(`div`,{className:`ritual-status`,children:g}),(0,M.jsx)(`div`,{className:`ritual-card ritual-status-card`,children:o(s,e.downloadRequired?`flow.install.note`:`flow.install.note.ready`)}),y&&(0,M.jsxs)(`div`,{className:`ritual-card ritual-error-card ritual-install-error`,role:`alert`,children:[y,(0,M.jsx)(`div`,{className:`ritual-error-detail`,children:o(s,`flow.install.retry`)})]}),(0,M.jsxs)(`div`,{className:`ritual-button-row`,children:[(0,M.jsx)(v,{variant:`ghost`,onClick:n,disabled:c,children:o(s,`flow.install.back`)}),(0,M.jsx)(v,{variant:`outline`,onClick:a,disabled:c,children:o(s,`flow.install.later`)}),u===`done`?(0,M.jsx)(v,{onClick:i,children:o(s,`flow.install.enter`)}):(0,M.jsx)(v,{onClick:x,disabled:c||!e.supported,children:c?o(s,`flow.install.busy`):o(s,e.downloadRequired?`flow.install.start`:`flow.install.startReady`)})]}),(0,M.jsx)(`div`,{className:`ritual-local-note`,children:o(s,e.downloadRequired?`flow.install.local`:`flow.install.local.ready`)})]})}function N(e,t){let n=e.estimatedFirstResponseSeconds;return!e.downloadRequired||e.estimatedDownloadMinutes===0?o(t,`flow.install.expected.ready`,{response:n}):e.estimatedDownloadMinutes===null?o(t,`flow.install.expected.unknown`,{response:n}):o(t,`flow.install.expected`,{download:o(t,`flow.recommend.minutes`,{count:e.estimatedDownloadMinutes}),response:n})}function P(e,t){let n=e.downloadRequired&&e.estimatedDownloadMinutes?o(t,`flow.install.timelineApprox`,{time:o(t,`flow.recommend.minutes`,{count:e.estimatedDownloadMinutes})}):o(t,`flow.install.timelineQuick`);return[{key:`download`,name:o(t,e.downloadRequired?`flow.install.timelineStep.download`:`flow.install.timelineStep.ready`),time:n},{key:`validate`,name:o(t,`flow.install.timelineStep.validate`),time:o(t,`flow.install.timelineQuick`)},{key:`load`,name:o(t,`flow.install.timelineStep.load`),time:o(t,`flow.install.timelineApprox`,{time:`${e.estimatedFirstResponseSeconds}s`})}]}function F(e){return/download|pull|weights/i.test(e)?`download`:/smoke|validate|verify|test/i.test(e)?`validate`:/load|ready/i.test(e)?`load`:/done|complete/i.test(e)?`done`:`install`}function I(e){return e===`install`?20:e===`download`?55:e===`validate`?82:e===`load`?94:e===`done`?100:8}function L(e,t,n){let r={install:o(n,`flow.install.prepare`),download:o(n,`flow.install.stage.download`),validate:o(n,`flow.install.stage.validate`),load:o(n,`flow.install.stage.load`),done:o(n,`flow.install.done`),idle:o(n,`flow.install.wait`),error:o(n,`flow.install.stage.error`)}[t];return H(String(e.user_message||e.message||r))}function R(e,t,n){return e===`download`&&!n.downloadRequired?o(t,`flow.install.step.ready`):o(t,`flow.install.step.${e}`)}function z(e){return`progress-${Math.max(0,Math.min(100,Math.round(e/10)*10))}`}function B(e,t){let n=[`idle`,`install`,`download`,`validate`,`load`,`done`],r=n.indexOf(e),i=n.indexOf(t);return e===`error`?`is-error`:e===`done`||r>i?`is-done`:e===t?`is-active`:``}function V(e){let t=j(e),n=c(t.recovery_guidance).map(H).filter(Boolean);return[H(String(t.user_message||t.reason||t.error||`The selected model could not be loaded.`)),...n.slice(0,2)].join(` `)}function H(e){return String(e||``).replace(/gemma4_unified/gi,`this model format`).replace(/mlx[-_ ]?vlm|mlx[-_ ]?lm|local_mlx|\bmlx\b|\bgguf\b|\bollama\b|huggingface|hugging face/gi,`local model support`).replace(/runtime/gi,`model support`).replace(/No module named ['\"][^'\"]+['\"]/gi,`A local support component is missing`).replace(/\s+/g,` `).trim()}function U(){let e=t(e=>e.language),n=t(e=>e.setLanguage);return(0,M.jsx)(`div`,{className:`language-switcher ritual-language`,"aria-label":o(e,`language.label`),children:[`ko`,`en`].map(t=>(0,M.jsx)(`button`,{type:`button`,className:e===t?`is-active`:``,onClick:()=>n(t),"aria-pressed":e===t,children:s[t]},t))})}var W=`lattice.productFlow.user`;function G(){try{let e=localStorage.getItem(W);return e?JSON.parse(e):null}catch{}return null}function K({onSuccess:e}){let n=t(e=>e.language),[i,a]=C.useState(()=>G()?.email||`you@local`),[s,c]=C.useState(``),[l,u]=C.useState(()=>G()?.name||`You`),[d,f]=C.useState(!1),[p,h]=C.useState(null);async function g(t){t.preventDefault();let a=i.trim(),c=s.trim(),u=l.trim()||a.split(`@`)[0]||`You`;if(!a||!c){h(o(n,`flow.login.missing`));return}f(!0),h(null);let d=G(),p=await r.login(a,c);if(!p.ok){if((await r.profile()).ok&&(!d?.email||d.email===a)){try{localStorage.setItem(W,JSON.stringify({email:a,name:u}))}catch{}f(!1),e();return}if(d?.email&&d.email!==a){f(!1),h(o(n,`flow.login.otherEmail`));return}if(d?.email===a){f(!1),h(o(n,`flow.login.wrongPassword`));return}(await r.register({email:a,password:c,name:u,nickname:u})).ok&&(p=await r.login(a,c))}if(!p.ok){f(!1),h(o(n,`flow.login.unavailable`));return}try{localStorage.setItem(W,JSON.stringify({email:a,name:u}))}catch{}f(!1),e()}return(0,M.jsxs)(`div`,{className:`ritual-login`,children:[(0,M.jsxs)(`header`,{children:[(0,M.jsx)(`h1`,{id:`login-title`,className:`ritual-title`,children:o(n,`flow.login.title`)}),(0,M.jsx)(`p`,{className:`ritual-subtitle`,children:o(n,`flow.login.body`)})]}),(0,M.jsx)(`div`,{className:`ritual-login-card`,children:(0,M.jsxs)(`form`,{onSubmit:g,className:`ritual-form`,"aria-labelledby":`login-title`,children:[(0,M.jsxs)(`div`,{className:`ritual-field-stack`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`label`,{htmlFor:`login-name`,className:`ritual-field-label`,children:o(n,`flow.name`)}),(0,M.jsx)(m,{id:`login-name`,value:l,onChange:e=>u(e.target.value),placeholder:o(n,`flow.name.placeholder`),autoComplete:`name`})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`label`,{htmlFor:`login-email`,className:`ritual-field-label`,children:o(n,`flow.email`)}),(0,M.jsx)(m,{id:`login-email`,value:i,onChange:e=>a(e.target.value),type:`email`,placeholder:o(n,`flow.email.placeholder`),autoComplete:`email`,required:!0,"aria-invalid":p?!0:void 0,"aria-describedby":p?`login-error`:void 0})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`label`,{htmlFor:`login-password`,className:`ritual-field-label`,children:o(n,`flow.password`)}),(0,M.jsx)(m,{id:`login-password`,value:s,onChange:e=>c(e.target.value),type:`password`,placeholder:o(n,`flow.password.placeholder`),autoComplete:`current-password`,required:!0,"aria-invalid":p?!0:void 0,"aria-describedby":p?`login-error`:void 0})]})]}),p&&(0,M.jsx)(`div`,{id:`login-error`,className:`ritual-error`,role:`alert`,children:p}),(0,M.jsx)(v,{type:`submit`,disabled:d||!i.trim()||!s.trim(),className:`ritual-full-button`,children:d?o(n,`flow.login.busy`):o(n,`flow.login.submit`)}),(0,M.jsxs)(`div`,{className:`ritual-login-footnotes`,children:[(0,M.jsx)(`div`,{className:`ritual-muted-hint`,children:o(n,`flow.login.passwordLocal`)}),(0,M.jsx)(`div`,{className:`ritual-note`,children:o(n,`flow.login.note`)})]})]})}),(0,M.jsx)(q,{})]})}function q(){let e=t(e=>e.language);return(0,M.jsxs)(`aside`,{className:`ritual-promise is-quiet`,"aria-label":o(e,`flow.promise.aria`),children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{children:o(e,`flow.promise.memory.k`)}),(0,M.jsx)(`strong`,{children:o(e,`flow.promise.memory.v`)})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{children:o(e,`flow.promise.model.k`)}),(0,M.jsx)(`strong`,{children:o(e,`flow.promise.model.v`)})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{children:o(e,`flow.promise.ownership.k`)}),(0,M.jsx)(`strong`,{children:o(e,`flow.promise.ownership.v`)})]})]})}function J({status:e,reason:n,recommendations:r,analysis:i,onBack:a,onRetry:s,onSkipModel:c,onSelect:l}){let f=t(e=>e.language);if(e===`loading`)return(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`ritual-title`,children:o(f,`flow.recommend.title`)}),(0,M.jsx)(`div`,{className:`ritual-subtitle`,children:o(f,`flow.recommend.body`)}),(0,M.jsxs)(`div`,{className:`ritual-scan-banner is-loading`,role:`status`,children:[(0,M.jsx)(`span`,{className:`ritual-scan-dot pulsing`}),(0,M.jsx)(`span`,{children:o(f,`flow.recommend.loading`)})]}),(0,M.jsxs)(`div`,{className:`ritual-action-row`,children:[(0,M.jsx)(v,{variant:`ghost`,onClick:a,children:o(f,`flow.recommend.back`)}),(0,M.jsx)(v,{variant:`outline`,onClick:c,children:o(f,`flow.recommend.skip`)})]})]});if(e===`unavailable`){let e=n===`no_supported_model`?`flow.recommend.unavailable.empty`:`flow.recommend.unavailable.probe`;return(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`ritual-title`,children:o(f,`flow.recommend.title`)}),(0,M.jsx)(`section`,{className:`ritual-card ritual-error-card ritual-unavailable-card`,role:`alert`,"aria-label":o(f,`flow.recommend.unavailable.aria`),children:(0,M.jsxs)(`div`,{className:`ritual-inline-row`,children:[(0,M.jsx)(g,{className:`ritual-core-icon`,"aria-hidden":`true`}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`ritual-strong-text`,children:o(f,`flow.recommend.unavailable.title`)}),(0,M.jsx)(`div`,{className:`ritual-muted-text`,children:o(f,e)})]})]})}),(0,M.jsxs)(`div`,{className:`ritual-button-row ritual-button-row-primary`,children:[(0,M.jsxs)(`button`,{type:`button`,className:`ritual-full-button ritual-full-button-primary`,onClick:s,children:[(0,M.jsx)(d,{size:16}),` `,o(f,`flow.recommend.unavailable.retry`)]}),(0,M.jsx)(`button`,{type:`button`,className:`ritual-secondary-button`,onClick:c,children:o(f,`flow.recommend.skip`)})]}),(0,M.jsxs)(`div`,{className:`ritual-action-row`,children:[(0,M.jsx)(v,{variant:`ghost`,onClick:a,children:o(f,`flow.recommend.back`)}),(0,M.jsx)(`div`,{className:`ritual-muted-hint`,children:o(f,`flow.recommend.unavailable.hint`)})]})]})}let p=r;function m(e,t){if(!e)return(0,M.jsxs)(`div`,{className:`ritual-scan-banner is-loading`,children:[(0,M.jsx)(`span`,{className:`ritual-scan-dot pulsing`}),(0,M.jsx)(`span`,{children:o(t,`flow.analysis.checking`)})]});let n=j(e.recommendations?.recommendations),r=j(e.setup?.environment),i=j(e.recommendations?.profile),a={...r,...i},s=Number(n.ram_gb||Number(a.ram_mb||0)/1024||0);return n.apple_silicon||String(a.arch||``).includes(`arm`)?(0,M.jsxs)(`div`,{className:`ritual-scan-banner is-success`,children:[(0,M.jsx)(`span`,{className:`ritual-scan-dot is-success`}),(0,M.jsx)(`span`,{children:o(t,`flow.recommend.environment.apple`,{ram:Math.round(s)})})]}):(0,M.jsxs)(`div`,{className:`ritual-scan-banner is-warning`,children:[(0,M.jsx)(`span`,{className:`ritual-scan-dot is-warning`}),(0,M.jsx)(`span`,{children:o(t,`flow.recommend.environment.standard`,{ram:Math.round(s)})})]})}return(0,M.jsxs)(`div`,{className:`ritual-recommend`,children:[(0,M.jsxs)(`header`,{children:[(0,M.jsx)(`h1`,{className:`ritual-title`,children:o(f,`flow.recommend.title`)}),(0,M.jsx)(`p`,{className:`ritual-subtitle`,children:o(f,`flow.recommend.body`)})]}),m(i,f),p[0]?(0,M.jsxs)(`section`,{className:`ritual-primary-hero-card`,"aria-labelledby":`recommend-primary-name`,children:[(0,M.jsxs)(`div`,{className:`ritual-hero-topline`,children:[(0,M.jsxs)(`span`,{className:`ritual-hero-rank`,children:[(0,M.jsx)(x,{size:16,"aria-hidden":`true`}),Q(p[0].role,0,f)]}),(0,M.jsx)(`span`,{className:`ritual-hero-size`,children:p[0].size||o(f,`flow.recommend.sizeReady`)})]}),(0,M.jsx)(`h2`,{id:`recommend-primary-name`,className:`ritual-hero-name`,children:p[0].shortName}),(0,M.jsxs)(`p`,{className:`ritual-hero-reason`,children:[p[0].reason,Z(p[0].role,f)?(0,M.jsxs)(`span`,{className:`ritual-model-comparison`,children:[` `,Z(p[0].role,f)]}):null]}),(0,M.jsxs)(`p`,{className:`ritual-hero-time`,children:[(0,M.jsx)(`span`,{className:`ritual-time-estimate`,children:X(p[0],f)}),(0,M.jsx)(`span`,{className:`ritual-time-note`,children:o(f,`flow.recommend.timeNote`)})]}),p[0].supported?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(v,{onClick:()=>l(p[0]),className:`ritual-primary-model-button`,children:[o(f,`flow.recommend.primary`),` `,(0,M.jsx)(u,{size:18,"aria-hidden":`true`})]}),(0,M.jsxs)(`p`,{className:`ritual-hero-next`,children:[ae(p[0],f),` · `,o(f,p[0].downloadRequired?`flow.recommend.nextHint`:`flow.recommend.nextHint.ready`)]})]}):(0,M.jsx)(`p`,{className:`ritual-model-warning`,children:o(f,`flow.recommend.unsupported`)})]}):null,p.length>1?(0,M.jsxs)(`section`,{className:`ritual-alternatives`,"aria-labelledby":`recommend-alternatives`,children:[(0,M.jsx)(`h2`,{id:`recommend-alternatives`,className:`ritual-alternatives-title`,children:o(f,`flow.recommend.alternatives`)}),(0,M.jsx)(`div`,{className:`ritual-alt-grid`,children:p.slice(1,3).map((e,t)=>{let n=e.role===`faster`?S:y;return(0,M.jsxs)(`button`,{type:`button`,className:`ritual-model-card is-compact`,onClick:()=>e.supported&&l(e),disabled:!e.supported,children:[(0,M.jsxs)(`span`,{className:`ritual-model-heading`,children:[(0,M.jsx)(n,{size:15,"aria-hidden":`true`}),(0,M.jsx)(`span`,{className:`role`,children:Q(e.role,t+1,f)}),(0,M.jsx)(`span`,{className:`ritual-alt-size`,children:e.size||o(f,`flow.recommend.sizeReady`)})]}),(0,M.jsx)(`span`,{className:`name`,children:e.shortName}),(0,M.jsx)(`span`,{className:`reason`,children:e.reason}),(0,M.jsxs)(`span`,{className:`ritual-alt-footer`,children:[(0,M.jsx)(`span`,{className:`ritual-time-estimate`,children:X(e,f)}),e.supported?(0,M.jsxs)(`span`,{className:`ritual-model-choose`,children:[o(f,`flow.recommend.choose`),` `,(0,M.jsx)(u,{size:14,"aria-hidden":`true`})]}):(0,M.jsx)(`span`,{className:`ritual-model-warning`,children:o(f,`flow.recommend.unsupported`)})]})]},`${e.role}-${e.id}`)})})]}):null,(0,M.jsxs)(`footer`,{className:`ritual-action-row is-split`,children:[(0,M.jsx)(v,{variant:`ghost`,onClick:a,children:o(f,`flow.recommend.back`)}),(0,M.jsxs)(`span`,{className:`ritual-action-tail`,children:[(0,M.jsx)(`span`,{className:`ritual-muted-hint`,children:o(f,`flow.recommend.hint`)}),(0,M.jsx)(v,{variant:`outline`,onClick:c,children:o(f,`flow.recommend.skip`)})]})]})]})}function Y(e,t){return o(t,`flow.recommend.minutes`,{count:e})}function X(e,t){let n=e.estimatedFirstResponseSeconds;return!e.downloadRequired||e.estimatedDownloadMinutes===0?o(t,`flow.recommend.timeEstimate.ready`,{response:n}):e.estimatedDownloadMinutes===null?o(t,`flow.recommend.timeEstimate.unknown`,{response:n}):o(t,`flow.recommend.timeEstimate`,{download:Y(e.estimatedDownloadMinutes,t),response:n})}function ae(e,t){return!e.downloadRequired||e.estimatedDownloadMinutes===0?o(t,`flow.recommend.primaryNote.ready`):e.estimatedDownloadMinutes===null?o(t,`flow.recommend.primaryNote.unknown`):o(t,`flow.recommend.primaryNote`,{time:Y(e.estimatedDownloadMinutes,t)})}function Z(e,t){return e===`faster`?o(t,`flow.recommend.comparison.faster`):e===`advanced`?o(t,`flow.recommend.comparison.advanced`):``}function Q(e,t,n){return e===`best`?o(n,`flow.recommend.rank.best`):e===`faster`?o(n,`flow.recommend.rank.faster`):e===`advanced`?o(n,`flow.recommend.rank.advanced`):o(n,`flow.recommend.rank.choice`,{index:t+1})}function oe({onComplete:e}){let n=t(e=>e.language),[i,a]=C.useState(`wake`),[s,c]=C.useState(null),[l,u]=C.useState(null),[d,p]=C.useState(0),[m,h]=C.useState(null),g=C.useMemo(()=>w({analysis:s,endpoints:l}),[s,l]);C.useEffect(()=>{let e=!1;async function t(){let[t,n,i,a]=await Promise.all([r.setupScan(),r.modelRecommendations(`local_mlx`),r.models(),r.sysinfo()]);e||(c({setup:t.ok?t.data:null,recommendations:n.ok?n.data:null,models:i.ok?i.data:null,sysinfo:a.ok?a.data:null}),u({setup:t.ok,recommendations:n.ok,models:i.ok,sysinfo:a.ok}))}return t(),()=>{e=!0}},[d]);let _=C.useCallback(()=>{c(null),u(null),p(e=>e+1)},[]);return(0,M.jsx)(`div`,{className:`ritual-shell`,children:(0,M.jsxs)(`main`,{className:`ritual-container`,"aria-label":o(n,`flow.shell`),children:[(0,M.jsx)(U,{}),(0,M.jsxs)(`div`,{className:`ritual-brain`,children:[(0,M.jsx)(f,{state:ce(i),intensity:i===`install`?.92:.7,size:`large`,showLabel:!1}),(0,M.jsx)(`div`,{className:`ritual-edition`,title:o(n,`brain.edition.tip`),children:o(n,`brain.edition`)})]}),i===`wake`&&(0,M.jsx)(se,{onWake:()=>a(`login`),onUseExisting:()=>$(e)}),i===`login`&&(0,M.jsx)(K,{onSuccess:()=>a(`recommend`)}),i===`recommend`&&(0,M.jsx)(J,{status:g.status,reason:g.reason,recommendations:g.recommendations,analysis:s,onBack:()=>a(`login`),onRetry:_,onSkipModel:()=>$(e),onSelect:e=>{h(e),a(`install`)}}),i===`install`&&(0,M.jsx)(ie,{model:m||g.recommendations[0]||T(),onBack:()=>a(`recommend`),onComplete:()=>$(e),onLater:()=>$(e)})]})})}function se({onWake:e,onUseExisting:n}){let r=t(e=>e.language),i=[{icon:b,label:o(r,`flow.wake.value.local.k`),body:o(r,`flow.wake.value.local.v`)},{icon:S,label:o(r,`flow.wake.value.instant.k`),body:o(r,`flow.wake.value.instant.v`)},{icon:h,label:o(r,`flow.wake.value.brain.k`),body:o(r,`flow.wake.value.brain.v`)}];return(0,M.jsxs)(`section`,{className:`ritual-wake`,"aria-label":o(r,`flow.wake.aria`),children:[(0,M.jsx)(`div`,{className:`ritual-title`,children:o(r,`flow.wake.title`)}),(0,M.jsx)(`div`,{className:`ritual-subtitle`,children:o(r,`flow.wake.body`)}),(0,M.jsx)(`div`,{className:`ritual-value-grid`,"aria-label":o(r,`flow.wake.value.aria`),children:i.map(e=>{let t=e.icon;return(0,M.jsxs)(`div`,{className:`ritual-value-card`,children:[(0,M.jsxs)(`div`,{className:`ritual-value-label`,children:[(0,M.jsx)(t,{size:14}),` `,e.label]}),(0,M.jsx)(`div`,{className:`ritual-value-body`,children:e.body})]},e.label)})}),(0,M.jsxs)(`div`,{className:`ritual-wake-plan`,"aria-label":o(r,`flow.wake.plan.aria`),children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{children:`1`}),(0,M.jsx)(`strong`,{children:o(r,`flow.wake.step.identity`)})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{children:`2`}),(0,M.jsx)(`strong`,{children:o(r,`flow.wake.step.check`)})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{children:`3`}),(0,M.jsx)(`strong`,{children:o(r,`flow.wake.step.voice`)})]})]}),(0,M.jsxs)(`div`,{className:`ritual-button-row ritual-button-row-primary`,children:[(0,M.jsxs)(`button`,{type:`button`,className:`ritual-full-button ritual-full-button-primary`,onClick:e,children:[o(r,`flow.wake.primary`),` `,(0,M.jsx)(u,{size:18})]}),(0,M.jsx)(`button`,{type:`button`,className:`ritual-secondary-button`,onClick:n,children:o(r,`flow.wake.existing`)})]}),(0,M.jsx)(`div`,{className:`ritual-start-note`,children:o(r,`flow.wake.startNote`)})]})}function $(e){_(),e()}function ce(e){return e===`wake`?`idle`:e===`analysis`?`listening`:e===`recommend`?`recalling`:e===`install`?`thinking`:`idle`}export{oe as ProductFlow};