@rubytech/create-maxy-code 0.1.43 → 0.1.44
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/docs/references/platform.md +3 -1
- package/payload/server/public/assets/{admin-CzJDs5FQ.js → admin-GOZURixP.js} +2 -2
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-DJvcnhtT.js → architectureDiagram-Q4EWVU46-Ch-JZ1Q0.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-_vt7n9ql.js → blockDiagram-DXYQGD6D-C08tkD4C.js} +1 -1
- package/payload/server/public/assets/{brand-DNSV7-vn.css → brand-DCdOhh-I.css} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CdEo9QqN.js → c4Diagram-AHTNJAMY-IceRdWw3.js} +1 -1
- package/payload/server/public/assets/channel-8QQB2Zoe.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-JmuLOuir.js → chunk-336JU56O-Cey0rxmH.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-10f8pXpz.js → chunk-426QAEUC-Dzk8s0or.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-DajMd0ug.js → chunk-4TB4RGXK-C10nuKc8.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-B4A-XUHI.js → chunk-5FUZZQ4R-B1B8871D.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-BNM3rT14.js → chunk-5PVQY5BW-jvHIkgqP.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-atMwO81K.js → chunk-EDXVE4YY-7nDxvXHS.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-BUbZv2Nz.js → chunk-ENJZ2VHE-C8lJ1YYn.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-BMF-eWHb.js → chunk-ICPOFSXX-CT1d7veI.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-BEMDmPTI.js → chunk-OYMX7WX6-LTAfwxv0.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-DOM7Y4f1.js → chunk-U2HBQHQK-RoGrqrH0.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-C_uWyW6Y.js → chunk-X2U36JSP-D89ZBg3z.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-DQbgl47k.js → chunk-YZCP3GAM-Cyg122Hf.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-C44DEAgq.js → chunk-ZZ45TVLE-Dg59YYuG.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CViZOOjI.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Dm7eGBqB.js +1 -0
- package/payload/server/public/assets/clone-BC8oes11.js +1 -0
- package/payload/server/public/assets/{dagre-lNEvWLDX.js → dagre-BPzUsxie.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-CE3meBlZ.js → dagre-KV5264BT-CjDNXqPy.js} +1 -1
- package/payload/server/public/assets/data-CU9uH2JJ.js +1 -0
- package/payload/server/public/assets/{device-url-actions-a6Bd-MRk.js → device-url-actions-B588ZlnE.js} +1 -1
- package/payload/server/public/assets/{diagram-5BDNPKRD-BqR72jWu.js → diagram-5BDNPKRD-Bqq0vqWM.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-DOjamNAP.js → diagram-G4DWMVQ6-DSqocDhm.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-DAUB-aPu.js → diagram-MMDJMWI5-DZRWgKRL.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-DpToW00F.js → diagram-TYMM5635-DXRm-FXu.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-C-p2ze2T.js → erDiagram-SMLLAGMA-CFVgkUCo.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-B9SS6a8F.js → flowDiagram-DWJPFMVM-C82XCt9-.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-DnXZX0Gp.js → ganttDiagram-T4ZO3ILL-C4tnImlS.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-CtQ0FzPg.js → gitGraphDiagram-UUTBAWPF-DXHutP-a.js} +1 -1
- package/payload/server/public/assets/graph-BI7yVwmT.js +1 -0
- package/payload/server/public/assets/graph-labels-bI0uSt_-.js +1 -0
- package/payload/server/public/assets/{graphlib-nUaDKzkp.js → graphlib-BvR5tL62.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-c2wWbEaX.js → infoDiagram-42DDH7IO-DgFMqgZy.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BBOgnjrU.js → ishikawaDiagram-UXIWVN3A-_5gmh1-V.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DzIkOZor.js → journeyDiagram-VCZTEJTY-CNfDVgwI.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-NoAdbB_E.js → kanban-definition-6JOO6SKY-Djifb_Z6.js} +1 -1
- package/payload/server/public/assets/{line-BRK1p00q.js → line-0fRVrNiw.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-Bm0OvYTL.js → mermaid-parser.core-DXA7LKDt.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-CTznq93v.js → mermaid.core-BCfYtdMJ.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-BOQ1enWi.js → mindmap-definition-QFDTVHPH-sTRvikWi.js} +1 -1
- package/payload/server/public/assets/{page-Dn3gASQM.js → page-BaRMnC96.js} +1 -1
- package/payload/server/public/assets/{page-BLNJpxTT.js → page-DKdUMAhI.js} +2 -2
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-2S-XHkal.js → pieDiagram-DEJITSTG-QLTieded.js} +1 -1
- package/payload/server/public/assets/{public-D0z7BALL.js → public-rUUducAl.js} +3 -3
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CncZqXXr.js → quadrantDiagram-34T5L4WZ-DOKCcqAZ.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-CPeWs9fs.js → requirementDiagram-MS252O5E-BX6Zpq1X.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-A4_669ey.js → sankeyDiagram-XADWPNL6-B05NdgZX.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-DD-qEurY.js → sequenceDiagram-FGHM5R23-CHF8ZdUb.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-CdO6Mw_T.js → stateDiagram-FHFEXIEX-DTAt7Ytz.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-2bJIW7wn.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-JH65fN1V.js → timeline-definition-GMOUNBTQ-Dzd6X_ei.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CJLoNrBL.js → vennDiagram-DHZGUBPP-BAbM4QlQ.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BgM9eEf7.js → wardleyDiagram-NUSXRM2D-CIOXXKJd.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DCmesmc9.js → xychartDiagram-5P7HB3ND-oF9sZesS.js} +1 -1
- package/payload/server/public/data.html +5 -5
- package/payload/server/public/graph.html +5 -5
- package/payload/server/public/index.html +7 -7
- package/payload/server/public/public.html +4 -4
- package/payload/server/public/assets/channel-DzmCBQ_9.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-DVoOmecn.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-B0r3hpf9.js +0 -1
- package/payload/server/public/assets/clone-Dde30M8J.js +0 -1
- package/payload/server/public/assets/data-DW6QAnMD.js +0 -1
- package/payload/server/public/assets/graph-D13IJB3w.js +0 -1
- package/payload/server/public/assets/graph-labels-CI9WmEiE.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-D28bJZnf.js +0 -1
- /package/payload/server/public/assets/{brand-FZ59T8pI.js → brand-Dln107gD.js} +0 -0
package/package.json
CHANGED
|
@@ -74,7 +74,9 @@ The admin interface is a three-pane layout: a sidebar on the left with navigatio
|
|
|
74
74
|
|
|
75
75
|
Page titles are brand-aware: the browser tab shows your product name (e.g. `Real Agent` instead of `Maxy`) on every shell — chat, graph, and data — so a non-default brand never leaks the default name in tab strips or browser history.
|
|
76
76
|
|
|
77
|
-
**Session lifecycle and reconcile model.** The sidebar Sessions list is driven by a single Server-Sent Events feed at `/api/admin/claude-sessions/events`. The session manager watches the two directories Claude Code writes (`${CLAUDE_CONFIG_DIR}/sessions/<pid>.json` for live state, `${CLAUDE_CONFIG_DIR}/projects/<slug>/<sid>.jsonl` for transcripts) and emits `row-created`, `row-updated`, `row-archived`, or `row-removed` deltas to every connected browser tab. On connect the manager replays the current row index so a freshly-opened tab catches up without polling, then streams deltas as files change on disk. Two open tabs see the same list within ~300ms of any spawn, status flip, or exit; no refresh button required for state to be current. The legacy `/list` fetch and `useAdminSessions` hook stay mounted to serve the ConversationsModal and the post-action reconcile path in `session-actions`, but the sidebar's visible rows come from the row store, not from `/list`. Each EventSource open emits `[admin-events] client-connected ip=<…> seeded-rows=<n>` server-side and `[admin-ui] session-row-store connected events-received=<n>` in the browser console; transport drops log `[admin-ui] session-row-store reconnect attempt=<n>` until the EventSource reattaches.
|
|
77
|
+
**Session lifecycle and reconcile model.** The sidebar Sessions list is driven by a single Server-Sent Events feed at `/api/admin/claude-sessions/events`. The session manager watches the two directories Claude Code writes (`${CLAUDE_CONFIG_DIR}/sessions/<pid>.json` for live state, `${CLAUDE_CONFIG_DIR}/projects/<slug>/<sid>.jsonl` for transcripts) and emits `row-created`, `row-updated`, `row-archived`, or `row-removed` deltas to every connected browser tab. On connect the manager replays the current row index so a freshly-opened tab catches up without polling, then streams deltas as files change on disk. Two open tabs see the same list within ~300ms of any spawn, status flip, or exit; no refresh button required for state to be current. The legacy `/list` fetch and `useAdminSessions` hook stay mounted to serve the ConversationsModal and the post-action reconcile path in `session-actions`, but the sidebar's visible rows come from the row store, not from `/list`. Each EventSource open emits `[admin-events] client-connected ip=<…> seeded-rows=<n>` server-side and `[admin-ui] session-row-store connected events-received=<n>` in the browser console; transport drops log `[admin-ui] session-row-store reconnect trigger=<auto|manual> attempt=<n> delay-ms=<n>` until the EventSource reattaches. The small dot at the right edge of the Active/Archived/All segmented control is the live-updates indicator: sage when the SSE feed is connected, grey when the feed has dropped. The grey state is an actionable button — clicking it cancels any pending backoff and re-opens the feed immediately, with the click logged as `trigger=manual` so manual retries are distinguishable from automatic ones in the console.
|
|
78
|
+
|
|
79
|
+
The row feed sits behind `requireAdminSession` like every other admin route, so the URL must carry `?session_key=<cacheKey>` — `EventSource` cannot send custom headers, so the query string is the only viable transport. Every admin URL (fetch and EventSource alike) routes through the shared `appendAdminSessionKey(url, cacheKey)` helper exported from `app/lib/useAdminFetch.ts`, which is the single source of truth for the convention; no caller constructs the query string by hand. On a 4xx rejection the browser-side store probes the same URL once per reconnect (suppressed after a successful `open`, capped at one fetch per attempt) and logs `[admin-ui] session-row-store sse-error status=<n> code=<code> attempt=<n>`. The `code` field uses the closed `AdminSessionRejectCode` taxonomy (`session-missing | session-not-registered | session-expired-age | grant-expired`, plus a default `unknown` bucket) that mirrors the server-side rejection emitted by `requireAdminSession`, so a single grep correlates client and server timelines on the same code.
|
|
78
80
|
|
|
79
81
|
The trade-off is a longer-lived connection per tab: the manager's per-process subscriber count rises with open tabs, and the SSE channel must survive proxy idle timeouts. The manager emits a 25-second keep-alive comment line on every connection (ignored by EventSource consumers, refreshes the proxy clock) and the browser-side store force-closes-and-reconnects on transport errors with exponential backoff capped at 30s.
|
|
80
82
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e,t}from"./chunk-DD-I1_y5.js";import{a as n,c as r,d as i,f as a,h as o,i as s,l as c,m as l,o as u,p as d,s as f,t as p,u as m}from"./brand-FZ59T8pI.js";import{c as h,g,h as _,l as v,m as y,o as b,p as x,s as S,u as C}from"./graph-labels-CI9WmEiE.js";import{i as ee,r as w,t as te}from"./page-BLNJpxTT.js";import{i as ne,n as re,r as ie}from"./page-Dn3gASQM.js";import{i as T,n as E,o as D,r as O,s as k}from"./device-url-actions-a6Bd-MRk.js";var ae=d(),A=e(o(),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 oe(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var se=`admin-landing-redirected`,ce=`/graph`;function le(e){return e.appState===`chat`&&!e.alreadyRedirected}function ue(){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),[ee,w]=(0,A.useState)(null),[te,ne]=(0,A.useState)(void 0),[re,ie]=(0,A.useState)(null),[T,E]=(0,A.useState)(null),[D,O]=(0,A.useState)([]),[k,ae]=(0,A.useState)(!1),[ue,de]=(0,A.useState)(void 0),fe=(0,A.useRef)(void 0),[pe,me]=(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&&me(!0)}).catch(()=>{})},[]);let he=(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),E(r.conversationId??null),C(r.businessName),w(r.role??null),ne(r.userName===void 0?null:r.userName),ie(r.avatar??null);let i=oe(r.thinkingView);return fe.current=i,de(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(se)===`1`}catch{}if(le({appState:e,alreadyRedirected:t})){try{sessionStorage.setItem(se,`1`)}catch{}console.info(`[admin-ui] landing-redirect target=${ce}`),window.location.replace(ce)}},[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}`),O(a.accounts),t(`account-picker`);return}y(a.session_key),E(a.conversationId??null),C(a.businessName),w(a.role??null),ne(a.userName===void 0?null:a.userName),ie(a.avatar??null);let o=oe(a.thinkingView);if(fe.current=o,de(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),ae(!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),w(null),ne(void 0),ie(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)}finally{_(!1)}},[]),xe=(0,A.useCallback)(()=>{y(null),w(null),ne(void 0),ie(null);try{sessionStorage.removeItem(`maxy-admin-session-key`),sessionStorage.removeItem(se)}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:ee,userName:te,userAvatar:re,conversationId:T,setConversationId:E,accounts:D,accountPickerLoading:k,expandAll:ue,setExpandAll:de,expandAllDefaultRef:fe,remoteAuthEnabled:pe,pinInputRef:he,setPinFormRef:ge,handleSetPin:ve,handleLogin:ye,handleAccountSelect:(0,A.useCallback)(async e=>{ae(!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 de=a(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),fe=a(`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`}]]),pe=a(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),me=a(`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`}]]),he=a(`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`}]]),ge=a(`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`}]]),_e=a(`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`}]]),ve=a(`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`}]]),ye=a(`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`}]]),be=a(`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`}]]),xe=a(`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`}]]),Se=a(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Ce=a(`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`}]]),we=a(`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`}]]),j=u();function Te({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 Ee(e){let{pin:t,setPin:r,showPin:i,setShowPin:a,pinLoading:o,pinError:c,pinInputRef:l,setPinFormRef:u,onSubmit:d,operatorName:f,setOperatorName:m}=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:p.productName,className:`connect-logo connect-logo--maxy`}),!p.logoContainsName&&(0,j.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,p.productName]}),(0,j.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,p.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=>m(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)(Te,{inputRef:l,value:t,onChange:r,onComplete:()=>{},showPin:i}),(0,j.jsx)(D,{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)(n,{checked:i,onChange:()=>a(e=>!e),label:`Show PIN`})]}),c&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:c})]})})}function De(e){let{pin:t,setPin:r,showPin:i,setShowPin:a,pinLoading:o,pinError:c,pinInputRef:l,onSubmit:u,onChangePin:d,remoteAuthEnabled:f,onSignOutRemote:m}=e;return(0,j.jsxs)(`div`,{className:`connect-page`,children:[f&&m&&(0,j.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:m,children:`Sign out`}),(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsx)(`img`,{src:s,alt:p.productName,className:`connect-logo connect-logo--maxy`}),!p.logoContainsName&&(0,j.jsx)(`h1`,{className:`connect-title`,children:p.productName}),(0,j.jsxs)(`form`,{onSubmit:u,className:`connect-pin-form`,children:[(0,j.jsxs)(`div`,{className:`pin-input-row`,children:[(0,j.jsx)(Te,{inputRef:l,value:t,onChange:r,onComplete:()=>{},showPin:i,autoFocus:!0}),(0,j.jsx)(D,{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)(n,{checked:i,onChange:()=>a(e=>!e),label:`Show PIN`}),(0,j.jsx)(D,{type:`button`,variant:`ghost`,onClick:d,children:`Change PIN`})]})]}),c&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:c})]})]})}function Oe(e){let{accounts:t,loading:n,error:r,onSelect:i}=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:p.productName,className:`connect-logo connect-logo--maxy`}),!p.logoContainsName&&(0,j.jsx)(`h1`,{className:`connect-title`,children:p.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:()=>i(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)(y,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function ke(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:o,setAppState:c}=e,[l,u]=(0,A.useState)(!1),[d,f]=(0,A.useState)(!1);async function m(){f(!0),o(``);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?u(!0):e.error&&o(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),o(`Could not launch browser.`)}f(!1)}async function h(){i(!0),o(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),u(!0),i(!1);for(let e=0;e<120;e++)if(await new Promise(e=>setTimeout(e,2e3)),(await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`wait`})})).json()).authenticated){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),c(`enter-pin`);return}o(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&o(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),o(`Could not start auth flow.`)}i(!1)}async function g(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),o(``)}return t||l?(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:()=>u(!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)(D,{variant:`primary`,onClick:h,disabled:r,children:r?(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`})}),a&&(0,j.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(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:p.productName,className:`connect-logo connect-logo--maxy`}),!p.logoContainsName&&(0,j.jsx)(`span`,{className:`connect-logo-label`,children:p.productName})]})]}),(0,j.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,p.productName]}),(0,j.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,j.jsx)(D,{variant:`primary`,onClick:h,disabled:r,children:r?(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:d,style:{marginTop:`12px`,background:`none`,border:`none`,color:`var(--color-primary, #666)`,fontSize:`13px`,cursor:`pointer`,textDecoration:`underline`,textUnderlineOffset:`3px`},children:d?`Launching…`:`Open browser first`}),a&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:a})]})})}var Ae=`maxy-shell-side-px`;function je(){if(typeof window>`u`)return 0;let e=document.querySelector(`.platform > .artefact`)?.getBoundingClientRect();return e&&e.width>0?Math.round(e.width):0}function Me(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=Math.max(248,t-480-je());return Math.min(Math.max(e,248),n)}function Ne(){if(typeof window>`u`)return 264;try{let e=window.localStorage.getItem(Ae);if(!e)return 264;let t=parseInt(e,10);if(Number.isFinite(t)&&t>=248)return Me(t)}catch{}return 264}function Pe({targetSelector:e=`.platform`}){let t=(0,A.useRef)(null),[n,r]=(0,A.useState)(()=>Ne()),i=(0,A.useRef)(n);(0,A.useEffect)(()=>{let t=document.querySelector(e);!t||!(t instanceof HTMLElement)||(t.style.setProperty(`--side-px`,`${n}px`),i.current=n)},[n,e]);let a=(0,A.useCallback)(()=>{r(e=>{let t=Me(e);return t===e?e:t})},[]);(0,A.useEffect)(()=>{a(),window.addEventListener(`resize`,a);let t=document.querySelector(e),n=null;return t instanceof HTMLElement&&(n=new MutationObserver(a),n.observe(t,{attributes:!0,attributeFilter:[`data-artefact`,`class`]})),()=>{window.removeEventListener(`resize`,a),n?.disconnect()}},[a,e]);let o=e=>{e.preventDefault();let n=t.current;if(!n)return;n.setPointerCapture(e.pointerId),n.classList.add(`dragging`);let a=!1,o=e=>{a=!0,r(Me(Math.round(e.clientX)))},s=()=>{if(n.releasePointerCapture(e.pointerId),n.classList.remove(`dragging`),window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),!a)return;let t=i.current;try{window.localStorage.setItem(Ae,String(t))}catch{}console.info(`[admin-ui] sidebar-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=Me(264);r(e);try{window.localStorage.removeItem(Ae)}catch{}console.info(`[admin-ui] sidebar-resize px=${e}`)};return(0,j.jsx)(`div`,{ref:t,className:`side-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,onPointerDown:o,onDoubleClick:s})}var Fe=`maxy-shell-artefact-px`;function Ie(){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 Re(Math.round((e-n)*(2/3)))}function Le(){if(typeof window>`u`)return 320;try{let e=window.localStorage.getItem(Fe);if(!e)return Ie();let t=parseInt(e,10);if(Number.isFinite(t)&&t>=320)return t}catch{}return Ie()}function Re(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 ze({targetSelector:e=`.platform`}){let t=(0,A.useRef)(null),[n,r]=(0,A.useState)(()=>Le()),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=Re(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(Re(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(Fe,String(t))}catch{}console.info(`[admin-ui] artefact-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=Ie();r(e);try{window.localStorage.removeItem(Fe)}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})}function Be(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 Ve(e){return e==null?`—`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function He({sessionId:e,cacheKey:t,onRenamed:n,onClose:a,recentsActions:o,liveRow:s}){let[c,l]=(0,A.useState)(null),[u,d]=(0,A.useState)(!0),[g,b]=(0,A.useState)(null),[x,C]=(0,A.useState)(!1),[ee,w]=(0,A.useState)(!1),[te,ne]=(0,A.useState)(``),[re,ie]=(0,A.useState)(!1),[E,D]=(0,A.useState)(null),[O,ae]=(0,A.useState)(null),[oe,se]=(0,A.useState)(null),[ce,le]=(0,A.useState)(!1),ue=(0,A.useRef)(null),fe=h(t,o,`pane`),{isPinned:me,togglePin:ge}=S(p.hostname),_e=(0,A.useRef)(s?.status),ve=s?.status,ye=(0,A.useCallback)(async()=>{d(!0),b(null);try{let n=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}/meta?session_key=${encodeURIComponent(t)}`);if(n.status===404){let t=_e.current??`alive`;console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=${t} to=gone trigger=404`),C(!0),l(null);return}if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`meta returned ${n.status} ${e.slice(0,200)}`)}let r=await n.json();l(r),ne(r.displayName),C(!1)}catch(e){b(e instanceof Error?e.message:String(e)),console.error(`[admin-ui] sidebar-meta-pane fetch failed:`,e)}finally{d(!1)}},[e,t]);(0,A.useEffect)(()=>{console.info(`[admin-ui] sidebar-meta-pane sessionId=${e.slice(0,8)}`),ye()},[ye,e]),(0,A.useEffect)(()=>{let t=_e.current;if(_e.current=ve,!(t===void 0&&ve!==void 0)&&t!==ve){if(t===`alive`&&ve===`ended`){console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=alive to=ended trigger=list-flip`),ye();return}if(t!==void 0&&ve===void 0){console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=${t} to=gone trigger=list-flip`),ye();return}}},[ve,ye,e]),(0,A.useEffect)(()=>{if(!ce)return;let e=e=>{ue.current&&!ue.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 be=(0,A.useCallback)(async()=>{if(!c)return;let r=te.trim();if(!r||r===c.displayName){w(!1);return}ie(!0);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}?session_key=${encodeURIComponent(t)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({displayName:r})});if(!i.ok){let e=await i.text().catch(()=>``);throw Error(`PATCH ${i.status} ${e.slice(0,200)}`)}l({...c,displayName:r}),w(!1),n()}catch(e){console.error(`[admin-ui] sidebar-meta-pane rename failed:`,e),b(e instanceof Error?e.message:String(e))}finally{ie(!1)}},[c,te,e,t,n]),xe=(0,A.useCallback)(async(e,t)=>{D(await T(t)?`Copied ${e}`:`Copy failed`),window.setTimeout(()=>D(null),1500)},[]),we=(0,A.useCallback)(async(e,t,n)=>{ae(null);let r=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(!r.ok){ae(r.error??`action failed`);return}n&&a()},[fe,a]);if(x&&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:a,children:[(0,j.jsx)(v,{size:14}),` Close`]})})]});if(u&&!c)return(0,j.jsx)(`main`,{className:`session-meta-pane`,style:{padding:24},children:(0,j.jsx)(y,{size:16,className:`spinning`})});if(g&&!c)return(0,j.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24},children:[(0,j.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:g}),(0,j.jsx)(`button`,{type:`button`,className:`action-btn`,onClick:()=>void ye(),children:`Retry`})]});if(!c)return null;let Te=c.sessionId,Ee=c.status===`alive`,De=me(c.sessionId),Oe=fe.inFlight;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:[ee?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`input`,{type:`text`,value:te,onChange:e=>ne(e.target.value),maxLength:256,autoFocus:!0,style:{fontSize:22,fontWeight:600,flex:1,padding:`4px 8px`},onKeyDown:e=>{e.key===`Enter`&&be(),e.key===`Escape`&&(ne(c.displayName),w(!1))}}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Confirm rename`,disabled:re,onClick:()=>void be(),children:re?(0,j.jsx)(y,{size:16,className:`spinning`}):(0,j.jsx)(i,{size:16})}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Cancel rename`,onClick:()=>{ne(c.displayName),w(!1)},children:(0,j.jsx)(v,{size:16})})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`h2`,{style:{fontSize:22,fontWeight:600,margin:0,flex:1},children:c.displayName}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Rename`,onClick:()=>w(!0),children:(0,j.jsx)(Se,{size:16})})]}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Close pane`,onClick:a,children:(0,j.jsx)(v,{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:Ee?`alive · pid ${c.pid??`?`}`:`ended`}),(0,j.jsx)(`dt`,{children:`sessionId`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:Te}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy sessionId`,onClick:()=>void xe(`id`,Te),children:(0,j.jsx)(k,{size:12})})]}),(0,j.jsx)(`dt`,{children:`Started at`}),(0,j.jsxs)(`dd`,{children:[c.startedAt,` `,(0,j.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,Be(c.startedAt),`)`]})]}),(0,j.jsx)(`dt`,{children:`Last message`}),(0,j.jsx)(`dd`,{children:c.lastMessageAt?(0,j.jsxs)(j.Fragment,{children:[c.lastMessageAt,` `,(0,j.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,Be(c.lastMessageAt),`)`]})]}):`—`}),(0,j.jsx)(`dt`,{children:`Turns`}),(0,j.jsxs)(`dd`,{children:[c.turnCount,c.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:Ve(c.sizeBytes)}),(0,j.jsx)(`dt`,{children:`JSONL path`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:c.jsonlPath??`—`}),c.jsonlPath&&(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy JSONL path`,onClick:()=>void xe(`path`,c.jsonlPath),children:(0,j.jsx)(k,{size:12})})]}),Ee&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`dt`,{children:`Session URL`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:c.url??`—`}),c.url&&(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy URL`,onClick:()=>void xe(`URL`,c.url),children:(0,j.jsx)(k,{size:12})})]}),(0,j.jsx)(`dt`,{children:`Channel`}),(0,j.jsx)(`dd`,{children:c.channel??`—`}),(0,j.jsx)(`dt`,{children:`Role`}),(0,j.jsx)(`dd`,{children:c.role??`—`}),(0,j.jsx)(`dt`,{children:`senderId`}),(0,j.jsx)(`dd`,{"data-mono":!0,children:(0,j.jsx)(`span`,{children:c.senderId||`—`})})]})]})}),(()=>{let e=[];return Ee&&c.url&&e.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>window.open(c.url,`_blank`,`noopener,noreferrer`),children:[(0,j.jsx)(_,{size:14}),` Open in new tab`]},`open-tab`)),c.jsonlPath&&e.push((0,j.jsxs)(`a`,{className:`action-btn`,href:`vscode://file/${c.jsonlPath}`,title:`Open JSONL in VS Code`,children:[(0,j.jsx)(m,{size:14}),` Open JSONL in editor`]},`open-jsonl`)),Ee||e.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`primary`,disabled:Oe===`resume`,onClick:()=>void we(`resume`,c.sessionId,!1),children:[Oe===`resume`?(0,j.jsx)(y,{size:14,className:`spinning`}):(0,j.jsx)(r,{size:14}),` Resume`]},`resume`)),e.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>w(!0),children:[(0,j.jsx)(Se,{size:14}),` Rename`]},`rename`),(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-active":De?`true`:void 0,onClick:()=>ge(c.sessionId),children:[(0,j.jsx)(Ce,{size:14}),` `,De?`Unpin`:`Pin`]},`pin`),(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,disabled:Oe===`archive`,title:Ee?`Manager will refuse with 409 — end the session first`:void 0,onClick:()=>void we(`archive`,c.sessionId,!Ee),children:[Oe===`archive`?(0,j.jsx)(y,{size:14,className:`spinning`}):(0,j.jsx)(de,{size:14}),` Archive`]},`archive`)),e.push(Ee?(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:Oe===`end`,onClick:()=>se({action:`end`,sessionId:c.sessionId,displayName:c.displayName}),children:[(0,j.jsx)(pe,{size:14}),` End session`]},`end`):(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:Oe===`purge`,onClick:()=>se({action:`purge`,sessionId:c.sessionId,displayName:c.displayName}),children:[(0,j.jsx)(f,{size:14}),` Purge JSONL`]},`purge`)),(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`section`,{className:`action-bar`,children:e}),(0,j.jsxs)(`section`,{className:`session-actions-overflow`,ref:ue,children:[(0,j.jsx)(`button`,{type:`button`,className:`session-actions-overflow__trigger`,"aria-label":`Actions`,"aria-haspopup":`menu`,"aria-expanded":ce,onClick:()=>{le(e=>{let t=!e;return t&&console.info(`[admin-ui] pane-actions-overflow-open sessionId=${c.sessionId.slice(0,8)}`),t})},children:(0,j.jsx)(he,{size:14})}),ce&&(0,j.jsx)(`div`,{className:`overflow-popover`,role:`menu`,onClick:()=>le(!1),children:e})]})]})})(),E&&(0,j.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:E}),O&&(0,j.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:O}),g&&(0,j.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:g}),oe&&(0,j.jsx)(Ue,{confirm:oe,busy:Oe===oe.action,onCancel:()=>se(null),onConfirm:async()=>{await we(oe.action,oe.sessionId,oe.action===`purge`),se(null)}})]})}function Ue({confirm:e,busy:t,onCancel:n,onConfirm:r}){let i=e.action===`end`?`End live session?`:`Purge session JSONL?`,a=e.action===`end`?`This kills the PTY for ${e.displayName}. The JSONL is kept on disk and can be resumed later.`:`This hard-deletes the transcript and sidecar for ${e.displayName}. The action cannot be undone.`,o=e.action===`end`?`End session`:`Purge`;return(0,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)(y,{size:13,className:`spinning`}):o})]})]})})}function We({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 Ge=t((e=>{var t=o();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,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),o=r[0].inst,l=r[1];return s(function(){o.value=n,o.getSnapshot=t,u(o)&&l({inst:o})},[e,n,t]),a(function(){return u(o)&&l({inst:o}),e(function(){u(o)&&l({inst:o})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),Ke=t(((e,t)=>{t.exports=Ge()})),qe=Ke(),Je=e(l(),1);function M(e){this.content=e}M.prototype={constructor:M,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 M(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 M(n)},addToStart:function(e,t){return new M([e,t].concat(this.remove(e).content))},addToEnd:function(e,t){var n=this.remove(e).content.slice();return n.push(e,t),new M(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 M(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=M.from(e),e.size?new M(e.content.concat(this.subtract(e).content)):this},append:function(e){return e=M.from(e),e.size?new M(this.subtract(e).content.concat(e.content)):this},subtract:function(e){var t=this;e=M.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}},M.from=function(e){if(e instanceof M)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new M(t)};function Ye(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=Ye(i.content,a.content,n+1);if(e!=null)return e}n+=i.nodeSize}}function Xe(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=Xe(o.content,s.content,n-1,r-1);if(e)return e}n-=c,r-=c}}var N=class e{constructor(e,t){if(this.content=e,this.size=t||0,t==null)for(let t=0;t<e.length;t++)this.size+=e[t].nodeSize}nodesBetween(e,t,n,r=0,i){for(let a=0,o=0;o<t;a++){let s=this.content[a],c=o+s.nodeSize;if(c>e&&n(s,r+o,i||null,a)!==!1&&s.content.size){let i=o+1;s.nodesBetween(Math.max(0,e-i),Math.min(s.content.size,t-i),n,r+i)}o=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,n,r){let i=``,a=!0;return this.nodesBetween(e,t,(o,s)=>{let c=o.isText?o.text.slice(Math.max(e,s)-s,t-s):o.isLeaf?r?typeof r==`function`?r(o):r:o.type.spec.leafText?o.type.spec.leafText(o):``:``;o.isBlock&&(o.isLeaf&&c||o.isTextblock)&&n&&(a?a=!1:i+=n),i+=c},0),i}append(t){if(!t.size)return this;if(!this.size)return t;let n=this.lastChild,r=t.firstChild,i=this.content.slice(),a=0;for(n.isText&&n.sameMarkup(r)&&(i[i.length-1]=n.withText(n.text+r.text),a=1);a<t.content.length;a++)i.push(t.content[a]);return new e(i,this.size+t.size)}cut(t,n=this.size){if(t==0&&n==this.size)return this;let r=[],i=0;if(n>t)for(let e=0,a=0;a<n;e++){let o=this.content[e],s=a+o.nodeSize;s>t&&((a<t||s>n)&&(o=o.isText?o.cut(Math.max(0,t-a),Math.min(o.text.length,n-a)):o.cut(Math.max(0,t-a-1),Math.min(o.content.size,n-a-1))),r.push(o),i+=o.nodeSize),a=s}return new e(r,i)}cutByIndex(t,n){return t==n?e.empty:t==0&&n==this.content.length?this:new e(this.content.slice(t,n))}replaceChild(t,n){let r=this.content[t];if(r==n)return this;let i=this.content.slice(),a=this.size+n.nodeSize-r.nodeSize;return i[t]=n,new e(i,a)}addToStart(t){return new e([t].concat(this.content),this.size+t.nodeSize)}addToEnd(t){return new e(this.content.concat(t),this.size+t.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;t<this.content.length;t++)if(!this.content[t].eq(e.content[t]))return!1;return!0}get firstChild(){return this.content.length?this.content[0]:null}get lastChild(){return this.content.length?this.content[this.content.length-1]:null}get childCount(){return this.content.length}child(e){let t=this.content[e];if(!t)throw RangeError(`Index `+e+` out of range for `+this);return t}maybeChild(e){return this.content[e]||null}forEach(e){for(let t=0,n=0;t<this.content.length;t++){let r=this.content[t];e(r,n,t),n+=r.nodeSize}}findDiffStart(e,t=0){return Ye(this,e,t)}findDiffEnd(e,t=this.size,n=e.size){return Xe(this,e,t,n)}findIndex(e){if(e==0)return Qe(0,e);if(e==this.size)return Qe(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?Qe(t+1,i):Qe(t,n);n=i}}toString(){return`<`+this.toStringInner()+`>`}toStringInner(){return this.content.join(`, `)}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(t,n){if(!n)return e.empty;if(!Array.isArray(n))throw RangeError(`Invalid input for Fragment.fromJSON`);return new e(n.map(t.nodeFromJSON))}static fromArray(t){if(!t.length)return e.empty;let n,r=0;for(let e=0;e<t.length;e++){let i=t[e];r+=i.nodeSize,e&&i.isText&&t[e-1].sameMarkup(i)?(n||=t.slice(0,e),n[n.length-1]=i.withText(n[n.length-1].text+i.text)):n&&n.push(i)}return new e(n||t,r)}static from(t){if(!t)return e.empty;if(t instanceof e)return t;if(Array.isArray(t))return this.fromArray(t);if(t.attrs)return new e([t],t.nodeSize);throw RangeError(`Can not convert `+t+` to a Fragment`+(t.nodesBetween?` (looks like multiple versions of prosemirror-model were loaded)`:``))}};N.empty=new N([],0);var Ze={index:0,offset:0};function Qe(e,t){return Ze.index=e,Ze.offset=t,Ze}function $e(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(!$e(e[n],t[n]))return!1}else{for(let n in e)if(!(n in t)||!$e(e[n],t[n]))return!1;for(let n in t)if(!(n in e))return!1}return!0}var P=class e{constructor(e,t){this.type=e,this.attrs=t}addToSet(e){let t,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(this.eq(i))return e;if(this.type.excludes(i.type))t||=e.slice(0,r);else if(i.type.excludes(this.type))return e;else !n&&i.type.rank>this.type.rank&&(t||=e.slice(0,r),t.push(this),n=!0),t&&t.push(i)}return t||=e.slice(),n||t.push(this),t}removeFromSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return e.slice(0,t).concat(e.slice(t+1));return e}isInSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return!0;return!1}eq(e){return this==e||this.type==e.type&&$e(this.attrs,e.attrs)}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return e}static fromJSON(e,t){if(!t)throw RangeError(`Invalid input for Mark.fromJSON`);let n=e.marks[t.type];if(!n)throw RangeError(`There is no mark type ${t.type} in this schema`);let r=n.create(t.attrs);return n.checkAttrs(r.attrs),r}static sameSet(e,t){if(e==t)return!0;if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}static setFrom(t){if(!t||Array.isArray(t)&&t.length==0)return e.none;if(t instanceof e)return[t];let n=t.slice();return n.sort((e,t)=>e.type.rank-t.type.rank),n}};P.none=[];var et=class extends Error{},F=class e{constructor(e,t,n){this.content=e,this.openStart=t,this.openEnd=n}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(t,n){let r=nt(this.content,t+this.openStart,n);return r&&new e(r,this.openStart,this.openEnd)}removeBetween(t,n){return new e(tt(this.content,t+this.openStart,n+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+`(`+this.openStart+`,`+this.openEnd+`)`}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(t,n){if(!n)return e.empty;let r=n.openStart||0,i=n.openEnd||0;if(typeof r!=`number`||typeof i!=`number`)throw RangeError(`Invalid input for Slice.fromJSON`);return new e(N.fromJSON(t,n.content),r,i)}static maxOpen(t,n=!0){let r=0,i=0;for(let e=t.firstChild;e&&!e.isLeaf&&(n||!e.type.spec.isolating);e=e.firstChild)r++;for(let e=t.lastChild;e&&!e.isLeaf&&(n||!e.type.spec.isolating);e=e.lastChild)i++;return new e(t,r,i)}};F.empty=new F(N.empty,0,0);function tt(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(tt(a.content,t-i-1,n-i-1)))}function nt(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=nt(o.content,t-a-1,n,o);return s&&e.replaceChild(i,o.copy(s))}function rt(e,t,n){if(n.openStart>e.depth)throw new et(`Inserted content deeper than insertion position`);if(e.depth-n.openStart!=t.depth-n.openEnd)throw new et(`Inconsistent open depths`);return it(e,t,n,0)}function it(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=it(e,t,n,r+1);return a.copy(a.content.replaceChild(i,o))}else if(!n.content.size)return lt(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 lt(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}else{let{start:i,end:o}=ft(n,e);return lt(a,ut(e,i,o,t,r))}}function at(e,t){if(!t.type.compatibleContent(e.type))throw new et(`Cannot join `+t.type.name+` onto `+e.type.name)}function ot(e,t,n){let r=e.node(n);return at(r,t.node(n)),r}function st(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 ct(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&&(st(e.nodeAfter,r),a++));for(let e=a;e<o;e++)st(i.child(e),r);t&&t.depth==n&&t.textOffset&&st(t.nodeBefore,r)}function lt(e,t){return e.type.checkContent(t),e.copy(t)}function ut(e,t,n,r,i){let a=e.depth>i&&ot(e,t,i+1),o=r.depth>i&&ot(n,r,i+1),s=[];return ct(null,e,i,s),a&&o&&t.index(i)==n.index(i)?(at(a,o),st(lt(a,ut(e,t,n,r,i+1)),s)):(a&&st(lt(a,dt(e,t,i+1)),s),ct(t,n,i,s),o&&st(lt(o,dt(n,r,i+1)),s)),ct(r,null,i,s),new N(s)}function dt(e,t,n){let r=[];return ct(null,e,n,r),e.depth>n&&st(lt(ot(e,t,n+1),dt(e,t,n+1)),r),ct(t,null,n,r),new N(r)}function ft(e,t){let n=t.depth-e.openStart,r=t.node(n).copy(e.content);for(let e=n-1;e>=0;e--)r=t.node(e).copy(N.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}var pt=class e{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw RangeError(`There is no position before the top-level node`);return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw RangeError(`There is no position after the top-level node`);return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],r=e.child(t);return n?e.child(t).cut(n):r}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[t*3],r=t==0?0:this.path[t*3-1]+1;for(let t=0;t<e;t++)r+=n.child(t).nodeSize;return r}marks(){let e=this.parent,t=this.index();if(e.content.size==0)return P.none;if(this.textOffset)return e.child(t).marks;let n=e.maybeChild(t-1),r=e.maybeChild(t);if(!n){let e=n;n=r,r=e}let i=n.marks;for(var a=0;a<i.length;a++)i[a].type.spec.inclusive===!1&&(!r||!i[a].isInSet(r.marks))&&(i=i[a--].removeFromSet(i));return i}marksAcross(e){let t=this.parent.maybeChild(this.index());if(!t||!t.isInline)return null;let n=t.marks,r=e.parent.maybeChild(e.index());for(var i=0;i<n.length;i++)n[i].type.spec.inclusive===!1&&(!r||!n[i].isInSet(r.marks))&&(n=n[i--].removeFromSet(n));return n}sharedDepth(e){for(let t=this.depth;t>0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos<this.pos)return e.blockRange(this);for(let n=this.depth-(this.parent.inlineContent||this.pos==e.pos?1:0);n>=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new _t(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=gt.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 gt.set(t,r=new mt);let i=r.elts[r.i]=e.resolve(t,n);return r.i=(r.i+1)%ht,i}},mt=class{constructor(){this.elts=[],this.i=0}},ht=12,gt=new WeakMap,_t=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)}},vt=Object.create(null),yt=class e{constructor(e,t,n,r=P.none){this.type=e,this.attrs=t,this.marks=r,this.content=n||N.empty}get children(){return this.content.content}get nodeSize(){return this.isLeaf?1:2+this.content.size}get childCount(){return this.content.childCount}child(e){return this.content.child(e)}maybeChild(e){return this.content.maybeChild(e)}forEach(e){this.content.forEach(e)}nodesBetween(e,t,n,r=0){this.content.nodesBetween(e,t,n,r,this)}descendants(e){this.nodesBetween(0,this.content.size,e)}get textContent(){return this.isLeaf&&this.type.spec.leafText?this.type.spec.leafText(this):this.textBetween(0,this.content.size,``)}textBetween(e,t,n,r){return this.content.textBetween(e,t,n,r)}get firstChild(){return this.content.firstChild}get lastChild(){return this.content.lastChild}eq(e){return this==e||this.sameMarkup(e)&&this.content.eq(e.content)}sameMarkup(e){return this.hasMarkup(e.type,e.attrs,e.marks)}hasMarkup(e,t,n){return this.type==e&&$e(this.attrs,t||e.defaultAttrs||vt)&&P.sameSet(this.marks,n||P.none)}copy(t=null){return t==this.content?this:new e(this.type,this.attrs,t,this.marks)}mark(t){return t==this.marks?this:new e(this.type,this.attrs,this.content,t)}cut(e,t=this.content.size){return e==0&&t==this.content.size?this:this.copy(this.content.cut(e,t))}slice(e,t=this.content.size,n=!1){if(e==t)return F.empty;let r=this.resolve(e),i=this.resolve(t),a=n?0:r.sharedDepth(t),o=r.start(a);return new F(r.node(a).content.cut(r.pos-o,i.pos-o),r.depth-a,i.depth-a)}replace(e,t,n){return rt(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 pt.resolveCached(this,e)}resolveNoCache(e){return pt.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()+`)`),xt(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw Error(`Called contentMatchAt on a node with invalid content`);return t}canReplace(e,t,n=N.empty,r=0,i=n.childCount){let a=this.contentMatchAt(e).matchFragment(n,r,i),o=a&&a.matchFragment(this.content,t);if(!o||!o.validEnd)return!1;for(let e=r;e<i;e++)if(!this.type.allowsMarks(n.child(e).marks))return!1;return!0}canReplaceWith(e,t,n,r){if(r&&!this.type.allowsMarks(r))return!1;let i=this.contentMatchAt(e).matchType(n),a=i&&i.matchFragment(this.content,t);return a?a.validEnd:!1}canAppend(e){return e.content.size?this.canReplace(this.childCount,this.childCount,e.content):this.type.compatibleContent(e.type)}check(){this.type.checkContent(this.content),this.type.checkAttrs(this.attrs);let e=P.none;for(let t=0;t<this.marks.length;t++){let n=this.marks[t];n.type.checkAttrs(n.attrs),e=n.addToSet(e)}if(!P.sameSet(e,this.marks))throw RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(e=>e.type.name)}`);this.content.forEach(e=>e.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(e=>e.toJSON())),e}static fromJSON(e,t){if(!t)throw RangeError(`Invalid input for Node.fromJSON`);let n;if(t.marks){if(!Array.isArray(t.marks))throw RangeError(`Invalid mark data for Node.fromJSON`);n=t.marks.map(e.markFromJSON)}if(t.type==`text`){if(typeof t.text!=`string`)throw RangeError(`Invalid text node in JSON`);return e.text(t.text,n)}let r=N.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}};yt.prototype.text=void 0;var bt=class e extends yt{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):xt(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 xt(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+`(`+t+`)`;return t}var St=class e{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(t,n){let r=new Ct(t,n);if(r.next==null)return e.empty;let i=wt(r);r.next&&r.err(`Unexpected trailing text`);let a=Pt(jt(i));return Ft(a,r),a}matchType(e){for(let t=0;t<this.next.length;t++)if(this.next[t].type==e)return this.next[t].next;return null}matchFragment(e,t=0,n=e.childCount){let r=this;for(let i=t;r&&i<n;i++)r=r.matchType(e.child(i).type);return r}get inlineContent(){return this.next.length!=0&&this.next[0].type.isInline}get defaultType(){for(let e=0;e<this.next.length;e++){let{type:t}=this.next[e];if(!(t.isText||t.hasRequiredAttrs()))return t}return null}compatible(e){for(let t=0;t<this.next.length;t++)for(let n=0;n<e.next.length;n++)if(this.next[t].type==e.next[n].type)return!0;return!1}fillBefore(e,t=!1,n=0){let r=[this];function i(a,o){let s=a.matchFragment(e,n);if(s&&(!t||s.validEnd))return N.from(o.map(e=>e.createAndFill()));for(let e=0;e<a.next.length;e++){let{type:t,next:n}=a.next[e];if(!(t.isText||t.hasRequiredAttrs())&&r.indexOf(n)==-1){r.push(n);let e=i(n,o.concat(t));if(e)return e}}return null}return i(this,[])}findWrapping(e){for(let t=0;t<this.wrapCache.length;t+=2)if(this.wrapCache[t]==e)return this.wrapCache[t+1];let t=this.computeWrapping(e);return this.wrapCache.push(e,t),t}computeWrapping(e){let t=Object.create(null),n=[{match:this,type:null,via:null}];for(;n.length;){let r=n.shift(),i=r.match;if(i.matchType(e)){let e=[];for(let t=r;t.type;t=t.via)e.push(t.type);return e.reverse()}for(let e=0;e<i.next.length;e++){let{type:a,next:o}=i.next[e];!a.isLeaf&&!a.hasRequiredAttrs()&&!(a.name in t)&&(!r.type||o.validEnd)&&(n.push({match:a.contentMatch,type:a,via:r}),t[a.name]=!0)}}return null}get edgeCount(){return this.next.length}edge(e){if(e>=this.next.length)throw RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(n){e.push(n);for(let r=0;r<n.next.length;r++)e.indexOf(n.next[r].next)==-1&&t(n.next[r].next)}return t(this),e.map((t,n)=>{let r=n+(t.validEnd?`*`:` `)+` `;for(let n=0;n<t.next.length;n++)r+=(n?`, `:``)+t.next[n].type.name+`->`+e.indexOf(t.next[n].next);return r}).join(`
|
|
1
|
+
import{o as e,t}from"./chunk-DD-I1_y5.js";import{a as n,c as r,d as i,f as a,h as o,i as s,l as c,m as l,o as u,p as d,s as f,t as p,u as m}from"./brand-Dln107gD.js";import{a as h,c as g,g as _,h as v,l as y,m as b,p as x,s as S,u as C}from"./graph-labels-bI0uSt_-.js";import{i as ee,r as w,t as te}from"./page-DKdUMAhI.js";import{i as ne,n as re,r as ie}from"./page-BaRMnC96.js";import{i as T,n as E,o as D,r as O,s as k}from"./device-url-actions-B588ZlnE.js";var ae=d(),A=e(o(),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 oe(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var se=`admin-landing-redirected`,ce=`/graph`;function le(e){return e.appState===`chat`&&!e.alreadyRedirected}function ue(){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),[ee,w]=(0,A.useState)(null),[te,ne]=(0,A.useState)(void 0),[re,ie]=(0,A.useState)(null),[T,E]=(0,A.useState)(null),[D,O]=(0,A.useState)([]),[k,ae]=(0,A.useState)(!1),[ue,de]=(0,A.useState)(void 0),fe=(0,A.useRef)(void 0),[pe,me]=(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&&me(!0)}).catch(()=>{})},[]);let he=(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),E(r.conversationId??null),C(r.businessName),w(r.role??null),ne(r.userName===void 0?null:r.userName),ie(r.avatar??null);let i=oe(r.thinkingView);return fe.current=i,de(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(se)===`1`}catch{}if(le({appState:e,alreadyRedirected:t})){try{sessionStorage.setItem(se,`1`)}catch{}console.info(`[admin-ui] landing-redirect target=${ce}`),window.location.replace(ce)}},[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}`),O(a.accounts),t(`account-picker`);return}y(a.session_key),E(a.conversationId??null),C(a.businessName),w(a.role??null),ne(a.userName===void 0?null:a.userName),ie(a.avatar??null);let o=oe(a.thinkingView);if(fe.current=o,de(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),ae(!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),w(null),ne(void 0),ie(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)}finally{_(!1)}},[]),xe=(0,A.useCallback)(()=>{y(null),w(null),ne(void 0),ie(null);try{sessionStorage.removeItem(`maxy-admin-session-key`),sessionStorage.removeItem(se)}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:ee,userName:te,userAvatar:re,conversationId:T,setConversationId:E,accounts:D,accountPickerLoading:k,expandAll:ue,setExpandAll:de,expandAllDefaultRef:fe,remoteAuthEnabled:pe,pinInputRef:he,setPinFormRef:ge,handleSetPin:ve,handleLogin:ye,handleAccountSelect:(0,A.useCallback)(async e=>{ae(!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 de=a(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),fe=a(`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`}]]),pe=a(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),me=a(`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`}]]),he=a(`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`}]]),ge=a(`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`}]]),_e=a(`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`}]]),ve=a(`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`}]]),ye=a(`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`}]]),be=a(`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`}]]),xe=a(`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`}]]),Se=a(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Ce=a(`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`}]]),we=a(`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`}]]),j=u();function Te({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 Ee(e){let{pin:t,setPin:r,showPin:i,setShowPin:a,pinLoading:o,pinError:c,pinInputRef:l,setPinFormRef:u,onSubmit:d,operatorName:f,setOperatorName:m}=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:p.productName,className:`connect-logo connect-logo--maxy`}),!p.logoContainsName&&(0,j.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,p.productName]}),(0,j.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,p.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=>m(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)(Te,{inputRef:l,value:t,onChange:r,onComplete:()=>{},showPin:i}),(0,j.jsx)(D,{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)(n,{checked:i,onChange:()=>a(e=>!e),label:`Show PIN`})]}),c&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:c})]})})}function De(e){let{pin:t,setPin:r,showPin:i,setShowPin:a,pinLoading:o,pinError:c,pinInputRef:l,onSubmit:u,onChangePin:d,remoteAuthEnabled:f,onSignOutRemote:m}=e;return(0,j.jsxs)(`div`,{className:`connect-page`,children:[f&&m&&(0,j.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:m,children:`Sign out`}),(0,j.jsxs)(`div`,{className:`connect-content`,children:[(0,j.jsx)(`img`,{src:s,alt:p.productName,className:`connect-logo connect-logo--maxy`}),!p.logoContainsName&&(0,j.jsx)(`h1`,{className:`connect-title`,children:p.productName}),(0,j.jsxs)(`form`,{onSubmit:u,className:`connect-pin-form`,children:[(0,j.jsxs)(`div`,{className:`pin-input-row`,children:[(0,j.jsx)(Te,{inputRef:l,value:t,onChange:r,onComplete:()=>{},showPin:i,autoFocus:!0}),(0,j.jsx)(D,{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)(n,{checked:i,onChange:()=>a(e=>!e),label:`Show PIN`}),(0,j.jsx)(D,{type:`button`,variant:`ghost`,onClick:d,children:`Change PIN`})]})]}),c&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:c})]})]})}function Oe(e){let{accounts:t,loading:n,error:r,onSelect:i}=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:p.productName,className:`connect-logo connect-logo--maxy`}),!p.logoContainsName&&(0,j.jsx)(`h1`,{className:`connect-title`,children:p.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:()=>i(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)(b,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function ke(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:o,setAppState:c}=e,[l,u]=(0,A.useState)(!1),[d,f]=(0,A.useState)(!1);async function m(){f(!0),o(``);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?u(!0):e.error&&o(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),o(`Could not launch browser.`)}f(!1)}async function h(){i(!0),o(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),u(!0),i(!1);for(let e=0;e<120;e++)if(await new Promise(e=>setTimeout(e,2e3)),(await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`wait`})})).json()).authenticated){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),c(`enter-pin`);return}o(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&o(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),o(`Could not start auth flow.`)}i(!1)}async function g(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),o(``)}return t||l?(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:()=>u(!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)(D,{variant:`primary`,onClick:h,disabled:r,children:r?(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`})}),a&&(0,j.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(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:p.productName,className:`connect-logo connect-logo--maxy`}),!p.logoContainsName&&(0,j.jsx)(`span`,{className:`connect-logo-label`,children:p.productName})]})]}),(0,j.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,p.productName]}),(0,j.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,j.jsx)(D,{variant:`primary`,onClick:h,disabled:r,children:r?(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:d,style:{marginTop:`12px`,background:`none`,border:`none`,color:`var(--color-primary, #666)`,fontSize:`13px`,cursor:`pointer`,textDecoration:`underline`,textUnderlineOffset:`3px`},children:d?`Launching…`:`Open browser first`}),a&&(0,j.jsx)(`p`,{className:`admin-pin-error`,children:a})]})})}var Ae=`maxy-shell-side-px`;function je(){if(typeof window>`u`)return 0;let e=document.querySelector(`.platform > .artefact`)?.getBoundingClientRect();return e&&e.width>0?Math.round(e.width):0}function Me(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=Math.max(248,t-480-je());return Math.min(Math.max(e,248),n)}function Ne(){if(typeof window>`u`)return 264;try{let e=window.localStorage.getItem(Ae);if(!e)return 264;let t=parseInt(e,10);if(Number.isFinite(t)&&t>=248)return Me(t)}catch{}return 264}function Pe({targetSelector:e=`.platform`}){let t=(0,A.useRef)(null),[n,r]=(0,A.useState)(()=>Ne()),i=(0,A.useRef)(n);(0,A.useEffect)(()=>{let t=document.querySelector(e);!t||!(t instanceof HTMLElement)||(t.style.setProperty(`--side-px`,`${n}px`),i.current=n)},[n,e]);let a=(0,A.useCallback)(()=>{r(e=>{let t=Me(e);return t===e?e:t})},[]);(0,A.useEffect)(()=>{a(),window.addEventListener(`resize`,a);let t=document.querySelector(e),n=null;return t instanceof HTMLElement&&(n=new MutationObserver(a),n.observe(t,{attributes:!0,attributeFilter:[`data-artefact`,`class`]})),()=>{window.removeEventListener(`resize`,a),n?.disconnect()}},[a,e]);let o=e=>{e.preventDefault();let n=t.current;if(!n)return;n.setPointerCapture(e.pointerId),n.classList.add(`dragging`);let a=!1,o=e=>{a=!0,r(Me(Math.round(e.clientX)))},s=()=>{if(n.releasePointerCapture(e.pointerId),n.classList.remove(`dragging`),window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),!a)return;let t=i.current;try{window.localStorage.setItem(Ae,String(t))}catch{}console.info(`[admin-ui] sidebar-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=Me(264);r(e);try{window.localStorage.removeItem(Ae)}catch{}console.info(`[admin-ui] sidebar-resize px=${e}`)};return(0,j.jsx)(`div`,{ref:t,className:`side-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,onPointerDown:o,onDoubleClick:s})}var Fe=`maxy-shell-artefact-px`;function Ie(){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 Re(Math.round((e-n)*(2/3)))}function Le(){if(typeof window>`u`)return 320;try{let e=window.localStorage.getItem(Fe);if(!e)return Ie();let t=parseInt(e,10);if(Number.isFinite(t)&&t>=320)return t}catch{}return Ie()}function Re(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 ze({targetSelector:e=`.platform`}){let t=(0,A.useRef)(null),[n,r]=(0,A.useState)(()=>Le()),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=Re(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(Re(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(Fe,String(t))}catch{}console.info(`[admin-ui] artefact-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=Ie();r(e);try{window.localStorage.removeItem(Fe)}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})}function Be(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 Ve(e){return e==null?`—`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function He({sessionId:e,cacheKey:t,onRenamed:n,onClose:a,recentsActions:o,liveRow:s}){let[c,l]=(0,A.useState)(null),[u,d]=(0,A.useState)(!0),[h,_]=(0,A.useState)(null),[x,C]=(0,A.useState)(!1),[ee,w]=(0,A.useState)(!1),[te,ne]=(0,A.useState)(``),[re,ie]=(0,A.useState)(!1),[E,D]=(0,A.useState)(null),[O,ae]=(0,A.useState)(null),[oe,se]=(0,A.useState)(null),[ce,le]=(0,A.useState)(!1),ue=(0,A.useRef)(null),fe=g(t,o,`pane`),{isPinned:me,togglePin:ge}=S(p.hostname),_e=(0,A.useRef)(s?.status),ve=s?.status,ye=(0,A.useCallback)(async()=>{d(!0),_(null);try{let n=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}/meta?session_key=${encodeURIComponent(t)}`);if(n.status===404){let t=_e.current??`alive`;console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=${t} to=gone trigger=404`),C(!0),l(null);return}if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`meta returned ${n.status} ${e.slice(0,200)}`)}let r=await n.json();l(r),ne(r.displayName),C(!1)}catch(e){_(e instanceof Error?e.message:String(e)),console.error(`[admin-ui] sidebar-meta-pane fetch failed:`,e)}finally{d(!1)}},[e,t]);(0,A.useEffect)(()=>{console.info(`[admin-ui] sidebar-meta-pane sessionId=${e.slice(0,8)}`),ye()},[ye,e]),(0,A.useEffect)(()=>{let t=_e.current;if(_e.current=ve,!(t===void 0&&ve!==void 0)&&t!==ve){if(t===`alive`&&ve===`ended`){console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=alive to=ended trigger=list-flip`),ye();return}if(t!==void 0&&ve===void 0){console.info(`[admin-ui] sidebar-meta-pane-reconcile sessionId=${e.slice(0,8)} from=${t} to=gone trigger=list-flip`),ye();return}}},[ve,ye,e]),(0,A.useEffect)(()=>{if(!ce)return;let e=e=>{ue.current&&!ue.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 be=(0,A.useCallback)(async()=>{if(!c)return;let r=te.trim();if(!r||r===c.displayName){w(!1);return}ie(!0);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}?session_key=${encodeURIComponent(t)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({displayName:r})});if(!i.ok){let e=await i.text().catch(()=>``);throw Error(`PATCH ${i.status} ${e.slice(0,200)}`)}l({...c,displayName:r}),w(!1),n()}catch(e){console.error(`[admin-ui] sidebar-meta-pane rename failed:`,e),_(e instanceof Error?e.message:String(e))}finally{ie(!1)}},[c,te,e,t,n]),xe=(0,A.useCallback)(async(e,t)=>{D(await T(t)?`Copied ${e}`:`Copy failed`),window.setTimeout(()=>D(null),1500)},[]),we=(0,A.useCallback)(async(e,t,n)=>{ae(null);let r=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(!r.ok){ae(r.error??`action failed`);return}n&&a()},[fe,a]);if(x&&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:a,children:[(0,j.jsx)(y,{size:14}),` Close`]})})]});if(u&&!c)return(0,j.jsx)(`main`,{className:`session-meta-pane`,style:{padding:24},children:(0,j.jsx)(b,{size:16,className:`spinning`})});if(h&&!c)return(0,j.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24},children:[(0,j.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:h}),(0,j.jsx)(`button`,{type:`button`,className:`action-btn`,onClick:()=>void ye(),children:`Retry`})]});if(!c)return null;let Te=c.sessionId,Ee=c.status===`alive`,De=me(c.sessionId),Oe=fe.inFlight;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:[ee?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`input`,{type:`text`,value:te,onChange:e=>ne(e.target.value),maxLength:256,autoFocus:!0,style:{fontSize:22,fontWeight:600,flex:1,padding:`4px 8px`},onKeyDown:e=>{e.key===`Enter`&&be(),e.key===`Escape`&&(ne(c.displayName),w(!1))}}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Confirm rename`,disabled:re,onClick:()=>void be(),children:re?(0,j.jsx)(b,{size:16,className:`spinning`}):(0,j.jsx)(i,{size:16})}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Cancel rename`,onClick:()=>{ne(c.displayName),w(!1)},children:(0,j.jsx)(y,{size:16})})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`h2`,{style:{fontSize:22,fontWeight:600,margin:0,flex:1},children:c.displayName}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Rename`,onClick:()=>w(!0),children:(0,j.jsx)(Se,{size:16})})]}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Close pane`,onClick:a,children:(0,j.jsx)(y,{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:Ee?`alive · pid ${c.pid??`?`}`:`ended`}),(0,j.jsx)(`dt`,{children:`sessionId`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:Te}),(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy sessionId`,onClick:()=>void xe(`id`,Te),children:(0,j.jsx)(k,{size:12})})]}),(0,j.jsx)(`dt`,{children:`Started at`}),(0,j.jsxs)(`dd`,{children:[c.startedAt,` `,(0,j.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,Be(c.startedAt),`)`]})]}),(0,j.jsx)(`dt`,{children:`Last message`}),(0,j.jsx)(`dd`,{children:c.lastMessageAt?(0,j.jsxs)(j.Fragment,{children:[c.lastMessageAt,` `,(0,j.jsxs)(`span`,{className:`text-tertiary`,children:[`(`,Be(c.lastMessageAt),`)`]})]}):`—`}),(0,j.jsx)(`dt`,{children:`Turns`}),(0,j.jsxs)(`dd`,{children:[c.turnCount,c.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:Ve(c.sizeBytes)}),(0,j.jsx)(`dt`,{children:`JSONL path`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:c.jsonlPath??`—`}),c.jsonlPath&&(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy JSONL path`,onClick:()=>void xe(`path`,c.jsonlPath),children:(0,j.jsx)(k,{size:12})})]}),Ee&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`dt`,{children:`Session URL`}),(0,j.jsxs)(`dd`,{"data-mono":!0,children:[(0,j.jsx)(`span`,{children:c.url??`—`}),c.url&&(0,j.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy URL`,onClick:()=>void xe(`URL`,c.url),children:(0,j.jsx)(k,{size:12})})]}),(0,j.jsx)(`dt`,{children:`Channel`}),(0,j.jsx)(`dd`,{children:c.channel??`—`}),(0,j.jsx)(`dt`,{children:`Role`}),(0,j.jsx)(`dd`,{children:c.role??`—`}),(0,j.jsx)(`dt`,{children:`senderId`}),(0,j.jsx)(`dd`,{"data-mono":!0,children:(0,j.jsx)(`span`,{children:c.senderId||`—`})})]})]})}),(()=>{let e=[];return Ee&&c.url&&e.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>window.open(c.url,`_blank`,`noopener,noreferrer`),children:[(0,j.jsx)(v,{size:14}),` Open in new tab`]},`open-tab`)),c.jsonlPath&&e.push((0,j.jsxs)(`a`,{className:`action-btn`,href:`vscode://file/${c.jsonlPath}`,title:`Open JSONL in VS Code`,children:[(0,j.jsx)(m,{size:14}),` Open JSONL in editor`]},`open-jsonl`)),Ee||e.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`primary`,disabled:Oe===`resume`,onClick:()=>void we(`resume`,c.sessionId,!1),children:[Oe===`resume`?(0,j.jsx)(b,{size:14,className:`spinning`}):(0,j.jsx)(r,{size:14}),` Resume`]},`resume`)),e.push((0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,onClick:()=>w(!0),children:[(0,j.jsx)(Se,{size:14}),` Rename`]},`rename`),(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-active":De?`true`:void 0,onClick:()=>ge(c.sessionId),children:[(0,j.jsx)(Ce,{size:14}),` `,De?`Unpin`:`Pin`]},`pin`),(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,disabled:Oe===`archive`,title:Ee?`Manager will refuse with 409 — end the session first`:void 0,onClick:()=>void we(`archive`,c.sessionId,!Ee),children:[Oe===`archive`?(0,j.jsx)(b,{size:14,className:`spinning`}):(0,j.jsx)(de,{size:14}),` Archive`]},`archive`)),e.push(Ee?(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:Oe===`end`,onClick:()=>se({action:`end`,sessionId:c.sessionId,displayName:c.displayName}),children:[(0,j.jsx)(pe,{size:14}),` End session`]},`end`):(0,j.jsxs)(`button`,{type:`button`,className:`action-btn`,"data-variant":`danger`,disabled:Oe===`purge`,onClick:()=>se({action:`purge`,sessionId:c.sessionId,displayName:c.displayName}),children:[(0,j.jsx)(f,{size:14}),` Purge JSONL`]},`purge`)),(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`section`,{className:`action-bar`,children:e}),(0,j.jsxs)(`section`,{className:`session-actions-overflow`,ref:ue,children:[(0,j.jsx)(`button`,{type:`button`,className:`session-actions-overflow__trigger`,"aria-label":`Actions`,"aria-haspopup":`menu`,"aria-expanded":ce,onClick:()=>{le(e=>{let t=!e;return t&&console.info(`[admin-ui] pane-actions-overflow-open sessionId=${c.sessionId.slice(0,8)}`),t})},children:(0,j.jsx)(he,{size:14})}),ce&&(0,j.jsx)(`div`,{className:`overflow-popover`,role:`menu`,onClick:()=>le(!1),children:e})]})]})})(),E&&(0,j.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:E}),O&&(0,j.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:O}),h&&(0,j.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:h}),oe&&(0,j.jsx)(Ue,{confirm:oe,busy:Oe===oe.action,onCancel:()=>se(null),onConfirm:async()=>{await we(oe.action,oe.sessionId,oe.action===`purge`),se(null)}})]})}function Ue({confirm:e,busy:t,onCancel:n,onConfirm:r}){let i=e.action===`end`?`End live session?`:`Purge session JSONL?`,a=e.action===`end`?`This kills the PTY for ${e.displayName}. The JSONL is kept on disk and can be resumed later.`:`This hard-deletes the transcript and sidecar for ${e.displayName}. The action cannot be undone.`,o=e.action===`end`?`End session`:`Purge`;return(0,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)(b,{size:13,className:`spinning`}):o})]})]})})}function We({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 Ge=t((e=>{var t=o();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,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),o=r[0].inst,l=r[1];return s(function(){o.value=n,o.getSnapshot=t,u(o)&&l({inst:o})},[e,n,t]),a(function(){return u(o)&&l({inst:o}),e(function(){u(o)&&l({inst:o})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),Ke=t(((e,t)=>{t.exports=Ge()})),qe=Ke(),Je=e(l(),1);function M(e){this.content=e}M.prototype={constructor:M,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 M(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 M(n)},addToStart:function(e,t){return new M([e,t].concat(this.remove(e).content))},addToEnd:function(e,t){var n=this.remove(e).content.slice();return n.push(e,t),new M(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 M(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=M.from(e),e.size?new M(e.content.concat(this.subtract(e).content)):this},append:function(e){return e=M.from(e),e.size?new M(this.subtract(e).content.concat(e.content)):this},subtract:function(e){var t=this;e=M.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}},M.from=function(e){if(e instanceof M)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new M(t)};function Ye(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=Ye(i.content,a.content,n+1);if(e!=null)return e}n+=i.nodeSize}}function Xe(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=Xe(o.content,s.content,n-1,r-1);if(e)return e}n-=c,r-=c}}var N=class e{constructor(e,t){if(this.content=e,this.size=t||0,t==null)for(let t=0;t<e.length;t++)this.size+=e[t].nodeSize}nodesBetween(e,t,n,r=0,i){for(let a=0,o=0;o<t;a++){let s=this.content[a],c=o+s.nodeSize;if(c>e&&n(s,r+o,i||null,a)!==!1&&s.content.size){let i=o+1;s.nodesBetween(Math.max(0,e-i),Math.min(s.content.size,t-i),n,r+i)}o=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,n,r){let i=``,a=!0;return this.nodesBetween(e,t,(o,s)=>{let c=o.isText?o.text.slice(Math.max(e,s)-s,t-s):o.isLeaf?r?typeof r==`function`?r(o):r:o.type.spec.leafText?o.type.spec.leafText(o):``:``;o.isBlock&&(o.isLeaf&&c||o.isTextblock)&&n&&(a?a=!1:i+=n),i+=c},0),i}append(t){if(!t.size)return this;if(!this.size)return t;let n=this.lastChild,r=t.firstChild,i=this.content.slice(),a=0;for(n.isText&&n.sameMarkup(r)&&(i[i.length-1]=n.withText(n.text+r.text),a=1);a<t.content.length;a++)i.push(t.content[a]);return new e(i,this.size+t.size)}cut(t,n=this.size){if(t==0&&n==this.size)return this;let r=[],i=0;if(n>t)for(let e=0,a=0;a<n;e++){let o=this.content[e],s=a+o.nodeSize;s>t&&((a<t||s>n)&&(o=o.isText?o.cut(Math.max(0,t-a),Math.min(o.text.length,n-a)):o.cut(Math.max(0,t-a-1),Math.min(o.content.size,n-a-1))),r.push(o),i+=o.nodeSize),a=s}return new e(r,i)}cutByIndex(t,n){return t==n?e.empty:t==0&&n==this.content.length?this:new e(this.content.slice(t,n))}replaceChild(t,n){let r=this.content[t];if(r==n)return this;let i=this.content.slice(),a=this.size+n.nodeSize-r.nodeSize;return i[t]=n,new e(i,a)}addToStart(t){return new e([t].concat(this.content),this.size+t.nodeSize)}addToEnd(t){return new e(this.content.concat(t),this.size+t.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;t<this.content.length;t++)if(!this.content[t].eq(e.content[t]))return!1;return!0}get firstChild(){return this.content.length?this.content[0]:null}get lastChild(){return this.content.length?this.content[this.content.length-1]:null}get childCount(){return this.content.length}child(e){let t=this.content[e];if(!t)throw RangeError(`Index `+e+` out of range for `+this);return t}maybeChild(e){return this.content[e]||null}forEach(e){for(let t=0,n=0;t<this.content.length;t++){let r=this.content[t];e(r,n,t),n+=r.nodeSize}}findDiffStart(e,t=0){return Ye(this,e,t)}findDiffEnd(e,t=this.size,n=e.size){return Xe(this,e,t,n)}findIndex(e){if(e==0)return Qe(0,e);if(e==this.size)return Qe(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?Qe(t+1,i):Qe(t,n);n=i}}toString(){return`<`+this.toStringInner()+`>`}toStringInner(){return this.content.join(`, `)}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(t,n){if(!n)return e.empty;if(!Array.isArray(n))throw RangeError(`Invalid input for Fragment.fromJSON`);return new e(n.map(t.nodeFromJSON))}static fromArray(t){if(!t.length)return e.empty;let n,r=0;for(let e=0;e<t.length;e++){let i=t[e];r+=i.nodeSize,e&&i.isText&&t[e-1].sameMarkup(i)?(n||=t.slice(0,e),n[n.length-1]=i.withText(n[n.length-1].text+i.text)):n&&n.push(i)}return new e(n||t,r)}static from(t){if(!t)return e.empty;if(t instanceof e)return t;if(Array.isArray(t))return this.fromArray(t);if(t.attrs)return new e([t],t.nodeSize);throw RangeError(`Can not convert `+t+` to a Fragment`+(t.nodesBetween?` (looks like multiple versions of prosemirror-model were loaded)`:``))}};N.empty=new N([],0);var Ze={index:0,offset:0};function Qe(e,t){return Ze.index=e,Ze.offset=t,Ze}function $e(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(!$e(e[n],t[n]))return!1}else{for(let n in e)if(!(n in t)||!$e(e[n],t[n]))return!1;for(let n in t)if(!(n in e))return!1}return!0}var P=class e{constructor(e,t){this.type=e,this.attrs=t}addToSet(e){let t,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(this.eq(i))return e;if(this.type.excludes(i.type))t||=e.slice(0,r);else if(i.type.excludes(this.type))return e;else !n&&i.type.rank>this.type.rank&&(t||=e.slice(0,r),t.push(this),n=!0),t&&t.push(i)}return t||=e.slice(),n||t.push(this),t}removeFromSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return e.slice(0,t).concat(e.slice(t+1));return e}isInSet(e){for(let t=0;t<e.length;t++)if(this.eq(e[t]))return!0;return!1}eq(e){return this==e||this.type==e.type&&$e(this.attrs,e.attrs)}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return e}static fromJSON(e,t){if(!t)throw RangeError(`Invalid input for Mark.fromJSON`);let n=e.marks[t.type];if(!n)throw RangeError(`There is no mark type ${t.type} in this schema`);let r=n.create(t.attrs);return n.checkAttrs(r.attrs),r}static sameSet(e,t){if(e==t)return!0;if(e.length!=t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}static setFrom(t){if(!t||Array.isArray(t)&&t.length==0)return e.none;if(t instanceof e)return[t];let n=t.slice();return n.sort((e,t)=>e.type.rank-t.type.rank),n}};P.none=[];var et=class extends Error{},F=class e{constructor(e,t,n){this.content=e,this.openStart=t,this.openEnd=n}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(t,n){let r=nt(this.content,t+this.openStart,n);return r&&new e(r,this.openStart,this.openEnd)}removeBetween(t,n){return new e(tt(this.content,t+this.openStart,n+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+`(`+this.openStart+`,`+this.openEnd+`)`}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(t,n){if(!n)return e.empty;let r=n.openStart||0,i=n.openEnd||0;if(typeof r!=`number`||typeof i!=`number`)throw RangeError(`Invalid input for Slice.fromJSON`);return new e(N.fromJSON(t,n.content),r,i)}static maxOpen(t,n=!0){let r=0,i=0;for(let e=t.firstChild;e&&!e.isLeaf&&(n||!e.type.spec.isolating);e=e.firstChild)r++;for(let e=t.lastChild;e&&!e.isLeaf&&(n||!e.type.spec.isolating);e=e.lastChild)i++;return new e(t,r,i)}};F.empty=new F(N.empty,0,0);function tt(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(tt(a.content,t-i-1,n-i-1)))}function nt(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=nt(o.content,t-a-1,n,o);return s&&e.replaceChild(i,o.copy(s))}function rt(e,t,n){if(n.openStart>e.depth)throw new et(`Inserted content deeper than insertion position`);if(e.depth-n.openStart!=t.depth-n.openEnd)throw new et(`Inconsistent open depths`);return it(e,t,n,0)}function it(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=it(e,t,n,r+1);return a.copy(a.content.replaceChild(i,o))}else if(!n.content.size)return lt(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 lt(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}else{let{start:i,end:o}=ft(n,e);return lt(a,ut(e,i,o,t,r))}}function at(e,t){if(!t.type.compatibleContent(e.type))throw new et(`Cannot join `+t.type.name+` onto `+e.type.name)}function ot(e,t,n){let r=e.node(n);return at(r,t.node(n)),r}function st(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 ct(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&&(st(e.nodeAfter,r),a++));for(let e=a;e<o;e++)st(i.child(e),r);t&&t.depth==n&&t.textOffset&&st(t.nodeBefore,r)}function lt(e,t){return e.type.checkContent(t),e.copy(t)}function ut(e,t,n,r,i){let a=e.depth>i&&ot(e,t,i+1),o=r.depth>i&&ot(n,r,i+1),s=[];return ct(null,e,i,s),a&&o&&t.index(i)==n.index(i)?(at(a,o),st(lt(a,ut(e,t,n,r,i+1)),s)):(a&&st(lt(a,dt(e,t,i+1)),s),ct(t,n,i,s),o&&st(lt(o,dt(n,r,i+1)),s)),ct(r,null,i,s),new N(s)}function dt(e,t,n){let r=[];return ct(null,e,n,r),e.depth>n&&st(lt(ot(e,t,n+1),dt(e,t,n+1)),r),ct(t,null,n,r),new N(r)}function ft(e,t){let n=t.depth-e.openStart,r=t.node(n).copy(e.content);for(let e=n-1;e>=0;e--)r=t.node(e).copy(N.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}var pt=class e{constructor(e,t,n){this.pos=e,this.path=t,this.parentOffset=n,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw RangeError(`There is no position before the top-level node`);return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw RangeError(`There is no position after the top-level node`);return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let n=this.pos-this.path[this.path.length-1],r=e.child(t);return n?e.child(t).cut(n):r}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let n=this.path[t*3],r=t==0?0:this.path[t*3-1]+1;for(let t=0;t<e;t++)r+=n.child(t).nodeSize;return r}marks(){let e=this.parent,t=this.index();if(e.content.size==0)return P.none;if(this.textOffset)return e.child(t).marks;let n=e.maybeChild(t-1),r=e.maybeChild(t);if(!n){let e=n;n=r,r=e}let i=n.marks;for(var a=0;a<i.length;a++)i[a].type.spec.inclusive===!1&&(!r||!i[a].isInSet(r.marks))&&(i=i[a--].removeFromSet(i));return i}marksAcross(e){let t=this.parent.maybeChild(this.index());if(!t||!t.isInline)return null;let n=t.marks,r=e.parent.maybeChild(e.index());for(var i=0;i<n.length;i++)n[i].type.spec.inclusive===!1&&(!r||!n[i].isInSet(r.marks))&&(n=n[i--].removeFromSet(n));return n}sharedDepth(e){for(let t=this.depth;t>0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos<this.pos)return e.blockRange(this);for(let n=this.depth-(this.parent.inlineContent||this.pos==e.pos?1:0);n>=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new _t(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=gt.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 gt.set(t,r=new mt);let i=r.elts[r.i]=e.resolve(t,n);return r.i=(r.i+1)%ht,i}},mt=class{constructor(){this.elts=[],this.i=0}},ht=12,gt=new WeakMap,_t=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)}},vt=Object.create(null),yt=class e{constructor(e,t,n,r=P.none){this.type=e,this.attrs=t,this.marks=r,this.content=n||N.empty}get children(){return this.content.content}get nodeSize(){return this.isLeaf?1:2+this.content.size}get childCount(){return this.content.childCount}child(e){return this.content.child(e)}maybeChild(e){return this.content.maybeChild(e)}forEach(e){this.content.forEach(e)}nodesBetween(e,t,n,r=0){this.content.nodesBetween(e,t,n,r,this)}descendants(e){this.nodesBetween(0,this.content.size,e)}get textContent(){return this.isLeaf&&this.type.spec.leafText?this.type.spec.leafText(this):this.textBetween(0,this.content.size,``)}textBetween(e,t,n,r){return this.content.textBetween(e,t,n,r)}get firstChild(){return this.content.firstChild}get lastChild(){return this.content.lastChild}eq(e){return this==e||this.sameMarkup(e)&&this.content.eq(e.content)}sameMarkup(e){return this.hasMarkup(e.type,e.attrs,e.marks)}hasMarkup(e,t,n){return this.type==e&&$e(this.attrs,t||e.defaultAttrs||vt)&&P.sameSet(this.marks,n||P.none)}copy(t=null){return t==this.content?this:new e(this.type,this.attrs,t,this.marks)}mark(t){return t==this.marks?this:new e(this.type,this.attrs,this.content,t)}cut(e,t=this.content.size){return e==0&&t==this.content.size?this:this.copy(this.content.cut(e,t))}slice(e,t=this.content.size,n=!1){if(e==t)return F.empty;let r=this.resolve(e),i=this.resolve(t),a=n?0:r.sharedDepth(t),o=r.start(a);return new F(r.node(a).content.cut(r.pos-o,i.pos-o),r.depth-a,i.depth-a)}replace(e,t,n){return rt(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 pt.resolveCached(this,e)}resolveNoCache(e){return pt.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()+`)`),xt(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw Error(`Called contentMatchAt on a node with invalid content`);return t}canReplace(e,t,n=N.empty,r=0,i=n.childCount){let a=this.contentMatchAt(e).matchFragment(n,r,i),o=a&&a.matchFragment(this.content,t);if(!o||!o.validEnd)return!1;for(let e=r;e<i;e++)if(!this.type.allowsMarks(n.child(e).marks))return!1;return!0}canReplaceWith(e,t,n,r){if(r&&!this.type.allowsMarks(r))return!1;let i=this.contentMatchAt(e).matchType(n),a=i&&i.matchFragment(this.content,t);return a?a.validEnd:!1}canAppend(e){return e.content.size?this.canReplace(this.childCount,this.childCount,e.content):this.type.compatibleContent(e.type)}check(){this.type.checkContent(this.content),this.type.checkAttrs(this.attrs);let e=P.none;for(let t=0;t<this.marks.length;t++){let n=this.marks[t];n.type.checkAttrs(n.attrs),e=n.addToSet(e)}if(!P.sameSet(e,this.marks))throw RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(e=>e.type.name)}`);this.content.forEach(e=>e.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(e=>e.toJSON())),e}static fromJSON(e,t){if(!t)throw RangeError(`Invalid input for Node.fromJSON`);let n;if(t.marks){if(!Array.isArray(t.marks))throw RangeError(`Invalid mark data for Node.fromJSON`);n=t.marks.map(e.markFromJSON)}if(t.type==`text`){if(typeof t.text!=`string`)throw RangeError(`Invalid text node in JSON`);return e.text(t.text,n)}let r=N.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}};yt.prototype.text=void 0;var bt=class e extends yt{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):xt(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 xt(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+`(`+t+`)`;return t}var St=class e{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(t,n){let r=new Ct(t,n);if(r.next==null)return e.empty;let i=wt(r);r.next&&r.err(`Unexpected trailing text`);let a=Pt(jt(i));return Ft(a,r),a}matchType(e){for(let t=0;t<this.next.length;t++)if(this.next[t].type==e)return this.next[t].next;return null}matchFragment(e,t=0,n=e.childCount){let r=this;for(let i=t;r&&i<n;i++)r=r.matchType(e.child(i).type);return r}get inlineContent(){return this.next.length!=0&&this.next[0].type.isInline}get defaultType(){for(let e=0;e<this.next.length;e++){let{type:t}=this.next[e];if(!(t.isText||t.hasRequiredAttrs()))return t}return null}compatible(e){for(let t=0;t<this.next.length;t++)for(let n=0;n<e.next.length;n++)if(this.next[t].type==e.next[n].type)return!0;return!1}fillBefore(e,t=!1,n=0){let r=[this];function i(a,o){let s=a.matchFragment(e,n);if(s&&(!t||s.validEnd))return N.from(o.map(e=>e.createAndFill()));for(let e=0;e<a.next.length;e++){let{type:t,next:n}=a.next[e];if(!(t.isText||t.hasRequiredAttrs())&&r.indexOf(n)==-1){r.push(n);let e=i(n,o.concat(t));if(e)return e}}return null}return i(this,[])}findWrapping(e){for(let t=0;t<this.wrapCache.length;t+=2)if(this.wrapCache[t]==e)return this.wrapCache[t+1];let t=this.computeWrapping(e);return this.wrapCache.push(e,t),t}computeWrapping(e){let t=Object.create(null),n=[{match:this,type:null,via:null}];for(;n.length;){let r=n.shift(),i=r.match;if(i.matchType(e)){let e=[];for(let t=r;t.type;t=t.via)e.push(t.type);return e.reverse()}for(let e=0;e<i.next.length;e++){let{type:a,next:o}=i.next[e];!a.isLeaf&&!a.hasRequiredAttrs()&&!(a.name in t)&&(!r.type||o.validEnd)&&(n.push({match:a.contentMatch,type:a,via:r}),t[a.name]=!0)}}return null}get edgeCount(){return this.next.length}edge(e){if(e>=this.next.length)throw RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(n){e.push(n);for(let r=0;r<n.next.length;r++)e.indexOf(n.next[r].next)==-1&&t(n.next[r].next)}return t(this),e.map((t,n)=>{let r=n+(t.validEnd?`*`:` `)+` `;for(let n=0;n<t.next.length;n++)r+=(n?`, `:``)+t.next[n].type.name+`->`+e.indexOf(t.next[n].next);return r}).join(`
|
|
2
2
|
`)}};St.empty=new St(!0);var Ct=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 wt(e){let t=[];do t.push(Tt(e));while(e.eat(`|`));return t.length==1?t[0]:{type:`choice`,exprs:t}}function Tt(e){let t=[];do t.push(Et(e));while(e.next&&e.next!=`)`&&e.next!=`|`);return t.length==1?t[0]:{type:`seq`,exprs:t}}function Et(e){let t=At(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=Ot(e,t);else break;return t}function Dt(e){/\D/.test(e.next)&&e.err(`Expected number, got '`+e.next+`'`);let t=Number(e.next);return e.pos++,t}function Ot(e,t){let n=Dt(e),r=n;return e.eat(`,`)&&(r=e.next==`}`?-1:Dt(e)),e.eat(`}`)||e.err(`Unclosed braced range`),{type:`range`,min:n,max:r,expr:t}}function kt(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 At(e){if(e.eat(`(`)){let t=wt(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=kt(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 jt(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 Mt(e,t){return t-e}function Nt(e,t){let n=[];return r(t),n.sort(Mt);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 Pt(e){let t=Object.create(null);return n(Nt(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]);Nt(e,n).forEach(e=>{r||i.push([t,r=[]]),r.indexOf(e)==-1&&r.push(e)})})});let a=t[r.join(`,`)]=new St(r.indexOf(e.length-1)>-1);for(let e=0;e<i.length;e++){let r=i[e][1].sort(Mt);a.next.push({type:i[e][0],next:t[r.join(`,`)]||n(r)})}return a}}function Ft(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 It(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 Lt(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 Rt(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 zt(e,t){let n=Object.create(null);if(t)for(let r in t)n[r]=new Ht(e,r,t[r]);return n}var Bt=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=zt(e,n.attrs),this.defaultAttrs=It(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==St.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:Lt(this.attrs,e)}create(e=null,t,n){if(this.isText)throw Error(`NodeType.create can't construct text nodes`);return new yt(this,this.computeAttrs(e),N.from(t),P.setFrom(n))}createChecked(e=null,t,n){return t=N.from(t),this.checkContent(t),new yt(this,this.computeAttrs(e),t,P.setFrom(n))}createAndFill(e=null,t,n){if(e=this.computeAttrs(e),t=N.from(t),t.size){let e=this.contentMatch.fillBefore(t);if(!e)return null;t=e.append(t)}let r=this.contentMatch.matchFragment(t),i=r&&r.fillBefore(N.empty,!0);return i?new yt(this,e,t.append(i),P.setFrom(n)):null}validContent(e){let t=this.contentMatch.matchFragment(e);if(!t||!t.validEnd)return!1;for(let t=0;t<e.childCount;t++)if(!this.allowsMarks(e.child(t).marks))return!1;return!0}checkContent(e){if(!this.validContent(e))throw RangeError(`Invalid content for node ${this.name}: ${e.toString().slice(0,50)}`)}checkAttrs(e){Rt(this.attrs,e,`node`,this.name)}allowsMarkType(e){return this.markSet==null||this.markSet.indexOf(e)>-1}allowsMarks(e){if(this.markSet==null)return!0;for(let t=0;t<e.length;t++)if(!this.allowsMarkType(e[t].type))return!1;return!0}allowedMarks(e){if(this.markSet==null)return e;let t;for(let n=0;n<e.length;n++)this.allowsMarkType(e[n].type)?t&&t.push(e[n]):t||=e.slice(0,n);return t?t.length?t:P.none:e}static compile(t,n){let r=Object.create(null);t.forEach((t,i)=>r[t]=new e(t,n,i));let i=n.spec.topNode||`doc`;if(!r[i])throw RangeError(`Schema is missing its top node type ('`+i+`')`);if(!r.text)throw RangeError(`Every schema needs a 'text' type`);for(let e in r.text.attrs)throw RangeError(`The text node type should not have attributes`);return r}};function Vt(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 Ht=class{constructor(e,t,n){this.hasDefault=Object.prototype.hasOwnProperty.call(n,`default`),this.default=n.default,this.validate=typeof n.validate==`string`?Vt(e,t,n.validate):n.validate}get isRequired(){return!this.hasDefault}},Ut=class e{constructor(e,t,n,r){this.name=e,this.rank=t,this.schema=n,this.spec=r,this.attrs=zt(e,r.attrs),this.excluded=null;let i=It(this.attrs);this.instance=i?new P(this,i):null}create(e=null){return!e&&this.instance?this.instance:new P(this,Lt(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){Rt(this.attrs,e,`mark`,this.name)}excludes(e){return this.excluded.indexOf(e)>-1}},Wt=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=M.from(e.nodes),t.marks=M.from(e.marks||{}),this.nodes=Bt.compile(this.spec.nodes,this),this.marks=Ut.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]=St.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?Gt(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==``?[]:Gt(this,n.split(` `))}this.nodeFromJSON=e=>yt.fromJSON(this,e),this.markFromJSON=e=>P.fromJSON(this,e),this.topNodeType=this.nodes[this.spec.topNode||`doc`],this.cached.wrappings=Object.create(null)}node(e,t=null,n,r){if(typeof e==`string`)e=this.nodeType(e);else if(!(e instanceof Bt))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 bt(n,n.defaultAttrs,e,P.setFrom(t))}mark(e,t){return typeof e==`string`&&(e=this.marks[e]),e.create(t)}nodeType(e){let t=this.nodes[e];if(!t)throw RangeError(`Unknown node type: `+e);return t}};function Gt(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 Kt(e){return e.tag!=null}function qt(e){return e.style!=null}var Jt=class e{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let n=this.matchedStyles=[];t.forEach(e=>{if(Kt(e))this.tags.push(e);else if(qt(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 rn(this,t,!1);return n.addAll(e,P.none,t.from,t.to),n.finish()}parseSlice(e,t={}){let n=new rn(this,t,!0);return n.addAll(e,P.none,t.from,t.to),F.maxOpen(n.finish())}matchTag(e,t,n){for(let r=n?this.tags.indexOf(n)+1:0;r<this.tags.length;r++){let n=this.tags[r];if(on(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=sn(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=sn(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)))}},Yt={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},Xt={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},Zt={ol:!0,ul:!0},Qt=1,$t=2,en=4;function tn(e,t,n){return t==null?e&&e.whitespace==`pre`?Qt|$t:n&~en:(t?Qt:0)|(t===`full`?$t:0)}var nn=class{constructor(e,t,n,r,i,a){this.type=e,this.attrs=t,this.marks=n,this.solid=r,this.options=a,this.content=[],this.activeMarks=P.none,this.match=i||(a&en?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(N.from(e));if(t)this.match=this.type.contentMatch.matchFragment(t);else{let t=this.type.contentMatch,n;return(n=t.findWrapping(e.type))?(this.match=t,n):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&Qt)){let e=this.content[this.content.length-1],t;if(e&&e.isText&&(t=/[ \t\r\n\u000c]+$/.exec(e.text))){let n=e;e.text.length==t[0].length?this.content.pop():this.content[this.content.length-1]=n.withText(n.text.slice(0,n.text.length-t[0].length))}}let t=N.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(N.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!Yt.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}},rn=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=tn(null,t.preserveWhitespace,0)|(n?en:0);i=r?new nn(r.type,r.attrs,P.none,!0,t.topMatch||r.type.contentMatch,a):n?new nn(null,null,P.none,!0,null,a):new nn(e.schema.topNodeType,null,P.none,!0,null,a),this.nodes=[i],this.find=t.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,t){e.nodeType==3?this.addTextNode(e,t):e.nodeType==1&&this.addElement(e,t)}addTextNode(e,t){let n=e.nodeValue,r=this.top,i=r.options&$t?`full`:this.localPreserveWS||(r.options&Qt)>0,{schema:a}=this.parser;if(i===`full`||r.inlineContext(e)||/[^ \t\r\n\u000c]/.test(n)){if(!i){if(n=n.replace(/[ \t\r\n\u000c]+/g,` `),/^[ \t\r\n\u000c]/.test(n)&&this.open==this.nodes.length-1){let t=r.content[r.content.length-1],i=e.previousSibling;(!t||i&&i.nodeName==`BR`||t.isText&&/[ \t\r\n\u000c]$/.test(t.text))&&(n=n.slice(1))}}else if(i===`full`)n=n.replace(/\r\n?/g,`
|
|
3
3
|
`);else if(a.linebreakReplacement&&/[\r\n]/.test(n)&&this.top.findWrapping(a.linebreakReplacement.create())){let e=n.split(/\r?\n|\r/);for(let n=0;n<e.length;n++)n&&this.insertNode(a.linebreakReplacement.create(),t,!0),e[n]&&this.insertNode(a.text(e[n]),t,!/\S/.test(e[n]));n=``}else n=n.replace(/\r?\n|\r/g,` `);n&&this.insertNode(a.text(n),t,!/\S/.test(n)),this.findInText(e)}else this.findInside(e)}addElement(e,t,n){let r=this.localPreserveWS,i=this.top;(e.tagName==`PRE`||/pre/.test(e.style&&e.style.whiteSpace))&&(this.localPreserveWS=!0);let a=e.nodeName.toLowerCase(),o;Zt.hasOwnProperty(a)&&this.parser.normalizeLists&&an(e);let s=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(o=this.parser.matchTag(e,this,n));out:if(s?s.ignore:Xt.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(Yt.hasOwnProperty(a))i.content.length&&i.content[0].isInline&&this.open&&(this.open--,i=this.top),n=!0,i.type||(this.needsBlock=!0);else if(!e.firstChild){this.leafFallback(e,t);break out}let o=s&&s.skip?t:this.readStyles(e,t);o&&this.addAll(e,o),n&&this.sync(i),this.needsBlock=r}else{let n=this.readStyles(e,t);n&&this.addElementByRule(e,s,n,s.consuming===!1?o:void 0)}this.localPreserveWS=r}leafFallback(e,t){e.nodeName==`BR`&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode(`
|
|
4
4
|
`),t)}ignoreFallback(e,t){e.nodeName==`BR`&&(!this.top.type||!this.top.type.inlineContent)&&this.findPlace(this.parser.schema.text(`-`),t,!0)}readStyles(e,t){let n=e.style;if(n&&n.length)for(let e=0;e<this.parser.matchedStyles.length;e++){let r=this.parser.matchedStyles[e],i=n.getPropertyValue(r);if(i)for(let e;;){let n=this.parser.matchStyle(r,i,this,e);if(!n)break;if(n.ignore)return null;if(t=n.clearMark?t.filter(e=>!n.clearMark(e)):t.concat(this.parser.schema.marks[n.mark].create(n.attrs)),n.consuming===!1)e=n;else break}}return t}addElementByRule(e,t,n,r){let i,a;if(t.node)if(a=this.parser.schema.nodes[t.node],a.isLeaf)this.insertNode(a.create(t.attrs),n,e.nodeName==`BR`)||this.leafFallback(e,n);else{let e=this.enter(a,t.attrs||null,n,t.preserveWhitespace);e&&(i=!0,n=e)}else{let e=this.parser.schema.marks[t.mark];n=n.concat(e.create(t.attrs))}let o=this.top;if(a&&a.isLeaf)this.findInside(e);else if(r)this.addElement(e,n,r);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach(e=>this.insertNode(e,n,!1));else{let r=e;typeof t.contentElement==`string`?r=e.querySelector(t.contentElement):typeof t.contentElement==`function`?r=t.contentElement(e):t.contentElement&&(r=t.contentElement),this.findAround(e,r,!0),this.addAll(r,n),this.findAround(e,r,!1)}i&&this.sync(o)&&this.open--}addAll(e,t,n,r){let i=n||0;for(let a=n?e.childNodes[n]:e.firstChild,o=r==null?null:e.childNodes[r];a!=o;a=a.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(a,t);this.findAtPoint(e,i)}findPlace(e,t,n){let r,i;for(let t=this.open,a=0;t>=0;t--){let o=this.nodes[t],s=o.findWrapping(e);if(s&&(!r||r.length>s.length+a)&&(r=s,i=o,!s.length))break;if(o.solid){if(n)break;a+=2}}if(!r)return null;this.sync(i);for(let e=0;e<r.length;e++)t=this.enterInner(r[e],null,t,!1);return t}insertNode(e,t,n){if(e.isInline&&this.needsBlock&&!this.top.type){let e=this.textblockFromContext();e&&(t=this.enterInner(e,null,t))}let r=this.findPlace(e,t,n);if(r){this.closeExtra();let t=this.top;t.match&&=t.match.matchType(e.type);let n=P.none;for(let i of r.concat(e.marks))(t.type?t.type.allowsMarkType(i.type):cn(i.type,e.type))&&(n=i.addToSet(n));return t.content.push(e.mark(n)),!0}return!1}enter(e,t,n,r){let i=this.findPlace(e.create(t),n,!1);return i&&=this.enterInner(e,t,n,!0,r),i}enterInner(e,t,n,r=!1,i){this.closeExtra();let a=this.top;a.match=a.match&&a.match.matchType(e);let o=tn(e,i,a.options);a.options&en&&a.content.length==0&&(o|=en);let s=P.none;return n=n.filter(t=>(a.type?a.type.allowsMarkType(t.type):cn(t.type,e))?(s=t.addToSet(s),!1):!0),this.nodes.push(new nn(e,t,s,r,null,o)),this.open++,n}closeExtra(e=!1){let t=this.nodes.length-1;if(t>this.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!!(this.isOpen||this.options.topOpen))}sync(e){for(let t=this.open;t>=0;t--)if(this.nodes[t]==e)return this.open=t,!0;else this.localPreserveWS&&(this.nodes[t].options|=Qt);return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let n=this.nodes[t].content;for(let t=n.length-1;t>=0;t--)e+=n[t].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let n=0;n<this.find.length;n++)this.find[n].node==e&&this.find[n].offset==t&&(this.find[n].pos=this.currentPos)}findInside(e){if(this.find)for(let t=0;t<this.find.length;t++)this.find[t].pos==null&&e.nodeType==1&&e.contains(this.find[t].node)&&(this.find[t].pos=this.currentPos)}findAround(e,t,n){if(e!=t&&this.find)for(let r=0;r<this.find.length;r++)this.find[r].pos==null&&e.nodeType==1&&e.contains(this.find[r].node)&&t.compareDocumentPosition(this.find[r].node)&(n?2:4)&&(this.find[r].pos=this.currentPos)}findInText(e){if(this.find)for(let t=0;t<this.find.length;t++)this.find[t].node==e&&(this.find[t].pos=this.currentPos-(e.nodeValue.length-this.find[t].offset))}matchesContext(e){if(e.indexOf(`|`)>-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let t=e.split(`/`),n=this.options.context,r=!this.isOpen&&(!n||n.parent.type==this.nodes[0].type),i=-(n?n.depth+1:0)+(r?0:1),a=(e,o)=>{for(;e>=0;e--){let s=t[e];if(s==``){if(e==t.length-1||e==0)continue;for(;o>=i;o--)if(a(e-1,o))return!0;return!1}else{let e=o>0||o==0&&r?this.nodes[o].type:n&&o>=i?n.node(o-i).type:null;if(!e||e.name!=s&&!e.isInGroup(s))return!1;o--}}return!0};return a(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let n=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(n&&n.isTextblock&&n.defaultAttrs)return n}for(let e in this.parser.schema.nodes){let t=this.parser.schema.nodes[e];if(t.isTextblock&&t.defaultAttrs)return t}}};function an(e){for(let t=e.firstChild,n=null;t;t=t.nextSibling){let e=t.nodeType==1?t.nodeName.toLowerCase():null;e&&Zt.hasOwnProperty(e)&&n?(n.appendChild(t),t=n):e==`li`?n=t:e&&(n=null)}}function on(e,t){return(e.matches||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector).call(e,t)}function sn(e){let t={};for(let n in e)t[n]=e[n];return t}function cn(e,t){let n=t.schema.nodes;for(let r in n){let i=n[r];if(!i.allowsMarkType(e))continue;let a=[],o=e=>{a.push(e);for(let n=0;n<e.edgeCount;n++){let{type:r,next:i}=e.edge(n);if(r==t||a.indexOf(i)<0&&o(i))return!0}};if(o(i.contentMatch))return!0}}var ln=class e{constructor(e,t){this.nodes=e,this.marks=t}serializeFragment(e,t={},n){n||=dn(t).createDocumentFragment();let r=n,i=[];return e.forEach(e=>{if(i.length||e.marks.length){let n=0,a=0;for(;n<i.length&&a<e.marks.length;){let t=e.marks[a];if(!this.marks[t.type.name]){a++;continue}if(!t.eq(i[n][0])||t.type.spec.spanning===!1)break;n++,a++}for(;n<i.length;)r=i.pop()[1];for(;a<e.marks.length;){let n=e.marks[a++],o=this.serializeMark(n,e.isInline,t);o&&(i.push([n,r]),r.appendChild(o.dom),r=o.contentDOM||o.dom)}}r.appendChild(this.serializeNodeInner(e,t))}),n}serializeNodeInner(e,t){let{dom:n,contentDOM:r}=hn(dn(t),this.nodes[e.type.name](e),null,e.attrs);if(r){if(e.isLeaf)throw RangeError(`Content hole not allowed in a leaf node spec`);this.serializeFragment(e.content,t,r)}return n}serializeNode(e,t={}){let n=this.serializeNodeInner(e,t);for(let r=e.marks.length-1;r>=0;r--){let i=this.serializeMark(e.marks[r],e.isInline,t);i&&((i.contentDOM||i.dom).appendChild(n),n=i.dom)}return n}serializeMark(e,t,n={}){let r=this.marks[e.type.name];return r&&hn(dn(n),r(e,t),null,e.attrs)}static renderSpec(e,t,n=null,r){return hn(e,t,n,r)}static fromSchema(t){return t.cached.domSerializer||(t.cached.domSerializer=new e(this.nodesFromSchema(t),this.marksFromSchema(t)))}static nodesFromSchema(e){let t=un(e.nodes);return t.text||=e=>e.text,t}static marksFromSchema(e){return un(e.marks)}};function un(e){let t={};for(let n in e){let r=e[n].spec.toDOM;r&&(t[n]=r)}return t}function dn(e){return e.document||window.document}var fn=new WeakMap;function pn(e){let t=fn.get(e);return t===void 0&&fn.set(e,t=mn(e)),t}function mn(e){let t=null;function n(e){if(e&&typeof e==`object`)if(Array.isArray(e))if(typeof e[0]==`string`)t||=[],t.push(e);else for(let t=0;t<e.length;t++)n(e[t]);else for(let t in e)n(e[t])}return n(e),t}function hn(e,t,n,r){if(typeof t==`string`)return{dom:e.createTextNode(t)};if(t.nodeType!=null)return{dom:t};if(t.dom&&t.dom.nodeType!=null)return t;let i=t[0],a;if(typeof i!=`string`)throw RangeError(`Invalid array passed to renderSpec`);if(r&&(a=pn(r))&&a.indexOf(t)>-1)throw RangeError(`Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.`);let o=i.indexOf(` `);o>0&&(n=i.slice(0,o),i=i.slice(o+1));let s,c=n?e.createElementNS(n,i):e.createElement(i),l=t[1],u=1;if(l&&typeof l==`object`&&l.nodeType==null&&!Array.isArray(l)){u=2;for(let e in l)if(l[e]!=null){let t=e.indexOf(` `);t>0?c.setAttributeNS(e.slice(0,t),e.slice(t+1),l[e]):e==`style`&&c.style?c.style.cssText=l[e]:c.setAttribute(e,l[e])}}for(let i=u;i<t.length;i++){let a=t[i];if(a===0){if(i<t.length-1||i>u)throw RangeError(`Content hole must be the only child of its parent node`);return{dom:c,contentDOM:c}}else{let{dom:t,contentDOM:i}=hn(e,a,n,r);if(c.appendChild(t),i){if(s)throw RangeError(`Multiple content holes`);s=i}}}return{dom:c,contentDOM:s}}var gn=65535,_n=2**16;function vn(e,t){return e+t*_n}function yn(e){return e&gn}function bn(e){return(e-(e&gn))/_n}var xn=1,Sn=2,Cn=4,wn=8,Tn=class{constructor(e,t,n){this.pos=e,this.delInfo=t,this.recover=n}get deleted(){return(this.delInfo&wn)>0}get deletedBefore(){return(this.delInfo&(xn|Cn))>0}get deletedAfter(){return(this.delInfo&(Sn|Cn))>0}get deletedAcross(){return(this.delInfo&Cn)>0}},En=class e{constructor(t,n=!1){if(this.ranges=t,this.inverted=n,!t.length&&e.empty)return e.empty}recover(e){let t=0,n=yn(e);if(!this.inverted)for(let e=0;e<n;e++)t+=this.ranges[e*3+2]-this.ranges[e*3+1];return this.ranges[n*3]+t+bn(e)}mapResult(e,t=1){return this._map(e,t,!1)}map(e,t=1){return this._map(e,t,!0)}_map(e,t,n){let r=0,i=this.inverted?2:1,a=this.inverted?1:2;for(let o=0;o<this.ranges.length;o+=3){let s=this.ranges[o]-(this.inverted?r:0);if(s>e)break;let c=this.ranges[o+i],l=this.ranges[o+a],u=s+c;if(e<=u){let i=c?e==s?-1:e==u?1:t:t,a=s+r+(i<0?0:l);if(n)return a;let d=e==(t<0?s:u)?null:vn(o/3,e-s),f=e==s?Sn:e==u?xn:Cn;return(t<0?e!=s:e!=u)&&(f|=wn),new Tn(a,f,d)}r+=l-c}return n?e+r:new Tn(e+r,0,null)}touches(e,t){let n=0,r=yn(t),i=this.inverted?2:1,a=this.inverted?1:2;for(let t=0;t<this.ranges.length;t+=3){let o=this.ranges[t]-(this.inverted?n:0);if(o>e)break;let s=this.ranges[t+i];if(e<=o+s&&t==r*3)return!0;n+=this.ranges[t+a]-s}return!1}forEach(e){let t=this.inverted?2:1,n=this.inverted?1:2;for(let r=0,i=0;r<this.ranges.length;r+=3){let a=this.ranges[r],o=a-(this.inverted?i:0),s=a+(this.inverted?0:i),c=this.ranges[r+t],l=this.ranges[r+n];e(o,o+c,s,s+l),i+=l-c}}invert(){return new e(this.ranges,!this.inverted)}toString(){return(this.inverted?`-`:``)+JSON.stringify(this.ranges)}static offset(t){return t==0?e.empty:new e(t<0?[0,-t,0]:[0,0,t])}};En.empty=new En([]);var Dn=class e{constructor(e,t,n=0,r=e?e.length:0){this.mirror=t,this.from=n,this.to=r,this._maps=e||[],this.ownData=!(e||t)}get maps(){return this._maps}slice(t=0,n=this.maps.length){return new e(this._maps,this.mirror,t,n)}appendMap(e,t){this.ownData||=(this._maps=this._maps.slice(),this.mirror=this.mirror&&this.mirror.slice(),!0),this.to=this._maps.push(e),t!=null&&this.setMirror(this._maps.length-1,t)}appendMapping(e){for(let t=0,n=this._maps.length;t<e._maps.length;t++){let r=e.getMirror(t);this.appendMap(e._maps[t],r!=null&&r<t?n+r:void 0)}}getMirror(e){if(this.mirror){for(let t=0;t<this.mirror.length;t++)if(this.mirror[t]==e)return this.mirror[t+(t%2?-1:1)]}}setMirror(e,t){this.mirror||=[],this.mirror.push(e,t)}appendMappingInverted(e){for(let t=e.maps.length-1,n=this._maps.length+e._maps.length;t>=0;t--){let r=e.getMirror(t);this.appendMap(e._maps[t].invert(),r!=null&&r>t?n-r-1:void 0)}}invert(){let t=new e;return t.appendMappingInverted(this),t}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let n=this.from;n<this.to;n++)e=this._maps[n].map(e,t);return e}mapResult(e,t=1){return this._map(e,t,!1)}_map(e,t,n){let r=0;for(let n=this.from;n<this.to;n++){let i=this._maps[n].mapResult(e,t);if(i.recover!=null){let t=this.getMirror(n);if(t!=null&&t>n&&t<this.to){n=t,e=this._maps[t].recover(i.recover);continue}}r|=i.delInfo,e=i.pos}return n?e:new Tn(e,r,null)}},On=Object.create(null),kn=class{getMap(){return En.empty}merge(e){return null}static fromJSON(e,t){if(!t||!t.stepType)throw RangeError(`Invalid input for Step.fromJSON`);let n=On[t.stepType];if(!n)throw RangeError(`No step type ${t.stepType} defined`);return n.fromJSON(e,t)}static jsonID(e,t){if(e in On)throw RangeError(`Duplicate use of step JSON ID `+e);return On[e]=t,t.prototype.jsonID=e,t}},An=class e{constructor(e,t){this.doc=e,this.failed=t}static ok(t){return new e(t,null)}static fail(t){return new e(null,t)}static fromReplace(t,n,r,i){try{return e.ok(t.replace(n,r,i))}catch(t){if(t instanceof et)return e.fail(t.message);throw t}}};function jn(e,t,n){let r=[];for(let i=0;i<e.childCount;i++){let a=e.child(i);a.content.size&&(a=a.copy(jn(a.content,t,a))),a.isInline&&(a=t(a,n,i)),r.push(a)}return N.fromArray(r)}var Mn=class e extends kn{constructor(e,t,n){super(),this.from=e,this.to=t,this.mark=n}apply(e){let t=e.slice(this.from,this.to),n=e.resolve(this.from),r=n.node(n.sharedDepth(this.to)),i=new F(jn(t.content,(e,t)=>!e.isAtom||!t.type.allowsMarkType(this.mark.type)?e:e.mark(this.mark.addToSet(e.marks)),r),t.openStart,t.openEnd);return An.fromReplace(e,this.from,this.to,i)}invert(){return new Nn(this.from,this.to,this.mark)}map(t){let n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deleted&&r.deleted||n.pos>=r.pos?null:new e(n.pos,r.pos,this.mark)}merge(t){return t instanceof e&&t.mark.eq(this.mark)&&this.from<=t.to&&this.to>=t.from?new e(Math.min(this.from,t.from),Math.max(this.to,t.to),this.mark):null}toJSON(){return{stepType:`addMark`,mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(t,n){if(typeof n.from!=`number`||typeof n.to!=`number`)throw RangeError(`Invalid input for AddMarkStep.fromJSON`);return new e(n.from,n.to,t.markFromJSON(n.mark))}};kn.jsonID(`addMark`,Mn);var Nn=class e extends kn{constructor(e,t,n){super(),this.from=e,this.to=t,this.mark=n}apply(e){let t=e.slice(this.from,this.to),n=new F(jn(t.content,e=>e.mark(this.mark.removeFromSet(e.marks)),e),t.openStart,t.openEnd);return An.fromReplace(e,this.from,this.to,n)}invert(){return new Mn(this.from,this.to,this.mark)}map(t){let n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deleted&&r.deleted||n.pos>=r.pos?null:new e(n.pos,r.pos,this.mark)}merge(t){return t instanceof e&&t.mark.eq(this.mark)&&this.from<=t.to&&this.to>=t.from?new e(Math.min(this.from,t.from),Math.max(this.to,t.to),this.mark):null}toJSON(){return{stepType:`removeMark`,mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(t,n){if(typeof n.from!=`number`||typeof n.to!=`number`)throw RangeError(`Invalid input for RemoveMarkStep.fromJSON`);return new e(n.from,n.to,t.markFromJSON(n.mark))}};kn.jsonID(`removeMark`,Nn);var Pn=class e extends kn{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return An.fail(`No node at mark step's position`);let n=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return An.fromReplace(e,this.pos,this.pos+1,new F(N.from(n),0,t.isLeaf?0:1))}invert(t){let n=t.nodeAt(this.pos);if(n){let t=this.mark.addToSet(n.marks);if(t.length==n.marks.length){for(let r=0;r<n.marks.length;r++)if(!n.marks[r].isInSet(t))return new e(this.pos,n.marks[r]);return new e(this.pos,this.mark)}}return new Fn(this.pos,this.mark)}map(t){let n=t.mapResult(this.pos,1);return n.deletedAfter?null:new e(n.pos,this.mark)}toJSON(){return{stepType:`addNodeMark`,pos:this.pos,mark:this.mark.toJSON()}}static fromJSON(t,n){if(typeof n.pos!=`number`)throw RangeError(`Invalid input for AddNodeMarkStep.fromJSON`);return new e(n.pos,t.markFromJSON(n.mark))}};kn.jsonID(`addNodeMark`,Pn);var Fn=class e extends kn{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return An.fail(`No node at mark step's position`);let n=t.type.create(t.attrs,null,this.mark.removeFromSet(t.marks));return An.fromReplace(e,this.pos,this.pos+1,new F(N.from(n),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);return!t||!this.mark.isInSet(t.marks)?this:new Pn(this.pos,this.mark)}map(t){let n=t.mapResult(this.pos,1);return n.deletedAfter?null:new e(n.pos,this.mark)}toJSON(){return{stepType:`removeNodeMark`,pos:this.pos,mark:this.mark.toJSON()}}static fromJSON(t,n){if(typeof n.pos!=`number`)throw RangeError(`Invalid input for RemoveNodeMarkStep.fromJSON`);return new e(n.pos,t.markFromJSON(n.mark))}};kn.jsonID(`removeNodeMark`,Fn);var In=class e extends kn{constructor(e,t,n,r=!1){super(),this.from=e,this.to=t,this.slice=n,this.structure=r}apply(e){return this.structure&&Rn(e,this.from,this.to)?An.fail(`Structure replace would overwrite content`):An.fromReplace(e,this.from,this.to,this.slice)}getMap(){return new En([this.from,this.to-this.from,this.slice.size])}invert(t){return new e(this.from,this.from+this.slice.size,t.slice(this.from,this.to))}map(t){let n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1);return n.deletedAcross&&r.deletedAcross?null:new e(n.pos,Math.max(n.pos,r.pos),this.slice,this.structure)}merge(t){if(!(t instanceof e)||t.structure||this.structure)return null;if(this.from+this.slice.size==t.from&&!this.slice.openEnd&&!t.slice.openStart){let n=this.slice.size+t.slice.size==0?F.empty:new F(this.slice.content.append(t.slice.content),this.slice.openStart,t.slice.openEnd);return new e(this.from,this.to+(t.to-t.from),n,this.structure)}else if(t.to==this.from&&!this.slice.openStart&&!t.slice.openEnd){let n=this.slice.size+t.slice.size==0?F.empty:new F(t.slice.content.append(this.slice.content),t.slice.openStart,this.slice.openEnd);return new e(t.from,this.to,n,this.structure)}else return null}toJSON(){let e={stepType:`replace`,from:this.from,to:this.to};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(t,n){if(typeof n.from!=`number`||typeof n.to!=`number`)throw RangeError(`Invalid input for ReplaceStep.fromJSON`);return new e(n.from,n.to,F.fromJSON(t,n.slice),!!n.structure)}};kn.jsonID(`replace`,In);var Ln=class e extends kn{constructor(e,t,n,r,i,a,o=!1){super(),this.from=e,this.to=t,this.gapFrom=n,this.gapTo=r,this.slice=i,this.insert=a,this.structure=o}apply(e){if(this.structure&&(Rn(e,this.from,this.gapFrom)||Rn(e,this.gapTo,this.to)))return An.fail(`Structure gap-replace would overwrite content`);let t=e.slice(this.gapFrom,this.gapTo);if(t.openStart||t.openEnd)return An.fail(`Gap is not a flat range`);let n=this.slice.insertAt(this.insert,t.content);return n?An.fromReplace(e,this.from,this.to,n):An.fail(`Content does not fit in gap`)}getMap(){return new En([this.from,this.gapFrom-this.from,this.insert,this.gapTo,this.to-this.gapTo,this.slice.size-this.insert])}invert(t){let n=this.gapTo-this.gapFrom;return new e(this.from,this.from+this.slice.size+n,this.from+this.insert,this.from+this.insert+n,t.slice(this.from,this.to).removeBetween(this.gapFrom-this.from,this.gapTo-this.from),this.gapFrom-this.from,this.structure)}map(t){let n=t.mapResult(this.from,1),r=t.mapResult(this.to,-1),i=this.from==this.gapFrom?n.pos:t.map(this.gapFrom,-1),a=this.to==this.gapTo?r.pos:t.map(this.gapTo,1);return n.deletedAcross&&r.deletedAcross||i<n.pos||a>r.pos?null:new e(n.pos,r.pos,i,a,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:`replaceAround`,from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(t,n){if(typeof n.from!=`number`||typeof n.to!=`number`||typeof n.gapFrom!=`number`||typeof n.gapTo!=`number`||typeof n.insert!=`number`)throw RangeError(`Invalid input for ReplaceAroundStep.fromJSON`);return new e(n.from,n.to,n.gapFrom,n.gapTo,F.fromJSON(t,n.slice),n.insert,!!n.structure)}};kn.jsonID(`replaceAround`,Ln);function Rn(e,t,n){let r=e.resolve(t),i=n-t,a=r.depth;for(;i>0&&a>0&&r.indexAfter(a)==r.node(a).childCount;)a--,i--;if(i>0){let e=r.node(a).maybeChild(r.indexAfter(a));for(;i>0;){if(!e||e.isLeaf)return!0;e=e.firstChild,i--}}return!1}function zn(e,t,n,r){let i=[],a=[],o,s;e.doc.nodesBetween(t,n,(e,c,l)=>{if(!e.isInline)return;let u=e.marks;if(!r.isInSet(u)&&l.type.allowsMarkType(r.type)){let l=Math.max(c,t),d=Math.min(c+e.nodeSize,n),f=r.addToSet(u);for(let e=0;e<u.length;e++)u[e].isInSet(f)||(o&&o.to==l&&o.mark.eq(u[e])?o.to=d:i.push(o=new Nn(l,d,u[e])));s&&s.to==l?s.to=d:a.push(s=new Mn(l,d,r))}}),i.forEach(t=>e.step(t)),a.forEach(t=>e.step(t))}function Bn(e,t,n,r){let i=[],a=0;e.doc.nodesBetween(t,n,(e,o)=>{if(!e.isInline)return;a++;let s=null;if(r instanceof Ut){let t=e.marks,n;for(;n=r.isInSet(t);)(s||=[]).push(n),t=n.removeFromSet(t)}else r?r.isInSet(e.marks)&&(s=[r]):s=e.marks;if(s&&s.length){let r=Math.min(o+e.nodeSize,n);for(let e=0;e<s.length;e++){let n=s[e],c;for(let e=0;e<i.length;e++){let t=i[e];t.step==a-1&&n.eq(i[e].style)&&(c=t)}c?(c.to=r,c.step=a):i.push({style:n,from:Math.max(o,t),to:r,step:a})}}}),i.forEach(t=>e.step(new Nn(t.from,t.to,t.style)))}function Vn(e,t,n,r=n.contentMatch,i=!0){let a=e.doc.nodeAt(t),o=[],s=t+1;for(let t=0;t<a.childCount;t++){let c=a.child(t),l=s+c.nodeSize,u=r.matchType(c.type);if(!u)o.push(new In(s,l,F.empty));else{r=u;for(let t=0;t<c.marks.length;t++)n.allowsMarkType(c.marks[t].type)||e.step(new Nn(s,l,c.marks[t]));if(i&&c.isText&&n.whitespace!=`pre`){let e,t=/\r?\n|\r/g,r;for(;e=t.exec(c.text);)r||=new F(N.from(n.schema.text(` `,n.allowedMarks(c.marks))),0,0),o.push(new In(s+e.index,s+e.index+e[0].length,r))}}s=l}if(!r.validEnd){let t=r.fillBefore(N.empty,!0);e.replace(s,s,new F(t,0,0))}for(let t=o.length-1;t>=0;t--)e.step(o[t])}function Hn(e,t,n){return(t==0||e.canReplace(t,e.childCount))&&(n==e.childCount||e.canReplace(0,n))}function Un(e){let t=e.parent.content.cutByIndex(e.startIndex,e.endIndex);for(let n=e.depth,r=0,i=0;;--n){let a=e.$from.node(n),o=e.$from.index(n)+r,s=e.$to.indexAfter(n)-i;if(n<e.depth&&a.canReplace(o,s,t))return n;if(n==0||a.type.spec.isolating||!Hn(a,o,s))break;o&&(r=1),s<a.childCount&&(i=1)}return null}function Wn(e,t,n){let{$from:r,$to:i,depth:a}=t,o=r.before(a+1),s=i.after(a+1),c=o,l=s,u=N.empty,d=0;for(let e=a,t=!1;e>n;e--)t||r.index(e)>0?(t=!0,u=N.from(r.node(e).copy(u)),d++):c--;let f=N.empty,p=0;for(let e=a,t=!1;e>n;e--)t||i.after(e+1)<i.end(e)?(t=!0,f=N.from(i.node(e).copy(f)),p++):l++;e.step(new Ln(c,l,o,s,new F(u.append(f),d,p),u.size-d,!0))}function Gn(e,t,n=null,r=e){let i=qn(e,t),a=i&&Jn(r,t);return a?i.map(Kn).concat({type:t,attrs:n}).concat(a.map(Kn)):null}function Kn(e){return{type:e,attrs:null}}function qn(e,t){let{parent:n,startIndex:r,endIndex:i}=e,a=n.contentMatchAt(r).findWrapping(t);if(!a)return null;let o=a.length?a[0]:t;return n.canReplaceWith(r,i,o)?a:null}function Jn(e,t){let{parent:n,startIndex:r,endIndex:i}=e,a=n.child(r),o=t.contentMatch.findWrapping(a.type);if(!o)return null;let s=(o.length?o[o.length-1]:t).contentMatch;for(let e=r;s&&e<i;e++)s=s.matchType(n.child(e).type);return!s||!s.validEnd?null:o}function Yn(e,t,n){let r=N.empty;for(let e=n.length-1;e>=0;e--){if(r.size){let t=n[e].type.contentMatch.matchFragment(r);if(!t||!t.validEnd)throw RangeError(`Wrapper type given to Transform.wrap does not form valid content of its parent wrapper`)}r=N.from(n[e].type.create(n[e].attrs,r))}let i=t.start,a=t.end;e.step(new Ln(i,a,i,a,new F(r,0,0),n.length,!0))}function Xn(e,t,n,r,i){if(!r.isTextblock)throw RangeError(`Type given to setBlockType should be a textblock`);let a=e.steps.length;e.doc.nodesBetween(t,n,(t,n)=>{let o=typeof i==`function`?i(t):i;if(t.isTextblock&&!t.hasMarkup(r,o)&&$n(e.doc,e.mapping.slice(a).map(n),r)){let i=null;if(r.schema.linebreakReplacement){let e=r.whitespace==`pre`,t=!!r.contentMatch.matchType(r.schema.linebreakReplacement);e&&!t?i=!1:!e&&t&&(i=!0)}i===!1&&Qn(e,t,n,a),Vn(e,e.mapping.slice(a).map(n,1),r,void 0,i===null);let s=e.mapping.slice(a),c=s.map(n,1),l=s.map(n+t.nodeSize,1);return e.step(new Ln(c,l,c+1,l-1,new F(N.from(r.create(o,null,t.marks)),0,0),1,!0)),i===!0&&Zn(e,t,n,a),!1}})}function Zn(e,t,n,r){t.forEach((i,a)=>{if(i.isText){let o,s=/\r?\n|\r/g;for(;o=s.exec(i.text);){let i=e.mapping.slice(r).map(n+1+a+o.index);e.replaceWith(i,i+1,t.type.schema.linebreakReplacement.create())}}})}function Qn(e,t,n,r){t.forEach((i,a)=>{if(i.type==i.type.schema.linebreakReplacement){let i=e.mapping.slice(r).map(n+1+a);e.replaceWith(i,i+1,t.type.schema.text(`
|
|
@@ -213,4 +213,4 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
|
|
|
213
213
|
a { color: #7C8C72; }
|
|
214
214
|
.title { font-size: 20px; font-weight: 600; margin-bottom: 16px; padding-bottom: 8px;
|
|
215
215
|
border-bottom: 1px solid rgba(0,0,0,0.06); }
|
|
216
|
-
`;function kC({data:e,onSubmit:t,submitted:n,isStreaming:r}){let{title:a,content:o,filePath:s,readOnly:c}=e??{},l=a??`Document`,u=(0,A.useCallback)(e=>{t(JSON.stringify({_lifecycle:!0,component:`document-editor`,event:e,...s?{filePath:s}:{}}))},[t,s]),[d,f]=(0,A.useState)(`idle`),p=(0,A.useRef)(null),h=(0,A.useRef)(null),[g,y]=(0,A.useState)(!1),[b,S]=(0,A.useState)(!1),[C,w]=(0,A.useState)(`idle`),te=(0,A.useRef)(o),re=(0,A.useMemo)(()=>Lb.extend({markdownTokenizer:null}),[]),ie=(0,A.useMemo)(()=>[Rx.configure({orderedList:!1}),re,ub.configure({openOnClick:!1}),SC,EC],[re]),T=(0,A.useCallback)(e=>e.replace(/\u2014/g,`-`).replace(/\u2013/g,`-`).replace(/\u201C/g,`"`).replace(/\u201D/g,`"`).replace(/\u2018/g,`'`).replace(/\u2019/g,`'`).replace(/\u2026/g,`...`).replace(/\u00A0/g,` `),[]),E=mm({extensions:ie,content:(0,A.useMemo)(()=>o&&T(o),[o,T]),contentType:`markdown`,editable:!c,editorProps:{attributes:{class:`doc-editor__content`,role:`textbox`,"aria-multiline":`true`}},onUpdate:({editor:e})=>{c||(p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{let n=e.getMarkdown();f(`saving`),t(JSON.stringify({action:`save`,content:n,...s?{filePath:s}:{}})),u(`auto-saved`),h.current&&clearTimeout(h.current),f(`saved`),h.current=setTimeout(()=>f(`idle`),2e3)},500))},onCreate:({editor:e})=>{e||y(!0)},onFocus:()=>S(!0),onBlur:()=>S(!1)}),O=wC({title:l,isStreaming:r,persistent:!0,channelName:`maxy-doc-editor`,renderPopout:(0,A.useCallback)((e,t)=>{let n=e.document;n.open(),n.close(),n.title=t;let r=n.createElement(`style`);r.textContent=OC,n.head.appendChild(r);let i=n.createElement(`div`);i.className=`title`,i.textContent=t,n.body.appendChild(i);let a=n.createElement(`pre`);a.style.whiteSpace=`pre-wrap`,a.style.fontFamily=`inherit`,a.style.background=`transparent`,a.style.padding=`0`,a.textContent=E?.getMarkdown()??``,n.body.appendChild(a)},[E]),onSyncMessage:(0,A.useCallback)(e=>{let t=e;t?.type===`content`&&t.markdown&&E&&E.commands.setContent(T(t.markdown),{contentType:`markdown`})},[E,T])});(0,A.useEffect)(()=>{O.poppedOut&&E&&O.syncToPopout({type:`content`,markdown:E.getMarkdown(),title:l})},[O.poppedOut]);let k=TC({onSubmit:t}),ae=(0,A.useRef)(null);(0,A.useEffect)(()=>{if(!E||!o||o===te.current)return;te.current=o;let e=T(o);if(ae.current&&=(E.off(`blur`,ae.current),null),!E.isFocused)E.commands.setContent(e,{contentType:`markdown`});else{let t=()=>{E.commands.setContent(e,{contentType:`markdown`}),E.off(`blur`,t),ae.current=null};ae.current=t,E.on(`blur`,t)}},[E,o,T]),(0,A.useEffect)(()=>(u(`rendered`),()=>{p.current&&clearTimeout(p.current),h.current&&clearTimeout(h.current)}),[]);let oe=(0,A.useCallback)(()=>{if(!E)return;let{from:e,to:t}=E.state.selection;e!==t&&k.openCommentInput()},[E,k]),se=(0,A.useCallback)(()=>{if(!E)return;let{from:e,to:t}=E.state.selection,n=E.state.doc.textBetween(e,t);if(!n)return;let r=k.submitComment(n,{startOffset:e,endOffset:t});r&&E.chain().focus().setMark(`comment`,{commentId:r,commentText:k.commentText,createdAt:new Date().toISOString()}).run()},[E,k]),ce=(0,A.useCallback)(()=>{c||!E||(S(!0),E.commands.focus())},[c,E]),le=(0,A.useCallback)(()=>{if(!E||!s)return;let e=E.getMarkdown();!e.trim()&&!window.confirm(`Save empty document?`)||(t(JSON.stringify({action:`approve`,content:e,filePath:s})),u(`approved`),w(`approved`))},[E,s,t,u]),ue=(0,A.useCallback)(()=>{if(!E)return;let e=E.getMarkdown(),n=(l||``).replace(/\.md$/i,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,80)||`document`,r=new Blob([e],{type:`text/markdown;charset=utf-8`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`${n}.md`,a.click(),URL.revokeObjectURL(i),t(JSON.stringify({_lifecycle:!0,component:`document-editor`,event:`downloaded`,title:l,contentLength:e.length,...s?{filePath:s}:{}}))},[E,l,s,t]);if(n&&!c)return(0,j.jsxs)(`div`,{className:`editor-base doc-editor doc-editor--approved`,children:[(0,j.jsxs)(`div`,{className:`editor-base__bar`,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l}),(0,j.jsx)(`div`,{className:`editor-base__actions`,children:(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Approved`})})]}),(0,j.jsx)(`div`,{className:`doc-editor__body`,children:(0,j.jsx)(DC,{content:o||``})})]});if(g||!E)return(0,j.jsxs)(`div`,{className:`editor-base doc-editor`,children:[(0,j.jsxs)(`div`,{className:`editor-base__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l})]}),(0,j.jsx)(DC,{content:o||``})]});let de=typeof window<`u`&&window.innerWidth<640,pe=typeof BroadcastChannel<`u`,he=(0,j.jsxs)(`div`,{className:`editor-base__actions`,children:[d===`saving`&&(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Saving...`}),d===`saved`&&(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Saved`}),C===`approved`&&(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Approved`}),c&&(0,j.jsx)(`span`,{className:`editor-base__status`,children:`View only`}),s&&!c&&C!==`approved`&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:i,onClick:le,"aria-label":`Approve`,children:`Approve`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ne,onClick:ue,"aria-label":`Download`}),k.pendingComments.length>0&&(0,j.jsxs)(D,{variant:`ghost`,size:`sm`,onClick:k.sendComments,children:[`Send `,k.pendingComments.length,` comment`,k.pendingComments.length>1?`s`:``]}),!de&&pe&&!O.poppedOut&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:_,onClick:O.handlePopout,"aria-label":`Pop out`}),!O.fullscreen&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ye,onClick:O.handleFullscreen,"aria-label":`Full screen`}),O.fullscreen&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:xe,onClick:O.exitFullscreen,"aria-label":`Exit full screen`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ee,onClick:O.handleMinimise,"aria-label":`Minimise`})]}),ge=c?null:(0,j.jsx)(D_,{editor:E,children:(0,j.jsxs)(`div`,{className:`doc-editor__bubble-menu`,role:`toolbar`,"aria-label":`Formatting`,children:[(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:fe,onClick:()=>E.chain().focus().toggleBold().run(),"aria-label":`Bold`,"aria-pressed":E.isActive(`bold`)}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:_e,onClick:()=>E.chain().focus().toggleItalic().run(),"aria-label":`Italic`,"aria-pressed":E.isActive(`italic`)}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ve,onClick:()=>{let e=window.prompt(`URL`);e&&E.chain().focus().setLink({href:e}).run()},"aria-label":`Link`,"aria-pressed":E.isActive(`link`)}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:me,onClick:()=>E.chain().focus().toggleCode().run(),"aria-label":`Code`,"aria-pressed":E.isActive(`code`)}),(0,j.jsx)(`div`,{className:`doc-editor__bubble-divider`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:be,onClick:oe,"aria-label":`Add comment`})]})}),Se=k.showCommentInput?(0,j.jsxs)(`div`,{className:`doc-editor__comment-popover`,children:[(0,j.jsx)(`input`,{ref:k.commentInputRef,type:`text`,value:k.commentText,onChange:e=>k.setCommentText(e.target.value),onKeyDown:e=>{e.key===`Enter`&&se(),e.key===`Escape`&&k.cancelComment()},placeholder:`Add a comment...`,className:`doc-editor__comment-input`,"aria-label":`Add comment`}),(0,j.jsxs)(`div`,{className:`doc-editor__comment-actions`,children:[(0,j.jsx)(D,{variant:`primary`,size:`sm`,onClick:se,disabled:!k.commentText.trim(),children:`Add`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:v,onClick:k.cancelComment,"aria-label":`Cancel`})]})]}):null;if(O.fullscreen)return(0,j.jsxs)(`div`,{className:`editor-base-fullscreen`,children:[(0,j.jsxs)(`div`,{className:`editor-base-fullscreen__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base-fullscreen__title`,children:l}),he]}),(0,j.jsx)(`div`,{className:`editor-base-fullscreen__body`,children:b||c?(0,j.jsxs)(j.Fragment,{children:[ge,Se,(0,j.jsx)(om,{editor:E})]}):(0,j.jsx)(`div`,{className:`doc-editor__preview`,onClick:ce,role:`button`,tabIndex:0,onKeyDown:e=>(e.key===`Enter`||e.key===` `)&&ce(),children:(0,j.jsx)(DC,{content:E?.getMarkdown()??o??``})})})]});if(O.poppedOut)return(0,j.jsx)(`div`,{className:`editor-base editor-base--popout`,children:(0,j.jsxs)(`div`,{className:`editor-base__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l}),(0,j.jsxs)(`div`,{className:`editor-base__actions`,children:[(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Popped out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:we,onClick:O.handlePopIn,"aria-label":`Pop back in`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ee,onClick:O.handleMinimise,"aria-label":`Close`})]})]})});if(O.minimised)return(0,j.jsx)(`div`,{className:`editor-base editor-base--minimised`,onClick:O.handleExpand,role:`button`,tabIndex:0,onKeyDown:e=>e.key===`Enter`&&O.handleExpand(),children:(0,j.jsxs)(`div`,{className:`editor-base__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l}),(0,j.jsxs)(`div`,{className:`editor-base__actions`,onClick:e=>e.stopPropagation(),children:[!de&&pe&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:_,onClick:O.handlePopout,"aria-label":`Pop out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ye,onClick:O.handleFullscreen,"aria-label":`Full screen`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:x,onClick:O.handleExpand,"aria-label":`Expand`})]})]})});let Ce=E?.getMarkdown()??o??``;return(0,j.jsxs)(`div`,{className:`editor-base doc-editor`,children:[(0,j.jsxs)(`div`,{className:`editor-base__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l}),he]}),(0,j.jsx)(`div`,{className:`doc-editor__body`,children:b||c?(0,j.jsxs)(j.Fragment,{children:[ge,Se,(0,j.jsx)(om,{editor:E})]}):(0,j.jsx)(`div`,{className:`doc-editor__preview`,onClick:ce,role:`button`,tabIndex:0,onKeyDown:e=>(e.key===`Enter`||e.key===` `)&&ce(),children:(0,j.jsx)(DC,{content:Ce})})})]})}function AC(){(0,A.useEffect)(()=>{function e(e){e.data?.type===`vnc-clipboard`&&typeof e.data.text==`string`&&T(e.data.text)}window.addEventListener(`message`,e);let t=null;return typeof BroadcastChannel<`u`&&(t=new BroadcastChannel(`maxy-vnc-clipboard`),t.onmessage=e=>{typeof e.data==`string`&&T(e.data)}),()=>{window.removeEventListener(`message`,e),t?.close()}},[])}function jC(e){(0,A.useEffect)(()=>{let t=Date.now(),n=`/api/admin/browser-iframe/event`,r={brand:p.productName,surface:e};return fetch(n,{method:`POST`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},body:JSON.stringify({event:`mount`,...r}),keepalive:!0}).catch(()=>{}),()=>{let e=JSON.stringify({event:`unmount`,durationMs:Date.now()-t,...r});try{let t=new Blob([e],{type:`application/json`});navigator.sendBeacon(n,t)||fetch(n,{method:`POST`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},body:e,keepalive:!0}).catch(()=>{})}catch{}}},[e])}var MC=`maxy-vnc-overlay-popout`;function NC(e){let[t,n]=(0,A.useState)(!1),r=(0,A.useRef)(null),i=(0,A.useRef)(null),a=(0,A.useCallback)(()=>{i.current&&=(clearInterval(i.current),null),r.current&&!r.current.closed&&r.current.close(),r.current=null,n(!1)},[]),o=(0,A.useCallback)(()=>{let t=`/vnc-popout.html?title=${encodeURIComponent(p.productName)}`,o=window.open(t,MC,`width=1024,height=768`);o&&(r.current=o,n(!0),i.current=setInterval(()=>{r.current?.closed&&(a(),e?.())},500))},[a,e]);return(0,A.useEffect)(()=>()=>a(),[a]),{poppedOut:t,popout:o,cleanupPopout:a}}var PC=(0,A.forwardRef)(function({onClose:e},t){AC(),jC(`overlay`);let{poppedOut:n,popout:r,cleanupPopout:i}=NC(e);return(0,A.useImperativeHandle)(t,()=>({popout:r}),[r]),n?(0,j.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,j.jsx)(c,{className:`browser-viewer__icon`}),(0,j.jsx)(`span`,{className:`browser-viewer__title`,children:p.productName}),(0,j.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:xe,onClick:()=>i(),"aria-label":`Pop back in`}),e&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:v,onClick:()=>{i(),e()},"aria-label":`Close`})]}):(0,j.jsx)(`iframe`,{src:`/vnc-viewer.html`,className:`browser-surface__iframe`,title:p.productName})});function FC({onClose:e}){AC(),jC(`overlay`);let{poppedOut:t,popout:n,cleanupPopout:r}=NC(e),i=(0,A.useCallback)(()=>{r(),e()},[r,e]);(0,A.useEffect)(()=>{if(t)return;let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,i]);let a=CC({handlePopout:n,disabled:t});return t?(0,j.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,j.jsx)(c,{className:`browser-viewer__icon`}),(0,j.jsx)(`span`,{className:`browser-viewer__title`,children:p.productName}),(0,j.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:xe,onClick:()=>{r()},"aria-label":`Pop back in`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:v,onClick:i,"aria-label":`Close`})]}):(0,j.jsxs)(`div`,{className:`browser-viewer-fullscreen`,children:[(0,j.jsxs)(`div`,{className:`browser-viewer-fullscreen__bar`,...a,children:[(0,j.jsx)(c,{className:`browser-viewer__icon`}),(0,j.jsx)(`span`,{className:`browser-viewer-fullscreen__title`,children:p.productName}),(0,j.jsxs)(`div`,{className:`browser-viewer-fullscreen__actions`,children:[(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:_,onClick:n,"aria-label":`Pop out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:v,onClick:i,"aria-label":`Close`})]})]}),(0,j.jsx)(`iframe`,{src:`/vnc-viewer.html`,className:`browser-viewer-fullscreen__iframe`,title:p.productName})]})}var IC=()=>{},LC=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function RC(e){return LC.test(e)?`uuid`:e.startsWith(`agent-template:`)?`agent-template`:`other`}var zC={"null-attachmentId":`No file backing this artefact.`,"non-text-mime":`Content type cannot be displayed inline.`,"containment-rejected":`File path failed containment check; cannot display.`,"missing-on-disk":`File is missing on disk.`};function BC({reason:e}){return(0,j.jsxs)(`div`,{className:`art-skip-banner`,role:`status`,children:[(0,j.jsx)(ge,{size:14}),(0,j.jsx)(`span`,{children:zC[e]})]})}function VC({src:e,name:t,docId:n}){let[r,i]=(0,A.useState)(!1),a=(0,A.useRef)(null),o=(0,A.useRef)(!1),s=(0,A.useRef)(!1),c=(0,A.useCallback)(e=>{s.current||(s.current=!0,console.info(`[admin-ui] artefact-pdf-fallback id=${n.slice(0,8)} reason=${e}`),i(!0))},[n]);(0,A.useEffect)(()=>{let e=setTimeout(()=>{o.current||c(`onload-timeout`)},3e3);return()=>clearTimeout(e)},[c]);let l=()=>{o.current=!0;try{let e=a.current?.contentDocument?.body;e&&e.children.length===0&&!e.textContent?.trim()&&c(`empty-body`)}catch{}};return r?(0,j.jsxs)(`a`,{className:`art-pdf-fallback`,href:e,download:t,children:[(0,j.jsx)(m,{size:20}),(0,j.jsxs)(`div`,{className:`art-pdf-fallback-text`,children:[(0,j.jsx)(`div`,{className:`art-pdf-fallback-name`,children:t}),(0,j.jsx)(`div`,{className:`art-pdf-fallback-hint`,children:`Your browser can't display this PDF inline. Click to download.`})]}),(0,j.jsx)(ne,{size:16})]}):(0,j.jsx)(`iframe`,{ref:a,className:`art-pdf`,src:e,title:t,"aria-label":`PDF preview of ${t}`,onLoad:l,onError:()=>c(`onerror`)})}var HC={browser:`Browser`,data:`Data`,graph:`Graph`};function UC({selection:e,trigger:t,cacheKey:n,onClose:r,onArtefactSaved:i,onSwapToGraph:a}){let o=e!==null,s=e?.surface??null,l=(0,A.useRef)(null),u=(0,A.useRef)(null),[d,f]=(0,A.useState)(null),p=e?.surface===`doc`?e.docId:null,m=[250,500,1e3,2e3],h=(0,A.useCallback)(e=>{if(!n||!p)return;let t={};try{t=JSON.parse(e)}catch{return}if(t.action!==`save`||typeof t.content!=`string`)return;f(null);let r=t.content,a=e=>{fetch(`/api/admin/sidebar-artefact-save?session_key=${encodeURIComponent(n)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:p,content:r})}).then(async t=>{if(t.status===503&&e<m.length){let t=m[e];console.info(`[admin-ui] artefact-save-retry docId=${p} attempt=${e+1} delayMs=${t} status=503`),setTimeout(()=>a(e+1),t);return}if(!t.ok){let n=(await t.json().catch(()=>({}))).error??`status ${t.status}`,r=t.status===503?`retries-exhausted`:`status-${t.status}`;f(`Save failed: ${n}`),console.error(`[admin-ui] artefact-save-failed docId=${p} status=${t.status} attempts=${e+1} source=${r} error="${n}"`);return}let n=await t.json();i?.(p,n.updatedAt,r)}).catch(t=>{let n=t instanceof Error?t.message:String(t);f(`Save failed: ${n}`),console.error(`[admin-ui] artefact-save-failed docId=${p} attempts=${e+1} error="${n}"`)})};a(0)},[n,p,i]);(0,A.useEffect)(()=>{f(null)},[p]),(0,A.useEffect)(()=>{let n=e?.surface===`doc`?e.docId:null,r=e?.surface===`graph`?e.focusNodeId??null:null,i=e?.surface??null,a=i===null?`closed`:`${i}:${n??`none`}:${r??`none`}`;if(a===l.current)return;let s=o?`open`:`closed`,c=o?t??`chat-link`:`toolbar-close`,u=i??l.current?.split(`:`)[0]??`doc`,d=n?` docIdShape=${RC(n)} docIdSample=${n.slice(0,8)}`:``;console.info(`[admin-ui] artefact-pane state=${s} docId=${n??`none`} trigger=${c} surface=${u}${d}`),l.current=a},[e,t,o]);let y=e?.surface===`doc`,b=y?(e.tag||e.name.split(`.`).pop()||`doc`).toUpperCase().slice(0,6):``,x=y?e.revision||`rev 1`:`live`,S=e&&e.surface!==`doc`?HC[e.surface]:``,ee=y?e.name:S;return(0,j.jsxs)(`aside`,{className:`artefact`,"data-open":o,"data-surface":s??`none`,children:[(0,j.jsxs)(`div`,{className:`art-head`,children:[(0,j.jsxs)(`div`,{className:`left`,children:[!y&&s===`browser`&&(0,j.jsx)(c,{size:14,className:`art-head-surface-icon`}),!y&&s===`data`&&(0,j.jsx)(g,{size:14,className:`art-head-surface-icon`}),!y&&s===`graph`&&(0,j.jsx)(C,{size:14,className:`art-head-surface-icon`}),(0,j.jsx)(`span`,{className:`file-name`,children:ee}),y&&(0,j.jsx)(`span`,{className:`file-tag`,children:b})]}),(0,j.jsxs)(`div`,{className:`right`,children:[y&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`button`,{className:`icon-btn`,title:`Copy`,type:`button`,"aria-label":`Copy`,onClick:()=>{T(e.content)},children:(0,j.jsx)(k,{size:14})}),(0,j.jsx)(`button`,{className:`icon-btn`,title:`Refresh`,type:`button`,"aria-label":`Refresh`,children:(0,j.jsx)(w,{size:14})})]}),s===`browser`&&(0,j.jsx)(`button`,{className:`icon-btn`,title:`Pop out`,type:`button`,"aria-label":`Pop out`,onClick:()=>u.current?.popout(),children:(0,j.jsx)(_,{size:14})}),o&&(0,j.jsx)(`button`,{className:`icon-btn`,title:`Close`,type:`button`,"aria-label":`Close`,onClick:r,children:(0,j.jsx)(v,{size:14})})]})]}),(0,j.jsxs)(`div`,{className:`art-toolbar`,children:[(0,j.jsxs)(`span`,{className:`seg`,children:[(0,j.jsx)(`span`,{className:`bullet`}),(0,j.jsx)(`strong`,{children:y?`Artefact`:S})]}),(0,j.jsx)(`span`,{className:`right-meta`,children:x})]}),(0,j.jsxs)(`div`,{className:`art-body`,"data-surface":s??`none`,children:[y&&(()=>{let t=e.editable!==!1,r=e.skipReason??null,i=(e.mimeType??``).startsWith(`application/pdf`);if(r)return(0,j.jsx)(BC,{reason:r});if(i&&n){let t=`/api/admin/sidebar-artefact-content?id=${encodeURIComponent(e.docId)}&session_key=${encodeURIComponent(n)}`;return(0,j.jsx)(VC,{src:t,name:e.name,docId:e.docId},t)}return(0,j.jsxs)(j.Fragment,{children:[d&&(0,j.jsx)(`div`,{className:`art-save-error`,role:`alert`,children:d}),(0,j.jsx)(kC,{data:{title:e.name,content:e.content,readOnly:!t},onSubmit:t?h:IC,submitted:!1})]})})(),s===`browser`&&(0,j.jsx)(PC,{ref:u,onClose:r}),s===`data`&&n&&(0,j.jsx)(re,{cacheKey:n,onOpenInGraph:a?e=>{let t=ie(e.properties);a(e.nodeId,t??e.labels[0]??null)}:void 0}),e?.surface===`graph`&&n&&(0,j.jsx)(te,{cacheKey:n,initialFocus:e.focusNodeId?{nodeId:e.focusNodeId,nodeLabel:e.focusNodeLabel??null}:null,initialLabels:e.initialLabels??null})]}),(0,j.jsxs)(`div`,{className:`art-foot`,children:[(0,j.jsx)(`span`,{className:`left`,children:x}),(0,j.jsx)(`span`,{className:`right in-sync`,children:`in sync`})]})]})}function WC(e){if(e<60)return`${e}s`;let t=Math.floor(e/60),n=e%60;return n>0?`${t}m ${n}s`:`${t}m`}function GC(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function KC(e){let{show:t,onClose:n,claudeInfo:r,messages:i,sessionElapsed:a,conversationId:o,cacheKey:s}=e,[c,l]=(0,A.useState)(null);if(!t)return null;let u=i.flatMap(e=>e.events?.filter(e=>e.type===`usage`)??[]),d=u.at(-1),f=d?.peak_request_pct==null?d?.context_window?Math.round((d.input_tokens+d.cache_creation_tokens+d.cache_read_tokens)/d.context_window*100):0:Math.round(d.peak_request_pct*100),p=u.reduce((e,t)=>e+t.input_tokens+t.cache_creation_tokens+t.cache_read_tokens+t.output_tokens,0),m=i.flatMap(e=>e.events?.filter(e=>e.type===`rate_limit`)??[]).at(-1),h=u.reduce((e,t)=>e+(t.total_cost_usd??0),0),g=r?.account?.subscriptionType,_=e=>{let t=e*1e3-Date.now();if(t<=0)return`now`;let n=Math.floor(t/36e5),r=Math.floor(t%36e5/6e4);return n>0?`${n}h ${r}m`:`${r}m`};return(0,j.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,j.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,j.jsxs)(`div`,{className:`claude-info-header`,children:[(0,j.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`claude-info-icon`}),(0,j.jsx)(`span`,{children:`Claude Code`}),(0,j.jsx)(`button`,{className:`claude-info-close`,onClick:n,"aria-label":`Close`,children:`✕`})]}),(0,j.jsxs)(`div`,{className:`claude-info-section`,children:[(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Version`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:r?r.version:`…`})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Email`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:r?.account?.email??`…`})]})]}),(g||m||h>0)&&(0,j.jsxs)(`div`,{className:`claude-info-section`,children:[g&&(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Plan`}),(0,j.jsx)(`span`,{className:`claude-info-value`,style:{textTransform:`capitalize`},children:g})]}),m&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Usage`}),(0,j.jsxs)(`span`,{className:`claude-info-value`,children:[Math.round(m.utilization*100),`%`]})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Resets in`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:_(m.resetsAt)})]}),m.isUsingOverage&&(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Overage`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:`Active`})]})]}),h>0&&(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Session cost`}),(0,j.jsxs)(`span`,{className:`claude-info-value`,children:[`$`,h<.01?h.toFixed(4):h.toFixed(2)]})]})]}),(0,j.jsxs)(`div`,{className:`claude-info-section`,children:[(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Model`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:r?.model??`…`})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Context used`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:f>0?`${f}%`:`—`})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Tokens`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:p>0?GC(p):`—`})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Session`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:WC(a)})]}),(o||s)&&(()=>{let e=o??s??``;return(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Session`}),(0,j.jsx)(`button`,{type:`button`,className:`claude-info-value claude-info-id-copy`,title:`${e} (${o?`flushed`:`pre-flush`}) — click to copy`,onClick:async()=>{l(await T(e)?`copied`:`failed`),setTimeout(()=>l(null),1200)},children:c===`copied`?`copied ✓`:c===`failed`?`copy failed ✕`:`${e.slice(0,8)}…`})]})})()]})]})})}var qC=1080;function JC(){let e=ue(),[t,n]=(0,A.useState)(()=>typeof window>`u`?null:new URLSearchParams(window.location.search).get(`sessionId`)),[r,i]=(0,A.useState)(null),[a,o]=(0,A.useState)(null),[s,c]=(0,A.useState)(!1),[l,u]=(0,A.useState)(!1),[d,f]=(0,A.useState)(!1),[p,m]=(0,A.useState)(()=>typeof window<`u`&&window.matchMedia(`(min-width: ${qC}px)`).matches);(0,A.useEffect)(()=>{let e=window.matchMedia(`(min-width: ${qC}px)`),t=e=>m(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,A.useEffect)(()=>{if(!d)return;let e=e=>{e.key===`Escape`&&f(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[d]);let h=(0,A.useCallback)(async()=>{if(l)return;u(!0);let e=p?`artefact`:`overlay`;try{let t=await(await fetch(`/api/admin/browser/launch`,{method:`POST`})).json().catch(()=>({ok:!1,error:`Invalid response`}));if(!t.ok)throw Error(t.error??`Failed to launch browser`);p?(i({surface:`browser`}),o(`header-menu`)):c(!0),console.info(`[admin-ui] header-menu-browser-launch outcome=ok viewport=${e}`)}catch(t){console.error(`[admin-ui] header-menu-browser-launch outcome=error viewport=${e} error="${t instanceof Error?t.message:String(t)}"`),window.alert(t instanceof Error?t.message:`Failed to launch browser`)}finally{u(!1)}},[l,p]),g=(0,A.useCallback)(async()=>{let t=e.claudeInfo!=null;if(f(!0),t){console.info(`[admin-ui] claude-info-open cached=true ms=0`);return}let n=Date.now();try{let t=await fetch(`/api/admin/claude-info`);if(t.ok){let n=await t.json();e.setClaudeInfo(n)}console.info(`[admin-ui] claude-info-open cached=false ms=${Date.now()-n}`)}catch(e){console.error(`[admin-ui] claude-info-fetch-failed ms=${Date.now()-n} error="${e instanceof Error?e.message:String(e)}"`)}},[e]),_=(0,A.useCallback)(()=>{i(null),o(null)},[]);if(e.appState===`loading`)return(0,j.jsx)(`div`,{className:`connect-page`});if(e.appState===`set-pin`)return(0,j.jsx)(Ee,{pin:e.pin,setPin:e.setPin,showPin:e.showPin,setShowPin:e.setShowPin,pinLoading:e.pinLoading,pinError:e.pinError,pinInputRef:e.pinInputRef,setPinFormRef:e.setPinFormRef,onSubmit:e.handleSetPin,operatorName:e.operatorName,setOperatorName:e.setOperatorName});if(e.appState===`connect-claude`)return(0,j.jsx)(ke,{authPolling:e.authPolling,setAuthPolling:e.setAuthPolling,authLoading:e.authLoading,setAuthLoading:e.setAuthLoading,pinError:e.pinError,setPinError:e.setPinError,setAppState:e.setAppState});if(e.appState===`enter-pin`)return(0,j.jsx)(De,{pin:e.pin,setPin:e.setPin,showPin:e.showPin,setShowPin:e.setShowPin,pinLoading:e.pinLoading,pinError:e.pinError,pinInputRef:e.pinInputRef,onSubmit:e.handleLogin,onChangePin:e.handleChangePin,remoteAuthEnabled:e.remoteAuthEnabled,onSignOutRemote:e.handleLogout});if(e.appState===`account-picker`)return(0,j.jsx)(Oe,{accounts:e.accounts,loading:e.accountPickerLoading,error:e.pinError,onSelect:e.handleAccountSelect});let v=r!==null;return(0,j.jsx)(b,{cacheKey:e.cacheKey,businessName:e.businessName,conversationId:e.conversationId,onLaunchBrowser:h,onLogout:e.handleLogout,browserLaunching:l,userName:e.userName,userAvatar:e.userAvatar,role:e.role,selectedSessionId:t,onSelectSession:n,dataArtefact:v?`open`:`closed`,footer:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(We,{onOpen:g}),s&&(0,j.jsx)(FC,{onClose:()=>c(!1)}),(0,j.jsx)(KC,{show:d,onClose:()=>f(!1),claudeInfo:e.claudeInfo,messages:[],sessionElapsed:0,conversationId:e.conversationId,cacheKey:e.cacheKey})]}),children:({sessionsState:i})=>(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(Pe,{}),t&&e.cacheKey?(0,j.jsx)(He,{sessionId:t,cacheKey:e.cacheKey,onRenamed:()=>i.refetch(),onClose:()=>n(null),recentsActions:{setSessions:i.setSessions,refetch:i.refetch},liveRow:i.sessions.find(e=>e.sessionId===t)},t):(0,j.jsx)(`main`,{}),v&&(0,j.jsx)(ze,{}),(0,j.jsx)(UC,{selection:r,trigger:a,cacheKey:e.cacheKey,onClose:_})]})})}(0,ae.createRoot)(document.getElementById(`root`)).render((0,j.jsx)(JC,{}));
|
|
216
|
+
`;function kC({data:e,onSubmit:t,submitted:n,isStreaming:r}){let{title:a,content:o,filePath:s,readOnly:c}=e??{},l=a??`Document`,u=(0,A.useCallback)(e=>{t(JSON.stringify({_lifecycle:!0,component:`document-editor`,event:e,...s?{filePath:s}:{}}))},[t,s]),[d,f]=(0,A.useState)(`idle`),p=(0,A.useRef)(null),h=(0,A.useRef)(null),[g,_]=(0,A.useState)(!1),[b,S]=(0,A.useState)(!1),[C,w]=(0,A.useState)(`idle`),te=(0,A.useRef)(o),re=(0,A.useMemo)(()=>Lb.extend({markdownTokenizer:null}),[]),ie=(0,A.useMemo)(()=>[Rx.configure({orderedList:!1}),re,ub.configure({openOnClick:!1}),SC,EC],[re]),T=(0,A.useCallback)(e=>e.replace(/\u2014/g,`-`).replace(/\u2013/g,`-`).replace(/\u201C/g,`"`).replace(/\u201D/g,`"`).replace(/\u2018/g,`'`).replace(/\u2019/g,`'`).replace(/\u2026/g,`...`).replace(/\u00A0/g,` `),[]),E=mm({extensions:ie,content:(0,A.useMemo)(()=>o&&T(o),[o,T]),contentType:`markdown`,editable:!c,editorProps:{attributes:{class:`doc-editor__content`,role:`textbox`,"aria-multiline":`true`}},onUpdate:({editor:e})=>{c||(p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{let n=e.getMarkdown();f(`saving`),t(JSON.stringify({action:`save`,content:n,...s?{filePath:s}:{}})),u(`auto-saved`),h.current&&clearTimeout(h.current),f(`saved`),h.current=setTimeout(()=>f(`idle`),2e3)},500))},onCreate:({editor:e})=>{e||_(!0)},onFocus:()=>S(!0),onBlur:()=>S(!1)}),O=wC({title:l,isStreaming:r,persistent:!0,channelName:`maxy-doc-editor`,renderPopout:(0,A.useCallback)((e,t)=>{let n=e.document;n.open(),n.close(),n.title=t;let r=n.createElement(`style`);r.textContent=OC,n.head.appendChild(r);let i=n.createElement(`div`);i.className=`title`,i.textContent=t,n.body.appendChild(i);let a=n.createElement(`pre`);a.style.whiteSpace=`pre-wrap`,a.style.fontFamily=`inherit`,a.style.background=`transparent`,a.style.padding=`0`,a.textContent=E?.getMarkdown()??``,n.body.appendChild(a)},[E]),onSyncMessage:(0,A.useCallback)(e=>{let t=e;t?.type===`content`&&t.markdown&&E&&E.commands.setContent(T(t.markdown),{contentType:`markdown`})},[E,T])});(0,A.useEffect)(()=>{O.poppedOut&&E&&O.syncToPopout({type:`content`,markdown:E.getMarkdown(),title:l})},[O.poppedOut]);let k=TC({onSubmit:t}),ae=(0,A.useRef)(null);(0,A.useEffect)(()=>{if(!E||!o||o===te.current)return;te.current=o;let e=T(o);if(ae.current&&=(E.off(`blur`,ae.current),null),!E.isFocused)E.commands.setContent(e,{contentType:`markdown`});else{let t=()=>{E.commands.setContent(e,{contentType:`markdown`}),E.off(`blur`,t),ae.current=null};ae.current=t,E.on(`blur`,t)}},[E,o,T]),(0,A.useEffect)(()=>(u(`rendered`),()=>{p.current&&clearTimeout(p.current),h.current&&clearTimeout(h.current)}),[]);let oe=(0,A.useCallback)(()=>{if(!E)return;let{from:e,to:t}=E.state.selection;e!==t&&k.openCommentInput()},[E,k]),se=(0,A.useCallback)(()=>{if(!E)return;let{from:e,to:t}=E.state.selection,n=E.state.doc.textBetween(e,t);if(!n)return;let r=k.submitComment(n,{startOffset:e,endOffset:t});r&&E.chain().focus().setMark(`comment`,{commentId:r,commentText:k.commentText,createdAt:new Date().toISOString()}).run()},[E,k]),ce=(0,A.useCallback)(()=>{c||!E||(S(!0),E.commands.focus())},[c,E]),le=(0,A.useCallback)(()=>{if(!E||!s)return;let e=E.getMarkdown();!e.trim()&&!window.confirm(`Save empty document?`)||(t(JSON.stringify({action:`approve`,content:e,filePath:s})),u(`approved`),w(`approved`))},[E,s,t,u]),ue=(0,A.useCallback)(()=>{if(!E)return;let e=E.getMarkdown(),n=(l||``).replace(/\.md$/i,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,80)||`document`,r=new Blob([e],{type:`text/markdown;charset=utf-8`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`${n}.md`,a.click(),URL.revokeObjectURL(i),t(JSON.stringify({_lifecycle:!0,component:`document-editor`,event:`downloaded`,title:l,contentLength:e.length,...s?{filePath:s}:{}}))},[E,l,s,t]);if(n&&!c)return(0,j.jsxs)(`div`,{className:`editor-base doc-editor doc-editor--approved`,children:[(0,j.jsxs)(`div`,{className:`editor-base__bar`,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l}),(0,j.jsx)(`div`,{className:`editor-base__actions`,children:(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Approved`})})]}),(0,j.jsx)(`div`,{className:`doc-editor__body`,children:(0,j.jsx)(DC,{content:o||``})})]});if(g||!E)return(0,j.jsxs)(`div`,{className:`editor-base doc-editor`,children:[(0,j.jsxs)(`div`,{className:`editor-base__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l})]}),(0,j.jsx)(DC,{content:o||``})]});let de=typeof window<`u`&&window.innerWidth<640,pe=typeof BroadcastChannel<`u`,he=(0,j.jsxs)(`div`,{className:`editor-base__actions`,children:[d===`saving`&&(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Saving...`}),d===`saved`&&(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Saved`}),C===`approved`&&(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Approved`}),c&&(0,j.jsx)(`span`,{className:`editor-base__status`,children:`View only`}),s&&!c&&C!==`approved`&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:i,onClick:le,"aria-label":`Approve`,children:`Approve`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ne,onClick:ue,"aria-label":`Download`}),k.pendingComments.length>0&&(0,j.jsxs)(D,{variant:`ghost`,size:`sm`,onClick:k.sendComments,children:[`Send `,k.pendingComments.length,` comment`,k.pendingComments.length>1?`s`:``]}),!de&&pe&&!O.poppedOut&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:v,onClick:O.handlePopout,"aria-label":`Pop out`}),!O.fullscreen&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ye,onClick:O.handleFullscreen,"aria-label":`Full screen`}),O.fullscreen&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:xe,onClick:O.exitFullscreen,"aria-label":`Exit full screen`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ee,onClick:O.handleMinimise,"aria-label":`Minimise`})]}),ge=c?null:(0,j.jsx)(D_,{editor:E,children:(0,j.jsxs)(`div`,{className:`doc-editor__bubble-menu`,role:`toolbar`,"aria-label":`Formatting`,children:[(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:fe,onClick:()=>E.chain().focus().toggleBold().run(),"aria-label":`Bold`,"aria-pressed":E.isActive(`bold`)}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:_e,onClick:()=>E.chain().focus().toggleItalic().run(),"aria-label":`Italic`,"aria-pressed":E.isActive(`italic`)}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ve,onClick:()=>{let e=window.prompt(`URL`);e&&E.chain().focus().setLink({href:e}).run()},"aria-label":`Link`,"aria-pressed":E.isActive(`link`)}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:me,onClick:()=>E.chain().focus().toggleCode().run(),"aria-label":`Code`,"aria-pressed":E.isActive(`code`)}),(0,j.jsx)(`div`,{className:`doc-editor__bubble-divider`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:be,onClick:oe,"aria-label":`Add comment`})]})}),Se=k.showCommentInput?(0,j.jsxs)(`div`,{className:`doc-editor__comment-popover`,children:[(0,j.jsx)(`input`,{ref:k.commentInputRef,type:`text`,value:k.commentText,onChange:e=>k.setCommentText(e.target.value),onKeyDown:e=>{e.key===`Enter`&&se(),e.key===`Escape`&&k.cancelComment()},placeholder:`Add a comment...`,className:`doc-editor__comment-input`,"aria-label":`Add comment`}),(0,j.jsxs)(`div`,{className:`doc-editor__comment-actions`,children:[(0,j.jsx)(D,{variant:`primary`,size:`sm`,onClick:se,disabled:!k.commentText.trim(),children:`Add`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:y,onClick:k.cancelComment,"aria-label":`Cancel`})]})]}):null;if(O.fullscreen)return(0,j.jsxs)(`div`,{className:`editor-base-fullscreen`,children:[(0,j.jsxs)(`div`,{className:`editor-base-fullscreen__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base-fullscreen__title`,children:l}),he]}),(0,j.jsx)(`div`,{className:`editor-base-fullscreen__body`,children:b||c?(0,j.jsxs)(j.Fragment,{children:[ge,Se,(0,j.jsx)(om,{editor:E})]}):(0,j.jsx)(`div`,{className:`doc-editor__preview`,onClick:ce,role:`button`,tabIndex:0,onKeyDown:e=>(e.key===`Enter`||e.key===` `)&&ce(),children:(0,j.jsx)(DC,{content:E?.getMarkdown()??o??``})})})]});if(O.poppedOut)return(0,j.jsx)(`div`,{className:`editor-base editor-base--popout`,children:(0,j.jsxs)(`div`,{className:`editor-base__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l}),(0,j.jsxs)(`div`,{className:`editor-base__actions`,children:[(0,j.jsx)(`span`,{className:`editor-base__status`,children:`Popped out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:we,onClick:O.handlePopIn,"aria-label":`Pop back in`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ee,onClick:O.handleMinimise,"aria-label":`Close`})]})]})});if(O.minimised)return(0,j.jsx)(`div`,{className:`editor-base editor-base--minimised`,onClick:O.handleExpand,role:`button`,tabIndex:0,onKeyDown:e=>e.key===`Enter`&&O.handleExpand(),children:(0,j.jsxs)(`div`,{className:`editor-base__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l}),(0,j.jsxs)(`div`,{className:`editor-base__actions`,onClick:e=>e.stopPropagation(),children:[!de&&pe&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:v,onClick:O.handlePopout,"aria-label":`Pop out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:ye,onClick:O.handleFullscreen,"aria-label":`Full screen`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:x,onClick:O.handleExpand,"aria-label":`Expand`})]})]})});let Ce=E?.getMarkdown()??o??``;return(0,j.jsxs)(`div`,{className:`editor-base doc-editor`,children:[(0,j.jsxs)(`div`,{className:`editor-base__bar`,...O.dragBarProps,children:[(0,j.jsx)(m,{className:`editor-base__icon`}),(0,j.jsx)(`span`,{className:`editor-base__title`,children:l}),he]}),(0,j.jsx)(`div`,{className:`doc-editor__body`,children:b||c?(0,j.jsxs)(j.Fragment,{children:[ge,Se,(0,j.jsx)(om,{editor:E})]}):(0,j.jsx)(`div`,{className:`doc-editor__preview`,onClick:ce,role:`button`,tabIndex:0,onKeyDown:e=>(e.key===`Enter`||e.key===` `)&&ce(),children:(0,j.jsx)(DC,{content:Ce})})})]})}function AC(){(0,A.useEffect)(()=>{function e(e){e.data?.type===`vnc-clipboard`&&typeof e.data.text==`string`&&T(e.data.text)}window.addEventListener(`message`,e);let t=null;return typeof BroadcastChannel<`u`&&(t=new BroadcastChannel(`maxy-vnc-clipboard`),t.onmessage=e=>{typeof e.data==`string`&&T(e.data)}),()=>{window.removeEventListener(`message`,e),t?.close()}},[])}function jC(e){(0,A.useEffect)(()=>{let t=Date.now(),n=`/api/admin/browser-iframe/event`,r={brand:p.productName,surface:e};return fetch(n,{method:`POST`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},body:JSON.stringify({event:`mount`,...r}),keepalive:!0}).catch(()=>{}),()=>{let e=JSON.stringify({event:`unmount`,durationMs:Date.now()-t,...r});try{let t=new Blob([e],{type:`application/json`});navigator.sendBeacon(n,t)||fetch(n,{method:`POST`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},body:e,keepalive:!0}).catch(()=>{})}catch{}}},[e])}var MC=`maxy-vnc-overlay-popout`;function NC(e){let[t,n]=(0,A.useState)(!1),r=(0,A.useRef)(null),i=(0,A.useRef)(null),a=(0,A.useCallback)(()=>{i.current&&=(clearInterval(i.current),null),r.current&&!r.current.closed&&r.current.close(),r.current=null,n(!1)},[]),o=(0,A.useCallback)(()=>{let t=`/vnc-popout.html?title=${encodeURIComponent(p.productName)}`,o=window.open(t,MC,`width=1024,height=768`);o&&(r.current=o,n(!0),i.current=setInterval(()=>{r.current?.closed&&(a(),e?.())},500))},[a,e]);return(0,A.useEffect)(()=>()=>a(),[a]),{poppedOut:t,popout:o,cleanupPopout:a}}var PC=(0,A.forwardRef)(function({onClose:e},t){AC(),jC(`overlay`);let{poppedOut:n,popout:r,cleanupPopout:i}=NC(e);return(0,A.useImperativeHandle)(t,()=>({popout:r}),[r]),n?(0,j.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,j.jsx)(c,{className:`browser-viewer__icon`}),(0,j.jsx)(`span`,{className:`browser-viewer__title`,children:p.productName}),(0,j.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:xe,onClick:()=>i(),"aria-label":`Pop back in`}),e&&(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:y,onClick:()=>{i(),e()},"aria-label":`Close`})]}):(0,j.jsx)(`iframe`,{src:`/vnc-viewer.html`,className:`browser-surface__iframe`,title:p.productName})});function FC({onClose:e}){AC(),jC(`overlay`);let{poppedOut:t,popout:n,cleanupPopout:r}=NC(e),i=(0,A.useCallback)(()=>{r(),e()},[r,e]);(0,A.useEffect)(()=>{if(t)return;let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,i]);let a=CC({handlePopout:n,disabled:t});return t?(0,j.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,j.jsx)(c,{className:`browser-viewer__icon`}),(0,j.jsx)(`span`,{className:`browser-viewer__title`,children:p.productName}),(0,j.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:xe,onClick:()=>{r()},"aria-label":`Pop back in`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:y,onClick:i,"aria-label":`Close`})]}):(0,j.jsxs)(`div`,{className:`browser-viewer-fullscreen`,children:[(0,j.jsxs)(`div`,{className:`browser-viewer-fullscreen__bar`,...a,children:[(0,j.jsx)(c,{className:`browser-viewer__icon`}),(0,j.jsx)(`span`,{className:`browser-viewer-fullscreen__title`,children:p.productName}),(0,j.jsxs)(`div`,{className:`browser-viewer-fullscreen__actions`,children:[(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:v,onClick:n,"aria-label":`Pop out`}),(0,j.jsx)(D,{variant:`ghost`,size:`sm`,icon:y,onClick:i,"aria-label":`Close`})]})]}),(0,j.jsx)(`iframe`,{src:`/vnc-viewer.html`,className:`browser-viewer-fullscreen__iframe`,title:p.productName})]})}var IC=()=>{},LC=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function RC(e){return LC.test(e)?`uuid`:e.startsWith(`agent-template:`)?`agent-template`:`other`}var zC={"null-attachmentId":`No file backing this artefact.`,"non-text-mime":`Content type cannot be displayed inline.`,"containment-rejected":`File path failed containment check; cannot display.`,"missing-on-disk":`File is missing on disk.`};function BC({reason:e}){return(0,j.jsxs)(`div`,{className:`art-skip-banner`,role:`status`,children:[(0,j.jsx)(ge,{size:14}),(0,j.jsx)(`span`,{children:zC[e]})]})}function VC({src:e,name:t,docId:n}){let[r,i]=(0,A.useState)(!1),a=(0,A.useRef)(null),o=(0,A.useRef)(!1),s=(0,A.useRef)(!1),c=(0,A.useCallback)(e=>{s.current||(s.current=!0,console.info(`[admin-ui] artefact-pdf-fallback id=${n.slice(0,8)} reason=${e}`),i(!0))},[n]);(0,A.useEffect)(()=>{let e=setTimeout(()=>{o.current||c(`onload-timeout`)},3e3);return()=>clearTimeout(e)},[c]);let l=()=>{o.current=!0;try{let e=a.current?.contentDocument?.body;e&&e.children.length===0&&!e.textContent?.trim()&&c(`empty-body`)}catch{}};return r?(0,j.jsxs)(`a`,{className:`art-pdf-fallback`,href:e,download:t,children:[(0,j.jsx)(m,{size:20}),(0,j.jsxs)(`div`,{className:`art-pdf-fallback-text`,children:[(0,j.jsx)(`div`,{className:`art-pdf-fallback-name`,children:t}),(0,j.jsx)(`div`,{className:`art-pdf-fallback-hint`,children:`Your browser can't display this PDF inline. Click to download.`})]}),(0,j.jsx)(ne,{size:16})]}):(0,j.jsx)(`iframe`,{ref:a,className:`art-pdf`,src:e,title:t,"aria-label":`PDF preview of ${t}`,onLoad:l,onError:()=>c(`onerror`)})}var HC={browser:`Browser`,data:`Data`,graph:`Graph`};function UC({selection:e,trigger:t,cacheKey:n,onClose:r,onArtefactSaved:i,onSwapToGraph:a}){let o=e!==null,s=e?.surface??null,l=(0,A.useRef)(null),u=(0,A.useRef)(null),[d,f]=(0,A.useState)(null),p=e?.surface===`doc`?e.docId:null,m=[250,500,1e3,2e3],h=(0,A.useCallback)(e=>{if(!n||!p)return;let t={};try{t=JSON.parse(e)}catch{return}if(t.action!==`save`||typeof t.content!=`string`)return;f(null);let r=t.content,a=e=>{fetch(`/api/admin/sidebar-artefact-save?session_key=${encodeURIComponent(n)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:p,content:r})}).then(async t=>{if(t.status===503&&e<m.length){let t=m[e];console.info(`[admin-ui] artefact-save-retry docId=${p} attempt=${e+1} delayMs=${t} status=503`),setTimeout(()=>a(e+1),t);return}if(!t.ok){let n=(await t.json().catch(()=>({}))).error??`status ${t.status}`,r=t.status===503?`retries-exhausted`:`status-${t.status}`;f(`Save failed: ${n}`),console.error(`[admin-ui] artefact-save-failed docId=${p} status=${t.status} attempts=${e+1} source=${r} error="${n}"`);return}let n=await t.json();i?.(p,n.updatedAt,r)}).catch(t=>{let n=t instanceof Error?t.message:String(t);f(`Save failed: ${n}`),console.error(`[admin-ui] artefact-save-failed docId=${p} attempts=${e+1} error="${n}"`)})};a(0)},[n,p,i]);(0,A.useEffect)(()=>{f(null)},[p]),(0,A.useEffect)(()=>{let n=e?.surface===`doc`?e.docId:null,r=e?.surface===`graph`?e.focusNodeId??null:null,i=e?.surface??null,a=i===null?`closed`:`${i}:${n??`none`}:${r??`none`}`;if(a===l.current)return;let s=o?`open`:`closed`,c=o?t??`chat-link`:`toolbar-close`,u=i??l.current?.split(`:`)[0]??`doc`,d=n?` docIdShape=${RC(n)} docIdSample=${n.slice(0,8)}`:``;console.info(`[admin-ui] artefact-pane state=${s} docId=${n??`none`} trigger=${c} surface=${u}${d}`),l.current=a},[e,t,o]);let g=e?.surface===`doc`,b=g?(e.tag||e.name.split(`.`).pop()||`doc`).toUpperCase().slice(0,6):``,x=g?e.revision||`rev 1`:`live`,S=e&&e.surface!==`doc`?HC[e.surface]:``,ee=g?e.name:S;return(0,j.jsxs)(`aside`,{className:`artefact`,"data-open":o,"data-surface":s??`none`,children:[(0,j.jsxs)(`div`,{className:`art-head`,children:[(0,j.jsxs)(`div`,{className:`left`,children:[!g&&s===`browser`&&(0,j.jsx)(c,{size:14,className:`art-head-surface-icon`}),!g&&s===`data`&&(0,j.jsx)(_,{size:14,className:`art-head-surface-icon`}),!g&&s===`graph`&&(0,j.jsx)(C,{size:14,className:`art-head-surface-icon`}),(0,j.jsx)(`span`,{className:`file-name`,children:ee}),g&&(0,j.jsx)(`span`,{className:`file-tag`,children:b})]}),(0,j.jsxs)(`div`,{className:`right`,children:[g&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`button`,{className:`icon-btn`,title:`Copy`,type:`button`,"aria-label":`Copy`,onClick:()=>{T(e.content)},children:(0,j.jsx)(k,{size:14})}),(0,j.jsx)(`button`,{className:`icon-btn`,title:`Refresh`,type:`button`,"aria-label":`Refresh`,children:(0,j.jsx)(w,{size:14})})]}),s===`browser`&&(0,j.jsx)(`button`,{className:`icon-btn`,title:`Pop out`,type:`button`,"aria-label":`Pop out`,onClick:()=>u.current?.popout(),children:(0,j.jsx)(v,{size:14})}),o&&(0,j.jsx)(`button`,{className:`icon-btn`,title:`Close`,type:`button`,"aria-label":`Close`,onClick:r,children:(0,j.jsx)(y,{size:14})})]})]}),(0,j.jsxs)(`div`,{className:`art-toolbar`,children:[(0,j.jsxs)(`span`,{className:`seg`,children:[(0,j.jsx)(`span`,{className:`bullet`}),(0,j.jsx)(`strong`,{children:g?`Artefact`:S})]}),(0,j.jsx)(`span`,{className:`right-meta`,children:x})]}),(0,j.jsxs)(`div`,{className:`art-body`,"data-surface":s??`none`,children:[g&&(()=>{let t=e.editable!==!1,r=e.skipReason??null,i=(e.mimeType??``).startsWith(`application/pdf`);if(r)return(0,j.jsx)(BC,{reason:r});if(i&&n){let t=`/api/admin/sidebar-artefact-content?id=${encodeURIComponent(e.docId)}&session_key=${encodeURIComponent(n)}`;return(0,j.jsx)(VC,{src:t,name:e.name,docId:e.docId},t)}return(0,j.jsxs)(j.Fragment,{children:[d&&(0,j.jsx)(`div`,{className:`art-save-error`,role:`alert`,children:d}),(0,j.jsx)(kC,{data:{title:e.name,content:e.content,readOnly:!t},onSubmit:t?h:IC,submitted:!1})]})})(),s===`browser`&&(0,j.jsx)(PC,{ref:u,onClose:r}),s===`data`&&n&&(0,j.jsx)(re,{cacheKey:n,onOpenInGraph:a?e=>{let t=ie(e.properties);a(e.nodeId,t??e.labels[0]??null)}:void 0}),e?.surface===`graph`&&n&&(0,j.jsx)(te,{cacheKey:n,initialFocus:e.focusNodeId?{nodeId:e.focusNodeId,nodeLabel:e.focusNodeLabel??null}:null,initialLabels:e.initialLabels??null})]}),(0,j.jsxs)(`div`,{className:`art-foot`,children:[(0,j.jsx)(`span`,{className:`left`,children:x}),(0,j.jsx)(`span`,{className:`right in-sync`,children:`in sync`})]})]})}function WC(e){if(e<60)return`${e}s`;let t=Math.floor(e/60),n=e%60;return n>0?`${t}m ${n}s`:`${t}m`}function GC(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function KC(e){let{show:t,onClose:n,claudeInfo:r,messages:i,sessionElapsed:a,conversationId:o,cacheKey:s}=e,[c,l]=(0,A.useState)(null);if(!t)return null;let u=i.flatMap(e=>e.events?.filter(e=>e.type===`usage`)??[]),d=u.at(-1),f=d?.peak_request_pct==null?d?.context_window?Math.round((d.input_tokens+d.cache_creation_tokens+d.cache_read_tokens)/d.context_window*100):0:Math.round(d.peak_request_pct*100),p=u.reduce((e,t)=>e+t.input_tokens+t.cache_creation_tokens+t.cache_read_tokens+t.output_tokens,0),m=i.flatMap(e=>e.events?.filter(e=>e.type===`rate_limit`)??[]).at(-1),h=u.reduce((e,t)=>e+(t.total_cost_usd??0),0),g=r?.account?.subscriptionType,_=e=>{let t=e*1e3-Date.now();if(t<=0)return`now`;let n=Math.floor(t/36e5),r=Math.floor(t%36e5/6e4);return n>0?`${n}h ${r}m`:`${r}m`};return(0,j.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,j.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,j.jsxs)(`div`,{className:`claude-info-header`,children:[(0,j.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`claude-info-icon`}),(0,j.jsx)(`span`,{children:`Claude Code`}),(0,j.jsx)(`button`,{className:`claude-info-close`,onClick:n,"aria-label":`Close`,children:`✕`})]}),(0,j.jsxs)(`div`,{className:`claude-info-section`,children:[(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Version`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:r?r.version:`…`})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Email`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:r?.account?.email??`…`})]})]}),(g||m||h>0)&&(0,j.jsxs)(`div`,{className:`claude-info-section`,children:[g&&(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Plan`}),(0,j.jsx)(`span`,{className:`claude-info-value`,style:{textTransform:`capitalize`},children:g})]}),m&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Usage`}),(0,j.jsxs)(`span`,{className:`claude-info-value`,children:[Math.round(m.utilization*100),`%`]})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Resets in`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:_(m.resetsAt)})]}),m.isUsingOverage&&(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Overage`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:`Active`})]})]}),h>0&&(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Session cost`}),(0,j.jsxs)(`span`,{className:`claude-info-value`,children:[`$`,h<.01?h.toFixed(4):h.toFixed(2)]})]})]}),(0,j.jsxs)(`div`,{className:`claude-info-section`,children:[(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Model`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:r?.model??`…`})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Context used`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:f>0?`${f}%`:`—`})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Tokens`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:p>0?GC(p):`—`})]}),(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Session`}),(0,j.jsx)(`span`,{className:`claude-info-value`,children:WC(a)})]}),(o||s)&&(()=>{let e=o??s??``;return(0,j.jsxs)(`div`,{className:`claude-info-row`,children:[(0,j.jsx)(`span`,{className:`claude-info-label`,children:`Session`}),(0,j.jsx)(`button`,{type:`button`,className:`claude-info-value claude-info-id-copy`,title:`${e} (${o?`flushed`:`pre-flush`}) — click to copy`,onClick:async()=>{l(await T(e)?`copied`:`failed`),setTimeout(()=>l(null),1200)},children:c===`copied`?`copied ✓`:c===`failed`?`copy failed ✕`:`${e.slice(0,8)}…`})]})})()]})]})})}var qC=1080;function JC(){let e=ue(),[t,n]=(0,A.useState)(()=>typeof window>`u`?null:new URLSearchParams(window.location.search).get(`sessionId`)),[r,i]=(0,A.useState)(null),[a,o]=(0,A.useState)(null),[s,c]=(0,A.useState)(!1),[l,u]=(0,A.useState)(!1),[d,f]=(0,A.useState)(!1),[p,m]=(0,A.useState)(()=>typeof window<`u`&&window.matchMedia(`(min-width: ${qC}px)`).matches);(0,A.useEffect)(()=>{let e=window.matchMedia(`(min-width: ${qC}px)`),t=e=>m(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,A.useEffect)(()=>{if(!d)return;let e=e=>{e.key===`Escape`&&f(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[d]);let g=(0,A.useCallback)(async()=>{if(l)return;u(!0);let e=p?`artefact`:`overlay`;try{let t=await(await fetch(`/api/admin/browser/launch`,{method:`POST`})).json().catch(()=>({ok:!1,error:`Invalid response`}));if(!t.ok)throw Error(t.error??`Failed to launch browser`);p?(i({surface:`browser`}),o(`header-menu`)):c(!0),console.info(`[admin-ui] header-menu-browser-launch outcome=ok viewport=${e}`)}catch(t){console.error(`[admin-ui] header-menu-browser-launch outcome=error viewport=${e} error="${t instanceof Error?t.message:String(t)}"`),window.alert(t instanceof Error?t.message:`Failed to launch browser`)}finally{u(!1)}},[l,p]),_=(0,A.useCallback)(async()=>{let t=e.claudeInfo!=null;if(f(!0),t){console.info(`[admin-ui] claude-info-open cached=true ms=0`);return}let n=Date.now();try{let t=await fetch(`/api/admin/claude-info`);if(t.ok){let n=await t.json();e.setClaudeInfo(n)}console.info(`[admin-ui] claude-info-open cached=false ms=${Date.now()-n}`)}catch(e){console.error(`[admin-ui] claude-info-fetch-failed ms=${Date.now()-n} error="${e instanceof Error?e.message:String(e)}"`)}},[e]),v=(0,A.useCallback)(()=>{i(null),o(null)},[]);if(e.appState===`loading`)return(0,j.jsx)(`div`,{className:`connect-page`});if(e.appState===`set-pin`)return(0,j.jsx)(Ee,{pin:e.pin,setPin:e.setPin,showPin:e.showPin,setShowPin:e.setShowPin,pinLoading:e.pinLoading,pinError:e.pinError,pinInputRef:e.pinInputRef,setPinFormRef:e.setPinFormRef,onSubmit:e.handleSetPin,operatorName:e.operatorName,setOperatorName:e.setOperatorName});if(e.appState===`connect-claude`)return(0,j.jsx)(ke,{authPolling:e.authPolling,setAuthPolling:e.setAuthPolling,authLoading:e.authLoading,setAuthLoading:e.setAuthLoading,pinError:e.pinError,setPinError:e.setPinError,setAppState:e.setAppState});if(e.appState===`enter-pin`)return(0,j.jsx)(De,{pin:e.pin,setPin:e.setPin,showPin:e.showPin,setShowPin:e.setShowPin,pinLoading:e.pinLoading,pinError:e.pinError,pinInputRef:e.pinInputRef,onSubmit:e.handleLogin,onChangePin:e.handleChangePin,remoteAuthEnabled:e.remoteAuthEnabled,onSignOutRemote:e.handleLogout});if(e.appState===`account-picker`)return(0,j.jsx)(Oe,{accounts:e.accounts,loading:e.accountPickerLoading,error:e.pinError,onSelect:e.handleAccountSelect});let y=r!==null;return(0,j.jsx)(h,{cacheKey:e.cacheKey,businessName:e.businessName,conversationId:e.conversationId,onLaunchBrowser:g,onLogout:e.handleLogout,browserLaunching:l,userName:e.userName,userAvatar:e.userAvatar,role:e.role,selectedSessionId:t,onSelectSession:n,dataArtefact:y?`open`:`closed`,footer:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(We,{onOpen:_}),s&&(0,j.jsx)(FC,{onClose:()=>c(!1)}),(0,j.jsx)(KC,{show:d,onClose:()=>f(!1),claudeInfo:e.claudeInfo,messages:[],sessionElapsed:0,conversationId:e.conversationId,cacheKey:e.cacheKey})]}),children:({sessionsState:i})=>(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(Pe,{}),t&&e.cacheKey?(0,j.jsx)(He,{sessionId:t,cacheKey:e.cacheKey,onRenamed:()=>i.refetch(),onClose:()=>n(null),recentsActions:{setSessions:i.setSessions,refetch:i.refetch},liveRow:i.sessions.find(e=>e.sessionId===t)},t):(0,j.jsx)(`main`,{}),y&&(0,j.jsx)(ze,{}),(0,j.jsx)(UC,{selection:r,trigger:a,cacheKey:e.cacheKey,onClose:v})]})})}(0,ae.createRoot)(document.getElementById(`root`)).render((0,j.jsx)(JC,{}));
|