@rubytech/create-realagent-code 0.1.21 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-realagent-code",
3
- "version": "0.1.21",
3
+ "version": "0.1.22",
4
4
  "description": "Install Real Agent — Built for agents. By agents.",
5
5
  "bin": {
6
6
  "create-realagent-code": "./dist/index.js"
@@ -1,4 +1,4 @@
1
- import{o as e,t}from"./chunk-DD-I1_y5.js";import{a as n,c as r,d as i,f as a,i as o,l as s,p as c,s as l,t as u,u as d}from"./brand-jT16ErmC.js";import{a as f,i as p,o as m,r as h,t as g}from"./page-CZQd-W3C.js";import{i as _,n as v,r as y}from"./page-BWHYktEF.js";import{c as b,i as x,l as S,n as C,o as w,r as T,s as ee}from"./device-url-actions-C8dD0ydz.js";import{c as te,d as ne,f as E,o as D,s as re,u as O}from"./graph-labels-DJ717p00.js";import{t as k}from"./Checkbox-B79fVxpA.js";var A=i(),j=e(c(),1);new Set(`image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,audio/ogg,audio/opus,audio/mp4,audio/mpeg,audio/webm,audio/wav,.opus,.ogg,.m4a,.mp3,.wav,.webm`.split(`,`).filter(e=>!e.startsWith(`.`)));function ie(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var ae=`admin-landing-redirected`,oe=`/graph?onboardingFilter=1`;function se(e){return e.appState===`chat`&&!e.alreadyRedirected}function ce(){let[e,t]=(0,j.useState)(`loading`),[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(``),[o,s]=(0,j.useState)(``),[c,l]=(0,j.useState)(``),[u,d]=(0,j.useState)(!1),[f,p]=(0,j.useState)(!1),[m,h]=(0,j.useState)(!1),[g,_]=(0,j.useState)(!1),[v,y]=(0,j.useState)(!1),[b,x]=(0,j.useState)(null),[S,C]=(0,j.useState)(null),[w,T]=(0,j.useState)(void 0),[ee,te]=(0,j.useState)(void 0),[ne,E]=(0,j.useState)(null),[D,re]=(0,j.useState)(void 0),[O,k]=(0,j.useState)(null),[A,ce]=(0,j.useState)(null),[le,ue]=(0,j.useState)([]),[de,fe]=(0,j.useState)(!1),[pe,me]=(0,j.useState)(void 0),he=(0,j.useRef)(void 0),[ge,_e]=(0,j.useState)(!1);(0,j.useEffect)(()=>{typeof window>`u`||window.location.hostname.startsWith(`admin.`)&&fetch(`/api/remote-auth/status`).then(e=>e.ok?e.json():null).then(e=>{e?.configured&&_e(!0)}).catch(()=>{})},[]);let ve=(0,j.useRef)(null),ye=(0,j.useRef)(null),be=(0,j.useRef)(null);(0,j.useEffect)(()=>{async function e(){let e=null;try{e=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!e)return!1;try{let n=await fetch(`/api/admin/session?session_key=${encodeURIComponent(e)}`);if(n.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}return!1}if(!n.ok)return!1;let r=await n.json();x(r.session_key),ce(r.conversationId??null),T(r.onboardingComplete),te(r.businessName),E(r.role??null),re(r.userName===void 0?null:r.userName),k(r.avatar??null);let i=ie(r.thinkingView);return he.current=i,me(i),t(`chat`),!0}catch(e){return console.error(`[admin] session restore failed:`,e),!1}}async function n(r=2){try{let i=await fetch(`/api/health`);if(!i.ok){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check returned ${i.status} after retries`),t(`set-pin`);return}let a=await i.json();if(!a.pin_configured){t(`set-pin`);return}if(a.onboarding_complete===!1){t(`onboarding-choice`);return}if(!a.claude_authenticated){t(`connect-claude`);return}if(await e())return;t(`enter-pin`)}catch(e){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check failed:`,e),t(`set-pin`)}}n()},[]),(0,j.useEffect)(()=>{e===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&C(e)}).catch(()=>{})},[e]),(0,j.useEffect)(()=>{if(typeof window>`u`)return;let t=!1;try{t=sessionStorage.getItem(ae)===`1`}catch{}if(se({appState:e,alreadyRedirected:t})){try{sessionStorage.setItem(ae,`1`)}catch{}console.info(`[admin-ui] landing-redirect target=${oe} onboardingComplete=${w??`unknown`}`),window.location.replace(oe)}},[e,w]),(0,j.useEffect)(()=>{if(e!==`chat`)return;let n=setInterval(async()=>{try{let e=await fetch(`/api/health`);if(!e.ok)return;let n=await e.json();(n.auth_status===`dead`||n.auth_status===`missing`)&&t(`connect-claude`)}catch{}},300*1e3);return()=>clearInterval(n)},[e]),(0,j.useEffect)(()=>{e===`connect-claude`&&fetch(`/api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.claude_authenticated&&t(`enter-pin`)}).catch(()=>{})},[e]);async function xe(e,n){p(!0);try{let i=await fetch(`/api/admin/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:e,...n?{accountId:n}:{}})});if(!i.ok){l((await i.json().catch(()=>({}))).error||`Invalid PIN`);return}let o=await i.json();if(o.accounts&&!o.session_key){console.log(`[admin] account picker shown: userId=${o.userId} accountCount=${o.accounts.length}`),ue(o.accounts),t(`account-picker`);return}x(o.session_key),ce(o.conversationId??null),T(o.onboardingComplete??!0),te(o.businessName),E(o.role??null),re(o.userName===void 0?null:o.userName),k(o.avatar??null);let s=ie(o.thinkingView);if(he.current=s,me(s),n)try{sessionStorage.setItem(`maxy-account-id`,n)}catch{}try{sessionStorage.setItem(`maxy-admin-session-key`,o.session_key)}catch{}r(``),a(``),t(`chat`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1),fe(!1)}}let Se=(0,j.useCallback)(async e=>{if(e.preventDefault(),f)return;l(``);let s=o.trim();if(!s){l(`Please enter your name.`);return}if(n.length<4){l(`PIN must be at least 4 characters.`);return}if(n!==i){l(`PINs do not match.`);return}let c=n;p(!0);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:c,name:s})});if(!e.ok){let n=await e.json().catch(()=>({}));if(e.status===409){console.log(`[admin] PIN already configured — re-checking health`);try{let e=await fetch(`/api/health`);if(e.ok){let r=await e.json();r.pin_configured&&r.claude_authenticated?t(`enter-pin`):r.pin_configured?t(`connect-claude`):l(n.error||`Failed to set PIN.`)}else t(`enter-pin`)}catch{t(`enter-pin`)}return}l(n.error||`Failed to set PIN.`);return}let n=await fetch(`/api/health`),i=n.ok?await n.json():null;if(i?.onboarding_complete===!1){r(``),a(``),t(`onboarding-choice`);return}if(i?.claude_authenticated){await xe(c);return}r(``),a(``),t(`onboarding-choice`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1)}},[n,i,f,o]),Ce=(0,j.useCallback)(async e=>{e.preventDefault(),l(``),await xe(n)},[n]),we=(0,j.useCallback)(async()=>{y(!0);try{await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`logout`})}),x(null),E(null),re(void 0),k(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)}finally{y(!1)}},[]),Te=(0,j.useCallback)(()=>{x(null),E(null),re(void 0),k(null);try{sessionStorage.removeItem(`maxy-admin-session-key`),sessionStorage.removeItem(ae)}catch{}r(``),a(``),l(``),t(`enter-pin`)},[]);return{appState:e,setAppState:t,pin:n,setPin:r,confirmPin:i,setConfirmPin:a,operatorName:o,setOperatorName:s,pinError:c,setPinError:l,showPin:u,setShowPin:d,pinLoading:f,authPolling:m,setAuthPolling:h,authLoading:g,setAuthLoading:_,disconnecting:v,cacheKey:b,setCacheKey:x,claudeInfo:S,setClaudeInfo:C,onboardingComplete:w,setOnboardingComplete:T,businessName:ee,role:ne,userName:D,userAvatar:O,conversationId:A,setConversationId:ce,accounts:le,accountPickerLoading:de,expandAll:pe,setExpandAll:me,expandAllDefaultRef:he,remoteAuthEnabled:ge,pinInputRef:ve,confirmPinInputRef:ye,setPinFormRef:be,handleSetPin:Se,handleLogin:Ce,handleAccountSelect:(0,j.useCallback)(async e=>{fe(!0),l(``),await xe(n,e)},[n]),handleDisconnect:we,handleLogout:Te,handleChangePin:(0,j.useCallback)(async()=>{if(!n){l(`Enter your current PIN first.`);return}p(!0),l(``);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({currentPin:n})});if(!e.ok){l((await e.json().catch(()=>({error:`Incorrect PIN.`}))).error||`Incorrect PIN.`);return}r(``),a(``),l(``),t(`set-pin`)}catch(e){console.error(`[admin-auth] change pin failed:`,e),l(e instanceof Error?e.message:String(e))}finally{p(!1)}},[n])}}function le(e){let[t,n]=(0,j.useState)([]),[r,i]=(0,j.useState)(!1),[a,o]=(0,j.useState)(null),[s,c]=(0,j.useState)(null),l=(0,j.useCallback)(async t=>{if(e&&!(!t&&s===e)){i(!0),o(null);try{let t=await fetch(`/api/admin/claude-sessions?session_key=${encodeURIComponent(e)}`);if(!t.ok)throw Error(`claude-sessions fetch returned ${t.status}`);let r=await t.json();n(Array.isArray(r)?r:r.sessions??[]),c(e)}catch(e){console.error(`[admin/claude-sessions] fetch failed:`,e),o(e instanceof Error?e.message:String(e))}finally{i(!1)}}},[e,s]);(0,j.useEffect)(()=>{e||(c(null),n([]),o(null))},[e]);let u=(0,j.useCallback)(()=>l(!1),[l]),d=(0,j.useCallback)(()=>l(!0),[l]),f=(0,j.useRef)(d);return(0,j.useEffect)(()=>{f.current=d},[d]),(0,j.useEffect)(()=>{if(!e)return;let t=setInterval(()=>{f.current()},3e3);return()=>clearInterval(t)},[e]),{sessions:t,setSessions:n,loading:r,loaded:s!==null&&s===e,error:a,ensureLoaded:u,refetch:d}}var ue=d(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),de=d(`bold`,[[`path`,{d:`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`,key:`mg9rjx`}]]),fe=d(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),pe=d(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),me=d(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),he=d(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),ge=d(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),_e=d(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ve=d(`italic`,[[`line`,{x1:`19`,x2:`10`,y1:`4`,y2:`4`,key:`15jd3p`}],[`line`,{x1:`14`,x2:`5`,y1:`20`,y2:`20`,key:`bu0au3`}],[`line`,{x1:`15`,x2:`9`,y1:`4`,y2:`20`,key:`uljnxc`}]]),ye=d(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),be=d(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),xe=d(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),Se=d(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),Ce=d(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),we=d(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),Te=d(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),Ee=d(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),De=d(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),Oe=d(`square-arrow-down-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`m16 8-8 8`,key:`166keh`}],[`path`,{d:`M16 16H8V8`,key:`1w2ppm`}]]),ke=d(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),Ae=d(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),M=n();function je({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,j.useRef)([]);function s(e,r){r.key===`Backspace`?(r.preventDefault(),t[e]?n(t.slice(0,e)+t.slice(e+1)):e>0&&(n(t.slice(0,e-1)+t.slice(e)),o.current[e-1]?.focus())):r.key===`ArrowLeft`&&e>0?o.current[e-1]?.focus():r.key===`ArrowRight`&&e<5?o.current[e+1]?.focus():r.key===`Enter`&&(r.preventDefault(),r.currentTarget.form?.requestSubmit())}function c(e,i){let a=i.nativeEvent.data;if(!a||!/^\d$/.test(a))return;let s=t.split(``);for(s[e]=a;s.length<e;)s.push(``);let c=s.join(``).replace(/\D/g,``).slice(0,6);n(c),c.length===6?r?.(c):e<5&&o.current[e+1]?.focus()}function l(e){e.preventDefault();let t=e.clipboardData.getData(`text`).replace(/\D/g,``).slice(0,6);t&&(n(t),t.length===6?r?.(t):o.current[t.length]?.focus())}return(0,M.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,M.jsx)(`input`,{ref:t=>{o.current[r]=t,r===0&&e&&(e.current=t)},type:`text`,inputMode:`numeric`,className:`pin-box${t[r]?` pin-box-filled`:``}`,value:t[r]?i?t[r]:`•`:``,onKeyDown:e=>s(r,e),onInput:e=>c(r,e),onPaste:l,onFocus:e=>e.target.select(),autoFocus:a&&r===0,autoComplete:`off`,maxLength:1,"aria-label":`PIN digit ${r+1}`},r))})}function Me(e){let{pin:t,setPin:n,confirmPin:r,setConfirmPin:i,showPin:a,setShowPin:s,pinLoading:c,pinError:l,pinInputRef:d,confirmPinInputRef:f,setPinFormRef:p,onSubmit:m,operatorName:h,setOperatorName:g}=e;return(0,M.jsx)(`div`,{className:`connect-page`,children:(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,u.productName]}),(0,M.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,u.productName,` who you are, then choose a PIN.`]}),(0,M.jsxs)(`form`,{ref:p,onSubmit:m,className:`connect-pin-form`,children:[(0,M.jsxs)(`div`,{className:`pin-input-row`,children:[(0,M.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:h,onChange:e=>g(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,M.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,M.jsxs)(`div`,{className:`pin-input-row`,children:[(0,M.jsx)(je,{inputRef:d,value:t,onChange:n,onComplete:()=>f.current?.focus(),showPin:a}),(0,M.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,M.jsxs)(`div`,{className:`pin-input-row`,children:[(0,M.jsx)(je,{inputRef:f,value:r,onChange:i,onComplete:()=>{},showPin:a}),(0,M.jsx)(w,{variant:`send`,type:`submit`,disabled:!t||!r||!h.trim(),loading:c,"aria-label":`Set PIN`,children:(0,M.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,M.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,M.jsx)(k,{checked:a,onChange:()=>s(e=>!e),label:`Show PIN`})]}),l&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:l})]})})}function Ne(e){let{pin:t,setPin:n,showPin:r,setShowPin:i,pinLoading:a,pinError:s,pinInputRef:c,onSubmit:l,onChangePin:d,remoteAuthEnabled:f,onSignOutRemote:p}=e;return(0,M.jsxs)(`div`,{className:`connect-page`,children:[f&&p&&(0,M.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:p,children:`Sign out`}),(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsx)(`h1`,{className:`connect-title`,children:u.productName}),(0,M.jsxs)(`form`,{onSubmit:l,className:`connect-pin-form`,children:[(0,M.jsxs)(`div`,{className:`pin-input-row`,children:[(0,M.jsx)(je,{inputRef:c,value:t,onChange:n,onComplete:()=>{},showPin:r,autoFocus:!0}),(0,M.jsx)(w,{variant:`send`,type:`submit`,disabled:!t,loading:a,children:(0,M.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,M.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,M.jsxs)(`div`,{className:`pin-options`,children:[(0,M.jsx)(k,{checked:r,onChange:()=>i(e=>!e),label:`Show PIN`}),(0,M.jsx)(w,{type:`button`,variant:`ghost`,onClick:d,children:`Change PIN`})]})]}),s&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:s})]})]})}function Pe(e){let{accounts:t,loading:n,error:r,onSelect:i}=e;return(0,M.jsx)(`div`,{className:`connect-page`,children:(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsx)(`h1`,{className:`connect-title`,children:u.productName}),(0,M.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,M.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,M.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>i(e.accountId),disabled:n,type:`button`,children:[(0,M.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,M.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,M.jsx)(O,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function Fe(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:s,setAppState:c}=e,[l,d]=(0,j.useState)(!1),[f,p]=(0,j.useState)(!1);async function m(){p(!0),s(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`launch-browser`})})).json();e.launched?d(!0):e.error&&s(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),s(`Could not launch browser.`)}p(!1)}async function h(){i(!0),s(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),d(!0),i(!1);for(let e=0;e<120;e++)if(await new Promise(e=>setTimeout(e,2e3)),(await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`wait`})})).json()).authenticated){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),c(`enter-pin`);return}s(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&s(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),s(`Could not start auth flow.`)}i(!1)}async function g(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),s(``)}return t||l?(0,M.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,M.jsxs)(`header`,{className:`chat-header`,style:{paddingBottom:`12px`,flexShrink:0,position:`relative`,maxWidth:`680px`,width:`100%`,margin:`0 auto`,padding:`24px 20px 12px`},children:[t?(0,M.jsx)(`button`,{onClick:g,style:{position:`absolute`,top:`12px`,right:`12px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Cancel`,children:`✕`}):(0,M.jsx)(`button`,{onClick:()=>d(!1),style:{position:`absolute`,top:`12px`,right:`12px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Close browser`,children:`✕`}),(0,M.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,M.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,M.jsx)(`p`,{className:`chat-intro`,children:t?`Sign in and authorize in the browser below.`:`Open your email or prepare your accounts, then sign in.`}),!t&&(0,M.jsx)(`div`,{style:{marginTop:`12px`},children:(0,M.jsx)(w,{variant:`primary`,onClick:h,disabled:r,children:r?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,M.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,M.jsx)(`iframe`,{src:`/vnc-viewer.html`,style:{flex:1,width:`100%`,minHeight:0,border:`none`,background:`#111`,display:`block`},title:`Claude Sign-in`})}),a&&(0,M.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(0,M.jsxs)(`div`,{className:`connect-page`,children:[(0,M.jsx)(`button`,{onClick:()=>c(`onboarding-choice`),style:{position:`fixed`,top:`16px`,left:`16px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Back to setup choice`,children:`← Back`}),(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsxs)(`div`,{className:`connect-logos`,children:[(0,M.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,M.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,M.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,M.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,M.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsx)(`span`,{className:`connect-logo-label`,children:u.productName})]})]}),(0,M.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,u.productName]}),(0,M.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,M.jsx)(w,{variant:`primary`,onClick:h,disabled:r,children:r?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,M.jsx)(`p`,{style:{marginTop:`6px`,fontSize:`11px`,color:`#999`,maxWidth:`300px`,textAlign:`center`,lineHeight:`1.4`},children:`First time? You may need to sign into your email and Anthropic account in the browser before connecting.`}),(0,M.jsx)(`button`,{onClick:m,disabled:f,style:{marginTop:`12px`,background:`none`,border:`none`,color:`var(--color-primary, #666)`,fontSize:`13px`,cursor:`pointer`,textDecoration:`underline`,textUnderlineOffset:`3px`},children:f?`Launching…`:`Open browser first`}),a&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:a})]})]})}function Ie({setAppState:e,setOnboardingComplete:t}){let[n,r]=(0,j.useState)(!1),[i,a]=(0,j.useState)(``);async function s(){r(!0),a(``);try{let n=await fetch(`/api/onboarding/skip`,{method:`POST`});if(!n.ok){a((await n.json().catch(()=>({}))).error||`Could not apply defaults.`);return}t(!0),e(`connect-claude`)}catch(e){console.error(`[admin] skip onboarding error:`,e),a(`Could not apply defaults.`)}finally{r(!1)}}function c(){e(`connect-claude`)}return(0,M.jsx)(`div`,{className:`connect-page`,children:(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsx)(`span`,{className:`connect-logo-label`,children:u.productName})]}),(0,M.jsx)(`h1`,{className:`connect-title`,children:`How would you like to get started?`}),(0,M.jsx)(`p`,{className:`connect-subtitle`,style:{fontSize:`0.85rem`,maxWidth:`340px`},children:`Get started keeps the platform on sensible defaults; the agent walk-through asks for your preferences in chat.`}),(0,M.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`,width:`100%`,maxWidth:`320px`,alignItems:`center`},children:[(0,M.jsx)(w,{variant:`primary`,onClick:s,disabled:n,children:n?`Applying defaults…`:`Get started`}),(0,M.jsx)(`button`,{onClick:c,disabled:n,style:{background:`none`,border:`none`,padding:`8px`,cursor:`pointer`,fontSize:`0.95rem`,color:`var(--text-secondary, #666)`,textDecoration:`none`},children:`Have the agent walk me through setup`})]}),i&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:i})]})})}function Le(e,t,n,r){let i=e===`pane`?`pane-action`:`sidebar-${t}`;console.info(`[admin-ui] ${i} sessionId=${n.slice(0,8)} action=${t} outcome=${r}`)}var Re=/session_([A-Za-z0-9_-]+)/;function ze(e){if(!e)return null;let t=e.match(Re);return t?t[1]:null}async function Be(e,t,n,r,i){let a=ze(r)??`unknown`,o=e=>e.slice(0,8),s=t===`pane`?`pane-action action=resume-archive`:`sidebar-resume-archive`,c;try{let t=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(n)}/archive?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({mode:`archive`})});c=t.ok?`ok`:t.status===409?`409`:`error`;let r=`[admin-ui] ${s} sourceSessionId=${o(n)} newSessionId=${o(a)} result=${c}`;c===`error`?console.error(r):console.info(r)}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[admin-ui] ${s} sourceSessionId=${o(n)} newSessionId=${o(a)} result=error detail=${t}`)}finally{i.refetch()}}function Ve(e,t,n=`pane`){let[r,i]=(0,j.useState)(null),a=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`resume`);try{let i=await fetch(`/api/admin/claude-sessions/resume?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({claudeSessionId:r,channel:`browser`})}),a=await i.json();if(!i.ok||!(`sessionId`in a)){let e=a.error??`POST returned ${i.status}`;return Le(n,`resume`,r,String(i.status)),{ok:!1,error:e}}return t.setSessions(e=>[a,...e.filter(e=>e.sessionId!==r)]),Le(n,`resume`,r,`200`),Be(e,n,r,a.url,t),{ok:!0}}catch(e){let i=e instanceof Error?e.message:String(e);return Le(n,`resume`,r,`threw`),t.refetch(),{ok:!1,error:i}}finally{i(null)}},[e,t,n]),o=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`end`),t.setSessions(e=>e.filter(e=>e.sessionId!==r));try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}?session_key=${encodeURIComponent(e)}`,{method:`DELETE`});if(!i.ok){let e=await i.text().catch(()=>``);return Le(n,`end`,r,String(i.status)),t.refetch(),{ok:!1,error:`DELETE ${i.status} ${e.slice(0,200)}`}}return Le(n,`end`,r,`200`),{ok:!0}}catch(e){let i=e instanceof Error?e.message:String(e);return Le(n,`end`,r,`threw`),t.refetch(),{ok:!1,error:i}}finally{i(null)}},[e,t,n]),s=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`purge`);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}?purge=1&session_key=${encodeURIComponent(e)}`,{method:`DELETE`});if(!i.ok){let e=await i.json().catch(()=>({})),t=e.detail||e.error||`DELETE ?purge=1 ${i.status}`;return Le(n,`purge`,r,String(i.status)),{ok:!1,error:t}}return t.setSessions(e=>e.filter(e=>e.sessionId!==r)),Le(n,`purge`,r,`200`),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return Le(n,`purge`,r,`threw`),{ok:!1,error:t}}finally{i(null)}},[e,t,n]),c=(0,j.useCallback)(async(r,a)=>{if(!e)return{ok:!1,error:`no-cache-key`};i(a);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}/archive?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({mode:a})});if(!i.ok){let e=await i.json().catch(()=>({})),t=e.detail||e.error||`POST /archive ${i.status}`;return Le(n,a,r,String(i.status)),{ok:!1,error:t}}return a===`archive`?t.setSessions(e=>e.filter(e=>e.sessionId!==r)):t.refetch(),Le(n,a,r,`200`),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return Le(n,a,r,`threw`),{ok:!1,error:t}}finally{i(null)}},[e,t,n]);return{inFlight:r,resume:a,end:o,purge:s,archive:(0,j.useCallback)(e=>c(e,`archive`),[c]),unarchive:(0,j.useCallback)(e=>c(e,`unarchive`),[c])}}function He(e){return`code.session.pinned.${e}`}function Ue(e){if(typeof window>`u`)return new Set;try{let t=window.localStorage.getItem(He(e));if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}function We(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(He(e),JSON.stringify([...t]))}catch{}}function Ge(e){let[t,n]=(0,j.useState)(()=>Ue(e));(0,j.useEffect)(()=>{n(Ue(e))},[e]);let r=(0,j.useCallback)(t=>{n(n=>{let r=new Set(n);return r.has(t)?r.delete(t):r.add(t),We(e,r),r})},[e]);return{pinned:t,isPinned:(0,j.useCallback)(e=>t.has(e),[t]),togglePin:r}}var Ke=(()=>null),qe=(0,j.forwardRef)(function(e,t){let{businessName:n,cacheKey:r,role:i,userName:a,userAvatar:o,sessions:s,sessionsLoading:c,sessionsError:d,ensureSessionsLoaded:m,refetchSessions:h,onSelectArtefact:g,onSelectProjects:_,onSelectPeople:v,onSelectTasks:y,onSelectAgents:x,onCloseMobileDrawer:S,onSelectSession:C,selectedSessionId:w,collapsed:T,onToggleCollapsed:te,mobileDrawerOpen:E,actions:D,recentsActions:re}=e,[k,A]=(0,j.useState)(null),[ie,ae]=(0,j.useState)(null),[oe,se]=(0,j.useState)(!1);(0,j.useEffect)(()=>{m()},[m]);let ce=(0,j.useRef)(null),[le,ue]=(0,j.useState)(!1),[de,he]=(0,j.useState)(null),_e=u.productName,ve=typeof a==`string`?a:a===null?`name unavailable`:n||_e,ye=(ve.trim().charAt(0)||`?`).toUpperCase(),xe=Ge(u.hostname),Se=(0,j.useMemo)(()=>{let e=s;if(xe.pinned.size===0)return e;let t=[],n=[];for(let r of e)(xe.pinned.has(r.sessionId)?t:n).push(r);return[...t,...n]},[s,xe.pinned]),Ce=Se.length,[Ee,De]=(0,j.useState)(`chat`),[Oe,je]=(0,j.useState)([]),[Me,Ne]=(0,j.useState)(!1),[Pe,Fe]=(0,j.useState)(null),[Ie,Le]=(0,j.useState)(!1);(0,j.useImperativeHandle)(t,()=>({patchArtefact(e,t){je(n=>n.map(n=>n.id===e?{...n,...t}:n))}}),[]);let[Re,ze]=(0,j.useState)(!1),Be=(0,j.useRef)(null);(0,j.useEffect)(()=>{if(!Re)return;function e(e){Be.current&&!Be.current.contains(e.target)&&ze(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[Re]);let He=(0,j.useCallback)(async()=>{if(r){Le(!0),Fe(null);try{let e=await fetch(`/api/admin/sidebar-artefacts?session_key=${encodeURIComponent(r)}`);if(!e.ok)throw Error(`status ${e.status}`);je((await e.json()).artefacts??[]),Ne(!0)}catch(e){let t=e instanceof Error?e.message:String(e);Fe(`Failed to load artefacts: ${t}`),console.error(`[admin-ui] sidebar-artefacts fetch failed: ${t}`)}finally{Le(!1)}}},[r]),Ue=()=>{De(`chat`),console.info(`[admin-ui] sidebar-nav surface=sessions count=${Ce}`)},We=()=>{De(`artefacts`),console.info(`[admin-ui] sidebar-nav surface=artefacts count=${Me?Oe.length:0} collapsed=${T}`),T&&te(),Me||He()},qe=T?24:16,Je=Ee===`chat`?`Sessions`:`Artefacts`,Ye=Ee===`chat`?c?`…`:String(Ce):Ie?`…`:String(Oe.length),Xe=Ee===`chat`?c:Ie,Ze=()=>{Ee===`chat`?h():He(),console.info(`[admin-ui] sidebar-refresh surface=${Ee}`)},Qe=(0,j.useCallback)(async()=>{if(!(le||!r)){ue(!0),he(null);try{let e=await fetch(`/api/admin/claude-sessions?session_key=${encodeURIComponent(r)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({channel:`browser`})}),t=await e.json();if(!e.ok||!(`sessionId`in t)){he(t.error??`POST returned ${e.status}`);return}console.info(`[admin-ui] sidebar-new-session pid=${t.pid} sessionId=${t.sessionId}`),re.setSessions(e=>[t,...e])}catch(e){let t=e instanceof Error?e.message:String(e);he(t),console.error(`[admin-ui] sidebar-new-session failed:`,t)}finally{ue(!1)}}},[r,le,re]),$e=Ve(r,re,`sidebar`),et=(0,j.useCallback)(async e=>{let t=await $e.resume(e);t.ok||console.error(`[admin-ui] sidebar-resume failed: ${t.error}`)},[$e]),tt=(0,j.useCallback)(async e=>{se(!0),ae(null);let t=await $e.purge(e);t.ok?A(null):ae(t.error??`purge failed`),se(!1)},[$e]),nt=(0,j.useCallback)(async e=>{let t=await $e.end(e);t.ok||console.error(`[admin-ui] sidebar-end-session failed: ${t.error}`)},[$e]);return(0,M.jsxs)(`aside`,{className:`side`,children:[(0,M.jsx)(`div`,{className:`side-head`,children:(0,M.jsx)(`button`,{className:`icon-btn side-head-toggle`,title:E?`Close sidebar`:T?`Expand sidebar`:`Collapse sidebar`,type:`button`,"aria-label":E?`Close sidebar`:T?`Expand sidebar`:`Collapse sidebar`,onClick:()=>{E?(console.info(`[admin-ui] sidebar-head-toggle action=close-drawer state=closed`),S()):(console.info(`[admin-ui] sidebar-head-toggle action=toggle-collapsed state=${T?`expanded`:`collapsed`}`),te())},children:T?(0,M.jsx)(Te,{size:28}):(0,M.jsx)(we,{size:28})})}),(0,M.jsxs)(`nav`,{className:`side-nav`,children:[(0,M.jsxs)(`button`,{type:`button`,className:`nav-row${Ee===`chat`?` active`:``}`,onClick:Ue,children:[(0,M.jsx)(ke,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Sessions`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=people`),v(),S()},children:[(0,M.jsx)(Ae,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`People`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=agents`),x(),S()},children:[(0,M.jsx)(fe,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Agents`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=projects`),_(),S()},children:[(0,M.jsx)(pe,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Projects`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=tasks`),y(),S()},children:[(0,M.jsx)(be,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Tasks`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row${Ee===`artefacts`?` active`:``}`,onClick:We,children:[(0,M.jsx)(b,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Artefacts`}),(0,M.jsx)(`span`,{className:`kbd`})]})]}),(0,M.jsxs)(`div`,{className:`side-list`,ref:ce,children:[(0,M.jsxs)(`div`,{className:`group-head`,children:[(0,M.jsx)(`span`,{children:Je}),(0,M.jsxs)(`span`,{className:`group-head-meta`,children:[Ee===`chat`&&(0,M.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`New session`,"aria-label":`New session`,onClick:()=>void Qe(),disabled:le||!r,children:le?(0,M.jsx)(O,{size:12,className:`spinning`}):(0,M.jsx)(f,{size:12})}),(0,M.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`Refresh ${Je.toLowerCase()}`,"aria-label":`Refresh ${Je.toLowerCase()}`,onClick:Ze,disabled:Xe,children:(0,M.jsx)(p,{size:12,className:Xe?`spinning`:void 0})}),(0,M.jsx)(`span`,{children:Ye})]})]}),de&&Ee===`chat`&&(0,M.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:de}),Ee===`chat`&&(0,M.jsxs)(M.Fragment,{children:[d&&(0,M.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:d}),Se.map(e=>{let t=e.status===`ended`,n=t?`${e.turnCount}${e.capped?`+`:``} turns · ended`:`pid ${e.pid??`?`}`;return(0,M.jsxs)(`div`,{className:`conv${w===e.sessionId?` active`:``}`,children:[(0,M.jsxs)(`button`,{type:`button`,className:`conv-name-button`,onClick:()=>{C(e.sessionId),S()},title:`Show metadata`,children:[(0,M.jsx)(ke,{size:12,className:`conv-channel-icon`,"aria-label":`claude session`}),(0,M.jsxs)(`span`,{className:`conv-name`,children:[e.displayName,` · `,n]})]}),t?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Resume session`,"aria-label":`Resume session`,onClick:()=>void et(e.sessionId),children:(0,M.jsx)(ee,{size:13})}),(0,M.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Purge JSONL`,"aria-label":`Purge JSONL`,onClick:()=>{ae(null),A({sessionId:e.sessionId,displayName:e.displayName})},children:(0,M.jsx)(l,{size:13})})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Open in new tab`,"aria-label":`Open in new tab`,onClick:()=>{console.info(`[admin-ui] sidebar-open-session sessionId=${e.sessionId}`),e.url&&window.open(e.url,`_blank`,`noopener,noreferrer`)},children:(0,M.jsx)(ne,{size:13})}),(0,M.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`End session`,"aria-label":`End session`,onClick:()=>void nt(e.sessionId),children:(0,M.jsx)(me,{size:13})})]})]},e.sessionId)})]}),Ee===`artefacts`&&(0,M.jsxs)(M.Fragment,{children:[Pe&&(0,M.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:Pe}),Me&&!Pe&&Oe.length===0&&(0,M.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:`No artefacts yet`}),Oe.map(e=>(0,M.jsxs)(`button`,{type:`button`,className:`conv`,onClick:()=>{g({docId:e.id,name:e.name,content:e.content,editable:e.editable,mimeType:e.mimeType,skipReason:e.skipReason},`sidebar-artefacts`),S()},children:[(0,M.jsx)(`span`,{className:`conv-name`,children:e.name}),(0,M.jsx)(`span`,{className:`conv-kind`,"data-kind":e.kind===`agent-template`?`agent`:`doc`,children:e.kind===`agent-template`?`agent`:`doc`})]},e.id))]})]}),(0,M.jsxs)(`div`,{className:`side-foot`,ref:Be,children:[(0,M.jsx)(`div`,{className:`avatar`,children:o?(0,M.jsx)(`img`,{src:o,alt:ve}):ye}),(0,M.jsxs)(`div`,{className:`who`,children:[(0,M.jsx)(`span`,{className:`name`,children:ve}),(0,M.jsx)(`span`,{className:`role`,children:i??`operator`})]}),(0,M.jsx)(`button`,{className:`icon-btn side-foot-actions-trigger`,title:`Conversation actions`,type:`button`,"aria-label":`Conversation actions`,"aria-haspopup":`true`,"aria-expanded":Re,onClick:()=>ze(e=>!e),children:(0,M.jsx)(ge,{size:qe})}),Re&&(0,M.jsx)(`div`,{className:`side-foot-actions-popover`,children:(0,M.jsx)(Ke,{...D,onAfterAction:()=>ze(!1)})})]}),k&&(0,M.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`purge-confirm-title`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&!oe&&A(null)},children:(0,M.jsxs)(`div`,{className:`modal-card`,children:[(0,M.jsx)(`h3`,{id:`purge-confirm-title`,style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:`Purge session JSONL?`}),(0,M.jsxs)(`p`,{style:{margin:0,marginBottom:8,fontSize:13},children:[`This hard-deletes the transcript and sidecar for `,(0,M.jsx)(`strong`,{children:k.displayName}),`. The action cannot be undone.`]}),ie&&(0,M.jsx)(`p`,{style:{margin:0,marginBottom:8,fontSize:12,color:`var(--text-tertiary)`},children:ie}),(0,M.jsxs)(`div`,{className:`modal-action-row`,children:[(0,M.jsx)(`button`,{type:`button`,className:`modal-action-btn`,disabled:oe,onClick:()=>A(null),children:`Cancel`}),(0,M.jsx)(`button`,{type:`button`,className:`modal-action-btn`,"data-variant":`danger`,disabled:oe,onClick:()=>void tt(k.sessionId),children:oe?(0,M.jsx)(O,{size:13,className:`spinning`}):`Purge`})]})]})})]})}),Je=`maxy-shell-side-px`;function Ye(){if(typeof window>`u`)return 0;let e=document.querySelector(`.platform > .artefact`)?.getBoundingClientRect();return e&&e.width>0?Math.round(e.width):0}function Xe(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=Math.max(248,t-480-Ye());return Math.min(Math.max(e,248),n)}function Ze(){if(typeof window>`u`)return 264;try{let e=window.localStorage.getItem(Je);if(!e)return 264;let t=parseInt(e,10);if(Number.isFinite(t)&&t>=248)return Xe(t)}catch{}return 264}function Qe({targetSelector:e=`.platform`}){let t=(0,j.useRef)(null),[n,r]=(0,j.useState)(()=>Ze()),i=(0,j.useRef)(n);(0,j.useEffect)(()=>{let t=document.querySelector(e);!t||!(t instanceof HTMLElement)||(t.style.setProperty(`--side-px`,`${n}px`),i.current=n)},[n,e]);let a=(0,j.useCallback)(()=>{r(e=>{let t=Xe(e);return t===e?e:t})},[]);(0,j.useEffect)(()=>{a(),window.addEventListener(`resize`,a);let t=document.querySelector(e),n=null;return t instanceof HTMLElement&&(n=new MutationObserver(a),n.observe(t,{attributes:!0,attributeFilter:[`data-artefact`,`class`]})),()=>{window.removeEventListener(`resize`,a),n?.disconnect()}},[a,e]);let o=e=>{e.preventDefault();let n=t.current;if(!n)return;n.setPointerCapture(e.pointerId),n.classList.add(`dragging`);let a=!1,o=e=>{a=!0,r(Xe(Math.round(e.clientX)))},s=()=>{if(n.releasePointerCapture(e.pointerId),n.classList.remove(`dragging`),window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),!a)return;let t=i.current;try{window.localStorage.setItem(Je,String(t))}catch{}console.info(`[admin-ui] sidebar-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=Xe(264);r(e);try{window.localStorage.removeItem(Je)}catch{}console.info(`[admin-ui] sidebar-resize px=${e}`)};return(0,M.jsx)(`div`,{ref:t,className:`side-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,onPointerDown:o,onDoubleClick:s})}var $e=`maxy-shell-artefact-px`;function et(){if(typeof window>`u`)return 320;let e=window.innerWidth,t=document.querySelector(`.platform > .side`)?.getBoundingClientRect(),n=t?t.right:Math.round(e*.3);return nt(Math.round((e-n)*(2/3)))}function tt(){if(typeof window>`u`)return 320;try{let e=window.localStorage.getItem($e);if(!e)return et();let t=parseInt(e,10);if(Number.isFinite(t)&&t>=320)return t}catch{}return et()}function nt(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=document.querySelector(`.platform > .side`)?.getBoundingClientRect(),r=n?n.right:Math.round(t*.3),i=Math.max(320,t-r-480);return Math.min(Math.max(e,320),i)}function rt({targetSelector:e=`.platform`}){let t=(0,j.useRef)(null),[n,r]=(0,j.useState)(()=>tt()),i=(0,j.useRef)(n);(0,j.useEffect)(()=>{let t=document.querySelector(e);!t||!(t instanceof HTMLElement)||(t.style.setProperty(`--artefact-px`,`${n}px`),i.current=n)},[n,e]);let a=(0,j.useCallback)(()=>{r(e=>{let t=nt(e);return t===e?e:t})},[]);(0,j.useEffect)(()=>(a(),window.addEventListener(`resize`,a),()=>window.removeEventListener(`resize`,a)),[a]);let o=e=>{e.preventDefault();let n=t.current;if(!n)return;n.setPointerCapture(e.pointerId),n.classList.add(`dragging`);let a=!1,o=e=>{a=!0,r(nt(Math.round(window.innerWidth-e.clientX)))},s=()=>{if(n.releasePointerCapture(e.pointerId),n.classList.remove(`dragging`),window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),!a)return;let t=i.current;try{window.localStorage.setItem($e,String(t))}catch{}console.info(`[admin-ui] artefact-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=et();r(e);try{window.localStorage.removeItem($e)}catch{}console.info(`[admin-ui] artefact-resize px=${e}`)};return(0,M.jsx)(`div`,{ref:t,className:`art-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize artefact pane`,onPointerDown:o,onDoubleClick:s})}function it(e){if(!e)return`—`;let t=Date.parse(e);if(Number.isNaN(t))return e;let n=Date.now()-t,r=Math.round(n/1e3);if(r<60)return`${r}s ago`;let i=Math.round(r/60);if(i<60)return`${i}m ago`;let a=Math.round(i/60);return a<24?`${a}h ago`:`${Math.round(a/24)}d ago`}function at(e){return e==null?`—`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function ot({sessionId:e,cacheKey:t,onRenamed:n,onClose:r,recentsActions:i}){let[a,o]=(0,j.useState)(null),[c,d]=(0,j.useState)(!0),[f,p]=(0,j.useState)(null),[m,h]=(0,j.useState)(!1),[g,_]=(0,j.useState)(``),[v,y]=(0,j.useState)(!1),[C,w]=(0,j.useState)(null),[T,te]=(0,j.useState)(null),[E,D]=(0,j.useState)(null),[k,A]=(0,j.useState)(!1),ie=(0,j.useRef)(null),ae=Ve(t,i,`pane`),{isPinned:oe,togglePin:se}=Ge(u.hostname),ce=(0,j.useCallback)(async()=>{d(!0),p(null);try{let n=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}/meta?session_key=${encodeURIComponent(t)}`);if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`meta returned ${n.status} ${e.slice(0,200)}`)}let r=await n.json();o(r),_(r.displayName)}catch(e){p(e instanceof Error?e.message:String(e)),console.error(`[admin-ui] sidebar-meta-pane fetch failed:`,e)}finally{d(!1)}},[e,t]);(0,j.useEffect)(()=>{console.info(`[admin-ui] sidebar-meta-pane sessionId=${e.slice(0,8)}`),ce()},[ce,e]),(0,j.useEffect)(()=>{if(!k)return;let e=e=>{ie.current&&!ie.current.contains(e.target)&&A(!1)},t=e=>{e.key===`Escape`&&A(!1)};return document.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[k]);let le=(0,j.useCallback)(async()=>{if(!a)return;let r=g.trim();if(!r||r===a.displayName){h(!1);return}y(!0);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}?session_key=${encodeURIComponent(t)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({displayName:r})});if(!i.ok){let e=await i.text().catch(()=>``);throw Error(`PATCH ${i.status} ${e.slice(0,200)}`)}o({...a,displayName:r}),h(!1),n()}catch(e){console.error(`[admin-ui] sidebar-meta-pane rename failed:`,e),p(e instanceof Error?e.message:String(e))}finally{y(!1)}},[a,g,e,t,n]),de=(0,j.useCallback)(async(e,t)=>{w(await x(t)?`Copied ${e}`:`Copy failed`),window.setTimeout(()=>w(null),1500)},[]),fe=(0,j.useCallback)(async(e,t,n)=>{te(null);let i=e===`resume`?await ae.resume(t):e===`end`?await ae.end(t):e===`purge`?await ae.purge(t):e===`archive`?await ae.archive(t):await ae.unarchive(t);if(!i.ok){te(i.error??`action failed`);return}n&&r()},[ae,r]);if(c&&!a)return(0,M.jsx)(`main`,{className:`session-meta-pane`,style:{padding:24},children:(0,M.jsx)(O,{size:16,className:`spinning`})});if(f&&!a)return(0,M.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24},children:[(0,M.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:f}),(0,M.jsx)(`button`,{type:`button`,className:`action-btn`,onClick:()=>void ce(),children:`Retry`})]});if(!a)return null;let pe=a.sessionId,he=a.status===`alive`,_e=oe(a.sessionId),ve=ae.inFlight;return(0,M.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24,display:`flex`,flexDirection:`column`,gap:20,overflowY:`auto`},children:[(0,M.jsxs)(`header`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[m?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`input`,{type:`text`,value:g,onChange:e=>_(e.target.value),maxLength:256,autoFocus:!0,style:{fontSize:22,fontWeight:600,flex:1,padding:`4px 8px`},onKeyDown:e=>{e.key===`Enter`&&le(),e.key===`Escape`&&(_(a.displayName),h(!1))}}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Confirm rename`,disabled:v,onClick:()=>void le(),children:v?(0,M.jsx)(O,{size:16,className:`spinning`}):(0,M.jsx)(s,{size:16})}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Cancel rename`,onClick:()=>{_(a.displayName),h(!1)},children:(0,M.jsx)(re,{size:16})})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`h2`,{style:{fontSize:22,fontWeight:600,margin:0,flex:1},children:a.displayName}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Rename`,onClick:()=>h(!0),children:(0,M.jsx)(Ee,{size:16})})]}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Close pane`,onClick:r,children:(0,M.jsx)(re,{size:18})})]}),(0,M.jsx)(`section`,{children:(0,M.jsxs)(`dl`,{className:`meta-dl`,children:[(0,M.jsx)(`dt`,{children:`Status`}),(0,M.jsx)(`dd`,{children:he?`alive · pid ${a.pid??`?`}`:`ended`}),(0,M.jsx)(`dt`,{children:`sessionId`}),(0,M.jsxs)(`dd`,{"data-mono":!0,children:[(0,M.jsx)(`span`,{children:pe}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy sessionId`,onClick:()=>void de(`id`,pe),children:(0,M.jsx)(S,{size:12})})]}),(0,M.jsx)(`dt`,{children:`Started at`}),(0,M.jsxs)(`dd`,{children:[a.startedAt,` `,(0,M.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,it(a.startedAt),`)`]})]}),(0,M.jsx)(`dt`,{children:`Last message`}),(0,M.jsx)(`dd`,{children:a.lastMessageAt?(0,M.jsxs)(M.Fragment,{children:[a.lastMessageAt,` `,(0,M.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,it(a.lastMessageAt),`)`]})]}):`—`}),(0,M.jsx)(`dt`,{children:`Turns`}),(0,M.jsxs)(`dd`,{children:[a.turnCount,a.capped?(0,M.jsx)(`span`,{className:`text-tertiary`,children:` (≥, JSONL exceeds tail-read cap)`}):null]}),(0,M.jsx)(`dt`,{children:`JSONL size`}),(0,M.jsx)(`dd`,{children:at(a.sizeBytes)}),(0,M.jsx)(`dt`,{children:`JSONL path`}),(0,M.jsxs)(`dd`,{"data-mono":!0,children:[(0,M.jsx)(`span`,{children:a.jsonlPath??`—`}),a.jsonlPath&&(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy JSONL path`,onClick:()=>void de(`path`,a.jsonlPath),children:(0,M.jsx)(S,{size:12})})]}),he&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`dt`,{children:`Session URL`}),(0,M.jsxs)(`dd`,{"data-mono":!0,children:[(0,M.jsx)(`span`,{children:a.url??`—`}),a.url&&(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy URL`,onClick:()=>void de(`URL`,a.url),children:(0,M.jsx)(S,{size:12})})]}),(0,M.jsx)(`dt`,{children:`Channel`}),(0,M.jsx)(`dd`,{children:a.channel??`—`}),(0,M.jsx)(`dt`,{children:`Role`}),(0,M.jsx)(`dd`,{children:a.role??`—`}),(0,M.jsx)(`dt`,{children:`senderId`}),(0,M.jsx)(`dd`,{"data-mono":!0,children:(0,M.jsx)(`span`,{children:a.senderId||`—`})})]})]})}),(()=>{let e=[];return he&&a.url&&e.push((0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>window.open(a.url,`_blank`,`noopener,noreferrer`),children:[(0,M.jsx)(ne,{size:14}),` Open in new tab`]},`open-tab`)),a.jsonlPath&&e.push((0,M.jsxs)(`a`,{className:`action-btn`,href:`vscode://file/${a.jsonlPath}`,title:`Open JSONL in VS Code`,children:[(0,M.jsx)(b,{size:14}),` Open JSONL in editor`]},`open-jsonl`)),he||e.push((0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`primary`,disabled:ve===`resume`,onClick:()=>void fe(`resume`,a.claudeSessionId??a.sessionId,!1),children:[ve===`resume`?(0,M.jsx)(O,{size:14,className:`spinning`}):(0,M.jsx)(ee,{size:14}),` Resume`]},`resume`)),e.push((0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>h(!0),children:[(0,M.jsx)(Ee,{size:14}),` Rename`]},`rename`),(0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-active":_e?`true`:void 0,onClick:()=>se(a.sessionId),children:[(0,M.jsx)(De,{size:14}),` `,_e?`Unpin`:`Pin`]},`pin`),(0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,disabled:ve===`archive`,title:he?`Manager will refuse with 409 — end the session first`:void 0,onClick:()=>void fe(`archive`,a.sessionId,!he),children:[ve===`archive`?(0,M.jsx)(O,{size:14,className:`spinning`}):(0,M.jsx)(ue,{size:14}),` Archive`]},`archive`)),e.push(he?(0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:ve===`end`,onClick:()=>D({action:`end`,sessionId:a.sessionId,displayName:a.displayName}),children:[(0,M.jsx)(me,{size:14}),` End session`]},`end`):(0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:ve===`purge`,onClick:()=>D({action:`purge`,sessionId:a.sessionId,displayName:a.displayName}),children:[(0,M.jsx)(l,{size:14}),` Purge JSONL`]},`purge`)),(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`section`,{className:`action-bar`,children:e}),(0,M.jsxs)(`section`,{className:`session-actions-overflow`,ref:ie,children:[(0,M.jsx)(`button`,{type:`button`,className:`session-actions-overflow__trigger`,"aria-label":`Actions`,"aria-haspopup":`menu`,"aria-expanded":k,onClick:()=>{A(e=>{let t=!e;return t&&console.info(`[admin-ui] pane-actions-overflow-open sessionId=${a.sessionId.slice(0,8)}`),t})},children:(0,M.jsx)(ge,{size:14})}),k&&(0,M.jsx)(`div`,{className:`overflow-popover`,role:`menu`,onClick:()=>A(!1),children:e})]})]})})(),C&&(0,M.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:C}),T&&(0,M.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:T}),f&&(0,M.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:f}),E&&(0,M.jsx)(st,{confirm:E,busy:ve===E.action,onCancel:()=>D(null),onConfirm:async()=>{await fe(E.action,E.sessionId,E.action===`purge`),D(null)}})]})}function st({confirm:e,busy:t,onCancel:n,onConfirm:r}){let i=e.action===`end`?`End live session?`:`Purge session JSONL?`,a=e.action===`end`?`This kills the PTY for ${e.displayName}. The JSONL is kept on disk and can be resumed later.`:`This hard-deletes the transcript and sidecar for ${e.displayName}. The action cannot be undone.`,o=e.action===`end`?`End session`:`Purge`;return(0,M.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&!t&&n()},children:(0,M.jsxs)(`div`,{className:`modal-card`,children:[(0,M.jsx)(`h3`,{style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:i}),(0,M.jsx)(`p`,{style:{margin:0,marginBottom:12,fontSize:13},children:a}),(0,M.jsxs)(`div`,{className:`modal-action-row`,children:[(0,M.jsx)(`button`,{type:`button`,className:`modal-action-btn`,disabled:t,onClick:n,children:`Cancel`}),(0,M.jsx)(`button`,{type:`button`,className:`modal-action-btn`,"data-variant":`danger`,disabled:t,onClick:()=>r(),children:t?(0,M.jsx)(O,{size:13,className:`spinning`}):o})]})]})})}function ct({onOpen:e}){return(0,M.jsx)(`footer`,{className:`admin-footer`,children:(0,M.jsxs)(`div`,{className:`powered-by`,role:`button`,tabIndex:0,onClick:e,onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e())},"aria-label":`Powered by Claude Code — show details`,children:[(0,M.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,M.jsx)(`span`,{children:`Powered by Claude Code`})]})})}var lt=t((e=>{var t=c();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function l(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,l=r[1];return o(function(){c.value=n,c.getSnapshot=t,u(c)&&l({inst:c})},[e,n,t]),a(function(){return u(c)&&l({inst:c}),e(function(){u(c)&&l({inst:c})})},[e]),s(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),ut=t(((e,t)=>{t.exports=lt()})),dt=ut(),ft=e(a(),1);function pt(e){this.content=e}pt.prototype={constructor:pt,find:function(e){for(var t=0;t<this.content.length;t+=2)if(this.content[t]===e)return t;return-1},get:function(e){var t=this.find(e);return t==-1?void 0:this.content[t+1]},update:function(e,t,n){var r=n&&n!=e?this.remove(n):this,i=r.find(e),a=r.content.slice();return i==-1?a.push(n||e,t):(a[i+1]=t,n&&(a[i]=n)),new pt(a)},remove:function(e){var t=this.find(e);if(t==-1)return this;var n=this.content.slice();return n.splice(t,2),new pt(n)},addToStart:function(e,t){return new pt([e,t].concat(this.remove(e).content))},addToEnd:function(e,t){var n=this.remove(e).content.slice();return n.push(e,t),new pt(n)},addBefore:function(e,t,n){var r=this.remove(t),i=r.content.slice(),a=r.find(e);return i.splice(a==-1?i.length:a,0,t,n),new pt(i)},forEach:function(e){for(var t=0;t<this.content.length;t+=2)e(this.content[t],this.content[t+1])},prepend:function(e){return e=pt.from(e),e.size?new pt(e.content.concat(this.subtract(e).content)):this},append:function(e){return e=pt.from(e),e.size?new pt(this.subtract(e).content.concat(e.content)):this},subtract:function(e){var t=this;e=pt.from(e);for(var n=0;n<e.content.length;n+=2)t=t.remove(e.content[n]);return t},toObject:function(){var e={};return this.forEach(function(t,n){e[t]=n}),e},get size(){return this.content.length>>1}},pt.from=function(e){if(e instanceof pt)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new pt(t)};function mt(e,t,n){for(let r=0;;r++){if(r==e.childCount||r==t.childCount)return e.childCount==t.childCount?null:n;let i=e.child(r),a=t.child(r);if(i==a){n+=i.nodeSize;continue}if(!i.sameMarkup(a))return n;if(i.isText&&i.text!=a.text){for(let e=0;i.text[e]==a.text[e];e++)n++;return n}if(i.content.size||a.content.size){let e=mt(i.content,a.content,n+1);if(e!=null)return e}n+=i.nodeSize}}function ht(e,t,n,r){for(let i=e.childCount,a=t.childCount;;){if(i==0||a==0)return i==a?null:{a:n,b:r};let o=e.child(--i),s=t.child(--a),c=o.nodeSize;if(o==s){n-=c,r-=c;continue}if(!o.sameMarkup(s))return{a:n,b:r};if(o.isText&&o.text!=s.text){let e=0,t=Math.min(o.text.length,s.text.length);for(;e<t&&o.text[o.text.length-e-1]==s.text[s.text.length-e-1];)e++,n--,r--;return{a:n,b:r}}if(o.content.size||s.content.size){let e=ht(o.content,s.content,n-1,r-1);if(e)return e}n-=c,r-=c}}var N=class e{constructor(e,t){if(this.content=e,this.size=t||0,t==null)for(let t=0;t<e.length;t++)this.size+=e[t].nodeSize}nodesBetween(e,t,n,r=0,i){for(let a=0,o=0;o<t;a++){let s=this.content[a],c=o+s.nodeSize;if(c>e&&n(s,r+o,i||null,a)!==!1&&s.content.size){let i=o+1;s.nodesBetween(Math.max(0,e-i),Math.min(s.content.size,t-i),n,r+i)}o=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,n,r){let i=``,a=!0;return this.nodesBetween(e,t,(o,s)=>{let c=o.isText?o.text.slice(Math.max(e,s)-s,t-s):o.isLeaf?r?typeof r==`function`?r(o):r:o.type.spec.leafText?o.type.spec.leafText(o):``:``;o.isBlock&&(o.isLeaf&&c||o.isTextblock)&&n&&(a?a=!1:i+=n),i+=c},0),i}append(t){if(!t.size)return this;if(!this.size)return t;let n=this.lastChild,r=t.firstChild,i=this.content.slice(),a=0;for(n.isText&&n.sameMarkup(r)&&(i[i.length-1]=n.withText(n.text+r.text),a=1);a<t.content.length;a++)i.push(t.content[a]);return new e(i,this.size+t.size)}cut(t,n=this.size){if(t==0&&n==this.size)return this;let r=[],i=0;if(n>t)for(let e=0,a=0;a<n;e++){let o=this.content[e],s=a+o.nodeSize;s>t&&((a<t||s>n)&&(o=o.isText?o.cut(Math.max(0,t-a),Math.min(o.text.length,n-a)):o.cut(Math.max(0,t-a-1),Math.min(o.content.size,n-a-1))),r.push(o),i+=o.nodeSize),a=s}return new e(r,i)}cutByIndex(t,n){return t==n?e.empty:t==0&&n==this.content.length?this:new e(this.content.slice(t,n))}replaceChild(t,n){let r=this.content[t];if(r==n)return this;let i=this.content.slice(),a=this.size+n.nodeSize-r.nodeSize;return i[t]=n,new e(i,a)}addToStart(t){return new e([t].concat(this.content),this.size+t.nodeSize)}addToEnd(t){return new e(this.content.concat(t),this.size+t.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;t<this.content.length;t++)if(!this.content[t].eq(e.content[t]))return!1;return!0}get firstChild(){return this.content.length?this.content[0]:null}get lastChild(){return this.content.length?this.content[this.content.length-1]:null}get childCount(){return this.content.length}child(e){let t=this.content[e];if(!t)throw RangeError(`Index `+e+` out of range for `+this);return t}maybeChild(e){return this.content[e]||null}forEach(e){for(let t=0,n=0;t<this.content.length;t++){let r=this.content[t];e(r,n,t),n+=r.nodeSize}}findDiffStart(e,t=0){return mt(this,e,t)}findDiffEnd(e,t=this.size,n=e.size){return ht(this,e,t,n)}findIndex(e){if(e==0)return _t(0,e);if(e==this.size)return _t(this.content.length,e);if(e>this.size||e<0)throw RangeError(`Position ${e} outside of fragment (${this})`);for(let t=0,n=0;;t++){let r=this.child(t),i=n+r.nodeSize;if(i>=e)return i==e?_t(t+1,i):_t(t,n);n=i}}toString(){return`<`+this.toStringInner()+`>`}toStringInner(){return this.content.join(`, `)}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(t,n){if(!n)return e.empty;if(!Array.isArray(n))throw RangeError(`Invalid input for Fragment.fromJSON`);return new e(n.map(t.nodeFromJSON))}static fromArray(t){if(!t.length)return e.empty;let n,r=0;for(let e=0;e<t.length;e++){let i=t[e];r+=i.nodeSize,e&&i.isText&&t[e-1].sameMarkup(i)?(n||=t.slice(0,e),n[n.length-1]=i.withText(n[n.length-1].text+i.text)):n&&n.push(i)}return new e(n||t,r)}static from(t){if(!t)return e.empty;if(t instanceof e)return t;if(Array.isArray(t))return this.fromArray(t);if(t.attrs)return new e([t],t.nodeSize);throw RangeError(`Can not convert `+t+` to a Fragment`+(t.nodesBetween?` (looks like multiple versions of prosemirror-model were loaded)`:``))}};N.empty=new N([],0);var gt={index:0,offset:0};function _t(e,t){return gt.index=e,gt.offset=t,gt}function vt(e,t){if(e===t)return!0;if(!(e&&typeof e==`object`)||!(t&&typeof t==`object`))return!1;let n=Array.isArray(e);if(Array.isArray(t)!=n)return!1;if(n){if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++)if(!vt(e[n],t[n]))return!1}else{for(let n in e)if(!(n in t)||!vt(e[n],t[n]))return!1;for(let n in t)if(!(n in e))return!1}return!0}var P=class e{constructor(e,t){this.type=e,this.attrs=t}addToSet(e){let t,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(this.eq(i))return e;if(this.type.excludes(i.type))t||=e.slice(0,r);else if(i.type.excludes(this.type))return e;else !n&&i.type.rank>this.type.rank&&(t||=e.slice(0,r),t.push(this),n=!0),t&&t.push(i)}return t||=e.slice(),n||t.push(this),t}removeFromSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return e.slice(0,t).concat(e.slice(t+1));return e}isInSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return!0;return!1}eq(e){return this==e||this.type==e.type&&vt(this.attrs,e.attrs)}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return e}static fromJSON(e,t){if(!t)throw RangeError(`Invalid input for Mark.fromJSON`);let n=e.marks[t.type];if(!n)throw RangeError(`There is no mark type ${t.type} in this schema`);let r=n.create(t.attrs);return n.checkAttrs(r.attrs),r}static sameSet(e,t){if(e==t)return!0;if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}static setFrom(t){if(!t||Array.isArray(t)&&t.length==0)return e.none;if(t instanceof e)return[t];let n=t.slice();return n.sort((e,t)=>e.type.rank-t.type.rank),n}};P.none=[];var yt=class extends Error{},F=class e{constructor(e,t,n){this.content=e,this.openStart=t,this.openEnd=n}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(t,n){let r=xt(this.content,t+this.openStart,n);return r&&new e(r,this.openStart,this.openEnd)}removeBetween(t,n){return new e(bt(this.content,t+this.openStart,n+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+`(`+this.openStart+`,`+this.openEnd+`)`}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(t,n){if(!n)return e.empty;let r=n.openStart||0,i=n.openEnd||0;if(typeof r!=`number`||typeof i!=`number`)throw RangeError(`Invalid input for Slice.fromJSON`);return new e(N.fromJSON(t,n.content),r,i)}static maxOpen(t,n=!0){let r=0,i=0;for(let e=t.firstChild;e&&!e.isLeaf&&(n||!e.type.spec.isolating);e=e.firstChild)r++;for(let e=t.lastChild;e&&!e.isLeaf&&(n||!e.type.spec.isolating);e=e.lastChild)i++;return new e(t,r,i)}};F.empty=new F(N.empty,0,0);function bt(e,t,n){let{index:r,offset:i}=e.findIndex(t),a=e.maybeChild(r),{index:o,offset:s}=e.findIndex(n);if(i==t||a.isText){if(s!=n&&!e.child(o).isText)throw RangeError(`Removing non-flat range`);return e.cut(0,t).append(e.cut(n))}if(r!=o)throw RangeError(`Removing non-flat range`);return e.replaceChild(r,a.copy(bt(a.content,t-i-1,n-i-1)))}function xt(e,t,n,r){let{index:i,offset:a}=e.findIndex(t),o=e.maybeChild(i);if(a==t||o.isText)return r&&!r.canReplace(i,i,n)?null:e.cut(0,t).append(n).append(e.cut(t));let s=xt(o.content,t-a-1,n,o);return s&&e.replaceChild(i,o.copy(s))}function St(e,t,n){if(n.openStart>e.depth)throw new yt(`Inserted content deeper than insertion position`);if(e.depth-n.openStart!=t.depth-n.openEnd)throw new yt(`Inconsistent open depths`);return Ct(e,t,n,0)}function Ct(e,t,n,r){let i=e.index(r),a=e.node(r);if(i==t.index(r)&&r<e.depth-n.openStart){let o=Ct(e,t,n,r+1);return a.copy(a.content.replaceChild(i,o))}else if(!n.content.size)return Ot(a,At(e,t,r));else if(!n.openStart&&!n.openEnd&&e.depth==r&&t.depth==r){let r=e.parent,i=r.content;return Ot(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}else{let{start:i,end:o}=jt(n,e);return Ot(a,kt(e,i,o,t,r))}}function wt(e,t){if(!t.type.compatibleContent(e.type))throw new yt(`Cannot join `+t.type.name+` onto `+e.type.name)}function Tt(e,t,n){let r=e.node(n);return wt(r,t.node(n)),r}function Et(e,t){let n=t.length-1;n>=0&&e.isText&&e.sameMarkup(t[n])?t[n]=e.withText(t[n].text+e.text):t.push(e)}function Dt(e,t,n,r){let i=(t||e).node(n),a=0,o=t?t.index(n):i.childCount;e&&(a=e.index(n),e.depth>n?a++:e.textOffset&&(Et(e.nodeAfter,r),a++));for(let e=a;e<o;e++)Et(i.child(e),r);t&&t.depth==n&&t.textOffset&&Et(t.nodeBefore,r)}function Ot(e,t){return e.type.checkContent(t),e.copy(t)}function kt(e,t,n,r,i){let a=e.depth>i&&Tt(e,t,i+1),o=r.depth>i&&Tt(n,r,i+1),s=[];return Dt(null,e,i,s),a&&o&&t.index(i)==n.index(i)?(wt(a,o),Et(Ot(a,kt(e,t,n,r,i+1)),s)):(a&&Et(Ot(a,At(e,t,i+1)),s),Dt(t,n,i,s),o&&Et(Ot(o,At(n,r,i+1)),s)),Dt(r,null,i,s),new N(s)}function At(e,t,n){let r=[];return Dt(null,e,n,r),e.depth>n&&Et(Ot(Tt(e,t,n+1),At(e,t,n+1)),r),Dt(t,null,n,r),new N(r)}function jt(e,t){let n=t.depth-e.openStart,r=t.node(n).copy(e.content);for(let e=n-1;e>=0;e--)r=t.node(e).copy(N.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}var Mt=class e{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw RangeError(`There is no position before the top-level node`);return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw RangeError(`There is no position after the top-level node`);return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],r=e.child(t);return n?e.child(t).cut(n):r}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[t*3],r=t==0?0:this.path[t*3-1]+1;for(let t=0;t<e;t++)r+=n.child(t).nodeSize;return r}marks(){let e=this.parent,t=this.index();if(e.content.size==0)return P.none;if(this.textOffset)return e.child(t).marks;let n=e.maybeChild(t-1),r=e.maybeChild(t);if(!n){let e=n;n=r,r=e}let i=n.marks;for(var a=0;a<i.length;a++)i[a].type.spec.inclusive===!1&&(!r||!i[a].isInSet(r.marks))&&(i=i[a--].removeFromSet(i));return i}marksAcross(e){let t=this.parent.maybeChild(this.index());if(!t||!t.isInline)return null;let n=t.marks,r=e.parent.maybeChild(e.index());for(var i=0;i<n.length;i++)n[i].type.spec.inclusive===!1&&(!r||!n[i].isInSet(r.marks))&&(n=n[i--].removeFromSet(n));return n}sharedDepth(e){for(let t=this.depth;t>0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos<this.pos)return e.blockRange(this);for(let n=this.depth-(this.parent.inlineContent||this.pos==e.pos?1:0);n>=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new It(this,e,n);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos<this.pos?e:this}toString(){let e=``;for(let t=1;t<=this.depth;t++)e+=(e?`/`:``)+this.node(t).type.name+`_`+this.index(t-1);return e+`:`+this.parentOffset}static resolve(t,n){if(!(n>=0&&n<=t.content.size))throw RangeError(`Position `+n+` out of range`);let r=[],i=0,a=n;for(let e=t;;){let{index:t,offset:n}=e.content.findIndex(a),o=a-n;if(r.push(e,t,i+n),!o||(e=e.child(t),e.isText))break;a=o-1,i+=n+1}return new e(n,r,a)}static resolveCached(t,n){let r=Ft.get(t);if(r)for(let e=0;e<r.elts.length;e++){let t=r.elts[e];if(t.pos==n)return t}else Ft.set(t,r=new Nt);let i=r.elts[r.i]=e.resolve(t,n);return r.i=(r.i+1)%Pt,i}},Nt=class{constructor(){this.elts=[],this.i=0}},Pt=12,Ft=new WeakMap,It=class{constructor(e,t,n){this.$from=e,this.$to=t,this.depth=n}get start(){return this.$from.before(this.depth+1)}get end(){return this.$to.after(this.depth+1)}get parent(){return this.$from.node(this.depth)}get startIndex(){return this.$from.index(this.depth)}get endIndex(){return this.$to.indexAfter(this.depth)}},Lt=Object.create(null),Rt=class e{constructor(e,t,n,r=P.none){this.type=e,this.attrs=t,this.marks=r,this.content=n||N.empty}get children(){return this.content.content}get nodeSize(){return this.isLeaf?1:2+this.content.size}get childCount(){return this.content.childCount}child(e){return this.content.child(e)}maybeChild(e){return this.content.maybeChild(e)}forEach(e){this.content.forEach(e)}nodesBetween(e,t,n,r=0){this.content.nodesBetween(e,t,n,r,this)}descendants(e){this.nodesBetween(0,this.content.size,e)}get textContent(){return this.isLeaf&&this.type.spec.leafText?this.type.spec.leafText(this):this.textBetween(0,this.content.size,``)}textBetween(e,t,n,r){return this.content.textBetween(e,t,n,r)}get firstChild(){return this.content.firstChild}get lastChild(){return this.content.lastChild}eq(e){return this==e||this.sameMarkup(e)&&this.content.eq(e.content)}sameMarkup(e){return this.hasMarkup(e.type,e.attrs,e.marks)}hasMarkup(e,t,n){return this.type==e&&vt(this.attrs,t||e.defaultAttrs||Lt)&&P.sameSet(this.marks,n||P.none)}copy(t=null){return t==this.content?this:new e(this.type,this.attrs,t,this.marks)}mark(t){return t==this.marks?this:new e(this.type,this.attrs,this.content,t)}cut(e,t=this.content.size){return e==0&&t==this.content.size?this:this.copy(this.content.cut(e,t))}slice(e,t=this.content.size,n=!1){if(e==t)return F.empty;let r=this.resolve(e),i=this.resolve(t),a=n?0:r.sharedDepth(t),o=r.start(a);return new F(r.node(a).content.cut(r.pos-o,i.pos-o),r.depth-a,i.depth-a)}replace(e,t,n){return St(this.resolve(e),this.resolve(t),n)}nodeAt(e){for(let t=this;;){let{index:n,offset:r}=t.content.findIndex(e);if(t=t.maybeChild(n),!t)return null;if(r==e||t.isText)return t;e-=r+1}}childAfter(e){let{index:t,offset:n}=this.content.findIndex(e);return{node:this.content.maybeChild(t),index:t,offset:n}}childBefore(e){if(e==0)return{node:null,index:0,offset:0};let{index:t,offset:n}=this.content.findIndex(e);if(n<e)return{node:this.content.child(t),index:t,offset:n};let r=this.content.child(t-1);return{node:r,index:t-1,offset:n-r.nodeSize}}resolve(e){return Mt.resolveCached(this,e)}resolveNoCache(e){return Mt.resolve(this,e)}rangeHasMark(e,t,n){let r=!1;return t>e&&this.nodesBetween(e,t,e=>(n.isInSet(e.marks)&&(r=!0),!r)),r}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+=`(`+this.content.toStringInner()+`)`),Bt(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw Error(`Called contentMatchAt on a node with invalid content`);return t}canReplace(e,t,n=N.empty,r=0,i=n.childCount){let a=this.contentMatchAt(e).matchFragment(n,r,i),o=a&&a.matchFragment(this.content,t);if(!o||!o.validEnd)return!1;for(let e=r;e<i;e++)if(!this.type.allowsMarks(n.child(e).marks))return!1;return!0}canReplaceWith(e,t,n,r){if(r&&!this.type.allowsMarks(r))return!1;let i=this.contentMatchAt(e).matchType(n),a=i&&i.matchFragment(this.content,t);return a?a.validEnd:!1}canAppend(e){return e.content.size?this.canReplace(this.childCount,this.childCount,e.content):this.type.compatibleContent(e.type)}check(){this.type.checkContent(this.content),this.type.checkAttrs(this.attrs);let e=P.none;for(let t=0;t<this.marks.length;t++){let n=this.marks[t];n.type.checkAttrs(n.attrs),e=n.addToSet(e)}if(!P.sameSet(e,this.marks))throw RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(e=>e.type.name)}`);this.content.forEach(e=>e.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(e=>e.toJSON())),e}static fromJSON(e,t){if(!t)throw RangeError(`Invalid input for Node.fromJSON`);let n;if(t.marks){if(!Array.isArray(t.marks))throw RangeError(`Invalid mark data for Node.fromJSON`);n=t.marks.map(e.markFromJSON)}if(t.type==`text`){if(typeof t.text!=`string`)throw RangeError(`Invalid text node in JSON`);return e.text(t.text,n)}let r=N.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}};Rt.prototype.text=void 0;var zt=class e extends Rt{constructor(e,t,n,r){if(super(e,t,null,r),!n)throw RangeError(`Empty text nodes are not allowed`);this.text=n}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Bt(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(t){return t==this.marks?this:new e(this.type,this.attrs,this.text,t)}withText(t){return t==this.text?this:new e(this.type,this.attrs,t,this.marks)}cut(e=0,t=this.text.length){return e==0&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}};function Bt(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+`(`+t+`)`;return t}var Vt=class e{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(t,n){let r=new Ht(t,n);if(r.next==null)return e.empty;let i=Ut(r);r.next&&r.err(`Unexpected trailing text`);let a=$t(Xt(i));return en(a,r),a}matchType(e){for(let t=0;t<this.next.length;t++)if(this.next[t].type==e)return this.next[t].next;return null}matchFragment(e,t=0,n=e.childCount){let r=this;for(let i=t;r&&i<n;i++)r=r.matchType(e.child(i).type);return r}get inlineContent(){return this.next.length!=0&&this.next[0].type.isInline}get defaultType(){for(let e=0;e<this.next.length;e++){let{type:t}=this.next[e];if(!(t.isText||t.hasRequiredAttrs()))return t}return null}compatible(e){for(let t=0;t<this.next.length;t++)for(let n=0;n<e.next.length;n++)if(this.next[t].type==e.next[n].type)return!0;return!1}fillBefore(e,t=!1,n=0){let r=[this];function i(a,o){let s=a.matchFragment(e,n);if(s&&(!t||s.validEnd))return N.from(o.map(e=>e.createAndFill()));for(let e=0;e<a.next.length;e++){let{type:t,next:n}=a.next[e];if(!(t.isText||t.hasRequiredAttrs())&&r.indexOf(n)==-1){r.push(n);let e=i(n,o.concat(t));if(e)return e}}return null}return i(this,[])}findWrapping(e){for(let t=0;t<this.wrapCache.length;t+=2)if(this.wrapCache[t]==e)return this.wrapCache[t+1];let t=this.computeWrapping(e);return this.wrapCache.push(e,t),t}computeWrapping(e){let t=Object.create(null),n=[{match:this,type:null,via:null}];for(;n.length;){let r=n.shift(),i=r.match;if(i.matchType(e)){let e=[];for(let t=r;t.type;t=t.via)e.push(t.type);return e.reverse()}for(let e=0;e<i.next.length;e++){let{type:a,next:o}=i.next[e];!a.isLeaf&&!a.hasRequiredAttrs()&&!(a.name in t)&&(!r.type||o.validEnd)&&(n.push({match:a.contentMatch,type:a,via:r}),t[a.name]=!0)}}return null}get edgeCount(){return this.next.length}edge(e){if(e>=this.next.length)throw RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(n){e.push(n);for(let r=0;r<n.next.length;r++)e.indexOf(n.next[r].next)==-1&&t(n.next[r].next)}return t(this),e.map((t,n)=>{let r=n+(t.validEnd?`*`:` `)+` `;for(let n=0;n<t.next.length;n++)r+=(n?`, `:``)+t.next[n].type.name+`->`+e.indexOf(t.next[n].next);return r}).join(`
1
+ import{o as e,t}from"./chunk-DD-I1_y5.js";import{a as n,c as r,d as i,f as a,i as o,l as s,p as c,s as l,t as u,u as d}from"./brand-jT16ErmC.js";import{a as f,i as p,o as m,r as h,t as g}from"./page-CTbSJbem.js";import{i as _,n as v,r as y}from"./page-BWHYktEF.js";import{c as b,i as x,l as S,n as C,o as w,r as T,s as ee}from"./device-url-actions-C8dD0ydz.js";import{c as te,d as ne,f as E,o as D,s as re,u as O}from"./graph-labels-DJ717p00.js";import{t as k}from"./Checkbox-B79fVxpA.js";var A=i(),j=e(c(),1);new Set(`image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,audio/ogg,audio/opus,audio/mp4,audio/mpeg,audio/webm,audio/wav,.opus,.ogg,.m4a,.mp3,.wav,.webm`.split(`,`).filter(e=>!e.startsWith(`.`)));function ie(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var ae=`admin-landing-redirected`,oe=`/graph?onboardingFilter=1`;function se(e){return e.appState===`chat`&&!e.alreadyRedirected}function ce(){let[e,t]=(0,j.useState)(`loading`),[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(``),[o,s]=(0,j.useState)(``),[c,l]=(0,j.useState)(``),[u,d]=(0,j.useState)(!1),[f,p]=(0,j.useState)(!1),[m,h]=(0,j.useState)(!1),[g,_]=(0,j.useState)(!1),[v,y]=(0,j.useState)(!1),[b,x]=(0,j.useState)(null),[S,C]=(0,j.useState)(null),[w,T]=(0,j.useState)(void 0),[ee,te]=(0,j.useState)(void 0),[ne,E]=(0,j.useState)(null),[D,re]=(0,j.useState)(void 0),[O,k]=(0,j.useState)(null),[A,ce]=(0,j.useState)(null),[le,ue]=(0,j.useState)([]),[de,fe]=(0,j.useState)(!1),[pe,me]=(0,j.useState)(void 0),he=(0,j.useRef)(void 0),[ge,_e]=(0,j.useState)(!1);(0,j.useEffect)(()=>{typeof window>`u`||window.location.hostname.startsWith(`admin.`)&&fetch(`/api/remote-auth/status`).then(e=>e.ok?e.json():null).then(e=>{e?.configured&&_e(!0)}).catch(()=>{})},[]);let ve=(0,j.useRef)(null),ye=(0,j.useRef)(null),be=(0,j.useRef)(null);(0,j.useEffect)(()=>{async function e(){let e=null;try{e=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!e)return!1;try{let n=await fetch(`/api/admin/session?session_key=${encodeURIComponent(e)}`);if(n.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}return!1}if(!n.ok)return!1;let r=await n.json();x(r.session_key),ce(r.conversationId??null),T(r.onboardingComplete),te(r.businessName),E(r.role??null),re(r.userName===void 0?null:r.userName),k(r.avatar??null);let i=ie(r.thinkingView);return he.current=i,me(i),t(`chat`),!0}catch(e){return console.error(`[admin] session restore failed:`,e),!1}}async function n(r=2){try{let i=await fetch(`/api/health`);if(!i.ok){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check returned ${i.status} after retries`),t(`set-pin`);return}let a=await i.json();if(!a.pin_configured){t(`set-pin`);return}if(a.onboarding_complete===!1){t(`onboarding-choice`);return}if(!a.claude_authenticated){t(`connect-claude`);return}if(await e())return;t(`enter-pin`)}catch(e){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check failed:`,e),t(`set-pin`)}}n()},[]),(0,j.useEffect)(()=>{e===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&C(e)}).catch(()=>{})},[e]),(0,j.useEffect)(()=>{if(typeof window>`u`)return;let t=!1;try{t=sessionStorage.getItem(ae)===`1`}catch{}if(se({appState:e,alreadyRedirected:t})){try{sessionStorage.setItem(ae,`1`)}catch{}console.info(`[admin-ui] landing-redirect target=${oe} onboardingComplete=${w??`unknown`}`),window.location.replace(oe)}},[e,w]),(0,j.useEffect)(()=>{if(e!==`chat`)return;let n=setInterval(async()=>{try{let e=await fetch(`/api/health`);if(!e.ok)return;let n=await e.json();(n.auth_status===`dead`||n.auth_status===`missing`)&&t(`connect-claude`)}catch{}},300*1e3);return()=>clearInterval(n)},[e]),(0,j.useEffect)(()=>{e===`connect-claude`&&fetch(`/api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.claude_authenticated&&t(`enter-pin`)}).catch(()=>{})},[e]);async function xe(e,n){p(!0);try{let i=await fetch(`/api/admin/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:e,...n?{accountId:n}:{}})});if(!i.ok){l((await i.json().catch(()=>({}))).error||`Invalid PIN`);return}let o=await i.json();if(o.accounts&&!o.session_key){console.log(`[admin] account picker shown: userId=${o.userId} accountCount=${o.accounts.length}`),ue(o.accounts),t(`account-picker`);return}x(o.session_key),ce(o.conversationId??null),T(o.onboardingComplete??!0),te(o.businessName),E(o.role??null),re(o.userName===void 0?null:o.userName),k(o.avatar??null);let s=ie(o.thinkingView);if(he.current=s,me(s),n)try{sessionStorage.setItem(`maxy-account-id`,n)}catch{}try{sessionStorage.setItem(`maxy-admin-session-key`,o.session_key)}catch{}r(``),a(``),t(`chat`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1),fe(!1)}}let Se=(0,j.useCallback)(async e=>{if(e.preventDefault(),f)return;l(``);let s=o.trim();if(!s){l(`Please enter your name.`);return}if(n.length<4){l(`PIN must be at least 4 characters.`);return}if(n!==i){l(`PINs do not match.`);return}let c=n;p(!0);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:c,name:s})});if(!e.ok){let n=await e.json().catch(()=>({}));if(e.status===409){console.log(`[admin] PIN already configured — re-checking health`);try{let e=await fetch(`/api/health`);if(e.ok){let r=await e.json();r.pin_configured&&r.claude_authenticated?t(`enter-pin`):r.pin_configured?t(`connect-claude`):l(n.error||`Failed to set PIN.`)}else t(`enter-pin`)}catch{t(`enter-pin`)}return}l(n.error||`Failed to set PIN.`);return}let n=await fetch(`/api/health`),i=n.ok?await n.json():null;if(i?.onboarding_complete===!1){r(``),a(``),t(`onboarding-choice`);return}if(i?.claude_authenticated){await xe(c);return}r(``),a(``),t(`onboarding-choice`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1)}},[n,i,f,o]),Ce=(0,j.useCallback)(async e=>{e.preventDefault(),l(``),await xe(n)},[n]),we=(0,j.useCallback)(async()=>{y(!0);try{await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`logout`})}),x(null),E(null),re(void 0),k(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)}finally{y(!1)}},[]),Te=(0,j.useCallback)(()=>{x(null),E(null),re(void 0),k(null);try{sessionStorage.removeItem(`maxy-admin-session-key`),sessionStorage.removeItem(ae)}catch{}r(``),a(``),l(``),t(`enter-pin`)},[]);return{appState:e,setAppState:t,pin:n,setPin:r,confirmPin:i,setConfirmPin:a,operatorName:o,setOperatorName:s,pinError:c,setPinError:l,showPin:u,setShowPin:d,pinLoading:f,authPolling:m,setAuthPolling:h,authLoading:g,setAuthLoading:_,disconnecting:v,cacheKey:b,setCacheKey:x,claudeInfo:S,setClaudeInfo:C,onboardingComplete:w,setOnboardingComplete:T,businessName:ee,role:ne,userName:D,userAvatar:O,conversationId:A,setConversationId:ce,accounts:le,accountPickerLoading:de,expandAll:pe,setExpandAll:me,expandAllDefaultRef:he,remoteAuthEnabled:ge,pinInputRef:ve,confirmPinInputRef:ye,setPinFormRef:be,handleSetPin:Se,handleLogin:Ce,handleAccountSelect:(0,j.useCallback)(async e=>{fe(!0),l(``),await xe(n,e)},[n]),handleDisconnect:we,handleLogout:Te,handleChangePin:(0,j.useCallback)(async()=>{if(!n){l(`Enter your current PIN first.`);return}p(!0),l(``);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({currentPin:n})});if(!e.ok){l((await e.json().catch(()=>({error:`Incorrect PIN.`}))).error||`Incorrect PIN.`);return}r(``),a(``),l(``),t(`set-pin`)}catch(e){console.error(`[admin-auth] change pin failed:`,e),l(e instanceof Error?e.message:String(e))}finally{p(!1)}},[n])}}function le(e){let[t,n]=(0,j.useState)([]),[r,i]=(0,j.useState)(!1),[a,o]=(0,j.useState)(null),[s,c]=(0,j.useState)(null),l=(0,j.useCallback)(async t=>{if(e&&!(!t&&s===e)){i(!0),o(null);try{let t=await fetch(`/api/admin/claude-sessions?session_key=${encodeURIComponent(e)}`);if(!t.ok)throw Error(`claude-sessions fetch returned ${t.status}`);let r=await t.json();n(Array.isArray(r)?r:r.sessions??[]),c(e)}catch(e){console.error(`[admin/claude-sessions] fetch failed:`,e),o(e instanceof Error?e.message:String(e))}finally{i(!1)}}},[e,s]);(0,j.useEffect)(()=>{e||(c(null),n([]),o(null))},[e]);let u=(0,j.useCallback)(()=>l(!1),[l]),d=(0,j.useCallback)(()=>l(!0),[l]),f=(0,j.useRef)(d);return(0,j.useEffect)(()=>{f.current=d},[d]),(0,j.useEffect)(()=>{if(!e)return;let t=setInterval(()=>{f.current()},3e3);return()=>clearInterval(t)},[e]),{sessions:t,setSessions:n,loading:r,loaded:s!==null&&s===e,error:a,ensureLoaded:u,refetch:d}}var ue=d(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),de=d(`bold`,[[`path`,{d:`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`,key:`mg9rjx`}]]),fe=d(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),pe=d(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),me=d(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),he=d(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),ge=d(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),_e=d(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ve=d(`italic`,[[`line`,{x1:`19`,x2:`10`,y1:`4`,y2:`4`,key:`15jd3p`}],[`line`,{x1:`14`,x2:`5`,y1:`20`,y2:`20`,key:`bu0au3`}],[`line`,{x1:`15`,x2:`9`,y1:`4`,y2:`20`,key:`uljnxc`}]]),ye=d(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),be=d(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),xe=d(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),Se=d(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),Ce=d(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),we=d(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),Te=d(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),Ee=d(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),De=d(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),Oe=d(`square-arrow-down-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`m16 8-8 8`,key:`166keh`}],[`path`,{d:`M16 16H8V8`,key:`1w2ppm`}]]),ke=d(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),Ae=d(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),M=n();function je({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,j.useRef)([]);function s(e,r){r.key===`Backspace`?(r.preventDefault(),t[e]?n(t.slice(0,e)+t.slice(e+1)):e>0&&(n(t.slice(0,e-1)+t.slice(e)),o.current[e-1]?.focus())):r.key===`ArrowLeft`&&e>0?o.current[e-1]?.focus():r.key===`ArrowRight`&&e<5?o.current[e+1]?.focus():r.key===`Enter`&&(r.preventDefault(),r.currentTarget.form?.requestSubmit())}function c(e,i){let a=i.nativeEvent.data;if(!a||!/^\d$/.test(a))return;let s=t.split(``);for(s[e]=a;s.length<e;)s.push(``);let c=s.join(``).replace(/\D/g,``).slice(0,6);n(c),c.length===6?r?.(c):e<5&&o.current[e+1]?.focus()}function l(e){e.preventDefault();let t=e.clipboardData.getData(`text`).replace(/\D/g,``).slice(0,6);t&&(n(t),t.length===6?r?.(t):o.current[t.length]?.focus())}return(0,M.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,M.jsx)(`input`,{ref:t=>{o.current[r]=t,r===0&&e&&(e.current=t)},type:`text`,inputMode:`numeric`,className:`pin-box${t[r]?` pin-box-filled`:``}`,value:t[r]?i?t[r]:`•`:``,onKeyDown:e=>s(r,e),onInput:e=>c(r,e),onPaste:l,onFocus:e=>e.target.select(),autoFocus:a&&r===0,autoComplete:`off`,maxLength:1,"aria-label":`PIN digit ${r+1}`},r))})}function Me(e){let{pin:t,setPin:n,confirmPin:r,setConfirmPin:i,showPin:a,setShowPin:s,pinLoading:c,pinError:l,pinInputRef:d,confirmPinInputRef:f,setPinFormRef:p,onSubmit:m,operatorName:h,setOperatorName:g}=e;return(0,M.jsx)(`div`,{className:`connect-page`,children:(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,u.productName]}),(0,M.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,u.productName,` who you are, then choose a PIN.`]}),(0,M.jsxs)(`form`,{ref:p,onSubmit:m,className:`connect-pin-form`,children:[(0,M.jsxs)(`div`,{className:`pin-input-row`,children:[(0,M.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:h,onChange:e=>g(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,M.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,M.jsxs)(`div`,{className:`pin-input-row`,children:[(0,M.jsx)(je,{inputRef:d,value:t,onChange:n,onComplete:()=>f.current?.focus(),showPin:a}),(0,M.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,M.jsxs)(`div`,{className:`pin-input-row`,children:[(0,M.jsx)(je,{inputRef:f,value:r,onChange:i,onComplete:()=>{},showPin:a}),(0,M.jsx)(w,{variant:`send`,type:`submit`,disabled:!t||!r||!h.trim(),loading:c,"aria-label":`Set PIN`,children:(0,M.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,M.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,M.jsx)(k,{checked:a,onChange:()=>s(e=>!e),label:`Show PIN`})]}),l&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:l})]})})}function Ne(e){let{pin:t,setPin:n,showPin:r,setShowPin:i,pinLoading:a,pinError:s,pinInputRef:c,onSubmit:l,onChangePin:d,remoteAuthEnabled:f,onSignOutRemote:p}=e;return(0,M.jsxs)(`div`,{className:`connect-page`,children:[f&&p&&(0,M.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:p,children:`Sign out`}),(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsx)(`h1`,{className:`connect-title`,children:u.productName}),(0,M.jsxs)(`form`,{onSubmit:l,className:`connect-pin-form`,children:[(0,M.jsxs)(`div`,{className:`pin-input-row`,children:[(0,M.jsx)(je,{inputRef:c,value:t,onChange:n,onComplete:()=>{},showPin:r,autoFocus:!0}),(0,M.jsx)(w,{variant:`send`,type:`submit`,disabled:!t,loading:a,children:(0,M.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,M.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,M.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,M.jsxs)(`div`,{className:`pin-options`,children:[(0,M.jsx)(k,{checked:r,onChange:()=>i(e=>!e),label:`Show PIN`}),(0,M.jsx)(w,{type:`button`,variant:`ghost`,onClick:d,children:`Change PIN`})]})]}),s&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:s})]})]})}function Pe(e){let{accounts:t,loading:n,error:r,onSelect:i}=e;return(0,M.jsx)(`div`,{className:`connect-page`,children:(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsx)(`h1`,{className:`connect-title`,children:u.productName}),(0,M.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,M.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,M.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>i(e.accountId),disabled:n,type:`button`,children:[(0,M.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,M.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,M.jsx)(O,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function Fe(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:s,setAppState:c}=e,[l,d]=(0,j.useState)(!1),[f,p]=(0,j.useState)(!1);async function m(){p(!0),s(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`launch-browser`})})).json();e.launched?d(!0):e.error&&s(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),s(`Could not launch browser.`)}p(!1)}async function h(){i(!0),s(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),d(!0),i(!1);for(let e=0;e<120;e++)if(await new Promise(e=>setTimeout(e,2e3)),(await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`wait`})})).json()).authenticated){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),c(`enter-pin`);return}s(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&s(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),s(`Could not start auth flow.`)}i(!1)}async function g(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),s(``)}return t||l?(0,M.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,M.jsxs)(`header`,{className:`chat-header`,style:{paddingBottom:`12px`,flexShrink:0,position:`relative`,maxWidth:`680px`,width:`100%`,margin:`0 auto`,padding:`24px 20px 12px`},children:[t?(0,M.jsx)(`button`,{onClick:g,style:{position:`absolute`,top:`12px`,right:`12px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Cancel`,children:`✕`}):(0,M.jsx)(`button`,{onClick:()=>d(!1),style:{position:`absolute`,top:`12px`,right:`12px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Close browser`,children:`✕`}),(0,M.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,M.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,M.jsx)(`p`,{className:`chat-intro`,children:t?`Sign in and authorize in the browser below.`:`Open your email or prepare your accounts, then sign in.`}),!t&&(0,M.jsx)(`div`,{style:{marginTop:`12px`},children:(0,M.jsx)(w,{variant:`primary`,onClick:h,disabled:r,children:r?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,M.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,M.jsx)(`iframe`,{src:`/vnc-viewer.html`,style:{flex:1,width:`100%`,minHeight:0,border:`none`,background:`#111`,display:`block`},title:`Claude Sign-in`})}),a&&(0,M.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(0,M.jsxs)(`div`,{className:`connect-page`,children:[(0,M.jsx)(`button`,{onClick:()=>c(`onboarding-choice`),style:{position:`fixed`,top:`16px`,left:`16px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Back to setup choice`,children:`← Back`}),(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsxs)(`div`,{className:`connect-logos`,children:[(0,M.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,M.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,M.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,M.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,M.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsx)(`span`,{className:`connect-logo-label`,children:u.productName})]})]}),(0,M.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,u.productName]}),(0,M.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,M.jsx)(w,{variant:`primary`,onClick:h,disabled:r,children:r?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,M.jsx)(`p`,{style:{marginTop:`6px`,fontSize:`11px`,color:`#999`,maxWidth:`300px`,textAlign:`center`,lineHeight:`1.4`},children:`First time? You may need to sign into your email and Anthropic account in the browser before connecting.`}),(0,M.jsx)(`button`,{onClick:m,disabled:f,style:{marginTop:`12px`,background:`none`,border:`none`,color:`var(--color-primary, #666)`,fontSize:`13px`,cursor:`pointer`,textDecoration:`underline`,textUnderlineOffset:`3px`},children:f?`Launching…`:`Open browser first`}),a&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:a})]})]})}function Ie({setAppState:e,setOnboardingComplete:t}){let[n,r]=(0,j.useState)(!1),[i,a]=(0,j.useState)(``);async function s(){r(!0),a(``);try{let n=await fetch(`/api/onboarding/skip`,{method:`POST`});if(!n.ok){a((await n.json().catch(()=>({}))).error||`Could not apply defaults.`);return}t(!0),e(`connect-claude`)}catch(e){console.error(`[admin] skip onboarding error:`,e),a(`Could not apply defaults.`)}finally{r(!1)}}function c(){e(`connect-claude`)}return(0,M.jsx)(`div`,{className:`connect-page`,children:(0,M.jsxs)(`div`,{className:`connect-content`,children:[(0,M.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,M.jsx)(`img`,{src:o,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,M.jsx)(`span`,{className:`connect-logo-label`,children:u.productName})]}),(0,M.jsx)(`h1`,{className:`connect-title`,children:`How would you like to get started?`}),(0,M.jsx)(`p`,{className:`connect-subtitle`,style:{fontSize:`0.85rem`,maxWidth:`340px`},children:`Get started keeps the platform on sensible defaults; the agent walk-through asks for your preferences in chat.`}),(0,M.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`,width:`100%`,maxWidth:`320px`,alignItems:`center`},children:[(0,M.jsx)(w,{variant:`primary`,onClick:s,disabled:n,children:n?`Applying defaults…`:`Get started`}),(0,M.jsx)(`button`,{onClick:c,disabled:n,style:{background:`none`,border:`none`,padding:`8px`,cursor:`pointer`,fontSize:`0.95rem`,color:`var(--text-secondary, #666)`,textDecoration:`none`},children:`Have the agent walk me through setup`})]}),i&&(0,M.jsx)(`p`,{className:`admin-pin-error`,children:i})]})})}function Le(e,t,n,r){let i=e===`pane`?`pane-action`:`sidebar-${t}`;console.info(`[admin-ui] ${i} sessionId=${n.slice(0,8)} action=${t} outcome=${r}`)}var Re=/session_([A-Za-z0-9_-]+)/;function ze(e){if(!e)return null;let t=e.match(Re);return t?t[1]:null}async function Be(e,t,n,r,i){let a=ze(r)??`unknown`,o=e=>e.slice(0,8),s=t===`pane`?`pane-action action=resume-archive`:`sidebar-resume-archive`,c;try{let t=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(n)}/archive?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({mode:`archive`})});c=t.ok?`ok`:t.status===409?`409`:`error`;let r=`[admin-ui] ${s} sourceSessionId=${o(n)} newSessionId=${o(a)} result=${c}`;c===`error`?console.error(r):console.info(r)}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[admin-ui] ${s} sourceSessionId=${o(n)} newSessionId=${o(a)} result=error detail=${t}`)}finally{i.refetch()}}function Ve(e,t,n=`pane`){let[r,i]=(0,j.useState)(null),a=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`resume`);try{let i=await fetch(`/api/admin/claude-sessions/resume?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({claudeSessionId:r,channel:`browser`})}),a=await i.json();if(!i.ok||!(`sessionId`in a)){let e=a.error??`POST returned ${i.status}`;return Le(n,`resume`,r,String(i.status)),{ok:!1,error:e}}return t.setSessions(e=>[a,...e.filter(e=>e.sessionId!==r)]),Le(n,`resume`,r,`200`),Be(e,n,r,a.url,t),{ok:!0}}catch(e){let i=e instanceof Error?e.message:String(e);return Le(n,`resume`,r,`threw`),t.refetch(),{ok:!1,error:i}}finally{i(null)}},[e,t,n]),o=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`end`),t.setSessions(e=>e.filter(e=>e.sessionId!==r));try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}?session_key=${encodeURIComponent(e)}`,{method:`DELETE`});if(!i.ok){let e=await i.text().catch(()=>``);return Le(n,`end`,r,String(i.status)),t.refetch(),{ok:!1,error:`DELETE ${i.status} ${e.slice(0,200)}`}}return Le(n,`end`,r,`200`),{ok:!0}}catch(e){let i=e instanceof Error?e.message:String(e);return Le(n,`end`,r,`threw`),t.refetch(),{ok:!1,error:i}}finally{i(null)}},[e,t,n]),s=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`purge`);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}?purge=1&session_key=${encodeURIComponent(e)}`,{method:`DELETE`});if(!i.ok){let e=await i.json().catch(()=>({})),t=e.detail||e.error||`DELETE ?purge=1 ${i.status}`;return Le(n,`purge`,r,String(i.status)),{ok:!1,error:t}}return t.setSessions(e=>e.filter(e=>e.sessionId!==r)),Le(n,`purge`,r,`200`),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return Le(n,`purge`,r,`threw`),{ok:!1,error:t}}finally{i(null)}},[e,t,n]),c=(0,j.useCallback)(async(r,a)=>{if(!e)return{ok:!1,error:`no-cache-key`};i(a);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}/archive?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({mode:a})});if(!i.ok){let e=await i.json().catch(()=>({})),t=e.detail||e.error||`POST /archive ${i.status}`;return Le(n,a,r,String(i.status)),{ok:!1,error:t}}return a===`archive`?t.setSessions(e=>e.filter(e=>e.sessionId!==r)):t.refetch(),Le(n,a,r,`200`),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return Le(n,a,r,`threw`),{ok:!1,error:t}}finally{i(null)}},[e,t,n]);return{inFlight:r,resume:a,end:o,purge:s,archive:(0,j.useCallback)(e=>c(e,`archive`),[c]),unarchive:(0,j.useCallback)(e=>c(e,`unarchive`),[c])}}function He(e){return`code.session.pinned.${e}`}function Ue(e){if(typeof window>`u`)return new Set;try{let t=window.localStorage.getItem(He(e));if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}function We(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(He(e),JSON.stringify([...t]))}catch{}}function Ge(e){let[t,n]=(0,j.useState)(()=>Ue(e));(0,j.useEffect)(()=>{n(Ue(e))},[e]);let r=(0,j.useCallback)(t=>{n(n=>{let r=new Set(n);return r.has(t)?r.delete(t):r.add(t),We(e,r),r})},[e]);return{pinned:t,isPinned:(0,j.useCallback)(e=>t.has(e),[t]),togglePin:r}}var Ke=(()=>null),qe=(0,j.forwardRef)(function(e,t){let{businessName:n,cacheKey:r,role:i,userName:a,userAvatar:o,sessions:s,sessionsLoading:c,sessionsError:d,ensureSessionsLoaded:m,refetchSessions:h,onSelectArtefact:g,onSelectProjects:_,onSelectPeople:v,onSelectTasks:y,onSelectAgents:x,onCloseMobileDrawer:S,onSelectSession:C,selectedSessionId:w,collapsed:T,onToggleCollapsed:te,mobileDrawerOpen:E,actions:D,recentsActions:re}=e,[k,A]=(0,j.useState)(null),[ie,ae]=(0,j.useState)(null),[oe,se]=(0,j.useState)(!1);(0,j.useEffect)(()=>{m()},[m]);let ce=(0,j.useRef)(null),[le,ue]=(0,j.useState)(!1),[de,he]=(0,j.useState)(null),_e=u.productName,ve=typeof a==`string`?a:a===null?`name unavailable`:n||_e,ye=(ve.trim().charAt(0)||`?`).toUpperCase(),xe=Ge(u.hostname),Se=(0,j.useMemo)(()=>{let e=s;if(xe.pinned.size===0)return e;let t=[],n=[];for(let r of e)(xe.pinned.has(r.sessionId)?t:n).push(r);return[...t,...n]},[s,xe.pinned]),Ce=Se.length,[Ee,De]=(0,j.useState)(`chat`),[Oe,je]=(0,j.useState)([]),[Me,Ne]=(0,j.useState)(!1),[Pe,Fe]=(0,j.useState)(null),[Ie,Le]=(0,j.useState)(!1);(0,j.useImperativeHandle)(t,()=>({patchArtefact(e,t){je(n=>n.map(n=>n.id===e?{...n,...t}:n))}}),[]);let[Re,ze]=(0,j.useState)(!1),Be=(0,j.useRef)(null);(0,j.useEffect)(()=>{if(!Re)return;function e(e){Be.current&&!Be.current.contains(e.target)&&ze(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[Re]);let He=(0,j.useCallback)(async()=>{if(r){Le(!0),Fe(null);try{let e=await fetch(`/api/admin/sidebar-artefacts?session_key=${encodeURIComponent(r)}`);if(!e.ok)throw Error(`status ${e.status}`);je((await e.json()).artefacts??[]),Ne(!0)}catch(e){let t=e instanceof Error?e.message:String(e);Fe(`Failed to load artefacts: ${t}`),console.error(`[admin-ui] sidebar-artefacts fetch failed: ${t}`)}finally{Le(!1)}}},[r]),Ue=()=>{De(`chat`),console.info(`[admin-ui] sidebar-nav surface=sessions count=${Ce}`)},We=()=>{De(`artefacts`),console.info(`[admin-ui] sidebar-nav surface=artefacts count=${Me?Oe.length:0} collapsed=${T}`),T&&te(),Me||He()},qe=T?24:16,Je=Ee===`chat`?`Sessions`:`Artefacts`,Ye=Ee===`chat`?c?`…`:String(Ce):Ie?`…`:String(Oe.length),Xe=Ee===`chat`?c:Ie,Ze=()=>{Ee===`chat`?h():He(),console.info(`[admin-ui] sidebar-refresh surface=${Ee}`)},Qe=(0,j.useCallback)(async()=>{if(!(le||!r)){ue(!0),he(null);try{let e=await fetch(`/api/admin/claude-sessions?session_key=${encodeURIComponent(r)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({channel:`browser`})}),t=await e.json();if(!e.ok||!(`sessionId`in t)){he(t.error??`POST returned ${e.status}`);return}console.info(`[admin-ui] sidebar-new-session pid=${t.pid} sessionId=${t.sessionId}`),re.setSessions(e=>[t,...e])}catch(e){let t=e instanceof Error?e.message:String(e);he(t),console.error(`[admin-ui] sidebar-new-session failed:`,t)}finally{ue(!1)}}},[r,le,re]),$e=Ve(r,re,`sidebar`),et=(0,j.useCallback)(async e=>{let t=await $e.resume(e);t.ok||console.error(`[admin-ui] sidebar-resume failed: ${t.error}`)},[$e]),tt=(0,j.useCallback)(async e=>{se(!0),ae(null);let t=await $e.purge(e);t.ok?A(null):ae(t.error??`purge failed`),se(!1)},[$e]),nt=(0,j.useCallback)(async e=>{let t=await $e.end(e);t.ok||console.error(`[admin-ui] sidebar-end-session failed: ${t.error}`)},[$e]);return(0,M.jsxs)(`aside`,{className:`side`,children:[(0,M.jsx)(`div`,{className:`side-head`,children:(0,M.jsx)(`button`,{className:`icon-btn side-head-toggle`,title:E?`Close sidebar`:T?`Expand sidebar`:`Collapse sidebar`,type:`button`,"aria-label":E?`Close sidebar`:T?`Expand sidebar`:`Collapse sidebar`,onClick:()=>{E?(console.info(`[admin-ui] sidebar-head-toggle action=close-drawer state=closed`),S()):(console.info(`[admin-ui] sidebar-head-toggle action=toggle-collapsed state=${T?`expanded`:`collapsed`}`),te())},children:T?(0,M.jsx)(Te,{size:28}):(0,M.jsx)(we,{size:28})})}),(0,M.jsxs)(`nav`,{className:`side-nav`,children:[(0,M.jsxs)(`button`,{type:`button`,className:`nav-row${Ee===`chat`?` active`:``}`,onClick:Ue,children:[(0,M.jsx)(ke,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Sessions`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=people`),v(),S()},children:[(0,M.jsx)(Ae,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`People`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=agents`),x(),S()},children:[(0,M.jsx)(fe,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Agents`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=projects`),_(),S()},children:[(0,M.jsx)(pe,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Projects`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=tasks`),y(),S()},children:[(0,M.jsx)(be,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Tasks`}),(0,M.jsx)(`span`,{className:`kbd`})]}),(0,M.jsxs)(`button`,{type:`button`,className:`nav-row${Ee===`artefacts`?` active`:``}`,onClick:We,children:[(0,M.jsx)(b,{size:qe}),(0,M.jsx)(`span`,{className:`label`,children:`Artefacts`}),(0,M.jsx)(`span`,{className:`kbd`})]})]}),(0,M.jsxs)(`div`,{className:`side-list`,ref:ce,children:[(0,M.jsxs)(`div`,{className:`group-head`,children:[(0,M.jsx)(`span`,{children:Je}),(0,M.jsxs)(`span`,{className:`group-head-meta`,children:[Ee===`chat`&&(0,M.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`New session`,"aria-label":`New session`,onClick:()=>void Qe(),disabled:le||!r,children:le?(0,M.jsx)(O,{size:12,className:`spinning`}):(0,M.jsx)(f,{size:12})}),(0,M.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`Refresh ${Je.toLowerCase()}`,"aria-label":`Refresh ${Je.toLowerCase()}`,onClick:Ze,disabled:Xe,children:(0,M.jsx)(p,{size:12,className:Xe?`spinning`:void 0})}),(0,M.jsx)(`span`,{children:Ye})]})]}),de&&Ee===`chat`&&(0,M.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:de}),Ee===`chat`&&(0,M.jsxs)(M.Fragment,{children:[d&&(0,M.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:d}),Se.map(e=>{let t=e.status===`ended`,n=t?`${e.turnCount}${e.capped?`+`:``} turns · ended`:`pid ${e.pid??`?`}`;return(0,M.jsxs)(`div`,{className:`conv${w===e.sessionId?` active`:``}`,children:[(0,M.jsxs)(`button`,{type:`button`,className:`conv-name-button`,onClick:()=>{C(e.sessionId),S()},title:`Show metadata`,children:[(0,M.jsx)(ke,{size:12,className:`conv-channel-icon`,"aria-label":`claude session`}),(0,M.jsxs)(`span`,{className:`conv-name`,children:[e.displayName,` · `,n]})]}),t?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Resume session`,"aria-label":`Resume session`,onClick:()=>void et(e.sessionId),children:(0,M.jsx)(ee,{size:13})}),(0,M.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Purge JSONL`,"aria-label":`Purge JSONL`,onClick:()=>{ae(null),A({sessionId:e.sessionId,displayName:e.displayName})},children:(0,M.jsx)(l,{size:13})})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Open in new tab`,"aria-label":`Open in new tab`,onClick:()=>{console.info(`[admin-ui] sidebar-open-session sessionId=${e.sessionId}`),e.url&&window.open(e.url,`_blank`,`noopener,noreferrer`)},children:(0,M.jsx)(ne,{size:13})}),(0,M.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`End session`,"aria-label":`End session`,onClick:()=>void nt(e.sessionId),children:(0,M.jsx)(me,{size:13})})]})]},e.sessionId)})]}),Ee===`artefacts`&&(0,M.jsxs)(M.Fragment,{children:[Pe&&(0,M.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:Pe}),Me&&!Pe&&Oe.length===0&&(0,M.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:`No artefacts yet`}),Oe.map(e=>(0,M.jsxs)(`button`,{type:`button`,className:`conv`,onClick:()=>{g({docId:e.id,name:e.name,content:e.content,editable:e.editable,mimeType:e.mimeType,skipReason:e.skipReason},`sidebar-artefacts`),S()},children:[(0,M.jsx)(`span`,{className:`conv-name`,children:e.name}),(0,M.jsx)(`span`,{className:`conv-kind`,"data-kind":e.kind===`agent-template`?`agent`:`doc`,children:e.kind===`agent-template`?`agent`:`doc`})]},e.id))]})]}),(0,M.jsxs)(`div`,{className:`side-foot`,ref:Be,children:[(0,M.jsx)(`div`,{className:`avatar`,children:o?(0,M.jsx)(`img`,{src:o,alt:ve}):ye}),(0,M.jsxs)(`div`,{className:`who`,children:[(0,M.jsx)(`span`,{className:`name`,children:ve}),(0,M.jsx)(`span`,{className:`role`,children:i??`operator`})]}),(0,M.jsx)(`button`,{className:`icon-btn side-foot-actions-trigger`,title:`Conversation actions`,type:`button`,"aria-label":`Conversation actions`,"aria-haspopup":`true`,"aria-expanded":Re,onClick:()=>ze(e=>!e),children:(0,M.jsx)(ge,{size:qe})}),Re&&(0,M.jsx)(`div`,{className:`side-foot-actions-popover`,children:(0,M.jsx)(Ke,{...D,onAfterAction:()=>ze(!1)})})]}),k&&(0,M.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`purge-confirm-title`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&!oe&&A(null)},children:(0,M.jsxs)(`div`,{className:`modal-card`,children:[(0,M.jsx)(`h3`,{id:`purge-confirm-title`,style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:`Purge session JSONL?`}),(0,M.jsxs)(`p`,{style:{margin:0,marginBottom:8,fontSize:13},children:[`This hard-deletes the transcript and sidecar for `,(0,M.jsx)(`strong`,{children:k.displayName}),`. The action cannot be undone.`]}),ie&&(0,M.jsx)(`p`,{style:{margin:0,marginBottom:8,fontSize:12,color:`var(--text-tertiary)`},children:ie}),(0,M.jsxs)(`div`,{className:`modal-action-row`,children:[(0,M.jsx)(`button`,{type:`button`,className:`modal-action-btn`,disabled:oe,onClick:()=>A(null),children:`Cancel`}),(0,M.jsx)(`button`,{type:`button`,className:`modal-action-btn`,"data-variant":`danger`,disabled:oe,onClick:()=>void tt(k.sessionId),children:oe?(0,M.jsx)(O,{size:13,className:`spinning`}):`Purge`})]})]})})]})}),Je=`maxy-shell-side-px`;function Ye(){if(typeof window>`u`)return 0;let e=document.querySelector(`.platform > .artefact`)?.getBoundingClientRect();return e&&e.width>0?Math.round(e.width):0}function Xe(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=Math.max(248,t-480-Ye());return Math.min(Math.max(e,248),n)}function Ze(){if(typeof window>`u`)return 264;try{let e=window.localStorage.getItem(Je);if(!e)return 264;let t=parseInt(e,10);if(Number.isFinite(t)&&t>=248)return Xe(t)}catch{}return 264}function Qe({targetSelector:e=`.platform`}){let t=(0,j.useRef)(null),[n,r]=(0,j.useState)(()=>Ze()),i=(0,j.useRef)(n);(0,j.useEffect)(()=>{let t=document.querySelector(e);!t||!(t instanceof HTMLElement)||(t.style.setProperty(`--side-px`,`${n}px`),i.current=n)},[n,e]);let a=(0,j.useCallback)(()=>{r(e=>{let t=Xe(e);return t===e?e:t})},[]);(0,j.useEffect)(()=>{a(),window.addEventListener(`resize`,a);let t=document.querySelector(e),n=null;return t instanceof HTMLElement&&(n=new MutationObserver(a),n.observe(t,{attributes:!0,attributeFilter:[`data-artefact`,`class`]})),()=>{window.removeEventListener(`resize`,a),n?.disconnect()}},[a,e]);let o=e=>{e.preventDefault();let n=t.current;if(!n)return;n.setPointerCapture(e.pointerId),n.classList.add(`dragging`);let a=!1,o=e=>{a=!0,r(Xe(Math.round(e.clientX)))},s=()=>{if(n.releasePointerCapture(e.pointerId),n.classList.remove(`dragging`),window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),!a)return;let t=i.current;try{window.localStorage.setItem(Je,String(t))}catch{}console.info(`[admin-ui] sidebar-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=Xe(264);r(e);try{window.localStorage.removeItem(Je)}catch{}console.info(`[admin-ui] sidebar-resize px=${e}`)};return(0,M.jsx)(`div`,{ref:t,className:`side-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,onPointerDown:o,onDoubleClick:s})}var $e=`maxy-shell-artefact-px`;function et(){if(typeof window>`u`)return 320;let e=window.innerWidth,t=document.querySelector(`.platform > .side`)?.getBoundingClientRect(),n=t?t.right:Math.round(e*.3);return nt(Math.round((e-n)*(2/3)))}function tt(){if(typeof window>`u`)return 320;try{let e=window.localStorage.getItem($e);if(!e)return et();let t=parseInt(e,10);if(Number.isFinite(t)&&t>=320)return t}catch{}return et()}function nt(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=document.querySelector(`.platform > .side`)?.getBoundingClientRect(),r=n?n.right:Math.round(t*.3),i=Math.max(320,t-r-480);return Math.min(Math.max(e,320),i)}function rt({targetSelector:e=`.platform`}){let t=(0,j.useRef)(null),[n,r]=(0,j.useState)(()=>tt()),i=(0,j.useRef)(n);(0,j.useEffect)(()=>{let t=document.querySelector(e);!t||!(t instanceof HTMLElement)||(t.style.setProperty(`--artefact-px`,`${n}px`),i.current=n)},[n,e]);let a=(0,j.useCallback)(()=>{r(e=>{let t=nt(e);return t===e?e:t})},[]);(0,j.useEffect)(()=>(a(),window.addEventListener(`resize`,a),()=>window.removeEventListener(`resize`,a)),[a]);let o=e=>{e.preventDefault();let n=t.current;if(!n)return;n.setPointerCapture(e.pointerId),n.classList.add(`dragging`);let a=!1,o=e=>{a=!0,r(nt(Math.round(window.innerWidth-e.clientX)))},s=()=>{if(n.releasePointerCapture(e.pointerId),n.classList.remove(`dragging`),window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),!a)return;let t=i.current;try{window.localStorage.setItem($e,String(t))}catch{}console.info(`[admin-ui] artefact-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=et();r(e);try{window.localStorage.removeItem($e)}catch{}console.info(`[admin-ui] artefact-resize px=${e}`)};return(0,M.jsx)(`div`,{ref:t,className:`art-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize artefact pane`,onPointerDown:o,onDoubleClick:s})}function it(e){if(!e)return`—`;let t=Date.parse(e);if(Number.isNaN(t))return e;let n=Date.now()-t,r=Math.round(n/1e3);if(r<60)return`${r}s ago`;let i=Math.round(r/60);if(i<60)return`${i}m ago`;let a=Math.round(i/60);return a<24?`${a}h ago`:`${Math.round(a/24)}d ago`}function at(e){return e==null?`—`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function ot({sessionId:e,cacheKey:t,onRenamed:n,onClose:r,recentsActions:i}){let[a,o]=(0,j.useState)(null),[c,d]=(0,j.useState)(!0),[f,p]=(0,j.useState)(null),[m,h]=(0,j.useState)(!1),[g,_]=(0,j.useState)(``),[v,y]=(0,j.useState)(!1),[C,w]=(0,j.useState)(null),[T,te]=(0,j.useState)(null),[E,D]=(0,j.useState)(null),[k,A]=(0,j.useState)(!1),ie=(0,j.useRef)(null),ae=Ve(t,i,`pane`),{isPinned:oe,togglePin:se}=Ge(u.hostname),ce=(0,j.useCallback)(async()=>{d(!0),p(null);try{let n=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}/meta?session_key=${encodeURIComponent(t)}`);if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`meta returned ${n.status} ${e.slice(0,200)}`)}let r=await n.json();o(r),_(r.displayName)}catch(e){p(e instanceof Error?e.message:String(e)),console.error(`[admin-ui] sidebar-meta-pane fetch failed:`,e)}finally{d(!1)}},[e,t]);(0,j.useEffect)(()=>{console.info(`[admin-ui] sidebar-meta-pane sessionId=${e.slice(0,8)}`),ce()},[ce,e]),(0,j.useEffect)(()=>{if(!k)return;let e=e=>{ie.current&&!ie.current.contains(e.target)&&A(!1)},t=e=>{e.key===`Escape`&&A(!1)};return document.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[k]);let le=(0,j.useCallback)(async()=>{if(!a)return;let r=g.trim();if(!r||r===a.displayName){h(!1);return}y(!0);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}?session_key=${encodeURIComponent(t)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({displayName:r})});if(!i.ok){let e=await i.text().catch(()=>``);throw Error(`PATCH ${i.status} ${e.slice(0,200)}`)}o({...a,displayName:r}),h(!1),n()}catch(e){console.error(`[admin-ui] sidebar-meta-pane rename failed:`,e),p(e instanceof Error?e.message:String(e))}finally{y(!1)}},[a,g,e,t,n]),de=(0,j.useCallback)(async(e,t)=>{w(await x(t)?`Copied ${e}`:`Copy failed`),window.setTimeout(()=>w(null),1500)},[]),fe=(0,j.useCallback)(async(e,t,n)=>{te(null);let i=e===`resume`?await ae.resume(t):e===`end`?await ae.end(t):e===`purge`?await ae.purge(t):e===`archive`?await ae.archive(t):await ae.unarchive(t);if(!i.ok){te(i.error??`action failed`);return}n&&r()},[ae,r]);if(c&&!a)return(0,M.jsx)(`main`,{className:`session-meta-pane`,style:{padding:24},children:(0,M.jsx)(O,{size:16,className:`spinning`})});if(f&&!a)return(0,M.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24},children:[(0,M.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:f}),(0,M.jsx)(`button`,{type:`button`,className:`action-btn`,onClick:()=>void ce(),children:`Retry`})]});if(!a)return null;let pe=a.sessionId,he=a.status===`alive`,_e=oe(a.sessionId),ve=ae.inFlight;return(0,M.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24,display:`flex`,flexDirection:`column`,gap:20,overflowY:`auto`},children:[(0,M.jsxs)(`header`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[m?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`input`,{type:`text`,value:g,onChange:e=>_(e.target.value),maxLength:256,autoFocus:!0,style:{fontSize:22,fontWeight:600,flex:1,padding:`4px 8px`},onKeyDown:e=>{e.key===`Enter`&&le(),e.key===`Escape`&&(_(a.displayName),h(!1))}}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Confirm rename`,disabled:v,onClick:()=>void le(),children:v?(0,M.jsx)(O,{size:16,className:`spinning`}):(0,M.jsx)(s,{size:16})}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Cancel rename`,onClick:()=>{_(a.displayName),h(!1)},children:(0,M.jsx)(re,{size:16})})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`h2`,{style:{fontSize:22,fontWeight:600,margin:0,flex:1},children:a.displayName}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Rename`,onClick:()=>h(!0),children:(0,M.jsx)(Ee,{size:16})})]}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Close pane`,onClick:r,children:(0,M.jsx)(re,{size:18})})]}),(0,M.jsx)(`section`,{children:(0,M.jsxs)(`dl`,{className:`meta-dl`,children:[(0,M.jsx)(`dt`,{children:`Status`}),(0,M.jsx)(`dd`,{children:he?`alive · pid ${a.pid??`?`}`:`ended`}),(0,M.jsx)(`dt`,{children:`sessionId`}),(0,M.jsxs)(`dd`,{"data-mono":!0,children:[(0,M.jsx)(`span`,{children:pe}),(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy sessionId`,onClick:()=>void de(`id`,pe),children:(0,M.jsx)(S,{size:12})})]}),(0,M.jsx)(`dt`,{children:`Started at`}),(0,M.jsxs)(`dd`,{children:[a.startedAt,` `,(0,M.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,it(a.startedAt),`)`]})]}),(0,M.jsx)(`dt`,{children:`Last message`}),(0,M.jsx)(`dd`,{children:a.lastMessageAt?(0,M.jsxs)(M.Fragment,{children:[a.lastMessageAt,` `,(0,M.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,it(a.lastMessageAt),`)`]})]}):`—`}),(0,M.jsx)(`dt`,{children:`Turns`}),(0,M.jsxs)(`dd`,{children:[a.turnCount,a.capped?(0,M.jsx)(`span`,{className:`text-tertiary`,children:` (≥, JSONL exceeds tail-read cap)`}):null]}),(0,M.jsx)(`dt`,{children:`JSONL size`}),(0,M.jsx)(`dd`,{children:at(a.sizeBytes)}),(0,M.jsx)(`dt`,{children:`JSONL path`}),(0,M.jsxs)(`dd`,{"data-mono":!0,children:[(0,M.jsx)(`span`,{children:a.jsonlPath??`—`}),a.jsonlPath&&(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy JSONL path`,onClick:()=>void de(`path`,a.jsonlPath),children:(0,M.jsx)(S,{size:12})})]}),he&&(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`dt`,{children:`Session URL`}),(0,M.jsxs)(`dd`,{"data-mono":!0,children:[(0,M.jsx)(`span`,{children:a.url??`—`}),a.url&&(0,M.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy URL`,onClick:()=>void de(`URL`,a.url),children:(0,M.jsx)(S,{size:12})})]}),(0,M.jsx)(`dt`,{children:`Channel`}),(0,M.jsx)(`dd`,{children:a.channel??`—`}),(0,M.jsx)(`dt`,{children:`Role`}),(0,M.jsx)(`dd`,{children:a.role??`—`}),(0,M.jsx)(`dt`,{children:`senderId`}),(0,M.jsx)(`dd`,{"data-mono":!0,children:(0,M.jsx)(`span`,{children:a.senderId||`—`})})]})]})}),(()=>{let e=[];return he&&a.url&&e.push((0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>window.open(a.url,`_blank`,`noopener,noreferrer`),children:[(0,M.jsx)(ne,{size:14}),` Open in new tab`]},`open-tab`)),a.jsonlPath&&e.push((0,M.jsxs)(`a`,{className:`action-btn`,href:`vscode://file/${a.jsonlPath}`,title:`Open JSONL in VS Code`,children:[(0,M.jsx)(b,{size:14}),` Open JSONL in editor`]},`open-jsonl`)),he||e.push((0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`primary`,disabled:ve===`resume`,onClick:()=>void fe(`resume`,a.claudeSessionId??a.sessionId,!1),children:[ve===`resume`?(0,M.jsx)(O,{size:14,className:`spinning`}):(0,M.jsx)(ee,{size:14}),` Resume`]},`resume`)),e.push((0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>h(!0),children:[(0,M.jsx)(Ee,{size:14}),` Rename`]},`rename`),(0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-active":_e?`true`:void 0,onClick:()=>se(a.sessionId),children:[(0,M.jsx)(De,{size:14}),` `,_e?`Unpin`:`Pin`]},`pin`),(0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,disabled:ve===`archive`,title:he?`Manager will refuse with 409 — end the session first`:void 0,onClick:()=>void fe(`archive`,a.sessionId,!he),children:[ve===`archive`?(0,M.jsx)(O,{size:14,className:`spinning`}):(0,M.jsx)(ue,{size:14}),` Archive`]},`archive`)),e.push(he?(0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:ve===`end`,onClick:()=>D({action:`end`,sessionId:a.sessionId,displayName:a.displayName}),children:[(0,M.jsx)(me,{size:14}),` End session`]},`end`):(0,M.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:ve===`purge`,onClick:()=>D({action:`purge`,sessionId:a.sessionId,displayName:a.displayName}),children:[(0,M.jsx)(l,{size:14}),` Purge JSONL`]},`purge`)),(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`section`,{className:`action-bar`,children:e}),(0,M.jsxs)(`section`,{className:`session-actions-overflow`,ref:ie,children:[(0,M.jsx)(`button`,{type:`button`,className:`session-actions-overflow__trigger`,"aria-label":`Actions`,"aria-haspopup":`menu`,"aria-expanded":k,onClick:()=>{A(e=>{let t=!e;return t&&console.info(`[admin-ui] pane-actions-overflow-open sessionId=${a.sessionId.slice(0,8)}`),t})},children:(0,M.jsx)(ge,{size:14})}),k&&(0,M.jsx)(`div`,{className:`overflow-popover`,role:`menu`,onClick:()=>A(!1),children:e})]})]})})(),C&&(0,M.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:C}),T&&(0,M.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:T}),f&&(0,M.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:f}),E&&(0,M.jsx)(st,{confirm:E,busy:ve===E.action,onCancel:()=>D(null),onConfirm:async()=>{await fe(E.action,E.sessionId,E.action===`purge`),D(null)}})]})}function st({confirm:e,busy:t,onCancel:n,onConfirm:r}){let i=e.action===`end`?`End live session?`:`Purge session JSONL?`,a=e.action===`end`?`This kills the PTY for ${e.displayName}. The JSONL is kept on disk and can be resumed later.`:`This hard-deletes the transcript and sidecar for ${e.displayName}. The action cannot be undone.`,o=e.action===`end`?`End session`:`Purge`;return(0,M.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&!t&&n()},children:(0,M.jsxs)(`div`,{className:`modal-card`,children:[(0,M.jsx)(`h3`,{style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:i}),(0,M.jsx)(`p`,{style:{margin:0,marginBottom:12,fontSize:13},children:a}),(0,M.jsxs)(`div`,{className:`modal-action-row`,children:[(0,M.jsx)(`button`,{type:`button`,className:`modal-action-btn`,disabled:t,onClick:n,children:`Cancel`}),(0,M.jsx)(`button`,{type:`button`,className:`modal-action-btn`,"data-variant":`danger`,disabled:t,onClick:()=>r(),children:t?(0,M.jsx)(O,{size:13,className:`spinning`}):o})]})]})})}function ct({onOpen:e}){return(0,M.jsx)(`footer`,{className:`admin-footer`,children:(0,M.jsxs)(`div`,{className:`powered-by`,role:`button`,tabIndex:0,onClick:e,onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e())},"aria-label":`Powered by Claude Code — show details`,children:[(0,M.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,M.jsx)(`span`,{children:`Powered by Claude Code`})]})})}var lt=t((e=>{var t=c();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function l(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,l=r[1];return o(function(){c.value=n,c.getSnapshot=t,u(c)&&l({inst:c})},[e,n,t]),a(function(){return u(c)&&l({inst:c}),e(function(){u(c)&&l({inst:c})})},[e]),s(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),ut=t(((e,t)=>{t.exports=lt()})),dt=ut(),ft=e(a(),1);function pt(e){this.content=e}pt.prototype={constructor:pt,find:function(e){for(var t=0;t<this.content.length;t+=2)if(this.content[t]===e)return t;return-1},get:function(e){var t=this.find(e);return t==-1?void 0:this.content[t+1]},update:function(e,t,n){var r=n&&n!=e?this.remove(n):this,i=r.find(e),a=r.content.slice();return i==-1?a.push(n||e,t):(a[i+1]=t,n&&(a[i]=n)),new pt(a)},remove:function(e){var t=this.find(e);if(t==-1)return this;var n=this.content.slice();return n.splice(t,2),new pt(n)},addToStart:function(e,t){return new pt([e,t].concat(this.remove(e).content))},addToEnd:function(e,t){var n=this.remove(e).content.slice();return n.push(e,t),new pt(n)},addBefore:function(e,t,n){var r=this.remove(t),i=r.content.slice(),a=r.find(e);return i.splice(a==-1?i.length:a,0,t,n),new pt(i)},forEach:function(e){for(var t=0;t<this.content.length;t+=2)e(this.content[t],this.content[t+1])},prepend:function(e){return e=pt.from(e),e.size?new pt(e.content.concat(this.subtract(e).content)):this},append:function(e){return e=pt.from(e),e.size?new pt(this.subtract(e).content.concat(e.content)):this},subtract:function(e){var t=this;e=pt.from(e);for(var n=0;n<e.content.length;n+=2)t=t.remove(e.content[n]);return t},toObject:function(){var e={};return this.forEach(function(t,n){e[t]=n}),e},get size(){return this.content.length>>1}},pt.from=function(e){if(e instanceof pt)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new pt(t)};function mt(e,t,n){for(let r=0;;r++){if(r==e.childCount||r==t.childCount)return e.childCount==t.childCount?null:n;let i=e.child(r),a=t.child(r);if(i==a){n+=i.nodeSize;continue}if(!i.sameMarkup(a))return n;if(i.isText&&i.text!=a.text){for(let e=0;i.text[e]==a.text[e];e++)n++;return n}if(i.content.size||a.content.size){let e=mt(i.content,a.content,n+1);if(e!=null)return e}n+=i.nodeSize}}function ht(e,t,n,r){for(let i=e.childCount,a=t.childCount;;){if(i==0||a==0)return i==a?null:{a:n,b:r};let o=e.child(--i),s=t.child(--a),c=o.nodeSize;if(o==s){n-=c,r-=c;continue}if(!o.sameMarkup(s))return{a:n,b:r};if(o.isText&&o.text!=s.text){let e=0,t=Math.min(o.text.length,s.text.length);for(;e<t&&o.text[o.text.length-e-1]==s.text[s.text.length-e-1];)e++,n--,r--;return{a:n,b:r}}if(o.content.size||s.content.size){let e=ht(o.content,s.content,n-1,r-1);if(e)return e}n-=c,r-=c}}var N=class e{constructor(e,t){if(this.content=e,this.size=t||0,t==null)for(let t=0;t<e.length;t++)this.size+=e[t].nodeSize}nodesBetween(e,t,n,r=0,i){for(let a=0,o=0;o<t;a++){let s=this.content[a],c=o+s.nodeSize;if(c>e&&n(s,r+o,i||null,a)!==!1&&s.content.size){let i=o+1;s.nodesBetween(Math.max(0,e-i),Math.min(s.content.size,t-i),n,r+i)}o=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,n,r){let i=``,a=!0;return this.nodesBetween(e,t,(o,s)=>{let c=o.isText?o.text.slice(Math.max(e,s)-s,t-s):o.isLeaf?r?typeof r==`function`?r(o):r:o.type.spec.leafText?o.type.spec.leafText(o):``:``;o.isBlock&&(o.isLeaf&&c||o.isTextblock)&&n&&(a?a=!1:i+=n),i+=c},0),i}append(t){if(!t.size)return this;if(!this.size)return t;let n=this.lastChild,r=t.firstChild,i=this.content.slice(),a=0;for(n.isText&&n.sameMarkup(r)&&(i[i.length-1]=n.withText(n.text+r.text),a=1);a<t.content.length;a++)i.push(t.content[a]);return new e(i,this.size+t.size)}cut(t,n=this.size){if(t==0&&n==this.size)return this;let r=[],i=0;if(n>t)for(let e=0,a=0;a<n;e++){let o=this.content[e],s=a+o.nodeSize;s>t&&((a<t||s>n)&&(o=o.isText?o.cut(Math.max(0,t-a),Math.min(o.text.length,n-a)):o.cut(Math.max(0,t-a-1),Math.min(o.content.size,n-a-1))),r.push(o),i+=o.nodeSize),a=s}return new e(r,i)}cutByIndex(t,n){return t==n?e.empty:t==0&&n==this.content.length?this:new e(this.content.slice(t,n))}replaceChild(t,n){let r=this.content[t];if(r==n)return this;let i=this.content.slice(),a=this.size+n.nodeSize-r.nodeSize;return i[t]=n,new e(i,a)}addToStart(t){return new e([t].concat(this.content),this.size+t.nodeSize)}addToEnd(t){return new e(this.content.concat(t),this.size+t.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;t<this.content.length;t++)if(!this.content[t].eq(e.content[t]))return!1;return!0}get firstChild(){return this.content.length?this.content[0]:null}get lastChild(){return this.content.length?this.content[this.content.length-1]:null}get childCount(){return this.content.length}child(e){let t=this.content[e];if(!t)throw RangeError(`Index `+e+` out of range for `+this);return t}maybeChild(e){return this.content[e]||null}forEach(e){for(let t=0,n=0;t<this.content.length;t++){let r=this.content[t];e(r,n,t),n+=r.nodeSize}}findDiffStart(e,t=0){return mt(this,e,t)}findDiffEnd(e,t=this.size,n=e.size){return ht(this,e,t,n)}findIndex(e){if(e==0)return _t(0,e);if(e==this.size)return _t(this.content.length,e);if(e>this.size||e<0)throw RangeError(`Position ${e} outside of fragment (${this})`);for(let t=0,n=0;;t++){let r=this.child(t),i=n+r.nodeSize;if(i>=e)return i==e?_t(t+1,i):_t(t,n);n=i}}toString(){return`<`+this.toStringInner()+`>`}toStringInner(){return this.content.join(`, `)}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(t,n){if(!n)return e.empty;if(!Array.isArray(n))throw RangeError(`Invalid input for Fragment.fromJSON`);return new e(n.map(t.nodeFromJSON))}static fromArray(t){if(!t.length)return e.empty;let n,r=0;for(let e=0;e<t.length;e++){let i=t[e];r+=i.nodeSize,e&&i.isText&&t[e-1].sameMarkup(i)?(n||=t.slice(0,e),n[n.length-1]=i.withText(n[n.length-1].text+i.text)):n&&n.push(i)}return new e(n||t,r)}static from(t){if(!t)return e.empty;if(t instanceof e)return t;if(Array.isArray(t))return this.fromArray(t);if(t.attrs)return new e([t],t.nodeSize);throw RangeError(`Can not convert `+t+` to a Fragment`+(t.nodesBetween?` (looks like multiple versions of prosemirror-model were loaded)`:``))}};N.empty=new N([],0);var gt={index:0,offset:0};function _t(e,t){return gt.index=e,gt.offset=t,gt}function vt(e,t){if(e===t)return!0;if(!(e&&typeof e==`object`)||!(t&&typeof t==`object`))return!1;let n=Array.isArray(e);if(Array.isArray(t)!=n)return!1;if(n){if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++)if(!vt(e[n],t[n]))return!1}else{for(let n in e)if(!(n in t)||!vt(e[n],t[n]))return!1;for(let n in t)if(!(n in e))return!1}return!0}var P=class e{constructor(e,t){this.type=e,this.attrs=t}addToSet(e){let t,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(this.eq(i))return e;if(this.type.excludes(i.type))t||=e.slice(0,r);else if(i.type.excludes(this.type))return e;else !n&&i.type.rank>this.type.rank&&(t||=e.slice(0,r),t.push(this),n=!0),t&&t.push(i)}return t||=e.slice(),n||t.push(this),t}removeFromSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return e.slice(0,t).concat(e.slice(t+1));return e}isInSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return!0;return!1}eq(e){return this==e||this.type==e.type&&vt(this.attrs,e.attrs)}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return e}static fromJSON(e,t){if(!t)throw RangeError(`Invalid input for Mark.fromJSON`);let n=e.marks[t.type];if(!n)throw RangeError(`There is no mark type ${t.type} in this schema`);let r=n.create(t.attrs);return n.checkAttrs(r.attrs),r}static sameSet(e,t){if(e==t)return!0;if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}static setFrom(t){if(!t||Array.isArray(t)&&t.length==0)return e.none;if(t instanceof e)return[t];let n=t.slice();return n.sort((e,t)=>e.type.rank-t.type.rank),n}};P.none=[];var yt=class extends Error{},F=class e{constructor(e,t,n){this.content=e,this.openStart=t,this.openEnd=n}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(t,n){let r=xt(this.content,t+this.openStart,n);return r&&new e(r,this.openStart,this.openEnd)}removeBetween(t,n){return new e(bt(this.content,t+this.openStart,n+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+`(`+this.openStart+`,`+this.openEnd+`)`}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(t,n){if(!n)return e.empty;let r=n.openStart||0,i=n.openEnd||0;if(typeof r!=`number`||typeof i!=`number`)throw RangeError(`Invalid input for Slice.fromJSON`);return new e(N.fromJSON(t,n.content),r,i)}static maxOpen(t,n=!0){let r=0,i=0;for(let e=t.firstChild;e&&!e.isLeaf&&(n||!e.type.spec.isolating);e=e.firstChild)r++;for(let e=t.lastChild;e&&!e.isLeaf&&(n||!e.type.spec.isolating);e=e.lastChild)i++;return new e(t,r,i)}};F.empty=new F(N.empty,0,0);function bt(e,t,n){let{index:r,offset:i}=e.findIndex(t),a=e.maybeChild(r),{index:o,offset:s}=e.findIndex(n);if(i==t||a.isText){if(s!=n&&!e.child(o).isText)throw RangeError(`Removing non-flat range`);return e.cut(0,t).append(e.cut(n))}if(r!=o)throw RangeError(`Removing non-flat range`);return e.replaceChild(r,a.copy(bt(a.content,t-i-1,n-i-1)))}function xt(e,t,n,r){let{index:i,offset:a}=e.findIndex(t),o=e.maybeChild(i);if(a==t||o.isText)return r&&!r.canReplace(i,i,n)?null:e.cut(0,t).append(n).append(e.cut(t));let s=xt(o.content,t-a-1,n,o);return s&&e.replaceChild(i,o.copy(s))}function St(e,t,n){if(n.openStart>e.depth)throw new yt(`Inserted content deeper than insertion position`);if(e.depth-n.openStart!=t.depth-n.openEnd)throw new yt(`Inconsistent open depths`);return Ct(e,t,n,0)}function Ct(e,t,n,r){let i=e.index(r),a=e.node(r);if(i==t.index(r)&&r<e.depth-n.openStart){let o=Ct(e,t,n,r+1);return a.copy(a.content.replaceChild(i,o))}else if(!n.content.size)return Ot(a,At(e,t,r));else if(!n.openStart&&!n.openEnd&&e.depth==r&&t.depth==r){let r=e.parent,i=r.content;return Ot(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}else{let{start:i,end:o}=jt(n,e);return Ot(a,kt(e,i,o,t,r))}}function wt(e,t){if(!t.type.compatibleContent(e.type))throw new yt(`Cannot join `+t.type.name+` onto `+e.type.name)}function Tt(e,t,n){let r=e.node(n);return wt(r,t.node(n)),r}function Et(e,t){let n=t.length-1;n>=0&&e.isText&&e.sameMarkup(t[n])?t[n]=e.withText(t[n].text+e.text):t.push(e)}function Dt(e,t,n,r){let i=(t||e).node(n),a=0,o=t?t.index(n):i.childCount;e&&(a=e.index(n),e.depth>n?a++:e.textOffset&&(Et(e.nodeAfter,r),a++));for(let e=a;e<o;e++)Et(i.child(e),r);t&&t.depth==n&&t.textOffset&&Et(t.nodeBefore,r)}function Ot(e,t){return e.type.checkContent(t),e.copy(t)}function kt(e,t,n,r,i){let a=e.depth>i&&Tt(e,t,i+1),o=r.depth>i&&Tt(n,r,i+1),s=[];return Dt(null,e,i,s),a&&o&&t.index(i)==n.index(i)?(wt(a,o),Et(Ot(a,kt(e,t,n,r,i+1)),s)):(a&&Et(Ot(a,At(e,t,i+1)),s),Dt(t,n,i,s),o&&Et(Ot(o,At(n,r,i+1)),s)),Dt(r,null,i,s),new N(s)}function At(e,t,n){let r=[];return Dt(null,e,n,r),e.depth>n&&Et(Ot(Tt(e,t,n+1),At(e,t,n+1)),r),Dt(t,null,n,r),new N(r)}function jt(e,t){let n=t.depth-e.openStart,r=t.node(n).copy(e.content);for(let e=n-1;e>=0;e--)r=t.node(e).copy(N.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}var Mt=class e{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw RangeError(`There is no position before the top-level node`);return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw RangeError(`There is no position after the top-level node`);return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],r=e.child(t);return n?e.child(t).cut(n):r}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[t*3],r=t==0?0:this.path[t*3-1]+1;for(let t=0;t<e;t++)r+=n.child(t).nodeSize;return r}marks(){let e=this.parent,t=this.index();if(e.content.size==0)return P.none;if(this.textOffset)return e.child(t).marks;let n=e.maybeChild(t-1),r=e.maybeChild(t);if(!n){let e=n;n=r,r=e}let i=n.marks;for(var a=0;a<i.length;a++)i[a].type.spec.inclusive===!1&&(!r||!i[a].isInSet(r.marks))&&(i=i[a--].removeFromSet(i));return i}marksAcross(e){let t=this.parent.maybeChild(this.index());if(!t||!t.isInline)return null;let n=t.marks,r=e.parent.maybeChild(e.index());for(var i=0;i<n.length;i++)n[i].type.spec.inclusive===!1&&(!r||!n[i].isInSet(r.marks))&&(n=n[i--].removeFromSet(n));return n}sharedDepth(e){for(let t=this.depth;t>0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos<this.pos)return e.blockRange(this);for(let n=this.depth-(this.parent.inlineContent||this.pos==e.pos?1:0);n>=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new It(this,e,n);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos<this.pos?e:this}toString(){let e=``;for(let t=1;t<=this.depth;t++)e+=(e?`/`:``)+this.node(t).type.name+`_`+this.index(t-1);return e+`:`+this.parentOffset}static resolve(t,n){if(!(n>=0&&n<=t.content.size))throw RangeError(`Position `+n+` out of range`);let r=[],i=0,a=n;for(let e=t;;){let{index:t,offset:n}=e.content.findIndex(a),o=a-n;if(r.push(e,t,i+n),!o||(e=e.child(t),e.isText))break;a=o-1,i+=n+1}return new e(n,r,a)}static resolveCached(t,n){let r=Ft.get(t);if(r)for(let e=0;e<r.elts.length;e++){let t=r.elts[e];if(t.pos==n)return t}else Ft.set(t,r=new Nt);let i=r.elts[r.i]=e.resolve(t,n);return r.i=(r.i+1)%Pt,i}},Nt=class{constructor(){this.elts=[],this.i=0}},Pt=12,Ft=new WeakMap,It=class{constructor(e,t,n){this.$from=e,this.$to=t,this.depth=n}get start(){return this.$from.before(this.depth+1)}get end(){return this.$to.after(this.depth+1)}get parent(){return this.$from.node(this.depth)}get startIndex(){return this.$from.index(this.depth)}get endIndex(){return this.$to.indexAfter(this.depth)}},Lt=Object.create(null),Rt=class e{constructor(e,t,n,r=P.none){this.type=e,this.attrs=t,this.marks=r,this.content=n||N.empty}get children(){return this.content.content}get nodeSize(){return this.isLeaf?1:2+this.content.size}get childCount(){return this.content.childCount}child(e){return this.content.child(e)}maybeChild(e){return this.content.maybeChild(e)}forEach(e){this.content.forEach(e)}nodesBetween(e,t,n,r=0){this.content.nodesBetween(e,t,n,r,this)}descendants(e){this.nodesBetween(0,this.content.size,e)}get textContent(){return this.isLeaf&&this.type.spec.leafText?this.type.spec.leafText(this):this.textBetween(0,this.content.size,``)}textBetween(e,t,n,r){return this.content.textBetween(e,t,n,r)}get firstChild(){return this.content.firstChild}get lastChild(){return this.content.lastChild}eq(e){return this==e||this.sameMarkup(e)&&this.content.eq(e.content)}sameMarkup(e){return this.hasMarkup(e.type,e.attrs,e.marks)}hasMarkup(e,t,n){return this.type==e&&vt(this.attrs,t||e.defaultAttrs||Lt)&&P.sameSet(this.marks,n||P.none)}copy(t=null){return t==this.content?this:new e(this.type,this.attrs,t,this.marks)}mark(t){return t==this.marks?this:new e(this.type,this.attrs,this.content,t)}cut(e,t=this.content.size){return e==0&&t==this.content.size?this:this.copy(this.content.cut(e,t))}slice(e,t=this.content.size,n=!1){if(e==t)return F.empty;let r=this.resolve(e),i=this.resolve(t),a=n?0:r.sharedDepth(t),o=r.start(a);return new F(r.node(a).content.cut(r.pos-o,i.pos-o),r.depth-a,i.depth-a)}replace(e,t,n){return St(this.resolve(e),this.resolve(t),n)}nodeAt(e){for(let t=this;;){let{index:n,offset:r}=t.content.findIndex(e);if(t=t.maybeChild(n),!t)return null;if(r==e||t.isText)return t;e-=r+1}}childAfter(e){let{index:t,offset:n}=this.content.findIndex(e);return{node:this.content.maybeChild(t),index:t,offset:n}}childBefore(e){if(e==0)return{node:null,index:0,offset:0};let{index:t,offset:n}=this.content.findIndex(e);if(n<e)return{node:this.content.child(t),index:t,offset:n};let r=this.content.child(t-1);return{node:r,index:t-1,offset:n-r.nodeSize}}resolve(e){return Mt.resolveCached(this,e)}resolveNoCache(e){return Mt.resolve(this,e)}rangeHasMark(e,t,n){let r=!1;return t>e&&this.nodesBetween(e,t,e=>(n.isInSet(e.marks)&&(r=!0),!r)),r}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+=`(`+this.content.toStringInner()+`)`),Bt(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw Error(`Called contentMatchAt on a node with invalid content`);return t}canReplace(e,t,n=N.empty,r=0,i=n.childCount){let a=this.contentMatchAt(e).matchFragment(n,r,i),o=a&&a.matchFragment(this.content,t);if(!o||!o.validEnd)return!1;for(let e=r;e<i;e++)if(!this.type.allowsMarks(n.child(e).marks))return!1;return!0}canReplaceWith(e,t,n,r){if(r&&!this.type.allowsMarks(r))return!1;let i=this.contentMatchAt(e).matchType(n),a=i&&i.matchFragment(this.content,t);return a?a.validEnd:!1}canAppend(e){return e.content.size?this.canReplace(this.childCount,this.childCount,e.content):this.type.compatibleContent(e.type)}check(){this.type.checkContent(this.content),this.type.checkAttrs(this.attrs);let e=P.none;for(let t=0;t<this.marks.length;t++){let n=this.marks[t];n.type.checkAttrs(n.attrs),e=n.addToSet(e)}if(!P.sameSet(e,this.marks))throw RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(e=>e.type.name)}`);this.content.forEach(e=>e.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(e=>e.toJSON())),e}static fromJSON(e,t){if(!t)throw RangeError(`Invalid input for Node.fromJSON`);let n;if(t.marks){if(!Array.isArray(t.marks))throw RangeError(`Invalid mark data for Node.fromJSON`);n=t.marks.map(e.markFromJSON)}if(t.type==`text`){if(typeof t.text!=`string`)throw RangeError(`Invalid text node in JSON`);return e.text(t.text,n)}let r=N.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}};Rt.prototype.text=void 0;var zt=class e extends Rt{constructor(e,t,n,r){if(super(e,t,null,r),!n)throw RangeError(`Empty text nodes are not allowed`);this.text=n}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Bt(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(t){return t==this.marks?this:new e(this.type,this.attrs,this.text,t)}withText(t){return t==this.text?this:new e(this.type,this.attrs,t,this.marks)}cut(e=0,t=this.text.length){return e==0&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}};function Bt(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+`(`+t+`)`;return t}var Vt=class e{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(t,n){let r=new Ht(t,n);if(r.next==null)return e.empty;let i=Ut(r);r.next&&r.err(`Unexpected trailing text`);let a=$t(Xt(i));return en(a,r),a}matchType(e){for(let t=0;t<this.next.length;t++)if(this.next[t].type==e)return this.next[t].next;return null}matchFragment(e,t=0,n=e.childCount){let r=this;for(let i=t;r&&i<n;i++)r=r.matchType(e.child(i).type);return r}get inlineContent(){return this.next.length!=0&&this.next[0].type.isInline}get defaultType(){for(let e=0;e<this.next.length;e++){let{type:t}=this.next[e];if(!(t.isText||t.hasRequiredAttrs()))return t}return null}compatible(e){for(let t=0;t<this.next.length;t++)for(let n=0;n<e.next.length;n++)if(this.next[t].type==e.next[n].type)return!0;return!1}fillBefore(e,t=!1,n=0){let r=[this];function i(a,o){let s=a.matchFragment(e,n);if(s&&(!t||s.validEnd))return N.from(o.map(e=>e.createAndFill()));for(let e=0;e<a.next.length;e++){let{type:t,next:n}=a.next[e];if(!(t.isText||t.hasRequiredAttrs())&&r.indexOf(n)==-1){r.push(n);let e=i(n,o.concat(t));if(e)return e}}return null}return i(this,[])}findWrapping(e){for(let t=0;t<this.wrapCache.length;t+=2)if(this.wrapCache[t]==e)return this.wrapCache[t+1];let t=this.computeWrapping(e);return this.wrapCache.push(e,t),t}computeWrapping(e){let t=Object.create(null),n=[{match:this,type:null,via:null}];for(;n.length;){let r=n.shift(),i=r.match;if(i.matchType(e)){let e=[];for(let t=r;t.type;t=t.via)e.push(t.type);return e.reverse()}for(let e=0;e<i.next.length;e++){let{type:a,next:o}=i.next[e];!a.isLeaf&&!a.hasRequiredAttrs()&&!(a.name in t)&&(!r.type||o.validEnd)&&(n.push({match:a.contentMatch,type:a,via:r}),t[a.name]=!0)}}return null}get edgeCount(){return this.next.length}edge(e){if(e>=this.next.length)throw RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(n){e.push(n);for(let r=0;r<n.next.length;r++)e.indexOf(n.next[r].next)==-1&&t(n.next[r].next)}return t(this),e.map((t,n)=>{let r=n+(t.validEnd?`*`:` `)+` `;for(let n=0;n<t.next.length;n++)r+=(n?`, `:``)+t.next[n].type.name+`->`+e.indexOf(t.next[n].next);return r}).join(`
2
2
  `)}};Vt.empty=new Vt(!0);var Ht=class{constructor(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),this.tokens[this.tokens.length-1]==``&&this.tokens.pop(),this.tokens[0]==``&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw SyntaxError(e+` (in content expression '`+this.string+`')`)}};function Ut(e){let t=[];do t.push(Wt(e));while(e.eat(`|`));return t.length==1?t[0]:{type:`choice`,exprs:t}}function Wt(e){let t=[];do t.push(Gt(e));while(e.next&&e.next!=`)`&&e.next!=`|`);return t.length==1?t[0]:{type:`seq`,exprs:t}}function Gt(e){let t=Yt(e);for(;;)if(e.eat(`+`))t={type:`plus`,expr:t};else if(e.eat(`*`))t={type:`star`,expr:t};else if(e.eat(`?`))t={type:`opt`,expr:t};else if(e.eat(`{`))t=qt(e,t);else break;return t}function Kt(e){/\D/.test(e.next)&&e.err(`Expected number, got '`+e.next+`'`);let t=Number(e.next);return e.pos++,t}function qt(e,t){let n=Kt(e),r=n;return e.eat(`,`)&&(r=e.next==`}`?-1:Kt(e)),e.eat(`}`)||e.err(`Unclosed braced range`),{type:`range`,min:n,max:r,expr:t}}function Jt(e,t){let n=e.nodeTypes,r=n[t];if(r)return[r];let i=[];for(let e in n){let r=n[e];r.isInGroup(t)&&i.push(r)}return i.length==0&&e.err(`No node type or group '`+t+`' found`),i}function Yt(e){if(e.eat(`(`)){let t=Ut(e);return e.eat(`)`)||e.err(`Missing closing paren`),t}else if(/\W/.test(e.next))e.err(`Unexpected token '`+e.next+`'`);else{let t=Jt(e,e.next).map(t=>(e.inline==null?e.inline=t.isInline:e.inline!=t.isInline&&e.err(`Mixing inline and block content`),{type:`name`,value:t}));return e.pos++,t.length==1?t[0]:{type:`choice`,exprs:t}}}function Xt(e){let t=[[]];return i(a(e,0),n()),t;function n(){return t.push([])-1}function r(e,n,r){let i={term:r,to:n};return t[e].push(i),i}function i(e,t){e.forEach(e=>e.to=t)}function a(e,t){if(e.type==`choice`)return e.exprs.reduce((e,n)=>e.concat(a(n,t)),[]);if(e.type==`seq`)for(let r=0;;r++){let o=a(e.exprs[r],t);if(r==e.exprs.length-1)return o;i(o,t=n())}else if(e.type==`star`){let o=n();return r(t,o),i(a(e.expr,o),o),[r(o)]}else if(e.type==`plus`){let o=n();return i(a(e.expr,t),o),i(a(e.expr,o),o),[r(o)]}else if(e.type==`opt`)return[r(t)].concat(a(e.expr,t));else if(e.type==`range`){let o=t;for(let t=0;t<e.min;t++){let t=n();i(a(e.expr,o),t),o=t}if(e.max==-1)i(a(e.expr,o),o);else for(let t=e.min;t<e.max;t++){let t=n();r(o,t),i(a(e.expr,o),t),o=t}return[r(o)]}else if(e.type==`name`)return[r(t,void 0,e.value)];else throw Error(`Unknown expr type`)}}function Zt(e,t){return t-e}function Qt(e,t){let n=[];return r(t),n.sort(Zt);function r(t){let i=e[t];if(i.length==1&&!i[0].term)return r(i[0].to);n.push(t);for(let e=0;e<i.length;e++){let{term:t,to:a}=i[e];!t&&n.indexOf(a)==-1&&r(a)}}}function $t(e){let t=Object.create(null);return n(Qt(e,0));function n(r){let i=[];r.forEach(t=>{e[t].forEach(({term:t,to:n})=>{if(!t)return;let r;for(let e=0;e<i.length;e++)i[e][0]==t&&(r=i[e][1]);Qt(e,n).forEach(e=>{r||i.push([t,r=[]]),r.indexOf(e)==-1&&r.push(e)})})});let a=t[r.join(`,`)]=new Vt(r.indexOf(e.length-1)>-1);for(let e=0;e<i.length;e++){let r=i[e][1].sort(Zt);a.next.push({type:i[e][0],next:t[r.join(`,`)]||n(r)})}return a}}function en(e,t){for(let n=0,r=[e];n<r.length;n++){let e=r[n],i=!e.validEnd,a=[];for(let t=0;t<e.next.length;t++){let{type:n,next:o}=e.next[t];a.push(n.name),i&&!(n.isText||n.hasRequiredAttrs())&&(i=!1),r.indexOf(o)==-1&&r.push(o)}i&&t.err(`Only non-generatable nodes (`+a.join(`, `)+`) in a required position (see https://prosemirror.net/docs/guide/#generatable)`)}}function tn(e){let t=Object.create(null);for(let n in e){let r=e[n];if(!r.hasDefault)return null;t[n]=r.default}return t}function nn(e,t){let n=Object.create(null);for(let r in e){let i=t&&t[r];if(i===void 0){let t=e[r];if(t.hasDefault)i=t.default;else throw RangeError(`No value supplied for attribute `+r)}n[r]=i}return n}function rn(e,t,n,r){for(let r in t)if(!(r in e))throw RangeError(`Unsupported attribute ${r} for ${n} of type ${r}`);for(let n in e){let r=e[n];r.validate&&r.validate(t[n])}}function an(e,t){let n=Object.create(null);if(t)for(let r in t)n[r]=new cn(e,r,t[r]);return n}var on=class e{constructor(e,t,n){this.name=e,this.schema=t,this.spec=n,this.markSet=null,this.groups=n.group?n.group.split(` `):[],this.attrs=an(e,n.attrs),this.defaultAttrs=tn(this.attrs),this.contentMatch=null,this.inlineContent=null,this.isBlock=!(n.inline||e==`text`),this.isText=e==`text`}get isInline(){return!this.isBlock}get isTextblock(){return this.isBlock&&this.inlineContent}get isLeaf(){return this.contentMatch==Vt.empty}get isAtom(){return this.isLeaf||!!this.spec.atom}isInGroup(e){return this.groups.indexOf(e)>-1}get whitespace(){return this.spec.whitespace||(this.spec.code?`pre`:`normal`)}hasRequiredAttrs(){for(let e in this.attrs)if(this.attrs[e].isRequired)return!0;return!1}compatibleContent(e){return this==e||this.contentMatch.compatible(e.contentMatch)}computeAttrs(e){return!e&&this.defaultAttrs?this.defaultAttrs:nn(this.attrs,e)}create(e=null,t,n){if(this.isText)throw Error(`NodeType.create can't construct text nodes`);return new Rt(this,this.computeAttrs(e),N.from(t),P.setFrom(n))}createChecked(e=null,t,n){return t=N.from(t),this.checkContent(t),new Rt(this,this.computeAttrs(e),t,P.setFrom(n))}createAndFill(e=null,t,n){if(e=this.computeAttrs(e),t=N.from(t),t.size){let e=this.contentMatch.fillBefore(t);if(!e)return null;t=e.append(t)}let r=this.contentMatch.matchFragment(t),i=r&&r.fillBefore(N.empty,!0);return i?new Rt(this,e,t.append(i),P.setFrom(n)):null}validContent(e){let t=this.contentMatch.matchFragment(e);if(!t||!t.validEnd)return!1;for(let t=0;t<e.childCount;t++)if(!this.allowsMarks(e.child(t).marks))return!1;return!0}checkContent(e){if(!this.validContent(e))throw RangeError(`Invalid content for node ${this.name}: ${e.toString().slice(0,50)}`)}checkAttrs(e){rn(this.attrs,e,`node`,this.name)}allowsMarkType(e){return this.markSet==null||this.markSet.indexOf(e)>-1}allowsMarks(e){if(this.markSet==null)return!0;for(let t=0;t<e.length;t++)if(!this.allowsMarkType(e[t].type))return!1;return!0}allowedMarks(e){if(this.markSet==null)return e;let t;for(let n=0;n<e.length;n++)this.allowsMarkType(e[n].type)?t&&t.push(e[n]):t||=e.slice(0,n);return t?t.length?t:P.none:e}static compile(t,n){let r=Object.create(null);t.forEach((t,i)=>r[t]=new e(t,n,i));let i=n.spec.topNode||`doc`;if(!r[i])throw RangeError(`Schema is missing its top node type ('`+i+`')`);if(!r.text)throw RangeError(`Every schema needs a 'text' type`);for(let e in r.text.attrs)throw RangeError(`The text node type should not have attributes`);return r}};function sn(e,t,n){let r=n.split(`|`);return n=>{let i=n===null?`null`:typeof n;if(r.indexOf(i)<0)throw RangeError(`Expected value of type ${r} for attribute ${t} on type ${e}, got ${i}`)}}var cn=class{constructor(e,t,n){this.hasDefault=Object.prototype.hasOwnProperty.call(n,`default`),this.default=n.default,this.validate=typeof n.validate==`string`?sn(e,t,n.validate):n.validate}get isRequired(){return!this.hasDefault}},ln=class e{constructor(e,t,n,r){this.name=e,this.rank=t,this.schema=n,this.spec=r,this.attrs=an(e,r.attrs),this.excluded=null;let i=tn(this.attrs);this.instance=i?new P(this,i):null}create(e=null){return!e&&this.instance?this.instance:new P(this,nn(this.attrs,e))}static compile(t,n){let r=Object.create(null),i=0;return t.forEach((t,a)=>r[t]=new e(t,i++,n,a)),r}removeFromSet(e){for(var t=0;t<e.length;t++)e[t].type==this&&(e=e.slice(0,t).concat(e.slice(t+1)),t--);return e}isInSet(e){for(let t=0;t<e.length;t++)if(e[t].type==this)return e[t]}checkAttrs(e){rn(this.attrs,e,`mark`,this.name)}excludes(e){return this.excluded.indexOf(e)>-1}},un=class{constructor(e){this.linebreakReplacement=null,this.cached=Object.create(null);let t=this.spec={};for(let n in e)t[n]=e[n];t.nodes=pt.from(e.nodes),t.marks=pt.from(e.marks||{}),this.nodes=on.compile(this.spec.nodes,this),this.marks=ln.compile(this.spec.marks,this);let n=Object.create(null);for(let e in this.nodes){if(e in this.marks)throw RangeError(e+` can not be both a node and a mark`);let t=this.nodes[e],r=t.spec.content||``,i=t.spec.marks;if(t.contentMatch=n[r]||(n[r]=Vt.parse(r,this.nodes)),t.inlineContent=t.contentMatch.inlineContent,t.spec.linebreakReplacement){if(this.linebreakReplacement)throw RangeError(`Multiple linebreak nodes defined`);if(!t.isInline||!t.isLeaf)throw RangeError(`Linebreak replacement nodes must be inline leaf nodes`);this.linebreakReplacement=t}t.markSet=i==`_`?null:i?dn(this,i.split(` `)):i==``||!t.inlineContent?[]:null}for(let e in this.marks){let t=this.marks[e],n=t.spec.excludes;t.excluded=n==null?[t]:n==``?[]:dn(this,n.split(` `))}this.nodeFromJSON=e=>Rt.fromJSON(this,e),this.markFromJSON=e=>P.fromJSON(this,e),this.topNodeType=this.nodes[this.spec.topNode||`doc`],this.cached.wrappings=Object.create(null)}node(e,t=null,n,r){if(typeof e==`string`)e=this.nodeType(e);else if(!(e instanceof on))throw RangeError(`Invalid node type: `+e);else if(e.schema!=this)throw RangeError(`Node type from different schema used (`+e.name+`)`);return e.createChecked(t,n,r)}text(e,t){let n=this.nodes.text;return new zt(n,n.defaultAttrs,e,P.setFrom(t))}mark(e,t){return typeof e==`string`&&(e=this.marks[e]),e.create(t)}nodeType(e){let t=this.nodes[e];if(!t)throw RangeError(`Unknown node type: `+e);return t}};function dn(e,t){let n=[];for(let r=0;r<t.length;r++){let i=t[r],a=e.marks[i],o=a;if(a)n.push(a);else for(let t in e.marks){let r=e.marks[t];(i==`_`||r.spec.group&&r.spec.group.split(` `).indexOf(i)>-1)&&n.push(o=r)}if(!o)throw SyntaxError(`Unknown mark type: '`+t[r]+`'`)}return n}function fn(e){return e.tag!=null}function pn(e){return e.style!=null}var mn=class e{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let n=this.matchedStyles=[];t.forEach(e=>{if(fn(e))this.tags.push(e);else if(pn(e)){let t=/[^=]*/.exec(e.style)[0];n.indexOf(t)<0&&n.push(t),this.styles.push(e)}}),this.normalizeLists=!this.tags.some(t=>{if(!/^(ul|ol)\b/.test(t.tag)||!t.node)return!1;let n=e.nodes[t.node];return n.contentMatch.matchType(n)})}parse(e,t={}){let n=new Cn(this,t,!1);return n.addAll(e,P.none,t.from,t.to),n.finish()}parseSlice(e,t={}){let n=new Cn(this,t,!0);return n.addAll(e,P.none,t.from,t.to),F.maxOpen(n.finish())}matchTag(e,t,n){for(let r=n?this.tags.indexOf(n)+1:0;r<this.tags.length;r++){let n=this.tags[r];if(Tn(e,n.tag)&&(n.namespace===void 0||e.namespaceURI==n.namespace)&&(!n.context||t.matchesContext(n.context))){if(n.getAttrs){let t=n.getAttrs(e);if(t===!1)continue;n.attrs=t||void 0}return n}}}matchStyle(e,t,n,r){for(let i=r?this.styles.indexOf(r)+1:0;i<this.styles.length;i++){let r=this.styles[i],a=r.style;if(!(a.indexOf(e)!=0||r.context&&!n.matchesContext(r.context)||a.length>e.length&&(a.charCodeAt(e.length)!=61||a.slice(e.length+1)!=t))){if(r.getAttrs){let e=r.getAttrs(t);if(e===!1)continue;r.attrs=e||void 0}return r}}}static schemaRules(e){let t=[];function n(e){let n=e.priority==null?50:e.priority,r=0;for(;r<t.length;r++){let e=t[r];if((e.priority==null?50:e.priority)<n)break}t.splice(r,0,e)}for(let t in e.marks){let r=e.marks[t].spec.parseDOM;r&&r.forEach(e=>{n(e=En(e)),e.mark||e.ignore||e.clearMark||(e.mark=t)})}for(let t in e.nodes){let r=e.nodes[t].spec.parseDOM;r&&r.forEach(e=>{n(e=En(e)),e.node||e.ignore||e.mark||(e.node=t)})}return t}static fromSchema(t){return t.cached.domParser||(t.cached.domParser=new e(t,e.schemaRules(t)))}},hn={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},gn={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},_n={ol:!0,ul:!0},vn=1,yn=2,bn=4;function xn(e,t,n){return t==null?e&&e.whitespace==`pre`?vn|yn:n&~bn:(t?vn:0)|(t===`full`?yn:0)}var Sn=class{constructor(e,t,n,r,i,a){this.type=e,this.attrs=t,this.marks=n,this.solid=r,this.options=a,this.content=[],this.activeMarks=P.none,this.match=i||(a&bn?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(N.from(e));if(t)this.match=this.type.contentMatch.matchFragment(t);else{let t=this.type.contentMatch,n;return(n=t.findWrapping(e.type))?(this.match=t,n):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&vn)){let e=this.content[this.content.length-1],t;if(e&&e.isText&&(t=/[ \t\r\n\u000c]+$/.exec(e.text))){let n=e;e.text.length==t[0].length?this.content.pop():this.content[this.content.length-1]=n.withText(n.text.slice(0,n.text.length-t[0].length))}}let t=N.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(N.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!hn.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}},Cn=class{constructor(e,t,n){this.parser=e,this.options=t,this.isOpen=n,this.open=0,this.localPreserveWS=!1;let r=t.topNode,i,a=xn(null,t.preserveWhitespace,0)|(n?bn:0);i=r?new Sn(r.type,r.attrs,P.none,!0,t.topMatch||r.type.contentMatch,a):n?new Sn(null,null,P.none,!0,null,a):new Sn(e.schema.topNodeType,null,P.none,!0,null,a),this.nodes=[i],this.find=t.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,t){e.nodeType==3?this.addTextNode(e,t):e.nodeType==1&&this.addElement(e,t)}addTextNode(e,t){let n=e.nodeValue,r=this.top,i=r.options&yn?`full`:this.localPreserveWS||(r.options&vn)>0,{schema:a}=this.parser;if(i===`full`||r.inlineContext(e)||/[^ \t\r\n\u000c]/.test(n)){if(!i){if(n=n.replace(/[ \t\r\n\u000c]+/g,` `),/^[ \t\r\n\u000c]/.test(n)&&this.open==this.nodes.length-1){let t=r.content[r.content.length-1],i=e.previousSibling;(!t||i&&i.nodeName==`BR`||t.isText&&/[ \t\r\n\u000c]$/.test(t.text))&&(n=n.slice(1))}}else if(i===`full`)n=n.replace(/\r\n?/g,`
3
3
  `);else if(a.linebreakReplacement&&/[\r\n]/.test(n)&&this.top.findWrapping(a.linebreakReplacement.create())){let e=n.split(/\r?\n|\r/);for(let n=0;n<e.length;n++)n&&this.insertNode(a.linebreakReplacement.create(),t,!0),e[n]&&this.insertNode(a.text(e[n]),t,!/\S/.test(e[n]));n=``}else n=n.replace(/\r?\n|\r/g,` `);n&&this.insertNode(a.text(n),t,!/\S/.test(n)),this.findInText(e)}else this.findInside(e)}addElement(e,t,n){let r=this.localPreserveWS,i=this.top;(e.tagName==`PRE`||/pre/.test(e.style&&e.style.whiteSpace))&&(this.localPreserveWS=!0);let a=e.nodeName.toLowerCase(),o;_n.hasOwnProperty(a)&&this.parser.normalizeLists&&wn(e);let s=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(o=this.parser.matchTag(e,this,n));out:if(s?s.ignore:gn.hasOwnProperty(a))this.findInside(e),this.ignoreFallback(e,t);else if(!s||s.skip||s.closeParent){s&&s.closeParent?this.open=Math.max(0,this.open-1):s&&s.skip.nodeType&&(e=s.skip);let n,r=this.needsBlock;if(hn.hasOwnProperty(a))i.content.length&&i.content[0].isInline&&this.open&&(this.open--,i=this.top),n=!0,i.type||(this.needsBlock=!0);else if(!e.firstChild){this.leafFallback(e,t);break out}let o=s&&s.skip?t:this.readStyles(e,t);o&&this.addAll(e,o),n&&this.sync(i),this.needsBlock=r}else{let n=this.readStyles(e,t);n&&this.addElementByRule(e,s,n,s.consuming===!1?o:void 0)}this.localPreserveWS=r}leafFallback(e,t){e.nodeName==`BR`&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode(`
4
4
  `),t)}ignoreFallback(e,t){e.nodeName==`BR`&&(!this.top.type||!this.top.type.inlineContent)&&this.findPlace(this.parser.schema.text(`-`),t,!0)}readStyles(e,t){let n=e.style;if(n&&n.length)for(let e=0;e<this.parser.matchedStyles.length;e++){let r=this.parser.matchedStyles[e],i=n.getPropertyValue(r);if(i)for(let e;;){let n=this.parser.matchStyle(r,i,this,e);if(!n)break;if(n.ignore)return null;if(t=n.clearMark?t.filter(e=>!n.clearMark(e)):t.concat(this.parser.schema.marks[n.mark].create(n.attrs)),n.consuming===!1)e=n;else break}}return t}addElementByRule(e,t,n,r){let i,a;if(t.node)if(a=this.parser.schema.nodes[t.node],a.isLeaf)this.insertNode(a.create(t.attrs),n,e.nodeName==`BR`)||this.leafFallback(e,n);else{let e=this.enter(a,t.attrs||null,n,t.preserveWhitespace);e&&(i=!0,n=e)}else{let e=this.parser.schema.marks[t.mark];n=n.concat(e.create(t.attrs))}let o=this.top;if(a&&a.isLeaf)this.findInside(e);else if(r)this.addElement(e,n,r);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach(e=>this.insertNode(e,n,!1));else{let r=e;typeof t.contentElement==`string`?r=e.querySelector(t.contentElement):typeof t.contentElement==`function`?r=t.contentElement(e):t.contentElement&&(r=t.contentElement),this.findAround(e,r,!0),this.addAll(r,n),this.findAround(e,r,!1)}i&&this.sync(o)&&this.open--}addAll(e,t,n,r){let i=n||0;for(let a=n?e.childNodes[n]:e.firstChild,o=r==null?null:e.childNodes[r];a!=o;a=a.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(a,t);this.findAtPoint(e,i)}findPlace(e,t,n){let r,i;for(let t=this.open,a=0;t>=0;t--){let o=this.nodes[t],s=o.findWrapping(e);if(s&&(!r||r.length>s.length+a)&&(r=s,i=o,!s.length))break;if(o.solid){if(n)break;a+=2}}if(!r)return null;this.sync(i);for(let e=0;e<r.length;e++)t=this.enterInner(r[e],null,t,!1);return t}insertNode(e,t,n){if(e.isInline&&this.needsBlock&&!this.top.type){let e=this.textblockFromContext();e&&(t=this.enterInner(e,null,t))}let r=this.findPlace(e,t,n);if(r){this.closeExtra();let t=this.top;t.match&&=t.match.matchType(e.type);let n=P.none;for(let i of r.concat(e.marks))(t.type?t.type.allowsMarkType(i.type):Dn(i.type,e.type))&&(n=i.addToSet(n));return t.content.push(e.mark(n)),!0}return!1}enter(e,t,n,r){let i=this.findPlace(e.create(t),n,!1);return i&&=this.enterInner(e,t,n,!0,r),i}enterInner(e,t,n,r=!1,i){this.closeExtra();let a=this.top;a.match=a.match&&a.match.matchType(e);let o=xn(e,i,a.options);a.options&bn&&a.content.length==0&&(o|=bn);let s=P.none;return n=n.filter(t=>(a.type?a.type.allowsMarkType(t.type):Dn(t.type,e))?(s=t.addToSet(s),!1):!0),this.nodes.push(new Sn(e,t,s,r,null,o)),this.open++,n}closeExtra(e=!1){let t=this.nodes.length-1;if(t>this.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!!(this.isOpen||this.options.topOpen))}sync(e){for(let t=this.open;t>=0;t--)if(this.nodes[t]==e)return this.open=t,!0;else this.localPreserveWS&&(this.nodes[t].options|=vn);return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let n=this.nodes[t].content;for(let t=n.length-1;t>=0;t--)e+=n[t].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let n=0;n<this.find.length;n++)this.find[n].node==e&&this.find[n].offset==t&&(this.find[n].pos=this.currentPos)}findInside(e){if(this.find)for(let t=0;t<this.find.length;t++)this.find[t].pos==null&&e.nodeType==1&&e.contains(this.find[t].node)&&(this.find[t].pos=this.currentPos)}findAround(e,t,n){if(e!=t&&this.find)for(let r=0;r<this.find.length;r++)this.find[r].pos==null&&e.nodeType==1&&e.contains(this.find[r].node)&&t.compareDocumentPosition(this.find[r].node)&(n?2:4)&&(this.find[r].pos=this.currentPos)}findInText(e){if(this.find)for(let t=0;t<this.find.length;t++)this.find[t].node==e&&(this.find[t].pos=this.currentPos-(e.nodeValue.length-this.find[t].offset))}matchesContext(e){if(e.indexOf(`|`)>-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let t=e.split(`/`),n=this.options.context,r=!this.isOpen&&(!n||n.parent.type==this.nodes[0].type),i=-(n?n.depth+1:0)+(r?0:1),a=(e,o)=>{for(;e>=0;e--){let s=t[e];if(s==``){if(e==t.length-1||e==0)continue;for(;o>=i;o--)if(a(e-1,o))return!0;return!1}else{let e=o>0||o==0&&r?this.nodes[o].type:n&&o>=i?n.node(o-i).type:null;if(!e||e.name!=s&&!e.isInGroup(s))return!1;o--}}return!0};return a(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let n=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(n&&n.isTextblock&&n.defaultAttrs)return n}for(let e in this.parser.schema.nodes){let t=this.parser.schema.nodes[e];if(t.isTextblock&&t.defaultAttrs)return t}}};function wn(e){for(let t=e.firstChild,n=null;t;t=t.nextSibling){let e=t.nodeType==1?t.nodeName.toLowerCase():null;e&&_n.hasOwnProperty(e)&&n?(n.appendChild(t),t=n):e==`li`?n=t:e&&(n=null)}}function Tn(e,t){return(e.matches||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector).call(e,t)}function En(e){let t={};for(let n in e)t[n]=e[n];return t}function Dn(e,t){let n=t.schema.nodes;for(let r in n){let i=n[r];if(!i.allowsMarkType(e))continue;let a=[],o=e=>{a.push(e);for(let n=0;n<e.edgeCount;n++){let{type:r,next:i}=e.edge(n);if(r==t||a.indexOf(i)<0&&o(i))return!0}};if(o(i.contentMatch))return!0}}var On=class e{constructor(e,t){this.nodes=e,this.marks=t}serializeFragment(e,t={},n){n||=An(t).createDocumentFragment();let r=n,i=[];return e.forEach(e=>{if(i.length||e.marks.length){let n=0,a=0;for(;n<i.length&&a<e.marks.length;){let t=e.marks[a];if(!this.marks[t.type.name]){a++;continue}if(!t.eq(i[n][0])||t.type.spec.spanning===!1)break;n++,a++}for(;n<i.length;)r=i.pop()[1];for(;a<e.marks.length;){let n=e.marks[a++],o=this.serializeMark(n,e.isInline,t);o&&(i.push([n,r]),r.appendChild(o.dom),r=o.contentDOM||o.dom)}}r.appendChild(this.serializeNodeInner(e,t))}),n}serializeNodeInner(e,t){let{dom:n,contentDOM:r}=Pn(An(t),this.nodes[e.type.name](e),null,e.attrs);if(r){if(e.isLeaf)throw RangeError(`Content hole not allowed in a leaf node spec`);this.serializeFragment(e.content,t,r)}return n}serializeNode(e,t={}){let n=this.serializeNodeInner(e,t);for(let r=e.marks.length-1;r>=0;r--){let i=this.serializeMark(e.marks[r],e.isInline,t);i&&((i.contentDOM||i.dom).appendChild(n),n=i.dom)}return n}serializeMark(e,t,n={}){let r=this.marks[e.type.name];return r&&Pn(An(n),r(e,t),null,e.attrs)}static renderSpec(e,t,n=null,r){return Pn(e,t,n,r)}static fromSchema(t){return t.cached.domSerializer||(t.cached.domSerializer=new e(this.nodesFromSchema(t),this.marksFromSchema(t)))}static nodesFromSchema(e){let t=kn(e.nodes);return t.text||=e=>e.text,t}static marksFromSchema(e){return kn(e.marks)}};function kn(e){let t={};for(let n in e){let r=e[n].spec.toDOM;r&&(t[n]=r)}return t}function An(e){return e.document||window.document}var jn=new WeakMap;function Mn(e){let t=jn.get(e);return t===void 0&&jn.set(e,t=Nn(e)),t}function Nn(e){let t=null;function n(e){if(e&&typeof e==`object`)if(Array.isArray(e))if(typeof e[0]==`string`)t||=[],t.push(e);else for(let t=0;t<e.length;t++)n(e[t]);else for(let t in e)n(e[t])}return n(e),t}function Pn(e,t,n,r){if(typeof t==`string`)return{dom:e.createTextNode(t)};if(t.nodeType!=null)return{dom:t};if(t.dom&&t.dom.nodeType!=null)return t;let i=t[0],a;if(typeof i!=`string`)throw RangeError(`Invalid array passed to renderSpec`);if(r&&(a=Mn(r))&&a.indexOf(t)>-1)throw RangeError(`Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.`);let o=i.indexOf(` `);o>0&&(n=i.slice(0,o),i=i.slice(o+1));let s,c=n?e.createElementNS(n,i):e.createElement(i),l=t[1],u=1;if(l&&typeof l==`object`&&l.nodeType==null&&!Array.isArray(l)){u=2;for(let e in l)if(l[e]!=null){let t=e.indexOf(` `);t>0?c.setAttributeNS(e.slice(0,t),e.slice(t+1),l[e]):e==`style`&&c.style?c.style.cssText=l[e]:c.setAttribute(e,l[e])}}for(let i=u;i<t.length;i++){let a=t[i];if(a===0){if(i<t.length-1||i>u)throw RangeError(`Content hole must be the only child of its parent node`);return{dom:c,contentDOM:c}}else{let{dom:t,contentDOM:i}=Pn(e,a,n,r);if(c.appendChild(t),i){if(s)throw RangeError(`Multiple content holes`);s=i}}}return{dom:c,contentDOM:s}}var Fn=65535,In=2**16;function Ln(e,t){return e+t*In}function Rn(e){return e&Fn}function zn(e){return(e-(e&Fn))/In}var Bn=1,Vn=2,Hn=4,Un=8,Wn=class{constructor(e,t,n){this.pos=e,this.delInfo=t,this.recover=n}get deleted(){return(this.delInfo&Un)>0}get deletedBefore(){return(this.delInfo&(Bn|Hn))>0}get deletedAfter(){return(this.delInfo&(Vn|Hn))>0}get deletedAcross(){return(this.delInfo&Hn)>0}},Gn=class e{constructor(t,n=!1){if(this.ranges=t,this.inverted=n,!t.length&&e.empty)return e.empty}recover(e){let t=0,n=Rn(e);if(!this.inverted)for(let e=0;e<n;e++)t+=this.ranges[e*3+2]-this.ranges[e*3+1];return this.ranges[n*3]+t+zn(e)}mapResult(e,t=1){return this._map(e,t,!1)}map(e,t=1){return this._map(e,t,!0)}_map(e,t,n){let r=0,i=this.inverted?2:1,a=this.inverted?1:2;for(let o=0;o<this.ranges.length;o+=3){let s=this.ranges[o]-(this.inverted?r:0);if(s>e)break;let c=this.ranges[o+i],l=this.ranges[o+a],u=s+c;if(e<=u){let i=c?e==s?-1:e==u?1:t:t,a=s+r+(i<0?0:l);if(n)return a;let d=e==(t<0?s:u)?null:Ln(o/3,e-s),f=e==s?Vn:e==u?Bn:Hn;return(t<0?e!=s:e!=u)&&(f|=Un),new Wn(a,f,d)}r+=l-c}return n?e+r:new Wn(e+r,0,null)}touches(e,t){let n=0,r=Rn(t),i=this.inverted?2:1,a=this.inverted?1:2;for(let t=0;t<this.ranges.length;t+=3){let o=this.ranges[t]-(this.inverted?n:0);if(o>e)break;let s=this.ranges[t+i];if(e<=o+s&&t==r*3)return!0;n+=this.ranges[t+a]-s}return!1}forEach(e){let t=this.inverted?2:1,n=this.inverted?1:2;for(let r=0,i=0;r<this.ranges.length;r+=3){let a=this.ranges[r],o=a-(this.inverted?i:0),s=a+(this.inverted?0:i),c=this.ranges[r+t],l=this.ranges[r+n];e(o,o+c,s,s+l),i+=l-c}}invert(){return new e(this.ranges,!this.inverted)}toString(){return(this.inverted?`-`:``)+JSON.stringify(this.ranges)}static offset(t){return t==0?e.empty:new e(t<0?[0,-t,0]:[0,0,t])}};Gn.empty=new Gn([]);var Kn=class e{constructor(e,t,n=0,r=e?e.length:0){this.mirror=t,this.from=n,this.to=r,this._maps=e||[],this.ownData=!(e||t)}get maps(){return this._maps}slice(t=0,n=this.maps.length){return new e(this._maps,this.mirror,t,n)}appendMap(e,t){this.ownData||=(this._maps=this._maps.slice(),this.mirror=this.mirror&&this.mirror.slice(),!0),this.to=this._maps.push(e),t!=null&&this.setMirror(this._maps.length-1,t)}appendMapping(e){for(let t=0,n=this._maps.length;t<e._maps.length;t++){let r=e.getMirror(t);this.appendMap(e._maps[t],r!=null&&r<t?n+r:void 0)}}getMirror(e){if(this.mirror){for(let t=0;t<this.mirror.length;t++)if(this.mirror[t]==e)return this.mirror[t+(t%2?-1:1)]}}setMirror(e,t){this.mirror||=[],this.mirror.push(e,t)}appendMappingInverted(e){for(let t=e.maps.length-1,n=this._maps.length+e._maps.length;t>=0;t--){let r=e.getMirror(t);this.appendMap(e._maps[t].invert(),r!=null&&r>t?n-r-1:void 0)}}invert(){let t=new e;return t.appendMappingInverted(this),t}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let n=this.from;n<this.to;n++)e=this._maps[n].map(e,t);return e}mapResult(e,t=1){return this._map(e,t,!1)}_map(e,t,n){let r=0;for(let n=this.from;n<this.to;n++){let i=this._maps[n].mapResult(e,t);if(i.recover!=null){let t=this.getMirror(n);if(t!=null&&t>n&&t<this.to){n=t,e=this._maps[t].recover(i.recover);continue}}r|=i.delInfo,e=i.pos}return n?e:new Wn(e,r,null)}},qn=Object.create(null),Jn=class{getMap(){return Gn.empty}merge(e){return null}static fromJSON(e,t){if(!t||!t.stepType)throw RangeError(`Invalid input for Step.fromJSON`);let n=qn[t.stepType];if(!n)throw RangeError(`No step type ${t.stepType} defined`);return n.fromJSON(e,t)}static jsonID(e,t){if(e in qn)throw RangeError(`Duplicate use of step JSON ID `+e);return qn[e]=t,t.prototype.jsonID=e,t}},Yn=class e{constructor(e,t){this.doc=e,this.failed=t}static ok(t){return new e(t,null)}static fail(t){return new e(null,t)}static fromReplace(t,n,r,i){try{return e.ok(t.replace(n,r,i))}catch(t){if(t instanceof yt)return e.fail(t.message);throw t}}};function Xn(e,t,n){let r=[];for(let i=0;i<e.childCount;i++){let a=e.child(i);a.content.size&&(a=a.copy(Xn(a.content,t,a))),a.isInline&&(a=t(a,n,i)),r.push(a)}return N.fromArray(r)}var Zn=class e extends Jn{constructor(e,t,n){super(),this.from=e,this.to=t,this.mark=n}apply(e){let t=e.slice(this.from,this.to),n=e.resolve(this.from),r=n.node(n.sharedDepth(this.to)),i=new F(Xn(t.content,(e,t)=>!e.isAtom||!t.type.allowsMarkType(this.mark.type)?e:e.mark(this.mark.addToSet(e.marks)),r),t.openStart,t.openEnd);return Yn.fromReplace(e,this.from,this.to,i)}invert(){return new Qn(this.from,this.to,this.mark)}map(t){let n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deleted&&r.deleted||n.pos>=r.pos?null:new e(n.pos,r.pos,this.mark)}merge(t){return t instanceof e&&t.mark.eq(this.mark)&&this.from<=t.to&&this.to>=t.from?new e(Math.min(this.from,t.from),Math.max(this.to,t.to),this.mark):null}toJSON(){return{stepType:`addMark`,mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(t,n){if(typeof n.from!=`number`||typeof n.to!=`number`)throw RangeError(`Invalid input for AddMarkStep.fromJSON`);return new e(n.from,n.to,t.markFromJSON(n.mark))}};Jn.jsonID(`addMark`,Zn);var Qn=class e extends Jn{constructor(e,t,n){super(),this.from=e,this.to=t,this.mark=n}apply(e){let t=e.slice(this.from,this.to),n=new F(Xn(t.content,e=>e.mark(this.mark.removeFromSet(e.marks)),e),t.openStart,t.openEnd);return Yn.fromReplace(e,this.from,this.to,n)}invert(){return new Zn(this.from,this.to,this.mark)}map(t){let n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deleted&&r.deleted||n.pos>=r.pos?null:new e(n.pos,r.pos,this.mark)}merge(t){return t instanceof e&&t.mark.eq(this.mark)&&this.from<=t.to&&this.to>=t.from?new e(Math.min(this.from,t.from),Math.max(this.to,t.to),this.mark):null}toJSON(){return{stepType:`removeMark`,mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(t,n){if(typeof n.from!=`number`||typeof n.to!=`number`)throw RangeError(`Invalid input for RemoveMarkStep.fromJSON`);return new e(n.from,n.to,t.markFromJSON(n.mark))}};Jn.jsonID(`removeMark`,Qn);var $n=class e extends Jn{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return Yn.fail(`No node at mark step's position`);let n=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return Yn.fromReplace(e,this.pos,this.pos+1,new F(N.from(n),0,t.isLeaf?0:1))}invert(t){let n=t.nodeAt(this.pos);if(n){let t=this.mark.addToSet(n.marks);if(t.length==n.marks.length){for(let r=0;r<n.marks.length;r++)if(!n.marks[r].isInSet(t))return new e(this.pos,n.marks[r]);return new e(this.pos,this.mark)}}return new er(this.pos,this.mark)}map(t){let n=t.mapResult(this.pos,1);return n.deletedAfter?null:new e(n.pos,this.mark)}toJSON(){return{stepType:`addNodeMark`,pos:this.pos,mark:this.mark.toJSON()}}static fromJSON(t,n){if(typeof n.pos!=`number`)throw RangeError(`Invalid input for AddNodeMarkStep.fromJSON`);return new e(n.pos,t.markFromJSON(n.mark))}};Jn.jsonID(`addNodeMark`,$n);var er=class e extends Jn{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return Yn.fail(`No node at mark step's position`);let n=t.type.create(t.attrs,null,this.mark.removeFromSet(t.marks));return Yn.fromReplace(e,this.pos,this.pos+1,new F(N.from(n),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);return!t||!this.mark.isInSet(t.marks)?this:new $n(this.pos,this.mark)}map(t){let n=t.mapResult(this.pos,1);return n.deletedAfter?null:new e(n.pos,this.mark)}toJSON(){return{stepType:`removeNodeMark`,pos:this.pos,mark:this.mark.toJSON()}}static fromJSON(t,n){if(typeof n.pos!=`number`)throw RangeError(`Invalid input for RemoveNodeMarkStep.fromJSON`);return new e(n.pos,t.markFromJSON(n.mark))}};Jn.jsonID(`removeNodeMark`,er);var tr=class e extends Jn{constructor(e,t,n,r=!1){super(),this.from=e,this.to=t,this.slice=n,this.structure=r}apply(e){return this.structure&&rr(e,this.from,this.to)?Yn.fail(`Structure replace would overwrite content`):Yn.fromReplace(e,this.from,this.to,this.slice)}getMap(){return new Gn([this.from,this.to-this.from,this.slice.size])}invert(t){return new e(this.from,this.from+this.slice.size,t.slice(this.from,this.to))}map(t){let n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deletedAcross&&r.deletedAcross?null:new e(n.pos,Math.max(n.pos,r.pos),this.slice,this.structure)}merge(t){if(!(t instanceof e)||t.structure||this.structure)return null;if(this.from+this.slice.size==t.from&&!this.slice.openEnd&&!t.slice.openStart){let n=this.slice.size+t.slice.size==0?F.empty:new F(this.slice.content.append(t.slice.content),this.slice.openStart,t.slice.openEnd);return new e(this.from,this.to+(t.to-t.from),n,this.structure)}else if(t.to==this.from&&!this.slice.openStart&&!t.slice.openEnd){let n=this.slice.size+t.slice.size==0?F.empty:new F(t.slice.content.append(this.slice.content),t.slice.openStart,this.slice.openEnd);return new e(t.from,this.to,n,this.structure)}else return null}toJSON(){let e={stepType:`replace`,from:this.from,to:this.to};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(t,n){if(typeof n.from!=`number`||typeof n.to!=`number`)throw RangeError(`Invalid input for ReplaceStep.fromJSON`);return new e(n.from,n.to,F.fromJSON(t,n.slice),!!n.structure)}};Jn.jsonID(`replace`,tr);var nr=class e extends Jn{constructor(e,t,n,r,i,a,o=!1){super(),this.from=e,this.to=t,this.gapFrom=n,this.gapTo=r,this.slice=i,this.insert=a,this.structure=o}apply(e){if(this.structure&&(rr(e,this.from,this.gapFrom)||rr(e,this.gapTo,this.to)))return Yn.fail(`Structure gap-replace would overwrite content`);let t=e.slice(this.gapFrom,this.gapTo);if(t.openStart||t.openEnd)return Yn.fail(`Gap is not a flat range`);let n=this.slice.insertAt(this.insert,t.content);return n?Yn.fromReplace(e,this.from,this.to,n):Yn.fail(`Content does not fit in gap`)}getMap(){return new Gn([this.from,this.gapFrom-this.from,this.insert,this.gapTo,this.to-this.gapTo,this.slice.size-this.insert])}invert(t){let n=this.gapTo-this.gapFrom;return new e(this.from,this.from+this.slice.size+n,this.from+this.insert,this.from+this.insert+n,t.slice(this.from,this.to).removeBetween(this.gapFrom-this.from,this.gapTo-this.from),this.gapFrom-this.from,this.structure)}map(t){let n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1),i=this.from==this.gapFrom?n.pos:t.map(this.gapFrom,-1),a=this.to==this.gapTo?r.pos:t.map(this.gapTo,1);return n.deletedAcross&&r.deletedAcross||i<n.pos||a>r.pos?null:new e(n.pos,r.pos,i,a,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:`replaceAround`,from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(t,n){if(typeof n.from!=`number`||typeof n.to!=`number`||typeof n.gapFrom!=`number`||typeof n.gapTo!=`number`||typeof n.insert!=`number`)throw RangeError(`Invalid input for ReplaceAroundStep.fromJSON`);return new e(n.from,n.to,n.gapFrom,n.gapTo,F.fromJSON(t,n.slice),n.insert,!!n.structure)}};Jn.jsonID(`replaceAround`,nr);function rr(e,t,n){let r=e.resolve(t),i=n-t,a=r.depth;for(;i>0&&a>0&&r.indexAfter(a)==r.node(a).childCount;)a--,i--;if(i>0){let e=r.node(a).maybeChild(r.indexAfter(a));for(;i>0;){if(!e||e.isLeaf)return!0;e=e.firstChild,i--}}return!1}function ir(e,t,n,r){let i=[],a=[],o,s;e.doc.nodesBetween(t,n,(e,c,l)=>{if(!e.isInline)return;let u=e.marks;if(!r.isInSet(u)&&l.type.allowsMarkType(r.type)){let l=Math.max(c,t),d=Math.min(c+e.nodeSize,n),f=r.addToSet(u);for(let e=0;e<u.length;e++)u[e].isInSet(f)||(o&&o.to==l&&o.mark.eq(u[e])?o.to=d:i.push(o=new Qn(l,d,u[e])));s&&s.to==l?s.to=d:a.push(s=new Zn(l,d,r))}}),i.forEach(t=>e.step(t)),a.forEach(t=>e.step(t))}function ar(e,t,n,r){let i=[],a=0;e.doc.nodesBetween(t,n,(e,o)=>{if(!e.isInline)return;a++;let s=null;if(r instanceof ln){let t=e.marks,n;for(;n=r.isInSet(t);)(s||=[]).push(n),t=n.removeFromSet(t)}else r?r.isInSet(e.marks)&&(s=[r]):s=e.marks;if(s&&s.length){let r=Math.min(o+e.nodeSize,n);for(let e=0;e<s.length;e++){let n=s[e],c;for(let e=0;e<i.length;e++){let t=i[e];t.step==a-1&&n.eq(i[e].style)&&(c=t)}c?(c.to=r,c.step=a):i.push({style:n,from:Math.max(o,t),to:r,step:a})}}}),i.forEach(t=>e.step(new Qn(t.from,t.to,t.style)))}function or(e,t,n,r=n.contentMatch,i=!0){let a=e.doc.nodeAt(t),o=[],s=t+1;for(let t=0;t<a.childCount;t++){let c=a.child(t),l=s+c.nodeSize,u=r.matchType(c.type);if(!u)o.push(new tr(s,l,F.empty));else{r=u;for(let t=0;t<c.marks.length;t++)n.allowsMarkType(c.marks[t].type)||e.step(new Qn(s,l,c.marks[t]));if(i&&c.isText&&n.whitespace!=`pre`){let e,t=/\r?\n|\r/g,r;for(;e=t.exec(c.text);)r||=new F(N.from(n.schema.text(` `,n.allowedMarks(c.marks))),0,0),o.push(new tr(s+e.index,s+e.index+e[0].length,r))}}s=l}if(!r.validEnd){let t=r.fillBefore(N.empty,!0);e.replace(s,s,new F(t,0,0))}for(let t=o.length-1;t>=0;t--)e.step(o[t])}function sr(e,t,n){return(t==0||e.canReplace(t,e.childCount))&&(n==e.childCount||e.canReplace(0,n))}function cr(e){let t=e.parent.content.cutByIndex(e.startIndex,e.endIndex);for(let n=e.depth,r=0,i=0;;--n){let a=e.$from.node(n),o=e.$from.index(n)+r,s=e.$to.indexAfter(n)-i;if(n<e.depth&&a.canReplace(o,s,t))return n;if(n==0||a.type.spec.isolating||!sr(a,o,s))break;o&&(r=1),s<a.childCount&&(i=1)}return null}function lr(e,t,n){let{$from:r,$to:i,depth:a}=t,o=r.before(a+1),s=i.after(a+1),c=o,l=s,u=N.empty,d=0;for(let e=a,t=!1;e>n;e--)t||r.index(e)>0?(t=!0,u=N.from(r.node(e).copy(u)),d++):c--;let f=N.empty,p=0;for(let e=a,t=!1;e>n;e--)t||i.after(e+1)<i.end(e)?(t=!0,f=N.from(i.node(e).copy(f)),p++):l++;e.step(new nr(c,l,o,s,new F(u.append(f),d,p),u.size-d,!0))}function ur(e,t,n=null,r=e){let i=fr(e,t),a=i&&pr(r,t);return a?i.map(dr).concat({type:t,attrs:n}).concat(a.map(dr)):null}function dr(e){return{type:e,attrs:null}}function fr(e,t){let{parent:n,startIndex:r,endIndex:i}=e,a=n.contentMatchAt(r).findWrapping(t);if(!a)return null;let o=a.length?a[0]:t;return n.canReplaceWith(r,i,o)?a:null}function pr(e,t){let{parent:n,startIndex:r,endIndex:i}=e,a=n.child(r),o=t.contentMatch.findWrapping(a.type);if(!o)return null;let s=(o.length?o[o.length-1]:t).contentMatch;for(let e=r;s&&e<i;e++)s=s.matchType(n.child(e).type);return!s||!s.validEnd?null:o}function mr(e,t,n){let r=N.empty;for(let e=n.length-1;e>=0;e--){if(r.size){let t=n[e].type.contentMatch.matchFragment(r);if(!t||!t.validEnd)throw RangeError(`Wrapper type given to Transform.wrap does not form valid content of its parent wrapper`)}r=N.from(n[e].type.create(n[e].attrs,r))}let i=t.start,a=t.end;e.step(new nr(i,a,i,a,new F(r,0,0),n.length,!0))}function hr(e,t,n,r,i){if(!r.isTextblock)throw RangeError(`Type given to setBlockType should be a textblock`);let a=e.steps.length;e.doc.nodesBetween(t,n,(t,n)=>{let o=typeof i==`function`?i(t):i;if(t.isTextblock&&!t.hasMarkup(r,o)&&vr(e.doc,e.mapping.slice(a).map(n),r)){let i=null;if(r.schema.linebreakReplacement){let e=r.whitespace==`pre`,t=!!r.contentMatch.matchType(r.schema.linebreakReplacement);e&&!t?i=!1:!e&&t&&(i=!0)}i===!1&&_r(e,t,n,a),or(e,e.mapping.slice(a).map(n,1),r,void 0,i===null);let s=e.mapping.slice(a),c=s.map(n,1),l=s.map(n+t.nodeSize,1);return e.step(new nr(c,l,c+1,l-1,new F(N.from(r.create(o,null,t.marks)),0,0),1,!0)),i===!0&&gr(e,t,n,a),!1}})}function gr(e,t,n,r){t.forEach((i,a)=>{if(i.isText){let o,s=/\r?\n|\r/g;for(;o=s.exec(i.text);){let i=e.mapping.slice(r).map(n+1+a+o.index);e.replaceWith(i,i+1,t.type.schema.linebreakReplacement.create())}}})}function _r(e,t,n,r){t.forEach((i,a)=>{if(i.type==i.type.schema.linebreakReplacement){let i=e.mapping.slice(r).map(n+1+a);e.replaceWith(i,i+1,t.type.schema.text(`
@@ -1 +1 @@
1
- import{a as e,d as t}from"./brand-jT16ErmC.js";import{n}from"./page-CZQd-W3C.js";import"./graph-labels-DJ717p00.js";import"./Checkbox-B79fVxpA.js";var r=t(),i=e();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
1
+ import{a as e,d as t}from"./brand-jT16ErmC.js";import{n}from"./page-CTbSJbem.js";import"./graph-labels-DJ717p00.js";import"./Checkbox-B79fVxpA.js";var r=t(),i=e();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
@@ -47,4 +47,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
47
47
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function XT(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var ZT=function(e){function n(e){t(this,n),this._pairs=e}return Xu(n,[{key:e,value:vC.mark((function e(){var t,n,r,i,a;return vC.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=YT(this._pairs),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return r=Vp(n.value,2),i=r[0],a=r[1],e.next=7,[i,a];case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case`end`:return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:`entries`,value:vC.mark((function e(){var t,n,r,i,a;return vC.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=YT(this._pairs),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return r=Vp(n.value,2),i=r[0],a=r[1],e.next=7,[i,a];case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case`end`:return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:`keys`,value:vC.mark((function e(){var t,n,r,i;return vC.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=YT(this._pairs),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return r=Vp(n.value,1),i=r[0],e.next=7,i;case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case`end`:return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:`values`,value:vC.mark((function e(){var t,n,r,i;return vC.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=YT(this._pairs),e.prev=1,t.s();case 3:if((n=t.n()).done){e.next=9;break}return r=Vp(n.value,2),i=r[1],e.next=7,i;case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),t.e(e.t0);case 14:return e.prev=14,t.f(),e.finish(14);case 17:case`end`:return e.stop()}}),e,this,[[1,11,14,17]])}))},{key:`toIdArray`,value:function(){var e;return Kd(e=Hp(this._pairs)).call(e,(function(e){return e[0]}))}},{key:`toItemArray`,value:function(){var e;return Kd(e=Hp(this._pairs)).call(e,(function(e){return e[1]}))}},{key:`toEntryArray`,value:function(){return Hp(this._pairs)}},{key:`toObjectMap`,value:function(){var e,t=hh(null),n=YT(this._pairs);try{for(n.s();!(e=n.n()).done;){var r=Vp(e.value,2),i=r[0];t[i]=r[1]}}catch(e){n.e(e)}finally{n.f()}return t}},{key:`toMap`,value:function(){return new Cw(this._pairs)}},{key:`toIdSet`,value:function(){return new qT(this.toIdArray())}},{key:`toItemSet`,value:function(){return new qT(this.toItemArray())}},{key:`cache`,value:function(){return new n(Hp(this._pairs))}},{key:`distinct`,value:function(e){var t,n=new qT,r=YT(this._pairs);try{for(r.s();!(t=r.n()).done;){var i=Vp(t.value,2),a=i[0],o=i[1];n.add(e(o,a))}}catch(e){r.e(e)}finally{r.f()}return n}},{key:`filter`,value:function(e){var t=this._pairs;return new n({[kT]:()=>vC.mark((function n(){var r,i,a,o,s;return vC.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:r=YT(t),n.prev=1,r.s();case 3:if((i=r.n()).done){n.next=10;break}if(a=Vp(i.value,2),o=a[0],s=a[1],!e(s,o)){n.next=8;break}return n.next=8,[o,s];case 8:n.next=3;break;case 10:n.next=15;break;case 12:n.prev=12,n.t0=n.catch(1),r.e(n.t0);case 15:return n.prev=15,r.f(),n.finish(15);case 18:case`end`:return n.stop()}}),n,null,[[1,12,15,18]])}))()})}},{key:`forEach`,value:function(e){var t,n=YT(this._pairs);try{for(n.s();!(t=n.n()).done;){var r=Vp(t.value,2),i=r[0];e(r[1],i)}}catch(e){n.e(e)}finally{n.f()}}},{key:`map`,value:function(e){var t=this._pairs;return new n({[kT]:()=>vC.mark((function n(){var r,i,a,o,s;return vC.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:r=YT(t),n.prev=1,r.s();case 3:if((i=r.n()).done){n.next=9;break}return a=Vp(i.value,2),o=a[0],s=a[1],n.next=7,[o,e(s,o)];case 7:n.next=3;break;case 9:n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),r.e(n.t0);case 14:return n.prev=14,r.f(),n.finish(14);case 17:case`end`:return n.stop()}}),n,null,[[1,11,14,17]])}))()})}},{key:`max`,value:function(e){var t=JT(this._pairs),n=t.next();if(n.done)return null;for(var r=n.value[1],i=e(n.value[1],n.value[0]);!(n=t.next()).done;){var a=Vp(n.value,2),o=a[0],s=a[1],c=e(s,o);c>i&&(i=c,r=s)}return r}},{key:`min`,value:function(e){var t=JT(this._pairs),n=t.next();if(n.done)return null;for(var r=n.value[1],i=e(n.value[1],n.value[0]);!(n=t.next()).done;){var a=Vp(n.value,2),o=a[0],s=a[1],c=e(s,o);c<i&&(i=c,r=s)}return r}},{key:`reduce`,value:function(e,t){var n,r=YT(this._pairs);try{for(r.s();!(n=r.n()).done;){var i=Vp(n.value,2),a=i[0];t=e(t,i[1],a)}}catch(e){r.e(e)}finally{r.f()}return t}},{key:`sort`,value:function(e){var t=this;return new n({[kT]:function(){var n;return JT(bT(n=Hp(t._pairs)).call(n,(function(t,n){var r=Vp(t,2),i=r[0],a=r[1],o=Vp(n,2),s=o[0],c=o[1];return e(a,c,i,s)})))}})}}]),n}(kT);function QT(e,t){var n=om(e);if(lv){var r=lv(e);t&&(r=Bd(r).call(r,(function(t){return vv(e,t).enumerable}))),n.push.apply(n,r)}return n}function $T(e){for(var t=1;t<arguments.length;t++){var n,r,i=arguments[t]==null?{}:arguments[t];t%2?_m(n=QT(Object(i),!0)).call(n,(function(t){Zu(e,t,i[t])})):Cv?Av(e,Cv(i)):_m(r=QT(Object(i))).call(r,(function(t){jv(e,t,vv(i,t))}))}return e}function eE(e,t){var n=Up!==void 0&&$f(e)||e[`@@iterator`];if(!n){if(rm(e)||(n=function(e,t){var n;if(e){if(typeof e==`string`)return tE(e,t);var r=Yp(n=Object.prototype.toString.call(e)).call(n,8,-1);if(r===`Object`&&e.constructor&&(r=e.constructor.name),r===`Map`||r===`Set`)return Xf(e);if(r===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return tE(e,t)}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
48
48
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function tE(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function nE(e){var t=function(){if(typeof Reflect>`u`||!cv||cv.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(cv(Boolean,[],(function(){}))),!0}catch{return!1}}();return function(){var n,r=Hv(e);if(t){var i=Hv(this).constructor;n=cv(r,arguments,i)}else n=r.apply(this,arguments);return zv(this,n)}}var rE=function(e){Rv(r,e);var n=nE(r);function r(e,i){var a;return t(this,r),Zu(U(a=n.call(this)),`_queue`,null),e&&!rm(e)&&(i=e,e=[]),a._options=i||{},a._data=new Cw,a.length=0,a._idProp=a._options.fieldId||`id`,e&&e.length&&a.add(e),a.setOptions(i),a}return Xu(r,[{key:`idProp`,get:function(){return this._idProp}},{key:`setOptions`,value:function(e){e&&e.queue!==void 0&&(!1===e.queue?this._queue&&=(this._queue.destroy(),null):(this._queue||=GT.extend(this,{replace:[`add`,`update`,`remove`]}),e.queue&&typeof e.queue==`object`&&this._queue.setOptions(e.queue)))}},{key:`add`,value:function(e,t){var n,r=this,i=[];if(rm(e)){var a=Kd(e).call(e,(function(e){return e[r._idProp]}));if(kw(a).call(a,(function(e){return r._data.has(e)})))throw Error(`A duplicate id was found in the parameter array.`);for(var o=0,s=e.length;o<s;o++)n=this._addItem(e[o]),i.push(n)}else{if(!e||typeof e!=`object`)throw Error(`Unknown dataType`);n=this._addItem(e),i.push(n)}return i.length&&this._trigger(`add`,{items:i},t),i}},{key:`update`,value:function(e,t){var n=this,r=[],i=[],a=[],o=[],s=this._idProp,c=function(e){var t=e[s];if(t!=null&&n._data.has(t)){var c=e,l=ch({},n._data.get(t)),u=n._updateItem(c);i.push(u),o.push(c),a.push(l)}else{var d=n._addItem(e);r.push(d)}};if(rm(e))for(var l=0,u=e.length;l<u;l++)e[l]&&typeof e[l]==`object`?c(e[l]):console.warn(`Ignoring input item, which is not an object at index `+l);else{if(!e||typeof e!=`object`)throw Error(`Unknown dataType`);c(e)}if(r.length&&this._trigger(`add`,{items:r},t),i.length){var d={items:i,oldData:a,data:o};this._trigger(`update`,d,t)}return Jp(r).call(r,i)}},{key:`updateOnly`,value:function(e,t){var n,r=this;rm(e)||(e=[e]);var i=Kd(n=Kd(e).call(e,(function(e){var t=r._data.get(e[r._idProp]);if(t==null)throw Error(`Updating non-existent items is not allowed.`);return{oldData:t,update:e}}))).call(n,(function(e){var t=e.oldData,n=e.update,i=t[r._idProp],a=function(e){for(var t,n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return R_.apply(void 0,Jp(t=[{},e]).call(t,r))}(t,n);return r._data.set(i,a),{id:i,oldData:t,updatedData:a}}));if(i.length){var a={items:Kd(i).call(i,(function(e){return e.id})),oldData:Kd(i).call(i,(function(e){return e.oldData})),data:Kd(i).call(i,(function(e){return e.updatedData}))};return this._trigger(`update`,a,t),a.items}return[]}},{key:`get`,value:function(e,t){var n=void 0,r=void 0,i=void 0;WT(e)?(n=e,i=t):rm(e)?(r=e,i=t):i=e;var a=i&&i.returnType===`Object`?`Object`:`Array`,o=i&&Bd(i),s=[],c=void 0,l=void 0,u=void 0;if(n!=null)(c=this._data.get(n))&&o&&!o(c)&&(c=void 0);else if(r!=null)for(var d=0,f=r.length;d<f;d++)(c=this._data.get(r[d]))==null||o&&!o(c)||s.push(c);else for(var p,m=0,h=(l=Hp(Lw(p=this._data).call(p))).length;m<h;m++)u=l[m],(c=this._data.get(u))==null||o&&!o(c)||s.push(c);if(i&&i.order&&n==null&&this._sort(s,i.order),i&&i.fields){var g=i.fields;if(n!=null&&c!=null)c=this._filterFields(c,g);else for(var _=0,v=s.length;_<v;_++)s[_]=this._filterFields(s[_],g)}if(a==`Object`){for(var y={},b=0,x=s.length;b<x;b++){var S=s[b];y[S[this._idProp]]=S}return y}return n==null?s:c??null}},{key:`getIds`,value:function(e){var t=this._data,n=e&&Bd(e),r=e&&e.order,i=Hp(Lw(t).call(t)),a=[];if(n)if(r){for(var o=[],s=0,c=i.length;s<c;s++){var l=i[s],u=this._data.get(l);u!=null&&n(u)&&o.push(u)}this._sort(o,r);for(var d=0,f=o.length;d<f;d++)a.push(o[d][this._idProp])}else for(var p=0,m=i.length;p<m;p++){var h=i[p],g=this._data.get(h);g!=null&&n(g)&&a.push(g[this._idProp])}else if(r){for(var _=[],v=0,y=i.length;v<y;v++){var b=i[v];_.push(t.get(b))}this._sort(_,r);for(var x=0,S=_.length;x<S;x++)a.push(_[x][this._idProp])}else for(var ee=0,C=i.length;ee<C;ee++){var te=i[ee],ne=t.get(te);ne!=null&&a.push(ne[this._idProp])}return a}},{key:`getDataSet`,value:function(){return this}},{key:`forEach`,value:function(e,t){var n=t&&Bd(t),r=this._data,i=Hp(Lw(r).call(r));if(t&&t.order)for(var a=this.get(t),o=0,s=a.length;o<s;o++){var c=a[o];e(c,c[this._idProp])}else for(var l=0,u=i.length;l<u;l++){var d=i[l],f=this._data.get(d);f==null||n&&!n(f)||e(f,d)}}},{key:`map`,value:function(e,t){for(var n=t&&Bd(t),r=[],i=this._data,a=Hp(Lw(i).call(i)),o=0,s=a.length;o<s;o++){var c=a[o],l=this._data.get(c);l==null||n&&!n(l)||r.push(e(l,c))}return t&&t.order&&this._sort(r,t.order),r}},{key:`_filterFields`,value:function(e,t){var n;return e&&Pd(n=rm(t)?t:om(t)).call(n,(function(t,n){return t[n]=e[n],t}),{})}},{key:`_sort`,value:function(e,t){if(typeof t==`string`){var n=t;bT(e).call(e,(function(e,t){var r=e[n],i=t[n];return r>i?1:r<i?-1:0}))}else{if(typeof t!=`function`)throw TypeError(`Order must be a function or a string`);bT(e).call(e,t)}}},{key:`remove`,value:function(e,t){for(var n=[],r=[],i=rm(e)?e:[e],a=0,o=i.length;a<o;a++){var s=this._remove(i[a]);if(s){var c=s[this._idProp];c!=null&&(n.push(c),r.push(s))}}return n.length&&this._trigger(`remove`,{items:n,oldData:r},t),n}},{key:`_remove`,value:function(e){var t;if(WT(e)?t=e:e&&typeof e==`object`&&(t=e[this._idProp]),t!=null&&this._data.has(t)){var n=this._data.get(t)||null;return this._data.delete(t),--this.length,n}return null}},{key:`clear`,value:function(e){for(var t,n=Hp(Lw(t=this._data).call(t)),r=[],i=0,a=n.length;i<a;i++)r.push(this._data.get(n[i]));return this._data.clear(),this.length=0,this._trigger(`remove`,{items:n,oldData:r},e),n}},{key:`max`,value:function(e){var t,n,r=null,i=null,a=eE(OT(t=this._data).call(t));try{for(a.s();!(n=a.n()).done;){var o=n.value,s=o[e];typeof s==`number`&&(i==null||s>i)&&(r=o,i=s)}}catch(e){a.e(e)}finally{a.f()}return r||null}},{key:`min`,value:function(e){var t,n,r=null,i=null,a=eE(OT(t=this._data).call(t));try{for(a.s();!(n=a.n()).done;){var o=n.value,s=o[e];typeof s==`number`&&(i==null||s<i)&&(r=o,i=s)}}catch(e){a.e(e)}finally{a.f()}return r||null}},{key:`distinct`,value:function(e){for(var t=this._data,n=Hp(Lw(t).call(t)),r=[],i=0,a=0,o=n.length;a<o;a++){for(var s=n[a],c=t.get(s)[e],l=!1,u=0;u<i;u++)if(r[u]==c){l=!0;break}l||c===void 0||(r[i]=c,i++)}return r}},{key:`_addItem`,value:function(e){var t=function(e,t){return e[t]??(e[t]=UT()),e}(e,this._idProp),n=t[this._idProp];if(this._data.has(n))throw Error(`Cannot add item: item with id `+n+` already exists`);return this._data.set(n,t),++this.length,n}},{key:`_updateItem`,value:function(e){var t=e[this._idProp];if(t==null)throw Error(`Cannot update item: item has no id (item: `+vh(e)+`)`);var n=this._data.get(t);if(!n)throw Error(`Cannot update item: no item with id `+t+` found`);return this._data.set(t,$T($T({},n),e)),t}},{key:`stream`,value:function(e){if(e){var t=this._data;return new ZT({[kT]:()=>vC.mark((function n(){var r,i,a,o;return vC.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:r=eE(e),n.prev=1,r.s();case 3:if((i=r.n()).done){n.next=11;break}if(a=i.value,(o=t.get(a))==null){n.next=9;break}return n.next=9,[a,o];case 9:n.next=3;break;case 11:n.next=16;break;case 13:n.prev=13,n.t0=n.catch(1),r.e(n.t0);case 16:return n.prev=16,r.f(),n.finish(16);case 19:case`end`:return n.stop()}}),n,null,[[1,13,16,19]])}))()})}var n;return new ZT({[kT]:vd(n=LT(this._data)).call(n,this._data)})}}]),r}(KT);function iE(e,t){var n=Up!==void 0&&$f(e)||e[`@@iterator`];if(!n){if(rm(e)||(n=function(e,t){var n;if(e){if(typeof e==`string`)return aE(e,t);var r=Yp(n=Object.prototype.toString.call(e)).call(n,8,-1);if(r===`Object`&&e.constructor&&(r=e.constructor.name),r===`Map`||r===`Set`)return Xf(e);if(r===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return aE(e,t)}}(e))||t&&e&&typeof e.length==`number`){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw TypeError(`Invalid attempt to iterate non-iterable instance.
49
49
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||n.return==null||n.return()}finally{if(s)throw a}}}}function aE(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function oE(e){var t=function(){if(typeof Reflect>`u`||!cv||cv.sham)return!1;if(typeof Proxy==`function`)return!0;try{return Boolean.prototype.valueOf.call(cv(Boolean,[],(function(){}))),!0}catch{return!1}}();return function(){var n,r=Hv(e);if(t){var i=Hv(this).constructor;n=cv(r,arguments,i)}else n=r.apply(this,arguments);return zv(this,n)}}var sE=function(e){Rv(r,e);var n=oE(r);function r(e,i){var a,o;return t(this,r),Zu(U(o=n.call(this)),`length`,0),Zu(U(o),`_ids`,new qT),o._options=i||{},o._listener=vd(a=o._onEvent).call(a,U(o)),o.setData(e),o}return Xu(r,[{key:`idProp`,get:function(){return this.getDataSet().idProp}},{key:`setData`,value:function(e){if(this._data){this._data.off&&this._data.off(`*`,this._listener);var t=this._data.getIds({filter:Bd(this._options)}),n=this._data.get(t);this._ids.clear(),this.length=0,this._trigger(`remove`,{items:t,oldData:n})}if(e!=null){this._data=e;for(var r=this._data.getIds({filter:Bd(this._options)}),i=0,a=r.length;i<a;i++){var o=r[i];this._ids.add(o)}this.length=r.length,this._trigger(`add`,{items:r})}else this._data=new rE;this._data.on&&this._data.on(`*`,this._listener)}},{key:`refresh`,value:function(){for(var e=this._data.getIds({filter:Bd(this._options)}),t=Hp(this._ids),n={},r=[],i=[],a=[],o=0,s=e.length;o<s;o++){var c=e[o];n[c]=!0,this._ids.has(c)||(r.push(c),this._ids.add(c))}for(var l=0,u=t.length;l<u;l++){var d=t[l],f=this._data.get(d);f==null?console.error(`If you see this, report it please.`):n[d]||(i.push(d),a.push(f),this._ids.delete(d))}this.length+=r.length-i.length,r.length&&this._trigger(`add`,{items:r}),i.length&&this._trigger(`remove`,{items:i,oldData:a})}},{key:`get`,value:function(e,t){if(this._data==null)return null;var n,r=null;WT(e)||rm(e)?(r=e,n=t):n=e;var i=ch({},this._options,n),a=Bd(this._options),o=n&&Bd(n);return a&&o&&(i.filter=function(e){return a(e)&&o(e)}),r==null?this._data.get(i):this._data.get(r,i)}},{key:`getIds`,value:function(e){if(this._data.length){var t,n=Bd(this._options),r=e==null?null:Bd(e);return t=r?n?function(e){return n(e)&&r(e)}:r:n,this._data.getIds({filter:t,order:e&&e.order})}return[]}},{key:`forEach`,value:function(e,t){if(this._data){var n,r,i=Bd(this._options),a=t&&Bd(t);r=a?i?function(e){return i(e)&&a(e)}:a:i,_m(n=this._data).call(n,e,{filter:r,order:t&&t.order})}}},{key:`map`,value:function(e,t){if(this._data){var n,r,i=Bd(this._options),a=t&&Bd(t);return r=a?i?function(e){return i(e)&&a(e)}:a:i,Kd(n=this._data).call(n,e,{filter:r,order:t&&t.order})}return[]}},{key:`getDataSet`,value:function(){return this._data.getDataSet()}},{key:`stream`,value:function(e){var t;return this._data.stream(e||{[kT]:vd(t=Lw(this._ids)).call(t,this._ids)})}},{key:`dispose`,value:function(){var e;(e=this._data)!=null&&e.off&&this._data.off(`*`,this._listener);var t,n=`This data view has already been disposed of.`,i={get:function(){throw Error(n)},set:function(){throw Error(n)},configurable:!1},a=iE(nm(r.prototype));try{for(a.s();!(t=a.n()).done;){var o=t.value;jv(this,o,i)}}catch(e){a.e(e)}finally{a.f()}}},{key:`_onEvent`,value:function(e,t,n){if(t&&t.items&&this._data){var r=t.items,i=[],a=[],o=[],s=[],c=[],l=[];switch(e){case`add`:for(var u=0,d=r.length;u<d;u++){var f=r[u];this.get(f)&&(this._ids.add(f),i.push(f))}break;case`update`:for(var p=0,m=r.length;p<m;p++){var h=r[p];this.get(h)?this._ids.has(h)?(a.push(h),c.push(t.data[p]),s.push(t.oldData[p])):(this._ids.add(h),i.push(h)):this._ids.has(h)&&(this._ids.delete(h),o.push(h),l.push(t.oldData[p]))}break;case`remove`:for(var g=0,_=r.length;g<_;g++){var v=r[g];this._ids.has(v)&&(this._ids.delete(v),o.push(v),l.push(t.oldData[g]))}}this.length+=i.length-o.length,i.length&&this._trigger(`add`,{items:i},n),a.length&&this._trigger(`update`,{items:a,oldData:s,data:c},n),o.length&&this._trigger(`remove`,{items:o,oldData:l},n)}}}]),r}(KT);function cE(e,t){return typeof t==`object`&&!!t&&e===t.idProp&&typeof t.add==`function`&&typeof t.clear==`function`&&typeof t.distinct==`function`&&typeof _m(t)==`function`&&typeof t.get==`function`&&typeof t.getDataSet==`function`&&typeof t.getIds==`function`&&typeof t.length==`number`&&typeof Kd(t)==`function`&&typeof t.max==`function`&&typeof t.min==`function`&&typeof t.off==`function`&&typeof t.on==`function`&&typeof t.remove==`function`&&typeof t.setOptions==`function`&&typeof t.stream==`function`&&typeof t.update==`function`&&typeof t.updateOnly==`function`}e.DELETE=L_,e.DataSet=rE,e.DataStream=ZT,e.DataView=sE,e.Queue=GT,e.createNewDataPipeFrom=function(e){return new uf(e)},e.isDataSetLike=cE,e.isDataViewLike=function(e,t){return typeof t==`object`&&!!t&&e===t.idProp&&typeof _m(t)==`function`&&typeof t.get==`function`&&typeof t.getDataSet==`function`&&typeof t.getIds==`function`&&typeof t.length==`number`&&typeof Kd(t)==`function`&&typeof t.off==`function`&&typeof t.on==`function`&&typeof t.stream==`function`&&cE(e,t.getDataSet())}}))}));function ne(e,t){return e.length<10?[...e,t]:[e[0],...e.slice(e.length-8),t]}function re(e){return e.length<=1?e:e.slice(0,-1)}function w(e){return[e]}function T(e){let t=e[e.length-1];return t.kind===`filter`?`f:${[...t.selectedLabels].sort().join(`,`)}:${t.includeTrashed?1:0}:${t.includeAgentActions?1:0}`:`n:${t.rootElementId}`}function E(e){let t=e[0];if(t.kind!==`filter`)throw Error(`view-stack invariant: root must be filter view`);return t}var D=`admin-sessions`;function O(){if(typeof window>`u`)return null;if(typeof BroadcastChannel>`u`)return console.warn(`[admin-sessions/broadcast] unsupported — manual refresh only`),null;try{return new BroadcastChannel(D)}catch(e){return console.warn(`[admin-sessions/broadcast] ctor failed: ${e instanceof Error?e.message:String(e)} — manual refresh only`),null}}function ie(e){let t=O();if(t)try{let n={type:`mutated`,reason:e};t.postMessage(n)}catch(e){console.warn(`[admin-sessions/broadcast] postMessage failed: ${e instanceof Error?e.message:String(e)}`)}finally{try{t.close()}catch{}}}function k(e){return e.trashed===!0?`skip-trashed`:`pivot`}function A(e,t,n,r){let i=[],a=[];for(let o of e){let e=t.get(o.nodeId);if(!e)continue;a.push(o.nodeId);let{colour:s}=n(e.labels),c=e.trashed?`${s}40`:s;i.push({id:o.nodeId,borderWidth:3,color:{background:c,border:r}})}return{updates:i,inWindow:a}}function ae(e,t){let n=t.length>0?new Set(t):null,r=new Map,i=new Set,a=[];for(let t of e)n&&!t.labels.some(e=>n.has(e))||r.set(t.nodeId,{id:t.nodeId,labels:t.labels,properties:t.properties});for(let t of e)if(r.has(t.nodeId))for(let e of t.related){if(n&&!e.labels.some(e=>n.has(e)))continue;r.has(e.nodeId)||r.set(e.nodeId,{id:e.nodeId,labels:e.labels,properties:e.properties});let[o,s]=e.direction===`outgoing`?[t.nodeId,e.nodeId]:[e.nodeId,t.nodeId],c=`${o}|${s}|${e.relationship}`;i.has(c)||(i.add(c),a.push({id:c,from:o,to:s,type:e.relationship}))}return{nodes:[...r.values()],edges:a}}var oe=2e3;function se(e){let t=typeof e==`number`?e:Number(e);return!Number.isFinite(t)||t<=0?100:Math.min(Math.max(Math.floor(t),1),oe)}var ce=new Set([`Conversation`,`AdminConversation`,`PublicConversation`]),le=/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2})/,ue=/^\d{4}-\d{2}-\d{2}T(\d{2}:\d{2}:\d{2})/,de=/^(\d{4}-\d{2}-\d{2})T/,fe=24;function pe(e){let t=e.match(le);return t?`${t[1]} ${t[2]}`:null}function me(e){let t=e.match(ue);return t?t[1]:null}function he(e){let t=e.match(de);return t?t[1]:null}function ge(e){let t=e.properties,n=e.labels[0];if(n===`ToolCall`){let e=t.toolName;if(typeof e==`string`&&e.length>0)return e.length>24?e.slice(0,24)+`…`:e}else if(n===`WorkflowRun`){let e=t.startedAt;if(typeof e==`string`&&e.length>0){let t=pe(e);if(t)return t}}else if(n===`WorkflowStep`){let e=t.label;if(typeof e==`string`&&e.length>0)return e.length>24?e.slice(0,24)+`…`:e}else if(n===`Person`){let e=[typeof t.givenName==`string`?t.givenName:``,typeof t.familyName==`string`?t.familyName:``].filter(e=>e.length>0).join(` `);if(e.length>0)return e.length>24?e.slice(0,24)+`…`:e}else if(n===`Agent`){let e=typeof t.displayName==`string`?t.displayName:``,n=typeof t.slug==`string`?t.slug:``,r=e.length>0?e:n;if(r.length>0)return r.length>24?r.slice(0,24)+`…`:r}else if(n===`Message`){let e=typeof t.role==`string`?t.role:``,n=e===`user`?`user`:e===`assistant`?`asst`:e===`system`?`sys`:e===`tool`?`tool`:null,r=typeof t.createdAt==`string`?t.createdAt:``;if(n&&r){let e=me(r);if(e)return`${n} ${e}`}}else if(n===`ConversationArchive`){let e=typeof t.title==`string`?t.title:``;return e.length>0?e.length>24?e.slice(0,24)+`…`:e:n}for(let e of[`name`,`title`,`summary`,`givenName`,`subject`,`text`]){let n=t[e];if(typeof n==`string`&&n.length>0)return n.length>24?n.slice(0,24)+`…`:n}if(n===`Conversation`){let e=typeof t.conversationId==`string`?t.conversationId:null;if(e)return`Conv ${e.slice(0,8)}`}return n??`…`}function _e(e){let t=e.properties,n=e.labels[0];if(n===`ToolCall`){let e=t.toolName;if(typeof e==`string`&&e.length>0)return e}else if(n===`WorkflowRun`){let e=t.startedAt;if(typeof e==`string`&&e.length>0){let t=pe(e);if(t)return t}}else if(n===`WorkflowStep`){let e=t.label;if(typeof e==`string`&&e.length>0)return e}else if(n===`Person`){let e=[typeof t.givenName==`string`?t.givenName:``,typeof t.familyName==`string`?t.familyName:``].filter(e=>e.length>0).join(` `);if(e.length>0)return e}else if(n===`Agent`){let e=typeof t.displayName==`string`?t.displayName:``,n=typeof t.slug==`string`?t.slug:``,r=e.length>0?e:n;if(r.length>0)return r}else if(n===`ConversationArchive`){let e=typeof t.title==`string`?t.title:``;return e.length>0?e:n}for(let e of[`name`,`title`,`summary`,`givenName`,`subject`,`text`]){let n=t[e];if(typeof n==`string`&&n.length>0)return n}if(n===`Conversation`){let e=typeof t.conversationId==`string`?t.conversationId:null;if(e)return`Conv ${e.slice(0,8)}`}return n??`…`}function ve(e){if(e.length===0)return``;let t=e.split(/\s+/).filter(e=>e.length>0);if(t.length===0)return``;if(t.length===1){let e=t[0];return e.length<=fe?e:e.slice(0,fe-1)+`…`}let n=``,r=0;for(;r<t.length;){let e=n.length===0?t[r]:`${n} ${t[r]}`;if(e.length<=fe)n=e,r++;else break}if(n.length===0)return n=t[0].slice(0,fe-1)+`…`,n;if(r>=t.length)return n;let i=``;for(;r<t.length;){let e=i.length===0?t[r]:`${i} ${t[r]}`;if(e.length<=fe)i=e,r++;else break}if(r<t.length){let e=t.slice(r).join(` `);i=(i.length===0?e:`${i} ${e}`).slice(0,fe-1)+`…`}return`${n}\n${i}`}function ye(e,t){let n=e.labels[0];if(!n||!ce.has(n)||t<.7)return ge(e);let r=ve(_e(e));if(t<1.3)return r;let i=e.properties,a=typeof i.createdAt==`string`?i.createdAt:``,o=typeof i.messageCount==`number`?i.messageCount:null;if(a.length===0||o===null)return r;let s=he(a);return s===null?r:`${r}\n${s} · ${o} msgs`}function be(e){let t=e.properties,n=typeof t.createdAt==`string`?t.createdAt:``,r=typeof t.updatedAt==`string`?t.updatedAt:``,i=e.labels.join(` · `);return[_e(e),i,`id: ${e.id}`,n?`createdAt: ${n}`:``,r?`updatedAt: ${r}`:``].filter(e=>e.length>0).join(`
50
- `)}var xe={solver:`barnesHut`,barnesHut:{gravitationalConstant:-2e3,centralGravity:.4,springLength:170,springConstant:.04},stabilization:{iterations:200}},Se=220,Ce=3;function j(e){let t=new Set(e.nodes.map(e=>e.id)),n=new Set;for(let r of e.edges)t.has(r.from)&&t.has(r.to)&&(n.add(r.from),n.add(r.to));let r=0;for(let t of e.nodes)n.has(t.id)||r++;if(!(e.nodes.length<=5||e.nodes.length>0&&r===e.nodes.length))return{physics:xe,nodePositions:new Map};let i=new Map,a=(Ce-1)*Se/2,o=(Math.ceil(e.nodes.length/Ce)-1)*Se/2;for(let t=0;t<e.nodes.length;t++){let n=t%Ce,r=Math.floor(t/Ce);i.set(e.nodes[t].id,{x:n*Se-a,y:r*Se-o})}return{physics:!1,nodePositions:i}}var M=e(r(),1),we=C(),Te=te(),N=n();function Ee(e){return e<.7?`compact`:e<1.3?`wrapped`:`detailed`}var P=150,F=`#FBBF24`;function De(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}var Oe=`maxy-graph-search-limit-v1`,ke=250,Ae=1200;function je(){let[e,t]=(0,M.useState)(null),[n,r]=(0,M.useState)(!1),[i,a]=(0,M.useState)(null),[o,c]=(0,M.useState)(void 0),[l,u]=(0,M.useState)(null),f=(0,M.useMemo)(()=>{if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search),t=e.get(`nodeId`);return t?{nodeId:t,nodeLabel:e.get(`label`)}:null},[]),p=(0,M.useMemo)(()=>typeof window>`u`?!1:new URLSearchParams(window.location.search).get(`onboardingFilter`)===`1`,[]);if((0,M.useEffect)(()=>{f&&Le(`deep-link`,{nodeId:f.nodeId.length>16?f.nodeId.slice(0,16)+`…`:f.nodeId,label:f.nodeLabel??``})},[f]),(0,M.useEffect)(()=>{let e=!1,n=null;try{n=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!n){t(null),r(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(n)}`).then(async i=>{if(!e){if(i.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`;return}if(i.ok)try{let e=await i.json();typeof e.onboardingComplete==`boolean`&&a(e.onboardingComplete),typeof e.businessName==`string`&&c(e.businessName),e.conversationId!==void 0&&u(e.conversationId??null)}catch{}t(n),r(!0)}}).catch(()=>{e||(t(n),r(!0))}),()=>{e=!0}},[]),!n)return(0,N.jsx)(`div`,{className:`data-page`,children:(0,N.jsxs)(`div`,{className:`data-loading`,children:[(0,N.jsx)(m,{size:18,className:`spin`}),` Loading…`]})});let h=(0,M.useCallback)(()=>{try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`},[]);return e?(0,N.jsx)(d,{cacheKey:e,businessName:o,conversationId:l,onLogout:h,onboardingComplete:i,children:(0,N.jsxs)(`div`,{className:`data-page graph-page`,children:[(0,N.jsx)(`header`,{className:`data-header`,children:(0,N.jsxs)(`h1`,{className:`data-title`,children:[(0,N.jsx)(s,{size:18}),` Graph`]})}),(0,N.jsx)(`main`,{className:`graph-main`,children:(0,N.jsx)(Me,{cacheKey:e,initialFocus:f,initialLabels:p&&i===!1?[`OnboardingState`,`Person`]:null})})]})}):(0,N.jsxs)(`div`,{className:`data-page`,children:[(0,N.jsx)(`header`,{className:`data-header`,children:(0,N.jsxs)(`h1`,{className:`data-title`,children:[(0,N.jsx)(s,{size:18}),` Graph`]})}),(0,N.jsxs)(`div`,{className:`data-empty`,children:[(0,N.jsx)(`p`,{children:`You are not signed in.`}),(0,N.jsxs)(`p`,{children:[`Open the `,(0,N.jsx)(`a`,{href:`/`,className:`data-link`,children:`main admin page`}),` and log in, then return here.`]})]})]})}function Me({cacheKey:e,initialFocus:t=null,initialLabels:n=null}){let{adminFetch:r,cacheKey:a,sessionRefetchNonce:s,banner:d,reloadToLogin:x}=o({initialCacheKey:e,surface:`graph`}),ee=(0,M.useRef)(null),C=(0,M.useRef)(null),te=(0,M.useRef)(null),D=(0,M.useRef)(null),O=(0,M.useRef)(new Map),oe=(0,M.useRef)([]),le=(0,M.useRef)(null),ue=(0,M.useRef)(null),de=(0,M.useRef)(null),fe=(0,M.useRef)(null),pe=(0,M.useRef)(null),[me,he]=(0,M.useState)([{kind:`filter`,selectedLabels:[],includeTrashed:!1,includeAgentActions:!1}]);(0,M.useEffect)(()=>{t?.nodeId&&he(e=>{let n=e[e.length-1];return n.kind===`neighbourhood`&&n.rootElementId===t.nodeId?e:[e[0],{kind:`neighbourhood`,rootElementId:t.nodeId,rootLabel:t.nodeLabel}]})},[t?.nodeId,t?.nodeLabel]);let _e=n&&n.length>0?[...n].sort().join(`,`):null;(0,M.useEffect)(()=>{_e&&(Ot.current=!0,he([{kind:`filter`,selectedLabels:_e.split(`,`),includeTrashed:!1,includeAgentActions:!1}]))},[_e]);let[ve,xe]=(0,M.useState)(!1),[Se,Ce]=(0,M.useState)(null),[je,Me]=(0,M.useState)(null),[Re,ze]=(0,M.useState)(0),[Be,Ve]=(0,M.useState)(null),[He,Ue]=(0,M.useState)(!1),[We,Ge]=(0,M.useState)(!1),[Ke,qe]=(0,M.useState)(null),[Je,Ye]=(0,M.useState)(``),[Xe,Ze]=(0,M.useState)(``),[Qe,$e]=(0,M.useState)(null),[et,tt]=(0,M.useState)(null),[nt,rt]=(0,M.useState)(()=>{if(typeof window>`u`)return 100;let e=window.localStorage.getItem(Oe);return e?se(e):100}),[it,at]=(0,M.useState)(nt),[ot,st]=(0,M.useState)(`hybrid`),[ct,lt]=(0,M.useState)(0),[ut,dt]=(0,M.useState)(!1),[ft,pt]=(0,M.useState)(0),[mt,ht]=(0,M.useState)(0),[gt,_t]=(0,M.useState)([]),[vt,yt]=(0,M.useState)({labels:[],includeTrashed:!1}),[bt,xt]=(0,M.useState)(!1),[St,Ct]=(0,M.useState)([]),[wt,Tt]=(0,M.useState)([]),[Et,Dt]=(0,M.useState)(!1),Ot=(0,M.useRef)(!1),kt=(0,M.useRef)(null),At=(0,M.useMemo)(()=>{let e=new Set;for(let t of O.current.values()){let n=f(t.labels);n&&e.add(n)}return[...e].sort()},[Re]);(0,M.useEffect)(()=>{let e=!1,t=r(`/api/admin/graph-labels-in-graph`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).catch(e=>{let t=e instanceof Error?e.message:String(e);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-labels-in-graph`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}return{labels:[]}}),n=r(`/api/admin/graph-default-view`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).catch(e=>{let t=e instanceof Error?e.message:String(e);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-default-view`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}return{labels:[],includeTrashed:!1}});return Promise.all([t,n]).then(([t,n])=>{if(!e&&(_t(t.labels),yt(n),!Ot.current)){Ot.current=!0;let e=new Set(t.labels.map(e=>e.label)),r=n.labels.filter(t=>e.has(t));(r.length>0||n.includeTrashed)&&he(e=>[{kind:`filter`,selectedLabels:r,includeTrashed:n.includeTrashed,includeAgentActions:!1},...e.slice(1)])}}),()=>{e=!0}},[a,s,r]);let jt=me[0].kind===`filter`?me[0].includeAgentActions:!1;(0,M.useEffect)(()=>{if(!Ot.current)return;let e=!1;return r(`/api/admin/graph-labels-in-graph?includeAgentActions=${jt?`1`:`0`}`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(t=>{e||_t(t.labels)}).catch(e=>{let t=e instanceof Error?e.message:String(e);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-labels-in-graph-refetch`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}}),()=>{e=!0}},[a,s,jt,mt,r]),(0,M.useEffect)(()=>{if(!bt)return;let e=e=>{kt.current&&(kt.current.contains(e.target)||xt(!1))},t=e=>{e.key===`Escape`&&xt(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[bt]);let Mt=(0,M.useCallback)(()=>{if(te.current)try{te.current.clear()}catch{}if(D.current)try{D.current.clear()}catch{}},[]),Nt=(0,M.useCallback)((e,t)=>{qe(null),r(`/api/admin/graph-delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({elementId:e,by:`graph-drag-trash`})}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);Ve(null);try{C.current?.unselectAll()}catch{}he(e=>[E(e)]),pt(e=>e+1),ie(`graph-trash`)}).catch(n=>{let r=n instanceof Error?n.message:String(n);qe(`Failed to delete: ${r}`),Ge(!0),window.setTimeout(()=>Ge(!1),Ae);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-drag-delete`,elementId:e,label:t,msg:r}),keepalive:!0}).catch(()=>{})}catch{}})},[r]),Pt=me[me.length-1],Ft=(0,M.useMemo)(()=>T(me),[me]),It=(0,M.useRef)(Ft);(0,M.useEffect)(()=>{It.current=Ft},[Ft]);let Lt=(0,M.useRef)(me);(0,M.useEffect)(()=>{Lt.current=me},[me]),(0,M.useEffect)(()=>{if(Pt.kind===`filter`&&Pt.selectedLabels.length===0){le.current?.abort(),le.current=null,xe(!1),Ce(null),Me(null),ze(0),O.current=new Map,Mt();return}if(Pt.kind===`filter`&&Xe)return;let e=window.setTimeout(()=>{le.current?.abort();let e=new AbortController;le.current=e,xe(!0),Ce(null),Me(null),r(Pe(Pt,{includeAgentActions:E(me).includeAgentActions,search:null,channel:St,messageSublabel:wt}),{signal:e.signal}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(e.status===413)throw new Fe(t);if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);return t}).then(t=>{e.signal.aborted||(O.current=new Map(t.nodes.map(e=>[e.id,e])),ze(t.nodes.length),Rt(t.nodes,t.edges))}).catch(t=>{if(!e.signal.aborted){if(t instanceof Fe){Me(t.body),ze(0),O.current=new Map,Mt();return}Ce(t instanceof Error?t.message:String(t))}}).finally(()=>{e.signal.aborted||xe(!1)})},ke);return()=>{window.clearTimeout(e)}},[a,Ft,ft,s,Xe,it,St,wt]),(0,M.useEffect)(()=>()=>{le.current?.abort(),C.current?.destroy(),C.current=null,pe.current!==null&&(clearTimeout(pe.current),pe.current=null)},[]);let Rt=(0,M.useCallback)((e,t)=>{if(!ee.current)return;oe.current=t;let n=new Set([`Message`,`UserMessage`,`AssistantMessage`]),r=e=>e.labels.some(e=>n.has(e)),i=new Map,a=e.filter(r);if(a.length>0){let e=new Set(a.map(e=>e.id)),n=new Map,r=new Set;for(let i of t)i.type===`NEXT`&&e.has(i.from)&&e.has(i.to)&&(n.set(i.from,i.to),r.add(i.to));let o=[],s=new Set;for(let e of a){if(r.has(e.id))continue;let t=e.id;for(;t&&!s.has(t);)s.add(t),o.push(t),t=n.get(t)}for(let e of a)s.has(e.id)||(o.push(e.id),s.add(e.id));let c=ee.current?.clientWidth??1200,l=Math.max(c-160,300),u=Math.max(Math.floor(l/150),2);o.forEach((e,t)=>{let n=t%u,r=Math.floor(t/u);i.set(e,{x:n*150,y:r*90})})}let o=e.map(e=>{let t=e.labels[0]??`Unknown`,n=c(e.labels);n.displayLabel;let r=n.colour;n.driftCandidates;let a=i.get(e.id),o=a?{x:a.x,y:a.y,physics:!1}:{};return e.trashed?{id:e.id,label:ge(e),title:be(e),color:{background:`${r}40`,border:r},borderWidth:2,shapeProperties:{borderDashes:[6,4]},group:t,...o}:{id:e.id,label:ge(e),title:be(e),color:r,group:t,...o}}),s=new Set(o.map(e=>e.id)),l=t.filter(e=>e.type!==`PART_OF`||s.has(e.from)&&s.has(e.to)).map(e=>({id:e.id,from:e.from,to:e.to,label:e.type})),u=j({nodes:e,edges:t});te.current=new Te.DataSet(u.nodePositions.size>0?o.map(e=>{if(e.x!==void 0||e.y!==void 0)return e;let t=u.nodePositions.get(e.id);return t?{...e,x:t.x,y:t.y,physics:!1}:e}):o),D.current=new Te.DataSet(l);let d={autoResize:!0,layout:{improvedLayout:!1,randomSeed:De(It.current)},physics:u.physics===!1?!1:{solver:u.physics.solver,barnesHut:u.physics.barnesHut,stabilization:u.physics.stabilization},nodes:{shape:`dot`,size:18,font:{color:`#1F2937`,size:12,face:`DM Sans, sans-serif`},scaling:{label:{enabled:!0,min:12,max:30,drawThreshold:0}},borderWidth:0,chosen:{node:e=>{e.size=20,e.borderWidth=3},label:e=>{e.size=14}}},edges:{arrows:{to:{enabled:!0,scaleFactor:.4}},color:{color:`#CBD5E1`,highlight:`#475569`},font:{color:`#64748B`,size:9,face:`DM Sans, sans-serif`,align:`middle`,strokeWidth:0},smooth:{enabled:!0,type:`continuous`,roundness:.4},width:1,chosen:{edge:!0,label:!1}},interaction:{hover:!0,tooltipDelay:150}};try{C.current?.destroy(),pe.current!==null&&(clearTimeout(pe.current),pe.current=null),fe.current=null;let e=new we.Network(ee.current,{nodes:te.current,edges:D.current},d);C.current=e,e.on(`zoom`,()=>{pe.current!==null&&clearTimeout(pe.current),pe.current=setTimeout(()=>{pe.current=null;let e=C.current,t=te.current;if(!e||!t)return;let n;try{n=e.getScale()}catch{return}let r=Ee(n);if(r===fe.current)return;fe.current=r;let i=[];for(let e of O.current.values()){let t=e.labels[0];if(!t||!ce.has(t))continue;let{colour:r}=c(e.labels),a=e.trashed?{background:`${r}40`,border:r}:r;i.push({id:e.id,label:ye(e,n),color:a})}i.length>0&&t.update(i),console.error(`[graph-page] zoom-tier scale=${n.toFixed(3)} tier=${r} conversations=${i.length}`)},P)}),e.on(`click`,e=>{let t=e.nodes[0];if(!t)return;let n=O.current.get(t);if(!n)return;if(k(n)===`skip-trashed`){Ve(n);return}let r=Lt.current[Lt.current.length-1];if(r.kind===`neighbourhood`&&r.rootElementId===t){Ve(e=>e?.id===t?null:n);return}Ve(null);let i={kind:`neighbourhood`,rootElementId:t,rootLabel:n.labels[0]??null};he(e=>{let n=ne(e,i),r=n.length-1;return n.length>e.length&&Le(`nav-push`,{depth:r,kind:i.kind,rootElementId:t}),n.length===10&&e.length===10&&Le(`view-stack-cap-hit`,{depth:10,rootElementId:t}),n})}),e.on(`deselectNode`,()=>{Ve(null)});let t=e=>{let t=ee.current,n=ue.current;if(!t||!n)return!1;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=r.left+e.x,o=r.top+e.y;return a>=i.left&&a<=i.right&&o>=i.top&&o<=i.bottom},n=ee.current?.parentElement??null;e.on(`dragStart`,e=>{let t=e.nodes[0];if(!t){de.current=null;return}de.current=t,n?.classList.add(`graph-dragging`)}),e.on(`dragging`,e=>{if(!de.current)return;let n=t(e.pointer.DOM);Ue(e=>e===n?e:n)}),e.on(`dragEnd`,e=>{let r=de.current;de.current=null,Ue(!1),n?.classList.remove(`graph-dragging`),r&&t(e.pointer.DOM)&&Nt(r,O.current.get(r)?.labels[0]??`Unknown`)})}catch(e){let t=e instanceof Error?e.message:String(e);Ce(`Visualisation failed to load: ${t}`);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-render`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}}},[]);(0,M.useEffect)(()=>{let e=Je.trim();if(!e){Ze(``),$e(null),tt(null),st(`hybrid`),lt(0),dt(!1),C.current?.unselectAll();return}dt(!1);let t=setTimeout(()=>Ze(e),300);return()=>clearTimeout(t)},[Je]),(0,M.useEffect)(()=>{let e=setTimeout(()=>{let e=se(nt);at(e);try{window.localStorage.setItem(Oe,String(e))}catch{}},200);return()=>clearTimeout(e)},[nt]);let zt=(0,M.useCallback)(e=>{let t=C.current,n=te.current;if(!t||!n)return;let{updates:r,inWindow:i}=A(e,O.current,c,F);r.length>0&&(n.update(r),t.fit({nodes:i,animation:{duration:400,easingFunction:`easeInOutQuad`}}))},[]),Bt=E(me);(0,M.useEffect)(()=>{if(!Xe||Pt.kind!==`filter`)return;let e=!1;tt(null);let t=encodeURIComponent(Bt.selectedLabels.join(`,`));return r(`/api/admin/graph-search?q=${encodeURIComponent(Xe)}&labels=${t}&limit=${it}${ut?`&threshold=0`:``}`).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);return t}).then(t=>{if(e)return;$e(t.results);let n=t.mode===`bm25`?`bm25`:`hybrid`;if(st(n),lt(typeof t.suppressed==`number`?t.suppressed:0),n===`bm25`)try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-page`,msg:`[graph-page] search-result-degraded mode=bm25 query="${Xe}"`}),keepalive:!0}).catch(()=>{})}catch{}let{nodes:r,edges:i}=ae(t.results,Bt.selectedLabels);O.current=new Map(r.map(e=>[e.id,e])),ze(r.length),Me(null),Rt(r,i),zt(t.results)}).catch(t=>{e||tt(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[Xe,it,a,s,r,zt,Pt.kind,Bt.selectedLabels,Rt,ut]);let Vt=(0,M.useCallback)(e=>{he(t=>{let n=E(t),r=new Set(n.selectedLabels);return r.has(e)?r.delete(e):r.add(e),w({kind:`filter`,selectedLabels:[...r].sort(),includeTrashed:n.includeTrashed,includeAgentActions:n.includeAgentActions})})},[]),Ht=(0,M.useCallback)(()=>{he(e=>{let t=E(e);return w({...t,includeTrashed:!t.includeTrashed})})},[]),Ut=(0,M.useCallback)(()=>{he(e=>{let t=E(e);return w({...t,includeAgentActions:!t.includeAgentActions})})},[]),Wt=(0,M.useCallback)(()=>{Ye(``),Ze(``),$e(null),tt(null),st(`hybrid`),lt(0),dt(!1);try{C.current?.unselectAll()}catch{}},[]),Gt=(0,M.useCallback)(()=>{he(()=>w({kind:`filter`,selectedLabels:[],includeTrashed:!1,includeAgentActions:!1}))},[]),Kt=(0,M.useCallback)(()=>{Ve(null);try{C.current?.unselectAll()}catch{}he(e=>{let t=re(e);return t!==e&&Le(`nav-pop`,{depth:t.length-1}),t})},[]),qt=(0,M.useCallback)(()=>{let e=E(me),t={labels:[...e.selectedLabels].sort(),includeTrashed:e.includeTrashed};Dt(!0),r(`/api/admin/graph-default-view`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}).then(async e=>{if(!e.ok){let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));throw Error(t.error??`HTTP ${e.status}`)}yt(t)}).catch(e=>{let t=e instanceof Error?e.message:String(e);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-default-view-save`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}}).finally(()=>Dt(!1))},[r,me]),Jt=(0,M.useCallback)(()=>{Ve(null);try{C.current?.unselectAll()}catch{}pt(e=>e+1),ie(`graph-restore`)},[]),Yt=(0,M.useCallback)(()=>{Ve(null);try{C.current?.unselectAll()}catch{}he(e=>[E(e)]),pt(e=>e+1),ie(`graph-trash`)},[]),Xt=(0,M.useCallback)(()=>{pt(e=>e+1),ht(e=>e+1)},[]),Zt=Pt.kind===`neighbourhood`,Qt=E(me),$t=Qt.selectedLabels,en=Qt.includeTrashed,tn=Qt.includeAgentActions,nn=St.join(`,`),rn=wt.join(`,`),an=$t.includes(`AdminConversation`)||$t.includes(`PublicConversation`);(0,M.useEffect)(()=>{an&&console.info(`[graph-filter] subfacet-render channel=[${nn}] sublabel=[${rn}]`)},[nn,rn,an]);let on=(0,M.useMemo)(()=>{if(en!==vt.includeTrashed||$t.length!==vt.labels.length)return!0;for(let e=0;e<$t.length;e++)if($t[e]!==vt.labels[e])return!0;return!1},[en,$t,vt]);return(0,N.jsxs)(N.Fragment,{children:[d&&(0,N.jsx)(`button`,{type:`button`,className:`graph-session-banner`,onClick:x,"data-reason":d.reason,children:d.message}),(0,N.jsxs)(`div`,{className:`graph-toolbar`,children:[(0,N.jsxs)(`div`,{className:`data-search-input graph-search-input`,children:[(0,N.jsx)(l,{size:14}),(0,N.jsx)(`input`,{type:`text`,placeholder:`Search nodes…`,value:Je,onChange:e=>Ye(e.target.value),autoComplete:`off`,spellCheck:!1}),Xe&&!Qe&&!et&&(0,N.jsx)(m,{size:14,className:`spin`}),Je.length>0&&(0,N.jsx)(`button`,{type:`button`,className:`graph-search-clear`,onClick:Wt,"aria-label":`Clear search`,title:`Clear search`,children:(0,N.jsx)(p,{size:14})})]}),Xe&&!Zt&&(0,N.jsxs)(`div`,{className:`graph-search-limit`,title:`Show top ${nt} matches (1-2000)`,children:[(0,N.jsx)(`label`,{htmlFor:`graph-search-limit-input`,className:`graph-search-limit-label`,children:`Top`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-search-limit-step`,onClick:()=>rt(se(nt-1)),disabled:nt<=1,"aria-label":`Decrement search limit`,title:`Decrement`,children:(0,N.jsx)(v,{size:12})}),(0,N.jsx)(`input`,{id:`graph-search-limit-input`,type:`number`,min:1,max:2e3,step:1,value:nt,onChange:e=>rt(se(e.target.value)),className:`graph-search-limit-number`,"aria-label":`Maximum search results to render`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-search-limit-step`,onClick:()=>rt(se(nt+1)),disabled:nt>=2e3,"aria-label":`Increment search limit`,title:`Increment`,children:(0,N.jsx)(y,{size:12})}),(0,N.jsx)(`input`,{id:`graph-search-limit-slider`,type:`range`,min:1,max:2e3,step:1,value:nt,onChange:e=>rt(se(e.target.value)),"aria-label":`Maximum search results to render (drag for ballpark)`})]}),(0,N.jsx)(`button`,{type:`button`,className:`graph-refresh-button`,onClick:Xt,disabled:ve,"aria-label":`Refresh graph`,title:`Refresh graph`,children:(0,N.jsx)(b,{size:14,className:ve?`spin`:void 0})}),!Zt&&(0,N.jsxs)(`div`,{className:`graph-filter-wrap`,ref:kt,children:[(0,N.jsxs)(`button`,{type:`button`,className:`graph-filter-toggle${bt?` is-open`:``}${$t.length>0||en||tn?` has-selection`:``}`,onClick:()=>xt(e=>!e),"aria-haspopup":`true`,"aria-expanded":bt,"aria-label":`Filter node types`,children:[(0,N.jsx)(S,{size:14}),(0,N.jsx)(`span`,{children:`Filter`}),$t.length>0&&(0,N.jsx)(`span`,{className:`graph-filter-count`,children:$t.length})]}),bt&&(0,N.jsxs)(`div`,{className:`graph-filter-popover`,role:`dialog`,"aria-label":`Node type filter`,children:[(0,N.jsxs)(`div`,{className:`graph-filter-popover-header`,children:[(0,N.jsxs)(`button`,{type:`button`,className:`graph-toggle-trashed${en?` active`:``}`,onClick:Ht,"aria-pressed":en,title:`Show trashed nodes — restored with Restore button on each node`,children:[(0,N.jsx)(_,{size:14}),` Show trashed`]}),($t.length>0||en||tn)&&(0,N.jsx)(`button`,{type:`button`,className:`graph-filter-clear`,onClick:Gt,"aria-label":`Clear filter selection`,title:`Clear filter selection`,children:(0,N.jsx)(p,{size:14})})]}),(0,N.jsx)(`div`,{className:`graph-toggle-agent-actions`,title:`Hide ToolCall, StepResult, WorkflowStep, WorkflowRun — agent-execution telemetry. Flip on for audit/debug.`,children:(0,N.jsx)(h,{checked:tn,onChange:Ut,label:`Include agent actions`})}),gt.length===0&&(0,N.jsx)(`p`,{className:`graph-filter-popover-empty`,children:`No node types in your graph yet.`}),(0,N.jsx)(`div`,{className:`graph-filter-rows`,role:`group`,"aria-label":`Node type filter`,children:gt.map(({label:e,nodeCount:t})=>{let n=$t.includes(e),r=u(e);return(0,N.jsxs)(`button`,{type:`button`,className:`graph-filter-row${n?` active`:``}`,onClick:()=>Vt(e),"aria-pressed":n,children:[(0,N.jsx)(`span`,{className:`graph-filter-row-swatch`,style:{backgroundColor:r}}),(0,N.jsx)(`span`,{className:`graph-filter-row-label`,children:e}),(0,N.jsx)(`span`,{className:`graph-filter-row-count`,children:t})]},e)})}),($t.includes(`AdminConversation`)||$t.includes(`PublicConversation`))&&(0,N.jsxs)(`div`,{className:`graph-filter-subfacets`,children:[(0,N.jsxs)(`div`,{className:`graph-filter-subfacet-group`,role:`group`,"aria-label":`Conversation channel`,children:[(0,N.jsx)(`span`,{className:`graph-filter-subfacet-label`,children:`Channel`}),[`webchat`,`whatsapp`].map(e=>{let t=St.includes(e);return(0,N.jsx)(`button`,{type:`button`,className:`graph-filter-subfacet-chip${t?` active`:``}`,onClick:()=>{Ct(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},"aria-pressed":t,children:e===`webchat`?`Web`:`WhatsApp`},e)})]}),(0,N.jsxs)(`div`,{className:`graph-filter-subfacet-group`,role:`group`,"aria-label":`Message sublabel`,children:[(0,N.jsx)(`span`,{className:`graph-filter-subfacet-label`,children:`Message`}),[`UserMessage`,`AssistantMessage`,`WhatsAppMessage`].map(e=>{let t=wt.includes(e);return(0,N.jsx)(`button`,{type:`button`,className:`graph-filter-subfacet-chip${t?` active`:``}`,onClick:()=>{Tt(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},"aria-pressed":t,children:e===`UserMessage`?`User`:e===`AssistantMessage`?`Assistant`:`WhatsApp`},e)})]})]}),(0,N.jsx)(`div`,{className:`graph-filter-popover-footer`,children:(0,N.jsx)(`button`,{type:`button`,className:`graph-filter-set-default`,onClick:qt,disabled:!on||Et,children:Et?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(m,{size:12,className:`spin`}),` Saving…`]}):`Set default view`})})]})]}),(0,N.jsxs)(`div`,{className:`graph-meta`,children:[me.length>1&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`button`,{type:`button`,className:`graph-back-to-filter graph-back-desktop`,onClick:Kt,children:`← Back`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-back-to-filter graph-back-mobile`,onClick:Kt,"aria-label":`Back`,children:(0,N.jsx)(g,{size:16})})]}),Re>0&&(0,N.jsxs)(`span`,{className:`graph-meta-count`,children:[Re,` node`,Re===1?``:`s`]})]})]}),me.length>1&&(0,N.jsx)(Ie,{viewStack:me}),Xe&&ot===`bm25`&&!et&&(0,N.jsx)(`div`,{className:`graph-error-banner graph-search-degraded`,role:`status`,children:`Vector ranking unavailable — showing keyword-only results.`}),et&&(0,N.jsxs)(`div`,{className:`data-error graph-error-banner`,children:[`Search unavailable: `,et]}),Xe&&ct>0&&!ut&&!et&&(0,N.jsxs)(`button`,{type:`button`,className:`graph-search-suppressed`,onClick:()=>dt(!0),children:[ct,` low-confidence match`,ct===1?``:`es`,` hidden — show all`]}),Xe&&ut&&!et&&(0,N.jsx)(`button`,{type:`button`,className:`graph-search-suppressed`,onClick:()=>dt(!1),children:`Showing all matches — hide low-confidence`}),Qe&&Qe.length===0&&!et&&(0,N.jsx)(`div`,{className:`graph-search-status`,children:`No matches in your graph.`}),(0,N.jsxs)(`div`,{className:`graph-canvas-wrap`,children:[ve&&(0,N.jsxs)(`div`,{className:`graph-canvas-overlay`,children:[(0,N.jsx)(m,{size:20,className:`spin`}),` Loading your graph…`]}),Se&&!ve&&(0,N.jsxs)(`div`,{className:`graph-canvas-overlay graph-canvas-error`,children:[(0,N.jsx)(`p`,{children:Se}),(0,N.jsx)(`button`,{type:`button`,className:`data-btn`,onClick:()=>{Ce(null),pt(e=>e+1)},children:`Retry`})]}),je&&!ve&&(0,N.jsxs)(`div`,{className:`graph-canvas-overlay graph-canvas-error`,children:[(0,N.jsxs)(`p`,{children:[`Refine your filter — `,(0,N.jsx)(`strong`,{children:je.matched}),` matches exceed the 2000 cap.`]}),(0,N.jsx)(`p`,{className:`graph-canvas-hint`,children:`Pick a more specific label combination, or narrow your brand's data.`})]}),!ve&&!Se&&!je&&Re===0&&!Zt&&$t.length===0&&(0,N.jsxs)(`div`,{className:`graph-canvas-overlay`,children:[(0,N.jsx)(S,{size:20}),(0,N.jsx)(`p`,{children:`Open Filter to pick a node type and see what's in your graph.`})]}),!ve&&!Se&&!je&&Re===0&&!Zt&&$t.length>0&&(0,N.jsx)(`div`,{className:`graph-canvas-overlay`,children:(0,N.jsxs)(`p`,{children:[`No `,$t.join(`, `),` nodes in your graph yet.`]})}),(0,N.jsx)(`div`,{ref:ee,className:`graph-canvas`}),Re>0&&(0,N.jsx)(`div`,{ref:ue,className:`graph-trash-drop-zone${He?` is-hover`:``}${We?` is-error`:``}`,"aria-hidden":`true`,children:(0,N.jsx)(i,{size:18})}),Ke&&(0,N.jsxs)(`div`,{className:`graph-drag-error-banner`,role:`alert`,children:[(0,N.jsx)(`span`,{children:Ke}),(0,N.jsx)(`button`,{type:`button`,className:`graph-drag-error-dismiss`,onClick:()=>qe(null),"aria-label":`Dismiss`,children:(0,N.jsx)(p,{size:14})})]})]}),Be&&(0,N.jsx)(Ne,{node:Be,edges:oe.current,nodesById:O.current,adminFetch:r,onClose:()=>{Ve(null);try{C.current?.unselectAll()}catch{}},onRestored:Jt,onTrashed:Yt}),Re>0&&At.length>0&&(0,N.jsx)(`div`,{className:`graph-legend`,children:At.map(e=>(0,N.jsxs)(`div`,{className:`graph-legend-item`,children:[(0,N.jsx)(`span`,{className:`graph-legend-swatch`,style:{backgroundColor:u(e)}}),(0,N.jsx)(`span`,{children:e})]},e))})]})}function Ne({node:e,edges:t,nodesById:n,adminFetch:r,onClose:a,onRestored:o,onTrashed:s}){let c=Object.entries(e.properties).filter(([,e])=>e!=null),l=t.filter(t=>t.from===e.id||t.to===e.id),[u,d]=(0,M.useState)(!1),[f,h]=(0,M.useState)(null),[g,_]=(0,M.useState)(!1),[v,y]=(0,M.useState)(null);(0,M.useEffect)(()=>{d(!1),h(null),_(!1),y(null)},[e.id]);let b=(0,M.useCallback)(()=>{d(!0),h(null),r(`/api/admin/graph-restore`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({elementId:e.id})}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);o()}).catch(e=>{h(e instanceof Error?e.message:String(e)),d(!1)})},[e.id,o,r]),S=(0,M.useCallback)(()=>{_(!0),y(null),r(`/api/admin/graph-delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({elementId:e.id,by:`graph-side-panel-trash`})}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);s()}).catch(e=>{y(e instanceof Error?e.message:String(e)),_(!1)})},[e.id,s,r]);return(0,N.jsxs)(`aside`,{className:`graph-side-panel${e.trashed?` graph-side-panel-trashed`:``}`,children:[(0,N.jsxs)(`header`,{className:`graph-side-header`,children:[(0,N.jsx)(`div`,{children:(()=>{if(e.labels.some(e=>ce.has(e))){let t=_e(e),n=e.properties.createdAt,r=typeof n==`string`?n:``,i=r?pe(r):null,a=e.labels.join(` · `)+(e.trashed?` · Trashed`:``)+` · ${e.id}`;return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`h2`,{className:`graph-side-name`,title:t,children:t}),i&&(0,N.jsx)(`div`,{className:`graph-side-created`,children:i}),(0,N.jsx)(`div`,{className:`graph-side-meta`,children:a})]})}return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`div`,{className:`graph-side-labels`,children:[e.labels.join(` · `),e.trashed?` · Trashed`:``]}),(0,N.jsx)(`div`,{className:`graph-side-id`,children:e.id})]})})()}),(0,N.jsx)(`button`,{type:`button`,className:`graph-side-close`,onClick:a,"aria-label":`Close`,children:(0,N.jsx)(p,{size:14})})]}),e.trashed&&(0,N.jsxs)(`dl`,{className:`graph-side-props graph-side-trash-meta`,children:[(0,N.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,N.jsx)(`dt`,{children:`trashedAt`}),(0,N.jsx)(`dd`,{children:ze(e.properties.trashedAt)})]}),(0,N.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,N.jsx)(`dt`,{children:`trashedBy`}),(0,N.jsx)(`dd`,{children:ze(e.properties.trashedBy)})]})]}),(0,N.jsxs)(`dl`,{className:`graph-side-props`,children:[c.length===0&&(0,N.jsx)(`div`,{className:`graph-side-empty`,children:`No properties.`}),c.map(([e,t])=>(0,N.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,N.jsx)(`dt`,{children:e}),(0,N.jsx)(`dd`,{children:ze(t)})]},e))]}),l.length>0&&(0,N.jsxs)(`section`,{className:`graph-side-edges`,children:[(0,N.jsxs)(`h3`,{className:`graph-side-edges-heading`,children:[`Connections (`,l.length,`)`]}),l.map(t=>{let r=t.from===e.id,i=r?t.to:t.from,a=n.get(i),o=a?ge(a):i,s=r?`→`:`←`,c=Object.entries(t.properties??{}).filter(([,e])=>e!=null&&e!==``);return(0,N.jsxs)(`div`,{className:`graph-side-edge`,children:[(0,N.jsxs)(`div`,{className:`graph-side-edge-header`,children:[(0,N.jsx)(`span`,{className:`graph-side-edge-type`,children:t.type}),(0,N.jsx)(`span`,{className:`graph-side-edge-arrow`,children:s}),(0,N.jsx)(`span`,{className:`graph-side-edge-other`,title:o,children:o})]}),c.length>0&&(0,N.jsx)(`dl`,{className:`graph-side-edge-props`,children:c.map(([e,t])=>(0,N.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,N.jsx)(`dt`,{children:e}),(0,N.jsx)(`dd`,{children:ze(t)})]},e))})]},t.id)})]}),e.trashed&&(0,N.jsxs)(`footer`,{className:`graph-side-footer`,children:[!u&&!f&&(0,N.jsxs)(`button`,{type:`button`,className:`graph-side-restore`,onClick:b,children:[(0,N.jsx)(x,{size:14}),` Restore`]}),u&&(0,N.jsx)(`div`,{className:`graph-delete-confirm`,children:(0,N.jsxs)(`p`,{children:[(0,N.jsx)(m,{size:14,className:`spin`}),` Restoring…`]})}),f&&(0,N.jsxs)(`div`,{className:`graph-delete-confirm graph-delete-confirm-error`,children:[(0,N.jsxs)(`p`,{children:[`Restore failed: `,f]}),(0,N.jsxs)(`div`,{className:`graph-delete-confirm-buttons`,children:[(0,N.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-cancel`,onClick:()=>{h(null)},children:`Close`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-do`,onClick:b,children:`Retry`})]})]})]}),!e.trashed&&(0,N.jsxs)(`footer`,{className:`graph-side-footer`,children:[!g&&!v&&(0,N.jsxs)(`button`,{type:`button`,className:`graph-side-trash`,onClick:S,children:[(0,N.jsx)(i,{size:14}),` Trash`]}),g&&(0,N.jsx)(`div`,{className:`graph-delete-confirm`,children:(0,N.jsxs)(`p`,{children:[(0,N.jsx)(m,{size:14,className:`spin`}),` Trashing…`]})}),v&&(0,N.jsxs)(`div`,{className:`graph-delete-confirm graph-delete-confirm-error`,children:[(0,N.jsxs)(`p`,{children:[`Trash failed: `,v]}),(0,N.jsxs)(`div`,{className:`graph-delete-confirm-buttons`,children:[(0,N.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-cancel`,onClick:()=>{y(null)},children:`Close`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-do`,onClick:S,children:`Retry`})]})]})]})]})}function Pe(e,t){let n=`/api/admin/graph-subgraph`,r=t.includeAgentActions?`&includeAgentActions=1`:``;if(e.kind===`neighbourhood`){let i=t.search&&t.search.q?`&q=${encodeURIComponent(t.search.q)}&limit=${t.search.limit}`:``;return`${n}?mode=neighbourhood&elementId=${encodeURIComponent(e.rootElementId)}${r}${i}`}return`${n}?mode=default&labels=${encodeURIComponent(e.selectedLabels.join(`,`))}${e.includeTrashed?`&includeTrashed=1`:``}${r}${t.channel&&t.channel.length>0?`&channel=${encodeURIComponent(t.channel.join(`,`))}`:``}${t.messageSublabel&&t.messageSublabel.length>0?`&messageSublabel=${encodeURIComponent(t.messageSublabel.join(`,`))}`:``}`}var Fe=class extends Error{body;constructor(e){super(e.error),this.body=e}};function Ie({viewStack:e}){let t=e.map(e=>e.kind===`filter`?`Filter`:e.rootLabel??`Node`);return(0,N.jsx)(`div`,{className:`graph-breadcrumb`,role:`navigation`,"aria-label":`Graph navigation breadcrumb`,children:t.map((e,n)=>(0,N.jsxs)(`span`,{className:`graph-breadcrumb-item`,children:[n>0&&(0,N.jsx)(`span`,{className:`graph-breadcrumb-separator`,"aria-hidden":`true`,children:`›`}),(0,N.jsx)(`span`,{className:`graph-breadcrumb-label${n===t.length-1?` is-current`:``}`,children:e})]},n))})}function Le(e,t){let n=`[graph-page] ${e} ${Object.entries(t).map(([e,t])=>`${e}=${String(t)}`).join(` `)}`;try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-nav`,msg:n}),keepalive:!0}).catch(()=>{})}catch{}}function Re(e){let t=t=>{let n=e[t];if(n&&typeof n==`object`&&`low`in n){let e=n.low;return typeof e==`number`?e:null}return null},n=t(`year`),r=t(`month`),i=t(`day`);if(n===null||r===null||i===null)return null;let a=`${String(n).padStart(4,`0`)}-${String(r).padStart(2,`0`)}-${String(i).padStart(2,`0`)}`;if(!(`hour`in e))return a;let o=t(`hour`),s=t(`minute`),c=t(`second`);return o===null||s===null||c===null?a:`${a} ${String(o).padStart(2,`0`)}:${String(s).padStart(2,`0`)}:${String(c).padStart(2,`0`)}`}function ze(e){if(e==null)return``;if(Array.isArray(e))return e.length>8?`[${e.length} items]`:e.map(String).join(`, `);if(typeof e==`object`){if(`year`in e&&`month`in e&&`day`in e&&typeof e.year==`object`){let t=Re(e);if(t)return t}return JSON.stringify(e)}return String(e)}export{y as a,b as i,je as n,v as o,x as r,Me as t};
50
+ `)}var xe={solver:`barnesHut`,barnesHut:{gravitationalConstant:-2e3,centralGravity:.4,springLength:170,springConstant:.04},stabilization:{iterations:200}},Se=220,Ce=3;function j(e){let t=new Set(e.nodes.map(e=>e.id)),n=new Set;for(let r of e.edges)t.has(r.from)&&t.has(r.to)&&(n.add(r.from),n.add(r.to));let r=0;for(let t of e.nodes)n.has(t.id)||r++;if(!(e.nodes.length<=5||e.nodes.length>0&&r===e.nodes.length))return{physics:xe,nodePositions:new Map};let i=new Map,a=(Ce-1)*Se/2,o=(Math.ceil(e.nodes.length/Ce)-1)*Se/2;for(let t=0;t<e.nodes.length;t++){let n=t%Ce,r=Math.floor(t/Ce);i.set(e.nodes[t].id,{x:n*Se-a,y:r*Se-o})}return{physics:!1,nodePositions:i}}var M=e(r(),1),we=C(),Te=te(),N=n();function Ee(e){return e<.7?`compact`:e<1.3?`wrapped`:`detailed`}var P=150,F=`#FBBF24`;function De(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}var Oe=`maxy-graph-search-limit-v1`,ke=250,Ae=1200;function je(){let[e,t]=(0,M.useState)(null),[n,r]=(0,M.useState)(!1),[i,a]=(0,M.useState)(null),[o,c]=(0,M.useState)(void 0),[l,u]=(0,M.useState)(null),f=(0,M.useMemo)(()=>{if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search),t=e.get(`nodeId`);return t?{nodeId:t,nodeLabel:e.get(`label`)}:null},[]),p=(0,M.useMemo)(()=>typeof window>`u`?!1:new URLSearchParams(window.location.search).get(`onboardingFilter`)===`1`,[]);(0,M.useEffect)(()=>{f&&Le(`deep-link`,{nodeId:f.nodeId.length>16?f.nodeId.slice(0,16)+`…`:f.nodeId,label:f.nodeLabel??``})},[f]),(0,M.useEffect)(()=>{let e=!1,n=null;try{n=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!n){t(null),r(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(n)}`).then(async i=>{if(!e){if(i.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`;return}if(i.ok)try{let e=await i.json();typeof e.onboardingComplete==`boolean`&&a(e.onboardingComplete),typeof e.businessName==`string`&&c(e.businessName),e.conversationId!==void 0&&u(e.conversationId??null)}catch{}t(n),r(!0)}}).catch(()=>{e||(t(n),r(!0))}),()=>{e=!0}},[]);let h=(0,M.useCallback)(()=>{try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`},[]);return n?e?(0,N.jsx)(d,{cacheKey:e,businessName:o,conversationId:l,onLogout:h,onboardingComplete:i,children:(0,N.jsxs)(`div`,{className:`data-page graph-page`,children:[(0,N.jsx)(`header`,{className:`data-header`,children:(0,N.jsxs)(`h1`,{className:`data-title`,children:[(0,N.jsx)(s,{size:18}),` Graph`]})}),(0,N.jsx)(`main`,{className:`graph-main`,children:(0,N.jsx)(Me,{cacheKey:e,initialFocus:f,initialLabels:p&&i===!1?[`OnboardingState`,`Person`]:null})})]})}):(0,N.jsxs)(`div`,{className:`data-page`,children:[(0,N.jsx)(`header`,{className:`data-header`,children:(0,N.jsxs)(`h1`,{className:`data-title`,children:[(0,N.jsx)(s,{size:18}),` Graph`]})}),(0,N.jsxs)(`div`,{className:`data-empty`,children:[(0,N.jsx)(`p`,{children:`You are not signed in.`}),(0,N.jsxs)(`p`,{children:[`Open the `,(0,N.jsx)(`a`,{href:`/`,className:`data-link`,children:`main admin page`}),` and log in, then return here.`]})]})]}):(0,N.jsx)(`div`,{className:`data-page`,children:(0,N.jsxs)(`div`,{className:`data-loading`,children:[(0,N.jsx)(m,{size:18,className:`spin`}),` Loading…`]})})}function Me({cacheKey:e,initialFocus:t=null,initialLabels:n=null}){let{adminFetch:r,cacheKey:a,sessionRefetchNonce:s,banner:d,reloadToLogin:x}=o({initialCacheKey:e,surface:`graph`}),ee=(0,M.useRef)(null),C=(0,M.useRef)(null),te=(0,M.useRef)(null),D=(0,M.useRef)(null),O=(0,M.useRef)(new Map),oe=(0,M.useRef)([]),le=(0,M.useRef)(null),ue=(0,M.useRef)(null),de=(0,M.useRef)(null),fe=(0,M.useRef)(null),pe=(0,M.useRef)(null),[me,he]=(0,M.useState)([{kind:`filter`,selectedLabels:[],includeTrashed:!1,includeAgentActions:!1}]);(0,M.useEffect)(()=>{t?.nodeId&&he(e=>{let n=e[e.length-1];return n.kind===`neighbourhood`&&n.rootElementId===t.nodeId?e:[e[0],{kind:`neighbourhood`,rootElementId:t.nodeId,rootLabel:t.nodeLabel}]})},[t?.nodeId,t?.nodeLabel]);let _e=n&&n.length>0?[...n].sort().join(`,`):null;(0,M.useEffect)(()=>{_e&&(Ot.current=!0,he([{kind:`filter`,selectedLabels:_e.split(`,`),includeTrashed:!1,includeAgentActions:!1}]))},[_e]);let[ve,xe]=(0,M.useState)(!1),[Se,Ce]=(0,M.useState)(null),[je,Me]=(0,M.useState)(null),[Re,ze]=(0,M.useState)(0),[Be,Ve]=(0,M.useState)(null),[He,Ue]=(0,M.useState)(!1),[We,Ge]=(0,M.useState)(!1),[Ke,qe]=(0,M.useState)(null),[Je,Ye]=(0,M.useState)(``),[Xe,Ze]=(0,M.useState)(``),[Qe,$e]=(0,M.useState)(null),[et,tt]=(0,M.useState)(null),[nt,rt]=(0,M.useState)(()=>{if(typeof window>`u`)return 100;let e=window.localStorage.getItem(Oe);return e?se(e):100}),[it,at]=(0,M.useState)(nt),[ot,st]=(0,M.useState)(`hybrid`),[ct,lt]=(0,M.useState)(0),[ut,dt]=(0,M.useState)(!1),[ft,pt]=(0,M.useState)(0),[mt,ht]=(0,M.useState)(0),[gt,_t]=(0,M.useState)([]),[vt,yt]=(0,M.useState)({labels:[],includeTrashed:!1}),[bt,xt]=(0,M.useState)(!1),[St,Ct]=(0,M.useState)([]),[wt,Tt]=(0,M.useState)([]),[Et,Dt]=(0,M.useState)(!1),Ot=(0,M.useRef)(!1),kt=(0,M.useRef)(null),At=(0,M.useMemo)(()=>{let e=new Set;for(let t of O.current.values()){let n=f(t.labels);n&&e.add(n)}return[...e].sort()},[Re]);(0,M.useEffect)(()=>{let e=!1,t=r(`/api/admin/graph-labels-in-graph`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).catch(e=>{let t=e instanceof Error?e.message:String(e);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-labels-in-graph`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}return{labels:[]}}),n=r(`/api/admin/graph-default-view`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).catch(e=>{let t=e instanceof Error?e.message:String(e);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-default-view`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}return{labels:[],includeTrashed:!1}});return Promise.all([t,n]).then(([t,n])=>{if(!e&&(_t(t.labels),yt(n),!Ot.current)){Ot.current=!0;let e=new Set(t.labels.map(e=>e.label)),r=n.labels.filter(t=>e.has(t));(r.length>0||n.includeTrashed)&&he(e=>[{kind:`filter`,selectedLabels:r,includeTrashed:n.includeTrashed,includeAgentActions:!1},...e.slice(1)])}}),()=>{e=!0}},[a,s,r]);let jt=me[0].kind===`filter`?me[0].includeAgentActions:!1;(0,M.useEffect)(()=>{if(!Ot.current)return;let e=!1;return r(`/api/admin/graph-labels-in-graph?includeAgentActions=${jt?`1`:`0`}`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(t=>{e||_t(t.labels)}).catch(e=>{let t=e instanceof Error?e.message:String(e);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-labels-in-graph-refetch`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}}),()=>{e=!0}},[a,s,jt,mt,r]),(0,M.useEffect)(()=>{if(!bt)return;let e=e=>{kt.current&&(kt.current.contains(e.target)||xt(!1))},t=e=>{e.key===`Escape`&&xt(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[bt]);let Mt=(0,M.useCallback)(()=>{if(te.current)try{te.current.clear()}catch{}if(D.current)try{D.current.clear()}catch{}},[]),Nt=(0,M.useCallback)((e,t)=>{qe(null),r(`/api/admin/graph-delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({elementId:e,by:`graph-drag-trash`})}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);Ve(null);try{C.current?.unselectAll()}catch{}he(e=>[E(e)]),pt(e=>e+1),ie(`graph-trash`)}).catch(n=>{let r=n instanceof Error?n.message:String(n);qe(`Failed to delete: ${r}`),Ge(!0),window.setTimeout(()=>Ge(!1),Ae);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-drag-delete`,elementId:e,label:t,msg:r}),keepalive:!0}).catch(()=>{})}catch{}})},[r]),Pt=me[me.length-1],Ft=(0,M.useMemo)(()=>T(me),[me]),It=(0,M.useRef)(Ft);(0,M.useEffect)(()=>{It.current=Ft},[Ft]);let Lt=(0,M.useRef)(me);(0,M.useEffect)(()=>{Lt.current=me},[me]),(0,M.useEffect)(()=>{if(Pt.kind===`filter`&&Pt.selectedLabels.length===0){le.current?.abort(),le.current=null,xe(!1),Ce(null),Me(null),ze(0),O.current=new Map,Mt();return}if(Pt.kind===`filter`&&Xe)return;let e=window.setTimeout(()=>{le.current?.abort();let e=new AbortController;le.current=e,xe(!0),Ce(null),Me(null),r(Pe(Pt,{includeAgentActions:E(me).includeAgentActions,search:null,channel:St,messageSublabel:wt}),{signal:e.signal}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(e.status===413)throw new Fe(t);if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);return t}).then(t=>{e.signal.aborted||(O.current=new Map(t.nodes.map(e=>[e.id,e])),ze(t.nodes.length),Rt(t.nodes,t.edges))}).catch(t=>{if(!e.signal.aborted){if(t instanceof Fe){Me(t.body),ze(0),O.current=new Map,Mt();return}Ce(t instanceof Error?t.message:String(t))}}).finally(()=>{e.signal.aborted||xe(!1)})},ke);return()=>{window.clearTimeout(e)}},[a,Ft,ft,s,Xe,it,St,wt]),(0,M.useEffect)(()=>()=>{le.current?.abort(),C.current?.destroy(),C.current=null,pe.current!==null&&(clearTimeout(pe.current),pe.current=null)},[]);let Rt=(0,M.useCallback)((e,t)=>{if(!ee.current)return;oe.current=t;let n=new Set([`Message`,`UserMessage`,`AssistantMessage`]),r=e=>e.labels.some(e=>n.has(e)),i=new Map,a=e.filter(r);if(a.length>0){let e=new Set(a.map(e=>e.id)),n=new Map,r=new Set;for(let i of t)i.type===`NEXT`&&e.has(i.from)&&e.has(i.to)&&(n.set(i.from,i.to),r.add(i.to));let o=[],s=new Set;for(let e of a){if(r.has(e.id))continue;let t=e.id;for(;t&&!s.has(t);)s.add(t),o.push(t),t=n.get(t)}for(let e of a)s.has(e.id)||(o.push(e.id),s.add(e.id));let c=ee.current?.clientWidth??1200,l=Math.max(c-160,300),u=Math.max(Math.floor(l/150),2);o.forEach((e,t)=>{let n=t%u,r=Math.floor(t/u);i.set(e,{x:n*150,y:r*90})})}let o=e.map(e=>{let t=e.labels[0]??`Unknown`,n=c(e.labels);n.displayLabel;let r=n.colour;n.driftCandidates;let a=i.get(e.id),o=a?{x:a.x,y:a.y,physics:!1}:{};return e.trashed?{id:e.id,label:ge(e),title:be(e),color:{background:`${r}40`,border:r},borderWidth:2,shapeProperties:{borderDashes:[6,4]},group:t,...o}:{id:e.id,label:ge(e),title:be(e),color:r,group:t,...o}}),s=new Set(o.map(e=>e.id)),l=t.filter(e=>e.type!==`PART_OF`||s.has(e.from)&&s.has(e.to)).map(e=>({id:e.id,from:e.from,to:e.to,label:e.type})),u=j({nodes:e,edges:t});te.current=new Te.DataSet(u.nodePositions.size>0?o.map(e=>{if(e.x!==void 0||e.y!==void 0)return e;let t=u.nodePositions.get(e.id);return t?{...e,x:t.x,y:t.y,physics:!1}:e}):o),D.current=new Te.DataSet(l);let d={autoResize:!0,layout:{improvedLayout:!1,randomSeed:De(It.current)},physics:u.physics===!1?!1:{solver:u.physics.solver,barnesHut:u.physics.barnesHut,stabilization:u.physics.stabilization},nodes:{shape:`dot`,size:18,font:{color:`#1F2937`,size:12,face:`DM Sans, sans-serif`},scaling:{label:{enabled:!0,min:12,max:30,drawThreshold:0}},borderWidth:0,chosen:{node:e=>{e.size=20,e.borderWidth=3},label:e=>{e.size=14}}},edges:{arrows:{to:{enabled:!0,scaleFactor:.4}},color:{color:`#CBD5E1`,highlight:`#475569`},font:{color:`#64748B`,size:9,face:`DM Sans, sans-serif`,align:`middle`,strokeWidth:0},smooth:{enabled:!0,type:`continuous`,roundness:.4},width:1,chosen:{edge:!0,label:!1}},interaction:{hover:!0,tooltipDelay:150}};try{C.current?.destroy(),pe.current!==null&&(clearTimeout(pe.current),pe.current=null),fe.current=null;let e=new we.Network(ee.current,{nodes:te.current,edges:D.current},d);C.current=e,e.on(`zoom`,()=>{pe.current!==null&&clearTimeout(pe.current),pe.current=setTimeout(()=>{pe.current=null;let e=C.current,t=te.current;if(!e||!t)return;let n;try{n=e.getScale()}catch{return}let r=Ee(n);if(r===fe.current)return;fe.current=r;let i=[];for(let e of O.current.values()){let t=e.labels[0];if(!t||!ce.has(t))continue;let{colour:r}=c(e.labels),a=e.trashed?{background:`${r}40`,border:r}:r;i.push({id:e.id,label:ye(e,n),color:a})}i.length>0&&t.update(i),console.error(`[graph-page] zoom-tier scale=${n.toFixed(3)} tier=${r} conversations=${i.length}`)},P)}),e.on(`click`,e=>{let t=e.nodes[0];if(!t)return;let n=O.current.get(t);if(!n)return;if(k(n)===`skip-trashed`){Ve(n);return}let r=Lt.current[Lt.current.length-1];if(r.kind===`neighbourhood`&&r.rootElementId===t){Ve(e=>e?.id===t?null:n);return}Ve(null);let i={kind:`neighbourhood`,rootElementId:t,rootLabel:n.labels[0]??null};he(e=>{let n=ne(e,i),r=n.length-1;return n.length>e.length&&Le(`nav-push`,{depth:r,kind:i.kind,rootElementId:t}),n.length===10&&e.length===10&&Le(`view-stack-cap-hit`,{depth:10,rootElementId:t}),n})}),e.on(`deselectNode`,()=>{Ve(null)});let t=e=>{let t=ee.current,n=ue.current;if(!t||!n)return!1;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=r.left+e.x,o=r.top+e.y;return a>=i.left&&a<=i.right&&o>=i.top&&o<=i.bottom},n=ee.current?.parentElement??null;e.on(`dragStart`,e=>{let t=e.nodes[0];if(!t){de.current=null;return}de.current=t,n?.classList.add(`graph-dragging`)}),e.on(`dragging`,e=>{if(!de.current)return;let n=t(e.pointer.DOM);Ue(e=>e===n?e:n)}),e.on(`dragEnd`,e=>{let r=de.current;de.current=null,Ue(!1),n?.classList.remove(`graph-dragging`),r&&t(e.pointer.DOM)&&Nt(r,O.current.get(r)?.labels[0]??`Unknown`)})}catch(e){let t=e instanceof Error?e.message:String(e);Ce(`Visualisation failed to load: ${t}`);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-render`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}}},[]);(0,M.useEffect)(()=>{let e=Je.trim();if(!e){Ze(``),$e(null),tt(null),st(`hybrid`),lt(0),dt(!1),C.current?.unselectAll();return}dt(!1);let t=setTimeout(()=>Ze(e),300);return()=>clearTimeout(t)},[Je]),(0,M.useEffect)(()=>{let e=setTimeout(()=>{let e=se(nt);at(e);try{window.localStorage.setItem(Oe,String(e))}catch{}},200);return()=>clearTimeout(e)},[nt]);let zt=(0,M.useCallback)(e=>{let t=C.current,n=te.current;if(!t||!n)return;let{updates:r,inWindow:i}=A(e,O.current,c,F);r.length>0&&(n.update(r),t.fit({nodes:i,animation:{duration:400,easingFunction:`easeInOutQuad`}}))},[]),Bt=E(me);(0,M.useEffect)(()=>{if(!Xe||Pt.kind!==`filter`)return;let e=!1;tt(null);let t=encodeURIComponent(Bt.selectedLabels.join(`,`));return r(`/api/admin/graph-search?q=${encodeURIComponent(Xe)}&labels=${t}&limit=${it}${ut?`&threshold=0`:``}`).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);return t}).then(t=>{if(e)return;$e(t.results);let n=t.mode===`bm25`?`bm25`:`hybrid`;if(st(n),lt(typeof t.suppressed==`number`?t.suppressed:0),n===`bm25`)try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-page`,msg:`[graph-page] search-result-degraded mode=bm25 query="${Xe}"`}),keepalive:!0}).catch(()=>{})}catch{}let{nodes:r,edges:i}=ae(t.results,Bt.selectedLabels);O.current=new Map(r.map(e=>[e.id,e])),ze(r.length),Me(null),Rt(r,i),zt(t.results)}).catch(t=>{e||tt(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[Xe,it,a,s,r,zt,Pt.kind,Bt.selectedLabels,Rt,ut]);let Vt=(0,M.useCallback)(e=>{he(t=>{let n=E(t),r=new Set(n.selectedLabels);return r.has(e)?r.delete(e):r.add(e),w({kind:`filter`,selectedLabels:[...r].sort(),includeTrashed:n.includeTrashed,includeAgentActions:n.includeAgentActions})})},[]),Ht=(0,M.useCallback)(()=>{he(e=>{let t=E(e);return w({...t,includeTrashed:!t.includeTrashed})})},[]),Ut=(0,M.useCallback)(()=>{he(e=>{let t=E(e);return w({...t,includeAgentActions:!t.includeAgentActions})})},[]),Wt=(0,M.useCallback)(()=>{Ye(``),Ze(``),$e(null),tt(null),st(`hybrid`),lt(0),dt(!1);try{C.current?.unselectAll()}catch{}},[]),Gt=(0,M.useCallback)(()=>{he(()=>w({kind:`filter`,selectedLabels:[],includeTrashed:!1,includeAgentActions:!1}))},[]),Kt=(0,M.useCallback)(()=>{Ve(null);try{C.current?.unselectAll()}catch{}he(e=>{let t=re(e);return t!==e&&Le(`nav-pop`,{depth:t.length-1}),t})},[]),qt=(0,M.useCallback)(()=>{let e=E(me),t={labels:[...e.selectedLabels].sort(),includeTrashed:e.includeTrashed};Dt(!0),r(`/api/admin/graph-default-view`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}).then(async e=>{if(!e.ok){let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));throw Error(t.error??`HTTP ${e.status}`)}yt(t)}).catch(e=>{let t=e instanceof Error?e.message:String(e);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-default-view-save`,msg:t}),keepalive:!0}).catch(()=>{})}catch{}}).finally(()=>Dt(!1))},[r,me]),Jt=(0,M.useCallback)(()=>{Ve(null);try{C.current?.unselectAll()}catch{}pt(e=>e+1),ie(`graph-restore`)},[]),Yt=(0,M.useCallback)(()=>{Ve(null);try{C.current?.unselectAll()}catch{}he(e=>[E(e)]),pt(e=>e+1),ie(`graph-trash`)},[]),Xt=(0,M.useCallback)(()=>{pt(e=>e+1),ht(e=>e+1)},[]),Zt=Pt.kind===`neighbourhood`,Qt=E(me),$t=Qt.selectedLabels,en=Qt.includeTrashed,tn=Qt.includeAgentActions,nn=St.join(`,`),rn=wt.join(`,`),an=$t.includes(`AdminConversation`)||$t.includes(`PublicConversation`);(0,M.useEffect)(()=>{an&&console.info(`[graph-filter] subfacet-render channel=[${nn}] sublabel=[${rn}]`)},[nn,rn,an]);let on=(0,M.useMemo)(()=>{if(en!==vt.includeTrashed||$t.length!==vt.labels.length)return!0;for(let e=0;e<$t.length;e++)if($t[e]!==vt.labels[e])return!0;return!1},[en,$t,vt]);return(0,N.jsxs)(N.Fragment,{children:[d&&(0,N.jsx)(`button`,{type:`button`,className:`graph-session-banner`,onClick:x,"data-reason":d.reason,children:d.message}),(0,N.jsxs)(`div`,{className:`graph-toolbar`,children:[(0,N.jsxs)(`div`,{className:`data-search-input graph-search-input`,children:[(0,N.jsx)(l,{size:14}),(0,N.jsx)(`input`,{type:`text`,placeholder:`Search nodes…`,value:Je,onChange:e=>Ye(e.target.value),autoComplete:`off`,spellCheck:!1}),Xe&&!Qe&&!et&&(0,N.jsx)(m,{size:14,className:`spin`}),Je.length>0&&(0,N.jsx)(`button`,{type:`button`,className:`graph-search-clear`,onClick:Wt,"aria-label":`Clear search`,title:`Clear search`,children:(0,N.jsx)(p,{size:14})})]}),Xe&&!Zt&&(0,N.jsxs)(`div`,{className:`graph-search-limit`,title:`Show top ${nt} matches (1-2000)`,children:[(0,N.jsx)(`label`,{htmlFor:`graph-search-limit-input`,className:`graph-search-limit-label`,children:`Top`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-search-limit-step`,onClick:()=>rt(se(nt-1)),disabled:nt<=1,"aria-label":`Decrement search limit`,title:`Decrement`,children:(0,N.jsx)(v,{size:12})}),(0,N.jsx)(`input`,{id:`graph-search-limit-input`,type:`number`,min:1,max:2e3,step:1,value:nt,onChange:e=>rt(se(e.target.value)),className:`graph-search-limit-number`,"aria-label":`Maximum search results to render`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-search-limit-step`,onClick:()=>rt(se(nt+1)),disabled:nt>=2e3,"aria-label":`Increment search limit`,title:`Increment`,children:(0,N.jsx)(y,{size:12})}),(0,N.jsx)(`input`,{id:`graph-search-limit-slider`,type:`range`,min:1,max:2e3,step:1,value:nt,onChange:e=>rt(se(e.target.value)),"aria-label":`Maximum search results to render (drag for ballpark)`})]}),(0,N.jsx)(`button`,{type:`button`,className:`graph-refresh-button`,onClick:Xt,disabled:ve,"aria-label":`Refresh graph`,title:`Refresh graph`,children:(0,N.jsx)(b,{size:14,className:ve?`spin`:void 0})}),!Zt&&(0,N.jsxs)(`div`,{className:`graph-filter-wrap`,ref:kt,children:[(0,N.jsxs)(`button`,{type:`button`,className:`graph-filter-toggle${bt?` is-open`:``}${$t.length>0||en||tn?` has-selection`:``}`,onClick:()=>xt(e=>!e),"aria-haspopup":`true`,"aria-expanded":bt,"aria-label":`Filter node types`,children:[(0,N.jsx)(S,{size:14}),(0,N.jsx)(`span`,{children:`Filter`}),$t.length>0&&(0,N.jsx)(`span`,{className:`graph-filter-count`,children:$t.length})]}),bt&&(0,N.jsxs)(`div`,{className:`graph-filter-popover`,role:`dialog`,"aria-label":`Node type filter`,children:[(0,N.jsxs)(`div`,{className:`graph-filter-popover-header`,children:[(0,N.jsxs)(`button`,{type:`button`,className:`graph-toggle-trashed${en?` active`:``}`,onClick:Ht,"aria-pressed":en,title:`Show trashed nodes — restored with Restore button on each node`,children:[(0,N.jsx)(_,{size:14}),` Show trashed`]}),($t.length>0||en||tn)&&(0,N.jsx)(`button`,{type:`button`,className:`graph-filter-clear`,onClick:Gt,"aria-label":`Clear filter selection`,title:`Clear filter selection`,children:(0,N.jsx)(p,{size:14})})]}),(0,N.jsx)(`div`,{className:`graph-toggle-agent-actions`,title:`Hide ToolCall, StepResult, WorkflowStep, WorkflowRun — agent-execution telemetry. Flip on for audit/debug.`,children:(0,N.jsx)(h,{checked:tn,onChange:Ut,label:`Include agent actions`})}),gt.length===0&&(0,N.jsx)(`p`,{className:`graph-filter-popover-empty`,children:`No node types in your graph yet.`}),(0,N.jsx)(`div`,{className:`graph-filter-rows`,role:`group`,"aria-label":`Node type filter`,children:gt.map(({label:e,nodeCount:t})=>{let n=$t.includes(e),r=u(e);return(0,N.jsxs)(`button`,{type:`button`,className:`graph-filter-row${n?` active`:``}`,onClick:()=>Vt(e),"aria-pressed":n,children:[(0,N.jsx)(`span`,{className:`graph-filter-row-swatch`,style:{backgroundColor:r}}),(0,N.jsx)(`span`,{className:`graph-filter-row-label`,children:e}),(0,N.jsx)(`span`,{className:`graph-filter-row-count`,children:t})]},e)})}),($t.includes(`AdminConversation`)||$t.includes(`PublicConversation`))&&(0,N.jsxs)(`div`,{className:`graph-filter-subfacets`,children:[(0,N.jsxs)(`div`,{className:`graph-filter-subfacet-group`,role:`group`,"aria-label":`Conversation channel`,children:[(0,N.jsx)(`span`,{className:`graph-filter-subfacet-label`,children:`Channel`}),[`webchat`,`whatsapp`].map(e=>{let t=St.includes(e);return(0,N.jsx)(`button`,{type:`button`,className:`graph-filter-subfacet-chip${t?` active`:``}`,onClick:()=>{Ct(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},"aria-pressed":t,children:e===`webchat`?`Web`:`WhatsApp`},e)})]}),(0,N.jsxs)(`div`,{className:`graph-filter-subfacet-group`,role:`group`,"aria-label":`Message sublabel`,children:[(0,N.jsx)(`span`,{className:`graph-filter-subfacet-label`,children:`Message`}),[`UserMessage`,`AssistantMessage`,`WhatsAppMessage`].map(e=>{let t=wt.includes(e);return(0,N.jsx)(`button`,{type:`button`,className:`graph-filter-subfacet-chip${t?` active`:``}`,onClick:()=>{Tt(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},"aria-pressed":t,children:e===`UserMessage`?`User`:e===`AssistantMessage`?`Assistant`:`WhatsApp`},e)})]})]}),(0,N.jsx)(`div`,{className:`graph-filter-popover-footer`,children:(0,N.jsx)(`button`,{type:`button`,className:`graph-filter-set-default`,onClick:qt,disabled:!on||Et,children:Et?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(m,{size:12,className:`spin`}),` Saving…`]}):`Set default view`})})]})]}),(0,N.jsxs)(`div`,{className:`graph-meta`,children:[me.length>1&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`button`,{type:`button`,className:`graph-back-to-filter graph-back-desktop`,onClick:Kt,children:`← Back`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-back-to-filter graph-back-mobile`,onClick:Kt,"aria-label":`Back`,children:(0,N.jsx)(g,{size:16})})]}),Re>0&&(0,N.jsxs)(`span`,{className:`graph-meta-count`,children:[Re,` node`,Re===1?``:`s`]})]})]}),me.length>1&&(0,N.jsx)(Ie,{viewStack:me}),Xe&&ot===`bm25`&&!et&&(0,N.jsx)(`div`,{className:`graph-error-banner graph-search-degraded`,role:`status`,children:`Vector ranking unavailable — showing keyword-only results.`}),et&&(0,N.jsxs)(`div`,{className:`data-error graph-error-banner`,children:[`Search unavailable: `,et]}),Xe&&ct>0&&!ut&&!et&&(0,N.jsxs)(`button`,{type:`button`,className:`graph-search-suppressed`,onClick:()=>dt(!0),children:[ct,` low-confidence match`,ct===1?``:`es`,` hidden — show all`]}),Xe&&ut&&!et&&(0,N.jsx)(`button`,{type:`button`,className:`graph-search-suppressed`,onClick:()=>dt(!1),children:`Showing all matches — hide low-confidence`}),Qe&&Qe.length===0&&!et&&(0,N.jsx)(`div`,{className:`graph-search-status`,children:`No matches in your graph.`}),(0,N.jsxs)(`div`,{className:`graph-canvas-wrap`,children:[ve&&(0,N.jsxs)(`div`,{className:`graph-canvas-overlay`,children:[(0,N.jsx)(m,{size:20,className:`spin`}),` Loading your graph…`]}),Se&&!ve&&(0,N.jsxs)(`div`,{className:`graph-canvas-overlay graph-canvas-error`,children:[(0,N.jsx)(`p`,{children:Se}),(0,N.jsx)(`button`,{type:`button`,className:`data-btn`,onClick:()=>{Ce(null),pt(e=>e+1)},children:`Retry`})]}),je&&!ve&&(0,N.jsxs)(`div`,{className:`graph-canvas-overlay graph-canvas-error`,children:[(0,N.jsxs)(`p`,{children:[`Refine your filter — `,(0,N.jsx)(`strong`,{children:je.matched}),` matches exceed the 2000 cap.`]}),(0,N.jsx)(`p`,{className:`graph-canvas-hint`,children:`Pick a more specific label combination, or narrow your brand's data.`})]}),!ve&&!Se&&!je&&Re===0&&!Zt&&$t.length===0&&(0,N.jsxs)(`div`,{className:`graph-canvas-overlay`,children:[(0,N.jsx)(S,{size:20}),(0,N.jsx)(`p`,{children:`Open Filter to pick a node type and see what's in your graph.`})]}),!ve&&!Se&&!je&&Re===0&&!Zt&&$t.length>0&&(0,N.jsx)(`div`,{className:`graph-canvas-overlay`,children:(0,N.jsxs)(`p`,{children:[`No `,$t.join(`, `),` nodes in your graph yet.`]})}),(0,N.jsx)(`div`,{ref:ee,className:`graph-canvas`}),Re>0&&(0,N.jsx)(`div`,{ref:ue,className:`graph-trash-drop-zone${He?` is-hover`:``}${We?` is-error`:``}`,"aria-hidden":`true`,children:(0,N.jsx)(i,{size:18})}),Ke&&(0,N.jsxs)(`div`,{className:`graph-drag-error-banner`,role:`alert`,children:[(0,N.jsx)(`span`,{children:Ke}),(0,N.jsx)(`button`,{type:`button`,className:`graph-drag-error-dismiss`,onClick:()=>qe(null),"aria-label":`Dismiss`,children:(0,N.jsx)(p,{size:14})})]})]}),Be&&(0,N.jsx)(Ne,{node:Be,edges:oe.current,nodesById:O.current,adminFetch:r,onClose:()=>{Ve(null);try{C.current?.unselectAll()}catch{}},onRestored:Jt,onTrashed:Yt}),Re>0&&At.length>0&&(0,N.jsx)(`div`,{className:`graph-legend`,children:At.map(e=>(0,N.jsxs)(`div`,{className:`graph-legend-item`,children:[(0,N.jsx)(`span`,{className:`graph-legend-swatch`,style:{backgroundColor:u(e)}}),(0,N.jsx)(`span`,{children:e})]},e))})]})}function Ne({node:e,edges:t,nodesById:n,adminFetch:r,onClose:a,onRestored:o,onTrashed:s}){let c=Object.entries(e.properties).filter(([,e])=>e!=null),l=t.filter(t=>t.from===e.id||t.to===e.id),[u,d]=(0,M.useState)(!1),[f,h]=(0,M.useState)(null),[g,_]=(0,M.useState)(!1),[v,y]=(0,M.useState)(null);(0,M.useEffect)(()=>{d(!1),h(null),_(!1),y(null)},[e.id]);let b=(0,M.useCallback)(()=>{d(!0),h(null),r(`/api/admin/graph-restore`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({elementId:e.id})}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);o()}).catch(e=>{h(e instanceof Error?e.message:String(e)),d(!1)})},[e.id,o,r]),S=(0,M.useCallback)(()=>{_(!0),y(null),r(`/api/admin/graph-delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({elementId:e.id,by:`graph-side-panel-trash`})}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);s()}).catch(e=>{y(e instanceof Error?e.message:String(e)),_(!1)})},[e.id,s,r]);return(0,N.jsxs)(`aside`,{className:`graph-side-panel${e.trashed?` graph-side-panel-trashed`:``}`,children:[(0,N.jsxs)(`header`,{className:`graph-side-header`,children:[(0,N.jsx)(`div`,{children:(()=>{if(e.labels.some(e=>ce.has(e))){let t=_e(e),n=e.properties.createdAt,r=typeof n==`string`?n:``,i=r?pe(r):null,a=e.labels.join(` · `)+(e.trashed?` · Trashed`:``)+` · ${e.id}`;return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`h2`,{className:`graph-side-name`,title:t,children:t}),i&&(0,N.jsx)(`div`,{className:`graph-side-created`,children:i}),(0,N.jsx)(`div`,{className:`graph-side-meta`,children:a})]})}return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`div`,{className:`graph-side-labels`,children:[e.labels.join(` · `),e.trashed?` · Trashed`:``]}),(0,N.jsx)(`div`,{className:`graph-side-id`,children:e.id})]})})()}),(0,N.jsx)(`button`,{type:`button`,className:`graph-side-close`,onClick:a,"aria-label":`Close`,children:(0,N.jsx)(p,{size:14})})]}),e.trashed&&(0,N.jsxs)(`dl`,{className:`graph-side-props graph-side-trash-meta`,children:[(0,N.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,N.jsx)(`dt`,{children:`trashedAt`}),(0,N.jsx)(`dd`,{children:ze(e.properties.trashedAt)})]}),(0,N.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,N.jsx)(`dt`,{children:`trashedBy`}),(0,N.jsx)(`dd`,{children:ze(e.properties.trashedBy)})]})]}),(0,N.jsxs)(`dl`,{className:`graph-side-props`,children:[c.length===0&&(0,N.jsx)(`div`,{className:`graph-side-empty`,children:`No properties.`}),c.map(([e,t])=>(0,N.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,N.jsx)(`dt`,{children:e}),(0,N.jsx)(`dd`,{children:ze(t)})]},e))]}),l.length>0&&(0,N.jsxs)(`section`,{className:`graph-side-edges`,children:[(0,N.jsxs)(`h3`,{className:`graph-side-edges-heading`,children:[`Connections (`,l.length,`)`]}),l.map(t=>{let r=t.from===e.id,i=r?t.to:t.from,a=n.get(i),o=a?ge(a):i,s=r?`→`:`←`,c=Object.entries(t.properties??{}).filter(([,e])=>e!=null&&e!==``);return(0,N.jsxs)(`div`,{className:`graph-side-edge`,children:[(0,N.jsxs)(`div`,{className:`graph-side-edge-header`,children:[(0,N.jsx)(`span`,{className:`graph-side-edge-type`,children:t.type}),(0,N.jsx)(`span`,{className:`graph-side-edge-arrow`,children:s}),(0,N.jsx)(`span`,{className:`graph-side-edge-other`,title:o,children:o})]}),c.length>0&&(0,N.jsx)(`dl`,{className:`graph-side-edge-props`,children:c.map(([e,t])=>(0,N.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,N.jsx)(`dt`,{children:e}),(0,N.jsx)(`dd`,{children:ze(t)})]},e))})]},t.id)})]}),e.trashed&&(0,N.jsxs)(`footer`,{className:`graph-side-footer`,children:[!u&&!f&&(0,N.jsxs)(`button`,{type:`button`,className:`graph-side-restore`,onClick:b,children:[(0,N.jsx)(x,{size:14}),` Restore`]}),u&&(0,N.jsx)(`div`,{className:`graph-delete-confirm`,children:(0,N.jsxs)(`p`,{children:[(0,N.jsx)(m,{size:14,className:`spin`}),` Restoring…`]})}),f&&(0,N.jsxs)(`div`,{className:`graph-delete-confirm graph-delete-confirm-error`,children:[(0,N.jsxs)(`p`,{children:[`Restore failed: `,f]}),(0,N.jsxs)(`div`,{className:`graph-delete-confirm-buttons`,children:[(0,N.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-cancel`,onClick:()=>{h(null)},children:`Close`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-do`,onClick:b,children:`Retry`})]})]})]}),!e.trashed&&(0,N.jsxs)(`footer`,{className:`graph-side-footer`,children:[!g&&!v&&(0,N.jsxs)(`button`,{type:`button`,className:`graph-side-trash`,onClick:S,children:[(0,N.jsx)(i,{size:14}),` Trash`]}),g&&(0,N.jsx)(`div`,{className:`graph-delete-confirm`,children:(0,N.jsxs)(`p`,{children:[(0,N.jsx)(m,{size:14,className:`spin`}),` Trashing…`]})}),v&&(0,N.jsxs)(`div`,{className:`graph-delete-confirm graph-delete-confirm-error`,children:[(0,N.jsxs)(`p`,{children:[`Trash failed: `,v]}),(0,N.jsxs)(`div`,{className:`graph-delete-confirm-buttons`,children:[(0,N.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-cancel`,onClick:()=>{y(null)},children:`Close`}),(0,N.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-do`,onClick:S,children:`Retry`})]})]})]})]})}function Pe(e,t){let n=`/api/admin/graph-subgraph`,r=t.includeAgentActions?`&includeAgentActions=1`:``;if(e.kind===`neighbourhood`){let i=t.search&&t.search.q?`&q=${encodeURIComponent(t.search.q)}&limit=${t.search.limit}`:``;return`${n}?mode=neighbourhood&elementId=${encodeURIComponent(e.rootElementId)}${r}${i}`}return`${n}?mode=default&labels=${encodeURIComponent(e.selectedLabels.join(`,`))}${e.includeTrashed?`&includeTrashed=1`:``}${r}${t.channel&&t.channel.length>0?`&channel=${encodeURIComponent(t.channel.join(`,`))}`:``}${t.messageSublabel&&t.messageSublabel.length>0?`&messageSublabel=${encodeURIComponent(t.messageSublabel.join(`,`))}`:``}`}var Fe=class extends Error{body;constructor(e){super(e.error),this.body=e}};function Ie({viewStack:e}){let t=e.map(e=>e.kind===`filter`?`Filter`:e.rootLabel??`Node`);return(0,N.jsx)(`div`,{className:`graph-breadcrumb`,role:`navigation`,"aria-label":`Graph navigation breadcrumb`,children:t.map((e,n)=>(0,N.jsxs)(`span`,{className:`graph-breadcrumb-item`,children:[n>0&&(0,N.jsx)(`span`,{className:`graph-breadcrumb-separator`,"aria-hidden":`true`,children:`›`}),(0,N.jsx)(`span`,{className:`graph-breadcrumb-label${n===t.length-1?` is-current`:``}`,children:e})]},n))})}function Le(e,t){let n=`[graph-page] ${e} ${Object.entries(t).map(([e,t])=>`${e}=${String(t)}`).join(` `)}`;try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-nav`,msg:n}),keepalive:!0}).catch(()=>{})}catch{}}function Re(e){let t=t=>{let n=e[t];if(n&&typeof n==`object`&&`low`in n){let e=n.low;return typeof e==`number`?e:null}return null},n=t(`year`),r=t(`month`),i=t(`day`);if(n===null||r===null||i===null)return null;let a=`${String(n).padStart(4,`0`)}-${String(r).padStart(2,`0`)}-${String(i).padStart(2,`0`)}`;if(!(`hour`in e))return a;let o=t(`hour`),s=t(`minute`),c=t(`second`);return o===null||s===null||c===null?a:`${a} ${String(o).padStart(2,`0`)}:${String(s).padStart(2,`0`)}:${String(c).padStart(2,`0`)}`}function ze(e){if(e==null)return``;if(Array.isArray(e))return e.length>8?`[${e.length} items]`:e.map(String).join(`, `);if(typeof e==`object`){if(`year`in e&&`month`in e&&`day`in e&&typeof e.year==`object`){let t=Re(e);if(t)return t}return JSON.stringify(e)}return String(e)}export{y as a,b as i,je as n,v as o,x as r,Me as t};
@@ -5,12 +5,12 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Graph — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/graph-CfZJrc9u.js"></script>
8
+ <script type="module" crossorigin src="/assets/graph-DpgsOhUZ.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/brand-jT16ErmC.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/graph-labels-DJ717p00.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/Checkbox-B79fVxpA.js">
13
- <link rel="modulepreload" crossorigin href="/assets/page-CZQd-W3C.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/page-CTbSJbem.js">
14
14
  <link rel="stylesheet" crossorigin href="/assets/brand-Cg9t5U6J.css">
15
15
  </head>
16
16
  <body>
@@ -5,14 +5,14 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Real Agent</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/admin-DgB_IeWB.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-CXLuiXFU.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/brand-jT16ErmC.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/graph-labels-DJ717p00.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/device-url-actions-C8dD0ydz.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/Checkbox-B79fVxpA.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/page-BWHYktEF.js">
15
- <link rel="modulepreload" crossorigin href="/assets/page-CZQd-W3C.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/page-CTbSJbem.js">
16
16
  <link rel="stylesheet" crossorigin href="/assets/brand-Cg9t5U6J.css">
17
17
  <link rel="stylesheet" crossorigin href="/assets/admin-CWMpccrR.css">
18
18
  <link rel="stylesheet" href="/brand-defaults.css">