@rubytech/create-realagent 1.0.869 → 1.0.871
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js +83 -91
- package/payload/platform/plugins/admin/mcp/dist/__tests__/public-hostname.test.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/index.js +7 -10
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.d.ts +5 -11
- package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.d.ts.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js +66 -47
- package/payload/platform/plugins/admin/mcp/dist/lib/public-hostname.js.map +1 -1
- package/payload/platform/plugins/admin/skills/publish-site/SKILL.md +2 -2
- package/payload/platform/plugins/docs/references/internals.md +1 -1
- package/payload/platform/scripts/__tests__/admin-persist-audit.test.ts +182 -0
- package/payload/platform/scripts/admin-persist-audit.ts +43 -17
- package/payload/server/chunk-5U36PKG4.js +11326 -0
- package/payload/server/chunk-NDEQBCVI.js +1160 -0
- package/payload/server/client-pool-XAEDMS5D.js +34 -0
- package/payload/server/maxy-edge.js +2 -2
- package/payload/server/public/assets/{Checkbox-B9hff9s8.js → Checkbox-CDffo5el.js} +1 -1
- package/payload/server/public/assets/{admin-Cpi6L_g7.js → admin-BSdV45P5.js} +2 -2
- package/payload/server/public/assets/data-vFVtOwuC.js +1 -0
- package/payload/server/public/assets/{graph-labels-ChinGFwI.js → graph-labels-C-KsUF_B.js} +1 -1
- package/payload/server/public/assets/graph-q802cxLY.js +1 -0
- package/payload/server/public/assets/{jsx-runtime-CVA1ZrPS.css → jsx-runtime-C1hGBzVx.css} +1 -1
- package/payload/server/public/assets/{page-OVrxtgOZ.js → page-B5b7tyz-.js} +1 -1
- package/payload/server/public/assets/{page-DqPf65sS.js → page-DsW7P98i.js} +1 -1
- package/payload/server/public/assets/{public-CJN5KAiK.js → public-BkNXx-3G.js} +1 -1
- package/payload/server/public/assets/{useVoiceRecorder-DyVx7e7a.js → useVoiceRecorder-DCVSlfUk.js} +1 -1
- package/payload/server/public/data.html +5 -5
- package/payload/server/public/graph.html +6 -6
- package/payload/server/public/index.html +8 -8
- package/payload/server/public/public.html +5 -5
- package/payload/server/server.js +38 -18
- package/payload/server/public/assets/data-Da6iYRW1.js +0 -1
- package/payload/server/public/assets/graph-BHq-JYwV.js +0 -1
- /package/payload/server/public/assets/{jsx-runtime-nxP_2eNo.js → jsx-runtime-DFrHsKhm.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e,t}from"./chunk-DD-I1_y5.js";import{a as n,i as r,n as i,o as a,r as o,t as s}from"./jsx-runtime-nxP_2eNo.js";import{A as c,C as l,D as u,E as d,F as f,I as p,L as m,M as h,N as g,O as _,P as v,S as y,T as b,_ as x,a as S,c as C,d as w,f as T,g as E,h as D,i as O,j as k,k as A,l as j,m as M,n as N,o as P,p as ee,r as te,s as F,t as I,u as ne,v as L,w as re,x as ie,y as R}from"./useVoiceRecorder-DyVx7e7a.js";import{a as z,i as B,o as ae,r as oe,t as se}from"./page-DqPf65sS.js";import{a as ce,i as le,n as ue,r as de}from"./page-OVrxtgOZ.js";import{c as fe,d as pe,l as me,o as he,p as ge,s as _e,u as ve}from"./graph-labels-ChinGFwI.js";import{t as ye}from"./Checkbox-B9hff9s8.js";var be=r(),xe=o(`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`}]]),Se=o(`asterisk`,[[`path`,{d:`M12 6v12`,key:`1vza4d`}],[`path`,{d:`M17.196 9 6.804 15`,key:`1ah31z`}],[`path`,{d:`m6.804 9 10.392 6`,key:`1b6pxd`}]]),Ce=o(`bold`,[[`path`,{d:`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`,key:`mg9rjx`}]]),we=o(`bot-off`,[[`path`,{d:`M13.67 8H18a2 2 0 0 1 2 2v4.33`,key:`7az073`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M22 22 2 2`,key:`1r8tn9`}],[`path`,{d:`M8 8H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 1.414-.586`,key:`s09a7a`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}],[`path`,{d:`M9.67 4H12v2.33`,key:`110xot`}]]),Te=o(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),V=o(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),Ee=o(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),De=o(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),H=o(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),Oe=o(`circle-plus`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),ke=o(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),Ae=o(`clipboard-plus`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M9 14h6`,key:`159ibu`}],[`path`,{d:`M12 17v-6`,key:`1y8rbf`}]]),je=o(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),Me=o(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),Ne=o(`database-zap`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`,key:`14ibmq`}],[`path`,{d:`M21 5V8`,key:`1marbg`}],[`path`,{d:`M21 12L18 17H22L19 22`,key:`zafso`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`,key:`1y4wr8`}]]),Pe=o(`database-search`,[[`path`,{d:`M21 11.693V5`,key:`175m1t`}],[`path`,{d:`m22 22-1.875-1.875`,key:`13zax7`}],[`path`,{d:`M3 12a9 3 0 0 0 8.697 2.998`,key:`151u9p`}],[`path`,{d:`M3 5v14a9 3 0 0 0 9.28 2.999`,key:`q2rs2p`}],[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}]]),Fe=o(`dot`,[[`circle`,{cx:`12.1`,cy:`12.1`,r:`1`,key:`18d7e5`}]]),Ie=o(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),Le=o(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),Re=o(`file-archive`,[[`path`,{d:`M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5`,key:`4pqfef`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 12v-1`,key:`1ej8lb`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`path`,{d:`M8 7V6`,key:`1nbb54`}],[`circle`,{cx:`8`,cy:`20`,r:`2`,key:`ckkr5m`}]]),ze=o(`file-down`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 18v-6`,key:`17g6i2`}],[`path`,{d:`m9 15 3 3 3-3`,key:`1npd3o`}]]),Be=o(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ve=o(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),He=o(`file-pen-line`,[[`path`,{d:`m18.226 5.226-2.52-2.52A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-.351`,key:`1k2beg`}],[`path`,{d:`M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z`,key:`2t3380`}],[`path`,{d:`M8 18h1`,key:`13wk12`}]]),Ue=o(`file-plus-corner`,[[`path`,{d:`M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35`,key:`17jvcc`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M14 19h6`,key:`bvotb8`}],[`path`,{d:`M17 16v6`,key:`18yu1i`}]]),We=o(`git-branch`,[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]),Ge=o(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),Ke=o(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),qe=o(`italic`,[[`line`,{x1:`19`,x2:`10`,y1:`4`,y2:`4`,key:`15jd3p`}],[`line`,{x1:`14`,x2:`5`,y1:`20`,y2:`20`,key:`bu0au3`}],[`line`,{x1:`15`,x2:`9`,y1:`4`,y2:`20`,key:`uljnxc`}]]),Je=o(`lightbulb-off`,[[`path`,{d:`M16.8 11.2c.8-.9 1.2-2 1.2-3.2a6 6 0 0 0-9.3-5`,key:`1fkcox`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M6.3 6.3a4.67 4.67 0 0 0 1.2 5.2c.7.7 1.3 1.5 1.5 2.5`,key:`10m8kw`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]),Ye=o(`lightbulb`,[[`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`,key:`1gvzjb`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]),Xe=o(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),Ze=o(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),Qe=o(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),$e=o(`loader`,[[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m16.2 7.8 2.9-2.9`,key:`r700ao`}],[`path`,{d:`M18 12h4`,key:`wj9ykh`}],[`path`,{d:`m16.2 16.2 2.9 2.9`,key:`1bxg5t`}],[`path`,{d:`M12 18v4`,key:`jadmvz`}],[`path`,{d:`m4.9 19.1 2.9-2.9`,key:`bwix9q`}],[`path`,{d:`M2 12h4`,key:`j09sii`}],[`path`,{d:`m4.9 4.9 2.9 2.9`,key:`giyufr`}]]),et=o(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),tt=o(`message-circle`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}]]),nt=o(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),rt=o(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),it=o(`message-square`,[[`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`}]]),at=o(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),ot=o(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),st=o(`monitor-smartphone`,[[`path`,{d:`M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8`,key:`10dyio`}],[`path`,{d:`M10 19v-3.96 3.15`,key:`1irgej`}],[`path`,{d:`M7 19h5`,key:`qswx4l`}],[`rect`,{width:`6`,height:`10`,x:`16`,y:`12`,rx:`2`,key:`1egngj`}]]),ct=o(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),lt=o(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),ut=o(`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`}]]),dt=o(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),ft=o(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),pt=o(`sparkle`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}]]),mt=o(`square-arrow-down-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`m16 8-8 8`,key:`166keh`}],[`path`,{d:`M16 16H8V8`,key:`1w2ppm`}]]),ht=o(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),gt=o(`star`,[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]),_t=o(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),vt=o(`user-plus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),yt=o(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),bt=o(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),xt=o(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),U=e(a(),1);function St(){(0,U.useEffect)(()=>{function e(e){e.data?.type===`vnc-clipboard`&&typeof e.data.text==`string`&&re(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`&&re(e.data)}),()=>{window.removeEventListener(`message`,e),t?.close()}},[])}function Ct(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 wt(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function Tt(){let[e,t]=(0,U.useState)(0),n=(0,U.useRef)(0),r=(0,U.useRef)(0),i=(0,U.useRef)(null),[a,o]=(0,U.useState)(0),s=(0,U.useRef)(0),c=(0,U.useRef)(null),l=(0,U.useRef)(null);return{elapsedSeconds:e,sessionElapsed:a,sessionTurnStart:l,pausedElapsedRef:r,startElapsedTimer:(0,U.useCallback)((e=0)=>{l.current=Date.now(),c.current=setInterval(()=>{let e=s.current+(Date.now()-(l.current??Date.now()));o(Math.floor(e/1e3))},1e3),n.current=e,t(e),i.current=setInterval(()=>{n.current+=1,t(n.current)},1e3)},[]),stopElapsedTimer:(0,U.useCallback)(e=>{i.current&&=(clearInterval(i.current),null),c.current&&=(clearInterval(c.current),null),l.current&&(s.current+=Date.now()-l.current,l.current=null,o(Math.floor(s.current/1e3))),r.current=n.current;let t=n.current;e(e=>{let n=[...e].map((e,t)=>({m:e,i:t})).reverse().find(({m:e})=>e.role===`maxy`)?.i;if(n===void 0)return e;let r=[...e];return r[n]={...r[n],elapsedSeconds:t},r})},[]),resetTimerState:(0,U.useCallback)(()=>{s.current=0,o(0)},[])}}var Et=new Set([`action-list`,`document-editor`,`rich-content-editor`,`grid-editor`]),Dt=`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`,Ot=new Set(Dt.split(`,`).filter(e=>!e.startsWith(`.`))),kt=50*1024*1024;function At(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}function jt(){let[e,t]=(0,U.useState)(`loading`),[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(``),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(!1),[g,_]=(0,U.useState)(!1),[v,y]=(0,U.useState)(!1),[b,x]=(0,U.useState)(null),[S,C]=(0,U.useState)(null),[w,T]=(0,U.useState)(void 0),[E,D]=(0,U.useState)(void 0),[O,k]=(0,U.useState)(null),[A,j]=(0,U.useState)(void 0),[M,N]=(0,U.useState)(null),[P,ee]=(0,U.useState)(null),[te,F]=(0,U.useState)([]),[I,ne]=(0,U.useState)(!1),[L,re]=(0,U.useState)(void 0),ie=(0,U.useRef)(void 0),R=(0,U.useRef)(null),z=(0,U.useRef)(null),B=(0,U.useRef)(null);(0,U.useEffect)(()=>{async function e(){let e=null;try{e=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!e)return!1;try{let n=await fetch(`/api/admin/session?session_key=${encodeURIComponent(e)}`);if(n.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}return!1}if(!n.ok)return!1;let r=await n.json();x(r.session_key),ee(r.conversationId??null),T(r.onboardingComplete),D(r.businessName),k(r.role??null),j(r.userName===void 0?null:r.userName),N(r.avatar??null);let i=At(r.thinkingView);return ie.current=i,re(i),t(`chat`),!0}catch(e){return console.error(`[admin] session restore failed:`,e),!1}}async function n(r=2){try{let i=await fetch(`/api/health`);if(!i.ok){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check returned ${i.status} after retries`),t(`set-pin`);return}let a=await i.json();if(!a.pin_configured){t(`set-pin`);return}if(a.onboarding_complete===!1){t(`onboarding-choice`);return}if(!a.claude_authenticated){t(`connect-claude`);return}if(await e())return;t(`enter-pin`)}catch(e){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check failed:`,e),t(`set-pin`)}}n()},[]),(0,U.useEffect)(()=>{e===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&C(e)}).catch(()=>{})},[e]),(0,U.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,U.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 ae(e,n){p(!0);try{let i=await fetch(`/api/admin/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:e,...n?{accountId:n}:{}})});if(!i.ok){l((await i.json().catch(()=>({}))).error||`Invalid PIN`);return}let o=await i.json();if(o.accounts&&!o.session_key){console.log(`[admin] account picker shown: userId=${o.userId} accountCount=${o.accounts.length}`),F(o.accounts),t(`account-picker`);return}x(o.session_key),ee(o.conversationId??null),T(o.onboardingComplete??!0),D(o.businessName),k(o.role??null),j(o.userName===void 0?null:o.userName),N(o.avatar??null);let s=At(o.thinkingView);if(ie.current=s,re(s),n)try{sessionStorage.setItem(`maxy-account-id`,n)}catch{}try{sessionStorage.setItem(`maxy-admin-session-key`,o.session_key)}catch{}r(``),a(``),t(`chat`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1),ne(!1)}}let oe=(0,U.useCallback)(async e=>{if(e.preventDefault(),f)return;l(``);let s=o.trim();if(!s){l(`Please enter your name.`);return}if(n.length<4){l(`PIN must be at least 4 characters.`);return}if(n!==i){l(`PINs do not match.`);return}let c=n;p(!0);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:c,name:s})});if(!e.ok){let n=await e.json().catch(()=>({}));if(e.status===409){console.log(`[admin] PIN already configured — re-checking health`);try{let e=await fetch(`/api/health`);if(e.ok){let r=await e.json();r.pin_configured&&r.claude_authenticated?t(`enter-pin`):r.pin_configured?t(`connect-claude`):l(n.error||`Failed to set PIN.`)}else t(`enter-pin`)}catch{t(`enter-pin`)}return}l(n.error||`Failed to set PIN.`);return}let n=await fetch(`/api/health`),i=n.ok?await n.json():null;if(i?.onboarding_complete===!1){r(``),a(``),t(`onboarding-choice`);return}if(i?.claude_authenticated){await ae(c);return}r(``),a(``),t(`onboarding-choice`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1)}},[n,i,f,o]),se=(0,U.useCallback)(async e=>{e.preventDefault(),l(``),await ae(n)},[n]),ce=(0,U.useCallback)(async()=>{y(!0),await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`logout`})}),x(null),k(null),j(void 0),N(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)},[]),le=(0,U.useCallback)(()=>{x(null),k(null),j(void 0),N(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}r(``),a(``),l(``),t(`enter-pin`)},[]);return{appState:e,setAppState:t,pin:n,setPin:r,confirmPin:i,setConfirmPin:a,operatorName:o,setOperatorName:s,pinError:c,setPinError:l,showPin:u,setShowPin:d,pinLoading:f,authPolling:m,setAuthPolling:h,authLoading:g,setAuthLoading:_,disconnecting:v,sessionKey:b,setSessionKey:x,claudeInfo:S,setClaudeInfo:C,onboardingComplete:w,setOnboardingComplete:T,businessName:E,role:O,userName:A,userAvatar:M,conversationId:P,setConversationId:ee,accounts:te,accountPickerLoading:I,expandAll:L,setExpandAll:re,expandAllDefaultRef:ie,pinInputRef:R,confirmPinInputRef:z,setPinFormRef:B,handleSetPin:oe,handleLogin:se,handleAccountSelect:(0,U.useCallback)(async e=>{ne(!0),l(``),await ae(n,e)},[n]),handleDisconnect:ce,handleLogout:le,handleChangePin:(0,U.useCallback)(async()=>{if(!n){l(`Enter your current PIN first.`);return}p(!0),l(``);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({currentPin:n})});if(!e.ok){l((await e.json().catch(()=>({error:`Incorrect PIN.`}))).error||`Incorrect PIN.`);return}r(``),a(``),l(``),t(`set-pin`)}catch(e){console.error(`[admin-auth] change pin failed:`,e),l(e instanceof Error?e.message:String(e))}finally{p(!1)}},[n])}}var Mt={active:!1,heldMessage:null,existingTopic:null,confidence:0};function Nt(){let[e,t]=(0,U.useState)(Mt),n=(0,U.useRef)(!1);return{offer:e,handleOfferEvent:(0,U.useCallback)((e,n,r)=>{t({active:!0,heldMessage:e,existingTopic:n,confidence:r})},[]),consumeOffer:(0,U.useCallback)(r=>{if(!e.active||!e.heldMessage||n.current)return null;n.current=!0;let i={heldMessage:e.heldMessage,action:r};return t(Mt),setTimeout(()=>{n.current=!1},0),i},[e]),dismissAndGetHeldMessage:(0,U.useCallback)(()=>{if(!e.active||!e.heldMessage)return null;let n=e.heldMessage;return t(Mt),n},[e])}}async function Pt(e,t){try{await fetch(`/api/_client-error`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:`event`,source:e,...t})})}catch{}}var Ft=`maxy-admin-draft`,It=`maxy-admin-session-key`,Lt=[500,1e3,2e3,4e3,8e3,1e4,1e4],Rt=3e4,zt=2e4,Bt=1e3;function Vt(e){if(e instanceof TypeError){let t=e.message||``;return/network|failed to fetch|load failed/i.test(t)}return!1}async function Ht(e=2e3){try{return(await fetch(`/api/health`,{cache:`no-store`,signal:AbortSignal.timeout(e)})).ok}catch{return!1}}async function Ut(){let e=Date.now()+Rt;for(let t=0;t<Lt.length;t++){let n=Lt[t];if(await new Promise(e=>setTimeout(e,n)),Date.now()>e)return!1;if(await Ht(3e3))return!0}return!1}async function Wt(){let e=Date.now()+zt,t=!1;for(;Date.now()<e;)if(await new Promise(e=>setTimeout(e,Bt)),!await Ht(1500)){t=!0;break}return t?Ut():(Pt(`post-restart-resume`,{phase:`brand-stayed-up`,boundMs:zt}),!0)}function Gt(e){let{sessionKey:t,setSessionKey:n,setAppState:r,conversationId:i,setConversationId:a,startElapsedTimer:o,stopElapsedTimer:s,resetTimerState:c,pausedElapsedRef:u,expandAllDefaultRef:d,setExpandAll:f,getPendingFiles:p,clearPendingFiles:m,inputRef:h}=e,[g,_]=(0,U.useState)([]),[v,y]=(0,U.useState)(()=>{try{return localStorage.getItem(Ft)??``}catch{return``}}),b=(0,U.useRef)(null),[x,S]=(0,U.useState)(!1),[C,w]=(0,U.useState)([]),T=(0,U.useRef)([]),[E,D]=(0,U.useState)(!1),[O,k]=(0,U.useState)(!1),A=(0,U.useRef)(!1),[j,M]=(0,U.useState)(0),[N,P]=(0,U.useState)(!1),ee=(0,U.useRef)(null),te=(0,U.useRef)(()=>{}),[F,I]=(0,U.useState)(new Set),ne=Nt();function L(e){T.current=e,w(e)}let re=(0,U.useRef)(t);re.current=t;let ie=(0,U.useRef)(i);ie.current=i;let R=(0,U.useRef)(null),z=(0,U.useRef)(null),B=(0,U.useCallback)(e=>{if(z.current)return z.current;let t=Date.now();Pt(`post-restart-resume`,{phase:`start`,trigger:e});let n=(async()=>{if(!(e===`form-armed`?await Wt():await Ut())){Pt(`post-restart-resume`,{phase:`health-timeout`,trigger:e,durationMs:Date.now()-t});return}let n=re.current,r=ie.current;if(!n||!r){Pt(`post-restart-resume`,{phase:`skip-no-session`,trigger:e,hasSk:!!n,hasCid:!!r});return}try{let t=await fetch(`/api/admin/sessions/${encodeURIComponent(r)}/resume?session_key=${encodeURIComponent(n)}`,{method:`POST`});if(!t.ok){Pt(`post-restart-resume`,{phase:`resume-rejected`,trigger:e,status:t.status});return}}catch(t){Pt(`post-restart-resume`,{phase:`resume-error`,trigger:e,error:t instanceof Error?t.name:`unknown`});return}let i=R.current;i?(R.current=null,te.current(i.message,void 0,void 0,!0),Pt(`post-restart-resume`,{phase:`marker-replayed`,trigger:e,actionId:i.actionId,durationMs:Date.now()-t})):Pt(`post-restart-resume`,{phase:`resumed`,trigger:e,durationMs:Date.now()-t})})().finally(()=>{z.current===n&&(z.current=null)});return z.current=n,n},[]);(0,U.useEffect)(()=>{function e(e){let t=e.detail,n=t?.actionId,r=t?.message;if(typeof n!=`string`||n.length===0||typeof r!=`string`||r.length===0){Pt(`post-restart-resume`,{phase:`event-bad-payload`,actionIdType:typeof n,messageType:typeof r});return}R.current={actionId:n,message:r,firedAt:Date.now()},B(`form-armed`)}return window.addEventListener(`admin-chat:post-restart-resume`,e),()=>{window.removeEventListener(`admin-chat:post-restart-resume`,e)}},[B]),(0,U.useEffect)(()=>(b.current=setTimeout(()=>{try{v?localStorage.setItem(Ft,v):localStorage.removeItem(Ft)}catch{}},300),()=>{b.current&&clearTimeout(b.current)}),[v]);function ae(){b.current&&clearTimeout(b.current);try{localStorage.removeItem(Ft)}catch{}}function oe(e){ee.current?.abort(),P(e),t&&fetch(`/api/admin/chat/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_key:t})}).catch(()=>{})}async function se(e){if(x||!t)return;P(!1),o(),S(!0);let i=new AbortController;ee.current=i,_([{role:`maxy`,events:[],timestamp:Date.now()}]);try{let o=await fetch(`/api/admin/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:e,session_key:t}),signal:i.signal});if(!o.ok){if(o.status===401){(await o.json().catch(()=>({}))).error===`auth_expired`?r(`connect-claude`):(n(null),r(`enter-pin`));return}let e=await o.json().catch(()=>({}));throw Error(typeof e.error==`string`?e.error:`Request failed (${o.status})`)}let s=!1;for await(let e of l(o)){if(e.type===`session_reset`){A.current=!0,ee.current?.abort();break}if(e.type===`server_shutdown`){s=!0,_(e=>{let t=[...e];return t[0]?.role===`maxy`&&(t[0]={...t[0],events:[...t[0].events??[],{type:`text`,content:`Server is restarting — reconnect will happen automatically.`}]}),t});continue}if(e.type===`conversation_attributed`){let t=e.conversationId;typeof t==`string`&&t.length>0&&a(t);continue}if(e.type===`session_expired`){_(e=>{let t=[...e];return t[0]?.role===`maxy`&&(t[0]={...t[0],events:[...t[0].events??[],{type:`text`,content:`This conversation can no longer be resumed — its history is gone. The next message will start a fresh exchange under the same conversation thread.`}]}),t});continue}if(e.type===`done`||e.type===`session_init`)continue;if(e.type===`flush_error`){let t=e.reason,n={"missing-userId":`This session lost its user binding during a service restart — please refresh the page to sign back in.`,"writer-failed":`Could not save this conversation to the graph (database write failed). Please try again or refresh.`,"missing-session":`This session was not recognised by the server (likely cleared during a service restart). Please refresh the page.`}[t]??`Could not persist this turn (${t}). Please refresh the page.`;_(e=>{let t=[...e];return t[0]?.role===`maxy`&&(t[0]={...t[0],events:[...t[0].events??[],{type:`text`,content:n}]}),t});continue}if(e.type===`persist_ack`){if(e.outcome===`fail`){let t=e.reason,n=t?`Could not save this turn to the graph (${t}). The agent's response is rendered above; refresh-then-retry to repersist.`:`Could not save this turn to the graph. The agent's response is rendered above; refresh-then-retry to repersist.`;_(e=>{let t=[...e];return t[0]?.role===`maxy`&&(t[0]={...t[0],events:[...t[0].events??[],{type:`text`,content:n}]}),t})}continue}let t=e;_(e=>{let n=[...e];return n[0]?.role===`maxy`&&(n[0]={...n[0],events:[...n[0].events??[],t]}),n})}s&&B(`sse-shutdown`)}catch(e){if(!(e instanceof DOMException&&e.name===`AbortError`)){console.error(`[chat] admin sendMessage failed:`,e);let t=e instanceof Error?e.message:String(e),n=Vt(e);_(e=>{let r=[...e],i=r[0];if(i?.role===`maxy`){let e=n?`Server is restarting — reconnect will happen automatically.`:`Error: ${t}`;r[0]={...i,events:[...i.events??[],{type:`text`,content:e}]}}else r.push({role:`maxy`,events:[{type:`text`,content:`Error: ${t}`}],timestamp:Date.now()});return r}),n&&B(`sse-shutdown`)}}finally{s(_),S(!1),A.current?(A.current=!1,ce()):h.current?.focus()}}function ce(){_([]),k(!1),c(),I(new Set),f(d.current),L([]),y(``),ae(),m(),P(!1),M(e=>e+1)}function le(e){I(new Set(e))}async function ue(){if(x||E||!t){console.warn(`[chat] startNewConversation blocked: streaming=${x} compacting=${E} sessionKey=${!!t}`);return}ce();try{let e=await fetch(`/api/admin/sessions/new?session_key=${encodeURIComponent(t)}`,{method:`POST`});if(e.ok){let t=await e.json();if(t.session_key){n(t.session_key);try{sessionStorage.setItem(It,t.session_key)}catch{}he(t.session_key,`chat`)}t.conversationId&&a(t.conversationId)}else console.error(`[chat] new conversation failed: ${e.status}`),_([{role:`maxy`,events:[{type:`text`,content:`Could not start a new conversation. Please try again.`}],timestamp:Date.now()}])}catch(e){console.error(`[chat] new conversation failed:`,e),_([{role:`maxy`,events:[{type:`text`,content:`Could not start a new conversation. Please try again.`}],timestamp:Date.now()}])}}function de(e,n,r,i){try{let e=JSON.parse(r);if(e._lifecycle&&t){fetch(`/api/admin/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:r,session_key:t})}).catch(()=>{});return}if(e.action===`save`)return}catch{}Et.has(i??``)||I(t=>new Set(t).add(`${e}_${n}`)),pe(i?JSON.stringify({_componentDone:!0,component:i,payload:r}):r,void 0,void 0,!0)}let fe=(0,U.useMemo)(()=>{let e=new Set(F),t=[];for(let e=0;e<g.length;e++){let n=g[e];if(!(n.role!==`maxy`||!n.events))for(let e=0;e<n.events.length;e++){let r=n.events[e];r.type===`component`&&r.name===`browser-viewer`&&t.push({key:`${n.timestamp}_${e}`})}}for(let n=0;n<t.length-1;n++)e.add(t[n].key);return e},[g,F]);async function pe(e,i,c,d,f){if(!e&&(i??p()).length===0&&!N||x||!t)return;if(ne.offer.active&&!f){let t=ne.dismissAndGetHeldMessage();if(t)return L([...T.current,{text:e,files:i??[],timestamp:c??Date.now()}]),pe(t,void 0,void 0,!0,{topicChangeAction:`continue`,heldMessage:t})}let v=N;P(!1),k(!1);let b=i??[...p()],C=b.map(e=>({attachmentId:``,filename:e.name,mimeType:e.type})),w={role:`admin`,content:e,attachments:C.length>0?C:void 0,timestamp:c??Date.now(),hidden:d||void 0},E=g.length;_(e=>[...e,w]),y(``),ae(),i||m(),o(v?u.current:0),S(!0);let D=new AbortController;ee.current=D;let O={role:`maxy`,events:[],timestamp:Date.now()};_(e=>[...e,O]);let j=E+1;try{let i,o={},s=c?new Date(c).toISOString():void 0;if(b.length>0){let n=new FormData;n.append(`message`,e),n.append(`session_key`,t),s&&n.append(`timestamp`,s);for(let e of b)n.append(`attachments`,e);i=n}else i=JSON.stringify({message:e,session_key:t,...s&&{timestamp:s},...f&&{topicChangeAction:f.topicChangeAction,heldMessage:f.heldMessage}}),o={"Content-Type":`application/json`};z.current&&await z.current;let u=await fetch(`/api/admin/chat`,{method:`POST`,headers:o,body:i,signal:D.signal});if(!u.ok){if(u.status===401){(await u.json().catch(()=>({}))).error===`auth_expired`?r(`connect-claude`):(n(null),r(`enter-pin`));return}let e=await u.json().catch(()=>({}));throw Error(typeof e.error==`string`?e.error:`Request failed (${u.status})`)}let d=!1;for await(let e of l(u)){if(e.type===`session_reset`){A.current=!0;continue}if(e.type===`topic_change_offer`){ne.handleOfferEvent(e.heldMessage,e.existingTopic,e.confidence);continue}if(e.type===`conversation_attributed`){let t=e.conversationId;typeof t==`string`&&t.length>0&&a(t);continue}if(e.type===`session_expired`){_(e=>{let t=[...e],n=t[j];return n&&n.role===`maxy`&&(t[j]={...n,events:[...n.events??[],{type:`text`,content:`This conversation can no longer be resumed — its history is gone. The next message will start a fresh exchange under the same conversation thread.`}]}),t});continue}if(e.type===`server_shutdown`){d=!0,_(e=>{let t=[...e],n=t[j];return n&&n.role===`maxy`&&(t[j]={...n,events:[...n.events??[],{type:`text`,content:`Server is restarting — reconnect will happen automatically.`}]}),t});continue}if(e.type===`done`||e.type===`session_init`)continue;if(e.type===`flush_error`){let t=e.reason,n={"missing-userId":`This session lost its user binding during a service restart — please refresh the page to sign back in.`,"writer-failed":`Could not save this conversation to the graph (database write failed). Please try again or refresh.`,"missing-session":`This session was not recognised by the server (likely cleared during a service restart). Please refresh the page.`}[t]??`Could not persist this turn (${t}). Please refresh the page.`;_(e=>{let t=[...e],r=t[j];return r&&r.role===`maxy`&&(t[j]={...r,events:[...r.events??[],{type:`text`,content:n}]}),t});continue}if(e.type===`persist_ack`){if(e.outcome===`fail`){let t=e.reason,n=t?`Could not save this turn to the graph (${t}). The agent's response is rendered above; refresh-then-retry to repersist.`:`Could not save this turn to the graph. The agent's response is rendered above; refresh-then-retry to repersist.`;_(e=>{let t=[...e],r=t[j];return r&&r.role===`maxy`&&(t[j]={...r,events:[...r.events??[],{type:`text`,content:n}]}),t})}continue}let t=e;_(e=>{let n=[...e],r=n[j];if(r&&r.role===`maxy`){let i=r.events??[];if(t.type===`component`&&i.some(e=>e.type===`component`&&e.name===t.name&&JSON.stringify(e.data)===JSON.stringify(t.data)))return e;n[j]={...r,events:[...i,t]}}return n})}d&&B(`sse-shutdown`)}catch(e){if(!(e instanceof DOMException&&e.name===`AbortError`)){console.error(`[chat] admin sendMessage failed:`,e);let t=e instanceof Error?e.message:String(e),n=Vt(e);_(e=>{let r=[...e],i=r[j];if(i&&i.role===`maxy`){let e=n?`Server is restarting — reconnect will happen automatically.`:`Error: ${t}`;r[j]={...i,events:[...i.events??[],{type:`text`,content:e}]}}return r}),n&&B(`sse-shutdown`)}}finally{if(s(_),S(!1),A.current)A.current=!1,ce();else{let e=T.current;if(e.length>0){let[t,...n]=e;L(n),te.current(t.text,t.files,t.timestamp)}else h.current?.focus()}}}te.current=pe;let me=(0,U.useCallback)(async()=>{if(!(!t||x||E)){D(!0);try{let e=await fetch(`/api/admin/compact`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_key:t})});for await(let t of l(e))if(t.type===`status`&&t.message){let e=t.message;_(t=>{let n=[...t],r=n[n.length-1];return r?.role===`maxy`&&(n[n.length-1]={...r,events:[...r.events??[],{type:`status`,message:e}]}),n})}else t.type===`done`&&t.ok&&k(!0)}finally{D(!1)}}},[t,x,E]);async function ge(){let e=ne.consumeOffer(`fresh`);e&&(await ue(),te.current(e.heldMessage))}function _e(){let e=ne.consumeOffer(`continue`);e&&pe(e.heldMessage,void 0,void 0,!0,{topicChangeAction:`continue`,heldMessage:e.heldMessage})}return{messages:g,setMessages:_,input:v,setInput:y,isStreaming:x,messageQueue:C,messageQueueRef:T,setQueue:L,isCompacting:E,conversationCompacted:O,greetingGeneration:j,wasPaused:N,sendMessageRef:te,submittedComponents:F,effectiveSubmitted:fe,stopStreaming:oe,sendSystemPrompt:se,sendMessage:pe,resetConversation:ce,startNewConversation:ue,seedSubmittedComponents:le,handleComponentSubmit:de,handleCompactNow:me,topicChangeOffer:ne.offer,handleTopicFreshStart:ge,handleTopicContinue:_e}}function Kt(){let[e,t]=(0,U.useState)([]),[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(null),o=(0,U.useRef)(null),s=(0,U.useCallback)(e=>{a(null);let n=e.map(x),r=n.find(e=>!L(e.type,Ot));if(r){a(`Unsupported file type: "${r.type}". Supported: images, PDF, plain text, markdown, CSV, calendar, zip, voice notes.`);return}let i=n.find(e=>e.size>kt);if(i){a(`"${i.name}" exceeds the 50 MB limit.`);return}t(e=>[...e,...n].slice(0,5))},[]);return{pendingFiles:e,setPendingFiles:t,isDragOver:n,attachError:i,setAttachError:a,fileInputRef:o,addFiles:s,clearFiles:(0,U.useCallback)(()=>{t([]),a(null)},[]),removeFile:(0,U.useCallback)(e=>{t(t=>t.filter((t,n)=>n!==e))},[]),onDragOver:(0,U.useCallback)(e=>{e.preventDefault(),r(!0)},[]),onDragLeave:(0,U.useCallback)(()=>{r(!1)},[]),onDrop:(0,U.useCallback)(e=>{e.preventDefault(),r(!1),s([...e.dataTransfer.files])},[s])}}var W=s();function qt({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,U.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,W.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,W.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 Jt(e){let{pin:t,setPin:n,confirmPin:r,setConfirmPin:i,showPin:a,setShowPin:o,pinLoading:s,pinError:c,pinInputRef:l,confirmPinInputRef:u,setPinFormRef:d,onSubmit:f,operatorName:p,setOperatorName:m}=e;return(0,W.jsx)(`div`,{className:`connect-page`,children:(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,R.productName]}),(0,W.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,R.productName,` who you are, then choose a PIN.`]}),(0,W.jsxs)(`form`,{ref:d,onSubmit:f,className:`connect-pin-form`,children:[(0,W.jsxs)(`div`,{className:`pin-input-row`,children:[(0,W.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:p,onChange:e=>m(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,W.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,W.jsxs)(`div`,{className:`pin-input-row`,children:[(0,W.jsx)(qt,{inputRef:l,value:t,onChange:n,onComplete:()=>u.current?.focus(),showPin:a}),(0,W.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,W.jsxs)(`div`,{className:`pin-input-row`,children:[(0,W.jsx)(qt,{inputRef:u,value:r,onChange:i,onComplete:()=>{},showPin:a}),(0,W.jsx)(E,{variant:`send`,type:`submit`,disabled:!t||!r||!p.trim(),loading:s,"aria-label":`Set PIN`,children:(0,W.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,W.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,W.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,W.jsx)(ye,{checked:a,onChange:()=>o(e=>!e),label:`Show PIN`})]}),c&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:c})]})})}function Yt(e){let{pin:t,setPin:n,showPin:r,setShowPin:i,pinLoading:a,pinError:o,pinInputRef:s,onSubmit:c,onChangePin:l}=e;return(0,W.jsx)(`div`,{className:`connect-page`,children:(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsx)(`h1`,{className:`connect-title`,children:R.productName}),(0,W.jsxs)(`form`,{onSubmit:c,className:`connect-pin-form`,children:[(0,W.jsxs)(`div`,{className:`pin-input-row`,children:[(0,W.jsx)(qt,{inputRef:s,value:t,onChange:n,onComplete:()=>{},showPin:r,autoFocus:!0}),(0,W.jsx)(E,{variant:`send`,type:`submit`,disabled:!t,loading:a,children:(0,W.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,W.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,W.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,W.jsxs)(`div`,{className:`pin-options`,children:[(0,W.jsx)(ye,{checked:r,onChange:()=>i(e=>!e),label:`Show PIN`}),(0,W.jsx)(E,{type:`button`,variant:`ghost`,onClick:l,children:`Change PIN`})]})]}),o&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:o})]})})}function Xt(e){let{accounts:t,loading:n,error:r,onSelect:i}=e;return(0,W.jsx)(`div`,{className:`connect-page`,children:(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsx)(`h1`,{className:`connect-title`,children:R.productName}),(0,W.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,W.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,W.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>i(e.accountId),disabled:n,type:`button`,children:[(0,W.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,W.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,W.jsx)(pe,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function Zt(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:o,setAppState:s}=e,[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(!1);async function f(){d(!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?l(!0):e.error&&o(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),o(`Could not launch browser.`)}d(!1)}async function p(){i(!0),o(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),l(!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`})}),s(`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 m(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),o(``)}return t||c?(0,W.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,W.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,W.jsx)(`button`,{onClick:m,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,W.jsx)(`button`,{onClick:()=>l(!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,W.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,W.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,W.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,W.jsx)(`div`,{style:{marginTop:`12px`},children:(0,W.jsx)(E,{variant:`primary`,onClick:p,disabled:r,children:r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,W.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,W.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,W.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(0,W.jsxs)(`div`,{className:`connect-page`,children:[(0,W.jsx)(`button`,{onClick:()=>s(`onboarding-choice`),style:{position:`fixed`,top:`16px`,left:`16px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Back to setup choice`,children:`← Back`}),(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsxs)(`div`,{className:`connect-logos`,children:[(0,W.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,W.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,W.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,W.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,W.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsx)(`span`,{className:`connect-logo-label`,children:R.productName})]})]}),(0,W.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,R.productName]}),(0,W.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,W.jsx)(E,{variant:`primary`,onClick:p,disabled:r,children:r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,W.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,W.jsx)(`button`,{onClick:f,disabled:u,style:{marginTop:`12px`,background:`none`,border:`none`,color:`var(--color-primary, #666)`,fontSize:`13px`,cursor:`pointer`,textDecoration:`underline`,textUnderlineOffset:`3px`},children:u?`Launching…`:`Open browser first`}),a&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:a})]})]})}function Qt({setAppState:e,setOnboardingComplete:t}){let[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(``);async function o(n){r(!0),a(``);try{let r=await fetch(`/api/onboarding/skip`,{method:`POST`,headers:n===`minimal`?{"Content-Type":`application/json`}:{},body:n===`minimal`?JSON.stringify({minimal:!0}):void 0});if(!r.ok){a((await r.json().catch(()=>({}))).error||`Failed to apply defaults.`);return}t(!0),e(`connect-claude`)}catch(e){console.error(`[admin] skip onboarding error:`,e),a(`Could not apply defaults.`)}finally{r(!1)}}function s(){e(`connect-claude`)}return(0,W.jsx)(`div`,{className:`connect-page`,children:(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsx)(`span`,{className:`connect-logo-label`,children:R.productName})]}),(0,W.jsx)(`h1`,{className:`connect-title`,children:`How would you like to get started?`}),(0,W.jsx)(`p`,{className:`connect-subtitle`,style:{fontSize:`0.8rem`,maxWidth:`320px`},children:`Defaults: core plugins only, auto-detected timezone, concise output style, and a minimal personality. No WiFi or optional plugins. Minimal also skips remote access, public-agent API key, and business profile.`}),(0,W.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`,width:`100%`,maxWidth:`320px`,alignItems:`center`},children:[(0,W.jsx)(E,{variant:`primary`,onClick:()=>o(`default`),disabled:n,children:n?`Applying defaults…`:`Use defaults`}),(0,W.jsx)(`button`,{onClick:s,disabled:n,style:{background:`none`,border:`none`,padding:`8px`,cursor:`pointer`,fontSize:`0.95rem`,color:`var(--text-secondary, #666)`,textDecoration:`none`},children:`Guided setup`}),(0,W.jsx)(`button`,{onClick:()=>o(`minimal`),disabled:n,style:{background:`none`,border:`none`,padding:`8px`,cursor:`pointer`,fontSize:`0.95rem`,color:`var(--text-secondary, #666)`,textDecoration:`none`},children:`Minimal`})]}),(0,W.jsx)(`p`,{className:`connect-subtitle`,style:{marginTop:`12px`},children:`You can change any setting later through conversation.`}),i&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:i})]})})}function $t({data:e,onSubmit:t,submitted:n}){let r=e,[i,a]=(0,U.useState)(`Submitted`);return r?.title?(0,W.jsx)(j,{submitted:n,submittedLabel:i,actions:[{label:r.rejectLabel??`Reject`,variant:`ghost`,onClick:()=>{n||(a(`Rejected`),t(r.rejectMessage??`Rejected: ${r.title}`))}},{label:r.confirmLabel??`Approve`,variant:`primary`,onClick:()=>{n||(a(`Approved`),t(r.confirmMessage??`Approved: ${r.title}`))}}],children:(0,W.jsxs)(`div`,{className:`confirm`,children:[(0,W.jsx)(`div`,{className:`confirm__title`,children:r.title}),r.description&&(0,W.jsx)(`div`,{className:`confirm__desc`,children:r.description}),r.items&&r.items.length>0&&(0,W.jsx)(`div`,{className:`confirm__items`,children:r.items.map((e,t)=>(0,W.jsxs)(`div`,{className:`confirm__item`,children:[(0,W.jsx)(`span`,{className:`confirm__item-label`,children:e.label}),(0,W.jsx)(`span`,{className:`confirm__item-value`,children:e.value})]},t))})]})}):null}function en({data:e,onSubmit:t,submitted:n}){let r=e,i=(0,U.useRef)(!1),a=!!(r?.title&&Array.isArray(r?.fields)&&r.fields.length>0),o=r?.actions&&r.actions.length>0;return(0,U.useEffect)(()=>{a&&!o&&!n&&!i.current&&(i.current=!0,t(``))},[a,o,n,t]),a?(0,W.jsx)(j,{submitted:n,submittedLabel:`Done`,actions:o?r.actions.map(e=>({label:e.label,variant:e.variant,onClick:()=>{n||t(e.message)}})):[],children:(0,W.jsxs)(`div`,{className:`info-card`,children:[(0,W.jsxs)(`div`,{className:`info-card__header`,children:[(0,W.jsx)(`div`,{className:`info-card__title`,children:r.title}),r.subtitle&&(0,W.jsx)(`div`,{className:`info-card__subtitle`,children:r.subtitle})]}),(0,W.jsx)(`div`,{className:`info-card__fields`,children:r.fields.map((e,t)=>(0,W.jsxs)(`div`,{className:`info-card__field`,children:[(0,W.jsx)(`span`,{className:`info-card__field-label`,children:e.label}),(0,W.jsx)(`span`,{className:`info-card__field-value${e.type===`status`?` info-card__field-value--status`:``}`,children:e.type===`link`?(0,W.jsx)(`a`,{href:e.value,target:`_blank`,rel:`noopener noreferrer`,children:e.value}):e.value})]},t))})]})}):null}function tn({data:e,onSubmit:t,submitted:n}){let r=e,i=Array.isArray(r?.items)?r.items:[],[a,o]=(0,U.useState)(new Set),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(`Done`);if(i.length===0)return null;let d=n||s,f=(e,n)=>{d||a.has(e)||(o(t=>new Set(t).add(e)),t(n))};return(0,W.jsx)(j,{submitted:d,submittedLabel:l,actions:[{label:`Done`,variant:`primary`,onClick:()=>{d||(c(!0),u(`Done`),t(r?.doneMessage??`Done`))}}],children:(0,W.jsxs)(`div`,{className:`action-list`,children:[r?.title&&(0,W.jsx)(`div`,{className:`action-list__title`,children:r.title}),(0,W.jsx)(`div`,{className:`action-list__items`,children:i.map(e=>(0,W.jsxs)(`div`,{className:`action-list__item${a.has(e.id)?` action-list__item--acted`:``}`,children:[(0,W.jsxs)(`div`,{className:`action-list__item-info`,children:[(0,W.jsx)(`span`,{className:`action-list__item-label`,children:e.label}),e.description&&(0,W.jsx)(`span`,{className:`action-list__item-desc`,children:e.description})]}),(0,W.jsxs)(`div`,{className:`action-list__item-right`,children:[e.status&&(0,W.jsx)(`span`,{className:`action-list__item-status`,children:e.status}),(0,W.jsx)(`div`,{className:`action-list__item-actions`,children:e.actions.map((t,n)=>(0,W.jsx)(E,{variant:t.variant===`danger`?`danger`:t.variant===`ghost`?`ghost`:`primary`,size:`sm`,disabled:d||a.has(e.id),onClick:n=>{n.stopPropagation(),f(e.id,t.message)},children:t.label},n))})]})]},e.id))})]})})}function nn({className:e,children:t,...n}){let r=e?`dropdown ${e}`:`dropdown`;return(0,W.jsx)(`select`,{...n,className:r,children:t})}function rn({data:e,onSubmit:t,submitted:n}){let r=e,i=Array.isArray(r?.fields)?r.fields:[],[a,o]=(0,U.useState)({}),[s,c]=(0,U.useState)({}),[l,u]=(0,U.useState)({}),[d,f]=(0,U.useState)(`Submitted`);if((0,U.useEffect)(()=>{i.length!==0&&(o(e=>{let t={...e};return i.forEach(e=>{e.type!==`list`&&(e.name in t||(t[e.name]=e.defaultValue??(e.type===`checkbox`?!1:``)))}),t}),c(e=>{let t={...e};return i.forEach(e=>{e.type===`list`&&(e.name in t||(t[e.name]=Array.isArray(e.defaultValue)?e.defaultValue:[]))}),t}))},[i]),i.length===0)return null;let p=(e,t)=>{n||o(n=>({...n,[e]:t}))},m=i.filter(e=>e.required&&e.type!==`list`).every(e=>{let t=a[e.name];return e.type===`checkbox`?t===!0:typeof t==`string`&&t.trim()!==``}),h=()=>{if(!m||n)return;f(`Submitted`);let e=r?.submitMessage??`Form submitted: {{json}}`,i=JSON.stringify(a),o=e;for(let[e,t]of Object.entries(a))o=o.replace(`{{${e}}}`,()=>String(t));o=o.replace(`{{json}}`,()=>i),o=o.replace(`{{values}}`,()=>i),t(o)},g=e=>e.description?`${e.label} — ${e.description}`:e.label,_=e=>{let r=(l[e.name]??``).trim();!r||n||(c(t=>({...t,[e.name]:[...t[e.name]??[],r]})),u(t=>({...t,[e.name]:``})),e.addMessage&&t(e.addMessage.replace(`{{value}}`,r)))},v=(e,r)=>{n||(c(t=>({...t,[e.name]:(t[e.name]??[]).filter(e=>e!==r)})),e.removeMessage&&t(e.removeMessage.replace(`{{value}}`,r)))};return(0,W.jsx)(j,{submitted:n,submittedLabel:d,actions:[{label:r?.submitLabel??`Submit`,variant:`primary`,disabled:!m,onClick:h}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[r?.title&&(0,W.jsx)(`div`,{className:`form-input__title`,children:r.title}),r?.description&&(0,W.jsx)(`div`,{className:`form-input__desc`,children:r.description}),(0,W.jsx)(`div`,{className:`form-input__fields`,children:i.map(e=>(0,W.jsx)(`div`,{className:`form-input__field`,children:e.type===`checkbox`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ye,{checked:a[e.name]===!0,onChange:t=>p(e.name,t),label:e.label,disabled:n}),e.description&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:e.description})]}):e.type===`list`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`label`,{className:`form-input__label`,children:e.label}),e.description&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:e.description}),(0,W.jsxs)(`div`,{className:`form-input__list`,children:[(s[e.name]??[]).map(t=>(0,W.jsxs)(`div`,{className:`form-input__list-item`,children:[(0,W.jsx)(`span`,{className:`form-input__list-item-text`,children:t}),(0,W.jsx)(`button`,{type:`button`,className:`form-input__list-item-remove`,onClick:()=>v(e,t),disabled:n,"aria-label":`Remove ${t}`,children:`×`})]},t)),(0,W.jsxs)(`div`,{className:`form-input__list-add`,children:[(0,W.jsx)(`input`,{className:`form-input__input`,type:`text`,placeholder:e.addPlaceholder??``,value:l[e.name]??``,onChange:t=>u(n=>({...n,[e.name]:t.target.value})),onKeyDown:t=>{t.key===`Enter`&&(t.preventDefault(),_(e))},disabled:n}),(0,W.jsx)(`button`,{type:`button`,className:`form-input__list-add-btn`,onClick:()=>_(e),disabled:n||!(l[e.name]??``).trim(),children:`Add`})]})]})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`form-${e.name}`,children:[e.label,e.required&&(0,W.jsx)(`span`,{className:`form-input__required`,children:`*`})]}),e.description&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:e.description}),e.type===`textarea`?(0,W.jsx)(`textarea`,{id:`form-${e.name}`,className:`form-input__textarea`,placeholder:e.placeholder,value:a[e.name]??``,onChange:t=>p(e.name,t.target.value),disabled:n,rows:3}):e.type===`select`?(0,W.jsxs)(nn,{id:`form-${e.name}`,className:`form-input__select`,value:a[e.name]??``,onChange:t=>p(e.name,t.target.value),disabled:n,children:[(0,W.jsx)(`option`,{value:``,children:e.placeholder??`Select...`}),e.options?.map(e=>(0,W.jsx)(`option`,{value:e.value,children:g(e)},e.value))]}):(0,W.jsx)(`input`,{id:`form-${e.name}`,className:`form-input__input`,type:e.type,placeholder:e.placeholder,value:a[e.name]??``,onChange:t=>p(e.name,t.target.value),disabled:n})]})},e.name))})]})})}var an={pending:`○`,active:`◉`,completed:`✓`,failed:`✗`,skipped:`–`};function on({data:e,onSubmit:t,submitted:n}){let r=e,i=Array.isArray(r?.steps)?r.steps:[],a=(0,U.useRef)(!1),o=i.length>0&&i.every(e=>e.status===`completed`||e.status===`failed`||e.status===`skipped`);return(0,U.useEffect)(()=>{o&&!n&&!a.current&&(a.current=!0,t(r?.completedMessage??`All steps completed`))},[o,n,t,r?.completedMessage]),i.length===0?null:(0,W.jsxs)(`div`,{className:`progress-tracker${n?` progress-tracker--submitted`:``}`,children:[r?.title&&(0,W.jsx)(`div`,{className:`progress-tracker__title`,children:r.title}),(0,W.jsx)(`div`,{className:`progress-tracker__steps`,children:i.map((e,t)=>(0,W.jsxs)(`div`,{className:`progress-tracker__step progress-tracker__step--${e.status}`,children:[(0,W.jsx)(`span`,{className:`progress-tracker__icon`,children:an[e.status]??`○`}),(0,W.jsxs)(`div`,{className:`progress-tracker__step-info`,children:[(0,W.jsx)(`span`,{className:`progress-tracker__step-label`,children:e.label}),e.description&&(0,W.jsx)(`span`,{className:`progress-tracker__step-desc`,children:e.description})]})]},t))})]})}function sn({handlePopout:e,disabled:t=!1}){let n=(0,U.useCallback)(()=>{delete document.body.dataset.dragPopoutActive},[]);(0,U.useEffect)(()=>()=>n(),[n]);let r=(0,U.useCallback)(e=>{if(t){e.preventDefault();return}let n=e.target;if(n.closest(`.editor-base__actions`)||n.closest(`.browser-viewer__actions`)){e.preventDefault();return}if(!document.querySelector(`.chat-messages`)){e.preventDefault();return}e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,``),document.body.dataset.dragPopoutActive=`true`},[t,n]),i=(0,U.useCallback)(t=>{if(n(),t.clientX===0&&t.clientY===0)return;let r=document.querySelector(`.chat-messages`);if(!r)return;let i=r.getBoundingClientRect();(t.clientX<i.left||t.clientX>i.right||t.clientY<i.top||t.clientY>i.bottom)&&e()},[e,n]);return t?{draggable:!1,onDragStart:()=>{},onDragEnd:()=>{}}:{draggable:!0,onDragStart:r,onDragEnd:i}}function cn(e){(0,U.useEffect)(()=>{let t=Date.now(),n=`/api/admin/browser-iframe/event`,r={brand:R.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])}function ln({data:e,onSubmit:t,submitted:n,isStreaming:r}){St(),cn(`viewer`);let{title:i}=e??{},[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(!1),d=(0,U.useRef)(null),f=(0,U.useRef)(null),p=i??R.productName,m=(0,U.useCallback)(()=>{f.current&&=(clearInterval(f.current),null),d.current&&!d.current.closed&&d.current.close(),d.current=null,c(!1)},[]),g=(0,U.useCallback)(()=>{o(!1),u(!1);let e=`/vnc-popout.html?title=${encodeURIComponent(p)}`,t=window.open(e,`maxy-vnc-popout`,`width=1024,height=768`);t&&(d.current=t,c(!0),f.current=setInterval(()=>{d.current?.closed&&(m(),u(!0))},500))},[p,m]),_=(0,U.useCallback)(()=>{m(),o(!1),u(!0)},[m]),v=(0,U.useCallback)(()=>{m(),u(!1)},[m]),y=(0,U.useCallback)(()=>{u(!1)},[]),b=(0,U.useCallback)(()=>{m(),u(!1),o(!0)},[m]),x=(0,U.useCallback)(()=>o(!1),[]);(0,U.useEffect)(()=>{if(!a)return;let e=e=>{e.key===`Escape`&&x()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a,x]),(0,U.useEffect)(()=>()=>m(),[m]);let S=sn({handlePopout:g,disabled:s||a});if(n)return null;let C=`/vnc-viewer.html`;return a?(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen`,children:[(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen__bar`,...S,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer-fullscreen__title`,children:p}),(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen__actions`,children:[(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:g,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:at,onClick:x,"aria-label":`Exit full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ot,onClick:_,"aria-label":`Minimise`})]})]}),(0,W.jsx)(`iframe`,{src:C,className:`browser-viewer-fullscreen__iframe`,title:p})]}):s?(0,W.jsx)(`div`,{className:`browser-viewer browser-viewer--popout`,children:(0,W.jsxs)(`div`,{className:`browser-viewer__bar`,...S,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:p}),(0,W.jsxs)(`div`,{className:`browser-viewer__actions`,children:[(0,W.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:mt,onClick:v,"aria-label":`Pop back in`})]})]})}):l?(0,W.jsxs)(`div`,{className:`browser-viewer browser-viewer--minimised`,onClick:y,role:`button`,tabIndex:0,onKeyDown:e=>e.key===`Enter`&&y(),children:[(0,W.jsxs)(`div`,{className:`browser-viewer__bar`,...S,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:p}),(0,W.jsxs)(`div`,{className:`browser-viewer__actions`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:g,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:et,onClick:b,"aria-label":`Full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:dt,onClick:y,"aria-label":`Expand`})]})]}),(0,W.jsx)(`iframe`,{src:C,className:`browser-viewer__iframe`,title:p,"aria-hidden":`true`})]}):(0,W.jsxs)(`div`,{className:`browser-viewer`,children:[(0,W.jsxs)(`div`,{className:`browser-viewer__bar`,...S,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),i&&(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:i}),(0,W.jsxs)(`div`,{className:`browser-viewer__actions`,children:[(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:g,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:et,onClick:b,"aria-label":`Full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ot,onClick:_,"aria-label":`Minimise`})]})]}),(0,W.jsx)(`iframe`,{src:C,className:`browser-viewer__iframe`,title:p})]})}var un=t((e=>{var t=a();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,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),a=r[0].inst,l=r[1];return s(function(){a.value=n,a.getSnapshot=t,u(a)&&l({inst:a})},[e,n,t]),o(function(){return u(a)&&l({inst:a}),e(function(){u(a)&&l({inst:a})})},[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})),dn=t(((e,t)=>{t.exports=un()})),fn=dn(),pn=e(n(),1);function mn(e){this.content=e}mn.prototype={constructor:mn,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 mn(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 mn(n)},addToStart:function(e,t){return new mn([e,t].concat(this.remove(e).content))},addToEnd:function(e,t){var n=this.remove(e).content.slice();return n.push(e,t),new mn(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 mn(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=mn.from(e),e.size?new mn(e.content.concat(this.subtract(e).content)):this},append:function(e){return e=mn.from(e),e.size?new mn(this.subtract(e).content.concat(e.content)):this},subtract:function(e){var t=this;e=mn.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}},mn.from=function(e){if(e instanceof mn)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new mn(t)};function hn(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=hn(i.content,a.content,n+1);if(e!=null)return e}n+=i.nodeSize}}function gn(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=gn(o.content,s.content,n-1,r-1);if(e)return e}n-=c,r-=c}}var G=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 hn(this,e,t)}findDiffEnd(e,t=this.size,n=e.size){return gn(this,e,t,n)}findIndex(e){if(e==0)return vn(0,e);if(e==this.size)return vn(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?vn(t+1,i):vn(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)`:``))}};G.empty=new G([],0);var _n={index:0,offset:0};function vn(e,t){return _n.index=e,_n.offset=t,_n}function yn(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(!yn(e[n],t[n]))return!1}else{for(let n in e)if(!(n in t)||!yn(e[n],t[n]))return!1;for(let n in t)if(!(n in e))return!1}return!0}var bn=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&&yn(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}};bn.none=[];var xn=class extends Error{},K=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=Cn(this.content,t+this.openStart,n);return r&&new e(r,this.openStart,this.openEnd)}removeBetween(t,n){return new e(Sn(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(G.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)}};K.empty=new K(G.empty,0,0);function Sn(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(Sn(a.content,t-i-1,n-i-1)))}function Cn(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=Cn(o.content,t-a-1,n,o);return s&&e.replaceChild(i,o.copy(s))}function wn(e,t,n){if(n.openStart>e.depth)throw new xn(`Inserted content deeper than insertion position`);if(e.depth-n.openStart!=t.depth-n.openEnd)throw new xn(`Inconsistent open depths`);return Tn(e,t,n,0)}function Tn(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=Tn(e,t,n,r+1);return a.copy(a.content.replaceChild(i,o))}else if(!n.content.size)return An(a,Mn(e,t,r));else if(!n.openStart&&!n.openEnd&&e.depth==r&&t.depth==r){let r=e.parent,i=r.content;return An(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}else{let{start:i,end:o}=Nn(n,e);return An(a,jn(e,i,o,t,r))}}function En(e,t){if(!t.type.compatibleContent(e.type))throw new xn(`Cannot join `+t.type.name+` onto `+e.type.name)}function Dn(e,t,n){let r=e.node(n);return En(r,t.node(n)),r}function On(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 kn(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&&(On(e.nodeAfter,r),a++));for(let e=a;e<o;e++)On(i.child(e),r);t&&t.depth==n&&t.textOffset&&On(t.nodeBefore,r)}function An(e,t){return e.type.checkContent(t),e.copy(t)}function jn(e,t,n,r,i){let a=e.depth>i&&Dn(e,t,i+1),o=r.depth>i&&Dn(n,r,i+1),s=[];return kn(null,e,i,s),a&&o&&t.index(i)==n.index(i)?(En(a,o),On(An(a,jn(e,t,n,r,i+1)),s)):(a&&On(An(a,Mn(e,t,i+1)),s),kn(t,n,i,s),o&&On(An(o,Mn(n,r,i+1)),s)),kn(r,null,i,s),new G(s)}function Mn(e,t,n){let r=[];return kn(null,e,n,r),e.depth>n&&On(An(Dn(e,t,n+1),Mn(e,t,n+1)),r),kn(t,null,n,r),new G(r)}function Nn(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(G.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}var Pn=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 bn.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 Rn(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=Ln.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 Ln.set(t,r=new Fn);let i=r.elts[r.i]=e.resolve(t,n);return r.i=(r.i+1)%In,i}},Fn=class{constructor(){this.elts=[],this.i=0}},In=12,Ln=new WeakMap,Rn=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)}},zn=Object.create(null),Bn=class e{constructor(e,t,n,r=bn.none){this.type=e,this.attrs=t,this.marks=r,this.content=n||G.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&&yn(this.attrs,t||e.defaultAttrs||zn)&&bn.sameSet(this.marks,n||bn.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 K.empty;let r=this.resolve(e),i=this.resolve(t),a=n?0:r.sharedDepth(t),o=r.start(a);return new K(r.node(a).content.cut(r.pos-o,i.pos-o),r.depth-a,i.depth-a)}replace(e,t,n){return wn(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 Pn.resolveCached(this,e)}resolveNoCache(e){return Pn.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()+`)`),Hn(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=G.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=bn.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(!bn.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=G.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}};Bn.prototype.text=void 0;var Vn=class e extends Bn{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):Hn(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 Hn(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+`(`+t+`)`;return t}var Un=class e{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(t,n){let r=new Wn(t,n);if(r.next==null)return e.empty;let i=Gn(r);r.next&&r.err(`Unexpected trailing text`);let a=tr(Qn(i));return nr(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 G.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,i as r,n as i,o as a,r as o,t as s}from"./jsx-runtime-DFrHsKhm.js";import{A as c,C as l,D as u,E as d,F as f,I as p,L as m,M as h,N as g,O as _,P as v,S as y,T as b,_ as x,a as S,c as C,d as w,f as T,g as E,h as D,i as O,j as k,k as A,l as j,m as M,n as N,o as P,p as ee,r as te,s as F,t as I,u as ne,v as L,w as re,x as ie,y as R}from"./useVoiceRecorder-DCVSlfUk.js";import{a as z,i as B,o as ae,r as oe,t as se}from"./page-DsW7P98i.js";import{a as ce,i as le,n as ue,r as de}from"./page-B5b7tyz-.js";import{c as fe,d as pe,l as me,o as he,p as ge,s as _e,u as ve}from"./graph-labels-C-KsUF_B.js";import{t as ye}from"./Checkbox-CDffo5el.js";var be=r(),xe=o(`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`}]]),Se=o(`asterisk`,[[`path`,{d:`M12 6v12`,key:`1vza4d`}],[`path`,{d:`M17.196 9 6.804 15`,key:`1ah31z`}],[`path`,{d:`m6.804 9 10.392 6`,key:`1b6pxd`}]]),Ce=o(`bold`,[[`path`,{d:`M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8`,key:`mg9rjx`}]]),we=o(`bot-off`,[[`path`,{d:`M13.67 8H18a2 2 0 0 1 2 2v4.33`,key:`7az073`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M22 22 2 2`,key:`1r8tn9`}],[`path`,{d:`M8 8H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h12a2 2 0 0 0 1.414-.586`,key:`s09a7a`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}],[`path`,{d:`M9.67 4H12v2.33`,key:`110xot`}]]),Te=o(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),V=o(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),Ee=o(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),De=o(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),H=o(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),Oe=o(`circle-plus`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),ke=o(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),Ae=o(`clipboard-plus`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M9 14h6`,key:`159ibu`}],[`path`,{d:`M12 17v-6`,key:`1y8rbf`}]]),je=o(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),Me=o(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),Ne=o(`database-zap`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`,key:`14ibmq`}],[`path`,{d:`M21 5V8`,key:`1marbg`}],[`path`,{d:`M21 12L18 17H22L19 22`,key:`zafso`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`,key:`1y4wr8`}]]),Pe=o(`database-search`,[[`path`,{d:`M21 11.693V5`,key:`175m1t`}],[`path`,{d:`m22 22-1.875-1.875`,key:`13zax7`}],[`path`,{d:`M3 12a9 3 0 0 0 8.697 2.998`,key:`151u9p`}],[`path`,{d:`M3 5v14a9 3 0 0 0 9.28 2.999`,key:`q2rs2p`}],[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}]]),Fe=o(`dot`,[[`circle`,{cx:`12.1`,cy:`12.1`,r:`1`,key:`18d7e5`}]]),Ie=o(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),Le=o(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),Re=o(`file-archive`,[[`path`,{d:`M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5`,key:`4pqfef`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 12v-1`,key:`1ej8lb`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`path`,{d:`M8 7V6`,key:`1nbb54`}],[`circle`,{cx:`8`,cy:`20`,r:`2`,key:`ckkr5m`}]]),ze=o(`file-down`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 18v-6`,key:`17g6i2`}],[`path`,{d:`m9 15 3 3 3-3`,key:`1npd3o`}]]),Be=o(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ve=o(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),He=o(`file-pen-line`,[[`path`,{d:`m18.226 5.226-2.52-2.52A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-.351`,key:`1k2beg`}],[`path`,{d:`M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z`,key:`2t3380`}],[`path`,{d:`M8 18h1`,key:`13wk12`}]]),Ue=o(`file-plus-corner`,[[`path`,{d:`M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35`,key:`17jvcc`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M14 19h6`,key:`bvotb8`}],[`path`,{d:`M17 16v6`,key:`18yu1i`}]]),We=o(`git-branch`,[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]),Ge=o(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),Ke=o(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),qe=o(`italic`,[[`line`,{x1:`19`,x2:`10`,y1:`4`,y2:`4`,key:`15jd3p`}],[`line`,{x1:`14`,x2:`5`,y1:`20`,y2:`20`,key:`bu0au3`}],[`line`,{x1:`15`,x2:`9`,y1:`4`,y2:`20`,key:`uljnxc`}]]),Je=o(`lightbulb-off`,[[`path`,{d:`M16.8 11.2c.8-.9 1.2-2 1.2-3.2a6 6 0 0 0-9.3-5`,key:`1fkcox`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M6.3 6.3a4.67 4.67 0 0 0 1.2 5.2c.7.7 1.3 1.5 1.5 2.5`,key:`10m8kw`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]),Ye=o(`lightbulb`,[[`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`,key:`1gvzjb`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]),Xe=o(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),Ze=o(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),Qe=o(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),$e=o(`loader`,[[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m16.2 7.8 2.9-2.9`,key:`r700ao`}],[`path`,{d:`M18 12h4`,key:`wj9ykh`}],[`path`,{d:`m16.2 16.2 2.9 2.9`,key:`1bxg5t`}],[`path`,{d:`M12 18v4`,key:`jadmvz`}],[`path`,{d:`m4.9 19.1 2.9-2.9`,key:`bwix9q`}],[`path`,{d:`M2 12h4`,key:`j09sii`}],[`path`,{d:`m4.9 4.9 2.9 2.9`,key:`giyufr`}]]),et=o(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),tt=o(`message-circle`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}]]),nt=o(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),rt=o(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),it=o(`message-square`,[[`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`}]]),at=o(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),ot=o(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),st=o(`monitor-smartphone`,[[`path`,{d:`M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8`,key:`10dyio`}],[`path`,{d:`M10 19v-3.96 3.15`,key:`1irgej`}],[`path`,{d:`M7 19h5`,key:`qswx4l`}],[`rect`,{width:`6`,height:`10`,x:`16`,y:`12`,rx:`2`,key:`1egngj`}]]),ct=o(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),lt=o(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),ut=o(`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`}]]),dt=o(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),ft=o(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),pt=o(`sparkle`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}]]),mt=o(`square-arrow-down-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`m16 8-8 8`,key:`166keh`}],[`path`,{d:`M16 16H8V8`,key:`1w2ppm`}]]),ht=o(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),gt=o(`star`,[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]),_t=o(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),vt=o(`user-plus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),yt=o(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),bt=o(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),xt=o(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),U=e(a(),1);function St(){(0,U.useEffect)(()=>{function e(e){e.data?.type===`vnc-clipboard`&&typeof e.data.text==`string`&&re(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`&&re(e.data)}),()=>{window.removeEventListener(`message`,e),t?.close()}},[])}function Ct(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 wt(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function Tt(){let[e,t]=(0,U.useState)(0),n=(0,U.useRef)(0),r=(0,U.useRef)(0),i=(0,U.useRef)(null),[a,o]=(0,U.useState)(0),s=(0,U.useRef)(0),c=(0,U.useRef)(null),l=(0,U.useRef)(null);return{elapsedSeconds:e,sessionElapsed:a,sessionTurnStart:l,pausedElapsedRef:r,startElapsedTimer:(0,U.useCallback)((e=0)=>{l.current=Date.now(),c.current=setInterval(()=>{let e=s.current+(Date.now()-(l.current??Date.now()));o(Math.floor(e/1e3))},1e3),n.current=e,t(e),i.current=setInterval(()=>{n.current+=1,t(n.current)},1e3)},[]),stopElapsedTimer:(0,U.useCallback)(e=>{i.current&&=(clearInterval(i.current),null),c.current&&=(clearInterval(c.current),null),l.current&&(s.current+=Date.now()-l.current,l.current=null,o(Math.floor(s.current/1e3))),r.current=n.current;let t=n.current;e(e=>{let n=[...e].map((e,t)=>({m:e,i:t})).reverse().find(({m:e})=>e.role===`maxy`)?.i;if(n===void 0)return e;let r=[...e];return r[n]={...r[n],elapsedSeconds:t},r})},[]),resetTimerState:(0,U.useCallback)(()=>{s.current=0,o(0)},[])}}var Et=new Set([`action-list`,`document-editor`,`rich-content-editor`,`grid-editor`]),Dt=`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`,Ot=new Set(Dt.split(`,`).filter(e=>!e.startsWith(`.`))),kt=50*1024*1024;function At(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}function jt(){let[e,t]=(0,U.useState)(`loading`),[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(``),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(!1),[g,_]=(0,U.useState)(!1),[v,y]=(0,U.useState)(!1),[b,x]=(0,U.useState)(null),[S,C]=(0,U.useState)(null),[w,T]=(0,U.useState)(void 0),[E,D]=(0,U.useState)(void 0),[O,k]=(0,U.useState)(null),[A,j]=(0,U.useState)(void 0),[M,N]=(0,U.useState)(null),[P,ee]=(0,U.useState)(null),[te,F]=(0,U.useState)([]),[I,ne]=(0,U.useState)(!1),[L,re]=(0,U.useState)(void 0),ie=(0,U.useRef)(void 0),[R,z]=(0,U.useState)(!1);(0,U.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&&z(!0)}).catch(()=>{})},[]);let B=(0,U.useRef)(null),ae=(0,U.useRef)(null),oe=(0,U.useRef)(null);(0,U.useEffect)(()=>{async function e(){let e=null;try{e=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!e)return!1;try{let n=await fetch(`/api/admin/session?session_key=${encodeURIComponent(e)}`);if(n.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}return!1}if(!n.ok)return!1;let r=await n.json();x(r.session_key),ee(r.conversationId??null),T(r.onboardingComplete),D(r.businessName),k(r.role??null),j(r.userName===void 0?null:r.userName),N(r.avatar??null);let i=At(r.thinkingView);return ie.current=i,re(i),t(`chat`),!0}catch(e){return console.error(`[admin] session restore failed:`,e),!1}}async function n(r=2){try{let i=await fetch(`/api/health`);if(!i.ok){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check returned ${i.status} after retries`),t(`set-pin`);return}let a=await i.json();if(!a.pin_configured){t(`set-pin`);return}if(a.onboarding_complete===!1){t(`onboarding-choice`);return}if(!a.claude_authenticated){t(`connect-claude`);return}if(await e())return;t(`enter-pin`)}catch(e){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check failed:`,e),t(`set-pin`)}}n()},[]),(0,U.useEffect)(()=>{e===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&C(e)}).catch(()=>{})},[e]),(0,U.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,U.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 se(e,n){p(!0);try{let i=await fetch(`/api/admin/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:e,...n?{accountId:n}:{}})});if(!i.ok){l((await i.json().catch(()=>({}))).error||`Invalid PIN`);return}let o=await i.json();if(o.accounts&&!o.session_key){console.log(`[admin] account picker shown: userId=${o.userId} accountCount=${o.accounts.length}`),F(o.accounts),t(`account-picker`);return}x(o.session_key),ee(o.conversationId??null),T(o.onboardingComplete??!0),D(o.businessName),k(o.role??null),j(o.userName===void 0?null:o.userName),N(o.avatar??null);let s=At(o.thinkingView);if(ie.current=s,re(s),n)try{sessionStorage.setItem(`maxy-account-id`,n)}catch{}try{sessionStorage.setItem(`maxy-admin-session-key`,o.session_key)}catch{}r(``),a(``),t(`chat`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1),ne(!1)}}let ce=(0,U.useCallback)(async e=>{if(e.preventDefault(),f)return;l(``);let s=o.trim();if(!s){l(`Please enter your name.`);return}if(n.length<4){l(`PIN must be at least 4 characters.`);return}if(n!==i){l(`PINs do not match.`);return}let c=n;p(!0);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:c,name:s})});if(!e.ok){let n=await e.json().catch(()=>({}));if(e.status===409){console.log(`[admin] PIN already configured — re-checking health`);try{let e=await fetch(`/api/health`);if(e.ok){let r=await e.json();r.pin_configured&&r.claude_authenticated?t(`enter-pin`):r.pin_configured?t(`connect-claude`):l(n.error||`Failed to set PIN.`)}else t(`enter-pin`)}catch{t(`enter-pin`)}return}l(n.error||`Failed to set PIN.`);return}let n=await fetch(`/api/health`),i=n.ok?await n.json():null;if(i?.onboarding_complete===!1){r(``),a(``),t(`onboarding-choice`);return}if(i?.claude_authenticated){await se(c);return}r(``),a(``),t(`onboarding-choice`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1)}},[n,i,f,o]),le=(0,U.useCallback)(async e=>{e.preventDefault(),l(``),await se(n)},[n]),ue=(0,U.useCallback)(async()=>{y(!0),await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`logout`})}),x(null),k(null),j(void 0),N(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)},[]),de=(0,U.useCallback)(()=>{x(null),k(null),j(void 0),N(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}r(``),a(``),l(``),t(`enter-pin`)},[]);return{appState:e,setAppState:t,pin:n,setPin:r,confirmPin:i,setConfirmPin:a,operatorName:o,setOperatorName:s,pinError:c,setPinError:l,showPin:u,setShowPin:d,pinLoading:f,authPolling:m,setAuthPolling:h,authLoading:g,setAuthLoading:_,disconnecting:v,sessionKey:b,setSessionKey:x,claudeInfo:S,setClaudeInfo:C,onboardingComplete:w,setOnboardingComplete:T,businessName:E,role:O,userName:A,userAvatar:M,conversationId:P,setConversationId:ee,accounts:te,accountPickerLoading:I,expandAll:L,setExpandAll:re,expandAllDefaultRef:ie,remoteAuthEnabled:R,pinInputRef:B,confirmPinInputRef:ae,setPinFormRef:oe,handleSetPin:ce,handleLogin:le,handleAccountSelect:(0,U.useCallback)(async e=>{ne(!0),l(``),await se(n,e)},[n]),handleDisconnect:ue,handleLogout:de,handleChangePin:(0,U.useCallback)(async()=>{if(!n){l(`Enter your current PIN first.`);return}p(!0),l(``);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({currentPin:n})});if(!e.ok){l((await e.json().catch(()=>({error:`Incorrect PIN.`}))).error||`Incorrect PIN.`);return}r(``),a(``),l(``),t(`set-pin`)}catch(e){console.error(`[admin-auth] change pin failed:`,e),l(e instanceof Error?e.message:String(e))}finally{p(!1)}},[n])}}var Mt={active:!1,heldMessage:null,existingTopic:null,confidence:0};function Nt(){let[e,t]=(0,U.useState)(Mt),n=(0,U.useRef)(!1);return{offer:e,handleOfferEvent:(0,U.useCallback)((e,n,r)=>{t({active:!0,heldMessage:e,existingTopic:n,confidence:r})},[]),consumeOffer:(0,U.useCallback)(r=>{if(!e.active||!e.heldMessage||n.current)return null;n.current=!0;let i={heldMessage:e.heldMessage,action:r};return t(Mt),setTimeout(()=>{n.current=!1},0),i},[e]),dismissAndGetHeldMessage:(0,U.useCallback)(()=>{if(!e.active||!e.heldMessage)return null;let n=e.heldMessage;return t(Mt),n},[e])}}async function Pt(e,t){try{await fetch(`/api/_client-error`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:`event`,source:e,...t})})}catch{}}var Ft=`maxy-admin-draft`,It=`maxy-admin-session-key`,Lt=[500,1e3,2e3,4e3,8e3,1e4,1e4],Rt=3e4,zt=2e4,Bt=1e3;function Vt(e){if(e instanceof TypeError){let t=e.message||``;return/network|failed to fetch|load failed/i.test(t)}return!1}async function Ht(e=2e3){try{return(await fetch(`/api/health`,{cache:`no-store`,signal:AbortSignal.timeout(e)})).ok}catch{return!1}}async function Ut(){let e=Date.now()+Rt;for(let t=0;t<Lt.length;t++){let n=Lt[t];if(await new Promise(e=>setTimeout(e,n)),Date.now()>e)return!1;if(await Ht(3e3))return!0}return!1}async function Wt(){let e=Date.now()+zt,t=!1;for(;Date.now()<e;)if(await new Promise(e=>setTimeout(e,Bt)),!await Ht(1500)){t=!0;break}return t?Ut():(Pt(`post-restart-resume`,{phase:`brand-stayed-up`,boundMs:zt}),!0)}function Gt(e){let{sessionKey:t,setSessionKey:n,setAppState:r,conversationId:i,setConversationId:a,startElapsedTimer:o,stopElapsedTimer:s,resetTimerState:c,pausedElapsedRef:u,expandAllDefaultRef:d,setExpandAll:f,getPendingFiles:p,clearPendingFiles:m,inputRef:h}=e,[g,_]=(0,U.useState)([]),[v,y]=(0,U.useState)(()=>{try{return localStorage.getItem(Ft)??``}catch{return``}}),b=(0,U.useRef)(null),[x,S]=(0,U.useState)(!1),[C,w]=(0,U.useState)([]),T=(0,U.useRef)([]),[E,D]=(0,U.useState)(!1),[O,k]=(0,U.useState)(!1),A=(0,U.useRef)(!1),[j,M]=(0,U.useState)(0),[N,P]=(0,U.useState)(!1),ee=(0,U.useRef)(null),te=(0,U.useRef)(()=>{}),[F,I]=(0,U.useState)(new Set),ne=Nt();function L(e){T.current=e,w(e)}let re=(0,U.useRef)(t);re.current=t;let ie=(0,U.useRef)(i);ie.current=i;let R=(0,U.useRef)(null),z=(0,U.useRef)(null),B=(0,U.useCallback)(e=>{if(z.current)return z.current;let t=Date.now();Pt(`post-restart-resume`,{phase:`start`,trigger:e});let n=(async()=>{if(!(e===`form-armed`?await Wt():await Ut())){Pt(`post-restart-resume`,{phase:`health-timeout`,trigger:e,durationMs:Date.now()-t});return}let n=re.current,r=ie.current;if(!n||!r){Pt(`post-restart-resume`,{phase:`skip-no-session`,trigger:e,hasSk:!!n,hasCid:!!r});return}try{let t=await fetch(`/api/admin/sessions/${encodeURIComponent(r)}/resume?session_key=${encodeURIComponent(n)}`,{method:`POST`});if(!t.ok){Pt(`post-restart-resume`,{phase:`resume-rejected`,trigger:e,status:t.status});return}}catch(t){Pt(`post-restart-resume`,{phase:`resume-error`,trigger:e,error:t instanceof Error?t.name:`unknown`});return}let i=R.current;i?(R.current=null,te.current(i.message,void 0,void 0,!0),Pt(`post-restart-resume`,{phase:`marker-replayed`,trigger:e,actionId:i.actionId,durationMs:Date.now()-t})):Pt(`post-restart-resume`,{phase:`resumed`,trigger:e,durationMs:Date.now()-t})})().finally(()=>{z.current===n&&(z.current=null)});return z.current=n,n},[]);(0,U.useEffect)(()=>{function e(e){let t=e.detail,n=t?.actionId,r=t?.message;if(typeof n!=`string`||n.length===0||typeof r!=`string`||r.length===0){Pt(`post-restart-resume`,{phase:`event-bad-payload`,actionIdType:typeof n,messageType:typeof r});return}R.current={actionId:n,message:r,firedAt:Date.now()},B(`form-armed`)}return window.addEventListener(`admin-chat:post-restart-resume`,e),()=>{window.removeEventListener(`admin-chat:post-restart-resume`,e)}},[B]),(0,U.useEffect)(()=>(b.current=setTimeout(()=>{try{v?localStorage.setItem(Ft,v):localStorage.removeItem(Ft)}catch{}},300),()=>{b.current&&clearTimeout(b.current)}),[v]);function ae(){b.current&&clearTimeout(b.current);try{localStorage.removeItem(Ft)}catch{}}function oe(e){ee.current?.abort(),P(e),t&&fetch(`/api/admin/chat/cancel`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_key:t})}).catch(()=>{})}async function se(e){if(x||!t)return;P(!1),o(),S(!0);let i=new AbortController;ee.current=i,_([{role:`maxy`,events:[],timestamp:Date.now()}]);try{let o=await fetch(`/api/admin/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:e,session_key:t}),signal:i.signal});if(!o.ok){if(o.status===401){(await o.json().catch(()=>({}))).error===`auth_expired`?r(`connect-claude`):(n(null),r(`enter-pin`));return}let e=await o.json().catch(()=>({}));throw Error(typeof e.error==`string`?e.error:`Request failed (${o.status})`)}let s=!1;for await(let e of l(o)){if(e.type===`session_reset`){A.current=!0,ee.current?.abort();break}if(e.type===`server_shutdown`){s=!0,_(e=>{let t=[...e];return t[0]?.role===`maxy`&&(t[0]={...t[0],events:[...t[0].events??[],{type:`text`,content:`Server is restarting — reconnect will happen automatically.`}]}),t});continue}if(e.type===`conversation_attributed`){let t=e.conversationId;typeof t==`string`&&t.length>0&&a(t);continue}if(e.type===`session_expired`){_(e=>{let t=[...e];return t[0]?.role===`maxy`&&(t[0]={...t[0],events:[...t[0].events??[],{type:`text`,content:`This conversation can no longer be resumed — its history is gone. The next message will start a fresh exchange under the same conversation thread.`}]}),t});continue}if(e.type===`done`||e.type===`session_init`)continue;if(e.type===`flush_error`){let t=e.reason,n={"missing-userId":`This session lost its user binding during a service restart — please refresh the page to sign back in.`,"writer-failed":`Could not save this conversation to the graph (database write failed). Please try again or refresh.`,"missing-session":`This session was not recognised by the server (likely cleared during a service restart). Please refresh the page.`}[t]??`Could not persist this turn (${t}). Please refresh the page.`;_(e=>{let t=[...e];return t[0]?.role===`maxy`&&(t[0]={...t[0],events:[...t[0].events??[],{type:`text`,content:n}]}),t});continue}if(e.type===`persist_ack`){if(e.outcome===`fail`){let t=e.reason,n=t?`Could not save this turn to the graph (${t}). The agent's response is rendered above; refresh-then-retry to repersist.`:`Could not save this turn to the graph. The agent's response is rendered above; refresh-then-retry to repersist.`;_(e=>{let t=[...e];return t[0]?.role===`maxy`&&(t[0]={...t[0],events:[...t[0].events??[],{type:`text`,content:n}]}),t})}continue}let t=e;_(e=>{let n=[...e];return n[0]?.role===`maxy`&&(n[0]={...n[0],events:[...n[0].events??[],t]}),n})}s&&B(`sse-shutdown`)}catch(e){if(!(e instanceof DOMException&&e.name===`AbortError`)){console.error(`[chat] admin sendMessage failed:`,e);let t=e instanceof Error?e.message:String(e),n=Vt(e);_(e=>{let r=[...e],i=r[0];if(i?.role===`maxy`){let e=n?`Server is restarting — reconnect will happen automatically.`:`Error: ${t}`;r[0]={...i,events:[...i.events??[],{type:`text`,content:e}]}}else r.push({role:`maxy`,events:[{type:`text`,content:`Error: ${t}`}],timestamp:Date.now()});return r}),n&&B(`sse-shutdown`)}}finally{s(_),S(!1),A.current?(A.current=!1,ce()):h.current?.focus()}}function ce(){_([]),k(!1),c(),I(new Set),f(d.current),L([]),y(``),ae(),m(),P(!1),M(e=>e+1)}function le(e){I(new Set(e))}async function ue(){if(x||E||!t){console.warn(`[chat] startNewConversation blocked: streaming=${x} compacting=${E} sessionKey=${!!t}`);return}ce();try{let e=await fetch(`/api/admin/sessions/new?session_key=${encodeURIComponent(t)}`,{method:`POST`});if(e.ok){let t=await e.json();if(t.session_key){n(t.session_key);try{sessionStorage.setItem(It,t.session_key)}catch{}he(t.session_key,`chat`)}t.conversationId&&a(t.conversationId)}else console.error(`[chat] new conversation failed: ${e.status}`),_([{role:`maxy`,events:[{type:`text`,content:`Could not start a new conversation. Please try again.`}],timestamp:Date.now()}])}catch(e){console.error(`[chat] new conversation failed:`,e),_([{role:`maxy`,events:[{type:`text`,content:`Could not start a new conversation. Please try again.`}],timestamp:Date.now()}])}}function de(e,n,r,i){try{let e=JSON.parse(r);if(e._lifecycle&&t){fetch(`/api/admin/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:r,session_key:t})}).catch(()=>{});return}if(e.action===`save`)return}catch{}Et.has(i??``)||I(t=>new Set(t).add(`${e}_${n}`)),pe(i?JSON.stringify({_componentDone:!0,component:i,payload:r}):r,void 0,void 0,!0)}let fe=(0,U.useMemo)(()=>{let e=new Set(F),t=[];for(let e=0;e<g.length;e++){let n=g[e];if(!(n.role!==`maxy`||!n.events))for(let e=0;e<n.events.length;e++){let r=n.events[e];r.type===`component`&&r.name===`browser-viewer`&&t.push({key:`${n.timestamp}_${e}`})}}for(let n=0;n<t.length-1;n++)e.add(t[n].key);return e},[g,F]);async function pe(e,i,c,d,f){if(!e&&(i??p()).length===0&&!N||x||!t)return;if(ne.offer.active&&!f){let t=ne.dismissAndGetHeldMessage();if(t)return L([...T.current,{text:e,files:i??[],timestamp:c??Date.now()}]),pe(t,void 0,void 0,!0,{topicChangeAction:`continue`,heldMessage:t})}let v=N;P(!1),k(!1);let b=i??[...p()],C=b.map(e=>({attachmentId:``,filename:e.name,mimeType:e.type})),w={role:`admin`,content:e,attachments:C.length>0?C:void 0,timestamp:c??Date.now(),hidden:d||void 0},E=g.length;_(e=>[...e,w]),y(``),ae(),i||m(),o(v?u.current:0),S(!0);let D=new AbortController;ee.current=D;let O={role:`maxy`,events:[],timestamp:Date.now()};_(e=>[...e,O]);let j=E+1;try{let i,o={},s=c?new Date(c).toISOString():void 0;if(b.length>0){let n=new FormData;n.append(`message`,e),n.append(`session_key`,t),s&&n.append(`timestamp`,s);for(let e of b)n.append(`attachments`,e);i=n}else i=JSON.stringify({message:e,session_key:t,...s&&{timestamp:s},...f&&{topicChangeAction:f.topicChangeAction,heldMessage:f.heldMessage}}),o={"Content-Type":`application/json`};z.current&&await z.current;let u=await fetch(`/api/admin/chat`,{method:`POST`,headers:o,body:i,signal:D.signal});if(!u.ok){if(u.status===401){(await u.json().catch(()=>({}))).error===`auth_expired`?r(`connect-claude`):(n(null),r(`enter-pin`));return}let e=await u.json().catch(()=>({}));throw Error(typeof e.error==`string`?e.error:`Request failed (${u.status})`)}let d=!1;for await(let e of l(u)){if(e.type===`session_reset`){A.current=!0;continue}if(e.type===`topic_change_offer`){ne.handleOfferEvent(e.heldMessage,e.existingTopic,e.confidence);continue}if(e.type===`conversation_attributed`){let t=e.conversationId;typeof t==`string`&&t.length>0&&a(t);continue}if(e.type===`session_expired`){_(e=>{let t=[...e],n=t[j];return n&&n.role===`maxy`&&(t[j]={...n,events:[...n.events??[],{type:`text`,content:`This conversation can no longer be resumed — its history is gone. The next message will start a fresh exchange under the same conversation thread.`}]}),t});continue}if(e.type===`server_shutdown`){d=!0,_(e=>{let t=[...e],n=t[j];return n&&n.role===`maxy`&&(t[j]={...n,events:[...n.events??[],{type:`text`,content:`Server is restarting — reconnect will happen automatically.`}]}),t});continue}if(e.type===`done`||e.type===`session_init`)continue;if(e.type===`flush_error`){let t=e.reason,n={"missing-userId":`This session lost its user binding during a service restart — please refresh the page to sign back in.`,"writer-failed":`Could not save this conversation to the graph (database write failed). Please try again or refresh.`,"missing-session":`This session was not recognised by the server (likely cleared during a service restart). Please refresh the page.`}[t]??`Could not persist this turn (${t}). Please refresh the page.`;_(e=>{let t=[...e],r=t[j];return r&&r.role===`maxy`&&(t[j]={...r,events:[...r.events??[],{type:`text`,content:n}]}),t});continue}if(e.type===`persist_ack`){if(e.outcome===`fail`){let t=e.reason,n=t?`Could not save this turn to the graph (${t}). The agent's response is rendered above; refresh-then-retry to repersist.`:`Could not save this turn to the graph. The agent's response is rendered above; refresh-then-retry to repersist.`;_(e=>{let t=[...e],r=t[j];return r&&r.role===`maxy`&&(t[j]={...r,events:[...r.events??[],{type:`text`,content:n}]}),t})}continue}let t=e;_(e=>{let n=[...e],r=n[j];if(r&&r.role===`maxy`){let i=r.events??[];if(t.type===`component`&&i.some(e=>e.type===`component`&&e.name===t.name&&JSON.stringify(e.data)===JSON.stringify(t.data)))return e;n[j]={...r,events:[...i,t]}}return n})}d&&B(`sse-shutdown`)}catch(e){if(!(e instanceof DOMException&&e.name===`AbortError`)){console.error(`[chat] admin sendMessage failed:`,e);let t=e instanceof Error?e.message:String(e),n=Vt(e);_(e=>{let r=[...e],i=r[j];if(i&&i.role===`maxy`){let e=n?`Server is restarting — reconnect will happen automatically.`:`Error: ${t}`;r[j]={...i,events:[...i.events??[],{type:`text`,content:e}]}}return r}),n&&B(`sse-shutdown`)}}finally{if(s(_),S(!1),A.current)A.current=!1,ce();else{let e=T.current;if(e.length>0){let[t,...n]=e;L(n),te.current(t.text,t.files,t.timestamp)}else h.current?.focus()}}}te.current=pe;let me=(0,U.useCallback)(async()=>{if(!(!t||x||E)){D(!0);try{let e=await fetch(`/api/admin/compact`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_key:t})});for await(let t of l(e))if(t.type===`status`&&t.message){let e=t.message;_(t=>{let n=[...t],r=n[n.length-1];return r?.role===`maxy`&&(n[n.length-1]={...r,events:[...r.events??[],{type:`status`,message:e}]}),n})}else t.type===`done`&&t.ok&&k(!0)}finally{D(!1)}}},[t,x,E]);async function ge(){let e=ne.consumeOffer(`fresh`);e&&(await ue(),te.current(e.heldMessage))}function _e(){let e=ne.consumeOffer(`continue`);e&&pe(e.heldMessage,void 0,void 0,!0,{topicChangeAction:`continue`,heldMessage:e.heldMessage})}return{messages:g,setMessages:_,input:v,setInput:y,isStreaming:x,messageQueue:C,messageQueueRef:T,setQueue:L,isCompacting:E,conversationCompacted:O,greetingGeneration:j,wasPaused:N,sendMessageRef:te,submittedComponents:F,effectiveSubmitted:fe,stopStreaming:oe,sendSystemPrompt:se,sendMessage:pe,resetConversation:ce,startNewConversation:ue,seedSubmittedComponents:le,handleComponentSubmit:de,handleCompactNow:me,topicChangeOffer:ne.offer,handleTopicFreshStart:ge,handleTopicContinue:_e}}function Kt(){let[e,t]=(0,U.useState)([]),[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(null),o=(0,U.useRef)(null),s=(0,U.useCallback)(e=>{a(null);let n=e.map(x),r=n.find(e=>!L(e.type,Ot));if(r){a(`Unsupported file type: "${r.type}". Supported: images, PDF, plain text, markdown, CSV, calendar, zip, voice notes.`);return}let i=n.find(e=>e.size>kt);if(i){a(`"${i.name}" exceeds the 50 MB limit.`);return}t(e=>[...e,...n].slice(0,5))},[]);return{pendingFiles:e,setPendingFiles:t,isDragOver:n,attachError:i,setAttachError:a,fileInputRef:o,addFiles:s,clearFiles:(0,U.useCallback)(()=>{t([]),a(null)},[]),removeFile:(0,U.useCallback)(e=>{t(t=>t.filter((t,n)=>n!==e))},[]),onDragOver:(0,U.useCallback)(e=>{e.preventDefault(),r(!0)},[]),onDragLeave:(0,U.useCallback)(()=>{r(!1)},[]),onDrop:(0,U.useCallback)(e=>{e.preventDefault(),r(!1),s([...e.dataTransfer.files])},[s])}}var W=s();function qt({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,U.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,W.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,W.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 Jt(e){let{pin:t,setPin:n,confirmPin:r,setConfirmPin:i,showPin:a,setShowPin:o,pinLoading:s,pinError:c,pinInputRef:l,confirmPinInputRef:u,setPinFormRef:d,onSubmit:f,operatorName:p,setOperatorName:m}=e;return(0,W.jsx)(`div`,{className:`connect-page`,children:(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,R.productName]}),(0,W.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,R.productName,` who you are, then choose a PIN.`]}),(0,W.jsxs)(`form`,{ref:d,onSubmit:f,className:`connect-pin-form`,children:[(0,W.jsxs)(`div`,{className:`pin-input-row`,children:[(0,W.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:p,onChange:e=>m(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,W.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,W.jsxs)(`div`,{className:`pin-input-row`,children:[(0,W.jsx)(qt,{inputRef:l,value:t,onChange:n,onComplete:()=>u.current?.focus(),showPin:a}),(0,W.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,W.jsxs)(`div`,{className:`pin-input-row`,children:[(0,W.jsx)(qt,{inputRef:u,value:r,onChange:i,onComplete:()=>{},showPin:a}),(0,W.jsx)(E,{variant:`send`,type:`submit`,disabled:!t||!r||!p.trim(),loading:s,"aria-label":`Set PIN`,children:(0,W.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,W.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,W.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,W.jsx)(ye,{checked:a,onChange:()=>o(e=>!e),label:`Show PIN`})]}),c&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:c})]})})}function Yt(e){let{pin:t,setPin:n,showPin:r,setShowPin:i,pinLoading:a,pinError:o,pinInputRef:s,onSubmit:c,onChangePin:l}=e;return(0,W.jsx)(`div`,{className:`connect-page`,children:(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsx)(`h1`,{className:`connect-title`,children:R.productName}),(0,W.jsxs)(`form`,{onSubmit:c,className:`connect-pin-form`,children:[(0,W.jsxs)(`div`,{className:`pin-input-row`,children:[(0,W.jsx)(qt,{inputRef:s,value:t,onChange:n,onComplete:()=>{},showPin:r,autoFocus:!0}),(0,W.jsx)(E,{variant:`send`,type:`submit`,disabled:!t,loading:a,children:(0,W.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,W.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,W.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,W.jsxs)(`div`,{className:`pin-options`,children:[(0,W.jsx)(ye,{checked:r,onChange:()=>i(e=>!e),label:`Show PIN`}),(0,W.jsx)(E,{type:`button`,variant:`ghost`,onClick:l,children:`Change PIN`})]})]}),o&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:o})]})})}function Xt(e){let{accounts:t,loading:n,error:r,onSelect:i}=e;return(0,W.jsx)(`div`,{className:`connect-page`,children:(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsx)(`h1`,{className:`connect-title`,children:R.productName}),(0,W.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,W.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,W.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>i(e.accountId),disabled:n,type:`button`,children:[(0,W.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,W.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,W.jsx)(pe,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function Zt(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:o,setAppState:s}=e,[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(!1);async function f(){d(!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?l(!0):e.error&&o(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),o(`Could not launch browser.`)}d(!1)}async function p(){i(!0),o(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),l(!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`})}),s(`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 m(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),o(``)}return t||c?(0,W.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,W.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,W.jsx)(`button`,{onClick:m,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,W.jsx)(`button`,{onClick:()=>l(!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,W.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,W.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,W.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,W.jsx)(`div`,{style:{marginTop:`12px`},children:(0,W.jsx)(E,{variant:`primary`,onClick:p,disabled:r,children:r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,W.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,W.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,W.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(0,W.jsxs)(`div`,{className:`connect-page`,children:[(0,W.jsx)(`button`,{onClick:()=>s(`onboarding-choice`),style:{position:`fixed`,top:`16px`,left:`16px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Back to setup choice`,children:`← Back`}),(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsxs)(`div`,{className:`connect-logos`,children:[(0,W.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,W.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,W.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,W.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,W.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsx)(`span`,{className:`connect-logo-label`,children:R.productName})]})]}),(0,W.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,R.productName]}),(0,W.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,W.jsx)(E,{variant:`primary`,onClick:p,disabled:r,children:r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,W.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,W.jsx)(`button`,{onClick:f,disabled:u,style:{marginTop:`12px`,background:`none`,border:`none`,color:`var(--color-primary, #666)`,fontSize:`13px`,cursor:`pointer`,textDecoration:`underline`,textUnderlineOffset:`3px`},children:u?`Launching…`:`Open browser first`}),a&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:a})]})]})}function Qt({setAppState:e,setOnboardingComplete:t}){let[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(``);async function o(n){r(!0),a(``);try{let r=await fetch(`/api/onboarding/skip`,{method:`POST`,headers:n===`minimal`?{"Content-Type":`application/json`}:{},body:n===`minimal`?JSON.stringify({minimal:!0}):void 0});if(!r.ok){a((await r.json().catch(()=>({}))).error||`Failed to apply defaults.`);return}t(!0),e(`connect-claude`)}catch(e){console.error(`[admin] skip onboarding error:`,e),a(`Could not apply defaults.`)}finally{r(!1)}}function s(){e(`connect-claude`)}return(0,W.jsx)(`div`,{className:`connect-page`,children:(0,W.jsxs)(`div`,{className:`connect-content`,children:[(0,W.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,W.jsx)(`img`,{src:y,alt:R.productName,className:`connect-logo connect-logo--maxy`}),!R.logoContainsName&&(0,W.jsx)(`span`,{className:`connect-logo-label`,children:R.productName})]}),(0,W.jsx)(`h1`,{className:`connect-title`,children:`How would you like to get started?`}),(0,W.jsx)(`p`,{className:`connect-subtitle`,style:{fontSize:`0.8rem`,maxWidth:`320px`},children:`Defaults: core plugins only, auto-detected timezone, concise output style, and a minimal personality. No WiFi or optional plugins. Minimal also skips remote access, public-agent API key, and business profile.`}),(0,W.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`,width:`100%`,maxWidth:`320px`,alignItems:`center`},children:[(0,W.jsx)(E,{variant:`primary`,onClick:()=>o(`default`),disabled:n,children:n?`Applying defaults…`:`Use defaults`}),(0,W.jsx)(`button`,{onClick:s,disabled:n,style:{background:`none`,border:`none`,padding:`8px`,cursor:`pointer`,fontSize:`0.95rem`,color:`var(--text-secondary, #666)`,textDecoration:`none`},children:`Guided setup`}),(0,W.jsx)(`button`,{onClick:()=>o(`minimal`),disabled:n,style:{background:`none`,border:`none`,padding:`8px`,cursor:`pointer`,fontSize:`0.95rem`,color:`var(--text-secondary, #666)`,textDecoration:`none`},children:`Minimal`})]}),(0,W.jsx)(`p`,{className:`connect-subtitle`,style:{marginTop:`12px`},children:`You can change any setting later through conversation.`}),i&&(0,W.jsx)(`p`,{className:`admin-pin-error`,children:i})]})})}function $t({data:e,onSubmit:t,submitted:n}){let r=e,[i,a]=(0,U.useState)(`Submitted`);return r?.title?(0,W.jsx)(j,{submitted:n,submittedLabel:i,actions:[{label:r.rejectLabel??`Reject`,variant:`ghost`,onClick:()=>{n||(a(`Rejected`),t(r.rejectMessage??`Rejected: ${r.title}`))}},{label:r.confirmLabel??`Approve`,variant:`primary`,onClick:()=>{n||(a(`Approved`),t(r.confirmMessage??`Approved: ${r.title}`))}}],children:(0,W.jsxs)(`div`,{className:`confirm`,children:[(0,W.jsx)(`div`,{className:`confirm__title`,children:r.title}),r.description&&(0,W.jsx)(`div`,{className:`confirm__desc`,children:r.description}),r.items&&r.items.length>0&&(0,W.jsx)(`div`,{className:`confirm__items`,children:r.items.map((e,t)=>(0,W.jsxs)(`div`,{className:`confirm__item`,children:[(0,W.jsx)(`span`,{className:`confirm__item-label`,children:e.label}),(0,W.jsx)(`span`,{className:`confirm__item-value`,children:e.value})]},t))})]})}):null}function en({data:e,onSubmit:t,submitted:n}){let r=e,i=(0,U.useRef)(!1),a=!!(r?.title&&Array.isArray(r?.fields)&&r.fields.length>0),o=r?.actions&&r.actions.length>0;return(0,U.useEffect)(()=>{a&&!o&&!n&&!i.current&&(i.current=!0,t(``))},[a,o,n,t]),a?(0,W.jsx)(j,{submitted:n,submittedLabel:`Done`,actions:o?r.actions.map(e=>({label:e.label,variant:e.variant,onClick:()=>{n||t(e.message)}})):[],children:(0,W.jsxs)(`div`,{className:`info-card`,children:[(0,W.jsxs)(`div`,{className:`info-card__header`,children:[(0,W.jsx)(`div`,{className:`info-card__title`,children:r.title}),r.subtitle&&(0,W.jsx)(`div`,{className:`info-card__subtitle`,children:r.subtitle})]}),(0,W.jsx)(`div`,{className:`info-card__fields`,children:r.fields.map((e,t)=>(0,W.jsxs)(`div`,{className:`info-card__field`,children:[(0,W.jsx)(`span`,{className:`info-card__field-label`,children:e.label}),(0,W.jsx)(`span`,{className:`info-card__field-value${e.type===`status`?` info-card__field-value--status`:``}`,children:e.type===`link`?(0,W.jsx)(`a`,{href:e.value,target:`_blank`,rel:`noopener noreferrer`,children:e.value}):e.value})]},t))})]})}):null}function tn({data:e,onSubmit:t,submitted:n}){let r=e,i=Array.isArray(r?.items)?r.items:[],[a,o]=(0,U.useState)(new Set),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(`Done`);if(i.length===0)return null;let d=n||s,f=(e,n)=>{d||a.has(e)||(o(t=>new Set(t).add(e)),t(n))};return(0,W.jsx)(j,{submitted:d,submittedLabel:l,actions:[{label:`Done`,variant:`primary`,onClick:()=>{d||(c(!0),u(`Done`),t(r?.doneMessage??`Done`))}}],children:(0,W.jsxs)(`div`,{className:`action-list`,children:[r?.title&&(0,W.jsx)(`div`,{className:`action-list__title`,children:r.title}),(0,W.jsx)(`div`,{className:`action-list__items`,children:i.map(e=>(0,W.jsxs)(`div`,{className:`action-list__item${a.has(e.id)?` action-list__item--acted`:``}`,children:[(0,W.jsxs)(`div`,{className:`action-list__item-info`,children:[(0,W.jsx)(`span`,{className:`action-list__item-label`,children:e.label}),e.description&&(0,W.jsx)(`span`,{className:`action-list__item-desc`,children:e.description})]}),(0,W.jsxs)(`div`,{className:`action-list__item-right`,children:[e.status&&(0,W.jsx)(`span`,{className:`action-list__item-status`,children:e.status}),(0,W.jsx)(`div`,{className:`action-list__item-actions`,children:e.actions.map((t,n)=>(0,W.jsx)(E,{variant:t.variant===`danger`?`danger`:t.variant===`ghost`?`ghost`:`primary`,size:`sm`,disabled:d||a.has(e.id),onClick:n=>{n.stopPropagation(),f(e.id,t.message)},children:t.label},n))})]})]},e.id))})]})})}function nn({className:e,children:t,...n}){let r=e?`dropdown ${e}`:`dropdown`;return(0,W.jsx)(`select`,{...n,className:r,children:t})}function rn({data:e,onSubmit:t,submitted:n}){let r=e,i=Array.isArray(r?.fields)?r.fields:[],[a,o]=(0,U.useState)({}),[s,c]=(0,U.useState)({}),[l,u]=(0,U.useState)({}),[d,f]=(0,U.useState)(`Submitted`);if((0,U.useEffect)(()=>{i.length!==0&&(o(e=>{let t={...e};return i.forEach(e=>{e.type!==`list`&&(e.name in t||(t[e.name]=e.defaultValue??(e.type===`checkbox`?!1:``)))}),t}),c(e=>{let t={...e};return i.forEach(e=>{e.type===`list`&&(e.name in t||(t[e.name]=Array.isArray(e.defaultValue)?e.defaultValue:[]))}),t}))},[i]),i.length===0)return null;let p=(e,t)=>{n||o(n=>({...n,[e]:t}))},m=i.filter(e=>e.required&&e.type!==`list`).every(e=>{let t=a[e.name];return e.type===`checkbox`?t===!0:typeof t==`string`&&t.trim()!==``}),h=()=>{if(!m||n)return;f(`Submitted`);let e=r?.submitMessage??`Form submitted: {{json}}`,i=JSON.stringify(a),o=e;for(let[e,t]of Object.entries(a))o=o.replace(`{{${e}}}`,()=>String(t));o=o.replace(`{{json}}`,()=>i),o=o.replace(`{{values}}`,()=>i),t(o)},g=e=>e.description?`${e.label} — ${e.description}`:e.label,_=e=>{let r=(l[e.name]??``).trim();!r||n||(c(t=>({...t,[e.name]:[...t[e.name]??[],r]})),u(t=>({...t,[e.name]:``})),e.addMessage&&t(e.addMessage.replace(`{{value}}`,r)))},v=(e,r)=>{n||(c(t=>({...t,[e.name]:(t[e.name]??[]).filter(e=>e!==r)})),e.removeMessage&&t(e.removeMessage.replace(`{{value}}`,r)))};return(0,W.jsx)(j,{submitted:n,submittedLabel:d,actions:[{label:r?.submitLabel??`Submit`,variant:`primary`,disabled:!m,onClick:h}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[r?.title&&(0,W.jsx)(`div`,{className:`form-input__title`,children:r.title}),r?.description&&(0,W.jsx)(`div`,{className:`form-input__desc`,children:r.description}),(0,W.jsx)(`div`,{className:`form-input__fields`,children:i.map(e=>(0,W.jsx)(`div`,{className:`form-input__field`,children:e.type===`checkbox`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ye,{checked:a[e.name]===!0,onChange:t=>p(e.name,t),label:e.label,disabled:n}),e.description&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:e.description})]}):e.type===`list`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`label`,{className:`form-input__label`,children:e.label}),e.description&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:e.description}),(0,W.jsxs)(`div`,{className:`form-input__list`,children:[(s[e.name]??[]).map(t=>(0,W.jsxs)(`div`,{className:`form-input__list-item`,children:[(0,W.jsx)(`span`,{className:`form-input__list-item-text`,children:t}),(0,W.jsx)(`button`,{type:`button`,className:`form-input__list-item-remove`,onClick:()=>v(e,t),disabled:n,"aria-label":`Remove ${t}`,children:`×`})]},t)),(0,W.jsxs)(`div`,{className:`form-input__list-add`,children:[(0,W.jsx)(`input`,{className:`form-input__input`,type:`text`,placeholder:e.addPlaceholder??``,value:l[e.name]??``,onChange:t=>u(n=>({...n,[e.name]:t.target.value})),onKeyDown:t=>{t.key===`Enter`&&(t.preventDefault(),_(e))},disabled:n}),(0,W.jsx)(`button`,{type:`button`,className:`form-input__list-add-btn`,onClick:()=>_(e),disabled:n||!(l[e.name]??``).trim(),children:`Add`})]})]})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`form-${e.name}`,children:[e.label,e.required&&(0,W.jsx)(`span`,{className:`form-input__required`,children:`*`})]}),e.description&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:e.description}),e.type===`textarea`?(0,W.jsx)(`textarea`,{id:`form-${e.name}`,className:`form-input__textarea`,placeholder:e.placeholder,value:a[e.name]??``,onChange:t=>p(e.name,t.target.value),disabled:n,rows:3}):e.type===`select`?(0,W.jsxs)(nn,{id:`form-${e.name}`,className:`form-input__select`,value:a[e.name]??``,onChange:t=>p(e.name,t.target.value),disabled:n,children:[(0,W.jsx)(`option`,{value:``,children:e.placeholder??`Select...`}),e.options?.map(e=>(0,W.jsx)(`option`,{value:e.value,children:g(e)},e.value))]}):(0,W.jsx)(`input`,{id:`form-${e.name}`,className:`form-input__input`,type:e.type,placeholder:e.placeholder,value:a[e.name]??``,onChange:t=>p(e.name,t.target.value),disabled:n})]})},e.name))})]})})}var an={pending:`○`,active:`◉`,completed:`✓`,failed:`✗`,skipped:`–`};function on({data:e,onSubmit:t,submitted:n}){let r=e,i=Array.isArray(r?.steps)?r.steps:[],a=(0,U.useRef)(!1),o=i.length>0&&i.every(e=>e.status===`completed`||e.status===`failed`||e.status===`skipped`);return(0,U.useEffect)(()=>{o&&!n&&!a.current&&(a.current=!0,t(r?.completedMessage??`All steps completed`))},[o,n,t,r?.completedMessage]),i.length===0?null:(0,W.jsxs)(`div`,{className:`progress-tracker${n?` progress-tracker--submitted`:``}`,children:[r?.title&&(0,W.jsx)(`div`,{className:`progress-tracker__title`,children:r.title}),(0,W.jsx)(`div`,{className:`progress-tracker__steps`,children:i.map((e,t)=>(0,W.jsxs)(`div`,{className:`progress-tracker__step progress-tracker__step--${e.status}`,children:[(0,W.jsx)(`span`,{className:`progress-tracker__icon`,children:an[e.status]??`○`}),(0,W.jsxs)(`div`,{className:`progress-tracker__step-info`,children:[(0,W.jsx)(`span`,{className:`progress-tracker__step-label`,children:e.label}),e.description&&(0,W.jsx)(`span`,{className:`progress-tracker__step-desc`,children:e.description})]})]},t))})]})}function sn({handlePopout:e,disabled:t=!1}){let n=(0,U.useCallback)(()=>{delete document.body.dataset.dragPopoutActive},[]);(0,U.useEffect)(()=>()=>n(),[n]);let r=(0,U.useCallback)(e=>{if(t){e.preventDefault();return}let n=e.target;if(n.closest(`.editor-base__actions`)||n.closest(`.browser-viewer__actions`)){e.preventDefault();return}if(!document.querySelector(`.chat-messages`)){e.preventDefault();return}e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,``),document.body.dataset.dragPopoutActive=`true`},[t,n]),i=(0,U.useCallback)(t=>{if(n(),t.clientX===0&&t.clientY===0)return;let r=document.querySelector(`.chat-messages`);if(!r)return;let i=r.getBoundingClientRect();(t.clientX<i.left||t.clientX>i.right||t.clientY<i.top||t.clientY>i.bottom)&&e()},[e,n]);return t?{draggable:!1,onDragStart:()=>{},onDragEnd:()=>{}}:{draggable:!0,onDragStart:r,onDragEnd:i}}function cn(e){(0,U.useEffect)(()=>{let t=Date.now(),n=`/api/admin/browser-iframe/event`,r={brand:R.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])}function ln({data:e,onSubmit:t,submitted:n,isStreaming:r}){St(),cn(`viewer`);let{title:i}=e??{},[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(!1),d=(0,U.useRef)(null),f=(0,U.useRef)(null),p=i??R.productName,m=(0,U.useCallback)(()=>{f.current&&=(clearInterval(f.current),null),d.current&&!d.current.closed&&d.current.close(),d.current=null,c(!1)},[]),g=(0,U.useCallback)(()=>{o(!1),u(!1);let e=`/vnc-popout.html?title=${encodeURIComponent(p)}`,t=window.open(e,`maxy-vnc-popout`,`width=1024,height=768`);t&&(d.current=t,c(!0),f.current=setInterval(()=>{d.current?.closed&&(m(),u(!0))},500))},[p,m]),_=(0,U.useCallback)(()=>{m(),o(!1),u(!0)},[m]),v=(0,U.useCallback)(()=>{m(),u(!1)},[m]),y=(0,U.useCallback)(()=>{u(!1)},[]),b=(0,U.useCallback)(()=>{m(),u(!1),o(!0)},[m]),x=(0,U.useCallback)(()=>o(!1),[]);(0,U.useEffect)(()=>{if(!a)return;let e=e=>{e.key===`Escape`&&x()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a,x]),(0,U.useEffect)(()=>()=>m(),[m]);let S=sn({handlePopout:g,disabled:s||a});if(n)return null;let C=`/vnc-viewer.html`;return a?(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen`,children:[(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen__bar`,...S,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer-fullscreen__title`,children:p}),(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen__actions`,children:[(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:g,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:at,onClick:x,"aria-label":`Exit full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ot,onClick:_,"aria-label":`Minimise`})]})]}),(0,W.jsx)(`iframe`,{src:C,className:`browser-viewer-fullscreen__iframe`,title:p})]}):s?(0,W.jsx)(`div`,{className:`browser-viewer browser-viewer--popout`,children:(0,W.jsxs)(`div`,{className:`browser-viewer__bar`,...S,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:p}),(0,W.jsxs)(`div`,{className:`browser-viewer__actions`,children:[(0,W.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:mt,onClick:v,"aria-label":`Pop back in`})]})]})}):l?(0,W.jsxs)(`div`,{className:`browser-viewer browser-viewer--minimised`,onClick:y,role:`button`,tabIndex:0,onKeyDown:e=>e.key===`Enter`&&y(),children:[(0,W.jsxs)(`div`,{className:`browser-viewer__bar`,...S,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:p}),(0,W.jsxs)(`div`,{className:`browser-viewer__actions`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:g,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:et,onClick:b,"aria-label":`Full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:dt,onClick:y,"aria-label":`Expand`})]})]}),(0,W.jsx)(`iframe`,{src:C,className:`browser-viewer__iframe`,title:p,"aria-hidden":`true`})]}):(0,W.jsxs)(`div`,{className:`browser-viewer`,children:[(0,W.jsxs)(`div`,{className:`browser-viewer__bar`,...S,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),i&&(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:i}),(0,W.jsxs)(`div`,{className:`browser-viewer__actions`,children:[(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:g,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:et,onClick:b,"aria-label":`Full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ot,onClick:_,"aria-label":`Minimise`})]})]}),(0,W.jsx)(`iframe`,{src:C,className:`browser-viewer__iframe`,title:p})]})}var un=t((e=>{var t=a();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,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),a=r[0].inst,l=r[1];return s(function(){a.value=n,a.getSnapshot=t,u(a)&&l({inst:a})},[e,n,t]),o(function(){return u(a)&&l({inst:a}),e(function(){u(a)&&l({inst:a})})},[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})),dn=t(((e,t)=>{t.exports=un()})),fn=dn(),pn=e(n(),1);function mn(e){this.content=e}mn.prototype={constructor:mn,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 mn(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 mn(n)},addToStart:function(e,t){return new mn([e,t].concat(this.remove(e).content))},addToEnd:function(e,t){var n=this.remove(e).content.slice();return n.push(e,t),new mn(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 mn(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=mn.from(e),e.size?new mn(e.content.concat(this.subtract(e).content)):this},append:function(e){return e=mn.from(e),e.size?new mn(this.subtract(e).content.concat(e.content)):this},subtract:function(e){var t=this;e=mn.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}},mn.from=function(e){if(e instanceof mn)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new mn(t)};function hn(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=hn(i.content,a.content,n+1);if(e!=null)return e}n+=i.nodeSize}}function gn(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=gn(o.content,s.content,n-1,r-1);if(e)return e}n-=c,r-=c}}var G=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 hn(this,e,t)}findDiffEnd(e,t=this.size,n=e.size){return gn(this,e,t,n)}findIndex(e){if(e==0)return vn(0,e);if(e==this.size)return vn(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?vn(t+1,i):vn(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)`:``))}};G.empty=new G([],0);var _n={index:0,offset:0};function vn(e,t){return _n.index=e,_n.offset=t,_n}function yn(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(!yn(e[n],t[n]))return!1}else{for(let n in e)if(!(n in t)||!yn(e[n],t[n]))return!1;for(let n in t)if(!(n in e))return!1}return!0}var bn=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&&yn(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}};bn.none=[];var xn=class extends Error{},K=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=Cn(this.content,t+this.openStart,n);return r&&new e(r,this.openStart,this.openEnd)}removeBetween(t,n){return new e(Sn(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(G.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)}};K.empty=new K(G.empty,0,0);function Sn(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(Sn(a.content,t-i-1,n-i-1)))}function Cn(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=Cn(o.content,t-a-1,n,o);return s&&e.replaceChild(i,o.copy(s))}function wn(e,t,n){if(n.openStart>e.depth)throw new xn(`Inserted content deeper than insertion position`);if(e.depth-n.openStart!=t.depth-n.openEnd)throw new xn(`Inconsistent open depths`);return Tn(e,t,n,0)}function Tn(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=Tn(e,t,n,r+1);return a.copy(a.content.replaceChild(i,o))}else if(!n.content.size)return An(a,Mn(e,t,r));else if(!n.openStart&&!n.openEnd&&e.depth==r&&t.depth==r){let r=e.parent,i=r.content;return An(r,i.cut(0,e.parentOffset).append(n.content).append(i.cut(t.parentOffset)))}else{let{start:i,end:o}=Nn(n,e);return An(a,jn(e,i,o,t,r))}}function En(e,t){if(!t.type.compatibleContent(e.type))throw new xn(`Cannot join `+t.type.name+` onto `+e.type.name)}function Dn(e,t,n){let r=e.node(n);return En(r,t.node(n)),r}function On(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 kn(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&&(On(e.nodeAfter,r),a++));for(let e=a;e<o;e++)On(i.child(e),r);t&&t.depth==n&&t.textOffset&&On(t.nodeBefore,r)}function An(e,t){return e.type.checkContent(t),e.copy(t)}function jn(e,t,n,r,i){let a=e.depth>i&&Dn(e,t,i+1),o=r.depth>i&&Dn(n,r,i+1),s=[];return kn(null,e,i,s),a&&o&&t.index(i)==n.index(i)?(En(a,o),On(An(a,jn(e,t,n,r,i+1)),s)):(a&&On(An(a,Mn(e,t,i+1)),s),kn(t,n,i,s),o&&On(An(o,Mn(n,r,i+1)),s)),kn(r,null,i,s),new G(s)}function Mn(e,t,n){let r=[];return kn(null,e,n,r),e.depth>n&&On(An(Dn(e,t,n+1),Mn(e,t,n+1)),r),kn(t,null,n,r),new G(r)}function Nn(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(G.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}var Pn=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 bn.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 Rn(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=Ln.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 Ln.set(t,r=new Fn);let i=r.elts[r.i]=e.resolve(t,n);return r.i=(r.i+1)%In,i}},Fn=class{constructor(){this.elts=[],this.i=0}},In=12,Ln=new WeakMap,Rn=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)}},zn=Object.create(null),Bn=class e{constructor(e,t,n,r=bn.none){this.type=e,this.attrs=t,this.marks=r,this.content=n||G.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&&yn(this.attrs,t||e.defaultAttrs||zn)&&bn.sameSet(this.marks,n||bn.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 K.empty;let r=this.resolve(e),i=this.resolve(t),a=n?0:r.sharedDepth(t),o=r.start(a);return new K(r.node(a).content.cut(r.pos-o,i.pos-o),r.depth-a,i.depth-a)}replace(e,t,n){return wn(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 Pn.resolveCached(this,e)}resolveNoCache(e){return Pn.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()+`)`),Hn(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=G.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=bn.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(!bn.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=G.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,r,n);return i.type.checkAttrs(i.attrs),i}};Bn.prototype.text=void 0;var Vn=class e extends Bn{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):Hn(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 Hn(e,t){for(let n=e.length-1;n>=0;n--)t=e[n].type.name+`(`+t+`)`;return t}var Un=class e{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(t,n){let r=new Wn(t,n);if(r.next==null)return e.empty;let i=Gn(r);r.next&&r.err(`Unexpected trailing text`);let a=tr(Qn(i));return nr(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 G.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
|
`)}};Un.empty=new Un(!0);var Wn=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 Gn(e){let t=[];do t.push(Kn(e));while(e.eat(`|`));return t.length==1?t[0]:{type:`choice`,exprs:t}}function Kn(e){let t=[];do t.push(qn(e));while(e.next&&e.next!=`)`&&e.next!=`|`);return t.length==1?t[0]:{type:`seq`,exprs:t}}function qn(e){let t=Zn(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=Yn(e,t);else break;return t}function Jn(e){/\D/.test(e.next)&&e.err(`Expected number, got '`+e.next+`'`);let t=Number(e.next);return e.pos++,t}function Yn(e,t){let n=Jn(e),r=n;return e.eat(`,`)&&(r=e.next==`}`?-1:Jn(e)),e.eat(`}`)||e.err(`Unclosed braced range`),{type:`range`,min:n,max:r,expr:t}}function Xn(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 Zn(e){if(e.eat(`(`)){let t=Gn(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=Xn(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 Qn(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 $n(e,t){return t-e}function er(e,t){let n=[];return r(t),n.sort($n);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 tr(e){let t=Object.create(null);return n(er(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]);er(e,n).forEach(e=>{r||i.push([t,r=[]]),r.indexOf(e)==-1&&r.push(e)})})});let a=t[r.join(`,`)]=new Un(r.indexOf(e.length-1)>-1);for(let e=0;e<i.length;e++){let r=i[e][1].sort($n);a.next.push({type:i[e][0],next:t[r.join(`,`)]||n(r)})}return a}}function nr(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 rr(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 ir(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 ar(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 or(e,t){let n=Object.create(null);if(t)for(let r in t)n[r]=new lr(e,r,t[r]);return n}var sr=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=or(e,n.attrs),this.defaultAttrs=rr(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==Un.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:ir(this.attrs,e)}create(e=null,t,n){if(this.isText)throw Error(`NodeType.create can't construct text nodes`);return new Bn(this,this.computeAttrs(e),G.from(t),bn.setFrom(n))}createChecked(e=null,t,n){return t=G.from(t),this.checkContent(t),new Bn(this,this.computeAttrs(e),t,bn.setFrom(n))}createAndFill(e=null,t,n){if(e=this.computeAttrs(e),t=G.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(G.empty,!0);return i?new Bn(this,e,t.append(i),bn.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){ar(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:bn.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 cr(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 lr=class{constructor(e,t,n){this.hasDefault=Object.prototype.hasOwnProperty.call(n,`default`),this.default=n.default,this.validate=typeof n.validate==`string`?cr(e,t,n.validate):n.validate}get isRequired(){return!this.hasDefault}},ur=class e{constructor(e,t,n,r){this.name=e,this.rank=t,this.schema=n,this.spec=r,this.attrs=or(e,r.attrs),this.excluded=null;let i=rr(this.attrs);this.instance=i?new bn(this,i):null}create(e=null){return!e&&this.instance?this.instance:new bn(this,ir(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){ar(this.attrs,e,`mark`,this.name)}excludes(e){return this.excluded.indexOf(e)>-1}},dr=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=mn.from(e.nodes),t.marks=mn.from(e.marks||{}),this.nodes=sr.compile(this.spec.nodes,this),this.marks=ur.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]=Un.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?fr(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==``?[]:fr(this,n.split(` `))}this.nodeFromJSON=e=>Bn.fromJSON(this,e),this.markFromJSON=e=>bn.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 sr))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 Vn(n,n.defaultAttrs,e,bn.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 fr(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 pr(e){return e.tag!=null}function mr(e){return e.style!=null}var hr=class e{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let n=this.matchedStyles=[];t.forEach(e=>{if(pr(e))this.tags.push(e);else if(mr(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 wr(this,t,!1);return n.addAll(e,bn.none,t.from,t.to),n.finish()}parseSlice(e,t={}){let n=new wr(this,t,!0);return n.addAll(e,bn.none,t.from,t.to),K.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(Er(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=Dr(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=Dr(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)))}},gr={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},_r={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},vr={ol:!0,ul:!0},yr=1,br=2,xr=4;function Sr(e,t,n){return t==null?e&&e.whitespace==`pre`?yr|br:n&~xr:(t?yr:0)|(t===`full`?br:0)}var Cr=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=bn.none,this.match=i||(a&xr?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(G.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&yr)){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=G.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(G.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&&!gr.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}},wr=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=Sr(null,t.preserveWhitespace,0)|(n?xr:0);i=r?new Cr(r.type,r.attrs,bn.none,!0,t.topMatch||r.type.contentMatch,a):n?new Cr(null,null,bn.none,!0,null,a):new Cr(e.schema.topNodeType,null,bn.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&br?`full`:this.localPreserveWS||(r.options&yr)>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;vr.hasOwnProperty(a)&&this.parser.normalizeLists&&Tr(e);let s=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(o=this.parser.matchTag(e,this,n));out:if(s?s.ignore:_r.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(gr.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=bn.none;for(let i of r.concat(e.marks))(t.type?t.type.allowsMarkType(i.type):Or(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=Sr(e,i,a.options);a.options&xr&&a.content.length==0&&(o|=xr);let s=bn.none;return n=n.filter(t=>(a.type?a.type.allowsMarkType(t.type):Or(t.type,e))?(s=t.addToSet(s),!1):!0),this.nodes.push(new Cr(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|=yr);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 Tr(e){for(let t=e.firstChild,n=null;t;t=t.nextSibling){let e=t.nodeType==1?t.nodeName.toLowerCase():null;e&&vr.hasOwnProperty(e)&&n?(n.appendChild(t),t=n):e==`li`?n=t:e&&(n=null)}}function Er(e,t){return(e.matches||e.msMatchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector).call(e,t)}function Dr(e){let t={};for(let n in e)t[n]=e[n];return t}function Or(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 kr=class e{constructor(e,t){this.nodes=e,this.marks=t}serializeFragment(e,t={},n){n||=jr(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}=Fr(jr(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&&Fr(jr(n),r(e,t),null,e.attrs)}static renderSpec(e,t,n=null,r){return Fr(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=Ar(e.nodes);return t.text||=e=>e.text,t}static marksFromSchema(e){return Ar(e.marks)}};function Ar(e){let t={};for(let n in e){let r=e[n].spec.toDOM;r&&(t[n]=r)}return t}function jr(e){return e.document||window.document}var Mr=new WeakMap;function Nr(e){let t=Mr.get(e);return t===void 0&&Mr.set(e,t=Pr(e)),t}function Pr(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 Fr(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=Nr(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}=Fr(e,a,n,r);if(c.appendChild(t),i){if(s)throw RangeError(`Multiple content holes`);s=i}}}return{dom:c,contentDOM:s}}var Ir=65535,Lr=2**16;function Rr(e,t){return e+t*Lr}function zr(e){return e&Ir}function Br(e){return(e-(e&Ir))/Lr}var Vr=1,Hr=2,Ur=4,Wr=8,Gr=class{constructor(e,t,n){this.pos=e,this.delInfo=t,this.recover=n}get deleted(){return(this.delInfo&Wr)>0}get deletedBefore(){return(this.delInfo&(Vr|Ur))>0}get deletedAfter(){return(this.delInfo&(Hr|Ur))>0}get deletedAcross(){return(this.delInfo&Ur)>0}},Kr=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=zr(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+Br(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:Rr(o/3,e-s),f=e==s?Hr:e==u?Vr:Ur;return(t<0?e!=s:e!=u)&&(f|=Wr),new Gr(a,f,d)}r+=l-c}return n?e+r:new Gr(e+r,0,null)}touches(e,t){let n=0,r=zr(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])}};Kr.empty=new Kr([]);var qr=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 Gr(e,r,null)}},Jr=Object.create(null),Yr=class{getMap(){return Kr.empty}merge(e){return null}static fromJSON(e,t){if(!t||!t.stepType)throw RangeError(`Invalid input for Step.fromJSON`);let n=Jr[t.stepType];if(!n)throw RangeError(`No step type ${t.stepType} defined`);return n.fromJSON(e,t)}static jsonID(e,t){if(e in Jr)throw RangeError(`Duplicate use of step JSON ID `+e);return Jr[e]=t,t.prototype.jsonID=e,t}},Xr=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 xn)return e.fail(t.message);throw t}}};function Zr(e,t,n){let r=[];for(let i=0;i<e.childCount;i++){let a=e.child(i);a.content.size&&(a=a.copy(Zr(a.content,t,a))),a.isInline&&(a=t(a,n,i)),r.push(a)}return G.fromArray(r)}var Qr=class e extends Yr{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 K(Zr(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 Xr.fromReplace(e,this.from,this.to,i)}invert(){return new $r(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))}};Yr.jsonID(`addMark`,Qr);var $r=class e extends Yr{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 K(Zr(t.content,e=>e.mark(this.mark.removeFromSet(e.marks)),e),t.openStart,t.openEnd);return Xr.fromReplace(e,this.from,this.to,n)}invert(){return new Qr(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))}};Yr.jsonID(`removeMark`,$r);var ei=class e extends Yr{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return Xr.fail(`No node at mark step's position`);let n=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return Xr.fromReplace(e,this.pos,this.pos+1,new K(G.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 ti(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))}};Yr.jsonID(`addNodeMark`,ei);var ti=class e extends Yr{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return Xr.fail(`No node at mark step's position`);let n=t.type.create(t.attrs,null,this.mark.removeFromSet(t.marks));return Xr.fromReplace(e,this.pos,this.pos+1,new K(G.from(n),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);return!t||!this.mark.isInSet(t.marks)?this:new ei(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))}};Yr.jsonID(`removeNodeMark`,ti);var ni=class e extends Yr{constructor(e,t,n,r=!1){super(),this.from=e,this.to=t,this.slice=n,this.structure=r}apply(e){return this.structure&&ii(e,this.from,this.to)?Xr.fail(`Structure replace would overwrite content`):Xr.fromReplace(e,this.from,this.to,this.slice)}getMap(){return new Kr([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?K.empty:new K(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?K.empty:new K(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,K.fromJSON(t,n.slice),!!n.structure)}};Yr.jsonID(`replace`,ni);var ri=class e extends Yr{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&&(ii(e,this.from,this.gapFrom)||ii(e,this.gapTo,this.to)))return Xr.fail(`Structure gap-replace would overwrite content`);let t=e.slice(this.gapFrom,this.gapTo);if(t.openStart||t.openEnd)return Xr.fail(`Gap is not a flat range`);let n=this.slice.insertAt(this.insert,t.content);return n?Xr.fromReplace(e,this.from,this.to,n):Xr.fail(`Content does not fit in gap`)}getMap(){return new Kr([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,K.fromJSON(t,n.slice),n.insert,!!n.structure)}};Yr.jsonID(`replaceAround`,ri);function ii(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 ai(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 $r(l,d,u[e])));s&&s.to==l?s.to=d:a.push(s=new Qr(l,d,r))}}),i.forEach(t=>e.step(t)),a.forEach(t=>e.step(t))}function oi(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 ur){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 $r(t.from,t.to,t.style)))}function si(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 ni(s,l,K.empty));else{r=u;for(let t=0;t<c.marks.length;t++)n.allowsMarkType(c.marks[t].type)||e.step(new $r(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 K(G.from(n.schema.text(` `,n.allowedMarks(c.marks))),0,0),o.push(new ni(s+e.index,s+e.index+e[0].length,r))}}s=l}if(!r.validEnd){let t=r.fillBefore(G.empty,!0);e.replace(s,s,new K(t,0,0))}for(let t=o.length-1;t>=0;t--)e.step(o[t])}function ci(e,t,n){return(t==0||e.canReplace(t,e.childCount))&&(n==e.childCount||e.canReplace(0,n))}function li(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||!ci(a,o,s))break;o&&(r=1),s<a.childCount&&(i=1)}return null}function ui(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=G.empty,d=0;for(let e=a,t=!1;e>n;e--)t||r.index(e)>0?(t=!0,u=G.from(r.node(e).copy(u)),d++):c--;let f=G.empty,p=0;for(let e=a,t=!1;e>n;e--)t||i.after(e+1)<i.end(e)?(t=!0,f=G.from(i.node(e).copy(f)),p++):l++;e.step(new ri(c,l,o,s,new K(u.append(f),d,p),u.size-d,!0))}function di(e,t,n=null,r=e){let i=pi(e,t),a=i&&mi(r,t);return a?i.map(fi).concat({type:t,attrs:n}).concat(a.map(fi)):null}function fi(e){return{type:e,attrs:null}}function pi(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 mi(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 hi(e,t,n){let r=G.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=G.from(n[e].type.create(n[e].attrs,r))}let i=t.start,a=t.end;e.step(new ri(i,a,i,a,new K(r,0,0),n.length,!0))}function gi(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)&&yi(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&&vi(e,t,n,a),si(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 ri(c,l,c+1,l-1,new K(G.from(r.create(o,null,t.marks)),0,0),1,!0)),i===!0&&_i(e,t,n,a),!1}})}function _i(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 vi(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(`
|
|
@@ -349,4 +349,4 @@ ${JSON.stringify(u.input,null,2)}`,f=z.get(r),p=o?void 0:f??t;return(0,W.jsx)(YE
|
|
|
349
349
|
|
|
350
350
|
---
|
|
351
351
|
|
|
352
|
-
`)}var tD=`Cloudflare setup completed (actionId: `,nD=`{"_componentDone"`,rD=`{"_lifecycle"`;function iD(e){return typeof e!=`string`||e.length===0?!1:e.startsWith(nD)||e.startsWith(rD)||e.startsWith(tD)}function aD(e){let{row:t,surface:n,isStreaming:r,activeSessionKey:a,isLogsOpen:o,onLogsToggle:s,onRequestRename:c,onResume:l,onDelete:u,onSwitchPreFlush:d}=e,f=t.phase===`pre-flush`,p=f&&t.sessionKey!==null&&t.sessionKey!==a;return(0,W.jsxs)(`div`,{className:`conversations-row-actions`,"data-surface":n,children:[(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-logs`,title:f?`View pre-flush logs`:`View logs`,"aria-haspopup":`menu`,"aria-expanded":o,onClick:e=>{e.stopPropagation(),s(e.currentTarget)},children:(0,W.jsx)(g,{size:13})}),p&&d&&(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-play`,title:`Switch into this in-memory session`,disabled:r||!a,onClick:e=>{e.stopPropagation(),!(r||!a)&&d()},children:(0,W.jsx)(_,{size:13})}),!f&&t.conversationId&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-rename`,title:`Rename conversation`,onClick:e=>{e.stopPropagation(),c()},children:(0,W.jsx)(ut,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-play`,title:`Resume conversation`,disabled:r,onClick:e=>{e.stopPropagation(),!(r||!a)&&l()},children:(0,W.jsx)(_,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-delete`,title:`Delete conversation`,onClick:e=>{e.stopPropagation(),u()},children:(0,W.jsx)(i,{size:13})})]})]})}var oD=[{type:`stream`,label:`Stream`},{type:`error`,label:`Errors`},{type:`sse`,label:`SSE`}];function sD(e){let{state:t,popoverRef:n,surface:r,buildLogsUrl:i,onClose:a}=e;return t?(0,W.jsx)(`div`,{ref:n,className:`conversations-logs-popover`,role:`menu`,style:{top:t.top,right:t.right},"data-surface":r,children:oD.map(({type:e,label:n})=>(0,W.jsxs)(`a`,{role:`menuitem`,className:`conversations-logs-popover-item`,href:i({conversationId:t.conversationId,sessionKey:t.sessionKey},e),target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{console.debug(`[admin-logs-popover] open-log`,{surface:r,conversationId:t.conversationId,sessionKey:t.sessionKey,type:e}),a()},children:[(0,W.jsx)(g,{size:12}),(0,W.jsx)(`span`,{children:n})]},e))}):null}function cD(e){let[t,n]=(0,U.useState)(null),r=(0,U.useRef)(null),i=(0,U.useCallback)(()=>n(null),[]),a=(0,U.useCallback)((e,t,r)=>{n(n=>{if(n?.rowId===e)return null;let i=r.getBoundingClientRect();return{rowId:e,conversationId:t.conversationId,sessionKey:t.sessionKey,top:i.bottom+4,right:Math.max(8,window.innerWidth-i.right)}})},[]);return(0,U.useEffect)(()=>{if(!t)return;function e(e){let t=e.target;t&&r.current?.contains(t)||t&&t.closest?.(`.conversations-logs`)||n(null)}function i(e){e.key===`Escape`&&n(null)}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,i),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,i)}},[t]),(0,U.useEffect)(()=>{if(!t||!e?.current)return;let r=e.current,i=()=>n(null);return r.addEventListener(`scroll`,i,{passive:!0}),()=>r.removeEventListener(`scroll`,i)},[t,e]),{popover:t,popoverRef:r,toggle:a,close:i}}function lD(e,t){let[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(``),[c,l]=(0,U.useState)(!1),u=(0,U.useRef)(null);(0,U.useEffect)(()=>{i?.phase===`editing`&&(u.current?.focus(),u.current?.select())},[i]);let d=(0,U.useCallback)(()=>{r(null),a(null),s(``),l(!1)},[]);return{editingId:n,editState:i,editValue:o,setEditValue:s,confirming:c,editInputRef:u,requestSuggestion:(0,U.useCallback)(async t=>{if(e){d(),r(t),a({phase:`loading`});try{let n=await fetch(`/api/admin/sessions/${encodeURIComponent(t)}/label?session_key=${encodeURIComponent(e)}`,{method:`POST`});if(!n.ok){a({phase:`error`,reason:(await n.json().catch(()=>({}))).error||`Request failed`});return}let r=await n.json();r.label?(a({phase:`editing`}),s(r.label)):a({phase:`error`,reason:`Not enough message content to suggest a name`})}catch(e){console.error(`[admin-rename] label suggestion failed:`,e),a({phase:`error`,reason:e instanceof Error?e.message:String(e)})}}},[e,d]),confirmRename:(0,U.useCallback)(async n=>{let r=o.trim();if(!(!e||!r||c)){l(!0);try{let i=await fetch(`/api/admin/sessions/${encodeURIComponent(n)}/label`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({label:r,session_key:e})});if(!i.ok){a({phase:`error`,reason:(await i.json().catch(()=>({}))).error||`Rename failed`}),l(!1);return}t(e=>e.map(e=>e.conversationId===n?{...e,name:r}:e)),d()}catch(e){console.error(`[admin-rename] label rename failed:`,e),a({phase:`error`,reason:e instanceof Error?e.message:String(e)}),l(!1)}}},[e,o,c,t,d]),cancelEdit:d,isEditingRow:(0,U.useCallback)(e=>e!==null&&n===e,[n])}}var uD=`maxy-admin-session-key`;function dD(e,t){return e.conversationId?`/api/admin/logs?type=${t}&conversationId=${encodeURIComponent(e.conversationId)}`:e.sessionKey?`/api/admin/logs?type=${t}&sessionKey=${encodeURIComponent(e.sessionKey)}`:`/api/admin/logs?type=${t}`}function fD(e){let{show:t,onClose:n,conversationsLoading:r,conversationsError:i,conversationsList:a,setConversationsList:o,sessionKey:s,setSessionKey:c,isStreaming:l,resetConversation:u,setMessages:d,setConversationId:f}=e,[p,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(null),v=(0,U.useRef)(null),y=(0,U.useRef)(null),b=(0,U.useRef)(null),{popover:x,popoverRef:S,toggle:C,close:w}=cD(b),T=lD(s,o);(0,U.useEffect)(()=>{t||(T.cancelEdit(),w(),h(null),_(null),v.current&&=(clearTimeout(v.current),null),y.current&&=(clearTimeout(y.current),null))},[t,T,w]);async function E(e){await re(e)?(h(e),_(null),v.current&&clearTimeout(v.current),v.current=setTimeout(()=>h(null),1500)):(_(e),h(null),y.current&&clearTimeout(y.current),y.current=setTimeout(()=>_(null),1500))}return t?(0,W.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,W.jsxs)(`div`,{className:`claude-info-modal conversations-modal`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`claude-info-header`,children:[(0,W.jsx)(Qe,{size:12}),`Conversations`,(0,W.jsx)(`button`,{className:`claude-info-close`,onClick:n,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`conversations-list`,ref:b,children:[r&&(0,W.jsxs)(`div`,{className:`conversations-empty`,children:[(0,W.jsx)(pe,{size:14,className:`spin`}),` Loading…`]}),i&&(0,W.jsx)(`div`,{className:`conversations-empty conversations-error`,children:i}),!r&&!i&&a.length===0&&(0,W.jsx)(`div`,{className:`conversations-empty`,children:`No recent conversations`}),!r&&!i&&a.map(e=>{let t=e.conversationId??e.sessionKey??``,r=e.phase===`pre-flush`,i=T.isEditingRow(e.conversationId),a=i&&T.editState?.phase===`loading`,h=i&&T.editState?.phase===`editing`,_=i&&T.editState?.phase===`error`,v=e.conversationId??e.sessionKey??``;return(0,W.jsxs)(`div`,{className:`conversations-row${r?` conversations-row-pre-flush`:``}`,children:[(0,W.jsxs)(`div`,{className:`conversations-row-info`,children:[a&&(0,W.jsxs)(`span`,{className:`conversations-row-name conversations-edit-loading`,children:[(0,W.jsx)(pe,{size:12,className:`spin`}),` Generating suggestion…`]}),h&&(0,W.jsxs)(`div`,{className:`conversations-edit-inline`,children:[(0,W.jsx)(`input`,{ref:T.editInputRef,type:`text`,className:`conversations-edit-input`,value:T.editValue,onChange:e=>T.setEditValue(e.target.value),onKeyDown:t=>{t.key===`Enter`&&T.editValue.trim()&&T.confirmRename(e.conversationId),t.key===`Escape`&&T.cancelEdit()},maxLength:200}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-confirm`,title:`Confirm rename`,disabled:!T.editValue.trim()||T.confirming,onClick:()=>T.confirmRename(e.conversationId),children:T.confirming?(0,W.jsx)(pe,{size:13,className:`spin`}):(0,W.jsx)(m,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-cancel`,title:`Cancel`,onClick:T.cancelEdit,children:(0,W.jsx)(B,{size:13})})]}),_&&(0,W.jsxs)(`div`,{className:`conversations-edit-inline`,children:[(0,W.jsx)(`span`,{className:`conversations-edit-error`,children:T.editState.reason}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-retry`,title:`Retry`,onClick:()=>T.requestSuggestion(e.conversationId),children:(0,W.jsx)(z,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-cancel`,title:`Cancel`,onClick:T.cancelEdit,children:(0,W.jsx)(B,{size:13})})]}),!i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`span`,{className:`conversations-row-name`,children:[e.name||(r?`session ${v}`:v),r&&(0,W.jsx)(`span`,{className:`conversations-row-phase-badge`,title:`Pre-flush — conversation not yet persisted`,children:`pre-flush`})]}),(0,W.jsxs)(`span`,{className:`conversations-row-meta`,children:[(0,W.jsx)(`button`,{type:`button`,className:`conversations-row-id${p===t?` copied`:``}${g===t?` copy-failed`:``}`,title:v,"aria-label":r?`Copy session key ${v}`:`Copy conversation id ${v}`,onClick:e=>{e.stopPropagation(),E(t)},children:p===t?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(m,{size:10}),` copied`]}):g===t?`copy failed`:v.slice(0,8)}),(0,W.jsxs)(`span`,{className:`conversations-row-time`,children:[(0,W.jsx)(je,{size:10}),(()=>{try{let t=new Date(e.updatedAt),n=Date.now()-t.getTime();return n<6e4?`just now`:n<36e5?`${Math.floor(n/6e4)}m ago`:n<864e5?`${Math.floor(n/36e5)}h ago`:`${Math.floor(n/864e5)}d ago`}catch{return``}})()]})]})]})]}),!i&&(0,W.jsx)(aD,{row:e,surface:`conversations-modal`,rowId:t,isStreaming:l,activeSessionKey:s,isLogsOpen:x?.rowId===t,onLogsToggle:n=>{console.info(`[admin-session-identity] sessionKey=${(e.sessionKey??`null`).slice(0,8)} conversationId=${(e.conversationId??`null`).slice(0,8)} phase=${e.phase} surface=conversations-modal action=logs`),C(t,{conversationId:e.conversationId,sessionKey:e.sessionKey},n)},onRequestRename:()=>{e.conversationId&&(console.info(`[admin-session-identity] sessionKey=${(e.sessionKey??`null`).slice(0,8)} conversationId=${e.conversationId.slice(0,8)} phase=${e.phase} surface=conversations-modal action=rename`),T.requestSuggestion(e.conversationId))},onResume:()=>{!e.conversationId||!s||(console.info(`[admin-session-identity] sessionKey=${s.slice(0,8)} conversationId=${e.conversationId.slice(0,8)} phase=${e.phase} surface=conversations-modal action=resume`),n(),u(),fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}/resume?session_key=${encodeURIComponent(s)}`,{method:`POST`}).then(e=>e.ok?e.json():Promise.reject(Error(`Failed to resume conversation`))).then(e=>{e.conversationId&&f(e.conversationId);let t=(e.messages??[]).map(e=>({role:e.role===`user`?`admin`:`maxy`,content:e.role===`user`?e.content:void 0,events:e.role===`assistant`?e.events??(e.content?[{type:`text`,content:e.content}]:[]):void 0,...e.role===`user`&&e.attachments&&e.attachments.length>0?{attachments:e.attachments}:{},...e.role===`user`&&iD(e.content)?{hidden:!0}:{},timestamp:new Date(e.createdAt).getTime()||0,historical:!0,...e.messageId?{messageId:e.messageId}:{}}));t.length>0&&d(t)}).catch(e=>{console.error(`[chat] conversation resume failed:`,e),d([{role:`maxy`,events:[{type:`text`,content:`Could not load conversation history.`}],timestamp:Date.now()-1,historical:!0}])}))},onDelete:()=>{e.conversationId&&(console.info(`[admin-session-identity] sessionKey=${(e.sessionKey??`null`).slice(0,8)} conversationId=${e.conversationId.slice(0,8)} phase=${e.phase} surface=conversations-modal action=delete`),o(t=>t.filter(t=>t.conversationId!==e.conversationId)),s&&fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}?session_key=${encodeURIComponent(s)}`,{method:`DELETE`}).catch(e=>console.error(`[chat] conversation delete failed:`,e)))},onSwitchPreFlush:()=>{if(l||!s||!e.sessionKey)return;let t=e.sessionKey;console.info(`[admin-session-identity] sessionKey=${s.slice(0,8)} conversationId=null phase=${e.phase} surface=conversations-modal action=switch-pre-flush target=${t.slice(0,8)}`),n(),u(),d([]),fetch(`/api/admin/sessions/switch?session_key=${encodeURIComponent(s)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target_session_key:t})}).then(e=>e.ok?e.json():Promise.reject(Error(`switch returned ${e.status}`))).then(e=>{try{sessionStorage.setItem(uD,e.session_key)}catch{}he(e.session_key,`chat`),c(e.session_key),f(e.conversationId)}).catch(e=>{console.error(`[chat] pre-flush session switch failed:`,e),d([{role:`maxy`,events:[{type:`text`,content:`Could not switch into that session.`}],timestamp:Date.now()-1,historical:!0}])})}})]},t)})]}),(0,W.jsx)(sD,{state:x,popoverRef:S,surface:`conversations-modal`,buildLogsUrl:dD,onClose:w})]})}):null}function pD({src:e,onClose:t}){return e?(0,W.jsxs)(`div`,{className:`attachment-lightbox`,onClick:t,children:[(0,W.jsx)(`button`,{className:`attachment-lightbox-close`,onClick:t,"aria-label":`Close`,children:`×`}),(0,W.jsx)(`img`,{src:e,alt:`Attachment`,onClick:e=>e.stopPropagation()})]}):null}function mD({show:e,onClose:t,onConfirm:n}){return e?(0,W.jsx)(`div`,{className:`claude-info-overlay`,onClick:t,children:(0,W.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`claude-info-header`,children:[(0,W.jsx)(`span`,{children:`Compact conversation?`}),(0,W.jsx)(`button`,{className:`claude-info-close`,onClick:t,"aria-label":`Close`,children:`✕`})]}),(0,W.jsx)(`div`,{className:`claude-info-section`,style:{padding:`12px 14px`,fontSize:`11px`,color:`var(--text-secondary)`},children:`Summarises the conversation history to free up context window space. The session continues with a compressed summary.`}),(0,W.jsxs)(`div`,{className:`claude-info-section`,style:{display:`flex`,gap:`8px`,padding:`10px 14px`},children:[(0,W.jsx)(E,{variant:`secondary`,size:`sm`,style:{background:`var(--accent)`,flex:1},onClick:()=>{t(),n()},children:`Yes, compact`}),(0,W.jsx)(E,{variant:`secondary`,size:`sm`,style:{flex:1},onClick:t,children:`No`})]})]})}):null}function hD(e){let{show:t,onClose:n,claudeInfo:r,messages:i,sessionElapsed:a,conversationId:o}=e;if(!t)return null;let s=i.flatMap(e=>e.events?.filter(e=>e.type===`usage`)??[]),c=s.at(-1),l=c?.peak_request_pct==null?c?.context_window?Math.round((c.input_tokens+c.cache_creation_tokens+c.cache_read_tokens)/c.context_window*100):0:Math.round(c.peak_request_pct*100),u=s.reduce((e,t)=>e+t.input_tokens+t.cache_creation_tokens+t.cache_read_tokens+t.output_tokens,0),d=i.flatMap(e=>e.events?.filter(e=>e.type===`rate_limit`)??[]).at(-1),f=s.reduce((e,t)=>e+(t.total_cost_usd??0),0),p=r?.account?.subscriptionType,m=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,W.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,W.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`claude-info-header`,children:[(0,W.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`claude-info-icon`}),(0,W.jsx)(`span`,{children:`Claude Code`}),(0,W.jsx)(`button`,{className:`claude-info-close`,onClick:n,"aria-label":`Close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`claude-info-section`,children:[(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Version`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:r?r.version:`…`})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Email`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:r?.account?.email??`…`})]})]}),(p||d||f>0)&&(0,W.jsxs)(`div`,{className:`claude-info-section`,children:[p&&(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Plan`}),(0,W.jsx)(`span`,{className:`claude-info-value`,style:{textTransform:`capitalize`},children:p})]}),d&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Usage`}),(0,W.jsxs)(`span`,{className:`claude-info-value`,children:[Math.round(d.utilization*100),`%`]})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Resets in`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:m(d.resetsAt)})]}),d.isUsingOverage&&(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Overage`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:`Active`})]})]}),f>0&&(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Session cost`}),(0,W.jsxs)(`span`,{className:`claude-info-value`,children:[`$`,f<.01?f.toFixed(4):f.toFixed(2)]})]})]}),(0,W.jsxs)(`div`,{className:`claude-info-section`,children:[(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Model`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:r?.model??`…`})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Context used`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:l>0?`${l}%`:`—`})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Tokens`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:u>0?wt(u):`—`})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Session`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:Ct(a)})]}),o&&(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Conversation`}),(0,W.jsx)(`span`,{className:`claude-info-value`,style:{fontFamily:`monospace`,fontSize:10},children:o.slice(0,8)})]})]})]})})}var gD=5e3,_D={atPhase:8};function vD({show:e,onClose:t,versionInfo:n,sessionKey:r,onUpgradeComplete:i}){let[a,o]=(0,U.useState)(`prompt`),[s,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),_=(0,U.useRef)(null),v=n?.latest??null,y=(0,U.useCallback)(()=>{_.current&&=(clearInterval(_.current),null)},[]);(0,U.useEffect)(()=>{e||(y(),o(`prompt`),c(``),u(!1),f(null),m(null),g(null))},[e,y]),(0,U.useEffect)(()=>y,[y]),(0,U.useEffect)(()=>{if(!(!e||a!==`running`||!v))return _.current=setInterval(async()=>{try{let e=await fetch(`/api/admin/version`,{cache:`no-store`});if(!e.ok)return;(await e.json()).installed===v&&(y(),o(`succeeded`),i(),setTimeout(()=>window.location.reload(),2e3))}catch{}},gD),y},[e,a,v,i,y]);let b=(0,U.useCallback)(async()=>{if(!(!v||!r||a!==`prompt`)){if(!s){f(`Enter your device password first.`);return}f(null),m(null),o(`priming`);try{let e=await fetch(`/api/admin/actions/sudo-prime?session_key=${encodeURIComponent(r)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:s,session_key:r})});if(e.status!==204){f((await e.json().catch(()=>({}))).error??`Password check failed (status ${e.status})`),o(`prompt`);return}}catch(e){f(e instanceof Error?e.message:`Password check network error`),o(`prompt`);return}try{let e=await fetch(`/api/admin/actions/upgrade?session_key=${encodeURIComponent(r)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sudoPassword:s,session_key:r})}),t=await e.json().catch(()=>({}));if(!e.ok||!t.actionId){m(t.error??`launch failed (status ${e.status})`),o(`launch-failed`);return}g(t.actionId),o(`running`)}catch(e){m(e instanceof Error?e.message:`launch network error`),o(`launch-failed`)}finally{c(``)}}},[s,v,r,a]);return e?(0,W.jsx)(`div`,{className:`claude-info-overlay`,onClick:()=>{(a===`prompt`||a===`succeeded`||a===`launch-failed`)&&t()},children:(0,W.jsxs)(`div`,{className:`claude-info-modal update-modal`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`claude-info-header`,children:[(0,W.jsx)(ce,{size:12}),`Software Update`,(0,W.jsx)(`button`,{className:`claude-info-close`,onClick:t,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`update-modal-body`,children:[(0,W.jsxs)(`div`,{className:`update-modal-versions`,children:[(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Installed`}),(0,W.jsxs)(`span`,{className:`claude-info-value`,children:[`v`,n?.installed??`…`]})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Available`}),(0,W.jsxs)(`span`,{className:`claude-info-value update-version-new`,children:[`v`,v??`…`]})]})]}),(a===`prompt`||a===`priming`||a===`launch-failed`)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`form-input__field`,style:{marginTop:12},children:[(0,W.jsx)(`label`,{className:`form-input__label`,htmlFor:`upgrade-sudo`,children:`Device password`}),(0,W.jsxs)(`div`,{className:`tunnel-route__row`,children:[(0,W.jsx)(`input`,{id:`upgrade-sudo`,className:`form-input__input tunnel-route__input`,type:l?`text`:`password`,autoComplete:`current-password`,value:s,onChange:e=>{c(e.target.value),f(null)},disabled:a===`priming`,onKeyDown:e=>{e.key===`Enter`&&s&&b()}}),(0,W.jsx)(`button`,{type:`button`,className:`tunnel-route__suffix`,onClick:()=>u(e=>!e),disabled:a===`priming`,style:{cursor:`pointer`,border:`none`,background:`inherit`},"aria-label":l?`Hide password`:`Show password`,children:l?`Hide`:`Show`})]}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Needed once. The installer uses it to run the privileged steps; it is never saved.`}),d&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:d}),p&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,role:`alert`,children:p})]}),(0,W.jsx)(`button`,{type:`button`,className:`update-modal-btn`,onClick:b,disabled:!v||!s||a===`priming`,children:a===`priming`?`Checking password…`:a===`launch-failed`?`Try again`:`Upgrade`})]}),a===`running`&&h&&r&&(0,W.jsx)(`div`,{className:`update-modal-terminal`,style:{height:360,marginTop:10},children:(0,W.jsx)(CE,{actionId:h,sessionKey:r,selfRestart:_D})}),a===`succeeded`&&(0,W.jsxs)(`div`,{className:`update-modal-result`,children:[(0,W.jsx)(H,{size:14,className:`update-success-icon`}),(0,W.jsxs)(`span`,{children:[`Upgraded to v`,v,` — reloading…`]})]})]})]})}):null}function yD(e){let{conversationId:t,sessionKey:n,disconnecting:r,onOpenConversations:i,handleDisconnect:a,onAfterAction:o}=e,s=!t&&!n;return(0,W.jsxs)(`div`,{className:`chat-actions-menu`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`chat-action`,onClick:()=>{o(),i()},children:[(0,W.jsx)(Qe,{size:14}),(0,W.jsx)(`span`,{className:`action-label`,children:`Conversations`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-action`,disabled:r,onClick:async()=>{o(),await a()},children:[r?(0,W.jsx)(pe,{size:14,className:`animate-spin`}):(0,W.jsx)(we,{size:14}),(0,W.jsx)(`span`,{className:`action-label`,children:r?`Disconnecting...`:`Disconnect Claude`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-action`,disabled:s,title:t?`Download stream log`:n?`Download stream log (pre-flush)`:`No session active — reload the page to start one`,onClick:()=>{if(o(),s){console.debug(`[stream-log-button] no-identity sessionKey=null conversationId=null`);return}let e=document.createElement(`a`);e.href=`${dD({conversationId:t,sessionKey:n},`stream`)}&download=1`,e.click()},children:[(0,W.jsx)(ft,{size:14}),(0,W.jsx)(`span`,{className:`action-label`,children:`Stream log`})]})]})}function bD(e){let{selectionMode:t,selectedItems:n,copyToast:r,exitSelection:i,enterSelection:a,copySelected:o,showCopyToast:s,input:l,setInput:d,inputRef:p,pendingFiles:m,setPendingFiles:h,isDragOver:y,attachError:b,fileInputRef:x,addFiles:S,removeFile:C,onDragOver:w,onDragLeave:T,onDrop:D,isStreaming:j,wasPaused:M,messages:P,messageQueueRef:ee,setQueue:F,sendMessage:ne,stopStreaming:L,disconnecting:ie,handleDisconnect:R,claudeInfo:z,setClaudeInfo:B,setShowClaudeInfo:ae,conversationId:oe,sessionKey:se,onNewConversation:ce,newConversationDisabled:le,onOpenConversations:ue,sidebarVisible:de}=e,[fe,pe]=(0,U.useState)(!1),me=(0,U.useRef)(null),[he,ge]=(0,U.useState)(!1),_e=(0,U.useRef)(null),ve=(0,U.useRef)(!1),ye=I(),be=ye.state===`recording`||ye.state===`paused`||ye.state===`sending`,xe=!be&&!M&&!l.trim()&&m.length===0;async function Se(){let e=await ye.send();if(!e)return;let t=e.type===`audio/ogg`?`.ogg`:e.type===`audio/mp4`?`.m4a`:`.webm`,n=new File([e],`voice-note${t}`,{type:e.type});if(j){F([...ee.current,{text:`[Voice note]`,files:[n],timestamp:Date.now()}]);return}ne(`[Voice note]`,[n])}return(0,U.useEffect)(()=>{t||ge(!1)},[t]),(0,U.useEffect)(()=>{if(!he)return;let e=e=>{e.target.closest(`.selection-copy-wrap`)||ge(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[he]),(0,U.useEffect)(()=>{if(!fe)return;let e=e=>{if(e.key===`Escape`){pe(!1);return}if(e.key===`Tab`&&me.current){let t=me.current.querySelectorAll(`.actions-menu-items button:not([disabled])`);if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}},t=e=>{me.current&&!me.current.contains(e.target)&&pe(!1)};return document.addEventListener(`keydown`,e),document.addEventListener(`mousedown`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`mousedown`,t)}},[fe]),t?(0,W.jsx)(`div`,{className:`chat-input-area`,children:(0,W.jsxs)(`div`,{className:`selection-bar`,children:[(0,W.jsxs)(`span`,{className:`selection-count`,children:[n.size,` Selected`]}),(0,W.jsxs)(`div`,{className:`selection-copy-wrap`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`selection-copy`,onPointerDown:()=>{if(he){ge(!1);return}ve.current=!1,_e.current=setTimeout(()=>{ve.current=!0,ge(!0),_e.current=null},500)},onPointerUp:()=>{_e.current!==null&&(clearTimeout(_e.current),_e.current=null)},onPointerLeave:()=>{_e.current!==null&&(clearTimeout(_e.current),_e.current=null)},onPointerCancel:()=>{_e.current!==null&&(clearTimeout(_e.current),_e.current=null)},onClick:async()=>{ve.current||await o(e=>$E(P,e),(e,t)=>{let[n,r]=[e.slice(0,e.lastIndexOf(`_`)),e.slice(e.lastIndexOf(`_`)+1)],[i,a]=[t.slice(0,t.lastIndexOf(`_`)),t.slice(t.lastIndexOf(`_`)+1)],o=parseInt(n,10)-parseInt(i,10);return o===0?r===`admin`?-1:a===`admin`?1:parseInt(r,10)-parseInt(a,10):o})},children:[(0,W.jsx)(f,{size:18}),(0,W.jsx)(`span`,{children:`Copy`})]}),he&&(0,W.jsx)(`div`,{className:`copy-menu`,children:[[`all`,`All events`],[`text`,`Text messages only`],[`non-text`,`Non-text only`]].map(([e,t])=>(0,W.jsx)(`button`,{type:`button`,className:`copy-menu-item`,onClick:async()=>{let t=eD(P,e);t&&s(await re(t)),i()},children:t},e))})]}),(0,W.jsx)(`button`,{type:`button`,className:`selection-cancel`,onClick:i,children:`Cancel`})]})}):(0,W.jsxs)(`div`,{className:`chat-input-area`,children:[(0,W.jsx)(`input`,{ref:x,type:`file`,multiple:!0,accept:Dt,style:{display:`none`},onChange:e=>{e.target.files&&S([...e.target.files]),e.target.value=``}}),m.length>0&&(0,W.jsx)(`div`,{className:`attachment-strip`,children:m.map((e,t)=>(0,W.jsxs)(`div`,{className:`attachment-chip`,children:[e.type.startsWith(`image/`)?(0,W.jsx)(`img`,{src:URL.createObjectURL(e),alt:e.name,className:`attachment-chip-thumb`}):e.type.startsWith(`audio/`)?(0,W.jsx)(k,{size:14}):e.type===`application/pdf`?(0,W.jsx)(g,{size:14}):(0,W.jsx)(v,{size:14}),(0,W.jsx)(`span`,{className:`attachment-chip-name`,children:e.name}),(0,W.jsx)(`button`,{type:`button`,className:`attachment-chip-remove`,onClick:()=>C(t),"aria-label":`Remove ${e.name}`,children:`×`})]},t))}),b&&(0,W.jsx)(`p`,{className:`attach-error`,children:b}),ye.state===`error`&&ye.errorMessage&&(0,W.jsxs)(`p`,{className:`voice-error`,role:`alert`,children:[(0,W.jsx)(k,{size:14}),ye.errorMessage]}),(0,W.jsx)(O,{inputRef:p}),be?(0,W.jsx)(`div`,{className:`chat-form voice-active`,children:(0,W.jsx)(N,{state:ye.state,elapsedSeconds:ye.elapsedSeconds,waveform:ye.waveform,onTogglePause:ye.togglePause,onDiscard:ye.discard,onSend:Se})}):(0,W.jsxs)(`form`,{className:`chat-form${y?` drag-over`:``}`,onSubmit:e=>{e.preventDefault();let t=l.trim()||(M?`continue`:``);if(!(!t&&m.length===0)){if(j){F([...ee.current,{text:t,files:[...m],timestamp:Date.now()}]),d(``),h([]),p.current?.resetHeight();return}ne(t),p.current?.resetHeight()}},onDragOver:w,onDragLeave:T,onDrop:D,onPaste:e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t){if(e.kind!==`file`)continue;let t=e.getAsFile();if(!t)continue;let r=t.type.split(`/`)[1]?.replace(`jpeg`,`jpg`)||`png`;n.push(new File([t],`pasted-image-${Date.now()}.${r}`,{type:t.type}))}n.length>0&&S(n)},children:[(0,W.jsx)(E,{variant:`icon`,type:`button`,onClick:()=>x.current?.click(),"aria-label":`Attach file`,children:(0,W.jsx)(c,{size:14})}),(0,W.jsx)(te,{ref:p,value:l,onChange:d}),j?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(E,{variant:`send`,type:`button`,onClick:()=>L(!0),"aria-label":`Pause`,style:{background:`var(--text-secondary)`},children:(0,W.jsx)(A,{size:14})}),(0,W.jsx)(E,{variant:`send`,type:`button`,onClick:()=>L(!1),"aria-label":`Stop`,style:{background:`var(--danger)`},children:(0,W.jsx)(ht,{size:14})})]}):xe?(0,W.jsx)(E,{variant:`send`,type:`button`,onClick:ye.start,"aria-label":`Record voice note`,children:(0,W.jsx)(k,{size:14})}):(0,W.jsx)(E,{variant:`send`,type:`submit`,disabled:!l.trim()&&m.length===0&&!M,"aria-label":`Send message`,children:M?(0,W.jsx)(_,{size:14}):(0,W.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,W.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,W.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,W.jsxs)(`div`,{className:`chat-actions`,ref:me,children:[!de&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{className:`burger-trigger`,onClick:()=>pe(e=>!e),"aria-expanded":fe,"aria-haspopup":`true`,"aria-label":`Conversation actions`,children:(0,W.jsx)(Ie,{size:16})}),(0,W.jsx)(`div`,{className:`actions-menu-items${fe?` actions-menu-open`:``}`,children:(0,W.jsx)(yD,{conversationId:oe,sessionKey:se,disconnecting:ie,onOpenConversations:ue,handleDisconnect:R,onAfterAction:()=>pe(!1)})})]}),(0,W.jsx)(`button`,{type:`button`,className:`chat-action-icon`,title:`New conversation`,"aria-label":`New conversation`,disabled:le,onClick:ce,children:(0,W.jsx)(Ue,{size:16})}),(0,W.jsx)(`button`,{type:`button`,className:`chat-action-icon`,title:`Select messages`,"aria-label":`Select messages`,onClick:a,children:(0,W.jsx)(u,{size:16})}),(0,W.jsxs)(`div`,{className:`powered-by`,onClick:async()=>{if(ae(!0),!z){let e=await fetch(`/api/admin/claude-info`);e.ok&&B(await e.json())}},children:[(0,W.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,W.jsx)(`span`,{children:`Powered by Claude Code`})]})]})]})}var xD=`maxy-vnc-overlay-popout`;function SD(e){let[t,n]=(0,U.useState)(!1),r=(0,U.useRef)(null),i=(0,U.useRef)(null),a=(0,U.useCallback)(()=>{i.current&&=(clearInterval(i.current),null),r.current&&!r.current.closed&&r.current.close(),r.current=null,n(!1)},[]),o=(0,U.useCallback)(()=>{let t=`/vnc-popout.html?title=${encodeURIComponent(R.productName)}`,o=window.open(t,xD,`width=1024,height=768`);o&&(r.current=o,n(!0),i.current=setInterval(()=>{r.current?.closed&&(a(),e?.())},500))},[a,e]);return(0,U.useEffect)(()=>()=>a(),[a]),{poppedOut:t,popout:o,cleanupPopout:a}}var CD=(0,U.forwardRef)(function({onClose:e},t){St(),cn(`overlay`);let{poppedOut:n,popout:r,cleanupPopout:i}=SD(e);return(0,U.useImperativeHandle)(t,()=>({popout:r}),[r]),n?(0,W.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:R.productName}),(0,W.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:at,onClick:()=>i(),"aria-label":`Pop back in`}),e&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:B,onClick:()=>{i(),e()},"aria-label":`Close`})]}):(0,W.jsx)(`iframe`,{src:`/vnc-viewer.html`,className:`browser-surface__iframe`,title:R.productName})});function wD({onClose:e}){St(),cn(`overlay`);let{poppedOut:t,popout:n,cleanupPopout:r}=SD(e),i=(0,U.useCallback)(()=>{r(),e()},[r,e]);(0,U.useEffect)(()=>{if(t)return;let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,i]);let a=sn({handlePopout:n,disabled:t});return t?(0,W.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:R.productName}),(0,W.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:at,onClick:()=>{r()},"aria-label":`Pop back in`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:B,onClick:i,"aria-label":`Close`})]}):(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen`,children:[(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen__bar`,...a,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer-fullscreen__title`,children:R.productName}),(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen__actions`,children:[(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:n,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:B,onClick:i,"aria-label":`Close`})]})]}),(0,W.jsx)(`iframe`,{src:`/vnc-viewer.html`,className:`browser-viewer-fullscreen__iframe`,title:R.productName})]})}var TD=`maxy-admin-session-key`,ED=(0,U.forwardRef)(function(e,t){let{businessName:n,sessionKey:r,conversationId:i,role:a,userName:o,userAvatar:s,sessions:c,sessionsLoading:l,sessionsError:u,ensureSessionsLoaded:d,refetchSessions:f,onSelectSession:p,onSelectArtefact:h,onSelectProjects:_,onSelectPeople:v,onSelectTasks:y,onSelectAgents:b,onCloseMobileDrawer:x,collapsed:S,onToggleCollapsed:C,actions:w,recentsActions:T}=e;(0,U.useEffect)(()=>{d()},[d]);let E=(0,U.useRef)(null),{popover:D,popoverRef:O,toggle:k,close:A}=cD(E),j=lD(r,T.setSessions),M=R.productName,N=typeof o==`string`?o:o===null?`name unavailable`:n||M,P=(N.trim().charAt(0)||`?`).toUpperCase(),[ee,te]=(0,U.useState)(`all`),F=(0,U.useMemo)(()=>c.filter(e=>e.name).filter(e=>ee===`all`?!0:(e.channel??`webchat`)===ee),[c,ee]),I=F.length,ne=i??r,[L,re]=(0,U.useState)(`chat`),[ie,oe]=(0,U.useState)([]),[se,ce]=(0,U.useState)(!1),[le,ue]=(0,U.useState)(null),[de,fe]=(0,U.useState)(!1);(0,U.useImperativeHandle)(t,()=>({patchArtefact(e,t){oe(n=>n.map(n=>n.id===e?{...n,...t}:n))}}),[]);let[me,ge]=(0,U.useState)(!1),_e=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!me)return;function e(e){_e.current&&!_e.current.contains(e.target)&&ge(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[me]);let ve=(0,U.useCallback)(async()=>{if(r){fe(!0),ue(null);try{let e=await fetch(`/api/admin/sidebar-artefacts?session_key=${encodeURIComponent(r)}`);if(!e.ok)throw Error(`status ${e.status}`);oe((await e.json()).artefacts??[]),ce(!0)}catch(e){let t=e instanceof Error?e.message:String(e);ue(`Failed to load artefacts: ${t}`),console.error(`[admin-ui] sidebar-artefacts fetch failed: ${t}`)}finally{fe(!1)}}},[r]),ye=()=>{re(`chat`),console.info(`[admin-ui] sidebar-nav surface=chat count=${I}`)},be=()=>{re(`artefacts`),console.info(`[admin-ui] sidebar-nav surface=artefacts count=${se?ie.length:0} collapsed=${S}`),S&&C(),se||ve()},xe=S?24:16,Se=L===`chat`?`Recents`:`Artefacts`,Ce=L===`chat`?l?`…`:String(I):de?`…`:String(ie.length),we=L===`chat`?l:de,Ee=()=>{L===`chat`?f():ve(),console.info(`[admin-ui] sidebar-refresh surface=${L}`)};return(0,W.jsxs)(`aside`,{className:`side`,children:[(0,W.jsx)(`div`,{className:`side-head`,children:(0,W.jsx)(`button`,{className:`icon-btn side-head-toggle`,title:S?`Expand sidebar`:`Collapse sidebar`,type:`button`,"aria-label":S?`Expand sidebar`:`Collapse sidebar`,onClick:C,children:S?(0,W.jsx)(lt,{size:28}):(0,W.jsx)(ct,{size:28})})}),(0,W.jsxs)(`nav`,{className:`side-nav`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`nav-row${L===`chat`?` active`:``}`,onClick:ye,children:[(0,W.jsx)(it,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Chat`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=people`),v(),x()},children:[(0,W.jsx)(yt,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`People`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=agents`),b(),x()},children:[(0,W.jsx)(Te,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Agents`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=projects`),_(),x()},children:[(0,W.jsx)(V,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Projects`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=tasks`),y(),x()},children:[(0,W.jsx)(Ze,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Tasks`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row${L===`artefacts`?` active`:``}`,onClick:be,children:[(0,W.jsx)(g,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Artefacts`}),(0,W.jsx)(`span`,{className:`kbd`})]})]}),(0,W.jsxs)(`div`,{className:`side-list`,ref:E,children:[(0,W.jsxs)(`div`,{className:`group-head`,children:[(0,W.jsx)(`span`,{children:Se}),(0,W.jsxs)(`span`,{className:`group-head-meta`,children:[(0,W.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`Refresh ${Se.toLowerCase()}`,"aria-label":`Refresh ${Se.toLowerCase()}`,onClick:Ee,disabled:we,children:(0,W.jsx)(ae,{size:12,className:we?`spinning`:void 0})}),(0,W.jsx)(`span`,{children:Ce})]})]}),L===`chat`&&(0,W.jsxs)(W.Fragment,{children:[u&&(0,W.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:u}),(0,W.jsxs)(nn,{className:`conv-channel-filter`,value:ee,onChange:e=>{let t=e.target.value;te(t),console.info(`[admin-ui] sidebar-channel-filter set value=${t}`)},"aria-label":`Filter conversations by channel`,children:[(0,W.jsx)(`option`,{value:`all`,children:`All channels`}),(0,W.jsx)(`option`,{value:`webchat`,children:`Web`})]}),F.map(e=>{let t=e.conversationId??e.sessionKey??``,n=t!==``&&t===ne,i=e.channel??`webchat`,a=e.phase===`pre-flush`,o=j.isEditingRow(e.conversationId),s=o&&j.editState?.phase===`loading`,c=o&&j.editState?.phase===`editing`,l=o&&j.editState?.phase===`error`,u=t=>{let n=e.sessionKey?e.sessionKey.slice(0,8):`null`,r=e.conversationId?e.conversationId.slice(0,8):`null`;console.info(`[admin-session-identity] sessionKey=${n} conversationId=${r} phase=${e.phase} surface=sidebar-recents action=${t}`)};return(0,W.jsxs)(`div`,{className:`conv${n?` active`:``}${a?` conv-pre-flush`:``}${o?` conv-editing`:``}`,children:[!o&&(0,W.jsxs)(`button`,{type:`button`,className:`conv-name-button`,onClick:()=>{u(`select`),p(e),x()},children:[i===`whatsapp`&&(0,W.jsx)(tt,{size:12,className:`conv-channel-icon`,"aria-label":`WhatsApp`}),(0,W.jsx)(`span`,{className:`conv-name`,children:e.name??`(untitled)`})]}),s&&(0,W.jsxs)(`span`,{className:`conversations-row-name conversations-edit-loading conv-edit-loading`,children:[(0,W.jsx)(pe,{size:12,className:`spin`}),` Generating suggestion…`]}),c&&(0,W.jsxs)(`div`,{className:`conversations-edit-inline conv-edit-inline`,children:[(0,W.jsx)(`input`,{ref:j.editInputRef,type:`text`,className:`conversations-edit-input`,value:j.editValue,onChange:e=>j.setEditValue(e.target.value),onKeyDown:t=>{t.key===`Enter`&&j.editValue.trim()&&e.conversationId&&j.confirmRename(e.conversationId),t.key===`Escape`&&j.cancelEdit()},maxLength:200}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-confirm`,title:`Confirm rename`,disabled:!j.editValue.trim()||j.confirming,onClick:()=>e.conversationId&&j.confirmRename(e.conversationId),children:j.confirming?(0,W.jsx)(pe,{size:13,className:`spin`}):(0,W.jsx)(m,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-cancel`,title:`Cancel`,onClick:j.cancelEdit,children:(0,W.jsx)(B,{size:13})})]}),l&&(0,W.jsxs)(`div`,{className:`conversations-edit-inline conv-edit-inline`,children:[(0,W.jsx)(`span`,{className:`conversations-edit-error`,children:j.editState.reason}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-retry`,title:`Retry`,onClick:()=>e.conversationId&&j.requestSuggestion(e.conversationId),children:(0,W.jsx)(z,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-cancel`,title:`Cancel`,onClick:j.cancelEdit,children:(0,W.jsx)(B,{size:13})})]}),!o&&(0,W.jsx)(aD,{row:e,surface:`sidebar-recents`,rowId:t,isStreaming:T.isStreaming,activeSessionKey:r,isLogsOpen:D?.rowId===t,onLogsToggle:n=>{u(`logs`),k(t,{conversationId:e.conversationId,sessionKey:e.sessionKey},n)},onRequestRename:()=>{e.conversationId&&(u(`rename`),j.requestSuggestion(e.conversationId))},onResume:()=>{!e.conversationId||T.isStreaming||(u(`resume`),p(e),x())},onDelete:()=>{if(!e.conversationId)return;u(`delete`);let t=e.conversationId;T.setSessions(e=>e.filter(e=>e.conversationId!==t)),r&&fetch(`/api/admin/sessions/${encodeURIComponent(t)}?session_key=${encodeURIComponent(r)}`,{method:`DELETE`}).catch(e=>console.error(`[chat] conversation delete failed:`,e))},onSwitchPreFlush:()=>{if(T.isStreaming||!r||!e.sessionKey)return;let t=e.sessionKey;u(`switch-pre-flush target=${t.slice(0,8)}`),T.resetConversation(),T.setMessages([]),fetch(`/api/admin/sessions/switch?session_key=${encodeURIComponent(r)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target_session_key:t})}).then(e=>e.ok?e.json():Promise.reject(Error(`switch returned ${e.status}`))).then(e=>{try{sessionStorage.setItem(TD,e.session_key)}catch{}he(e.session_key,`chat`),T.setSessionKey(e.session_key),T.setConversationId(e.conversationId)}).catch(e=>{console.error(`[chat] pre-flush session switch failed:`,e),T.setMessages([{role:`maxy`,events:[{type:`text`,content:`Could not switch into that session.`}],timestamp:Date.now()-1,historical:!0}])})}})]},t===``?e.updatedAt:t)})]}),L===`artefacts`&&(0,W.jsxs)(W.Fragment,{children:[le&&(0,W.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:le}),se&&!le&&ie.length===0&&(0,W.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:`No artefacts yet`}),ie.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`conv`,onClick:()=>{h({docId:e.id,name:e.name,content:e.content,editable:e.editable,mimeType:e.mimeType,skipReason:e.skipReason},`sidebar-artefacts`),x()},children:[(0,W.jsx)(`span`,{className:`conv-name`,children:e.name}),(0,W.jsx)(`span`,{className:`conv-kind`,"data-kind":e.kind===`agent-template`?`agent`:`doc`,children:e.kind===`agent-template`?`agent`:`doc`})]},e.id))]}),(0,W.jsx)(sD,{state:D,popoverRef:O,surface:`sidebar-recents`,buildLogsUrl:dD,onClose:A})]}),(0,W.jsxs)(`div`,{className:`side-foot`,ref:_e,children:[(0,W.jsx)(`div`,{className:`avatar`,children:s?(0,W.jsx)(`img`,{src:s,alt:N}):P}),(0,W.jsxs)(`div`,{className:`who`,children:[(0,W.jsx)(`span`,{className:`name`,children:N}),(0,W.jsx)(`span`,{className:`role`,children:a??`operator`})]}),(0,W.jsx)(`button`,{className:`icon-btn side-foot-actions-trigger`,title:`Conversation actions`,type:`button`,"aria-label":`Conversation actions`,"aria-haspopup":`true`,"aria-expanded":me,onClick:()=>ge(e=>!e),children:(0,W.jsx)(Ie,{size:xe})}),me&&(0,W.jsx)(`div`,{className:`side-foot-actions-popover`,children:(0,W.jsx)(yD,{...w,onAfterAction:()=>ge(!1)})})]})]})}),DD=()=>{},OD={"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 kD({reason:e}){return(0,W.jsxs)(`div`,{className:`art-skip-banner`,role:`status`,children:[(0,W.jsx)(Be,{size:14}),(0,W.jsx)(`span`,{children:OD[e]})]})}function AD({src:e,name:t,docId:n}){let[r,i]=(0,U.useState)(!1),a=(0,U.useRef)(null),o=(0,U.useRef)(!1),s=(0,U.useRef)(!1),c=(0,U.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,U.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,W.jsxs)(`a`,{className:`art-pdf-fallback`,href:e,download:t,children:[(0,W.jsx)(g,{size:20}),(0,W.jsxs)(`div`,{className:`art-pdf-fallback-text`,children:[(0,W.jsx)(`div`,{className:`art-pdf-fallback-name`,children:t}),(0,W.jsx)(`div`,{className:`art-pdf-fallback-hint`,children:`Your browser can't display this PDF inline. Click to download.`})]}),(0,W.jsx)(ce,{size:16})]}):(0,W.jsx)(`iframe`,{ref:a,className:`art-pdf`,src:e,title:t,"aria-label":`PDF preview of ${t}`,onLoad:l,onError:()=>c(`onerror`)})}var jD={browser:`Browser`,data:`Data`,graph:`Graph`};function MD({selection:e,trigger:t,sessionKey:n,onClose:r,onArtefactSaved:i,onSwapToGraph:a}){let o=e!==null,s=e?.surface??null,c=(0,U.useRef)(null),l=(0,U.useRef)(null),[u,d]=(0,U.useState)(null),p=e?.surface===`doc`?e.docId:null,m=(0,U.useCallback)(e=>{if(!n||!p)return;let t={};try{t=JSON.parse(e)}catch{return}t.action!==`save`||typeof t.content!=`string`||(d(null),fetch(`/api/admin/sidebar-artefact-save?session_key=${encodeURIComponent(n)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:p,content:t.content})}).then(async e=>{if(!e.ok){let t=(await e.json().catch(()=>({}))).error??`status ${e.status}`;d(`Save failed: ${t}`),console.error(`[admin-ui] artefact-save-failed docId=${p} status=${e.status} error="${t}"`);return}let n=await e.json();i?.(p,n.updatedAt,t.content)}).catch(e=>{let t=e instanceof Error?e.message:String(e);d(`Save failed: ${t}`),console.error(`[admin-ui] artefact-save-failed docId=${p} error="${t}"`)}))},[n,p,i]);(0,U.useEffect)(()=>{d(null)},[p]),(0,U.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===c.current)return;let s=o?`open`:`closed`,l=o?t??`chat-link`:`toolbar-close`,u=i??c.current?.split(`:`)[0]??`doc`;console.info(`[admin-ui] artefact-pane state=${s} docId=${n??`none`} trigger=${l} surface=${u}`),c.current=a},[e,t,o]);let g=e?.surface===`doc`,_=g?(e.tag||e.name.split(`.`).pop()||`doc`).toUpperCase().slice(0,6):``,v=g?e.revision||`rev 1`:`live`,y=e&&e.surface!==`doc`?jD[e.surface]:``,b=g?e.name:y;return(0,W.jsxs)(`aside`,{className:`artefact`,"data-open":o,"data-surface":s??`none`,children:[(0,W.jsxs)(`div`,{className:`art-head`,children:[(0,W.jsxs)(`div`,{className:`left`,children:[!g&&s===`browser`&&(0,W.jsx)(h,{size:14,className:`art-head-surface-icon`}),!g&&s===`data`&&(0,W.jsx)(ge,{size:14,className:`art-head-surface-icon`}),!g&&s===`graph`&&(0,W.jsx)(_e,{size:14,className:`art-head-surface-icon`}),(0,W.jsx)(`span`,{className:`file-name`,children:b}),g&&(0,W.jsx)(`span`,{className:`file-tag`,children:_})]}),(0,W.jsxs)(`div`,{className:`right`,children:[g&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{className:`icon-btn`,title:`Copy`,type:`button`,"aria-label":`Copy`,onClick:()=>{re(e.content)},children:(0,W.jsx)(f,{size:14})}),(0,W.jsx)(`button`,{className:`icon-btn`,title:`Refresh`,type:`button`,"aria-label":`Refresh`,children:(0,W.jsx)(z,{size:14})})]}),s===`browser`&&(0,W.jsx)(`button`,{className:`icon-btn`,title:`Pop out`,type:`button`,"aria-label":`Pop out`,onClick:()=>l.current?.popout(),children:(0,W.jsx)(Le,{size:14})}),o&&(0,W.jsx)(`button`,{className:`icon-btn`,title:`Close`,type:`button`,"aria-label":`Close`,onClick:r,children:(0,W.jsx)(B,{size:14})})]})]}),(0,W.jsxs)(`div`,{className:`art-toolbar`,children:[(0,W.jsxs)(`span`,{className:`seg`,children:[(0,W.jsx)(`span`,{className:`bullet`}),(0,W.jsx)(`strong`,{children:g?`Artefact`:y})]}),(0,W.jsx)(`span`,{className:`right-meta`,children:v})]}),(0,W.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,W.jsx)(kD,{reason:r});if(i&&n){let t=`/api/admin/sidebar-artefact-content?id=${encodeURIComponent(e.docId)}&session_key=${encodeURIComponent(n)}`;return(0,W.jsx)(AD,{src:t,name:e.name,docId:e.docId},t)}return(0,W.jsxs)(W.Fragment,{children:[u&&(0,W.jsx)(`div`,{className:`art-save-error`,role:`alert`,children:u}),(0,W.jsx)(sT,{data:{title:e.name,content:e.content,readOnly:!t},onSubmit:t?m:DD,submitted:!1})]})})(),s===`browser`&&(0,W.jsx)(CD,{ref:l,onClose:r}),s===`data`&&n&&(0,W.jsx)(ue,{sessionKey:n,onOpenInGraph:a?e=>{let t=de(e.properties);a(e.nodeId,t??e.labels[0]??null)}:void 0}),e?.surface===`graph`&&n&&(0,W.jsx)(se,{sessionKey:n,initialFocus:e.focusNodeId?{nodeId:e.focusNodeId,nodeLabel:e.focusNodeLabel??null}:null,initialLabels:e.initialLabels??null})]}),(0,W.jsxs)(`div`,{className:`art-foot`,children:[(0,W.jsx)(`span`,{className:`left`,children:v}),(0,W.jsx)(`span`,{className:`right in-sync`,children:`in sync`})]})]})}var ND=`maxy-shell-artefact-px`;function PD(){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 ID(Math.round((e-n)*(2/3)))}function FD(){if(typeof window>`u`)return 320;try{let e=window.localStorage.getItem(ND);if(!e)return PD();let t=parseInt(e,10);if(Number.isFinite(t)&&t>=320)return t}catch{}return PD()}function ID(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 LD({targetSelector:e=`.platform`}){let t=(0,U.useRef)(null),[n,r]=(0,U.useState)(()=>FD()),i=(0,U.useRef)(n);(0,U.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,U.useCallback)(()=>{r(e=>{let t=ID(e);return t===e?e:t})},[]);(0,U.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(ID(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(ND,String(t))}catch{}console.info(`[admin-ui] artefact-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=PD();r(e);try{window.localStorage.removeItem(ND)}catch{}console.info(`[admin-ui] artefact-resize px=${e}`)};return(0,W.jsx)(`div`,{ref:t,className:`art-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize artefact pane`,onPointerDown:o,onDoubleClick:s})}var RD=`maxy-shell-side-px`;function zD(){if(typeof window>`u`)return 0;let e=document.querySelector(`.platform > .artefact`)?.getBoundingClientRect();return e&&e.width>0?Math.round(e.width):0}function BD(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=Math.max(248,t-480-zD());return Math.min(Math.max(e,248),n)}function VD(){if(typeof window>`u`)return 264;try{let e=window.localStorage.getItem(RD);if(!e)return 264;let t=parseInt(e,10);if(Number.isFinite(t)&&t>=248)return BD(t)}catch{}return 264}function HD({targetSelector:e=`.platform`}){let t=(0,U.useRef)(null),[n,r]=(0,U.useState)(()=>VD()),i=(0,U.useRef)(n);(0,U.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,U.useCallback)(()=>{r(e=>{let t=BD(e);return t===e?e:t})},[]);(0,U.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(BD(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(RD,String(t))}catch{}console.info(`[admin-ui] sidebar-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=BD(264);r(e);try{window.localStorage.removeItem(RD)}catch{}console.info(`[admin-ui] sidebar-resize px=${e}`)};return(0,W.jsx)(`div`,{ref:t,className:`side-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,onPointerDown:o,onDoubleClick:s})}var UD=50;function WD(e){let[t,n]=(0,U.useState)([]),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)(null),l=(0,U.useCallback)(async t=>{if(e&&!(!t&&s===e)){i(!0),o(null);try{let t=await fetch(`/api/admin/sessions?session_key=${encodeURIComponent(e)}`);if(!t.ok)throw Error(`sessions fetch returned ${t.status}`);n((await t.json()).sessions??[]),c(e)}catch(e){console.error(`[admin/sessions] fetch failed:`,e),o(e instanceof Error?e.message:String(e))}finally{i(!1)}}},[e,s]);(0,U.useEffect)(()=>{e||(c(null),n([]),o(null))},[e]);let u=(0,U.useCallback)(()=>l(!1),[l]),d=(0,U.useCallback)(()=>l(!0),[l]),f=(0,U.useRef)(d);return(0,U.useEffect)(()=>{f.current=d},[d]),(0,U.useEffect)(()=>{if(!e)return;let t=null,n=oe(()=>{t&&clearTimeout(t),t=setTimeout(()=>{t=null,f.current()},UD)});return()=>{t&&clearTimeout(t),n()}},[e]),{sessions:t,setSessions:n,loading:r,loaded:s!==null&&s===e,error:a,ensureLoaded:u,refetch:d}}function GD(){St();let e=(0,U.useRef)(null),[t,n]=(0,U.useState)(null),[r,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(null),[g,_]=(0,U.useState)(!1),[v,y]=(0,U.useState)(null),[x,S]=(0,U.useState)(null),[C,w]=(0,U.useState)(!1),[E,D]=(0,U.useState)(null),[O,k]=(0,U.useState)(!1),[A,j]=(0,U.useState)(null),[M,N]=(0,U.useState)(!1),[P,ee]=(0,U.useState)(!1),[te,F]=(0,U.useState)(!1),[I,ne]=(0,U.useState)(!1),[L,z]=(0,U.useState)(null),[ae,oe]=(0,U.useState)(null),se=(0,U.useRef)(null),[ce,le]=(0,U.useState)(()=>typeof window<`u`&&window.matchMedia(`(min-width: 721px)`).matches);(0,U.useEffect)(()=>{let e=window.matchMedia(`(min-width: 721px)`),t=e=>le(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[ue,de]=(0,U.useState)(()=>typeof window<`u`&&window.matchMedia(`(min-width: 1080px)`).matches);(0,U.useEffect)(()=>{let e=window.matchMedia(`(min-width: 1080px)`),t=e=>de(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let fe=(0,U.useRef)(!1),he=(0,U.useRef)(!1),ye=(0,U.useRef)(!1),be=(0,U.useRef)(!1),xe=(0,U.useRef)(null),[Se,Ce]=(0,U.useState)(null),we=b(),Te=Tt(),V=jt(),Ee=Kt(),De=WD(V.sessionKey),H=Gt({sessionKey:V.sessionKey,setSessionKey:V.setSessionKey,setAppState:V.setAppState,conversationId:V.conversationId,setConversationId:V.setConversationId,startElapsedTimer:Te.startElapsedTimer,stopElapsedTimer:Te.stopElapsedTimer,resetTimerState:Te.resetTimerState,pausedElapsedRef:Te.pausedElapsedRef,expandAllDefaultRef:V.expandAllDefaultRef,setExpandAll:V.setExpandAll,getPendingFiles:()=>Ee.pendingFiles,clearPendingFiles:Ee.clearFiles,inputRef:e});(0,U.useEffect)(()=>{l(window.location.hostname.startsWith(`admin.`)?window.location.origin.replace(`admin.`,`public.`):window.location.origin)},[]),(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&(t?n(null):we.selectionMode&&we.exitSelection())}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,we.selectionMode]),(0,U.useEffect)(()=>{(V.appState===`set-pin`||V.appState===`enter-pin`)&&setTimeout(()=>V.pinInputRef.current?.focus(),100),V.appState===`chat`&&setTimeout(()=>e.current?.focus(),100)},[V.appState,H.greetingGeneration]),(0,U.useEffect)(()=>{if(V.appState!==`chat`)return;history.pushState({maxyChat:!0},``);function e(){console.debug(`[history-guard] popstate absorbed`),history.pushState({maxyChat:!0},``)}return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[V.appState]);let Oe=(0,U.useRef)(H.greetingGeneration);if((0,U.useEffect)(()=>{H.greetingGeneration!==Oe.current&&(Oe.current=H.greetingGeneration,V.onboardingComplete===!1&&(fe.current=!1))},[H.greetingGeneration,V.onboardingComplete]),(0,U.useEffect)(()=>{V.appState===`chat`&&V.onboardingComplete===!1&&(fe.current||(fe.current=!0,H.sendSystemPrompt(`[Begin onboarding.]`)))},[V.appState,V.onboardingComplete,H.greetingGeneration]),(0,U.useEffect)(()=>{if(!u)return;let e=!1;return fetch(`/api/admin/version`).then(e=>e.json()).then(t=>{e||D(t)}).catch(e=>{console.error(`[admin/version] menu-open client fetch failed:`,e)}),()=>{e=!0}},[u]),(0,U.useEffect)(()=>{if(V.appState!==`chat`){ye.current=!1,be.current=!1;return}if(ye.current)return;ye.current=!0;let e=!1;return fetch(`/api/admin/version`).then(e=>e.json()).then(t=>{e||(D(t),!(!t.updateAvailable||be.current)&&(j(t),k(!0),fetch(`/api/admin/version/alert-surfaced`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({installed:t.installed,latest:t.latest})}).catch(e=>{console.error(`[admin/version] alert-surfaced signal failed:`,e)})))}).catch(e=>{console.error(`[admin/version] session-start client fetch failed:`,e)}),()=>{e=!0}},[V.appState]),(0,U.useEffect)(()=>{if(V.appState!==`chat`||!V.sessionKey)return;let e=V.conversationId?`flushed`:`pre-flush`,t=V.sessionKey.slice(0,8),n=V.conversationId?V.conversationId.slice(0,8):`null`;console.info(`[admin-session-identity] sessionKey=${t} conversationId=${n} phase=${e} surface=chat-header`)},[V.appState,V.sessionKey,V.conversationId]),(0,U.useEffect)(()=>{if(V.appState!==`chat`){he.current=!1;return}if(he.current||!De.loaded)return;he.current=!0;let e=De.sessions.filter(e=>e.name).length,t=L?`open`:`closed`;console.info(`[admin-ui] platform-shell brand=${R.productName} sidebar=${e} artefact=${t}`)},[V.appState,De.loaded,De.sessions,L]),(0,U.useEffect)(()=>{if(!u){p(null),y(null),S(null),D(null);return}function e(e){xe.current&&!xe.current.contains(e.target)&&d(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[u]),(0,U.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(`platform-onboarding`);return e.onmessage=e=>{e.data?.type===`remote-password-set`&&H.sendMessageRef.current(`I've set the remote password`)},()=>e.close()},[]),V.appState===`loading`)return(0,W.jsx)(`div`,{className:`chat-page admin-page`,children:(0,W.jsx)(`header`,{className:`chat-header`,children:(0,W.jsx)(`img`,{src:ie,alt:R.productName,className:`chat-logo`})})});if(V.appState===`set-pin`)return(0,W.jsx)(Jt,{pin:V.pin,setPin:V.setPin,confirmPin:V.confirmPin,setConfirmPin:V.setConfirmPin,operatorName:V.operatorName,setOperatorName:V.setOperatorName,showPin:V.showPin,setShowPin:V.setShowPin,pinLoading:V.pinLoading,pinError:V.pinError,pinInputRef:V.pinInputRef,confirmPinInputRef:V.confirmPinInputRef,setPinFormRef:V.setPinFormRef,onSubmit:V.handleSetPin});if(V.appState===`onboarding-choice`)return(0,W.jsx)(Qt,{setAppState:V.setAppState,setOnboardingComplete:V.setOnboardingComplete});if(V.appState===`connect-claude`)return(0,W.jsx)(Zt,{authPolling:V.authPolling,setAuthPolling:V.setAuthPolling,authLoading:V.authLoading,setAuthLoading:V.setAuthLoading,pinError:V.pinError,setPinError:V.setPinError,setAppState:V.setAppState});if(V.appState===`enter-pin`)return(0,W.jsx)(Yt,{pin:V.pin,setPin:V.setPin,showPin:V.showPin,setShowPin:V.setShowPin,pinLoading:V.pinLoading,pinError:V.pinError,pinInputRef:V.pinInputRef,onSubmit:V.handleLogin,onChangePin:V.handleChangePin});if(V.appState===`account-picker`)return(0,W.jsx)(Xt,{accounts:V.accounts,loading:V.accountPickerLoading,error:V.pinError,onSelect:V.handleAccountSelect});let ke=L?`open`:`closed`,Ae=I&&ce,je=`platform${te?` menu-open`:``}${Ae?` sidebar-collapsed`:``}`,Me=e=>{if(!H.isStreaming&&V.sessionKey){if(!e.conversationId){H.resetConversation(),H.setMessages([]),V.setConversationId(null);return}H.resetConversation(),H.setMessages([]),fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}/resume?session_key=${encodeURIComponent(V.sessionKey)}`,{method:`POST`}).then(e=>e.ok?e.json():Promise.reject(Error(`resume returned ${e.status}`))).then(e=>{e.conversationId&&V.setConversationId(e.conversationId);let t=(e.messages??[]).map(e=>({role:e.role===`user`?`admin`:`maxy`,content:e.role===`user`?e.content:void 0,events:e.role===`assistant`?e.events??[]:void 0,...e.role===`user`&&e.attachments&&e.attachments.length>0?{attachments:e.attachments}:{},...e.role===`user`&&iD(e.content)?{hidden:!0}:{},timestamp:new Date(e.createdAt).getTime()||0,historical:!0,...e.messageId?{messageId:e.messageId}:{}}));if(t.length>0&&H.setMessages(t),e.resumeHeal){let{missingTurns:n,failed:r,jsonlMissing:i}=e.resumeHeal,a;r>0?a=`Could not heal ${r} of ${n} turn${n===1?``:`s`} that were missing from the graph. The JSONL replay rendered them above so the conversation is intact, but they may not appear in future searches until the writer recovers.`:i&&t.length>0&&(a=`This conversation's SDK transcript file is no longer on disk; the conversation is rendered from the graph projection. The next message you send will start a fresh SDK session under the same conversation.`),a&&H.setMessages(e=>[{role:`maxy`,events:[{type:`text`,content:a}],timestamp:Date.now()-2,historical:!0},...e])}let n=[];for(let t of e.messages??[]){if(t.role!==`assistant`||!t.submittedEventIndices?.length)continue;let e=new Date(t.createdAt).getTime()||0;for(let r of t.submittedEventIndices)n.push(`${e}_${r}`)}n.length>0&&H.seedSubmittedComponents(n)}).catch(e=>{console.error(`[chat] sidebar conversation resume failed:`,e),H.setMessages([{role:`maxy`,events:[{type:`text`,content:`Could not load conversation history.`}],timestamp:Date.now()-1,historical:!0}])})}},Ne={conversationId:V.conversationId,sessionKey:V.sessionKey,disconnecting:V.disconnecting,onOpenConversations:()=>{w(!0),De.refetch()},handleDisconnect:V.handleDisconnect};return(0,W.jsx)(T,{value:{onShowVnc:()=>N(!0)},children:(0,W.jsxs)(`div`,{className:je,"data-artefact":ke,children:[(0,W.jsx)(`div`,{className:`scrim`,onClick:()=>{F(!1),console.info(`[admin-ui] mobile-drawer state=closed`)}}),(0,W.jsx)(ED,{ref:se,businessName:V.businessName??null,sessionKey:V.sessionKey,conversationId:V.conversationId,role:V.role,userName:V.userName,userAvatar:V.userAvatar,sessions:De.sessions,sessionsLoading:De.loading,sessionsError:De.error,ensureSessionsLoaded:De.ensureLoaded,refetchSessions:De.refetch,recentsActions:{setSessions:De.setSessions,isStreaming:H.isStreaming,resetConversation:H.resetConversation,setMessages:H.setMessages,setConversationId:V.setConversationId,setSessionKey:V.setSessionKey},onSelectSession:Me,onSelectArtefact:(e,t)=>{z({surface:`doc`,...e}),oe(t)},onSelectProjects:()=>{z({surface:`graph`,initialLabels:[`Project`]}),oe(`sidebar-projects`)},onSelectPeople:()=>{z({surface:`graph`,initialLabels:[`Person`]}),oe(`sidebar-people`)},onSelectTasks:()=>{z({surface:`graph`,initialLabels:[`Task`]}),oe(`sidebar-tasks`)},onSelectAgents:()=>{z({surface:`graph`,initialLabels:[`Agent`]}),oe(`sidebar-agents`)},onCloseMobileDrawer:()=>{te&&(F(!1),console.info(`[admin-ui] mobile-drawer state=closed`))},collapsed:Ae,onToggleCollapsed:()=>ne(e=>!e),actions:Ne}),(0,W.jsxs)(`div`,{className:`chat-page admin-page`,children:[(0,W.jsxs)(`header`,{className:`chat-header`,children:[(0,W.jsx)(`button`,{type:`button`,className:`icon-btn mobile-menu`,"aria-label":`Show sidebar`,title:`Show sidebar`,onClick:()=>{F(e=>{let t=!e;return console.info(`[admin-ui] mobile-drawer state=${t?`open`:`closed`}`),t})},children:(0,W.jsx)(lt,{size:16})}),(0,W.jsx)(`img`,{src:ie,alt:R.productName,className:`chat-logo`}),(!R.logoContainsName||V.businessName)&&(0,W.jsx)(`div`,{children:(0,W.jsx)(`h1`,{className:`chat-tagline`,children:V.businessName||R.productName})}),(V.sessionKey||V.conversationId)&&(0,W.jsxs)(`button`,{type:`button`,className:`chat-session-chip chat-session-chip-${V.conversationId?`flushed`:`pre-flush`}`+(Se===`copied`?` copied`:``)+(Se===`failed`?` copy-failed`:``),title:V.conversationId?`conversation ${V.conversationId} — click to copy`:`session ${V.sessionKey} (pre-flush, first turn pending) — click to copy`,onClick:async()=>{let e=V.conversationId??V.sessionKey;e&&(Ce(await re(e)?`copied`:`failed`),setTimeout(()=>Ce(null),1200))},children:[(0,W.jsx)(`span`,{className:`chat-session-chip-label`,children:Se===`copied`?`copied`:Se===`failed`?`copy failed`:V.conversationId?`conversation`:`session`}),(0,W.jsx)(`span`,{className:`chat-session-chip-id`,children:Se===`copied`?`✓`:Se===`failed`?`✕`:`${(V.conversationId??V.sessionKey??``).slice(0,8)}…`})]}),(0,W.jsxs)(`div`,{className:`chat-burger-wrap`,ref:xe,children:[(0,W.jsx)(`button`,{type:`button`,className:`chat-burger`,onClick:()=>d(e=>!e),"aria-label":`Menu`,"aria-haspopup":`true`,"aria-expanded":u,children:(0,W.jsx)(me,{size:20})}),u&&(0,W.jsxs)(`div`,{className:`chat-menu`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{if(!P&&!(!ue&&M)){ee(!0),d(!1);try{let e=await(await fetch(`/api/admin/browser/launch`,{method:`POST`})).json().catch(()=>({ok:!1,error:`Invalid response`}));if(!e.ok)throw Error(e.error??`Failed to launch browser`);ue?(z({surface:`browser`}),oe(`header-menu`)):N(!0)}catch(e){console.error(`[browser] Launch failed:`,e),alert(e instanceof Error?e.message:`Failed to launch browser`)}finally{ee(!1)}}},disabled:P,children:[(0,W.jsx)(h,{size:14}),` Browser`,P&&(0,W.jsx)(pe,{size:12,className:`spin`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{d(!1),ue?(z({surface:`data`}),oe(`header-menu`)):window.location.href=`/data`},children:[(0,W.jsx)(ge,{size:14}),` Data`]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{d(!1),ue?(z({surface:`graph`}),oe(`header-menu`)):window.location.href=`/graph`},children:[(0,W.jsx)(_e,{size:14}),` Graph`]}),(0,W.jsx)(`div`,{className:`chat-menu-divider`}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{if(f!==null){p(null),S(null);return}_(!0),y(null);try{let e=await fetch(`/api/admin/agents`);if(!e.ok)throw Error(`Failed to load agents`);p((await e.json()).agents??[])}catch(e){console.error(`[admin] agent list failed:`,e),y(e instanceof Error?e.message:String(e))}finally{_(!1)}},children:[(0,W.jsx)(Le,{size:14}),` Public`,g&&(0,W.jsx)(pe,{size:12,className:`spin`})]}),f!==null&&(0,W.jsxs)(`div`,{className:`chat-menu-agents`,children:[v&&(0,W.jsx)(`span`,{className:`chat-menu-agent-error`,children:v}),f.length===0&&!v&&(0,W.jsx)(`span`,{className:`chat-menu-agent-empty`,children:`No public agents configured`}),f.map(e=>(0,W.jsxs)(`div`,{className:`chat-menu-item chat-menu-agent-item`,children:[(0,W.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),(0,W.jsxs)(`span`,{className:`agent-text`,children:[(0,W.jsx)(`span`,{className:`agent-display-name`,children:e.displayName}),(0,W.jsxs)(`span`,{className:`agent-slug`,children:[`/`,e.slug]})]}),x===e.slug?(0,W.jsxs)(`span`,{className:`agent-actions agent-confirm`,children:[(0,W.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-confirm-yes`,title:`Confirm delete`,onClick:()=>{S(null),p(t=>t?.filter(t=>t.slug!==e.slug)??null),fetch(`/api/admin/agents/${encodeURIComponent(e.slug)}`,{method:`DELETE`}).catch(e=>console.error(`[admin/agents] delete failed:`,e))},children:(0,W.jsx)(m,{size:12})}),(0,W.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-confirm-no`,title:`Cancel`,onClick:()=>S(null),children:(0,W.jsx)(B,{size:12})})]}):(0,W.jsxs)(`span`,{className:`agent-actions`,children:[(0,W.jsx)(`a`,{href:`${c}/${e.slug}`,target:`_blank`,rel:`noopener noreferrer`,className:`agent-action-btn`,title:`Open agent`,onClick:()=>d(!1),children:(0,W.jsx)(Le,{size:12})}),(0,W.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-delete-btn`,title:`Delete agent`,onClick:()=>S(e.slug),children:(0,W.jsx)(i,{size:12})})]})]},e.slug))]}),(0,W.jsx)(`div`,{className:`chat-menu-divider`}),E?.updateAvailable?(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-version`,onClick:()=>{E.latest&&(j(E),d(!1),k(!0))},children:[(0,W.jsx)(Ke,{size:14}),(0,W.jsxs)(`span`,{className:`version-installed`,children:[`v`,E.installed,(0,W.jsx)(`span`,{className:`version-update-dot`})]})]}):(0,W.jsxs)(`div`,{className:`chat-menu-version chat-menu-version-passive`,children:[(0,W.jsx)(Ke,{size:14}),(0,W.jsxs)(`span`,{className:`version-installed`,children:[E?`v${E.installed}`:`…`,E&&!E.updateAvailable&&(0,W.jsx)(`span`,{className:`version-uptodate-dot`})]})]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{d(!1),V.handleLogout(),H.setMessages([])},children:[(0,W.jsx)(ve,{size:14}),` Log out`]})]})]})]}),(0,W.jsxs)(`div`,{className:`chat-content`,children:[(0,W.jsx)(ZE,{messages:H.messages,isStreaming:H.isStreaming,elapsedSeconds:Te.elapsedSeconds,sessionTurnStart:Te.sessionTurnStart,expandAll:V.expandAll,setExpandAll:V.setExpandAll,conversationCompacted:H.conversationCompacted,isCompacting:H.isCompacting,setShowCompactConfirm:s,handleComponentSubmit:H.handleComponentSubmit,effectiveSubmitted:H.effectiveSubmitted,selectionMode:we.selectionMode,selectedItems:we.selectedItems,toggleSelectItem:we.toggleSelectItem,sessionKey:V.sessionKey,setLightboxSrc:n,messageQueue:H.messageQueue,messageQueueRef:H.messageQueueRef,setQueue:H.setQueue,sendMessage:H.sendMessage,appState:V.appState,onboardingComplete:V.onboardingComplete,onOpenArtefact:e=>{z({surface:`doc`,...e}),oe(`chat-link`)}}),(0,W.jsx)(QE,{offer:H.topicChangeOffer,onFreshStart:H.handleTopicFreshStart,onContinue:H.handleTopicContinue,disabled:H.isStreaming}),(0,W.jsx)(bD,{selectionMode:we.selectionMode,selectedItems:we.selectedItems,copyToast:we.copyToast||null,exitSelection:we.exitSelection,enterSelection:we.enterSelection,copySelected:we.copySelected,showCopyToast:we.showCopyToast,input:H.input,setInput:H.setInput,inputRef:e,pendingFiles:Ee.pendingFiles,setPendingFiles:Ee.setPendingFiles,isDragOver:Ee.isDragOver,attachError:Ee.attachError,fileInputRef:Ee.fileInputRef,addFiles:Ee.addFiles,removeFile:Ee.removeFile,onDragOver:Ee.onDragOver,onDragLeave:Ee.onDragLeave,onDrop:Ee.onDrop,isStreaming:H.isStreaming,wasPaused:H.wasPaused,messages:H.messages,messageQueueRef:H.messageQueueRef,setQueue:H.setQueue,sendMessage:H.sendMessage,stopStreaming:H.stopStreaming,disconnecting:V.disconnecting,handleDisconnect:V.handleDisconnect,claudeInfo:V.claudeInfo,setClaudeInfo:V.setClaudeInfo,setShowClaudeInfo:a,conversationId:V.conversationId,sessionKey:V.sessionKey,onNewConversation:H.startNewConversation,newConversationDisabled:H.isStreaming||H.isCompacting,onOpenConversations:()=>{w(!0),De.refetch()},sidebarVisible:ce})]}),we.copyToast&&(0,W.jsx)(`span`,{className:`copy-toast${we.copyToast===`failed`?` copy-toast-failed`:``}`,children:we.copyToast===`copied`?`Copied`:`Copy failed`}),(0,W.jsx)(fD,{show:C,onClose:()=>w(!1),conversationsLoading:De.loading,conversationsError:De.error,conversationsList:De.sessions,setConversationsList:De.setSessions,sessionKey:V.sessionKey,setSessionKey:V.setSessionKey,isStreaming:H.isStreaming,resetConversation:H.resetConversation,setMessages:H.setMessages,setConversationId:V.setConversationId}),(0,W.jsx)(pD,{src:t,onClose:()=>n(null)}),(0,W.jsx)(mD,{show:o,onClose:()=>s(!1),onConfirm:H.handleCompactNow}),(0,W.jsx)(hD,{show:r,onClose:()=>{a(!1),V.setClaudeInfo(null)},claudeInfo:V.claudeInfo,messages:H.messages,sessionElapsed:Te.sessionElapsed,conversationId:V.conversationId}),(0,W.jsx)(vD,{show:O,onClose:()=>{k(!1),be.current=!0},versionInfo:A,sessionKey:V.sessionKey,onUpgradeComplete:()=>D(null)}),M&&(0,W.jsx)(wD,{onClose:()=>N(!1)})]}),(0,W.jsx)(HD,{}),(0,W.jsx)(LD,{}),(0,W.jsx)(MD,{selection:L,trigger:ae,sessionKey:V.sessionKey,onClose:()=>{z(null),oe(null)},onArtefactSaved:(e,t,n)=>{se.current?.patchArtefact(e,{updatedAt:t,content:n})},onSwapToGraph:(e,t)=>{z({surface:`graph`,focusNodeId:e,focusNodeLabel:t}),oe(`chat-link`)}})]})})}(0,be.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(GD,{}));
|
|
352
|
+
`)}var tD=`Cloudflare setup completed (actionId: `,nD=`{"_componentDone"`,rD=`{"_lifecycle"`;function iD(e){return typeof e!=`string`||e.length===0?!1:e.startsWith(nD)||e.startsWith(rD)||e.startsWith(tD)}function aD(e){let{row:t,surface:n,isStreaming:r,activeSessionKey:a,isLogsOpen:o,onLogsToggle:s,onRequestRename:c,onResume:l,onDelete:u,onSwitchPreFlush:d}=e,f=t.phase===`pre-flush`,p=f&&t.sessionKey!==null&&t.sessionKey!==a;return(0,W.jsxs)(`div`,{className:`conversations-row-actions`,"data-surface":n,children:[(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-logs`,title:f?`View pre-flush logs`:`View logs`,"aria-haspopup":`menu`,"aria-expanded":o,onClick:e=>{e.stopPropagation(),s(e.currentTarget)},children:(0,W.jsx)(g,{size:13})}),p&&d&&(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-play`,title:`Switch into this in-memory session`,disabled:r||!a,onClick:e=>{e.stopPropagation(),!(r||!a)&&d()},children:(0,W.jsx)(_,{size:13})}),!f&&t.conversationId&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-rename`,title:`Rename conversation`,onClick:e=>{e.stopPropagation(),c()},children:(0,W.jsx)(ut,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-play`,title:`Resume conversation`,disabled:r,onClick:e=>{e.stopPropagation(),!(r||!a)&&l()},children:(0,W.jsx)(_,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-delete`,title:`Delete conversation`,onClick:e=>{e.stopPropagation(),u()},children:(0,W.jsx)(i,{size:13})})]})]})}var oD=[{type:`stream`,label:`Stream`},{type:`error`,label:`Errors`},{type:`sse`,label:`SSE`}];function sD(e){let{state:t,popoverRef:n,surface:r,buildLogsUrl:i,onClose:a}=e;return t?(0,W.jsx)(`div`,{ref:n,className:`conversations-logs-popover`,role:`menu`,style:{top:t.top,right:t.right},"data-surface":r,children:oD.map(({type:e,label:n})=>(0,W.jsxs)(`a`,{role:`menuitem`,className:`conversations-logs-popover-item`,href:i({conversationId:t.conversationId,sessionKey:t.sessionKey},e),target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{console.debug(`[admin-logs-popover] open-log`,{surface:r,conversationId:t.conversationId,sessionKey:t.sessionKey,type:e}),a()},children:[(0,W.jsx)(g,{size:12}),(0,W.jsx)(`span`,{children:n})]},e))}):null}function cD(e){let[t,n]=(0,U.useState)(null),r=(0,U.useRef)(null),i=(0,U.useCallback)(()=>n(null),[]),a=(0,U.useCallback)((e,t,r)=>{n(n=>{if(n?.rowId===e)return null;let i=r.getBoundingClientRect();return{rowId:e,conversationId:t.conversationId,sessionKey:t.sessionKey,top:i.bottom+4,right:Math.max(8,window.innerWidth-i.right)}})},[]);return(0,U.useEffect)(()=>{if(!t)return;function e(e){let t=e.target;t&&r.current?.contains(t)||t&&t.closest?.(`.conversations-logs`)||n(null)}function i(e){e.key===`Escape`&&n(null)}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,i),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,i)}},[t]),(0,U.useEffect)(()=>{if(!t||!e?.current)return;let r=e.current,i=()=>n(null);return r.addEventListener(`scroll`,i,{passive:!0}),()=>r.removeEventListener(`scroll`,i)},[t,e]),{popover:t,popoverRef:r,toggle:a,close:i}}function lD(e,t){let[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(``),[c,l]=(0,U.useState)(!1),u=(0,U.useRef)(null);(0,U.useEffect)(()=>{i?.phase===`editing`&&(u.current?.focus(),u.current?.select())},[i]);let d=(0,U.useCallback)(()=>{r(null),a(null),s(``),l(!1)},[]);return{editingId:n,editState:i,editValue:o,setEditValue:s,confirming:c,editInputRef:u,requestSuggestion:(0,U.useCallback)(async t=>{if(e){d(),r(t),a({phase:`loading`});try{let n=await fetch(`/api/admin/sessions/${encodeURIComponent(t)}/label?session_key=${encodeURIComponent(e)}`,{method:`POST`});if(!n.ok){a({phase:`error`,reason:(await n.json().catch(()=>({}))).error||`Request failed`});return}let r=await n.json();r.label?(a({phase:`editing`}),s(r.label)):a({phase:`error`,reason:`Not enough message content to suggest a name`})}catch(e){console.error(`[admin-rename] label suggestion failed:`,e),a({phase:`error`,reason:e instanceof Error?e.message:String(e)})}}},[e,d]),confirmRename:(0,U.useCallback)(async n=>{let r=o.trim();if(!(!e||!r||c)){l(!0);try{let i=await fetch(`/api/admin/sessions/${encodeURIComponent(n)}/label`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({label:r,session_key:e})});if(!i.ok){a({phase:`error`,reason:(await i.json().catch(()=>({}))).error||`Rename failed`}),l(!1);return}t(e=>e.map(e=>e.conversationId===n?{...e,name:r}:e)),d()}catch(e){console.error(`[admin-rename] label rename failed:`,e),a({phase:`error`,reason:e instanceof Error?e.message:String(e)}),l(!1)}}},[e,o,c,t,d]),cancelEdit:d,isEditingRow:(0,U.useCallback)(e=>e!==null&&n===e,[n])}}var uD=`maxy-admin-session-key`;function dD(e,t){return e.conversationId?`/api/admin/logs?type=${t}&conversationId=${encodeURIComponent(e.conversationId)}`:e.sessionKey?`/api/admin/logs?type=${t}&sessionKey=${encodeURIComponent(e.sessionKey)}`:`/api/admin/logs?type=${t}`}function fD(e){let{show:t,onClose:n,conversationsLoading:r,conversationsError:i,conversationsList:a,setConversationsList:o,sessionKey:s,setSessionKey:c,isStreaming:l,resetConversation:u,setMessages:d,setConversationId:f}=e,[p,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(null),v=(0,U.useRef)(null),y=(0,U.useRef)(null),b=(0,U.useRef)(null),{popover:x,popoverRef:S,toggle:C,close:w}=cD(b),T=lD(s,o);(0,U.useEffect)(()=>{t||(T.cancelEdit(),w(),h(null),_(null),v.current&&=(clearTimeout(v.current),null),y.current&&=(clearTimeout(y.current),null))},[t,T,w]);async function E(e){await re(e)?(h(e),_(null),v.current&&clearTimeout(v.current),v.current=setTimeout(()=>h(null),1500)):(_(e),h(null),y.current&&clearTimeout(y.current),y.current=setTimeout(()=>_(null),1500))}return t?(0,W.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,W.jsxs)(`div`,{className:`claude-info-modal conversations-modal`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`claude-info-header`,children:[(0,W.jsx)(Qe,{size:12}),`Conversations`,(0,W.jsx)(`button`,{className:`claude-info-close`,onClick:n,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`conversations-list`,ref:b,children:[r&&(0,W.jsxs)(`div`,{className:`conversations-empty`,children:[(0,W.jsx)(pe,{size:14,className:`spin`}),` Loading…`]}),i&&(0,W.jsx)(`div`,{className:`conversations-empty conversations-error`,children:i}),!r&&!i&&a.length===0&&(0,W.jsx)(`div`,{className:`conversations-empty`,children:`No recent conversations`}),!r&&!i&&a.map(e=>{let t=e.conversationId??e.sessionKey??``,r=e.phase===`pre-flush`,i=T.isEditingRow(e.conversationId),a=i&&T.editState?.phase===`loading`,h=i&&T.editState?.phase===`editing`,_=i&&T.editState?.phase===`error`,v=e.conversationId??e.sessionKey??``;return(0,W.jsxs)(`div`,{className:`conversations-row${r?` conversations-row-pre-flush`:``}`,children:[(0,W.jsxs)(`div`,{className:`conversations-row-info`,children:[a&&(0,W.jsxs)(`span`,{className:`conversations-row-name conversations-edit-loading`,children:[(0,W.jsx)(pe,{size:12,className:`spin`}),` Generating suggestion…`]}),h&&(0,W.jsxs)(`div`,{className:`conversations-edit-inline`,children:[(0,W.jsx)(`input`,{ref:T.editInputRef,type:`text`,className:`conversations-edit-input`,value:T.editValue,onChange:e=>T.setEditValue(e.target.value),onKeyDown:t=>{t.key===`Enter`&&T.editValue.trim()&&T.confirmRename(e.conversationId),t.key===`Escape`&&T.cancelEdit()},maxLength:200}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-confirm`,title:`Confirm rename`,disabled:!T.editValue.trim()||T.confirming,onClick:()=>T.confirmRename(e.conversationId),children:T.confirming?(0,W.jsx)(pe,{size:13,className:`spin`}):(0,W.jsx)(m,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-cancel`,title:`Cancel`,onClick:T.cancelEdit,children:(0,W.jsx)(B,{size:13})})]}),_&&(0,W.jsxs)(`div`,{className:`conversations-edit-inline`,children:[(0,W.jsx)(`span`,{className:`conversations-edit-error`,children:T.editState.reason}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-retry`,title:`Retry`,onClick:()=>T.requestSuggestion(e.conversationId),children:(0,W.jsx)(z,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-cancel`,title:`Cancel`,onClick:T.cancelEdit,children:(0,W.jsx)(B,{size:13})})]}),!i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`span`,{className:`conversations-row-name`,children:[e.name||(r?`session ${v}`:v),r&&(0,W.jsx)(`span`,{className:`conversations-row-phase-badge`,title:`Pre-flush — conversation not yet persisted`,children:`pre-flush`})]}),(0,W.jsxs)(`span`,{className:`conversations-row-meta`,children:[(0,W.jsx)(`button`,{type:`button`,className:`conversations-row-id${p===t?` copied`:``}${g===t?` copy-failed`:``}`,title:v,"aria-label":r?`Copy session key ${v}`:`Copy conversation id ${v}`,onClick:e=>{e.stopPropagation(),E(t)},children:p===t?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(m,{size:10}),` copied`]}):g===t?`copy failed`:v.slice(0,8)}),(0,W.jsxs)(`span`,{className:`conversations-row-time`,children:[(0,W.jsx)(je,{size:10}),(()=>{try{let t=new Date(e.updatedAt),n=Date.now()-t.getTime();return n<6e4?`just now`:n<36e5?`${Math.floor(n/6e4)}m ago`:n<864e5?`${Math.floor(n/36e5)}h ago`:`${Math.floor(n/864e5)}d ago`}catch{return``}})()]})]})]})]}),!i&&(0,W.jsx)(aD,{row:e,surface:`conversations-modal`,rowId:t,isStreaming:l,activeSessionKey:s,isLogsOpen:x?.rowId===t,onLogsToggle:n=>{console.info(`[admin-session-identity] sessionKey=${(e.sessionKey??`null`).slice(0,8)} conversationId=${(e.conversationId??`null`).slice(0,8)} phase=${e.phase} surface=conversations-modal action=logs`),C(t,{conversationId:e.conversationId,sessionKey:e.sessionKey},n)},onRequestRename:()=>{e.conversationId&&(console.info(`[admin-session-identity] sessionKey=${(e.sessionKey??`null`).slice(0,8)} conversationId=${e.conversationId.slice(0,8)} phase=${e.phase} surface=conversations-modal action=rename`),T.requestSuggestion(e.conversationId))},onResume:()=>{!e.conversationId||!s||(console.info(`[admin-session-identity] sessionKey=${s.slice(0,8)} conversationId=${e.conversationId.slice(0,8)} phase=${e.phase} surface=conversations-modal action=resume`),n(),u(),fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}/resume?session_key=${encodeURIComponent(s)}`,{method:`POST`}).then(e=>e.ok?e.json():Promise.reject(Error(`Failed to resume conversation`))).then(e=>{e.conversationId&&f(e.conversationId);let t=(e.messages??[]).map(e=>({role:e.role===`user`?`admin`:`maxy`,content:e.role===`user`?e.content:void 0,events:e.role===`assistant`?e.events??(e.content?[{type:`text`,content:e.content}]:[]):void 0,...e.role===`user`&&e.attachments&&e.attachments.length>0?{attachments:e.attachments}:{},...e.role===`user`&&iD(e.content)?{hidden:!0}:{},timestamp:new Date(e.createdAt).getTime()||0,historical:!0,...e.messageId?{messageId:e.messageId}:{}}));t.length>0&&d(t)}).catch(e=>{console.error(`[chat] conversation resume failed:`,e),d([{role:`maxy`,events:[{type:`text`,content:`Could not load conversation history.`}],timestamp:Date.now()-1,historical:!0}])}))},onDelete:()=>{e.conversationId&&(console.info(`[admin-session-identity] sessionKey=${(e.sessionKey??`null`).slice(0,8)} conversationId=${e.conversationId.slice(0,8)} phase=${e.phase} surface=conversations-modal action=delete`),o(t=>t.filter(t=>t.conversationId!==e.conversationId)),s&&fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}?session_key=${encodeURIComponent(s)}`,{method:`DELETE`}).catch(e=>console.error(`[chat] conversation delete failed:`,e)))},onSwitchPreFlush:()=>{if(l||!s||!e.sessionKey)return;let t=e.sessionKey;console.info(`[admin-session-identity] sessionKey=${s.slice(0,8)} conversationId=null phase=${e.phase} surface=conversations-modal action=switch-pre-flush target=${t.slice(0,8)}`),n(),u(),d([]),fetch(`/api/admin/sessions/switch?session_key=${encodeURIComponent(s)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target_session_key:t})}).then(e=>e.ok?e.json():Promise.reject(Error(`switch returned ${e.status}`))).then(e=>{try{sessionStorage.setItem(uD,e.session_key)}catch{}he(e.session_key,`chat`),c(e.session_key),f(e.conversationId)}).catch(e=>{console.error(`[chat] pre-flush session switch failed:`,e),d([{role:`maxy`,events:[{type:`text`,content:`Could not switch into that session.`}],timestamp:Date.now()-1,historical:!0}])})}})]},t)})]}),(0,W.jsx)(sD,{state:x,popoverRef:S,surface:`conversations-modal`,buildLogsUrl:dD,onClose:w})]})}):null}function pD({src:e,onClose:t}){return e?(0,W.jsxs)(`div`,{className:`attachment-lightbox`,onClick:t,children:[(0,W.jsx)(`button`,{className:`attachment-lightbox-close`,onClick:t,"aria-label":`Close`,children:`×`}),(0,W.jsx)(`img`,{src:e,alt:`Attachment`,onClick:e=>e.stopPropagation()})]}):null}function mD({show:e,onClose:t,onConfirm:n}){return e?(0,W.jsx)(`div`,{className:`claude-info-overlay`,onClick:t,children:(0,W.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`claude-info-header`,children:[(0,W.jsx)(`span`,{children:`Compact conversation?`}),(0,W.jsx)(`button`,{className:`claude-info-close`,onClick:t,"aria-label":`Close`,children:`✕`})]}),(0,W.jsx)(`div`,{className:`claude-info-section`,style:{padding:`12px 14px`,fontSize:`11px`,color:`var(--text-secondary)`},children:`Summarises the conversation history to free up context window space. The session continues with a compressed summary.`}),(0,W.jsxs)(`div`,{className:`claude-info-section`,style:{display:`flex`,gap:`8px`,padding:`10px 14px`},children:[(0,W.jsx)(E,{variant:`secondary`,size:`sm`,style:{background:`var(--accent)`,flex:1},onClick:()=>{t(),n()},children:`Yes, compact`}),(0,W.jsx)(E,{variant:`secondary`,size:`sm`,style:{flex:1},onClick:t,children:`No`})]})]})}):null}function hD(e){let{show:t,onClose:n,claudeInfo:r,messages:i,sessionElapsed:a,conversationId:o}=e;if(!t)return null;let s=i.flatMap(e=>e.events?.filter(e=>e.type===`usage`)??[]),c=s.at(-1),l=c?.peak_request_pct==null?c?.context_window?Math.round((c.input_tokens+c.cache_creation_tokens+c.cache_read_tokens)/c.context_window*100):0:Math.round(c.peak_request_pct*100),u=s.reduce((e,t)=>e+t.input_tokens+t.cache_creation_tokens+t.cache_read_tokens+t.output_tokens,0),d=i.flatMap(e=>e.events?.filter(e=>e.type===`rate_limit`)??[]).at(-1),f=s.reduce((e,t)=>e+(t.total_cost_usd??0),0),p=r?.account?.subscriptionType,m=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,W.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,W.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`claude-info-header`,children:[(0,W.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`claude-info-icon`}),(0,W.jsx)(`span`,{children:`Claude Code`}),(0,W.jsx)(`button`,{className:`claude-info-close`,onClick:n,"aria-label":`Close`,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`claude-info-section`,children:[(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Version`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:r?r.version:`…`})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Email`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:r?.account?.email??`…`})]})]}),(p||d||f>0)&&(0,W.jsxs)(`div`,{className:`claude-info-section`,children:[p&&(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Plan`}),(0,W.jsx)(`span`,{className:`claude-info-value`,style:{textTransform:`capitalize`},children:p})]}),d&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Usage`}),(0,W.jsxs)(`span`,{className:`claude-info-value`,children:[Math.round(d.utilization*100),`%`]})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Resets in`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:m(d.resetsAt)})]}),d.isUsingOverage&&(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Overage`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:`Active`})]})]}),f>0&&(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Session cost`}),(0,W.jsxs)(`span`,{className:`claude-info-value`,children:[`$`,f<.01?f.toFixed(4):f.toFixed(2)]})]})]}),(0,W.jsxs)(`div`,{className:`claude-info-section`,children:[(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Model`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:r?.model??`…`})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Context used`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:l>0?`${l}%`:`—`})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Tokens`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:u>0?wt(u):`—`})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Session`}),(0,W.jsx)(`span`,{className:`claude-info-value`,children:Ct(a)})]}),o&&(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Conversation`}),(0,W.jsx)(`span`,{className:`claude-info-value`,style:{fontFamily:`monospace`,fontSize:10},children:o.slice(0,8)})]})]})]})})}var gD=5e3,_D={atPhase:8};function vD({show:e,onClose:t,versionInfo:n,sessionKey:r,onUpgradeComplete:i}){let[a,o]=(0,U.useState)(`prompt`),[s,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),_=(0,U.useRef)(null),v=n?.latest??null,y=(0,U.useCallback)(()=>{_.current&&=(clearInterval(_.current),null)},[]);(0,U.useEffect)(()=>{e||(y(),o(`prompt`),c(``),u(!1),f(null),m(null),g(null))},[e,y]),(0,U.useEffect)(()=>y,[y]),(0,U.useEffect)(()=>{if(!(!e||a!==`running`||!v))return _.current=setInterval(async()=>{try{let e=await fetch(`/api/admin/version`,{cache:`no-store`});if(!e.ok)return;(await e.json()).installed===v&&(y(),o(`succeeded`),i(),setTimeout(()=>window.location.reload(),2e3))}catch{}},gD),y},[e,a,v,i,y]);let b=(0,U.useCallback)(async()=>{if(!(!v||!r||a!==`prompt`)){if(!s){f(`Enter your device password first.`);return}f(null),m(null),o(`priming`);try{let e=await fetch(`/api/admin/actions/sudo-prime?session_key=${encodeURIComponent(r)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:s,session_key:r})});if(e.status!==204){f((await e.json().catch(()=>({}))).error??`Password check failed (status ${e.status})`),o(`prompt`);return}}catch(e){f(e instanceof Error?e.message:`Password check network error`),o(`prompt`);return}try{let e=await fetch(`/api/admin/actions/upgrade?session_key=${encodeURIComponent(r)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sudoPassword:s,session_key:r})}),t=await e.json().catch(()=>({}));if(!e.ok||!t.actionId){m(t.error??`launch failed (status ${e.status})`),o(`launch-failed`);return}g(t.actionId),o(`running`)}catch(e){m(e instanceof Error?e.message:`launch network error`),o(`launch-failed`)}finally{c(``)}}},[s,v,r,a]);return e?(0,W.jsx)(`div`,{className:`claude-info-overlay`,onClick:()=>{(a===`prompt`||a===`succeeded`||a===`launch-failed`)&&t()},children:(0,W.jsxs)(`div`,{className:`claude-info-modal update-modal`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`claude-info-header`,children:[(0,W.jsx)(ce,{size:12}),`Software Update`,(0,W.jsx)(`button`,{className:`claude-info-close`,onClick:t,children:`✕`})]}),(0,W.jsxs)(`div`,{className:`update-modal-body`,children:[(0,W.jsxs)(`div`,{className:`update-modal-versions`,children:[(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Installed`}),(0,W.jsxs)(`span`,{className:`claude-info-value`,children:[`v`,n?.installed??`…`]})]}),(0,W.jsxs)(`div`,{className:`claude-info-row`,children:[(0,W.jsx)(`span`,{className:`claude-info-label`,children:`Available`}),(0,W.jsxs)(`span`,{className:`claude-info-value update-version-new`,children:[`v`,v??`…`]})]})]}),(a===`prompt`||a===`priming`||a===`launch-failed`)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`form-input__field`,style:{marginTop:12},children:[(0,W.jsx)(`label`,{className:`form-input__label`,htmlFor:`upgrade-sudo`,children:`Device password`}),(0,W.jsxs)(`div`,{className:`tunnel-route__row`,children:[(0,W.jsx)(`input`,{id:`upgrade-sudo`,className:`form-input__input tunnel-route__input`,type:l?`text`:`password`,autoComplete:`current-password`,value:s,onChange:e=>{c(e.target.value),f(null)},disabled:a===`priming`,onKeyDown:e=>{e.key===`Enter`&&s&&b()}}),(0,W.jsx)(`button`,{type:`button`,className:`tunnel-route__suffix`,onClick:()=>u(e=>!e),disabled:a===`priming`,style:{cursor:`pointer`,border:`none`,background:`inherit`},"aria-label":l?`Hide password`:`Show password`,children:l?`Hide`:`Show`})]}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Needed once. The installer uses it to run the privileged steps; it is never saved.`}),d&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:d}),p&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,role:`alert`,children:p})]}),(0,W.jsx)(`button`,{type:`button`,className:`update-modal-btn`,onClick:b,disabled:!v||!s||a===`priming`,children:a===`priming`?`Checking password…`:a===`launch-failed`?`Try again`:`Upgrade`})]}),a===`running`&&h&&r&&(0,W.jsx)(`div`,{className:`update-modal-terminal`,style:{height:360,marginTop:10},children:(0,W.jsx)(CE,{actionId:h,sessionKey:r,selfRestart:_D})}),a===`succeeded`&&(0,W.jsxs)(`div`,{className:`update-modal-result`,children:[(0,W.jsx)(H,{size:14,className:`update-success-icon`}),(0,W.jsxs)(`span`,{children:[`Upgraded to v`,v,` — reloading…`]})]})]})]})}):null}function yD(e){let{conversationId:t,sessionKey:n,disconnecting:r,onOpenConversations:i,handleDisconnect:a,onAfterAction:o}=e,s=!t&&!n;return(0,W.jsxs)(`div`,{className:`chat-actions-menu`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`chat-action`,onClick:()=>{o(),i()},children:[(0,W.jsx)(Qe,{size:14}),(0,W.jsx)(`span`,{className:`action-label`,children:`Conversations`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-action`,disabled:r,onClick:async()=>{o(),await a()},children:[r?(0,W.jsx)(pe,{size:14,className:`animate-spin`}):(0,W.jsx)(we,{size:14}),(0,W.jsx)(`span`,{className:`action-label`,children:r?`Disconnecting...`:`Disconnect Claude`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-action`,disabled:s,title:t?`Download stream log`:n?`Download stream log (pre-flush)`:`No session active — reload the page to start one`,onClick:()=>{if(o(),s){console.debug(`[stream-log-button] no-identity sessionKey=null conversationId=null`);return}let e=document.createElement(`a`);e.href=`${dD({conversationId:t,sessionKey:n},`stream`)}&download=1`,e.click()},children:[(0,W.jsx)(ft,{size:14}),(0,W.jsx)(`span`,{className:`action-label`,children:`Stream log`})]})]})}function bD(e){let{selectionMode:t,selectedItems:n,copyToast:r,exitSelection:i,enterSelection:a,copySelected:o,showCopyToast:s,input:l,setInput:d,inputRef:p,pendingFiles:m,setPendingFiles:h,isDragOver:y,attachError:b,fileInputRef:x,addFiles:S,removeFile:C,onDragOver:w,onDragLeave:T,onDrop:D,isStreaming:j,wasPaused:M,messages:P,messageQueueRef:ee,setQueue:F,sendMessage:ne,stopStreaming:L,disconnecting:ie,handleDisconnect:R,claudeInfo:z,setClaudeInfo:B,setShowClaudeInfo:ae,conversationId:oe,sessionKey:se,onNewConversation:ce,newConversationDisabled:le,onOpenConversations:ue,sidebarVisible:de}=e,[fe,pe]=(0,U.useState)(!1),me=(0,U.useRef)(null),[he,ge]=(0,U.useState)(!1),_e=(0,U.useRef)(null),ve=(0,U.useRef)(!1),ye=I(),be=ye.state===`recording`||ye.state===`paused`||ye.state===`sending`,xe=!be&&!M&&!l.trim()&&m.length===0;async function Se(){let e=await ye.send();if(!e)return;let t=e.type===`audio/ogg`?`.ogg`:e.type===`audio/mp4`?`.m4a`:`.webm`,n=new File([e],`voice-note${t}`,{type:e.type});if(j){F([...ee.current,{text:`[Voice note]`,files:[n],timestamp:Date.now()}]);return}ne(`[Voice note]`,[n])}return(0,U.useEffect)(()=>{t||ge(!1)},[t]),(0,U.useEffect)(()=>{if(!he)return;let e=e=>{e.target.closest(`.selection-copy-wrap`)||ge(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[he]),(0,U.useEffect)(()=>{if(!fe)return;let e=e=>{if(e.key===`Escape`){pe(!1);return}if(e.key===`Tab`&&me.current){let t=me.current.querySelectorAll(`.actions-menu-items button:not([disabled])`);if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}},t=e=>{me.current&&!me.current.contains(e.target)&&pe(!1)};return document.addEventListener(`keydown`,e),document.addEventListener(`mousedown`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`mousedown`,t)}},[fe]),t?(0,W.jsx)(`div`,{className:`chat-input-area`,children:(0,W.jsxs)(`div`,{className:`selection-bar`,children:[(0,W.jsxs)(`span`,{className:`selection-count`,children:[n.size,` Selected`]}),(0,W.jsxs)(`div`,{className:`selection-copy-wrap`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`selection-copy`,onPointerDown:()=>{if(he){ge(!1);return}ve.current=!1,_e.current=setTimeout(()=>{ve.current=!0,ge(!0),_e.current=null},500)},onPointerUp:()=>{_e.current!==null&&(clearTimeout(_e.current),_e.current=null)},onPointerLeave:()=>{_e.current!==null&&(clearTimeout(_e.current),_e.current=null)},onPointerCancel:()=>{_e.current!==null&&(clearTimeout(_e.current),_e.current=null)},onClick:async()=>{ve.current||await o(e=>$E(P,e),(e,t)=>{let[n,r]=[e.slice(0,e.lastIndexOf(`_`)),e.slice(e.lastIndexOf(`_`)+1)],[i,a]=[t.slice(0,t.lastIndexOf(`_`)),t.slice(t.lastIndexOf(`_`)+1)],o=parseInt(n,10)-parseInt(i,10);return o===0?r===`admin`?-1:a===`admin`?1:parseInt(r,10)-parseInt(a,10):o})},children:[(0,W.jsx)(f,{size:18}),(0,W.jsx)(`span`,{children:`Copy`})]}),he&&(0,W.jsx)(`div`,{className:`copy-menu`,children:[[`all`,`All events`],[`text`,`Text messages only`],[`non-text`,`Non-text only`]].map(([e,t])=>(0,W.jsx)(`button`,{type:`button`,className:`copy-menu-item`,onClick:async()=>{let t=eD(P,e);t&&s(await re(t)),i()},children:t},e))})]}),(0,W.jsx)(`button`,{type:`button`,className:`selection-cancel`,onClick:i,children:`Cancel`})]})}):(0,W.jsxs)(`div`,{className:`chat-input-area`,children:[(0,W.jsx)(`input`,{ref:x,type:`file`,multiple:!0,accept:Dt,style:{display:`none`},onChange:e=>{e.target.files&&S([...e.target.files]),e.target.value=``}}),m.length>0&&(0,W.jsx)(`div`,{className:`attachment-strip`,children:m.map((e,t)=>(0,W.jsxs)(`div`,{className:`attachment-chip`,children:[e.type.startsWith(`image/`)?(0,W.jsx)(`img`,{src:URL.createObjectURL(e),alt:e.name,className:`attachment-chip-thumb`}):e.type.startsWith(`audio/`)?(0,W.jsx)(k,{size:14}):e.type===`application/pdf`?(0,W.jsx)(g,{size:14}):(0,W.jsx)(v,{size:14}),(0,W.jsx)(`span`,{className:`attachment-chip-name`,children:e.name}),(0,W.jsx)(`button`,{type:`button`,className:`attachment-chip-remove`,onClick:()=>C(t),"aria-label":`Remove ${e.name}`,children:`×`})]},t))}),b&&(0,W.jsx)(`p`,{className:`attach-error`,children:b}),ye.state===`error`&&ye.errorMessage&&(0,W.jsxs)(`p`,{className:`voice-error`,role:`alert`,children:[(0,W.jsx)(k,{size:14}),ye.errorMessage]}),(0,W.jsx)(O,{inputRef:p}),be?(0,W.jsx)(`div`,{className:`chat-form voice-active`,children:(0,W.jsx)(N,{state:ye.state,elapsedSeconds:ye.elapsedSeconds,waveform:ye.waveform,onTogglePause:ye.togglePause,onDiscard:ye.discard,onSend:Se})}):(0,W.jsxs)(`form`,{className:`chat-form${y?` drag-over`:``}`,onSubmit:e=>{e.preventDefault();let t=l.trim()||(M?`continue`:``);if(!(!t&&m.length===0)){if(j){F([...ee.current,{text:t,files:[...m],timestamp:Date.now()}]),d(``),h([]),p.current?.resetHeight();return}ne(t),p.current?.resetHeight()}},onDragOver:w,onDragLeave:T,onDrop:D,onPaste:e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t){if(e.kind!==`file`)continue;let t=e.getAsFile();if(!t)continue;let r=t.type.split(`/`)[1]?.replace(`jpeg`,`jpg`)||`png`;n.push(new File([t],`pasted-image-${Date.now()}.${r}`,{type:t.type}))}n.length>0&&S(n)},children:[(0,W.jsx)(E,{variant:`icon`,type:`button`,onClick:()=>x.current?.click(),"aria-label":`Attach file`,children:(0,W.jsx)(c,{size:14})}),(0,W.jsx)(te,{ref:p,value:l,onChange:d}),j?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(E,{variant:`send`,type:`button`,onClick:()=>L(!0),"aria-label":`Pause`,style:{background:`var(--text-secondary)`},children:(0,W.jsx)(A,{size:14})}),(0,W.jsx)(E,{variant:`send`,type:`button`,onClick:()=>L(!1),"aria-label":`Stop`,style:{background:`var(--danger)`},children:(0,W.jsx)(ht,{size:14})})]}):xe?(0,W.jsx)(E,{variant:`send`,type:`button`,onClick:ye.start,"aria-label":`Record voice note`,children:(0,W.jsx)(k,{size:14})}):(0,W.jsx)(E,{variant:`send`,type:`submit`,disabled:!l.trim()&&m.length===0&&!M,"aria-label":`Send message`,children:M?(0,W.jsx)(_,{size:14}):(0,W.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,W.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,W.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,W.jsxs)(`div`,{className:`chat-actions`,ref:me,children:[!de&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{className:`burger-trigger`,onClick:()=>pe(e=>!e),"aria-expanded":fe,"aria-haspopup":`true`,"aria-label":`Conversation actions`,children:(0,W.jsx)(Ie,{size:16})}),(0,W.jsx)(`div`,{className:`actions-menu-items${fe?` actions-menu-open`:``}`,children:(0,W.jsx)(yD,{conversationId:oe,sessionKey:se,disconnecting:ie,onOpenConversations:ue,handleDisconnect:R,onAfterAction:()=>pe(!1)})})]}),(0,W.jsx)(`button`,{type:`button`,className:`chat-action-icon`,title:`New conversation`,"aria-label":`New conversation`,disabled:le,onClick:ce,children:(0,W.jsx)(Ue,{size:16})}),(0,W.jsx)(`button`,{type:`button`,className:`chat-action-icon`,title:`Select messages`,"aria-label":`Select messages`,onClick:a,children:(0,W.jsx)(u,{size:16})}),(0,W.jsxs)(`div`,{className:`powered-by`,onClick:async()=>{if(ae(!0),!z){let e=await fetch(`/api/admin/claude-info`);e.ok&&B(await e.json())}},children:[(0,W.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,W.jsx)(`span`,{children:`Powered by Claude Code`})]})]})]})}var xD=`maxy-vnc-overlay-popout`;function SD(e){let[t,n]=(0,U.useState)(!1),r=(0,U.useRef)(null),i=(0,U.useRef)(null),a=(0,U.useCallback)(()=>{i.current&&=(clearInterval(i.current),null),r.current&&!r.current.closed&&r.current.close(),r.current=null,n(!1)},[]),o=(0,U.useCallback)(()=>{let t=`/vnc-popout.html?title=${encodeURIComponent(R.productName)}`,o=window.open(t,xD,`width=1024,height=768`);o&&(r.current=o,n(!0),i.current=setInterval(()=>{r.current?.closed&&(a(),e?.())},500))},[a,e]);return(0,U.useEffect)(()=>()=>a(),[a]),{poppedOut:t,popout:o,cleanupPopout:a}}var CD=(0,U.forwardRef)(function({onClose:e},t){St(),cn(`overlay`);let{poppedOut:n,popout:r,cleanupPopout:i}=SD(e);return(0,U.useImperativeHandle)(t,()=>({popout:r}),[r]),n?(0,W.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:R.productName}),(0,W.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:at,onClick:()=>i(),"aria-label":`Pop back in`}),e&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:B,onClick:()=>{i(),e()},"aria-label":`Close`})]}):(0,W.jsx)(`iframe`,{src:`/vnc-viewer.html`,className:`browser-surface__iframe`,title:R.productName})});function wD({onClose:e}){St(),cn(`overlay`);let{poppedOut:t,popout:n,cleanupPopout:r}=SD(e),i=(0,U.useCallback)(()=>{r(),e()},[r,e]);(0,U.useEffect)(()=>{if(t)return;let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,i]);let a=sn({handlePopout:n,disabled:t});return t?(0,W.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer__title`,children:R.productName}),(0,W.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:at,onClick:()=>{r()},"aria-label":`Pop back in`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:B,onClick:i,"aria-label":`Close`})]}):(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen`,children:[(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen__bar`,...a,children:[(0,W.jsx)(h,{className:`browser-viewer__icon`}),(0,W.jsx)(`span`,{className:`browser-viewer-fullscreen__title`,children:R.productName}),(0,W.jsxs)(`div`,{className:`browser-viewer-fullscreen__actions`,children:[(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:n,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:B,onClick:i,"aria-label":`Close`})]})]}),(0,W.jsx)(`iframe`,{src:`/vnc-viewer.html`,className:`browser-viewer-fullscreen__iframe`,title:R.productName})]})}var TD=`maxy-admin-session-key`,ED=(0,U.forwardRef)(function(e,t){let{businessName:n,sessionKey:r,conversationId:i,role:a,userName:o,userAvatar:s,sessions:c,sessionsLoading:l,sessionsError:u,ensureSessionsLoaded:d,refetchSessions:f,onSelectSession:p,onSelectArtefact:h,onSelectProjects:_,onSelectPeople:v,onSelectTasks:y,onSelectAgents:b,onCloseMobileDrawer:x,collapsed:S,onToggleCollapsed:C,actions:w,recentsActions:T}=e;(0,U.useEffect)(()=>{d()},[d]);let E=(0,U.useRef)(null),{popover:D,popoverRef:O,toggle:k,close:A}=cD(E),j=lD(r,T.setSessions),M=R.productName,N=typeof o==`string`?o:o===null?`name unavailable`:n||M,P=(N.trim().charAt(0)||`?`).toUpperCase(),[ee,te]=(0,U.useState)(`all`),F=(0,U.useMemo)(()=>c.filter(e=>e.name).filter(e=>ee===`all`?!0:(e.channel??`webchat`)===ee),[c,ee]),I=F.length,ne=i??r,[L,re]=(0,U.useState)(`chat`),[ie,oe]=(0,U.useState)([]),[se,ce]=(0,U.useState)(!1),[le,ue]=(0,U.useState)(null),[de,fe]=(0,U.useState)(!1);(0,U.useImperativeHandle)(t,()=>({patchArtefact(e,t){oe(n=>n.map(n=>n.id===e?{...n,...t}:n))}}),[]);let[me,ge]=(0,U.useState)(!1),_e=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!me)return;function e(e){_e.current&&!_e.current.contains(e.target)&&ge(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[me]);let ve=(0,U.useCallback)(async()=>{if(r){fe(!0),ue(null);try{let e=await fetch(`/api/admin/sidebar-artefacts?session_key=${encodeURIComponent(r)}`);if(!e.ok)throw Error(`status ${e.status}`);oe((await e.json()).artefacts??[]),ce(!0)}catch(e){let t=e instanceof Error?e.message:String(e);ue(`Failed to load artefacts: ${t}`),console.error(`[admin-ui] sidebar-artefacts fetch failed: ${t}`)}finally{fe(!1)}}},[r]),ye=()=>{re(`chat`),console.info(`[admin-ui] sidebar-nav surface=chat count=${I}`)},be=()=>{re(`artefacts`),console.info(`[admin-ui] sidebar-nav surface=artefacts count=${se?ie.length:0} collapsed=${S}`),S&&C(),se||ve()},xe=S?24:16,Se=L===`chat`?`Recents`:`Artefacts`,Ce=L===`chat`?l?`…`:String(I):de?`…`:String(ie.length),we=L===`chat`?l:de,Ee=()=>{L===`chat`?f():ve(),console.info(`[admin-ui] sidebar-refresh surface=${L}`)};return(0,W.jsxs)(`aside`,{className:`side`,children:[(0,W.jsx)(`div`,{className:`side-head`,children:(0,W.jsx)(`button`,{className:`icon-btn side-head-toggle`,title:S?`Expand sidebar`:`Collapse sidebar`,type:`button`,"aria-label":S?`Expand sidebar`:`Collapse sidebar`,onClick:C,children:S?(0,W.jsx)(lt,{size:28}):(0,W.jsx)(ct,{size:28})})}),(0,W.jsxs)(`nav`,{className:`side-nav`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`nav-row${L===`chat`?` active`:``}`,onClick:ye,children:[(0,W.jsx)(it,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Chat`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=people`),v(),x()},children:[(0,W.jsx)(yt,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`People`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=agents`),b(),x()},children:[(0,W.jsx)(Te,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Agents`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=projects`),_(),x()},children:[(0,W.jsx)(V,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Projects`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=tasks`),y(),x()},children:[(0,W.jsx)(Ze,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Tasks`}),(0,W.jsx)(`span`,{className:`kbd`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`nav-row${L===`artefacts`?` active`:``}`,onClick:be,children:[(0,W.jsx)(g,{size:xe}),(0,W.jsx)(`span`,{className:`label`,children:`Artefacts`}),(0,W.jsx)(`span`,{className:`kbd`})]})]}),(0,W.jsxs)(`div`,{className:`side-list`,ref:E,children:[(0,W.jsxs)(`div`,{className:`group-head`,children:[(0,W.jsx)(`span`,{children:Se}),(0,W.jsxs)(`span`,{className:`group-head-meta`,children:[(0,W.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`Refresh ${Se.toLowerCase()}`,"aria-label":`Refresh ${Se.toLowerCase()}`,onClick:Ee,disabled:we,children:(0,W.jsx)(ae,{size:12,className:we?`spinning`:void 0})}),(0,W.jsx)(`span`,{children:Ce})]})]}),L===`chat`&&(0,W.jsxs)(W.Fragment,{children:[u&&(0,W.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:u}),(0,W.jsxs)(nn,{className:`conv-channel-filter`,value:ee,onChange:e=>{let t=e.target.value;te(t),console.info(`[admin-ui] sidebar-channel-filter set value=${t}`)},"aria-label":`Filter conversations by channel`,children:[(0,W.jsx)(`option`,{value:`all`,children:`All channels`}),(0,W.jsx)(`option`,{value:`webchat`,children:`Web`})]}),F.map(e=>{let t=e.conversationId??e.sessionKey??``,n=t!==``&&t===ne,i=e.channel??`webchat`,a=e.phase===`pre-flush`,o=j.isEditingRow(e.conversationId),s=o&&j.editState?.phase===`loading`,c=o&&j.editState?.phase===`editing`,l=o&&j.editState?.phase===`error`,u=t=>{let n=e.sessionKey?e.sessionKey.slice(0,8):`null`,r=e.conversationId?e.conversationId.slice(0,8):`null`;console.info(`[admin-session-identity] sessionKey=${n} conversationId=${r} phase=${e.phase} surface=sidebar-recents action=${t}`)};return(0,W.jsxs)(`div`,{className:`conv${n?` active`:``}${a?` conv-pre-flush`:``}${o?` conv-editing`:``}`,children:[!o&&(0,W.jsxs)(`button`,{type:`button`,className:`conv-name-button`,onClick:()=>{u(`select`),p(e),x()},children:[i===`whatsapp`&&(0,W.jsx)(tt,{size:12,className:`conv-channel-icon`,"aria-label":`WhatsApp`}),(0,W.jsx)(`span`,{className:`conv-name`,children:e.name??`(untitled)`})]}),s&&(0,W.jsxs)(`span`,{className:`conversations-row-name conversations-edit-loading conv-edit-loading`,children:[(0,W.jsx)(pe,{size:12,className:`spin`}),` Generating suggestion…`]}),c&&(0,W.jsxs)(`div`,{className:`conversations-edit-inline conv-edit-inline`,children:[(0,W.jsx)(`input`,{ref:j.editInputRef,type:`text`,className:`conversations-edit-input`,value:j.editValue,onChange:e=>j.setEditValue(e.target.value),onKeyDown:t=>{t.key===`Enter`&&j.editValue.trim()&&e.conversationId&&j.confirmRename(e.conversationId),t.key===`Escape`&&j.cancelEdit()},maxLength:200}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-confirm`,title:`Confirm rename`,disabled:!j.editValue.trim()||j.confirming,onClick:()=>e.conversationId&&j.confirmRename(e.conversationId),children:j.confirming?(0,W.jsx)(pe,{size:13,className:`spin`}):(0,W.jsx)(m,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-cancel`,title:`Cancel`,onClick:j.cancelEdit,children:(0,W.jsx)(B,{size:13})})]}),l&&(0,W.jsxs)(`div`,{className:`conversations-edit-inline conv-edit-inline`,children:[(0,W.jsx)(`span`,{className:`conversations-edit-error`,children:j.editState.reason}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-retry`,title:`Retry`,onClick:()=>e.conversationId&&j.requestSuggestion(e.conversationId),children:(0,W.jsx)(z,{size:13})}),(0,W.jsx)(`button`,{type:`button`,className:`conversations-action conversations-cancel`,title:`Cancel`,onClick:j.cancelEdit,children:(0,W.jsx)(B,{size:13})})]}),!o&&(0,W.jsx)(aD,{row:e,surface:`sidebar-recents`,rowId:t,isStreaming:T.isStreaming,activeSessionKey:r,isLogsOpen:D?.rowId===t,onLogsToggle:n=>{u(`logs`),k(t,{conversationId:e.conversationId,sessionKey:e.sessionKey},n)},onRequestRename:()=>{e.conversationId&&(u(`rename`),j.requestSuggestion(e.conversationId))},onResume:()=>{!e.conversationId||T.isStreaming||(u(`resume`),p(e),x())},onDelete:()=>{if(!e.conversationId)return;u(`delete`);let t=e.conversationId;T.setSessions(e=>e.filter(e=>e.conversationId!==t)),r&&fetch(`/api/admin/sessions/${encodeURIComponent(t)}?session_key=${encodeURIComponent(r)}`,{method:`DELETE`}).catch(e=>console.error(`[chat] conversation delete failed:`,e))},onSwitchPreFlush:()=>{if(T.isStreaming||!r||!e.sessionKey)return;let t=e.sessionKey;u(`switch-pre-flush target=${t.slice(0,8)}`),T.resetConversation(),T.setMessages([]),fetch(`/api/admin/sessions/switch?session_key=${encodeURIComponent(r)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target_session_key:t})}).then(e=>e.ok?e.json():Promise.reject(Error(`switch returned ${e.status}`))).then(e=>{try{sessionStorage.setItem(TD,e.session_key)}catch{}he(e.session_key,`chat`),T.setSessionKey(e.session_key),T.setConversationId(e.conversationId)}).catch(e=>{console.error(`[chat] pre-flush session switch failed:`,e),T.setMessages([{role:`maxy`,events:[{type:`text`,content:`Could not switch into that session.`}],timestamp:Date.now()-1,historical:!0}])})}})]},t===``?e.updatedAt:t)})]}),L===`artefacts`&&(0,W.jsxs)(W.Fragment,{children:[le&&(0,W.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:le}),se&&!le&&ie.length===0&&(0,W.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:`No artefacts yet`}),ie.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`conv`,onClick:()=>{h({docId:e.id,name:e.name,content:e.content,editable:e.editable,mimeType:e.mimeType,skipReason:e.skipReason},`sidebar-artefacts`),x()},children:[(0,W.jsx)(`span`,{className:`conv-name`,children:e.name}),(0,W.jsx)(`span`,{className:`conv-kind`,"data-kind":e.kind===`agent-template`?`agent`:`doc`,children:e.kind===`agent-template`?`agent`:`doc`})]},e.id))]}),(0,W.jsx)(sD,{state:D,popoverRef:O,surface:`sidebar-recents`,buildLogsUrl:dD,onClose:A})]}),(0,W.jsxs)(`div`,{className:`side-foot`,ref:_e,children:[(0,W.jsx)(`div`,{className:`avatar`,children:s?(0,W.jsx)(`img`,{src:s,alt:N}):P}),(0,W.jsxs)(`div`,{className:`who`,children:[(0,W.jsx)(`span`,{className:`name`,children:N}),(0,W.jsx)(`span`,{className:`role`,children:a??`operator`})]}),(0,W.jsx)(`button`,{className:`icon-btn side-foot-actions-trigger`,title:`Conversation actions`,type:`button`,"aria-label":`Conversation actions`,"aria-haspopup":`true`,"aria-expanded":me,onClick:()=>ge(e=>!e),children:(0,W.jsx)(Ie,{size:xe})}),me&&(0,W.jsx)(`div`,{className:`side-foot-actions-popover`,children:(0,W.jsx)(yD,{...w,onAfterAction:()=>ge(!1)})})]})]})}),DD=()=>{},OD={"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 kD({reason:e}){return(0,W.jsxs)(`div`,{className:`art-skip-banner`,role:`status`,children:[(0,W.jsx)(Be,{size:14}),(0,W.jsx)(`span`,{children:OD[e]})]})}function AD({src:e,name:t,docId:n}){let[r,i]=(0,U.useState)(!1),a=(0,U.useRef)(null),o=(0,U.useRef)(!1),s=(0,U.useRef)(!1),c=(0,U.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,U.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,W.jsxs)(`a`,{className:`art-pdf-fallback`,href:e,download:t,children:[(0,W.jsx)(g,{size:20}),(0,W.jsxs)(`div`,{className:`art-pdf-fallback-text`,children:[(0,W.jsx)(`div`,{className:`art-pdf-fallback-name`,children:t}),(0,W.jsx)(`div`,{className:`art-pdf-fallback-hint`,children:`Your browser can't display this PDF inline. Click to download.`})]}),(0,W.jsx)(ce,{size:16})]}):(0,W.jsx)(`iframe`,{ref:a,className:`art-pdf`,src:e,title:t,"aria-label":`PDF preview of ${t}`,onLoad:l,onError:()=>c(`onerror`)})}var jD={browser:`Browser`,data:`Data`,graph:`Graph`};function MD({selection:e,trigger:t,sessionKey:n,onClose:r,onArtefactSaved:i,onSwapToGraph:a}){let o=e!==null,s=e?.surface??null,c=(0,U.useRef)(null),l=(0,U.useRef)(null),[u,d]=(0,U.useState)(null),p=e?.surface===`doc`?e.docId:null,m=(0,U.useCallback)(e=>{if(!n||!p)return;let t={};try{t=JSON.parse(e)}catch{return}t.action!==`save`||typeof t.content!=`string`||(d(null),fetch(`/api/admin/sidebar-artefact-save?session_key=${encodeURIComponent(n)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:p,content:t.content})}).then(async e=>{if(!e.ok){let t=(await e.json().catch(()=>({}))).error??`status ${e.status}`;d(`Save failed: ${t}`),console.error(`[admin-ui] artefact-save-failed docId=${p} status=${e.status} error="${t}"`);return}let n=await e.json();i?.(p,n.updatedAt,t.content)}).catch(e=>{let t=e instanceof Error?e.message:String(e);d(`Save failed: ${t}`),console.error(`[admin-ui] artefact-save-failed docId=${p} error="${t}"`)}))},[n,p,i]);(0,U.useEffect)(()=>{d(null)},[p]),(0,U.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===c.current)return;let s=o?`open`:`closed`,l=o?t??`chat-link`:`toolbar-close`,u=i??c.current?.split(`:`)[0]??`doc`;console.info(`[admin-ui] artefact-pane state=${s} docId=${n??`none`} trigger=${l} surface=${u}`),c.current=a},[e,t,o]);let g=e?.surface===`doc`,_=g?(e.tag||e.name.split(`.`).pop()||`doc`).toUpperCase().slice(0,6):``,v=g?e.revision||`rev 1`:`live`,y=e&&e.surface!==`doc`?jD[e.surface]:``,b=g?e.name:y;return(0,W.jsxs)(`aside`,{className:`artefact`,"data-open":o,"data-surface":s??`none`,children:[(0,W.jsxs)(`div`,{className:`art-head`,children:[(0,W.jsxs)(`div`,{className:`left`,children:[!g&&s===`browser`&&(0,W.jsx)(h,{size:14,className:`art-head-surface-icon`}),!g&&s===`data`&&(0,W.jsx)(ge,{size:14,className:`art-head-surface-icon`}),!g&&s===`graph`&&(0,W.jsx)(_e,{size:14,className:`art-head-surface-icon`}),(0,W.jsx)(`span`,{className:`file-name`,children:b}),g&&(0,W.jsx)(`span`,{className:`file-tag`,children:_})]}),(0,W.jsxs)(`div`,{className:`right`,children:[g&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{className:`icon-btn`,title:`Copy`,type:`button`,"aria-label":`Copy`,onClick:()=>{re(e.content)},children:(0,W.jsx)(f,{size:14})}),(0,W.jsx)(`button`,{className:`icon-btn`,title:`Refresh`,type:`button`,"aria-label":`Refresh`,children:(0,W.jsx)(z,{size:14})})]}),s===`browser`&&(0,W.jsx)(`button`,{className:`icon-btn`,title:`Pop out`,type:`button`,"aria-label":`Pop out`,onClick:()=>l.current?.popout(),children:(0,W.jsx)(Le,{size:14})}),o&&(0,W.jsx)(`button`,{className:`icon-btn`,title:`Close`,type:`button`,"aria-label":`Close`,onClick:r,children:(0,W.jsx)(B,{size:14})})]})]}),(0,W.jsxs)(`div`,{className:`art-toolbar`,children:[(0,W.jsxs)(`span`,{className:`seg`,children:[(0,W.jsx)(`span`,{className:`bullet`}),(0,W.jsx)(`strong`,{children:g?`Artefact`:y})]}),(0,W.jsx)(`span`,{className:`right-meta`,children:v})]}),(0,W.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,W.jsx)(kD,{reason:r});if(i&&n){let t=`/api/admin/sidebar-artefact-content?id=${encodeURIComponent(e.docId)}&session_key=${encodeURIComponent(n)}`;return(0,W.jsx)(AD,{src:t,name:e.name,docId:e.docId},t)}return(0,W.jsxs)(W.Fragment,{children:[u&&(0,W.jsx)(`div`,{className:`art-save-error`,role:`alert`,children:u}),(0,W.jsx)(sT,{data:{title:e.name,content:e.content,readOnly:!t},onSubmit:t?m:DD,submitted:!1})]})})(),s===`browser`&&(0,W.jsx)(CD,{ref:l,onClose:r}),s===`data`&&n&&(0,W.jsx)(ue,{sessionKey:n,onOpenInGraph:a?e=>{let t=de(e.properties);a(e.nodeId,t??e.labels[0]??null)}:void 0}),e?.surface===`graph`&&n&&(0,W.jsx)(se,{sessionKey:n,initialFocus:e.focusNodeId?{nodeId:e.focusNodeId,nodeLabel:e.focusNodeLabel??null}:null,initialLabels:e.initialLabels??null})]}),(0,W.jsxs)(`div`,{className:`art-foot`,children:[(0,W.jsx)(`span`,{className:`left`,children:v}),(0,W.jsx)(`span`,{className:`right in-sync`,children:`in sync`})]})]})}var ND=`maxy-shell-artefact-px`;function PD(){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 ID(Math.round((e-n)*(2/3)))}function FD(){if(typeof window>`u`)return 320;try{let e=window.localStorage.getItem(ND);if(!e)return PD();let t=parseInt(e,10);if(Number.isFinite(t)&&t>=320)return t}catch{}return PD()}function ID(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 LD({targetSelector:e=`.platform`}){let t=(0,U.useRef)(null),[n,r]=(0,U.useState)(()=>FD()),i=(0,U.useRef)(n);(0,U.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,U.useCallback)(()=>{r(e=>{let t=ID(e);return t===e?e:t})},[]);(0,U.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(ID(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(ND,String(t))}catch{}console.info(`[admin-ui] artefact-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=PD();r(e);try{window.localStorage.removeItem(ND)}catch{}console.info(`[admin-ui] artefact-resize px=${e}`)};return(0,W.jsx)(`div`,{ref:t,className:`art-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize artefact pane`,onPointerDown:o,onDoubleClick:s})}var RD=`maxy-shell-side-px`;function zD(){if(typeof window>`u`)return 0;let e=document.querySelector(`.platform > .artefact`)?.getBoundingClientRect();return e&&e.width>0?Math.round(e.width):0}function BD(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=Math.max(248,t-480-zD());return Math.min(Math.max(e,248),n)}function VD(){if(typeof window>`u`)return 264;try{let e=window.localStorage.getItem(RD);if(!e)return 264;let t=parseInt(e,10);if(Number.isFinite(t)&&t>=248)return BD(t)}catch{}return 264}function HD({targetSelector:e=`.platform`}){let t=(0,U.useRef)(null),[n,r]=(0,U.useState)(()=>VD()),i=(0,U.useRef)(n);(0,U.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,U.useCallback)(()=>{r(e=>{let t=BD(e);return t===e?e:t})},[]);(0,U.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(BD(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(RD,String(t))}catch{}console.info(`[admin-ui] sidebar-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=BD(264);r(e);try{window.localStorage.removeItem(RD)}catch{}console.info(`[admin-ui] sidebar-resize px=${e}`)};return(0,W.jsx)(`div`,{ref:t,className:`side-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,onPointerDown:o,onDoubleClick:s})}var UD=50;function WD(e){let[t,n]=(0,U.useState)([]),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)(null),l=(0,U.useCallback)(async t=>{if(e&&!(!t&&s===e)){i(!0),o(null);try{let t=await fetch(`/api/admin/sessions?session_key=${encodeURIComponent(e)}`);if(!t.ok)throw Error(`sessions fetch returned ${t.status}`);n((await t.json()).sessions??[]),c(e)}catch(e){console.error(`[admin/sessions] fetch failed:`,e),o(e instanceof Error?e.message:String(e))}finally{i(!1)}}},[e,s]);(0,U.useEffect)(()=>{e||(c(null),n([]),o(null))},[e]);let u=(0,U.useCallback)(()=>l(!1),[l]),d=(0,U.useCallback)(()=>l(!0),[l]),f=(0,U.useRef)(d);return(0,U.useEffect)(()=>{f.current=d},[d]),(0,U.useEffect)(()=>{if(!e)return;let t=null,n=oe(()=>{t&&clearTimeout(t),t=setTimeout(()=>{t=null,f.current()},UD)});return()=>{t&&clearTimeout(t),n()}},[e]),{sessions:t,setSessions:n,loading:r,loaded:s!==null&&s===e,error:a,ensureLoaded:u,refetch:d}}function GD(){St();let e=(0,U.useRef)(null),[t,n]=(0,U.useState)(null),[r,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(null),[g,_]=(0,U.useState)(!1),[v,y]=(0,U.useState)(null),[x,S]=(0,U.useState)(null),[C,w]=(0,U.useState)(!1),[E,D]=(0,U.useState)(null),[O,k]=(0,U.useState)(!1),[A,j]=(0,U.useState)(null),[M,N]=(0,U.useState)(!1),[P,ee]=(0,U.useState)(!1),[te,F]=(0,U.useState)(!1),[I,ne]=(0,U.useState)(!1),[L,z]=(0,U.useState)(null),[ae,oe]=(0,U.useState)(null),se=(0,U.useRef)(null),[ce,le]=(0,U.useState)(()=>typeof window<`u`&&window.matchMedia(`(min-width: 721px)`).matches);(0,U.useEffect)(()=>{let e=window.matchMedia(`(min-width: 721px)`),t=e=>le(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[ue,de]=(0,U.useState)(()=>typeof window<`u`&&window.matchMedia(`(min-width: 1080px)`).matches);(0,U.useEffect)(()=>{let e=window.matchMedia(`(min-width: 1080px)`),t=e=>de(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let fe=(0,U.useRef)(!1),he=(0,U.useRef)(!1),ye=(0,U.useRef)(!1),be=(0,U.useRef)(!1),xe=(0,U.useRef)(null),[Se,Ce]=(0,U.useState)(null),we=b(),Te=Tt(),V=jt(),Ee=Kt(),De=WD(V.sessionKey),H=Gt({sessionKey:V.sessionKey,setSessionKey:V.setSessionKey,setAppState:V.setAppState,conversationId:V.conversationId,setConversationId:V.setConversationId,startElapsedTimer:Te.startElapsedTimer,stopElapsedTimer:Te.stopElapsedTimer,resetTimerState:Te.resetTimerState,pausedElapsedRef:Te.pausedElapsedRef,expandAllDefaultRef:V.expandAllDefaultRef,setExpandAll:V.setExpandAll,getPendingFiles:()=>Ee.pendingFiles,clearPendingFiles:Ee.clearFiles,inputRef:e});(0,U.useEffect)(()=>{l(window.location.hostname.startsWith(`admin.`)?window.location.origin.replace(`admin.`,`public.`):window.location.origin)},[]),(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&(t?n(null):we.selectionMode&&we.exitSelection())}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,we.selectionMode]),(0,U.useEffect)(()=>{(V.appState===`set-pin`||V.appState===`enter-pin`)&&setTimeout(()=>V.pinInputRef.current?.focus(),100),V.appState===`chat`&&setTimeout(()=>e.current?.focus(),100)},[V.appState,H.greetingGeneration]),(0,U.useEffect)(()=>{if(V.appState!==`chat`)return;history.pushState({maxyChat:!0},``);function e(){console.debug(`[history-guard] popstate absorbed`),history.pushState({maxyChat:!0},``)}return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[V.appState]);let Oe=(0,U.useRef)(H.greetingGeneration);if((0,U.useEffect)(()=>{H.greetingGeneration!==Oe.current&&(Oe.current=H.greetingGeneration,V.onboardingComplete===!1&&(fe.current=!1))},[H.greetingGeneration,V.onboardingComplete]),(0,U.useEffect)(()=>{V.appState===`chat`&&V.onboardingComplete===!1&&(fe.current||(fe.current=!0,H.sendSystemPrompt(`[Begin onboarding.]`)))},[V.appState,V.onboardingComplete,H.greetingGeneration]),(0,U.useEffect)(()=>{if(!u)return;let e=!1;return fetch(`/api/admin/version`).then(e=>e.json()).then(t=>{e||D(t)}).catch(e=>{console.error(`[admin/version] menu-open client fetch failed:`,e)}),()=>{e=!0}},[u]),(0,U.useEffect)(()=>{if(V.appState!==`chat`){ye.current=!1,be.current=!1;return}if(ye.current)return;ye.current=!0;let e=!1;return fetch(`/api/admin/version`).then(e=>e.json()).then(t=>{e||(D(t),!(!t.updateAvailable||be.current)&&(j(t),k(!0),fetch(`/api/admin/version/alert-surfaced`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({installed:t.installed,latest:t.latest})}).catch(e=>{console.error(`[admin/version] alert-surfaced signal failed:`,e)})))}).catch(e=>{console.error(`[admin/version] session-start client fetch failed:`,e)}),()=>{e=!0}},[V.appState]),(0,U.useEffect)(()=>{if(V.appState!==`chat`||!V.sessionKey)return;let e=V.conversationId?`flushed`:`pre-flush`,t=V.sessionKey.slice(0,8),n=V.conversationId?V.conversationId.slice(0,8):`null`;console.info(`[admin-session-identity] sessionKey=${t} conversationId=${n} phase=${e} surface=chat-header`)},[V.appState,V.sessionKey,V.conversationId]),(0,U.useEffect)(()=>{if(V.appState!==`chat`){he.current=!1;return}if(he.current||!De.loaded)return;he.current=!0;let e=De.sessions.filter(e=>e.name).length,t=L?`open`:`closed`;console.info(`[admin-ui] platform-shell brand=${R.productName} sidebar=${e} artefact=${t}`)},[V.appState,De.loaded,De.sessions,L]),(0,U.useEffect)(()=>{if(!u){p(null),y(null),S(null),D(null);return}function e(e){xe.current&&!xe.current.contains(e.target)&&d(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[u]),(0,U.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(`platform-onboarding`);return e.onmessage=e=>{e.data?.type===`remote-password-set`&&H.sendMessageRef.current(`I've set the remote password`)},()=>e.close()},[]),V.appState===`loading`)return(0,W.jsx)(`div`,{className:`chat-page admin-page`,children:(0,W.jsx)(`header`,{className:`chat-header`,children:(0,W.jsx)(`img`,{src:ie,alt:R.productName,className:`chat-logo`})})});if(V.appState===`set-pin`)return(0,W.jsx)(Jt,{pin:V.pin,setPin:V.setPin,confirmPin:V.confirmPin,setConfirmPin:V.setConfirmPin,operatorName:V.operatorName,setOperatorName:V.setOperatorName,showPin:V.showPin,setShowPin:V.setShowPin,pinLoading:V.pinLoading,pinError:V.pinError,pinInputRef:V.pinInputRef,confirmPinInputRef:V.confirmPinInputRef,setPinFormRef:V.setPinFormRef,onSubmit:V.handleSetPin});if(V.appState===`onboarding-choice`)return(0,W.jsx)(Qt,{setAppState:V.setAppState,setOnboardingComplete:V.setOnboardingComplete});if(V.appState===`connect-claude`)return(0,W.jsx)(Zt,{authPolling:V.authPolling,setAuthPolling:V.setAuthPolling,authLoading:V.authLoading,setAuthLoading:V.setAuthLoading,pinError:V.pinError,setPinError:V.setPinError,setAppState:V.setAppState});if(V.appState===`enter-pin`)return(0,W.jsx)(Yt,{pin:V.pin,setPin:V.setPin,showPin:V.showPin,setShowPin:V.setShowPin,pinLoading:V.pinLoading,pinError:V.pinError,pinInputRef:V.pinInputRef,onSubmit:V.handleLogin,onChangePin:V.handleChangePin});if(V.appState===`account-picker`)return(0,W.jsx)(Xt,{accounts:V.accounts,loading:V.accountPickerLoading,error:V.pinError,onSelect:V.handleAccountSelect});let ke=L?`open`:`closed`,Ae=I&&ce,je=`platform${te?` menu-open`:``}${Ae?` sidebar-collapsed`:``}`,Me=e=>{if(!H.isStreaming&&V.sessionKey){if(!e.conversationId){H.resetConversation(),H.setMessages([]),V.setConversationId(null);return}H.resetConversation(),H.setMessages([]),fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}/resume?session_key=${encodeURIComponent(V.sessionKey)}`,{method:`POST`}).then(e=>e.ok?e.json():Promise.reject(Error(`resume returned ${e.status}`))).then(e=>{e.conversationId&&V.setConversationId(e.conversationId);let t=(e.messages??[]).map(e=>({role:e.role===`user`?`admin`:`maxy`,content:e.role===`user`?e.content:void 0,events:e.role===`assistant`?e.events??[]:void 0,...e.role===`user`&&e.attachments&&e.attachments.length>0?{attachments:e.attachments}:{},...e.role===`user`&&iD(e.content)?{hidden:!0}:{},timestamp:new Date(e.createdAt).getTime()||0,historical:!0,...e.messageId?{messageId:e.messageId}:{}}));if(t.length>0&&H.setMessages(t),e.resumeHeal){let{missingTurns:n,failed:r,jsonlMissing:i}=e.resumeHeal,a;r>0?a=`Could not heal ${r} of ${n} turn${n===1?``:`s`} that were missing from the graph. The JSONL replay rendered them above so the conversation is intact, but they may not appear in future searches until the writer recovers.`:i&&t.length>0&&(a=`This conversation's SDK transcript file is no longer on disk; the conversation is rendered from the graph projection. The next message you send will start a fresh SDK session under the same conversation.`),a&&H.setMessages(e=>[{role:`maxy`,events:[{type:`text`,content:a}],timestamp:Date.now()-2,historical:!0},...e])}let n=[];for(let t of e.messages??[]){if(t.role!==`assistant`||!t.submittedEventIndices?.length)continue;let e=new Date(t.createdAt).getTime()||0;for(let r of t.submittedEventIndices)n.push(`${e}_${r}`)}n.length>0&&H.seedSubmittedComponents(n)}).catch(e=>{console.error(`[chat] sidebar conversation resume failed:`,e),H.setMessages([{role:`maxy`,events:[{type:`text`,content:`Could not load conversation history.`}],timestamp:Date.now()-1,historical:!0}])})}},Ne={conversationId:V.conversationId,sessionKey:V.sessionKey,disconnecting:V.disconnecting,onOpenConversations:()=>{w(!0),De.refetch()},handleDisconnect:V.handleDisconnect};return(0,W.jsx)(T,{value:{onShowVnc:()=>N(!0)},children:(0,W.jsxs)(`div`,{className:je,"data-artefact":ke,children:[(0,W.jsx)(`div`,{className:`scrim`,onClick:()=>{F(!1),console.info(`[admin-ui] mobile-drawer state=closed`)}}),(0,W.jsx)(ED,{ref:se,businessName:V.businessName??null,sessionKey:V.sessionKey,conversationId:V.conversationId,role:V.role,userName:V.userName,userAvatar:V.userAvatar,sessions:De.sessions,sessionsLoading:De.loading,sessionsError:De.error,ensureSessionsLoaded:De.ensureLoaded,refetchSessions:De.refetch,recentsActions:{setSessions:De.setSessions,isStreaming:H.isStreaming,resetConversation:H.resetConversation,setMessages:H.setMessages,setConversationId:V.setConversationId,setSessionKey:V.setSessionKey},onSelectSession:Me,onSelectArtefact:(e,t)=>{z({surface:`doc`,...e}),oe(t)},onSelectProjects:()=>{z({surface:`graph`,initialLabels:[`Project`]}),oe(`sidebar-projects`)},onSelectPeople:()=>{z({surface:`graph`,initialLabels:[`Person`]}),oe(`sidebar-people`)},onSelectTasks:()=>{z({surface:`graph`,initialLabels:[`Task`]}),oe(`sidebar-tasks`)},onSelectAgents:()=>{z({surface:`graph`,initialLabels:[`Agent`]}),oe(`sidebar-agents`)},onCloseMobileDrawer:()=>{te&&(F(!1),console.info(`[admin-ui] mobile-drawer state=closed`))},collapsed:Ae,onToggleCollapsed:()=>ne(e=>!e),actions:Ne}),(0,W.jsxs)(`div`,{className:`chat-page admin-page`,children:[(0,W.jsxs)(`header`,{className:`chat-header`,children:[(0,W.jsx)(`button`,{type:`button`,className:`icon-btn mobile-menu`,"aria-label":`Show sidebar`,title:`Show sidebar`,onClick:()=>{F(e=>{let t=!e;return console.info(`[admin-ui] mobile-drawer state=${t?`open`:`closed`}`),t})},children:(0,W.jsx)(lt,{size:16})}),(0,W.jsx)(`img`,{src:ie,alt:R.productName,className:`chat-logo`}),(!R.logoContainsName||V.businessName)&&(0,W.jsx)(`div`,{children:(0,W.jsx)(`h1`,{className:`chat-tagline`,children:V.businessName||R.productName})}),(V.sessionKey||V.conversationId)&&(0,W.jsxs)(`button`,{type:`button`,className:`chat-session-chip chat-session-chip-${V.conversationId?`flushed`:`pre-flush`}`+(Se===`copied`?` copied`:``)+(Se===`failed`?` copy-failed`:``),title:V.conversationId?`conversation ${V.conversationId} — click to copy`:`session ${V.sessionKey} (pre-flush, first turn pending) — click to copy`,onClick:async()=>{let e=V.conversationId??V.sessionKey;e&&(Ce(await re(e)?`copied`:`failed`),setTimeout(()=>Ce(null),1200))},children:[(0,W.jsx)(`span`,{className:`chat-session-chip-label`,children:Se===`copied`?`copied`:Se===`failed`?`copy failed`:V.conversationId?`conversation`:`session`}),(0,W.jsx)(`span`,{className:`chat-session-chip-id`,children:Se===`copied`?`✓`:Se===`failed`?`✕`:`${(V.conversationId??V.sessionKey??``).slice(0,8)}…`})]}),(0,W.jsxs)(`div`,{className:`chat-burger-wrap`,ref:xe,children:[(0,W.jsx)(`button`,{type:`button`,className:`chat-burger`,onClick:()=>d(e=>!e),"aria-label":`Menu`,"aria-haspopup":`true`,"aria-expanded":u,children:(0,W.jsx)(me,{size:20})}),u&&(0,W.jsxs)(`div`,{className:`chat-menu`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{if(!P&&!(!ue&&M)){ee(!0),d(!1);try{let e=await(await fetch(`/api/admin/browser/launch`,{method:`POST`})).json().catch(()=>({ok:!1,error:`Invalid response`}));if(!e.ok)throw Error(e.error??`Failed to launch browser`);ue?(z({surface:`browser`}),oe(`header-menu`)):N(!0)}catch(e){console.error(`[browser] Launch failed:`,e),alert(e instanceof Error?e.message:`Failed to launch browser`)}finally{ee(!1)}}},disabled:P,children:[(0,W.jsx)(h,{size:14}),` Browser`,P&&(0,W.jsx)(pe,{size:12,className:`spin`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{d(!1),ue?(z({surface:`data`}),oe(`header-menu`)):window.location.href=`/data`},children:[(0,W.jsx)(ge,{size:14}),` Data`]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{d(!1),ue?(z({surface:`graph`}),oe(`header-menu`)):window.location.href=`/graph`},children:[(0,W.jsx)(_e,{size:14}),` Graph`]}),(0,W.jsx)(`div`,{className:`chat-menu-divider`}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{if(f!==null){p(null),S(null);return}_(!0),y(null);try{let e=await fetch(`/api/admin/agents`);if(!e.ok)throw Error(`Failed to load agents`);p((await e.json()).agents??[])}catch(e){console.error(`[admin] agent list failed:`,e),y(e instanceof Error?e.message:String(e))}finally{_(!1)}},children:[(0,W.jsx)(Le,{size:14}),` Public`,g&&(0,W.jsx)(pe,{size:12,className:`spin`})]}),f!==null&&(0,W.jsxs)(`div`,{className:`chat-menu-agents`,children:[v&&(0,W.jsx)(`span`,{className:`chat-menu-agent-error`,children:v}),f.length===0&&!v&&(0,W.jsx)(`span`,{className:`chat-menu-agent-empty`,children:`No public agents configured`}),f.map(e=>(0,W.jsxs)(`div`,{className:`chat-menu-item chat-menu-agent-item`,children:[(0,W.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),(0,W.jsxs)(`span`,{className:`agent-text`,children:[(0,W.jsx)(`span`,{className:`agent-display-name`,children:e.displayName}),(0,W.jsxs)(`span`,{className:`agent-slug`,children:[`/`,e.slug]})]}),x===e.slug?(0,W.jsxs)(`span`,{className:`agent-actions agent-confirm`,children:[(0,W.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-confirm-yes`,title:`Confirm delete`,onClick:()=>{S(null),p(t=>t?.filter(t=>t.slug!==e.slug)??null),fetch(`/api/admin/agents/${encodeURIComponent(e.slug)}`,{method:`DELETE`}).catch(e=>console.error(`[admin/agents] delete failed:`,e))},children:(0,W.jsx)(m,{size:12})}),(0,W.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-confirm-no`,title:`Cancel`,onClick:()=>S(null),children:(0,W.jsx)(B,{size:12})})]}):(0,W.jsxs)(`span`,{className:`agent-actions`,children:[(0,W.jsx)(`a`,{href:`${c}/${e.slug}`,target:`_blank`,rel:`noopener noreferrer`,className:`agent-action-btn`,title:`Open agent`,onClick:()=>d(!1),children:(0,W.jsx)(Le,{size:12})}),(0,W.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-delete-btn`,title:`Delete agent`,onClick:()=>S(e.slug),children:(0,W.jsx)(i,{size:12})})]})]},e.slug))]}),(0,W.jsx)(`div`,{className:`chat-menu-divider`}),E?.updateAvailable?(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-version`,onClick:()=>{E.latest&&(j(E),d(!1),k(!0))},children:[(0,W.jsx)(Ke,{size:14}),(0,W.jsxs)(`span`,{className:`version-installed`,children:[`v`,E.installed,(0,W.jsx)(`span`,{className:`version-update-dot`})]})]}):(0,W.jsxs)(`div`,{className:`chat-menu-version chat-menu-version-passive`,children:[(0,W.jsx)(Ke,{size:14}),(0,W.jsxs)(`span`,{className:`version-installed`,children:[E?`v${E.installed}`:`…`,E&&!E.updateAvailable&&(0,W.jsx)(`span`,{className:`version-uptodate-dot`})]})]}),(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{d(!1),V.handleLogout(),H.setMessages([])},children:[(0,W.jsx)(ve,{size:14}),` Log out`]}),V.remoteAuthEnabled&&(0,W.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{d(!1),window.location.href=`/__remote-auth/logout`},children:[(0,W.jsx)(ve,{size:14}),` Sign out of admin`]})]})]})]}),(0,W.jsxs)(`div`,{className:`chat-content`,children:[(0,W.jsx)(ZE,{messages:H.messages,isStreaming:H.isStreaming,elapsedSeconds:Te.elapsedSeconds,sessionTurnStart:Te.sessionTurnStart,expandAll:V.expandAll,setExpandAll:V.setExpandAll,conversationCompacted:H.conversationCompacted,isCompacting:H.isCompacting,setShowCompactConfirm:s,handleComponentSubmit:H.handleComponentSubmit,effectiveSubmitted:H.effectiveSubmitted,selectionMode:we.selectionMode,selectedItems:we.selectedItems,toggleSelectItem:we.toggleSelectItem,sessionKey:V.sessionKey,setLightboxSrc:n,messageQueue:H.messageQueue,messageQueueRef:H.messageQueueRef,setQueue:H.setQueue,sendMessage:H.sendMessage,appState:V.appState,onboardingComplete:V.onboardingComplete,onOpenArtefact:e=>{z({surface:`doc`,...e}),oe(`chat-link`)}}),(0,W.jsx)(QE,{offer:H.topicChangeOffer,onFreshStart:H.handleTopicFreshStart,onContinue:H.handleTopicContinue,disabled:H.isStreaming}),(0,W.jsx)(bD,{selectionMode:we.selectionMode,selectedItems:we.selectedItems,copyToast:we.copyToast||null,exitSelection:we.exitSelection,enterSelection:we.enterSelection,copySelected:we.copySelected,showCopyToast:we.showCopyToast,input:H.input,setInput:H.setInput,inputRef:e,pendingFiles:Ee.pendingFiles,setPendingFiles:Ee.setPendingFiles,isDragOver:Ee.isDragOver,attachError:Ee.attachError,fileInputRef:Ee.fileInputRef,addFiles:Ee.addFiles,removeFile:Ee.removeFile,onDragOver:Ee.onDragOver,onDragLeave:Ee.onDragLeave,onDrop:Ee.onDrop,isStreaming:H.isStreaming,wasPaused:H.wasPaused,messages:H.messages,messageQueueRef:H.messageQueueRef,setQueue:H.setQueue,sendMessage:H.sendMessage,stopStreaming:H.stopStreaming,disconnecting:V.disconnecting,handleDisconnect:V.handleDisconnect,claudeInfo:V.claudeInfo,setClaudeInfo:V.setClaudeInfo,setShowClaudeInfo:a,conversationId:V.conversationId,sessionKey:V.sessionKey,onNewConversation:H.startNewConversation,newConversationDisabled:H.isStreaming||H.isCompacting,onOpenConversations:()=>{w(!0),De.refetch()},sidebarVisible:ce})]}),we.copyToast&&(0,W.jsx)(`span`,{className:`copy-toast${we.copyToast===`failed`?` copy-toast-failed`:``}`,children:we.copyToast===`copied`?`Copied`:`Copy failed`}),(0,W.jsx)(fD,{show:C,onClose:()=>w(!1),conversationsLoading:De.loading,conversationsError:De.error,conversationsList:De.sessions,setConversationsList:De.setSessions,sessionKey:V.sessionKey,setSessionKey:V.setSessionKey,isStreaming:H.isStreaming,resetConversation:H.resetConversation,setMessages:H.setMessages,setConversationId:V.setConversationId}),(0,W.jsx)(pD,{src:t,onClose:()=>n(null)}),(0,W.jsx)(mD,{show:o,onClose:()=>s(!1),onConfirm:H.handleCompactNow}),(0,W.jsx)(hD,{show:r,onClose:()=>{a(!1),V.setClaudeInfo(null)},claudeInfo:V.claudeInfo,messages:H.messages,sessionElapsed:Te.sessionElapsed,conversationId:V.conversationId}),(0,W.jsx)(vD,{show:O,onClose:()=>{k(!1),be.current=!0},versionInfo:A,sessionKey:V.sessionKey,onUpgradeComplete:()=>D(null)}),M&&(0,W.jsx)(wD,{onClose:()=>N(!1)})]}),(0,W.jsx)(HD,{}),(0,W.jsx)(LD,{}),(0,W.jsx)(MD,{selection:L,trigger:ae,sessionKey:V.sessionKey,onClose:()=>{z(null),oe(null)},onArtefactSaved:(e,t,n)=>{se.current?.patchArtefact(e,{updatedAt:t,content:n})},onSwapToGraph:(e,t)=>{z({surface:`graph`,focusNodeId:e,focusNodeLabel:t}),oe(`chat-link`)}})]})})}(0,be.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(GD,{}));
|