@amd-gaia/agent-ui 0.25.4-rc.7 → 0.25.4-rc.8

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.
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{G as t,N as n,W as r,c as i,i as a,j as o,o as s,r as c,s as l,t as u,u as d}from"./useT-DmcuCJlO.js";import{n as ee,t as te}from"./zap-CORjwTA2.js";import{A as ne,At as re,B as ie,Bt as f,C as ae,D as oe,E as se,Et as ce,F as le,G as p,H as ue,I as de,It as m,L as fe,M as pe,Mt as me,N as he,Nt as h,O as ge,P as _e,Pt as g,R as ve,S as ye,T as be,U as xe,Ut as Se,V as Ce,Vt as we,W as Te,X as Ee,_ as De,b as Oe,ct as ke,dt as Ae,g as je,h as Me,ht as Ne,it as Pe,j as Fe,jt as Ie,k as Le,lt as Re,m as ze,mt as Be,nt as Ve,ot as He,p as Ue,pt as We,rt as Ge,st as Ke,t as qe,v as Je,w as Ye,x as Xe,y as Ze,yt as Qe,z as $e,zt as et}from"./index-eGMUmm-L.js";var _={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};_.node;var tt=r(_),nt={name:`git-merge`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]};nt.node;var rt=r(nt),v={name:`shield-off`,size:24,node:[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]};v.node;var it=r(v),at={name:`shield`,size:24,node:[[`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`}]]};at.node;var ot=r(at),y={name:`target`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};y.node;var st=r(y),ct={name:`trending-up`,size:24,node:[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]};ct.node;var lt=r(ct),ut={name:`user`,size:24,node:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]};ut.node;var dt=r(ut),b=e(t(),1),ft=[{title:`mem.about.group.preferences`,categories:[`preference`]},{title:`mem.about.group.about`,categories:[`fact`,`profile`,`skill`]},{title:`mem.about.group.reminders`,categories:[`reminder`]},{title:`mem.about.group.notes`,categories:[`note`]}],pt={user:`mem.source.user`,tool:`mem.source.tool`,llm_extract:`mem.source.llm_extract`,consolidation:`mem.source.consolidation`,inferred:`mem.source.inferred`,discovery:`mem.source.discovery`};function mt(e){return pt[e]??`mem.source.other`}function ht(e,t){let n=new Date(e);if(Number.isNaN(n.getTime()))return null;let r=Math.floor((Date.now()-n.getTime())/864e5);return r<=0?o(`mem.day.today`):r===1?o(`mem.day.yesterday`):r<30?o(`mem.day.daysAgo`,{n:r}):n.toLocaleDateString(u(t),{month:`short`,day:`numeric`,year:`numeric`})}function gt(e,t=new Date,n=c){let r=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),i=r?new Date(+r[1],r[2]-1,+r[3]):new Date(e);if(Number.isNaN(i.getTime()))return null;let a=i.getHours()===0&&i.getMinutes()===0&&i.getSeconds()===0,o=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime(),s=a?i.getTime()<o:i.getTime()<t.getTime(),l=i.toLocaleString(u(n),{weekday:`short`,month:`short`,day:`numeric`,...i.getFullYear()===t.getFullYear()?{}:{year:`numeric`},...a?{}:{hour:`numeric`,minute:`2-digit`}});return{text:n(s?`mem.due.past`:`mem.due.upcoming`,{when:l}),past:s}}function _t({memoryEnabled:e,reloadKey:t,onChanged:r,onOpenAdvanced:c,showToast:u}){let d=a(),[ee,te]=(0,b.useState)(null),[ne,re]=(0,b.useState)(null),[ie,f]=(0,b.useState)(null),[oe,se]=(0,b.useState)(``),[le,p]=(0,b.useState)([]),[ue,de]=(0,b.useState)(new Set),[m,fe]=(0,b.useState)(``),[pe,me]=(0,b.useState)(`fact`),[he,h]=(0,b.useState)(null),_e=(0,b.useRef)(0),g=(0,b.useCallback)(async()=>{let e=++_e.current;try{let t=await ge({about_user:!0,include_sensitive:!0,sort_by:`updated_at`,order:`desc`,limit:200});if(e!==_e.current)return;te(t.items),re(null)}catch(t){if(e!==_e.current)return;n.system.warn(`Failed to load what GAIA knows about the user`,t),re(t instanceof Error?t.message:String(t))}},[]);(0,b.useEffect)(()=>{g()},[g,t]);let ve=(0,b.useCallback)(async e=>{let t=oe.trim();if(!t||t===e.content)f(null);else{h(e.id);try{await ae(e.id,{content:t}),f(null),u(d(`mem.about.updated`),`success`),await g(),r()}catch(e){n.system.error(`Failed to edit memory`,e),u(d(`mem.about.editFailed`,{error:x(e)}),`error`)}finally{h(null)}}},[oe,g,r,u,d]),be=(0,b.useCallback)(async e=>{h(e.id);try{await ye(e.id),_e.current++,te(t=>(t??[]).filter(t=>t.id!==e.id)),p(t=>[e,...t]),r()}catch(e){n.system.error(`Failed to forget memory`,e),u(d(`mem.about.forgetFailed`,{error:x(e)}),`error`)}finally{h(null)}},[r,u,d]),xe=(0,b.useCallback)(async e=>{h(e.id);try{await Oe({content:e.content,category:e.category,domain:e.domain??void 0,context:e.context,entity:e.entity??void 0,sensitive:e.sensitive,due_at:e.due_at??void 0}),p(t=>t.filter(t=>t.id!==e.id)),await g(),r()}catch(e){n.system.error(`Failed to restore memory`,e),u(d(`mem.about.restoreFailed`,{error:x(e)}),`error`)}finally{h(null)}},[g,r,u,d]),Se=(0,b.useCallback)(async()=>{let e=m.trim();if(e){h(`new`);try{await Oe({content:e,category:pe}),fe(``),u(d(`mem.about.saved`),`success`),await g(),r()}catch(e){n.system.error(`Failed to add memory`,e),u(d(`mem.about.addFailed`,{error:x(e)}),`error`)}finally{h(null)}}},[m,pe,g,r,u,d]);if(!e)return i(`div`,{className:`mem-about`,children:[l(`h2`,{className:`mem-about-title`,children:d(`mem.about.title`)}),i(`div`,{className:`mem-about-empty`,children:[l(`p`,{children:d(`mem.about.off`)}),l(`button`,{className:`btn-secondary`,onClick:c,children:d(`mem.about.turnOn`)})]})]});let Ce=ft.map(e=>({...e,rows:(ee??[]).filter(t=>e.categories.includes(t.category))})).filter(e=>e.rows.length>0);return i(`div`,{className:`mem-about`,children:[l(`h2`,{className:`mem-about-title`,children:d(`mem.about.title`)}),l(`p`,{className:`mem-about-intro`,children:d(`mem.about.intro`)}),i(`form`,{className:`mem-about-add`,onSubmit:e=>{e.preventDefault(),Se()},children:[l(`input`,{className:`mem-input`,placeholder:d(`mem.about.addPlaceholder`),"aria-label":d(`mem.about.addLabel`),value:m,onChange:e=>fe(e.target.value)}),i(`select`,{className:`mem-select`,"aria-label":d(`mem.about.kind`),value:pe,onChange:e=>me(e.target.value),children:[l(`option`,{value:`fact`,children:d(`mem.about.group.about`)}),l(`option`,{value:`preference`,children:d(`mem.about.kind.preference`)}),l(`option`,{value:`reminder`,children:d(`mem.about.kind.reminder`)}),l(`option`,{value:`note`,children:d(`mem.about.kind.note`)})]}),i(`button`,{className:`btn-primary`,type:`submit`,disabled:!m.trim()||he===`new`,children:[l(Be,{size:14}),` `,d(`mem.about.add`)]})]}),le.map(e=>i(`div`,{className:`mem-about-forgotten`,role:`status`,children:[l(`span`,{children:e.sensitive?d(`mem.about.forgottenSensitive`):d(`mem.about.forgotten`,{content:e.content})}),i(`button`,{className:`mem-about-link`,disabled:he===e.id,onClick:()=>xe(e),children:[l(He,{size:12}),` `,d(`mem.about.undo`)]})]},e.id)),ne?i(`div`,{className:`mem-about-empty`,children:[l(`p`,{children:d(`mem.about.loadFailed`,{error:ne})}),l(`button`,{className:`btn-secondary`,onClick:g,children:d(`mem.about.retry`)})]}):ee===null?i(`div`,{className:`mem-loading`,children:[l(`div`,{className:`mem-spinner`}),` `,d(`mem.loading`)]}):Ce.length===0?i(`div`,{className:`mem-about-empty`,children:[l(`p`,{children:d(`mem.about.empty`)}),l(`p`,{className:`mem-about-hint`,children:d(`mem.about.emptyHint`)})]}):Ce.map(e=>i(`section`,{className:`mem-about-group`,"aria-label":d(e.title),children:[l(`h3`,{className:`mem-about-group-title`,children:d(e.title)}),l(`ul`,{className:`mem-about-list`,children:e.rows.map(e=>{let t=e.sensitive&&!ue.has(e.id),n=e.due_at?gt(e.due_at,new Date,d):null,r=ht(e.updated_at,d),a=t?o(`mem.about.sensitiveMemory`):e.content;return l(`li`,{className:`mem-about-item`,children:ie===e.id?i(`form`,{className:`mem-about-edit`,onSubmit:t=>{t.preventDefault(),ve(e)},children:[l(`textarea`,{className:`mem-input`,"aria-label":d(`mem.about.editLabel`),rows:2,autoFocus:!0,value:oe,onChange:e=>se(e.target.value),onKeyDown:t=>{t.key===`Escape`&&(t.stopPropagation(),f(null)),t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),ve(e))}}),i(`div`,{className:`mem-about-edit-actions`,children:[l(`button`,{className:`btn-primary`,type:`submit`,disabled:he===e.id,children:d(`mem.about.save`)}),l(`button`,{className:`btn-secondary`,type:`button`,onClick:()=>f(null),children:d(`mem.about.cancel`)})]})]}):i(s.Fragment,{children:[i(`div`,{className:`mem-about-text`,children:[t?i(`button`,{className:`mem-about-link`,onClick:()=>de(t=>new Set(t).add(e.id)),children:[l(ce,{size:12}),` `,d(`mem.about.showSensitive`)]}):l(`bdi`,{children:e.content}),n&&l(`span`,{className:`mem-about-due${n.past?` is-overdue`:``}`,children:n.text}),l(`span`,{className:`mem-about-meta`,children:r===null?d(mt(e.source)):d(`mem.about.meta`,{source:o(mt(e.source)),when:r})})]}),i(`div`,{className:`mem-about-actions`,children:[l(`button`,{className:`mem-about-btn`,"aria-label":d(`mem.about.editAria`,{name:a}),title:d(`mem.about.edit`),onClick:()=>{f(e.id),se(e.content)},children:l(Ne,{size:14})}),i(`button`,{className:`mem-about-btn mem-about-btn-remove`,"aria-label":d(`mem.about.forgetAria`,{name:a}),title:d(`mem.about.forget`),disabled:he===e.id,onClick:()=>be(e),children:[l(ke,{size:14}),` `,d(`mem.about.forget`)]})]})]})},e.id)})})]},e.title))]})}function x(e){return e instanceof Error?e.message:String(e)}function vt(e,t){if(!e)return`—`;try{let n=new Date(e);if(isNaN(n.getTime()))return`—`;let r={month:`short`,day:`numeric`};return n.getFullYear()!==new Date().getFullYear()&&(r.year=`numeric`),n.toLocaleDateString(t,r)}catch{return`—`}}function S(e,t){if(!e)return``;try{let n=new Date(e);return isNaN(n.getTime())?``:n.toLocaleString(t,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}catch{return``}}function C(e,t){if(!e)return`—`;try{let n=new Date(e);if(isNaN(n.getTime()))return`—`;let r=Date.now(),i=n.getTime()-r,a=Math.abs(i),o=Math.floor(a/1e3),s=Math.floor(a/6e4),c=Math.floor(a/36e5),l=Math.floor(a/864e5);return i<0?o<5?t(`time.justNow`):o<60?t(`mem.rel.secondsAgo`,{n:o}):c===0?t(`time.minutesAgo`,{n:s}):l===0?t(`time.hoursAgo`,{n:c}):l===1?t(`time.yesterday`):l<30?t(`time.daysAgo`,{n:l}):S(e,u(t)):o<5?t(`mem.rel.now`):o<60?t(`mem.rel.inSeconds`,{n:o}):c===0?t(`mem.rel.inMinutes`,{n:s}):l===0?t(`mem.rel.inHours`,{n:c}):l===1?t(`mem.rel.tomorrow`):l<30?t(`mem.rel.inDays`,{n:l}):S(e,u(t))}catch{return`—`}}function yt(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function bt(e){try{return new Date(e).getTime()<Date.now()}catch{return!1}}function xt(e){return e>=.7?`high`:e>=.4?`medium`:`low`}function St(e){return e>=.9?`high`:e>=.7?`medium`:`low`}function Ct(e,t,n){let r=vt(e,n),i=vt(t,n);return r===`—`&&i===`—`?``:r===i?r:`${r} \u2013 ${i}`}function wt(e){if(e.length===0)return 0;let t=new Date().toISOString().slice(0,10),n=e.find(e=>e.date===t);return n?n.knowledge_added:0}var Tt=[`fact`,`preference`,`error`,`skill`,`note`,`reminder`],Et={fact:`mem.cat.fact`,preference:`mem.cat.preference`,error:`mem.cat.error`,skill:`mem.cat.skill`,note:`mem.cat.note`,reminder:`mem.cat.reminder`},Dt={pending_approval:`mem.status.pending_approval`,queued:`mem.status.queued`,in_progress:`mem.status.in_progress`,completed:`mem.status.completed`,failed:`mem.status.failed`,rejected:`mem.status.rejected`,cancelled:`mem.status.cancelled`,blocked:`mem.status.blocked`},Ot={low:`mem.priority.low`,medium:`mem.priority.medium`,high:`mem.priority.high`},kt={agent_inferred:`mem.goals.source.agent_inferred`,agent_scheduled:`mem.goals.source.agent_scheduled`},At={user:`mem.role.user`,assistant:`mem.role.assistant`},jt={work:`mem.domain.work`,technical:`mem.domain.technical`,personal:`mem.domain.personal`,general:`mem.domain.general`};function w({value:e,keys:t}){let n=a(),r=t[e];return r?l(s.Fragment,{children:n(r)}):l(`bdi`,{children:e})}function T(e){return e instanceof Error?e.message:String(e)}var Mt={work:`blue`,technical:`purple`,personal:`green`,general:`gray`};function Nt(){let e=a(),{setShowMemoryDashboard:t,sessions:r,setCurrentSession:c}=d(),ce=(0,b.useMemo)(()=>new Map(r.map(e=>[e.id,e.title])),[r]),He=e=>ce.get(e)||`${e.slice(0,8)}...`,[_,nt]=(0,b.useState)(null),[v,at]=(0,b.useState)([]),[y,ct]=(0,b.useState)(null),[ut,ft]=(0,b.useState)([]),[pt,mt]=(0,b.useState)([]),[ht,gt]=(0,b.useState)([]),[x,vt]=(0,b.useState)(null),[Nt,Pt]=(0,b.useState)([]),[Ft,It]=(0,b.useState)(!0),[Lt,Rt]=(0,b.useState)(!1),[zt,Bt]=(0,b.useState)(null),[Vt,E]=(0,b.useState)(!1),[Ht,Ut]=(0,b.useState)(null),[Wt,Gt]=(0,b.useState)([]),Kt=(0,b.useRef)(0),[D,qt]=(0,b.useState)([]),[Jt,Yt]=(0,b.useState)(``),[Xt,Zt]=(0,b.useState)(``),[Qt,$t]=(0,b.useState)(``),[O,en]=(0,b.useState)(`updated_at`),[tn,nn]=(0,b.useState)(`desc`),[k,A]=(0,b.useState)(0),[rn,an]=(0,b.useState)(!1),[on,sn]=(0,b.useState)(``),[cn,ln]=(0,b.useState)(null),un=(0,b.useRef)(null),[j,dn]=(0,b.useState)(null),[fn,pn]=(0,b.useState)(!1),[M,mn]=(0,b.useState)(null),[N,P]=(0,b.useState)({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),[hn,gn]=(0,b.useState)(new Set),[F,_n]=(0,b.useState)(!1),[vn,yn]=(0,b.useState)(!1),[bn,xn]=(0,b.useState)(!1),[I,L]=(0,b.useState)(!1),[Sn,Cn]=(0,b.useState)(!1),[R,wn]=(0,b.useState)(null),[Tn,En]=(0,b.useState)(!1),[z,B]=(0,b.useState)(null),[V,Dn]=(0,b.useState)(`about`),[On,kn]=(0,b.useState)(0),[An,jn]=(0,b.useState)([]),[Mn,Nn]=(0,b.useState)(null),[Pn,Fn]=(0,b.useState)(!1),[In,Ln]=(0,b.useState)(null),[Rn,zn]=(0,b.useState)(null),[Bn,Vn]=(0,b.useState)(!1),[Hn,Un]=(0,b.useState)({title:``,description:``,priority:`medium`}),[H,U]=(0,b.useState)(`idle`),[Wn,W]=(0,b.useState)([]),[G,K]=(0,b.useState)([]),[Gn,Kn]=(0,b.useState)(null),qn=(0,b.useRef)(null),Jn=(0,b.useRef)(null),[q,Yn]=(0,b.useState)(`idle`),[Xn,J]=(0,b.useState)([]),[Y,Zn]=(0,b.useState)([]),[Qn,$n]=(0,b.useState)(null),[er,tr]=(0,b.useState)(!1),nr=(0,b.useRef)(null),rr=(0,b.useRef)(null),[ir,ar]=(0,b.useState)(30),[or,sr]=(0,b.useState)(!1),[cr,lr]=(0,b.useState)(!1),[ur,dr]=(0,b.useState)(!1),[fr,pr]=(0,b.useState)(!1),[mr,hr]=(0,b.useState)(!1),[gr,_r]=(0,b.useState)(!1),vr=(0,b.useRef)(null),yr=(0,b.useRef)(null),br=(0,b.useRef)(null),X=(0,b.useCallback)((e,t=`info`)=>{let n=++Kt.current;Gt(r=>[...r,{id:n,text:e,type:t}]),setTimeout(()=>{Gt(e=>e.filter(e=>e.id!==n))},4e3)},[]);(0,b.useEffect)(()=>{if(!Vt)return;let e=e=>{yr.current&&!yr.current.contains(e.target)&&E(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[Vt]),Ve(!0,()=>{z?B(null):Sn?Cn(!1):Tn?En(!1):j?dn(null):Vt?E(!1):fn||M?(pn(!1),mn(null)):Ht?Ut(null):t(!1)}),Ee(br,!!z),(0,b.useEffect)(()=>{if(!z)return;let e=br.current;if(!e)return;let t=document.activeElement;return e.focus(),()=>{t?.focus()}},[z]);let xr=(0,b.useCallback)(async()=>{try{let e=await pe();nt(e)}catch(e){n.system.warn(`Failed to load memory stats`,e)}},[]),Sr=(0,b.useCallback)(async()=>{try{let e=await Le(ir);at(e)}catch(e){n.system.warn(`Failed to load memory activity`,e)}},[ir]),Z=(0,b.useCallback)(async()=>{try{let e=await ge({category:D.length>0?D:void 0,context:Jt||void 0,entity:Xt||void 0,search:Qt||void 0,sort_by:O,order:tn,offset:k,limit:15,include_sensitive:!0,include_superseded:rn});ct(e)}catch(e){n.system.warn(`Failed to load knowledge`,e)}},[D,Jt,Xt,Qt,O,tn,k,rn]),Cr=(0,b.useCallback)(async()=>{try{let e=await he();ft(e)}catch(e){n.system.warn(`Failed to load tool summary`,e)}},[]),wr=(0,b.useCallback)(async()=>{try{let e=await ne(20);mt(e)}catch(e){n.system.warn(`Failed to load conversations`,e)}},[]),Tr=(0,b.useCallback)(async()=>{try{let e=await _e(7);gt(e)}catch(e){n.system.warn(`Failed to load upcoming items`,e)}},[]),Er=(0,b.useCallback)(async()=>{try{let e=await be();vt(e)}catch(e){n.system.warn(`Failed to load embedding coverage`,e)}},[]),Dr=(0,b.useCallback)(async()=>{try{let e=await se();Pt(e||[])}catch(e){n.system.warn(`Failed to load entities`,e)}},[]),Or=(0,b.useCallback)(async()=>{try{let e=await Fe();yn(e.mcp_memory_enabled),_n(e.memory_enabled),xn(e.system_discovery_consent)}catch(e){n.system.warn(`Failed to load memory settings`,e)}},[]),kr=(0,b.useCallback)(async()=>{Fn(!0);try{let[e,t]=await Promise.all([le(),oe()]);jn(e.goals),Nn(t)}catch(e){n.system.warn(`Failed to load goals`,e)}finally{Fn(!1)}},[]),Ar=(0,b.useCallback)(async(t,r)=>{try{await t()}catch(t){n.system.error(`Goal action failed (${r})`,t),X(e(`mem.goals.failed`,{what:o(r),error:T(t)}),`error`);return}kr()},[kr,X,e]);(0,b.useEffect)(()=>{if(!Rn)return;let e=setTimeout(()=>zn(null),3e3);return()=>clearTimeout(e)},[Rn]);let Q=(0,b.useCallback)(async()=>{It(!0),Rt(!1);try{await Promise.all([xr(),Sr(),Z(),Cr(),wr(),Tr(),Er(),Dr(),Or(),kr()]),kn(e=>e+1)}catch(e){Rt(!0),n.system.error(`Memory dashboard load failed`,e)}finally{It(!1)}},[xr,Sr,Z,Cr,wr,Tr,Er,Dr,Or,kr]);(0,b.useEffect)(()=>{Q()},[Q]),(0,b.useEffect)(()=>{Z()},[Z]);let jr=(0,b.useRef)(!0);(0,b.useEffect)(()=>{jr.current?jr.current=!1:Sr()},[Sr]);let Mr=(0,b.useCallback)(e=>{$t(e),_r(!0),vr.current&&clearTimeout(vr.current),vr.current=setTimeout(()=>{A(0),_r(!1)},300)},[]),Nr=(0,b.useCallback)(()=>{Z(),xr(),Er(),Tr(),Dr()},[Z,xr,Er,Tr,Dr]),$=(0,b.useCallback)(()=>{Nr(),kn(e=>e+1)},[Nr]),Pr=(0,b.useCallback)(async()=>{if(N.content.trim())try{let t=await Oe({content:N.content,category:N.category,domain:N.domain||void 0,context:N.context,entity:N.entity||void 0,sensitive:N.sensitive,due_at:N.due_at||void 0});pn(!1),P({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),$(),n.ui.info(`Created new knowledge entry`),t?.embedded===!1?X(t.embed_error?e(`mem.toast.server`,{message:t.embed_error}):e(`mem.toast.notEmbedded`),`error`):X(e(`mem.toast.created`),`success`)}catch(t){n.system.error(`Failed to create knowledge`,t),X(e(`mem.toast.createFailed`,{error:T(t)}),`error`)}},[N,$,X,e]),Fr=(0,b.useCallback)(async()=>{if(M&&N.content.trim())try{let t=await ae(M,{content:N.content,category:N.category,domain:N.domain||void 0,context:N.context,entity:N.entity||void 0,sensitive:N.sensitive,due_at:N.due_at||void 0});mn(null),P({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),$(),n.ui.info(`Updated knowledge ${M}`),t?.embedded===!1?X(t.embed_error?e(`mem.toast.server`,{message:t.embed_error}):e(`mem.toast.notEmbedded`),`error`):X(e(`mem.toast.updated`),`success`)}catch(t){n.system.error(`Failed to update knowledge`,t),X(e(`mem.toast.updateFailed`,{error:T(t)}),`error`)}},[M,N,$,X,e]),Ir=(0,b.useCallback)(async t=>{if(R!==t)wn(t);else{wn(null);try{await ye(t),$(),n.ui.info(`Deleted knowledge ${t}`),X(e(`mem.toast.deleted`),`info`)}catch(t){n.system.error(`Failed to delete knowledge`,t),X(e(`mem.toast.deleteFailed`,{error:T(t)}),`error`)}}},[R,$,X,e]);(0,b.useEffect)(()=>{if(!R)return;let e=setTimeout(()=>wn(null),3e3);return()=>clearTimeout(e)},[R]);let Lr=(0,b.useCallback)(async t=>{try{await ae(t.id,{sensitive:!t.sensitive}),Z(),n.ui.info(`Toggled sensitive for ${t.id}: ${!t.sensitive}`),X(e(t.sensitive?`mem.toast.unmarkedSensitive`:`mem.toast.markedSensitive`),`info`)}catch(t){n.system.error(`Failed to toggle sensitive`,t),X(e(`mem.toast.sensitiveFailed`,{error:T(t)}),`error`)}},[Z,X,e]),Rr=(0,b.useCallback)(e=>{mn(e.id),pn(!1),P({content:e.content,category:e.category,domain:e.domain||``,context:e.context,entity:e.entity||``,sensitive:e.sensitive,due_at:e.due_at||``})},[]),zr=(0,b.useCallback)(t=>{navigator.clipboard.writeText(t).then(()=>X(e(`mem.toast.idCopied`),`info`),r=>{n.ui.warn(`Couldn't copy knowledge ID ${t}`,r),X(e(`mem.toast.copyFailed`,{error:T(r)}),`error`)})},[X,e]),Br=(0,b.useCallback)(e=>{sn(e),un.current&&clearTimeout(un.current),e.trim()?un.current=setTimeout(async()=>{try{let t=await Te(e.trim(),20);ln(t)}catch(e){n.system.warn(`Conversation search failed`,e)}},300):ln(null)},[]),Vr=(0,b.useCallback)(async e=>{try{let t=await Ye(e);dn({sessionId:e,turns:t})}catch(e){n.system.error(`Failed to load conversation detail`,e)}},[]),Hr=(0,b.useCallback)(e=>{qt(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),A(0)},[]),Ur=(0,b.useCallback)(e=>{O===e?nn(e=>e===`desc`?`asc`:`desc`):(en(e),nn(`desc`)),A(0)},[O]),Wr=(0,b.useCallback)(async()=>{sr(!0),E(!1);try{let t=await Je();await Q(),X(e(`mem.toast.consolidated`,{sessions:t.consolidated??0,items:t.extracted_items??0}),`success`)}catch(t){n.system.error(`Failed to consolidate sessions`,t),X(e(`mem.toast.consolidateFailed`,{error:T(t)}),`error`)}finally{sr(!1)}},[Q,X,e]),Gr=(0,b.useCallback)(async()=>{lr(!0),E(!1);try{let t=await ve();await Er(),X(t.total_without?e(`mem.toast.backfilledMissing`,{n:t.backfilled??0,missing:t.total_without}):e(`mem.toast.backfilled`,{n:t.backfilled??0}),`success`)}catch(t){n.system.error(`Failed to rebuild embeddings`,t),X(e(`mem.toast.rebuildFailed`,{error:T(t)}),`error`)}finally{lr(!1)}},[Er,X,e]),Kr=(0,b.useCallback)(async()=>{dr(!0),E(!1);try{let t=await ie();await Q(),X(e(`mem.toast.reconciled`,{pairs:t.pairs_checked??0,reinforced:t.reinforced??0,contradicted:t.contradicted??0}),`success`)}catch(t){n.system.error(`Failed to reconcile memory`,t),X(e(`mem.toast.reconcileFailed`,{error:T(t)}),`error`)}finally{dr(!1)}},[Q,X,e]),qr=(0,b.useCallback)(async()=>{pr(!0),E(!1);try{await $e(),await Q(),X(e(`mem.toast.ftsRebuilt`),`success`)}catch(t){n.system.error(`Failed to rebuild FTS index`,t),X(e(`mem.toast.ftsFailed`,{error:T(t)}),`error`)}finally{pr(!1)}},[Q,X,e]),Jr=(0,b.useCallback)(async()=>{hr(!0),E(!1);try{let t=await Ce();await Q(),t.skipped?X(e(`mem.toast.systemDisabled`),`error`):X(e(`mem.toast.systemRefreshed`,{n:t.stored}),`success`)}catch(t){n.system.error(`Failed to refresh system context`,t),X(e(`mem.toast.systemFailed`,{error:T(t)}),`error`)}finally{hr(!1)}},[Q,X,e]),Yr=or||cr||ur||fr||mr,Xr=(0,b.useCallback)(()=>{U(`running`),W([]),K([]),Kn(null);let t=de();Jn.current=t,t.onmessage=r=>{try{let n=JSON.parse(r.data);if(n.type===`log`)W(e=>[...e,{text:n.message,kind:`log`,server:!0}]);else if(n.type===`finding`){let t=n.item;W(n=>[...n,{text:e.bare(`mem.log.found`,{content:t.content}),kind:`finding`}]),K(e=>[...e,{...t,_checked:!0}])}else n.type===`error`?W(t=>[...t,{text:e.bare(`mem.log.error`,{message:n.message}),kind:`error`}]):n.type===`done`&&(t.close(),Jn.current=null,W(t=>[...t,{text:e(`mem.log.discoveryDone`,{n:n.total??0}),kind:`log`}]),U(`review`))}catch(t){n.system.warn(`Unreadable discovery event`,t),W(t=>[...t,{text:e(`mem.log.parseFailed`),kind:`error`}])}},t.onerror=()=>{t.close(),Jn.current=null,W(t=>[...t,{text:e(`mem.log.discoveryConnection`),kind:`error`}]),K(e=>(U(e.length>0?`review`:`idle`),e))}},[e]),Zr=(0,b.useCallback)(async()=>{let t=G.filter(e=>e._checked);if(t.length!==0){U(`saving`);try{let n=t.map(({_checked:e,...t})=>t),r=await je(n);Kn(r.stored),U(`done`),$(),X(e(`mem.disc.saved`,{n:r.stored}),`success`)}catch(t){n.system.error(`Failed to commit discovery items`,t),X(e(`mem.disc.saveFailed`,{error:T(t)}),`error`),U(`review`)}}},[G,$,X,e]),Qr=(0,b.useCallback)(()=>{Yn(`running`),J([]),Zn([]),$n(null);let t=fe(er);rr.current=t,t.onmessage=r=>{try{let n=JSON.parse(r.data);if(n.type===`log`)J(e=>[...e,{text:n.message,kind:`log`,server:!0}]);else if(n.type===`insight`){let t=n.item;J(n=>[...n,{text:e.bare(`mem.log.insight`,{content:t.content}),kind:`finding`}]),Zn(e=>[...e,{...t,_checked:!0}])}else n.type===`error`?J(t=>[...t,{text:e.bare(`mem.log.error`,{message:n.message}),kind:`error`}]):n.type===`done`&&(t.close(),rr.current=null,J(t=>[...t,{text:e(`mem.log.inferenceDone`,{n:n.total??0}),kind:`log`}]),Yn(`review`))}catch(t){n.system.warn(`Unreadable inference event`,t),J(t=>[...t,{text:e(`mem.log.parseFailed`),kind:`error`}])}},t.onerror=()=>{t.close(),rr.current=null,J(t=>[...t,{text:e(`mem.log.inferenceConnection`),kind:`error`}]),Zn(e=>(Yn(e.length>0?`review`:`idle`),e))}},[er,e]),$r=(0,b.useCallback)(async()=>{let t=Y.filter(e=>e._checked);if(t.length!==0){Yn(`saving`);try{let n=t.map(({_checked:e,...t})=>t),r=await De(n);$n(r.stored),Yn(`done`),$(),X(e(`mem.inf.saved`,{n:r.stored}),`success`)}catch(t){n.system.error(`Failed to commit inference insights`,t),X(e(`mem.inf.saveFailed`,{error:T(t)}),`error`),Yn(`review`)}}},[Y,$,X,e]);(0,b.useEffect)(()=>{qn.current&&(qn.current.scrollTop=qn.current.scrollHeight)},[Wn]),(0,b.useEffect)(()=>{nr.current&&(nr.current.scrollTop=nr.current.scrollHeight)},[Xn]),(0,b.useEffect)(()=>()=>{Jn.current&&=(Jn.current.close(),null),rr.current&&=(rr.current.close(),null)},[]);let ei=e=>O===e?l(`span`,{className:`mem-sort-arrow`,children:tn===`desc`?`↓`:`↑`}):null,ti=Math.max(1,...v.map(e=>e.conversations+e.tool_calls+e.knowledge_added+e.errors)),ni=_?.knowledge?.by_context?Object.keys(_.knowledge.by_context):[];return i(`div`,{className:`memory-dashboard-page`,children:[i(`div`,{className:`memory-dashboard-header`,children:[i(`div`,{className:`memory-dashboard-header-left`,children:[l(`button`,{className:`btn-icon settings-back-btn`,onClick:()=>t(!1),"aria-label":e(`mem.back`),children:l(tt,{size:18})}),i(`h1`,{children:[e(`mem.title`),` `,l(`span`,{className:`mem-beta`,style:{fontSize:11,fontWeight:600,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`2px 8px`,borderRadius:4,marginInlineStart:8,verticalAlign:`middle`,whiteSpace:`nowrap`},children:e(`mem.beta`)})]})]}),i(`div`,{className:`memory-dashboard-header-actions`,children:[V===`advanced`&&i(s.Fragment,{children:[x&&x.total_items>0&&i(`div`,{className:`mem-embedding-coverage`,title:e(`mem.coverage.title`,{n:x.with_embedding,total:x.total_items}),children:[l(`div`,{className:`mem-embedding-bar`,children:l(`div`,{className:`mem-embedding-fill`,style:{width:`${Math.round(x.coverage_pct)}%`}})}),l(`span`,{className:`mem-embedding-label`,children:e(`mem.coverage.label`,{pct:`${Math.round(x.coverage_pct)}%`})})]}),i(`div`,{className:`mem-maintenance-wrap`,ref:yr,children:[i(`button`,{className:`btn-icon ${Yr?`mem-spinning`:``}`,onClick:()=>E(e=>!e),title:e(`mem.maint.label`),"aria-label":e(`mem.maint.label`),"aria-expanded":Vt,children:[Yr?l(`div`,{className:`mem-spinner-sm`}):l(re,{size:16}),l(we,{size:10,style:{marginInlineStart:2}})]}),Vt&&i(`div`,{className:`mem-maintenance-menu`,role:`menu`,children:[i(`button`,{className:`mem-maintenance-item`,onClick:Wr,disabled:or,role:`menuitem`,children:[l(rt,{size:14}),e(or?`mem.maint.consolidating`:`mem.maint.consolidate`)]}),i(`button`,{className:`mem-maintenance-item`,onClick:Gr,disabled:cr,role:`menuitem`,children:[l(te,{size:14}),e(cr?`mem.maint.rebuilding`:`mem.maint.rebuildEmbeddings`)]}),i(`button`,{className:`mem-maintenance-item`,onClick:Kr,disabled:ur,role:`menuitem`,children:[l(m,{size:14}),e(ur?`mem.maint.reconciling`:`mem.maint.reconcile`)]}),l(`div`,{className:`mem-maintenance-divider`}),i(`button`,{className:`mem-maintenance-item`,onClick:Jr,disabled:mr,role:`menuitem`,children:[l(We,{size:14}),e(mr?`mem.maint.refreshing`:`mem.maint.refreshSystem`)]}),l(`div`,{className:`mem-maintenance-divider`}),i(`button`,{className:`mem-maintenance-item`,onClick:qr,disabled:fr,role:`menuitem`,children:[l(Ae,{size:14}),e(fr?`mem.maint.rebuilding`:`mem.maint.rebuildFts`)]})]})]})]}),l(`button`,{className:`btn-icon`,onClick:Q,title:e(`mem.refresh`),"aria-label":e(`mem.refreshAria`),children:l(We,{size:16})})]})]}),i(`div`,{className:`mem-tab-bar`,role:`tablist`,children:[i(`button`,{className:`mem-tab-btn${V===`about`?` mem-tab-active`:``}`,onClick:()=>Dn(`about`),role:`tab`,"aria-selected":V===`about`,children:[l(dt,{size:14}),` `,e(`mem.tab.about`)]}),i(`button`,{className:`mem-tab-btn${V===`goals`?` mem-tab-active`:``}`,onClick:()=>{Dn(`goals`),kr()},role:`tab`,"aria-selected":V===`goals`,children:[l(st,{size:14}),` `,e(`mem.tab.goals`),Mn&&(Mn.goals.pending_approval??0)>0&&l(`span`,{className:`mem-tab-badge`,children:Mn.goals.pending_approval})]}),i(`button`,{className:`mem-tab-btn${V===`profile`?` mem-tab-active`:``}`,onClick:()=>Dn(`profile`),role:`tab`,"aria-selected":V===`profile`,children:[l(Re,{size:14}),` `,e(`mem.tab.profile`)]}),i(`button`,{className:`mem-tab-btn${V===`advanced`?` mem-tab-active`:``}`,onClick:()=>Dn(`advanced`),role:`tab`,"aria-selected":V===`advanced`,children:[l(Se,{size:14}),` `,e(`mem.tab.advanced`)]})]}),i(`div`,{className:`memory-dashboard-body`,children:[V===`about`&&l(_t,{memoryEnabled:F,reloadKey:On,onChanged:Nr,onOpenAdvanced:()=>Dn(`advanced`),showToast:X}),V===`advanced`&&l(s.Fragment,{children:Ft&&!_?i(`div`,{className:`mem-loading`,children:[l(`div`,{className:`mem-spinner`}),e(`mem.loadingData`)]}):Lt?i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(Ke,{size:32})}),l(`p`,{children:e(`mem.loadFailed`)}),i(`button`,{className:`btn-secondary`,onClick:Q,style:{marginTop:12},children:[l(We,{size:14}),` `,e(`mem.retry`)]})]}):i(s.Fragment,{children:[!F&&i(`div`,{className:`mem-empty-state`,style:{margin:`40px 0`},children:[l(`div`,{className:`mem-empty-icon`,style:{opacity:.5},children:l(ot,{size:32})}),l(`p`,{style:{color:`var(--text-secondary)`,fontSize:14},children:e(`mem.offAdvanced`)})]}),F&&i(s.Fragment,{children:[_?.embedding_error&&i(`div`,{className:`mem-advanced-error`,role:`alert`,children:[l(Ke,{size:14}),` `,l(`bdi`,{children:_.embedding_error})]}),i(`div`,{className:`mem-stat-cards`,children:[i(`div`,{className:`mem-stat-card`,"data-accent":`purple`,children:[l(`div`,{className:`mem-stat-value`,children:_?.knowledge?.total??0}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.stored`)}),l(`div`,{className:`mem-stat-sub`,children:(()=>{let t=wt(v);return t>0?e(`mem.stat.addedToday`,{n:t}):_?.knowledge?.by_category?e.compose(e=>Object.entries(_.knowledge.by_category).slice(0,3).map(([t,n])=>e(`mem.stat.categoryCount`,{category:Et[t]?o(Et[t]):t,n})).join(e(`mem.listSeparator`))):e(`mem.stat.noEntries`)})()})]}),i(`div`,{className:`mem-stat-card`,"data-accent":`gold`,children:[l(`div`,{className:`mem-stat-value`,children:_?.knowledge?.total_retrievals??0}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.retrieved`)}),l(`div`,{className:`mem-stat-sub`,children:_?.knowledge?.total&&_?.knowledge?.total_retrievals?e(`mem.stat.avgRecall`,{n:(_.knowledge.total_retrievals/_.knowledge.total).toFixed(1)}):e(`mem.stat.noRecalls`)})]}),i(`div`,{className:`mem-stat-card`,"data-accent":`blue`,children:[l(`div`,{className:`mem-stat-value`,children:_?.conversations?.total_sessions??0}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.sessions`)}),l(`div`,{className:`mem-stat-sub`,children:Ct(_?.conversations?.first_session??null,_?.conversations?.last_session??null,u(e))||e(`mem.stat.totalTurns`,{n:_?.conversations?.total_turns??0})})]}),i(`div`,{className:`mem-stat-card`,"data-accent":`green`,children:[l(`div`,{className:`mem-stat-value`,children:_?.tools?.total_calls??0}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.toolCalls`)}),l(`div`,{className:`mem-stat-sub`,title:e(`mem.stat.toolsNotLogged`),children:e(`mem.stat.toolsExclMemory`,{n:_?.tools?.unique_tools??0})})]}),i(`div`,{className:`mem-stat-card`,"data-accent":`red`,children:[l(`div`,{className:`mem-stat-value`,children:_?.tools?.overall_success_rate!=null&&(_.tools.total_calls??0)>0?`${Math.round(_.tools.overall_success_rate*100)}%`:`—`}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.successRate`)}),l(`div`,{className:`mem-stat-sub`,children:(_?.tools?.total_calls??0)>0?e(`mem.stat.errors`,{n:_?.tools?.total_errors??0}):e(`mem.stat.noToolCalls`)})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title mem-section-title-row`,children:[i(`span`,{className:`mem-section-title-left`,children:[l(lt,{size:14}),` `,e(`mem.activity.title`)]}),l(`div`,{className:`mem-range-tabs`,role:`group`,"aria-label":e(`mem.activity.range`),children:[1,7,30].map(t=>l(`button`,{className:`mem-range-tab${ir===t?` active`:``}`,onClick:()=>ar(t),children:e(t===1?`mem.activity.day1`:t===7?`mem.activity.days7`:`mem.activity.days30`)},t))})]}),v.length>0?i(s.Fragment,{children:[l(`div`,{className:`mem-activity-chart`,children:v.map((t,n)=>{let r=t.conversations+t.tool_calls+t.knowledge_added+t.errors,a=n===0||n===v.length-1||n%7==0,o=new Date(t.date+`T00:00:00`).toLocaleDateString(u(e),{month:`short`,day:`numeric`});return i(`div`,{className:`mem-activity-bar-group`,onMouseEnter:()=>Bt(n),onMouseLeave:()=>Bt(null),children:[t.errors>0&&l(`div`,{className:`mem-activity-bar errors`,style:{height:`${t.errors/ti*100}%`}}),t.knowledge_added>0&&l(`div`,{className:`mem-activity-bar knowledge`,style:{height:`${t.knowledge_added/ti*100}%`}}),t.tool_calls>0&&l(`div`,{className:`mem-activity-bar tool_calls`,style:{height:`${t.tool_calls/ti*100}%`}}),t.conversations>0&&l(`div`,{className:`mem-activity-bar conversations`,style:{height:`${t.conversations/ti*100}%`}}),a&&l(`span`,{className:`mem-activity-date-label`,children:o}),zt===n&&r>0&&i(`div`,{className:`mem-activity-tooltip`,children:[l(`strong`,{children:o}),l(`br`,{}),t.conversations>0&&i(s.Fragment,{children:[e(`mem.activity.conversations`,{n:t.conversations}),l(`br`,{})]}),t.tool_calls>0&&i(s.Fragment,{children:[e(`mem.activity.toolCalls`,{n:t.tool_calls}),l(`br`,{})]}),t.knowledge_added>0&&i(s.Fragment,{children:[e(`mem.activity.learned`,{n:t.knowledge_added}),l(`br`,{})]}),t.errors>0&&l(s.Fragment,{children:e(`mem.stat.errors`,{n:t.errors})})]})]},t.date)})}),i(`div`,{className:`mem-activity-legend`,children:[i(`span`,{className:`mem-activity-legend-item`,children:[l(`span`,{className:`mem-activity-legend-dot conversations`}),` `,e(`mem.legend.conversations`)]}),i(`span`,{className:`mem-activity-legend-item`,children:[l(`span`,{className:`mem-activity-legend-dot tool_calls`}),` `,e(`mem.stat.toolCalls`)]}),i(`span`,{className:`mem-activity-legend-item`,children:[l(`span`,{className:`mem-activity-legend-dot knowledge`}),` `,e(`mem.legend.knowledge`)]}),i(`span`,{className:`mem-activity-legend-item`,children:[l(`span`,{className:`mem-activity-legend-dot errors`}),` `,e(`mem.legend.errors`)]})]})]}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(lt,{size:28})}),l(`p`,{children:e(`mem.activity.empty`)})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title mem-section-title-row`,children:[i(`span`,{className:`mem-section-title-left`,children:[l(Se,{size:14}),` `,e(`mem.knowledge.title`),y&&y.total>0&&l(`span`,{className:`mem-section-count`,children:y.total})]}),!fn&&!M&&i(`button`,{className:`mem-section-add-btn`,onClick:()=>pn(!0),title:e(`mem.knowledge.addTitle`),children:[l(Be,{size:13}),` `,e(`mem.knowledge.add`)]})]}),i(`div`,{className:`mem-filters`,children:[i(`div`,{className:`mem-category-pills`,role:`group`,"aria-label":e(`mem.knowledge.filterCategory`),children:[Tt.map(t=>l(`button`,{className:`mem-category-pill ${t}${D.includes(t)?` active`:``}`,onClick:()=>Hr(t),"aria-pressed":D.includes(t),children:e(Et[t])},t)),D.length>0&&i(`button`,{className:`mem-category-pill clear`,onClick:()=>{qt([]),A(0)},"aria-label":e(`mem.knowledge.clearAria`),children:[`✕ `,e(`mem.knowledge.clear`)]})]}),i(`select`,{className:`mem-filter-select`,value:Jt,onChange:e=>{Yt(e.target.value),A(0)},"aria-label":e(`mem.knowledge.filterContext`),children:[l(`option`,{value:``,children:e(`mem.knowledge.allContexts`)}),ni.map(e=>l(`option`,{value:e,children:e},e))]}),i(`select`,{className:`mem-filter-select`,value:Xt,onChange:e=>{Zt(e.target.value),A(0)},"aria-label":e(`mem.knowledge.filterEntity`),children:[l(`option`,{value:``,children:e(`mem.knowledge.allEntities`)}),Nt.map(e=>i(`option`,{value:e.entity,children:[e.entity,` (`,e.count,`)`]},e.entity))]}),i(`div`,{className:`mem-filter-search-wrap`,children:[gr?l(`div`,{className:`mem-spinner-sm search-icon`,style:{width:12,height:12,borderWidth:1.5}}):l(Ae,{size:13,className:`search-icon`}),l(`input`,{className:`mem-filter-search`,type:`text`,placeholder:e(`mem.knowledge.searchPlaceholder`),value:Qt,onChange:e=>Mr(e.target.value),"aria-label":e(`mem.knowledge.search`)})]}),i(`label`,{className:`mem-filter-toggle`,title:e(`mem.knowledge.supersededTitle`),children:[l(`input`,{type:`checkbox`,checked:rn,onChange:e=>an(e.target.checked)}),l(`span`,{children:e(`mem.knowledge.superseded`)})]})]}),(fn||M)&&i(`div`,{className:`mem-inline-form`,children:[i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.col.content`)}),l(`textarea`,{value:N.content,onChange:e=>P(t=>({...t,content:e.target.value})),placeholder:e(`mem.form.contentPlaceholder`)})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.col.category`)}),l(`select`,{value:N.category,onChange:e=>P(t=>({...t,category:e.target.value})),children:Tt.map(t=>l(`option`,{value:t,children:e(Et[t])},t))})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.col.context`)}),l(`input`,{type:`text`,value:N.context,onChange:e=>P(t=>({...t,context:e.target.value})),placeholder:`global`})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.detail.domain`)}),l(`input`,{type:`text`,value:N.domain,onChange:e=>P(t=>({...t,domain:e.target.value})),placeholder:e(`mem.form.domainPlaceholder`)})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.col.entity`)}),l(`input`,{type:`text`,value:N.entity,onChange:e=>P(t=>({...t,entity:e.target.value})),placeholder:e(`mem.form.entityPlaceholder`)})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.form.dueAt`)}),l(`input`,{type:`text`,value:N.due_at,onChange:e=>P(t=>({...t,due_at:e.target.value})),placeholder:e(`mem.form.dueAtPlaceholder`)})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.form.sensitive`)}),i(`label`,{style:{display:`flex`,alignItems:`center`,gap:6,cursor:`pointer`,fontSize:12},children:[l(`input`,{type:`checkbox`,checked:N.sensitive,onChange:e=>P(t=>({...t,sensitive:e.target.checked}))}),e(`mem.form.sensitiveHint`)]})]}),i(`div`,{className:`mem-inline-form-actions`,children:[l(`button`,{className:`btn-secondary`,onClick:()=>{pn(!1),mn(null)},children:e(`mem.cancel`)}),l(`button`,{className:`btn-primary`,onClick:M?Fr:Pr,style:{padding:`8px 20px`,fontSize:13},children:e(M?`mem.form.update`:`mem.form.save`)})]})]}),y&&y.items.length>0?i(s.Fragment,{children:[l(`div`,{style:{overflowX:`auto`},children:i(`table`,{className:`mem-knowledge-table`,children:[l(`thead`,{children:i(`tr`,{children:[i(`th`,{onClick:()=>Ur(`category`),className:O===`category`?`sorted`:``,children:[e(`mem.col.category`),ei(`category`)]}),l(`th`,{children:e(`mem.col.content`)}),i(`th`,{onClick:()=>Ur(`context`),className:O===`context`?`sorted`:``,children:[e(`mem.col.context`),ei(`context`)]}),l(`th`,{children:e(`mem.col.entity`)}),i(`th`,{onClick:()=>Ur(`confidence`),className:O===`confidence`?`sorted`:``,children:[e(`mem.col.confidence`),ei(`confidence`)]}),l(`th`,{children:e(`mem.col.source`)}),i(`th`,{onClick:()=>Ur(`updated_at`),className:O===`updated_at`?`sorted`:``,children:[e(`mem.col.updated`),ei(`updated_at`)]}),i(`th`,{onClick:()=>Ur(`created_at`),className:O===`created_at`?`sorted`:``,children:[e(`mem.col.created`),ei(`created_at`)]}),l(`th`,{children:e(`mem.col.due`)}),l(`th`,{className:`mem-actions-cell`})]})}),l(`tbody`,{children:y.items.map(t=>{let n=Ht===t.id,r=t.has_embedding;return i(b.Fragment,{children:[i(`tr`,{className:`${t.superseded_by?`mem-superseded-row`:``} ${n?`mem-expanded-row`:``}`,onClick:()=>Ut(n?null:t.id),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),Ut(n?null:t.id))},tabIndex:0,role:`row`,"aria-expanded":n,style:{cursor:`pointer`},children:[l(`td`,{children:l(`span`,{className:`mem-cat-badge ${t.category}`,children:l(w,{value:t.category,keys:Et})})}),l(`td`,{children:i(`div`,{className:`mem-content-cell`,title:t.content,children:[r!==void 0&&l(`span`,{className:`mem-embed-dot ${r?`embedded`:`missing`}`,title:e(r?`mem.knowledge.embedded`:`mem.knowledge.embedMissing`),children:l(g,{size:6,fill:`currentColor`})}),t.sensitive&&l(`span`,{className:`mem-sensitive-badge`,title:e(`mem.form.sensitive`),children:l(ot,{size:11})}),l(`span`,{className:t.sensitive&&!hn.has(t.id)?`mem-sensitive-blur`:t.superseded_by?`mem-superseded-text`:``,onClick:e=>{t.sensitive&&(e.stopPropagation(),gn(e=>{let n=new Set(e);return n.has(t.id)?n.delete(t.id):n.add(t.id),n}))},children:l(`bdi`,{children:t.content})})]})}),l(`td`,{children:l(`bdi`,{className:`mem-date-cell`,children:t.context})}),l(`td`,{children:t.entity?l(`span`,{className:`mem-entity-link`,onClick:e=>{e.stopPropagation(),Zt(t.entity),A(0)},title:e(`mem.knowledge.filterBy`,{entity:t.entity}),children:l(`bdi`,{children:t.entity})}):l(`span`,{className:`mem-date-cell`,children:`—`})}),l(`td`,{children:i(`div`,{className:`mem-confidence`,children:[l(`div`,{className:`mem-confidence-bar`,children:l(`div`,{className:`mem-confidence-fill ${xt(t.confidence)}`,style:{width:`${t.confidence*100}%`}})}),t.confidence.toFixed(2)]})}),l(`td`,{children:l(`bdi`,{className:`mem-date-cell`,children:t.source||`—`})}),l(`td`,{children:l(`span`,{className:`mem-date-cell`,title:S(t.updated_at,u(e)),children:C(t.updated_at,e)})}),l(`td`,{children:l(`span`,{className:`mem-date-cell`,title:S(t.created_at,u(e)),children:C(t.created_at,e)})}),l(`td`,{children:t.due_at?l(`span`,{className:`mem-due-badge ${bt(t.due_at)?`overdue`:`upcoming`}`,title:S(t.due_at,u(e)),children:C(t.due_at,e)}):l(`span`,{className:`mem-due-badge none`,children:`—`})}),l(`td`,{className:`mem-actions-cell`,children:i(`div`,{className:`mem-row-actions`,onClick:e=>e.stopPropagation(),children:[l(`button`,{className:`mem-row-action-btn`,onClick:()=>Rr(t),title:e(`mem.row.edit`),children:l(Ne,{size:13})}),l(`button`,{className:`mem-row-action-btn`,onClick:()=>Lr(t),title:e(t.sensitive?`mem.row.unmarkSensitive`:`mem.row.markSensitive`),children:t.sensitive?l(it,{size:13}):l(ot,{size:13})}),l(`button`,{className:`mem-row-action-btn`,onClick:()=>zr(t.id),title:e(`mem.row.copyId`),children:l(me,{size:13})}),l(`button`,{className:`mem-row-action-btn delete${R===t.id?` is-confirm`:``}`,onClick:()=>Ir(t.id),title:e(R===t.id?`mem.row.clickAgain`:`mem.row.delete`),"aria-label":e(R===t.id?`mem.row.confirmDeleteAria`:`mem.row.deleteAria`),children:R===t.id?l(`span`,{className:`mem-row-delete-label`,children:e(`mem.row.deleteConfirm`)}):l(ke,{size:13})})]})})]}),n&&l(`tr`,{className:`mem-detail-row`,children:l(`td`,{colSpan:10,children:i(`div`,{className:`mem-detail-panel`,children:[i(`div`,{className:`mem-detail-grid`,children:[i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.id`)}),l(`span`,{className:`mem-detail-value`,children:t.id})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.domain`)}),l(`bdi`,{className:`mem-detail-value`,children:t.domain||`—`})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.col.source`)}),l(`bdi`,{className:`mem-detail-value`,children:t.source||`—`})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.useCount`)}),l(`span`,{className:`mem-detail-value`,children:t.use_count??0})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.col.created`)}),l(`span`,{className:`mem-detail-value`,children:S(t.created_at,u(e))})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.col.updated`)}),l(`span`,{className:`mem-detail-value`,children:S(t.updated_at,u(e))})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.lastUsed`)}),l(`span`,{className:`mem-detail-value`,children:S(t.last_used,u(e))})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.remindedAt`)}),l(`span`,{className:`mem-detail-value`,children:S(t.reminded_at,u(e))})]}),t.superseded_by&&i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.supersededBy`)}),l(`span`,{className:`mem-detail-value mem-detail-chain`,children:t.superseded_by})]}),t.metadata&&i(`div`,{className:`mem-detail-field mem-detail-full`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.metadata`)}),l(`span`,{className:`mem-detail-value`,children:l(`bdi`,{dir:`ltr`,children:typeof t.metadata==`object`?JSON.stringify(t.metadata,null,2):t.metadata})})]})]}),i(`div`,{className:`mem-detail-content-full`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.fullContent`)}),l(`div`,{className:`mem-detail-content-text`,children:l(`bdi`,{children:t.content})})]})]})})})]},t.id)})})]})}),i(`div`,{className:`mem-pagination`,children:[l(`span`,{children:e(`mem.page.range`,{from:k+1,to:Math.min(k+15,y.total),total:y.total})}),i(`div`,{className:`mem-pagination-btns`,children:[l(`button`,{type:`button`,className:`mem-page-btn`,"aria-label":e(`mem.page.previous`),disabled:k===0,onClick:()=>A(Math.max(0,k-15)),children:l(f,{size:14})}),l(`button`,{type:`button`,className:`mem-page-btn`,"aria-label":e(`mem.page.next`),disabled:k+15>=y.total,onClick:()=>A(k+15),children:l(et,{size:14})})]})]})]}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(Se,{size:28})}),l(`p`,{children:e(Qt||D.length>0||Jt||Xt?`mem.knowledge.noMatch`:`mem.knowledge.empty`)})]})]}),i(`div`,{className:`mem-two-col`,children:[i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title`,children:[l(Pe,{size:14}),` `,e(`mem.tools.title`),l(`span`,{className:`mem-section-note`,title:e(`mem.tools.noteTitle`),children:e(`mem.tools.note`)})]}),ut.length>0?l(`div`,{style:{overflowX:`auto`},children:i(`table`,{className:`mem-tool-table`,children:[l(`thead`,{children:i(`tr`,{children:[l(`th`,{children:e(`mem.tools.tool`)}),l(`th`,{children:e(`mem.tools.calls`)}),l(`th`,{children:e(`mem.tools.success`)}),l(`th`,{children:e(`mem.tools.denied`)}),l(`th`,{children:e(`mem.tools.avgTime`)}),l(`th`,{children:e(`mem.detail.lastUsed`)}),l(`th`,{children:e(`mem.tools.lastError`)})]})}),l(`tbody`,{children:ut.map(t=>i(`tr`,{children:[l(`td`,{children:l(`bdi`,{className:`mem-tool-name`,children:t.tool_name})}),l(`td`,{children:t.total_calls}),l(`td`,{children:i(`div`,{className:`mem-confidence`,children:[l(`div`,{className:`mem-confidence-bar`,style:{width:40},children:l(`div`,{className:`mem-confidence-fill ${St(t.success_rate)}`,style:{width:`${t.success_rate*100}%`}})}),i(`span`,{className:`mem-success-rate ${St(t.success_rate)}`,children:[Math.round(t.success_rate*100),`%`]})]})}),l(`td`,{children:t.denied_count??0}),l(`td`,{children:l(`bdi`,{dir:`ltr`,children:yt(t.avg_duration_ms)})}),l(`td`,{children:l(`span`,{className:`mem-date-cell`,title:S(t.last_used,u(e)),children:C(t.last_used,e)})}),l(`td`,{children:l(`bdi`,{className:`mem-tool-error`,title:t.last_error||``,children:t.last_error||`—`})})]},t.tool_name))})]})}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(Pe,{size:28})}),l(`p`,{children:e(`mem.tools.empty`)})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title`,children:[l(h,{size:14}),` `,e(`mem.upcoming.title`)]}),ht.length>0?l(`div`,{className:`mem-temporal-list`,children:ht.map(t=>{let n=bt(t.due_at);return i(`div`,{className:`mem-temporal-item ${n?`overdue`:`upcoming`}`,children:[l(`span`,{className:`mem-temporal-icon`,children:l(n?Ke:h,{size:16})}),i(`div`,{className:`mem-temporal-content`,children:[l(`div`,{className:`mem-temporal-text`,children:l(`bdi`,{children:t.content})}),i(`div`,{className:`mem-temporal-date`,children:[e(n?`mem.upcoming.overdue`:`mem.upcoming.due`,{when:C(t.due_at,e)}),t.context!==`global`&&i(s.Fragment,{children:[` `,`·`,` `,l(`bdi`,{children:t.context})]})]})]})]},t.id)})}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(m,{size:28})}),l(`p`,{children:e(`mem.upcoming.empty`)})]})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title`,children:[l(ee,{size:14}),` `,e(`mem.conv.title`)]}),i(`div`,{className:`mem-conv-search`,children:[l(Ae,{size:13,className:`search-icon`}),l(`input`,{type:`text`,placeholder:e(`mem.conv.searchPlaceholder`),value:on,onChange:e=>Br(e.target.value),"aria-label":e(`mem.conv.search`)}),on&&l(`button`,{className:`mem-search-clear`,onClick:()=>{sn(``),ln(null)},"aria-label":e(`mem.conv.clearSearch`),children:l(Ge,{size:12})})]}),cn===null?pt.length>0?l(`div`,{className:`mem-conv-list`,children:pt.map(t=>i(`div`,{className:`mem-conv-item`,onClick:()=>Vr(t.session_id),children:[i(`div`,{className:`mem-conv-info`,children:[i(`div`,{className:`mem-conv-session-id`,children:[l(`bdi`,{children:He(t.session_id)}),t.consolidated&&l(`span`,{className:`mem-consolidated-badge`,title:e(`mem.conv.consolidated`),children:l(rt,{size:11})})]}),t.first_message&&l(`div`,{className:`mem-conv-preview`,children:l(`bdi`,{children:t.first_message})})]}),i(`div`,{className:`mem-conv-meta`,children:[l(`span`,{children:e.plural(`mem.conv.turns`,t.turn_count)}),l(`span`,{children:C(t.last_activity,e)})]})]},t.session_id))}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(ee,{size:28})}),l(`p`,{children:e(`mem.conv.empty`)})]}):cn.length>0?l(`div`,{className:`mem-conv-list`,children:cn.map(t=>i(`div`,{className:`mem-conv-item`,onClick:()=>Vr(t.session_id),children:[i(`div`,{className:`mem-conv-info`,children:[i(`div`,{className:`mem-conv-session-id`,children:[l(`span`,{className:`mem-conv-turn-role ${t.role}`,children:l(w,{value:t.role,keys:At})}),` `,l(`bdi`,{children:He(t.session_id)})]}),l(`div`,{className:`mem-conv-preview`,children:l(`bdi`,{children:t.content})})]}),l(`div`,{className:`mem-conv-meta`,children:l(`span`,{children:C(t.timestamp,e)})})]},t.id))}):l(`div`,{className:`mem-empty`,children:l(`p`,{children:e(`mem.conv.noMatch`,{query:on})})})]}),j&&i(`div`,{className:`mem-conv-detail-overlay`,children:[i(`div`,{className:`mem-conv-detail-header`,children:[l(`h2`,{children:l(`bdi`,{children:He(j.sessionId)})}),i(`div`,{className:`mem-conv-detail-actions`,children:[ce.has(j.sessionId)&&l(`button`,{className:`btn-secondary`,onClick:()=>c(j.sessionId),children:e(`mem.conv.openChat`)}),l(`button`,{className:`btn-icon`,onClick:()=>dn(null),"aria-label":e(`mem.conv.close`),children:l(Ge,{size:16})})]})]}),i(`div`,{className:`mem-conv-detail-body`,children:[j.turns.map(t=>i(`div`,{className:`mem-conv-turn`,children:[i(`div`,{className:`mem-conv-turn-header`,children:[l(`div`,{className:`mem-conv-turn-role ${t.role}`,children:l(w,{value:t.role,keys:At})}),l(`span`,{className:`mem-conv-turn-time`,title:S(t.timestamp,u(e)),children:C(t.timestamp,e)})]}),l(`div`,{className:`mem-conv-turn-content`,children:l(`bdi`,{children:t.content})})]},t.id)),j.turns.length===0&&l(`div`,{className:`mem-empty`,children:e(`mem.conv.noTurns`)})]})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title`,children:[l(ot,{size:14}),` `,e(`mem.settings.title`),` `,l(`span`,{className:`mem-beta`,style:{fontSize:10,fontWeight:600,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`1px 6px`,borderRadius:4,marginInlineStart:6,verticalAlign:`middle`},children:e(`mem.beta`)})]}),i(`div`,{className:`mem-setting-row`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.memory`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.memoryDesc`)})]}),l(`button`,{className:`mem-toggle${F?` mem-toggle-on`:``}`,disabled:I,onClick:async()=>{if(!F)B(`memory`);else{L(!0);try{let e=await p({memory_enabled:!1});_n(e.memory_enabled)}catch(t){n.system.warn(`Failed to disable memory`,t),X(e(`mem.toast.settingFailed`,{error:T(t)}),`error`)}finally{L(!1)}}},"aria-pressed":F,"aria-label":e(F?`mem.settings.memoryOn`:`mem.settings.memoryOff`),children:e.bare(F?`mem.on`:`mem.off`)})]}),z&&(()=>{let t={memory:{title:`mem.beta.memory.title`,description:`mem.beta.memory.desc`,bullets:[`mem.beta.memory.local`,`mem.beta.memory.lost`,`mem.beta.memory.disable`],buttonLabel:`mem.beta.memory.confirm`,onConfirm:async()=>{let t=await p({memory_enabled:!0});_n(t.memory_enabled),X(e(`mem.toast.memoryEnabled`),`info`)}},mcp:{title:`mem.beta.mcp.title`,description:`mem.beta.mcp.desc`,bullets:[`mem.beta.mcp.read`,`mem.beta.mcp.restart`,`mem.beta.mcp.debug`],buttonLabel:`mem.beta.mcp.confirm`,onConfirm:async()=>{let t=await p({mcp_memory_enabled:!0});yn(t.mcp_memory_enabled),X(e(`mem.toast.mcpEnabled`),`info`)}},discovery:{title:`mem.beta.discovery.title`,description:`mem.beta.discovery.desc`,bullets:[`mem.beta.discovery.collects`,`mem.beta.discovery.scans`,`mem.beta.discovery.local`],buttonLabel:`mem.beta.discovery.confirm`,onConfirm:async()=>{let t=await p({system_discovery_consent:!0});if(xn(t.system_discovery_consent),t.system_context_error)X(e(`mem.toast.discoveryScanFailed`,{error:t.system_context_error}),`error`);else{let n=t.system_context_refresh?.stored??0;X(e(`mem.toast.discoveryEnabled`,{n}),`info`)}Q()}}}[z];return i(s.Fragment,{children:[l(`div`,{"aria-hidden":`true`,style:{position:`fixed`,inset:0,background:`var(--bg-modal-overlay)`,zIndex:9998,backdropFilter:`blur(4px)`},onClick:()=>B(null)}),i(`div`,{ref:br,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`mem-beta-confirm-title`,"aria-describedby":`mem-beta-confirm-desc`,tabIndex:-1,style:{position:`fixed`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,zIndex:9999,background:`var(--bg-card)`,border:`1px solid var(--border)`,borderRadius:12,padding:`28px 32px`,maxWidth:420,width:`90vw`,boxShadow:`var(--shadow-lg)`},children:[i(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,marginBottom:16},children:[l(`span`,{className:`mem-beta`,style:{fontSize:11,fontWeight:700,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`3px 10px`,borderRadius:4},children:e(`mem.beta`)}),l(`h2`,{id:`mem-beta-confirm-title`,style:{fontSize:16,fontWeight:600,color:`var(--text-primary)`},children:e(t.title)})]}),l(`p`,{id:`mem-beta-confirm-desc`,style:{fontSize:13,lineHeight:1.6,color:`var(--text-secondary)`,margin:`0 0 8px`},children:e(t.description)}),l(`ul`,{style:{fontSize:13,lineHeight:1.7,color:`var(--text-secondary)`,margin:`0 0 24px`,paddingInlineStart:20},children:t.bullets.map(t=>l(`li`,{children:e(t)},t))}),i(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:10},children:[l(`button`,{className:`btn-secondary`,onClick:()=>B(null),style:{padding:`8px 20px`,fontSize:13,borderRadius:6},children:e(`mem.cancel`)}),l(`button`,{disabled:I,onClick:async()=>{L(!0);try{await t.onConfirm()}catch(t){n.system.warn(`Failed to update setting`,t),X(e(`mem.toast.settingFailed`,{error:T(t)}),`error`)}finally{L(!1),B(null)}},style:{padding:`8px 24px`,fontSize:13,fontWeight:600,borderRadius:6,border:`none`,cursor:`pointer`,background:`var(--accent-fill)`,color:`var(--accent-fill-text)`},children:e(t.buttonLabel)})]})]})]})})(),i(`div`,{className:`mem-setting-row`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.mcp`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.mcpDesc`)})]}),l(`button`,{className:`mem-toggle${vn?` mem-toggle-on`:``}`,disabled:I,onClick:async()=>{if(!vn)B(`mcp`);else{L(!0);try{let e=await p({mcp_memory_enabled:!1});yn(e.mcp_memory_enabled)}catch(t){n.system.warn(`Failed to update memory settings`,t),X(e(`mem.toast.settingFailed`,{error:T(t)}),`error`)}finally{L(!1)}}},"aria-label":e(`mem.settings.mcpToggle`),"aria-pressed":vn,children:e.bare(vn?`mem.on`:`mem.off`)})]}),i(`div`,{className:`mem-setting-row`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.discovery`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.discoveryDesc`)})]}),l(`button`,{className:`mem-toggle${bn?` mem-toggle-on`:``}`,disabled:I,onClick:async()=>{if(!bn)B(`discovery`);else{L(!0);try{let e=await p({system_discovery_consent:!1});xn(e.system_discovery_consent)}catch(t){n.system.warn(`Failed to update system discovery setting`,t),X(e(`mem.toast.settingFailed`,{error:T(t)}),`error`)}finally{L(!1)}}},"aria-label":e(`mem.settings.discoveryToggle`),"aria-pressed":bn,children:e.bare(bn?`mem.on`:`mem.off`)})]}),i(`div`,{className:`mem-setting-row mem-setting-row-danger`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.reinit`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.reinitDesc`)})]}),Tn?i(`div`,{className:`mem-delete-confirm`,children:[l(`span`,{className:`mem-delete-confirm-label`,children:e(`mem.settings.sure`)}),l(`button`,{className:`mem-btn-danger`,disabled:I,onClick:async()=>{L(!0);try{let t=await ue();t.system_context.error?X(e(`mem.toast.server`,{message:t.system_context.error}),`error`):X(e(`mem.toast.reinitialized`,{cleared:t.cleared.knowledge,stored:t.system_context.stored}),`info`),Q()}catch(t){n.system.warn(`Failed to reinitialize memory`,t),X(e(`mem.toast.reinitFailed`,{error:T(t)}),`error`)}finally{L(!1),En(!1)}},children:e(`mem.settings.reinitConfirm`)}),l(`button`,{className:`btn-secondary`,onClick:()=>En(!1),style:{padding:`6px 14px`,fontSize:12},children:e(`mem.cancel`)})]}):l(`button`,{className:`mem-btn-danger`,disabled:I,onClick:()=>En(!0),children:e(`mem.settings.reinitButton`)})]}),i(`div`,{className:`mem-setting-row mem-setting-row-danger`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.deleteAll`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.deleteAllDesc`)})]}),Sn?i(`div`,{className:`mem-delete-confirm`,children:[l(`span`,{className:`mem-delete-confirm-label`,children:e(`mem.settings.sure`)}),l(`button`,{className:`mem-btn-danger`,disabled:I,onClick:async()=>{L(!0);try{let t=await Me();X(e(`mem.toast.cleared`,{knowledge:t.knowledge,conversations:t.conversations}),`info`),Q()}catch(t){n.system.warn(`Failed to clear memory`,t),X(e(`mem.toast.clearFailed`,{error:T(t)}),`error`)}finally{L(!1),Cn(!1)}},children:e(`mem.settings.deleteConfirm`)}),l(`button`,{className:`btn-secondary`,onClick:()=>Cn(!1),style:{padding:`6px 14px`,fontSize:12},children:e(`mem.cancel`)})]}):l(`button`,{className:`mem-btn-danger`,disabled:I,onClick:()=>Cn(!0),children:e(`mem.settings.deleteButton`)})]})]}),_&&i(`div`,{className:`mem-db-footer`,children:[i(`span`,{children:[e(`mem.footer.database`),`: `,l(`bdi`,{dir:`ltr`,children:qe(_.db_size_bytes)}),_.knowledge?.avg_confidence!=null&&i(s.Fragment,{children:[` · `,e(`mem.footer.avgConfidence`,{n:_.knowledge.avg_confidence.toFixed(2)})]})]}),i(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[_.knowledge?.entity_count!=null&&_.knowledge.entity_count>0&&l(`span`,{children:e(`mem.footer.entities`,{n:_.knowledge.entity_count})}),_.knowledge?.sensitive_count!=null&&_.knowledge.sensitive_count>0&&i(`span`,{children:[l(ot,{size:10}),` `,e(`mem.footer.sensitive`,{n:_.knowledge.sensitive_count})]})]})]})]})}),V===`profile`&&i(`div`,{className:`mem-profile-grid`,children:[i(`div`,{className:`mem-profile-card`,children:[i(`div`,{className:`mem-profile-card-title`,children:[l(Ie,{size:16}),` `,e(`mem.disc.title`)]}),l(`p`,{className:`mem-profile-desc`,children:e(`mem.disc.desc`)}),l(`button`,{className:`btn-primary mem-profile-run-btn`,disabled:H===`running`||H===`saving`,onClick:Xr,children:H===`running`?i(s.Fragment,{children:[l(`div`,{className:`mem-spinner-sm`}),` `,e(`mem.running`)]}):e(`mem.disc.run`)}),Wn.length>0&&l(`div`,{className:`mem-log`,ref:qn,children:Wn.map((e,t)=>l(`div`,{className:`mem-log-line ${e.kind}`,children:e.server?l(`bdi`,{children:e.text}):e.text},t))}),(H===`review`||H===`saving`||H===`done`)&&G.length>0&&i(`div`,{className:`mem-review-section`,children:[l(`div`,{className:`mem-review-header`,children:e(`mem.review.title`)}),l(`div`,{className:`mem-review-list`,children:G.map((e,t)=>i(`label`,{className:`mem-review-item`,children:[l(`input`,{type:`checkbox`,checked:e._checked,disabled:H===`saving`||H===`done`,onChange:()=>{K(e=>e.map((e,n)=>n===t?{...e,_checked:!e._checked}:e))}}),l(`bdi`,{className:`mem-review-content`,children:e.content}),l(`span`,{className:`mem-source-badge`,children:e._source_name?l(`bdi`,{children:e._source_name}):l(w,{value:e.category,keys:Et})}),i(`span`,{className:`mem-conf-badge`,children:[Math.round(e.confidence*100),`%`]})]},t))}),i(`div`,{className:`mem-review-actions`,children:[l(`button`,{className:`btn-primary`,disabled:H===`saving`||H===`done`||G.filter(e=>e._checked).length===0,onClick:Zr,children:H===`saving`?i(s.Fragment,{children:[l(`div`,{className:`mem-spinner-sm`}),` `,e(`mem.saving`)]}):e(`mem.review.saveSelected`,{n:G.filter(e=>e._checked).length})}),i(`span`,{className:`mem-review-select-links`,children:[l(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>K(e=>e.map(e=>({...e,_checked:!0}))),children:e(`mem.review.selectAll`)}),` / `,l(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>K(e=>e.map(e=>({...e,_checked:!1}))),children:e(`mem.review.none`)})]})]})]}),H===`done`&&Gn!==null&&i(`div`,{className:`mem-profile-success`,children:[l(m,{size:14}),` `,e(`mem.disc.saved`,{n:Gn})]}),H===`review`&&G.length===0&&l(`div`,{className:`mem-profile-empty`,children:e(`mem.disc.empty`)})]}),i(`div`,{className:`mem-profile-card`,children:[i(`div`,{className:`mem-profile-card-title`,children:[l(Re,{size:16}),` `,e(`mem.inf.title`)]}),l(`p`,{className:`mem-profile-desc`,children:e(`mem.inf.desc`)}),l(`p`,{className:`mem-profile-note`,children:e(`mem.inf.note`)}),i(`label`,{className:`mem-profile-checkbox`,children:[l(`input`,{type:`checkbox`,checked:er,onChange:e=>tr(e.target.checked),disabled:q===`running`||q===`saving`}),e(`mem.inf.browser`)]}),l(`button`,{className:`btn-primary mem-profile-run-btn`,disabled:q===`running`||q===`saving`,onClick:Qr,children:q===`running`?i(s.Fragment,{children:[l(`div`,{className:`mem-spinner-sm`}),` `,e(`mem.running`)]}):e(`mem.inf.run`)}),Xn.length>0&&l(`div`,{className:`mem-log`,ref:nr,children:Xn.map((e,t)=>l(`div`,{className:`mem-log-line ${e.kind}`,children:e.server?l(`bdi`,{children:e.text}):e.text},t))}),(q===`review`||q===`saving`||q===`done`)&&Y.length>0&&i(`div`,{className:`mem-review-section`,children:[l(`div`,{className:`mem-review-header`,children:e(`mem.review.title`)}),l(`div`,{className:`mem-review-list`,children:Y.map((e,t)=>i(`label`,{className:`mem-review-item`,children:[l(`input`,{type:`checkbox`,checked:e._checked,disabled:q===`saving`||q===`done`,onChange:()=>{Zn(e=>e.map((e,n)=>n===t?{...e,_checked:!e._checked}:e))}}),l(`bdi`,{className:`mem-review-content`,children:e.content}),l(`span`,{className:`mem-domain-badge ${Mt[e.domain]||`gray`}`,children:l(w,{value:e.domain,keys:jt})}),i(`span`,{className:`mem-conf-badge`,children:[Math.round(e.confidence*100),`%`]})]},t))}),i(`div`,{className:`mem-review-actions`,children:[l(`button`,{className:`btn-primary`,disabled:q===`saving`||q===`done`||Y.filter(e=>e._checked).length===0,onClick:$r,children:q===`saving`?i(s.Fragment,{children:[l(`div`,{className:`mem-spinner-sm`}),` `,e(`mem.saving`)]}):e(`mem.review.saveSelected`,{n:Y.filter(e=>e._checked).length})}),i(`span`,{className:`mem-review-select-links`,children:[l(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>Zn(e=>e.map(e=>({...e,_checked:!0}))),children:e(`mem.review.selectAll`)}),` / `,l(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>Zn(e=>e.map(e=>({...e,_checked:!1}))),children:e(`mem.review.none`)})]})]})]}),q===`done`&&Qn!==null&&i(`div`,{className:`mem-profile-success`,children:[l(m,{size:14}),` `,e(`mem.inf.saved`,{n:Qn})]}),q===`review`&&Y.length===0&&l(`div`,{className:`mem-profile-empty`,children:e(`mem.inf.empty`)})]})]}),V===`goals`&&i(`div`,{className:`mem-goals-tab`,children:[l(`div`,{className:`mem-goals-stats-row`,children:[`queued`,`in_progress`,`completed`,`failed`].map(t=>i(`div`,{className:`mem-goals-stat-pill mem-goal-status-${t.replace(`_`,`-`)}`,children:[l(`span`,{className:`mem-goals-stat-n`,children:Mn?.goals[t]??0}),l(`span`,{className:`mem-goals-stat-label`,children:e(Dt[t])})]},t))}),An.filter(e=>e.status===`pending_approval`).length>0&&i(`div`,{className:`mem-goals-approval-banner`,children:[i(`div`,{className:`mem-goals-approval-title`,children:[l(te,{size:14}),` `,e(`mem.goals.suggested`,{n:An.filter(e=>e.status===`pending_approval`).length})]}),An.filter(e=>e.status===`pending_approval`).map(t=>i(`div`,{className:`mem-goals-approval-item`,children:[i(`div`,{className:`mem-goals-approval-text`,children:[l(`strong`,{children:l(`bdi`,{children:t.title})}),l(`bdi`,{children:t.description})]}),i(`div`,{className:`mem-goals-approval-actions`,children:[l(`button`,{className:`btn-danger-sm`,onClick:()=>Ar(()=>xe(t.id),`mem.goals.rejectFailed`),children:e(`mem.goals.reject`)}),l(`button`,{className:`btn-secondary`,onClick:()=>Ar(()=>Ue(t.id),`mem.goals.acceptFailed`),children:e(`mem.goals.accept`)})]})]},t.id))]}),l(`div`,{className:`mem-goals-toolbar`,children:i(`button`,{className:`btn-primary`,onClick:()=>Vn(e=>!e),children:[l(Be,{size:14}),` `,e(`mem.goals.new`)]})}),Bn&&i(`div`,{className:`mem-goals-add-form`,children:[l(`input`,{className:`mem-input`,placeholder:e(`mem.goals.titlePlaceholder`),value:Hn.title,onChange:e=>Un(t=>({...t,title:e.target.value}))}),l(`textarea`,{className:`mem-input`,placeholder:e(`mem.goals.descPlaceholder`),rows:2,value:Hn.description,onChange:e=>Un(t=>({...t,description:e.target.value}))}),i(`div`,{className:`mem-goals-form-row`,children:[i(`select`,{className:`mem-select`,value:Hn.priority,onChange:e=>Un(t=>({...t,priority:e.target.value})),children:[l(`option`,{value:`low`,children:e(`mem.goals.priorityLow`)}),l(`option`,{value:`medium`,children:e(`mem.goals.priorityMedium`)}),l(`option`,{value:`high`,children:e(`mem.goals.priorityHigh`)})]}),l(`button`,{className:`btn-primary`,onClick:()=>{Hn.title.trim()&&Ar(async()=>{await Ze(Hn),Un({title:``,description:``,priority:`medium`}),Vn(!1)},`mem.goals.createFailed`)},children:e(`mem.goals.create`)}),l(`button`,{className:`btn-secondary`,onClick:()=>Vn(!1),children:e(`mem.cancel`)})]})]}),Pn?i(`div`,{className:`mem-loading`,children:[l(`div`,{className:`mem-spinner`}),` `,e(`mem.goals.loading`)]}):An.filter(e=>e.status!==`pending_approval`&&e.status!==`rejected`).length===0?i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(st,{size:32})}),l(`p`,{children:e(`mem.goals.empty`)})]}):l(`div`,{className:`mem-goals-list`,children:An.filter(e=>e.status!==`pending_approval`&&e.status!==`rejected`).map(t=>i(`div`,{className:`mem-goal-card mem-goal-status-${t.status.replace(`_`,`-`)}`,children:[i(`div`,{className:`mem-goal-header`,role:`button`,tabIndex:0,"aria-expanded":In===t.id,onClick:()=>Ln(e=>e===t.id?null:t.id),onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),Ln(e=>e===t.id?null:t.id))},children:[i(`div`,{className:`mem-goal-header-left`,children:[l(`span`,{className:`mem-goal-status-dot status-${t.status.replace(`_`,`-`)}`}),l(`bdi`,{className:`mem-goal-title`,children:t.title}),l(`span`,{className:`mem-goal-priority mem-priority-${t.priority}`,children:l(w,{value:t.priority,keys:Ot})}),t.source!==`user`&&i(`span`,{className:`mem-goal-source-badge`,children:[l(te,{size:10}),` `,l(w,{value:t.source,keys:kt})]})]}),i(`div`,{className:`mem-goal-header-right`,children:[i(`span`,{className:`mem-goal-task-count`,children:[l(Qe,{size:12}),i(`bdi`,{dir:`ltr`,children:[t.tasks.filter(e=>e.status===`completed`).length,`/`,t.tasks.length]})]}),t.status===`queued`&&l(`button`,{className:`mem-goal-action-btn mem-goal-cancel-btn`,onClick:e=>{e.stopPropagation(),Ar(()=>ze(t.id),`mem.goals.cancelFailed`)},children:e(`mem.cancel`)}),Rn===t.id?l(`button`,{className:`mem-goal-action-btn mem-goal-delete-btn mem-goal-delete-confirm`,onClick:e=>{e.stopPropagation(),zn(null),Ar(()=>Xe(t.id),`mem.goals.deleteFailed`)},children:e(`mem.row.deleteConfirm`)}):l(`button`,{className:`mem-goal-action-btn mem-goal-delete-btn`,"aria-label":e(`mem.goals.deleteAria`,{title:t.title}),onClick:e=>{e.stopPropagation(),zn(t.id)},children:l(ke,{size:12})}),l(we,{size:14,className:In===t.id?`mem-chevron-open`:``})]})]}),In===t.id&&i(`div`,{className:`mem-goal-body`,children:[t.description&&l(`p`,{className:`mem-goal-desc`,children:l(`bdi`,{children:t.description})}),t.progress_notes&&l(`p`,{className:`mem-goal-progress`,children:l(`bdi`,{children:t.progress_notes})}),t.tasks.length>0?l(`div`,{className:`mem-task-list`,children:t.tasks.map(e=>i(`div`,{className:`mem-task-row mem-task-status-${e.status}`,children:[l(`span`,{className:`mem-task-dot status-${e.status}`}),l(`bdi`,{className:`mem-task-desc`,children:e.description}),l(`span`,{className:`mem-task-status-label`,children:l(w,{value:e.status,keys:Dt})}),e.result&&l(`bdi`,{className:`mem-task-result`,children:e.result})]},e.id))}):l(`p`,{className:`mem-goal-no-tasks`,children:e(`mem.goals.noTasks`)})]})]},t.id))})]})]}),Wt.length>0&&l(`div`,{className:`mem-toast-container`,"aria-live":`polite`,children:Wt.map(e=>i(`div`,{className:`mem-toast mem-toast-${e.type}`,role:`status`,children:[e.type===`success`&&l(m,{size:14}),e.type===`error`&&l(Ke,{size:14}),e.type===`info`&&l(Se,{size:14}),l(`span`,{children:e.text})]},e.id))})]})}export{Nt as MemoryDashboard};
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{G as t,N as n,W as r,c as i,i as a,j as o,o as s,r as c,s as l,t as u,u as d}from"./useT-DmcuCJlO.js";import{n as ee,t as te}from"./zap-CORjwTA2.js";import{A as ne,At as re,B as ie,Bt as f,C as ae,D as oe,E as se,Et as ce,F as le,G as p,H as ue,I as de,It as m,L as fe,M as pe,Mt as me,N as he,Nt as h,O as ge,P as _e,Pt as g,R as ve,S as ye,T as be,U as xe,Ut as Se,V as Ce,Vt as we,W as Te,X as Ee,_ as De,b as Oe,ct as ke,dt as Ae,g as je,h as Me,ht as Ne,it as Pe,j as Fe,jt as Ie,k as Le,lt as Re,m as ze,mt as Be,nt as Ve,ot as He,p as Ue,pt as We,rt as Ge,st as Ke,t as qe,v as Je,w as Ye,x as Xe,y as Ze,yt as Qe,z as $e,zt as et}from"./index-DBKyXg4y.js";var _={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};_.node;var tt=r(_),nt={name:`git-merge`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]};nt.node;var rt=r(nt),v={name:`shield-off`,size:24,node:[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]};v.node;var it=r(v),at={name:`shield`,size:24,node:[[`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`}]]};at.node;var ot=r(at),y={name:`target`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};y.node;var st=r(y),ct={name:`trending-up`,size:24,node:[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]};ct.node;var lt=r(ct),ut={name:`user`,size:24,node:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]};ut.node;var dt=r(ut),b=e(t(),1),ft=[{title:`mem.about.group.preferences`,categories:[`preference`]},{title:`mem.about.group.about`,categories:[`fact`,`profile`,`skill`]},{title:`mem.about.group.reminders`,categories:[`reminder`]},{title:`mem.about.group.notes`,categories:[`note`]}],pt={user:`mem.source.user`,tool:`mem.source.tool`,llm_extract:`mem.source.llm_extract`,consolidation:`mem.source.consolidation`,inferred:`mem.source.inferred`,discovery:`mem.source.discovery`};function mt(e){return pt[e]??`mem.source.other`}function ht(e,t){let n=new Date(e);if(Number.isNaN(n.getTime()))return null;let r=Math.floor((Date.now()-n.getTime())/864e5);return r<=0?o(`mem.day.today`):r===1?o(`mem.day.yesterday`):r<30?o(`mem.day.daysAgo`,{n:r}):n.toLocaleDateString(u(t),{month:`short`,day:`numeric`,year:`numeric`})}function gt(e,t=new Date,n=c){let r=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),i=r?new Date(+r[1],r[2]-1,+r[3]):new Date(e);if(Number.isNaN(i.getTime()))return null;let a=i.getHours()===0&&i.getMinutes()===0&&i.getSeconds()===0,o=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime(),s=a?i.getTime()<o:i.getTime()<t.getTime(),l=i.toLocaleString(u(n),{weekday:`short`,month:`short`,day:`numeric`,...i.getFullYear()===t.getFullYear()?{}:{year:`numeric`},...a?{}:{hour:`numeric`,minute:`2-digit`}});return{text:n(s?`mem.due.past`:`mem.due.upcoming`,{when:l}),past:s}}function _t({memoryEnabled:e,reloadKey:t,onChanged:r,onOpenAdvanced:c,showToast:u}){let d=a(),[ee,te]=(0,b.useState)(null),[ne,re]=(0,b.useState)(null),[ie,f]=(0,b.useState)(null),[oe,se]=(0,b.useState)(``),[le,p]=(0,b.useState)([]),[ue,de]=(0,b.useState)(new Set),[m,fe]=(0,b.useState)(``),[pe,me]=(0,b.useState)(`fact`),[he,h]=(0,b.useState)(null),_e=(0,b.useRef)(0),g=(0,b.useCallback)(async()=>{let e=++_e.current;try{let t=await ge({about_user:!0,include_sensitive:!0,sort_by:`updated_at`,order:`desc`,limit:200});if(e!==_e.current)return;te(t.items),re(null)}catch(t){if(e!==_e.current)return;n.system.warn(`Failed to load what GAIA knows about the user`,t),re(t instanceof Error?t.message:String(t))}},[]);(0,b.useEffect)(()=>{g()},[g,t]);let ve=(0,b.useCallback)(async e=>{let t=oe.trim();if(!t||t===e.content)f(null);else{h(e.id);try{await ae(e.id,{content:t}),f(null),u(d(`mem.about.updated`),`success`),await g(),r()}catch(e){n.system.error(`Failed to edit memory`,e),u(d(`mem.about.editFailed`,{error:x(e)}),`error`)}finally{h(null)}}},[oe,g,r,u,d]),be=(0,b.useCallback)(async e=>{h(e.id);try{await ye(e.id),_e.current++,te(t=>(t??[]).filter(t=>t.id!==e.id)),p(t=>[e,...t]),r()}catch(e){n.system.error(`Failed to forget memory`,e),u(d(`mem.about.forgetFailed`,{error:x(e)}),`error`)}finally{h(null)}},[r,u,d]),xe=(0,b.useCallback)(async e=>{h(e.id);try{await Oe({content:e.content,category:e.category,domain:e.domain??void 0,context:e.context,entity:e.entity??void 0,sensitive:e.sensitive,due_at:e.due_at??void 0}),p(t=>t.filter(t=>t.id!==e.id)),await g(),r()}catch(e){n.system.error(`Failed to restore memory`,e),u(d(`mem.about.restoreFailed`,{error:x(e)}),`error`)}finally{h(null)}},[g,r,u,d]),Se=(0,b.useCallback)(async()=>{let e=m.trim();if(e){h(`new`);try{await Oe({content:e,category:pe}),fe(``),u(d(`mem.about.saved`),`success`),await g(),r()}catch(e){n.system.error(`Failed to add memory`,e),u(d(`mem.about.addFailed`,{error:x(e)}),`error`)}finally{h(null)}}},[m,pe,g,r,u,d]);if(!e)return i(`div`,{className:`mem-about`,children:[l(`h2`,{className:`mem-about-title`,children:d(`mem.about.title`)}),i(`div`,{className:`mem-about-empty`,children:[l(`p`,{children:d(`mem.about.off`)}),l(`button`,{className:`btn-secondary`,onClick:c,children:d(`mem.about.turnOn`)})]})]});let Ce=ft.map(e=>({...e,rows:(ee??[]).filter(t=>e.categories.includes(t.category))})).filter(e=>e.rows.length>0);return i(`div`,{className:`mem-about`,children:[l(`h2`,{className:`mem-about-title`,children:d(`mem.about.title`)}),l(`p`,{className:`mem-about-intro`,children:d(`mem.about.intro`)}),i(`form`,{className:`mem-about-add`,onSubmit:e=>{e.preventDefault(),Se()},children:[l(`input`,{className:`mem-input`,placeholder:d(`mem.about.addPlaceholder`),"aria-label":d(`mem.about.addLabel`),value:m,onChange:e=>fe(e.target.value)}),i(`select`,{className:`mem-select`,"aria-label":d(`mem.about.kind`),value:pe,onChange:e=>me(e.target.value),children:[l(`option`,{value:`fact`,children:d(`mem.about.group.about`)}),l(`option`,{value:`preference`,children:d(`mem.about.kind.preference`)}),l(`option`,{value:`reminder`,children:d(`mem.about.kind.reminder`)}),l(`option`,{value:`note`,children:d(`mem.about.kind.note`)})]}),i(`button`,{className:`btn-primary`,type:`submit`,disabled:!m.trim()||he===`new`,children:[l(Be,{size:14}),` `,d(`mem.about.add`)]})]}),le.map(e=>i(`div`,{className:`mem-about-forgotten`,role:`status`,children:[l(`span`,{children:e.sensitive?d(`mem.about.forgottenSensitive`):d(`mem.about.forgotten`,{content:e.content})}),i(`button`,{className:`mem-about-link`,disabled:he===e.id,onClick:()=>xe(e),children:[l(He,{size:12}),` `,d(`mem.about.undo`)]})]},e.id)),ne?i(`div`,{className:`mem-about-empty`,children:[l(`p`,{children:d(`mem.about.loadFailed`,{error:ne})}),l(`button`,{className:`btn-secondary`,onClick:g,children:d(`mem.about.retry`)})]}):ee===null?i(`div`,{className:`mem-loading`,children:[l(`div`,{className:`mem-spinner`}),` `,d(`mem.loading`)]}):Ce.length===0?i(`div`,{className:`mem-about-empty`,children:[l(`p`,{children:d(`mem.about.empty`)}),l(`p`,{className:`mem-about-hint`,children:d(`mem.about.emptyHint`)})]}):Ce.map(e=>i(`section`,{className:`mem-about-group`,"aria-label":d(e.title),children:[l(`h3`,{className:`mem-about-group-title`,children:d(e.title)}),l(`ul`,{className:`mem-about-list`,children:e.rows.map(e=>{let t=e.sensitive&&!ue.has(e.id),n=e.due_at?gt(e.due_at,new Date,d):null,r=ht(e.updated_at,d),a=t?o(`mem.about.sensitiveMemory`):e.content;return l(`li`,{className:`mem-about-item`,children:ie===e.id?i(`form`,{className:`mem-about-edit`,onSubmit:t=>{t.preventDefault(),ve(e)},children:[l(`textarea`,{className:`mem-input`,"aria-label":d(`mem.about.editLabel`),rows:2,autoFocus:!0,value:oe,onChange:e=>se(e.target.value),onKeyDown:t=>{t.key===`Escape`&&(t.stopPropagation(),f(null)),t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),ve(e))}}),i(`div`,{className:`mem-about-edit-actions`,children:[l(`button`,{className:`btn-primary`,type:`submit`,disabled:he===e.id,children:d(`mem.about.save`)}),l(`button`,{className:`btn-secondary`,type:`button`,onClick:()=>f(null),children:d(`mem.about.cancel`)})]})]}):i(s.Fragment,{children:[i(`div`,{className:`mem-about-text`,children:[t?i(`button`,{className:`mem-about-link`,onClick:()=>de(t=>new Set(t).add(e.id)),children:[l(ce,{size:12}),` `,d(`mem.about.showSensitive`)]}):l(`bdi`,{children:e.content}),n&&l(`span`,{className:`mem-about-due${n.past?` is-overdue`:``}`,children:n.text}),l(`span`,{className:`mem-about-meta`,children:r===null?d(mt(e.source)):d(`mem.about.meta`,{source:o(mt(e.source)),when:r})})]}),i(`div`,{className:`mem-about-actions`,children:[l(`button`,{className:`mem-about-btn`,"aria-label":d(`mem.about.editAria`,{name:a}),title:d(`mem.about.edit`),onClick:()=>{f(e.id),se(e.content)},children:l(Ne,{size:14})}),i(`button`,{className:`mem-about-btn mem-about-btn-remove`,"aria-label":d(`mem.about.forgetAria`,{name:a}),title:d(`mem.about.forget`),disabled:he===e.id,onClick:()=>be(e),children:[l(ke,{size:14}),` `,d(`mem.about.forget`)]})]})]})},e.id)})})]},e.title))]})}function x(e){return e instanceof Error?e.message:String(e)}function vt(e,t){if(!e)return`—`;try{let n=new Date(e);if(isNaN(n.getTime()))return`—`;let r={month:`short`,day:`numeric`};return n.getFullYear()!==new Date().getFullYear()&&(r.year=`numeric`),n.toLocaleDateString(t,r)}catch{return`—`}}function S(e,t){if(!e)return``;try{let n=new Date(e);return isNaN(n.getTime())?``:n.toLocaleString(t,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}catch{return``}}function C(e,t){if(!e)return`—`;try{let n=new Date(e);if(isNaN(n.getTime()))return`—`;let r=Date.now(),i=n.getTime()-r,a=Math.abs(i),o=Math.floor(a/1e3),s=Math.floor(a/6e4),c=Math.floor(a/36e5),l=Math.floor(a/864e5);return i<0?o<5?t(`time.justNow`):o<60?t(`mem.rel.secondsAgo`,{n:o}):c===0?t(`time.minutesAgo`,{n:s}):l===0?t(`time.hoursAgo`,{n:c}):l===1?t(`time.yesterday`):l<30?t(`time.daysAgo`,{n:l}):S(e,u(t)):o<5?t(`mem.rel.now`):o<60?t(`mem.rel.inSeconds`,{n:o}):c===0?t(`mem.rel.inMinutes`,{n:s}):l===0?t(`mem.rel.inHours`,{n:c}):l===1?t(`mem.rel.tomorrow`):l<30?t(`mem.rel.inDays`,{n:l}):S(e,u(t))}catch{return`—`}}function yt(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function bt(e){try{return new Date(e).getTime()<Date.now()}catch{return!1}}function xt(e){return e>=.7?`high`:e>=.4?`medium`:`low`}function St(e){return e>=.9?`high`:e>=.7?`medium`:`low`}function Ct(e,t,n){let r=vt(e,n),i=vt(t,n);return r===`—`&&i===`—`?``:r===i?r:`${r} \u2013 ${i}`}function wt(e){if(e.length===0)return 0;let t=new Date().toISOString().slice(0,10),n=e.find(e=>e.date===t);return n?n.knowledge_added:0}var Tt=[`fact`,`preference`,`error`,`skill`,`note`,`reminder`],Et={fact:`mem.cat.fact`,preference:`mem.cat.preference`,error:`mem.cat.error`,skill:`mem.cat.skill`,note:`mem.cat.note`,reminder:`mem.cat.reminder`},Dt={pending_approval:`mem.status.pending_approval`,queued:`mem.status.queued`,in_progress:`mem.status.in_progress`,completed:`mem.status.completed`,failed:`mem.status.failed`,rejected:`mem.status.rejected`,cancelled:`mem.status.cancelled`,blocked:`mem.status.blocked`},Ot={low:`mem.priority.low`,medium:`mem.priority.medium`,high:`mem.priority.high`},kt={agent_inferred:`mem.goals.source.agent_inferred`,agent_scheduled:`mem.goals.source.agent_scheduled`},At={user:`mem.role.user`,assistant:`mem.role.assistant`},jt={work:`mem.domain.work`,technical:`mem.domain.technical`,personal:`mem.domain.personal`,general:`mem.domain.general`};function w({value:e,keys:t}){let n=a(),r=t[e];return r?l(s.Fragment,{children:n(r)}):l(`bdi`,{children:e})}function T(e){return e instanceof Error?e.message:String(e)}var Mt={work:`blue`,technical:`purple`,personal:`green`,general:`gray`};function Nt(){let e=a(),{setShowMemoryDashboard:t,sessions:r,setCurrentSession:c}=d(),ce=(0,b.useMemo)(()=>new Map(r.map(e=>[e.id,e.title])),[r]),He=e=>ce.get(e)||`${e.slice(0,8)}...`,[_,nt]=(0,b.useState)(null),[v,at]=(0,b.useState)([]),[y,ct]=(0,b.useState)(null),[ut,ft]=(0,b.useState)([]),[pt,mt]=(0,b.useState)([]),[ht,gt]=(0,b.useState)([]),[x,vt]=(0,b.useState)(null),[Nt,Pt]=(0,b.useState)([]),[Ft,It]=(0,b.useState)(!0),[Lt,Rt]=(0,b.useState)(!1),[zt,Bt]=(0,b.useState)(null),[Vt,E]=(0,b.useState)(!1),[Ht,Ut]=(0,b.useState)(null),[Wt,Gt]=(0,b.useState)([]),Kt=(0,b.useRef)(0),[D,qt]=(0,b.useState)([]),[Jt,Yt]=(0,b.useState)(``),[Xt,Zt]=(0,b.useState)(``),[Qt,$t]=(0,b.useState)(``),[O,en]=(0,b.useState)(`updated_at`),[tn,nn]=(0,b.useState)(`desc`),[k,A]=(0,b.useState)(0),[rn,an]=(0,b.useState)(!1),[on,sn]=(0,b.useState)(``),[cn,ln]=(0,b.useState)(null),un=(0,b.useRef)(null),[j,dn]=(0,b.useState)(null),[fn,pn]=(0,b.useState)(!1),[M,mn]=(0,b.useState)(null),[N,P]=(0,b.useState)({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),[hn,gn]=(0,b.useState)(new Set),[F,_n]=(0,b.useState)(!1),[vn,yn]=(0,b.useState)(!1),[bn,xn]=(0,b.useState)(!1),[I,L]=(0,b.useState)(!1),[Sn,Cn]=(0,b.useState)(!1),[R,wn]=(0,b.useState)(null),[Tn,En]=(0,b.useState)(!1),[z,B]=(0,b.useState)(null),[V,Dn]=(0,b.useState)(`about`),[On,kn]=(0,b.useState)(0),[An,jn]=(0,b.useState)([]),[Mn,Nn]=(0,b.useState)(null),[Pn,Fn]=(0,b.useState)(!1),[In,Ln]=(0,b.useState)(null),[Rn,zn]=(0,b.useState)(null),[Bn,Vn]=(0,b.useState)(!1),[Hn,Un]=(0,b.useState)({title:``,description:``,priority:`medium`}),[H,U]=(0,b.useState)(`idle`),[Wn,W]=(0,b.useState)([]),[G,K]=(0,b.useState)([]),[Gn,Kn]=(0,b.useState)(null),qn=(0,b.useRef)(null),Jn=(0,b.useRef)(null),[q,Yn]=(0,b.useState)(`idle`),[Xn,J]=(0,b.useState)([]),[Y,Zn]=(0,b.useState)([]),[Qn,$n]=(0,b.useState)(null),[er,tr]=(0,b.useState)(!1),nr=(0,b.useRef)(null),rr=(0,b.useRef)(null),[ir,ar]=(0,b.useState)(30),[or,sr]=(0,b.useState)(!1),[cr,lr]=(0,b.useState)(!1),[ur,dr]=(0,b.useState)(!1),[fr,pr]=(0,b.useState)(!1),[mr,hr]=(0,b.useState)(!1),[gr,_r]=(0,b.useState)(!1),vr=(0,b.useRef)(null),yr=(0,b.useRef)(null),br=(0,b.useRef)(null),X=(0,b.useCallback)((e,t=`info`)=>{let n=++Kt.current;Gt(r=>[...r,{id:n,text:e,type:t}]),setTimeout(()=>{Gt(e=>e.filter(e=>e.id!==n))},4e3)},[]);(0,b.useEffect)(()=>{if(!Vt)return;let e=e=>{yr.current&&!yr.current.contains(e.target)&&E(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[Vt]),Ve(!0,()=>{z?B(null):Sn?Cn(!1):Tn?En(!1):j?dn(null):Vt?E(!1):fn||M?(pn(!1),mn(null)):Ht?Ut(null):t(!1)}),Ee(br,!!z),(0,b.useEffect)(()=>{if(!z)return;let e=br.current;if(!e)return;let t=document.activeElement;return e.focus(),()=>{t?.focus()}},[z]);let xr=(0,b.useCallback)(async()=>{try{let e=await pe();nt(e)}catch(e){n.system.warn(`Failed to load memory stats`,e)}},[]),Sr=(0,b.useCallback)(async()=>{try{let e=await Le(ir);at(e)}catch(e){n.system.warn(`Failed to load memory activity`,e)}},[ir]),Z=(0,b.useCallback)(async()=>{try{let e=await ge({category:D.length>0?D:void 0,context:Jt||void 0,entity:Xt||void 0,search:Qt||void 0,sort_by:O,order:tn,offset:k,limit:15,include_sensitive:!0,include_superseded:rn});ct(e)}catch(e){n.system.warn(`Failed to load knowledge`,e)}},[D,Jt,Xt,Qt,O,tn,k,rn]),Cr=(0,b.useCallback)(async()=>{try{let e=await he();ft(e)}catch(e){n.system.warn(`Failed to load tool summary`,e)}},[]),wr=(0,b.useCallback)(async()=>{try{let e=await ne(20);mt(e)}catch(e){n.system.warn(`Failed to load conversations`,e)}},[]),Tr=(0,b.useCallback)(async()=>{try{let e=await _e(7);gt(e)}catch(e){n.system.warn(`Failed to load upcoming items`,e)}},[]),Er=(0,b.useCallback)(async()=>{try{let e=await be();vt(e)}catch(e){n.system.warn(`Failed to load embedding coverage`,e)}},[]),Dr=(0,b.useCallback)(async()=>{try{let e=await se();Pt(e||[])}catch(e){n.system.warn(`Failed to load entities`,e)}},[]),Or=(0,b.useCallback)(async()=>{try{let e=await Fe();yn(e.mcp_memory_enabled),_n(e.memory_enabled),xn(e.system_discovery_consent)}catch(e){n.system.warn(`Failed to load memory settings`,e)}},[]),kr=(0,b.useCallback)(async()=>{Fn(!0);try{let[e,t]=await Promise.all([le(),oe()]);jn(e.goals),Nn(t)}catch(e){n.system.warn(`Failed to load goals`,e)}finally{Fn(!1)}},[]),Ar=(0,b.useCallback)(async(t,r)=>{try{await t()}catch(t){n.system.error(`Goal action failed (${r})`,t),X(e(`mem.goals.failed`,{what:o(r),error:T(t)}),`error`);return}kr()},[kr,X,e]);(0,b.useEffect)(()=>{if(!Rn)return;let e=setTimeout(()=>zn(null),3e3);return()=>clearTimeout(e)},[Rn]);let Q=(0,b.useCallback)(async()=>{It(!0),Rt(!1);try{await Promise.all([xr(),Sr(),Z(),Cr(),wr(),Tr(),Er(),Dr(),Or(),kr()]),kn(e=>e+1)}catch(e){Rt(!0),n.system.error(`Memory dashboard load failed`,e)}finally{It(!1)}},[xr,Sr,Z,Cr,wr,Tr,Er,Dr,Or,kr]);(0,b.useEffect)(()=>{Q()},[Q]),(0,b.useEffect)(()=>{Z()},[Z]);let jr=(0,b.useRef)(!0);(0,b.useEffect)(()=>{jr.current?jr.current=!1:Sr()},[Sr]);let Mr=(0,b.useCallback)(e=>{$t(e),_r(!0),vr.current&&clearTimeout(vr.current),vr.current=setTimeout(()=>{A(0),_r(!1)},300)},[]),Nr=(0,b.useCallback)(()=>{Z(),xr(),Er(),Tr(),Dr()},[Z,xr,Er,Tr,Dr]),$=(0,b.useCallback)(()=>{Nr(),kn(e=>e+1)},[Nr]),Pr=(0,b.useCallback)(async()=>{if(N.content.trim())try{let t=await Oe({content:N.content,category:N.category,domain:N.domain||void 0,context:N.context,entity:N.entity||void 0,sensitive:N.sensitive,due_at:N.due_at||void 0});pn(!1),P({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),$(),n.ui.info(`Created new knowledge entry`),t?.embedded===!1?X(t.embed_error?e(`mem.toast.server`,{message:t.embed_error}):e(`mem.toast.notEmbedded`),`error`):X(e(`mem.toast.created`),`success`)}catch(t){n.system.error(`Failed to create knowledge`,t),X(e(`mem.toast.createFailed`,{error:T(t)}),`error`)}},[N,$,X,e]),Fr=(0,b.useCallback)(async()=>{if(M&&N.content.trim())try{let t=await ae(M,{content:N.content,category:N.category,domain:N.domain||void 0,context:N.context,entity:N.entity||void 0,sensitive:N.sensitive,due_at:N.due_at||void 0});mn(null),P({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),$(),n.ui.info(`Updated knowledge ${M}`),t?.embedded===!1?X(t.embed_error?e(`mem.toast.server`,{message:t.embed_error}):e(`mem.toast.notEmbedded`),`error`):X(e(`mem.toast.updated`),`success`)}catch(t){n.system.error(`Failed to update knowledge`,t),X(e(`mem.toast.updateFailed`,{error:T(t)}),`error`)}},[M,N,$,X,e]),Ir=(0,b.useCallback)(async t=>{if(R!==t)wn(t);else{wn(null);try{await ye(t),$(),n.ui.info(`Deleted knowledge ${t}`),X(e(`mem.toast.deleted`),`info`)}catch(t){n.system.error(`Failed to delete knowledge`,t),X(e(`mem.toast.deleteFailed`,{error:T(t)}),`error`)}}},[R,$,X,e]);(0,b.useEffect)(()=>{if(!R)return;let e=setTimeout(()=>wn(null),3e3);return()=>clearTimeout(e)},[R]);let Lr=(0,b.useCallback)(async t=>{try{await ae(t.id,{sensitive:!t.sensitive}),Z(),n.ui.info(`Toggled sensitive for ${t.id}: ${!t.sensitive}`),X(e(t.sensitive?`mem.toast.unmarkedSensitive`:`mem.toast.markedSensitive`),`info`)}catch(t){n.system.error(`Failed to toggle sensitive`,t),X(e(`mem.toast.sensitiveFailed`,{error:T(t)}),`error`)}},[Z,X,e]),Rr=(0,b.useCallback)(e=>{mn(e.id),pn(!1),P({content:e.content,category:e.category,domain:e.domain||``,context:e.context,entity:e.entity||``,sensitive:e.sensitive,due_at:e.due_at||``})},[]),zr=(0,b.useCallback)(t=>{navigator.clipboard.writeText(t).then(()=>X(e(`mem.toast.idCopied`),`info`),r=>{n.ui.warn(`Couldn't copy knowledge ID ${t}`,r),X(e(`mem.toast.copyFailed`,{error:T(r)}),`error`)})},[X,e]),Br=(0,b.useCallback)(e=>{sn(e),un.current&&clearTimeout(un.current),e.trim()?un.current=setTimeout(async()=>{try{let t=await Te(e.trim(),20);ln(t)}catch(e){n.system.warn(`Conversation search failed`,e)}},300):ln(null)},[]),Vr=(0,b.useCallback)(async e=>{try{let t=await Ye(e);dn({sessionId:e,turns:t})}catch(e){n.system.error(`Failed to load conversation detail`,e)}},[]),Hr=(0,b.useCallback)(e=>{qt(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),A(0)},[]),Ur=(0,b.useCallback)(e=>{O===e?nn(e=>e===`desc`?`asc`:`desc`):(en(e),nn(`desc`)),A(0)},[O]),Wr=(0,b.useCallback)(async()=>{sr(!0),E(!1);try{let t=await Je();await Q(),X(e(`mem.toast.consolidated`,{sessions:t.consolidated??0,items:t.extracted_items??0}),`success`)}catch(t){n.system.error(`Failed to consolidate sessions`,t),X(e(`mem.toast.consolidateFailed`,{error:T(t)}),`error`)}finally{sr(!1)}},[Q,X,e]),Gr=(0,b.useCallback)(async()=>{lr(!0),E(!1);try{let t=await ve();await Er(),X(t.total_without?e(`mem.toast.backfilledMissing`,{n:t.backfilled??0,missing:t.total_without}):e(`mem.toast.backfilled`,{n:t.backfilled??0}),`success`)}catch(t){n.system.error(`Failed to rebuild embeddings`,t),X(e(`mem.toast.rebuildFailed`,{error:T(t)}),`error`)}finally{lr(!1)}},[Er,X,e]),Kr=(0,b.useCallback)(async()=>{dr(!0),E(!1);try{let t=await ie();await Q(),X(e(`mem.toast.reconciled`,{pairs:t.pairs_checked??0,reinforced:t.reinforced??0,contradicted:t.contradicted??0}),`success`)}catch(t){n.system.error(`Failed to reconcile memory`,t),X(e(`mem.toast.reconcileFailed`,{error:T(t)}),`error`)}finally{dr(!1)}},[Q,X,e]),qr=(0,b.useCallback)(async()=>{pr(!0),E(!1);try{await $e(),await Q(),X(e(`mem.toast.ftsRebuilt`),`success`)}catch(t){n.system.error(`Failed to rebuild FTS index`,t),X(e(`mem.toast.ftsFailed`,{error:T(t)}),`error`)}finally{pr(!1)}},[Q,X,e]),Jr=(0,b.useCallback)(async()=>{hr(!0),E(!1);try{let t=await Ce();await Q(),t.skipped?X(e(`mem.toast.systemDisabled`),`error`):X(e(`mem.toast.systemRefreshed`,{n:t.stored}),`success`)}catch(t){n.system.error(`Failed to refresh system context`,t),X(e(`mem.toast.systemFailed`,{error:T(t)}),`error`)}finally{hr(!1)}},[Q,X,e]),Yr=or||cr||ur||fr||mr,Xr=(0,b.useCallback)(()=>{U(`running`),W([]),K([]),Kn(null);let t=de();Jn.current=t,t.onmessage=r=>{try{let n=JSON.parse(r.data);if(n.type===`log`)W(e=>[...e,{text:n.message,kind:`log`,server:!0}]);else if(n.type===`finding`){let t=n.item;W(n=>[...n,{text:e.bare(`mem.log.found`,{content:t.content}),kind:`finding`}]),K(e=>[...e,{...t,_checked:!0}])}else n.type===`error`?W(t=>[...t,{text:e.bare(`mem.log.error`,{message:n.message}),kind:`error`}]):n.type===`done`&&(t.close(),Jn.current=null,W(t=>[...t,{text:e(`mem.log.discoveryDone`,{n:n.total??0}),kind:`log`}]),U(`review`))}catch(t){n.system.warn(`Unreadable discovery event`,t),W(t=>[...t,{text:e(`mem.log.parseFailed`),kind:`error`}])}},t.onerror=()=>{t.close(),Jn.current=null,W(t=>[...t,{text:e(`mem.log.discoveryConnection`),kind:`error`}]),K(e=>(U(e.length>0?`review`:`idle`),e))}},[e]),Zr=(0,b.useCallback)(async()=>{let t=G.filter(e=>e._checked);if(t.length!==0){U(`saving`);try{let n=t.map(({_checked:e,...t})=>t),r=await je(n);Kn(r.stored),U(`done`),$(),X(e(`mem.disc.saved`,{n:r.stored}),`success`)}catch(t){n.system.error(`Failed to commit discovery items`,t),X(e(`mem.disc.saveFailed`,{error:T(t)}),`error`),U(`review`)}}},[G,$,X,e]),Qr=(0,b.useCallback)(()=>{Yn(`running`),J([]),Zn([]),$n(null);let t=fe(er);rr.current=t,t.onmessage=r=>{try{let n=JSON.parse(r.data);if(n.type===`log`)J(e=>[...e,{text:n.message,kind:`log`,server:!0}]);else if(n.type===`insight`){let t=n.item;J(n=>[...n,{text:e.bare(`mem.log.insight`,{content:t.content}),kind:`finding`}]),Zn(e=>[...e,{...t,_checked:!0}])}else n.type===`error`?J(t=>[...t,{text:e.bare(`mem.log.error`,{message:n.message}),kind:`error`}]):n.type===`done`&&(t.close(),rr.current=null,J(t=>[...t,{text:e(`mem.log.inferenceDone`,{n:n.total??0}),kind:`log`}]),Yn(`review`))}catch(t){n.system.warn(`Unreadable inference event`,t),J(t=>[...t,{text:e(`mem.log.parseFailed`),kind:`error`}])}},t.onerror=()=>{t.close(),rr.current=null,J(t=>[...t,{text:e(`mem.log.inferenceConnection`),kind:`error`}]),Zn(e=>(Yn(e.length>0?`review`:`idle`),e))}},[er,e]),$r=(0,b.useCallback)(async()=>{let t=Y.filter(e=>e._checked);if(t.length!==0){Yn(`saving`);try{let n=t.map(({_checked:e,...t})=>t),r=await De(n);$n(r.stored),Yn(`done`),$(),X(e(`mem.inf.saved`,{n:r.stored}),`success`)}catch(t){n.system.error(`Failed to commit inference insights`,t),X(e(`mem.inf.saveFailed`,{error:T(t)}),`error`),Yn(`review`)}}},[Y,$,X,e]);(0,b.useEffect)(()=>{qn.current&&(qn.current.scrollTop=qn.current.scrollHeight)},[Wn]),(0,b.useEffect)(()=>{nr.current&&(nr.current.scrollTop=nr.current.scrollHeight)},[Xn]),(0,b.useEffect)(()=>()=>{Jn.current&&=(Jn.current.close(),null),rr.current&&=(rr.current.close(),null)},[]);let ei=e=>O===e?l(`span`,{className:`mem-sort-arrow`,children:tn===`desc`?`↓`:`↑`}):null,ti=Math.max(1,...v.map(e=>e.conversations+e.tool_calls+e.knowledge_added+e.errors)),ni=_?.knowledge?.by_context?Object.keys(_.knowledge.by_context):[];return i(`div`,{className:`memory-dashboard-page`,children:[i(`div`,{className:`memory-dashboard-header`,children:[i(`div`,{className:`memory-dashboard-header-left`,children:[l(`button`,{className:`btn-icon settings-back-btn`,onClick:()=>t(!1),"aria-label":e(`mem.back`),children:l(tt,{size:18})}),i(`h1`,{children:[e(`mem.title`),` `,l(`span`,{className:`mem-beta`,style:{fontSize:11,fontWeight:600,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`2px 8px`,borderRadius:4,marginInlineStart:8,verticalAlign:`middle`,whiteSpace:`nowrap`},children:e(`mem.beta`)})]})]}),i(`div`,{className:`memory-dashboard-header-actions`,children:[V===`advanced`&&i(s.Fragment,{children:[x&&x.total_items>0&&i(`div`,{className:`mem-embedding-coverage`,title:e(`mem.coverage.title`,{n:x.with_embedding,total:x.total_items}),children:[l(`div`,{className:`mem-embedding-bar`,children:l(`div`,{className:`mem-embedding-fill`,style:{width:`${Math.round(x.coverage_pct)}%`}})}),l(`span`,{className:`mem-embedding-label`,children:e(`mem.coverage.label`,{pct:`${Math.round(x.coverage_pct)}%`})})]}),i(`div`,{className:`mem-maintenance-wrap`,ref:yr,children:[i(`button`,{className:`btn-icon ${Yr?`mem-spinning`:``}`,onClick:()=>E(e=>!e),title:e(`mem.maint.label`),"aria-label":e(`mem.maint.label`),"aria-expanded":Vt,children:[Yr?l(`div`,{className:`mem-spinner-sm`}):l(re,{size:16}),l(we,{size:10,style:{marginInlineStart:2}})]}),Vt&&i(`div`,{className:`mem-maintenance-menu`,role:`menu`,children:[i(`button`,{className:`mem-maintenance-item`,onClick:Wr,disabled:or,role:`menuitem`,children:[l(rt,{size:14}),e(or?`mem.maint.consolidating`:`mem.maint.consolidate`)]}),i(`button`,{className:`mem-maintenance-item`,onClick:Gr,disabled:cr,role:`menuitem`,children:[l(te,{size:14}),e(cr?`mem.maint.rebuilding`:`mem.maint.rebuildEmbeddings`)]}),i(`button`,{className:`mem-maintenance-item`,onClick:Kr,disabled:ur,role:`menuitem`,children:[l(m,{size:14}),e(ur?`mem.maint.reconciling`:`mem.maint.reconcile`)]}),l(`div`,{className:`mem-maintenance-divider`}),i(`button`,{className:`mem-maintenance-item`,onClick:Jr,disabled:mr,role:`menuitem`,children:[l(We,{size:14}),e(mr?`mem.maint.refreshing`:`mem.maint.refreshSystem`)]}),l(`div`,{className:`mem-maintenance-divider`}),i(`button`,{className:`mem-maintenance-item`,onClick:qr,disabled:fr,role:`menuitem`,children:[l(Ae,{size:14}),e(fr?`mem.maint.rebuilding`:`mem.maint.rebuildFts`)]})]})]})]}),l(`button`,{className:`btn-icon`,onClick:Q,title:e(`mem.refresh`),"aria-label":e(`mem.refreshAria`),children:l(We,{size:16})})]})]}),i(`div`,{className:`mem-tab-bar`,role:`tablist`,children:[i(`button`,{className:`mem-tab-btn${V===`about`?` mem-tab-active`:``}`,onClick:()=>Dn(`about`),role:`tab`,"aria-selected":V===`about`,children:[l(dt,{size:14}),` `,e(`mem.tab.about`)]}),i(`button`,{className:`mem-tab-btn${V===`goals`?` mem-tab-active`:``}`,onClick:()=>{Dn(`goals`),kr()},role:`tab`,"aria-selected":V===`goals`,children:[l(st,{size:14}),` `,e(`mem.tab.goals`),Mn&&(Mn.goals.pending_approval??0)>0&&l(`span`,{className:`mem-tab-badge`,children:Mn.goals.pending_approval})]}),i(`button`,{className:`mem-tab-btn${V===`profile`?` mem-tab-active`:``}`,onClick:()=>Dn(`profile`),role:`tab`,"aria-selected":V===`profile`,children:[l(Re,{size:14}),` `,e(`mem.tab.profile`)]}),i(`button`,{className:`mem-tab-btn${V===`advanced`?` mem-tab-active`:``}`,onClick:()=>Dn(`advanced`),role:`tab`,"aria-selected":V===`advanced`,children:[l(Se,{size:14}),` `,e(`mem.tab.advanced`)]})]}),i(`div`,{className:`memory-dashboard-body`,children:[V===`about`&&l(_t,{memoryEnabled:F,reloadKey:On,onChanged:Nr,onOpenAdvanced:()=>Dn(`advanced`),showToast:X}),V===`advanced`&&l(s.Fragment,{children:Ft&&!_?i(`div`,{className:`mem-loading`,children:[l(`div`,{className:`mem-spinner`}),e(`mem.loadingData`)]}):Lt?i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(Ke,{size:32})}),l(`p`,{children:e(`mem.loadFailed`)}),i(`button`,{className:`btn-secondary`,onClick:Q,style:{marginTop:12},children:[l(We,{size:14}),` `,e(`mem.retry`)]})]}):i(s.Fragment,{children:[!F&&i(`div`,{className:`mem-empty-state`,style:{margin:`40px 0`},children:[l(`div`,{className:`mem-empty-icon`,style:{opacity:.5},children:l(ot,{size:32})}),l(`p`,{style:{color:`var(--text-secondary)`,fontSize:14},children:e(`mem.offAdvanced`)})]}),F&&i(s.Fragment,{children:[_?.embedding_error&&i(`div`,{className:`mem-advanced-error`,role:`alert`,children:[l(Ke,{size:14}),` `,l(`bdi`,{children:_.embedding_error})]}),i(`div`,{className:`mem-stat-cards`,children:[i(`div`,{className:`mem-stat-card`,"data-accent":`purple`,children:[l(`div`,{className:`mem-stat-value`,children:_?.knowledge?.total??0}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.stored`)}),l(`div`,{className:`mem-stat-sub`,children:(()=>{let t=wt(v);return t>0?e(`mem.stat.addedToday`,{n:t}):_?.knowledge?.by_category?e.compose(e=>Object.entries(_.knowledge.by_category).slice(0,3).map(([t,n])=>e(`mem.stat.categoryCount`,{category:Et[t]?o(Et[t]):t,n})).join(e(`mem.listSeparator`))):e(`mem.stat.noEntries`)})()})]}),i(`div`,{className:`mem-stat-card`,"data-accent":`gold`,children:[l(`div`,{className:`mem-stat-value`,children:_?.knowledge?.total_retrievals??0}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.retrieved`)}),l(`div`,{className:`mem-stat-sub`,children:_?.knowledge?.total&&_?.knowledge?.total_retrievals?e(`mem.stat.avgRecall`,{n:(_.knowledge.total_retrievals/_.knowledge.total).toFixed(1)}):e(`mem.stat.noRecalls`)})]}),i(`div`,{className:`mem-stat-card`,"data-accent":`blue`,children:[l(`div`,{className:`mem-stat-value`,children:_?.conversations?.total_sessions??0}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.sessions`)}),l(`div`,{className:`mem-stat-sub`,children:Ct(_?.conversations?.first_session??null,_?.conversations?.last_session??null,u(e))||e(`mem.stat.totalTurns`,{n:_?.conversations?.total_turns??0})})]}),i(`div`,{className:`mem-stat-card`,"data-accent":`green`,children:[l(`div`,{className:`mem-stat-value`,children:_?.tools?.total_calls??0}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.toolCalls`)}),l(`div`,{className:`mem-stat-sub`,title:e(`mem.stat.toolsNotLogged`),children:e(`mem.stat.toolsExclMemory`,{n:_?.tools?.unique_tools??0})})]}),i(`div`,{className:`mem-stat-card`,"data-accent":`red`,children:[l(`div`,{className:`mem-stat-value`,children:_?.tools?.overall_success_rate!=null&&(_.tools.total_calls??0)>0?`${Math.round(_.tools.overall_success_rate*100)}%`:`—`}),l(`div`,{className:`mem-stat-label`,children:e(`mem.stat.successRate`)}),l(`div`,{className:`mem-stat-sub`,children:(_?.tools?.total_calls??0)>0?e(`mem.stat.errors`,{n:_?.tools?.total_errors??0}):e(`mem.stat.noToolCalls`)})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title mem-section-title-row`,children:[i(`span`,{className:`mem-section-title-left`,children:[l(lt,{size:14}),` `,e(`mem.activity.title`)]}),l(`div`,{className:`mem-range-tabs`,role:`group`,"aria-label":e(`mem.activity.range`),children:[1,7,30].map(t=>l(`button`,{className:`mem-range-tab${ir===t?` active`:``}`,onClick:()=>ar(t),children:e(t===1?`mem.activity.day1`:t===7?`mem.activity.days7`:`mem.activity.days30`)},t))})]}),v.length>0?i(s.Fragment,{children:[l(`div`,{className:`mem-activity-chart`,children:v.map((t,n)=>{let r=t.conversations+t.tool_calls+t.knowledge_added+t.errors,a=n===0||n===v.length-1||n%7==0,o=new Date(t.date+`T00:00:00`).toLocaleDateString(u(e),{month:`short`,day:`numeric`});return i(`div`,{className:`mem-activity-bar-group`,onMouseEnter:()=>Bt(n),onMouseLeave:()=>Bt(null),children:[t.errors>0&&l(`div`,{className:`mem-activity-bar errors`,style:{height:`${t.errors/ti*100}%`}}),t.knowledge_added>0&&l(`div`,{className:`mem-activity-bar knowledge`,style:{height:`${t.knowledge_added/ti*100}%`}}),t.tool_calls>0&&l(`div`,{className:`mem-activity-bar tool_calls`,style:{height:`${t.tool_calls/ti*100}%`}}),t.conversations>0&&l(`div`,{className:`mem-activity-bar conversations`,style:{height:`${t.conversations/ti*100}%`}}),a&&l(`span`,{className:`mem-activity-date-label`,children:o}),zt===n&&r>0&&i(`div`,{className:`mem-activity-tooltip`,children:[l(`strong`,{children:o}),l(`br`,{}),t.conversations>0&&i(s.Fragment,{children:[e(`mem.activity.conversations`,{n:t.conversations}),l(`br`,{})]}),t.tool_calls>0&&i(s.Fragment,{children:[e(`mem.activity.toolCalls`,{n:t.tool_calls}),l(`br`,{})]}),t.knowledge_added>0&&i(s.Fragment,{children:[e(`mem.activity.learned`,{n:t.knowledge_added}),l(`br`,{})]}),t.errors>0&&l(s.Fragment,{children:e(`mem.stat.errors`,{n:t.errors})})]})]},t.date)})}),i(`div`,{className:`mem-activity-legend`,children:[i(`span`,{className:`mem-activity-legend-item`,children:[l(`span`,{className:`mem-activity-legend-dot conversations`}),` `,e(`mem.legend.conversations`)]}),i(`span`,{className:`mem-activity-legend-item`,children:[l(`span`,{className:`mem-activity-legend-dot tool_calls`}),` `,e(`mem.stat.toolCalls`)]}),i(`span`,{className:`mem-activity-legend-item`,children:[l(`span`,{className:`mem-activity-legend-dot knowledge`}),` `,e(`mem.legend.knowledge`)]}),i(`span`,{className:`mem-activity-legend-item`,children:[l(`span`,{className:`mem-activity-legend-dot errors`}),` `,e(`mem.legend.errors`)]})]})]}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(lt,{size:28})}),l(`p`,{children:e(`mem.activity.empty`)})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title mem-section-title-row`,children:[i(`span`,{className:`mem-section-title-left`,children:[l(Se,{size:14}),` `,e(`mem.knowledge.title`),y&&y.total>0&&l(`span`,{className:`mem-section-count`,children:y.total})]}),!fn&&!M&&i(`button`,{className:`mem-section-add-btn`,onClick:()=>pn(!0),title:e(`mem.knowledge.addTitle`),children:[l(Be,{size:13}),` `,e(`mem.knowledge.add`)]})]}),i(`div`,{className:`mem-filters`,children:[i(`div`,{className:`mem-category-pills`,role:`group`,"aria-label":e(`mem.knowledge.filterCategory`),children:[Tt.map(t=>l(`button`,{className:`mem-category-pill ${t}${D.includes(t)?` active`:``}`,onClick:()=>Hr(t),"aria-pressed":D.includes(t),children:e(Et[t])},t)),D.length>0&&i(`button`,{className:`mem-category-pill clear`,onClick:()=>{qt([]),A(0)},"aria-label":e(`mem.knowledge.clearAria`),children:[`✕ `,e(`mem.knowledge.clear`)]})]}),i(`select`,{className:`mem-filter-select`,value:Jt,onChange:e=>{Yt(e.target.value),A(0)},"aria-label":e(`mem.knowledge.filterContext`),children:[l(`option`,{value:``,children:e(`mem.knowledge.allContexts`)}),ni.map(e=>l(`option`,{value:e,children:e},e))]}),i(`select`,{className:`mem-filter-select`,value:Xt,onChange:e=>{Zt(e.target.value),A(0)},"aria-label":e(`mem.knowledge.filterEntity`),children:[l(`option`,{value:``,children:e(`mem.knowledge.allEntities`)}),Nt.map(e=>i(`option`,{value:e.entity,children:[e.entity,` (`,e.count,`)`]},e.entity))]}),i(`div`,{className:`mem-filter-search-wrap`,children:[gr?l(`div`,{className:`mem-spinner-sm search-icon`,style:{width:12,height:12,borderWidth:1.5}}):l(Ae,{size:13,className:`search-icon`}),l(`input`,{className:`mem-filter-search`,type:`text`,placeholder:e(`mem.knowledge.searchPlaceholder`),value:Qt,onChange:e=>Mr(e.target.value),"aria-label":e(`mem.knowledge.search`)})]}),i(`label`,{className:`mem-filter-toggle`,title:e(`mem.knowledge.supersededTitle`),children:[l(`input`,{type:`checkbox`,checked:rn,onChange:e=>an(e.target.checked)}),l(`span`,{children:e(`mem.knowledge.superseded`)})]})]}),(fn||M)&&i(`div`,{className:`mem-inline-form`,children:[i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.col.content`)}),l(`textarea`,{value:N.content,onChange:e=>P(t=>({...t,content:e.target.value})),placeholder:e(`mem.form.contentPlaceholder`)})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.col.category`)}),l(`select`,{value:N.category,onChange:e=>P(t=>({...t,category:e.target.value})),children:Tt.map(t=>l(`option`,{value:t,children:e(Et[t])},t))})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.col.context`)}),l(`input`,{type:`text`,value:N.context,onChange:e=>P(t=>({...t,context:e.target.value})),placeholder:`global`})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.detail.domain`)}),l(`input`,{type:`text`,value:N.domain,onChange:e=>P(t=>({...t,domain:e.target.value})),placeholder:e(`mem.form.domainPlaceholder`)})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.col.entity`)}),l(`input`,{type:`text`,value:N.entity,onChange:e=>P(t=>({...t,entity:e.target.value})),placeholder:e(`mem.form.entityPlaceholder`)})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.form.dueAt`)}),l(`input`,{type:`text`,value:N.due_at,onChange:e=>P(t=>({...t,due_at:e.target.value})),placeholder:e(`mem.form.dueAtPlaceholder`)})]}),i(`div`,{className:`mem-inline-form-row`,children:[l(`label`,{children:e(`mem.form.sensitive`)}),i(`label`,{style:{display:`flex`,alignItems:`center`,gap:6,cursor:`pointer`,fontSize:12},children:[l(`input`,{type:`checkbox`,checked:N.sensitive,onChange:e=>P(t=>({...t,sensitive:e.target.checked}))}),e(`mem.form.sensitiveHint`)]})]}),i(`div`,{className:`mem-inline-form-actions`,children:[l(`button`,{className:`btn-secondary`,onClick:()=>{pn(!1),mn(null)},children:e(`mem.cancel`)}),l(`button`,{className:`btn-primary`,onClick:M?Fr:Pr,style:{padding:`8px 20px`,fontSize:13},children:e(M?`mem.form.update`:`mem.form.save`)})]})]}),y&&y.items.length>0?i(s.Fragment,{children:[l(`div`,{style:{overflowX:`auto`},children:i(`table`,{className:`mem-knowledge-table`,children:[l(`thead`,{children:i(`tr`,{children:[i(`th`,{onClick:()=>Ur(`category`),className:O===`category`?`sorted`:``,children:[e(`mem.col.category`),ei(`category`)]}),l(`th`,{children:e(`mem.col.content`)}),i(`th`,{onClick:()=>Ur(`context`),className:O===`context`?`sorted`:``,children:[e(`mem.col.context`),ei(`context`)]}),l(`th`,{children:e(`mem.col.entity`)}),i(`th`,{onClick:()=>Ur(`confidence`),className:O===`confidence`?`sorted`:``,children:[e(`mem.col.confidence`),ei(`confidence`)]}),l(`th`,{children:e(`mem.col.source`)}),i(`th`,{onClick:()=>Ur(`updated_at`),className:O===`updated_at`?`sorted`:``,children:[e(`mem.col.updated`),ei(`updated_at`)]}),i(`th`,{onClick:()=>Ur(`created_at`),className:O===`created_at`?`sorted`:``,children:[e(`mem.col.created`),ei(`created_at`)]}),l(`th`,{children:e(`mem.col.due`)}),l(`th`,{className:`mem-actions-cell`})]})}),l(`tbody`,{children:y.items.map(t=>{let n=Ht===t.id,r=t.has_embedding;return i(b.Fragment,{children:[i(`tr`,{className:`${t.superseded_by?`mem-superseded-row`:``} ${n?`mem-expanded-row`:``}`,onClick:()=>Ut(n?null:t.id),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),Ut(n?null:t.id))},tabIndex:0,role:`row`,"aria-expanded":n,style:{cursor:`pointer`},children:[l(`td`,{children:l(`span`,{className:`mem-cat-badge ${t.category}`,children:l(w,{value:t.category,keys:Et})})}),l(`td`,{children:i(`div`,{className:`mem-content-cell`,title:t.content,children:[r!==void 0&&l(`span`,{className:`mem-embed-dot ${r?`embedded`:`missing`}`,title:e(r?`mem.knowledge.embedded`:`mem.knowledge.embedMissing`),children:l(g,{size:6,fill:`currentColor`})}),t.sensitive&&l(`span`,{className:`mem-sensitive-badge`,title:e(`mem.form.sensitive`),children:l(ot,{size:11})}),l(`span`,{className:t.sensitive&&!hn.has(t.id)?`mem-sensitive-blur`:t.superseded_by?`mem-superseded-text`:``,onClick:e=>{t.sensitive&&(e.stopPropagation(),gn(e=>{let n=new Set(e);return n.has(t.id)?n.delete(t.id):n.add(t.id),n}))},children:l(`bdi`,{children:t.content})})]})}),l(`td`,{children:l(`bdi`,{className:`mem-date-cell`,children:t.context})}),l(`td`,{children:t.entity?l(`span`,{className:`mem-entity-link`,onClick:e=>{e.stopPropagation(),Zt(t.entity),A(0)},title:e(`mem.knowledge.filterBy`,{entity:t.entity}),children:l(`bdi`,{children:t.entity})}):l(`span`,{className:`mem-date-cell`,children:`—`})}),l(`td`,{children:i(`div`,{className:`mem-confidence`,children:[l(`div`,{className:`mem-confidence-bar`,children:l(`div`,{className:`mem-confidence-fill ${xt(t.confidence)}`,style:{width:`${t.confidence*100}%`}})}),t.confidence.toFixed(2)]})}),l(`td`,{children:l(`bdi`,{className:`mem-date-cell`,children:t.source||`—`})}),l(`td`,{children:l(`span`,{className:`mem-date-cell`,title:S(t.updated_at,u(e)),children:C(t.updated_at,e)})}),l(`td`,{children:l(`span`,{className:`mem-date-cell`,title:S(t.created_at,u(e)),children:C(t.created_at,e)})}),l(`td`,{children:t.due_at?l(`span`,{className:`mem-due-badge ${bt(t.due_at)?`overdue`:`upcoming`}`,title:S(t.due_at,u(e)),children:C(t.due_at,e)}):l(`span`,{className:`mem-due-badge none`,children:`—`})}),l(`td`,{className:`mem-actions-cell`,children:i(`div`,{className:`mem-row-actions`,onClick:e=>e.stopPropagation(),children:[l(`button`,{className:`mem-row-action-btn`,onClick:()=>Rr(t),title:e(`mem.row.edit`),children:l(Ne,{size:13})}),l(`button`,{className:`mem-row-action-btn`,onClick:()=>Lr(t),title:e(t.sensitive?`mem.row.unmarkSensitive`:`mem.row.markSensitive`),children:t.sensitive?l(it,{size:13}):l(ot,{size:13})}),l(`button`,{className:`mem-row-action-btn`,onClick:()=>zr(t.id),title:e(`mem.row.copyId`),children:l(me,{size:13})}),l(`button`,{className:`mem-row-action-btn delete${R===t.id?` is-confirm`:``}`,onClick:()=>Ir(t.id),title:e(R===t.id?`mem.row.clickAgain`:`mem.row.delete`),"aria-label":e(R===t.id?`mem.row.confirmDeleteAria`:`mem.row.deleteAria`),children:R===t.id?l(`span`,{className:`mem-row-delete-label`,children:e(`mem.row.deleteConfirm`)}):l(ke,{size:13})})]})})]}),n&&l(`tr`,{className:`mem-detail-row`,children:l(`td`,{colSpan:10,children:i(`div`,{className:`mem-detail-panel`,children:[i(`div`,{className:`mem-detail-grid`,children:[i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.id`)}),l(`span`,{className:`mem-detail-value`,children:t.id})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.domain`)}),l(`bdi`,{className:`mem-detail-value`,children:t.domain||`—`})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.col.source`)}),l(`bdi`,{className:`mem-detail-value`,children:t.source||`—`})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.useCount`)}),l(`span`,{className:`mem-detail-value`,children:t.use_count??0})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.col.created`)}),l(`span`,{className:`mem-detail-value`,children:S(t.created_at,u(e))})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.col.updated`)}),l(`span`,{className:`mem-detail-value`,children:S(t.updated_at,u(e))})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.lastUsed`)}),l(`span`,{className:`mem-detail-value`,children:S(t.last_used,u(e))})]}),i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.remindedAt`)}),l(`span`,{className:`mem-detail-value`,children:S(t.reminded_at,u(e))})]}),t.superseded_by&&i(`div`,{className:`mem-detail-field`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.supersededBy`)}),l(`span`,{className:`mem-detail-value mem-detail-chain`,children:t.superseded_by})]}),t.metadata&&i(`div`,{className:`mem-detail-field mem-detail-full`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.metadata`)}),l(`span`,{className:`mem-detail-value`,children:l(`bdi`,{dir:`ltr`,children:typeof t.metadata==`object`?JSON.stringify(t.metadata,null,2):t.metadata})})]})]}),i(`div`,{className:`mem-detail-content-full`,children:[l(`span`,{className:`mem-detail-label`,children:e(`mem.detail.fullContent`)}),l(`div`,{className:`mem-detail-content-text`,children:l(`bdi`,{children:t.content})})]})]})})})]},t.id)})})]})}),i(`div`,{className:`mem-pagination`,children:[l(`span`,{children:e(`mem.page.range`,{from:k+1,to:Math.min(k+15,y.total),total:y.total})}),i(`div`,{className:`mem-pagination-btns`,children:[l(`button`,{type:`button`,className:`mem-page-btn`,"aria-label":e(`mem.page.previous`),disabled:k===0,onClick:()=>A(Math.max(0,k-15)),children:l(f,{size:14})}),l(`button`,{type:`button`,className:`mem-page-btn`,"aria-label":e(`mem.page.next`),disabled:k+15>=y.total,onClick:()=>A(k+15),children:l(et,{size:14})})]})]})]}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(Se,{size:28})}),l(`p`,{children:e(Qt||D.length>0||Jt||Xt?`mem.knowledge.noMatch`:`mem.knowledge.empty`)})]})]}),i(`div`,{className:`mem-two-col`,children:[i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title`,children:[l(Pe,{size:14}),` `,e(`mem.tools.title`),l(`span`,{className:`mem-section-note`,title:e(`mem.tools.noteTitle`),children:e(`mem.tools.note`)})]}),ut.length>0?l(`div`,{style:{overflowX:`auto`},children:i(`table`,{className:`mem-tool-table`,children:[l(`thead`,{children:i(`tr`,{children:[l(`th`,{children:e(`mem.tools.tool`)}),l(`th`,{children:e(`mem.tools.calls`)}),l(`th`,{children:e(`mem.tools.success`)}),l(`th`,{children:e(`mem.tools.denied`)}),l(`th`,{children:e(`mem.tools.avgTime`)}),l(`th`,{children:e(`mem.detail.lastUsed`)}),l(`th`,{children:e(`mem.tools.lastError`)})]})}),l(`tbody`,{children:ut.map(t=>i(`tr`,{children:[l(`td`,{children:l(`bdi`,{className:`mem-tool-name`,children:t.tool_name})}),l(`td`,{children:t.total_calls}),l(`td`,{children:i(`div`,{className:`mem-confidence`,children:[l(`div`,{className:`mem-confidence-bar`,style:{width:40},children:l(`div`,{className:`mem-confidence-fill ${St(t.success_rate)}`,style:{width:`${t.success_rate*100}%`}})}),i(`span`,{className:`mem-success-rate ${St(t.success_rate)}`,children:[Math.round(t.success_rate*100),`%`]})]})}),l(`td`,{children:t.denied_count??0}),l(`td`,{children:l(`bdi`,{dir:`ltr`,children:yt(t.avg_duration_ms)})}),l(`td`,{children:l(`span`,{className:`mem-date-cell`,title:S(t.last_used,u(e)),children:C(t.last_used,e)})}),l(`td`,{children:l(`bdi`,{className:`mem-tool-error`,title:t.last_error||``,children:t.last_error||`—`})})]},t.tool_name))})]})}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(Pe,{size:28})}),l(`p`,{children:e(`mem.tools.empty`)})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title`,children:[l(h,{size:14}),` `,e(`mem.upcoming.title`)]}),ht.length>0?l(`div`,{className:`mem-temporal-list`,children:ht.map(t=>{let n=bt(t.due_at);return i(`div`,{className:`mem-temporal-item ${n?`overdue`:`upcoming`}`,children:[l(`span`,{className:`mem-temporal-icon`,children:l(n?Ke:h,{size:16})}),i(`div`,{className:`mem-temporal-content`,children:[l(`div`,{className:`mem-temporal-text`,children:l(`bdi`,{children:t.content})}),i(`div`,{className:`mem-temporal-date`,children:[e(n?`mem.upcoming.overdue`:`mem.upcoming.due`,{when:C(t.due_at,e)}),t.context!==`global`&&i(s.Fragment,{children:[` `,`·`,` `,l(`bdi`,{children:t.context})]})]})]})]},t.id)})}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(m,{size:28})}),l(`p`,{children:e(`mem.upcoming.empty`)})]})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title`,children:[l(ee,{size:14}),` `,e(`mem.conv.title`)]}),i(`div`,{className:`mem-conv-search`,children:[l(Ae,{size:13,className:`search-icon`}),l(`input`,{type:`text`,placeholder:e(`mem.conv.searchPlaceholder`),value:on,onChange:e=>Br(e.target.value),"aria-label":e(`mem.conv.search`)}),on&&l(`button`,{className:`mem-search-clear`,onClick:()=>{sn(``),ln(null)},"aria-label":e(`mem.conv.clearSearch`),children:l(Ge,{size:12})})]}),cn===null?pt.length>0?l(`div`,{className:`mem-conv-list`,children:pt.map(t=>i(`div`,{className:`mem-conv-item`,onClick:()=>Vr(t.session_id),children:[i(`div`,{className:`mem-conv-info`,children:[i(`div`,{className:`mem-conv-session-id`,children:[l(`bdi`,{children:He(t.session_id)}),t.consolidated&&l(`span`,{className:`mem-consolidated-badge`,title:e(`mem.conv.consolidated`),children:l(rt,{size:11})})]}),t.first_message&&l(`div`,{className:`mem-conv-preview`,children:l(`bdi`,{children:t.first_message})})]}),i(`div`,{className:`mem-conv-meta`,children:[l(`span`,{children:e.plural(`mem.conv.turns`,t.turn_count)}),l(`span`,{children:C(t.last_activity,e)})]})]},t.session_id))}):i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(ee,{size:28})}),l(`p`,{children:e(`mem.conv.empty`)})]}):cn.length>0?l(`div`,{className:`mem-conv-list`,children:cn.map(t=>i(`div`,{className:`mem-conv-item`,onClick:()=>Vr(t.session_id),children:[i(`div`,{className:`mem-conv-info`,children:[i(`div`,{className:`mem-conv-session-id`,children:[l(`span`,{className:`mem-conv-turn-role ${t.role}`,children:l(w,{value:t.role,keys:At})}),` `,l(`bdi`,{children:He(t.session_id)})]}),l(`div`,{className:`mem-conv-preview`,children:l(`bdi`,{children:t.content})})]}),l(`div`,{className:`mem-conv-meta`,children:l(`span`,{children:C(t.timestamp,e)})})]},t.id))}):l(`div`,{className:`mem-empty`,children:l(`p`,{children:e(`mem.conv.noMatch`,{query:on})})})]}),j&&i(`div`,{className:`mem-conv-detail-overlay`,children:[i(`div`,{className:`mem-conv-detail-header`,children:[l(`h2`,{children:l(`bdi`,{children:He(j.sessionId)})}),i(`div`,{className:`mem-conv-detail-actions`,children:[ce.has(j.sessionId)&&l(`button`,{className:`btn-secondary`,onClick:()=>c(j.sessionId),children:e(`mem.conv.openChat`)}),l(`button`,{className:`btn-icon`,onClick:()=>dn(null),"aria-label":e(`mem.conv.close`),children:l(Ge,{size:16})})]})]}),i(`div`,{className:`mem-conv-detail-body`,children:[j.turns.map(t=>i(`div`,{className:`mem-conv-turn`,children:[i(`div`,{className:`mem-conv-turn-header`,children:[l(`div`,{className:`mem-conv-turn-role ${t.role}`,children:l(w,{value:t.role,keys:At})}),l(`span`,{className:`mem-conv-turn-time`,title:S(t.timestamp,u(e)),children:C(t.timestamp,e)})]}),l(`div`,{className:`mem-conv-turn-content`,children:l(`bdi`,{children:t.content})})]},t.id)),j.turns.length===0&&l(`div`,{className:`mem-empty`,children:e(`mem.conv.noTurns`)})]})]})]}),i(`div`,{className:`mem-section`,children:[i(`div`,{className:`mem-section-title`,children:[l(ot,{size:14}),` `,e(`mem.settings.title`),` `,l(`span`,{className:`mem-beta`,style:{fontSize:10,fontWeight:600,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`1px 6px`,borderRadius:4,marginInlineStart:6,verticalAlign:`middle`},children:e(`mem.beta`)})]}),i(`div`,{className:`mem-setting-row`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.memory`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.memoryDesc`)})]}),l(`button`,{className:`mem-toggle${F?` mem-toggle-on`:``}`,disabled:I,onClick:async()=>{if(!F)B(`memory`);else{L(!0);try{let e=await p({memory_enabled:!1});_n(e.memory_enabled)}catch(t){n.system.warn(`Failed to disable memory`,t),X(e(`mem.toast.settingFailed`,{error:T(t)}),`error`)}finally{L(!1)}}},"aria-pressed":F,"aria-label":e(F?`mem.settings.memoryOn`:`mem.settings.memoryOff`),children:e.bare(F?`mem.on`:`mem.off`)})]}),z&&(()=>{let t={memory:{title:`mem.beta.memory.title`,description:`mem.beta.memory.desc`,bullets:[`mem.beta.memory.local`,`mem.beta.memory.lost`,`mem.beta.memory.disable`],buttonLabel:`mem.beta.memory.confirm`,onConfirm:async()=>{let t=await p({memory_enabled:!0});_n(t.memory_enabled),X(e(`mem.toast.memoryEnabled`),`info`)}},mcp:{title:`mem.beta.mcp.title`,description:`mem.beta.mcp.desc`,bullets:[`mem.beta.mcp.read`,`mem.beta.mcp.restart`,`mem.beta.mcp.debug`],buttonLabel:`mem.beta.mcp.confirm`,onConfirm:async()=>{let t=await p({mcp_memory_enabled:!0});yn(t.mcp_memory_enabled),X(e(`mem.toast.mcpEnabled`),`info`)}},discovery:{title:`mem.beta.discovery.title`,description:`mem.beta.discovery.desc`,bullets:[`mem.beta.discovery.collects`,`mem.beta.discovery.scans`,`mem.beta.discovery.local`],buttonLabel:`mem.beta.discovery.confirm`,onConfirm:async()=>{let t=await p({system_discovery_consent:!0});if(xn(t.system_discovery_consent),t.system_context_error)X(e(`mem.toast.discoveryScanFailed`,{error:t.system_context_error}),`error`);else{let n=t.system_context_refresh?.stored??0;X(e(`mem.toast.discoveryEnabled`,{n}),`info`)}Q()}}}[z];return i(s.Fragment,{children:[l(`div`,{"aria-hidden":`true`,style:{position:`fixed`,inset:0,background:`var(--bg-modal-overlay)`,zIndex:9998,backdropFilter:`blur(4px)`},onClick:()=>B(null)}),i(`div`,{ref:br,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`mem-beta-confirm-title`,"aria-describedby":`mem-beta-confirm-desc`,tabIndex:-1,style:{position:`fixed`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,zIndex:9999,background:`var(--bg-card)`,border:`1px solid var(--border)`,borderRadius:12,padding:`28px 32px`,maxWidth:420,width:`90vw`,boxShadow:`var(--shadow-lg)`},children:[i(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,marginBottom:16},children:[l(`span`,{className:`mem-beta`,style:{fontSize:11,fontWeight:700,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`3px 10px`,borderRadius:4},children:e(`mem.beta`)}),l(`h2`,{id:`mem-beta-confirm-title`,style:{fontSize:16,fontWeight:600,color:`var(--text-primary)`},children:e(t.title)})]}),l(`p`,{id:`mem-beta-confirm-desc`,style:{fontSize:13,lineHeight:1.6,color:`var(--text-secondary)`,margin:`0 0 8px`},children:e(t.description)}),l(`ul`,{style:{fontSize:13,lineHeight:1.7,color:`var(--text-secondary)`,margin:`0 0 24px`,paddingInlineStart:20},children:t.bullets.map(t=>l(`li`,{children:e(t)},t))}),i(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:10},children:[l(`button`,{className:`btn-secondary`,onClick:()=>B(null),style:{padding:`8px 20px`,fontSize:13,borderRadius:6},children:e(`mem.cancel`)}),l(`button`,{disabled:I,onClick:async()=>{L(!0);try{await t.onConfirm()}catch(t){n.system.warn(`Failed to update setting`,t),X(e(`mem.toast.settingFailed`,{error:T(t)}),`error`)}finally{L(!1),B(null)}},style:{padding:`8px 24px`,fontSize:13,fontWeight:600,borderRadius:6,border:`none`,cursor:`pointer`,background:`var(--accent-fill)`,color:`var(--accent-fill-text)`},children:e(t.buttonLabel)})]})]})]})})(),i(`div`,{className:`mem-setting-row`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.mcp`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.mcpDesc`)})]}),l(`button`,{className:`mem-toggle${vn?` mem-toggle-on`:``}`,disabled:I,onClick:async()=>{if(!vn)B(`mcp`);else{L(!0);try{let e=await p({mcp_memory_enabled:!1});yn(e.mcp_memory_enabled)}catch(t){n.system.warn(`Failed to update memory settings`,t),X(e(`mem.toast.settingFailed`,{error:T(t)}),`error`)}finally{L(!1)}}},"aria-label":e(`mem.settings.mcpToggle`),"aria-pressed":vn,children:e.bare(vn?`mem.on`:`mem.off`)})]}),i(`div`,{className:`mem-setting-row`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.discovery`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.discoveryDesc`)})]}),l(`button`,{className:`mem-toggle${bn?` mem-toggle-on`:``}`,disabled:I,onClick:async()=>{if(!bn)B(`discovery`);else{L(!0);try{let e=await p({system_discovery_consent:!1});xn(e.system_discovery_consent)}catch(t){n.system.warn(`Failed to update system discovery setting`,t),X(e(`mem.toast.settingFailed`,{error:T(t)}),`error`)}finally{L(!1)}}},"aria-label":e(`mem.settings.discoveryToggle`),"aria-pressed":bn,children:e.bare(bn?`mem.on`:`mem.off`)})]}),i(`div`,{className:`mem-setting-row mem-setting-row-danger`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.reinit`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.reinitDesc`)})]}),Tn?i(`div`,{className:`mem-delete-confirm`,children:[l(`span`,{className:`mem-delete-confirm-label`,children:e(`mem.settings.sure`)}),l(`button`,{className:`mem-btn-danger`,disabled:I,onClick:async()=>{L(!0);try{let t=await ue();t.system_context.error?X(e(`mem.toast.server`,{message:t.system_context.error}),`error`):X(e(`mem.toast.reinitialized`,{cleared:t.cleared.knowledge,stored:t.system_context.stored}),`info`),Q()}catch(t){n.system.warn(`Failed to reinitialize memory`,t),X(e(`mem.toast.reinitFailed`,{error:T(t)}),`error`)}finally{L(!1),En(!1)}},children:e(`mem.settings.reinitConfirm`)}),l(`button`,{className:`btn-secondary`,onClick:()=>En(!1),style:{padding:`6px 14px`,fontSize:12},children:e(`mem.cancel`)})]}):l(`button`,{className:`mem-btn-danger`,disabled:I,onClick:()=>En(!0),children:e(`mem.settings.reinitButton`)})]}),i(`div`,{className:`mem-setting-row mem-setting-row-danger`,children:[i(`div`,{className:`mem-setting-info`,children:[l(`span`,{className:`mem-setting-label`,children:e(`mem.settings.deleteAll`)}),l(`span`,{className:`mem-setting-desc`,children:e(`mem.settings.deleteAllDesc`)})]}),Sn?i(`div`,{className:`mem-delete-confirm`,children:[l(`span`,{className:`mem-delete-confirm-label`,children:e(`mem.settings.sure`)}),l(`button`,{className:`mem-btn-danger`,disabled:I,onClick:async()=>{L(!0);try{let t=await Me();X(e(`mem.toast.cleared`,{knowledge:t.knowledge,conversations:t.conversations}),`info`),Q()}catch(t){n.system.warn(`Failed to clear memory`,t),X(e(`mem.toast.clearFailed`,{error:T(t)}),`error`)}finally{L(!1),Cn(!1)}},children:e(`mem.settings.deleteConfirm`)}),l(`button`,{className:`btn-secondary`,onClick:()=>Cn(!1),style:{padding:`6px 14px`,fontSize:12},children:e(`mem.cancel`)})]}):l(`button`,{className:`mem-btn-danger`,disabled:I,onClick:()=>Cn(!0),children:e(`mem.settings.deleteButton`)})]})]}),_&&i(`div`,{className:`mem-db-footer`,children:[i(`span`,{children:[e(`mem.footer.database`),`: `,l(`bdi`,{dir:`ltr`,children:qe(_.db_size_bytes)}),_.knowledge?.avg_confidence!=null&&i(s.Fragment,{children:[` · `,e(`mem.footer.avgConfidence`,{n:_.knowledge.avg_confidence.toFixed(2)})]})]}),i(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[_.knowledge?.entity_count!=null&&_.knowledge.entity_count>0&&l(`span`,{children:e(`mem.footer.entities`,{n:_.knowledge.entity_count})}),_.knowledge?.sensitive_count!=null&&_.knowledge.sensitive_count>0&&i(`span`,{children:[l(ot,{size:10}),` `,e(`mem.footer.sensitive`,{n:_.knowledge.sensitive_count})]})]})]})]})}),V===`profile`&&i(`div`,{className:`mem-profile-grid`,children:[i(`div`,{className:`mem-profile-card`,children:[i(`div`,{className:`mem-profile-card-title`,children:[l(Ie,{size:16}),` `,e(`mem.disc.title`)]}),l(`p`,{className:`mem-profile-desc`,children:e(`mem.disc.desc`)}),l(`button`,{className:`btn-primary mem-profile-run-btn`,disabled:H===`running`||H===`saving`,onClick:Xr,children:H===`running`?i(s.Fragment,{children:[l(`div`,{className:`mem-spinner-sm`}),` `,e(`mem.running`)]}):e(`mem.disc.run`)}),Wn.length>0&&l(`div`,{className:`mem-log`,ref:qn,children:Wn.map((e,t)=>l(`div`,{className:`mem-log-line ${e.kind}`,children:e.server?l(`bdi`,{children:e.text}):e.text},t))}),(H===`review`||H===`saving`||H===`done`)&&G.length>0&&i(`div`,{className:`mem-review-section`,children:[l(`div`,{className:`mem-review-header`,children:e(`mem.review.title`)}),l(`div`,{className:`mem-review-list`,children:G.map((e,t)=>i(`label`,{className:`mem-review-item`,children:[l(`input`,{type:`checkbox`,checked:e._checked,disabled:H===`saving`||H===`done`,onChange:()=>{K(e=>e.map((e,n)=>n===t?{...e,_checked:!e._checked}:e))}}),l(`bdi`,{className:`mem-review-content`,children:e.content}),l(`span`,{className:`mem-source-badge`,children:e._source_name?l(`bdi`,{children:e._source_name}):l(w,{value:e.category,keys:Et})}),i(`span`,{className:`mem-conf-badge`,children:[Math.round(e.confidence*100),`%`]})]},t))}),i(`div`,{className:`mem-review-actions`,children:[l(`button`,{className:`btn-primary`,disabled:H===`saving`||H===`done`||G.filter(e=>e._checked).length===0,onClick:Zr,children:H===`saving`?i(s.Fragment,{children:[l(`div`,{className:`mem-spinner-sm`}),` `,e(`mem.saving`)]}):e(`mem.review.saveSelected`,{n:G.filter(e=>e._checked).length})}),i(`span`,{className:`mem-review-select-links`,children:[l(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>K(e=>e.map(e=>({...e,_checked:!0}))),children:e(`mem.review.selectAll`)}),` / `,l(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>K(e=>e.map(e=>({...e,_checked:!1}))),children:e(`mem.review.none`)})]})]})]}),H===`done`&&Gn!==null&&i(`div`,{className:`mem-profile-success`,children:[l(m,{size:14}),` `,e(`mem.disc.saved`,{n:Gn})]}),H===`review`&&G.length===0&&l(`div`,{className:`mem-profile-empty`,children:e(`mem.disc.empty`)})]}),i(`div`,{className:`mem-profile-card`,children:[i(`div`,{className:`mem-profile-card-title`,children:[l(Re,{size:16}),` `,e(`mem.inf.title`)]}),l(`p`,{className:`mem-profile-desc`,children:e(`mem.inf.desc`)}),l(`p`,{className:`mem-profile-note`,children:e(`mem.inf.note`)}),i(`label`,{className:`mem-profile-checkbox`,children:[l(`input`,{type:`checkbox`,checked:er,onChange:e=>tr(e.target.checked),disabled:q===`running`||q===`saving`}),e(`mem.inf.browser`)]}),l(`button`,{className:`btn-primary mem-profile-run-btn`,disabled:q===`running`||q===`saving`,onClick:Qr,children:q===`running`?i(s.Fragment,{children:[l(`div`,{className:`mem-spinner-sm`}),` `,e(`mem.running`)]}):e(`mem.inf.run`)}),Xn.length>0&&l(`div`,{className:`mem-log`,ref:nr,children:Xn.map((e,t)=>l(`div`,{className:`mem-log-line ${e.kind}`,children:e.server?l(`bdi`,{children:e.text}):e.text},t))}),(q===`review`||q===`saving`||q===`done`)&&Y.length>0&&i(`div`,{className:`mem-review-section`,children:[l(`div`,{className:`mem-review-header`,children:e(`mem.review.title`)}),l(`div`,{className:`mem-review-list`,children:Y.map((e,t)=>i(`label`,{className:`mem-review-item`,children:[l(`input`,{type:`checkbox`,checked:e._checked,disabled:q===`saving`||q===`done`,onChange:()=>{Zn(e=>e.map((e,n)=>n===t?{...e,_checked:!e._checked}:e))}}),l(`bdi`,{className:`mem-review-content`,children:e.content}),l(`span`,{className:`mem-domain-badge ${Mt[e.domain]||`gray`}`,children:l(w,{value:e.domain,keys:jt})}),i(`span`,{className:`mem-conf-badge`,children:[Math.round(e.confidence*100),`%`]})]},t))}),i(`div`,{className:`mem-review-actions`,children:[l(`button`,{className:`btn-primary`,disabled:q===`saving`||q===`done`||Y.filter(e=>e._checked).length===0,onClick:$r,children:q===`saving`?i(s.Fragment,{children:[l(`div`,{className:`mem-spinner-sm`}),` `,e(`mem.saving`)]}):e(`mem.review.saveSelected`,{n:Y.filter(e=>e._checked).length})}),i(`span`,{className:`mem-review-select-links`,children:[l(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>Zn(e=>e.map(e=>({...e,_checked:!0}))),children:e(`mem.review.selectAll`)}),` / `,l(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>Zn(e=>e.map(e=>({...e,_checked:!1}))),children:e(`mem.review.none`)})]})]})]}),q===`done`&&Qn!==null&&i(`div`,{className:`mem-profile-success`,children:[l(m,{size:14}),` `,e(`mem.inf.saved`,{n:Qn})]}),q===`review`&&Y.length===0&&l(`div`,{className:`mem-profile-empty`,children:e(`mem.inf.empty`)})]})]}),V===`goals`&&i(`div`,{className:`mem-goals-tab`,children:[l(`div`,{className:`mem-goals-stats-row`,children:[`queued`,`in_progress`,`completed`,`failed`].map(t=>i(`div`,{className:`mem-goals-stat-pill mem-goal-status-${t.replace(`_`,`-`)}`,children:[l(`span`,{className:`mem-goals-stat-n`,children:Mn?.goals[t]??0}),l(`span`,{className:`mem-goals-stat-label`,children:e(Dt[t])})]},t))}),An.filter(e=>e.status===`pending_approval`).length>0&&i(`div`,{className:`mem-goals-approval-banner`,children:[i(`div`,{className:`mem-goals-approval-title`,children:[l(te,{size:14}),` `,e(`mem.goals.suggested`,{n:An.filter(e=>e.status===`pending_approval`).length})]}),An.filter(e=>e.status===`pending_approval`).map(t=>i(`div`,{className:`mem-goals-approval-item`,children:[i(`div`,{className:`mem-goals-approval-text`,children:[l(`strong`,{children:l(`bdi`,{children:t.title})}),l(`bdi`,{children:t.description})]}),i(`div`,{className:`mem-goals-approval-actions`,children:[l(`button`,{className:`btn-danger-sm`,onClick:()=>Ar(()=>xe(t.id),`mem.goals.rejectFailed`),children:e(`mem.goals.reject`)}),l(`button`,{className:`btn-secondary`,onClick:()=>Ar(()=>Ue(t.id),`mem.goals.acceptFailed`),children:e(`mem.goals.accept`)})]})]},t.id))]}),l(`div`,{className:`mem-goals-toolbar`,children:i(`button`,{className:`btn-primary`,onClick:()=>Vn(e=>!e),children:[l(Be,{size:14}),` `,e(`mem.goals.new`)]})}),Bn&&i(`div`,{className:`mem-goals-add-form`,children:[l(`input`,{className:`mem-input`,placeholder:e(`mem.goals.titlePlaceholder`),value:Hn.title,onChange:e=>Un(t=>({...t,title:e.target.value}))}),l(`textarea`,{className:`mem-input`,placeholder:e(`mem.goals.descPlaceholder`),rows:2,value:Hn.description,onChange:e=>Un(t=>({...t,description:e.target.value}))}),i(`div`,{className:`mem-goals-form-row`,children:[i(`select`,{className:`mem-select`,value:Hn.priority,onChange:e=>Un(t=>({...t,priority:e.target.value})),children:[l(`option`,{value:`low`,children:e(`mem.goals.priorityLow`)}),l(`option`,{value:`medium`,children:e(`mem.goals.priorityMedium`)}),l(`option`,{value:`high`,children:e(`mem.goals.priorityHigh`)})]}),l(`button`,{className:`btn-primary`,onClick:()=>{Hn.title.trim()&&Ar(async()=>{await Ze(Hn),Un({title:``,description:``,priority:`medium`}),Vn(!1)},`mem.goals.createFailed`)},children:e(`mem.goals.create`)}),l(`button`,{className:`btn-secondary`,onClick:()=>Vn(!1),children:e(`mem.cancel`)})]})]}),Pn?i(`div`,{className:`mem-loading`,children:[l(`div`,{className:`mem-spinner`}),` `,e(`mem.goals.loading`)]}):An.filter(e=>e.status!==`pending_approval`&&e.status!==`rejected`).length===0?i(`div`,{className:`mem-empty`,children:[l(`div`,{className:`mem-empty-icon`,children:l(st,{size:32})}),l(`p`,{children:e(`mem.goals.empty`)})]}):l(`div`,{className:`mem-goals-list`,children:An.filter(e=>e.status!==`pending_approval`&&e.status!==`rejected`).map(t=>i(`div`,{className:`mem-goal-card mem-goal-status-${t.status.replace(`_`,`-`)}`,children:[i(`div`,{className:`mem-goal-header`,role:`button`,tabIndex:0,"aria-expanded":In===t.id,onClick:()=>Ln(e=>e===t.id?null:t.id),onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),Ln(e=>e===t.id?null:t.id))},children:[i(`div`,{className:`mem-goal-header-left`,children:[l(`span`,{className:`mem-goal-status-dot status-${t.status.replace(`_`,`-`)}`}),l(`bdi`,{className:`mem-goal-title`,children:t.title}),l(`span`,{className:`mem-goal-priority mem-priority-${t.priority}`,children:l(w,{value:t.priority,keys:Ot})}),t.source!==`user`&&i(`span`,{className:`mem-goal-source-badge`,children:[l(te,{size:10}),` `,l(w,{value:t.source,keys:kt})]})]}),i(`div`,{className:`mem-goal-header-right`,children:[i(`span`,{className:`mem-goal-task-count`,children:[l(Qe,{size:12}),i(`bdi`,{dir:`ltr`,children:[t.tasks.filter(e=>e.status===`completed`).length,`/`,t.tasks.length]})]}),t.status===`queued`&&l(`button`,{className:`mem-goal-action-btn mem-goal-cancel-btn`,onClick:e=>{e.stopPropagation(),Ar(()=>ze(t.id),`mem.goals.cancelFailed`)},children:e(`mem.cancel`)}),Rn===t.id?l(`button`,{className:`mem-goal-action-btn mem-goal-delete-btn mem-goal-delete-confirm`,onClick:e=>{e.stopPropagation(),zn(null),Ar(()=>Xe(t.id),`mem.goals.deleteFailed`)},children:e(`mem.row.deleteConfirm`)}):l(`button`,{className:`mem-goal-action-btn mem-goal-delete-btn`,"aria-label":e(`mem.goals.deleteAria`,{title:t.title}),onClick:e=>{e.stopPropagation(),zn(t.id)},children:l(ke,{size:12})}),l(we,{size:14,className:In===t.id?`mem-chevron-open`:``})]})]}),In===t.id&&i(`div`,{className:`mem-goal-body`,children:[t.description&&l(`p`,{className:`mem-goal-desc`,children:l(`bdi`,{children:t.description})}),t.progress_notes&&l(`p`,{className:`mem-goal-progress`,children:l(`bdi`,{children:t.progress_notes})}),t.tasks.length>0?l(`div`,{className:`mem-task-list`,children:t.tasks.map(e=>i(`div`,{className:`mem-task-row mem-task-status-${e.status}`,children:[l(`span`,{className:`mem-task-dot status-${e.status}`}),l(`bdi`,{className:`mem-task-desc`,children:e.description}),l(`span`,{className:`mem-task-status-label`,children:l(w,{value:e.status,keys:Dt})}),e.result&&l(`bdi`,{className:`mem-task-result`,children:e.result})]},e.id))}):l(`p`,{className:`mem-goal-no-tasks`,children:e(`mem.goals.noTasks`)})]})]},t.id))})]})]}),Wt.length>0&&l(`div`,{className:`mem-toast-container`,"aria-live":`polite`,children:Wt.map(e=>i(`div`,{className:`mem-toast mem-toast-${e.type}`,role:`status`,children:[e.type===`success`&&l(m,{size:14}),e.type===`error`&&l(Ke,{size:14}),e.type===`info`&&l(Se,{size:14}),l(`span`,{children:e.text})]},e.id))})]})}export{Nt as MemoryDashboard};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./browser-KnDALPx_.js","./rolldown-runtime-XKyaHtl9.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{G as t,N as n,c as r,i,o as a,s as o}from"./useT-DmcuCJlO.js";import{X as s}from"./api-BsMIEtSA.js";import{Dt as c,Ht as l,Mt as u,X as d,ft as f,i as p,nt as m,rt as h,u as g,ut as _}from"./index-eGMUmm-L.js";var v=e(t(),1),y=null,b=`https://ngrok.com/download`;function x({isOpen:t,onClose:x,onStop:S,error:C,setupCommands:w,onRetry:T}){let[E,D]=(0,v.useState)(null),[O,k]=(0,v.useState)(!1),[A,j]=(0,v.useState)(null),M=i(),N=Array.isArray(w),P=!!C||N,[F,I]=(0,v.useState)(null),L=(0,v.useRef)(null);m(t,x);let R=(0,v.useRef)(null);d(R,t),g(R,t);let z=(0,v.useCallback)(async()=>{try{let e=await s();return D(e),e}catch(e){return n.system.error(`Failed to fetch tunnel status`,e),null}},[]);(0,v.useEffect)(()=>{if(!t||P)return;z();let e=setInterval(async()=>{let t=await z();t?.active&&t?.url&&clearInterval(e)},2e3);return()=>clearInterval(e)},[t,P,z]),(0,v.useEffect)(()=>{if(!E?.active||!E.url||!E.token||!L.current)return;let t=`${E.url}/?token=${E.token}`;n.system.info(`Generating QR code for: ${t}`),(async()=>{if(I(null),!y)try{let t=await p(()=>import(`./browser-KnDALPx_.js`).then(t=>e(t.default,1)),__vite__mapDeps([0,1]),import.meta.url);y=t.default||t}catch{n.system.error(`QR code library not available - install with: npm install qrcode`),I(`QR code unavailable on this build. Use the link below instead.`);return}let r=getComputedStyle(document.documentElement),i=r.getPropertyValue(`--text-primary`).trim(),a=r.getPropertyValue(`--bg-primary`).trim();if(!i||!a)n.system.error(`QR code skipped: --text-primary/--bg-primary did not resolve. styles/index.css must be loaded before this modal renders.`),I(`QR code unavailable — the theme did not load. Use the link below instead.`);else try{await y.toCanvas(L.current,t,{width:200,margin:2,color:{dark:i,light:a}})}catch(e){n.system.error(`QR code generation failed`,e),I(`QR code could not be drawn. Use the link below instead.`)}})()},[E?.active,E?.url,E?.token]);let B=(0,v.useRef)(null),V=(0,v.useCallback)(()=>{if(!E?.url||!E?.token)return;let e=`${E.url}/?token=${E.token}`;navigator.clipboard.writeText(e).then(()=>{k(!0),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>k(!1),2e3)})},[E]),H=(0,v.useCallback)(e=>{navigator.clipboard.writeText(e).then(()=>{j(e),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>j(null),2e3)}).catch(e=>n.system.error(`Could not copy the ngrok install command`,e))},[]);if((0,v.useEffect)(()=>()=>{B.current&&clearTimeout(B.current)},[]),!t)return null;let U=E?.active&&E?.url&&E?.token?`${E.url}/?token=${E.token}`:``;return o(`div`,{ref:R,className:`modal-overlay`,onClick:x,role:`dialog`,"aria-modal":`true`,"aria-label":`Mobile access`,children:r(`div`,{className:`modal-panel mobile-modal`,onClick:e=>e.stopPropagation(),children:[r(`div`,{className:`modal-header`,children:[r(`h3`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[o(_,{size:18}),`Mobile access`]}),o(`button`,{className:`btn-icon`,onClick:x,"aria-label":`Close`,children:o(h,{size:18})})]}),r(`div`,{className:`modal-body mobile-modal-body`,children:[r(`div`,{className:`tunnel-status`,children:[o(`span`,{className:`status-dot ${E?.active?`active`:N?`setup`:C?`error`:`starting`}`}),o(`span`,{children:E?.active?`Tunnel active`:N?M(`mobile.ngrokRequired`):C?`Couldn't start mobile access`:`Starting tunnel...`}),!E?.active&&!P&&o(`span`,{className:`tunnel-spinner`})]}),N&&r(`div`,{className:`tunnel-setup`,children:[o(`div`,{className:`tunnel-setup-title`,children:M(`mobile.setupTitle`)}),r(`p`,{children:[M(`mobile.setupIntro`),` `,w.length>0?M(`mobile.setupInstall`):M(`mobile.setupDownload`)]}),w.map(e=>r(`div`,{className:`tunnel-url-row tunnel-setup-command`,children:[o(`input`,{type:`text`,readOnly:!0,dir:`ltr`,value:e,"aria-label":M(`mobile.installCommand`)}),r(`button`,{className:`copy-url-btn ${A===e?`copied`:``}`,onClick:()=>H(e),title:M(`mobile.copyCommand`),children:[o(A===e?l:u,{size:13}),M(A===e?`mobile.copied`:`mobile.copy`)]})]},e)),r(`a`,{href:b,target:`_blank`,rel:`noopener noreferrer`,className:`tunnel-setup-link`,children:[M(`mobile.downloadPage`),` `,o(c,{size:11})]})]}),C&&!N&&o(`div`,{className:`tunnel-error`,children:C}),!P&&o(`div`,{className:`qr-code-area`,children:E?.active?r(a.Fragment,{children:[o(`canvas`,{ref:L,hidden:!!F}),F&&o(`div`,{className:`qr-placeholder error`,children:F})]}):r(`div`,{className:`qr-placeholder`,children:[o(`div`,{className:`placeholder-spinner`}),o(`span`,{children:`Connecting...`})]})}),E?.active&&U&&r(`div`,{className:`tunnel-url-area`,children:[o(`label`,{children:`Mobile URL`}),r(`div`,{className:`tunnel-url-row`,children:[o(`input`,{type:`text`,readOnly:!0,value:U}),r(`button`,{className:`copy-url-btn ${O?`copied`:``}`,onClick:V,title:`Copy URL`,children:[o(O?l:u,{size:13}),O?`Copied`:`Copy`]})]})]}),E?.active&&E?.publicIp&&E?.url&&!E.url.includes(`ngrok-free.app`)&&r(`div`,{className:`tunnel-password-hint`,children:[o(`label`,{children:`Tunnel password`}),o(`div`,{className:`tunnel-password-value`,children:E.publicIp}),o(`span`,{className:`tunnel-password-note`,children:`Enter this when the tunnel page asks for a password`})]}),!P&&o(`div`,{className:`mobile-instructions`,children:r(`ol`,{children:[o(`li`,{children:F?`Open the mobile URL above on your phone`:`Scan the QR code with your phone's camera`}),E?.url&&!E.url.includes(`ngrok-free.app`)&&o(`li`,{children:`Enter the tunnel password shown above when prompted`}),o(`li`,{children:`Chat with GAIA from your mobile device`}),o(`li`,{children:`Your data stays secure via encrypted tunnel`})]})}),E?.active&&!C&&r(`div`,{className:`mobile-install-hint`,children:[o(`div`,{className:`mobile-install-hint-title`,children:M(`mobileAccess.installTitle`)}),o(`p`,{children:M(`mobileAccess.installSteps`)}),o(`p`,{children:M(`mobileAccess.linkLifetime`)})]}),r(`div`,{className:`mobile-access-actions`,children:[E?.active&&S&&o(`button`,{className:`btn-danger`,onClick:S,title:`Close the tunnel and revoke the mobile URL`,children:`Stop tunnel`}),N&&T&&r(`button`,{className:`btn-primary`,onClick:T,children:[o(f,{size:13}),` `,M(`mobile.retry`)]}),o(`button`,{className:`btn-secondary`,onClick:x,children:`Close`})]})]})]})})}export{x as MobileAccessModal};
2
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{G as t,N as n,c as r,i,o as a,s as o}from"./useT-DmcuCJlO.js";import{X as s}from"./api-BsMIEtSA.js";import{Dt as c,Ht as l,Mt as u,X as d,ft as f,i as p,nt as m,rt as h,u as g,ut as _}from"./index-DBKyXg4y.js";var v=e(t(),1),y=null,b=`https://ngrok.com/download`;function x({isOpen:t,onClose:x,onStop:S,error:C,setupCommands:w,onRetry:T}){let[E,D]=(0,v.useState)(null),[O,k]=(0,v.useState)(!1),[A,j]=(0,v.useState)(null),M=i(),N=Array.isArray(w),P=!!C||N,[F,I]=(0,v.useState)(null),L=(0,v.useRef)(null);m(t,x);let R=(0,v.useRef)(null);d(R,t),g(R,t);let z=(0,v.useCallback)(async()=>{try{let e=await s();return D(e),e}catch(e){return n.system.error(`Failed to fetch tunnel status`,e),null}},[]);(0,v.useEffect)(()=>{if(!t||P)return;z();let e=setInterval(async()=>{let t=await z();t?.active&&t?.url&&clearInterval(e)},2e3);return()=>clearInterval(e)},[t,P,z]),(0,v.useEffect)(()=>{if(!E?.active||!E.url||!E.token||!L.current)return;let t=`${E.url}/?token=${E.token}`;n.system.info(`Generating QR code for: ${t}`),(async()=>{if(I(null),!y)try{let t=await p(()=>import(`./browser-KnDALPx_.js`).then(t=>e(t.default,1)),__vite__mapDeps([0,1]),import.meta.url);y=t.default||t}catch{n.system.error(`QR code library not available - install with: npm install qrcode`),I(`QR code unavailable on this build. Use the link below instead.`);return}let r=getComputedStyle(document.documentElement),i=r.getPropertyValue(`--text-primary`).trim(),a=r.getPropertyValue(`--bg-primary`).trim();if(!i||!a)n.system.error(`QR code skipped: --text-primary/--bg-primary did not resolve. styles/index.css must be loaded before this modal renders.`),I(`QR code unavailable — the theme did not load. Use the link below instead.`);else try{await y.toCanvas(L.current,t,{width:200,margin:2,color:{dark:i,light:a}})}catch(e){n.system.error(`QR code generation failed`,e),I(`QR code could not be drawn. Use the link below instead.`)}})()},[E?.active,E?.url,E?.token]);let B=(0,v.useRef)(null),V=(0,v.useCallback)(()=>{if(!E?.url||!E?.token)return;let e=`${E.url}/?token=${E.token}`;navigator.clipboard.writeText(e).then(()=>{k(!0),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>k(!1),2e3)})},[E]),H=(0,v.useCallback)(e=>{navigator.clipboard.writeText(e).then(()=>{j(e),B.current&&clearTimeout(B.current),B.current=setTimeout(()=>j(null),2e3)}).catch(e=>n.system.error(`Could not copy the ngrok install command`,e))},[]);if((0,v.useEffect)(()=>()=>{B.current&&clearTimeout(B.current)},[]),!t)return null;let U=E?.active&&E?.url&&E?.token?`${E.url}/?token=${E.token}`:``;return o(`div`,{ref:R,className:`modal-overlay`,onClick:x,role:`dialog`,"aria-modal":`true`,"aria-label":`Mobile access`,children:r(`div`,{className:`modal-panel mobile-modal`,onClick:e=>e.stopPropagation(),children:[r(`div`,{className:`modal-header`,children:[r(`h3`,{style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[o(_,{size:18}),`Mobile access`]}),o(`button`,{className:`btn-icon`,onClick:x,"aria-label":`Close`,children:o(h,{size:18})})]}),r(`div`,{className:`modal-body mobile-modal-body`,children:[r(`div`,{className:`tunnel-status`,children:[o(`span`,{className:`status-dot ${E?.active?`active`:N?`setup`:C?`error`:`starting`}`}),o(`span`,{children:E?.active?`Tunnel active`:N?M(`mobile.ngrokRequired`):C?`Couldn't start mobile access`:`Starting tunnel...`}),!E?.active&&!P&&o(`span`,{className:`tunnel-spinner`})]}),N&&r(`div`,{className:`tunnel-setup`,children:[o(`div`,{className:`tunnel-setup-title`,children:M(`mobile.setupTitle`)}),r(`p`,{children:[M(`mobile.setupIntro`),` `,w.length>0?M(`mobile.setupInstall`):M(`mobile.setupDownload`)]}),w.map(e=>r(`div`,{className:`tunnel-url-row tunnel-setup-command`,children:[o(`input`,{type:`text`,readOnly:!0,dir:`ltr`,value:e,"aria-label":M(`mobile.installCommand`)}),r(`button`,{className:`copy-url-btn ${A===e?`copied`:``}`,onClick:()=>H(e),title:M(`mobile.copyCommand`),children:[o(A===e?l:u,{size:13}),M(A===e?`mobile.copied`:`mobile.copy`)]})]},e)),r(`a`,{href:b,target:`_blank`,rel:`noopener noreferrer`,className:`tunnel-setup-link`,children:[M(`mobile.downloadPage`),` `,o(c,{size:11})]})]}),C&&!N&&o(`div`,{className:`tunnel-error`,children:C}),!P&&o(`div`,{className:`qr-code-area`,children:E?.active?r(a.Fragment,{children:[o(`canvas`,{ref:L,hidden:!!F}),F&&o(`div`,{className:`qr-placeholder error`,children:F})]}):r(`div`,{className:`qr-placeholder`,children:[o(`div`,{className:`placeholder-spinner`}),o(`span`,{children:`Connecting...`})]})}),E?.active&&U&&r(`div`,{className:`tunnel-url-area`,children:[o(`label`,{children:`Mobile URL`}),r(`div`,{className:`tunnel-url-row`,children:[o(`input`,{type:`text`,readOnly:!0,value:U}),r(`button`,{className:`copy-url-btn ${O?`copied`:``}`,onClick:V,title:`Copy URL`,children:[o(O?l:u,{size:13}),O?`Copied`:`Copy`]})]})]}),E?.active&&E?.publicIp&&E?.url&&!E.url.includes(`ngrok-free.app`)&&r(`div`,{className:`tunnel-password-hint`,children:[o(`label`,{children:`Tunnel password`}),o(`div`,{className:`tunnel-password-value`,children:E.publicIp}),o(`span`,{className:`tunnel-password-note`,children:`Enter this when the tunnel page asks for a password`})]}),!P&&o(`div`,{className:`mobile-instructions`,children:r(`ol`,{children:[o(`li`,{children:F?`Open the mobile URL above on your phone`:`Scan the QR code with your phone's camera`}),E?.url&&!E.url.includes(`ngrok-free.app`)&&o(`li`,{children:`Enter the tunnel password shown above when prompted`}),o(`li`,{children:`Chat with GAIA from your mobile device`}),o(`li`,{children:`Your data stays secure via encrypted tunnel`})]})}),E?.active&&!C&&r(`div`,{className:`mobile-install-hint`,children:[o(`div`,{className:`mobile-install-hint-title`,children:M(`mobileAccess.installTitle`)}),o(`p`,{children:M(`mobileAccess.installSteps`)}),o(`p`,{children:M(`mobileAccess.linkLifetime`)})]}),r(`div`,{className:`mobile-access-actions`,children:[E?.active&&S&&o(`button`,{className:`btn-danger`,onClick:S,title:`Close the tunnel and revoke the mobile URL`,children:`Stop tunnel`}),N&&T&&r(`button`,{className:`btn-primary`,onClick:T,children:[o(f,{size:13}),` `,M(`mobile.retry`)]}),o(`button`,{className:`btn-secondary`,onClick:x,children:`Close`})]})]})]})})}export{x as MobileAccessModal};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{G as t,N as n,W as r,c as i,i as a,o,r as s,s as c,t as l,u}from"./useT-DmcuCJlO.js";import{n as d,t as f}from"./zap-CORjwTA2.js";import{ht as p}from"./api-BsMIEtSA.js";import{Nt as m,X as h,ct as g,gt as _,mt as v,n as y,nt as b,rt as x,u as S}from"./index-eGMUmm-L.js";var C={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};C.node;var w=r(C),T=e(t(),1),E=8e3,D={active:`schedules.status.active`,paused:`schedules.status.paused`,cancelled:`schedules.status.cancelled`};function O(e,t,n,r){if(!e)return t(`schedules.time.never`);let i=new Date(e),a=(n||new Date).getTime()-i.getTime(),o=Math.floor(a/1e3);if(o<0){let e=Math.abs(o);if(e<60)return t(`schedules.time.inSeconds`,{n:e});let n=Math.floor(e/60);if(n<60)return t(`schedules.time.inMinutes`,{n});let r=Math.floor(n/60);return r<24?t(`schedules.time.inHours`,{n:r}):t(`schedules.time.inDays`,{n:Math.floor(r/24)})}if(o<60)return t(`time.justNow`);let s=Math.floor(o/60);if(s<60)return t(`time.minutesAgo`,{n:s});let c=Math.floor(s/60);return c<24?t(`time.hoursAgo`,{n:c}):i.toLocaleDateString(r,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function k(e,t,n=s.bare,r){if(!e)return n(`schedules.time.never`);let i=O(e,n,t,r),a=new Date(e);return a.getTime()<=(t||new Date).getTime()?i:n(`schedules.time.clockIn`,{clock:a.toLocaleString(r,{weekday:`short`,hour:`numeric`,minute:`2-digit`}),relative:i})}function A(e){if(!e)return!1;let t=new Date(e).getTime()-Date.now();return t>0&&t<6e4}function j(e,t){let[n,r]=e.split(`:`).map(Number),i=n===0?12:n>12?n-12:n;return t(n>=12?`schedules.clock.pm`:`schedules.clock.am`,{time:`${i}:${r.toString().padStart(2,`0`)}`})}function M(e,t){let n=e===0?12:e>12?e-12:e;return t(e>=12?`schedules.clock.pm`:`schedules.clock.am`,{time:String(n)})}function N(e,t){return e.length===5&&!e.includes(5)&&!e.includes(6)?t(`schedules.days.weekdays`):e.length===2&&e.includes(5)&&e.includes(6)?t(`schedules.days.weekends`):e.length===7?t(`schedules.days.every`):e.map(e=>t(`schedules.day.${e}`)).join(t(`schedules.days.join`))}function P({schedule:e}){let t=a(),{selectedSchedule:r,selectSchedule:s,updateScheduleStatus:p,runScheduleNow:h,deleteSchedule:v,results:b,resultsLoading:x,loadSchedules:S,loadResults:C}=y(),{setCurrentSession:j,setShowSchedules:M}=u(),N=r===e.name,[P,F]=(0,T.useState)(!1),I=(0,T.useRef)(null),L=(0,T.useCallback)(()=>{I.current&&=(clearTimeout(I.current),null)},[]);(0,T.useEffect)(()=>L,[L]);let[R,z]=(0,T.useState)(()=>new Date),B=(0,T.useRef)(null);(0,T.useEffect)(()=>{let t=e.status===`active`&&A(e.next_run_at);return t&&!B.current?B.current=setInterval(()=>{z(new Date),e.next_run_at&&new Date(e.next_run_at).getTime()<=Date.now()&&S()},1e3):!t&&B.current&&(clearInterval(B.current),B.current=null),()=>{B.current&&=(clearInterval(B.current),null)}},[e.status,e.next_run_at,S]);let V=(0,T.useRef)(e.last_run_at);(0,T.useEffect)(()=>{N&&e.last_run_at!==V.current&&(V.current=e.last_run_at,C(e.name))},[N,e.last_run_at,e.name,C]);let H=e.last_run_at&&Date.now()-new Date(e.last_run_at).getTime()<5e3,U=(0,T.useCallback)(t=>{t.stopPropagation();let r=e.status===`active`?`paused`:`active`;n.ui.info(`Schedule "${e.name}": ${e.status} -> ${r}`),p(e.name,r)},[e.name,e.status,p]),W=(0,T.useCallback)(t=>{t.stopPropagation(),n.ui.info(`Schedule "${e.name}": run now`),h(e.name)},[e.name,h]),G=(0,T.useCallback)(t=>{t.stopPropagation(),L(),P?(n.ui.info(`Deleting schedule "${e.name}"`),v(e.name)):(F(!0),I.current=setTimeout(()=>{I.current=null,F(!1)},E))},[e.name,P,v,L]),K=(0,T.useCallback)(t=>{t.stopPropagation(),e.session_id&&(n.ui.info(`Opening chat session for schedule "${e.name}"`),j(e.session_id),M(!1))},[e.session_id,e.name,j,M]);return i(`div`,{className:`schedule-card ${N?`selected`:``} ${H?`just-ran`:``}`,onClick:()=>s(N?null:e.name),children:[i(`div`,{className:`schedule-card-header`,children:[c(`span`,{className:`schedule-card-name`,dir:`auto`,children:e.name}),c(`span`,{className:`schedule-card-status ${e.status}`,children:t(D[e.status])})]}),c(`div`,{className:`schedule-card-prompt`,dir:`auto`,children:e.prompt}),i(`div`,{className:`schedule-card-meta`,children:[i(`span`,{title:e.description,children:[c(m,{size:11}),` `,c(`bdi`,{children:e.description})]}),c(`span`,{children:t(`schedules.card.runs`,{n:e.run_count})}),e.error_count>0&&c(`span`,{children:t(`schedules.card.errors`,{n:e.error_count})}),c(`span`,{children:t.compose(n=>n(`schedules.card.last`,{when:O(e.last_run_at,n,void 0,l(t))}))}),c(`span`,{children:t.compose(n=>n(`schedules.card.next`,{when:k(e.next_run_at,R,n,l(t))}))})]}),e.last_error&&c(`div`,{className:`schedule-card-error`,children:t(`schedules.card.lastFailed`,{error:e.last_error})}),i(`div`,{className:`schedule-card-actions`,children:[e.session_id&&i(`button`,{className:`btn-sm chat`,onClick:K,title:t(`schedules.card.openChatTitle`),children:[c(d,{size:11}),` `,t(`schedules.card.openChat`)]}),i(`button`,{className:`btn-sm`,onClick:W,disabled:e.running,title:t(`schedules.card.runNowTitle`),children:[c(f,{size:11}),` `,t(e.running?`schedules.card.running`:`schedules.card.runNow`)]}),c(`button`,{className:`btn-sm`,onClick:U,title:t(e.status===`active`?`schedules.card.pause`:`schedules.card.resume`),children:e.status===`active`?i(o.Fragment,{children:[c(_,{size:11}),` `,t(`schedules.card.pause`)]}):i(o.Fragment,{children:[c(w,{size:11}),` `,t(`schedules.card.resume`)]})}),i(`button`,{className:`btn-sm danger`,onClick:G,title:t(`schedules.card.delete`),children:[c(g,{size:11}),` `,t(P?`schedules.card.confirmDelete`:`schedules.card.delete`)]})]}),N&&i(`div`,{className:`schedule-results`,children:[c(`h4`,{children:t(`schedules.history`)}),x?c(`p`,{className:`schedule-results-empty`,children:t(`schedules.historyLoading`)}):b.length===0?c(`p`,{className:`schedule-results-empty`,children:t(`schedules.historyEmpty`)}):c(`div`,{className:`schedule-results-list`,children:b.map(e=>i(`div`,{className:`schedule-result-item`,children:[c(`div`,{className:`schedule-result-time`,children:t.compose(n=>O(e.executed_at,n,void 0,l(t)))}),e.error?c(`div`,{className:`schedule-result-content schedule-result-error`,children:c(`bdi`,{children:e.error})}):c(`div`,{className:`schedule-result-content`,children:e.result?c(`bdi`,{children:e.result}):t(`schedules.noOutput`)})]},e.id))})]})]})}function F(){let e=a(),{setShowSchedules:t}=u(),{schedules:r,loading:s,error:d,actionError:f,loadSchedules:g,createSchedule:_,dismissActionError:C}=y(),w=(0,T.useCallback)(()=>t(!1),[t]);b(!0,w);let E=(0,T.useRef)(null);h(E,!0),S(E,!0);let[D,O]=(0,T.useState)(!1),[k,A]=(0,T.useState)(``),[F,I]=(0,T.useState)(``),[L,R]=(0,T.useState)(``),[z,B]=(0,T.useState)(null),[V,H]=(0,T.useState)(!1),[U,W]=(0,T.useState)(!1),[G,K]=(0,T.useState)(null),q=(0,T.useId)(),J=`${q}-when`,Y=`${q}-when-error`,X=`${q}-name`,ee=`${q}-prompt`,te=!V&&z!==null&&!z.valid,Z=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(!k.trim())B(null);else return Z.current&&clearTimeout(Z.current),Z.current=window.setTimeout(async()=>{H(!0);try{let e=await p(k);B(e)}catch{B(null)}finally{H(!1)}},400),()=>{Z.current&&clearTimeout(Z.current)}},[k]);let Q=(0,T.useRef)(null);(0,T.useEffect)(()=>(n.ui.info(`Schedule Manager opened`),g(),Q.current=window.setInterval(()=>g(),5e3),()=>{Q.current&&clearInterval(Q.current),C()}),[g,C]);let $=k.trim()&&F.trim()&&L.trim()&&(z===null||z.valid),ne=(0,T.useCallback)(async()=>{if($){W(!0),K(null);try{await _(F.trim(),k.trim(),L.trim()),A(``),I(``),R(``),B(null),O(!1),n.ui.info(`Schedule "${F}" created`)}catch(t){K(t instanceof Error?t.message:e(`schedules.createFailed`))}finally{W(!1)}}},[$,F,k,L,_,e]);return c(`div`,{ref:E,className:`modal-overlay`,onClick:()=>t(!1),role:`dialog`,"aria-modal":`true`,"aria-label":e(`schedules.title`),children:i(`div`,{className:`modal-panel schedule-modal`,onClick:e=>e.stopPropagation(),children:[i(`div`,{className:`modal-header`,children:[c(`h3`,{children:e(`schedules.title`)}),c(`button`,{className:`btn-icon`,onClick:()=>t(!1),"aria-label":e(`schedules.close`),children:c(x,{size:18})})]}),i(`div`,{className:`modal-body`,children:[c(`section`,{className:`schedule-section`,children:D?i(`div`,{className:`schedule-create-form`,children:[i(`div`,{className:`schedule-field`,children:[c(`label`,{className:`schedule-field-label`,htmlFor:J,children:e(`schedules.when`)}),c(`textarea`,{id:J,className:`schedule-nl-input`,placeholder:e.bare(`schedules.whenPlaceholder`),value:k,onChange:e=>A(e.target.value),"aria-invalid":te,"aria-describedby":te?Y:void 0,autoFocus:!0,rows:2})]}),(z||V)&&c(`div`,{className:`schedule-parsed-preview ${z?.valid?`valid`:`invalid`}`,"aria-live":`polite`,children:V?c(`span`,{className:`schedule-parsed-loading`,children:e(`schedules.parsing`)}):z?i(o.Fragment,{children:[z.valid?c(`div`,{className:`schedule-parsed-description`,children:c(`bdi`,{children:z.description})}):i(`div`,{id:Y,children:[c(`div`,{className:`schedule-parsed-description`,children:e(`schedules.notUnderstood`)}),c(`div`,{className:`schedule-parsed-hint`,children:c(`bdi`,{children:z.description})})]}),z.valid&&z.next_run_at&&c(`div`,{className:`schedule-parsed-next`,children:e(`schedules.nextRun`,{when:new Date(z.next_run_at).toLocaleString(l(e))})}),z.valid&&i(`div`,{className:`schedule-parsed-details`,children:[z.time_of_day&&i(`span`,{className:`schedule-parsed-tag`,children:[c(m,{size:10}),` `,e.compose(e=>j(z.time_of_day,e))]}),z.start_hour!=null&&z.end_hour!=null&&i(`span`,{className:`schedule-parsed-tag`,children:[c(m,{size:10}),` `,e.compose(e=>e(`schedules.hours`,{start:M(z.start_hour,e),end:M(z.end_hour,e)}))]}),z.days_of_week&&c(`span`,{className:`schedule-parsed-tag`,children:e.compose(e=>N(z.days_of_week,e))})]})]}):null}),i(`div`,{className:`schedule-field`,children:[c(`label`,{className:`schedule-field-label`,htmlFor:X,children:e(`schedules.name`)}),c(`div`,{className:`schedule-form-row`,children:c(`input`,{id:X,type:`text`,placeholder:e(`schedules.namePlaceholder`),value:F,onChange:e=>I(e.target.value),className:!F.trim()&&k.trim()?`schedule-field-missing`:``})})]}),i(`div`,{className:`schedule-field`,children:[c(`label`,{className:`schedule-field-label`,htmlFor:ee,children:e(`schedules.prompt`)}),c(`textarea`,{id:ee,className:`schedule-prompt-input ${!L.trim()&&k.trim()?`schedule-field-missing`:``}`,placeholder:e(`schedules.promptPlaceholder`),value:L,onChange:e=>R(e.target.value)})]}),G&&c(`p`,{className:`schedule-form-error`,children:c(`bdi`,{children:G})}),i(`div`,{className:`schedule-create-actions`,children:[c(`button`,{className:`btn-secondary`,onClick:()=>{O(!1),K(null),B(null),A(``),I(``),R(``)},children:e(`schedules.cancel`)}),c(`button`,{className:`btn-primary`,onClick:ne,disabled:!$||U,children:e(U?`schedules.creating`:`schedules.create`)})]})]}):i(`button`,{className:`btn-primary`,onClick:()=>O(!0),children:[c(v,{size:14}),` `,e(`schedules.new`)]})}),i(`section`,{className:`schedule-section`,children:[c(`h4`,{children:e(`schedules.list`)}),f&&i(`div`,{className:`schedule-action-error`,role:`alert`,children:[c(`span`,{children:c(`bdi`,{children:f})}),c(`button`,{className:`btn-icon`,onClick:C,"aria-label":e(`schedules.dismissError`),children:c(x,{size:14})})]}),s?c(`p`,{className:`schedule-empty`,children:e(`schedules.loading`)}):d?c(`p`,{className:`schedule-empty`,children:e(`schedules.loadFailed`)}):r.length===0?c(`p`,{className:`schedule-empty`,children:e(`schedules.empty`)}):c(`div`,{className:`schedule-list`,children:r.map(e=>c(P,{schedule:e},e.id))})]})]})]})})}export{F as ScheduleManager};
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{G as t,N as n,W as r,c as i,i as a,o,r as s,s as c,t as l,u}from"./useT-DmcuCJlO.js";import{n as d,t as f}from"./zap-CORjwTA2.js";import{ht as p}from"./api-BsMIEtSA.js";import{Nt as m,X as h,ct as g,gt as _,mt as v,n as y,nt as b,rt as x,u as S}from"./index-DBKyXg4y.js";var C={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};C.node;var w=r(C),T=e(t(),1),E=8e3,D={active:`schedules.status.active`,paused:`schedules.status.paused`,cancelled:`schedules.status.cancelled`};function O(e,t,n,r){if(!e)return t(`schedules.time.never`);let i=new Date(e),a=(n||new Date).getTime()-i.getTime(),o=Math.floor(a/1e3);if(o<0){let e=Math.abs(o);if(e<60)return t(`schedules.time.inSeconds`,{n:e});let n=Math.floor(e/60);if(n<60)return t(`schedules.time.inMinutes`,{n});let r=Math.floor(n/60);return r<24?t(`schedules.time.inHours`,{n:r}):t(`schedules.time.inDays`,{n:Math.floor(r/24)})}if(o<60)return t(`time.justNow`);let s=Math.floor(o/60);if(s<60)return t(`time.minutesAgo`,{n:s});let c=Math.floor(s/60);return c<24?t(`time.hoursAgo`,{n:c}):i.toLocaleDateString(r,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function k(e,t,n=s.bare,r){if(!e)return n(`schedules.time.never`);let i=O(e,n,t,r),a=new Date(e);return a.getTime()<=(t||new Date).getTime()?i:n(`schedules.time.clockIn`,{clock:a.toLocaleString(r,{weekday:`short`,hour:`numeric`,minute:`2-digit`}),relative:i})}function A(e){if(!e)return!1;let t=new Date(e).getTime()-Date.now();return t>0&&t<6e4}function j(e,t){let[n,r]=e.split(`:`).map(Number),i=n===0?12:n>12?n-12:n;return t(n>=12?`schedules.clock.pm`:`schedules.clock.am`,{time:`${i}:${r.toString().padStart(2,`0`)}`})}function M(e,t){let n=e===0?12:e>12?e-12:e;return t(e>=12?`schedules.clock.pm`:`schedules.clock.am`,{time:String(n)})}function N(e,t){return e.length===5&&!e.includes(5)&&!e.includes(6)?t(`schedules.days.weekdays`):e.length===2&&e.includes(5)&&e.includes(6)?t(`schedules.days.weekends`):e.length===7?t(`schedules.days.every`):e.map(e=>t(`schedules.day.${e}`)).join(t(`schedules.days.join`))}function P({schedule:e}){let t=a(),{selectedSchedule:r,selectSchedule:s,updateScheduleStatus:p,runScheduleNow:h,deleteSchedule:v,results:b,resultsLoading:x,loadSchedules:S,loadResults:C}=y(),{setCurrentSession:j,setShowSchedules:M}=u(),N=r===e.name,[P,F]=(0,T.useState)(!1),I=(0,T.useRef)(null),L=(0,T.useCallback)(()=>{I.current&&=(clearTimeout(I.current),null)},[]);(0,T.useEffect)(()=>L,[L]);let[R,z]=(0,T.useState)(()=>new Date),B=(0,T.useRef)(null);(0,T.useEffect)(()=>{let t=e.status===`active`&&A(e.next_run_at);return t&&!B.current?B.current=setInterval(()=>{z(new Date),e.next_run_at&&new Date(e.next_run_at).getTime()<=Date.now()&&S()},1e3):!t&&B.current&&(clearInterval(B.current),B.current=null),()=>{B.current&&=(clearInterval(B.current),null)}},[e.status,e.next_run_at,S]);let V=(0,T.useRef)(e.last_run_at);(0,T.useEffect)(()=>{N&&e.last_run_at!==V.current&&(V.current=e.last_run_at,C(e.name))},[N,e.last_run_at,e.name,C]);let H=e.last_run_at&&Date.now()-new Date(e.last_run_at).getTime()<5e3,U=(0,T.useCallback)(t=>{t.stopPropagation();let r=e.status===`active`?`paused`:`active`;n.ui.info(`Schedule "${e.name}": ${e.status} -> ${r}`),p(e.name,r)},[e.name,e.status,p]),W=(0,T.useCallback)(t=>{t.stopPropagation(),n.ui.info(`Schedule "${e.name}": run now`),h(e.name)},[e.name,h]),G=(0,T.useCallback)(t=>{t.stopPropagation(),L(),P?(n.ui.info(`Deleting schedule "${e.name}"`),v(e.name)):(F(!0),I.current=setTimeout(()=>{I.current=null,F(!1)},E))},[e.name,P,v,L]),K=(0,T.useCallback)(t=>{t.stopPropagation(),e.session_id&&(n.ui.info(`Opening chat session for schedule "${e.name}"`),j(e.session_id),M(!1))},[e.session_id,e.name,j,M]);return i(`div`,{className:`schedule-card ${N?`selected`:``} ${H?`just-ran`:``}`,onClick:()=>s(N?null:e.name),children:[i(`div`,{className:`schedule-card-header`,children:[c(`span`,{className:`schedule-card-name`,dir:`auto`,children:e.name}),c(`span`,{className:`schedule-card-status ${e.status}`,children:t(D[e.status])})]}),c(`div`,{className:`schedule-card-prompt`,dir:`auto`,children:e.prompt}),i(`div`,{className:`schedule-card-meta`,children:[i(`span`,{title:e.description,children:[c(m,{size:11}),` `,c(`bdi`,{children:e.description})]}),c(`span`,{children:t(`schedules.card.runs`,{n:e.run_count})}),e.error_count>0&&c(`span`,{children:t(`schedules.card.errors`,{n:e.error_count})}),c(`span`,{children:t.compose(n=>n(`schedules.card.last`,{when:O(e.last_run_at,n,void 0,l(t))}))}),c(`span`,{children:t.compose(n=>n(`schedules.card.next`,{when:k(e.next_run_at,R,n,l(t))}))})]}),e.last_error&&c(`div`,{className:`schedule-card-error`,children:t(`schedules.card.lastFailed`,{error:e.last_error})}),i(`div`,{className:`schedule-card-actions`,children:[e.session_id&&i(`button`,{className:`btn-sm chat`,onClick:K,title:t(`schedules.card.openChatTitle`),children:[c(d,{size:11}),` `,t(`schedules.card.openChat`)]}),i(`button`,{className:`btn-sm`,onClick:W,disabled:e.running,title:t(`schedules.card.runNowTitle`),children:[c(f,{size:11}),` `,t(e.running?`schedules.card.running`:`schedules.card.runNow`)]}),c(`button`,{className:`btn-sm`,onClick:U,title:t(e.status===`active`?`schedules.card.pause`:`schedules.card.resume`),children:e.status===`active`?i(o.Fragment,{children:[c(_,{size:11}),` `,t(`schedules.card.pause`)]}):i(o.Fragment,{children:[c(w,{size:11}),` `,t(`schedules.card.resume`)]})}),i(`button`,{className:`btn-sm danger`,onClick:G,title:t(`schedules.card.delete`),children:[c(g,{size:11}),` `,t(P?`schedules.card.confirmDelete`:`schedules.card.delete`)]})]}),N&&i(`div`,{className:`schedule-results`,children:[c(`h4`,{children:t(`schedules.history`)}),x?c(`p`,{className:`schedule-results-empty`,children:t(`schedules.historyLoading`)}):b.length===0?c(`p`,{className:`schedule-results-empty`,children:t(`schedules.historyEmpty`)}):c(`div`,{className:`schedule-results-list`,children:b.map(e=>i(`div`,{className:`schedule-result-item`,children:[c(`div`,{className:`schedule-result-time`,children:t.compose(n=>O(e.executed_at,n,void 0,l(t)))}),e.error?c(`div`,{className:`schedule-result-content schedule-result-error`,children:c(`bdi`,{children:e.error})}):c(`div`,{className:`schedule-result-content`,children:e.result?c(`bdi`,{children:e.result}):t(`schedules.noOutput`)})]},e.id))})]})]})}function F(){let e=a(),{setShowSchedules:t}=u(),{schedules:r,loading:s,error:d,actionError:f,loadSchedules:g,createSchedule:_,dismissActionError:C}=y(),w=(0,T.useCallback)(()=>t(!1),[t]);b(!0,w);let E=(0,T.useRef)(null);h(E,!0),S(E,!0);let[D,O]=(0,T.useState)(!1),[k,A]=(0,T.useState)(``),[F,I]=(0,T.useState)(``),[L,R]=(0,T.useState)(``),[z,B]=(0,T.useState)(null),[V,H]=(0,T.useState)(!1),[U,W]=(0,T.useState)(!1),[G,K]=(0,T.useState)(null),q=(0,T.useId)(),J=`${q}-when`,Y=`${q}-when-error`,X=`${q}-name`,ee=`${q}-prompt`,te=!V&&z!==null&&!z.valid,Z=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(!k.trim())B(null);else return Z.current&&clearTimeout(Z.current),Z.current=window.setTimeout(async()=>{H(!0);try{let e=await p(k);B(e)}catch{B(null)}finally{H(!1)}},400),()=>{Z.current&&clearTimeout(Z.current)}},[k]);let Q=(0,T.useRef)(null);(0,T.useEffect)(()=>(n.ui.info(`Schedule Manager opened`),g(),Q.current=window.setInterval(()=>g(),5e3),()=>{Q.current&&clearInterval(Q.current),C()}),[g,C]);let $=k.trim()&&F.trim()&&L.trim()&&(z===null||z.valid),ne=(0,T.useCallback)(async()=>{if($){W(!0),K(null);try{await _(F.trim(),k.trim(),L.trim()),A(``),I(``),R(``),B(null),O(!1),n.ui.info(`Schedule "${F}" created`)}catch(t){K(t instanceof Error?t.message:e(`schedules.createFailed`))}finally{W(!1)}}},[$,F,k,L,_,e]);return c(`div`,{ref:E,className:`modal-overlay`,onClick:()=>t(!1),role:`dialog`,"aria-modal":`true`,"aria-label":e(`schedules.title`),children:i(`div`,{className:`modal-panel schedule-modal`,onClick:e=>e.stopPropagation(),children:[i(`div`,{className:`modal-header`,children:[c(`h3`,{children:e(`schedules.title`)}),c(`button`,{className:`btn-icon`,onClick:()=>t(!1),"aria-label":e(`schedules.close`),children:c(x,{size:18})})]}),i(`div`,{className:`modal-body`,children:[c(`section`,{className:`schedule-section`,children:D?i(`div`,{className:`schedule-create-form`,children:[i(`div`,{className:`schedule-field`,children:[c(`label`,{className:`schedule-field-label`,htmlFor:J,children:e(`schedules.when`)}),c(`textarea`,{id:J,className:`schedule-nl-input`,placeholder:e.bare(`schedules.whenPlaceholder`),value:k,onChange:e=>A(e.target.value),"aria-invalid":te,"aria-describedby":te?Y:void 0,autoFocus:!0,rows:2})]}),(z||V)&&c(`div`,{className:`schedule-parsed-preview ${z?.valid?`valid`:`invalid`}`,"aria-live":`polite`,children:V?c(`span`,{className:`schedule-parsed-loading`,children:e(`schedules.parsing`)}):z?i(o.Fragment,{children:[z.valid?c(`div`,{className:`schedule-parsed-description`,children:c(`bdi`,{children:z.description})}):i(`div`,{id:Y,children:[c(`div`,{className:`schedule-parsed-description`,children:e(`schedules.notUnderstood`)}),c(`div`,{className:`schedule-parsed-hint`,children:c(`bdi`,{children:z.description})})]}),z.valid&&z.next_run_at&&c(`div`,{className:`schedule-parsed-next`,children:e(`schedules.nextRun`,{when:new Date(z.next_run_at).toLocaleString(l(e))})}),z.valid&&i(`div`,{className:`schedule-parsed-details`,children:[z.time_of_day&&i(`span`,{className:`schedule-parsed-tag`,children:[c(m,{size:10}),` `,e.compose(e=>j(z.time_of_day,e))]}),z.start_hour!=null&&z.end_hour!=null&&i(`span`,{className:`schedule-parsed-tag`,children:[c(m,{size:10}),` `,e.compose(e=>e(`schedules.hours`,{start:M(z.start_hour,e),end:M(z.end_hour,e)}))]}),z.days_of_week&&c(`span`,{className:`schedule-parsed-tag`,children:e.compose(e=>N(z.days_of_week,e))})]})]}):null}),i(`div`,{className:`schedule-field`,children:[c(`label`,{className:`schedule-field-label`,htmlFor:X,children:e(`schedules.name`)}),c(`div`,{className:`schedule-form-row`,children:c(`input`,{id:X,type:`text`,placeholder:e(`schedules.namePlaceholder`),value:F,onChange:e=>I(e.target.value),className:!F.trim()&&k.trim()?`schedule-field-missing`:``})})]}),i(`div`,{className:`schedule-field`,children:[c(`label`,{className:`schedule-field-label`,htmlFor:ee,children:e(`schedules.prompt`)}),c(`textarea`,{id:ee,className:`schedule-prompt-input ${!L.trim()&&k.trim()?`schedule-field-missing`:``}`,placeholder:e(`schedules.promptPlaceholder`),value:L,onChange:e=>R(e.target.value)})]}),G&&c(`p`,{className:`schedule-form-error`,children:c(`bdi`,{children:G})}),i(`div`,{className:`schedule-create-actions`,children:[c(`button`,{className:`btn-secondary`,onClick:()=>{O(!1),K(null),B(null),A(``),I(``),R(``)},children:e(`schedules.cancel`)}),c(`button`,{className:`btn-primary`,onClick:ne,disabled:!$||U,children:e(U?`schedules.creating`:`schedules.create`)})]})]}):i(`button`,{className:`btn-primary`,onClick:()=>O(!0),children:[c(v,{size:14}),` `,e(`schedules.new`)]})}),i(`section`,{className:`schedule-section`,children:[c(`h4`,{children:e(`schedules.list`)}),f&&i(`div`,{className:`schedule-action-error`,role:`alert`,children:[c(`span`,{children:c(`bdi`,{children:f})}),c(`button`,{className:`btn-icon`,onClick:C,"aria-label":e(`schedules.dismissError`),children:c(x,{size:14})})]}),s?c(`p`,{className:`schedule-empty`,children:e(`schedules.loading`)}):d?c(`p`,{className:`schedule-empty`,children:e(`schedules.loadFailed`)}):r.length===0?c(`p`,{className:`schedule-empty`,children:e(`schedules.empty`)}):c(`div`,{className:`schedule-list`,children:r.map(e=>c(P,{schedule:e},e.id))})]})]})]})})}export{F as ScheduleManager};