bloby-bot 0.49.4 → 0.49.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/highlighted-body-OFNGDK62-DGw6RxGl.js","assets/jsx-runtime-C0W9Wf2W.js","assets/angular-html-olSuI25H.js","assets/html-CzX0w7K_.js","assets/css-zY4NE9yA.js","assets/javascript-CzjRtS1s.js","assets/angular-ts-BJPoZ_vo.js","assets/scss-Efq7Dmbs.js","assets/apl-CyVuPSCb.js","assets/json-CdFmZMJc.js","assets/xml-BlDEvPia.js","assets/java-BqKEu7zh.js","assets/astro-CKc3-gwH.js","assets/postcss-BTQso3H9.js","assets/tsx-DrzBggF8.js","assets/typescript-COZIw7xM.js","assets/blade-DMAsVBaV.js","assets/html-derivative-D-XvNBA6.js","assets/sql-CB6kO6Km.js","assets/bsl-B1qbqNES.js","assets/sdbl-BmWYR-pI.js","assets/c-BvB8CVo8.js","assets/cairo-BDj8wWhy.js","assets/python-CKg5r0C3.js","assets/cobol-hBjMZW-R.js","assets/coffee-B4OtR3w-.js","assets/cpp-BblbpnyR.js","assets/glsl-CEMf-THb.js","assets/regexp-CvWG4lI-.js","assets/crystal-x3k4USY-.js","assets/shellscript-BbEstezf.js","assets/edge-B-9TrlZC.js","assets/elixir-CXCzbj1r.js","assets/elm-BdRiwmde.js","assets/erb-C9tvRzx3.js","assets/ruby-CXP5_4kq.js","assets/graphql-dBCd2Czl.js","assets/jsx-BL6Wh6Qw.js","assets/haml-Ck5pVAEG.js","assets/lua-B4ezzssg.js","assets/yaml-iUXljnLs.js","assets/erlang-Bc4hQuqa.js","assets/markdown-BaI9LyM4.js","assets/fortran-fixed-form-B02FOYI-.js","assets/fortran-free-form-BPTf0lbT.js","assets/fsharp-DhdR18vN.js","assets/gdresource-DgnrMPIx.js","assets/gdscript-CsadCSaZ.js","assets/gdshader-PfnN_8tR.js","assets/git-commit-DGJi7qBD.js","assets/diff-CdkWtnkL.js","assets/git-rebase-HwDSB2qJ.js","assets/glimmer-js-B6LF_BMd.js","assets/glimmer-ts-Cn42BUKe.js","assets/hack-DDEqRjBe.js","assets/handlebars-g9Qe0ao2.js","assets/http-qlhghEti.js","assets/hurl-CHIKfBKk.js","assets/csv-DNUpVBxl.js","assets/hxml-adC65L_J.js","assets/haxe-DfXTCEOz.js","assets/jinja-BHZt0_Dn.js","assets/jison-TqJYWKkW.js","assets/julia-CW07fy07.js","assets/r-CGji9_vM.js","assets/just-DBcWo9WY.js","assets/perl-DqDX-7VG.js","assets/latex-D6lXiPTF.js","assets/tex-CdJ24HJj.js","assets/liquid-DhYYAQ41.js","assets/marko-xtrIBdcL.js","assets/less-C95PyOu0.js","assets/mdc-DyZVNnwP.js","assets/nextflow-JEyYUlIq.js","assets/nextflow-groovy-wvmJO4hi.js","assets/nginx-CGgm1VOJ.js","assets/nim-Br7S817Z.js","assets/php-DYSqNNGJ.js","assets/pug-Bob3gNio.js","assets/qml-CsMafcqN.js","assets/razor-B4PzhaZX.js","assets/csharp-BDKQY1K9.js","assets/rst-BXuz-2b8.js","assets/cmake-D5rSbMir.js","assets/sas-Cov9PzAD.js","assets/shaderlab-DZ3Lsiak.js","assets/hlsl-DpuYn7pp.js","assets/shellsession-BHLVblBB.js","assets/soy-e0u3-wIA.js","assets/sparql-B9c85a_o.js","assets/turtle-CqNXyJWZ.js","assets/stata-B1mLEMrz.js","assets/surrealql-BTKo2XFY.js","assets/svelte-B7URZ-wm.js","assets/templ-DVRYIgGq.js","assets/go-DLnOLj8q.js","assets/ts-tags-CCSbelDn.js","assets/twig-Dn4ruiVl.js","assets/vue-D19cWHwY.js","assets/vue-html-_j-KC7Cs.js","assets/vue-vine-BC03MN6c.js","assets/stylus-sKwvsUaC.js","assets/xsl-DR-zOeBm.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/highlighted-body-OFNGDK62-z8OpDrVr.js","assets/jsx-runtime-C0W9Wf2W.js","assets/angular-html-olSuI25H.js","assets/html-CzX0w7K_.js","assets/css-zY4NE9yA.js","assets/javascript-CzjRtS1s.js","assets/angular-ts-BJPoZ_vo.js","assets/scss-Efq7Dmbs.js","assets/apl-CyVuPSCb.js","assets/json-CdFmZMJc.js","assets/xml-BlDEvPia.js","assets/java-BqKEu7zh.js","assets/astro-CKc3-gwH.js","assets/postcss-BTQso3H9.js","assets/tsx-DrzBggF8.js","assets/typescript-COZIw7xM.js","assets/blade-DMAsVBaV.js","assets/html-derivative-D-XvNBA6.js","assets/sql-CB6kO6Km.js","assets/bsl-B1qbqNES.js","assets/sdbl-BmWYR-pI.js","assets/c-BvB8CVo8.js","assets/cairo-BDj8wWhy.js","assets/python-CKg5r0C3.js","assets/cobol-hBjMZW-R.js","assets/coffee-B4OtR3w-.js","assets/cpp-BblbpnyR.js","assets/glsl-CEMf-THb.js","assets/regexp-CvWG4lI-.js","assets/crystal-x3k4USY-.js","assets/shellscript-BbEstezf.js","assets/edge-B-9TrlZC.js","assets/elixir-CXCzbj1r.js","assets/elm-BdRiwmde.js","assets/erb-C9tvRzx3.js","assets/ruby-CXP5_4kq.js","assets/graphql-dBCd2Czl.js","assets/jsx-BL6Wh6Qw.js","assets/haml-Ck5pVAEG.js","assets/lua-B4ezzssg.js","assets/yaml-iUXljnLs.js","assets/erlang-Bc4hQuqa.js","assets/markdown-BaI9LyM4.js","assets/fortran-fixed-form-B02FOYI-.js","assets/fortran-free-form-BPTf0lbT.js","assets/fsharp-DhdR18vN.js","assets/gdresource-DgnrMPIx.js","assets/gdscript-CsadCSaZ.js","assets/gdshader-PfnN_8tR.js","assets/git-commit-DGJi7qBD.js","assets/diff-CdkWtnkL.js","assets/git-rebase-HwDSB2qJ.js","assets/glimmer-js-B6LF_BMd.js","assets/glimmer-ts-Cn42BUKe.js","assets/hack-DDEqRjBe.js","assets/handlebars-g9Qe0ao2.js","assets/http-qlhghEti.js","assets/hurl-CHIKfBKk.js","assets/csv-DNUpVBxl.js","assets/hxml-adC65L_J.js","assets/haxe-DfXTCEOz.js","assets/jinja-BHZt0_Dn.js","assets/jison-TqJYWKkW.js","assets/julia-CW07fy07.js","assets/r-CGji9_vM.js","assets/just-DBcWo9WY.js","assets/perl-DqDX-7VG.js","assets/latex-D6lXiPTF.js","assets/tex-CdJ24HJj.js","assets/liquid-DhYYAQ41.js","assets/marko-xtrIBdcL.js","assets/less-C95PyOu0.js","assets/mdc-DyZVNnwP.js","assets/nextflow-JEyYUlIq.js","assets/nextflow-groovy-wvmJO4hi.js","assets/nginx-CGgm1VOJ.js","assets/nim-Br7S817Z.js","assets/php-DYSqNNGJ.js","assets/pug-Bob3gNio.js","assets/qml-CsMafcqN.js","assets/razor-B4PzhaZX.js","assets/csharp-BDKQY1K9.js","assets/rst-BXuz-2b8.js","assets/cmake-D5rSbMir.js","assets/sas-Cov9PzAD.js","assets/shaderlab-DZ3Lsiak.js","assets/hlsl-DpuYn7pp.js","assets/shellsession-BHLVblBB.js","assets/soy-e0u3-wIA.js","assets/sparql-B9c85a_o.js","assets/turtle-CqNXyJWZ.js","assets/stata-B1mLEMrz.js","assets/surrealql-BTKo2XFY.js","assets/svelte-B7URZ-wm.js","assets/templ-DVRYIgGq.js","assets/go-DLnOLj8q.js","assets/ts-tags-CCSbelDn.js","assets/twig-Dn4ruiVl.js","assets/vue-D19cWHwY.js","assets/vue-html-_j-KC7Cs.js","assets/vue-vine-BC03MN6c.js","assets/stylus-sKwvsUaC.js","assets/xsl-DR-zOeBm.js"])))=>i.map(i=>d[i]);
2
2
  import{c as e,i as t,n,o as r,r as i,t as a}from"./jsx-runtime-C0W9Wf2W.js";import{a as o,c as s,d as c,f as l,h as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,s as v,t as y,u as b}from"./globals-DNO3ilRx.js";var x=p(`bell-off`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742`,key:`178tsu`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05`,key:`1hqiys`}]]),S=p(`bell-ring`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]),C=p(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),w=p(`camera`,[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]),T=p(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),E=p(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ee=p(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),D=p(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),te=p(`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`}]]),ne=p(`image-off`,[[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}],[`path`,{d:`M10.41 10.41a2 2 0 1 1-2.83-2.83`,key:`1bzlo9`}],[`line`,{x1:`13.5`,x2:`6`,y1:`13.5`,y2:`21`,key:`1q0aeu`}],[`line`,{x1:`18`,x2:`21`,y1:`12`,y2:`15`,key:`5mozeu`}],[`path`,{d:`M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59`,key:`mmje98`}],[`path`,{d:`M21 15V5a2 2 0 0 0-2-2H9`,key:`43el77`}]]),re=p(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),O=p(`laptop`,[[`path`,{d:`M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z`,key:`1pdavp`}],[`path`,{d:`M20.054 15.987H3.946`,key:`14rxg9`}]]),ie=p(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),ae=p(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),oe=p(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),k=p(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),se=p(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),ce=p(`send-horizontal`,[[`path`,{d:`M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z`,key:`117uat`}],[`path`,{d:`M6 12h16`,key:`s4cdu5`}]]),le=p(`share`,[[`path`,{d:`M12 2v13`,key:`1km8f5`}],[`path`,{d:`m16 6-4-4-4 4`,key:`13yo43`}],[`path`,{d:`M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8`,key:`1b2hhj`}]]),ue=p(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),A=p(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),de=p(`volume-2`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]),fe=p(`wand-sparkles`,[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`,key:`ul74o6`}],[`path`,{d:`m14 7 3 3`,key:`1r5n42`}],[`path`,{d:`M5 6v4`,key:`ilb8ba`}],[`path`,{d:`M19 14v4`,key:`blhpug`}],[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M7 8H3`,key:`zfb6yr`}],[`path`,{d:`M21 16h-4`,key:`1cnmox`}],[`path`,{d:`M11 3H9`,key:`1obp7u`}]]),pe=p(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),j=e(i(),1),me=e(u(),1),he=class e{ws=null;handlers=new Map;statusHandlers=new Set;reconnectTimer=null;heartbeatTimer=null;url;queue=[];intentionalClose=!1;reconnectDelay=1e3;static MAX_RECONNECT_DELAY=8e3;tokenGetter=null;constructor(e,t){let n=location.protocol===`https:`?`wss:`:`ws:`,r=location.host;this.url=e??`${n}//${r}/ws`,this.tokenGetter=t??null}connect(){this.intentionalClose=!1;let t=this.url;if(this.tokenGetter){let e=this.tokenGetter();if(e){let n=t.includes(`?`)?`&`:`?`;t=`${t}${n}token=${e}`}}this.ws=new WebSocket(t),this.ws.onopen=()=>{this.reconnectDelay=1e3,this.notifyStatus(!0),this.flushQueue(),this.startHeartbeat()},this.ws.onmessage=e=>{if(e.data===`pong`)return;let t=JSON.parse(e.data);this.handlers.get(t.type)?.forEach(e=>e(t.data))},this.ws.onclose=()=>{this.stopHeartbeat(),this.notifyStatus(!1),this.intentionalClose||(this.reconnectTimer=setTimeout(()=>{this.reconnectDelay=Math.min(this.reconnectDelay*2,e.MAX_RECONNECT_DELAY),this.connect()},this.reconnectDelay))},this.ws.onerror=()=>this.ws?.close()}disconnect(){this.intentionalClose=!0,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.stopHeartbeat(),this.ws?.close(),this.ws=null}on(e,t){return this.handlers.has(e)||this.handlers.set(e,new Set),this.handlers.get(e).add(t),()=>this.handlers.get(e)?.delete(t)}onStatus(e){return this.statusHandlers.add(e),()=>this.statusHandlers.delete(e)}send(e,t){let n={type:e,data:t};this.ws?.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify(n)):this.queue.push(n)}get connected(){return this.ws?.readyState===WebSocket.OPEN}flushQueue(){for(;this.queue.length>0&&this.ws?.readyState===WebSocket.OPEN;){let e=this.queue.shift();this.ws.send(JSON.stringify(e))}}notifyStatus(e){this.statusHandlers.forEach(t=>t(e))}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send(`ping`)},25e3)}stopHeartbeat(){this.heartbeatTimer&&=(clearInterval(this.heartbeatTimer),null)}},ge=`bloby_token`,_e=null;function ve(){return localStorage.getItem(ge)}function ye(e){localStorage.setItem(ge,e)}function be(){localStorage.removeItem(ge)}function xe(e){_e=e}async function Se(e,t={}){let n=ve(),r=new Headers(t.headers);n&&r.set(`Authorization`,`Bearer ${n}`);let i=await fetch(e,{...t,headers:r});return i.status===401&&n&&(be(),_e?.()),i}function Ce(e,t,n=!0){let[r,i]=(0,j.useState)([]),[a,o]=(0,j.useState)(null),[s,c]=(0,j.useState)(!1),[l,u]=(0,j.useState)(``),[d,f]=(0,j.useState)([]),[p,m]=(0,j.useState)(!1),h=(0,j.useRef)(!1),g=(0,j.useRef)(null),_=(0,j.useRef)(!1),v=(0,j.useRef)(!1),y=(0,j.useRef)(``),b=(0,j.useRef)(0),x=(0,j.useRef)(null),S=(0,j.useRef)(null),C=(0,j.useRef)(new URLSearchParams(location.search).has(`ext`));(0,j.useEffect)(()=>{g.current=a},[a]),(0,j.useEffect)(()=>{_.current=s},[s]),(0,j.useEffect)(()=>{if(!C.current)return;function e(e){e.data?.type===`bloby:page-context`&&(S.current=e.data.context,console.log(`[blobyChat] Extension page context:`,e.data.context?.url))}return window.addEventListener(`message`,e),window.parent?.postMessage({type:`bloby:request-context`},`*`),()=>window.removeEventListener(`message`,e)},[]);let w=(0,j.useCallback)(e=>{let t;e.audio_data&&(t=e.audio_data.startsWith(`data:`)?e.audio_data:e.audio_data.includes(`/`)?`/api/files/${e.audio_data}`:`data:audio/webm;base64,${e.audio_data}`);let n;if(e.attachments)try{n=JSON.parse(e.attachments)}catch{}return{id:e.id,role:e.role,content:e.content,timestamp:e.created_at,audioData:t,hasAttachments:!!(n&&n.length>0),attachments:n}},[]),T=(0,j.useCallback)(async()=>{try{let e=await Se(`/api/context/current`).then(e=>e.json());if(!e.conversationId)return;o(e.conversationId);let t=await Se(`/api/conversations/${e.conversationId}/messages?limit=200`);if(!t.ok)return;let n=await t.json();if(!n?.length)return;i(n.filter(e=>e.role===`user`||e.role===`assistant`).map(w)),m(n.length>=200)}catch{}},[w]),E=(0,j.useCallback)(async()=>{if(!(v.current||!g.current)){v.current=!0;try{let e=r[0]?.id;if(!e)return;let t=await Se(`/api/conversations/${g.current}/messages?before=${e}&limit=100`);if(!t.ok)return;let n=await t.json();if(!n?.length){m(!1);return}let a=n.filter(e=>e.role===`user`||e.role===`assistant`).map(w);i(e=>[...a,...e]),n.length<100&&m(!1)}catch{}finally{v.current=!1}}},[r,w]);(0,j.useEffect)(()=>{!n||h.current||(h.current=!0,T())},[n,T]),(0,j.useEffect)(()=>{n&&t&&t>0&&T()},[n,t,T]),(0,j.useEffect)(()=>{if(!n||!t||t===0||!s)return;let e=setInterval(()=>{if(!_.current){clearInterval(e);return}T()},3e3);return()=>clearInterval(e)},[n,t,s,T]),(0,j.useEffect)(()=>{if(!e)return;console.log(`[blobyChat] ──── WS HANDLERS REGISTERED ────`);let t=[e.on(`bot:typing`,()=>{console.log(`[blobyChat] bot:typing → streaming=true`),c(!0),f([])}),e.on(`bot:token`,e=>{c(!0),u(t=>{let n=t+e.token;return y.current=n,n})}),e.on(`bot:tool`,e=>{let t=y.current;t&&(console.log(`[blobyChat] bot:tool (${e.name}) — committing ${t.length} chars as bubble`),b.current+=t.length,i(e=>[...e,{id:`tool-`+Date.now(),role:`assistant`,content:t,timestamp:new Date().toISOString()}]),u(``),y.current=``),f(t=>t.find(t=>t.name===e.name&&t.status===`running`)?t:[...t,{name:e.name,status:`running`}])}),e.on(`bot:response`,e=>{if(g.current&&e.conversationId!==g.current)return;o(e.conversationId);let t=e.content||``;b.current>0?(t=t.slice(b.current).replace(/^\n+/,``),b.current=0,console.log(`[blobyChat] bot:response — stripped partial, remaining:`,t.slice(0,60))):console.log(`[blobyChat] bot:response — new bubble`),t.trim()&&i(n=>[...n,{id:e.messageId||Date.now().toString(),role:`assistant`,content:t,timestamp:new Date().toISOString()}]),u(``),y.current=``,f([])}),e.on(`bot:task-created`,()=>{let e=y.current;e&&(console.log(`[blobyChat] bot:task-created — committing stream, showing dots`),b.current+=e.length,i(t=>[...t,{id:`pre-task-`+Date.now(),role:`assistant`,content:e,timestamp:new Date().toISOString()}]),u(``),y.current=``)}),e.on(`bot:idle`,()=>{console.log(`[blobyChat] bot:idle → streaming=false`),c(!1)}),e.on(`bot:error`,e=>{console.log(`[blobyChat] bot:error`),u(``),y.current=``,c(!1),f([]),i(t=>[...t,{id:Date.now().toString(),role:`assistant`,content:`Error: ${e.error}`,timestamp:new Date().toISOString()}])}),e.on(`chat:sync`,e=>{g.current&&e.conversationId!==g.current||i(t=>[...t,{id:Date.now().toString(),role:e.message.role,content:e.message.content,timestamp:e.message.timestamp,hasAttachments:!!e.message.attachments?.length,attachments:e.message.attachments}])}),e.on(`chat:conversation-created`,e=>{o(e.conversationId)}),e.on(`chat:state`,e=>{e.streaming&&(c(!0),e.conversationId&&o(e.conversationId),e.buffer&&u(e.buffer))}),e.on(`chat:cleared`,()=>{i([]),o(null),u(``),c(!1),f([]),h.current=!1})];return()=>t.forEach(e=>e())},[e]);let ee=(0,j.useCallback)(e=>{let t=`pending-audio-`+Date.now();x.current=t,i(n=>[...n,{id:t,role:`user`,content:``,timestamp:new Date().toISOString(),audioData:e.startsWith(`data:`)?e:`data:audio/webm;base64,${e}`,transcribing:!0}])},[]);return{messages:r,streaming:s,streamBuffer:l,conversationId:a,tools:d,hasMore:p,loadOlder:E,sendMessage:(0,j.useCallback)((t,n,r)=>{if(!e||!t.trim()&&(!n||n.length===0)&&!r)return;let o=y.current;o&&(console.log(`[blobyChat] Committing partial —`,o.length,`chars`),b.current+=o.length,i(e=>[...e,{id:`partial-`+Date.now(),role:`assistant`,content:o,timestamp:new Date().toISOString()}]),u(``),y.current=``);let s=x.current;if(r&&s)x.current=null,i(e=>e.map(e=>e.id===s?{...e,content:t,transcribing:!1,hasAttachments:!!(n&&n.length>0)}:e));else{let e={id:Date.now().toString(),role:`user`,content:t,timestamp:new Date().toISOString(),hasAttachments:!!(n&&n.length>0),audioData:r?r.startsWith(`data:`)?r:`data:audio/webm;base64,${r}`:void 0};i(t=>[...t,e])}let c=t;if(C.current&&S.current){let e=S.current,n=[`[Page: ${e.url}`];e.title&&(n[0]+=` | ${e.title}`),e.productName&&(n[0]+=` | ${e.productName}`),e.price&&(n[0]+=` | ${e.currency||`$`}${e.price}`),n[0]+=`]`,e.selection&&n.push(`[Selected: ${e.selection}]`),e.hasForms&&n.push(`[Page has ${e.formCount} form(s)]`),c=n.join(`
3
3
  `)+`
4
4
  `+t,window.parent?.postMessage({type:`bloby:request-context`},`*`)}let l={conversationId:a,content:c};r&&(l.audioData=r.includes(`,`)?r.split(`,`)[1]:r),n?.length&&(l.attachments=n.map(e=>{let t=e.preview.match(/^data:([^;]+);base64,(.+)$/);return{type:e.type,name:e.name,mediaType:t?.[1]||`application/octet-stream`,data:t?.[2]||``}})),e.send(`user:message`,l)},[e,a]),addPendingAudio:ee,stopStreaming:(0,j.useCallback)(()=>{e&&(e.send(`user:stop`,{conversationId:a}),c(!1),u(``),y.current=``,b.current=0,f([]))},[e,a]),clearContext:(0,j.useCallback)(()=>{e&&e.send(`user:clear-context`,{}),i([]),o(null),u(``),y.current=``,b.current=0,c(!1),f([]),h.current=!1},[e])}}var M=a(),we=`bloby_login_totp`;function Te({onLogin:e,totpEnabled:t}){let[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(``),[s,u]=(0,j.useState)(!1),[d,f]=(0,j.useState)(`password`),[p,h]=(0,j.useState)(``),[y,b]=(0,j.useState)(``),[x,S]=(0,j.useState)(!0),[C,w]=(0,j.useState)(!1),T=(0,j.useRef)(null);(0,j.useEffect)(()=>{try{let e=sessionStorage.getItem(we);if(!e)return;let t=JSON.parse(e);t.pendingToken&&t.expiresAt>Date.now()?(b(t.pendingToken),f(`totp`)):sessionStorage.removeItem(we)}catch{}},[]),(0,j.useEffect)(()=>{d===`totp`&&setTimeout(()=>T.current?.focus(),100)},[d]);function E(e){try{sessionStorage.setItem(we,JSON.stringify({pendingToken:e,expiresAt:Date.now()+4.5*60*1e3}))}catch{}}function ee(){try{sessionStorage.removeItem(we)}catch{}}let D=async()=>{if(!(!n.trim()||s)){u(!0),a(``);try{let t=btoa(`admin:${n}`),r=await fetch(`/api/portal/login`,{headers:{Authorization:`Basic ${t}`},credentials:`include`}),i=await r.json();r.ok&&i.token?(ee(),e(i.token)):r.ok&&i.requiresTOTP?(b(i.pendingToken),E(i.pendingToken),f(`totp`),a(``)):a(i.error||`Invalid password`)}catch{a(`Could not reach server`)}finally{u(!1)}}},te=async()=>{if(!(!p.trim()||s)){u(!0),a(``);try{let t=await fetch(`/api/portal/login/totp?pending=${encodeURIComponent(y)}&code=${encodeURIComponent(p)}&trust=${x?`1`:`0`}`,{credentials:`include`}),n=await t.json();t.ok&&n.token?(ee(),e(n.token)):a(n.error||`Invalid code`)}catch{a(`Could not reach server`)}finally{u(!1)}}},ne=e=>{e.key===`Enter`&&(d===`password`?D():te())},re=()=>{f(`password`),a(``),h(``),w(!1),ee()},O=`w-full bg-white/[0.05] border border-white/[0.08] text-white rounded-xl px-4 py-3 text-base outline-none input-glow placeholder:text-white/20 transition-all`;return(0,M.jsx)(`div`,{className:`flex flex-col items-center justify-center h-dvh px-6`,children:(0,M.jsx)(`div`,{className:`w-full max-w-[320px] flex flex-col items-center`,children:(0,M.jsx)(_,{mode:`wait`,children:d===`password`?(0,M.jsxs)(m.div,{initial:{opacity:0,x:-20},animate:{opacity:1,x:0},exit:{opacity:0,x:-20},transition:{duration:.2},className:`w-full flex flex-col items-center`,children:[(0,M.jsx)(`div`,{className:`w-14 h-14 rounded-2xl bg-white/[0.04] border border-white/[0.08] flex items-center justify-center mb-5`,children:(0,M.jsx)(ie,{className:`h-6 w-6 text-white/40`})}),(0,M.jsx)(`h1`,{className:`text-xl font-bold text-white tracking-tight mb-1`,children:`Welcome back`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[13px] mb-6`,children:`Enter your password to continue.`}),i&&(0,M.jsx)(`div`,{className:`w-full bg-red-500/8 border border-red-500/15 rounded-xl px-4 py-2.5 mb-4`,children:(0,M.jsx)(`p`,{className:`text-red-400/90 text-[12px]`,children:i})}),(0,M.jsx)(`input`,{type:`password`,value:n,onChange:e=>r(e.target.value),onKeyDown:ne,placeholder:`Password`,autoFocus:!0,autoComplete:`current-password`,className:O}),(0,M.jsx)(`button`,{onClick:D,disabled:!n.trim()||s,className:`w-full mt-4 py-3 bg-gradient-brand hover:opacity-90 text-white text-[14px] font-semibold rounded-full transition-colors flex items-center justify-center gap-2 disabled:opacity-40`,children:s?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(v,{className:`h-4 w-4 animate-spin`}),`Signing in...`]}):(0,M.jsxs)(M.Fragment,{children:[`Sign In`,(0,M.jsx)(l,{className:`h-4 w-4`})]})})]},`password`):(0,M.jsxs)(m.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},exit:{opacity:0,x:20},transition:{duration:.2},className:`w-full flex flex-col items-center`,children:[(0,M.jsx)(`div`,{className:`w-14 h-14 rounded-2xl bg-[#AF27E3]/10 border border-[#AF27E3]/20 flex items-center justify-center mb-5`,children:(0,M.jsx)(o,{className:`h-6 w-6 text-[#AF27E3]`})}),(0,M.jsx)(`h1`,{className:`text-xl font-bold text-white tracking-tight mb-1`,children:C?`Recovery code`:`Enter your 2FA code`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[13px] mb-6`,children:C?`Enter one of your recovery codes.`:`Open your authenticator app and enter the 6-digit code.`}),i&&(0,M.jsx)(`div`,{className:`w-full bg-red-500/8 border border-red-500/15 rounded-xl px-4 py-2.5 mb-4`,children:(0,M.jsx)(`p`,{className:`text-red-400/90 text-[12px]`,children:i})}),(0,M.jsx)(`input`,{ref:T,type:`text`,inputMode:C?`text`:`numeric`,autoComplete:`one-time-code`,maxLength:C?20:6,value:p,onChange:e=>{h(C?e.target.value:e.target.value.replace(/\D/g,``)),a(``)},onKeyDown:ne,placeholder:C?`Recovery code`:`000000`,autoFocus:!0,className:O+(C?``:` tracking-[0.3em] text-center font-mono`)}),(0,M.jsxs)(`label`,{className:`flex items-center gap-2.5 mt-4 w-full cursor-pointer`,children:[(0,M.jsx)(`div`,{onClick:()=>S(e=>!e),className:`w-5 h-5 rounded-md border flex items-center justify-center transition-all ${x?`bg-[#AF27E3] border-[#AF27E3]`:`bg-white/[0.04] border-white/[0.12]`}`,children:x&&(0,M.jsx)(c,{className:`h-3.5 w-3.5 text-white`})}),(0,M.jsx)(`span`,{className:`text-[13px] text-white/50`,children:`Trust this device for 90 days`})]}),(0,M.jsx)(`button`,{onClick:te,disabled:!p.trim()||s,className:`w-full mt-4 py-3 bg-gradient-brand hover:opacity-90 text-white text-[14px] font-semibold rounded-full transition-colors flex items-center justify-center gap-2 disabled:opacity-40`,children:s?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(v,{className:`h-4 w-4 animate-spin`}),`Verifying...`]}):(0,M.jsxs)(M.Fragment,{children:[`Verify`,(0,M.jsx)(l,{className:`h-4 w-4`})]})}),(0,M.jsxs)(`div`,{className:`flex items-center gap-4 mt-4`,children:[(0,M.jsxs)(`button`,{onClick:re,className:`text-[12px] text-white/30 hover:text-white/50 flex items-center gap-1 transition-colors`,children:[(0,M.jsx)(g,{className:`h-3 w-3`}),`Back`]}),(0,M.jsx)(`button`,{onClick:()=>{w(e=>!e),h(``),a(``)},className:`text-[12px] text-white/30 hover:text-white/50 transition-colors`,children:C?`Use authenticator code`:`Use a recovery code`})]})]},`totp`)})})})}var Ee=(function(e){if(e==null)return je;if(typeof e==`function`)return Ae(e);if(typeof e==`object`)return Array.isArray(e)?De(e):Oe(e);if(typeof e==`string`)return ke(e);throw Error(`Expected function, string, or object as test`)});function De(e){let t=[],n=-1;for(;++n<e.length;)t[n]=Ee(e[n]);return Ae(r);function r(...e){let n=-1;for(;++n<t.length;)if(t[n].apply(this,e))return!0;return!1}}function Oe(e){let t=e;return Ae(n);function n(n){let r=n,i;for(i in e)if(r[i]!==t[i])return!1;return!0}}function ke(e){return Ae(t);function t(t){return t&&t.type===e}}function Ae(e){return t;function t(t,n,r){return!!(Me(t)&&e.call(this,t,typeof n==`number`?n:void 0,r||void 0))}}function je(){return!0}function Me(e){return typeof e==`object`&&!!e&&`type`in e}function Ne(e){return e}var Pe=[],Fe=`skip`;function Ie(e,t,n,r){let i;typeof t==`function`&&typeof n!=`function`?(r=n,n=t):i=t;let a=Ee(i),o=r?-1:1;s(e,void 0,[])();function s(e,i,c){let l=e&&typeof e==`object`?e:{};if(typeof l.type==`string`){let t=typeof l.tagName==`string`?l.tagName:typeof l.name==`string`?l.name:void 0;Object.defineProperty(u,`name`,{value:`node (`+Ne(e.type+(t?`<`+t+`>`:``))+`)`})}return u;function u(){let l=Pe,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=Le(n(e,c)),l[0]===!1))return l;if(`children`in e&&e.children){let t=e;if(t.children&&l[0]!==`skip`)for(d=(r?t.children.length:-1)+o,f=c.concat(t);d>-1&&d<t.children.length;){let e=t.children[d];if(u=s(e,d,f)(),u[0]===!1)return u;d=typeof u[1]==`number`?u[1]:d+o}}return l}}}function Le(e){return Array.isArray(e)?e:typeof e==`number`?[!0,e]:e==null?Pe:[e]}function Re(e,t,n,r){let i,a,o;typeof t==`function`&&typeof n!=`function`?(a=void 0,o=t,i=n):(a=t,o=n,i=r),Ie(e,a,s,i);function s(e,t){let n=t[t.length-1],r=n?n.children.indexOf(e):void 0;return o(e,r,n)}}var ze={indicator:`indicator`,textOnly:`text-only`,remove:`remove`};function Be({defaultOrigin:e=``,allowedLinkPrefixes:t=[],allowedImagePrefixes:n=[],allowDataImages:r=!1,allowedProtocols:i=[],blockedImageClass:a=`inline-block bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-400 px-3 py-1 rounded text-sm`,blockedLinkClass:o=`text-gray-500`,linkBlockPolicy:s=ze.indicator,imageBlockPolicy:c=ze.indicator}){let l=t.length&&!t.every(e=>e===`*`),u=n.length&&!n.every(e=>e===`*`);if(!e&&(l||u))throw Error(`defaultOrigin is required when allowedLinkPrefixes or allowedImagePrefixes are provided`);return l=>{let u=Xe(e,t,n,r,i,a,o,s,c);Ke(l),Re(l,u)}}function Ve(e,t){if(typeof e!=`string`)return null;try{return new URL(e)}catch{if(t)try{return new URL(e,t)}catch{return null}if(e.startsWith(`/`)||e.startsWith(`./`)||e.startsWith(`../`))try{return new URL(e,`http://example.com`)}catch{return null}return null}}function He(e){return typeof e==`string`?e.startsWith(`/`)||e.startsWith(`./`)||e.startsWith(`../`):!1}var Ue=new Set([`https:`,`http:`,`irc:`,`ircs:`,`mailto:`,`xmpp:`,`blob:`]),We=new Set([`javascript:`,`data:`,`file:`,`vbscript:`]);function Ge(e,t,n,r=!1,i=!1,a=[]){if(!e)return null;if(typeof e==`string`&&e.startsWith(`#`)&&!i)try{if(new URL(e,`http://example.com`).hash===e)return e}catch{}if(typeof e==`string`&&e.startsWith(`data:`))return i&&r&&e.startsWith(`data:image/`)?e:null;if(typeof e==`string`&&e.startsWith(`blob:`)){try{if(new URL(e).protocol===`blob:`&&e.length>5){let t=e.substring(5);if(t&&t.length>0&&t!==`invalid`)return e}}catch{return null}return null}let o=Ve(e,n);if(!o||We.has(o.protocol)||!(Ue.has(o.protocol)||a.includes(o.protocol)||a.includes(`*`)))return null;if(o.protocol===`mailto:`||!o.protocol.match(/^https?:$/))return o.href;let s=He(e);return o&&t.some(e=>{let t=Ve(e,n);return!t||t.origin!==o.origin?!1:o.href.startsWith(t.href)})?s?o.pathname+o.search+o.hash:o.href:t.includes(`*`)?o.protocol!==`https:`&&o.protocol!==`http:`?null:s?o.pathname+o.search+o.hash:o.href:null}function Ke(e){if(`children`in e&&Array.isArray(e.children)){e.children=e.children.filter(e=>e!=null);for(let t of e.children)Ke(t)}}var qe=Symbol(`node-seen`);function Je(e,t,n){return t===ze.remove?{type:`remove`}:t===ze.textOnly?{type:`replace`,element:{type:`element`,tagName:`span`,properties:{},children:[...e.children]}}:{type:`replace`,element:{type:`element`,tagName:`span`,properties:{title:`Blocked URL: `+String(e.properties.href),class:n},children:[...e.children,{type:`text`,value:` [blocked]`}]}}}function Ye(e,t,n){if(t===ze.remove)return{type:`remove`};if(t===ze.textOnly){let t=String(e.properties.alt||``);return t?{type:`replace`,element:{type:`element`,tagName:`span`,properties:{},children:[{type:`text`,value:t}]}}:{type:`remove`}}return{type:`replace`,element:{type:`element`,tagName:`span`,properties:{class:n},children:[{type:`text`,value:`[Image blocked: `+String(e.properties.alt||`No description`)+`]`}]}}}var Xe=(e,t,n,r,i,a,o,s,c)=>{let l=(u,d,f)=>{if(u.type!==`element`||u[qe])return!0;if(u.tagName===`a`){let n=Ge(u.properties.href,t,e,!1,!1,i);if(n===null){if(u[qe]=!0,Re(u,l),f&&typeof d==`number`){let e=Je(u,s,o);if(e.type===`remove`)return f.children.splice(d,1),[Fe,d];f.children[d]=e.element}return Fe}else return u.properties.href=n,u.properties.target=`_blank`,u.properties.rel=`noopener noreferrer`,!0}if(u.tagName===`img`){let t=Ge(u.properties.src,n,e,r,!0,i);if(t===null){if(u[qe]=!0,Re(u,l),f&&typeof d==`number`){let e=Ye(u,c,a);if(e.type===`remove`)return f.children.splice(d,1),[Fe,d];f.children[d]=e.element}return Fe}else return u.properties.src=t,!0}return!0};return l},Ze=typeof self==`object`?self:globalThis,Qe=(e,t)=>{let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o;return n(new Ze[e](t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}return n(new Ze[a](o),i)};return r},$e=e=>Qe(new Map,e)(0),et=``,{toString:tt}={},{keys:nt}=Object,rt=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=tt.call(e).slice(8,-1);switch(n){case`Array`:return[1,et];case`Object`:return[2,et];case`Date`:return[3,et];case`RegExp`:return[4,et];case`Map`:return[5,et];case`Set`:return[6,et];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]},it=([e,t])=>e===0&&(t===`function`||t===`symbol`),at=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=rt(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+s);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of nt(r))(e||!it(rt(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(it(rt(n))||it(rt(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!it(rt(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a},ot=(e,{json:t,lossy:n}={})=>{let r=[];return at(!(t||n),!!t,new Map,r)(e),r},st=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?$e(ot(e,t)):structuredClone(e):(e,t)=>$e(ot(e,t)),ct=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};ct.prototype.normal={},ct.prototype.property={},ct.prototype.space=void 0;function lt(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new ct(n,r,t)}function ut(e){return e.toLowerCase()}var dt=class{constructor(e,t){this.attribute=t,this.property=e}};dt.prototype.attribute=``,dt.prototype.booleanish=!1,dt.prototype.boolean=!1,dt.prototype.commaOrSpaceSeparated=!1,dt.prototype.commaSeparated=!1,dt.prototype.defined=!1,dt.prototype.mustUseProperty=!1,dt.prototype.number=!1,dt.prototype.overloadedBoolean=!1,dt.prototype.property=``,dt.prototype.spaceSeparated=!1,dt.prototype.space=void 0;var ft=r({boolean:()=>N,booleanish:()=>mt,commaOrSpaceSeparated:()=>vt,commaSeparated:()=>_t,number:()=>P,overloadedBoolean:()=>ht,spaceSeparated:()=>gt}),pt=0,N=yt(),mt=yt(),ht=yt(),P=yt(),gt=yt(),_t=yt(),vt=yt();function yt(){return 2**++pt}var bt=Object.keys(ft),xt=class extends dt{constructor(e,t,n,r){let i=-1;if(super(e,t),St(this,`space`,r),typeof n==`number`)for(;++i<bt.length;){let e=bt[i];St(this,bt[i],(n&ft[e])===ft[e])}}};xt.prototype.defined=!0;function St(e,t,n){n&&(e[t]=n)}function Ct(e){let t={},n={};for(let[r,i]of Object.entries(e.properties)){let a=new xt(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),t[r]=a,n[ut(r)]=r,n[ut(a.attribute)]=r}return new ct(t,n,e.space)}var wt=Ct({properties:{ariaActiveDescendant:null,ariaAtomic:mt,ariaAutoComplete:null,ariaBusy:mt,ariaChecked:mt,ariaColCount:P,ariaColIndex:P,ariaColSpan:P,ariaControls:gt,ariaCurrent:null,ariaDescribedBy:gt,ariaDetails:null,ariaDisabled:mt,ariaDropEffect:gt,ariaErrorMessage:null,ariaExpanded:mt,ariaFlowTo:gt,ariaGrabbed:mt,ariaHasPopup:null,ariaHidden:mt,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:gt,ariaLevel:P,ariaLive:null,ariaModal:mt,ariaMultiLine:mt,ariaMultiSelectable:mt,ariaOrientation:null,ariaOwns:gt,ariaPlaceholder:null,ariaPosInSet:P,ariaPressed:mt,ariaReadOnly:mt,ariaRelevant:null,ariaRequired:mt,ariaRoleDescription:gt,ariaRowCount:P,ariaRowIndex:P,ariaRowSpan:P,ariaSelected:mt,ariaSetSize:P,ariaSort:null,ariaValueMax:P,ariaValueMin:P,ariaValueNow:P,ariaValueText:null,role:null},transform(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}});function Tt(e,t){return t in e?e[t]:t}function Et(e,t){return Tt(e,t.toLowerCase())}var Dt=Ct({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:_t,acceptCharset:gt,accessKey:gt,action:null,allow:null,allowFullScreen:N,allowPaymentRequest:N,allowUserMedia:N,alt:null,as:null,async:N,autoCapitalize:null,autoComplete:gt,autoFocus:N,autoPlay:N,blocking:gt,capture:null,charSet:null,checked:N,cite:null,className:gt,cols:P,colSpan:null,content:null,contentEditable:mt,controls:N,controlsList:gt,coords:P|_t,crossOrigin:null,data:null,dateTime:null,decoding:null,default:N,defer:N,dir:null,dirName:null,disabled:N,download:ht,draggable:mt,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:N,formTarget:null,headers:gt,height:P,hidden:ht,high:P,href:null,hrefLang:null,htmlFor:gt,httpEquiv:gt,id:null,imageSizes:null,imageSrcSet:null,inert:N,inputMode:null,integrity:null,is:null,isMap:N,itemId:null,itemProp:gt,itemRef:gt,itemScope:N,itemType:gt,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:N,low:P,manifest:null,max:null,maxLength:P,media:null,method:null,min:null,minLength:P,multiple:N,muted:N,name:null,nonce:null,noModule:N,noValidate:N,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:N,optimum:P,pattern:null,ping:gt,placeholder:null,playsInline:N,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:N,referrerPolicy:null,rel:gt,required:N,reversed:N,rows:P,rowSpan:P,sandbox:gt,scope:null,scoped:N,seamless:N,selected:N,shadowRootClonable:N,shadowRootDelegatesFocus:N,shadowRootMode:null,shape:null,size:P,sizes:null,slot:null,span:P,spellCheck:mt,src:null,srcDoc:null,srcLang:null,srcSet:null,start:P,step:null,style:null,tabIndex:P,target:null,title:null,translate:null,type:null,typeMustMatch:N,useMap:null,value:mt,width:P,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:gt,axis:null,background:null,bgColor:null,border:P,borderColor:null,bottomMargin:P,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:N,declare:N,event:null,face:null,frame:null,frameBorder:null,hSpace:P,leftMargin:P,link:null,longDesc:null,lowSrc:null,marginHeight:P,marginWidth:P,noResize:N,noHref:N,noShade:N,noWrap:N,object:null,profile:null,prompt:null,rev:null,rightMargin:P,rules:null,scheme:null,scrolling:mt,standby:null,summary:null,text:null,topMargin:P,valueType:null,version:null,vAlign:null,vLink:null,vSpace:P,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:N,disableRemotePlayback:N,prefix:null,property:null,results:P,security:null,unselectable:null},space:`html`,transform:Et}),Ot=Ct({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:vt,accentHeight:P,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:P,amplitude:P,arabicForm:null,ascent:P,attributeName:null,attributeType:null,azimuth:P,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:P,by:null,calcMode:null,capHeight:P,className:gt,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:P,diffuseConstant:P,direction:null,display:null,dur:null,divisor:P,dominantBaseline:null,download:N,dx:null,dy:null,edgeMode:null,editable:null,elevation:P,enableBackground:null,end:null,event:null,exponent:P,externalResourcesRequired:null,fill:null,fillOpacity:P,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:_t,g2:_t,glyphName:_t,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:P,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:P,horizOriginX:P,horizOriginY:P,id:null,ideographic:P,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:P,k:P,k1:P,k2:P,k3:P,k4:P,kernelMatrix:vt,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:P,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:P,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:P,overlineThickness:P,paintOrder:null,panose1:null,path:null,pathLength:P,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:gt,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:P,pointsAtY:P,pointsAtZ:P,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:vt,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:vt,rev:vt,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:vt,requiredFeatures:vt,requiredFonts:vt,requiredFormats:vt,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:P,specularExponent:P,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:P,strikethroughThickness:P,string:null,stroke:null,strokeDashArray:vt,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:P,strokeOpacity:P,strokeWidth:null,style:null,surfaceScale:P,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:vt,tabIndex:P,tableValues:null,target:null,targetX:P,targetY:P,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:vt,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:P,underlineThickness:P,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:P,values:null,vAlphabetic:P,vMathematical:P,vectorEffect:null,vHanging:P,vIdeographic:P,version:null,vertAdvY:P,vertOriginX:P,vertOriginY:P,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:P,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:Tt}),kt=Ct({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(e,t){return`xlink:`+t.slice(5).toLowerCase()}}),At=Ct({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:Et}),jt=Ct({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(e,t){return`xml:`+t.slice(3).toLowerCase()}}),Mt={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},Nt=/[A-Z]/g,Pt=/-[a-z]/g,Ft=/^data[-\w.:]+$/i;function It(e,t){let n=ut(t),r=t,i=dt;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)===`data`&&Ft.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Pt,Rt);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Pt.test(e)){let n=e.replace(Nt,Lt);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=xt}return new i(r,t)}function Lt(e){return`-`+e.toLowerCase()}function Rt(e){return e.charAt(1).toUpperCase()}var zt=lt([wt,Dt,kt,At,jt],`html`),Bt=lt([wt,Ot,kt,At,jt],`svg`);function Vt(e){let t=[],n=String(e||``),r=n.indexOf(`,`),i=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);let e=n.slice(i,r).trim();(e||!a)&&t.push(e),i=r+1,r=n.indexOf(`,`,i)}return t}function Ht(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var Ut=/[#.]/g;function Wt(e,t){let n=e||``,r={},i=0,a,o;for(;i<n.length;){Ut.lastIndex=i;let e=Ut.exec(n),t=n.slice(i,e?e.index:n.length);t&&(a?a===`#`?r.id=t:Array.isArray(r.className)?r.className.push(t):r.className=[t]:o=t,i+=t.length),e&&(a=e[0],i++)}return{type:`element`,tagName:o||t||`div`,properties:r,children:[]}}function Gt(e){let t=String(e||``).trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Kt(e){return e.join(` `).trim()}function qt(e,t,n){let r=n?$t(n):void 0;function i(n,i,...a){let o;if(n==null){o={type:`root`,children:[]};let e=i;a.unshift(e)}else{o=Wt(n,t);let s=o.tagName.toLowerCase(),c=r?r.get(s):void 0;if(o.tagName=c||s,Jt(i))a.unshift(i);else for(let[t,n]of Object.entries(i))Yt(e,o.properties,t,n)}for(let e of a)Xt(o.children,e);return o.type===`element`&&o.tagName===`template`&&(o.content={type:`root`,children:o.children},o.children=[]),o}return i}function Jt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!0;if(typeof e.type!=`string`)return!1;let t=e,n=Object.keys(e);for(let e of n){let n=t[e];if(n&&typeof n==`object`){if(!Array.isArray(n))return!0;let e=n;for(let t of e)if(typeof t!=`number`&&typeof t!=`string`)return!0}}return!!(`children`in e&&Array.isArray(e.children))}function Yt(e,t,n,r){let i=It(e,n),a;if(r!=null){if(typeof r==`number`){if(Number.isNaN(r))return;a=r}else a=typeof r==`boolean`?r:typeof r==`string`?i.spaceSeparated?Gt(r):i.commaSeparated?Vt(r):i.commaOrSpaceSeparated?Gt(Vt(r).join(` `)):Zt(i,i.property,r):Array.isArray(r)?[...r]:i.property===`style`?Qt(r):String(r);if(Array.isArray(a)){let e=[];for(let t of a)e.push(Zt(i,i.property,t));a=e}i.property===`className`&&Array.isArray(t.className)&&(a=t.className.concat(a)),t[i.property]=a}}function Xt(e,t){if(t!=null)if(typeof t==`number`||typeof t==`string`)e.push({type:`text`,value:String(t)});else if(Array.isArray(t))for(let n of t)Xt(e,n);else if(typeof t==`object`&&`type`in t)t.type===`root`?Xt(e,t.children):e.push(t);else throw Error("Expected node, nodes, or string, got `"+t+"`")}function Zt(e,t,n){if(typeof n==`string`){if(e.number&&n&&!Number.isNaN(Number(n)))return Number(n);if((e.boolean||e.overloadedBoolean)&&(n===``||ut(n)===ut(t)))return!0}return n}function Qt(e){let t=[];for(let[n,r]of Object.entries(e))t.push([n,r].join(`: `));return t.join(`; `)}function $t(e){let t=new Map;for(let n of e)t.set(n.toLowerCase(),n);return t}var en=`altGlyph.altGlyphDef.altGlyphItem.animateColor.animateMotion.animateTransform.clipPath.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feDistantLight.feDropShadow.feFlood.feFuncA.feFuncB.feFuncG.feFuncR.feGaussianBlur.feImage.feMerge.feMergeNode.feMorphology.feOffset.fePointLight.feSpecularLighting.feSpotLight.feTile.feTurbulence.foreignObject.glyphRef.linearGradient.radialGradient.solidColor.textArea.textPath`.split(`.`),tn=qt(zt,`div`),nn=qt(Bt,`g`,en);function rn(e){let t=String(e),n=[];return{toOffset:i,toPoint:r};function r(e){if(typeof e==`number`&&e>-1&&e<=t.length){let r=0;for(;;){let i=n[r];if(i===void 0){let e=an(t,n[r-1]);i=e===-1?t.length+1:e+1,n[r]=i}if(i>e)return{line:r+1,column:e-(r>0?n[r-1]:0)+1,offset:e};r++}}}function i(e){if(e&&typeof e.line==`number`&&typeof e.column==`number`&&!Number.isNaN(e.line)&&!Number.isNaN(e.column)){for(;n.length<e.line;){let e=n[n.length-1],r=an(t,e),i=r===-1?t.length+1:r+1;if(e===i)break;n.push(i)}let r=(e.line>1?n[e.line-2]:0)+e.column-1;if(r<n[e.line-1])return r}}}function an(e,t){let n=e.indexOf(`\r`,t),r=e.indexOf(`
@@ -111,14 +111,14 @@ ${e}</tr>
111
111
  `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${fb(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=pb(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+fb(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=pb(e);if(i===null)return fb(n);e=i;let a=`<img src="${e}" alt="${fb(n)}"`;return t&&(a+=` title="${fb(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:fb(e.text)}},Cb=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},wb=class e{options;renderer;textRenderer;constructor(e){this.options=e||ey,this.options.renderer=this.options.renderer||new Sb,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Cb}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},Tb=class{options;block;constructor(e){this.options=e||ey}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?xb.lex:xb.lexInline}provideParser(){return this.block?wb.parse:wb.parseInline}},Eb=new class{defaults=$v();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=wb;Renderer=Sb;TextRenderer=Cb;Lexer=xb;Tokenizer=bb;Hooks=Tb;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new Sb(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new bb(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Tb;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];Tb.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&Tb.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return xb.lex(e,t??this.defaults)}parser(e,t){return wb.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer():e?xb.lex:xb.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser():e?wb.parse:wb.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer():e?xb.lex:xb.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser():e?wb.parse:wb.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
112
112
  Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+fb(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Db(e,t){return Eb.parse(e,t)}Db.options=Db.setOptions=function(e){return Eb.setOptions(e),Db.defaults=Eb.defaults,ty(Db.defaults),Db},Db.getDefaults=$v,Db.defaults=ey,Db.use=function(...e){return Eb.use(...e),Db.defaults=Eb.defaults,ty(Db.defaults),Db},Db.walkTokens=function(e,t){return Eb.walkTokens(e,t)},Db.parseInline=Eb.parseInline,Db.Parser=wb,Db.parser=wb.parse,Db.Renderer=Sb,Db.TextRenderer=Cb,Db.Lexer=xb,Db.lexer=xb.lex,Db.Tokenizer=bb,Db.Hooks=Tb,Db.parse=Db,Db.options,Db.setOptions,Db.use,Db.walkTokens,Db.parseInline,wb.parse,xb.lex;var Ob=`modulepreload`,kb=function(e){return`/bloby/`+e},Ab={},Z=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=kb(t,n),t in Ab)return;Ab[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Ob,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},jb=300,Mb=`300px`,Nb=500;function Pb(e={}){let{immediate:t=!1,debounceDelay:n=jb,rootMargin:r=Mb,idleTimeout:i=Nb}=e,[a,o]=(0,j.useState)(!1),s=(0,j.useRef)(null),c=(0,j.useRef)(null),l=(0,j.useRef)(null),u=(0,j.useMemo)(()=>e=>{let t=Date.now();return window.setTimeout(()=>{e({didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))})},1)},[]),d=(0,j.useMemo)(()=>typeof window<`u`&&window.requestIdleCallback?(e,t)=>window.requestIdleCallback(e,t):u,[u]),f=(0,j.useMemo)(()=>typeof window<`u`&&window.cancelIdleCallback?e=>window.cancelIdleCallback(e):e=>{clearTimeout(e)},[]);return(0,j.useEffect)(()=>{if(t){o(!0);return}let e=s.current;if(!e)return;c.current&&=(clearTimeout(c.current),null),l.current&&=(f(l.current),null);let a=()=>{c.current&&=(clearTimeout(c.current),null),l.current&&=(f(l.current),null)},u=e=>{l.current=d(t=>{t.timeRemaining()>0||t.didTimeout?(o(!0),e.disconnect()):l.current=d(()=>{o(!0),e.disconnect()},{timeout:i/2})},{timeout:i})},p=e=>{a(),c.current=window.setTimeout(()=>{var t;let n=e.takeRecords();(n.length===0||(t=n.at(-1)?.isIntersecting)!=null&&t)&&u(e)},n)},m=(e,t)=>{e.isIntersecting?p(t):a()},h=new IntersectionObserver(e=>{for(let t of e)m(t,h)},{rootMargin:r,threshold:0});return h.observe(e),()=>{c.current&&clearTimeout(c.current),l.current&&f(l.current),h.disconnect()}},[t,n,r,i,f,d]),{shouldRender:a,containerRef:s}}var Fb=/\s/,Ib=/^\s+$/,Lb=new Set([`code`,`pre`,`svg`,`math`,`annotation`]),Rb=e=>typeof e==`object`&&!!e&&`type`in e&&e.type===`element`,zb=e=>e.some(e=>Rb(e)&&Lb.has(e.tagName)),Bb=e=>{let t=[],n=``,r=!1;for(let i of e){let e=Fb.test(i);e!==r&&n&&(t.push(n),n=``),n+=i,r=e}return n&&t.push(n),t},Vb=e=>{let t=[],n=``;for(let r of e)Fb.test(r)?n+=r:(n&&=(t.push(n),``),t.push(r));return n&&t.push(n),t},Hb=(e,t,n,r,i,a)=>{let o=`--sd-animation:sd-${t};--sd-duration:${i?0:n}ms;--sd-easing:${r}`;return a&&(o+=`;--sd-delay:${a}ms`),{type:`element`,tagName:`span`,properties:{"data-sd-animate":!0,style:o},children:[{type:`text`,value:e}]}},Ub=(e,t,n,r,i)=>{let a=t.at(-1);if(!(a&&`children`in a))return;if(zb(t))return Fe;let o=a,s=o.children.indexOf(e);if(s===-1)return;let c=e.value;if(!c.trim()){i.count+=c.length;return}let l=n.sep===`char`?Vb(c):Bb(c),u=r.prevContentLength,d=l.map(e=>{let t=i.count;if(i.count+=e.length,Ib.test(e))return{type:`text`,value:e};let r=u>0&&t<u,a=r?0:i.newIndex++*n.stagger;return Hb(e,n.animation,n.duration,n.easing,r,a)});return o.children.splice(s,1,...d),s+d.length},Wb=0;function Gb(e){let t={animation:e?.animation??`fadeIn`,duration:e?.duration??150,easing:e?.easing??`ease`,sep:e?.sep??`word`,stagger:e?.stagger??40},n={prevContentLength:0,lastRenderCharCount:0},r=Wb++,i=()=>e=>{let r={count:0,newIndex:0};Ie(e,`text`,(e,i)=>Ub(e,i,t,n,r)),n.lastRenderCharCount=r.count,n.prevContentLength=0};return Object.defineProperty(i,`name`,{value:`rehypeAnimate$${r}`}),{name:`animate`,type:`animate`,rehypePlugin:i,setPrevContentLength(e){n.prevContentLength=e},getLastRenderCharCount(){let e=n.lastRenderCharCount;return n.lastRenderCharCount=0,e}}}Gb();var Kb=(0,j.createContext)(!1),qb=()=>(0,j.useContext)(Kb),Jb=(...e)=>Kh(Cm(e)),Yb=(e,t)=>{if(!e||!t)return t;let n=`${e}:`;return t.split(/\s+/).filter(Boolean).map(t=>t.startsWith(n)?t:`${e}:${t}`).join(` `)},Xb=e=>e?(...t)=>Yb(e,Kh(Cm(t))):Jb,Zb=(e,t,n)=>{let r=typeof t==`string`&&n.startsWith(`text/csv`)?``:``,i=typeof t==`string`?new Blob([r+t],{type:n}):t,a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=e,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(a)},Qb=(0,j.createContext)(Jb),Q=()=>(0,j.useContext)(Qb),$b=Jb(`block`,`before:content-[counter(line)]`,`before:inline-block`,`before:[counter-increment:line]`,`before:w-6`,`before:mr-4`,`before:text-[13px]`,`before:text-right`,`before:text-muted-foreground/50`,`before:font-mono`,`before:select-none`),ex=e=>{let t={};for(let n of e.split(`;`)){let e=n.indexOf(`:`);if(e>0){let r=n.slice(0,e).trim(),i=n.slice(e+1).trim();r&&i&&(t[r]=i)}}return t},tx=(0,j.memo)(({children:e,result:t,language:n,className:r,startLine:i,lineNumbers:a=!0,...o})=>{let s=Q(),c=(0,j.useMemo)(()=>s($b),[s]),l=(0,j.useMemo)(()=>{let e={};return t.bg&&(e[`--sdm-bg`]=t.bg),t.fg&&(e[`--sdm-fg`]=t.fg),t.rootStyle&&Object.assign(e,ex(t.rootStyle)),e},[t.bg,t.fg,t.rootStyle]);return(0,M.jsx)(`div`,{className:s(r,`overflow-x-auto rounded-md border border-border bg-background p-4 text-sm`),"data-language":n,"data-streamdown":`code-block-body`,...o,children:(0,M.jsx)(`pre`,{className:s(r,`bg-[var(--sdm-bg,inherit]`,`dark:bg-[var(--shiki-dark-bg,var(--sdm-bg,inherit)]`),style:l,children:(0,M.jsx)(`code`,{className:a?s(`[counter-increment:line_0] [counter-reset:line]`):void 0,style:a&&i&&i>1?{counterReset:`line ${i-1}`}:void 0,children:t.tokens.map((e,t)=>(0,M.jsx)(`span`,{className:a?c:void 0,children:e.length===0||e.length===1&&e[0].content===``?`
113
113
  `:e.map((e,t)=>{let n={},r=!!e.bgColor;if(e.color&&(n[`--sdm-c`]=e.color),e.bgColor&&(n[`--sdm-tbg`]=e.bgColor),e.htmlStyle)for(let[t,i]of Object.entries(e.htmlStyle))t===`color`?n[`--sdm-c`]=i:t===`background-color`?(n[`--sdm-tbg`]=i,r=!0):n[t]=i;return(0,M.jsx)(`span`,{className:s(`text-[var(--sdm-c,inherit)]`,`dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]`,r&&`bg-[var(--sdm-tbg)]`,r&&`dark:bg-[var(--shiki-dark-bg,var(--sdm-tbg))]`),style:n,...e.htmlAttrs,children:e.content},t)})},t))})})})},(e,t)=>e.result===t.result&&e.language===t.language&&e.className===t.className&&e.startLine===t.startLine&&e.lineNumbers===t.lineNumbers),nx=({className:e,language:t,style:n,isIncomplete:r,...i})=>(0,M.jsx)(`div`,{className:Q()(`my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2`,e),"data-incomplete":r||void 0,"data-language":t,"data-streamdown":`code-block`,style:{contentVisibility:`auto`,containIntrinsicSize:`auto 200px`,...n},...i}),rx=(0,j.createContext)({code:``}),ix=()=>(0,j.useContext)(rx),ax=({language:e})=>{let t=Q();return(0,M.jsx)(`div`,{className:t(`flex h-8 items-center text-muted-foreground text-xs`),"data-language":e,"data-streamdown":`code-block-header`,children:(0,M.jsx)(`span`,{className:t(`ml-1 font-mono lowercase`),children:e})})},ox=e=>{let t=e.length;for(;t>0&&e[t-1]===`
114
- `;)t--;return e.slice(0,t)},sx=(0,j.lazy)(()=>Z(()=>import(`./highlighted-body-OFNGDK62-DGw6RxGl.js`).then(e=>({default:e.HighlightedCodeBlockBody})),__vite__mapDeps([0,1]))),cx=({code:e,language:t,className:n,children:r,isIncomplete:i=!1,startLine:a,lineNumbers:o,...s})=>{let c=Q(),l=(0,j.useMemo)(()=>ox(e),[e]),u=(0,j.useMemo)(()=>({bg:`transparent`,fg:`inherit`,tokens:l.split(`
114
+ `;)t--;return e.slice(0,t)},sx=(0,j.lazy)(()=>Z(()=>import(`./highlighted-body-OFNGDK62-z8OpDrVr.js`).then(e=>({default:e.HighlightedCodeBlockBody})),__vite__mapDeps([0,1]))),cx=({code:e,language:t,className:n,children:r,isIncomplete:i=!1,startLine:a,lineNumbers:o,...s})=>{let c=Q(),l=(0,j.useMemo)(()=>ox(e),[e]),u=(0,j.useMemo)(()=>({bg:`transparent`,fg:`inherit`,tokens:l.split(`
115
115
  `).map(e=>[{content:e,color:`inherit`,bgColor:`transparent`,htmlStyle:{},offset:0}])}),[l]);return(0,M.jsx)(rx.Provider,{value:{code:e},children:(0,M.jsxs)(nx,{isIncomplete:i,language:t,children:[(0,M.jsx)(ax,{language:t}),r?(0,M.jsx)(`div`,{className:c(`pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end`),children:(0,M.jsx)(`div`,{className:c(`pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur`),"data-streamdown":`code-block-actions`,children:r})}):null,(0,M.jsx)(j.Suspense,{fallback:(0,M.jsx)(tx,{className:n,language:t,lineNumbers:o,result:u,startLine:a,...s}),children:(0,M.jsx)(sx,{className:n,code:l,language:t,lineNumbers:o,raw:u,startLine:a,...s})})]})})},lx={CheckIcon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z`,fill:`currentColor`,fillRule:`evenodd`})}),CopyIcon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z`,fill:`currentColor`,fillRule:`evenodd`})}),DownloadIcon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M8.75 1V1.75V8.68934L10.7197 6.71967L11.25 6.18934L12.3107 7.25L11.7803 7.78033L8.70711 10.8536C8.31658 11.2441 7.68342 11.2441 7.29289 10.8536L4.21967 7.78033L3.68934 7.25L4.75 6.18934L5.28033 6.71967L7.25 8.68934V1.75V1H8.75ZM13.5 9.25V13.5H2.5V9.25V8.5H1V9.25V14C1 14.5523 1.44771 15 2 15H14C14.5523 15 15 14.5523 15 14V9.25V8.5H13.5V9.25Z`,fill:`currentColor`,fillRule:`evenodd`})}),ExternalLinkIcon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M13.5 10.25V13.25C13.5 13.3881 13.3881 13.5 13.25 13.5H2.75C2.61193 13.5 2.5 13.3881 2.5 13.25L2.5 2.75C2.5 2.61193 2.61193 2.5 2.75 2.5H5.75H6.5V1H5.75H2.75C1.7835 1 1 1.7835 1 2.75V13.25C1 14.2165 1.7835 15 2.75 15H13.25C14.2165 15 15 14.2165 15 13.25V10.25V9.5H13.5V10.25ZM9 1H9.75H14.2495C14.6637 1 14.9995 1.33579 14.9995 1.75V6.25V7H13.4995V6.25V3.56066L8.53033 8.52978L8 9.06011L6.93934 7.99945L7.46967 7.46912L12.4388 2.5H9.75H9V1Z`,fill:`currentColor`,fillRule:`evenodd`})}),Loader2Icon:e=>(0,M.jsxs)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:[(0,M.jsx)(`path`,{d:`M8 0V4`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M8 16V12`,opacity:`0.5`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M3.29773 1.52783L5.64887 4.7639`,opacity:`0.9`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M12.7023 1.52783L10.3511 4.7639`,opacity:`0.1`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M12.7023 14.472L10.3511 11.236`,opacity:`0.4`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M3.29773 14.472L5.64887 11.236`,opacity:`0.6`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M15.6085 5.52783L11.8043 6.7639`,opacity:`0.2`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M0.391602 10.472L4.19583 9.23598`,opacity:`0.7`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M15.6085 10.4722L11.8043 9.2361`,opacity:`0.3`,stroke:`currentColor`,strokeWidth:`1.5`}),(0,M.jsx)(`path`,{d:`M0.391602 5.52783L4.19583 6.7639`,opacity:`0.8`,stroke:`currentColor`,strokeWidth:`1.5`})]}),Maximize2Icon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M1 5.25V6H2.5V5.25V2.5H5.25H6V1H5.25H2C1.44772 1 1 1.44772 1 2V5.25ZM5.25 14.9994H6V13.4994H5.25H2.5V10.7494V9.99939H1V10.7494V13.9994C1 14.5517 1.44772 14.9994 2 14.9994H5.25ZM15 10V10.75V14C15 14.5523 14.5523 15 14 15H10.75H10V13.5H10.75H13.5V10.75V10H15ZM10.75 1H10V2.5H10.75H13.5V5.25V6H15V5.25V2C15 1.44772 14.5523 1 14 1H10.75Z`,fill:`currentColor`,fillRule:`evenodd`})}),RotateCcwIcon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M13.5 8C13.5 4.96643 11.0257 2.5 7.96452 2.5C5.42843 2.5 3.29365 4.19393 2.63724 6.5H5.25H6V8H5.25H0.75C0.335787 8 0 7.66421 0 7.25V2.75V2H1.5V2.75V5.23347C2.57851 2.74164 5.06835 1 7.96452 1C11.8461 1 15 4.13001 15 8C15 11.87 11.8461 15 7.96452 15C5.62368 15 3.54872 13.8617 2.27046 12.1122L1.828 11.5066L3.03915 10.6217L3.48161 11.2273C4.48831 12.6051 6.12055 13.5 7.96452 13.5C11.0257 13.5 13.5 11.0336 13.5 8Z`,fill:`currentColor`,fillRule:`evenodd`})}),XIcon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M12.4697 13.5303L13 14.0607L14.0607 13L13.5303 12.4697L9.06065 7.99999L13.5303 3.53032L14.0607 2.99999L13 1.93933L12.4697 2.46966L7.99999 6.93933L3.53032 2.46966L2.99999 1.93933L1.93933 2.99999L2.46966 3.53032L6.93933 7.99999L2.46966 12.4697L1.93933 13L2.99999 14.0607L3.53032 13.5303L7.99999 9.06065L12.4697 13.5303Z`,fill:`currentColor`,fillRule:`evenodd`})}),ZoomInIcon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0ZM4.125 5.875H4.75H5.875V4.75V4.125H7.125V4.75V5.875H8.25H8.875V7.125H8.25H7.125V8.25V8.875H5.875V8.25V7.125H4.75H4.125V5.875Z`,fill:`currentColor`,fillRule:`evenodd`})}),ZoomOutIcon:e=>(0,M.jsx)(`svg`,{color:`currentColor`,height:16,strokeLinejoin:`round`,viewBox:`0 0 16 16`,width:16,...e,children:(0,M.jsx)(`path`,{clipRule:`evenodd`,d:`M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0ZM4.125 5.875H4.75H8.25H8.875V7.125H8.25H4.75H4.125V5.875Z`,fill:`currentColor`,fillRule:`evenodd`})})},ux=(0,j.createContext)(lx),dx=(e,t)=>{if(e===t)return!0;if(!(e&&t))return e===t;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length?n.every(n=>e[n]===t[n]):!1},fx=({icons:e,children:t})=>{let n=(0,j.useRef)(e),r=(0,j.useRef)(e?{...lx,...e}:lx);dx(n.current,e)||(n.current=e,r.current=e?{...lx,...e}:lx);let i=r.current;return(0,M.jsx)(ux.Provider,{value:i,children:t})},px=()=>(0,j.useContext)(ux),mx={copyCode:`Copy Code`,downloadFile:`Download file`,downloadDiagram:`Download diagram`,downloadDiagramAsSvg:`Download diagram as SVG`,downloadDiagramAsPng:`Download diagram as PNG`,downloadDiagramAsMmd:`Download diagram as MMD`,viewFullscreen:`View fullscreen`,exitFullscreen:`Exit fullscreen`,mermaidFormatSvg:`SVG`,mermaidFormatPng:`PNG`,mermaidFormatMmd:`MMD`,copyTable:`Copy table`,copyTableAsMarkdown:`Copy table as Markdown`,copyTableAsCsv:`Copy table as CSV`,copyTableAsTsv:`Copy table as TSV`,downloadTable:`Download table`,downloadTableAsCsv:`Download table as CSV`,downloadTableAsMarkdown:`Download table as Markdown`,tableFormatMarkdown:`Markdown`,tableFormatCsv:`CSV`,tableFormatTsv:`TSV`,imageNotAvailable:`Image not available`,downloadImage:`Download image`,openExternalLink:`Open external link?`,externalLinkWarning:`You're about to visit an external website.`,close:`Close`,copyLink:`Copy link`,copied:`Copied`,openLink:`Open link`},hx=(0,j.createContext)(mx),gx=()=>(0,j.useContext)(hx),_x=({onCopy:e,onError:t,timeout:n=2e3,children:r,className:i,code:a,...o})=>{let s=Q(),[c,l]=(0,j.useState)(!1),u=(0,j.useRef)(0),{code:d}=ix(),{isAnimating:f}=(0,j.useContext)(CC),p=gx(),m=a??d,h=async()=>{var r;if(typeof window>`u`||!((r=navigator==null?void 0:navigator.clipboard)!=null&&r.writeText)){t?.(Error(`Clipboard API not available`));return}try{c||(await navigator.clipboard.writeText(m),l(!0),e?.(),u.current=window.setTimeout(()=>l(!1),n))}catch(e){t?.(e)}};(0,j.useEffect)(()=>()=>{window.clearTimeout(u.current)},[]);let g=px(),_=c?g.CheckIcon:g.CopyIcon;return(0,M.jsx)(`button`,{className:s(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,i),"data-streamdown":`code-block-copy-button`,disabled:f,onClick:h,title:p.copyCode,type:`button`,...o,children:r??(0,M.jsx)(_,{size:14})})},vx={"1c":`1c`,"1c-query":`1cq`,abap:`abap`,"actionscript-3":`as`,ada:`ada`,adoc:`adoc`,"angular-html":`html`,"angular-ts":`ts`,apache:`conf`,apex:`cls`,apl:`apl`,applescript:`applescript`,ara:`ara`,asciidoc:`adoc`,asm:`asm`,astro:`astro`,awk:`awk`,ballerina:`bal`,bash:`sh`,bat:`bat`,batch:`bat`,be:`be`,beancount:`beancount`,berry:`berry`,bibtex:`bib`,bicep:`bicep`,blade:`blade.php`,bsl:`bsl`,c:`c`,"c#":`cs`,"c++":`cpp`,cadence:`cdc`,cairo:`cairo`,cdc:`cdc`,clarity:`clar`,clj:`clj`,clojure:`clj`,"closure-templates":`soy`,cmake:`cmake`,cmd:`cmd`,cobol:`cob`,codeowners:`CODEOWNERS`,codeql:`ql`,coffee:`coffee`,coffeescript:`coffee`,"common-lisp":`lisp`,console:`sh`,coq:`v`,cpp:`cpp`,cql:`cql`,crystal:`cr`,cs:`cs`,csharp:`cs`,css:`css`,csv:`csv`,cue:`cue`,cypher:`cql`,d:`d`,dart:`dart`,dax:`dax`,desktop:`desktop`,diff:`diff`,docker:`dockerfile`,dockerfile:`dockerfile`,dotenv:`env`,"dream-maker":`dm`,edge:`edge`,elisp:`el`,elixir:`ex`,elm:`elm`,"emacs-lisp":`el`,erb:`erb`,erl:`erl`,erlang:`erl`,f:`f`,"f#":`fs`,f03:`f03`,f08:`f08`,f18:`f18`,f77:`f77`,f90:`f90`,f95:`f95`,fennel:`fnl`,fish:`fish`,fluent:`ftl`,for:`for`,"fortran-fixed-form":`f`,"fortran-free-form":`f90`,fs:`fs`,fsharp:`fs`,fsl:`fsl`,ftl:`ftl`,gdresource:`tres`,gdscript:`gd`,gdshader:`gdshader`,genie:`gs`,gherkin:`feature`,"git-commit":`gitcommit`,"git-rebase":`gitrebase`,gjs:`js`,gleam:`gleam`,"glimmer-js":`js`,"glimmer-ts":`ts`,glsl:`glsl`,gnuplot:`plt`,go:`go`,gql:`gql`,graphql:`graphql`,groovy:`groovy`,gts:`gts`,hack:`hack`,haml:`haml`,handlebars:`hbs`,haskell:`hs`,haxe:`hx`,hbs:`hbs`,hcl:`hcl`,hjson:`hjson`,hlsl:`hlsl`,hs:`hs`,html:`html`,"html-derivative":`html`,http:`http`,hxml:`hxml`,hy:`hy`,imba:`imba`,ini:`ini`,jade:`jade`,java:`java`,javascript:`js`,jinja:`jinja`,jison:`jison`,jl:`jl`,js:`js`,json:`json`,json5:`json5`,jsonc:`jsonc`,jsonl:`jsonl`,jsonnet:`jsonnet`,jssm:`jssm`,jsx:`jsx`,julia:`jl`,kotlin:`kt`,kql:`kql`,kt:`kt`,kts:`kts`,kusto:`kql`,latex:`tex`,lean:`lean`,lean4:`lean`,less:`less`,liquid:`liquid`,lisp:`lisp`,lit:`lit`,llvm:`ll`,log:`log`,logo:`logo`,lua:`lua`,luau:`luau`,make:`mak`,makefile:`mak`,markdown:`md`,marko:`marko`,matlab:`m`,md:`md`,mdc:`mdc`,mdx:`mdx`,mediawiki:`wiki`,mermaid:`mmd`,mips:`s`,mipsasm:`s`,mmd:`mmd`,mojo:`mojo`,move:`move`,nar:`nar`,narrat:`narrat`,nextflow:`nf`,nf:`nf`,nginx:`conf`,nim:`nim`,nix:`nix`,nu:`nu`,nushell:`nu`,objc:`m`,"objective-c":`m`,"objective-cpp":`mm`,ocaml:`ml`,pascal:`pas`,perl:`pl`,perl6:`p6`,php:`php`,plsql:`pls`,po:`po`,polar:`polar`,postcss:`pcss`,pot:`pot`,potx:`potx`,powerquery:`pq`,powershell:`ps1`,prisma:`prisma`,prolog:`pl`,properties:`properties`,proto:`proto`,protobuf:`proto`,ps:`ps`,ps1:`ps1`,pug:`pug`,puppet:`pp`,purescript:`purs`,py:`py`,python:`py`,ql:`ql`,qml:`qml`,qmldir:`qmldir`,qss:`qss`,r:`r`,racket:`rkt`,raku:`raku`,razor:`cshtml`,rb:`rb`,reg:`reg`,regex:`regex`,regexp:`regexp`,rel:`rel`,riscv:`s`,rs:`rs`,rst:`rst`,ruby:`rb`,rust:`rs`,sas:`sas`,sass:`sass`,scala:`scala`,scheme:`scm`,scss:`scss`,sdbl:`sdbl`,sh:`sh`,shader:`shader`,shaderlab:`shader`,shell:`sh`,shellscript:`sh`,shellsession:`sh`,smalltalk:`st`,solidity:`sol`,soy:`soy`,sparql:`rq`,spl:`spl`,splunk:`spl`,sql:`sql`,"ssh-config":`config`,stata:`do`,styl:`styl`,stylus:`styl`,svelte:`svelte`,swift:`swift`,"system-verilog":`sv`,systemd:`service`,talon:`talon`,talonscript:`talon`,tasl:`tasl`,tcl:`tcl`,templ:`templ`,terraform:`tf`,tex:`tex`,tf:`tf`,tfvars:`tfvars`,toml:`toml`,ts:`ts`,"ts-tags":`ts`,tsp:`tsp`,tsv:`tsv`,tsx:`tsx`,turtle:`ttl`,twig:`twig`,typ:`typ`,typescript:`ts`,typespec:`tsp`,typst:`typ`,v:`v`,vala:`vala`,vb:`vb`,verilog:`v`,vhdl:`vhdl`,vim:`vim`,viml:`vim`,vimscript:`vim`,vue:`vue`,"vue-html":`html`,"vue-vine":`vine`,vy:`vy`,vyper:`vy`,wasm:`wasm`,wenyan:`wy`,wgsl:`wgsl`,wiki:`wiki`,wikitext:`wiki`,wit:`wit`,wl:`wl`,wolfram:`wl`,xml:`xml`,xsl:`xsl`,yaml:`yaml`,yml:`yml`,zenscript:`zs`,zig:`zig`,zsh:`zsh`,文言:`wy`},yx=({onDownload:e,onError:t,language:n,children:r,className:i,code:a,...o})=>{let s=Q(),{code:c}=ix(),{isAnimating:l}=(0,j.useContext)(CC),u=gx(),d=px(),f=a??c,p=`file.${n&&n in vx?vx[n]:`txt`}`,m=()=>{try{Zb(p,f,`text/plain`),e?.()}catch(e){t?.(e)}};return(0,M.jsx)(`button`,{className:s(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,i),"data-streamdown":`code-block-download-button`,disabled:l,onClick:m,title:u.downloadFile,type:`button`,...o,children:r??(0,M.jsx)(d.DownloadIcon,{size:14})})},bx=()=>{let{Loader2Icon:e}=px(),t=Q();return(0,M.jsxs)(`div`,{className:t(`w-full divide-y divide-border overflow-hidden rounded-xl border border-border`),children:[(0,M.jsx)(`div`,{className:t(`h-[46px] w-full bg-muted/80`)}),(0,M.jsx)(`div`,{className:t(`flex w-full items-center justify-center p-4`),children:(0,M.jsx)(e,{className:t(`size-4 animate-spin`)})})]})},xx=/\.[^/.]+$/,Sx=({node:e,className:t,src:n,alt:r,onLoad:i,onError:a,...o})=>{let{DownloadIcon:s}=px(),c=Q(),l=(0,j.useRef)(null),[u,d]=(0,j.useState)(!1),[f,p]=(0,j.useState)(!1),m=gx(),h=o.width!=null||o.height!=null,g=(u||h)&&!f,_=f&&!h;(0,j.useEffect)(()=>{let e=l.current;if(e!=null&&e.complete){let t=e.naturalWidth>0;d(t),p(!t)}},[]);let v=(0,j.useCallback)(e=>{d(!0),p(!1),i?.(e)},[i]),y=(0,j.useCallback)(e=>{d(!1),p(!0),a?.(e)},[a]),b=async()=>{if(n)try{let e=await(await fetch(n)).blob(),t=new URL(n,window.location.origin).pathname.split(`/`).pop()||``,i=t.split(`.`).pop(),a=t.includes(`.`)&&i!==void 0&&i.length<=4,o=``;if(a)o=t;else{let n=e.type,i=`png`;n.includes(`jpeg`)||n.includes(`jpg`)?i=`jpg`:n.includes(`png`)?i=`png`:n.includes(`svg`)?i=`svg`:n.includes(`gif`)?i=`gif`:n.includes(`webp`)&&(i=`webp`),o=`${(r||t||`image`).replace(xx,``)}.${i}`}Zb(o,e,e.type)}catch{window.open(n,`_blank`)}};return n?(0,M.jsxs)(`div`,{className:c(`group relative my-4 inline-block`),"data-streamdown":`image-wrapper`,children:[(0,M.jsx)(`img`,{alt:r,className:c(`max-w-full rounded-lg`,_&&`hidden`,t),"data-streamdown":`image`,onError:y,onLoad:v,ref:l,src:n,...o}),_&&(0,M.jsx)(`span`,{className:c(`text-muted-foreground text-xs italic`),"data-streamdown":`image-fallback`,children:m.imageNotAvailable}),(0,M.jsx)(`div`,{className:c(`pointer-events-none absolute inset-0 hidden rounded-lg bg-black/10 group-hover:block`)}),g&&(0,M.jsx)(`button`,{className:c(`absolute right-2 bottom-2 flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border bg-background/90 shadow-sm backdrop-blur-sm transition-all duration-200 hover:bg-background`,`opacity-0 group-hover:opacity-100`),onClick:b,title:m.downloadImage,type:`button`,children:(0,M.jsx)(s,{size:14})})]}):null},Cx=0,wx=()=>{Cx+=1,Cx===1&&(document.body.style.overflow=`hidden`)},Tx=()=>{Cx=Math.max(0,Cx-1),Cx===0&&(document.body.style.overflow=``)},Ex=({url:e,isOpen:t,onClose:n,onConfirm:r})=>{let{CheckIcon:i,CopyIcon:a,ExternalLinkIcon:o,XIcon:s}=px(),c=Q(),[l,u]=(0,j.useState)(!1),d=gx(),f=(0,j.useCallback)(async()=>{try{await navigator.clipboard.writeText(e),u(!0),setTimeout(()=>u(!1),2e3)}catch{}},[e]),p=(0,j.useCallback)(()=>{r(),n()},[r,n]);return(0,j.useEffect)(()=>{if(t){wx();let e=e=>{e.key===`Escape`&&n()};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e),Tx()}}},[t,n]),t?(0,M.jsx)(`div`,{className:c(`fixed inset-0 z-50 flex items-center justify-center bg-background/50 backdrop-blur-sm`),"data-streamdown":`link-safety-modal`,onClick:n,onKeyDown:e=>{e.key===`Escape`&&n()},role:`button`,tabIndex:0,children:(0,M.jsxs)(`div`,{className:c(`relative mx-4 flex w-full max-w-md flex-col gap-4 rounded-xl border bg-background p-6 shadow-lg`),onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),role:`presentation`,children:[(0,M.jsx)(`button`,{className:c(`absolute top-4 right-4 rounded-md p-1 text-muted-foreground transition-all hover:bg-muted hover:text-foreground`),onClick:n,title:d.close,type:`button`,children:(0,M.jsx)(s,{size:16})}),(0,M.jsxs)(`div`,{className:c(`flex flex-col gap-2`),children:[(0,M.jsxs)(`div`,{className:c(`flex items-center gap-2 font-semibold text-lg`),children:[(0,M.jsx)(o,{size:20}),(0,M.jsx)(`span`,{children:d.openExternalLink})]}),(0,M.jsx)(`p`,{className:c(`text-muted-foreground text-sm`),children:d.externalLinkWarning})]}),(0,M.jsx)(`div`,{className:c(`break-all rounded-md bg-muted p-3 font-mono text-sm`,e.length>100&&`max-h-32 overflow-y-auto`),children:e}),(0,M.jsxs)(`div`,{className:c(`flex gap-2`),children:[(0,M.jsx)(`button`,{className:c(`flex flex-1 items-center justify-center gap-2 rounded-md border bg-background px-4 py-2 font-medium text-sm transition-all hover:bg-muted`),onClick:f,type:`button`,children:l?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(i,{size:14}),(0,M.jsx)(`span`,{children:d.copied})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(a,{size:14}),(0,M.jsx)(`span`,{children:d.copyLink})]})}),(0,M.jsxs)(`button`,{className:c(`flex flex-1 items-center justify-center gap-2 rounded-md bg-primary px-4 py-2 font-medium text-primary-foreground text-sm transition-all hover:bg-primary/90`),onClick:p,type:`button`,children:[(0,M.jsx)(o,{size:14}),(0,M.jsx)(`span`,{children:d.openLink})]})]})]})}):null},Dx=(0,j.createContext)(null),Ox=()=>(0,j.useContext)(Dx),kx=()=>Ox()?.code??null,Ax=()=>Ox()?.mermaid??null,jx=e=>{var t;let n=Ox();return n!=null&&n.renderers&&e&&(t=n.renderers.find(t=>Array.isArray(t.language)?t.language.includes(e):t.language===e))!=null?t:null},Mx=(e,t)=>new Promise((t,n)=>{let r=`data:image/svg+xml;base64,`+btoa(unescape(encodeURIComponent(e))),i=new Image;i.crossOrigin=`anonymous`,i.onload=()=>{let e=document.createElement(`canvas`),r=i.width*5,a=i.height*5;e.width=r,e.height=a;let o=e.getContext(`2d`);if(!o){n(Error(`Failed to create 2D canvas context for PNG export`));return}o.drawImage(i,0,0,r,a),e.toBlob(e=>{if(!e){n(Error(`Failed to create PNG blob`));return}t(e)},`image/png`)},i.onerror=()=>n(Error(`Failed to load SVG image`)),i.src=r}),Nx=({chart:e,children:t,className:n,onDownload:r,config:i,onError:a})=>{let o=Q(),[s,c]=(0,j.useState)(!1),l=(0,j.useRef)(null),{isAnimating:u}=(0,j.useContext)(CC),d=px(),f=Ax(),p=gx(),m=async t=>{try{if(t===`mmd`){Zb(`diagram.mmd`,e,`text/plain`),c(!1),r?.(t);return}if(!f){a?.(Error(`Mermaid plugin not available`));return}let n=f.getMermaid(i),o=e.split(``).reduce((e,t)=>(e<<5)-e+t.charCodeAt(0)|0,0),s=`mermaid-${Math.abs(o)}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,{svg:l}=await n.render(s,e);if(!l){a?.(Error(`SVG not found. Please wait for the diagram to render.`));return}if(t===`svg`){Zb(`diagram.svg`,l,`image/svg+xml`),c(!1),r?.(t);return}if(t===`png`){Zb(`diagram.png`,await Mx(l),`image/png`),r?.(t),c(!1);return}}catch(e){a?.(e)}};return(0,j.useEffect)(()=>{let e=e=>{let t=e.composedPath();l.current&&!t.includes(l.current)&&c(!1)};return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[]),(0,M.jsxs)(`div`,{className:o(`relative`),ref:l,children:[(0,M.jsx)(`button`,{className:o(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,n),disabled:u,onClick:()=>c(!s),title:p.downloadDiagram,type:`button`,children:t??(0,M.jsx)(d.DownloadIcon,{size:14})}),s?(0,M.jsxs)(`div`,{className:o(`absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg`),children:[(0,M.jsx)(`button`,{className:o(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`svg`),title:p.downloadDiagramAsSvg,type:`button`,children:p.mermaidFormatSvg}),(0,M.jsx)(`button`,{className:o(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`png`),title:p.downloadDiagramAsPng,type:`button`,children:p.mermaidFormatPng}),(0,M.jsx)(`button`,{className:o(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`mmd`),title:p.downloadDiagramAsMmd,type:`button`,children:p.mermaidFormatMmd})]}):null]})},Px=({chart:e,config:t,onFullscreen:n,onExit:r,className:i,...a})=>{let{Maximize2Icon:o,XIcon:s}=px(),c=Q(),[l,u]=(0,j.useState)(!1),{isAnimating:d,controls:f}=(0,j.useContext)(CC),p=gx(),m=(()=>{if(typeof f==`boolean`)return f;let e=f.mermaid;return e===!1?!1:e===!0||e===void 0?!0:e.panZoom!==!1})(),h=()=>{u(!l)};return(0,j.useEffect)(()=>{if(l){wx();let e=e=>{e.key===`Escape`&&u(!1)};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e),Tx()}}},[l]),(0,j.useEffect)(()=>{l?n?.():r&&r()},[l,n,r]),(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{className:c(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,i),disabled:d,onClick:h,title:p.viewFullscreen,type:`button`,...a,children:(0,M.jsx)(o,{size:14})}),l?(0,Qv.createPortal)((0,M.jsxs)(`div`,{className:c(`fixed inset-0 z-50 flex items-center justify-center bg-background/95 backdrop-blur-sm`),onClick:h,onKeyDown:e=>{e.key===`Escape`&&h()},role:`button`,tabIndex:0,children:[(0,M.jsx)(`button`,{className:c(`absolute top-4 right-4 z-10 rounded-md p-2 text-muted-foreground transition-all hover:bg-muted hover:text-foreground`),onClick:h,title:p.exitFullscreen,type:`button`,children:(0,M.jsx)(s,{size:20})}),(0,M.jsx)(`div`,{className:c(`flex size-full items-center justify-center p-4`),onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),role:`presentation`,children:(0,M.jsx)(DC,{chart:e,className:c(`size-full [&_svg]:h-auto [&_svg]:w-auto`),config:t,fullscreen:!0,showControls:m})})]}),document.body):null]})},Fx=e=>{let t=[],n=[],r=e.querySelectorAll(`thead th`);for(let e of r)t.push(e.textContent?.trim()||``);let i=e.querySelectorAll(`tbody tr`);for(let e of i){let t=[],r=e.querySelectorAll(`td`);for(let e of r)t.push(e.textContent?.trim()||``);n.push(t)}return{headers:t,rows:n}},Ix=e=>{let{headers:t,rows:n}=e,r=e=>{let t=!1,n=!1;for(let r of e){if(r===`"`){t=!0,n=!0;break}(r===`,`||r===`
116
116
  `)&&(t=!0)}return t?n?`"${e.replace(/"/g,`""`)}"`:`"${e}"`:e},i=t.length>0?n.length+1:n.length,a=Array(i),o=0;t.length>0&&(a[o]=t.map(r).join(`,`),o+=1);for(let e of n)a[o]=e.map(r).join(`,`),o+=1;return a.join(`
117
117
  `)},Lx=e=>{let{headers:t,rows:n}=e,r=e=>{let t=!1;for(let n of e)if(n===` `||n===`
118
118
  `||n===`\r`){t=!0;break}if(!t)return e;let n=[];for(let t of e)t===` `?n.push(`\\t`):t===`
119
119
  `?n.push(`\\n`):t===`\r`?n.push(`\\r`):n.push(t);return n.join(``)},i=t.length>0?n.length+1:n.length,a=Array(i),o=0;t.length>0&&(a[o]=t.map(r).join(` `),o+=1);for(let e of n)a[o]=e.map(r).join(` `),o+=1;return a.join(`
120
120
  `)},Rx=e=>{let t=!1;for(let n of e)if(n===`\\`||n===`|`){t=!0;break}if(!t)return e;let n=[];for(let t of e)t===`\\`?n.push(`\\\\`):t===`|`?n.push(`\\|`):n.push(t);return n.join(``)},zx=e=>{let{headers:t,rows:n}=e;if(t.length===0)return``;let r=Array(n.length+2),i=0;r[i]=`| ${t.map(e=>Rx(e)).join(` | `)} |`,i+=1;let a=Array(t.length);for(let e=0;e<t.length;e+=1)a[e]=`---`;r[i]=`| ${a.join(` | `)} |`,i+=1;for(let e of n)if(e.length<t.length){let n=Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=r<e.length?Rx(e[r]):``;r[i]=`| ${n.join(` | `)} |`,i+=1}else r[i]=`| ${e.map(e=>Rx(e)).join(` | `)} |`,i+=1;return r.join(`
121
- `)},Bx=({children:e,className:t,onCopy:n,onError:r,timeout:i=2e3})=>{let a=Q(),[o,s]=(0,j.useState)(!1),[c,l]=(0,j.useState)(!1),u=(0,j.useRef)(null),d=(0,j.useRef)(0),{isAnimating:f}=(0,j.useContext)(CC),p=gx(),m=async e=>{var t;if(typeof window>`u`||!((t=navigator==null?void 0:navigator.clipboard)!=null&&t.write)){r?.(Error(`Clipboard API not available`));return}try{let t=(u.current?.closest(`[data-streamdown="table-wrapper"]`))?.querySelector(`table`);if(!t){r?.(Error(`Table not found`));return}let a=Fx(t),o=({csv:Ix,tsv:Lx,md:zx}[e]||zx)(a),c=new ClipboardItem({"text/plain":new Blob([o],{type:`text/plain`}),"text/html":new Blob([t.outerHTML],{type:`text/html`})});await navigator.clipboard.write([c]),l(!0),s(!1),n?.(e),d.current=window.setTimeout(()=>l(!1),i)}catch(e){r?.(e)}};(0,j.useEffect)(()=>{let e=e=>{let t=e.composedPath();u.current&&!t.includes(u.current)&&s(!1)};return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e),window.clearTimeout(d.current)}},[]);let h=px(),g=c?h.CheckIcon:h.CopyIcon;return(0,M.jsxs)(`div`,{className:a(`relative`),ref:u,children:[(0,M.jsx)(`button`,{className:a(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,t),disabled:f,onClick:()=>s(!o),title:p.copyTable,type:`button`,children:e??(0,M.jsx)(g,{height:14,width:14})}),o?(0,M.jsxs)(`div`,{className:a(`absolute top-full right-0 z-20 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg`),children:[(0,M.jsx)(`button`,{className:a(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`md`),title:p.copyTableAsMarkdown,type:`button`,children:p.tableFormatMarkdown}),(0,M.jsx)(`button`,{className:a(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`csv`),title:p.copyTableAsCsv,type:`button`,children:p.tableFormatCsv}),(0,M.jsx)(`button`,{className:a(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`tsv`),title:p.copyTableAsTsv,type:`button`,children:p.tableFormatTsv})]}):null]})},Vx=({children:e,className:t,onDownload:n,onError:r})=>{let i=Q(),[a,o]=(0,j.useState)(!1),s=(0,j.useRef)(null),{isAnimating:c}=(0,j.useContext)(CC),l=gx(),u=px(),d=e=>{try{let t=(s.current?.closest(`[data-streamdown="table-wrapper"]`))?.querySelector(`table`);if(!t){r?.(Error(`Table not found`));return}let i=Fx(t),a=e===`csv`?Ix(i):zx(i);Zb(`table.${e===`csv`?`csv`:`md`}`,a,e===`csv`?`text/csv`:`text/markdown`),o(!1),n?.(e)}catch(e){r?.(e)}};return(0,j.useEffect)(()=>{let e=e=>{let t=e.composedPath();s.current&&!t.includes(s.current)&&o(!1)};return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[]),(0,M.jsxs)(`div`,{className:i(`relative`),ref:s,children:[(0,M.jsx)(`button`,{className:i(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,t),disabled:c,onClick:()=>o(!a),title:l.downloadTable,type:`button`,children:e??(0,M.jsx)(u.DownloadIcon,{size:14})}),a?(0,M.jsxs)(`div`,{className:i(`absolute top-full right-0 z-20 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg`),children:[(0,M.jsx)(`button`,{className:i(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>d(`csv`),title:l.downloadTableAsCsv,type:`button`,children:l.tableFormatCsv}),(0,M.jsx)(`button`,{className:i(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>d(`markdown`),title:l.downloadTableAsMarkdown,type:`button`,children:l.tableFormatMarkdown})]}):null]})},Hx=({children:e,className:t,showCopy:n=!0,showDownload:r=!0})=>{let{Maximize2Icon:i,XIcon:a}=px(),o=Q(),[s,c]=(0,j.useState)(!1),{isAnimating:l}=(0,j.useContext)(CC),u=gx(),d=()=>{c(!0)},f=()=>{c(!1)};return(0,j.useEffect)(()=>{if(s){wx();let e=e=>{e.key===`Escape`&&c(!1)};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e),Tx()}}},[s]),(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{className:o(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,t),disabled:l,onClick:d,title:u.viewFullscreen,type:`button`,children:(0,M.jsx)(i,{size:14})}),s?(0,Qv.createPortal)((0,M.jsx)(`div`,{"aria-label":u.viewFullscreen,"aria-modal":`true`,className:o(`fixed inset-0 z-50 flex flex-col bg-background`),"data-streamdown":`table-fullscreen`,onClick:f,onKeyDown:e=>{e.key===`Escape`&&f()},role:`dialog`,children:(0,M.jsxs)(`div`,{className:o(`flex h-full flex-col`),onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),role:`presentation`,children:[(0,M.jsxs)(`div`,{className:o(`flex items-center justify-end gap-1 p-4`),children:[n?(0,M.jsx)(Bx,{}):null,r?(0,M.jsx)(Vx,{}):null,(0,M.jsx)(`button`,{className:o(`rounded-md p-1 text-muted-foreground transition-all hover:bg-muted hover:text-foreground`),onClick:f,title:u.exitFullscreen,type:`button`,children:(0,M.jsx)(a,{size:20})})]}),(0,M.jsx)(`div`,{className:o(`flex-1 overflow-auto p-4 pt-0 [&_thead]:sticky [&_thead]:top-0 [&_thead]:z-10`),children:(0,M.jsx)(`table`,{className:o(`w-full border-collapse border border-border`),"data-streamdown":`table`,children:e})})]})}),document.body):null]})},Ux=({children:e,className:t,showControls:n,showCopy:r=!0,showDownload:i=!0,showFullscreen:a=!0,...o})=>{let s=Q(),c=n&&r,l=n&&i,u=n&&a,d=c||l||u;return(0,M.jsxs)(`div`,{className:s(`my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2`),"data-streamdown":`table-wrapper`,children:[d?(0,M.jsxs)(`div`,{className:s(`flex items-center justify-end gap-1`),children:[c?(0,M.jsx)(Bx,{}):null,l?(0,M.jsx)(Vx,{}):null,u?(0,M.jsx)(Hx,{showCopy:c,showDownload:l,children:e}):null]}):null,(0,M.jsx)(`div`,{className:s(`border-collapse overflow-x-auto overflow-y-auto rounded-md border border-border bg-background`),children:(0,M.jsx)(`table`,{className:s(`w-full divide-y divide-border`,t),"data-streamdown":`table`,...o,children:e})})]})},Wx=/startLine=(\d+)/,Gx=/\bnoLineNumbers\b/,Kx=(0,j.lazy)(()=>Z(()=>import(`./mermaid-GHXKKRXX-CmvL8Wz0.js`).then(e=>({default:e.Mermaid})),[])),qx=/language-([^\s]+)/;function Jx(e,t){if(!(e!=null&&e.position||t!=null&&t.position))return!0;if(!(e!=null&&e.position&&t!=null&&t.position))return!1;let n=e.position.start,r=t.position.start,i=e.position.end,a=t.position.end;return n?.line===r?.line&&n?.column===r?.column&&i?.line===a?.line&&i?.column===a?.column}function Yx(e,t){return e.className===t.className&&Jx(e.node,t.node)}var Xx=(e,t)=>typeof e==`boolean`?e:e[t]!==!1,Zx=(e,t)=>{if(typeof e==`boolean`)return e;let n=e.table;return n===!1?!1:n===!0||n===void 0?!0:n[t]!==!1},Qx=(e,t)=>{if(typeof e==`boolean`)return e;let n=e.code;return n===!1?!1:n===!0||n===void 0?!0:n[t]!==!1},$x=(e,t)=>{if(typeof e==`boolean`)return e;let n=e.mermaid;return n===!1?!1:n===!0||n===void 0?!0:n[t]!==!1},eS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`ol`,{className:Q()(`list-inside list-decimal whitespace-normal [li_&]:pl-6`,t),"data-streamdown":`ordered-list`,...r,children:e}),(e,t)=>Yx(e,t));eS.displayName=`MarkdownOl`;var tS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`li`,{className:Q()(`py-1 [&>p]:inline`,t),"data-streamdown":`list-item`,...r,children:e}),(e,t)=>e.className===t.className&&Jx(e.node,t.node));tS.displayName=`MarkdownLi`;var nS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`ul`,{className:Q()(`list-inside list-disc whitespace-normal [li_&]:pl-6`,t),"data-streamdown":`unordered-list`,...r,children:e}),(e,t)=>Yx(e,t));nS.displayName=`MarkdownUl`;var rS=(0,j.memo)(({className:e,node:t,...n})=>(0,M.jsx)(`hr`,{className:Q()(`my-6 border-border`,e),"data-streamdown":`horizontal-rule`,...n}),(e,t)=>Yx(e,t));rS.displayName=`MarkdownHr`;var iS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`span`,{className:Q()(`font-semibold`,t),"data-streamdown":`strong`,...r,children:e}),(e,t)=>Yx(e,t));iS.displayName=`MarkdownStrong`;var aS=(0,j.memo)(({children:e,className:t,href:n,node:r,...i})=>{let a=Q(),{linkSafety:o}=(0,j.useContext)(CC),[s,c]=(0,j.useState)(!1),l=n===`streamdown:incomplete-link`,u=(0,j.useCallback)(async e=>{if(!(!(o!=null&&o.enabled&&n)||l)){if(e.preventDefault(),o.onLinkCheck&&await o.onLinkCheck(n)){window.open(n,`_blank`,`noreferrer`);return}c(!0)}},[o,n,l]),d=(0,j.useCallback)(()=>{n&&window.open(n,`_blank`,`noreferrer`)},[n]),f=(0,j.useCallback)(()=>{c(!1)},[]),p={url:n??``,isOpen:s,onClose:f,onConfirm:d};return o!=null&&o.enabled&&n?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{className:a(`wrap-anywhere appearance-none text-left font-medium text-primary underline`,t),"data-incomplete":l,"data-streamdown":`link`,onClick:u,type:`button`,children:e}),o.renderModal?o.renderModal(p):(0,M.jsx)(Ex,{...p})]}):(0,M.jsx)(`a`,{className:a(`wrap-anywhere font-medium text-primary underline`,t),"data-incomplete":l,"data-streamdown":`link`,href:n,rel:`noreferrer`,target:`_blank`,...i,children:e})},(e,t)=>Yx(e,t)&&e.href===t.href);aS.displayName=`MarkdownA`;var oS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h1`,{className:Q()(`mt-6 mb-2 font-semibold text-3xl`,t),"data-streamdown":`heading-1`,...r,children:e}),(e,t)=>Yx(e,t));oS.displayName=`MarkdownH1`;var sS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h2`,{className:Q()(`mt-6 mb-2 font-semibold text-2xl`,t),"data-streamdown":`heading-2`,...r,children:e}),(e,t)=>Yx(e,t));sS.displayName=`MarkdownH2`;var cS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h3`,{className:Q()(`mt-6 mb-2 font-semibold text-xl`,t),"data-streamdown":`heading-3`,...r,children:e}),(e,t)=>Yx(e,t));cS.displayName=`MarkdownH3`;var lS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h4`,{className:Q()(`mt-6 mb-2 font-semibold text-lg`,t),"data-streamdown":`heading-4`,...r,children:e}),(e,t)=>Yx(e,t));lS.displayName=`MarkdownH4`;var uS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h5`,{className:Q()(`mt-6 mb-2 font-semibold text-base`,t),"data-streamdown":`heading-5`,...r,children:e}),(e,t)=>Yx(e,t));uS.displayName=`MarkdownH5`;var dS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h6`,{className:Q()(`mt-6 mb-2 font-semibold text-sm`,t),"data-streamdown":`heading-6`,...r,children:e}),(e,t)=>Yx(e,t));dS.displayName=`MarkdownH6`;var fS=(0,j.memo)(({children:e,className:t,node:n,...r})=>{let{controls:i}=(0,j.useContext)(CC);return(0,M.jsx)(Ux,{className:t,showControls:Xx(i,`table`),showCopy:Zx(i,`copy`),showDownload:Zx(i,`download`),showFullscreen:Zx(i,`fullscreen`),...r,children:e})},(e,t)=>Yx(e,t));fS.displayName=`MarkdownTable`;var pS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`thead`,{className:Q()(`bg-muted/80`,t),"data-streamdown":`table-header`,...r,children:e}),(e,t)=>Yx(e,t));pS.displayName=`MarkdownThead`;var mS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`tbody`,{className:Q()(`divide-y divide-border`,t),"data-streamdown":`table-body`,...r,children:e}),(e,t)=>Yx(e,t));mS.displayName=`MarkdownTbody`;var hS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`tr`,{className:Q()(`border-border`,t),"data-streamdown":`table-row`,...r,children:e}),(e,t)=>Yx(e,t));hS.displayName=`MarkdownTr`;var gS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`th`,{className:Q()(`whitespace-nowrap px-4 py-2 text-left font-semibold text-sm`,t),"data-streamdown":`table-header-cell`,...r,children:e}),(e,t)=>Yx(e,t));gS.displayName=`MarkdownTh`;var _S=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`td`,{className:Q()(`px-4 py-2 text-sm`,t),"data-streamdown":`table-cell`,...r,children:e}),(e,t)=>Yx(e,t));_S.displayName=`MarkdownTd`;var vS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`blockquote`,{className:Q()(`my-4 border-muted-foreground/30 border-l-4 pl-4 text-muted-foreground italic`,t),"data-streamdown":`blockquote`,...r,children:e}),(e,t)=>Yx(e,t));vS.displayName=`MarkdownBlockquote`;var yS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`sup`,{className:Q()(`text-sm`,t),"data-streamdown":`superscript`,...r,children:e}),(e,t)=>Yx(e,t));yS.displayName=`MarkdownSup`;var bS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`sub`,{className:Q()(`text-sm`,t),"data-streamdown":`subscript`,...r,children:e}),(e,t)=>Yx(e,t));bS.displayName=`MarkdownSub`;var xS=(0,j.memo)(({children:e,className:t,node:n,...r})=>{if(`data-footnotes`in r){let n=e=>{if(!(0,j.isValidElement)(e))return!1;let t=Array.isArray(e.props.children)?e.props.children:[e.props.children],n=!1,r=!1;for(let e of t)if(e){if(typeof e==`string`)e.trim()!==``&&(n=!0);else if((0,j.isValidElement)(e))if(e.props?.[`data-footnote-backref`]!==void 0)r=!0;else{let t=Array.isArray(e.props.children)?e.props.children:[e.props.children];for(let e of t){if(typeof e==`string`&&e.trim()!==``){n=!0;break}if((0,j.isValidElement)(e)&&e.props?.[`data-footnote-backref`]===void 0){n=!0;break}}}}return r&&!n},i=Array.isArray(e)?e.map(e=>{if(!(0,j.isValidElement)(e))return e;if(e.type===eS){let t=(Array.isArray(e.props.children)?e.props.children:[e.props.children]).filter(e=>!n(e));return t.length===0?null:{...e,props:{...e.props,children:t}}}return e}):e;return(Array.isArray(i)?i.some(e=>e!==null):i!==null)?(0,M.jsx)(`section`,{className:t,...r,children:i}):null}return(0,M.jsx)(`section`,{className:t,...r,children:e})},(e,t)=>Yx(e,t));xS.displayName=`MarkdownSection`;var SS=(0,j.memo)(({node:e,className:t,children:n,...r})=>{let i=Q(),a=!(`data-block`in r),{mermaid:o,controls:s,lineNumbers:c}=(0,j.useContext)(CC),l=Ax(),u=qb(),d=(t?.match(qx))?.at(1)??``,f=jx(d);if(a)return(0,M.jsx)(`code`,{className:i(`rounded bg-muted px-1.5 py-0.5 font-mono text-sm`,t),"data-streamdown":`inline-code`,...r,children:n});let p=e?.properties?.metastring,m=p?.match(Wx),h=m?Number.parseInt(m[1],10):void 0,g=h!==void 0&&h>=1?h:void 0,_=!(p&&Gx.test(p))&&c!==!1,v=``;if((0,j.isValidElement)(n)&&n.props&&typeof n.props==`object`&&`children`in n.props&&typeof n.props.children==`string`?v=n.props.children:typeof n==`string`&&(v=n),f){let e=f.component;return(0,M.jsx)(j.Suspense,{fallback:(0,M.jsx)(bx,{}),children:(0,M.jsx)(e,{code:v,isIncomplete:u,language:d,meta:p})})}if(d===`mermaid`&&l){let e=Xx(s,`mermaid`),n=$x(s,`download`),r=$x(s,`copy`),a=$x(s,`fullscreen`),c=$x(s,`panZoom`),l=e&&(n||r||a);return(0,M.jsx)(j.Suspense,{fallback:(0,M.jsx)(bx,{}),children:(0,M.jsxs)(`div`,{className:i(`group relative my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2`,t),"data-streamdown":`mermaid-block`,children:[(0,M.jsx)(`div`,{className:i(`flex h-8 items-center text-muted-foreground text-xs`),children:(0,M.jsx)(`span`,{className:i(`ml-1 font-mono lowercase`),children:`mermaid`})}),l?(0,M.jsx)(`div`,{className:i(`pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end`),children:(0,M.jsxs)(`div`,{className:i(`pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur`),"data-streamdown":`mermaid-block-actions`,children:[n?(0,M.jsx)(Nx,{chart:v,config:o?.config}):null,r?(0,M.jsx)(_x,{code:v}):null,a?(0,M.jsx)(Px,{chart:v,config:o?.config}):null]})}):null,(0,M.jsx)(`div`,{className:i(`rounded-md border border-border bg-background`),children:(0,M.jsx)(Kx,{chart:v,config:o?.config,showControls:c})})]})})}let y=Xx(s,`code`),b=Qx(s,`download`),x=Qx(s,`copy`);return(0,M.jsx)(cx,{className:t,code:v,isIncomplete:u,language:d,lineNumbers:_,startLine:g,children:y?(0,M.jsxs)(M.Fragment,{children:[b?(0,M.jsx)(yx,{code:v,language:d}):null,x?(0,M.jsx)(_x,{}):null]}):null})},(e,t)=>e.className===t.className&&Jx(e.node,t.node));SS.displayName=`MarkdownCode`;var CS=(0,j.memo)(Sx,(e,t)=>e.className===t.className&&Jx(e.node,t.node));CS.displayName=`MarkdownImg`;var wS=(0,j.memo)(({children:e,node:t,...n})=>{let r=(Array.isArray(e)?e:[e]).filter(e=>e!=null&&e!==``);if(r.length===1&&(0,j.isValidElement)(r[0])){let t=r[0].props.node?.tagName;if(t===`img`||t===`code`&&`data-block`in r[0].props)return(0,M.jsx)(M.Fragment,{children:e})}return(0,M.jsx)(`p`,{...n,children:e})},(e,t)=>Yx(e,t));wS.displayName=`MarkdownParagraph`;var TS={ol:eS,li:tS,ul:nS,hr:rS,strong:iS,a:aS,h1:oS,h2:sS,h3:cS,h4:lS,h5:uS,h6:dS,table:fS,thead:pS,tbody:mS,tr:hS,th:gS,td:_S,blockquote:vS,code:SS,img:CS,pre:({children:e})=>(0,j.isValidElement)(e)?(0,j.cloneElement)(e,{"data-block":`true`}):e,sup:yS,sub:bS,p:wS,section:xS},ES=/[\u0590-\u08FF\uFB1D-\uFDFF\uFE70-\uFEFF]/,DS=/\p{L}/u;function OS(e){let t=e.replace(/^#{1,6}\s+/gm,``).replace(/(\*{1,3}|_{1,3})/g,``).replace(/`[^`]*`/g,``).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/^[\s>*\-+\d.]+/gm,``);for(let e of t){if(ES.test(e))return`rtl`;if(DS.test(e))return`ltr`}return`ltr`}var kS=/^[ \t]{0,3}(`{3,}|~{3,})/,AS=/^\|?[ \t]*:?-{1,}:?[ \t]*(\|[ \t]*:?-{1,}:?[ \t]*)*\|?$/,jS=e=>{let t=e.split(`
121
+ `)},Bx=({children:e,className:t,onCopy:n,onError:r,timeout:i=2e3})=>{let a=Q(),[o,s]=(0,j.useState)(!1),[c,l]=(0,j.useState)(!1),u=(0,j.useRef)(null),d=(0,j.useRef)(0),{isAnimating:f}=(0,j.useContext)(CC),p=gx(),m=async e=>{var t;if(typeof window>`u`||!((t=navigator==null?void 0:navigator.clipboard)!=null&&t.write)){r?.(Error(`Clipboard API not available`));return}try{let t=(u.current?.closest(`[data-streamdown="table-wrapper"]`))?.querySelector(`table`);if(!t){r?.(Error(`Table not found`));return}let a=Fx(t),o=({csv:Ix,tsv:Lx,md:zx}[e]||zx)(a),c=new ClipboardItem({"text/plain":new Blob([o],{type:`text/plain`}),"text/html":new Blob([t.outerHTML],{type:`text/html`})});await navigator.clipboard.write([c]),l(!0),s(!1),n?.(e),d.current=window.setTimeout(()=>l(!1),i)}catch(e){r?.(e)}};(0,j.useEffect)(()=>{let e=e=>{let t=e.composedPath();u.current&&!t.includes(u.current)&&s(!1)};return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e),window.clearTimeout(d.current)}},[]);let h=px(),g=c?h.CheckIcon:h.CopyIcon;return(0,M.jsxs)(`div`,{className:a(`relative`),ref:u,children:[(0,M.jsx)(`button`,{className:a(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,t),disabled:f,onClick:()=>s(!o),title:p.copyTable,type:`button`,children:e??(0,M.jsx)(g,{height:14,width:14})}),o?(0,M.jsxs)(`div`,{className:a(`absolute top-full right-0 z-20 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg`),children:[(0,M.jsx)(`button`,{className:a(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`md`),title:p.copyTableAsMarkdown,type:`button`,children:p.tableFormatMarkdown}),(0,M.jsx)(`button`,{className:a(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`csv`),title:p.copyTableAsCsv,type:`button`,children:p.tableFormatCsv}),(0,M.jsx)(`button`,{className:a(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>m(`tsv`),title:p.copyTableAsTsv,type:`button`,children:p.tableFormatTsv})]}):null]})},Vx=({children:e,className:t,onDownload:n,onError:r})=>{let i=Q(),[a,o]=(0,j.useState)(!1),s=(0,j.useRef)(null),{isAnimating:c}=(0,j.useContext)(CC),l=gx(),u=px(),d=e=>{try{let t=(s.current?.closest(`[data-streamdown="table-wrapper"]`))?.querySelector(`table`);if(!t){r?.(Error(`Table not found`));return}let i=Fx(t),a=e===`csv`?Ix(i):zx(i);Zb(`table.${e===`csv`?`csv`:`md`}`,a,e===`csv`?`text/csv`:`text/markdown`),o(!1),n?.(e)}catch(e){r?.(e)}};return(0,j.useEffect)(()=>{let e=e=>{let t=e.composedPath();s.current&&!t.includes(s.current)&&o(!1)};return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[]),(0,M.jsxs)(`div`,{className:i(`relative`),ref:s,children:[(0,M.jsx)(`button`,{className:i(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,t),disabled:c,onClick:()=>o(!a),title:l.downloadTable,type:`button`,children:e??(0,M.jsx)(u.DownloadIcon,{size:14})}),a?(0,M.jsxs)(`div`,{className:i(`absolute top-full right-0 z-20 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg`),children:[(0,M.jsx)(`button`,{className:i(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>d(`csv`),title:l.downloadTableAsCsv,type:`button`,children:l.tableFormatCsv}),(0,M.jsx)(`button`,{className:i(`w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40`),onClick:()=>d(`markdown`),title:l.downloadTableAsMarkdown,type:`button`,children:l.tableFormatMarkdown})]}):null]})},Hx=({children:e,className:t,showCopy:n=!0,showDownload:r=!0})=>{let{Maximize2Icon:i,XIcon:a}=px(),o=Q(),[s,c]=(0,j.useState)(!1),{isAnimating:l}=(0,j.useContext)(CC),u=gx(),d=()=>{c(!0)},f=()=>{c(!1)};return(0,j.useEffect)(()=>{if(s){wx();let e=e=>{e.key===`Escape`&&c(!1)};return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e),Tx()}}},[s]),(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{className:o(`cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,t),disabled:l,onClick:d,title:u.viewFullscreen,type:`button`,children:(0,M.jsx)(i,{size:14})}),s?(0,Qv.createPortal)((0,M.jsx)(`div`,{"aria-label":u.viewFullscreen,"aria-modal":`true`,className:o(`fixed inset-0 z-50 flex flex-col bg-background`),"data-streamdown":`table-fullscreen`,onClick:f,onKeyDown:e=>{e.key===`Escape`&&f()},role:`dialog`,children:(0,M.jsxs)(`div`,{className:o(`flex h-full flex-col`),onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),role:`presentation`,children:[(0,M.jsxs)(`div`,{className:o(`flex items-center justify-end gap-1 p-4`),children:[n?(0,M.jsx)(Bx,{}):null,r?(0,M.jsx)(Vx,{}):null,(0,M.jsx)(`button`,{className:o(`rounded-md p-1 text-muted-foreground transition-all hover:bg-muted hover:text-foreground`),onClick:f,title:u.exitFullscreen,type:`button`,children:(0,M.jsx)(a,{size:20})})]}),(0,M.jsx)(`div`,{className:o(`flex-1 overflow-auto p-4 pt-0 [&_thead]:sticky [&_thead]:top-0 [&_thead]:z-10`),children:(0,M.jsx)(`table`,{className:o(`w-full border-collapse border border-border`),"data-streamdown":`table`,children:e})})]})}),document.body):null]})},Ux=({children:e,className:t,showControls:n,showCopy:r=!0,showDownload:i=!0,showFullscreen:a=!0,...o})=>{let s=Q(),c=n&&r,l=n&&i,u=n&&a,d=c||l||u;return(0,M.jsxs)(`div`,{className:s(`my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2`),"data-streamdown":`table-wrapper`,children:[d?(0,M.jsxs)(`div`,{className:s(`flex items-center justify-end gap-1`),children:[c?(0,M.jsx)(Bx,{}):null,l?(0,M.jsx)(Vx,{}):null,u?(0,M.jsx)(Hx,{showCopy:c,showDownload:l,children:e}):null]}):null,(0,M.jsx)(`div`,{className:s(`border-collapse overflow-x-auto overflow-y-auto rounded-md border border-border bg-background`),children:(0,M.jsx)(`table`,{className:s(`w-full divide-y divide-border`,t),"data-streamdown":`table`,...o,children:e})})]})},Wx=/startLine=(\d+)/,Gx=/\bnoLineNumbers\b/,Kx=(0,j.lazy)(()=>Z(()=>import(`./mermaid-GHXKKRXX-DAQ7dBvr.js`).then(e=>({default:e.Mermaid})),[])),qx=/language-([^\s]+)/;function Jx(e,t){if(!(e!=null&&e.position||t!=null&&t.position))return!0;if(!(e!=null&&e.position&&t!=null&&t.position))return!1;let n=e.position.start,r=t.position.start,i=e.position.end,a=t.position.end;return n?.line===r?.line&&n?.column===r?.column&&i?.line===a?.line&&i?.column===a?.column}function Yx(e,t){return e.className===t.className&&Jx(e.node,t.node)}var Xx=(e,t)=>typeof e==`boolean`?e:e[t]!==!1,Zx=(e,t)=>{if(typeof e==`boolean`)return e;let n=e.table;return n===!1?!1:n===!0||n===void 0?!0:n[t]!==!1},Qx=(e,t)=>{if(typeof e==`boolean`)return e;let n=e.code;return n===!1?!1:n===!0||n===void 0?!0:n[t]!==!1},$x=(e,t)=>{if(typeof e==`boolean`)return e;let n=e.mermaid;return n===!1?!1:n===!0||n===void 0?!0:n[t]!==!1},eS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`ol`,{className:Q()(`list-inside list-decimal whitespace-normal [li_&]:pl-6`,t),"data-streamdown":`ordered-list`,...r,children:e}),(e,t)=>Yx(e,t));eS.displayName=`MarkdownOl`;var tS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`li`,{className:Q()(`py-1 [&>p]:inline`,t),"data-streamdown":`list-item`,...r,children:e}),(e,t)=>e.className===t.className&&Jx(e.node,t.node));tS.displayName=`MarkdownLi`;var nS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`ul`,{className:Q()(`list-inside list-disc whitespace-normal [li_&]:pl-6`,t),"data-streamdown":`unordered-list`,...r,children:e}),(e,t)=>Yx(e,t));nS.displayName=`MarkdownUl`;var rS=(0,j.memo)(({className:e,node:t,...n})=>(0,M.jsx)(`hr`,{className:Q()(`my-6 border-border`,e),"data-streamdown":`horizontal-rule`,...n}),(e,t)=>Yx(e,t));rS.displayName=`MarkdownHr`;var iS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`span`,{className:Q()(`font-semibold`,t),"data-streamdown":`strong`,...r,children:e}),(e,t)=>Yx(e,t));iS.displayName=`MarkdownStrong`;var aS=(0,j.memo)(({children:e,className:t,href:n,node:r,...i})=>{let a=Q(),{linkSafety:o}=(0,j.useContext)(CC),[s,c]=(0,j.useState)(!1),l=n===`streamdown:incomplete-link`,u=(0,j.useCallback)(async e=>{if(!(!(o!=null&&o.enabled&&n)||l)){if(e.preventDefault(),o.onLinkCheck&&await o.onLinkCheck(n)){window.open(n,`_blank`,`noreferrer`);return}c(!0)}},[o,n,l]),d=(0,j.useCallback)(()=>{n&&window.open(n,`_blank`,`noreferrer`)},[n]),f=(0,j.useCallback)(()=>{c(!1)},[]),p={url:n??``,isOpen:s,onClose:f,onConfirm:d};return o!=null&&o.enabled&&n?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{className:a(`wrap-anywhere appearance-none text-left font-medium text-primary underline`,t),"data-incomplete":l,"data-streamdown":`link`,onClick:u,type:`button`,children:e}),o.renderModal?o.renderModal(p):(0,M.jsx)(Ex,{...p})]}):(0,M.jsx)(`a`,{className:a(`wrap-anywhere font-medium text-primary underline`,t),"data-incomplete":l,"data-streamdown":`link`,href:n,rel:`noreferrer`,target:`_blank`,...i,children:e})},(e,t)=>Yx(e,t)&&e.href===t.href);aS.displayName=`MarkdownA`;var oS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h1`,{className:Q()(`mt-6 mb-2 font-semibold text-3xl`,t),"data-streamdown":`heading-1`,...r,children:e}),(e,t)=>Yx(e,t));oS.displayName=`MarkdownH1`;var sS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h2`,{className:Q()(`mt-6 mb-2 font-semibold text-2xl`,t),"data-streamdown":`heading-2`,...r,children:e}),(e,t)=>Yx(e,t));sS.displayName=`MarkdownH2`;var cS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h3`,{className:Q()(`mt-6 mb-2 font-semibold text-xl`,t),"data-streamdown":`heading-3`,...r,children:e}),(e,t)=>Yx(e,t));cS.displayName=`MarkdownH3`;var lS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h4`,{className:Q()(`mt-6 mb-2 font-semibold text-lg`,t),"data-streamdown":`heading-4`,...r,children:e}),(e,t)=>Yx(e,t));lS.displayName=`MarkdownH4`;var uS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h5`,{className:Q()(`mt-6 mb-2 font-semibold text-base`,t),"data-streamdown":`heading-5`,...r,children:e}),(e,t)=>Yx(e,t));uS.displayName=`MarkdownH5`;var dS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`h6`,{className:Q()(`mt-6 mb-2 font-semibold text-sm`,t),"data-streamdown":`heading-6`,...r,children:e}),(e,t)=>Yx(e,t));dS.displayName=`MarkdownH6`;var fS=(0,j.memo)(({children:e,className:t,node:n,...r})=>{let{controls:i}=(0,j.useContext)(CC);return(0,M.jsx)(Ux,{className:t,showControls:Xx(i,`table`),showCopy:Zx(i,`copy`),showDownload:Zx(i,`download`),showFullscreen:Zx(i,`fullscreen`),...r,children:e})},(e,t)=>Yx(e,t));fS.displayName=`MarkdownTable`;var pS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`thead`,{className:Q()(`bg-muted/80`,t),"data-streamdown":`table-header`,...r,children:e}),(e,t)=>Yx(e,t));pS.displayName=`MarkdownThead`;var mS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`tbody`,{className:Q()(`divide-y divide-border`,t),"data-streamdown":`table-body`,...r,children:e}),(e,t)=>Yx(e,t));mS.displayName=`MarkdownTbody`;var hS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`tr`,{className:Q()(`border-border`,t),"data-streamdown":`table-row`,...r,children:e}),(e,t)=>Yx(e,t));hS.displayName=`MarkdownTr`;var gS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`th`,{className:Q()(`whitespace-nowrap px-4 py-2 text-left font-semibold text-sm`,t),"data-streamdown":`table-header-cell`,...r,children:e}),(e,t)=>Yx(e,t));gS.displayName=`MarkdownTh`;var _S=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`td`,{className:Q()(`px-4 py-2 text-sm`,t),"data-streamdown":`table-cell`,...r,children:e}),(e,t)=>Yx(e,t));_S.displayName=`MarkdownTd`;var vS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`blockquote`,{className:Q()(`my-4 border-muted-foreground/30 border-l-4 pl-4 text-muted-foreground italic`,t),"data-streamdown":`blockquote`,...r,children:e}),(e,t)=>Yx(e,t));vS.displayName=`MarkdownBlockquote`;var yS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`sup`,{className:Q()(`text-sm`,t),"data-streamdown":`superscript`,...r,children:e}),(e,t)=>Yx(e,t));yS.displayName=`MarkdownSup`;var bS=(0,j.memo)(({children:e,className:t,node:n,...r})=>(0,M.jsx)(`sub`,{className:Q()(`text-sm`,t),"data-streamdown":`subscript`,...r,children:e}),(e,t)=>Yx(e,t));bS.displayName=`MarkdownSub`;var xS=(0,j.memo)(({children:e,className:t,node:n,...r})=>{if(`data-footnotes`in r){let n=e=>{if(!(0,j.isValidElement)(e))return!1;let t=Array.isArray(e.props.children)?e.props.children:[e.props.children],n=!1,r=!1;for(let e of t)if(e){if(typeof e==`string`)e.trim()!==``&&(n=!0);else if((0,j.isValidElement)(e))if(e.props?.[`data-footnote-backref`]!==void 0)r=!0;else{let t=Array.isArray(e.props.children)?e.props.children:[e.props.children];for(let e of t){if(typeof e==`string`&&e.trim()!==``){n=!0;break}if((0,j.isValidElement)(e)&&e.props?.[`data-footnote-backref`]===void 0){n=!0;break}}}}return r&&!n},i=Array.isArray(e)?e.map(e=>{if(!(0,j.isValidElement)(e))return e;if(e.type===eS){let t=(Array.isArray(e.props.children)?e.props.children:[e.props.children]).filter(e=>!n(e));return t.length===0?null:{...e,props:{...e.props,children:t}}}return e}):e;return(Array.isArray(i)?i.some(e=>e!==null):i!==null)?(0,M.jsx)(`section`,{className:t,...r,children:i}):null}return(0,M.jsx)(`section`,{className:t,...r,children:e})},(e,t)=>Yx(e,t));xS.displayName=`MarkdownSection`;var SS=(0,j.memo)(({node:e,className:t,children:n,...r})=>{let i=Q(),a=!(`data-block`in r),{mermaid:o,controls:s,lineNumbers:c}=(0,j.useContext)(CC),l=Ax(),u=qb(),d=(t?.match(qx))?.at(1)??``,f=jx(d);if(a)return(0,M.jsx)(`code`,{className:i(`rounded bg-muted px-1.5 py-0.5 font-mono text-sm`,t),"data-streamdown":`inline-code`,...r,children:n});let p=e?.properties?.metastring,m=p?.match(Wx),h=m?Number.parseInt(m[1],10):void 0,g=h!==void 0&&h>=1?h:void 0,_=!(p&&Gx.test(p))&&c!==!1,v=``;if((0,j.isValidElement)(n)&&n.props&&typeof n.props==`object`&&`children`in n.props&&typeof n.props.children==`string`?v=n.props.children:typeof n==`string`&&(v=n),f){let e=f.component;return(0,M.jsx)(j.Suspense,{fallback:(0,M.jsx)(bx,{}),children:(0,M.jsx)(e,{code:v,isIncomplete:u,language:d,meta:p})})}if(d===`mermaid`&&l){let e=Xx(s,`mermaid`),n=$x(s,`download`),r=$x(s,`copy`),a=$x(s,`fullscreen`),c=$x(s,`panZoom`),l=e&&(n||r||a);return(0,M.jsx)(j.Suspense,{fallback:(0,M.jsx)(bx,{}),children:(0,M.jsxs)(`div`,{className:i(`group relative my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2`,t),"data-streamdown":`mermaid-block`,children:[(0,M.jsx)(`div`,{className:i(`flex h-8 items-center text-muted-foreground text-xs`),children:(0,M.jsx)(`span`,{className:i(`ml-1 font-mono lowercase`),children:`mermaid`})}),l?(0,M.jsx)(`div`,{className:i(`pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end`),children:(0,M.jsxs)(`div`,{className:i(`pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur`),"data-streamdown":`mermaid-block-actions`,children:[n?(0,M.jsx)(Nx,{chart:v,config:o?.config}):null,r?(0,M.jsx)(_x,{code:v}):null,a?(0,M.jsx)(Px,{chart:v,config:o?.config}):null]})}):null,(0,M.jsx)(`div`,{className:i(`rounded-md border border-border bg-background`),children:(0,M.jsx)(Kx,{chart:v,config:o?.config,showControls:c})})]})})}let y=Xx(s,`code`),b=Qx(s,`download`),x=Qx(s,`copy`);return(0,M.jsx)(cx,{className:t,code:v,isIncomplete:u,language:d,lineNumbers:_,startLine:g,children:y?(0,M.jsxs)(M.Fragment,{children:[b?(0,M.jsx)(yx,{code:v,language:d}):null,x?(0,M.jsx)(_x,{}):null]}):null})},(e,t)=>e.className===t.className&&Jx(e.node,t.node));SS.displayName=`MarkdownCode`;var CS=(0,j.memo)(Sx,(e,t)=>e.className===t.className&&Jx(e.node,t.node));CS.displayName=`MarkdownImg`;var wS=(0,j.memo)(({children:e,node:t,...n})=>{let r=(Array.isArray(e)?e:[e]).filter(e=>e!=null&&e!==``);if(r.length===1&&(0,j.isValidElement)(r[0])){let t=r[0].props.node?.tagName;if(t===`img`||t===`code`&&`data-block`in r[0].props)return(0,M.jsx)(M.Fragment,{children:e})}return(0,M.jsx)(`p`,{...n,children:e})},(e,t)=>Yx(e,t));wS.displayName=`MarkdownParagraph`;var TS={ol:eS,li:tS,ul:nS,hr:rS,strong:iS,a:aS,h1:oS,h2:sS,h3:cS,h4:lS,h5:uS,h6:dS,table:fS,thead:pS,tbody:mS,tr:hS,th:gS,td:_S,blockquote:vS,code:SS,img:CS,pre:({children:e})=>(0,j.isValidElement)(e)?(0,j.cloneElement)(e,{"data-block":`true`}):e,sup:yS,sub:bS,p:wS,section:xS},ES=/[\u0590-\u08FF\uFB1D-\uFDFF\uFE70-\uFEFF]/,DS=/\p{L}/u;function OS(e){let t=e.replace(/^#{1,6}\s+/gm,``).replace(/(\*{1,3}|_{1,3})/g,``).replace(/`[^`]*`/g,``).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/^[\s>*\-+\d.]+/gm,``);for(let e of t){if(ES.test(e))return`rtl`;if(DS.test(e))return`ltr`}return`ltr`}var kS=/^[ \t]{0,3}(`{3,}|~{3,})/,AS=/^\|?[ \t]*:?-{1,}:?[ \t]*(\|[ \t]*:?-{1,}:?[ \t]*)*\|?$/,jS=e=>{let t=e.split(`
122
122
  `),n=null,r=0;for(let e of t){let t=kS.exec(e);if(n===null){if(t){let e=t[1];n=e[0],r=e.length}}else if(t){let e=t[1],i=e[0],a=e.length;i===n&&a>=r&&(n=null,r=0)}}return n!==null},MS=e=>{let t=e.split(`
123
123
  `);for(let e of t){let t=e.trim();if(t.length>0&&t.includes(`|`)&&AS.test(t))return!0}return!1},NS=()=>e=>{Re(e,`html`,(e,t,n)=>{!n||typeof t!=`number`||(n.children[t]={type:`text`,value:e.value})})},PS=[],FS={allowDangerousHtml:!0},IS=new WeakMap,LS=new class{constructor(){this.cache=new Map,this.keyCache=new WeakMap,this.maxSize=100}generateCacheKey(e){let t=this.keyCache.get(e);if(t)return t;let n=e.rehypePlugins,r=e.remarkPlugins,i=e.remarkRehypeOptions;if(!(n||r||i)){let t=`default`;return this.keyCache.set(e,t),t}let a=e=>{if(!e||e.length===0)return``;let t=``;for(let n=0;n<e.length;n+=1){let r=e[n];if(n>0&&(t+=`,`),Array.isArray(r)){let[e,n]=r;if(typeof e==`function`){let n=IS.get(e);n||(n=e.name,IS.set(e,n)),t+=n}else t+=String(e);t+=`:`,t+=JSON.stringify(n)}else if(typeof r==`function`){let e=IS.get(r);e||(e=r.name,IS.set(r,e)),t+=e}else t+=String(r)}return t},o=a(n),s=`${a(r)}::${o}::${i?JSON.stringify(i):``}`;return this.keyCache.set(e,s),s}get(e){let t=this.generateCacheKey(e),n=this.cache.get(t);return n&&(this.cache.delete(t),this.cache.set(t,n)),n}set(e,t){let n=this.generateCacheKey(e);if(this.cache.size>=this.maxSize){let e=this.cache.keys().next().value;e&&this.cache.delete(e)}this.cache.set(n,t)}clear(){this.cache.clear()}},RS=e=>{let t=zS(e),n=e.children||``;return KS(t.runSync(t.parse(n),n),e)},zS=e=>{let t=LS.get(e);if(t)return t;let n=VS(e);return LS.set(e,n),n},BS=e=>e.some(e=>Array.isArray(e)?e[0]===cs:e===cs),VS=e=>{let t=e.rehypePlugins||PS,n=e.remarkPlugins||PS,r=BS(t)?n:[...n,NS],i=e.remarkRehypeOptions?{...FS,...e.remarkRehypeOptions}:FS;return Hv().use(C_).use(r).use(mv,i).use(t)},HS=e=>e,US=(e,t,n,r)=>{n?e.children.splice(t,1):e.children[t]={type:`text`,value:r}},WS=(e,t)=>{for(let n in Rg)if(Object.hasOwn(Rg,n)&&Object.hasOwn(e.properties,n)){let r=e.properties[n],i=Rg[n];(i===null||i.includes(e.tagName))&&(e.properties[n]=t(String(r||``),n,e)??void 0)}},GS=(e,t,n,r,i,a)=>{let o=!1;return r?o=!r.includes(e.tagName):i&&(o=i.includes(e.tagName)),!o&&a&&typeof t==`number`&&(o=!a(e,t,n)),o},KS=(e,t)=>{let{allowElement:n,allowedElements:r,disallowedElements:i,skipHtml:a,unwrapDisallowed:o,urlTransform:s}=t;if(n||r||i||a||s){let t=s||HS;Re(e,(e,s,c)=>{if(e.type===`raw`&&c&&typeof s==`number`)return US(c,s,a,e.value),s;if(e.type===`element`&&(WS(e,t),GS(e,s,c,r,i,n)&&c&&typeof s==`number`))return o&&e.children?c.children.splice(s,1,...e.children):c.children.splice(s,1),s})}return gg(e,{Fragment:M.Fragment,components:t.components,ignoreInvalidStyle:!0,jsx:M.jsx,jsxs:M.jsxs,passKeys:!0,passNode:!0})},qS=/\[\^[\w-]{1,200}\](?!:)/,JS=/\[\^[\w-]{1,200}\]:/,YS=/<(\w+)[\s>]/,XS=new Set([`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`link`,`meta`,`param`,`source`,`track`,`wbr`]),ZS=new Map,QS=new Map,$S=e=>{let t=e.toLowerCase(),n=ZS.get(t);if(n)return n;let r=RegExp(`<${t}(?=[\\s>/])[^>]*>`,`gi`);return ZS.set(t,r),r},eC=e=>{let t=e.toLowerCase(),n=QS.get(t);if(n)return n;let r=RegExp(`</${t}(?=[\\s>])[^>]*>`,`gi`);return QS.set(t,r),r},tC=(e,t)=>{if(XS.has(t.toLowerCase()))return 0;let n=e.match($S(t));if(!n)return 0;let r=0;for(let e of n)e.trimEnd().endsWith(`/>`)||(r+=1);return r},nC=(e,t)=>{let n=e.match(eC(t));return n?n.length:0},rC=e=>{let t=0;for(let n=0;n<e.length-1;n+=1)e[n]===`$`&&e[n+1]===`$`&&(t+=1,n+=1);return t},iC=e=>{let t=qS.test(e),n=JS.test(e);if(t||n)return[e];let r=xb.lex(e,{gfm:!0}),i=[],a=[],o=!1;for(let e of r){let t=e.raw,n=i.length;if(a.length>0){i[n-1]+=t;let e=a.at(-1),r=tC(t,e),o=nC(t,e);for(let t=0;t<r;t+=1)a.push(e);for(let t=0;t<o;t+=1)a.length>0&&a.at(-1)===e&&a.pop();continue}if(e.type===`html`&&e.block){let e=t.match(YS);if(e){let n=e[1];tC(t,n)>nC(t,n)&&a.push(n)}}if(n>0&&!o){let e=i[n-1];if(rC(e)%2==1){i[n-1]=e+t;continue}}i.push(t),e.type!==`space`&&(o=e.type===`code`)}return i},aC=(e,t)=>{if(!t.length)return e;let n=e;for(let e of t){let t=RegExp(`(<${e}(?=[\\s>/])[^>]*>)([\\s\\S]*?)(</${e}\\s*>)`,`gi`);n=n.replace(t,(e,t,n,r)=>{if(!n.includes(`
124
124
 
@@ -284,11 +284,11 @@ XID_Start XIDS`.split(/\s/).map(e=>[gA(e),e])),lj=new Map([[`s`,JA(383)],[JA(383
284
284
  \v\f…\u2028\u2029])`),t));else if(c===`posix`)if(!i&&(u===`graph`||u===`print`)){if(r===`strict`)throw Error(`POSIX class "${u}" requires min target ES2024 or non-strict accuracy`);let e={graph:`!-~`,print:` -~`}[u];l&&(e=`\0-${JA(e.codePointAt(0)-1)}${JA(e.codePointAt(2)+1)}-\u{10FFFF}`),n(Bj(Lj(`[${e}]`),t))}else n(Bj(Rj(Lj(fj.get(u)),l),t));else if(c===`property`)cj.has(gA(u))||(e.key=`sc`);else if(c===`space`)n(zj(cA(`space`,{negate:l}),t));else if(c===`word`)n(Bj(Rj(Lj(oj),l),t));else throw Error(`Unexpected character set kind "${c}"`)},Directive({node:e,parent:t,root:n,remove:r,replaceWith:i,removeAllPrevSiblings:a,removeAllNextSiblings:o}){let{kind:s,flags:c}=e;if(s===`flags`)if(!c.enable&&!c.disable)r();else{let e=tA({flags:c});e.body[0].body=o(),i(Bj(e,t),{traverse:!0})}else if(s===`keep`){let e=n.body[0],r=n.body.length===1&&Mk(e,{type:`Group`})&&e.body[0].body.length===1?e.body[0]:n;if(t.parent!==r||r.body.length>1)throw Error($`Uses "\K" in a way that's unsupported`);let o=nA({behind:!0});o.body[0].body=a(),i(Bj(o,t))}else throw Error(`Unexpected directive kind "${s}"`)},Flags({node:e,parent:t}){if(e.posixIsAscii)throw Error(`Unsupported flag "P"`);if(e.textSegmentMode===`word`)throw Error(`Unsupported flag "y{w}"`);[`digitIsAscii`,`extended`,`posixIsAscii`,`spaceIsAscii`,`wordIsAscii`,`textSegmentMode`].forEach(t=>delete e[t]),Object.assign(e,{global:!1,hasIndices:!1,multiline:!1,sticky:e.sticky??!1}),t.options={disable:{x:!0,n:!0},force:{v:!0}}},Group({node:e}){if(!e.flags)return;let{enable:t,disable:n}=e.flags;t?.extended&&delete t.extended,n?.extended&&delete n.extended,t?.dotAll&&n?.dotAll&&delete t.dotAll,t?.ignoreCase&&n?.ignoreCase&&delete t.ignoreCase,t&&!Object.keys(t).length&&delete e.flags.enable,n&&!Object.keys(n).length&&delete e.flags.disable,!e.flags.enable&&!e.flags.disable&&delete e.flags},LookaroundAssertion({node:e},t){let{kind:n}=e;n===`lookbehind`&&(t.passedLookbehind=!0)},NamedCallout({node:e,parent:t,replaceWith:n}){let{kind:r}=e;if(r===`fail`)n(Bj(nA({negate:!0}),t));else throw Error(`Unsupported named callout "(*${r.toUpperCase()}"`)},Quantifier({node:e}){if(e.body.type===`Quantifier`){let t=tA();t.body[0].body.push(e.body),e.body=Bj(t,e)}},Regex:{enter({node:e},{supportedGNodes:t}){let n=[],r=!1,i=!1;for(let t of e.body)if(t.body.length===1&&t.body[0].kind===`search_start`)t.body.pop();else{let e=jj(t.body);e?(r=!0,Array.isArray(e)?n.push(...e):n.push(e)):i=!0}r&&!i&&n.forEach(e=>t.add(e))},exit(e,{accuracy:t,passedLookbehind:n,strategy:r}){if(t===`strict`&&n&&r)throw Error($`Uses "\G" in a way that requires non-strict accuracy`)}},Subroutine({node:e},{jsGroupNameMap:t}){let{ref:n}=e;typeof n==`string`&&!Ij(n)&&(n=Dj(n,t),e.ref=n)}},yj={Backreference({node:e},{multiplexCapturesToLeftByRef:t,reffedNodesByReferencer:n}){let{orphan:r,ref:i}=e;r||n.set(e,[...t.get(i).map(({node:e})=>e)])},CapturingGroup:{enter({node:e,parent:t,replaceWith:n,skip:r},{groupOriginByCopy:i,groupsByName:a,multiplexCapturesToLeftByRef:o,openRefs:s,reffedNodesByReferencer:c}){let l=i.get(e);if(l&&s.has(e.number)){let r=zj(Tj(e.number),t);c.set(r,s.get(e.number)),n(r);return}s.set(e.number,e),o.set(e.number,[]),e.name&&QA(o,e.name,[]);let u=o.get(e.name??e.number);for(let t=0;t<u.length;t++){let n=u[t];if(l===n.node||l&&l===n.origin||e===n.origin){u.splice(t,1);break}}if(o.get(e.number).push({node:e,origin:l}),e.name&&o.get(e.name).push({node:e,origin:l}),e.name){let t=QA(a,e.name,new Map),n=!1;if(l)n=!0;else for(let e of t.values())if(!e.hasDuplicateNameToRemove){n=!0;break}a.get(e.name).set(e,{node:e,hasDuplicateNameToRemove:n})}},exit({node:e},{openRefs:t}){t.delete(e.number)}},Group:{enter({node:e},t){t.prevFlags=t.currentFlags,e.flags&&(t.currentFlags=ZA(t.currentFlags,e.flags))},exit(e,t){t.currentFlags=t.prevFlags}},Subroutine({node:e,parent:t,replaceWith:n},r){let{isRecursive:i,ref:a}=e;if(i){let n=t;for(;(n=n.parent)&&!(n.type===`CapturingGroup`&&(n.name===a||n.number===a)););r.reffedNodesByReferencer.set(e,n);return}let o=r.subroutineRefMap.get(a),s=a===0,c=s?Tj(0):wj(o,r.groupOriginByCopy,null),l=c;if(!s){let e=Oj(Ej(o,e=>e.type===`Group`&&!!e.flags)),t=e?ZA(r.globalFlags,e):r.globalFlags;Sj(t,r.currentFlags)||(l=tA({flags:kj(t)}),l.body[0].body.push(c))}n(Bj(l,t),{traverse:!s})}},bj={Backreference({node:e,parent:t,replaceWith:n},r){if(e.orphan){r.highestOrphanBackref=Math.max(r.highestOrphanBackref,e.ref);return}let i=r.reffedNodesByReferencer.get(e).filter(t=>Cj(t,e));i.length?i.length>1?n(Bj(tA({atomic:!0,body:i.reverse().map(e=>Gk({body:[qk(e.number)]}))}),t)):e.ref=i[0].number:n(Bj(nA({negate:!0}),t))},CapturingGroup({node:e},t){e.number=++t.numCapturesToLeft,e.name&&t.groupsByName.get(e.name).get(e).hasDuplicateNameToRemove&&delete e.name},Regex:{exit({node:e},t){let n=Math.max(t.highestOrphanBackref-t.numCapturesToLeft,0);for(let t=0;t<n;t++){let t=Jk();e.body.at(-1).body.push(t)}}},Subroutine({node:e},t){!e.isRecursive||e.ref===0||(e.ref=t.reffedNodesByReferencer.get(e).number)}};function xj(e){yA(e,{"*"({node:e,parent:t}){e.parent=t}})}function Sj(e,t){return e.dotAll===t.dotAll&&e.ignoreCase===t.ignoreCase}function Cj(e,t){let n=t;do{if(n.type===`Regex`)return!1;if(n.type===`Alternative`)continue;if(n===e)return!1;let t=Aj(n.parent);for(let r of t){if(r===n)break;if(r===e||Mj(r,e))return!0}}while(n=n.parent);throw Error(`Unexpected path`)}function wj(e,t,n,r){let i=Array.isArray(e)?[]:{};for(let[a,o]of Object.entries(e))a===`parent`?i.parent=Array.isArray(n)?r:n:o&&typeof o==`object`?i[a]=wj(o,t,i,n):(a===`type`&&o===`CapturingGroup`&&t.set(i,t.get(e)??e),i[a]=o);return i}function Tj(e){let t=sA(e);return t.isRecursive=!0,t}function Ej(e,t){let n=[];for(;e=e.parent;)(!t||t(e))&&n.push(e);return n}function Dj(e,t){if(t.has(e))return t.get(e);let n=`$${t.size}_${e.replace(/^[^$_\p{IDS}]|[^$\u200C\u200D\p{IDC}]/gu,`_`)}`;return t.set(e,n),n}function Oj(e){let t=[`dotAll`,`ignoreCase`],n={enable:{},disable:{}};return e.forEach(({flags:e})=>{t.forEach(t=>{e.enable?.[t]&&(delete n.disable[t],n.enable[t]=!0),e.disable?.[t]&&(n.disable[t]=!0)})}),Object.keys(n.enable).length||delete n.enable,Object.keys(n.disable).length||delete n.disable,n.enable||n.disable?n:null}function kj({dotAll:e,ignoreCase:t}){let n={};return(e||t)&&(n.enable={},e&&(n.enable.dotAll=!0),t&&(n.enable.ignoreCase=!0)),(!e||!t)&&(n.disable={},!e&&(n.disable.dotAll=!0),!t&&(n.disable.ignoreCase=!0)),n}function Aj(e){if(!e)throw Error(`Node expected`);let{body:t}=e;return Array.isArray(t)?t:t?[t]:null}function jj(e){let t=e.find(e=>e.kind===`search_start`||Fj(e,{negate:!1})||!Nj(e));if(!t)return null;if(t.kind===`search_start`)return t;if(t.type===`LookaroundAssertion`)return t.body[0].body[0];if(t.type===`CapturingGroup`||t.type===`Group`){let e=[];for(let n of t.body){let t=jj(n.body);if(!t)return null;Array.isArray(t)?e.push(...t):e.push(t)}return e}return null}function Mj(e,t){let n=Aj(e)??[];for(let e of n)if(e===t||Mj(e,t))return!0;return!1}function Nj({type:e}){return e===`Assertion`||e===`Directive`||e===`LookaroundAssertion`}function Pj(e){let t=[`Character`,`CharacterClass`,`CharacterSet`];return t.includes(e.type)||e.type===`Quantifier`&&e.min&&t.includes(e.body.type)}function Fj(e,t){let n={negate:null,...t};return e.type===`LookaroundAssertion`&&(n.negate===null||e.negate===n.negate)&&e.body.length===1&&Mk(e.body[0],{type:`Assertion`,kind:`search_start`})}function Ij(e){return/^[$_\p{IDS}][$\u200C\u200D\p{IDC}]*$/u.test(e)}function Lj(e,t){let n=Fk(e,{...t,unicodePropertyMap:cj}).body;return n.length>1||n[0].body.length>1?tA({body:n}):n[0].body[0]}function Rj(e,t){return e.negate=t,e}function zj(e,t){return e.parent=t,e}function Bj(e,t){return xj(e),e.parent=t,e}function Vj(e,t){let n=rj(t),r=$A(n.target,`ES2024`),i=$A(n.target,`ES2025`),a=n.rules.recursionLimit;if(!Number.isInteger(a)||a<2||a>20)throw Error(`Invalid recursionLimit; use 2-20`);let o=null,s=null;if(!i){let t=[e.flags.ignoreCase];yA(e,Hj,{getCurrentModI:()=>t.at(-1),popModI(){t.pop()},pushModI(e){t.push(e)},setHasCasedChar(){t.at(-1)?o=!0:s=!0}})}let c={dotAll:e.flags.dotAll,ignoreCase:!!((e.flags.ignoreCase||o)&&!s)},l=e,u={accuracy:n.accuracy,appliedGlobalFlags:c,captureMap:new Map,currentFlags:{dotAll:e.flags.dotAll,ignoreCase:e.flags.ignoreCase},inCharClass:!1,lastNode:l,originMap:e._originMap,recursionLimit:a,useAppliedIgnoreCase:!!(!i&&o&&s),useFlagMods:i,useFlagV:r,verbose:n.verbose};function d(e){return u.lastNode=l,l=e,ej(Uj[e.type],`Unexpected node type "${e.type}"`)(e,u,d)}let f={pattern:e.body.map(d).join(`|`),flags:d(e.flags),options:{...e.options}};return r||(delete f.options.force.v,f.options.disable.v=!0,f.options.unicodeSetsPlugin=null),f._captureTransfers=new Map,f._hiddenCaptures=[],u.captureMap.forEach((e,t)=>{e.hidden&&f._hiddenCaptures.push(t),e.transferTo&&QA(f._captureTransfers,e.transferTo,[]).push(t)}),f}var Hj={"*":{enter({node:e},t){if(tM(e)){let n=t.getCurrentModI();t.pushModI(e.flags?ZA({ignoreCase:n},e.flags).ignoreCase:n)}},exit({node:e},t){tM(e)&&t.popModI()}},Backreference(e,t){t.setHasCasedChar()},Character({node:e},t){Yj(JA(e.value))&&t.setHasCasedChar()},CharacterClassRange({node:e,skip:t},n){t(),Xj(e,{firstOnly:!0}).length&&n.setHasCasedChar()},CharacterSet({node:e},t){e.kind===`property`&&gj.has(e.value)&&t.setHasCasedChar()}},Uj={Alternative({body:e},t,n){return e.map(n).join(``)},Assertion({kind:e,negate:t}){if(e===`string_end`)return`$`;if(e===`string_start`)return`^`;if(e===`word_boundary`)return t?$`\B`:$`\b`;throw Error(`Unexpected assertion kind "${e}"`)},Backreference({ref:e},t){if(typeof e!=`number`)throw Error(`Unexpected named backref in transformed AST`);if(!t.useFlagMods&&t.accuracy===`strict`&&t.currentFlags.ignoreCase&&!t.captureMap.get(e).ignoreCase)throw Error(`Use of case-insensitive backref to case-sensitive group requires target ES2025 or non-strict accuracy`);return`\\`+e},CapturingGroup(e,t,n){let{body:r,name:i,number:a}=e,o={ignoreCase:t.currentFlags.ignoreCase},s=t.originMap.get(e);return s&&(o.hidden=!0,a>s.number&&(o.transferTo=s.number)),t.captureMap.set(a,o),`(${i?`?<${i}>`:``}${r.map(n).join(`|`)})`},Character({value:e},t){let n=JA(e),r=Zj(e,{escDigit:t.lastNode.type===`Backreference`,inCharClass:t.inCharClass,useFlagV:t.useFlagV});if(r!==n)return r;if(t.useAppliedIgnoreCase&&t.currentFlags.ignoreCase&&Yj(n)){let e=sj(n);return t.inCharClass?e.join(``):e.length>1?`[${e.join(``)}]`:e[0]}return n},CharacterClass(e,t,n){let{kind:r,negate:i,parent:a}=e,{body:o}=e;if(r===`intersection`&&!t.useFlagV)throw Error(`Use of character class intersection requires min target ES2024`);YA.bugFlagVLiteralHyphenIsRange&&t.useFlagV&&o.some(rM)&&(o=[Yk(45),...o.filter(e=>!rM(e))]);let s=()=>`[${i?`^`:``}${o.map(n).join(r===`intersection`?`&&`:``)}]`;if(!t.inCharClass){if((!t.useFlagV||YA.bugNestedClassIgnoresNegation)&&!i){let t=o.filter(e=>e.type===`CharacterClass`&&e.kind===`union`&&e.negate);if(t.length){let r=tA(),i=r.body[0];return r.parent=a,i.parent=r,o=o.filter(e=>!t.includes(e)),e.body=o,o.length?(e.parent=i,i.body.push(e)):r.body.pop(),t.forEach(e=>{let t=Gk({body:[e]});e.parent=t,t.parent=r,r.body.push(t)}),n(r)}}t.inCharClass=!0;let r=s();return t.inCharClass=!1,r}let c=o[0];if(r===`union`&&!i&&c&&((!t.useFlagV||!t.verbose)&&a.kind===`union`&&!(YA.bugFlagVLiteralHyphenIsRange&&t.useFlagV)||!t.verbose&&a.kind===`intersection`&&o.length===1&&c.type!==`CharacterClassRange`))return o.map(n).join(``);if(!t.useFlagV&&a.type===`CharacterClass`)throw Error(`Uses nested character class in a way that requires min target ES2024`);return s()},CharacterClassRange(e,t){let n=e.min.value,r=e.max.value,i={escDigit:!1,inCharClass:!0,useFlagV:t.useFlagV},a=Zj(n,i),o=Zj(r,i),s=new Set;return t.useAppliedIgnoreCase&&t.currentFlags.ignoreCase&&Qj(Xj(e)).forEach(e=>{s.add(Array.isArray(e)?`${Zj(e[0],i)}-${Zj(e[1],i)}`:Zj(e,i))}),`${a}-${o}${[...s].join(``)}`},CharacterSet({kind:e,negate:t,value:n,key:r},i){if(e===`dot`)return i.currentFlags.dotAll?i.appliedGlobalFlags.dotAll||i.useFlagMods?`.`:`[^]`:$`[^\n]`;if(e===`digit`)return t?$`\D`:$`\d`;if(e===`property`){if(i.useAppliedIgnoreCase&&i.currentFlags.ignoreCase&&gj.has(n))throw Error(`Unicode property "${n}" can't be case-insensitive when other chars have specific case`);return`${t?$`\P`:$`\p`}{${r?`${r}=`:``}${n}}`}if(e===`word`)return t?$`\W`:$`\w`;throw Error(`Unexpected character set kind "${e}"`)},Flags(e,t){return(t.appliedGlobalFlags.ignoreCase?`i`:``)+(e.dotAll?`s`:``)+(e.sticky?`y`:``)},Group({atomic:e,body:t,flags:n,parent:r},i,a){let o=i.currentFlags;n&&(i.currentFlags=ZA(o,n));let s=t.map(a).join(`|`),c=!i.verbose&&t.length===1&&r.type!==`Quantifier`&&!e&&(!i.useFlagMods||!n)?s:`(?${$j(e,n,i.useFlagMods)}${s})`;return i.currentFlags=o,c},LookaroundAssertion({body:e,kind:t,negate:n},r,i){return`(?${`${t===`lookahead`?``:`<`}${n?`!`:`=`}`}${e.map(i).join(`|`)})`},Quantifier(e,t,n){return n(e.body)+eM(e)},Subroutine({isRecursive:e,ref:t},n){if(!e)throw Error(`Unexpected non-recursive subroutine in transformed AST`);let r=n.recursionLimit;return t===0?`(?R=${r})`:$`\g<${t}&R=${r}>`}},Wj=new Set([`$`,`(`,`)`,`*`,`+`,`.`,`?`,`[`,`\\`,`]`,`^`,`{`,`|`,`}`]),Gj=new Set([`-`,`\\`,`]`,`^`,`[`]),Kj=new Set("()-/[\\]^{|}!#$%&*+,.:;<=>?@`~".split(``)),qj=new Map([[9,$`\t`],[10,$`\n`],[11,$`\v`],[12,$`\f`],[13,$`\r`],[8232,$`\u2028`],[8233,$`\u2029`],[65279,$`\uFEFF`]]),Jj=/^\p{Cased}$/u;function Yj(e){return Jj.test(e)}function Xj(e,t){let n=!!t?.firstOnly,r=e.min.value,i=e.max.value,a=[];if(r<65&&(i===65535||i>=131071)||r===65536&&i>=131071)return a;for(let e=r;e<=i;e++){let t=JA(e);if(!Yj(t))continue;let o=sj(t).filter(e=>{let t=e.codePointAt(0);return t<r||t>i});if(o.length&&(a.push(...o),n))break}return a}function Zj(e,{escDigit:t,inCharClass:n,useFlagV:r}){if(qj.has(e))return qj.get(e);if(e<32||e>126&&e<160||e>262143||t&&nM(e))return e>255?`\\u{${e.toString(16).toUpperCase()}}`:`\\x${e.toString(16).toUpperCase().padStart(2,`0`)}`;let i=n?r?Kj:Gj:Wj,a=JA(e);return(i.has(a)?`\\`:``)+a}function Qj(e){let t=e.map(e=>e.codePointAt(0)).sort((e,t)=>e-t),n=[],r=null;for(let e=0;e<t.length;e++)t[e+1]===t[e]+1?r??=t[e]:r===null?n.push(t[e]):(n.push([r,t[e]]),r=null);return n}function $j(e,t,n){if(e)return`>`;let r=``;if(t&&n){let{enable:e,disable:n}=t;r=(e?.ignoreCase?`i`:``)+(e?.dotAll?`s`:``)+(n?`-`:``)+(n?.ignoreCase?`i`:``)+(n?.dotAll?`s`:``)}return`${r}:`}function eM({kind:e,max:t,min:n}){let r;return r=!n&&t===1?`?`:!n&&t===1/0?`*`:n===1&&t===1/0?`+`:n===t?`{${n}}`:`{${n},${t===1/0?``:t}}`,r+{greedy:``,lazy:`?`,possessive:`+`}[e]}function tM({type:e}){return e===`CapturingGroup`||e===`Group`||e===`LookaroundAssertion`}function nM(e){return e>47&&e<58}function rM({type:e,value:t}){return e===`Character`&&t===45}var iM=class e extends RegExp{#e=new Map;#t=null;#n;#r=null;#i=null;rawOptions={};get source(){return this.#n||`(?:)`}constructor(t,n,r){let i=!!r?.lazyCompile;if(t instanceof RegExp){if(r)throw Error(`Cannot provide options when copying a regexp`);let i=t;super(i,n),this.#n=i.source,i instanceof e&&(this.#e=i.#e,this.#r=i.#r,this.#i=i.#i,this.rawOptions=i.rawOptions)}else{let e={hiddenCaptures:[],strategy:null,transfers:[],...r};super(i?``:t,n),this.#n=t,this.#e=oM(e.hiddenCaptures,e.transfers),this.#i=e.strategy,this.rawOptions=r??{}}i||(this.#t=this)}exec(t){if(!this.#t){let{lazyCompile:t,...n}=this.rawOptions;this.#t=new e(this.#n,this.flags,n)}let n=this.global||this.sticky,r=this.lastIndex;if(this.#i===`clip_search`&&n&&r){this.lastIndex=0;let e=this.#a(t.slice(r));return e&&(aM(e,r,t,this.hasIndices),this.lastIndex+=r),e}return this.#a(t)}#a(e){this.#t.lastIndex=this.lastIndex;let t=super.exec.call(this.#t,e);if(this.lastIndex=this.#t.lastIndex,!t||!this.#e.size)return t;let n=[...t];t.length=1;let r;this.hasIndices&&(r=[...t.indices],t.indices.length=1);let i=[0];for(let e=1;e<n.length;e++){let{hidden:a,transferTo:o}=this.#e.get(e)??{};if(a?i.push(null):(i.push(t.length),t.push(n[e]),this.hasIndices&&t.indices.push(r[e])),o&&n[e]!==void 0){let a=i[o];if(!a)throw Error(`Invalid capture transfer to "${a}"`);if(t[a]=n[e],this.hasIndices&&(t.indices[a]=r[e]),t.groups){this.#r||=sM(this.source);let i=this.#r.get(o);i&&(t.groups[i]=n[e],this.hasIndices&&(t.indices.groups[i]=r[e]))}}}return t}};function aM(e,t,n,r){if(e.index+=t,e.input=n,r){let n=e.indices;for(let e=0;e<n.length;e++){let r=n[e];r&&(n[e]=[r[0]+t,r[1]+t])}let r=n.groups;r&&Object.keys(r).forEach(e=>{let n=r[e];n&&(r[e]=[n[0]+t,n[1]+t])})}}function oM(e,t){let n=new Map;for(let t of e)n.set(t,{hidden:!0});for(let[e,r]of t)for(let t of r)QA(n,t,{}).transferTo=e;return n}function sM(e){let t=/(?<capture>\((?:\?<(?![=!])(?<name>[^>]+)>|(?!\?)))|\\?./gsu,n=new Map,r=0,i=0,a;for(;a=t.exec(e);){let{0:e,groups:{capture:t,name:o}}=a;e===`[`?r++:r?e===`]`&&r--:t&&(i++,o&&n.set(i,o))}return n}function cM(e,t){let n=lM(e,t);return n.options?new iM(n.pattern,n.flags,n.options):new RegExp(n.pattern,n.flags)}function lM(e,t){let n=rj(t),r=_j(Fk(e,{flags:n.flags,normalizeUnknownPropertyNames:!0,rules:{captureGroup:n.rules.captureGroup,singleline:n.rules.singleline},skipBackrefValidation:n.rules.allowOrphanBackrefs,unicodePropertyMap:cj}),{accuracy:n.accuracy,asciiWordBoundaries:n.rules.asciiWordBoundaries,avoidSubclass:n.avoidSubclass,bestEffortTarget:n.target}),i=Vj(r,n),a=HA(i.pattern,{captureTransfers:i._captureTransfers,hiddenCaptures:i._hiddenCaptures,mode:`external`}),o=MA(FA(a.pattern).pattern,{captureTransfers:a.captureTransfers,hiddenCaptures:a.hiddenCaptures}),s={pattern:o.pattern,flags:`${n.hasIndices?`d`:``}${n.global?`g`:``}${i.flags}${i.options.disable.v?`u`:`v`}`};if(n.avoidSubclass){if(n.lazyCompileLength!==1/0)throw Error(`Lazy compilation requires subclass`)}else{let e=o.hiddenCaptures.sort((e,t)=>e-t),t=Array.from(o.captureTransfers),i=r._strategy,a=s.pattern.length>=n.lazyCompileLength;(e.length||t.length||i||a)&&(s.options={...e.length&&{hiddenCaptures:e},...t.length&&{transfers:t},...i&&{strategy:i},...a&&{lazyCompile:a}})}return s}var uM=4294967295,dM=class{constructor(e,t={}){this.patterns=e,this.options=t;let{forgiving:n=!1,cache:r,regexConstructor:i}=t;if(!i)throw Error("Option `regexConstructor` is not provided");this.regexps=e.map(e=>{if(typeof e!=`string`)return e;let t=r?.get(e);if(t){if(t instanceof RegExp)return t;if(n)return null;throw t}try{let t=i(e);return r?.set(e,t),t}catch(t){if(r?.set(e,t),n)return null;throw t}})}regexps;findNextMatchSync(e,t,n){let r=typeof e==`string`?e:e.content,i=[];function a(e,t,n=0){return{index:e,captureIndices:t.indices.map(e=>e==null?{start:uM,end:uM,length:0}:{start:e[0]+n,end:e[1]+n,length:e[1]-e[0]})}}for(let e=0;e<this.regexps.length;e++){let n=this.regexps[e];if(n)try{n.lastIndex=t;let o=n.exec(r);if(!o)continue;if(o.index===t)return a(e,o,0);i.push([e,o,0])}catch(e){if(this.options.forgiving)continue;throw e}}if(i.length){let e=Math.min(...i.map(e=>e[1].index));for(let[t,n,r]of i)if(n.index===e)return a(t,n,r)}return null}};function fM(e,t){return cM(e,{global:!0,hasIndices:!0,lazyCompileLength:3e3,rules:{allowOrphanBackrefs:!0,asciiWordBoundaries:!0,captureGroup:!0,recursionLimit:5,singleline:!0},...t})}function pM(e={}){let t=Object.assign({target:`auto`,cache:new Map},e);return t.regexConstructor||=e=>fM(e,{target:t.target}),{createScanner(e){return new dM(e,t)},createString(e){return{content:e}}}}var mM=pM({forgiving:!0}),hM=Object.fromEntries(iO.flatMap(e=>(e.aliases??[]).map(t=>[t,e.id]))),gM=new Set(Object.keys(sO)),_M=e=>{let t=e.trim().toLowerCase();return hM[t]||(gM.has(t),t)},vM=new Map,yM=new Map,bM=new Map,xM=e=>typeof e==`string`?e:e.name??`custom`,SM=(e,t)=>`${e}-${xM(t[0])}-${xM(t[1])}`,CM=(e,t,n)=>{let r=e.slice(0,100),i=e.length>100?e.slice(-100):``;return`${t}:${n[0]}:${n[1]}:${e.length}:${r}:${i}`},wM=(e,t)=>{let n=SM(e,t);if(vM.has(n))return vM.get(n);let r=PO({themes:t,langs:[e],engine:mM});return vM.set(n,r),r};function TM(e={}){let t=e.themes??[`github-light`,`github-dark`];return{name:`shiki`,type:`code-highlighter`,supportsLanguage(e){let t=_M(e);return gM.has(t)},getSupportedLanguages(){return Array.from(gM)},getThemes(){return t},highlight({code:e,language:t,themes:n},r){let i=_M(t),a=[xM(n[0]),xM(n[1])],o=CM(e,i,a);return yM.has(o)?yM.get(o):(r&&(bM.has(o)||bM.set(o,new Set),bM.get(o).add(r)),wM(gM.has(i)?i:`text`,n).then(t=>{let n=t.getLoadedLanguages().includes(i)?i:`text`,r=t.codeToTokens(e,{lang:n,themes:{light:a[0],dark:a[1]}});yM.set(o,r);let s=bM.get(o);if(s){for(let e of s)e(r);bM.delete(o)}}).catch(e=>{console.error(`[Streamdown Code] Failed to highlight code:`,e),bM.delete(o)}),null)}}}var EM=TM();function DM(e){return!isFinite(e)||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${Math.floor(e%60).toString().padStart(2,`0`)}`}function OM({audioData:e}){let[t,n]=(0,j.useState)(!1),[r,i]=(0,j.useState)(0),[a,o]=(0,j.useState)(0),s=(0,j.useRef)(null),c=(0,j.useRef)(null);(0,j.useEffect)(()=>{let t=new Audio(e);return t.addEventListener(`durationchange`,()=>{isFinite(t.duration)&&o(t.duration)}),t.addEventListener(`timeupdate`,()=>{isFinite(t.duration)&&t.duration>0&&(i(t.currentTime/t.duration),a===0&&o(t.duration))}),t.addEventListener(`ended`,()=>{n(!1),i(0)}),t.addEventListener(`loadedmetadata`,()=>{isFinite(t.duration)||(t.currentTime=1e10,t.addEventListener(`timeupdate`,function e(){isFinite(t.duration)&&(o(t.duration),t.currentTime=0,t.removeEventListener(`timeupdate`,e))}))}),s.current=t,()=>{t.pause(),t.src=``}},[e]);let l=(0,j.useCallback)(()=>{let e=s.current;e&&(t?(e.pause(),n(!1)):(e.play(),n(!0)))},[t]),u=(0,j.useCallback)(e=>{let t=s.current,n=c.current;if(!t||!n||!isFinite(t.duration))return;let r=n.getBoundingClientRect(),a=Math.max(0,Math.min(1,(e.clientX-r.left)/r.width));t.currentTime=a*t.duration,i(a)},[]);return(0,M.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-[180px]`,children:[(0,M.jsx)(`button`,{onClick:l,className:`flex items-center justify-center h-8 w-8 shrink-0 rounded-full bg-white/20 hover:bg-white/30 transition-colors`,children:t?(0,M.jsx)(k,{className:`h-3.5 w-3.5 fill-current`}):(0,M.jsx)(se,{className:`h-3.5 w-3.5 fill-current ml-0.5`})}),(0,M.jsxs)(`div`,{className:`flex-1 flex flex-col gap-1`,children:[(0,M.jsx)(`div`,{ref:c,onClick:u,className:`h-1 bg-white/20 rounded-full cursor-pointer relative`,children:(0,M.jsx)(`div`,{className:`absolute inset-y-0 left-0 bg-white/70 rounded-full transition-[width] duration-100`,style:{width:`${r*100}%`}})}),(0,M.jsx)(`span`,{className:`text-[10px] opacity-60 tabular-nums`,children:DM(t?r*a:a)})]})]})}function kM({group:e}){let[t,n]=(0,j.useState)({}),[r,i]=(0,j.useState)(`idle`),[a,o]=(0,j.useState)(``),s=(e,t)=>{n(n=>({...n,[e]:t}))},l=async()=>{let e=Object.entries(t).filter(([,e])=>e.trim());if(e.length!==0){i(`submitting`),o(``);try{let t=await fetch(`/api/env`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({vars:Object.fromEntries(e)})});if(!t.ok){let e=await t.json().catch(()=>({error:`Request failed`}));throw Error(e.error||`Request failed`)}i(`submitted`)}catch(e){o(e.message||`Failed to save`),i(`error`)}}},u=Object.values(t).filter(e=>e.trim()).length;return r===`submitted`?(0,M.jsx)(`div`,{className:`my-3 rounded-xl border border-emerald-500/20 bg-emerald-500/5 overflow-hidden`,children:(0,M.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3`,children:[(0,M.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-emerald-500 shrink-0`,children:(0,M.jsx)(c,{className:`w-4 h-4 text-white`,strokeWidth:3})}),(0,M.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,M.jsx)(`span`,{className:`text-emerald-400 font-medium text-sm`,children:e.title}),(0,M.jsxs)(`span`,{className:`text-muted-foreground text-xs`,children:[u,` variable`,u===1?``:`s`,` saved — backend restarting`]})]})]})}):(0,M.jsxs)(`div`,{className:`my-3 rounded-xl border border-border/60 bg-card/50 overflow-hidden`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2.5 px-4 py-3 border-b border-border/40 bg-muted/30`,children:[(0,M.jsx)(`div`,{className:`flex items-center justify-center w-7 h-7 rounded-lg bg-primary/10 shrink-0`,children:(0,M.jsx)(re,{className:`w-3.5 h-3.5 text-primary`})}),(0,M.jsx)(`span`,{className:`font-medium text-sm text-foreground`,children:e.title})]}),(0,M.jsx)(`div`,{className:`px-4 py-3 space-y-3`,children:e.fields.map(e=>(0,M.jsxs)(`div`,{className:`space-y-1`,children:[(0,M.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,M.jsx)(`span`,{children:e.label}),(0,M.jsx)(`code`,{className:`text-[10px] px-1 py-0.5 rounded bg-muted text-muted-foreground/70`,children:e.name})]}),(0,M.jsx)(`input`,{type:`text`,placeholder:e.placeholder,value:t[e.name]||``,onChange:t=>s(e.name,t.target.value),disabled:r===`submitting`,className:`w-full px-3 py-2 rounded-lg text-sm bg-background border border-border/60 text-foreground placeholder:text-muted-foreground/40 focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary/50 disabled:opacity-50 transition-colors font-mono`,spellCheck:!1,autoComplete:`off`})]},e.name))}),r===`error`&&(0,M.jsxs)(`div`,{className:`px-4 pb-2 flex items-center gap-1.5 text-xs text-red-400`,children:[(0,M.jsx)(ee,{className:`w-3 h-3 shrink-0`}),(0,M.jsx)(`span`,{children:a})]}),(0,M.jsxs)(`div`,{className:`px-4 py-3 border-t border-border/40 bg-muted/20 flex items-center justify-between`,children:[(0,M.jsxs)(`span`,{className:`text-[11px] text-muted-foreground/60`,children:[`Values are written to `,(0,M.jsx)(`code`,{className:`text-[10px]`,children:`.env`})]}),(0,M.jsx)(`button`,{onClick:l,disabled:u===0||r===`submitting`,className:`inline-flex items-center gap-1.5 px-4 py-1.5 rounded-lg text-xs font-medium bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all`,children:r===`submitting`?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(v,{className:`w-3 h-3 animate-spin`}),`Saving...`]}):`Submit`})]})]})}function AM(e){let t=e.split(`/`);return t[t.length-1]||`bloby-image`}function jM({src:e,alt:t}){let[n,r]=(0,j.useState)(!1);return n?(0,M.jsxs)(`div`,{className:`my-2 flex items-center gap-2.5 px-3.5 py-2.5 rounded-xl border border-border/30 bg-black/10 text-muted-foreground/50 text-xs`,children:[(0,M.jsx)(ne,{className:`h-4 w-4 shrink-0`}),(0,M.jsx)(`span`,{className:`truncate`,children:t||`Image not found`})]}):(0,M.jsxs)(`div`,{className:`relative group/img my-2 rounded-xl overflow-hidden border border-border/30 bg-black/20 w-fit max-w-full`,children:[(0,M.jsx)(`img`,{src:e,alt:t||`Generated image`,className:`max-w-full max-h-80 object-contain`,loading:`lazy`,onError:()=>r(!0)}),(0,M.jsx)(`div`,{className:`absolute top-2 right-2 flex gap-1.5 opacity-0 group-hover/img:opacity-100 transition-opacity`,children:(0,M.jsx)(`button`,{onClick:async()=>{try{let t=await(await fetch(e)).blob(),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=AM(e),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}catch{window.open(e,`_blank`)}},className:`p-1.5 rounded-lg bg-black/60 hover:bg-black/80 text-white/80 hover:text-white transition-colors backdrop-blur-sm`,title:`Download original`,children:(0,M.jsx)(D,{className:`h-4 w-4`})})}),t&&(0,M.jsx)(`div`,{className:`px-3 py-1.5 text-xs text-muted-foreground/70 truncate`,children:t})]})}function MM(e){return e.split(`
285
285
  `).join(`
286
286
 
287
- `)}function NM(e){return e<1024?`${e} chars`:`${(e/1024).toFixed(1)} KB`}function PM({title:e,content:t}){let[n,r]=(0,j.useState)(!1),[i,a]=(0,j.useState)(!1);return(0,M.jsxs)(`div`,{className:`my-2 rounded-xl border border-border/30 overflow-hidden`,children:[(0,M.jsxs)(`div`,{onClick:()=>r(e=>!e),className:`flex items-center gap-2.5 px-3.5 py-2.5 bg-white/[0.03] hover:bg-white/[0.05] transition-colors cursor-pointer select-none`,children:[(0,M.jsx)(E,{className:`h-3.5 w-3.5 text-muted-foreground/50 shrink-0 transition-transform duration-200 ${n?`rotate-90`:``}`}),(0,M.jsx)(`span`,{className:`text-[13px] font-medium text-foreground/80 truncate min-w-0`,children:e}),(0,M.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto shrink-0`,children:[(0,M.jsx)(`span`,{className:`text-[11px] text-muted-foreground/35 tabular-nums`,children:NM(t.length)}),(0,M.jsx)(`button`,{onClick:async e=>{e.stopPropagation();try{await navigator.clipboard.writeText(t),a(!0),setTimeout(()=>a(!1),1500)}catch{}},className:`p-1 rounded-md hover:bg-white/[0.08] text-muted-foreground/40 hover:text-muted-foreground/70 transition-colors`,title:`Copy text`,children:i?(0,M.jsx)(c,{className:`h-3.5 w-3.5`}):(0,M.jsx)(b,{className:`h-3.5 w-3.5`})})]})]}),n&&(0,M.jsx)(`div`,{className:`border-t border-border/15 max-h-[500px] overflow-y-auto px-4 py-3 text-sm leading-relaxed prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0`,children:(0,M.jsx)(TC,{mode:`static`,plugins:{code:EM},controls:{code:{copy:!0,download:!1}},shikiTheme:[`github-dark`,`github-dark`],lineNumbers:!1,children:MM(t)})})]})}function FM(e){try{return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return``}}function IM(e){let t=e.match(/^\[([^\]]+)\]\n([\s\S]*)$/);if(!t)return{tag:`Chat`,body:e};let n=t[1].split(`|`)[0].trim(),r=n;return n===`PWA`?r=`Chat`:n.toLowerCase()===`workspace`&&(r=`Workspace`),{tag:r,body:t[2]}}function LM({tag:e}){let t=`h-3 w-3 opacity-60`;return e===`Mac`?(0,M.jsx)(O,{className:t}):e===`WhatsApp`?(0,M.jsx)(d,{className:t}):e===`Workspace`?(0,M.jsx)(ae,{className:t}):e===`Chat`?(0,M.jsx)(s,{className:t}):e===`Alexa`?(0,M.jsx)(de,{className:t}):(0,M.jsx)(s,{className:t})}function RM(e){let t=e,n=`[pair-whatsapp](/api/channels/whatsapp/qr-page)`;t.includes(n)||(t=t.replace(/`?(?:http:\/\/localhost:\d+)?\/api\/channels\/whatsapp\/qr-page`?/g,n));let r=`[connect-alexa](/api/channels/alexa/pair-page)`;return t.includes(r)||(t=t.replace(/`?(?:http:\/\/localhost:\d+)?\/api\/channels\/alexa\/pair-page`?/g,r)),t}function zM(e){let t=[],n=/<EnvGroup\s+title="([^"]+)">([\s\S]*?)<\/EnvGroup>/g,r;for(;(r=n.exec(e))!==null;){let e=r[1],n=r[2],i=[],a=/<EnvInput\s+name="([^"]+)"\s+label="([^"]+)"\s+placeholder="([^"]+)"\s*\/>/g,o;for(;(o=a.exec(n))!==null;)i.push({name:o[1],label:o[2],placeholder:o[3]});i.length>0&&t.push({start:r.index,end:r.index+r[0].length,segment:{type:`env`,group:{title:e,fields:i}}})}let i=/<BlobyImage\s+src="([^"]+)"(?:\s+alt="([^"]*)")?\s*\/>/g;for(;(r=i.exec(e))!==null;)t.push({start:r.index,end:r.index+r[0].length,segment:{type:`bloby-image`,src:r[1],alt:r[2]||``}});let a=/<BlobyText\s+title="([^"]+)">([\s\S]*?)<\/BlobyText>/g;for(;(r=a.exec(e))!==null;)t.push({start:r.index,end:r.index+r[0].length,segment:{type:`bloby-text`,title:r[1],content:r[2].trim()}});t.sort((e,t)=>e.start-t.start);let o=[],s=0;for(let n of t){if(n.start>s){let t=e.slice(s,n.start).trim();t&&o.push({type:`text`,value:t})}o.push(n.segment),s=n.end}if(s<e.length){let t=e.slice(s).trim();t&&o.push({type:`text`,value:t})}return o}function BM(e){return/<EnvGroup\s+title="[^"]+">/i.test(e)||/<BlobyImage\s+src="/i.test(e)||/<BlobyText\s+title="/i.test(e)}function VM({text:e}){let[t,n]=(0,j.useState)(!1);return(0,M.jsx)(`button`,{onClick:async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1500)}catch{}},className:`absolute -top-2.5 right-2 z-10 opacity-0 group-hover:opacity-100 transition-opacity p-1 rounded-md bg-background/80 border border-border/40 shadow-sm hover:bg-muted text-muted-foreground/60 hover:text-muted-foreground`,title:`Copy message`,children:t?(0,M.jsx)(c,{className:`h-3 w-3`}):(0,M.jsx)(b,{className:`h-3 w-3`})})}function HM(e){let t=e.outerHTML,n=window.open(``,`_blank`);n&&(n.document.write(`<!DOCTYPE html><html><head><meta charset="utf-8"><title>Table</title>
287
+ `)}function NM(e){return e<1024?`${e} chars`:`${(e/1024).toFixed(1)} KB`}function PM({title:e,content:t}){let[n,r]=(0,j.useState)(!1),[i,a]=(0,j.useState)(!1);return(0,M.jsxs)(`div`,{className:`my-2 rounded-xl border border-border/30 overflow-hidden`,children:[(0,M.jsxs)(`div`,{onClick:()=>r(e=>!e),className:`flex items-center gap-2.5 px-3.5 py-2.5 bg-white/[0.03] hover:bg-white/[0.05] transition-colors cursor-pointer select-none`,children:[(0,M.jsx)(E,{className:`h-3.5 w-3.5 text-muted-foreground/50 shrink-0 transition-transform duration-200 ${n?`rotate-90`:``}`}),(0,M.jsx)(`span`,{className:`text-[13px] font-medium text-foreground/80 truncate min-w-0`,children:e}),(0,M.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto shrink-0`,children:[(0,M.jsx)(`span`,{className:`text-[11px] text-muted-foreground/35 tabular-nums`,children:NM(t.length)}),(0,M.jsx)(`button`,{onClick:async e=>{e.stopPropagation();try{await navigator.clipboard.writeText(t),a(!0),setTimeout(()=>a(!1),1500)}catch{}},className:`p-1 rounded-md hover:bg-white/[0.08] text-muted-foreground/40 hover:text-muted-foreground/70 transition-colors`,title:`Copy text`,children:i?(0,M.jsx)(c,{className:`h-3.5 w-3.5`}):(0,M.jsx)(b,{className:`h-3.5 w-3.5`})})]})]}),n&&(0,M.jsx)(`div`,{className:`border-t border-border/15 max-h-[500px] overflow-y-auto px-4 py-3 text-sm leading-relaxed prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0`,children:(0,M.jsx)(TC,{mode:`static`,plugins:{code:EM},controls:{code:{copy:!0,download:!1}},shikiTheme:[`github-dark`,`github-dark`],lineNumbers:!1,children:MM(t)})})]})}function FM(e){try{return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return``}}function IM(e){let t=e.match(/^\[([^\]]+)\]\n([\s\S]*)$/),n,r=`Chat`;if(t){n=t[2];let e=t[1].split(`|`)[0].trim();r=e===`PWA`?`Chat`:e.toLowerCase()===`workspace`?`Workspace`:e}else n=e;return n.startsWith(`[voice] `)&&(n=n.slice(8)),n=n.replace(/^\[(Mac|Alexa|WhatsApp|Chat|PWA|Workspace|workspace)\]\s*/i,``),{tag:r,body:n}}function LM({tag:e}){let t=`h-3 w-3 opacity-60`;return e===`Mac`?(0,M.jsx)(O,{className:t}):e===`WhatsApp`?(0,M.jsx)(d,{className:t}):e===`Workspace`?(0,M.jsx)(ae,{className:t}):e===`Chat`?(0,M.jsx)(s,{className:t}):e===`Alexa`?(0,M.jsx)(de,{className:t}):(0,M.jsx)(s,{className:t})}function RM(e){let t=e,n=`[pair-whatsapp](/api/channels/whatsapp/qr-page)`;t.includes(n)||(t=t.replace(/`?(?:http:\/\/localhost:\d+)?\/api\/channels\/whatsapp\/qr-page`?/g,n));let r=`[connect-alexa](/api/channels/alexa/pair-page)`;return t.includes(r)||(t=t.replace(/`?(?:http:\/\/localhost:\d+)?\/api\/channels\/alexa\/pair-page`?/g,r)),t}function zM(e){let t=[],n=/<EnvGroup\s+title="([^"]+)">([\s\S]*?)<\/EnvGroup>/g,r;for(;(r=n.exec(e))!==null;){let e=r[1],n=r[2],i=[],a=/<EnvInput\s+name="([^"]+)"\s+label="([^"]+)"\s+placeholder="([^"]+)"\s*\/>/g,o;for(;(o=a.exec(n))!==null;)i.push({name:o[1],label:o[2],placeholder:o[3]});i.length>0&&t.push({start:r.index,end:r.index+r[0].length,segment:{type:`env`,group:{title:e,fields:i}}})}let i=/<BlobyImage\s+src="([^"]+)"(?:\s+alt="([^"]*)")?\s*\/>/g;for(;(r=i.exec(e))!==null;)t.push({start:r.index,end:r.index+r[0].length,segment:{type:`bloby-image`,src:r[1],alt:r[2]||``}});let a=/<BlobyText\s+title="([^"]+)">([\s\S]*?)<\/BlobyText>/g;for(;(r=a.exec(e))!==null;)t.push({start:r.index,end:r.index+r[0].length,segment:{type:`bloby-text`,title:r[1],content:r[2].trim()}});t.sort((e,t)=>e.start-t.start);let o=[],s=0;for(let n of t){if(n.start>s){let t=e.slice(s,n.start).trim();t&&o.push({type:`text`,value:t})}o.push(n.segment),s=n.end}if(s<e.length){let t=e.slice(s).trim();t&&o.push({type:`text`,value:t})}return o}function BM(e){return/<EnvGroup\s+title="[^"]+">/i.test(e)||/<BlobyImage\s+src="/i.test(e)||/<BlobyText\s+title="/i.test(e)}function VM({text:e}){let[t,n]=(0,j.useState)(!1);return(0,M.jsx)(`button`,{onClick:async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1500)}catch{}},className:`absolute -top-2.5 right-2 z-10 opacity-0 group-hover:opacity-100 transition-opacity p-1 rounded-md bg-background/80 border border-border/40 shadow-sm hover:bg-muted text-muted-foreground/60 hover:text-muted-foreground`,title:`Copy message`,children:t?(0,M.jsx)(c,{className:`h-3 w-3`}):(0,M.jsx)(b,{className:`h-3 w-3`})})}function HM(e){let t=e.outerHTML,n=window.open(``,`_blank`);n&&(n.document.write(`<!DOCTYPE html><html><head><meta charset="utf-8"><title>Table</title>
288
288
  <style>
289
289
  body{background:#1a1a1a;color:#f5f5f5;font-family:system-ui,-apple-system,sans-serif;padding:2rem;margin:0}
290
290
  table{border-collapse:collapse;width:100%}
291
291
  th,td{border:1px solid rgba(255,255,255,.12);padding:.6rem .85rem;text-align:left;font-size:.875rem}
292
292
  th{background:rgba(255,255,255,.05);font-weight:600}
293
293
  tr:hover td{background:rgba(255,255,255,.03)}
294
- </style></head><body>${t}</body></html>`),n.document.close())}function UM(e){let t=e.target.closest(`[title="View fullscreen"]`);if(t){e.stopPropagation(),e.preventDefault();let n=t.closest(`[data-streamdown]`)?.querySelector(`table`)??t.closest(`.group`)?.querySelector(`table`);n&&HM(n)}}function WM({role:e,content:t,timestamp:n,hasAttachments:r,audioData:i,attachments:a,onImageClick:o,transcribing:s}){let c=e===`user`,l=n?FM(n):``,{tag:u,body:d}=c?IM(t):{tag:``,body:t},p=a?.filter(e=>e.mediaType?.startsWith(`image/`))||[],m=a?.filter(e=>!e.mediaType?.startsWith(`image/`))||[],h=p.filter(e=>e.filePath).map(e=>e.filePath.startsWith(`data:`)?e.filePath:`/api/files/${e.filePath}`);if(c)return(0,M.jsxs)(`div`,{className:`flex flex-col items-end gap-0.5`,children:[(0,M.jsxs)(`div`,{className:`group relative max-w-[85%]`,children:[(0,M.jsx)(VM,{text:d}),(0,M.jsxs)(`div`,{className:`rounded-2xl px-4 py-2.5 text-sm leading-relaxed whitespace-pre-wrap bg-primary text-primary-foreground break-words`,children:[h.length>0&&(0,M.jsx)(`div`,{className:`flex gap-1.5 flex-wrap mb-2`,children:h.map((e,t)=>(0,M.jsx)(`img`,{src:e,alt:p[t]?.name||`attachment`,className:`w-28 h-28 rounded-lg object-cover cursor-pointer border border-white/10 hover:opacity-80 transition-opacity`,onClick:()=>o?.(h,t)},t))}),m.length>0&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-primary-foreground/60 mr-1.5`,children:[(0,M.jsx)(oe,{className:`h-3 w-3`}),m.length>1&&(0,M.jsx)(`span`,{className:`text-xs`,children:m.length})]}),!a?.length&&r&&(0,M.jsx)(`span`,{className:`inline-flex items-center gap-1 text-primary-foreground/60 mr-1.5`,children:(0,M.jsx)(oe,{className:`h-3 w-3`})}),s&&(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5 mb-1`,children:[(0,M.jsx)(`div`,{className:`h-3 w-48 max-w-full rounded bg-white/15 animate-pulse`}),(0,M.jsx)(`div`,{className:`h-3 w-32 max-w-full rounded bg-white/10 animate-pulse`})]}),d,i&&(0,M.jsx)(`div`,{className:`mt-2 pt-2 border-t border-white/10`,children:(0,M.jsx)(OM,{audioData:i})})]})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-1 px-1 self-end`,children:[u&&(0,M.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[10px] text-muted-foreground/40`,children:[(0,M.jsx)(LM,{tag:u}),u]}),l&&(0,M.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50`,children:l})]})]});let g=e=>(0,M.jsx)(TC,{mode:`static`,plugins:{code:EM},controls:{code:{copy:!0,download:!1},table:{copy:!0,download:!0,fullscreen:!0}},shikiTheme:[`github-dark`,`github-dark`],lineNumbers:!1,components:{a({href:e,children:t}){return e?.includes(`/api/channels/whatsapp/qr-page`)?(0,M.jsxs)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-3 my-2 px-3.5 py-2.5 rounded-xl bg-[#25D366]/10 border border-[#25D366]/20 hover:bg-[#25D366]/15 transition-colors no-underline`,children:[(0,M.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-[#25D366] shrink-0`,children:(0,M.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`w-4 h-4 fill-white`,children:(0,M.jsx)(`path`,{d:`M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z`})})}),(0,M.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,M.jsx)(`span`,{className:`text-[#25D366] font-medium text-sm`,children:`Click here to pair your WhatsApp`}),(0,M.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Opens QR code pairing page`})]}),(0,M.jsx)(f,{className:`w-3.5 h-3.5 text-muted-foreground/50 ml-auto shrink-0`})]}):e?.includes(`/api/channels/alexa/pair-page`)?(0,M.jsxs)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-3 my-2 px-3.5 py-2.5 rounded-xl bg-[#00CAFF]/10 border border-[#00CAFF]/20 hover:bg-[#00CAFF]/15 transition-colors no-underline`,children:[(0,M.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-[#00CAFF] shrink-0`,children:(0,M.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`w-4 h-4 fill-white`,children:(0,M.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-1-13h2v6h-2zm0 8h2v2h-2z`})})}),(0,M.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,M.jsx)(`span`,{className:`text-[#00CAFF] font-medium text-sm`,children:`Click here to connect Alexa`}),(0,M.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Generates a one-time linking code`})]}),(0,M.jsx)(f,{className:`w-3.5 h-3.5 text-muted-foreground/50 ml-auto shrink-0`})]}):(0,M.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`text-[#4C89F2] underline decoration-[#4C89F2]/30 underline-offset-2 hover:decoration-[#4C89F2] transition-colors`,children:t})}},children:RM(e)});if(BM(t)){let e=zM(t);return(0,M.jsxs)(`div`,{className:`flex flex-col items-start gap-0.5`,children:[(0,M.jsxs)(`div`,{className:`group relative w-full`,children:[(0,M.jsx)(VM,{text:t}),(0,M.jsx)(`div`,{className:`rounded-2xl px-4 py-2.5 text-sm leading-relaxed bg-muted text-foreground prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 break-words`,onClickCapture:UM,children:e.map((e,t)=>e.type===`text`?(0,M.jsx)(`div`,{children:g(e.value)},t):e.type===`env`?(0,M.jsx)(kM,{group:e.group},t):e.type===`bloby-image`?(0,M.jsx)(jM,{src:e.src,alt:e.alt},t):e.type===`bloby-text`?(0,M.jsx)(PM,{title:e.title,content:e.content},t):null)})]}),l&&(0,M.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50 px-1`,children:l})]})}return(0,M.jsxs)(`div`,{className:`flex flex-col items-start gap-0.5`,children:[(0,M.jsxs)(`div`,{className:`group relative w-full`,children:[(0,M.jsx)(VM,{text:t}),(0,M.jsx)(`div`,{className:`rounded-2xl px-4 py-2.5 text-sm leading-relaxed bg-muted text-foreground prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 break-words`,onClickCapture:UM,children:g(t)})]}),l&&(0,M.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50 px-1`,children:l})]})}function GM({text:e,toolName:t}){return e?(0,M.jsx)(`div`,{className:`flex flex-col items-start`,children:(0,M.jsx)(`div`,{className:`w-full rounded-2xl px-4 py-2.5 text-sm leading-relaxed bg-muted text-foreground prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 break-words`,children:(0,M.jsx)(TC,{mode:`streaming`,isAnimating:!0,caret:`block`,plugins:{code:EM},controls:!1,shikiTheme:[`github-dark`,`github-dark`],lineNumbers:!1,children:e})})}):(0,M.jsx)(`div`,{className:`flex justify-start`,children:(0,M.jsx)(`div`,{className:`rounded-2xl px-4 py-2.5 text-sm bg-muted text-foreground`,children:(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-5`,children:[(0,M.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-muted-foreground/60 animate-bounce`,style:{animationDelay:`0ms`}}),(0,M.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-muted-foreground/60 animate-bounce`,style:{animationDelay:`150ms`}}),(0,M.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-muted-foreground/60 animate-bounce`,style:{animationDelay:`300ms`}})]})})})}function KM({images:e,index:t,onClose:n,onNavigate:r}){let i=(0,j.useCallback)(()=>{t>0&&r(t-1)},[t,r]),a=(0,j.useCallback)(()=>{t<e.length-1&&r(t+1)},[t,e.length,r]);return(0,j.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n(),e.key===`ArrowLeft`&&i(),e.key===`ArrowRight`&&a()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,i,a]),(0,M.jsx)(_,{children:(0,M.jsxs)(m.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:`fixed inset-0 z-50 flex items-center justify-center bg-black/90`,onClick:n,children:[(0,M.jsxs)(`div`,{className:`absolute top-4 right-4 z-10 flex gap-2`,children:[(0,M.jsx)(`button`,{onClick:async n=>{n.stopPropagation();try{let n=await(await fetch(e[t])).blob(),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e[t].split(`/`).pop()||`image`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}catch{window.open(e[t],`_blank`)}},className:`p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors text-white`,title:`Download`,children:(0,M.jsx)(D,{className:`h-5 w-5`})}),(0,M.jsx)(`button`,{onClick:n,className:`p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors text-white`,children:(0,M.jsx)(pe,{className:`h-5 w-5`})})]}),e.length>1&&(0,M.jsxs)(`div`,{className:`absolute top-4 left-1/2 -translate-x-1/2 text-white/70 text-sm tabular-nums`,children:[t+1,` / `,e.length]}),t>0&&(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),i()},className:`absolute left-3 top-1/2 -translate-y-1/2 z-10 p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors text-white`,children:(0,M.jsx)(T,{className:`h-6 w-6`})}),t<e.length-1&&(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),a()},className:`absolute right-3 top-1/2 -translate-y-1/2 z-10 p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors text-white`,children:(0,M.jsx)(E,{className:`h-6 w-6`})}),(0,M.jsx)(`img`,{src:e[t],alt:``,className:`max-h-[85vh] max-w-[90vw] object-contain rounded-lg`,onClick:e=>e.stopPropagation()})]})})}function qM({messages:e,streaming:t,streamBuffer:n,tools:r,hasMore:i,onLoadOlder:a}){let o=(0,j.useRef)(null),s=(0,j.useRef)(null),c=(0,j.useRef)(null),l=(0,j.useRef)(!0),[u,d]=(0,j.useState)(!1),[f,p]=(0,j.useState)(null),m=(0,j.useCallback)((e,t)=>{p({images:e,index:t})},[]);(0,j.useEffect)(()=>{o.current&&(l.current&&e.length>0?(o.current.scrollIntoView({behavior:`instant`}),l.current=!1):l.current||o.current.scrollIntoView({behavior:`smooth`}))},[e,n,r,t]),(0,j.useEffect)(()=>{if(!c.current||!a)return;let e=c.current,t=new IntersectionObserver(async e=>{if(e[0].isIntersecting&&i&&!u){let e=s.current;if(!e)return;let t=e.scrollHeight;d(!0),await a(),d(!1),requestAnimationFrame(()=>{let n=e.scrollHeight;e.scrollTop+=n-t})}},{root:s.current,threshold:.1});return t.observe(e),()=>t.disconnect()},[i,u,a]);let h=r.length>0?r[r.length-1]:null,g=h?.status===`running`?h.name:void 0;return(0,M.jsxs)(`div`,{ref:s,className:`flex-1 overflow-y-auto overflow-x-hidden p-4 flex flex-col min-h-0`,children:[(0,M.jsx)(`div`,{className:`flex-1`}),i&&(0,M.jsx)(`div`,{ref:c,className:`flex justify-center py-2`,children:u&&(0,M.jsx)(`div`,{className:`w-5 h-5 border-2 border-muted-foreground/20 border-t-muted-foreground/60 rounded-full animate-spin`})}),e.length===0&&!t&&(0,M.jsx)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground text-sm`,children:`Start a conversation with your Bloby..`}),(0,M.jsxs)(`div`,{className:`space-y-3`,children:[e.map(e=>(0,M.jsx)(WM,{role:e.role,content:e.content,timestamp:e.timestamp,hasAttachments:e.hasAttachments,audioData:e.audioData,attachments:e.attachments,onImageClick:m,transcribing:e.transcribing},e.id)),t&&(0,M.jsx)(GM,{text:n,toolName:g})]}),(0,M.jsx)(`div`,{ref:o}),f&&(0,M.jsx)(KM,{images:f.images,index:f.index,onClose:()=>p(null),onNavigate:e=>p(t=>t?{...t,index:e}:null)})]})}var JM=()=>typeof window>`u`?null:window.SpeechRecognition??window.webkitSpeechRecognition??null,YM=JM()!==null;function XM(){let e=(0,j.useRef)(null),t=(0,j.useRef)(``),n=(0,j.useRef)(null),r=(0,j.useMemo)(()=>YM,[]);return{start:(0,j.useCallback)((r=!1)=>{let i=JM();if(!i)return;if(e.current)try{e.current.abort()}catch{}let a=new i;a.continuous=r,a.interimResults=!0,a.lang=navigator.language||`en-US`,t.current=``,e.current=a,a.onresult=e=>{t.current=e.results[e.results.length-1][0].transcript},a.onend=()=>{e.current=null,n.current&&=(n.current(t.current),null)},a.onerror=r=>{console.error(`[SpeechRecognition] error:`,r.error),e.current=null,n.current&&=(n.current(t.current),null)};try{a.start()}catch(e){console.error(`[SpeechRecognition] start failed:`,e)}},[]),stop:(0,j.useCallback)(()=>new Promise(r=>{let i=e.current;if(!i){r(t.current);return}n.current=r;try{i.stop()}catch{e.current=null,r(t.current),n.current=null}setTimeout(()=>{n.current&&(n.current(t.current),n.current=null,e.current=null)},2e3)}),[]),abort:(0,j.useCallback)(()=>{t.current=``;let r=e.current;if(r){try{r.abort()}catch{}e.current=null}n.current&&=(n.current(``),null)},[]),isSupported:r}}function ZM(e){return`${Math.floor(e/60)}:${(e%60).toString().padStart(2,`0`)}`}function QM(e,t=4*1024*1024){return new Promise(n=>{let r=new Image;r.onload=()=>{let e=1600,{width:i,height:a}=r;if(i>e||a>e){let t=Math.min(e/i,e/a);i=Math.round(i*t),a=Math.round(a*t)}let o=document.createElement(`canvas`);o.width=i,o.height=a,o.getContext(`2d`).drawImage(r,0,0,i,a);for(let e of[.8,.6,.4,.3]){let r=o.toDataURL(`image/jpeg`,e);if(Math.round((r.length-23)*.75)<=t){n(r);return}}n(o.toDataURL(`image/jpeg`,.2))},r.onerror=()=>n(e),r.src=e})}var $M=`bloby_draft`;function eN({onSend:e,onStop:t,streaming:n,whisperEnabled:r,onTranscribe:i,onRecordingChange:a,onAudioReady:o}){let{start:s,stop:c,abort:l,isSupported:u}=XM(),d=r||u,[f,p]=(0,j.useState)(()=>{try{return localStorage.getItem($M)||``}catch{return``}}),[g,v]=(0,j.useState)([]),y=(0,j.useRef)(null),[b,x]=(0,j.useState)(!1),S=(0,j.useCallback)(e=>{x(e),a?.(e)},[a]),[C,T]=(0,j.useState)(0),E=f.trim().length>0,ee=E||g.length>0,D=(0,j.useRef)(null),te=(0,j.useRef)(null),ne=(0,j.useRef)(null),re=(0,j.useRef)(null),O=(0,j.useRef)(null),ie=(0,j.useRef)(0),ae=(0,j.useRef)(0),k=(0,j.useRef)(null),se=(0,j.useRef)(!1),le=(0,j.useRef)(!1),de=(0,j.useRef)(null),fe=(0,j.useRef)(null),me=(0,j.useRef)([]),he=(0,j.useRef)(null);(0,j.useEffect)(()=>{let e=D.current;e&&(e.style.height=`0px`,e.style.height=`${Math.min(e.scrollHeight,88)}px`)},[f]),(0,j.useEffect)(()=>(y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{try{localStorage.setItem($M,f)}catch{}},500),()=>{y.current&&clearTimeout(y.current)}),[f]),(0,j.useEffect)(()=>{if(b)return de.current=setInterval(()=>T(e=>e+1),1e3),()=>{de.current&&clearInterval(de.current)}},[b]);let ge=(0,j.useCallback)(async t=>{de.current&&clearInterval(de.current),k.current&&=(clearTimeout(k.current),null),se.current=!1;let n=fe.current,r=he.current;if(t)r?.getTracks().forEach(e=>e.stop()),fe.current=null,he.current=null,me.current=[],l();else if(n&&n.state!==`inactive`)n.onstop=async()=>{r?.getTracks().forEach(e=>e.stop());let t=new Blob(me.current,{type:`audio/webm`});if(me.current=[],fe.current=null,he.current=null,t.size<1e3)return;let n=new FileReader;n.onloadend=async()=>{let t=n.result,r=t.split(`,`)[1];if(!r)return;o?.(t);let a=g.length>0?g:void 0;try{let n;n=i?await i(r):await(await fetch(`/api/whisper/transcribe`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({audio:r})})).json(),e(n.transcript?.trim()||``,a,t)}catch(n){console.error(`[InputBar] Whisper transcription error:`,n),e(``,a,t)}a&&v([])},n.readAsDataURL(t)},n.stop();else{r?.getTracks().forEach(e=>e.stop()),fe.current=null,he.current=null,me.current=[];try{let t=await c();if(t.trim()){let n=g.length>0?g:void 0;e(t.trim(),n),n&&v([])}}catch(e){console.error(`[InputBar] Web Speech stop error:`,e)}}O.current&&(O.current.style.transform=``),S(!1),T(0),ae.current=0},[e,i,g,r,l,c]),_e=(0,j.useCallback)(e=>{let t=e.type.startsWith(`image/`),n=e.type===`application/pdf`;if(!t&&!n)return;let r=new FileReader;r.onload=async n=>{let r=n.target?.result;t&&(r=await QM(r)),v(n=>[...n,{id:Math.random().toString(36).slice(2),type:t?`image`:`file`,name:e.name,preview:r}])},r.readAsDataURL(e)},[]),ve=(0,j.useCallback)(e=>{let t=e.target.files;if(t){for(let e=0;e<t.length;e++)_e(t[e]);e.target.value=``}},[_e]),ye=(0,j.useCallback)(e=>{v(t=>t.filter(t=>t.id!==e))},[]);(0,j.useEffect)(()=>{let e=e=>{if(e.clipboardData?.items){for(let t of e.clipboardData.items)if(t.type.startsWith(`image/`)){e.preventDefault();let n=t.getAsFile();n&&_e(n)}}};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[_e]);let be=()=>{if(ee){e(f,g.length>0?g:void 0),p(``),v([]);try{localStorage.removeItem($M)}catch{}requestAnimationFrame(()=>D.current?.focus())}},xe=`ontouchstart`in window||navigator.maxTouchPoints>0,Se=(0,j.useCallback)(async()=>{if(d)try{if(r){let e=await navigator.mediaDevices.getUserMedia({audio:!0});if(!(!xe&&!le.current)&&xe&&!le.current){e.getTracks().forEach(e=>e.stop());return}he.current=e;let t=MediaRecorder.isTypeSupported(`audio/webm;codecs=opus`)?`audio/webm;codecs=opus`:`audio/webm`,n=new MediaRecorder(e,{mimeType:t});me.current=[],n.ondataavailable=e=>{e.data.size>0&&me.current.push(e.data)},fe.current=n,n.start()}else if(s(!xe),xe&&!le.current){l();return}se.current=!0,S(!0),T(0)}catch(e){console.error(`[InputBar] recording setup failed:`,e)}},[d,r,s,l]),Ce=(0,j.useCallback)(e=>{if(e.preventDefault(),!xe){if(b){ge(!1);return}le.current=!0,Se();return}le.current=!0,ie.current=e.clientX,ae.current=0,e.currentTarget.setPointerCapture(e.pointerId),k.current=setTimeout(()=>{try{navigator.vibrate?.(50)}catch{}Se()},200)},[xe,b,d,Se,ge]),we=(0,j.useCallback)(e=>{if(!xe||!se.current)return;let t=Math.min(0,e.clientX-ie.current);if(ae.current=t,O.current&&(O.current.style.transform=`translateX(${t}px)`),re.current){let t=re.current.getBoundingClientRect(),n=t.left+t.width/2;Math.abs(e.clientX-n)<36&&ge(!0)}},[xe,ge]),Te=(0,j.useCallback)(()=>{le.current=!1,k.current&&=(clearTimeout(k.current),null),xe&&se.current&&ge(!1)},[xe,ge]),Ee=(0,j.useCallback)(()=>{le.current=!1,k.current&&=(clearTimeout(k.current),null),se.current&&ge(!0)},[ge]);return(0,M.jsxs)(`div`,{className:`shrink-0 p-3 relative`,children:[(0,M.jsxs)(`div`,{className:`flex flex-col transition-opacity duration-100 ${b?`opacity-0 pointer-events-none`:`opacity-100`}`,children:[(0,M.jsx)(_,{children:g.length>0&&(0,M.jsx)(m.div,{initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},transition:{duration:.15},className:`overflow-hidden`,children:(0,M.jsx)(`div`,{className:`flex gap-2 px-3 pt-2.5 pb-2 flex-wrap bg-white/[0.04] border border-white/[0.08] rounded-2xl mb-2`,children:g.map(e=>(0,M.jsxs)(`div`,{className:`relative group flex-shrink-0`,children:[e.type===`image`?(0,M.jsx)(`img`,{src:e.preview,alt:e.name,className:`w-14 h-14 rounded-lg object-cover border border-white/10`}):(0,M.jsxs)(`div`,{className:`w-14 h-14 rounded-lg bg-white/5 border border-white/10 flex flex-col items-center justify-center gap-0.5 px-1`,children:[(0,M.jsx)(`svg`,{className:`w-5 h-5 text-muted-foreground`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:1.5,children:(0,M.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z`})}),(0,M.jsx)(`span`,{className:`text-[8px] text-muted-foreground truncate w-full text-center`,children:e.name.split(`.`).pop()})]}),(0,M.jsx)(`button`,{onClick:()=>ye(e.id),className:`absolute -top-1.5 -right-1.5 w-4 h-4 bg-black/80 border border-white/20 rounded-full flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,M.jsx)(pe,{className:`w-2.5 h-2.5 text-white`})})]},e.id))})})}),(0,M.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,M.jsxs)(`div`,{className:`flex-1 flex items-end bg-white rounded-2xl px-4`,children:[(0,M.jsx)(`textarea`,{ref:D,value:f,onChange:e=>p(e.target.value),onKeyDown:e=>{let t=`ontouchstart`in window||navigator.maxTouchPoints>0;e.key===`Enter`&&!e.shiftKey&&!t&&(e.preventDefault(),ee&&be())},placeholder:`Type a message...`,rows:1,className:`flex-1 resize-none bg-transparent text-gray-900 py-3 text-sm outline-none placeholder:text-gray-400 overflow-y-auto`,style:{maxHeight:88}}),(0,M.jsx)(`input`,{ref:te,type:`file`,className:`hidden`,accept:`image/*,.pdf`,multiple:!0,onChange:ve}),(0,M.jsx)(`input`,{ref:ne,type:`file`,className:`hidden`,accept:`image/*`,capture:`environment`,onChange:ve}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>te.current?.click(),className:`shrink-0 p-1.5 mb-2 text-gray-400 hover:text-gray-600 transition-colors`,children:(0,M.jsx)(oe,{className:`h-4 w-4`})}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>ne.current?.click(),className:`shrink-0 p-1.5 mb-2 text-gray-400 hover:text-gray-600 transition-colors`,children:(0,M.jsx)(w,{className:`h-4 w-4`})})]}),E?(0,M.jsx)(`button`,{onClick:be,className:`flex items-center justify-center h-12 w-12 shrink-0 rounded-full bg-white text-gray-900 transition-colors hover:bg-gray-100`,children:(0,M.jsx)(ce,{className:`h-4 w-4`})}):(0,M.jsx)(`div`,{className:`flex items-center justify-center h-12 w-12 shrink-0 rounded-full transition-colors touch-none select-none ${d?`bg-gradient-brand text-white cursor-pointer`:`bg-gray-200 text-gray-400 cursor-default`}`,title:d?void 0:`Voice input requires Chrome, Edge, or Safari. Enable Whisper in Settings for any browser.`,onPointerDown:d?Ce:void 0,onPointerMove:d?we:void 0,onPointerUp:d?Te:void 0,onPointerCancel:d?Ee:void 0,children:(0,M.jsx)(h,{className:`h-4 w-4`})})]})]}),(0,M.jsx)(_,{children:b&&(0,M.jsx)(m.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.1},className:`absolute inset-0 p-3 flex items-center touch-none`,children:(0,M.jsxs)(`div`,{className:`flex items-center w-full gap-2`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,M.jsxs)(`span`,{className:`relative flex h-2 w-2 shrink-0`,children:[(0,M.jsx)(`span`,{className:`animate-ping absolute inline-flex h-full w-full rounded-full bg-destructive opacity-75`}),(0,M.jsx)(`span`,{className:`relative inline-flex rounded-full h-2 w-2 bg-destructive`})]}),(0,M.jsx)(`span`,{className:`text-sm font-medium tabular-nums`,children:ZM(C)})]}),(0,M.jsx)(`div`,{className:`flex-1 flex items-center bg-muted rounded-full h-12 pl-1 pr-0.5`,children:xe?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`div`,{ref:re,className:`flex items-center justify-center h-9 w-9 shrink-0 rounded-full bg-destructive/10 text-destructive`,children:(0,M.jsx)(A,{className:`h-4 w-4`})}),(0,M.jsx)(`div`,{className:`flex-1 flex justify-center min-w-0`,children:(0,M.jsx)(m.span,{className:`text-[13px] whitespace-nowrap select-none font-medium`,style:{backgroundImage:`linear-gradient(90deg, #999 0%, #999 35%, #fff 50%, #999 65%, #999 100%)`,backgroundSize:`200% 100%`,WebkitBackgroundClip:`text`,WebkitTextFillColor:`transparent`,backgroundClip:`text`},animate:{backgroundPosition:[`200% center`,`-200% center`]},transition:{duration:2.5,repeat:1/0,ease:`linear`},children:`◄◄ slide to cancel`})}),(0,M.jsx)(`div`,{ref:O,className:`shrink-0 touch-none select-none will-change-transform relative z-10`,style:{transition:`none`},onPointerDown:Ce,onPointerMove:we,onPointerUp:Te,onPointerCancel:Ee,children:(0,M.jsx)(`div`,{className:`flex items-center justify-center h-11 w-11 rounded-full bg-destructive text-destructive-foreground`,style:{animation:`mic-pulse-scale 2s ease-in-out infinite`},children:(0,M.jsx)(h,{className:`h-5 w-5`})})})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{onClick:()=>ge(!0),className:`flex items-center justify-center h-9 w-9 shrink-0 rounded-full bg-destructive/10 text-destructive hover:bg-destructive/20 transition-colors`,children:(0,M.jsx)(A,{className:`h-4 w-4`})}),(0,M.jsx)(`div`,{className:`flex-1 flex justify-center min-w-0`,children:(0,M.jsx)(`span`,{className:`text-[13px] whitespace-nowrap select-none font-medium text-muted-foreground`,children:`Click mic to stop`})}),(0,M.jsx)(`button`,{onClick:()=>ge(!1),className:`shrink-0`,children:(0,M.jsx)(`div`,{className:`flex items-center justify-center h-11 w-11 rounded-full bg-destructive text-destructive-foreground hover:bg-destructive/90 transition-colors`,children:(0,M.jsx)(ue,{className:`h-4 w-4`})})})]})})]})})})]})}var tN=16,nN=126,rN=84,iN=11,aN=40,oN=40,sN=85,cN=24,lN=48,uN=null;function dN(){return uN?Promise.resolve(uN):new Promise((e,t)=>{let n=new Image;n.onload=()=>{uN=n,e(n)},n.onerror=t,n.src=`/headphones_spritesheet.webp`})}function fN({recording:e,height:t=36,onDone:n}){let r=(0,j.useRef)(null),i=(0,j.useRef)(uN),a=(0,j.useRef)(`idle`),o=(0,j.useRef)(iN),s=(0,j.useRef)(1),c=(0,j.useRef)(0),l=(0,j.useRef)(0),u=(0,j.useRef)(!1),d=(0,j.useRef)(n);d.current=n;let f=t,p=Math.round(nN/rN*f);(0,j.useEffect)(()=>{dN().then(e=>{i.current=e})},[]),(0,j.useEffect)(()=>{e&&!u.current?(a.current=`activating`,o.current=iN,s.current=1,c.current=performance.now()):!e&&u.current&&(a.current===`activating`?a.current=`activating_then_deactivate`:a.current===`recording`&&(a.current=`deactivating`,o.current=aN,c.current=performance.now())),u.current=e},[e]);let m=(0,j.useCallback)(e=>{let t=r.current,n=i.current;if(!t){l.current=requestAnimationFrame(m);return}let u=t.getContext(`2d`),h=a.current;if(h===`idle`||!n){u.clearRect(0,0,p,f),l.current=requestAnimationFrame(m);return}let g=1e3/(h===`activating`||h===`activating_then_deactivate`||h===`deactivating`?lN:cN),_=e-c.current;if(_>=g){if(c.current=e-_%g,h===`activating`||h===`activating_then_deactivate`)o.current++,o.current>aN&&(h===`activating_then_deactivate`?(a.current=`deactivating`,o.current=aN):(a.current=`recording`,o.current=oN,s.current=1));else if(h===`recording`)o.current+=s.current,o.current>=sN?(o.current=sN,s.current=-1):o.current<=oN&&(o.current=oN,s.current=1);else if(h===`deactivating`&&(o.current--,o.current<iN)){a.current=`idle`,u.clearRect(0,0,p,f),d.current?.(),l.current=requestAnimationFrame(m);return}}let v=o.current%tN,y=Math.floor(o.current/tN);u.clearRect(0,0,p,f),u.imageSmoothingEnabled=!0,u.imageSmoothingQuality=`high`,u.drawImage(n,v*nN,y*rN,nN,rN,0,0,p,f),l.current=requestAnimationFrame(m)},[p,f]);return(0,j.useEffect)(()=>{let e=r.current;if(!e)return;let t=window.devicePixelRatio||1;return e.width=p*t,e.height=f*t,e.getContext(`2d`).setTransform(t,0,0,t,0,0),l.current=requestAnimationFrame(m),()=>cancelAnimationFrame(l.current)},[m,p,f]),(0,M.jsx)(`canvas`,{ref:r,style:{width:p,height:f,display:`block`}})}function pN(){let e=(0,j.useRef)(null),[t,n]=(0,j.useState)(!1),[r,i]=(0,j.useState)(`Bloby`),[a,o]=(0,j.useState)(!1),[s,c]=(0,j.useState)(!1),[l,u]=(0,j.useState)(!1),[d,f]=(0,j.useState)(0),p=(0,j.useRef)(null),m=(0,j.useRef)(!1),[h,_]=(0,j.useState)(!0),[v,b]=(0,j.useState)(null),[w,T]=(0,j.useState)(null),[E,ee]=(0,j.useState)(!1),[ne,re]=(0,j.useState)(!1),[O,ie]=(0,j.useState)(!1),[ae,oe]=(0,j.useState)(`loading`);function k(e){let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}async function se(){try{if(await Notification.requestPermission()!==`granted`){oe(`denied`);return}let t=await navigator.serviceWorker.ready,{publicKey:n}=await(await fetch(`/api/push/vapid-public-key`)).json(),r=(await t.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:k(n)})).toJSON(),i=e.current;i&&i.send(`push:subscribe`,{endpoint:r.endpoint,keys:r.keys}),oe(`subscribed`)}catch(e){console.error(`[push] Subscribe failed:`,e)}}async function ce(){try{let t=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(t){let n=t.endpoint;await t.unsubscribe();let r=e.current;r&&r.send(`push:unsubscribe`,{endpoint:n})}oe(`unsubscribed`)}catch(e){console.error(`[push] Unsubscribe failed:`,e)}}let[ue,A]=(0,j.useState)(!1),de=/iPad|iPhone|iPod/.test(navigator.userAgent),me=window.matchMedia(`(display-mode: standalone)`).matches||navigator.standalone,ge=/Android|iPhone|iPad|iPod|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),_e=window.self!==window.top;(0,j.useEffect)(()=>{let e=e=>{e.data?.type===`bloby:show-ios-install`&&A(!0)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[]);let[we,Ee]=(0,j.useState)(!1),[De,Oe]=(0,j.useState)(!1),[ke,Ae]=(0,j.useState)(!1),[je,Me]=(0,j.useState)(!1);(0,j.useEffect)(()=>{(async()=>{try{let e=await(await fetch(`/api/onboard/status`)).json();if(e.totpEnabled&&Me(!0),!e.portalConfigured){Oe(!1),Ae(!0),Ee(!0);return}Oe(!0);let t=ve();if(t){if((await(await fetch(`/api/portal/validate-token?token=${encodeURIComponent(t)}`)).json()).valid){Ae(!0),Ee(!0);return}be()}Ae(!1),Ee(!0)}catch{Ae(!0),Ee(!0)}})()},[]);let Ne=e=>{ye(e),Ae(!0)};(0,j.useEffect)(()=>{xe(()=>{Ae(!1),Oe(!0)})},[]),(0,j.useEffect)(()=>{if(!ke)return;let e=()=>{fetch(`/app/api/health`).then(e=>_(e.ok)).catch(()=>_(!1))};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[ke]),(0,j.useEffect)(()=>{ke&&(async()=>{if(!(`PushManager`in window)||!(`serviceWorker`in navigator)){oe(`unsupported`);return}if(Notification.permission===`denied`){oe(`denied`);return}try{let e=await(await navigator.serviceWorker.ready).pushManager.getSubscription();oe(e&&(await(await fetch(`/api/push/status?endpoint=${encodeURIComponent(e.endpoint)}`)).json()).subscribed?`subscribed`:`unsubscribed`)}catch{oe(`unsupported`)}})()},[ke]),(0,j.useEffect)(()=>{if(!ke)return;let t=location.protocol===`https:`?`wss:`:`ws:`,r=location.host,i=new he(`${t}//${r}/bloby/ws`,ve);e.current=i;let a=i.onStatus(e=>{n(e),e&&m.current&&f(e=>e+1),m.current=e}),o=i.on(`app:rebuilding`,()=>{window.parent?.postMessage({type:`bloby:rebuilding`},`*`)}),s=i.on(`app:rebuilt`,()=>{window.parent?.postMessage({type:`bloby:rebuilt`},`*`)}),c=i.on(`app:build-error`,e=>{window.parent?.postMessage({type:`bloby:build-error`,error:e.error},`*`)}),l=i.on(`app:hmr-update`,()=>{window.parent?.postMessage({type:`bloby:hmr-update`},`*`)}),u=i.on(`bot:response`,()=>{window.parent?.postMessage({type:`bloby:new-message`},`*`)}),d=i.on(`chat:sync`,()=>{window.parent?.postMessage({type:`bloby:new-message`},`*`)});return i.connect(),()=>{a(),o(),s(),c(),l(),u(),d(),i.disconnect()}},[ke]),(0,j.useEffect)(()=>{ke&&(Se(`/api/settings`).then(e=>e.json()).then(e=>{e.agent_name&&i(e.agent_name),e.whisper_enabled===`true`&&o(!0)}).catch(()=>{}),Se(`/api/wallet/balance`).then(e=>e.json()).then(e=>{e.address&&(b(e.tempo??`0.00`),T(e.base??`0.00`))}).catch(()=>{}))},[ke]),(0,j.useEffect)(()=>{if(!s)return;let e=e=>{p.current&&!p.current.contains(e.target)&&c(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[s]);let{messages:Pe,streaming:Fe,streamBuffer:Ie,tools:Le,hasMore:Re,loadOlder:ze,sendMessage:Be,addPendingAudio:Ve,stopStreaming:He,clearContext:Ue}=Ce(e.current,d,ke);return(0,j.useEffect)(()=>{let t=async t=>{if(t.data?.type!==`bloby:voice-record`)return;let{audio:n,transcript:r}=t.data;if(n&&a){let t=e.current;if(!t?.connected)return;try{let e=await new Promise((e,r)=>{let i=t.on(`whisper:result`,t=>{i(),clearTimeout(a),e(t)}),a=setTimeout(()=>{i(),r(Error(`Timeout`))},3e4);t.send(`whisper:transcribe`,{audio:n})});e.transcript?.trim()&&Be(e.transcript.trim(),void 0,`data:audio/webm;base64,${n}`)}catch(e){console.error(`[BlobyApp] widget voice transcription error:`,e)}}else r?.trim()&&Be(r.trim())};return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[Be,a]),we?De&&!ke?(0,M.jsx)(Te,{onLogin:Ne,totpEnabled:je}):(0,M.jsxs)(`div`,{className:`flex flex-col h-dvh overflow-hidden`,children:[(0,M.jsxs)(`div`,{className:`flex items-center px-4 py-3.5 border-b border-white/[0.06] shrink-0`,children:[(0,M.jsx)(`button`,{onClick:()=>window.parent?.postMessage({type:`bloby:close`},`*`),className:`flex items-center justify-center h-8 w-8 -ml-1 rounded-full text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors`,"aria-label":`Close chat`,children:(0,M.jsx)(g,{className:`h-[18px] w-[18px]`})}),(0,M.jsx)(`div`,{className:`relative ml-1.5 shrink-0`,children:O?(0,M.jsx)(fN,{recording:ne,height:36,onDone:()=>ie(!1)}):(0,M.jsx)(`img`,{src:`/bloby.png`,alt:r,className:`h-9 w-auto`})}),(0,M.jsxs)(`div`,{className:`flex flex-col ml-2.5 min-w-0`,children:[(0,M.jsx)(`span`,{className:`text-[15px] font-semibold leading-tight tracking-[-0.01em]`,children:r}),(0,M.jsx)(`div`,{className:`flex items-center gap-1.5 mt-0.5`,children:(0,M.jsxs)(`span`,{className:`flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,M.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full ${t?`bg-emerald-500`:`bg-red-500`}`}),t?`Online`:`Offline`]})})]}),(0,M.jsx)(`div`,{className:`flex-1`}),(v!==null||w!==null)&&(0,M.jsxs)(`div`,{className:`relative mr-1.5`,onMouseEnter:()=>ee(!0),onMouseLeave:()=>ee(!1),children:[(0,M.jsxs)(`div`,{className:`flex items-center rounded-xl bg-white/[0.04] border border-white/[0.06] pl-3 pr-1 py-1`,children:[(0,M.jsxs)(`span`,{className:`text-[11px] text-muted-foreground/70 mr-1.5`,children:[(0,M.jsx)(`span`,{className:`hidden sm:inline`,children:`My `}),`Wallet:`]}),(0,M.jsxs)(`span`,{className:`text-[13px] font-semibold font-mono tracking-tight`,children:[`$`,(Number(v??0)+Number(w??0)).toFixed(2)]}),(0,M.jsx)(`div`,{className:`w-px h-4 bg-white/[0.08] mx-2`}),(0,M.jsxs)(`a`,{href:`https://www.bloby.bot/dashboard`,target:`_blank`,rel:`noopener noreferrer`,className:`text-[11px] font-semibold text-primary bg-primary/10 hover:bg-primary/20 px-2.5 py-1 rounded-lg transition-colors`,children:[(0,M.jsx)(`span`,{className:`sm:hidden`,children:`+`}),(0,M.jsx)(`span`,{className:`hidden sm:inline`,children:`+ Add`})]})]}),E&&(0,M.jsx)(`div`,{className:`absolute right-0 top-full pt-1.5 z-50`,children:(0,M.jsxs)(`div`,{className:`min-w-[220px] rounded-xl border border-white/[0.06] bg-popover py-2 shadow-xl`,children:[(0,M.jsx)(`div`,{className:`px-3.5 pb-2 text-[10px] uppercase tracking-wider text-muted-foreground/60`,children:`Balances`}),(0,M.jsxs)(`div`,{className:`flex items-center justify-between px-3.5 py-1.5`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`img`,{src:`https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@master/svg/color/usdc.svg`,alt:`USDC`,className:`h-5 w-5`}),(0,M.jsxs)(`span`,{className:`text-[13px] font-semibold font-mono tracking-tight`,children:[`$`,Number(v??0).toFixed(2)]})]}),(0,M.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`on Tempo`})]}),(0,M.jsxs)(`div`,{className:`flex items-center justify-between px-3.5 py-1.5`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`img`,{src:`https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@master/svg/color/usdc.svg`,alt:`USDC`,className:`h-5 w-5`}),(0,M.jsxs)(`span`,{className:`text-[13px] font-semibold font-mono tracking-tight`,children:[`$`,Number(w??0).toFixed(2)]})]}),(0,M.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`on Base`})]})]})})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[ae!==`loading`&&ae!==`unsupported`&&(0,M.jsx)(`button`,{onClick:()=>{ae===`subscribed`?ce():ae===`unsubscribed`&&se()},disabled:ae===`denied`,className:`flex items-center justify-center h-8 w-8 rounded-full text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors disabled:opacity-40 disabled:cursor-not-allowed`,title:ae===`denied`?`Notifications blocked — enable in browser settings`:ae===`subscribed`?`Disable push notifications`:`Enable push notifications`,children:ae===`denied`?(0,M.jsx)(x,{className:`h-[18px] w-[18px]`}):ae===`subscribed`?(0,M.jsx)(S,{className:`h-[18px] w-[18px] text-primary`}):(0,M.jsx)(C,{className:`h-[18px] w-[18px]`})}),(0,M.jsxs)(`div`,{className:`relative`,ref:p,children:[(0,M.jsx)(`button`,{onClick:()=>c(e=>!e),className:`flex items-center justify-center h-8 w-8 rounded-full text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors`,children:(0,M.jsx)(te,{className:`h-[18px] w-[18px]`})}),s&&(0,M.jsxs)(`div`,{className:`absolute right-0 top-full mt-1.5 min-w-[180px] rounded-xl border border-white/[0.06] bg-popover py-1.5 shadow-xl z-50`,children:[(0,M.jsxs)(`button`,{onClick:()=>{u(!0),c(!1)},className:`flex w-full items-center gap-2.5 px-3.5 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors`,children:[(0,M.jsx)(fe,{className:`h-4 w-4`}),`Settings`]}),ge&&!me&&(0,M.jsxs)(`button`,{onClick:()=>{c(!1),_e?window.parent.postMessage({type:`bloby:install-app`},`*`):A(!0)},className:`flex w-full items-center gap-2.5 px-3.5 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors`,children:[(0,M.jsx)(D,{className:`h-4 w-4`}),`Install App`]})]})]})]})]}),(0,M.jsxs)(`div`,{className:`flex-1 min-h-0 flex flex-col overflow-hidden`,children:[(0,M.jsx)(qM,{messages:Pe,streaming:Fe,streamBuffer:Ie,tools:Le,hasMore:Re,onLoadOlder:ze}),(0,M.jsx)(eN,{onSend:Be,onStop:He,streaming:Fe,whisperEnabled:a,onTranscribe:t=>new Promise((n,r)=>{let i=e.current;if(!i?.connected){r(Error(`WebSocket not connected`));return}let a=i.on(`whisper:result`,e=>{a(),clearTimeout(o),n(e)}),o=setTimeout(()=>{a(),r(Error(`Transcription timeout`))},3e4);i.send(`whisper:transcribe`,{audio:t})}),onAudioReady:Ve,onRecordingChange:e=>{re(e),e&&ie(!0)}})]}),l&&(0,M.jsx)(y,{onSave:t=>new Promise((n,r)=>{let i=e.current;if(!i?.connected){r(Error(`WebSocket not connected`));return}let a=i.on(`settings:saved`,e=>{a(),clearTimeout(s),n(e)}),o=i.on(`settings:save-error`,e=>{o(),clearTimeout(s),r(Error(e.error||`Save failed`))}),s=setTimeout(()=>{a(),o(),r(Error(`Save timeout`))},1e4);i.send(`settings:save`,t)}),onTunnelSwitch:t=>new Promise((n,r)=>{let i=e.current;if(!i?.connected){r(Error(`Not connected`));return}let a=i.on(`tunnel:switched`,e=>{a(),o(),clearTimeout(s),n(e)}),o=i.on(`tunnel:switch-error`,e=>{a(),o(),clearTimeout(s),r(Error(e.error))}),s=setTimeout(()=>{a(),o(),r(Error(`Timeout`))},3e4);i.send(`tunnel:switch`,{mode:t})}),onComplete:()=>{u(!1),Se(`/api/settings`).then(e=>e.json()).then(e=>{e.agent_name&&i(e.agent_name),o(e.whisper_enabled===`true`)}).catch(()=>{}),window.parent?.postMessage({type:`bloby:onboard-complete`},`*`)}}),ue&&(0,M.jsxs)(`div`,{className:`fixed inset-0 z-[300] flex items-end sm:items-center justify-center p-4`,children:[(0,M.jsx)(`div`,{className:`absolute inset-0 bg-black/60 backdrop-blur-sm`,onClick:()=>A(!1)}),(0,M.jsxs)(`div`,{className:`relative w-full max-w-[360px] bg-[#1c1c1e] border border-white/[0.08] rounded-2xl shadow-2xl overflow-hidden`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between px-5 pt-5 pb-2`,children:[(0,M.jsx)(`h2`,{className:`text-[17px] font-semibold text-white`,children:`Install App`}),(0,M.jsx)(`button`,{onClick:()=>A(!1),className:`h-7 w-7 rounded-full bg-white/[0.08] flex items-center justify-center text-white/50 hover:text-white/80 transition-colors`,children:(0,M.jsx)(pe,{className:`h-4 w-4`})})]}),(0,M.jsxs)(`div`,{className:`px-5 pb-6 pt-1`,children:[(0,M.jsx)(`p`,{className:`text-white/50 text-[13px] mb-5 leading-relaxed`,children:`Add Bloby to your home screen for a full-screen app experience.`}),de?(0,M.jsxs)(`div`,{className:`space-y-3.5`,children:[(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`1`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Tap the Share button`}),(0,M.jsxs)(`p`,{className:`text-white/40 text-[12px] mt-0.5 flex items-center gap-1.5`,children:[`The `,(0,M.jsx)(le,{className:`h-3.5 w-3.5 inline`}),` icon at the bottom of Safari`]})]})]}),(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`2`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Scroll down and tap`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[12px] mt-0.5`,children:`"Add to Home Screen"`})]})]}),(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`3`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Tap "Add"`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[12px] mt-0.5`,children:`Bloby will appear on your home screen`})]})]})]}):(0,M.jsxs)(`div`,{className:`space-y-3.5`,children:[(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`1`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Open browser menu`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[12px] mt-0.5`,children:`Tap the three-dot menu in your browser`})]})]}),(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`2`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Tap "Install app" or "Add to Home screen"`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[12px] mt-0.5`,children:`Bloby will be installed as a standalone app`})]})]})]}),(0,M.jsx)(`button`,{onClick:()=>A(!1),className:`w-full mt-5 py-2.5 bg-white/[0.06] hover:bg-white/[0.1] text-white text-[14px] font-medium rounded-xl transition-colors`,children:`Got it`})]})]})]})]}):(0,M.jsx)(`div`,{className:`flex items-center justify-center h-dvh`,children:(0,M.jsx)(`div`,{className:`w-6 h-6 border-2 border-white/10 border-t-white/50 rounded-full animate-spin`})})}me.createRoot(document.getElementById(`root`)).render((0,M.jsx)(j.StrictMode,{children:(0,M.jsx)(pN,{})}));export{DC as i,kx as n,CC as r,tx as t};
294
+ </style></head><body>${t}</body></html>`),n.document.close())}function UM(e){let t=e.target.closest(`[title="View fullscreen"]`);if(t){e.stopPropagation(),e.preventDefault();let n=t.closest(`[data-streamdown]`)?.querySelector(`table`)??t.closest(`.group`)?.querySelector(`table`);n&&HM(n)}}function WM({role:e,content:t,timestamp:n,hasAttachments:r,audioData:i,attachments:a,onImageClick:o,transcribing:s}){let c=e===`user`,l=n?FM(n):``,{tag:u,body:d}=IM(t),p=a?.filter(e=>e.mediaType?.startsWith(`image/`))||[],m=a?.filter(e=>!e.mediaType?.startsWith(`image/`))||[],h=p.filter(e=>e.filePath).map(e=>e.filePath.startsWith(`data:`)?e.filePath:`/api/files/${e.filePath}`);if(c)return(0,M.jsxs)(`div`,{className:`flex flex-col items-end gap-0.5`,children:[(0,M.jsxs)(`div`,{className:`group relative max-w-[85%]`,children:[(0,M.jsx)(VM,{text:d}),(0,M.jsxs)(`div`,{className:`rounded-2xl px-4 py-2.5 text-sm leading-relaxed whitespace-pre-wrap bg-primary text-primary-foreground break-words`,children:[h.length>0&&(0,M.jsx)(`div`,{className:`flex gap-1.5 flex-wrap mb-2`,children:h.map((e,t)=>(0,M.jsx)(`img`,{src:e,alt:p[t]?.name||`attachment`,className:`w-28 h-28 rounded-lg object-cover cursor-pointer border border-white/10 hover:opacity-80 transition-opacity`,onClick:()=>o?.(h,t)},t))}),m.length>0&&(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-primary-foreground/60 mr-1.5`,children:[(0,M.jsx)(oe,{className:`h-3 w-3`}),m.length>1&&(0,M.jsx)(`span`,{className:`text-xs`,children:m.length})]}),!a?.length&&r&&(0,M.jsx)(`span`,{className:`inline-flex items-center gap-1 text-primary-foreground/60 mr-1.5`,children:(0,M.jsx)(oe,{className:`h-3 w-3`})}),s&&(0,M.jsxs)(`div`,{className:`flex flex-col gap-1.5 mb-1`,children:[(0,M.jsx)(`div`,{className:`h-3 w-48 max-w-full rounded bg-white/15 animate-pulse`}),(0,M.jsx)(`div`,{className:`h-3 w-32 max-w-full rounded bg-white/10 animate-pulse`})]}),d,i&&(0,M.jsx)(`div`,{className:`mt-2 pt-2 border-t border-white/10`,children:(0,M.jsx)(OM,{audioData:i})})]})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-1 px-1 self-end`,children:[(0,M.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[10px] text-muted-foreground/40`,children:[(0,M.jsx)(LM,{tag:u}),u]}),l&&(0,M.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50`,children:l})]})]});let g=e=>(0,M.jsx)(TC,{mode:`static`,plugins:{code:EM},controls:{code:{copy:!0,download:!1},table:{copy:!0,download:!0,fullscreen:!0}},shikiTheme:[`github-dark`,`github-dark`],lineNumbers:!1,components:{a({href:e,children:t}){return e?.includes(`/api/channels/whatsapp/qr-page`)?(0,M.jsxs)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-3 my-2 px-3.5 py-2.5 rounded-xl bg-[#25D366]/10 border border-[#25D366]/20 hover:bg-[#25D366]/15 transition-colors no-underline`,children:[(0,M.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-[#25D366] shrink-0`,children:(0,M.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`w-4 h-4 fill-white`,children:(0,M.jsx)(`path`,{d:`M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z`})})}),(0,M.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,M.jsx)(`span`,{className:`text-[#25D366] font-medium text-sm`,children:`Click here to pair your WhatsApp`}),(0,M.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Opens QR code pairing page`})]}),(0,M.jsx)(f,{className:`w-3.5 h-3.5 text-muted-foreground/50 ml-auto shrink-0`})]}):e?.includes(`/api/channels/alexa/pair-page`)?(0,M.jsxs)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-3 my-2 px-3.5 py-2.5 rounded-xl bg-[#00CAFF]/10 border border-[#00CAFF]/20 hover:bg-[#00CAFF]/15 transition-colors no-underline`,children:[(0,M.jsx)(`div`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-[#00CAFF] shrink-0`,children:(0,M.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`w-4 h-4 fill-white`,children:(0,M.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-1-13h2v6h-2zm0 8h2v2h-2z`})})}),(0,M.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,M.jsx)(`span`,{className:`text-[#00CAFF] font-medium text-sm`,children:`Click here to connect Alexa`}),(0,M.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Generates a one-time linking code`})]}),(0,M.jsx)(f,{className:`w-3.5 h-3.5 text-muted-foreground/50 ml-auto shrink-0`})]}):(0,M.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`text-[#4C89F2] underline decoration-[#4C89F2]/30 underline-offset-2 hover:decoration-[#4C89F2] transition-colors`,children:t})}},children:RM(e)});if(BM(d)){let e=zM(d);return(0,M.jsxs)(`div`,{className:`flex flex-col items-start gap-0.5`,children:[(0,M.jsxs)(`div`,{className:`group relative w-full`,children:[(0,M.jsx)(VM,{text:d}),(0,M.jsx)(`div`,{className:`rounded-2xl px-4 py-2.5 text-sm leading-relaxed bg-muted text-foreground prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 break-words`,onClickCapture:UM,children:e.map((e,t)=>e.type===`text`?(0,M.jsx)(`div`,{children:g(e.value)},t):e.type===`env`?(0,M.jsx)(kM,{group:e.group},t):e.type===`bloby-image`?(0,M.jsx)(jM,{src:e.src,alt:e.alt},t):e.type===`bloby-text`?(0,M.jsx)(PM,{title:e.title,content:e.content},t):null)})]}),l&&(0,M.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50 px-1`,children:l})]})}return(0,M.jsxs)(`div`,{className:`flex flex-col items-start gap-0.5`,children:[(0,M.jsxs)(`div`,{className:`group relative w-full`,children:[(0,M.jsx)(VM,{text:d}),(0,M.jsx)(`div`,{className:`rounded-2xl px-4 py-2.5 text-sm leading-relaxed bg-muted text-foreground prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 break-words`,onClickCapture:UM,children:g(d)})]}),l&&(0,M.jsx)(`span`,{className:`text-[10px] text-muted-foreground/50 px-1`,children:l})]})}function GM({text:e,toolName:t}){return e?(0,M.jsx)(`div`,{className:`flex flex-col items-start`,children:(0,M.jsx)(`div`,{className:`w-full rounded-2xl px-4 py-2.5 text-sm leading-relaxed bg-muted text-foreground prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 break-words`,children:(0,M.jsx)(TC,{mode:`streaming`,isAnimating:!0,caret:`block`,plugins:{code:EM},controls:!1,shikiTheme:[`github-dark`,`github-dark`],lineNumbers:!1,children:e})})}):(0,M.jsx)(`div`,{className:`flex justify-start`,children:(0,M.jsx)(`div`,{className:`rounded-2xl px-4 py-2.5 text-sm bg-muted text-foreground`,children:(0,M.jsxs)(`span`,{className:`inline-flex items-center gap-1 h-5`,children:[(0,M.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-muted-foreground/60 animate-bounce`,style:{animationDelay:`0ms`}}),(0,M.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-muted-foreground/60 animate-bounce`,style:{animationDelay:`150ms`}}),(0,M.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-muted-foreground/60 animate-bounce`,style:{animationDelay:`300ms`}})]})})})}function KM({images:e,index:t,onClose:n,onNavigate:r}){let i=(0,j.useCallback)(()=>{t>0&&r(t-1)},[t,r]),a=(0,j.useCallback)(()=>{t<e.length-1&&r(t+1)},[t,e.length,r]);return(0,j.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n(),e.key===`ArrowLeft`&&i(),e.key===`ArrowRight`&&a()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n,i,a]),(0,M.jsx)(_,{children:(0,M.jsxs)(m.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:`fixed inset-0 z-50 flex items-center justify-center bg-black/90`,onClick:n,children:[(0,M.jsxs)(`div`,{className:`absolute top-4 right-4 z-10 flex gap-2`,children:[(0,M.jsx)(`button`,{onClick:async n=>{n.stopPropagation();try{let n=await(await fetch(e[t])).blob(),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e[t].split(`/`).pop()||`image`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}catch{window.open(e[t],`_blank`)}},className:`p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors text-white`,title:`Download`,children:(0,M.jsx)(D,{className:`h-5 w-5`})}),(0,M.jsx)(`button`,{onClick:n,className:`p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors text-white`,children:(0,M.jsx)(pe,{className:`h-5 w-5`})})]}),e.length>1&&(0,M.jsxs)(`div`,{className:`absolute top-4 left-1/2 -translate-x-1/2 text-white/70 text-sm tabular-nums`,children:[t+1,` / `,e.length]}),t>0&&(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),i()},className:`absolute left-3 top-1/2 -translate-y-1/2 z-10 p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors text-white`,children:(0,M.jsx)(T,{className:`h-6 w-6`})}),t<e.length-1&&(0,M.jsx)(`button`,{onClick:e=>{e.stopPropagation(),a()},className:`absolute right-3 top-1/2 -translate-y-1/2 z-10 p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors text-white`,children:(0,M.jsx)(E,{className:`h-6 w-6`})}),(0,M.jsx)(`img`,{src:e[t],alt:``,className:`max-h-[85vh] max-w-[90vw] object-contain rounded-lg`,onClick:e=>e.stopPropagation()})]})})}function qM({messages:e,streaming:t,streamBuffer:n,tools:r,hasMore:i,onLoadOlder:a}){let o=(0,j.useRef)(null),s=(0,j.useRef)(null),c=(0,j.useRef)(null),l=(0,j.useRef)(!0),[u,d]=(0,j.useState)(!1),[f,p]=(0,j.useState)(null),m=(0,j.useCallback)((e,t)=>{p({images:e,index:t})},[]);(0,j.useEffect)(()=>{o.current&&(l.current&&e.length>0?(o.current.scrollIntoView({behavior:`instant`}),l.current=!1):l.current||o.current.scrollIntoView({behavior:`smooth`}))},[e,n,r,t]),(0,j.useEffect)(()=>{if(!c.current||!a)return;let e=c.current,t=new IntersectionObserver(async e=>{if(e[0].isIntersecting&&i&&!u){let e=s.current;if(!e)return;let t=e.scrollHeight;d(!0),await a(),d(!1),requestAnimationFrame(()=>{let n=e.scrollHeight;e.scrollTop+=n-t})}},{root:s.current,threshold:.1});return t.observe(e),()=>t.disconnect()},[i,u,a]);let h=r.length>0?r[r.length-1]:null,g=h?.status===`running`?h.name:void 0;return(0,M.jsxs)(`div`,{ref:s,className:`flex-1 overflow-y-auto overflow-x-hidden p-4 flex flex-col min-h-0`,children:[(0,M.jsx)(`div`,{className:`flex-1`}),i&&(0,M.jsx)(`div`,{ref:c,className:`flex justify-center py-2`,children:u&&(0,M.jsx)(`div`,{className:`w-5 h-5 border-2 border-muted-foreground/20 border-t-muted-foreground/60 rounded-full animate-spin`})}),e.length===0&&!t&&(0,M.jsx)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground text-sm`,children:`Start a conversation with your Bloby..`}),(0,M.jsxs)(`div`,{className:`space-y-3`,children:[e.map(e=>(0,M.jsx)(WM,{role:e.role,content:e.content,timestamp:e.timestamp,hasAttachments:e.hasAttachments,audioData:e.audioData,attachments:e.attachments,onImageClick:m,transcribing:e.transcribing},e.id)),t&&(0,M.jsx)(GM,{text:n.replace(/^\[(Mac|Alexa|WhatsApp|Chat|PWA|Workspace|workspace)\]\s*/i,``),toolName:g})]}),(0,M.jsx)(`div`,{ref:o}),f&&(0,M.jsx)(KM,{images:f.images,index:f.index,onClose:()=>p(null),onNavigate:e=>p(t=>t?{...t,index:e}:null)})]})}var JM=()=>typeof window>`u`?null:window.SpeechRecognition??window.webkitSpeechRecognition??null,YM=JM()!==null;function XM(){let e=(0,j.useRef)(null),t=(0,j.useRef)(``),n=(0,j.useRef)(null),r=(0,j.useMemo)(()=>YM,[]);return{start:(0,j.useCallback)((r=!1)=>{let i=JM();if(!i)return;if(e.current)try{e.current.abort()}catch{}let a=new i;a.continuous=r,a.interimResults=!0,a.lang=navigator.language||`en-US`,t.current=``,e.current=a,a.onresult=e=>{t.current=e.results[e.results.length-1][0].transcript},a.onend=()=>{e.current=null,n.current&&=(n.current(t.current),null)},a.onerror=r=>{console.error(`[SpeechRecognition] error:`,r.error),e.current=null,n.current&&=(n.current(t.current),null)};try{a.start()}catch(e){console.error(`[SpeechRecognition] start failed:`,e)}},[]),stop:(0,j.useCallback)(()=>new Promise(r=>{let i=e.current;if(!i){r(t.current);return}n.current=r;try{i.stop()}catch{e.current=null,r(t.current),n.current=null}setTimeout(()=>{n.current&&(n.current(t.current),n.current=null,e.current=null)},2e3)}),[]),abort:(0,j.useCallback)(()=>{t.current=``;let r=e.current;if(r){try{r.abort()}catch{}e.current=null}n.current&&=(n.current(``),null)},[]),isSupported:r}}function ZM(e){return`${Math.floor(e/60)}:${(e%60).toString().padStart(2,`0`)}`}function QM(e,t=4*1024*1024){return new Promise(n=>{let r=new Image;r.onload=()=>{let e=1600,{width:i,height:a}=r;if(i>e||a>e){let t=Math.min(e/i,e/a);i=Math.round(i*t),a=Math.round(a*t)}let o=document.createElement(`canvas`);o.width=i,o.height=a,o.getContext(`2d`).drawImage(r,0,0,i,a);for(let e of[.8,.6,.4,.3]){let r=o.toDataURL(`image/jpeg`,e);if(Math.round((r.length-23)*.75)<=t){n(r);return}}n(o.toDataURL(`image/jpeg`,.2))},r.onerror=()=>n(e),r.src=e})}var $M=`bloby_draft`;function eN({onSend:e,onStop:t,streaming:n,whisperEnabled:r,onTranscribe:i,onRecordingChange:a,onAudioReady:o}){let{start:s,stop:c,abort:l,isSupported:u}=XM(),d=r||u,[f,p]=(0,j.useState)(()=>{try{return localStorage.getItem($M)||``}catch{return``}}),[g,v]=(0,j.useState)([]),y=(0,j.useRef)(null),[b,x]=(0,j.useState)(!1),S=(0,j.useCallback)(e=>{x(e),a?.(e)},[a]),[C,T]=(0,j.useState)(0),E=f.trim().length>0,ee=E||g.length>0,D=(0,j.useRef)(null),te=(0,j.useRef)(null),ne=(0,j.useRef)(null),re=(0,j.useRef)(null),O=(0,j.useRef)(null),ie=(0,j.useRef)(0),ae=(0,j.useRef)(0),k=(0,j.useRef)(null),se=(0,j.useRef)(!1),le=(0,j.useRef)(!1),de=(0,j.useRef)(null),fe=(0,j.useRef)(null),me=(0,j.useRef)([]),he=(0,j.useRef)(null);(0,j.useEffect)(()=>{let e=D.current;e&&(e.style.height=`0px`,e.style.height=`${Math.min(e.scrollHeight,88)}px`)},[f]),(0,j.useEffect)(()=>(y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{try{localStorage.setItem($M,f)}catch{}},500),()=>{y.current&&clearTimeout(y.current)}),[f]),(0,j.useEffect)(()=>{if(b)return de.current=setInterval(()=>T(e=>e+1),1e3),()=>{de.current&&clearInterval(de.current)}},[b]);let ge=(0,j.useCallback)(async t=>{de.current&&clearInterval(de.current),k.current&&=(clearTimeout(k.current),null),se.current=!1;let n=fe.current,r=he.current;if(t)r?.getTracks().forEach(e=>e.stop()),fe.current=null,he.current=null,me.current=[],l();else if(n&&n.state!==`inactive`)n.onstop=async()=>{r?.getTracks().forEach(e=>e.stop());let t=new Blob(me.current,{type:`audio/webm`});if(me.current=[],fe.current=null,he.current=null,t.size<1e3)return;let n=new FileReader;n.onloadend=async()=>{let t=n.result,r=t.split(`,`)[1];if(!r)return;o?.(t);let a=g.length>0?g:void 0;try{let n;n=i?await i(r):await(await fetch(`/api/whisper/transcribe`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({audio:r})})).json(),e(n.transcript?.trim()||``,a,t)}catch(n){console.error(`[InputBar] Whisper transcription error:`,n),e(``,a,t)}a&&v([])},n.readAsDataURL(t)},n.stop();else{r?.getTracks().forEach(e=>e.stop()),fe.current=null,he.current=null,me.current=[];try{let t=await c();if(t.trim()){let n=g.length>0?g:void 0;e(t.trim(),n),n&&v([])}}catch(e){console.error(`[InputBar] Web Speech stop error:`,e)}}O.current&&(O.current.style.transform=``),S(!1),T(0),ae.current=0},[e,i,g,r,l,c]),_e=(0,j.useCallback)(e=>{let t=e.type.startsWith(`image/`),n=e.type===`application/pdf`;if(!t&&!n)return;let r=new FileReader;r.onload=async n=>{let r=n.target?.result;t&&(r=await QM(r)),v(n=>[...n,{id:Math.random().toString(36).slice(2),type:t?`image`:`file`,name:e.name,preview:r}])},r.readAsDataURL(e)},[]),ve=(0,j.useCallback)(e=>{let t=e.target.files;if(t){for(let e=0;e<t.length;e++)_e(t[e]);e.target.value=``}},[_e]),ye=(0,j.useCallback)(e=>{v(t=>t.filter(t=>t.id!==e))},[]);(0,j.useEffect)(()=>{let e=e=>{if(e.clipboardData?.items){for(let t of e.clipboardData.items)if(t.type.startsWith(`image/`)){e.preventDefault();let n=t.getAsFile();n&&_e(n)}}};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[_e]);let be=()=>{if(ee){e(f,g.length>0?g:void 0),p(``),v([]);try{localStorage.removeItem($M)}catch{}requestAnimationFrame(()=>D.current?.focus())}},xe=`ontouchstart`in window||navigator.maxTouchPoints>0,Se=(0,j.useCallback)(async()=>{if(d)try{if(r){let e=await navigator.mediaDevices.getUserMedia({audio:!0});if(!(!xe&&!le.current)&&xe&&!le.current){e.getTracks().forEach(e=>e.stop());return}he.current=e;let t=MediaRecorder.isTypeSupported(`audio/webm;codecs=opus`)?`audio/webm;codecs=opus`:`audio/webm`,n=new MediaRecorder(e,{mimeType:t});me.current=[],n.ondataavailable=e=>{e.data.size>0&&me.current.push(e.data)},fe.current=n,n.start()}else if(s(!xe),xe&&!le.current){l();return}se.current=!0,S(!0),T(0)}catch(e){console.error(`[InputBar] recording setup failed:`,e)}},[d,r,s,l]),Ce=(0,j.useCallback)(e=>{if(e.preventDefault(),!xe){if(b){ge(!1);return}le.current=!0,Se();return}le.current=!0,ie.current=e.clientX,ae.current=0,e.currentTarget.setPointerCapture(e.pointerId),k.current=setTimeout(()=>{try{navigator.vibrate?.(50)}catch{}Se()},200)},[xe,b,d,Se,ge]),we=(0,j.useCallback)(e=>{if(!xe||!se.current)return;let t=Math.min(0,e.clientX-ie.current);if(ae.current=t,O.current&&(O.current.style.transform=`translateX(${t}px)`),re.current){let t=re.current.getBoundingClientRect(),n=t.left+t.width/2;Math.abs(e.clientX-n)<36&&ge(!0)}},[xe,ge]),Te=(0,j.useCallback)(()=>{le.current=!1,k.current&&=(clearTimeout(k.current),null),xe&&se.current&&ge(!1)},[xe,ge]),Ee=(0,j.useCallback)(()=>{le.current=!1,k.current&&=(clearTimeout(k.current),null),se.current&&ge(!0)},[ge]);return(0,M.jsxs)(`div`,{className:`shrink-0 p-3 relative`,children:[(0,M.jsxs)(`div`,{className:`flex flex-col transition-opacity duration-100 ${b?`opacity-0 pointer-events-none`:`opacity-100`}`,children:[(0,M.jsx)(_,{children:g.length>0&&(0,M.jsx)(m.div,{initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},transition:{duration:.15},className:`overflow-hidden`,children:(0,M.jsx)(`div`,{className:`flex gap-2 px-3 pt-2.5 pb-2 flex-wrap bg-white/[0.04] border border-white/[0.08] rounded-2xl mb-2`,children:g.map(e=>(0,M.jsxs)(`div`,{className:`relative group flex-shrink-0`,children:[e.type===`image`?(0,M.jsx)(`img`,{src:e.preview,alt:e.name,className:`w-14 h-14 rounded-lg object-cover border border-white/10`}):(0,M.jsxs)(`div`,{className:`w-14 h-14 rounded-lg bg-white/5 border border-white/10 flex flex-col items-center justify-center gap-0.5 px-1`,children:[(0,M.jsx)(`svg`,{className:`w-5 h-5 text-muted-foreground`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,strokeWidth:1.5,children:(0,M.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z`})}),(0,M.jsx)(`span`,{className:`text-[8px] text-muted-foreground truncate w-full text-center`,children:e.name.split(`.`).pop()})]}),(0,M.jsx)(`button`,{onClick:()=>ye(e.id),className:`absolute -top-1.5 -right-1.5 w-4 h-4 bg-black/80 border border-white/20 rounded-full flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,M.jsx)(pe,{className:`w-2.5 h-2.5 text-white`})})]},e.id))})})}),(0,M.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,M.jsxs)(`div`,{className:`flex-1 flex items-end bg-white rounded-2xl px-4`,children:[(0,M.jsx)(`textarea`,{ref:D,value:f,onChange:e=>p(e.target.value),onKeyDown:e=>{let t=`ontouchstart`in window||navigator.maxTouchPoints>0;e.key===`Enter`&&!e.shiftKey&&!t&&(e.preventDefault(),ee&&be())},placeholder:`Type a message...`,rows:1,className:`flex-1 resize-none bg-transparent text-gray-900 py-3 text-sm outline-none placeholder:text-gray-400 overflow-y-auto`,style:{maxHeight:88}}),(0,M.jsx)(`input`,{ref:te,type:`file`,className:`hidden`,accept:`image/*,.pdf`,multiple:!0,onChange:ve}),(0,M.jsx)(`input`,{ref:ne,type:`file`,className:`hidden`,accept:`image/*`,capture:`environment`,onChange:ve}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>te.current?.click(),className:`shrink-0 p-1.5 mb-2 text-gray-400 hover:text-gray-600 transition-colors`,children:(0,M.jsx)(oe,{className:`h-4 w-4`})}),(0,M.jsx)(`button`,{type:`button`,onClick:()=>ne.current?.click(),className:`shrink-0 p-1.5 mb-2 text-gray-400 hover:text-gray-600 transition-colors`,children:(0,M.jsx)(w,{className:`h-4 w-4`})})]}),E?(0,M.jsx)(`button`,{onClick:be,className:`flex items-center justify-center h-12 w-12 shrink-0 rounded-full bg-white text-gray-900 transition-colors hover:bg-gray-100`,children:(0,M.jsx)(ce,{className:`h-4 w-4`})}):(0,M.jsx)(`div`,{className:`flex items-center justify-center h-12 w-12 shrink-0 rounded-full transition-colors touch-none select-none ${d?`bg-gradient-brand text-white cursor-pointer`:`bg-gray-200 text-gray-400 cursor-default`}`,title:d?void 0:`Voice input requires Chrome, Edge, or Safari. Enable Whisper in Settings for any browser.`,onPointerDown:d?Ce:void 0,onPointerMove:d?we:void 0,onPointerUp:d?Te:void 0,onPointerCancel:d?Ee:void 0,children:(0,M.jsx)(h,{className:`h-4 w-4`})})]})]}),(0,M.jsx)(_,{children:b&&(0,M.jsx)(m.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.1},className:`absolute inset-0 p-3 flex items-center touch-none`,children:(0,M.jsxs)(`div`,{className:`flex items-center w-full gap-2`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,M.jsxs)(`span`,{className:`relative flex h-2 w-2 shrink-0`,children:[(0,M.jsx)(`span`,{className:`animate-ping absolute inline-flex h-full w-full rounded-full bg-destructive opacity-75`}),(0,M.jsx)(`span`,{className:`relative inline-flex rounded-full h-2 w-2 bg-destructive`})]}),(0,M.jsx)(`span`,{className:`text-sm font-medium tabular-nums`,children:ZM(C)})]}),(0,M.jsx)(`div`,{className:`flex-1 flex items-center bg-muted rounded-full h-12 pl-1 pr-0.5`,children:xe?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`div`,{ref:re,className:`flex items-center justify-center h-9 w-9 shrink-0 rounded-full bg-destructive/10 text-destructive`,children:(0,M.jsx)(A,{className:`h-4 w-4`})}),(0,M.jsx)(`div`,{className:`flex-1 flex justify-center min-w-0`,children:(0,M.jsx)(m.span,{className:`text-[13px] whitespace-nowrap select-none font-medium`,style:{backgroundImage:`linear-gradient(90deg, #999 0%, #999 35%, #fff 50%, #999 65%, #999 100%)`,backgroundSize:`200% 100%`,WebkitBackgroundClip:`text`,WebkitTextFillColor:`transparent`,backgroundClip:`text`},animate:{backgroundPosition:[`200% center`,`-200% center`]},transition:{duration:2.5,repeat:1/0,ease:`linear`},children:`◄◄ slide to cancel`})}),(0,M.jsx)(`div`,{ref:O,className:`shrink-0 touch-none select-none will-change-transform relative z-10`,style:{transition:`none`},onPointerDown:Ce,onPointerMove:we,onPointerUp:Te,onPointerCancel:Ee,children:(0,M.jsx)(`div`,{className:`flex items-center justify-center h-11 w-11 rounded-full bg-destructive text-destructive-foreground`,style:{animation:`mic-pulse-scale 2s ease-in-out infinite`},children:(0,M.jsx)(h,{className:`h-5 w-5`})})})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`button`,{onClick:()=>ge(!0),className:`flex items-center justify-center h-9 w-9 shrink-0 rounded-full bg-destructive/10 text-destructive hover:bg-destructive/20 transition-colors`,children:(0,M.jsx)(A,{className:`h-4 w-4`})}),(0,M.jsx)(`div`,{className:`flex-1 flex justify-center min-w-0`,children:(0,M.jsx)(`span`,{className:`text-[13px] whitespace-nowrap select-none font-medium text-muted-foreground`,children:`Click mic to stop`})}),(0,M.jsx)(`button`,{onClick:()=>ge(!1),className:`shrink-0`,children:(0,M.jsx)(`div`,{className:`flex items-center justify-center h-11 w-11 rounded-full bg-destructive text-destructive-foreground hover:bg-destructive/90 transition-colors`,children:(0,M.jsx)(ue,{className:`h-4 w-4`})})})]})})]})})})]})}var tN=16,nN=126,rN=84,iN=11,aN=40,oN=40,sN=85,cN=24,lN=48,uN=null;function dN(){return uN?Promise.resolve(uN):new Promise((e,t)=>{let n=new Image;n.onload=()=>{uN=n,e(n)},n.onerror=t,n.src=`/headphones_spritesheet.webp`})}function fN({recording:e,height:t=36,onDone:n}){let r=(0,j.useRef)(null),i=(0,j.useRef)(uN),a=(0,j.useRef)(`idle`),o=(0,j.useRef)(iN),s=(0,j.useRef)(1),c=(0,j.useRef)(0),l=(0,j.useRef)(0),u=(0,j.useRef)(!1),d=(0,j.useRef)(n);d.current=n;let f=t,p=Math.round(nN/rN*f);(0,j.useEffect)(()=>{dN().then(e=>{i.current=e})},[]),(0,j.useEffect)(()=>{e&&!u.current?(a.current=`activating`,o.current=iN,s.current=1,c.current=performance.now()):!e&&u.current&&(a.current===`activating`?a.current=`activating_then_deactivate`:a.current===`recording`&&(a.current=`deactivating`,o.current=aN,c.current=performance.now())),u.current=e},[e]);let m=(0,j.useCallback)(e=>{let t=r.current,n=i.current;if(!t){l.current=requestAnimationFrame(m);return}let u=t.getContext(`2d`),h=a.current;if(h===`idle`||!n){u.clearRect(0,0,p,f),l.current=requestAnimationFrame(m);return}let g=1e3/(h===`activating`||h===`activating_then_deactivate`||h===`deactivating`?lN:cN),_=e-c.current;if(_>=g){if(c.current=e-_%g,h===`activating`||h===`activating_then_deactivate`)o.current++,o.current>aN&&(h===`activating_then_deactivate`?(a.current=`deactivating`,o.current=aN):(a.current=`recording`,o.current=oN,s.current=1));else if(h===`recording`)o.current+=s.current,o.current>=sN?(o.current=sN,s.current=-1):o.current<=oN&&(o.current=oN,s.current=1);else if(h===`deactivating`&&(o.current--,o.current<iN)){a.current=`idle`,u.clearRect(0,0,p,f),d.current?.(),l.current=requestAnimationFrame(m);return}}let v=o.current%tN,y=Math.floor(o.current/tN);u.clearRect(0,0,p,f),u.imageSmoothingEnabled=!0,u.imageSmoothingQuality=`high`,u.drawImage(n,v*nN,y*rN,nN,rN,0,0,p,f),l.current=requestAnimationFrame(m)},[p,f]);return(0,j.useEffect)(()=>{let e=r.current;if(!e)return;let t=window.devicePixelRatio||1;return e.width=p*t,e.height=f*t,e.getContext(`2d`).setTransform(t,0,0,t,0,0),l.current=requestAnimationFrame(m),()=>cancelAnimationFrame(l.current)},[m,p,f]),(0,M.jsx)(`canvas`,{ref:r,style:{width:p,height:f,display:`block`}})}function pN(){let e=(0,j.useRef)(null),[t,n]=(0,j.useState)(!1),[r,i]=(0,j.useState)(`Bloby`),[a,o]=(0,j.useState)(!1),[s,c]=(0,j.useState)(!1),[l,u]=(0,j.useState)(!1),[d,f]=(0,j.useState)(0),p=(0,j.useRef)(null),m=(0,j.useRef)(!1),[h,_]=(0,j.useState)(!0),[v,b]=(0,j.useState)(null),[w,T]=(0,j.useState)(null),[E,ee]=(0,j.useState)(!1),[ne,re]=(0,j.useState)(!1),[O,ie]=(0,j.useState)(!1),[ae,oe]=(0,j.useState)(`loading`);function k(e){let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}async function se(){try{if(await Notification.requestPermission()!==`granted`){oe(`denied`);return}let t=await navigator.serviceWorker.ready,{publicKey:n}=await(await fetch(`/api/push/vapid-public-key`)).json(),r=(await t.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:k(n)})).toJSON(),i=e.current;i&&i.send(`push:subscribe`,{endpoint:r.endpoint,keys:r.keys}),oe(`subscribed`)}catch(e){console.error(`[push] Subscribe failed:`,e)}}async function ce(){try{let t=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(t){let n=t.endpoint;await t.unsubscribe();let r=e.current;r&&r.send(`push:unsubscribe`,{endpoint:n})}oe(`unsubscribed`)}catch(e){console.error(`[push] Unsubscribe failed:`,e)}}let[ue,A]=(0,j.useState)(!1),de=/iPad|iPhone|iPod/.test(navigator.userAgent),me=window.matchMedia(`(display-mode: standalone)`).matches||navigator.standalone,ge=/Android|iPhone|iPad|iPod|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),_e=window.self!==window.top;(0,j.useEffect)(()=>{let e=e=>{e.data?.type===`bloby:show-ios-install`&&A(!0)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[]);let[we,Ee]=(0,j.useState)(!1),[De,Oe]=(0,j.useState)(!1),[ke,Ae]=(0,j.useState)(!1),[je,Me]=(0,j.useState)(!1);(0,j.useEffect)(()=>{(async()=>{try{let e=await(await fetch(`/api/onboard/status`)).json();if(e.totpEnabled&&Me(!0),!e.portalConfigured){Oe(!1),Ae(!0),Ee(!0);return}Oe(!0);let t=ve();if(t){if((await(await fetch(`/api/portal/validate-token?token=${encodeURIComponent(t)}`)).json()).valid){Ae(!0),Ee(!0);return}be()}Ae(!1),Ee(!0)}catch{Ae(!0),Ee(!0)}})()},[]);let Ne=e=>{ye(e),Ae(!0)};(0,j.useEffect)(()=>{xe(()=>{Ae(!1),Oe(!0)})},[]),(0,j.useEffect)(()=>{if(!ke)return;let e=()=>{fetch(`/app/api/health`).then(e=>_(e.ok)).catch(()=>_(!1))};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[ke]),(0,j.useEffect)(()=>{ke&&(async()=>{if(!(`PushManager`in window)||!(`serviceWorker`in navigator)){oe(`unsupported`);return}if(Notification.permission===`denied`){oe(`denied`);return}try{let e=await(await navigator.serviceWorker.ready).pushManager.getSubscription();oe(e&&(await(await fetch(`/api/push/status?endpoint=${encodeURIComponent(e.endpoint)}`)).json()).subscribed?`subscribed`:`unsubscribed`)}catch{oe(`unsupported`)}})()},[ke]),(0,j.useEffect)(()=>{if(!ke)return;let t=location.protocol===`https:`?`wss:`:`ws:`,r=location.host,i=new he(`${t}//${r}/bloby/ws`,ve);e.current=i;let a=i.onStatus(e=>{n(e),e&&m.current&&f(e=>e+1),m.current=e}),o=i.on(`app:rebuilding`,()=>{window.parent?.postMessage({type:`bloby:rebuilding`},`*`)}),s=i.on(`app:rebuilt`,()=>{window.parent?.postMessage({type:`bloby:rebuilt`},`*`)}),c=i.on(`app:build-error`,e=>{window.parent?.postMessage({type:`bloby:build-error`,error:e.error},`*`)}),l=i.on(`app:hmr-update`,()=>{window.parent?.postMessage({type:`bloby:hmr-update`},`*`)}),u=i.on(`bot:response`,()=>{window.parent?.postMessage({type:`bloby:new-message`},`*`)}),d=i.on(`chat:sync`,()=>{window.parent?.postMessage({type:`bloby:new-message`},`*`)});return i.connect(),()=>{a(),o(),s(),c(),l(),u(),d(),i.disconnect()}},[ke]),(0,j.useEffect)(()=>{ke&&(Se(`/api/settings`).then(e=>e.json()).then(e=>{e.agent_name&&i(e.agent_name),e.whisper_enabled===`true`&&o(!0)}).catch(()=>{}),Se(`/api/wallet/balance`).then(e=>e.json()).then(e=>{e.address&&(b(e.tempo??`0.00`),T(e.base??`0.00`))}).catch(()=>{}))},[ke]),(0,j.useEffect)(()=>{if(!s)return;let e=e=>{p.current&&!p.current.contains(e.target)&&c(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[s]);let{messages:Pe,streaming:Fe,streamBuffer:Ie,tools:Le,hasMore:Re,loadOlder:ze,sendMessage:Be,addPendingAudio:Ve,stopStreaming:He,clearContext:Ue}=Ce(e.current,d,ke);return(0,j.useEffect)(()=>{let t=async t=>{if(t.data?.type!==`bloby:voice-record`)return;let{audio:n,transcript:r}=t.data;if(n&&a){let t=e.current;if(!t?.connected)return;try{let e=await new Promise((e,r)=>{let i=t.on(`whisper:result`,t=>{i(),clearTimeout(a),e(t)}),a=setTimeout(()=>{i(),r(Error(`Timeout`))},3e4);t.send(`whisper:transcribe`,{audio:n})});e.transcript?.trim()&&Be(e.transcript.trim(),void 0,`data:audio/webm;base64,${n}`)}catch(e){console.error(`[BlobyApp] widget voice transcription error:`,e)}}else r?.trim()&&Be(r.trim())};return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[Be,a]),we?De&&!ke?(0,M.jsx)(Te,{onLogin:Ne,totpEnabled:je}):(0,M.jsxs)(`div`,{className:`flex flex-col h-dvh overflow-hidden`,children:[(0,M.jsxs)(`div`,{className:`flex items-center px-4 py-3.5 border-b border-white/[0.06] shrink-0`,children:[(0,M.jsx)(`button`,{onClick:()=>window.parent?.postMessage({type:`bloby:close`},`*`),className:`flex items-center justify-center h-8 w-8 -ml-1 rounded-full text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors`,"aria-label":`Close chat`,children:(0,M.jsx)(g,{className:`h-[18px] w-[18px]`})}),(0,M.jsx)(`div`,{className:`relative ml-1.5 shrink-0`,children:O?(0,M.jsx)(fN,{recording:ne,height:36,onDone:()=>ie(!1)}):(0,M.jsx)(`img`,{src:`/bloby.png`,alt:r,className:`h-9 w-auto`})}),(0,M.jsxs)(`div`,{className:`flex flex-col ml-2.5 min-w-0`,children:[(0,M.jsx)(`span`,{className:`text-[15px] font-semibold leading-tight tracking-[-0.01em]`,children:r}),(0,M.jsx)(`div`,{className:`flex items-center gap-1.5 mt-0.5`,children:(0,M.jsxs)(`span`,{className:`flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,M.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full ${t?`bg-emerald-500`:`bg-red-500`}`}),t?`Online`:`Offline`]})})]}),(0,M.jsx)(`div`,{className:`flex-1`}),(v!==null||w!==null)&&(0,M.jsxs)(`div`,{className:`relative mr-1.5`,onMouseEnter:()=>ee(!0),onMouseLeave:()=>ee(!1),children:[(0,M.jsxs)(`div`,{className:`flex items-center rounded-xl bg-white/[0.04] border border-white/[0.06] pl-3 pr-1 py-1`,children:[(0,M.jsxs)(`span`,{className:`text-[11px] text-muted-foreground/70 mr-1.5`,children:[(0,M.jsx)(`span`,{className:`hidden sm:inline`,children:`My `}),`Wallet:`]}),(0,M.jsxs)(`span`,{className:`text-[13px] font-semibold font-mono tracking-tight`,children:[`$`,(Number(v??0)+Number(w??0)).toFixed(2)]}),(0,M.jsx)(`div`,{className:`w-px h-4 bg-white/[0.08] mx-2`}),(0,M.jsxs)(`a`,{href:`https://www.bloby.bot/dashboard`,target:`_blank`,rel:`noopener noreferrer`,className:`text-[11px] font-semibold text-primary bg-primary/10 hover:bg-primary/20 px-2.5 py-1 rounded-lg transition-colors`,children:[(0,M.jsx)(`span`,{className:`sm:hidden`,children:`+`}),(0,M.jsx)(`span`,{className:`hidden sm:inline`,children:`+ Add`})]})]}),E&&(0,M.jsx)(`div`,{className:`absolute right-0 top-full pt-1.5 z-50`,children:(0,M.jsxs)(`div`,{className:`min-w-[220px] rounded-xl border border-white/[0.06] bg-popover py-2 shadow-xl`,children:[(0,M.jsx)(`div`,{className:`px-3.5 pb-2 text-[10px] uppercase tracking-wider text-muted-foreground/60`,children:`Balances`}),(0,M.jsxs)(`div`,{className:`flex items-center justify-between px-3.5 py-1.5`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`img`,{src:`https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@master/svg/color/usdc.svg`,alt:`USDC`,className:`h-5 w-5`}),(0,M.jsxs)(`span`,{className:`text-[13px] font-semibold font-mono tracking-tight`,children:[`$`,Number(v??0).toFixed(2)]})]}),(0,M.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`on Tempo`})]}),(0,M.jsxs)(`div`,{className:`flex items-center justify-between px-3.5 py-1.5`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`img`,{src:`https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@master/svg/color/usdc.svg`,alt:`USDC`,className:`h-5 w-5`}),(0,M.jsxs)(`span`,{className:`text-[13px] font-semibold font-mono tracking-tight`,children:[`$`,Number(w??0).toFixed(2)]})]}),(0,M.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`on Base`})]})]})})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[ae!==`loading`&&ae!==`unsupported`&&(0,M.jsx)(`button`,{onClick:()=>{ae===`subscribed`?ce():ae===`unsubscribed`&&se()},disabled:ae===`denied`,className:`flex items-center justify-center h-8 w-8 rounded-full text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors disabled:opacity-40 disabled:cursor-not-allowed`,title:ae===`denied`?`Notifications blocked — enable in browser settings`:ae===`subscribed`?`Disable push notifications`:`Enable push notifications`,children:ae===`denied`?(0,M.jsx)(x,{className:`h-[18px] w-[18px]`}):ae===`subscribed`?(0,M.jsx)(S,{className:`h-[18px] w-[18px] text-primary`}):(0,M.jsx)(C,{className:`h-[18px] w-[18px]`})}),(0,M.jsxs)(`div`,{className:`relative`,ref:p,children:[(0,M.jsx)(`button`,{onClick:()=>c(e=>!e),className:`flex items-center justify-center h-8 w-8 rounded-full text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors`,children:(0,M.jsx)(te,{className:`h-[18px] w-[18px]`})}),s&&(0,M.jsxs)(`div`,{className:`absolute right-0 top-full mt-1.5 min-w-[180px] rounded-xl border border-white/[0.06] bg-popover py-1.5 shadow-xl z-50`,children:[(0,M.jsxs)(`button`,{onClick:()=>{u(!0),c(!1)},className:`flex w-full items-center gap-2.5 px-3.5 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors`,children:[(0,M.jsx)(fe,{className:`h-4 w-4`}),`Settings`]}),ge&&!me&&(0,M.jsxs)(`button`,{onClick:()=>{c(!1),_e?window.parent.postMessage({type:`bloby:install-app`},`*`):A(!0)},className:`flex w-full items-center gap-2.5 px-3.5 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-white/[0.06] transition-colors`,children:[(0,M.jsx)(D,{className:`h-4 w-4`}),`Install App`]})]})]})]})]}),(0,M.jsxs)(`div`,{className:`flex-1 min-h-0 flex flex-col overflow-hidden`,children:[(0,M.jsx)(qM,{messages:Pe,streaming:Fe,streamBuffer:Ie,tools:Le,hasMore:Re,onLoadOlder:ze}),(0,M.jsx)(eN,{onSend:Be,onStop:He,streaming:Fe,whisperEnabled:a,onTranscribe:t=>new Promise((n,r)=>{let i=e.current;if(!i?.connected){r(Error(`WebSocket not connected`));return}let a=i.on(`whisper:result`,e=>{a(),clearTimeout(o),n(e)}),o=setTimeout(()=>{a(),r(Error(`Transcription timeout`))},3e4);i.send(`whisper:transcribe`,{audio:t})}),onAudioReady:Ve,onRecordingChange:e=>{re(e),e&&ie(!0)}})]}),l&&(0,M.jsx)(y,{onSave:t=>new Promise((n,r)=>{let i=e.current;if(!i?.connected){r(Error(`WebSocket not connected`));return}let a=i.on(`settings:saved`,e=>{a(),clearTimeout(s),n(e)}),o=i.on(`settings:save-error`,e=>{o(),clearTimeout(s),r(Error(e.error||`Save failed`))}),s=setTimeout(()=>{a(),o(),r(Error(`Save timeout`))},1e4);i.send(`settings:save`,t)}),onTunnelSwitch:t=>new Promise((n,r)=>{let i=e.current;if(!i?.connected){r(Error(`Not connected`));return}let a=i.on(`tunnel:switched`,e=>{a(),o(),clearTimeout(s),n(e)}),o=i.on(`tunnel:switch-error`,e=>{a(),o(),clearTimeout(s),r(Error(e.error))}),s=setTimeout(()=>{a(),o(),r(Error(`Timeout`))},3e4);i.send(`tunnel:switch`,{mode:t})}),onComplete:()=>{u(!1),Se(`/api/settings`).then(e=>e.json()).then(e=>{e.agent_name&&i(e.agent_name),o(e.whisper_enabled===`true`)}).catch(()=>{}),window.parent?.postMessage({type:`bloby:onboard-complete`},`*`)}}),ue&&(0,M.jsxs)(`div`,{className:`fixed inset-0 z-[300] flex items-end sm:items-center justify-center p-4`,children:[(0,M.jsx)(`div`,{className:`absolute inset-0 bg-black/60 backdrop-blur-sm`,onClick:()=>A(!1)}),(0,M.jsxs)(`div`,{className:`relative w-full max-w-[360px] bg-[#1c1c1e] border border-white/[0.08] rounded-2xl shadow-2xl overflow-hidden`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between px-5 pt-5 pb-2`,children:[(0,M.jsx)(`h2`,{className:`text-[17px] font-semibold text-white`,children:`Install App`}),(0,M.jsx)(`button`,{onClick:()=>A(!1),className:`h-7 w-7 rounded-full bg-white/[0.08] flex items-center justify-center text-white/50 hover:text-white/80 transition-colors`,children:(0,M.jsx)(pe,{className:`h-4 w-4`})})]}),(0,M.jsxs)(`div`,{className:`px-5 pb-6 pt-1`,children:[(0,M.jsx)(`p`,{className:`text-white/50 text-[13px] mb-5 leading-relaxed`,children:`Add Bloby to your home screen for a full-screen app experience.`}),de?(0,M.jsxs)(`div`,{className:`space-y-3.5`,children:[(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`1`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Tap the Share button`}),(0,M.jsxs)(`p`,{className:`text-white/40 text-[12px] mt-0.5 flex items-center gap-1.5`,children:[`The `,(0,M.jsx)(le,{className:`h-3.5 w-3.5 inline`}),` icon at the bottom of Safari`]})]})]}),(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`2`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Scroll down and tap`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[12px] mt-0.5`,children:`"Add to Home Screen"`})]})]}),(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`3`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Tap "Add"`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[12px] mt-0.5`,children:`Bloby will appear on your home screen`})]})]})]}):(0,M.jsxs)(`div`,{className:`space-y-3.5`,children:[(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`1`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Open browser menu`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[12px] mt-0.5`,children:`Tap the three-dot menu in your browser`})]})]}),(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(`span`,{className:`flex-shrink-0 w-7 h-7 rounded-full bg-[#007AFF]/15 text-[#007AFF] text-[13px] font-semibold flex items-center justify-center mt-0.5`,children:`2`}),(0,M.jsxs)(`div`,{className:`flex-1`,children:[(0,M.jsx)(`p`,{className:`text-white text-[14px] font-medium`,children:`Tap "Install app" or "Add to Home screen"`}),(0,M.jsx)(`p`,{className:`text-white/40 text-[12px] mt-0.5`,children:`Bloby will be installed as a standalone app`})]})]})]}),(0,M.jsx)(`button`,{onClick:()=>A(!1),className:`w-full mt-5 py-2.5 bg-white/[0.06] hover:bg-white/[0.1] text-white text-[14px] font-medium rounded-xl transition-colors`,children:`Got it`})]})]})]})]}):(0,M.jsx)(`div`,{className:`flex items-center justify-center h-dvh`,children:(0,M.jsx)(`div`,{className:`w-6 h-6 border-2 border-white/10 border-t-white/50 rounded-full animate-spin`})})}me.createRoot(document.getElementById(`root`)).render((0,M.jsx)(j.StrictMode,{children:(0,M.jsx)(pN,{})}));export{DC as i,kx as n,CC as r,tx as t};
@@ -1 +1 @@
1
- import{c as e,r as t,t as n}from"./jsx-runtime-C0W9Wf2W.js";import{n as r,r as i,t as a}from"./bloby-l8C6YuPm.js";var o=e(t(),1),s=n(),c=({code:e,language:t,raw:n,className:c,startLine:l,lineNumbers:u,...d})=>{let{shikiTheme:f}=(0,o.useContext)(i),p=r(),[m,h]=(0,o.useState)(n);return(0,o.useEffect)(()=>{if(!p){h(n);return}let r=p.highlight({code:e,language:t,themes:f},e=>{h(e)});r&&h(r)},[e,t,f,p,n]),(0,s.jsx)(a,{className:c,language:t,lineNumbers:u,result:m,startLine:l,...d})};export{c as HighlightedCodeBlockBody};
1
+ import{c as e,r as t,t as n}from"./jsx-runtime-C0W9Wf2W.js";import{n as r,r as i,t as a}from"./bloby-B2Y96IF2.js";var o=e(t(),1),s=n(),c=({code:e,language:t,raw:n,className:c,startLine:l,lineNumbers:u,...d})=>{let{shikiTheme:f}=(0,o.useContext)(i),p=r(),[m,h]=(0,o.useState)(n);return(0,o.useEffect)(()=>{if(!p){h(n);return}let r=p.highlight({code:e,language:t,themes:f},e=>{h(e)});r&&h(r)},[e,t,f,p,n]),(0,s.jsx)(a,{className:c,language:t,lineNumbers:u,result:m,startLine:l,...d})};export{c as HighlightedCodeBlockBody};
@@ -0,0 +1 @@
1
+ import{i as e}from"./bloby-B2Y96IF2.js";export{e as Mermaid};
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content" />
6
6
  <title>Bloby Chat</title>
7
- <script type="module" crossorigin src="/bloby/assets/bloby-l8C6YuPm.js"></script>
7
+ <script type="module" crossorigin src="/bloby/assets/bloby-B2Y96IF2.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/bloby/assets/jsx-runtime-C0W9Wf2W.js">
9
9
  <link rel="modulepreload" crossorigin href="/bloby/assets/globals-DNO3ilRx.js">
10
10
  <link rel="stylesheet" crossorigin href="/bloby/assets/globals-D60b-8LY.css">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bloby-bot",
3
- "version": "0.49.4",
3
+ "version": "0.49.5",
4
4
  "releaseNotes": [
5
5
  "1. Something great..",
6
6
  "2. ",
@@ -877,13 +877,19 @@ export class ChannelManager {
877
877
  // turn owns the reply.
878
878
  this.routeWaStreamEvent(waState, type, eventData, botName);
879
879
 
880
- // Persist the assistant's reply to the conversation's DB
880
+ // Persist the assistant's reply to the conversation's DB and mirror to
881
+ // the chat-bubble UI via chat:sync (bot:response is suppressed for non-
882
+ // dashboard turns, so the chat would otherwise stay empty until refresh).
881
883
  if (type === 'bot:response' && eventData.content) {
882
884
  workerApi(`/api/conversations/${convId}/messages`, 'POST', {
883
885
  role: 'assistant',
884
886
  content: eventData.content,
885
887
  meta: { model },
886
888
  }).catch(() => {});
889
+ broadcastBloby('chat:sync', {
890
+ conversationId: convId,
891
+ message: { role: 'assistant', content: eventData.content, timestamp: new Date().toISOString() },
892
+ });
887
893
  }
888
894
 
889
895
  // Handle turn completion — restart backend if file tools were used,
@@ -1023,6 +1029,13 @@ export class ChannelManager {
1023
1029
  content: eventData.content,
1024
1030
  meta: { model },
1025
1031
  }).catch(() => {});
1032
+ // Mirror the assistant reply to the chat-bubble UI (bot:response is
1033
+ // suppressed for non-dashboard turns, so the chat would otherwise stay
1034
+ // empty until refresh).
1035
+ broadcastBloby('chat:sync', {
1036
+ conversationId: convId,
1037
+ message: { role: 'assistant', content: eventData.content, timestamp: new Date().toISOString() },
1038
+ });
1026
1039
  }
1027
1040
 
1028
1041
  if (type === 'bot:turn-complete') {
@@ -30,16 +30,29 @@ function formatTime(iso: string): string {
30
30
  }
31
31
 
32
32
  /** Parse the leading channel tag from content, e.g. "[Mac]\n..." → { tag: "Mac", body: "..." }.
33
- * User messages without an explicit tag default to "Chat" (PWA chat bubble). */
33
+ * Messages without an explicit tag default to "Chat" (PWA chat bubble).
34
+ * Also strips the [voice] prefix that the workspace prepends to voice transcripts,
35
+ * and trims any "[Mac] " / "[Alexa] " etc. that the agent echoes at the start of replies. */
34
36
  function parseChannelTag(text: string): { tag: string; body: string } {
37
+ // Channel tag form: "[Name]\n..." (followed by newline) — set on user messages
35
38
  const m = text.match(/^\[([^\]]+)\]\n([\s\S]*)$/);
36
- if (!m) return { tag: 'Chat', body: text };
37
- const raw = m[1].split('|')[0].trim();
38
- // Normalize labels for display: [PWA] → Chat, [workspace] → Workspace
39
- let tag = raw;
40
- if (raw === 'PWA') tag = 'Chat';
41
- else if (raw.toLowerCase() === 'workspace') tag = 'Workspace';
42
- return { tag, body: m[2] };
39
+ let body: string;
40
+ let tag = 'Chat';
41
+ if (m) {
42
+ body = m[2];
43
+ const raw = m[1].split('|')[0].trim();
44
+ if (raw === 'PWA') tag = 'Chat';
45
+ else if (raw.toLowerCase() === 'workspace') tag = 'Workspace';
46
+ else tag = raw;
47
+ } else {
48
+ body = text;
49
+ }
50
+ // Strip "[voice] " prefix the workspace prepends to voice transcripts
51
+ if (body.startsWith('[voice] ')) body = body.slice('[voice] '.length);
52
+ // Strip echoed channel name the agent sometimes prefixes to its reply,
53
+ // e.g. "[Mac] Got it" or "[Alexa] sure thing"
54
+ body = body.replace(/^\[(Mac|Alexa|WhatsApp|Chat|PWA|Workspace|workspace)\]\s*/i, '');
55
+ return { tag, body };
43
56
  }
44
57
 
45
58
  function ChannelIcon({ tag }: { tag: string }) {
@@ -195,8 +208,8 @@ export default function MessageBubble({ role, content, timestamp, hasAttachments
195
208
  const isUser = role === 'user';
196
209
  const time = timestamp ? formatTime(timestamp) : '';
197
210
 
198
- // Strip channel tag from user messages for clean display
199
- const { tag: channelTag, body: displayContent } = isUser ? parseChannelTag(content) : { tag: '', body: content };
211
+ // Strip channel tag (and [voice] prefix / echoed tags in assistant replies) from BOTH sides
212
+ const { tag: channelTag, body: displayContent } = parseChannelTag(content);
200
213
 
201
214
  // Separate image and document attachments
202
215
  const imageAtts = attachments?.filter((a) => a.mediaType?.startsWith('image/')) || [];
@@ -259,14 +272,12 @@ export default function MessageBubble({ role, content, timestamp, hasAttachments
259
272
  )}
260
273
  </div>
261
274
  </div>
262
- {/* Timestamp + channel icon */}
275
+ {/* Timestamp + channel icon (icon only on user messages — it represents the sender) */}
263
276
  <div className="flex items-center gap-1 px-1 self-end">
264
- {channelTag && (
265
- <span className="flex items-center gap-0.5 text-[10px] text-muted-foreground/40">
266
- <ChannelIcon tag={channelTag} />
267
- {channelTag}
268
- </span>
269
- )}
277
+ <span className="flex items-center gap-0.5 text-[10px] text-muted-foreground/40">
278
+ <ChannelIcon tag={channelTag} />
279
+ {channelTag}
280
+ </span>
270
281
  {time && <span className="text-[10px] text-muted-foreground/50">{time}</span>}
271
282
  </div>
272
283
  </div>
@@ -346,13 +357,13 @@ export default function MessageBubble({ role, content, timestamp, hasAttachments
346
357
  );
347
358
 
348
359
  // Check if content has custom tags — if so, split into segments
349
- if (hasCustomTags(content)) {
350
- const segments = extractContentSegments(content);
360
+ if (hasCustomTags(displayContent)) {
361
+ const segments = extractContentSegments(displayContent);
351
362
 
352
363
  return (
353
364
  <div className="flex flex-col items-start gap-0.5">
354
365
  <div className="group relative w-full">
355
- <CopyButton text={content} />
366
+ <CopyButton text={displayContent} />
356
367
  <div
357
368
  className="rounded-2xl px-4 py-2.5 text-sm leading-relaxed bg-muted text-foreground prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 break-words"
358
369
  onClickCapture={handleStreamdownClick}
@@ -375,12 +386,12 @@ export default function MessageBubble({ role, content, timestamp, hasAttachments
375
386
  return (
376
387
  <div className="flex flex-col items-start gap-0.5">
377
388
  <div className="group relative w-full">
378
- <CopyButton text={content} />
389
+ <CopyButton text={displayContent} />
379
390
  <div
380
391
  className="rounded-2xl px-4 py-2.5 text-sm leading-relaxed bg-muted text-foreground prose prose-sm prose-invert max-w-none [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 break-words"
381
392
  onClickCapture={handleStreamdownClick}
382
393
  >
383
- {renderStreamdown(content)}
394
+ {renderStreamdown(displayContent)}
384
395
  </div>
385
396
  </div>
386
397
  {time && <span className="text-[10px] text-muted-foreground/50 px-1">{time}</span>}
@@ -107,9 +107,13 @@ export default function MessageList({ messages, streaming, streamBuffer, tools,
107
107
  />
108
108
  ))}
109
109
 
110
- {/* Typing / streaming bubble — shown as soon as agent starts */}
110
+ {/* Typing / streaming bubble — shown as soon as agent starts.
111
+ Strip the leading "[Mac] " / "[Alexa] " / etc. that the agent sometimes echoes. */}
111
112
  {streaming && (
112
- <TypingIndicator text={streamBuffer} toolName={currentToolName} />
113
+ <TypingIndicator
114
+ text={streamBuffer.replace(/^\[(Mac|Alexa|WhatsApp|Chat|PWA|Workspace|workspace)\]\s*/i, '')}
115
+ toolName={currentToolName}
116
+ />
113
117
  )}
114
118
  </div>
115
119
  <div ref={bottomRef} />
@@ -1 +0,0 @@
1
- import{i as e}from"./bloby-l8C6YuPm.js";export{e as Mermaid};