@rubytech/create-maxy-code 0.1.115 → 0.1.116
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 +1 -1
- package/payload/platform/plugins/admin/PLUGIN.md +1 -0
- package/payload/platform/plugins/admin/hooks/signal-detector-stop.sh +309 -0
- package/payload/platform/plugins/memory/PLUGIN.md +7 -0
- package/payload/platform/plugins/memory/mcp/dist/index.js +32 -0
- package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts +35 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.d.ts.map +1 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js +73 -0
- package/payload/platform/plugins/memory/mcp/dist/tools/memory-signals-recent.js.map +1 -0
- package/payload/platform/scripts/seed-neo4j.sh +2 -1
- package/payload/platform/templates/agents/admin/IDENTITY.md +12 -0
- package/payload/platform/templates/specialists/agents/signal-detector.md +129 -0
- package/payload/server/public/assets/{admin-DOxHsV7g.js → admin-DloKrK2i.js} +1 -1
- package/payload/server/public/assets/{graph-BkwTCV2Y.js → graph-CN60KyTy.js} +1 -1
- package/payload/server/public/assets/{page-zQ79YCEt.js → page-CFRU-BdJ.js} +1 -1
- package/payload/server/public/graph.html +2 -2
- package/payload/server/public/index.html +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e,t}from"./chunk-DD-I1_y5.js";import{_ as n,a as r,d as i,f as a,g as o,l as s,m as c,p as l,r as u,u as d,v as f,y as p}from"./ChatInput-CJo_77bp.js";import{C as m,S as h,_ as g,a as _,b as v,c as y,d as b,f as x,g as S,l as C,p as w,s as T,u as ee,v as E,x as te,y as ne}from"./graph-labels-h39S93Xo.js";import{a as D,i as re,r as O,t as ie}from"./page-zQ79YCEt.js";import{i as ae,n as oe,r as se}from"./page-B0iMmY6t.js";import{t as ce}from"./Checkbox-YrQovXpN.js";import{n as le,r as k,t as ue}from"./lib-Bnh57com.js";var de=n(),A=e(p(),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 fe(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var pe=`admin-landing-redirected`,me=`/graph`;function he(e){return e.appState===`chat`&&!e.alreadyRedirected}function ge(){let[e,t]=(0,A.useState)(`loading`),[n,r]=(0,A.useState)(``),[i,a]=(0,A.useState)(``),[o,s]=(0,A.useState)(``),[c,l]=(0,A.useState)(!1),[u,d]=(0,A.useState)(!1),[f,p]=(0,A.useState)(!1),[m,h]=(0,A.useState)(!1),[g,_]=(0,A.useState)(!1),[v,y]=(0,A.useState)(null),[b,x]=(0,A.useState)(null),[S,C]=(0,A.useState)(void 0),[w,T]=(0,A.useState)(null),[ee,E]=(0,A.useState)(void 0),[te,ne]=(0,A.useState)(null),[D,re]=(0,A.useState)(null),[O,ie]=(0,A.useState)([]),[ae,oe]=(0,A.useState)(!1),[se,ce]=(0,A.useState)(void 0),le=(0,A.useRef)(void 0),[k,ue]=(0,A.useState)(!1);(0,A.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&&ue(!0)}).catch(()=>{})},[]);let de=(0,A.useRef)(null),ge=(0,A.useRef)(null);(0,A.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();y(r.session_key),re(r.conversationId??null),C(r.businessName),T(r.role??null),E(r.userName===void 0?null:r.userName),ne(r.avatar??null);let i=fe(r.thinkingView);return le.current=i,ce(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.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,A.useEffect)(()=>{e===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&x(e)}).catch(()=>{})},[e]),(0,A.useEffect)(()=>{if(typeof window>`u`)return;let t=!1;try{t=sessionStorage.getItem(pe)===`1`}catch{}if(he({appState:e,alreadyRedirected:t})){try{sessionStorage.setItem(pe,`1`)}catch{}console.info(`[admin-ui] landing-redirect target=${me}`),window.location.replace(me)}},[e]),(0,A.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,A.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 _e(e,n){d(!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){s((await i.json().catch(()=>({}))).error||`Invalid PIN`);return}let a=await i.json();if(a.accounts&&!a.session_key){console.log(`[admin] account picker shown: userId=${a.userId} accountCount=${a.accounts.length}`),ie(a.accounts),t(`account-picker`);return}y(a.session_key),re(a.conversationId??null),C(a.businessName),T(a.role??null),E(a.userName===void 0?null:a.userName),ne(a.avatar??null);let o=fe(a.thinkingView);if(le.current=o,ce(o),n)try{sessionStorage.setItem(`maxy-account-id`,n)}catch{}try{sessionStorage.setItem(`maxy-admin-session-key`,a.session_key)}catch{}r(``),t(`chat`)}catch(e){console.error(`[admin] connection error:`,e),s(`Could not connect.`)}finally{d(!1),oe(!1)}}let ve=(0,A.useCallback)(async e=>{if(e.preventDefault(),u)return;s(``);let a=i.trim();if(!a){s(`Please enter your name.`);return}if(n.length<4){s(`PIN must be at least 4 characters.`);return}let o=n;d(!0);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:o,name:a})});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`):s(n.error||`Failed to set PIN.`)}else t(`enter-pin`)}catch{t(`enter-pin`)}return}s(n.error||`Failed to set PIN.`);return}let n=await fetch(`/api/health`);if((n.ok?await n.json():null)?.claude_authenticated){await _e(o);return}r(``),t(`connect-claude`)}catch(e){console.error(`[admin] connection error:`,e),s(`Could not connect.`)}finally{d(!1)}},[n,u,i]),ye=(0,A.useCallback)(async e=>{e.preventDefault(),s(``),await _e(n)},[n]),be=(0,A.useCallback)(async()=>{_(!0);try{await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`logout`})}),y(null),T(null),E(void 0),ne(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)}finally{_(!1)}},[]),xe=(0,A.useCallback)(()=>{y(null),T(null),E(void 0),ne(null);try{sessionStorage.removeItem(`maxy-admin-session-key`),sessionStorage.removeItem(pe)}catch{}r(``),s(``),t(`enter-pin`)},[]);return{appState:e,setAppState:t,pin:n,setPin:r,operatorName:i,setOperatorName:a,pinError:o,setPinError:s,showPin:c,setShowPin:l,pinLoading:u,authPolling:f,setAuthPolling:p,authLoading:m,setAuthLoading:h,disconnecting:g,cacheKey:v,setCacheKey:y,claudeInfo:b,setClaudeInfo:x,businessName:S,role:w,userName:ee,userAvatar:te,conversationId:D,setConversationId:re,accounts:O,accountPickerLoading:ae,expandAll:se,setExpandAll:ce,expandAllDefaultRef:le,remoteAuthEnabled:k,pinInputRef:de,setPinFormRef:ge,handleSetPin:ve,handleLogin:ye,handleAccountSelect:(0,A.useCallback)(async e=>{oe(!0),s(``),await _e(n,e)},[n]),handleDisconnect:be,handleLogout:xe,handleChangePin:(0,A.useCallback)(async()=>{if(!n){s(`Enter your current PIN first.`);return}d(!0),s(``);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({currentPin:n})});if(!e.ok){s((await e.json().catch(()=>({error:`Incorrect PIN.`}))).error||`Incorrect PIN.`);return}r(``),s(``),t(`set-pin`)}catch(e){console.error(`[admin-auth] change pin failed:`,e),s(e instanceof Error?e.message:String(e))}finally{d(!1)}},[n])}}var _e=o(`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`}]]),ve=o(`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`}]]),ye=o(`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`}]]),be=o(`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`}]]),xe=o(`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`}]]),Se=o(`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`}]]),Ce=o(`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`}]]),we=o(`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`}]]),Te=o(`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`}]]),Ee=o(`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`}]]),De=o(`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`}]]),Oe=o(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),j=d();function ke({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,A.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,j.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,j.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 Ae(e){let{pin:t,setPin:n,showPin:i,setShowPin:a,pinLoading:o,pinError:c,pinInputRef:l,setPinFormRef:u,onSubmit:d,operatorName:f,setOperatorName:p}=e;return(0,j.jsx)(`div`,{className:`connect-page`,children:(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsx)(`img`,{src:s,alt:r.productName,className:`connect-logo connect-logo--maxy`}),!r.logoContainsName&&(0,j.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,r.productName]}),(0,j.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,r.productName,` who you are, then choose a PIN.`]}),(0,j.jsxs)(`form`,{ref:u,onSubmit:d,className:`connect-pin-form`,children:[(0,j.jsxs)(`div`,{className:`pin-input-row`,children:[(0,j.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:f,onChange:e=>p(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,j.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,j.jsxs)(`div`,{className:`pin-input-row`,children:[(0,j.jsx)(ke,{inputRef:l,value:t,onChange:n,onComplete:()=>{},showPin:i}),(0,j.jsx)(k,{variant:`send`,type:`submit`,disabled:!t||!f.trim(),loading:o,"aria-label":`Set PIN`,children:(0,j.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,j.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,j.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,j.jsx)(ce,{checked:i,onChange:()=>a(e=>!e),label:`Show PIN`})]}),c&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:c})]})})}function je(e){let{pin:t,setPin:n,showPin:i,setShowPin:a,pinLoading:o,pinError:c,pinInputRef:l,onSubmit:u,onChangePin:d,remoteAuthEnabled:f,onSignOutRemote:p}=e;return(0,j.jsxs)(`div`,{className:`connect-page`,children:[f&&p&&(0,j.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:p,children:`Sign out`}),(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsx)(`img`,{src:s,alt:r.productName,className:`connect-logo connect-logo--maxy`}),!r.logoContainsName&&(0,j.jsx)(`h1`,{className:`connect-title`,children:r.productName}),(0,j.jsxs)(`form`,{onSubmit:u,className:`connect-pin-form`,children:[(0,j.jsxs)(`div`,{className:`pin-input-row`,children:[(0,j.jsx)(ke,{inputRef:l,value:t,onChange:n,onComplete:()=>{},showPin:i,autoFocus:!0}),(0,j.jsx)(k,{variant:`send`,type:`submit`,disabled:!t,loading:o,children:(0,j.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,j.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,j.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,j.jsxs)(`div`,{className:`pin-options`,children:[(0,j.jsx)(ce,{checked:i,onChange:()=>a(e=>!e),label:`Show PIN`}),(0,j.jsx)(k,{type:`button`,variant:`ghost`,onClick:d,children:`Change PIN`})]})]}),c&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:c})]})]})}function Me(e){let{accounts:t,loading:n,error:i,onSelect:a}=e;return(0,j.jsx)(`div`,{className:`connect-page`,children:(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsx)(`img`,{src:s,alt:r.productName,className:`connect-logo connect-logo--maxy`}),!r.logoContainsName&&(0,j.jsx)(`h1`,{className:`connect-title`,children:r.productName}),(0,j.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,j.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,j.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>a(e.accountId),disabled:n,type:`button`,children:[(0,j.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,j.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,j.jsx)(E,{className:`account-picker-spinner`,size:16})]},e.accountId))}),i&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:i})]})})}function Ne(e){let{authPolling:t,setAuthPolling:n,authLoading:i,setAuthLoading:a,pinError:o,setPinError:c,setAppState:l}=e,[u,d]=(0,A.useState)(!1),[f,p]=(0,A.useState)(!1);async function m(){p(!0),c(``);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&&c(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),c(`Could not launch browser.`)}p(!1)}async function h(){a(!0),c(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),d(!0),a(!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`})}),l(`enter-pin`);return}c(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&c(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),c(`Could not start auth flow.`)}a(!1)}async function g(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),c(``)}return t||u?(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,j.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,j.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,j.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,j.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,j.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,j.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,j.jsx)(`div`,{style:{marginTop:`12px`},children:(0,j.jsx)(k,{variant:`primary`,onClick:h,disabled:i,children:i?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,j.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,j.jsx)(`iframe`,{src:`/vnc-viewer.html`,style:{flex:1,width:`100%`,minHeight:0,border:`none`,background:`#111`,display:`block`},title:`Claude Sign-in`})}),o&&(0,j.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:o})]}):(0,j.jsx)(`div`,{className:`connect-page`,children:(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsxs)(`div`,{className:`connect-logos`,children:[(0,j.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,j.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,j.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,j.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,j.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,j.jsx)(`img`,{src:s,alt:r.productName,className:`connect-logo connect-logo--maxy`}),!r.logoContainsName&&(0,j.jsx)(`span`,{className:`connect-logo-label`,children:r.productName})]})]}),(0,j.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,r.productName]}),(0,j.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,j.jsx)(k,{variant:`primary`,onClick:h,disabled:i,children:i?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,j.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,j.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`}),o&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:o})]})})}var Pe=`maxy-shell-artefact-px`;function Fe(){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 Le(Math.round((e-n)*(2/3)))}function Ie(){if(typeof window>`u`)return 320;try{let e=window.localStorage.getItem(Pe);if(!e)return Fe();let t=parseInt(e,10);if(Number.isFinite(t)&&t>=320)return t}catch{}return Fe()}function Le(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 Re({targetSelector:e=`.platform`}){let t=(0,A.useRef)(null),[n,r]=(0,A.useState)(()=>Ie()),i=(0,A.useRef)(n);(0,A.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,A.useCallback)(()=>{r(e=>{let t=Le(e);return t===e?e:t})},[]);(0,A.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(Le(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(Pe,String(t))}catch{}console.info(`[admin-ui] artefact-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=Fe();r(e);try{window.localStorage.removeItem(Pe)}catch{}console.info(`[admin-ui] artefact-resize px=${e}`)};return(0,j.jsx)(`div`,{ref:t,className:`art-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize artefact pane`,onPointerDown:o,onDoubleClick:s})}async function*ze(e,t){let n=await fetch(e,{signal:t});if(n.status===202)throw Error(`transcript not yet on disk; reopen after first turn`);if(!n.ok)throw Error(`stream-failed status=${n.status}`);let r=n.body;if(!r)throw Error(`stream-failed no-body`);let i=r.getReader(),a=new TextDecoder(`utf-8`),o=``,s=0,c=new Promise(e=>{let n={value:void 0,done:!0};if(t.aborted){e(n);return}t.addEventListener(`abort`,()=>e(n),{once:!0})});try{for(;;){if(t.aborted)return;let{value:e,done:n}=await Promise.race([i.read(),c]);if(t.aborted)return;if(n)break;o+=a.decode(e,{stream:!0});let r=o.split(`
|
|
1
|
+
import{o as e,t}from"./chunk-DD-I1_y5.js";import{_ as n,a as r,d as i,f as a,g as o,l as s,m as c,p as l,r as u,u as d,v as f,y as p}from"./ChatInput-CJo_77bp.js";import{C as m,S as h,_ as g,a as _,b as v,c as y,d as b,f as x,g as S,l as C,p as w,s as T,u as ee,v as E,x as te,y as ne}from"./graph-labels-h39S93Xo.js";import{a as D,i as re,r as O,t as ie}from"./page-CFRU-BdJ.js";import{i as ae,n as oe,r as se}from"./page-B0iMmY6t.js";import{t as ce}from"./Checkbox-YrQovXpN.js";import{n as le,r as k,t as ue}from"./lib-Bnh57com.js";var de=n(),A=e(p(),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 fe(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var pe=`admin-landing-redirected`,me=`/graph`;function he(e){return e.appState===`chat`&&!e.alreadyRedirected}function ge(){let[e,t]=(0,A.useState)(`loading`),[n,r]=(0,A.useState)(``),[i,a]=(0,A.useState)(``),[o,s]=(0,A.useState)(``),[c,l]=(0,A.useState)(!1),[u,d]=(0,A.useState)(!1),[f,p]=(0,A.useState)(!1),[m,h]=(0,A.useState)(!1),[g,_]=(0,A.useState)(!1),[v,y]=(0,A.useState)(null),[b,x]=(0,A.useState)(null),[S,C]=(0,A.useState)(void 0),[w,T]=(0,A.useState)(null),[ee,E]=(0,A.useState)(void 0),[te,ne]=(0,A.useState)(null),[D,re]=(0,A.useState)(null),[O,ie]=(0,A.useState)([]),[ae,oe]=(0,A.useState)(!1),[se,ce]=(0,A.useState)(void 0),le=(0,A.useRef)(void 0),[k,ue]=(0,A.useState)(!1);(0,A.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&&ue(!0)}).catch(()=>{})},[]);let de=(0,A.useRef)(null),ge=(0,A.useRef)(null);(0,A.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();y(r.session_key),re(r.conversationId??null),C(r.businessName),T(r.role??null),E(r.userName===void 0?null:r.userName),ne(r.avatar??null);let i=fe(r.thinkingView);return le.current=i,ce(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.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,A.useEffect)(()=>{e===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&x(e)}).catch(()=>{})},[e]),(0,A.useEffect)(()=>{if(typeof window>`u`)return;let t=!1;try{t=sessionStorage.getItem(pe)===`1`}catch{}if(he({appState:e,alreadyRedirected:t})){try{sessionStorage.setItem(pe,`1`)}catch{}console.info(`[admin-ui] landing-redirect target=${me}`),window.location.replace(me)}},[e]),(0,A.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,A.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 _e(e,n){d(!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){s((await i.json().catch(()=>({}))).error||`Invalid PIN`);return}let a=await i.json();if(a.accounts&&!a.session_key){console.log(`[admin] account picker shown: userId=${a.userId} accountCount=${a.accounts.length}`),ie(a.accounts),t(`account-picker`);return}y(a.session_key),re(a.conversationId??null),C(a.businessName),T(a.role??null),E(a.userName===void 0?null:a.userName),ne(a.avatar??null);let o=fe(a.thinkingView);if(le.current=o,ce(o),n)try{sessionStorage.setItem(`maxy-account-id`,n)}catch{}try{sessionStorage.setItem(`maxy-admin-session-key`,a.session_key)}catch{}r(``),t(`chat`)}catch(e){console.error(`[admin] connection error:`,e),s(`Could not connect.`)}finally{d(!1),oe(!1)}}let ve=(0,A.useCallback)(async e=>{if(e.preventDefault(),u)return;s(``);let a=i.trim();if(!a){s(`Please enter your name.`);return}if(n.length<4){s(`PIN must be at least 4 characters.`);return}let o=n;d(!0);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:o,name:a})});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`):s(n.error||`Failed to set PIN.`)}else t(`enter-pin`)}catch{t(`enter-pin`)}return}s(n.error||`Failed to set PIN.`);return}let n=await fetch(`/api/health`);if((n.ok?await n.json():null)?.claude_authenticated){await _e(o);return}r(``),t(`connect-claude`)}catch(e){console.error(`[admin] connection error:`,e),s(`Could not connect.`)}finally{d(!1)}},[n,u,i]),ye=(0,A.useCallback)(async e=>{e.preventDefault(),s(``),await _e(n)},[n]),be=(0,A.useCallback)(async()=>{_(!0);try{await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`logout`})}),y(null),T(null),E(void 0),ne(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)}finally{_(!1)}},[]),xe=(0,A.useCallback)(()=>{y(null),T(null),E(void 0),ne(null);try{sessionStorage.removeItem(`maxy-admin-session-key`),sessionStorage.removeItem(pe)}catch{}r(``),s(``),t(`enter-pin`)},[]);return{appState:e,setAppState:t,pin:n,setPin:r,operatorName:i,setOperatorName:a,pinError:o,setPinError:s,showPin:c,setShowPin:l,pinLoading:u,authPolling:f,setAuthPolling:p,authLoading:m,setAuthLoading:h,disconnecting:g,cacheKey:v,setCacheKey:y,claudeInfo:b,setClaudeInfo:x,businessName:S,role:w,userName:ee,userAvatar:te,conversationId:D,setConversationId:re,accounts:O,accountPickerLoading:ae,expandAll:se,setExpandAll:ce,expandAllDefaultRef:le,remoteAuthEnabled:k,pinInputRef:de,setPinFormRef:ge,handleSetPin:ve,handleLogin:ye,handleAccountSelect:(0,A.useCallback)(async e=>{oe(!0),s(``),await _e(n,e)},[n]),handleDisconnect:be,handleLogout:xe,handleChangePin:(0,A.useCallback)(async()=>{if(!n){s(`Enter your current PIN first.`);return}d(!0),s(``);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({currentPin:n})});if(!e.ok){s((await e.json().catch(()=>({error:`Incorrect PIN.`}))).error||`Incorrect PIN.`);return}r(``),s(``),t(`set-pin`)}catch(e){console.error(`[admin-auth] change pin failed:`,e),s(e instanceof Error?e.message:String(e))}finally{d(!1)}},[n])}}var _e=o(`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`}]]),ve=o(`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`}]]),ye=o(`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`}]]),be=o(`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`}]]),xe=o(`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`}]]),Se=o(`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`}]]),Ce=o(`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`}]]),we=o(`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`}]]),Te=o(`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`}]]),Ee=o(`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`}]]),De=o(`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`}]]),Oe=o(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),j=d();function ke({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,A.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,j.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,j.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 Ae(e){let{pin:t,setPin:n,showPin:i,setShowPin:a,pinLoading:o,pinError:c,pinInputRef:l,setPinFormRef:u,onSubmit:d,operatorName:f,setOperatorName:p}=e;return(0,j.jsx)(`div`,{className:`connect-page`,children:(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsx)(`img`,{src:s,alt:r.productName,className:`connect-logo connect-logo--maxy`}),!r.logoContainsName&&(0,j.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,r.productName]}),(0,j.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,r.productName,` who you are, then choose a PIN.`]}),(0,j.jsxs)(`form`,{ref:u,onSubmit:d,className:`connect-pin-form`,children:[(0,j.jsxs)(`div`,{className:`pin-input-row`,children:[(0,j.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:f,onChange:e=>p(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,j.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,j.jsxs)(`div`,{className:`pin-input-row`,children:[(0,j.jsx)(ke,{inputRef:l,value:t,onChange:n,onComplete:()=>{},showPin:i}),(0,j.jsx)(k,{variant:`send`,type:`submit`,disabled:!t||!f.trim(),loading:o,"aria-label":`Set PIN`,children:(0,j.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,j.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,j.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,j.jsx)(ce,{checked:i,onChange:()=>a(e=>!e),label:`Show PIN`})]}),c&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:c})]})})}function je(e){let{pin:t,setPin:n,showPin:i,setShowPin:a,pinLoading:o,pinError:c,pinInputRef:l,onSubmit:u,onChangePin:d,remoteAuthEnabled:f,onSignOutRemote:p}=e;return(0,j.jsxs)(`div`,{className:`connect-page`,children:[f&&p&&(0,j.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:p,children:`Sign out`}),(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsx)(`img`,{src:s,alt:r.productName,className:`connect-logo connect-logo--maxy`}),!r.logoContainsName&&(0,j.jsx)(`h1`,{className:`connect-title`,children:r.productName}),(0,j.jsxs)(`form`,{onSubmit:u,className:`connect-pin-form`,children:[(0,j.jsxs)(`div`,{className:`pin-input-row`,children:[(0,j.jsx)(ke,{inputRef:l,value:t,onChange:n,onComplete:()=>{},showPin:i,autoFocus:!0}),(0,j.jsx)(k,{variant:`send`,type:`submit`,disabled:!t,loading:o,children:(0,j.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,j.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,j.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,j.jsxs)(`div`,{className:`pin-options`,children:[(0,j.jsx)(ce,{checked:i,onChange:()=>a(e=>!e),label:`Show PIN`}),(0,j.jsx)(k,{type:`button`,variant:`ghost`,onClick:d,children:`Change PIN`})]})]}),c&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:c})]})]})}function Me(e){let{accounts:t,loading:n,error:i,onSelect:a}=e;return(0,j.jsx)(`div`,{className:`connect-page`,children:(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsx)(`img`,{src:s,alt:r.productName,className:`connect-logo connect-logo--maxy`}),!r.logoContainsName&&(0,j.jsx)(`h1`,{className:`connect-title`,children:r.productName}),(0,j.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,j.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,j.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>a(e.accountId),disabled:n,type:`button`,children:[(0,j.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,j.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,j.jsx)(E,{className:`account-picker-spinner`,size:16})]},e.accountId))}),i&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:i})]})})}function Ne(e){let{authPolling:t,setAuthPolling:n,authLoading:i,setAuthLoading:a,pinError:o,setPinError:c,setAppState:l}=e,[u,d]=(0,A.useState)(!1),[f,p]=(0,A.useState)(!1);async function m(){p(!0),c(``);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&&c(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),c(`Could not launch browser.`)}p(!1)}async function h(){a(!0),c(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),d(!0),a(!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`})}),l(`enter-pin`);return}c(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&c(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),c(`Could not start auth flow.`)}a(!1)}async function g(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),c(``)}return t||u?(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,j.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,j.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,j.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,j.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,j.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,j.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,j.jsx)(`div`,{style:{marginTop:`12px`},children:(0,j.jsx)(k,{variant:`primary`,onClick:h,disabled:i,children:i?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,j.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,j.jsx)(`iframe`,{src:`/vnc-viewer.html`,style:{flex:1,width:`100%`,minHeight:0,border:`none`,background:`#111`,display:`block`},title:`Claude Sign-in`})}),o&&(0,j.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:o})]}):(0,j.jsx)(`div`,{className:`connect-page`,children:(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsxs)(`div`,{className:`connect-logos`,children:[(0,j.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,j.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,j.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,j.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,j.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,j.jsx)(`img`,{src:s,alt:r.productName,className:`connect-logo connect-logo--maxy`}),!r.logoContainsName&&(0,j.jsx)(`span`,{className:`connect-logo-label`,children:r.productName})]})]}),(0,j.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,r.productName]}),(0,j.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,j.jsx)(k,{variant:`primary`,onClick:h,disabled:i,children:i?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,j.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,j.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`}),o&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:o})]})})}var Pe=`maxy-shell-artefact-px`;function Fe(){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 Le(Math.round((e-n)*(2/3)))}function Ie(){if(typeof window>`u`)return 320;try{let e=window.localStorage.getItem(Pe);if(!e)return Fe();let t=parseInt(e,10);if(Number.isFinite(t)&&t>=320)return t}catch{}return Fe()}function Le(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 Re({targetSelector:e=`.platform`}){let t=(0,A.useRef)(null),[n,r]=(0,A.useState)(()=>Ie()),i=(0,A.useRef)(n);(0,A.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,A.useCallback)(()=>{r(e=>{let t=Le(e);return t===e?e:t})},[]);(0,A.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(Le(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(Pe,String(t))}catch{}console.info(`[admin-ui] artefact-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=Fe();r(e);try{window.localStorage.removeItem(Pe)}catch{}console.info(`[admin-ui] artefact-resize px=${e}`)};return(0,j.jsx)(`div`,{ref:t,className:`art-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize artefact pane`,onPointerDown:o,onDoubleClick:s})}async function*ze(e,t){let n=await fetch(e,{signal:t});if(n.status===202)throw Error(`transcript not yet on disk; reopen after first turn`);if(!n.ok)throw Error(`stream-failed status=${n.status}`);let r=n.body;if(!r)throw Error(`stream-failed no-body`);let i=r.getReader(),a=new TextDecoder(`utf-8`),o=``,s=0,c=new Promise(e=>{let n={value:void 0,done:!0};if(t.aborted){e(n);return}t.addEventListener(`abort`,()=>e(n),{once:!0})});try{for(;;){if(t.aborted)return;let{value:e,done:n}=await Promise.race([i.read(),c]);if(t.aborted)return;if(n)break;o+=a.decode(e,{stream:!0});let r=o.split(`
|
|
2
2
|
`);o=r.pop()??``;for(let e of r)s++,yield Be(e,s)}let e=o+a.decode();e.length>0&&(s++,yield Be(e,s))}finally{try{await i.cancel()}catch{}}}function Be(e,t){try{return{kind:`json`,raw:e,parsed:JSON.parse(e),lineNumber:t}}catch(n){return{kind:`parse-error`,raw:e,lineNumber:t,error:n instanceof Error?n.message:String(n)}}}var Ve=28,He=240,Ue=16,We=8;function Ge(e,t){switch(t.type){case`append`:{let n=e.lines.length>=5e4?[...e.lines.slice(1),t.line]:[...e.lines,t.line],r=e.lines.length>=5e4?e.droppedCount+1:e.droppedCount;return{...e,lines:n,droppedCount:r}}case`complete`:return{...e,streamStatus:`complete`};case`error`:return{...e,streamStatus:`error`,errorMessage:t.message}}}var Ke={lines:[],droppedCount:0,streamStatus:`streaming`,errorMessage:null};function qe(e){if(e.kind===`parse-error`)return{label:`parse-error`,tone:`error`};let t=e.parsed;if(!t||typeof t!=`object`)return{label:`raw`,tone:`raw`};let n=typeof t.type==`string`?t.type:null,r=typeof t.role==`string`?t.role:null;return n===`user`||r===`user`?{label:`user`,tone:`user`}:n===`assistant`||r===`assistant`?{label:`assistant`,tone:`assistant`}:n===`tool_use`?{label:`tool_use`,tone:`tool`}:n===`tool_result`?{label:`tool_result`,tone:`tool`}:n===`system`?{label:`system`,tone:`system`}:{label:`raw`,tone:`raw`}}function Je(e,t,n){let r=He-Ve,i=0,a=Math.max(0,e-1);for(;i<a;){let e=i+a+1>>1,o=0;for(;o<t.length&&t[o]<e;)o++;e*Ve+o*r<=n?i=e:a=e-1}return i}function Ye(e){let{sessionId:t,cacheKey:n,displayName:r,liveStatus:i,onClose:a}=e,[o,s]=(0,A.useReducer)(Ge,Ke),[l,d]=(0,A.useState)(``),[f,p]=(0,A.useState)(()=>new Set),[m,h]=(0,A.useState)(0),[g,_]=(0,A.useState)(0),v=(0,A.useRef)(null),y=(0,A.useRef)(Date.now()),x=(0,A.useRef)(!0),S=(0,A.useRef)(0);(0,A.useEffect)(()=>(console.info(`[admin-ui] jsonl-viewer-open sessionId=${t.slice(0,8)} alive=${i===`alive`}`),()=>{let e=Date.now()-y.current;console.info(`[admin-ui] jsonl-viewer-close sessionId=${t.slice(0,8)} reason=unmount linesRendered=${S.current} ms=${e}`)}),[]),(0,A.useEffect)(()=>{let e=new AbortController,r=`/api/admin/claude-sessions/${encodeURIComponent(t)}/log?session_key=${encodeURIComponent(n)}&follow=1`,i=0;return(async()=>{try{for await(let n of ze(r,e.signal))n.kind===`parse-error`&&i<100&&(i++,console.warn(`[admin-ui] jsonl-viewer parse-error sessionId=${t.slice(0,8)} lineNumber=${n.lineNumber}`)),s({type:`append`,line:n});e.signal.aborted||s({type:`complete`})}catch(t){if(e.signal.aborted)return;s({type:`error`,message:t instanceof Error?t.message:String(t)})}})(),()=>e.abort()},[t,n]),(0,A.useEffect)(()=>{let e=e=>{e.key===`Escape`&&a()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a]);let C=(0,A.useMemo)(()=>{if(l.length===0)return o.lines;let e=l.toLowerCase();return o.lines.filter(t=>(t.kind===`json`?JSON.stringify(t.parsed):t.raw).toLowerCase().includes(e))},[o.lines,l]),w=(0,A.useMemo)(()=>[...f].sort((e,t)=>e-t),[f]),T=C.length*Ve+Math.min(w.length,C.length)*(He-Ve),ee=Math.max(0,Je(C.length,w,m)-We),E=g===0?Math.min(C.length,30):Math.ceil(g/Ve)+2*We,te=Math.min(C.length,ee+E);(0,A.useLayoutEffect)(()=>{let e=v.current;e&&x.current&&(e.scrollTop=e.scrollHeight)},[C.length,T]);let ne=(0,A.useCallback)(e=>{let t=e.currentTarget;h(t.scrollTop),_(t.clientHeight),x.current=t.scrollHeight-t.scrollTop-t.clientHeight<Ue},[]),D=(0,A.useCallback)(e=>{p(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),re=(0,A.useCallback)(async e=>{await u(e)},[]),O=(0,A.useCallback)(e=>{let t=0;for(;t<w.length&&w[t]<e;)t++;return e*Ve+t*(He-Ve)},[w]),ie=Xe(o,i),ae=C.length===o.lines.length?0:o.lines.length-C.length;return S.current=o.lines.length,(0,j.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":`JSONL viewer`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&a()},children:(0,j.jsxs)(`div`,{className:`modal-card jsonl-viewer-card`,children:[(0,j.jsxs)(`header`,{className:`jsonl-viewer-header`,children:[(0,j.jsxs)(`div`,{className:`jsonl-viewer-title`,children:[(0,j.jsx)(`strong`,{children:r??`session`}),(0,j.jsx)(`span`,{"data-mono":!0,className:`jsonl-viewer-sid`,children:t.slice(0,8)})]}),(0,j.jsx)(`input`,{type:`text`,className:`jsonl-viewer-search`,placeholder:`search…`,value:l,onChange:e=>d(e.target.value),"aria-label":`Filter visible lines`}),(0,j.jsxs)(`div`,{className:`jsonl-viewer-counts`,children:[(0,j.jsxs)(`span`,{children:[C.length.toLocaleString(),` lines`]}),ae>0&&(0,j.jsxs)(`span`,{children:[` · `,ae.toLocaleString(),` hidden`]}),o.droppedCount>0&&(0,j.jsxs)(`span`,{children:[` · `,o.droppedCount.toLocaleString(),` older dropped`]})]}),(0,j.jsx)(`button`,{type:`button`,className:`action-btn`,"aria-label":`Close JSONL viewer`,onClick:a,children:(0,j.jsx)(b,{size:14})})]}),(0,j.jsx)(`div`,{ref:v,className:`jsonl-viewer-scroll`,onScroll:ne,children:(0,j.jsx)(`div`,{className:`jsonl-viewer-inner`,style:{height:T},children:C.slice(ee,te).map((e,t)=>{let n=ee+t,r=f.has(n),i=O(n),a=qe(e),o={position:`absolute`,top:i,left:0,right:0,height:r?He:Ve},s=(e.kind,e.raw.slice(0,200));return(0,j.jsxs)(`div`,{className:`jsonl-viewer-row`,"data-expanded":r||void 0,"data-tone":a.tone,style:o,children:[(0,j.jsxs)(`button`,{type:`button`,className:`jsonl-viewer-row__main`,onClick:()=>D(n),"aria-expanded":r,children:[(0,j.jsx)(`span`,{className:`jsonl-viewer-badge`,"data-tone":a.tone,children:a.label}),(0,j.jsx)(`span`,{className:`jsonl-viewer-line-no`,"data-mono":!0,children:e.lineNumber}),r?(0,j.jsxs)(`pre`,{className:`jsonl-viewer-pre`,"data-mono":!0,children:[e.kind===`json`?Ze(e.parsed):e.raw,e.kind===`parse-error`&&(0,j.jsx)(`span`,{className:`jsonl-viewer-error`,children:`\n\n[parse-error] ${e.error}`})]}):(0,j.jsx)(`span`,{className:`jsonl-viewer-preview`,"data-mono":!0,children:s})]}),(0,j.jsx)(`button`,{type:`button`,className:`jsonl-viewer-copy`,title:`Copy raw line`,onClick:()=>void re(e.raw),children:(0,j.jsx)(c,{size:12})})]},`${e.lineNumber}-${n}`)})})}),(0,j.jsx)(`footer`,{className:`jsonl-viewer-footer`,children:(0,j.jsx)(`span`,{className:`jsonl-viewer-status`,"data-tone":ie.tone,children:ie.label})})]})})}function Xe(e,t){return e.streamStatus===`error`?{label:`error: ${e.errorMessage??`stream failed`}`,tone:`error`}:t===`alive`?{label:`streaming`,tone:`streaming`}:{label:`complete`,tone:`complete`}}function Ze(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Qe(e){return{pid:e.pid,url:e.url,startedAt:e.startedAt,accountId:e.senderId,role:e.role,channel:e.channel,jsonlPath:e.jsonlPath,status:e.status,archived:e.archived===!0,displayName:e.displayName,titleSource:e.titleSource===`user`||e.titleSource===`ai`?e.titleSource:null,lastMessageAt:e.lastMessageAt,turnCount:e.turnCount,capped:e.capped,sizeBytes:e.sizeBytes,sessionId:e.sessionId,specialist:e.specialist,model:e.model,permissionMode:typeof e.permissionMode==`string`?e.permissionMode:null,effectivePermissionMode:typeof e.effectivePermissionMode==`string`?e.effectivePermissionMode:null}}function $e(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 et(e){return e==null?`—`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function tt(e,t,n){let r=e.permissionMode,i=e.effectivePermissionMode;return r===null&&i===null?`—`:i===null||i===r?r??i??`—`:(n.current!==t&&(n.current=t,console.warn(`[admin-ui] permission-mode-downgraded sessionId=${t.slice(0,8)} requested=${r??`null`} effective=${i}`)),(0,j.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[(0,j.jsx)(Oe,{size:14,"aria-label":`Permission mode downgraded`,style:{color:`var(--text-warn, #b8860b)`}}),(0,j.jsx)(`span`,{children:i}),(0,j.jsxs)(`span`,{className:`text-tertiary`,children:[`(requested: `,r??`null`,`, downgraded)`]})]}))}function nt({sessionId:e,cacheKey:t,onClose:n,recentsActions:o,liveRow:s,onSessionNotFound:d}){let[f,p]=(0,A.useState)(null),[_,v]=(0,A.useState)(!0),[S,w]=(0,A.useState)(null),[ee,te]=(0,A.useState)(!1),[re,O]=(0,A.useState)(null),[ie,ae]=(0,A.useState)(null),[oe,se]=(0,A.useState)(null),[ce,le]=(0,A.useState)(!1),[k,ue]=(0,A.useState)(!1),de=(0,A.useRef)(null),fe=C(t,o,`pane`),{isPinned:pe,togglePin:me}=T(r.hostname),[he,ge]=(0,A.useState)(!1),[_e,ve]=(0,A.useState)(``),be=(0,A.useRef)(s?.status),xe=s?.status,Se=(0,A.useRef)(null),Ce=(0,A.useCallback)(async()=>{v(!0),w(null);try{let n=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}/meta?session_key=${encodeURIComponent(t)}`);if(n.status===404){let t=be.current??`alive`;console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=${t} to=gone trigger=404`),te(!0),p(null),d&&d(e);return}if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`meta returned ${n.status} ${e.slice(0,200)}`)}p(Qe(await n.json())),te(!1)}catch(e){w(e instanceof Error?e.message:String(e)),console.error(`[admin-ui] sidebar-meta-pane fetch failed:`,e)}finally{v(!1)}},[e,t,d]);(0,A.useEffect)(()=>{console.info(`[admin-ui] sidebar-meta-pane sessionId=${e.slice(0,8)}`),Ce()},[Ce,e]),(0,A.useEffect)(()=>{let t=be.current;if(be.current=xe,!(t===void 0&&xe!==void 0)&&t!==xe){if(t===`alive`&&xe===`ended`){console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=alive to=ended trigger=list-flip`),Ce();return}if(t!==void 0&&xe===void 0){console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=${t} to=gone trigger=list-flip`),Ce();return}}},[xe,Ce,e]),(0,A.useEffect)(()=>{if(!ce)return;let e=e=>{de.current&&!de.current.contains(e.target)&&le(!1)},t=e=>{e.key===`Escape`&&le(!1)};return document.addEventListener(`mousedown`,e),window.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),window.removeEventListener(`keydown`,t)}},[ce]);let we=(0,A.useCallback)(async(e,t)=>{O(await u(t)?`Copied ${e}`:`Copy failed`),window.setTimeout(()=>O(null),1500)},[]),Te=(0,A.useCallback)(()=>{let n=`/api/admin/claude-sessions/${encodeURIComponent(e)}/log?session_key=${encodeURIComponent(t)}&download=1`;try{let t=document.createElement(`a`);t.href=n,t.download=``,t.rel=`noopener`,document.body.appendChild(t),t.click(),document.body.removeChild(t),console.info(`[admin-ui] pane-download-jsonl sessionId=${e.slice(0,8)} outcome=initiated`)}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[admin-ui] pane-download-jsonl sessionId=${e.slice(0,8)} outcome=error reason=${n}`),ae(`Download failed: ${n}`)}},[e,t]),De=(0,A.useCallback)(async(e,t,r)=>{ae(null);let i=e===`resume`?await fe.resume(t):e===`end`?await fe.end(t):e===`purge`?await fe.purge(t):e===`archive`?await fe.archive(t):await fe.unarchive(t);if(!i.ok){ae(i.error??`action failed`);return}r&&n()},[fe,n]);if(ee&&s===void 0)return(0,j.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24,display:`flex`,flexDirection:`column`,gap:12},children:[(0,j.jsx)(`p`,{style:{margin:0,fontSize:13,color:`var(--text-secondary)`},children:`Session ended without a transcript. Close this pane.`}),(0,j.jsx)(`div`,{children:(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:n,children:[(0,j.jsx)(b,{size:14}),` Close`]})})]});if(_&&!f)return(0,j.jsx)(`main`,{className:`session-meta-pane`,style:{padding:24},children:(0,j.jsx)(E,{size:16,className:`spinning`})});if(S&&!f)return(0,j.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24},children:[(0,j.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:S}),(0,j.jsx)(`button`,{type:`button`,className:`action-btn`,onClick:()=>void Ce(),children:`Retry`})]});if(!f)return null;let Oe=f.status===`alive`,ke=pe(e),Ae=fe.inFlight,je=f.url?f.url.match(/session_[A-Za-z0-9]+/)?.[0]??null:null;return(0,j.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24,display:`flex`,flexDirection:`column`,gap:20,overflowY:`auto`},children:[(0,j.jsxs)(`header`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[he?(0,j.jsx)(`input`,{type:`text`,value:_e,autoFocus:!0,maxLength:200,onChange:e=>ve(e.target.value),onKeyDown:async t=>{if(t.key===`Enter`){t.preventDefault();let n=_e.trim();if(n.length===0||!y(n)){ge(!1);return}if(n===(f.displayName??``)){ge(!1);return}let r=await fe.rename(e,n);r.ok?p(e=>e&&{...e,displayName:n,titleSource:`user`}):console.error(`[admin-ui] pane-rename failed: ${r.error}`),ge(!1)}else t.key===`Escape`&&(t.preventDefault(),ge(!1))},onBlur:async()=>{let t=_e.trim();if(t.length===0||!y(t)||t===(f.displayName??``)){ge(!1);return}let n=await fe.rename(e,t);n.ok?p(e=>e&&{...e,displayName:t,titleSource:`user`}):console.error(`[admin-ui] pane-rename failed: ${n.error}`),ge(!1)},"aria-label":`Rename session`,style:{fontSize:22,fontWeight:600,flex:1,background:`transparent`,border:`1px solid var(--border, #888)`,borderRadius:4,padding:`2px 6px`,color:`inherit`,font:`inherit`,minWidth:0}}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`h2`,{style:{fontSize:22,fontWeight:600,margin:0,flex:1},children:f.displayName??(0,j.jsx)(`span`,{style:{color:`var(--text-tertiary)`},children:`(unnamed)`})}),f.titleSource&&(0,j.jsx)(`span`,{style:{fontSize:11,color:`var(--text-tertiary)`},children:f.titleSource===`user`?`set by you`:`set by Claude`}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Rename session`,title:`Rename`,onClick:()=>{ve(f.displayName??``),ge(!0)},children:(0,j.jsx)(g,{size:16})})]}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Close pane`,onClick:n,children:(0,j.jsx)(b,{size:18})})]}),(0,j.jsx)(`section`,{children:(0,j.jsxs)(`dl`,{className:`meta-dl`,children:[(0,j.jsx)(`dt`,{children:`Status`}),(0,j.jsx)(`dd`,{children:Oe?`alive · pid ${f.pid??`?`}`:`ended`}),(0,j.jsx)(`dt`,{children:`Agent`}),(0,j.jsx)(`dd`,{children:f.specialist??`admin`}),(0,j.jsx)(`dt`,{title:`Permission mode. The operator's spawn-time choice is the requested mode; the binary may downgrade auto to default at runtime if the auto-mode opt-in isn't satisfied.`,children:`Mode`}),(0,j.jsx)(`dd`,{children:tt(f,e,Se)}),(0,j.jsx)(`dt`,{title:`Model id from the most recent assistant turn in the JSONL tail. Null until the first assistant turn flushes; reflects the latest model used (claude can downgrade mid-session).`,children:`Model`}),(0,j.jsx)(`dd`,{children:f.model??`—`}),(0,j.jsx)(`dt`,{title:`Claude's session — one identity, two phases: bridge suffix from claude.ai/code/<session_xxx> and the JSONL basename UUID on disk. Both reconcile to the same row.`,children:`sessionId`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:e}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy sessionId`,onClick:()=>void we(`sessionId`,e),children:(0,j.jsx)(c,{size:12})})]}),(0,j.jsx)(`dt`,{children:`Started at`}),(0,j.jsxs)(`dd`,{children:[f.startedAt,` `,(0,j.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,$e(f.startedAt),`)`]})]}),(0,j.jsx)(`dt`,{children:`Last message`}),(0,j.jsx)(`dd`,{children:f.lastMessageAt?(0,j.jsxs)(j.Fragment,{children:[f.lastMessageAt,` `,(0,j.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,$e(f.lastMessageAt),`)`]})]}):`—`}),(0,j.jsx)(`dt`,{children:`Turns`}),(0,j.jsxs)(`dd`,{children:[f.turnCount,f.capped?(0,j.jsx)(`span`,{className:`text-tertiary`,children:` (≥, JSONL exceeds tail-read cap)`}):null]}),(0,j.jsx)(`dt`,{children:`JSONL size`}),(0,j.jsx)(`dd`,{children:et(f.sizeBytes)}),(0,j.jsx)(`dt`,{children:`JSONL path`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:f.jsonlPath??`—`}),f.jsonlPath&&(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy JSONL path`,onClick:()=>void we(`path`,f.jsonlPath),children:(0,j.jsx)(c,{size:12})})]}),(0,j.jsx)(`dt`,{children:`Session URL`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:f.url??`—`}),f.url&&(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy URL`,onClick:()=>void we(`URL`,f.url),children:(0,j.jsx)(c,{size:12})})]}),(0,j.jsx)(`dt`,{title:"Cross-surface identifier — the `session_xxx` segment from the claude.ai/code URL. Operators use this to map a browser URL back to a row.",children:`Bridge id`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:je??`—`}),je&&(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy Bridge id`,onClick:()=>void we(`Bridge id`,je),children:(0,j.jsx)(c,{size:12})})]}),(0,j.jsx)(`dt`,{children:`Channel`}),(0,j.jsx)(`dd`,{children:f.channel??`—`}),(0,j.jsx)(`dt`,{children:`Role`}),(0,j.jsx)(`dd`,{children:f.role??`—`}),(0,j.jsx)(`dt`,{title:"Account / workspace UUID. Manager API still calls this `senderId` on the wire (channel-agnostic field).",children:`accountId`}),(0,j.jsx)(`dd`,{"data-mono":!0,children:(0,j.jsx)(`span`,{children:f.accountId||`—`})})]})}),(()=>{let t=[];return f.url&&t.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>window.open(f.url,`_blank`,`noopener,noreferrer`),children:[(0,j.jsx)(ne,{size:14}),` Open in new tab`]},`open-tab`)),f.jsonlPath&&t.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,title:`Download the JSONL transcript file`,onClick:()=>Te(),children:[(0,j.jsx)(l,{size:14}),` Download JSONL`]},`download-jsonl`),(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,title:`View the JSONL transcript in-app`,onClick:()=>ue(!0),children:[(0,j.jsx)(D,{size:14}),` View JSONL`]},`view-jsonl`)),Oe||t.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`primary`,disabled:Ae===`resume`,onClick:()=>void De(`resume`,e,!1),children:[Ae===`resume`?(0,j.jsx)(E,{size:14,className:`spinning`}):(0,j.jsx)(a,{size:14}),` Resume`]},`resume`)),t.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-active":ke?`true`:void 0,onClick:()=>me(e),children:[(0,j.jsx)(Ee,{size:14}),` `,ke?`Unpin`:`Pin`]},`pin`),f.archived?(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,disabled:Ae===`unarchive`,onClick:()=>void De(`unarchive`,e,!0),children:[Ae===`unarchive`?(0,j.jsx)(E,{size:14,className:`spinning`}):(0,j.jsx)(m,{size:14}),` Unarchive`]},`archive`):(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,disabled:Ae===`archive`,onClick:()=>{Oe?se({action:`archive-alive`,sessionId:e,displayName:f.displayName}):De(`archive`,e,!0)},children:[Ae===`archive`?(0,j.jsx)(E,{size:14,className:`spinning`}):(0,j.jsx)(h,{size:14}),` Archive`]},`archive`)),t.push(Oe?(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:Ae===`end`,onClick:()=>se({action:`end`,sessionId:e,displayName:f.displayName}),children:[(0,j.jsx)(x,{size:14}),` End session`]},`end`):(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:Ae===`purge`,onClick:()=>se({action:`purge`,sessionId:e,displayName:f.displayName}),children:[(0,j.jsx)(i,{size:14}),` Purge JSONL`]},`purge`)),(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`section`,{className:`action-bar`,children:t}),(0,j.jsxs)(`section`,{className:`session-actions-overflow`,ref:de,children:[(0,j.jsx)(`button`,{type:`button`,className:`session-actions-overflow__trigger`,"aria-label":`Actions`,"aria-haspopup":`menu`,"aria-expanded":ce,onClick:()=>{le(t=>{let n=!t;return n&&console.info(`[admin-ui] pane-actions-overflow-open sessionId=${e.slice(0,8)}`),n})},children:(0,j.jsx)(ye,{size:14})}),ce&&(0,j.jsx)(`div`,{className:`overflow-popover`,role:`menu`,onClick:()=>le(!1),children:t})]})]})})(),re&&(0,j.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:re}),ie&&(0,j.jsx)(it,{message:ie,onClose:()=>ae(null)}),k&&f.jsonlPath&&(0,j.jsx)(Ye,{sessionId:e,cacheKey:t,displayName:f.displayName,liveStatus:f.status,onClose:()=>ue(!1)}),S&&(0,j.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:S}),oe&&(0,j.jsx)(rt,{confirm:oe,busy:oe.action===`archive-alive`?Ae===`end`||Ae===`archive`:Ae===oe.action,onCancel:()=>se(null),onConfirm:async()=>{if(oe.action===`archive-alive`){ae(null);let e=await fe.end(oe.sessionId);if(!e.ok){ae(e.error??`failed to end session`),se(null);return}let t=await fe.archive(oe.sessionId);if(!t.ok){ae(t.error??`failed to archive session`),se(null);return}se(null),n();return}await De(oe.action,oe.sessionId,oe.action===`purge`),se(null)}})]})}function rt({confirm:e,busy:t,onCancel:n,onConfirm:r}){let i,a,o,s=e.displayName??e.sessionId.slice(0,8);switch(e.action){case`end`:i=`End live session?`,a=`This kills the PTY for ${s}. The JSONL is kept on disk and can be resumed later.`,o=`End session`;break;case`purge`:i=`Purge session JSONL?`,a=`This hard-deletes the transcript for ${s}. The action cannot be undone.`,o=`Purge`;break;case`archive-alive`:i=`Session is still running`,a=`End ${s} before archiving? The JSONL is kept and the row moves to the archive.`,o=`End and archive`;break}return(0,j.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&!t&&n()},children:(0,j.jsxs)(`div`,{className:`modal-card`,children:[(0,j.jsx)(`h3`,{style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:i}),(0,j.jsx)(`p`,{style:{margin:0,marginBottom:12,fontSize:13},children:a}),(0,j.jsxs)(`div`,{className:`modal-action-row`,children:[(0,j.jsx)(`button`,{type:`button`,className:`modal-action-btn`,disabled:t,onClick:n,children:`Cancel`}),(0,j.jsx)(`button`,{type:`button`,className:`modal-action-btn`,"data-variant":`danger`,disabled:t,onClick:()=>r(),children:t?(0,j.jsx)(E,{size:13,className:`spinning`}):o})]})]})})}function it({message:e,onClose:t}){return(0,j.jsx)(`div`,{role:`alertdialog`,"aria-modal":`true`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&t()},children:(0,j.jsxs)(`div`,{className:`modal-card`,children:[(0,j.jsx)(`h3`,{style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:`Action failed`}),(0,j.jsx)(`p`,{style:{margin:0,marginBottom:12,fontSize:13,wordBreak:`break-word`},children:e}),(0,j.jsx)(`div`,{className:`modal-action-row`,children:(0,j.jsx)(`button`,{type:`button`,className:`modal-action-btn`,onClick:t,children:`OK`})})]})})}function at({onOpen:e}){return(0,j.jsx)(`footer`,{className:`admin-footer`,children:(0,j.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,j.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,j.jsx)(`span`,{children:`Powered by Claude Code`})]})})}var ot=t((e=>{var t=p();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 c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),st=t(((e,t)=>{t.exports=ot()})),ct=st(),lt=e(f(),1);function ut(e){this.content=e}ut.prototype={constructor:ut,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 ut(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 ut(n)},addToStart:function(e,t){return new ut([e,t].concat(this.remove(e).content))},addToEnd:function(e,t){var n=this.remove(e).content.slice();return n.push(e,t),new ut(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 ut(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=ut.from(e),e.size?new ut(e.content.concat(this.subtract(e).content)):this},append:function(e){return e=ut.from(e),e.size?new ut(this.subtract(e).content.concat(e.content)):this},subtract:function(e){var t=this;e=ut.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}},ut.from=function(e){if(e instanceof ut)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new ut(t)};function dt(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=dt(i.content,a.content,n+1);if(e!=null)return e}n+=i.nodeSize}}function ft(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=ft(o.content,s.content,n-1,r-1);if(e)return e}n-=c,r-=c}}var M=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 dt(this,e,t)}findDiffEnd(e,t=this.size,n=e.size){return ft(this,e,t,n)}findIndex(e){if(e==0)return mt(0,e);if(e==this.size)return mt(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?mt(t+1,i):mt(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)`:``))}};M.empty=new M([],0);var pt={index:0,offset:0};function mt(e,t){return pt.index=e,pt.offset=t,pt}function ht(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(!ht(e[n],t[n]))return!1}else{for(let n in e)if(!(n in t)||!ht(e[n],t[n]))return!1;for(let n in t)if(!(n in e))return!1}return!0}var N=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&&ht(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}};N.none=[];var gt=class extends Error{},P=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=vt(this.content,t+this.openStart,n);return r&&new e(r,this.openStart,this.openEnd)}removeBetween(t,n){return new e(_t(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(M.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)}};P.empty=new P(M.empty,0,0);function _t(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(_t(a.content,t-i-1,n-i-1)))}function vt(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=vt(o.content,t-a-1,n,o);return s&&e.replaceChild(i,o.copy(s))}function yt(e,t,n){if(n.openStart>e.depth)throw new gt(`Inserted content deeper than insertion position`);if(e.depth-n.openStart!=t.depth-n.openEnd)throw new gt(`Inconsistent open depths`);return bt(e,t,n,0)}function bt(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=bt(e,t,n,r+1);return a.copy(a.content.replaceChild(i,o))}else if(!n.content.size)return Tt(a,Dt(e,t,r));else if(!n.openStart&&!n.openEnd&&e.depth==r&&t.depth==r){let r=e.parent,i=r.content;return Tt(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}else{let{start:i,end:o}=Ot(n,e);return Tt(a,Et(e,i,o,t,r))}}function xt(e,t){if(!t.type.compatibleContent(e.type))throw new gt(`Cannot join `+t.type.name+` onto `+e.type.name)}function St(e,t,n){let r=e.node(n);return xt(r,t.node(n)),r}function Ct(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 wt(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&&(Ct(e.nodeAfter,r),a++));for(let e=a;e<o;e++)Ct(i.child(e),r);t&&t.depth==n&&t.textOffset&&Ct(t.nodeBefore,r)}function Tt(e,t){return e.type.checkContent(t),e.copy(t)}function Et(e,t,n,r,i){let a=e.depth>i&&St(e,t,i+1),o=r.depth>i&&St(n,r,i+1),s=[];return wt(null,e,i,s),a&&o&&t.index(i)==n.index(i)?(xt(a,o),Ct(Tt(a,Et(e,t,n,r,i+1)),s)):(a&&Ct(Tt(a,Dt(e,t,i+1)),s),wt(t,n,i,s),o&&Ct(Tt(o,Dt(n,r,i+1)),s)),wt(r,null,i,s),new M(s)}function Dt(e,t,n){let r=[];return wt(null,e,n,r),e.depth>n&&Ct(Tt(St(e,t,n+1),Dt(e,t,n+1)),r),wt(t,null,n,r),new M(r)}function Ot(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(M.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}var kt=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 N.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 Nt(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=Mt.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 Mt.set(t,r=new At);let i=r.elts[r.i]=e.resolve(t,n);return r.i=(r.i+1)%jt,i}},At=class{constructor(){this.elts=[],this.i=0}},jt=12,Mt=new WeakMap,Nt=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)}},Pt=Object.create(null),Ft=class e{constructor(e,t,n,r=N.none){this.type=e,this.attrs=t,this.marks=r,this.content=n||M.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&&ht(this.attrs,t||e.defaultAttrs||Pt)&&N.sameSet(this.marks,n||N.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 P.empty;let r=this.resolve(e),i=this.resolve(t),a=n?0:r.sharedDepth(t),o=r.start(a);return new P(r.node(a).content.cut(r.pos-o,i.pos-o),r.depth-a,i.depth-a)}replace(e,t,n){return yt(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 kt.resolveCached(this,e)}resolveNoCache(e){return kt.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()+`)`),Lt(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=M.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=N.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(!N.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=M.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}};Ft.prototype.text=void 0;var It=class e extends Ft{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):Lt(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 Lt(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+`(`+t+`)`;return t}var Rt=class e{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(t,n){let r=new zt(t,n);if(r.next==null)return e.empty;let i=Bt(r);r.next&&r.err(`Unexpected trailing text`);let a=Xt(qt(i));return Zt(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 M.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(`
|
|
3
3
|
`)}};Rt.empty=new Rt(!0);var zt=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 Bt(e){let t=[];do t.push(Vt(e));while(e.eat(`|`));return t.length==1?t[0]:{type:`choice`,exprs:t}}function Vt(e){let t=[];do t.push(Ht(e));while(e.next&&e.next!=`)`&&e.next!=`|`);return t.length==1?t[0]:{type:`seq`,exprs:t}}function Ht(e){let t=Kt(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=Wt(e,t);else break;return t}function Ut(e){/\D/.test(e.next)&&e.err(`Expected number, got '`+e.next+`'`);let t=Number(e.next);return e.pos++,t}function Wt(e,t){let n=Ut(e),r=n;return e.eat(`,`)&&(r=e.next==`}`?-1:Ut(e)),e.eat(`}`)||e.err(`Unclosed braced range`),{type:`range`,min:n,max:r,expr:t}}function Gt(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 Kt(e){if(e.eat(`(`)){let t=Bt(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=Gt(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 qt(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 Jt(e,t){return t-e}function Yt(e,t){let n=[];return r(t),n.sort(Jt);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 Xt(e){let t=Object.create(null);return n(Yt(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]);Yt(e,n).forEach(e=>{r||i.push([t,r=[]]),r.indexOf(e)==-1&&r.push(e)})})});let a=t[r.join(`,`)]=new Rt(r.indexOf(e.length-1)>-1);for(let e=0;e<i.length;e++){let r=i[e][1].sort(Jt);a.next.push({type:i[e][0],next:t[r.join(`,`)]||n(r)})}return a}}function Zt(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 Qt(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 $t(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 en(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 tn(e,t){let n=Object.create(null);if(t)for(let r in t)n[r]=new an(e,r,t[r]);return n}var nn=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=tn(e,n.attrs),this.defaultAttrs=Qt(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==Rt.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:$t(this.attrs,e)}create(e=null,t,n){if(this.isText)throw Error(`NodeType.create can't construct text nodes`);return new Ft(this,this.computeAttrs(e),M.from(t),N.setFrom(n))}createChecked(e=null,t,n){return t=M.from(t),this.checkContent(t),new Ft(this,this.computeAttrs(e),t,N.setFrom(n))}createAndFill(e=null,t,n){if(e=this.computeAttrs(e),t=M.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(M.empty,!0);return i?new Ft(this,e,t.append(i),N.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){en(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:N.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 rn(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 an=class{constructor(e,t,n){this.hasDefault=Object.prototype.hasOwnProperty.call(n,`default`),this.default=n.default,this.validate=typeof n.validate==`string`?rn(e,t,n.validate):n.validate}get isRequired(){return!this.hasDefault}},on=class e{constructor(e,t,n,r){this.name=e,this.rank=t,this.schema=n,this.spec=r,this.attrs=tn(e,r.attrs),this.excluded=null;let i=Qt(this.attrs);this.instance=i?new N(this,i):null}create(e=null){return!e&&this.instance?this.instance:new N(this,$t(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){en(this.attrs,e,`mark`,this.name)}excludes(e){return this.excluded.indexOf(e)>-1}},sn=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=ut.from(e.nodes),t.marks=ut.from(e.marks||{}),this.nodes=nn.compile(this.spec.nodes,this),this.marks=on.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]=Rt.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?cn(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==``?[]:cn(this,n.split(` `))}this.nodeFromJSON=e=>Ft.fromJSON(this,e),this.markFromJSON=e=>N.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 nn))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 It(n,n.defaultAttrs,e,N.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 cn(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 ln(e){return e.tag!=null}function un(e){return e.style!=null}var dn=class e{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let n=this.matchedStyles=[];t.forEach(e=>{if(ln(e))this.tags.push(e);else if(un(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 bn(this,t,!1);return n.addAll(e,N.none,t.from,t.to),n.finish()}parseSlice(e,t={}){let n=new bn(this,t,!0);return n.addAll(e,N.none,t.from,t.to),P.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(Sn(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=Cn(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=Cn(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)))}},fn={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},pn={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},mn={ol:!0,ul:!0},hn=1,gn=2,_n=4;function vn(e,t,n){return t==null?e&&e.whitespace==`pre`?hn|gn:n&~_n:(t?hn:0)|(t===`full`?gn:0)}var yn=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=N.none,this.match=i||(a&_n?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(M.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&hn)){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=M.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(M.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&&!fn.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}},bn=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=vn(null,t.preserveWhitespace,0)|(n?_n:0);i=r?new yn(r.type,r.attrs,N.none,!0,t.topMatch||r.type.contentMatch,a):n?new yn(null,null,N.none,!0,null,a):new yn(e.schema.topNodeType,null,N.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&gn?`full`:this.localPreserveWS||(r.options&hn)>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,`
|
|
4
4
|
`);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;mn.hasOwnProperty(a)&&this.parser.normalizeLists&&xn(e);let s=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(o=this.parser.matchTag(e,this,n));out:if(s?s.ignore:pn.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(fn.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(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,u as t}from"./ChatInput-CJo_77bp.js";import"./graph-labels-h39S93Xo.js";import{n}from"./page-
|
|
1
|
+
import{_ as e,u as t}from"./ChatInput-CJo_77bp.js";import"./graph-labels-h39S93Xo.js";import{n}from"./page-CFRU-BdJ.js";import"./Checkbox-YrQovXpN.js";var r=e(),i=t();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
|
|
@@ -48,4 +48,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
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),Xu(U(a=n.call(this)),`_queue`,null),e&&!nm(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 Yu(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(nm(e)){var a=Gd(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=sh({},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(nm(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 qp(r).call(r,i)}},{key:`updateOnly`,value:function(e,t){var n,r=this;nm(e)||(e=[e]);var i=Gd(n=Gd(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,qp(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:Gd(i).call(i,(function(e){return e.id})),oldData:Gd(i).call(i,(function(e){return e.oldData})),data:Gd(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):nm(e)?(r=e,i=t):i=e;var a=i&&i.returnType===`Object`?`Object`:`Array`,o=i&&zd(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=Vp(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&&zd(e),r=e&&e.order,i=Vp(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],w=t.get(te);w!=null&&a.push(w[this._idProp])}return a}},{key:`getDataSet`,value:function(){return this}},{key:`forEach`,value:function(e,t){var n=t&&zd(t),r=this._data,i=Vp(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&&zd(t),r=[],i=this._data,a=Vp(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&&Nd(n=nm(t)?t:am(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=nm(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=Vp(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=Vp(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: `+_h(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]:_d(n=LT(this._data)).call(n,this._data)})}}]),r}(KT);function iE(e,t){var n=Hp!==void 0&&Qf(e)||e[`@@iterator`];if(!n){if(nm(e)||(n=function(e,t){var n;if(e){if(typeof e==`string`)return aE(e,t);var r=Jp(n=Object.prototype.toString.call(e)).call(n,8,-1);if(r===`Object`&&e.constructor&&(r=e.constructor.name),r===`Map`||r===`Set`)return Yf(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),Xu(U(o=n.call(this)),`length`,0),Xu(U(o),`_ids`,new qT),o._options=i||{},o._listener=_d(a=o._onEvent).call(a,U(o)),o.setData(e),o}return Yu(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:zd(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:zd(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:zd(this._options)}),t=Vp(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)||nm(e)?(r=e,n=t):n=e;var i=sh({},this._options,n),a=zd(this._options),o=n&&zd(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=zd(this._options),r=e==null?null:zd(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=zd(this._options),a=t&&zd(t);r=a?i?function(e){return i(e)&&a(e)}:a:i,gm(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=zd(this._options),a=t&&zd(t);return r=a?i?function(e){return i(e)&&a(e)}:a:i,Gd(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]:_d(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(tm(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 gm(t)==`function`&&typeof t.get==`function`&&typeof t.getDataSet==`function`&&typeof t.getIds==`function`&&typeof t.length==`number`&&typeof Gd(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 lf(e)},e.isDataSetLike=cE,e.isDataViewLike=function(e,t){return typeof t==`object`&&!!t&&e===t.idProp&&typeof gm(t)==`function`&&typeof t.get==`function`&&typeof t.getDataSet==`function`&&typeof t.getIds==`function`&&typeof t.length==`number`&&typeof Gd(t)==`function`&&typeof t.off==`function`&&typeof t.on==`function`&&typeof t.stream==`function`&&cE(e,t.getDataSet())}}))}));function T(e){let t=new URLSearchParams(e),n=t.get(`nodeId`);if(n)return{kind:`focus`,nodeId:n,nodeLabel:t.get(`label`)};let r=t.get(`label`);return r?{kind:`labels`,labels:[r]}:null}function E(e,t){return e.length<10?[...e,t]:[e[0],...e.slice(e.length-8),t]}function D(e){return e.length<=1?e:e.slice(0,-1)}function O(e){return[e]}function k(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 re(e){let t=e[0];if(t.kind!==`filter`)throw Error(`view-stack invariant: root must be filter view`);return t}var A=`admin-sessions`;function j(){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(A)}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=j();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 ae(e){return e.trashed===!0?`skip-trashed`:`pivot`}function oe(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 se(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 ce=2e3;function le(e){let t=typeof e==`number`?e:Number(e);return!Number.isFinite(t)||t<=0?100:Math.min(Math.max(Math.floor(t),1),ce)}function ue(e,t,n,r){let i=encodeURIComponent(t.join(`,`));return`/api/admin/graph-search?q=${encodeURIComponent(e)}&labels=${i}&limit=${n}${r?`&threshold=0`:``}`}var de=new Set([`Conversation`,`AdminConversation`,`PublicConversation`]),fe=/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2})/,pe=/^\d{4}-\d{2}-\d{2}T(\d{2}:\d{2}:\d{2})/,me=/^(\d{4}-\d{2}-\d{2})T/,he=24;function ge(e){let t=e.match(fe);return t?`${t[1]} ${t[2]}`:null}function _e(e){let t=e.match(pe);return t?t[1]:null}function ve(e){let t=e.match(me);return t?t[1]:null}function ye(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=ge(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=_e(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 be(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=ge(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 xe(e,t){if(e.length===0)return``;let n=e.split(/\s+/).filter(e=>e.length>0);if(n.length===0)return``;if(n.length===1){let e=n[0];return e.length<=he?e:e.slice(0,he-1)+`…`}let r=[],i=0;for(;r.length<t&&i<n.length;){let e=``;for(;i<n.length;){let t=e.length===0?n[i]:`${e} ${n[i]}`;if(t.length<=he)e=t,i++;else break}e.length===0&&(e=n[i].slice(0,he-1)+`…`,i++),r.push(e)}if(i<n.length&&r.length>0){let e=n.slice(i).join(` `),t=r.length-1;r[t]=(r[t].length===0?e:`${r[t]} ${e}`).slice(0,he-1)+`…`}return r.join(`
|
|
50
50
|
`)}function Se(e){return xe(e,2)}function M(e,t){let n=e.labels[0];if(!n||!de.has(n)||t<.7)return ye(e);let r=Se(be(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=ve(a);return s===null?r:`${r}\n${s} · ${o} msgs`}function N(e,t){if(t<.7)return ye(e);let n=e.labels[0];return n&&de.has(n)?M(e,t):xe(be(e),3)}function Ce(e){let t=e.properties,n=typeof t.createdAt==`string`?t.createdAt:``,r=typeof t.updatedAt==`string`?t.updatedAt:``,i=e.labels.join(` · `);return[be(e),i,`id: ${e.id}`,n?`createdAt: ${n}`:``,r?`updatedAt: ${r}`:``].filter(e=>e.length>0).join(`
|
|
51
|
-
`)}var we={solver:`barnesHut`,barnesHut:{gravitationalConstant:-2e3,centralGravity:.4,springLength:170,springConstant:.04},stabilization:{iterations:200}},Te=220,Ee=3;function P(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:we,nodePositions:new Map};let i=new Map,a=(Ee-1)*Te/2,o=(Math.ceil(e.nodes.length/Ee)-1)*Te/2;for(let t=0;t<e.nodes.length;t++){let n=t%Ee,r=Math.floor(t/Ee);i.set(e.nodes[t].id,{x:n*Te-a,y:r*Te-o})}return{physics:!1,nodePositions:i}}var F=e(a(),1),De=w(),Oe=ne(),I=i();function ke(e){return e<.7?`compact`:e<1.3?`wrapped`:`detailed`}var Ae=150,je=`#FBBF24`;function Me(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 Ne=`maxy-graph-search-limit-v1`,Pe=250,Fe=1200;function Ie(){let[e,t]=(0,F.useState)(null),[n,r]=(0,F.useState)(!1),[i,a]=(0,F.useState)(void 0),[s,c]=(0,F.useState)(null),[l,u]=(0,F.useState)(void 0),[d,f]=(0,F.useState)(null),[p,h]=(0,F.useState)(null),v=(0,F.useMemo)(()=>typeof window>`u`?null:T(window.location.search),[]),y=(0,F.useMemo)(()=>v?.kind===`focus`?{nodeId:v.nodeId,nodeLabel:v.nodeLabel}:null,[v]),b=(0,F.useMemo)(()=>v?.kind===`labels`?v.labels:null,[v]);(0,F.useEffect)(()=>{y&&He(`deep-link`,{nodeId:y.nodeId.length>16?y.nodeId.slice(0,16)+`…`:y.nodeId,label:y.nodeLabel??``})},[y]),(0,F.useEffect)(()=>{!b||b.length===0||He(`label-seed`,{label:b[0]})},[b]),(0,F.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.businessName==`string`&&a(e.businessName),e.conversationId!==void 0&&c(e.conversationId??null),h(e.role??null),u(e.userName===void 0?null:e.userName),f(e.avatar??null)}catch{}t(n),r(!0)}}).catch(()=>{e||(t(n),r(!0))}),()=>{e=!0}},[]);let x=(0,F.useCallback)(()=>{try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`},[]);return n?e?(0,I.jsxs)(o,{cacheKey:e,businessName:i,conversationId:s,onLogout:x,userName:l,userAvatar:d,role:p,children:[(0,I.jsx)(g,{}),(0,I.jsxs)(`div`,{className:`data-page graph-page`,children:[(0,I.jsx)(`header`,{className:`data-header`,children:(0,I.jsxs)(`h1`,{className:`data-title`,children:[(0,I.jsx)(m,{size:18}),` Graph`]})}),(0,I.jsx)(`main`,{className:`graph-main`,children:(0,I.jsx)(Le,{cacheKey:e,initialFocus:y,initialLabels:b})})]})]}):(0,I.jsxs)(`div`,{className:`data-page`,children:[(0,I.jsx)(`header`,{className:`data-header`,children:(0,I.jsxs)(`h1`,{className:`data-title`,children:[(0,I.jsx)(m,{size:18}),` Graph`]})}),(0,I.jsxs)(`div`,{className:`data-empty`,children:[(0,I.jsx)(`p`,{children:`You are not signed in.`}),(0,I.jsxs)(`p`,{children:[`Open the `,(0,I.jsx)(`a`,{href:`/`,className:`data-link`,children:`main admin page`}),` and log in, then return here.`]})]})]}):(0,I.jsx)(`div`,{className:`data-page`,children:(0,I.jsxs)(`div`,{className:`data-loading`,children:[(0,I.jsx)(_,{size:18,className:`spin`}),` Loading…`]})})}function Le({cacheKey:e,initialFocus:t=null,initialLabels:r=null}){let{adminFetch:i,cacheKey:a,sessionRefetchNonce:o,banner:m,reloadToLogin:g}=p({initialCacheKey:e,surface:`graph`}),ee=(0,F.useRef)(null),te=(0,F.useRef)(null),w=(0,F.useRef)(null),ne=(0,F.useRef)(null),T=(0,F.useRef)(new Map),A=(0,F.useRef)([]),j=(0,F.useRef)(null),ce=(0,F.useRef)(null),de=(0,F.useRef)(null),fe=(0,F.useRef)([]),pe=(0,F.useRef)(null),me=(0,F.useRef)(null),he=(0,F.useRef)(null),ge=(0,F.useRef)(null),[_e,ve]=(0,F.useState)([{kind:`filter`,selectedLabels:[],includeTrashed:!1,includeAgentActions:!1}]);(0,F.useEffect)(()=>{t?.nodeId&&ve(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 ye=r&&r.length>0?[...r].sort().join(`,`):null;(0,F.useEffect)(()=>{ye&&(At.current=!0,ve([{kind:`filter`,selectedLabels:ye.split(`,`),includeTrashed:!1,includeAgentActions:!1}]))},[ye]);let[be,xe]=(0,F.useState)(!1),[Se,M]=(0,F.useState)(null),[we,Te]=(0,F.useState)(null),[Ee,Ie]=(0,F.useState)(0),[Le,Ue]=(0,F.useState)(null),[We,Ge]=(0,F.useState)(!1),[Ke,qe]=(0,F.useState)(!1),[Je,Ye]=(0,F.useState)(null),[Xe,Ze]=(0,F.useState)(``),[Qe,$e]=(0,F.useState)(``),[et,tt]=(0,F.useState)(null),[nt,rt]=(0,F.useState)(null),[it,at]=(0,F.useState)(()=>{if(typeof window>`u`)return 100;let e=window.localStorage.getItem(Ne);return e?le(e):100}),[ot,st]=(0,F.useState)(it),[ct,lt]=(0,F.useState)(`hybrid`),[ut,dt]=(0,F.useState)(0),[ft,pt]=(0,F.useState)(!1),[mt,ht]=(0,F.useState)(0),[gt,_t]=(0,F.useState)(0),[vt,yt]=(0,F.useState)([]),[bt,xt]=(0,F.useState)({labels:[],includeTrashed:!1}),[St,Ct]=(0,F.useState)(!1),[wt,Tt]=(0,F.useState)([]),[Et,Dt]=(0,F.useState)([]),[Ot,kt]=(0,F.useState)(!1),At=(0,F.useRef)(!1),jt=(0,F.useRef)(null),Mt=(0,F.useMemo)(()=>{let e=new Set;for(let t of T.current.values()){let n=h(t.labels);n&&e.add(n)}return[...e].sort()},[Ee]);(0,F.useEffect)(()=>{let e=!1,t=i(`/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=i(`/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&&(yt(t.labels),xt(n),!At.current)){At.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)&&ve(e=>[{kind:`filter`,selectedLabels:r,includeTrashed:n.includeTrashed,includeAgentActions:!1},...e.slice(1)])}}),()=>{e=!0}},[a,o,i]);let Nt=_e[0].kind===`filter`?_e[0].includeAgentActions:!1;(0,F.useEffect)(()=>{if(!At.current)return;let e=!1;return i(`/api/admin/graph-labels-in-graph?includeAgentActions=${Nt?`1`:`0`}`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(t=>{e||yt(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,o,Nt,gt,i]),(0,F.useEffect)(()=>{if(!St)return;let e=e=>{jt.current&&(jt.current.contains(e.target)||Ct(!1))},t=e=>{e.key===`Escape`&&Ct(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[St]);let Pt=(0,F.useCallback)(()=>{if(w.current)try{w.current.clear()}catch{}if(ne.current)try{ne.current.clear()}catch{}},[]),Ft=(0,F.useCallback)((e,t)=>{Ye(null),i(`/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}`);Ue(null);try{te.current?.unselectAll()}catch{}ve(e=>[re(e)]),ht(e=>e+1),ie(`graph-trash`)}).catch(n=>{let r=n instanceof Error?n.message:String(n);Ye(`Failed to delete: ${r}`),qe(!0),window.setTimeout(()=>qe(!1),Fe);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{}})},[i]),It=(0,F.useCallback)(e=>{Ye(null);let t=e.length;Promise.allSettled(e.map(e=>i(`/api/admin/graph-delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({elementId:e,by:`graph-drag-trash`})}).then(async t=>{let n=await t.json().catch(()=>({error:`HTTP ${t.status}`}));if(!t.ok)throw Error(n.error??`HTTP ${t.status}`);return e}))).then(e=>{let n=e.filter(e=>e.status===`rejected`);Ue(null);try{te.current?.unselectAll()}catch{}if(ve(e=>[re(e)]),ht(e=>e+1),ie(`graph-trash`),n.length>0){let e=t-n.length;Ye(e===0?`Failed to delete ${t} node${t===1?``:`s`}.`:`Deleted ${e} of ${t}; ${n.length} failed.`),qe(!0),window.setTimeout(()=>qe(!1),Fe);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-drag-delete-batch`,total:t,failed:n.length}),keepalive:!0}).catch(()=>{})}catch{}}})},[i]),Lt=_e[_e.length-1],Rt=(0,F.useMemo)(()=>k(_e),[_e]),zt=(0,F.useRef)(Rt);(0,F.useEffect)(()=>{zt.current=Rt},[Rt]);let Bt=(0,F.useRef)(_e);(0,F.useEffect)(()=>{Bt.current=_e},[_e]),(0,F.useEffect)(()=>{if(Lt.kind===`filter`&&Lt.selectedLabels.length===0){j.current?.abort(),j.current=null,xe(!1),M(null),Te(null),Ie(0),T.current=new Map,Pt();return}if(Qe){j.current?.abort(),j.current=null;return}let e=window.setTimeout(()=>{j.current?.abort();let e=new AbortController;j.current=e,xe(!0),M(null),Te(null),i(ze(Lt,{includeAgentActions:re(_e).includeAgentActions,search:null,channel:wt,messageSublabel:Et}),{signal:e.signal}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(e.status===413)throw new Be(t);if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);return t}).then(t=>{e.signal.aborted||(T.current=new Map(t.nodes.map(e=>[e.id,e])),Ie(t.nodes.length),Vt(t.nodes,t.edges))}).catch(t=>{if(!e.signal.aborted){if(t instanceof Be){Te(t.body),Ie(0),T.current=new Map,Pt();return}M(t instanceof Error?t.message:String(t))}}).finally(()=>{e.signal.aborted||xe(!1)})},Pe);return()=>{window.clearTimeout(e)}},[a,Rt,mt,o,Qe,ot,wt,Et]),(0,F.useEffect)(()=>()=>{j.current?.abort(),te.current?.destroy(),te.current=null,ge.current!==null&&(clearTimeout(ge.current),ge.current=null)},[]);let Vt=(0,F.useCallback)((e,t)=>{if(!ee.current)return;A.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=u(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:N(e,1),title:Ce(e),color:{background:`${r}40`,border:r},borderWidth:2,shapeProperties:{borderDashes:[6,4]},group:t,...o}:{id:e.id,label:N(e,1),title:Ce(e),color:r,group:t,...o}}),s=new Set(o.map(e=>e.id)),c=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})),l=P({nodes:e,edges:t});w.current=new Oe.DataSet(l.nodePositions.size>0?o.map(e=>{if(e.x!==void 0||e.y!==void 0)return e;let t=l.nodePositions.get(e.id);return t?{...e,x:t.x,y:t.y,physics:!1}:e}):o),ne.current=new Oe.DataSet(c);let d={autoResize:!0,layout:{improvedLayout:!1,randomSeed:Me(zt.current)},physics:l.physics===!1?!1:{solver:l.physics.solver,barnesHut:l.physics.barnesHut,stabilization:l.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,e.borderColor=`#0F172A`,e.shadow=!0,e.shadowColor=`rgba(15, 23, 42, 0.55)`,e.shadowSize=8,e.shadowX=0,e.shadowY=0},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,multiselect:!0}};try{te.current?.destroy(),ge.current!==null&&(clearTimeout(ge.current),ge.current=null),he.current=null;let e=new De.Network(ee.current,{nodes:w.current,edges:ne.current},d);te.current=e,e.on(`zoom`,()=>{ge.current!==null&&clearTimeout(ge.current),ge.current=setTimeout(()=>{ge.current=null;let e=te.current,t=w.current;if(!e||!t)return;let n;try{n=e.getScale()}catch{return}let r=ke(n);if(r===he.current)return;he.current=r;let i=[];for(let e of T.current.values()){if(!e.labels[0])continue;let{colour:t}=u(e.labels),r=e.trashed?{background:`${t}40`,border:t}:t;i.push({id:e.id,label:N(e,n),color:r})}i.length>0&&t.update(i),console.error(`[graph-page] zoom-tier scale=${n.toFixed(3)} tier=${r} nodes=${i.length}`)},Ae)}),e.on(`click`,e=>{let t=e.nodes[0];if(!t)return;let n=T.current.get(t);if(!n)return;if(ae(n)===`skip-trashed`){Ue(n);return}let r=Bt.current[Bt.current.length-1];if(r.kind===`neighbourhood`&&r.rootElementId===t){Ue(e=>e?.id===t?null:n);return}Ue(null);let i={kind:`neighbourhood`,rootElementId:t,rootLabel:n.labels[0]??null};ve(e=>{let n=E(e,i),r=n.length-1;return n.length>e.length&&He(`nav-push`,{depth:r,kind:i.kind,rootElementId:t}),n.length===10&&e.length===10&&He(`view-stack-cap-hit`,{depth:10,rootElementId:t}),n})}),e.on(`deselectNode`,()=>{Ue(null)});let t=e=>{let t=ee.current,n=ce.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=>{if(e.nodes.length===0){de.current=null,fe.current=[];return}fe.current=[...e.nodes],de.current=e.nodes[0],n?.classList.add(`graph-dragging`)}),e.on(`dragging`,e=>{if(fe.current.length===0)return;let n=t(e.pointer.DOM);Ge(e=>e===n?e:n)}),e.on(`dragEnd`,e=>{let r=fe.current;if(fe.current=[],de.current=null,Ge(!1),n?.classList.remove(`graph-dragging`),r.length!==0&&t(e.pointer.DOM))if(r.length===1){let e=T.current.get(r[0])?.labels[0]??`Unknown`;Ft(r[0],e)}else It(r)})}catch(e){let t=e instanceof Error?e.message:String(e);M(`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,F.useEffect)(()=>{let e=ee.current;if(!e)return;let t=t=>{let n=me.current,r=pe.current,i=e.parentElement;if(!n||!r||!i)return;let a=i.getBoundingClientRect(),o=Math.min(n.clientX,t.clientX)-a.left,s=Math.min(n.clientY,t.clientY)-a.top,c=Math.max(n.clientX,t.clientX)-a.left,l=Math.max(n.clientY,t.clientY)-a.top;r.style.left=`${o}px`,r.style.top=`${s}px`,r.style.width=`${c-o}px`,r.style.height=`${l-s}px`},n=r=>{document.removeEventListener(`mousemove`,t,!0),document.removeEventListener(`mouseup`,n,!0);let i=me.current;me.current=null;let a=pe.current;a&&(a.style.display=`none`);let o=te.current;if(!i||!o)return;let s=e.getBoundingClientRect(),c=i.clientX-s.left,l=i.clientY-s.top,u=r.clientX-s.left,d=r.clientY-s.top,f=Math.min(c,u),p=Math.min(l,d),m=Math.max(c,u),h=Math.max(l,d);if(m-f<3&&h-p<3)return;let g=o.getPositions(),_=[];for(let[e,t]of Object.entries(g)){let n=o.canvasToDOM(t);n.x>=f&&n.x<=m&&n.y>=p&&n.y<=h&&_.push(e)}try{o.selectNodes(_,!1)}catch{}},r=r=>{if(!r.shiftKey||r.button!==0)return;let i=te.current,a=e.parentElement;if(!i||!a)return;let o=e.getBoundingClientRect(),s={x:r.clientX-o.left,y:r.clientY-o.top};if(i.getNodeAt(s))return;r.preventDefault(),r.stopImmediatePropagation(),me.current={clientX:r.clientX,clientY:r.clientY};let c=pe.current,l=a.getBoundingClientRect();c&&(c.style.display=`block`,c.style.left=`${r.clientX-l.left}px`,c.style.top=`${r.clientY-l.top}px`,c.style.width=`0px`,c.style.height=`0px`),document.addEventListener(`mousemove`,t,!0),document.addEventListener(`mouseup`,n,!0)};return e.addEventListener(`mousedown`,r,!0),()=>{e.removeEventListener(`mousedown`,r,!0),document.removeEventListener(`mousemove`,t,!0),document.removeEventListener(`mouseup`,n,!0)}},[]),(0,F.useEffect)(()=>{let e=Xe.trim();if(!e){$e(``),tt(null),rt(null),lt(`hybrid`),dt(0),pt(!1),te.current?.unselectAll();return}pt(!1);let t=setTimeout(()=>$e(e),300);return()=>clearTimeout(t)},[Xe]),(0,F.useEffect)(()=>{let e=setTimeout(()=>{let e=le(it);st(e);try{window.localStorage.setItem(Ne,String(e))}catch{}},200);return()=>clearTimeout(e)},[it]);let Ht=(0,F.useCallback)(e=>{let t=te.current,n=w.current;if(!t||!n)return;let{updates:r,inWindow:i}=oe(e,T.current,u,je);r.length>0&&(n.update(r),t.fit({nodes:i,animation:{duration:400,easingFunction:`easeInOutQuad`}}))},[]),Ut=re(_e);(0,F.useEffect)(()=>{if(!Qe)return;let e=!1;return rt(null),i(ue(Qe,Ut.selectedLabels,ot,ft)).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;tt(t.results);let n=t.mode===`bm25`?`bm25`:`hybrid`;if(lt(n),dt(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="${Qe}"`}),keepalive:!0}).catch(()=>{})}catch{}let{nodes:r,edges:i}=se(t.results,Ut.selectedLabels);T.current=new Map(r.map(e=>[e.id,e])),Ie(r.length),Te(null),Vt(r,i),Ht(t.results),console.info(`[graph-page] search-applied view=${Lt.kind} q="${Qe}" labels=${Ut.selectedLabels.join(`|`)} hits=${r.length}`)}).catch(t=>{e||rt(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[Qe,ot,a,o,i,Ht,Lt.kind,Ut.selectedLabels,Vt,ft]);let Wt=(0,F.useCallback)(e=>{ve(t=>{let n=re(t),r=new Set(n.selectedLabels);return r.has(e)?r.delete(e):r.add(e),O({kind:`filter`,selectedLabels:[...r].sort(),includeTrashed:n.includeTrashed,includeAgentActions:n.includeAgentActions})})},[]),Gt=(0,F.useCallback)(()=>{ve(e=>{let t=re(e);return O({...t,includeTrashed:!t.includeTrashed})})},[]),Kt=(0,F.useCallback)(()=>{ve(e=>{let t=re(e);return O({...t,includeAgentActions:!t.includeAgentActions})})},[]),qt=(0,F.useCallback)(()=>{Ze(``),$e(``),tt(null),rt(null),lt(`hybrid`),dt(0),pt(!1);try{te.current?.unselectAll()}catch{}},[]),Jt=(0,F.useCallback)(()=>{ve(()=>O({kind:`filter`,selectedLabels:[],includeTrashed:!1,includeAgentActions:!1}))},[]),Yt=(0,F.useCallback)(()=>{Ue(null);try{te.current?.unselectAll()}catch{}ve(e=>{let t=D(e);return t!==e&&He(`nav-pop`,{depth:t.length-1}),t})},[]),Xt=(0,F.useCallback)(()=>{Ue(null);try{te.current?.unselectAll()}catch{}ve(e=>e.length<=1?e:(He(`nav-home`,{depth:0,popped:e.length-1}),[re(e)]))},[]),Zt=(0,F.useCallback)(()=>{let e=re(_e),t={labels:[...e.selectedLabels].sort(),includeTrashed:e.includeTrashed};kt(!0),i(`/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}`)}xt(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(()=>kt(!1))},[i,_e]),Qt=(0,F.useCallback)(()=>{Ue(null);try{te.current?.unselectAll()}catch{}ht(e=>e+1),ie(`graph-restore`)},[]),$t=(0,F.useCallback)(()=>{Ue(null);try{te.current?.unselectAll()}catch{}ve(e=>[re(e)]),ht(e=>e+1),ie(`graph-trash`)},[]),en=(0,F.useCallback)(()=>{ht(e=>e+1),_t(e=>e+1)},[]),tn=Lt.kind===`neighbourhood`,nn=re(_e),rn=nn.selectedLabels,an=nn.includeTrashed,on=nn.includeAgentActions,sn=wt.join(`,`),cn=Et.join(`,`),ln=rn.includes(`AdminConversation`)||rn.includes(`PublicConversation`);(0,F.useEffect)(()=>{ln&&console.info(`[graph-filter] subfacet-render channel=[${sn}] sublabel=[${cn}]`)},[sn,cn,ln]);let un=(0,F.useMemo)(()=>{if(an!==bt.includeTrashed||rn.length!==bt.labels.length)return!0;for(let e=0;e<rn.length;e++)if(rn[e]!==bt.labels[e])return!0;return!1},[an,rn,bt]);return(0,I.jsxs)(I.Fragment,{children:[m&&(0,I.jsx)(`button`,{type:`button`,className:`graph-session-banner`,onClick:g,"data-reason":m.reason,children:m.message}),(0,I.jsxs)(`div`,{className:`graph-toolbar`,children:[_e.length>1&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`button`,{type:`button`,className:`graph-home-to-filter graph-home-desktop`,onClick:Xt,title:`Clear breadcrumb — return to filter root`,children:[(0,I.jsx)(x,{size:12}),` Home`]}),(0,I.jsx)(`button`,{type:`button`,className:`graph-home-to-filter graph-home-mobile`,onClick:Xt,"aria-label":`Home`,title:`Clear breadcrumb — return to filter root`,children:(0,I.jsx)(x,{size:14})}),(0,I.jsx)(`button`,{type:`button`,className:`graph-back-to-filter graph-back-desktop`,onClick:Yt,children:`← Back`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-back-to-filter graph-back-mobile`,onClick:Yt,"aria-label":`Back`,children:(0,I.jsx)(y,{size:16})})]}),(0,I.jsxs)(`div`,{className:`data-search-input graph-search-input`,children:[(0,I.jsx)(d,{size:14}),(0,I.jsx)(`input`,{type:`text`,placeholder:`Search nodes…`,value:Xe,onChange:e=>Ze(e.target.value),autoComplete:`off`,spellCheck:!1}),Qe&&!et&&!nt&&(0,I.jsx)(_,{size:14,className:`spin`}),Xe.length>0&&(0,I.jsx)(`button`,{type:`button`,className:`graph-search-clear`,onClick:qt,"aria-label":`Clear search`,title:`Clear search`,children:(0,I.jsx)(s,{size:14})})]}),Qe&&(0,I.jsxs)(`div`,{className:`graph-search-limit`,title:`Show top ${it} matches (1-2000)`,children:[(0,I.jsx)(`label`,{htmlFor:`graph-search-limit-input`,className:`graph-search-limit-label`,children:`Top`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-search-limit-step`,onClick:()=>at(le(it-1)),disabled:it<=1,"aria-label":`Decrement search limit`,title:`Decrement`,children:(0,I.jsx)(S,{size:12})}),(0,I.jsx)(`input`,{id:`graph-search-limit-input`,type:`number`,min:1,max:2e3,step:1,value:it,onChange:e=>at(le(e.target.value)),className:`graph-search-limit-number`,"aria-label":`Maximum search results to render`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-search-limit-step`,onClick:()=>at(le(it+1)),disabled:it>=2e3,"aria-label":`Increment search limit`,title:`Increment`,children:(0,I.jsx)(c,{size:12})}),(0,I.jsx)(`input`,{id:`graph-search-limit-slider`,type:`range`,min:1,max:2e3,step:1,value:it,onChange:e=>at(le(e.target.value)),"aria-label":`Maximum search results to render (drag for ballpark)`})]}),(0,I.jsx)(`button`,{type:`button`,className:`graph-refresh-button`,onClick:en,disabled:be,"aria-label":`Refresh graph`,title:`Refresh graph`,children:(0,I.jsx)(l,{size:14,className:be?`spin`:void 0})}),!tn&&(0,I.jsxs)(`div`,{className:`graph-filter-wrap`,ref:jt,children:[(0,I.jsxs)(`button`,{type:`button`,className:`graph-filter-toggle${St?` is-open`:``}${rn.length>0||an||on?` has-selection`:``}`,onClick:()=>Ct(e=>!e),"aria-haspopup":`true`,"aria-expanded":St,"aria-label":`Filter node types`,children:[(0,I.jsx)(C,{size:14}),(0,I.jsx)(`span`,{children:`Filter`}),rn.length>0&&(0,I.jsx)(`span`,{className:`graph-filter-count`,children:rn.length})]}),St&&(0,I.jsxs)(`div`,{className:`graph-filter-popover`,role:`dialog`,"aria-label":`Node type filter`,children:[(0,I.jsxs)(`div`,{className:`graph-filter-popover-header`,children:[(0,I.jsxs)(`button`,{type:`button`,className:`graph-toggle-trashed${an?` active`:``}`,onClick:Gt,"aria-pressed":an,title:`Show trashed nodes — restored with Restore button on each node`,children:[(0,I.jsx)(b,{size:14}),` Show trashed`]}),(rn.length>0||an||on)&&(0,I.jsx)(`button`,{type:`button`,className:`graph-filter-clear`,onClick:Jt,"aria-label":`Clear filter selection`,title:`Clear filter selection`,children:(0,I.jsx)(s,{size:14})})]}),(0,I.jsx)(`div`,{className:`graph-toggle-agent-actions`,title:`Hide ToolCall, StepResult, WorkflowStep, WorkflowRun — agent-execution telemetry. Flip on for audit/debug.`,children:(0,I.jsx)(v,{checked:on,onChange:Kt,label:`Include agent actions`})}),vt.length===0&&(0,I.jsx)(`p`,{className:`graph-filter-popover-empty`,children:`No node types in your graph yet.`}),(0,I.jsx)(`div`,{className:`graph-filter-rows`,role:`group`,"aria-label":`Node type filter`,children:vt.map(({label:e,nodeCount:t})=>{let n=rn.includes(e),r=f(e);return(0,I.jsxs)(`button`,{type:`button`,className:`graph-filter-row${n?` active`:``}`,onClick:()=>Wt(e),"aria-pressed":n,children:[(0,I.jsx)(`span`,{className:`graph-filter-row-swatch`,style:{backgroundColor:r}}),(0,I.jsx)(`span`,{className:`graph-filter-row-label`,children:e}),(0,I.jsx)(`span`,{className:`graph-filter-row-count`,children:t})]},e)})}),(rn.includes(`AdminConversation`)||rn.includes(`PublicConversation`))&&(0,I.jsxs)(`div`,{className:`graph-filter-subfacets`,children:[(0,I.jsxs)(`div`,{className:`graph-filter-subfacet-group`,role:`group`,"aria-label":`Conversation channel`,children:[(0,I.jsx)(`span`,{className:`graph-filter-subfacet-label`,children:`Channel`}),[`webchat`,`whatsapp`].map(e=>{let t=wt.includes(e);return(0,I.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===`webchat`?`Web`:`WhatsApp`},e)})]}),(0,I.jsxs)(`div`,{className:`graph-filter-subfacet-group`,role:`group`,"aria-label":`Message sublabel`,children:[(0,I.jsx)(`span`,{className:`graph-filter-subfacet-label`,children:`Message`}),[`UserMessage`,`AssistantMessage`,`WhatsAppMessage`].map(e=>{let t=Et.includes(e);return(0,I.jsx)(`button`,{type:`button`,className:`graph-filter-subfacet-chip${t?` active`:``}`,onClick:()=>{Dt(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},"aria-pressed":t,children:e===`UserMessage`?`User`:e===`AssistantMessage`?`Assistant`:`WhatsApp`},e)})]})]}),(0,I.jsx)(`div`,{className:`graph-filter-popover-footer`,children:(0,I.jsx)(`button`,{type:`button`,className:`graph-filter-set-default`,onClick:Zt,disabled:!un||Ot,children:Ot?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(_,{size:12,className:`spin`}),` Saving…`]}):`Set default view`})})]})]}),(0,I.jsx)(`div`,{className:`graph-meta`,children:Ee>0&&(0,I.jsxs)(`span`,{className:`graph-meta-count`,children:[Ee,` node`,Ee===1?``:`s`]})})]}),_e.length>1&&(0,I.jsx)(Ve,{viewStack:_e}),Qe&&ct===`bm25`&&!nt&&(0,I.jsx)(`div`,{className:`graph-error-banner graph-search-degraded`,role:`status`,children:`Vector ranking unavailable — showing keyword-only results.`}),nt&&(0,I.jsxs)(`div`,{className:`data-error graph-error-banner`,children:[`Search unavailable: `,nt]}),Qe&&ut>0&&!ft&&!nt&&(0,I.jsxs)(`button`,{type:`button`,className:`graph-search-suppressed`,onClick:()=>pt(!0),children:[ut,` low-confidence match`,ut===1?``:`es`,` hidden — show all`]}),Qe&&ft&&!nt&&(0,I.jsx)(`button`,{type:`button`,className:`graph-search-suppressed`,onClick:()=>pt(!1),children:`Showing all matches — hide low-confidence`}),et&&et.length===0&&!nt&&(0,I.jsx)(`div`,{className:`graph-search-status`,children:`No matches in your graph.`}),(0,I.jsxs)(`div`,{className:`graph-canvas-wrap`,children:[be&&(0,I.jsxs)(`div`,{className:`graph-canvas-overlay`,children:[(0,I.jsx)(_,{size:20,className:`spin`}),` Loading your graph…`]}),Se&&!be&&(0,I.jsxs)(`div`,{className:`graph-canvas-overlay graph-canvas-error`,children:[(0,I.jsx)(`p`,{children:Se}),(0,I.jsx)(`button`,{type:`button`,className:`data-btn`,onClick:()=>{M(null),ht(e=>e+1)},children:`Retry`})]}),we&&!be&&(0,I.jsxs)(`div`,{className:`graph-canvas-overlay graph-canvas-error`,children:[(0,I.jsxs)(`p`,{children:[`Refine your filter — `,(0,I.jsx)(`strong`,{children:we.matched}),` matches exceed the 2000 cap.`]}),(0,I.jsx)(`p`,{className:`graph-canvas-hint`,children:`Pick a more specific label combination, or narrow your brand's data.`})]}),!be&&!Se&&!we&&Ee===0&&!tn&&rn.length===0&&(0,I.jsxs)(`div`,{className:`graph-canvas-overlay`,children:[(0,I.jsx)(C,{size:20}),(0,I.jsx)(`p`,{children:`Open Filter to pick a node type and see what's in your graph.`})]}),!be&&!Se&&!we&&Ee===0&&!tn&&rn.length>0&&(0,I.jsx)(`div`,{className:`graph-canvas-overlay`,children:(0,I.jsxs)(`p`,{children:[`No `,rn.join(`, `),` nodes in your graph yet.`]})}),(0,I.jsx)(`div`,{ref:ee,className:`graph-canvas`}),(0,I.jsx)(`div`,{ref:pe,className:`graph-marquee`,"aria-hidden":`true`}),Ee>0&&(0,I.jsx)(`div`,{ref:ce,className:`graph-trash-drop-zone${We?` is-hover`:``}${Ke?` is-error`:``}`,"aria-hidden":`true`,children:(0,I.jsx)(n,{size:18})}),Je&&(0,I.jsxs)(`div`,{className:`graph-drag-error-banner`,role:`alert`,children:[(0,I.jsx)(`span`,{children:Je}),(0,I.jsx)(`button`,{type:`button`,className:`graph-drag-error-dismiss`,onClick:()=>Ye(null),"aria-label":`Dismiss`,children:(0,I.jsx)(s,{size:14})})]})]}),Le&&(0,I.jsx)(Re,{node:Le,edges:A.current,nodesById:T.current,adminFetch:i,onClose:()=>{Ue(null);try{te.current?.unselectAll()}catch{}},onRestored:Qt,onTrashed:$t}),Ee>0&&Mt.length>0&&(0,I.jsx)(`div`,{className:`graph-legend`,children:Mt.map(e=>(0,I.jsxs)(`div`,{className:`graph-legend-item`,children:[(0,I.jsx)(`span`,{className:`graph-legend-swatch`,style:{backgroundColor:f(e)}}),(0,I.jsx)(`span`,{children:e})]},e))})]})}function Re({node:e,edges:t,nodesById:r,adminFetch:i,onClose:a,onRestored:o,onTrashed:c}){let l=Object.entries(e.properties).filter(([,e])=>e!=null),u=t.filter(t=>t.from===e.id||t.to===e.id),[d,f]=(0,F.useState)(!1),[p,m]=(0,F.useState)(null),[h,g]=(0,F.useState)(!1),[v,y]=(0,F.useState)(null);(0,F.useEffect)(()=>{f(!1),m(null),g(!1),y(null)},[e.id]);let b=(0,F.useCallback)(()=>{f(!0),m(null),i(`/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=>{m(e instanceof Error?e.message:String(e)),f(!1)})},[e.id,o,i]),x=(0,F.useCallback)(()=>{g(!0),y(null),i(`/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}`);c()}).catch(e=>{y(e instanceof Error?e.message:String(e)),g(!1)})},[e.id,c,i]);return(0,I.jsxs)(`aside`,{className:`graph-side-panel${e.trashed?` graph-side-panel-trashed`:``}`,children:[(0,I.jsxs)(`header`,{className:`graph-side-header`,children:[(0,I.jsx)(`div`,{children:(()=>{if(e.labels.some(e=>de.has(e))){let t=be(e),n=e.properties.createdAt,r=typeof n==`string`?n:``,i=r?ge(r):null,a=e.labels.join(` · `)+(e.trashed?` · Trashed`:``)+` · ${e.id}`;return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`h2`,{className:`graph-side-name`,title:t,children:t}),i&&(0,I.jsx)(`div`,{className:`graph-side-created`,children:i}),(0,I.jsx)(`div`,{className:`graph-side-meta`,children:a})]})}return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`div`,{className:`graph-side-labels`,children:[e.labels.join(` · `),e.trashed?` · Trashed`:``]}),(0,I.jsx)(`div`,{className:`graph-side-id`,children:e.id})]})})()}),(0,I.jsx)(`button`,{type:`button`,className:`graph-side-close`,onClick:a,"aria-label":`Close`,children:(0,I.jsx)(s,{size:14})})]}),e.trashed&&(0,I.jsxs)(`dl`,{className:`graph-side-props graph-side-trash-meta`,children:[(0,I.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,I.jsx)(`dt`,{children:`trashedAt`}),(0,I.jsx)(`dd`,{children:We(e.properties.trashedAt)})]}),(0,I.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,I.jsx)(`dt`,{children:`trashedBy`}),(0,I.jsx)(`dd`,{children:We(e.properties.trashedBy)})]})]}),(0,I.jsxs)(`dl`,{className:`graph-side-props`,children:[l.length===0&&(0,I.jsx)(`div`,{className:`graph-side-empty`,children:`No properties.`}),l.map(([e,t])=>(0,I.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,I.jsx)(`dt`,{children:e}),(0,I.jsx)(`dd`,{children:We(t)})]},e))]}),u.length>0&&(0,I.jsxs)(`section`,{className:`graph-side-edges`,children:[(0,I.jsxs)(`h3`,{className:`graph-side-edges-heading`,children:[`Connections (`,u.length,`)`]}),u.map(t=>{let n=t.from===e.id,i=n?t.to:t.from,a=r.get(i),o=a?ye(a):i,s=n?`→`:`←`,c=Object.entries(t.properties??{}).filter(([,e])=>e!=null&&e!==``);return(0,I.jsxs)(`div`,{className:`graph-side-edge`,children:[(0,I.jsxs)(`div`,{className:`graph-side-edge-header`,children:[(0,I.jsx)(`span`,{className:`graph-side-edge-type`,children:t.type}),(0,I.jsx)(`span`,{className:`graph-side-edge-arrow`,children:s}),(0,I.jsx)(`span`,{className:`graph-side-edge-other`,title:o,children:o})]}),c.length>0&&(0,I.jsx)(`dl`,{className:`graph-side-edge-props`,children:c.map(([e,t])=>(0,I.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,I.jsx)(`dt`,{children:e}),(0,I.jsx)(`dd`,{children:We(t)})]},e))})]},t.id)})]}),e.trashed&&(0,I.jsxs)(`footer`,{className:`graph-side-footer`,children:[!d&&!p&&(0,I.jsxs)(`button`,{type:`button`,className:`graph-side-restore`,onClick:b,children:[(0,I.jsx)(ee,{size:14}),` Restore`]}),d&&(0,I.jsx)(`div`,{className:`graph-delete-confirm`,children:(0,I.jsxs)(`p`,{children:[(0,I.jsx)(_,{size:14,className:`spin`}),` Restoring…`]})}),p&&(0,I.jsxs)(`div`,{className:`graph-delete-confirm graph-delete-confirm-error`,children:[(0,I.jsxs)(`p`,{children:[`Restore failed: `,p]}),(0,I.jsxs)(`div`,{className:`graph-delete-confirm-buttons`,children:[(0,I.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-cancel`,onClick:()=>{m(null)},children:`Close`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-do`,onClick:b,children:`Retry`})]})]})]}),!e.trashed&&(0,I.jsxs)(`footer`,{className:`graph-side-footer`,children:[!h&&!v&&(0,I.jsxs)(`button`,{type:`button`,className:`graph-side-trash`,onClick:x,children:[(0,I.jsx)(n,{size:14}),` Trash`]}),h&&(0,I.jsx)(`div`,{className:`graph-delete-confirm`,children:(0,I.jsxs)(`p`,{children:[(0,I.jsx)(_,{size:14,className:`spin`}),` Trashing…`]})}),v&&(0,I.jsxs)(`div`,{className:`graph-delete-confirm graph-delete-confirm-error`,children:[(0,I.jsxs)(`p`,{children:[`Trash failed: `,v]}),(0,I.jsxs)(`div`,{className:`graph-delete-confirm-buttons`,children:[(0,I.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-cancel`,onClick:()=>{y(null)},children:`Close`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-do`,onClick:x,children:`Retry`})]})]})]})]})}function ze(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 Be=class extends Error{body;constructor(e){super(e.error),this.body=e}};function Ve({viewStack:e}){let t=e.map(e=>e.kind===`filter`?`Filter`:e.rootLabel??`Node`);return(0,I.jsx)(`div`,{className:`graph-breadcrumb`,role:`navigation`,"aria-label":`Graph navigation breadcrumb`,children:t.map((e,n)=>(0,I.jsxs)(`span`,{className:`graph-breadcrumb-item`,children:[n>0&&(0,I.jsx)(`span`,{className:`graph-breadcrumb-separator`,"aria-hidden":`true`,children:`›`}),(0,I.jsx)(`span`,{className:`graph-breadcrumb-label${n===t.length-1?` is-current`:``}`,children:e})]},n))})}function He(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 Ue(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 We(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=Ue(e);if(t)return t}return JSON.stringify(e)}return String(e)}export{b as a,S as i,Ie as n,ee as r,Le as t};
|
|
51
|
+
`)}var we={solver:`barnesHut`,barnesHut:{gravitationalConstant:-2e3,centralGravity:.4,springLength:170,springConstant:.04},stabilization:{iterations:200}},Te=220,Ee=3;function P(e){if(!(e.nodes.length<=5))return{physics:we,nodePositions:new Map};let t=new Map,n=(Ee-1)*Te/2,r=(Math.ceil(e.nodes.length/Ee)-1)*Te/2;for(let i=0;i<e.nodes.length;i++){let a=i%Ee,o=Math.floor(i/Ee);t.set(e.nodes[i].id,{x:a*Te-n,y:o*Te-r})}return{physics:!1,nodePositions:t}}var F=e(a(),1),De=w(),Oe=ne(),I=i();function ke(e){return e<.7?`compact`:e<1.3?`wrapped`:`detailed`}var Ae=150,je=`#FBBF24`;function Me(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 Ne=`maxy-graph-search-limit-v1`,Pe=250,Fe=1200;function Ie(){let[e,t]=(0,F.useState)(null),[n,r]=(0,F.useState)(!1),[i,a]=(0,F.useState)(void 0),[s,c]=(0,F.useState)(null),[l,u]=(0,F.useState)(void 0),[d,f]=(0,F.useState)(null),[p,h]=(0,F.useState)(null),v=(0,F.useMemo)(()=>typeof window>`u`?null:T(window.location.search),[]),y=(0,F.useMemo)(()=>v?.kind===`focus`?{nodeId:v.nodeId,nodeLabel:v.nodeLabel}:null,[v]),b=(0,F.useMemo)(()=>v?.kind===`labels`?v.labels:null,[v]);(0,F.useEffect)(()=>{y&&He(`deep-link`,{nodeId:y.nodeId.length>16?y.nodeId.slice(0,16)+`…`:y.nodeId,label:y.nodeLabel??``})},[y]),(0,F.useEffect)(()=>{!b||b.length===0||He(`label-seed`,{label:b[0]})},[b]),(0,F.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.businessName==`string`&&a(e.businessName),e.conversationId!==void 0&&c(e.conversationId??null),h(e.role??null),u(e.userName===void 0?null:e.userName),f(e.avatar??null)}catch{}t(n),r(!0)}}).catch(()=>{e||(t(n),r(!0))}),()=>{e=!0}},[]);let x=(0,F.useCallback)(()=>{try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`},[]);return n?e?(0,I.jsxs)(o,{cacheKey:e,businessName:i,conversationId:s,onLogout:x,userName:l,userAvatar:d,role:p,children:[(0,I.jsx)(g,{}),(0,I.jsxs)(`div`,{className:`data-page graph-page`,children:[(0,I.jsx)(`header`,{className:`data-header`,children:(0,I.jsxs)(`h1`,{className:`data-title`,children:[(0,I.jsx)(m,{size:18}),` Graph`]})}),(0,I.jsx)(`main`,{className:`graph-main`,children:(0,I.jsx)(Le,{cacheKey:e,initialFocus:y,initialLabels:b})})]})]}):(0,I.jsxs)(`div`,{className:`data-page`,children:[(0,I.jsx)(`header`,{className:`data-header`,children:(0,I.jsxs)(`h1`,{className:`data-title`,children:[(0,I.jsx)(m,{size:18}),` Graph`]})}),(0,I.jsxs)(`div`,{className:`data-empty`,children:[(0,I.jsx)(`p`,{children:`You are not signed in.`}),(0,I.jsxs)(`p`,{children:[`Open the `,(0,I.jsx)(`a`,{href:`/`,className:`data-link`,children:`main admin page`}),` and log in, then return here.`]})]})]}):(0,I.jsx)(`div`,{className:`data-page`,children:(0,I.jsxs)(`div`,{className:`data-loading`,children:[(0,I.jsx)(_,{size:18,className:`spin`}),` Loading…`]})})}function Le({cacheKey:e,initialFocus:t=null,initialLabels:r=null}){let{adminFetch:i,cacheKey:a,sessionRefetchNonce:o,banner:m,reloadToLogin:g}=p({initialCacheKey:e,surface:`graph`}),ee=(0,F.useRef)(null),te=(0,F.useRef)(null),w=(0,F.useRef)(null),ne=(0,F.useRef)(null),T=(0,F.useRef)(new Map),A=(0,F.useRef)([]),j=(0,F.useRef)(null),ce=(0,F.useRef)(null),de=(0,F.useRef)(null),fe=(0,F.useRef)([]),pe=(0,F.useRef)(null),me=(0,F.useRef)(null),he=(0,F.useRef)(null),ge=(0,F.useRef)(null),[_e,ve]=(0,F.useState)([{kind:`filter`,selectedLabels:[],includeTrashed:!1,includeAgentActions:!1}]);(0,F.useEffect)(()=>{t?.nodeId&&ve(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 ye=r&&r.length>0?[...r].sort().join(`,`):null;(0,F.useEffect)(()=>{ye&&(At.current=!0,ve([{kind:`filter`,selectedLabels:ye.split(`,`),includeTrashed:!1,includeAgentActions:!1}]))},[ye]);let[be,xe]=(0,F.useState)(!1),[Se,M]=(0,F.useState)(null),[we,Te]=(0,F.useState)(null),[Ee,Ie]=(0,F.useState)(0),[Le,Ue]=(0,F.useState)(null),[We,Ge]=(0,F.useState)(!1),[Ke,qe]=(0,F.useState)(!1),[Je,Ye]=(0,F.useState)(null),[Xe,Ze]=(0,F.useState)(``),[Qe,$e]=(0,F.useState)(``),[et,tt]=(0,F.useState)(null),[nt,rt]=(0,F.useState)(null),[it,at]=(0,F.useState)(()=>{if(typeof window>`u`)return 100;let e=window.localStorage.getItem(Ne);return e?le(e):100}),[ot,st]=(0,F.useState)(it),[ct,lt]=(0,F.useState)(`hybrid`),[ut,dt]=(0,F.useState)(0),[ft,pt]=(0,F.useState)(!1),[mt,ht]=(0,F.useState)(0),[gt,_t]=(0,F.useState)(0),[vt,yt]=(0,F.useState)([]),[bt,xt]=(0,F.useState)({labels:[],includeTrashed:!1}),[St,Ct]=(0,F.useState)(!1),[wt,Tt]=(0,F.useState)([]),[Et,Dt]=(0,F.useState)([]),[Ot,kt]=(0,F.useState)(!1),At=(0,F.useRef)(!1),jt=(0,F.useRef)(null),Mt=(0,F.useMemo)(()=>{let e=new Set;for(let t of T.current.values()){let n=h(t.labels);n&&e.add(n)}return[...e].sort()},[Ee]);(0,F.useEffect)(()=>{let e=!1,t=i(`/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=i(`/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&&(yt(t.labels),xt(n),!At.current)){At.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)&&ve(e=>[{kind:`filter`,selectedLabels:r,includeTrashed:n.includeTrashed,includeAgentActions:!1},...e.slice(1)])}}),()=>{e=!0}},[a,o,i]);let Nt=_e[0].kind===`filter`?_e[0].includeAgentActions:!1;(0,F.useEffect)(()=>{if(!At.current)return;let e=!1;return i(`/api/admin/graph-labels-in-graph?includeAgentActions=${Nt?`1`:`0`}`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(t=>{e||yt(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,o,Nt,gt,i]),(0,F.useEffect)(()=>{if(!St)return;let e=e=>{jt.current&&(jt.current.contains(e.target)||Ct(!1))},t=e=>{e.key===`Escape`&&Ct(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[St]);let Pt=(0,F.useCallback)(()=>{if(w.current)try{w.current.clear()}catch{}if(ne.current)try{ne.current.clear()}catch{}},[]),Ft=(0,F.useCallback)((e,t)=>{Ye(null),i(`/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}`);Ue(null);try{te.current?.unselectAll()}catch{}ve(e=>[re(e)]),ht(e=>e+1),ie(`graph-trash`)}).catch(n=>{let r=n instanceof Error?n.message:String(n);Ye(`Failed to delete: ${r}`),qe(!0),window.setTimeout(()=>qe(!1),Fe);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{}})},[i]),It=(0,F.useCallback)(e=>{Ye(null);let t=e.length;Promise.allSettled(e.map(e=>i(`/api/admin/graph-delete`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({elementId:e,by:`graph-drag-trash`})}).then(async t=>{let n=await t.json().catch(()=>({error:`HTTP ${t.status}`}));if(!t.ok)throw Error(n.error??`HTTP ${t.status}`);return e}))).then(e=>{let n=e.filter(e=>e.status===`rejected`);Ue(null);try{te.current?.unselectAll()}catch{}if(ve(e=>[re(e)]),ht(e=>e+1),ie(`graph-trash`),n.length>0){let e=t-n.length;Ye(e===0?`Failed to delete ${t} node${t===1?``:`s`}.`:`Deleted ${e} of ${t}; ${n.length} failed.`),qe(!0),window.setTimeout(()=>qe(!1),Fe);try{fetch(`/api/_client-error`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`graph-drag-delete-batch`,total:t,failed:n.length}),keepalive:!0}).catch(()=>{})}catch{}}})},[i]),Lt=_e[_e.length-1],Rt=(0,F.useMemo)(()=>k(_e),[_e]),zt=(0,F.useRef)(Rt);(0,F.useEffect)(()=>{zt.current=Rt},[Rt]);let Bt=(0,F.useRef)(_e);(0,F.useEffect)(()=>{Bt.current=_e},[_e]),(0,F.useEffect)(()=>{if(Lt.kind===`filter`&&Lt.selectedLabels.length===0){j.current?.abort(),j.current=null,xe(!1),M(null),Te(null),Ie(0),T.current=new Map,Pt();return}if(Qe){j.current?.abort(),j.current=null;return}let e=window.setTimeout(()=>{j.current?.abort();let e=new AbortController;j.current=e,xe(!0),M(null),Te(null),i(ze(Lt,{includeAgentActions:re(_e).includeAgentActions,search:null,channel:wt,messageSublabel:Et}),{signal:e.signal}).then(async e=>{let t=await e.json().catch(()=>({error:`HTTP ${e.status}`}));if(e.status===413)throw new Be(t);if(!e.ok)throw Error(t.error??`HTTP ${e.status}`);return t}).then(t=>{e.signal.aborted||(T.current=new Map(t.nodes.map(e=>[e.id,e])),Ie(t.nodes.length),Vt(t.nodes,t.edges))}).catch(t=>{if(!e.signal.aborted){if(t instanceof Be){Te(t.body),Ie(0),T.current=new Map,Pt();return}M(t instanceof Error?t.message:String(t))}}).finally(()=>{e.signal.aborted||xe(!1)})},Pe);return()=>{window.clearTimeout(e)}},[a,Rt,mt,o,Qe,ot,wt,Et]),(0,F.useEffect)(()=>()=>{j.current?.abort(),te.current?.destroy(),te.current=null,ge.current!==null&&(clearTimeout(ge.current),ge.current=null)},[]);let Vt=(0,F.useCallback)((e,t)=>{if(!ee.current)return;A.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=u(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:N(e,1),title:Ce(e),color:{background:`${r}40`,border:r},borderWidth:2,shapeProperties:{borderDashes:[6,4]},group:t,...o}:{id:e.id,label:N(e,1),title:Ce(e),color:r,group:t,...o}}),s=new Set(o.map(e=>e.id)),c=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})),l=P({nodes:e,edges:t});w.current=new Oe.DataSet(l.nodePositions.size>0?o.map(e=>{if(e.x!==void 0||e.y!==void 0)return e;let t=l.nodePositions.get(e.id);return t?{...e,x:t.x,y:t.y,physics:!1}:e}):o),ne.current=new Oe.DataSet(c);let d={autoResize:!0,layout:{improvedLayout:!1,randomSeed:Me(zt.current)},physics:l.physics===!1?!1:{solver:l.physics.solver,barnesHut:l.physics.barnesHut,stabilization:l.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,e.borderColor=`#0F172A`,e.shadow=!0,e.shadowColor=`rgba(15, 23, 42, 0.55)`,e.shadowSize=8,e.shadowX=0,e.shadowY=0},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,multiselect:!0}};try{te.current?.destroy(),ge.current!==null&&(clearTimeout(ge.current),ge.current=null),he.current=null;let e=new De.Network(ee.current,{nodes:w.current,edges:ne.current},d);te.current=e,e.on(`zoom`,()=>{ge.current!==null&&clearTimeout(ge.current),ge.current=setTimeout(()=>{ge.current=null;let e=te.current,t=w.current;if(!e||!t)return;let n;try{n=e.getScale()}catch{return}let r=ke(n);if(r===he.current)return;he.current=r;let i=[];for(let e of T.current.values()){if(!e.labels[0])continue;let{colour:t}=u(e.labels),r=e.trashed?{background:`${t}40`,border:t}:t;i.push({id:e.id,label:N(e,n),color:r})}i.length>0&&t.update(i),console.error(`[graph-page] zoom-tier scale=${n.toFixed(3)} tier=${r} nodes=${i.length}`)},Ae)}),e.on(`click`,e=>{let t=e.nodes[0];if(!t)return;let n=T.current.get(t);if(!n)return;if(ae(n)===`skip-trashed`){Ue(n);return}let r=Bt.current[Bt.current.length-1];if(r.kind===`neighbourhood`&&r.rootElementId===t){Ue(e=>e?.id===t?null:n);return}Ue(null);let i={kind:`neighbourhood`,rootElementId:t,rootLabel:n.labels[0]??null};ve(e=>{let n=E(e,i),r=n.length-1;return n.length>e.length&&He(`nav-push`,{depth:r,kind:i.kind,rootElementId:t}),n.length===10&&e.length===10&&He(`view-stack-cap-hit`,{depth:10,rootElementId:t}),n})}),e.on(`deselectNode`,()=>{Ue(null)});let t=e=>{let t=ee.current,n=ce.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=>{if(e.nodes.length===0){de.current=null,fe.current=[];return}fe.current=[...e.nodes],de.current=e.nodes[0],n?.classList.add(`graph-dragging`)}),e.on(`dragging`,e=>{if(fe.current.length===0)return;let n=t(e.pointer.DOM);Ge(e=>e===n?e:n)}),e.on(`dragEnd`,e=>{let r=fe.current;if(fe.current=[],de.current=null,Ge(!1),n?.classList.remove(`graph-dragging`),r.length!==0&&t(e.pointer.DOM))if(r.length===1){let e=T.current.get(r[0])?.labels[0]??`Unknown`;Ft(r[0],e)}else It(r)})}catch(e){let t=e instanceof Error?e.message:String(e);M(`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,F.useEffect)(()=>{let e=ee.current;if(!e)return;let t=t=>{let n=me.current,r=pe.current,i=e.parentElement;if(!n||!r||!i)return;let a=i.getBoundingClientRect(),o=Math.min(n.clientX,t.clientX)-a.left,s=Math.min(n.clientY,t.clientY)-a.top,c=Math.max(n.clientX,t.clientX)-a.left,l=Math.max(n.clientY,t.clientY)-a.top;r.style.left=`${o}px`,r.style.top=`${s}px`,r.style.width=`${c-o}px`,r.style.height=`${l-s}px`},n=r=>{document.removeEventListener(`mousemove`,t,!0),document.removeEventListener(`mouseup`,n,!0);let i=me.current;me.current=null;let a=pe.current;a&&(a.style.display=`none`);let o=te.current;if(!i||!o)return;let s=e.getBoundingClientRect(),c=i.clientX-s.left,l=i.clientY-s.top,u=r.clientX-s.left,d=r.clientY-s.top,f=Math.min(c,u),p=Math.min(l,d),m=Math.max(c,u),h=Math.max(l,d);if(m-f<3&&h-p<3)return;let g=o.getPositions(),_=[];for(let[e,t]of Object.entries(g)){let n=o.canvasToDOM(t);n.x>=f&&n.x<=m&&n.y>=p&&n.y<=h&&_.push(e)}try{o.selectNodes(_,!1)}catch{}},r=r=>{if(!r.shiftKey||r.button!==0)return;let i=te.current,a=e.parentElement;if(!i||!a)return;let o=e.getBoundingClientRect(),s={x:r.clientX-o.left,y:r.clientY-o.top};if(i.getNodeAt(s))return;r.preventDefault(),r.stopImmediatePropagation(),me.current={clientX:r.clientX,clientY:r.clientY};let c=pe.current,l=a.getBoundingClientRect();c&&(c.style.display=`block`,c.style.left=`${r.clientX-l.left}px`,c.style.top=`${r.clientY-l.top}px`,c.style.width=`0px`,c.style.height=`0px`),document.addEventListener(`mousemove`,t,!0),document.addEventListener(`mouseup`,n,!0)};return e.addEventListener(`mousedown`,r,!0),()=>{e.removeEventListener(`mousedown`,r,!0),document.removeEventListener(`mousemove`,t,!0),document.removeEventListener(`mouseup`,n,!0)}},[]),(0,F.useEffect)(()=>{let e=Xe.trim();if(!e){$e(``),tt(null),rt(null),lt(`hybrid`),dt(0),pt(!1),te.current?.unselectAll();return}pt(!1);let t=setTimeout(()=>$e(e),300);return()=>clearTimeout(t)},[Xe]),(0,F.useEffect)(()=>{let e=setTimeout(()=>{let e=le(it);st(e);try{window.localStorage.setItem(Ne,String(e))}catch{}},200);return()=>clearTimeout(e)},[it]);let Ht=(0,F.useCallback)(e=>{let t=te.current,n=w.current;if(!t||!n)return;let{updates:r,inWindow:i}=oe(e,T.current,u,je);r.length>0&&(n.update(r),t.fit({nodes:i,animation:{duration:400,easingFunction:`easeInOutQuad`}}))},[]),Ut=re(_e);(0,F.useEffect)(()=>{if(!Qe)return;let e=!1;return rt(null),i(ue(Qe,Ut.selectedLabels,ot,ft)).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;tt(t.results);let n=t.mode===`bm25`?`bm25`:`hybrid`;if(lt(n),dt(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="${Qe}"`}),keepalive:!0}).catch(()=>{})}catch{}let{nodes:r,edges:i}=se(t.results,Ut.selectedLabels);T.current=new Map(r.map(e=>[e.id,e])),Ie(r.length),Te(null),Vt(r,i),Ht(t.results),console.info(`[graph-page] search-applied view=${Lt.kind} q="${Qe}" labels=${Ut.selectedLabels.join(`|`)} hits=${r.length}`)}).catch(t=>{e||rt(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[Qe,ot,a,o,i,Ht,Lt.kind,Ut.selectedLabels,Vt,ft]);let Wt=(0,F.useCallback)(e=>{ve(t=>{let n=re(t),r=new Set(n.selectedLabels);return r.has(e)?r.delete(e):r.add(e),O({kind:`filter`,selectedLabels:[...r].sort(),includeTrashed:n.includeTrashed,includeAgentActions:n.includeAgentActions})})},[]),Gt=(0,F.useCallback)(()=>{ve(e=>{let t=re(e);return O({...t,includeTrashed:!t.includeTrashed})})},[]),Kt=(0,F.useCallback)(()=>{ve(e=>{let t=re(e);return O({...t,includeAgentActions:!t.includeAgentActions})})},[]),qt=(0,F.useCallback)(()=>{Ze(``),$e(``),tt(null),rt(null),lt(`hybrid`),dt(0),pt(!1);try{te.current?.unselectAll()}catch{}},[]),Jt=(0,F.useCallback)(()=>{ve(()=>O({kind:`filter`,selectedLabels:[],includeTrashed:!1,includeAgentActions:!1}))},[]),Yt=(0,F.useCallback)(()=>{Ue(null);try{te.current?.unselectAll()}catch{}ve(e=>{let t=D(e);return t!==e&&He(`nav-pop`,{depth:t.length-1}),t})},[]),Xt=(0,F.useCallback)(()=>{Ue(null);try{te.current?.unselectAll()}catch{}ve(e=>e.length<=1?e:(He(`nav-home`,{depth:0,popped:e.length-1}),[re(e)]))},[]),Zt=(0,F.useCallback)(()=>{let e=re(_e),t={labels:[...e.selectedLabels].sort(),includeTrashed:e.includeTrashed};kt(!0),i(`/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}`)}xt(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(()=>kt(!1))},[i,_e]),Qt=(0,F.useCallback)(()=>{Ue(null);try{te.current?.unselectAll()}catch{}ht(e=>e+1),ie(`graph-restore`)},[]),$t=(0,F.useCallback)(()=>{Ue(null);try{te.current?.unselectAll()}catch{}ve(e=>[re(e)]),ht(e=>e+1),ie(`graph-trash`)},[]),en=(0,F.useCallback)(()=>{ht(e=>e+1),_t(e=>e+1)},[]),tn=Lt.kind===`neighbourhood`,nn=re(_e),rn=nn.selectedLabels,an=nn.includeTrashed,on=nn.includeAgentActions,sn=wt.join(`,`),cn=Et.join(`,`),ln=rn.includes(`AdminConversation`)||rn.includes(`PublicConversation`);(0,F.useEffect)(()=>{ln&&console.info(`[graph-filter] subfacet-render channel=[${sn}] sublabel=[${cn}]`)},[sn,cn,ln]);let un=(0,F.useMemo)(()=>{if(an!==bt.includeTrashed||rn.length!==bt.labels.length)return!0;for(let e=0;e<rn.length;e++)if(rn[e]!==bt.labels[e])return!0;return!1},[an,rn,bt]);return(0,I.jsxs)(I.Fragment,{children:[m&&(0,I.jsx)(`button`,{type:`button`,className:`graph-session-banner`,onClick:g,"data-reason":m.reason,children:m.message}),(0,I.jsxs)(`div`,{className:`graph-toolbar`,children:[_e.length>1&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`button`,{type:`button`,className:`graph-home-to-filter graph-home-desktop`,onClick:Xt,title:`Clear breadcrumb — return to filter root`,children:[(0,I.jsx)(x,{size:12}),` Home`]}),(0,I.jsx)(`button`,{type:`button`,className:`graph-home-to-filter graph-home-mobile`,onClick:Xt,"aria-label":`Home`,title:`Clear breadcrumb — return to filter root`,children:(0,I.jsx)(x,{size:14})}),(0,I.jsx)(`button`,{type:`button`,className:`graph-back-to-filter graph-back-desktop`,onClick:Yt,children:`← Back`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-back-to-filter graph-back-mobile`,onClick:Yt,"aria-label":`Back`,children:(0,I.jsx)(y,{size:16})})]}),(0,I.jsxs)(`div`,{className:`data-search-input graph-search-input`,children:[(0,I.jsx)(d,{size:14}),(0,I.jsx)(`input`,{type:`text`,placeholder:`Search nodes…`,value:Xe,onChange:e=>Ze(e.target.value),autoComplete:`off`,spellCheck:!1}),Qe&&!et&&!nt&&(0,I.jsx)(_,{size:14,className:`spin`}),Xe.length>0&&(0,I.jsx)(`button`,{type:`button`,className:`graph-search-clear`,onClick:qt,"aria-label":`Clear search`,title:`Clear search`,children:(0,I.jsx)(s,{size:14})})]}),Qe&&(0,I.jsxs)(`div`,{className:`graph-search-limit`,title:`Show top ${it} matches (1-2000)`,children:[(0,I.jsx)(`label`,{htmlFor:`graph-search-limit-input`,className:`graph-search-limit-label`,children:`Top`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-search-limit-step`,onClick:()=>at(le(it-1)),disabled:it<=1,"aria-label":`Decrement search limit`,title:`Decrement`,children:(0,I.jsx)(S,{size:12})}),(0,I.jsx)(`input`,{id:`graph-search-limit-input`,type:`number`,min:1,max:2e3,step:1,value:it,onChange:e=>at(le(e.target.value)),className:`graph-search-limit-number`,"aria-label":`Maximum search results to render`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-search-limit-step`,onClick:()=>at(le(it+1)),disabled:it>=2e3,"aria-label":`Increment search limit`,title:`Increment`,children:(0,I.jsx)(c,{size:12})}),(0,I.jsx)(`input`,{id:`graph-search-limit-slider`,type:`range`,min:1,max:2e3,step:1,value:it,onChange:e=>at(le(e.target.value)),"aria-label":`Maximum search results to render (drag for ballpark)`})]}),(0,I.jsx)(`button`,{type:`button`,className:`graph-refresh-button`,onClick:en,disabled:be,"aria-label":`Refresh graph`,title:`Refresh graph`,children:(0,I.jsx)(l,{size:14,className:be?`spin`:void 0})}),!tn&&(0,I.jsxs)(`div`,{className:`graph-filter-wrap`,ref:jt,children:[(0,I.jsxs)(`button`,{type:`button`,className:`graph-filter-toggle${St?` is-open`:``}${rn.length>0||an||on?` has-selection`:``}`,onClick:()=>Ct(e=>!e),"aria-haspopup":`true`,"aria-expanded":St,"aria-label":`Filter node types`,children:[(0,I.jsx)(C,{size:14}),(0,I.jsx)(`span`,{children:`Filter`}),rn.length>0&&(0,I.jsx)(`span`,{className:`graph-filter-count`,children:rn.length})]}),St&&(0,I.jsxs)(`div`,{className:`graph-filter-popover`,role:`dialog`,"aria-label":`Node type filter`,children:[(0,I.jsxs)(`div`,{className:`graph-filter-popover-header`,children:[(0,I.jsxs)(`button`,{type:`button`,className:`graph-toggle-trashed${an?` active`:``}`,onClick:Gt,"aria-pressed":an,title:`Show trashed nodes — restored with Restore button on each node`,children:[(0,I.jsx)(b,{size:14}),` Show trashed`]}),(rn.length>0||an||on)&&(0,I.jsx)(`button`,{type:`button`,className:`graph-filter-clear`,onClick:Jt,"aria-label":`Clear filter selection`,title:`Clear filter selection`,children:(0,I.jsx)(s,{size:14})})]}),(0,I.jsx)(`div`,{className:`graph-toggle-agent-actions`,title:`Hide ToolCall, StepResult, WorkflowStep, WorkflowRun — agent-execution telemetry. Flip on for audit/debug.`,children:(0,I.jsx)(v,{checked:on,onChange:Kt,label:`Include agent actions`})}),vt.length===0&&(0,I.jsx)(`p`,{className:`graph-filter-popover-empty`,children:`No node types in your graph yet.`}),(0,I.jsx)(`div`,{className:`graph-filter-rows`,role:`group`,"aria-label":`Node type filter`,children:vt.map(({label:e,nodeCount:t})=>{let n=rn.includes(e),r=f(e);return(0,I.jsxs)(`button`,{type:`button`,className:`graph-filter-row${n?` active`:``}`,onClick:()=>Wt(e),"aria-pressed":n,children:[(0,I.jsx)(`span`,{className:`graph-filter-row-swatch`,style:{backgroundColor:r}}),(0,I.jsx)(`span`,{className:`graph-filter-row-label`,children:e}),(0,I.jsx)(`span`,{className:`graph-filter-row-count`,children:t})]},e)})}),(rn.includes(`AdminConversation`)||rn.includes(`PublicConversation`))&&(0,I.jsxs)(`div`,{className:`graph-filter-subfacets`,children:[(0,I.jsxs)(`div`,{className:`graph-filter-subfacet-group`,role:`group`,"aria-label":`Conversation channel`,children:[(0,I.jsx)(`span`,{className:`graph-filter-subfacet-label`,children:`Channel`}),[`webchat`,`whatsapp`].map(e=>{let t=wt.includes(e);return(0,I.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===`webchat`?`Web`:`WhatsApp`},e)})]}),(0,I.jsxs)(`div`,{className:`graph-filter-subfacet-group`,role:`group`,"aria-label":`Message sublabel`,children:[(0,I.jsx)(`span`,{className:`graph-filter-subfacet-label`,children:`Message`}),[`UserMessage`,`AssistantMessage`,`WhatsAppMessage`].map(e=>{let t=Et.includes(e);return(0,I.jsx)(`button`,{type:`button`,className:`graph-filter-subfacet-chip${t?` active`:``}`,onClick:()=>{Dt(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},"aria-pressed":t,children:e===`UserMessage`?`User`:e===`AssistantMessage`?`Assistant`:`WhatsApp`},e)})]})]}),(0,I.jsx)(`div`,{className:`graph-filter-popover-footer`,children:(0,I.jsx)(`button`,{type:`button`,className:`graph-filter-set-default`,onClick:Zt,disabled:!un||Ot,children:Ot?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(_,{size:12,className:`spin`}),` Saving…`]}):`Set default view`})})]})]}),(0,I.jsx)(`div`,{className:`graph-meta`,children:Ee>0&&(0,I.jsxs)(`span`,{className:`graph-meta-count`,children:[Ee,` node`,Ee===1?``:`s`]})})]}),_e.length>1&&(0,I.jsx)(Ve,{viewStack:_e}),Qe&&ct===`bm25`&&!nt&&(0,I.jsx)(`div`,{className:`graph-error-banner graph-search-degraded`,role:`status`,children:`Vector ranking unavailable — showing keyword-only results.`}),nt&&(0,I.jsxs)(`div`,{className:`data-error graph-error-banner`,children:[`Search unavailable: `,nt]}),Qe&&ut>0&&!ft&&!nt&&(0,I.jsxs)(`button`,{type:`button`,className:`graph-search-suppressed`,onClick:()=>pt(!0),children:[ut,` low-confidence match`,ut===1?``:`es`,` hidden — show all`]}),Qe&&ft&&!nt&&(0,I.jsx)(`button`,{type:`button`,className:`graph-search-suppressed`,onClick:()=>pt(!1),children:`Showing all matches — hide low-confidence`}),et&&et.length===0&&!nt&&(0,I.jsx)(`div`,{className:`graph-search-status`,children:`No matches in your graph.`}),(0,I.jsxs)(`div`,{className:`graph-canvas-wrap`,children:[be&&(0,I.jsxs)(`div`,{className:`graph-canvas-overlay`,children:[(0,I.jsx)(_,{size:20,className:`spin`}),` Loading your graph…`]}),Se&&!be&&(0,I.jsxs)(`div`,{className:`graph-canvas-overlay graph-canvas-error`,children:[(0,I.jsx)(`p`,{children:Se}),(0,I.jsx)(`button`,{type:`button`,className:`data-btn`,onClick:()=>{M(null),ht(e=>e+1)},children:`Retry`})]}),we&&!be&&(0,I.jsxs)(`div`,{className:`graph-canvas-overlay graph-canvas-error`,children:[(0,I.jsxs)(`p`,{children:[`Refine your filter — `,(0,I.jsx)(`strong`,{children:we.matched}),` matches exceed the 2000 cap.`]}),(0,I.jsx)(`p`,{className:`graph-canvas-hint`,children:`Pick a more specific label combination, or narrow your brand's data.`})]}),!be&&!Se&&!we&&Ee===0&&!tn&&rn.length===0&&(0,I.jsxs)(`div`,{className:`graph-canvas-overlay`,children:[(0,I.jsx)(C,{size:20}),(0,I.jsx)(`p`,{children:`Open Filter to pick a node type and see what's in your graph.`})]}),!be&&!Se&&!we&&Ee===0&&!tn&&rn.length>0&&(0,I.jsx)(`div`,{className:`graph-canvas-overlay`,children:(0,I.jsxs)(`p`,{children:[`No `,rn.join(`, `),` nodes in your graph yet.`]})}),(0,I.jsx)(`div`,{ref:ee,className:`graph-canvas`}),(0,I.jsx)(`div`,{ref:pe,className:`graph-marquee`,"aria-hidden":`true`}),Ee>0&&(0,I.jsx)(`div`,{ref:ce,className:`graph-trash-drop-zone${We?` is-hover`:``}${Ke?` is-error`:``}`,"aria-hidden":`true`,children:(0,I.jsx)(n,{size:18})}),Je&&(0,I.jsxs)(`div`,{className:`graph-drag-error-banner`,role:`alert`,children:[(0,I.jsx)(`span`,{children:Je}),(0,I.jsx)(`button`,{type:`button`,className:`graph-drag-error-dismiss`,onClick:()=>Ye(null),"aria-label":`Dismiss`,children:(0,I.jsx)(s,{size:14})})]})]}),Le&&(0,I.jsx)(Re,{node:Le,edges:A.current,nodesById:T.current,adminFetch:i,onClose:()=>{Ue(null);try{te.current?.unselectAll()}catch{}},onRestored:Qt,onTrashed:$t}),Ee>0&&Mt.length>0&&(0,I.jsx)(`div`,{className:`graph-legend`,children:Mt.map(e=>(0,I.jsxs)(`div`,{className:`graph-legend-item`,children:[(0,I.jsx)(`span`,{className:`graph-legend-swatch`,style:{backgroundColor:f(e)}}),(0,I.jsx)(`span`,{children:e})]},e))})]})}function Re({node:e,edges:t,nodesById:r,adminFetch:i,onClose:a,onRestored:o,onTrashed:c}){let l=Object.entries(e.properties).filter(([,e])=>e!=null),u=t.filter(t=>t.from===e.id||t.to===e.id),[d,f]=(0,F.useState)(!1),[p,m]=(0,F.useState)(null),[h,g]=(0,F.useState)(!1),[v,y]=(0,F.useState)(null);(0,F.useEffect)(()=>{f(!1),m(null),g(!1),y(null)},[e.id]);let b=(0,F.useCallback)(()=>{f(!0),m(null),i(`/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=>{m(e instanceof Error?e.message:String(e)),f(!1)})},[e.id,o,i]),x=(0,F.useCallback)(()=>{g(!0),y(null),i(`/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}`);c()}).catch(e=>{y(e instanceof Error?e.message:String(e)),g(!1)})},[e.id,c,i]);return(0,I.jsxs)(`aside`,{className:`graph-side-panel${e.trashed?` graph-side-panel-trashed`:``}`,children:[(0,I.jsxs)(`header`,{className:`graph-side-header`,children:[(0,I.jsx)(`div`,{children:(()=>{if(e.labels.some(e=>de.has(e))){let t=be(e),n=e.properties.createdAt,r=typeof n==`string`?n:``,i=r?ge(r):null,a=e.labels.join(` · `)+(e.trashed?` · Trashed`:``)+` · ${e.id}`;return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`h2`,{className:`graph-side-name`,title:t,children:t}),i&&(0,I.jsx)(`div`,{className:`graph-side-created`,children:i}),(0,I.jsx)(`div`,{className:`graph-side-meta`,children:a})]})}return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`div`,{className:`graph-side-labels`,children:[e.labels.join(` · `),e.trashed?` · Trashed`:``]}),(0,I.jsx)(`div`,{className:`graph-side-id`,children:e.id})]})})()}),(0,I.jsx)(`button`,{type:`button`,className:`graph-side-close`,onClick:a,"aria-label":`Close`,children:(0,I.jsx)(s,{size:14})})]}),e.trashed&&(0,I.jsxs)(`dl`,{className:`graph-side-props graph-side-trash-meta`,children:[(0,I.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,I.jsx)(`dt`,{children:`trashedAt`}),(0,I.jsx)(`dd`,{children:We(e.properties.trashedAt)})]}),(0,I.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,I.jsx)(`dt`,{children:`trashedBy`}),(0,I.jsx)(`dd`,{children:We(e.properties.trashedBy)})]})]}),(0,I.jsxs)(`dl`,{className:`graph-side-props`,children:[l.length===0&&(0,I.jsx)(`div`,{className:`graph-side-empty`,children:`No properties.`}),l.map(([e,t])=>(0,I.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,I.jsx)(`dt`,{children:e}),(0,I.jsx)(`dd`,{children:We(t)})]},e))]}),u.length>0&&(0,I.jsxs)(`section`,{className:`graph-side-edges`,children:[(0,I.jsxs)(`h3`,{className:`graph-side-edges-heading`,children:[`Connections (`,u.length,`)`]}),u.map(t=>{let n=t.from===e.id,i=n?t.to:t.from,a=r.get(i),o=a?ye(a):i,s=n?`→`:`←`,c=Object.entries(t.properties??{}).filter(([,e])=>e!=null&&e!==``);return(0,I.jsxs)(`div`,{className:`graph-side-edge`,children:[(0,I.jsxs)(`div`,{className:`graph-side-edge-header`,children:[(0,I.jsx)(`span`,{className:`graph-side-edge-type`,children:t.type}),(0,I.jsx)(`span`,{className:`graph-side-edge-arrow`,children:s}),(0,I.jsx)(`span`,{className:`graph-side-edge-other`,title:o,children:o})]}),c.length>0&&(0,I.jsx)(`dl`,{className:`graph-side-edge-props`,children:c.map(([e,t])=>(0,I.jsxs)(`div`,{className:`graph-side-prop`,children:[(0,I.jsx)(`dt`,{children:e}),(0,I.jsx)(`dd`,{children:We(t)})]},e))})]},t.id)})]}),e.trashed&&(0,I.jsxs)(`footer`,{className:`graph-side-footer`,children:[!d&&!p&&(0,I.jsxs)(`button`,{type:`button`,className:`graph-side-restore`,onClick:b,children:[(0,I.jsx)(ee,{size:14}),` Restore`]}),d&&(0,I.jsx)(`div`,{className:`graph-delete-confirm`,children:(0,I.jsxs)(`p`,{children:[(0,I.jsx)(_,{size:14,className:`spin`}),` Restoring…`]})}),p&&(0,I.jsxs)(`div`,{className:`graph-delete-confirm graph-delete-confirm-error`,children:[(0,I.jsxs)(`p`,{children:[`Restore failed: `,p]}),(0,I.jsxs)(`div`,{className:`graph-delete-confirm-buttons`,children:[(0,I.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-cancel`,onClick:()=>{m(null)},children:`Close`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-do`,onClick:b,children:`Retry`})]})]})]}),!e.trashed&&(0,I.jsxs)(`footer`,{className:`graph-side-footer`,children:[!h&&!v&&(0,I.jsxs)(`button`,{type:`button`,className:`graph-side-trash`,onClick:x,children:[(0,I.jsx)(n,{size:14}),` Trash`]}),h&&(0,I.jsx)(`div`,{className:`graph-delete-confirm`,children:(0,I.jsxs)(`p`,{children:[(0,I.jsx)(_,{size:14,className:`spin`}),` Trashing…`]})}),v&&(0,I.jsxs)(`div`,{className:`graph-delete-confirm graph-delete-confirm-error`,children:[(0,I.jsxs)(`p`,{children:[`Trash failed: `,v]}),(0,I.jsxs)(`div`,{className:`graph-delete-confirm-buttons`,children:[(0,I.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-cancel`,onClick:()=>{y(null)},children:`Close`}),(0,I.jsx)(`button`,{type:`button`,className:`graph-delete-confirm-do`,onClick:x,children:`Retry`})]})]})]})]})}function ze(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 Be=class extends Error{body;constructor(e){super(e.error),this.body=e}};function Ve({viewStack:e}){let t=e.map(e=>e.kind===`filter`?`Filter`:e.rootLabel??`Node`);return(0,I.jsx)(`div`,{className:`graph-breadcrumb`,role:`navigation`,"aria-label":`Graph navigation breadcrumb`,children:t.map((e,n)=>(0,I.jsxs)(`span`,{className:`graph-breadcrumb-item`,children:[n>0&&(0,I.jsx)(`span`,{className:`graph-breadcrumb-separator`,"aria-hidden":`true`,children:`›`}),(0,I.jsx)(`span`,{className:`graph-breadcrumb-label${n===t.length-1?` is-current`:``}`,children:e})]},n))})}function He(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 Ue(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 We(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=Ue(e);if(t)return t}return JSON.stringify(e)}return String(e)}export{b as a,S as i,Ie as n,ee as r,Le 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-
|
|
8
|
+
<script type="module" crossorigin src="/assets/graph-CN60KyTy.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/ChatInput-CJo_77bp.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/graph-labels-h39S93Xo.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/Checkbox-YrQovXpN.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CFRU-BdJ.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/ChatInput-CJ50oqWt.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>Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/admin-
|
|
8
|
+
<script type="module" crossorigin src="/assets/admin-DloKrK2i.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/ChatInput-CJo_77bp.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/graph-labels-h39S93Xo.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/lib-Bnh57com.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/Checkbox-YrQovXpN.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/page-B0iMmY6t.js">
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CFRU-BdJ.js">
|
|
16
16
|
<link rel="stylesheet" crossorigin href="/assets/ChatInput-CJ50oqWt.css">
|
|
17
17
|
<link rel="stylesheet" crossorigin href="/assets/admin-CWMpccrR.css">
|
|
18
18
|
<link rel="stylesheet" href="/brand-defaults.css">
|