orbitchat 2.14.0 → 2.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{_baseUniq-BRKsqoH--68FUaYxk.js → _baseUniq-BRKsqoH--CzpIYnbF.js} +1 -1
- package/dist/assets/{arc-pab_su9s-BuY-VRZt.js → arc-pab_su9s-DhurQhL4.js} +1 -1
- package/dist/assets/{architectureDiagram-VXUJARFQ-DqQ8r_6g-C5b5VsO8.js → architectureDiagram-VXUJARFQ-DqQ8r_6g-eqA8fOch.js} +1 -1
- package/dist/assets/{blockDiagram-VD42YOAC-B-dKfcH3-DVjqMJ-3.js → blockDiagram-VD42YOAC-B-dKfcH3-DT3R176S.js} +1 -1
- package/dist/assets/{c4Diagram-YG6GDRKO-DMUPaBEl-o6ghjFV9.js → c4Diagram-YG6GDRKO-DMUPaBEl-q6bAZUce.js} +1 -1
- package/dist/assets/channel-HKsfPa5q-DshlUHWu.js +1 -0
- package/dist/assets/{chunk-4BX2VUAB-CX67kh_B-Dl0Loq_e.js → chunk-4BX2VUAB-CX67kh_B-gkWPpLiy.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-BocSyyvr-DYW83vZR.js → chunk-55IACEB6-BocSyyvr-9ksZ29Ab.js} +1 -1
- package/dist/assets/{chunk-B4BG7PRW-CO8QAyfE-CsF1OX4R.js → chunk-B4BG7PRW-CO8QAyfE-CNBeArXO.js} +1 -1
- package/dist/assets/{chunk-DI55MBZ5-Dw1L6Eos-Dl1shJzL.js → chunk-DI55MBZ5-Dw1L6Eos-BVbGVMNG.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-dPK7Boav-Cz7OoDLR.js → chunk-FMBD7UC4-dPK7Boav-tO950uDG.js} +1 -1
- package/dist/assets/{chunk-QN33PNHL-vP2PqfVG-BuQNN8G2.js → chunk-QN33PNHL-vP2PqfVG-Y3PYDsm9.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-Bcidzu63-Bud1NKOb.js → chunk-QZHKN3VN-Bcidzu63-BAQ3PYro.js} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-BtljMjlg-BKLxPJ-x.js → chunk-TZMSLE5B-BtljMjlg-CwIvybWR.js} +1 -1
- package/dist/assets/{classDiagram-2ON5EDUG-C7cYN9hv-BHg-LSxQ.js → classDiagram-2ON5EDUG-C7cYN9hv-CGN1Rq_o.js} +1 -1
- package/dist/assets/{classDiagram-v2-WZHVMYZB-C7cYN9hv-BHg-LSxQ.js → classDiagram-v2-WZHVMYZB-C7cYN9hv-CGN1Rq_o.js} +1 -1
- package/dist/assets/clone-DoPb9X13-C3rfr14F.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-BGzO4EsH-rofdToAx.js → cose-bilkent-S5V4N54A-BGzO4EsH-DtYXpCOp.js} +1 -1
- package/dist/assets/{dagre-6UL2VRFP-TzNvXCds-Ls1mVyc7.js → dagre-6UL2VRFP-TzNvXCds-xMthYtzg.js} +1 -1
- package/dist/assets/{diagram-PSM6KHXK-BqY4RpUg-BJmYXUei.js → diagram-PSM6KHXK-BqY4RpUg-CtQy_-7V.js} +1 -1
- package/dist/assets/{diagram-QEK2KX5R-CTjgBsne-dz-VLadE.js → diagram-QEK2KX5R-CTjgBsne-DROkeGJL.js} +1 -1
- package/dist/assets/{diagram-S2PKOQOG-BqrhTIpA-ikxUE9Dj.js → diagram-S2PKOQOG-BqrhTIpA-Bv0e-7TM.js} +1 -1
- package/dist/assets/{erDiagram-Q2GNP2WA-B2hsi_Tl-B5gu6Jrx.js → erDiagram-Q2GNP2WA-B2hsi_Tl-BbvH-Jb1.js} +1 -1
- package/dist/assets/{flowDiagram-NV44I4VS-C03vtt_F-C9LVdVvn.js → flowDiagram-NV44I4VS-C03vtt_F-DT9Y-btb.js} +1 -1
- package/dist/assets/{ganttDiagram-JELNMOA3-B3hAg964-CYO6ZcQ8.js → ganttDiagram-JELNMOA3-B3hAg964-CnqUJtIB.js} +1 -1
- package/dist/assets/{gitGraphDiagram-NY62KEGX-ByhMH0yZ-BvO0WGzP.js → gitGraphDiagram-NY62KEGX-ByhMH0yZ-CdQlDU7A.js} +1 -1
- package/dist/assets/{graph-BmNkcFEM-Bl2fiTgr.js → graph-BmNkcFEM-mCcAnvHY.js} +1 -1
- package/dist/assets/{index-BXexqYFc-CFPIFV8r.js → index-BXexqYFc-D_cjFmh8.js} +1 -1
- package/dist/assets/index-DBOy9259.css +1 -0
- package/dist/assets/{index-nqhgVFEP.js → index-zlswAhjt.js} +6 -6
- package/dist/assets/{infoDiagram-WHAUD3N6-is6Ho4-T-D6tHdi3J.js → infoDiagram-WHAUD3N6-is6Ho4-T-BHS1wv7y.js} +1 -1
- package/dist/assets/{journeyDiagram-XKPGCS4Q-CRTOL26C-CL4DFaQP.js → journeyDiagram-XKPGCS4Q-CRTOL26C-DkQ68DJ6.js} +1 -1
- package/dist/assets/{kanban-definition-3W4ZIXB7-CNnO_t6O-DZBlsSao.js → kanban-definition-3W4ZIXB7-CNnO_t6O-DWZm5JX4.js} +1 -1
- package/dist/assets/{layout-C0kZPebx-DiUdszUx.js → layout-C0kZPebx-CygTh9Uo.js} +1 -1
- package/dist/assets/{min-7Gb0pNxh-DsojA8pm.js → min-7Gb0pNxh-BfuBtSqq.js} +1 -1
- package/dist/assets/{mindmap-definition-VGOIOE7T-CJZ2wTTa-Cd46k2jT.js → mindmap-definition-VGOIOE7T-CJZ2wTTa-B7rvUdG3.js} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-C9OSknjr-BGVcHmss.js → pieDiagram-ADFJNKIX-C9OSknjr-eiZAefZN.js} +1 -1
- package/dist/assets/{quadrantDiagram-AYHSOK5B-CW8yuAqv-CrCYjmJT.js → quadrantDiagram-AYHSOK5B-CW8yuAqv-DzBEpWQk.js} +1 -1
- package/dist/assets/{requirementDiagram-UZGBJVZJ-nGPhruO1-BzOGHXGi.js → requirementDiagram-UZGBJVZJ-nGPhruO1-z5Z4Fwg9.js} +1 -1
- package/dist/assets/{sankeyDiagram-TZEHDZUN-CmL90u-m-BWp9STLO.js → sankeyDiagram-TZEHDZUN-CmL90u-m-Dk028WXo.js} +1 -1
- package/dist/assets/{sequenceDiagram-WL72ISMW-B02VRcnM-DB4Adljk.js → sequenceDiagram-WL72ISMW-B02VRcnM-Cz8sPx_Q.js} +1 -1
- package/dist/assets/{stateDiagram-FKZM4ZOC-DjoyLUdz-pDyQ50aU.js → stateDiagram-FKZM4ZOC-DjoyLUdz-BxsZBi1n.js} +1 -1
- package/dist/assets/{stateDiagram-v2-4FDKWEC3-Bq76BTB7-C3j4gDpN.js → stateDiagram-v2-4FDKWEC3-Bq76BTB7-BTybFIdr.js} +1 -1
- package/dist/assets/{timeline-definition-IT6M3QCI-CTn0Gm3T-O1FhSixZ.js → timeline-definition-IT6M3QCI-CTn0Gm3T-CI07_-Ei.js} +1 -1
- package/dist/assets/{treemap-KMMF4GRG-BjgLKKyi-DG8IQefJ.js → treemap-KMMF4GRG-BjgLKKyi-Dg9N7uMT.js} +1 -1
- package/dist/assets/{xychartDiagram-PRI3JC2R-Cgg6Uija-CPVch5-l.js → xychartDiagram-PRI3JC2R-Cgg6Uija-BDR2Lfu_.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/channel-HKsfPa5q-rOME8XF8.js +0 -1
- package/dist/assets/clone-DoPb9X13-DejjKfXe.js +0 -1
- package/dist/assets/index-KsGsuMGp.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-TzNvXCds-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-6UL2VRFP-TzNvXCds-xMthYtzg.js","assets/graph-BmNkcFEM-mCcAnvHY.js","assets/_baseUniq-BRKsqoH--CzpIYnbF.js","assets/layout-C0kZPebx-CygTh9Uo.js","assets/min-7Gb0pNxh-BfuBtSqq.js","assets/clone-DoPb9X13-C3rfr14F.js","assets/cose-bilkent-S5V4N54A-BGzO4EsH-DtYXpCOp.js","assets/cytoscape.esm-CjI2IsL8-Da6dFVsf.js","assets/c4Diagram-YG6GDRKO-DMUPaBEl-q6bAZUce.js","assets/chunk-TZMSLE5B-BtljMjlg-CwIvybWR.js","assets/flowDiagram-NV44I4VS-C03vtt_F-DT9Y-btb.js","assets/chunk-FMBD7UC4-dPK7Boav-tO950uDG.js","assets/chunk-55IACEB6-BocSyyvr-9ksZ29Ab.js","assets/chunk-QN33PNHL-vP2PqfVG-Y3PYDsm9.js","assets/channel-HKsfPa5q-DshlUHWu.js","assets/erDiagram-Q2GNP2WA-B2hsi_Tl-BbvH-Jb1.js","assets/gitGraphDiagram-NY62KEGX-ByhMH0yZ-CdQlDU7A.js","assets/chunk-4BX2VUAB-CX67kh_B-gkWPpLiy.js","assets/chunk-QZHKN3VN-Bcidzu63-BAQ3PYro.js","assets/treemap-KMMF4GRG-BjgLKKyi-Dg9N7uMT.js","assets/infoDiagram-WHAUD3N6-is6Ho4-T-BHS1wv7y.js","assets/pieDiagram-ADFJNKIX-C9OSknjr-eiZAefZN.js","assets/arc-pab_su9s-DhurQhL4.js","assets/requirementDiagram-UZGBJVZJ-nGPhruO1-z5Z4Fwg9.js","assets/sequenceDiagram-WL72ISMW-B02VRcnM-Cz8sPx_Q.js","assets/classDiagram-2ON5EDUG-C7cYN9hv-CGN1Rq_o.js","assets/chunk-B4BG7PRW-CO8QAyfE-CNBeArXO.js","assets/classDiagram-v2-WZHVMYZB-C7cYN9hv-CGN1Rq_o.js","assets/stateDiagram-FKZM4ZOC-DjoyLUdz-BxsZBi1n.js","assets/chunk-DI55MBZ5-Dw1L6Eos-BVbGVMNG.js","assets/stateDiagram-v2-4FDKWEC3-Bq76BTB7-BTybFIdr.js","assets/journeyDiagram-XKPGCS4Q-CRTOL26C-DkQ68DJ6.js","assets/timeline-definition-IT6M3QCI-CTn0Gm3T-CI07_-Ei.js","assets/mindmap-definition-VGOIOE7T-CJZ2wTTa-B7rvUdG3.js","assets/kanban-definition-3W4ZIXB7-CNnO_t6O-DWZm5JX4.js","assets/diagram-S2PKOQOG-BqrhTIpA-Bv0e-7TM.js","assets/diagram-QEK2KX5R-CTjgBsne-DROkeGJL.js","assets/blockDiagram-VD42YOAC-B-dKfcH3-DT3R176S.js","assets/architectureDiagram-VXUJARFQ-DqQ8r_6g-eqA8fOch.js","assets/diagram-PSM6KHXK-BqY4RpUg-CtQy_-7V.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
var Jce=Object.defineProperty;var Oce=(e,t,n)=>t in e?Jce(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var wi=(e,t,n)=>Oce(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const A of document.querySelectorAll('link[rel="modulepreload"]'))r(A);new MutationObserver(A=>{for(const i of A)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(A){const i={};return A.integrity&&(i.integrity=A.integrity),A.referrerPolicy&&(i.referrerPolicy=A.referrerPolicy),A.crossOrigin==="use-credentials"?i.credentials="include":A.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(A){if(A.ep)return;A.ep=!0;const i=n(A);fetch(A.href,i)}})();function Wce(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var C4={exports:{}},Cm={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react-jsx-runtime.production.js
|
|
@@ -861,8 +861,8 @@ Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error
|
|
|
861
861
|
node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);const r=e.x,A=e.y,i=Math.abs(r-n.x),a=e.width/2;let s=n.x<t.x?a-i:a+i;const o=e.height/2,l=Math.abs(t.y-n.y),c=Math.abs(t.x-n.x);if(Math.abs(A-t.y)*a>Math.abs(r-t.x)*o){let u=n.y<t.y?t.y-o-A:A-o-t.y;s=c*u/l;const g={x:n.x<t.x?n.x+s:n.x-c+s,y:n.y<t.y?n.y+l-u:n.y-l+u};return s===0&&(g.x=t.x,g.y=t.y),c===0&&(g.x=t.x),l===0&&(g.y=t.y),fe.debug(`abc89 top/bottom calc, Q ${l}, q ${u}, R ${c}, r ${s}`,g),g}else{n.x<t.x?s=t.x-a-r:s=r-a-t.x;let u=l*s/c,g=n.x<t.x?n.x+c-s:n.x-c+s,d=n.y<t.y?n.y+u:n.y-u;return fe.debug(`sides calc abc89, Q ${l}, q ${u}, R ${c}, r ${s}`,{_x:g,_y:d}),s===0&&(g=t.x,d=t.y),c===0&&(g=t.x),l===0&&(d=t.y),{x:g,y:d}}},"intersection"),uW=Y((e,t)=>{fe.warn("abc88 cutPathAtIntersect",e,t);let n=[],r=e[0],A=!1;return e.forEach(i=>{if(fe.info("abc88 checking point",i,t),!t3e(t,i)&&!A){const a=n3e(t,r,i);fe.debug("abc88 inside",i,r,a),fe.debug("abc88 intersection",a,t);let s=!1;n.forEach(o=>{s=s||o.x===a.x&&o.y===a.y}),n.some(o=>o.x===a.x&&o.y===a.y)?fe.warn("abc88 no intersect",a,n):n.push(a),A=!0}else fe.warn("abc88 outside",i,r),r=i,A||n.push(i)}),fe.debug("returning points",n),n},"cutPathAtIntersect");function die(e){const t=[],n=[];for(let r=1;r<e.length-1;r++){const A=e[r-1],i=e[r],a=e[r+1];(A.x===i.x&&i.y===a.y&&Math.abs(i.x-a.x)>5&&Math.abs(i.y-A.y)>5||A.y===i.y&&i.x===a.x&&Math.abs(i.x-A.x)>5&&Math.abs(i.y-a.y)>5)&&(t.push(i),n.push(r))}return{cornerPoints:t,cornerPointPositions:n}}Y(die,"extractCornerPoints");var gW=Y(function(e,t,n){const r=t.x-e.x,A=t.y-e.y,i=Math.sqrt(r*r+A*A),a=n/i;return{x:t.x-a*r,y:t.y-a*A}},"findAdjacentPoint"),r3e=Y(function(e){const{cornerPointPositions:t}=die(e),n=[];for(let r=0;r<e.length;r++)if(t.includes(r)){const A=e[r-1],i=e[r+1],a=e[r],s=gW(A,a,5),o=gW(i,a,5),l=o.x-s.x,c=o.y-s.y;n.push(s);const u=Math.sqrt(2)*2;let g={x:a.x,y:a.y};if(Math.abs(i.x-A.x)>10&&Math.abs(i.y-A.y)>=10){fe.debug("Corner point fixing",Math.abs(i.x-A.x),Math.abs(i.y-A.y));const d=5;a.x===s.x?g={x:l<0?s.x-d+u:s.x+d-u,y:c<0?s.y-u:s.y+u}:g={x:l<0?s.x-u:s.x+u,y:c<0?s.y-d+u:s.y+d-u}}else fe.debug("Corner point skipping fixing",Math.abs(i.x-A.x),Math.abs(i.y-A.y));n.push(g,o)}else n.push(e[r]);return n},"fixCorners"),A3e=Y((e,t,n)=>{const r=e-t-n,A=2,i=2,a=A+i,s=Math.floor(r/a),o=Array(s).fill(`${A} ${i}`).join(" ");return`0 ${t} ${o} ${n}`},"generateDashArray"),i3e=Y(function(e,t,n,r,A,i,a,s=!1){var o;const{handDrawnSeed:l}=Vt();let c=t.points,u=!1;const g=A;var d=i;const B=[];for(const v in t.cssCompiledStyles)One(v)||B.push(t.cssCompiledStyles[v]);fe.debug("UIO intersect check",t.points,d.x,g.x),d.intersect&&g.intersect&&!s&&(c=c.slice(1,t.points.length-1),c.unshift(g.intersect(c[0])),fe.debug("Last point UIO",t.start,"-->",t.end,c[c.length-1],d,d.intersect(c[c.length-1])),c.push(d.intersect(c[c.length-1])));const h=btoa(JSON.stringify(c));t.toCluster&&(fe.info("to cluster abc88",n.get(t.toCluster)),c=uW(t.points,n.get(t.toCluster).node),u=!0),t.fromCluster&&(fe.debug("from cluster abc88",n.get(t.fromCluster),JSON.stringify(c,null,2)),c=uW(c.reverse(),n.get(t.fromCluster).node).reverse(),u=!0);let w=c.filter(v=>!Number.isNaN(v.y));w=r3e(w);let p=th;switch(p=bc,t.curve){case"linear":p=bc;break;case"basis":p=th;break;case"cardinal":p=$ee;break;case"bumpX":p=WG;break;case"bumpY":p=KG;break;case"catmullRom":p=tte;break;case"monotoneX":p=_G;break;case"monotoneY":p=$G;break;case"natural":p=ev;break;case"step":p=tv;break;case"stepAfter":p=rv;break;case"stepBefore":p=nv;break;default:p=th}const{x:f,y:E}=rze(t),y=OG().x(f).y(E).curve(p);let C;switch(t.thickness){case"normal":C="edge-thickness-normal";break;case"thick":C="edge-thickness-thick";break;case"invisible":C="edge-thickness-invisible";break;default:C="edge-thickness-normal"}switch(t.pattern){case"solid":C+=" edge-pattern-solid";break;case"dotted":C+=" edge-pattern-dotted";break;case"dashed":C+=" edge-pattern-dashed";break;default:C+=" edge-pattern-solid"}let I,Q=t.curve==="rounded"?Bie(hie(w,t),5):y(w);const D=Array.isArray(t.style)?t.style:[t.style];let F=D.find(v=>v==null?void 0:v.startsWith("stroke:")),N=!1;if(t.look==="handDrawn"){const v=We.svg(e);Object.assign([],w);const R=v.path(Q,{roughness:.3,seed:l});C+=" transition",I=Ut(R).select("path").attr("id",t.id).attr("class"," "+C+(t.classes?" "+t.classes:"")).attr("style",D?D.reduce((T,K)=>T+";"+K,""):"");let L=I.attr("d");I.attr("d",L),e.node().appendChild(I.node())}else{const v=B.join(";"),R=D?D.reduce((z,$)=>z+$+";",""):"";let L="";t.animate&&(L=" edge-animation-fast"),t.animation&&(L=" edge-animation-"+t.animation);const T=(v?v+";"+R+";":R)+";"+(D?D.reduce((z,$)=>z+";"+$,""):"");I=e.append("path").attr("d",Q).attr("id",t.id).attr("class"," "+C+(t.classes?" "+t.classes:"")+(L??"")).attr("style",T),F=(o=T.match(/stroke:([^;]+)/))==null?void 0:o[1],N=t.animate===!0||!!t.animation||v.includes("animation");const K=I.node(),G=typeof K.getTotalLength=="function"?K.getTotalLength():0,W=b5[t.arrowTypeStart]||0,Ae=b5[t.arrowTypeEnd]||0;if(t.look==="neo"&&!N){const z=`stroke-dasharray: ${t.pattern==="dotted"||t.pattern==="dashed"?A3e(G,W,Ae):`0 ${W} ${G-W-Ae} ${Ae}`}; stroke-dashoffset: 0;`;I.attr("style",z+I.attr("style"))}}I.attr("data-edge",!0),I.attr("data-et","edge"),I.attr("data-id",t.id),I.attr("data-points",h),t.showPoints&&w.forEach(v=>{e.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",v.x).attr("cy",v.y)});let S="";(Vt().flowchart.arrowMarkerAbsolute||Vt().state.arrowMarkerAbsolute)&&(S=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,S=S.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),fe.info("arrowTypeStart",t.arrowTypeStart),fe.info("arrowTypeEnd",t.arrowTypeEnd),q1e(I,t,S,a,r,F);const k=Math.floor(c.length/2),J=c[k];sa.isLabelCoordinateInPath(J,I.attr("d"))||(u=!0);let H={};return u&&(H.updatedPath=c),H.originalPath=t.points,H},"insertEdge");function Bie(e,t){if(e.length<2)return"";let n="";const r=e.length,A=1e-5;for(let i=0;i<r;i++){const a=e[i],s=e[i-1],o=e[i+1];if(i===0)n+=`M${a.x},${a.y}`;else if(i===r-1)n+=`L${a.x},${a.y}`;else{const l=a.x-s.x,c=a.y-s.y,u=o.x-a.x,g=o.y-a.y,d=Math.hypot(l,c),B=Math.hypot(u,g);if(d<A||B<A){n+=`L${a.x},${a.y}`;continue}const h=l/d,w=c/d,p=u/B,f=g/B,E=h*p+w*f,y=Math.max(-1,Math.min(1,E)),C=Math.acos(y);if(C<A||Math.abs(Math.PI-C)<A){n+=`L${a.x},${a.y}`;continue}const I=Math.min(t/Math.sin(C/2),d/2,B/2),Q=a.x-h*I,D=a.y-w*I,F=a.x+p*I,N=a.y+f*I;n+=`L${Q},${D}`,n+=`Q${a.x},${a.y} ${F},${N}`}}return n}Y(Bie,"generateRoundedPath");function nU(e,t){if(!e||!t)return{angle:0,deltaX:0,deltaY:0};const n=t.x-e.x,r=t.y-e.y;return{angle:Math.atan2(r,n),deltaX:n,deltaY:r}}Y(nU,"calculateDeltaAndAngle");function hie(e,t){const n=e.map(A=>({...A}));if(e.length>=2&&qr[t.arrowTypeStart]){const A=qr[t.arrowTypeStart],i=e[0],a=e[1],{angle:s}=nU(i,a),o=A*Math.cos(s),l=A*Math.sin(s);n[0].x=i.x+o,n[0].y=i.y+l}const r=e.length;if(r>=2&&qr[t.arrowTypeEnd]){const A=qr[t.arrowTypeEnd],i=e[r-1],a=e[r-2],{angle:s}=nU(a,i),o=A*Math.cos(s),l=A*Math.sin(s);n[r-1].x=i.x-o,n[r-1].y=i.y-l}return n}Y(hie,"applyMarkerOffsetsToPoints");var a3e=Y((e,t,n,r)=>{t.forEach(A=>{I3e[A](e,n,r)})},"insertMarkers"),s3e=Y((e,t,n)=>{fe.trace("Making markers for ",n),e.append("defs").append("marker").attr("id",n+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",n+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),o3e=Y((e,t,n)=>{e.append("defs").append("marker").attr("id",n+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",n+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),l3e=Y((e,t,n)=>{e.append("defs").append("marker").attr("id",n+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",n+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),c3e=Y((e,t,n)=>{e.append("defs").append("marker").attr("id",n+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",n+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),u3e=Y((e,t,n)=>{e.append("defs").append("marker").attr("id",n+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",n+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),g3e=Y((e,t,n)=>{e.append("marker").attr("id",n+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",n+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),d3e=Y((e,t,n)=>{e.append("marker").attr("id",n+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",n+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),B3e=Y((e,t,n)=>{e.append("marker").attr("id",n+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",n+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),h3e=Y((e,t,n)=>{e.append("defs").append("marker").attr("id",n+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),p3e=Y((e,t,n)=>{e.append("defs").append("marker").attr("id",n+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),e.append("defs").append("marker").attr("id",n+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),f3e=Y((e,t,n)=>{const r=e.append("defs").append("marker").attr("id",n+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");r.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),r.append("path").attr("d","M9,0 L9,18");const A=e.append("defs").append("marker").attr("id",n+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");A.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),A.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),w3e=Y((e,t,n)=>{e.append("defs").append("marker").attr("id",n+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),e.append("defs").append("marker").attr("id",n+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),E3e=Y((e,t,n)=>{const r=e.append("defs").append("marker").attr("id",n+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");r.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),r.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");const A=e.append("defs").append("marker").attr("id",n+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");A.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),A.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),m3e=Y((e,t,n)=>{e.append("defs").append("marker").attr("id",n+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0
|
|
862
862
|
L20,10
|
|
863
863
|
M20,10
|
|
864
|
-
L0,20`)},"requirement_arrow"),y3e=Y((e,t,n)=>{const r=e.append("defs").append("marker").attr("id",n+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");r.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),r.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),r.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),I3e={extension:s3e,composition:o3e,aggregation:l3e,dependency:c3e,lollipop:u3e,point:g3e,circle:d3e,cross:B3e,barb:h3e,only_one:p3e,zero_or_one:f3e,one_or_more:w3e,zero_or_more:E3e,requirement_arrow:m3e,requirement_contains:y3e},C3e=a3e,Q3e={common:nd,getConfig:tA,insertCluster:S1e,insertEdge:i3e,insertEdgeLabel:$1e,insertMarkers:C3e,insertNode:gie,interpolateToCurve:pv,labelHelper:it,log:fe,positionEdgeLabel:e3e},jh={},pie=Y(e=>{for(const t of e)jh[t.name]=t},"registerLayoutLoaders"),M3e=Y(()=>{pie([{name:"dagre",loader:Y(async()=>await Kt(()=>import("./dagre-6UL2VRFP-TzNvXCds-Ls1mVyc7.js"),__vite__mapDeps([0,1,2,3,4,5])),"loader")},{name:"cose-bilkent",loader:Y(async()=>await Kt(()=>import("./cose-bilkent-S5V4N54A-BGzO4EsH-rofdToAx.js"),__vite__mapDeps([6,7])),"loader")}])},"registerDefaultLayoutLoaders");M3e();var XAt=Y(async(e,t)=>{if(!(e.layoutAlgorithm in jh))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);const n=jh[e.layoutAlgorithm];return(await n.loader()).render(e,t,Q3e,{algorithm:n.algorithm})},"render"),ZAt=Y((e="",{fallback:t="dagre"}={})=>{if(e in jh)return e;if(t in jh)return fe.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw new Error(`Both layout algorithms ${e} and ${t} are not registered.`)},"getRegisteredLayoutAlgorithm"),fie="comm",wie="rule",Eie="decl",F3e="@import",Y3e="@namespace",b3e="@keyframes",N3e="@layer",mie=Math.abs,vv=String.fromCharCode;function yie(e){return e.trim()}function Vf(e,t,n){return e.replace(t,n)}function x3e(e,t,n){return e.indexOf(t,n)}function ug(e,t){return e.charCodeAt(t)|0}function Rg(e,t,n){return e.slice(t,n)}function Ga(e){return e.length}function D3e(e){return e.length}function Zp(e,t){return t.push(e),e}var Ty=1,zg=1,Iie=0,Li=0,ar=0,od="";function Rv(e,t,n,r,A,i,a,s){return{value:e,root:t,parent:n,type:r,props:A,children:i,line:Ty,column:zg,length:a,return:"",siblings:s}}function S3e(){return ar}function U3e(){return ar=Li>0?ug(od,--Li):0,zg--,ar===10&&(zg=1,Ty--),ar}function ga(){return ar=Li<Iie?ug(od,Li++):0,zg++,ar===10&&(zg=1,Ty++),ar}function Wo(){return ug(od,Li)}function Pf(){return Li}function Ly(e,t){return Rg(od,e,t)}function Th(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function k3e(e){return Ty=zg=1,Iie=Ga(od=e),Li=0,[]}function G3e(e){return od="",e}function Bx(e){return yie(Ly(Li-1,rU(e===91?e+2:e===40?e+1:e)))}function v3e(e){for(;(ar=Wo())&&ar<33;)ga();return Th(e)>2||Th(ar)>3?"":" "}function R3e(e,t){for(;--t&&ga()&&!(ar<48||ar>102||ar>57&&ar<65||ar>70&&ar<97););return Ly(e,Pf()+(t<6&&Wo()==32&&ga()==32))}function rU(e){for(;ga();)switch(ar){case e:return Li;case 34:case 39:e!==34&&e!==39&&rU(ar);break;case 40:e===41&&rU(e);break;case 92:ga();break}return Li}function z3e(e,t){for(;ga()&&e+ar!==57&&!(e+ar===84&&Wo()===47););return"/*"+Ly(t,Li-1)+"*"+vv(e===47?e:ga())}function j3e(e){for(;!Th(Wo());)ga();return Ly(e,Li)}function T3e(e){return G3e(Xf("",null,null,null,[""],e=k3e(e),0,[0],e))}function Xf(e,t,n,r,A,i,a,s,o){for(var l=0,c=0,u=a,g=0,d=0,B=0,h=1,w=1,p=1,f=0,E="",y=A,C=i,I=r,Q=E;w;)switch(B=f,f=ga()){case 40:if(B!=108&&ug(Q,u-1)==58){x3e(Q+=Vf(Bx(f),"&","&\f"),"&\f",mie(l?s[l-1]:0))!=-1&&(p=-1);break}case 34:case 39:case 91:Q+=Bx(f);break;case 9:case 10:case 13:case 32:Q+=v3e(B);break;case 92:Q+=R3e(Pf()-1,7);continue;case 47:switch(Wo()){case 42:case 47:Zp(L3e(z3e(ga(),Pf()),t,n,o),o),(Th(B||1)==5||Th(Wo()||1)==5)&&Ga(Q)&&Rg(Q,-1,void 0)!==" "&&(Q+=" ");break;default:Q+="/"}break;case 123*h:s[l++]=Ga(Q)*p;case 125*h:case 59:case 0:switch(f){case 0:case 125:w=0;case 59+c:p==-1&&(Q=Vf(Q,/\f/g,"")),d>0&&(Ga(Q)-u||h===0&&B===47)&&Zp(d>32?BW(Q+";",r,n,u-1,o):BW(Vf(Q," ","")+";",r,n,u-2,o),o);break;case 59:Q+=";";default:if(Zp(I=dW(Q,t,n,l,c,A,s,E,y=[],C=[],u,i),i),f===123)if(c===0)Xf(Q,t,I,I,y,i,u,s,C);else{switch(g){case 99:if(ug(Q,3)===110)break;case 108:if(ug(Q,2)===97)break;default:c=0;case 100:case 109:case 115:}c?Xf(e,I,I,r&&Zp(dW(e,I,I,0,0,A,s,E,A,y=[],u,C),C),A,C,u,s,r?y:C):Xf(Q,I,I,I,[""],C,0,s,C)}}l=c=d=0,h=p=1,E=Q="",u=a;break;case 58:u=1+Ga(Q),d=B;default:if(h<1){if(f==123)--h;else if(f==125&&h++==0&&U3e()==125)continue}switch(Q+=vv(f),f*h){case 38:p=c>0?1:(Q+="\f",-1);break;case 44:s[l++]=(Ga(Q)-1)*p,p=1;break;case 64:Wo()===45&&(Q+=Bx(ga())),g=Wo(),c=u=Ga(E=Q+=j3e(Pf())),f++;break;case 45:B===45&&Ga(Q)==2&&(h=0)}}return i}function dW(e,t,n,r,A,i,a,s,o,l,c,u){for(var g=A-1,d=A===0?i:[""],B=D3e(d),h=0,w=0,p=0;h<r;++h)for(var f=0,E=Rg(e,g+1,g=mie(w=a[h])),y=e;f<B;++f)(y=yie(w>0?d[f]+" "+E:Vf(E,/&\f/g,d[f])))&&(o[p++]=y);return Rv(e,t,n,A===0?wie:s,o,l,c,u)}function L3e(e,t,n,r){return Rv(e,t,n,fie,vv(S3e()),Rg(e,2,-2),0,r)}function BW(e,t,n,r,A){return Rv(e,t,n,Eie,Rg(e,0,r),Rg(e,r+1,-1),r,A)}function AU(e,t){for(var n="",r=0;r<e.length;r++)n+=t(e[r],r,e,t)||"";return n}function H3e(e,t,n,r){switch(e.type){case N3e:if(e.children.length)break;case F3e:case Y3e:case Eie:return e.return=e.return||e.value;case fie:return"";case b3e:return e.return=e.value+"{"+AU(e.children,r)+"}";case wie:if(!Ga(e.value=e.props.join(",")))return""}return Ga(n=AU(e.children,r))?e.return=e.value+"{"+n+"}":""}var J3e=Pne(Object.keys,Object),O3e=Object.prototype,W3e=O3e.hasOwnProperty;function K3e(e){if(!xy(e))return J3e(e);var t=[];for(var n in Object(e))W3e.call(e,n)&&n!="constructor"&&t.push(n);return t}var iU=nu(is,"DataView"),aU=nu(is,"Promise"),sU=nu(is,"Set"),oU=nu(is,"WeakMap"),hW="[object Map]",V3e="[object Object]",pW="[object Promise]",fW="[object Set]",wW="[object WeakMap]",EW="[object DataView]",P3e=tu(iU),X3e=tu(Rh),Z3e=tu(aU),q3e=tu(sU),_3e=tu(oU),Pl=id;(iU&&Pl(new iU(new ArrayBuffer(1)))!=EW||Rh&&Pl(new Rh)!=hW||aU&&Pl(aU.resolve())!=pW||sU&&Pl(new sU)!=fW||oU&&Pl(new oU)!=wW)&&(Pl=function(e){var t=id(e),n=t==V3e?e.constructor:void 0,r=n?tu(n):"";if(r)switch(r){case P3e:return EW;case X3e:return hW;case Z3e:return pW;case q3e:return fW;case _3e:return wW}return t});var $3e="[object Map]",eHe="[object Set]",tHe=Object.prototype,nHe=tHe.hasOwnProperty;function mW(e){if(e==null)return!0;if(Dy(e)&&(CE(e)||typeof e=="string"||typeof e.splice=="function"||Bv(e)||hv(e)||IE(e)))return!e.length;var t=Pl(e);if(t==$3e||t==eHe)return!e.size;if(xy(e))return!K3e(e).length;for(var n in e)if(nHe.call(e,n))return!1;return!0}var Cie="c4",rHe=Y(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),AHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./c4Diagram-YG6GDRKO-DMUPaBEl-o6ghjFV9.js");return{diagram:t}},__vite__mapDeps([8,9]));return{id:Cie,diagram:e}},"loader"),iHe={id:Cie,detector:rHe,loader:AHe},aHe=iHe,Qie="flowchart",sHe=Y((e,t)=>{var n,r;return((n=t==null?void 0:t.flowchart)==null?void 0:n.defaultRenderer)==="dagre-wrapper"||((r=t==null?void 0:t.flowchart)==null?void 0:r.defaultRenderer)==="elk"?!1:/^\s*graph/.test(e)},"detector"),oHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./flowDiagram-NV44I4VS-C03vtt_F-C9LVdVvn.js");return{diagram:t}},__vite__mapDeps([10,11,12,13,14]));return{id:Qie,diagram:e}},"loader"),lHe={id:Qie,detector:sHe,loader:oHe},cHe=lHe,Mie="flowchart-v2",uHe=Y((e,t)=>{var n,r,A;return((n=t==null?void 0:t.flowchart)==null?void 0:n.defaultRenderer)==="dagre-d3"?!1:(((r=t==null?void 0:t.flowchart)==null?void 0:r.defaultRenderer)==="elk"&&(t.layout="elk"),/^\s*graph/.test(e)&&((A=t==null?void 0:t.flowchart)==null?void 0:A.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(e))},"detector"),gHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./flowDiagram-NV44I4VS-C03vtt_F-C9LVdVvn.js");return{diagram:t}},__vite__mapDeps([10,11,12,13,14]));return{id:Mie,diagram:e}},"loader"),dHe={id:Mie,detector:uHe,loader:gHe},BHe=dHe,Fie="er",hHe=Y(e=>/^\s*erDiagram/.test(e),"detector"),pHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./erDiagram-Q2GNP2WA-B2hsi_Tl-B5gu6Jrx.js");return{diagram:t}},__vite__mapDeps([15,12,13,14]));return{id:Fie,diagram:e}},"loader"),fHe={id:Fie,detector:hHe,loader:pHe},wHe=fHe,Yie="gitGraph",EHe=Y(e=>/^\s*gitGraph/.test(e),"detector"),mHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./gitGraphDiagram-NY62KEGX-ByhMH0yZ-BvO0WGzP.js");return{diagram:t}},__vite__mapDeps([16,17,18,19,4,2]));return{id:Yie,diagram:e}},"loader"),yHe={id:Yie,detector:EHe,loader:mHe},IHe=yHe,bie="gantt",CHe=Y(e=>/^\s*gantt/.test(e),"detector"),QHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./ganttDiagram-JELNMOA3-B3hAg964-CYO6ZcQ8.js");return{diagram:t}},[]);return{id:bie,diagram:e}},"loader"),MHe={id:bie,detector:CHe,loader:QHe},FHe=MHe,Nie="info",YHe=Y(e=>/^\s*info/.test(e),"detector"),bHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./infoDiagram-WHAUD3N6-is6Ho4-T-D6tHdi3J.js");return{diagram:t}},__vite__mapDeps([20,19,4,2]));return{id:Nie,diagram:e}},"loader"),NHe={id:Nie,detector:YHe,loader:bHe},xie="pie",xHe=Y(e=>/^\s*pie/.test(e),"detector"),DHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./pieDiagram-ADFJNKIX-C9OSknjr-BGVcHmss.js");return{diagram:t}},__vite__mapDeps([21,17,19,4,2,22]));return{id:xie,diagram:e}},"loader"),SHe={id:xie,detector:xHe,loader:DHe},Die="quadrantChart",UHe=Y(e=>/^\s*quadrantChart/.test(e),"detector"),kHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./quadrantDiagram-AYHSOK5B-CW8yuAqv-CrCYjmJT.js");return{diagram:t}},[]);return{id:Die,diagram:e}},"loader"),GHe={id:Die,detector:UHe,loader:kHe},vHe=GHe,Sie="xychart",RHe=Y(e=>/^\s*xychart(-beta)?/.test(e),"detector"),zHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./xychartDiagram-PRI3JC2R-Cgg6Uija-CPVch5-l.js");return{diagram:t}},[]);return{id:Sie,diagram:e}},"loader"),jHe={id:Sie,detector:RHe,loader:zHe},THe=jHe,Uie="requirement",LHe=Y(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),HHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./requirementDiagram-UZGBJVZJ-nGPhruO1-BzOGHXGi.js");return{diagram:t}},__vite__mapDeps([23,12,13]));return{id:Uie,diagram:e}},"loader"),JHe={id:Uie,detector:LHe,loader:HHe},OHe=JHe,kie="sequence",WHe=Y(e=>/^\s*sequenceDiagram/.test(e),"detector"),KHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./sequenceDiagram-WL72ISMW-B02VRcnM-DB4Adljk.js");return{diagram:t}},__vite__mapDeps([24,9,18]));return{id:kie,diagram:e}},"loader"),VHe={id:kie,detector:WHe,loader:KHe},PHe=VHe,Gie="class",XHe=Y((e,t)=>{var n;return((n=t==null?void 0:t.class)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e)},"detector"),ZHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./classDiagram-2ON5EDUG-C7cYN9hv-BHg-LSxQ.js");return{diagram:t}},__vite__mapDeps([25,26,11,12,13]));return{id:Gie,diagram:e}},"loader"),qHe={id:Gie,detector:XHe,loader:ZHe},_He=qHe,vie="classDiagram",$He=Y((e,t)=>{var n;return/^\s*classDiagram/.test(e)&&((n=t==null?void 0:t.class)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e)},"detector"),eJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./classDiagram-v2-WZHVMYZB-C7cYN9hv-BHg-LSxQ.js");return{diagram:t}},__vite__mapDeps([27,26,11,12,13]));return{id:vie,diagram:e}},"loader"),tJe={id:vie,detector:$He,loader:eJe},nJe=tJe,Rie="state",rJe=Y((e,t)=>{var n;return((n=t==null?void 0:t.state)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e)},"detector"),AJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./stateDiagram-FKZM4ZOC-DjoyLUdz-pDyQ50aU.js");return{diagram:t}},__vite__mapDeps([28,29,12,13,1,2,3,4]));return{id:Rie,diagram:e}},"loader"),iJe={id:Rie,detector:rJe,loader:AJe},aJe=iJe,zie="stateDiagram",sJe=Y((e,t)=>{var n;return!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&((n=t==null?void 0:t.state)==null?void 0:n.defaultRenderer)==="dagre-wrapper")},"detector"),oJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./stateDiagram-v2-4FDKWEC3-Bq76BTB7-C3j4gDpN.js");return{diagram:t}},__vite__mapDeps([30,29,12,13]));return{id:zie,diagram:e}},"loader"),lJe={id:zie,detector:sJe,loader:oJe},cJe=lJe,jie="journey",uJe=Y(e=>/^\s*journey/.test(e),"detector"),gJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./journeyDiagram-XKPGCS4Q-CRTOL26C-CL4DFaQP.js");return{diagram:t}},__vite__mapDeps([31,9,11,22]));return{id:jie,diagram:e}},"loader"),dJe={id:jie,detector:uJe,loader:gJe},BJe=dJe,hJe=Y((e,t,n)=>{fe.debug(`rendering svg for syntax error
|
|
865
|
-
`);const r=Xve(t),A=r.append("g");r.attr("viewBox","0 0 2412 512"),k$(r,100,512,!0),A.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),A.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),A.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),A.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),A.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),A.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),A.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),A.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${n}`)},"draw"),Tie={draw:hJe},pJe=Tie,fJe={db:{},renderer:Tie,parser:{parse:Y(()=>{},"parse")}},wJe=fJe,Lie="flowchart-elk",EJe=Y((e,t={})=>{var n;return/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&((n=t==null?void 0:t.flowchart)==null?void 0:n.defaultRenderer)==="elk"?(t.layout="elk",!0):!1},"detector"),mJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./flowDiagram-NV44I4VS-C03vtt_F-
|
|
864
|
+
L0,20`)},"requirement_arrow"),y3e=Y((e,t,n)=>{const r=e.append("defs").append("marker").attr("id",n+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");r.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),r.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),r.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),I3e={extension:s3e,composition:o3e,aggregation:l3e,dependency:c3e,lollipop:u3e,point:g3e,circle:d3e,cross:B3e,barb:h3e,only_one:p3e,zero_or_one:f3e,one_or_more:w3e,zero_or_more:E3e,requirement_arrow:m3e,requirement_contains:y3e},C3e=a3e,Q3e={common:nd,getConfig:tA,insertCluster:S1e,insertEdge:i3e,insertEdgeLabel:$1e,insertMarkers:C3e,insertNode:gie,interpolateToCurve:pv,labelHelper:it,log:fe,positionEdgeLabel:e3e},jh={},pie=Y(e=>{for(const t of e)jh[t.name]=t},"registerLayoutLoaders"),M3e=Y(()=>{pie([{name:"dagre",loader:Y(async()=>await Kt(()=>import("./dagre-6UL2VRFP-TzNvXCds-xMthYtzg.js"),__vite__mapDeps([0,1,2,3,4,5])),"loader")},{name:"cose-bilkent",loader:Y(async()=>await Kt(()=>import("./cose-bilkent-S5V4N54A-BGzO4EsH-DtYXpCOp.js"),__vite__mapDeps([6,7])),"loader")}])},"registerDefaultLayoutLoaders");M3e();var XAt=Y(async(e,t)=>{if(!(e.layoutAlgorithm in jh))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);const n=jh[e.layoutAlgorithm];return(await n.loader()).render(e,t,Q3e,{algorithm:n.algorithm})},"render"),ZAt=Y((e="",{fallback:t="dagre"}={})=>{if(e in jh)return e;if(t in jh)return fe.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw new Error(`Both layout algorithms ${e} and ${t} are not registered.`)},"getRegisteredLayoutAlgorithm"),fie="comm",wie="rule",Eie="decl",F3e="@import",Y3e="@namespace",b3e="@keyframes",N3e="@layer",mie=Math.abs,vv=String.fromCharCode;function yie(e){return e.trim()}function Vf(e,t,n){return e.replace(t,n)}function x3e(e,t,n){return e.indexOf(t,n)}function ug(e,t){return e.charCodeAt(t)|0}function Rg(e,t,n){return e.slice(t,n)}function Ga(e){return e.length}function D3e(e){return e.length}function Zp(e,t){return t.push(e),e}var Ty=1,zg=1,Iie=0,Li=0,ar=0,od="";function Rv(e,t,n,r,A,i,a,s){return{value:e,root:t,parent:n,type:r,props:A,children:i,line:Ty,column:zg,length:a,return:"",siblings:s}}function S3e(){return ar}function U3e(){return ar=Li>0?ug(od,--Li):0,zg--,ar===10&&(zg=1,Ty--),ar}function ga(){return ar=Li<Iie?ug(od,Li++):0,zg++,ar===10&&(zg=1,Ty++),ar}function Wo(){return ug(od,Li)}function Pf(){return Li}function Ly(e,t){return Rg(od,e,t)}function Th(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function k3e(e){return Ty=zg=1,Iie=Ga(od=e),Li=0,[]}function G3e(e){return od="",e}function Bx(e){return yie(Ly(Li-1,rU(e===91?e+2:e===40?e+1:e)))}function v3e(e){for(;(ar=Wo())&&ar<33;)ga();return Th(e)>2||Th(ar)>3?"":" "}function R3e(e,t){for(;--t&&ga()&&!(ar<48||ar>102||ar>57&&ar<65||ar>70&&ar<97););return Ly(e,Pf()+(t<6&&Wo()==32&&ga()==32))}function rU(e){for(;ga();)switch(ar){case e:return Li;case 34:case 39:e!==34&&e!==39&&rU(ar);break;case 40:e===41&&rU(e);break;case 92:ga();break}return Li}function z3e(e,t){for(;ga()&&e+ar!==57&&!(e+ar===84&&Wo()===47););return"/*"+Ly(t,Li-1)+"*"+vv(e===47?e:ga())}function j3e(e){for(;!Th(Wo());)ga();return Ly(e,Li)}function T3e(e){return G3e(Xf("",null,null,null,[""],e=k3e(e),0,[0],e))}function Xf(e,t,n,r,A,i,a,s,o){for(var l=0,c=0,u=a,g=0,d=0,B=0,h=1,w=1,p=1,f=0,E="",y=A,C=i,I=r,Q=E;w;)switch(B=f,f=ga()){case 40:if(B!=108&&ug(Q,u-1)==58){x3e(Q+=Vf(Bx(f),"&","&\f"),"&\f",mie(l?s[l-1]:0))!=-1&&(p=-1);break}case 34:case 39:case 91:Q+=Bx(f);break;case 9:case 10:case 13:case 32:Q+=v3e(B);break;case 92:Q+=R3e(Pf()-1,7);continue;case 47:switch(Wo()){case 42:case 47:Zp(L3e(z3e(ga(),Pf()),t,n,o),o),(Th(B||1)==5||Th(Wo()||1)==5)&&Ga(Q)&&Rg(Q,-1,void 0)!==" "&&(Q+=" ");break;default:Q+="/"}break;case 123*h:s[l++]=Ga(Q)*p;case 125*h:case 59:case 0:switch(f){case 0:case 125:w=0;case 59+c:p==-1&&(Q=Vf(Q,/\f/g,"")),d>0&&(Ga(Q)-u||h===0&&B===47)&&Zp(d>32?BW(Q+";",r,n,u-1,o):BW(Vf(Q," ","")+";",r,n,u-2,o),o);break;case 59:Q+=";";default:if(Zp(I=dW(Q,t,n,l,c,A,s,E,y=[],C=[],u,i),i),f===123)if(c===0)Xf(Q,t,I,I,y,i,u,s,C);else{switch(g){case 99:if(ug(Q,3)===110)break;case 108:if(ug(Q,2)===97)break;default:c=0;case 100:case 109:case 115:}c?Xf(e,I,I,r&&Zp(dW(e,I,I,0,0,A,s,E,A,y=[],u,C),C),A,C,u,s,r?y:C):Xf(Q,I,I,I,[""],C,0,s,C)}}l=c=d=0,h=p=1,E=Q="",u=a;break;case 58:u=1+Ga(Q),d=B;default:if(h<1){if(f==123)--h;else if(f==125&&h++==0&&U3e()==125)continue}switch(Q+=vv(f),f*h){case 38:p=c>0?1:(Q+="\f",-1);break;case 44:s[l++]=(Ga(Q)-1)*p,p=1;break;case 64:Wo()===45&&(Q+=Bx(ga())),g=Wo(),c=u=Ga(E=Q+=j3e(Pf())),f++;break;case 45:B===45&&Ga(Q)==2&&(h=0)}}return i}function dW(e,t,n,r,A,i,a,s,o,l,c,u){for(var g=A-1,d=A===0?i:[""],B=D3e(d),h=0,w=0,p=0;h<r;++h)for(var f=0,E=Rg(e,g+1,g=mie(w=a[h])),y=e;f<B;++f)(y=yie(w>0?d[f]+" "+E:Vf(E,/&\f/g,d[f])))&&(o[p++]=y);return Rv(e,t,n,A===0?wie:s,o,l,c,u)}function L3e(e,t,n,r){return Rv(e,t,n,fie,vv(S3e()),Rg(e,2,-2),0,r)}function BW(e,t,n,r,A){return Rv(e,t,n,Eie,Rg(e,0,r),Rg(e,r+1,-1),r,A)}function AU(e,t){for(var n="",r=0;r<e.length;r++)n+=t(e[r],r,e,t)||"";return n}function H3e(e,t,n,r){switch(e.type){case N3e:if(e.children.length)break;case F3e:case Y3e:case Eie:return e.return=e.return||e.value;case fie:return"";case b3e:return e.return=e.value+"{"+AU(e.children,r)+"}";case wie:if(!Ga(e.value=e.props.join(",")))return""}return Ga(n=AU(e.children,r))?e.return=e.value+"{"+n+"}":""}var J3e=Pne(Object.keys,Object),O3e=Object.prototype,W3e=O3e.hasOwnProperty;function K3e(e){if(!xy(e))return J3e(e);var t=[];for(var n in Object(e))W3e.call(e,n)&&n!="constructor"&&t.push(n);return t}var iU=nu(is,"DataView"),aU=nu(is,"Promise"),sU=nu(is,"Set"),oU=nu(is,"WeakMap"),hW="[object Map]",V3e="[object Object]",pW="[object Promise]",fW="[object Set]",wW="[object WeakMap]",EW="[object DataView]",P3e=tu(iU),X3e=tu(Rh),Z3e=tu(aU),q3e=tu(sU),_3e=tu(oU),Pl=id;(iU&&Pl(new iU(new ArrayBuffer(1)))!=EW||Rh&&Pl(new Rh)!=hW||aU&&Pl(aU.resolve())!=pW||sU&&Pl(new sU)!=fW||oU&&Pl(new oU)!=wW)&&(Pl=function(e){var t=id(e),n=t==V3e?e.constructor:void 0,r=n?tu(n):"";if(r)switch(r){case P3e:return EW;case X3e:return hW;case Z3e:return pW;case q3e:return fW;case _3e:return wW}return t});var $3e="[object Map]",eHe="[object Set]",tHe=Object.prototype,nHe=tHe.hasOwnProperty;function mW(e){if(e==null)return!0;if(Dy(e)&&(CE(e)||typeof e=="string"||typeof e.splice=="function"||Bv(e)||hv(e)||IE(e)))return!e.length;var t=Pl(e);if(t==$3e||t==eHe)return!e.size;if(xy(e))return!K3e(e).length;for(var n in e)if(nHe.call(e,n))return!1;return!0}var Cie="c4",rHe=Y(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),AHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./c4Diagram-YG6GDRKO-DMUPaBEl-q6bAZUce.js");return{diagram:t}},__vite__mapDeps([8,9]));return{id:Cie,diagram:e}},"loader"),iHe={id:Cie,detector:rHe,loader:AHe},aHe=iHe,Qie="flowchart",sHe=Y((e,t)=>{var n,r;return((n=t==null?void 0:t.flowchart)==null?void 0:n.defaultRenderer)==="dagre-wrapper"||((r=t==null?void 0:t.flowchart)==null?void 0:r.defaultRenderer)==="elk"?!1:/^\s*graph/.test(e)},"detector"),oHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./flowDiagram-NV44I4VS-C03vtt_F-DT9Y-btb.js");return{diagram:t}},__vite__mapDeps([10,11,12,13,14]));return{id:Qie,diagram:e}},"loader"),lHe={id:Qie,detector:sHe,loader:oHe},cHe=lHe,Mie="flowchart-v2",uHe=Y((e,t)=>{var n,r,A;return((n=t==null?void 0:t.flowchart)==null?void 0:n.defaultRenderer)==="dagre-d3"?!1:(((r=t==null?void 0:t.flowchart)==null?void 0:r.defaultRenderer)==="elk"&&(t.layout="elk"),/^\s*graph/.test(e)&&((A=t==null?void 0:t.flowchart)==null?void 0:A.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(e))},"detector"),gHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./flowDiagram-NV44I4VS-C03vtt_F-DT9Y-btb.js");return{diagram:t}},__vite__mapDeps([10,11,12,13,14]));return{id:Mie,diagram:e}},"loader"),dHe={id:Mie,detector:uHe,loader:gHe},BHe=dHe,Fie="er",hHe=Y(e=>/^\s*erDiagram/.test(e),"detector"),pHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./erDiagram-Q2GNP2WA-B2hsi_Tl-BbvH-Jb1.js");return{diagram:t}},__vite__mapDeps([15,12,13,14]));return{id:Fie,diagram:e}},"loader"),fHe={id:Fie,detector:hHe,loader:pHe},wHe=fHe,Yie="gitGraph",EHe=Y(e=>/^\s*gitGraph/.test(e),"detector"),mHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./gitGraphDiagram-NY62KEGX-ByhMH0yZ-CdQlDU7A.js");return{diagram:t}},__vite__mapDeps([16,17,18,19,4,2]));return{id:Yie,diagram:e}},"loader"),yHe={id:Yie,detector:EHe,loader:mHe},IHe=yHe,bie="gantt",CHe=Y(e=>/^\s*gantt/.test(e),"detector"),QHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./ganttDiagram-JELNMOA3-B3hAg964-CnqUJtIB.js");return{diagram:t}},[]);return{id:bie,diagram:e}},"loader"),MHe={id:bie,detector:CHe,loader:QHe},FHe=MHe,Nie="info",YHe=Y(e=>/^\s*info/.test(e),"detector"),bHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./infoDiagram-WHAUD3N6-is6Ho4-T-BHS1wv7y.js");return{diagram:t}},__vite__mapDeps([20,19,4,2]));return{id:Nie,diagram:e}},"loader"),NHe={id:Nie,detector:YHe,loader:bHe},xie="pie",xHe=Y(e=>/^\s*pie/.test(e),"detector"),DHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./pieDiagram-ADFJNKIX-C9OSknjr-eiZAefZN.js");return{diagram:t}},__vite__mapDeps([21,17,19,4,2,22]));return{id:xie,diagram:e}},"loader"),SHe={id:xie,detector:xHe,loader:DHe},Die="quadrantChart",UHe=Y(e=>/^\s*quadrantChart/.test(e),"detector"),kHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./quadrantDiagram-AYHSOK5B-CW8yuAqv-DzBEpWQk.js");return{diagram:t}},[]);return{id:Die,diagram:e}},"loader"),GHe={id:Die,detector:UHe,loader:kHe},vHe=GHe,Sie="xychart",RHe=Y(e=>/^\s*xychart(-beta)?/.test(e),"detector"),zHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./xychartDiagram-PRI3JC2R-Cgg6Uija-BDR2Lfu_.js");return{diagram:t}},[]);return{id:Sie,diagram:e}},"loader"),jHe={id:Sie,detector:RHe,loader:zHe},THe=jHe,Uie="requirement",LHe=Y(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),HHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./requirementDiagram-UZGBJVZJ-nGPhruO1-z5Z4Fwg9.js");return{diagram:t}},__vite__mapDeps([23,12,13]));return{id:Uie,diagram:e}},"loader"),JHe={id:Uie,detector:LHe,loader:HHe},OHe=JHe,kie="sequence",WHe=Y(e=>/^\s*sequenceDiagram/.test(e),"detector"),KHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./sequenceDiagram-WL72ISMW-B02VRcnM-Cz8sPx_Q.js");return{diagram:t}},__vite__mapDeps([24,9,18]));return{id:kie,diagram:e}},"loader"),VHe={id:kie,detector:WHe,loader:KHe},PHe=VHe,Gie="class",XHe=Y((e,t)=>{var n;return((n=t==null?void 0:t.class)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e)},"detector"),ZHe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./classDiagram-2ON5EDUG-C7cYN9hv-CGN1Rq_o.js");return{diagram:t}},__vite__mapDeps([25,26,11,12,13]));return{id:Gie,diagram:e}},"loader"),qHe={id:Gie,detector:XHe,loader:ZHe},_He=qHe,vie="classDiagram",$He=Y((e,t)=>{var n;return/^\s*classDiagram/.test(e)&&((n=t==null?void 0:t.class)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e)},"detector"),eJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./classDiagram-v2-WZHVMYZB-C7cYN9hv-CGN1Rq_o.js");return{diagram:t}},__vite__mapDeps([27,26,11,12,13]));return{id:vie,diagram:e}},"loader"),tJe={id:vie,detector:$He,loader:eJe},nJe=tJe,Rie="state",rJe=Y((e,t)=>{var n;return((n=t==null?void 0:t.state)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e)},"detector"),AJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./stateDiagram-FKZM4ZOC-DjoyLUdz-BxsZBi1n.js");return{diagram:t}},__vite__mapDeps([28,29,12,13,1,2,3,4]));return{id:Rie,diagram:e}},"loader"),iJe={id:Rie,detector:rJe,loader:AJe},aJe=iJe,zie="stateDiagram",sJe=Y((e,t)=>{var n;return!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&((n=t==null?void 0:t.state)==null?void 0:n.defaultRenderer)==="dagre-wrapper")},"detector"),oJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./stateDiagram-v2-4FDKWEC3-Bq76BTB7-BTybFIdr.js");return{diagram:t}},__vite__mapDeps([30,29,12,13]));return{id:zie,diagram:e}},"loader"),lJe={id:zie,detector:sJe,loader:oJe},cJe=lJe,jie="journey",uJe=Y(e=>/^\s*journey/.test(e),"detector"),gJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./journeyDiagram-XKPGCS4Q-CRTOL26C-DkQ68DJ6.js");return{diagram:t}},__vite__mapDeps([31,9,11,22]));return{id:jie,diagram:e}},"loader"),dJe={id:jie,detector:uJe,loader:gJe},BJe=dJe,hJe=Y((e,t,n)=>{fe.debug(`rendering svg for syntax error
|
|
865
|
+
`);const r=Xve(t),A=r.append("g");r.attr("viewBox","0 0 2412 512"),k$(r,100,512,!0),A.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),A.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),A.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),A.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),A.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),A.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),A.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),A.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${n}`)},"draw"),Tie={draw:hJe},pJe=Tie,fJe={db:{},renderer:Tie,parser:{parse:Y(()=>{},"parse")}},wJe=fJe,Lie="flowchart-elk",EJe=Y((e,t={})=>{var n;return/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&((n=t==null?void 0:t.flowchart)==null?void 0:n.defaultRenderer)==="elk"?(t.layout="elk",!0):!1},"detector"),mJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./flowDiagram-NV44I4VS-C03vtt_F-DT9Y-btb.js");return{diagram:t}},__vite__mapDeps([10,11,12,13,14]));return{id:Lie,diagram:e}},"loader"),yJe={id:Lie,detector:EJe,loader:mJe},IJe=yJe,Hie="timeline",CJe=Y(e=>/^\s*timeline/.test(e),"detector"),QJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./timeline-definition-IT6M3QCI-CTn0Gm3T-CI07_-Ei.js");return{diagram:t}},__vite__mapDeps([32,22]));return{id:Hie,diagram:e}},"loader"),MJe={id:Hie,detector:CJe,loader:QJe},FJe=MJe,Jie="mindmap",YJe=Y(e=>/^\s*mindmap/.test(e),"detector"),bJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./mindmap-definition-VGOIOE7T-CJZ2wTTa-B7rvUdG3.js");return{diagram:t}},__vite__mapDeps([33,12,13]));return{id:Jie,diagram:e}},"loader"),NJe={id:Jie,detector:YJe,loader:bJe},xJe=NJe,Oie="kanban",DJe=Y(e=>/^\s*kanban/.test(e),"detector"),SJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./kanban-definition-3W4ZIXB7-CNnO_t6O-DWZm5JX4.js");return{diagram:t}},__vite__mapDeps([34,11]));return{id:Oie,diagram:e}},"loader"),UJe={id:Oie,detector:DJe,loader:SJe},kJe=UJe,Wie="sankey",GJe=Y(e=>/^\s*sankey(-beta)?/.test(e),"detector"),vJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./sankeyDiagram-TZEHDZUN-CmL90u-m-Dk028WXo.js");return{diagram:t}},[]);return{id:Wie,diagram:e}},"loader"),RJe={id:Wie,detector:GJe,loader:vJe},zJe=RJe,Kie="packet",jJe=Y(e=>/^\s*packet(-beta)?/.test(e),"detector"),TJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./diagram-S2PKOQOG-BqrhTIpA-Bv0e-7TM.js");return{diagram:t}},__vite__mapDeps([35,17,19,4,2]));return{id:Kie,diagram:e}},"loader"),LJe={id:Kie,detector:jJe,loader:TJe},Vie="radar",HJe=Y(e=>/^\s*radar-beta/.test(e),"detector"),JJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./diagram-QEK2KX5R-CTjgBsne-DROkeGJL.js");return{diagram:t}},__vite__mapDeps([36,17,19,4,2]));return{id:Vie,diagram:e}},"loader"),OJe={id:Vie,detector:HJe,loader:JJe},Pie="block",WJe=Y(e=>/^\s*block(-beta)?/.test(e),"detector"),KJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./blockDiagram-VD42YOAC-B-dKfcH3-DT3R176S.js");return{diagram:t}},__vite__mapDeps([37,11,5,1,2,14]));return{id:Pie,diagram:e}},"loader"),VJe={id:Pie,detector:WJe,loader:KJe},PJe=VJe,Xie="architecture",XJe=Y(e=>/^\s*architecture/.test(e),"detector"),ZJe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./architectureDiagram-VXUJARFQ-DqQ8r_6g-eqA8fOch.js");return{diagram:t}},__vite__mapDeps([38,17,19,4,2,7]));return{id:Xie,diagram:e}},"loader"),qJe={id:Xie,detector:XJe,loader:ZJe},_Je=qJe,Zie="treemap",$Je=Y(e=>/^\s*treemap/.test(e),"detector"),eOe=Y(async()=>{const{diagram:e}=await Kt(async()=>{const{diagram:t}=await import("./diagram-PSM6KHXK-BqY4RpUg-CtQy_-7V.js");return{diagram:t}},__vite__mapDeps([39,13,17,19,4,2]));return{id:Zie,diagram:e}},"loader"),tOe={id:Zie,detector:$Je,loader:eOe},yW=!1,Hy=Y(()=>{yW||(yW=!0,Xw("error",wJe,e=>e.toLowerCase().trim()==="error"),Xw("---",{db:{clear:Y(()=>{},"clear")},styles:{},renderer:{draw:Y(()=>{},"draw")},parser:{parse:Y(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:Y(()=>null,"init")},e=>e.toLowerCase().trimStart().startsWith("---")),lS(IJe,xJe,_Je),lS(aHe,kJe,nJe,_He,wHe,FHe,NHe,SHe,OHe,PHe,BHe,cHe,FJe,IHe,cJe,aJe,BJe,vHe,zJe,LJe,THe,PJe,OJe,tOe))},"addDiagrams"),nOe=Y(async()=>{fe.debug("Loading registered diagrams");const e=(await Promise.allSettled(Object.entries(Qc).map(async([t,{detector:n,loader:r}])=>{if(r)try{dS(t)}catch{try{const{diagram:A,id:i}=await r();Xw(i,A,n)}catch(A){throw fe.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete Qc[t],A}}}))).filter(t=>t.status==="rejected");if(e.length>0){fe.error(`Failed to load ${e.length} external diagrams`);for(const t of e)fe.error(t);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams"),rOe="graphics-document document";function qie(e,t){e.attr("role",rOe),t!==""&&e.attr("aria-roledescription",t)}Y(qie,"setA11yDiagramInfo");function _ie(e,t,n,r){if(e.insert!==void 0){if(n){const A=`chart-desc-${r}`;e.attr("aria-describedby",A),e.insert("desc",":first-child").attr("id",A).text(n)}if(t){const A=`chart-title-${r}`;e.attr("aria-labelledby",A),e.insert("title",":first-child").attr("id",A).text(t)}}}Y(_ie,"addSVGa11yTitleDescription");var qp,lU=(qp=class{constructor(e,t,n,r,A){this.type=e,this.text=t,this.db=n,this.parser=r,this.renderer=A}static async fromText(e,t={}){var n,r;const A=tA(),i=oG(e,A);e=tLe(e)+`
|
|
866
866
|
`;try{dS(i)}catch{const c=aDe(i);if(!c)throw new I$(`Diagram ${i} not found.`);const{id:u,diagram:g}=await c();Xw(u,g)}const{db:a,parser:s,renderer:o,init:l}=dS(i);return s.parser&&(s.parser.yy=a),(n=a.clear)==null||n.call(a),l==null||l(A),t.title&&((r=a.setDiagramTitle)==null||r.call(a,t.title)),await s.parse(e),new qp(i,e,a,s,o)}async render(e,t){await this.renderer.draw(this.text,e,t,this)}getParser(){return this.parser}getType(){return this.type}},Y(qp,"Diagram"),qp),IW=[],AOe=Y(()=>{IW.forEach(e=>{e()}),IW=[]},"attachFunctions"),iOe=Y(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function $ie(e){const t=e.match(y$);if(!t)return{text:e,metadata:{}};let n=nze(t[1],{schema:tze})??{};n=typeof n=="object"&&!Array.isArray(n)?n:{};const r={};return n.displayMode&&(r.displayMode=n.displayMode.toString()),n.title&&(r.title=n.title.toString()),n.config&&(r.config=n.config),{text:e.slice(t[0].length),metadata:r}}Y($ie,"extractFrontMatter");var aOe=Y(e=>e.replace(/\r\n?/g,`
|
|
867
867
|
`).replace(/<(\w+)([^>]*)>/g,(t,n,r)=>"<"+n+r.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),sOe=Y(e=>{const{text:t,metadata:n}=$ie(e),{displayMode:r,title:A,config:i={}}=n;return r&&(i.gantt||(i.gantt={}),i.gantt.displayMode=r),{title:A,config:i,text:t}},"processFrontmatter"),oOe=Y(e=>{const t=sa.detectInit(e)??{},n=sa.detectDirective(e,"wrap");return Array.isArray(n)?t.wrap=n.some(({type:r})=>r==="wrap"):(n==null?void 0:n.type)==="wrap"&&(t.wrap=!0),{text:HTe(e),directive:t}},"processDirectives");function zv(e){const t=aOe(e),n=sOe(t),r=oOe(n.text),A=yv(n.config,r.directive);return e=iOe(r.text),{code:e,title:n.title,config:A}}Y(zv,"preprocessDiagram");function eae(e){const t=new TextEncoder().encode(e),n=Array.from(t,r=>String.fromCodePoint(r)).join("");return btoa(n)}Y(eae,"toBase64");var lOe=5e4,cOe="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",uOe="sandbox",gOe="loose",dOe="http://www.w3.org/2000/svg",BOe="http://www.w3.org/1999/xlink",hOe="http://www.w3.org/1999/xhtml",pOe="100%",fOe="100%",wOe="border:0;margin:0;",EOe="margin:0",mOe="allow-top-navigation-by-user-activation allow-popups",yOe='The "iframe" tag is not supported by your browser.',IOe=["foreignobject"],COe=["dominant-baseline"];function jv(e){const t=zv(e);return Vw(),IDe(t.config??{}),t}Y(jv,"processAndSetConfigs");async function tae(e,t){Hy();try{const{code:n,config:r}=jv(e);return{diagramType:(await rae(n)).type,config:r}}catch(n){if(t!=null&&t.suppressErrors)return!1;throw n}}Y(tae,"parse");var CW=Y((e,t,n=[])=>`
|
|
868
868
|
.${e} ${t} { ${n.join(" !important; ")} !important; }`,"cssImportantStyles"),QOe=Y((e,t=new Map)=>{var n;let r="";if(e.themeCSS!==void 0&&(r+=`
|
|
@@ -961,7 +961,7 @@ ${e.themeCSS}`),e.fontFamily!==void 0&&(r+=`
|
|
|
961
961
|
from { transform: rotate(0deg); }
|
|
962
962
|
to { transform: rotate(360deg); }
|
|
963
963
|
}
|
|
964
|
-
`})]}),s.title&&q.jsx("h4",{style:{textAlign:"center",marginBottom:s.description?"4px":"12px",marginTop:0,color:H,fontWeight:600,background:"transparent"},children:s.title}),s.description&&q.jsx("p",{style:{textAlign:"center",marginTop:0,marginBottom:"12px",color:T,fontSize:"0.9rem"},children:s.description}),q.jsxs(wKe,{width:"100%",height:f,children:[s.type==="bar"&&q.jsxs(wnt,{data:s.data,margin:me,barCategoryGap:"20%",children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"name",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{yAxisId:"left",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),y&&q.jsx(Ua,{yAxisId:"right",orientation:"right",width:80,tickFormatter:oe,...K,children:ms(S,"right")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,E.map(Z=>q.jsx(ZU,{name:Z.name,dataKey:Z.key,fill:Z.color,stackId:Z.stackId,yAxisId:Z.yAxisId,radius:[4,4,0,0]},Z.key))]}),s.type==="line"&&q.jsxs(pnt,{data:s.data,margin:me,children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"name",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{yAxisId:"left",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),y&&q.jsx(Ua,{yAxisId:"right",orientation:"right",width:80,tickFormatter:oe,...K,children:ms(S,"right")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,E.map(Z=>q.jsx(KU,{name:Z.name,type:"monotone",dataKey:Z.key,stroke:Z.color,yAxisId:Z.yAxisId,strokeWidth:Z.strokeWidth,dot:Z.dot},Z.key))]}),s.type==="area"&&q.jsxs(knt,{data:s.data,margin:me,children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"name",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{yAxisId:"left",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),y&&q.jsx(Ua,{yAxisId:"right",orientation:"right",width:80,tickFormatter:oe,...K,children:ms(S,"right")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,E.map(Z=>q.jsx(VU,{name:Z.name,type:"monotone",dataKey:Z.key,stroke:Z.color,yAxisId:Z.yAxisId,fill:Z.color,fillOpacity:Z.opacity,stackId:Z.stackId},Z.key))]}),s.type==="composed"&&q.jsxs(vnt,{data:s.data,margin:me,children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"name",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{yAxisId:"left",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),y&&q.jsx(Ua,{yAxisId:"right",orientation:"right",width:80,tickFormatter:oe,...K,children:ms(S,"right")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,E.map(Z=>{switch(Z.type){case"line":return q.jsx(KU,{name:Z.name,type:"monotone",dataKey:Z.key,stroke:Z.color,yAxisId:Z.yAxisId,strokeWidth:Z.strokeWidth,dot:Z.dot},Z.key);case"area":return q.jsx(VU,{name:Z.name,type:"monotone",dataKey:Z.key,stroke:Z.color,yAxisId:Z.yAxisId,fill:Z.color,fillOpacity:Z.opacity,stackId:Z.stackId},Z.key);case"scatter":return q.jsx(_U,{name:Z.name,dataKey:Z.key,fill:Z.color,yAxisId:Z.yAxisId},Z.key);default:return q.jsx(ZU,{name:Z.name,dataKey:Z.key,fill:Z.color,stackId:Z.stackId,yAxisId:Z.yAxisId,radius:[4,4,0,0]},Z.key)}})]}),s.type==="pie"&&q.jsxs(xnt,{children:[q.jsx(Ule,{data:s.data,dataKey:((r=s.dataKeys)==null?void 0:r[0])||"value",nameKey:s.xKey||"name",cx:"50%",cy:"50%",outerRadius:f/3,label:{fill:H},children:s.data.map((Z,Fe)=>q.jsx(yd,{fill:p[Fe%p.length]},`cell-${Fe}`))}),q.jsx(yu,{contentStyle:ce,itemStyle:he,formatter:Ce}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"})]}),s.type==="scatter"&&q.jsxs(Snt,{margin:me,children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"x",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{dataKey:((A=s.dataKeys)==null?void 0:A[0])||"y",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,q.jsx(_U,{name:"Data",data:s.data,fill:p[0]})]})]})]})};let Iu=null;const Ont=async()=>{if(typeof window>"u")throw new Error("abcjs requires a browser environment");if(Iu)return Iu;try{const e=await Kt(()=>import("./index-BXexqYFc-
|
|
964
|
+
`})]}),s.title&&q.jsx("h4",{style:{textAlign:"center",marginBottom:s.description?"4px":"12px",marginTop:0,color:H,fontWeight:600,background:"transparent"},children:s.title}),s.description&&q.jsx("p",{style:{textAlign:"center",marginTop:0,marginBottom:"12px",color:T,fontSize:"0.9rem"},children:s.description}),q.jsxs(wKe,{width:"100%",height:f,children:[s.type==="bar"&&q.jsxs(wnt,{data:s.data,margin:me,barCategoryGap:"20%",children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"name",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{yAxisId:"left",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),y&&q.jsx(Ua,{yAxisId:"right",orientation:"right",width:80,tickFormatter:oe,...K,children:ms(S,"right")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,E.map(Z=>q.jsx(ZU,{name:Z.name,dataKey:Z.key,fill:Z.color,stackId:Z.stackId,yAxisId:Z.yAxisId,radius:[4,4,0,0]},Z.key))]}),s.type==="line"&&q.jsxs(pnt,{data:s.data,margin:me,children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"name",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{yAxisId:"left",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),y&&q.jsx(Ua,{yAxisId:"right",orientation:"right",width:80,tickFormatter:oe,...K,children:ms(S,"right")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,E.map(Z=>q.jsx(KU,{name:Z.name,type:"monotone",dataKey:Z.key,stroke:Z.color,yAxisId:Z.yAxisId,strokeWidth:Z.strokeWidth,dot:Z.dot},Z.key))]}),s.type==="area"&&q.jsxs(knt,{data:s.data,margin:me,children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"name",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{yAxisId:"left",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),y&&q.jsx(Ua,{yAxisId:"right",orientation:"right",width:80,tickFormatter:oe,...K,children:ms(S,"right")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,E.map(Z=>q.jsx(VU,{name:Z.name,type:"monotone",dataKey:Z.key,stroke:Z.color,yAxisId:Z.yAxisId,fill:Z.color,fillOpacity:Z.opacity,stackId:Z.stackId},Z.key))]}),s.type==="composed"&&q.jsxs(vnt,{data:s.data,margin:me,children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"name",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{yAxisId:"left",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),y&&q.jsx(Ua,{yAxisId:"right",orientation:"right",width:80,tickFormatter:oe,...K,children:ms(S,"right")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,E.map(Z=>{switch(Z.type){case"line":return q.jsx(KU,{name:Z.name,type:"monotone",dataKey:Z.key,stroke:Z.color,yAxisId:Z.yAxisId,strokeWidth:Z.strokeWidth,dot:Z.dot},Z.key);case"area":return q.jsx(VU,{name:Z.name,type:"monotone",dataKey:Z.key,stroke:Z.color,yAxisId:Z.yAxisId,fill:Z.color,fillOpacity:Z.opacity,stackId:Z.stackId},Z.key);case"scatter":return q.jsx(_U,{name:Z.name,dataKey:Z.key,fill:Z.color,yAxisId:Z.yAxisId},Z.key);default:return q.jsx(ZU,{name:Z.name,dataKey:Z.key,fill:Z.color,stackId:Z.stackId,yAxisId:Z.yAxisId,radius:[4,4,0,0]},Z.key)}})]}),s.type==="pie"&&q.jsxs(xnt,{children:[q.jsx(Ule,{data:s.data,dataKey:((r=s.dataKeys)==null?void 0:r[0])||"value",nameKey:s.xKey||"name",cx:"50%",cy:"50%",outerRadius:f/3,label:{fill:H},children:s.data.map((Z,Fe)=>q.jsx(yd,{fill:p[Fe%p.length]},`cell-${Fe}`))}),q.jsx(yu,{contentStyle:ce,itemStyle:he,formatter:Ce}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"})]}),s.type==="scatter"&&q.jsxs(Snt,{margin:me,children:[I&&q.jsx(Du,{strokeDasharray:"3 3",stroke:J}),q.jsx(Su,{dataKey:s.xKey||"x",label:st,...K,...ue,tickFormatter:vn}),q.jsx(Ua,{dataKey:((A=s.dataKeys)==null?void 0:A[0])||"y",width:80,tickFormatter:oe,...K,children:ms(N,"left")}),q.jsx(yu,{contentStyle:ce,labelStyle:ae,itemStyle:he,formatter:Ce,labelFormatter:Jt,cursor:xe}),C&&q.jsx(Zl,{wrapperStyle:Me,iconSize:10,iconType:"square"}),Q,q.jsx(_U,{name:"Data",data:s.data,fill:p[0]})]})]})]})};let Iu=null;const Ont=async()=>{if(typeof window>"u")throw new Error("abcjs requires a browser environment");if(Iu)return Iu;try{const e=await Kt(()=>import("./index-BXexqYFc-D_cjFmh8.js"),[]).then(n=>n.i),t=e.default||e;if(!t)throw new Error("abcjs module is empty");if(typeof t.renderAbc!="function")throw new Error(`renderAbc is not a function. Available methods: ${Object.keys(t).join(", ")}`);return Iu=t,Iu}catch(e){if(typeof window<"u"&&window.ABCJS)return Iu=window.ABCJS,Iu;const t=e instanceof Error?e.message:"Failed to load abcjs";throw new Error(`Failed to load abcjs: ${t}`)}},Wnt=e=>{const t=e.trim();return/^[XMTLK]:/m.test(t)||/^X:\d+/m.test(t)},Knt=e=>{const t=e.trim();if(!t.includes("X:")||!/^K:/m.test(t))return!0;const n=t.split(`
|
|
965
965
|
`),r=n[n.length-1].trim();return!!(r.match(/^[A-Z]:?\s*$/)&&r.length<3||r.endsWith("|")&&!r.endsWith("|]")&&!r.endsWith("||")&&r.replace(/\|/g,"").trim().length<2)},Vnt=({code:e})=>{const t=m.useRef(null),[n,r]=m.useState(null),[A,i]=m.useState(!0),[a,s]=m.useState(!1),[o,l]=m.useState(!1),[c,u]=m.useState(!1),g=m.useRef(""),d=m.useRef(0),B=m.useRef(null);return m.useEffect(()=>{const h=e.trim();if(!h){i(!1),l(!1),s(!1);return}const w=Date.now(),p=w-d.current,f=e!==g.current;g.current=e,d.current=w;const E=Knt(h),y=f&&p<500&&p>0,C=E||y;if(E){s(!0),i(!0),r(null);return}Wnt(e)?(l(!0),r(null),C&&s(!0)):(l(!1),C?(s(!0),r(null)):(r("Unable to detect ABC notation. Expected ABC notation starting with headers like X:, T:, M:, L:, or K:"),i(!1),s(!1)))},[e]),m.useEffect(()=>!o||!e.trim()?void 0:(a&&(B.current&&clearTimeout(B.current),B.current=setTimeout(()=>{s(!1)},400)),(async()=>{try{i(!0);let h=0;const w=10;for(;!t.current&&h<w;)await new Promise(f=>setTimeout(f,50)),h++;if(!t.current)throw new Error("Container element not found after waiting");const p=await Ont();t.current.innerHTML="",p.renderAbc(t.current,e,{responsive:"resize",staffwidth:740,paddingleft:0,paddingright:0,paddingtop:15,paddingbottom:15,scale:1}),r(null),i(!1)}catch(h){const w=h instanceof Error?h.message:"Failed to render ABC notation";r(w),i(!1)}})(),()=>{B.current&&clearTimeout(B.current)}),[e,o,a]),n?q.jsxs("div",{className:"graph-error",children:[q.jsxs("div",{className:"graph-error-header",children:[q.jsx("div",{className:"graph-error-icon",children:"⚠️"}),q.jsxs("div",{className:"graph-error-content",children:[q.jsx("div",{className:"graph-error-title",children:"ABC Notation Rendering Error"}),q.jsx("div",{className:"graph-error-message",children:n})]})]}),q.jsxs("button",{className:"graph-error-toggle",onClick:()=>u(!c),type:"button",children:[c?"Hide":"Show"," Details"]}),c&&q.jsxs("details",{className:"graph-error-details",open:!0,children:[q.jsx("summary",{style:{cursor:"pointer",marginBottom:"8px",fontWeight:500},children:"ABC Notation Code"}),q.jsx("pre",{style:{marginTop:"8px",fontSize:"0.8em",opacity:.8,padding:"8px",background:"rgba(0, 0, 0, 0.05)",borderRadius:"4px",overflow:"auto",maxHeight:"200px"},children:q.jsx("code",{children:e})})]})]}):(A||a)&&!o?q.jsx("div",{className:"graph-container music-container abc-container",children:q.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"30px 20px",color:"var(--md-text-secondary, #6b7280)",minHeight:"120px"},children:[q.jsx("svg",{style:{animation:"spin 1s linear infinite",marginBottom:"10px",width:"28px",height:"28px"},viewBox:"0 0 24 24",fill:"none",children:q.jsx("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"2",strokeDasharray:"32",strokeLinecap:"round"})}),q.jsx("span",{style:{fontWeight:500,fontSize:"14px"},children:a?"Receiving music notation...":"Loading music notation..."}),q.jsx("style",{children:`
|
|
966
966
|
@keyframes spin {
|
|
967
967
|
from { transform: rotate(0deg); }
|
|
@@ -991,7 +991,7 @@ ${FBe}`,rrt=()=>{if(typeof document>"u"||document.getElementById(l4))return;cons
|
|
|
991
991
|
{ "name": "REST API", "apiKey": "rest", "apiUrl": "http://localhost:3000", "description": "Enables generic REST API exploration and data extraction." }
|
|
992
992
|
]`,VITE_API_URL:"http://localhost:3000",VITE_APPLICATION_DESCRIPTION:"ORBIT provides a specialized AI interface that allows anyone to ask plain-language questions and receive summarized, citation-backed answers drawn directly from official Canadian open data sources. Please read our [Terms and Conditions](https://schmitech.ai/en/civicchat) before using the service.",VITE_APPLICATION_NAME:"Welcome to ORBIT Chat",VITE_CONSOLE_DEBUG:"false",VITE_DEFAULT_INPUT_PLACEHOLDER:"Ask Anything...",VITE_DEFAULT_KEY:"analytical",VITE_ENABLE_AUDIO_INPUT:"true",VITE_ENABLE_AUDIO_OUTPUT:"true",VITE_ENABLE_AUTOCOMPLETE:"true",VITE_ENABLE_CONVERSATION_THREADS:"true",VITE_ENABLE_FEEDBACK:"false",VITE_ENABLE_UPLOAD:"false",VITE_GITHUB_OWNER:"schmitech",VITE_GITHUB_REPO:"orbit",VITE_LOCALE:"en-US",VITE_MAX_CONVERSATIONS:"30",VITE_MAX_FILES_PER_CONVERSATION:"3",VITE_MAX_FILE_SIZE_MB:"10",VITE_MAX_MESSAGES_PER_CONVERSATION:"100",VITE_MAX_MESSAGES_PER_THREAD:"50",VITE_MAX_MESSAGE_LENGTH:"500",VITE_MAX_TOTAL_FILES:"3",VITE_MAX_TOTAL_MESSAGES:"100",VITE_OUT_OF_SERVICE_MESSAGE:"",VITE_SETTINGS_ABOUT_MSG:"ORBIT Chat",VITE_SHOW_GITHUB_STATS:"true",VITE_USE_LOCAL_API:"false",VITE_VOICE_RECOGNITION_LANG:"",VITE_VOICE_SILENCE_TIMEOUT_MS:"4000"},wm="http://localhost:3000";function irt(e){return typeof e=="object"&&e!==null}const art={apiUrl:"VITE_API_URL",defaultKey:"VITE_DEFAULT_KEY",applicationName:"VITE_APPLICATION_NAME",applicationDescription:"VITE_APPLICATION_DESCRIPTION",defaultInputPlaceholder:"VITE_DEFAULT_INPUT_PLACEHOLDER",useLocalApi:"VITE_USE_LOCAL_API",localApiPath:"VITE_LOCAL_API_PATH",consoleDebug:"VITE_CONSOLE_DEBUG",enableUploadButton:"VITE_ENABLE_UPLOAD",enableAudioOutput:"VITE_ENABLE_AUDIO_OUTPUT",enableAudioInput:"VITE_ENABLE_AUDIO_INPUT",enableFeedbackButtons:"VITE_ENABLE_FEEDBACK",enableConversationThreads:"VITE_ENABLE_CONVERSATION_THREADS",enableAutocomplete:"VITE_ENABLE_AUTOCOMPLETE",voiceSilenceTimeoutMs:"VITE_VOICE_SILENCE_TIMEOUT_MS",voiceRecognitionLanguage:"VITE_VOICE_RECOGNITION_LANG",showGitHubStats:"VITE_SHOW_GITHUB_STATS",outOfServiceMessage:"VITE_OUT_OF_SERVICE_MESSAGE",githubOwner:"VITE_GITHUB_OWNER",githubRepo:"VITE_GITHUB_REPO",adapters:"VITE_ADAPTERS",maxFilesPerConversation:"VITE_MAX_FILES_PER_CONVERSATION",maxFileSizeMB:"VITE_MAX_FILE_SIZE_MB",maxTotalFiles:"VITE_MAX_TOTAL_FILES",maxConversations:"VITE_MAX_CONVERSATIONS",maxMessagesPerConversation:"VITE_MAX_MESSAGES_PER_CONVERSATION",maxMessagesPerThread:"VITE_MAX_MESSAGES_PER_THREAD",maxTotalMessages:"VITE_MAX_TOTAL_MESSAGES",maxMessageLength:"VITE_MAX_MESSAGE_LENGTH",settingsAboutMsg:"VITE_SETTINGS_ABOUT_MSG"};function srt(){return typeof window<"u"&&irt(window.ORBIT_CHAT_CONFIG)}function gt(e,t,n="string"){var o;const r=e==="showGitHubStats"||e==="githubOwner"||e==="githubRepo",A=srt();if(!r){if(A){const l=(o=window.ORBIT_CHAT_CONFIG)==null?void 0:o[e];return l??t}if(typeof window<"u")switch(e){case"apiUrl":if(window.CHATBOT_API_URL)return window.CHATBOT_API_URL;break;case"defaultKey":if(window.CHATBOT_API_KEY)return window.CHATBOT_API_KEY;break}}const i=art[e],s=i?Art[i]:void 0;if(s!=null&&s!==""){if(n==="boolean")return s==="true";if(n==="number"||n==="numberOrNull"){const l=parseInt(s,10);if(!isNaN(l))return n==="numberOrNull"&&l===0?null:l}else return s}return t}function cB(e,t){if(e===void 0||e==="")return t===0?null:t;const n=parseInt(e,10);return isNaN(n)||n<0?t===0?null:t:n===0?null:n}function Gx(e,t){if(e===void 0||e==="")return t;const n=parseInt(e,10);return isNaN(n)||n<0?t:n}function Yce(e){if(typeof e!="string")return null;const t=e.trim();if(!t)return null;const n=t.toLowerCase();return n==="false"||n==="0"||n==="off"||n==="disabled"?null:t}const ea={apiUrl:gt("apiUrl",wm,"string"),defaultKey:gt("defaultKey","default-key","string"),applicationName:gt("applicationName","ORBIT Chat","string"),applicationDescription:gt("applicationDescription","Explore ideas with ORBIT's AI copilots, share context, and build together.","string"),defaultInputPlaceholder:gt("defaultInputPlaceholder","Message ORBIT...","string"),useLocalApi:gt("useLocalApi",!1,"boolean"),localApiPath:gt("localApiPath",void 0,"string"),consoleDebug:gt("consoleDebug",!1,"boolean"),enableUploadButton:gt("enableUploadButton",!1,"boolean"),enableAudioOutput:gt("enableAudioOutput",!1,"boolean"),enableAudioInput:gt("enableAudioInput",!1,"boolean"),enableFeedbackButtons:gt("enableFeedbackButtons",!1,"boolean"),enableConversationThreads:gt("enableConversationThreads",!0,"boolean"),enableAutocomplete:gt("enableAutocomplete",!1,"boolean"),voiceSilenceTimeoutMs:gt("voiceSilenceTimeoutMs",4e3,"number"),voiceRecognitionLanguage:gt("voiceRecognitionLanguage","","string"),showGitHubStats:gt("showGitHubStats",!0,"boolean"),outOfServiceMessage:(()=>{const e=gt("outOfServiceMessage","","string");return Yce(e)})(),githubOwner:gt("githubOwner","schmitech","string"),githubRepo:gt("githubRepo","orbit","string"),maxFilesPerConversation:(()=>{const e=gt("maxFilesPerConversation","5","string");return Gx(e,5)})(),maxFileSizeMB:(()=>{const e=gt("maxFileSizeMB","50","string");return Gx(e,50)})(),maxTotalFiles:(()=>{const e=gt("maxTotalFiles","100","string");return cB(e,100)})(),maxConversations:(()=>{const e=gt("maxConversations","10","string");return cB(e,10)})(),maxMessagesPerConversation:(()=>{const e=gt("maxMessagesPerConversation","1000","string");return cB(e,1e3)})(),maxMessagesPerThread:(()=>{const e=gt("maxMessagesPerThread","1000","string");return cB(e,1e3)})(),maxTotalMessages:(()=>{const e=gt("maxTotalMessages","10000","string");return cB(e,1e4)})(),maxMessageLength:(()=>{const e=gt("maxMessageLength","1000","string");return Gx(e,1e3)})(),settingsAboutMsg:gt("settingsAboutMsg","ORBIT Chat","string")};function Zn(){return gt("apiUrl",wm,"string")}function va(e){const t=e==null?void 0:e.trim();return t&&t.length>0?t:Zn()}function ort(){return gt("defaultKey","default-key","string")}function bce(){return gt("applicationName","ORBIT Chat","string")}function lrt(){return gt("applicationDescription","Explore ideas with ORBIT's AI copilots, share context, and build together.","string")}function Nce(){return gt("defaultInputPlaceholder","Message ORBIT...","string")}function crt(){return gt("enableUploadButton",!1,"boolean")}function urt(){return gt("enableAudioOutput",!1,"boolean")}function grt(){return gt("enableAudioInput",!1,"boolean")}function drt(){return gt("enableFeedbackButtons",!1,"boolean")}function Brt(){return gt("enableConversationThreads",!0,"boolean")}function xce(){return gt("enableAutocomplete",!1,"boolean")}function hrt(){const e=gt("voiceSilenceTimeoutMs",4e3,"number");return Math.max(1e3,e)}function prt(){return gt("voiceRecognitionLanguage","","string")}function frt(){return ea.showGitHubStats}function wrt(){return ea.githubOwner}function Ert(){return ea.githubRepo}function mrt(){const e=gt("outOfServiceMessage","","string");return Yce(e)}function yrt(){return gt("settingsAboutMsg","ORBIT Chat","string")}function Irt({audio:e,audioFormat:t="mp3",autoPlay:n=!1,maxSizeMB:r=10}){const A=m.useRef(null),[i,a]=m.useState(!1),[s,o]=m.useState(0),[l,c]=m.useState(0),[u,g]=m.useState(!0),[d,B]=m.useState(null),[h,w]=m.useState(null);m.useEffect(()=>{if(!e)return;let F=null,N=!0;return(async()=>{try{g(!0),B(null),w(null);const J=e.length*3/4/(1024*1024);if(J>r)throw new Error(`Audio file too large (${J.toFixed(1)}MB > ${r}MB limit)`);if(J>2&&(w(`Large audio file (${J.toFixed(1)}MB) - may take time to load`),Ue("[AudioPlayer] Large audio file detected",{sizeMB:J.toFixed(2)})),!/^[A-Za-z0-9+/=]+$/.test(e.replace(/\s/g,"")))throw new Error("Invalid base64 audio data");const H=atob(e),v=new Uint8Array(H.length);for(let T=0;T<H.length;T++)v[T]=H.charCodeAt(T);const R=t==="mp3"?"audio/mpeg":t==="wav"?"audio/wav":t==="ogg"?"audio/ogg":t==="opus"?"audio/opus":t==="webm"?"audio/webm":`audio/${t}`,L=new Blob([v],{type:R});if(F=URL.createObjectURL(L),!N||!A.current){F&&URL.revokeObjectURL(F);return}A.current.src=F,g(!1),Ue("[AudioPlayer] Audio loaded successfully",{format:t,mimeType:R,size:L.size}),n&&A.current&&A.current.play().catch(T=>{El("[AudioPlayer] Auto-play failed:",T)})}catch{N&&(B("Failed to load audio"),g(!1))}})(),()=>{N=!1,F&&URL.revokeObjectURL(F)}},[e,t,n,r]);const p=()=>{A.current&&o(A.current.duration)},f=()=>{A.current&&c(A.current.currentTime)},E=()=>a(!0),y=()=>a(!1),C=()=>{a(!1),c(0)},I=()=>{A.current&&(i?A.current.pause():A.current.play().catch(F=>{B("Playback failed")}))},Q=F=>{if(!A.current)return;const N=parseFloat(F.target.value);A.current.currentTime=N,c(N)},D=F=>{if(!isFinite(F))return"0:00";const N=Math.floor(F/60),S=Math.floor(F%60);return`${N}:${S.toString().padStart(2,"0")}`};return d?x.jsxs("div",{className:"flex items-center gap-2 rounded-md border border-red-300 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-700 dark:bg-red-900/20 dark:text-red-400",children:[x.jsx(kw,{className:"h-4 w-4"}),x.jsx("span",{children:d})]}):x.jsxs("div",{className:"mt-3 flex flex-col gap-1",children:[h&&x.jsxs("div",{className:"text-xs text-amber-600 dark:text-amber-400 px-1",children:["⚠️ ",h]}),x.jsxs("div",{className:"flex items-center gap-3 rounded-md border border-gray-300 bg-white px-3 py-2 dark:border-[#4a4b54] dark:bg-[#343541]",children:[x.jsx("audio",{ref:A,onLoadedMetadata:p,onTimeUpdate:f,onPlay:E,onPause:y,onEnded:C}),x.jsx("button",{onClick:I,disabled:u,className:"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-gray-200 hover:bg-gray-300 disabled:opacity-50 dark:bg-[#4a4b54] dark:hover:bg-[#565869]",title:i?"Pause":"Play","aria-label":i?"Pause audio":"Play audio",children:u?x.jsx("div",{className:"h-4 w-4 animate-spin rounded-full border-2 border-gray-400 border-t-transparent"}):i?x.jsx(oBe,{className:"h-4 w-4 text-gray-700 dark:text-[#ececf1]"}):x.jsx(cBe,{className:"h-4 w-4 text-gray-700 dark:text-[#ececf1]"})}),x.jsxs("div",{className:"flex flex-1 items-center gap-2",children:[x.jsx("span",{className:"text-xs text-gray-500 dark:text-[#bfc2cd]",children:D(l)}),x.jsx("input",{type:"range",min:"0",max:s||0,value:l,onChange:Q,disabled:u||!s,className:"flex-1 cursor-pointer accent-gray-600 dark:accent-[#bfc2cd]",style:{background:s?`linear-gradient(to right, rgb(75 85 99) 0%, rgb(75 85 99) ${l/s*100}%, rgb(229 231 235) ${l/s*100}%, rgb(229 231 235) 100%)`:"rgb(229 231 235)"}}),x.jsx("span",{className:"text-xs text-gray-500 dark:text-[#bfc2cd]",children:D(s)})]}),x.jsx(kw,{className:"h-4 w-4 text-gray-500 dark:text-[#bfc2cd]"})]})]})}const Crt=["#","*","`","[","]","(",")","{","}","|","<",">"],Dce=e=>Crt.some(t=>e.includes(t));function Sce(e){if(!e||e.length<1e3)return!1;const t=/^[A-Za-z0-9+/=]+$/,n=e.replace(/\s+/g,"");if(n.length>1e4&&t.test(n)){const r=/\b(the|and|for|are|but|not|you|all|can|function|const|let|var|class|return|import|export|async|await|if|else|while|true|false|null|undefined|http|https|www|error|data|response|request|api|json|xml|html|css|js|py|java|cpp|def|print|console|log)\b/i.test(e),A=Dce(e),i=/[-.,;:!?'"()]/.test(e);if(!r&&!A&&!i)return!0}return!!(n.length>5e4&&t.test(n)&&e.replace(/[A-Za-z0-9+/=\s]/g,"").length<10)}const Qrt=/(?:\u202F|\u2009|\u200A|\u200B|\u200C|\u200D|\uFEFF)/g;function sh(e){if(!e)return e;let t=e.replace(Qrt," ");if(Sce(t))return"";const n=/([A-Za-z0-9+/=]{10000,})/g;return t=t.replace(n,r=>{const A=r.replace(/\s+/g,"");if(A.length>1e4&&/^[A-Za-z0-9+/=]+$/.test(A)){const i=/\b(function|const|let|var|class|return|import|export|if|else|while|for|true|false|null|def|print)\b/i.test(r),a=Dce(r),s=/[-.,;:!?'"()]/.test(r);if(!i&&!a&&!s)return""}return r}),t}function sk(e,t=5e4){return!e||e.length<=t?e:Sce(e)?"":e.substring(0,t)+`
|
|
993
993
|
|
|
994
|
-
... (content truncated due to length)`}const dt={maxFilesPerConversation:ea.maxFilesPerConversation,maxFileSizeMB:ea.maxFileSizeMB,maxTotalFiles:ea.maxTotalFiles,maxConversations:ea.maxConversations,maxMessagesPerConversation:ea.maxMessagesPerConversation,maxMessagesPerThread:ea.maxMessagesPerThread,maxTotalMessages:ea.maxTotalMessages,maxMessageLength:ea.maxMessageLength},Mrt=[];function Frt({message:e,onRegenerate:t,onStartThread:n,onSendThreadMessage:r,threadMessages:A,sessionId:i,isThreadSendDisabled:a}){var Pr,Nn;const[s,o]=m.useState(!1),[l,c]=m.useState(null),[u,g]=m.useState(""),[d,B]=m.useState(!1),[h,w]=m.useState(!1),p=m.useRef(((Pr=e.threadInfo)==null?void 0:Pr.thread_id)||null),f=m.useRef(null),E=m.useRef(null),y=m.useRef(0),C=m.useRef(""),I=m.useRef(!0),Q=e.role==="assistant",D=A??Mrt,F=D.filter(Ye=>!(Ye.role==="assistant"&&Ye.isStreaming)).length,N=D.filter(Ye=>!(Ye.role==="assistant"&&Ye.isStreaming)).length,S=D.some(Ye=>Ye.isStreaming),k="en-US",J=Brt(),H=dt.maxMessageLength,v=dt.maxMessagesPerThread,R=v!==null&&N>=v,L=R&&v!==null?`This thread reached the ${v} message limit. Start a new conversation for more follow-ups.`:null,{theme:T,isDark:K}=Jm(),G="Reply in thread...",W=`thread-input-${e.id}`,Ae=T.mode==="dark"?"dark":T.mode==="light"?"light":"",z=K?"dark":"light",$=m.useMemo(()=>["message-markdown w-full min-w-0","prose prose-slate dark:prose-invert max-w-none",Ae].filter(Boolean).join(" "),[Ae]),le=m.useMemo(()=>["message-markdown w-full min-w-0","prose prose-invert max-w-none",Ae].filter(Boolean).join(" "),[Ae]),ge=Q?$:le,de=`${$} text-sm leading-6`,we=`${le} text-sm leading-6`;m.useEffect(()=>{var Ye,ee;!p.current&&((Ye=e.threadInfo)!=null&&Ye.thread_id)&&B(!0),p.current=((ee=e.threadInfo)==null?void 0:ee.thread_id)||null},[(Nn=e.threadInfo)==null?void 0:Nn.thread_id]),m.useEffect(()=>{e.threadInfo||(g(""),B(!1),w(!1))},[e.threadInfo]),m.useEffect(()=>{F>0&&B(!0)},[F]);const _=m.useCallback(()=>{if(!E.current)return;const{scrollTop:Ye,scrollHeight:ee,clientHeight:se}=E.current,me=ee-Ye-se;I.current=me<120},[]),ue=m.useCallback(()=>{requestAnimationFrame(()=>{E.current&&(E.current.scrollTop=E.current.scrollHeight)})},[]);m.useEffect(()=>{if(!d)return;const Ye=D.length,ee=Ye>y.current,se=D[D.length-1],me=(se==null?void 0:se.content)||"",Pe=me!==C.current,st=(se==null?void 0:se.isStreaming)??!1;ee||st&&Pe?(ue(),I.current=!0):I.current&&Pe&&ue(),y.current=Ye,C.current=me},[d,D,ue]),m.useEffect(()=>{d&&(ue(),I.current=!0)},[d,ue]);const ce=m.useMemo(()=>{const Ye=e.timestamp instanceof Date?e.timestamp:new Date(e.timestamp),ee=Ye.toLocaleDateString(k,{weekday:"short"}),se=Ye.toLocaleDateString(k,{month:"short"}),me=Ye.getDate().toString().padStart(2,"0"),Pe=Ye.getFullYear(),st=Ye.toLocaleTimeString(k,{hour:"2-digit",minute:"2-digit",hour12:!0});return`${ee}, ${se} ${me}, ${Pe} ${st}`},[e.timestamp,k]),ae=Q?"text-blue-700 dark:text-[#c5d7ff]":"text-emerald-700 dark:text-[#9ef0d5]",he=`message-bubble min-w-0 break-words leading-relaxed ${Q?"border border-blue-100/80 bg-transparent text-[#0f172a] shadow-[0_15px_35px_-20px_rgba(15,23,42,0.25)] dark:border-[#1f2a36] dark:bg-transparent dark:text-[#e5edff]":"border border-slate-200 bg-transparent text-[#1c3226] shadow-[0_12px_30px_-18px_rgba(15,52,33,0.25)] dark:border-[#1a2b21] dark:bg-transparent dark:text-[#dffbea]"} rounded-2xl px-4 py-3`,xe=Q?"border-blue-100 bg-white/80 dark:border-[#1f2a36] dark:bg-white/5":"border-emerald-100 bg-white/80 dark:border-[#1a2b21] dark:bg-white/5",Ce=async()=>{try{await navigator.clipboard.writeText(e.content),o(!0),setTimeout(()=>o(!1),2e3)}catch{}},oe=Ye=>{c(l===Ye?null:Ye)},Le=m.useCallback(Ye=>(Ye instanceof Date?Ye:new Date(Ye)).toLocaleTimeString(k,{hour:"2-digit",minute:"2-digit"}),[k]),et=async()=>{if(!r||!e.threadInfo||R)return;const Ye=u.trim();if(Ye){w(!0);try{await r(e.threadInfo.thread_id,e.id,Ye),g(""),setTimeout(()=>{f.current&&f.current.focus()},100)}catch{setTimeout(()=>{f.current&&f.current.focus()},100)}finally{w(!1)}}},vn=Ye=>{Ye.key==="Enter"&&!Ye.shiftKey&&(Ye.preventDefault(),et())},Jt=!e.threadInfo||!r||a||S||h||R;m.useEffect(()=>{if(!d||Jt)return;const Ye=f.current;if(!Ye)return;const ee=requestAnimationFrame(()=>{Ye.focus({preventScroll:!0});const se=Ye.value.length;Ye.setSelectionRange(se,se)});return()=>cancelAnimationFrame(ee)},[d,Jt,h]),m.useEffect(()=>{if(f.current){const ee=f.current;ee.style.height="auto";const se=ee.scrollHeight;ee.style.height=`${Math.min(se,120)}px`,ee.style.overflowY=se>120?"auto":"hidden"}},[u]);const ln=m.useMemo(()=>e.isStreaming&&(!e.content||e.content==="…")?x.jsx("div",{className:ge,children:x.jsxs("div",{className:"flex items-center gap-1.5 py-1",children:[x.jsx("span",{className:"inline-block h-2.5 w-2.5 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"0ms"}}),x.jsx("span",{className:"inline-block h-2.5 w-2.5 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"150ms"}}),x.jsx("span",{className:"inline-block h-2.5 w-2.5 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"300ms"}})]})}):x.jsx(Zu,{content:sk(sh(e.content||"")),className:ge,syntaxTheme:z}),[ge,e.content,e.isStreaming,z]),Ln=m.useMemo(()=>[...D].sort((ee,se)=>{const me=ee.timestamp instanceof Date?ee.timestamp.getTime():new Date(ee.timestamp).getTime(),Pe=se.timestamp instanceof Date?se.timestamp.getTime():new Date(se.timestamp).getTime();return me-Pe}).map(ee=>{const se=ee.role==="assistant",me=se?de:we,Pe=ee.isStreaming&&(!ee.content||ee.content==="…")?x.jsx("div",{className:me,children:x.jsxs("div",{className:"flex items-center gap-1.5 py-1",children:[x.jsx("span",{className:"inline-block h-2 w-2 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"0ms"}}),x.jsx("span",{className:"inline-block h-2 w-2 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"150ms"}}),x.jsx("span",{className:"inline-block h-2 w-2 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"300ms"}})]})}):x.jsx(Zu,{content:sk(sh(ee.content||"")),className:me,syntaxTheme:z});return x.jsxs("div",{className:"flex items-start gap-3",children:[x.jsx("div",{className:`mt-0.5 flex h-7 w-7 flex-shrink-0 items-center justify-center ${se?"text-blue-700 dark:text-[#c5d7ff]":"text-emerald-700 dark:text-[#9ef0d5]"}`,children:se?x.jsx(jj,{className:"h-3.5 w-3.5"}):x.jsx(zj,{className:"h-3.5 w-3.5"})}),x.jsxs("div",{className:"flex-1 min-w-0 rounded-2xl border border-white/70 bg-white/90 px-4 py-3 text-sm shadow-sm dark:border-white/5 dark:bg-white/5 backdrop-blur overflow-hidden",children:[x.jsxs("div",{className:"mb-1 flex items-center justify-between text-[11px] font-semibold uppercase tracking-wide text-blue-900/70 dark:text-[#c5d7ff]",children:[x.jsx("span",{children:se?"Assistant":"You"}),x.jsx("span",{children:Le(ee.timestamp)})]}),x.jsx("div",{className:"thread-markdown-wrapper overflow-x-auto",children:Pe})]})]},ee.id)}),[Le,z,de,D,we]);return x.jsxs("div",{className:"group flex items-start gap-3 px-1 animate-fadeIn min-w-0 sm:px-0",children:[x.jsx("div",{className:`flex h-10 w-10 flex-shrink-0 items-center justify-center self-start -mt-2 ml-1 sm:-mt-3 sm:ml-2 ${ae}`,children:Q?x.jsx(jj,{className:"h-5 w-5"}):x.jsx(zj,{className:"h-5 w-5"})}),x.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[x.jsxs("div",{className:"flex flex-col gap-1.5 mb-1",children:[x.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-gray-700 dark:text-[#ececf1]",children:Q?"Assistant":"You"}),x.jsx("span",{className:"text-xs text-gray-500 dark:text-[#bfc2cd]",children:ce})]}),x.jsxs("div",{className:he,children:[ln,e.attachments&&e.attachments.length>0&&x.jsx("div",{className:"mt-3 space-y-2",children:e.attachments.map(Ye=>x.jsxs("div",{className:`flex items-center gap-3 rounded-xl border p-3 ${xe}`,children:[x.jsx(_de,{className:"h-4 w-4 text-gray-500 dark:text-[#bfc2cd]"}),x.jsxs("div",{className:"min-w-0 flex-1",children:[x.jsx("p",{className:"truncate text-sm font-medium text-[#353740] dark:text-[#ececf1]",children:Ye.filename}),x.jsxs("p",{className:"text-xs text-gray-500 dark:text-[#bfc2cd]",children:[(Ye.file_size/1024).toFixed(1)," KB"]})]})]},Ye.file_id))}),e.audio&&Q&&!e.isStreaming&&x.jsx(Irt,{audio:e.audio,audioFormat:e.audioFormat,autoPlay:!1})]}),Q&&!e.isStreaming&&x.jsx(x.Fragment,{children:x.jsxs("div",{className:"flex flex-wrap items-center gap-1 md:gap-2 text-xs text-gray-500 transition-opacity dark:text-[#bfc2cd]",children:[x.jsxs("button",{onClick:Ce,className:"inline-flex items-center gap-1 rounded px-2 py-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a]",title:"Copy to clipboard","aria-label":"Copy to clipboard",children:[x.jsx(qde,{className:"h-4 w-4"}),x.jsx("span",{className:"hidden sm:inline",children:"Copy"})]}),t&&x.jsxs("button",{onClick:()=>t(e.id),className:"inline-flex items-center gap-1 rounded px-2 py-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a]",title:"Regenerate response","aria-label":"Regenerate response",children:[x.jsx(gBe,{className:"h-4 w-4"}),x.jsx("span",{className:"hidden sm:inline",children:"Retry"})]}),J&&n&&e.supportsThreading&&!e.threadInfo&&i&&x.jsxs("div",{className:"inline-flex items-center gap-1",children:[x.jsxs("button",{onClick:()=>n(e.id,i),className:"inline-flex items-center gap-1 rounded px-2 py-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a]",title:"Reply in thread","aria-label":"Reply in thread",children:[x.jsx(Uw,{className:"h-4 w-4"}),x.jsx("span",{className:"hidden sm:inline",children:"Reply in thread"})]}),x.jsx("span",{className:"inline-flex items-center rounded p-1 text-gray-500 dark:text-[#bfc2cd]",title:"Use this when your question is about this specific answer. Use the main input for unrelated topics.","aria-label":"Thread help",children:x.jsx(Zde,{className:"h-4 w-4"})})]}),drt()&&x.jsxs("div",{className:"flex items-center gap-1",children:[x.jsx("button",{onClick:()=>oe("up"),className:`rounded p-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a] ${l==="up"?"text-[#353740] dark:text-[#ececf1]":""}`,title:"Good response","aria-label":"Good response",children:x.jsx(fBe,{className:"h-4 w-4"})}),x.jsx("button",{onClick:()=>oe("down"),className:`rounded p-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a] ${l==="down"?"text-[#353740] dark:text-[#ececf1]":""}`,title:"Poor response","aria-label":"Poor response",children:x.jsx(pBe,{className:"h-4 w-4"})})]}),s&&x.jsxs("div",{className:"flex items-center gap-1.5 rounded-lg bg-emerald-500 px-2.5 py-1 text-[11px] font-bold uppercase tracking-wider text-white shadow-sm animate-fadeIn dark:bg-emerald-600",children:[x.jsx(Kde,{className:"h-3.5 w-3.5"}),x.jsx("span",{children:"Copied"})]})]})}),J&&e.threadInfo&&x.jsxs("div",{className:"thread-panel mt-4 rounded-xl border border-blue-100/80 bg-blue-50/70 p-3 sm:p-4 text-sm shadow-sm ring-1 ring-blue-100/60 dark:border-white/10 dark:bg-white/[0.035] dark:ring-white/5",children:[x.jsxs("div",{className:"flex items-center justify-between gap-2 text-sm font-semibold text-blue-900 dark:text-[#e1e8ff]",children:[x.jsxs("div",{className:"inline-flex items-center gap-2 uppercase tracking-wide text-xs sm:text-sm",children:[x.jsx(Uw,{className:"h-3.5 w-3.5"}),x.jsxs("span",{children:["Replies",F>0?` (${F})`:""]})]}),x.jsx("button",{onClick:()=>B(Ye=>!Ye),className:"inline-flex items-center gap-1.5 sm:gap-2 rounded-full border border-blue-200/80 px-2.5 sm:px-3 py-1.5 text-xs uppercase tracking-wide text-blue-900 transition hover:bg-white/70 dark:border-white/10 dark:text-[#c5d7ff] dark:hover:bg-white/[0.08]",children:d?x.jsxs(x.Fragment,{children:[x.jsx("span",{className:"hidden sm:inline",children:"Hide replies"}),x.jsx(Pde,{className:"h-4 w-4 sm:h-3 sm:w-3"})]}):x.jsxs(x.Fragment,{children:[x.jsx("span",{className:"hidden sm:inline",children:"Show replies"}),x.jsx(NZ,{className:"h-4 w-4 sm:h-3 sm:w-3"})]})})]}),d&&x.jsxs(x.Fragment,{children:[x.jsx("div",{ref:E,className:"mt-3 space-y-3 max-h-96 overflow-y-auto",style:{scrollBehavior:"auto",overflowAnchor:"none"},onScroll:_,children:F===0?x.jsx("div",{className:"rounded-lg border border-dashed border-blue-200/80 bg-white/60 px-3 py-2 text-xs text-blue-900/70 dark:border-white/10 dark:bg-white/[0.04] dark:text-[#b4c7ff]",children:"No replies yet. Ask a clarifying question here."}):Ln}),L&&x.jsx("div",{className:"mt-3 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-900 dark:border-amber-500/30 dark:bg-[#2f2410] dark:text-amber-100",children:L}),x.jsxs("div",{className:"mt-3 rounded-2xl border border-slate-200/80 bg-gradient-to-b from-white to-slate-50/80 p-3 shadow-[0_12px_28px_-22px_rgba(15,23,42,0.5)] dark:border-[#3f4354] dark:bg-gradient-to-b dark:from-[#252937]/90 dark:to-[#1d202b]/90",children:[F===0&&x.jsx("p",{className:"mb-2 text-xs font-medium text-blue-900/80 dark:text-[#b4c7ff]",children:"Replying in thread keeps this discussion linked to this message."}),x.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3",children:[x.jsx("label",{htmlFor:W,className:"sr-only",children:"Reply in thread"}),x.jsx("textarea",{id:W,ref:f,className:"flex-1 w-full sm:w-auto min-w-0 resize-none rounded-xl border border-slate-200 bg-white px-3 py-2.5 text-base sm:text-sm text-[#1f2937] placeholder-slate-500 shadow-inner outline-none transition focus:border-blue-400 focus:ring-2 focus:ring-blue-200/70 disabled:opacity-60 dark:border-[#4d5368] dark:bg-[#171a22] dark:text-[#ececf1] dark:placeholder-[#8e8ea0] dark:focus:border-blue-400 dark:focus:ring-blue-500/30",placeholder:G,"aria-label":"Reply in thread",value:u,onChange:Ye=>g(Ye.target.value),onKeyDown:vn,disabled:Jt,rows:1,maxLength:H,style:{minHeight:"44px",maxHeight:"120px",outline:"none",boxShadow:"none",WebkitAppearance:"none",MozAppearance:"none",appearance:"none"}}),x.jsxs("div",{className:"flex items-center justify-between sm:justify-end gap-2",children:[u.length>0&&x.jsx("div",{className:"text-xs text-gray-500 dark:text-[#bfc2cd] whitespace-nowrap",children:x.jsxs("span",{className:u.length>=H?"text-red-600 font-semibold":"",children:[u.length,"/",H]})}),x.jsx("button",{type:"button",onClick:et,disabled:Jt||u.trim().length===0,className:`flex h-11 w-11 sm:h-9 sm:w-9 items-center justify-center rounded-full transition active:scale-95 ${u.trim().length>0&&!Jt?"bg-blue-600 text-white hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-400":"bg-slate-200 text-slate-400 dark:bg-[#2f313a] dark:text-[#6b6f7a]"} disabled:cursor-not-allowed`,title:"Send thread message",children:h?x.jsx(ig,{className:"h-5 w-5 sm:h-4 sm:w-4 animate-spin"}):x.jsx(bZ,{className:"h-5 w-5 sm:h-4 sm:w-4"})})]})]})]})]})]})]})]})}function Yrt(e=800,t=100,n="sine"){try{if(typeof window>"u"){Ue("[SoundEffects] Window is not available for audio playback");return}const r=window.AudioContext??window.webkitAudioContext;if(!r){Ue("[SoundEffects] AudioContext not supported in this browser");return}const A=new r,i=A.createOscillator(),a=A.createGain();i.connect(a),a.connect(A.destination),i.frequency.value=e,i.type=n,a.gain.setValueAtTime(.3,A.currentTime),a.gain.exponentialRampToValueAtTime(.01,A.currentTime+t/1e3),i.start(A.currentTime),i.stop(A.currentTime+t/1e3)}catch{}}const brt={messageSent:{frequency:600,duration:80,type:"sine"},messageReceived:{frequency:800,duration:100,type:"sine"},success:{frequency:1e3,duration:150,type:"sine"},error:{frequency:400,duration:200,type:"square"},notification:{frequency:700,duration:120,type:"sine"}};function DB(e,t){if(!t)return;const n=brt[e];if(n)try{Yrt(n.frequency,n.duration,n.type),Ue(`[SoundEffects] Playing ${e} sound effect`)}catch{}}function Nrt({messages:e,onRegenerate:t,onStartThread:n,onSendThreadMessage:r,sessionId:A,isLoading:i}){const a=m.useRef(null),s=m.useRef(null),o=m.useRef(e.length),l=m.useRef(""),c=m.useRef(i),u=m.useRef(!0),{settings:g}=Om(),{topLevelMessages:d,threadLookup:B}=m.useMemo(()=>{const p=new Map,f=[];return e.forEach(E=>{if(E.isThreadMessage&&E.parentMessageId){const y=p.get(E.parentMessageId)||[];p.set(E.parentMessageId,[...y,E]);return}f.push(E)}),{topLevelMessages:f,threadLookup:p}},[e]),h=()=>{if(!s.current)return;const{scrollTop:p,scrollHeight:f,clientHeight:E}=s.current,C=f-p-E<200;u.current=C},w=m.useCallback(()=>{requestAnimationFrame(()=>{s.current&&(s.current.scrollTop=s.current.scrollHeight)})},[]);return m.useEffect(()=>{const p=e.length,f=o.current,E=p>f,y=e[e.length-1],C=(y==null?void 0:y.content)||"",I=C!==l.current,Q=(y==null?void 0:y.isStreaming)??!1;E||Q&&I?(w(),u.current=!0):u.current&&I&&w(),o.current=p,l.current=C},[e,w]),m.useEffect(()=>{i&&(w(),u.current=!0)},[i,w]),m.useEffect(()=>{if(c.current&&!i){const p=e[e.length-1];(p==null?void 0:p.role)==="assistant"&&p.content&&DB("messageReceived",g.soundEnabled)}c.current=i},[i,e,g.soundEnabled]),d.length===0?x.jsx("div",{className:"flex-1 flex items-center justify-center px-4 sm:px-6",children:x.jsxs("div",{className:"text-center text-lg text-gray-500 dark:text-[#bfc2cd]",children:[x.jsx("p",{className:"text-xl",children:"Your messages will appear here."}),x.jsx("p",{className:"mt-1 text-lg",children:"Start the conversation by sending a prompt below."})]})}):x.jsx("div",{ref:s,className:"message-list flex-1 overflow-y-auto py-6",onScroll:h,children:x.jsxs("div",{className:"space-y-6 px-3 sm:px-4",children:[d.map(p=>x.jsx("div",{style:{contentVisibility:"auto",containIntrinsicSize:"420px"},children:x.jsx(Frt,{message:p,onRegenerate:t,onStartThread:n,onSendThreadMessage:r,threadMessages:B.get(p.id),sessionId:A,isThreadSendDisabled:i})},p.id)),x.jsx("div",{ref:a,className:"h-8"})]})})}const xrt=4e3;function Drt(e,t,n={}){var D;const[r,A]=m.useState(!1),[i,a]=m.useState(null),s=m.useRef(null),o=m.useRef(""),l=m.useRef(""),c=m.useRef(!1),u=m.useRef(null),g=typeof navigator<"u"?navigator.language:"en-US",d=Number.isFinite(n.silenceTimeoutMs)?Math.max(Math.floor(n.silenceTimeoutMs),1e3):xrt,B=((D=n.language)==null?void 0:D.trim())||g||"en-US",h=m.useCallback(F=>F.replace(/\s+/g," ").trim(),[]),w=m.useCallback(F=>{const N=h(F);N&&N!==l.current&&(l.current=N,e(" "+N))},[h,e]),p=m.useCallback(()=>{if(!o.current)return;const F=o.current;o.current="",w(F)},[w]),f=typeof window<"u"&&("webkitSpeechRecognition"in window||"SpeechRecognition"in window),E=m.useCallback(()=>{!t||c.current||(c.current=!0,t())},[t]),y=m.useCallback(()=>{u.current!==null&&(clearTimeout(u.current),u.current=null)},[]),C=m.useCallback(()=>{y(),u.current=setTimeout(()=>{s.current?s.current.stop():E()},d)},[y,E,d]),I=m.useCallback(()=>{if(!f){a("Speech recognition is not supported in this browser. Please try Chrome, Edge, or Safari.");return}if(!r)try{c.current=!1;const F=window.SpeechRecognition||window.webkitSpeechRecognition,N=new F;N.continuous=!0,N.interimResults=!0,N.lang=B,N.maxAlternatives=1,N.onstart=()=>{A(!0),a(null),o.current="",l.current="",Ue("Speech recognition started"),C()},N.onresult=S=>{let k="",J="";for(let H=S.resultIndex;H<S.results.length;H++){const v=S.results[H][0].transcript;S.results[H].isFinal?k+=v:J+=v}J&&(o.current=h(J)),k&&(o.current="",w(k)),C()},N.onend=()=>{y(),p(),A(!1),s.current=null,Ue("Speech recognition ended"),E()},N.onerror=S=>{switch(y(),El("Speech recognition error:",S.error),A(!1),s.current=null,o.current="",E(),S.error){case"no-speech":a("No speech detected. Please try again.");break;case"audio-capture":a("Microphone access denied. Please allow microphone access and try again.");break;case"not-allowed":a("Microphone access not allowed. Please enable microphone permissions.");break;case"network":a("Network error occurred. Please check your connection.");break;default:a(`Speech recognition error: ${S.error}`)}},N.start(),s.current=N}catch{a("Failed to start speech recognition. Please try again."),A(!1)}},[f,r,p,E,C,y,B,h,w]),Q=m.useCallback(()=>{if(s.current){const F=s.current;F.onend=null,F.onerror=null,F.onresult=null,F.onstart=null;try{F.stop()}catch{}s.current=null}y(),p(),A(!1),a(null),E()},[y,p,E]);return{isListening:r,isSupported:f,startListening:I,stopListening:Q,error:i}}const Srt=300,c4=3,gf=5;function Urt(e,t={}){const{enabled:n=xce(),adapterName:r,inputRef:A}=t,[i,a]=m.useState([]),[s,o]=m.useState(!1),[l,c]=m.useState(-1),u=m.useRef(null),g=m.useRef(null),d=m.useRef(null),B=m.useRef(null),h=m.useRef(0),w=m.useRef([]),p=m.useRef([]);m.useEffect(()=>{w.current=i},[i]);const f=m.useCallback(N=>{if(typeof N!="string")return null;const S=N.replace(/[\r\n\u2028\u2029]+/g," ").replace(/\s{2,}/g," ").trim();return S?{text:S}:null},[]),E=m.useCallback(N=>{const S=N.toLowerCase().trim(),k=p.current.length>0?p.current:w.current;if(!S)return k.slice(0,gf);const J=k.filter(H=>H.text.toLowerCase().includes(S));return J.length>0?J.slice(0,gf):k.slice(0,gf)},[]),y=m.useCallback(async N=>{if(!n||N.length<c4){a([]),p.current=[],g.current&&clearTimeout(g.current),o(!1);return}if(!r){a([]),p.current=[],g.current&&clearTimeout(g.current),o(!1);return}d.current&&d.current.abort(),d.current=new AbortController;const S=h.current+1;h.current=S,g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{S===h.current&&o(!0)},150);try{const k={"X-Adapter-Name":r},J=new URLSearchParams;J.set("q",N),J.set("limit",String(gf));const H=`/api/v1/autocomplete?${J.toString()}`,v=await fetch(H,{method:"GET",headers:k,signal:d.current.signal});if(!v.ok){An("[useAutocomplete] Request failed:",v.status),a(E(N));return}const R=await v.json(),L=Array.isArray(R==null?void 0:R.suggestions)?R.suggestions.map(T=>f(typeof T=="string"?T:T==null?void 0:T.text)).filter(T=>T!==null):[];if(S!==h.current)return;L.length===0?a(E(N)):(a(L),p.current=L),c(-1),Ue("[useAutocomplete] Received",L.length,"suggestions")}catch(k){if(k instanceof Error&&k.name==="AbortError")return;An("[useAutocomplete] Error:",k instanceof Error?k.message:String(k)),S===h.current&&a(E(N))}finally{S===h.current&&(g.current&&(clearTimeout(g.current),g.current=null),o(!1))}},[n,r,f,E]);m.useEffect(()=>{u.current&&clearTimeout(u.current);const N=()=>{d.current&&d.current.abort(),g.current&&clearTimeout(g.current),o(!1)};if(!n||e.length<c4){a([]),N();return}if(B.current){if(e===B.current){a([]),N();return}B.current=null}return u.current=setTimeout(()=>{y(e)},Srt),()=>{u.current&&clearTimeout(u.current)}},[e,y,n]),m.useEffect(()=>()=>{d.current&&d.current.abort(),g.current&&clearTimeout(g.current)},[]);const C=m.useCallback(()=>{c(N=>N<i.length-1?N+1:0)},[i.length]),I=m.useCallback(()=>{c(N=>N>0?N-1:i.length-1)},[i.length]),Q=m.useCallback(()=>{a([]),p.current=[],c(-1),d.current&&d.current.abort(),g.current&&clearTimeout(g.current),o(!1)},[]),D=m.useCallback(N=>{if(!(A!=null&&A.current))return;const S=()=>{const k=A.current;if(!k)return;const J=typeof N=="string"?N.length:k.value.length;k.focus({preventScroll:!0}),typeof k.setSelectionRange=="function"&&k.setSelectionRange(J,J)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(S):setTimeout(S,0)},[A]),F=m.useCallback(N=>{B.current=N},[]);return{suggestions:i,isLoading:s,selectedIndex:l,setSelectedIndex:c,selectNext:C,selectPrevious:I,clearSuggestions:Q,focusInputAfterSelection:D,suppressUntilQueryChange:F}}let df=null;function krt(){let e=null,t=null;const n=(A,i,a)=>{e=i||null,t=a||null},r=()=>{if(!t)throw new Error("Adapter name is required");return{async*streamChat(A,i,a,s,o,l,c,u,g,d,B){var p,f;const h={messages:[{role:"user",content:A}],stream:i!==!1};a&&a.length>0&&(h.file_ids=a),s&&(h.thread_id=s),o&&(h.audio_input=o),l&&(h.audio_format=l),c&&(h.language=c),u!==void 0&&(h.return_audio=u),g&&(h.tts_voice=g),d&&(h.source_language=d),B&&(h.target_language=B);const w=await fetch("/api/v1/chat",{method:"POST",headers:{"Content-Type":"application/json","X-Adapter-Name":t,...e?{"X-Session-ID":e}:{}},body:JSON.stringify(h)});if(!w.ok)throw new Error(`API request failed: ${w.status} ${w.statusText}`);if((p=w.headers.get("content-type"))!=null&&p.includes("text/event-stream")){const E=(f=w.body)==null?void 0:f.getReader(),y=new TextDecoder;let C="";if(!E)throw new Error("Response body is not readable");for(;;){const{done:I,value:Q}=await E.read();if(I)break;C+=y.decode(Q,{stream:!0});const D=C.split(`
|
|
994
|
+
... (content truncated due to length)`}const dt={maxFilesPerConversation:ea.maxFilesPerConversation,maxFileSizeMB:ea.maxFileSizeMB,maxTotalFiles:ea.maxTotalFiles,maxConversations:ea.maxConversations,maxMessagesPerConversation:ea.maxMessagesPerConversation,maxMessagesPerThread:ea.maxMessagesPerThread,maxTotalMessages:ea.maxTotalMessages,maxMessageLength:ea.maxMessageLength},Mrt=[];function Frt({message:e,onRegenerate:t,onStartThread:n,onSendThreadMessage:r,threadMessages:A,sessionId:i,isThreadSendDisabled:a}){var Pr,Nn;const[s,o]=m.useState(!1),[l,c]=m.useState(null),[u,g]=m.useState(""),[d,B]=m.useState(!1),[h,w]=m.useState(!1),p=m.useRef(((Pr=e.threadInfo)==null?void 0:Pr.thread_id)||null),f=m.useRef(null),E=m.useRef(null),y=m.useRef(0),C=m.useRef(""),I=m.useRef(!0),Q=e.role==="assistant",D=A??Mrt,F=D.filter(Ye=>!(Ye.role==="assistant"&&Ye.isStreaming)).length,N=D.filter(Ye=>!(Ye.role==="assistant"&&Ye.isStreaming)).length,S=D.some(Ye=>Ye.isStreaming),k="en-US",J=Brt(),H=dt.maxMessageLength,v=dt.maxMessagesPerThread,R=v!==null&&N>=v,L=R&&v!==null?`This thread reached the ${v} message limit. Start a new conversation for more follow-ups.`:null,{theme:T,isDark:K}=Jm(),G="Reply in thread...",W=`thread-input-${e.id}`,Ae=T.mode==="dark"?"dark":T.mode==="light"?"light":"",z=K?"dark":"light",$=m.useMemo(()=>["message-markdown w-full min-w-0","prose prose-slate dark:prose-invert max-w-none",Ae].filter(Boolean).join(" "),[Ae]),le=m.useMemo(()=>["message-markdown w-full min-w-0","prose prose-invert max-w-none",Ae].filter(Boolean).join(" "),[Ae]),ge=Q?$:le,de=`${$} text-sm leading-6`,we=`${le} text-sm leading-6`;m.useEffect(()=>{var Ye,ee;!p.current&&((Ye=e.threadInfo)!=null&&Ye.thread_id)&&B(!0),p.current=((ee=e.threadInfo)==null?void 0:ee.thread_id)||null},[(Nn=e.threadInfo)==null?void 0:Nn.thread_id]),m.useEffect(()=>{e.threadInfo||(g(""),B(!1),w(!1))},[e.threadInfo]),m.useEffect(()=>{F>0&&B(!0)},[F]);const _=m.useCallback(()=>{if(!E.current)return;const{scrollTop:Ye,scrollHeight:ee,clientHeight:se}=E.current,me=ee-Ye-se;I.current=me<120},[]),ue=m.useCallback(()=>{requestAnimationFrame(()=>{E.current&&(E.current.scrollTop=E.current.scrollHeight)})},[]);m.useEffect(()=>{if(!d)return;const Ye=D.length,ee=Ye>y.current,se=D[D.length-1],me=(se==null?void 0:se.content)||"",Pe=me!==C.current,st=(se==null?void 0:se.isStreaming)??!1;ee||st&&Pe?(ue(),I.current=!0):I.current&&Pe&&ue(),y.current=Ye,C.current=me},[d,D,ue]),m.useEffect(()=>{d&&(ue(),I.current=!0)},[d,ue]);const ce=m.useMemo(()=>{const Ye=e.timestamp instanceof Date?e.timestamp:new Date(e.timestamp),ee=Ye.toLocaleDateString(k,{weekday:"short"}),se=Ye.toLocaleDateString(k,{month:"short"}),me=Ye.getDate().toString().padStart(2,"0"),Pe=Ye.getFullYear(),st=Ye.toLocaleTimeString(k,{hour:"2-digit",minute:"2-digit",hour12:!0});return`${ee}, ${se} ${me}, ${Pe} ${st}`},[e.timestamp,k]),ae=Q?"text-blue-700 dark:text-[#c5d7ff]":"text-emerald-700 dark:text-[#9ef0d5]",he=`message-bubble min-w-0 break-words leading-relaxed ${Q?"border border-blue-100/80 bg-transparent text-[#0f172a] shadow-[0_15px_35px_-20px_rgba(15,23,42,0.25)] dark:border-[#1f2a36] dark:bg-transparent dark:text-[#e5edff]":"border border-slate-200 bg-transparent text-[#1c3226] shadow-[0_12px_30px_-18px_rgba(15,52,33,0.25)] dark:border-[#1a2b21] dark:bg-transparent dark:text-[#dffbea]"} rounded-2xl px-4 py-3`,xe=Q?"border-blue-100 bg-white/80 dark:border-[#1f2a36] dark:bg-white/5":"border-emerald-100 bg-white/80 dark:border-[#1a2b21] dark:bg-white/5",Ce=async()=>{try{await navigator.clipboard.writeText(e.content),o(!0),setTimeout(()=>o(!1),2e3)}catch{}},oe=Ye=>{c(l===Ye?null:Ye)},Le=m.useCallback(Ye=>(Ye instanceof Date?Ye:new Date(Ye)).toLocaleTimeString(k,{hour:"2-digit",minute:"2-digit"}),[k]),et=async()=>{if(!r||!e.threadInfo||R)return;const Ye=u.trim();if(Ye){w(!0);try{await r(e.threadInfo.thread_id,e.id,Ye),g(""),setTimeout(()=>{f.current&&f.current.focus()},100)}catch{setTimeout(()=>{f.current&&f.current.focus()},100)}finally{w(!1)}}},vn=Ye=>{Ye.key==="Enter"&&!Ye.shiftKey&&(Ye.preventDefault(),et())},Jt=!e.threadInfo||!r||a||S||h||R;m.useEffect(()=>{if(!d||Jt)return;const Ye=f.current;if(!Ye)return;const ee=requestAnimationFrame(()=>{Ye.focus({preventScroll:!0});const se=Ye.value.length;Ye.setSelectionRange(se,se)});return()=>cancelAnimationFrame(ee)},[d,Jt,h]),m.useEffect(()=>{if(f.current){const ee=f.current;ee.style.height="auto";const se=ee.scrollHeight;ee.style.height=`${Math.min(se,120)}px`,ee.style.overflowY=se>120?"auto":"hidden"}},[u]);const ln=m.useMemo(()=>e.isStreaming&&(!e.content||e.content==="…")?x.jsx("div",{className:ge,children:x.jsxs("div",{className:"flex items-center gap-1.5 py-1",children:[x.jsx("span",{className:"inline-block h-2.5 w-2.5 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"0ms"}}),x.jsx("span",{className:"inline-block h-2.5 w-2.5 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"150ms"}}),x.jsx("span",{className:"inline-block h-2.5 w-2.5 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"300ms"}})]})}):x.jsx(Zu,{content:sk(sh(e.content||"")),className:ge,syntaxTheme:z}),[ge,e.content,e.isStreaming,z]),Ln=m.useMemo(()=>[...D].sort((ee,se)=>{const me=ee.timestamp instanceof Date?ee.timestamp.getTime():new Date(ee.timestamp).getTime(),Pe=se.timestamp instanceof Date?se.timestamp.getTime():new Date(se.timestamp).getTime();return me-Pe}).map(ee=>{const se=ee.role==="assistant",me=se?de:we,Pe=ee.isStreaming&&(!ee.content||ee.content==="…")?x.jsx("div",{className:me,children:x.jsxs("div",{className:"flex items-center gap-1.5 py-1",children:[x.jsx("span",{className:"inline-block h-2 w-2 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"0ms"}}),x.jsx("span",{className:"inline-block h-2 w-2 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"150ms"}}),x.jsx("span",{className:"inline-block h-2 w-2 animate-bounce rounded-full bg-gray-400 dark:bg-[#bfc2cd]",style:{animationDelay:"300ms"}})]})}):x.jsx(Zu,{content:sk(sh(ee.content||"")),className:me,syntaxTheme:z});return x.jsxs("div",{className:"flex items-start gap-3",children:[x.jsx("div",{className:`mt-0.5 flex h-7 w-7 flex-shrink-0 items-center justify-center ${se?"text-blue-700 dark:text-[#c5d7ff]":"text-emerald-700 dark:text-[#9ef0d5]"}`,children:se?x.jsx(jj,{className:"h-3.5 w-3.5"}):x.jsx(zj,{className:"h-3.5 w-3.5"})}),x.jsxs("div",{className:"flex-1 min-w-0 rounded-2xl border border-white/70 bg-white/90 px-4 py-3 text-sm shadow-sm dark:border-white/5 dark:bg-white/5 backdrop-blur overflow-hidden",children:[x.jsxs("div",{className:"mb-1 flex items-center justify-between text-[11px] font-semibold uppercase tracking-wide text-blue-900/70 dark:text-[#c5d7ff]",children:[x.jsx("span",{children:se?"Assistant":"You"}),x.jsx("span",{children:Le(ee.timestamp)})]}),x.jsx("div",{className:"thread-markdown-wrapper overflow-x-auto",children:Pe})]})]},ee.id)}),[Le,z,de,D,we]);return x.jsxs("div",{className:"group flex items-start gap-3 px-1 animate-fadeIn min-w-0 sm:px-0",children:[x.jsx("div",{className:`flex h-10 w-10 flex-shrink-0 items-center justify-center self-start ml-1 sm:ml-2 ${ae}`,children:Q?x.jsx(jj,{className:"h-5 w-5"}):x.jsx(zj,{className:"h-5 w-5"})}),x.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[x.jsxs("div",{className:"flex flex-col gap-1.5 mb-1",children:[x.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-gray-700 dark:text-[#ececf1]",children:Q?"Assistant":"You"}),x.jsx("span",{className:"text-xs text-gray-500 dark:text-[#bfc2cd]",children:ce})]}),x.jsxs("div",{className:he,children:[ln,e.attachments&&e.attachments.length>0&&x.jsx("div",{className:"mt-3 space-y-2",children:e.attachments.map(Ye=>x.jsxs("div",{className:`flex items-center gap-3 rounded-xl border p-3 ${xe}`,children:[x.jsx(_de,{className:"h-4 w-4 text-gray-500 dark:text-[#bfc2cd]"}),x.jsxs("div",{className:"min-w-0 flex-1",children:[x.jsx("p",{className:"truncate text-sm font-medium text-[#353740] dark:text-[#ececf1]",children:Ye.filename}),x.jsxs("p",{className:"text-xs text-gray-500 dark:text-[#bfc2cd]",children:[(Ye.file_size/1024).toFixed(1)," KB"]})]})]},Ye.file_id))}),e.audio&&Q&&!e.isStreaming&&x.jsx(Irt,{audio:e.audio,audioFormat:e.audioFormat,autoPlay:!1})]}),Q&&!e.isStreaming&&x.jsx(x.Fragment,{children:x.jsxs("div",{className:"flex flex-wrap items-center gap-1 md:gap-2 text-xs text-gray-500 transition-opacity dark:text-[#bfc2cd]",children:[x.jsxs("button",{onClick:Ce,className:"inline-flex items-center gap-1 rounded px-2 py-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a]",title:"Copy to clipboard","aria-label":"Copy to clipboard",children:[x.jsx(qde,{className:"h-4 w-4"}),x.jsx("span",{className:"hidden sm:inline",children:"Copy"})]}),t&&x.jsxs("button",{onClick:()=>t(e.id),className:"inline-flex items-center gap-1 rounded px-2 py-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a]",title:"Regenerate response","aria-label":"Regenerate response",children:[x.jsx(gBe,{className:"h-4 w-4"}),x.jsx("span",{className:"hidden sm:inline",children:"Retry"})]}),J&&n&&e.supportsThreading&&!e.threadInfo&&i&&x.jsxs("div",{className:"inline-flex items-center gap-1",children:[x.jsxs("button",{onClick:()=>n(e.id,i),className:"inline-flex items-center gap-1 rounded px-2 py-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a]",title:"Reply in thread","aria-label":"Reply in thread",children:[x.jsx(Uw,{className:"h-4 w-4"}),x.jsx("span",{className:"hidden sm:inline",children:"Reply in thread"})]}),x.jsx("span",{className:"inline-flex items-center rounded p-1 text-gray-500 dark:text-[#bfc2cd]",title:"Use this when your question is about this specific answer. Use the main input for unrelated topics.","aria-label":"Thread help",children:x.jsx(Zde,{className:"h-4 w-4"})})]}),drt()&&x.jsxs("div",{className:"flex items-center gap-1",children:[x.jsx("button",{onClick:()=>oe("up"),className:`rounded p-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a] ${l==="up"?"text-[#353740] dark:text-[#ececf1]":""}`,title:"Good response","aria-label":"Good response",children:x.jsx(fBe,{className:"h-4 w-4"})}),x.jsx("button",{onClick:()=>oe("down"),className:`rounded p-1 hover:bg-gray-200 dark:hover:bg-[#3c3f4a] ${l==="down"?"text-[#353740] dark:text-[#ececf1]":""}`,title:"Poor response","aria-label":"Poor response",children:x.jsx(pBe,{className:"h-4 w-4"})})]}),s&&x.jsxs("div",{className:"flex items-center gap-1.5 rounded-lg bg-emerald-500 px-2.5 py-1 text-[11px] font-bold uppercase tracking-wider text-white shadow-sm animate-fadeIn dark:bg-emerald-600",children:[x.jsx(Kde,{className:"h-3.5 w-3.5"}),x.jsx("span",{children:"Copied"})]})]})}),J&&e.threadInfo&&x.jsxs("div",{className:"thread-panel mt-4 rounded-xl border border-blue-100/80 bg-blue-50/70 p-3 sm:p-4 text-sm shadow-sm ring-1 ring-blue-100/60 dark:border-white/10 dark:bg-white/[0.035] dark:ring-white/5",children:[x.jsxs("div",{className:"flex items-center justify-between gap-2 text-sm font-semibold text-blue-900 dark:text-[#e1e8ff]",children:[x.jsxs("div",{className:"inline-flex items-center gap-2 uppercase tracking-wide text-xs sm:text-sm",children:[x.jsx(Uw,{className:"h-3.5 w-3.5"}),x.jsxs("span",{children:["Replies",F>0?` (${F})`:""]})]}),x.jsx("button",{onClick:()=>B(Ye=>!Ye),className:"inline-flex items-center gap-1.5 sm:gap-2 rounded-full border border-blue-200/80 px-2.5 sm:px-3 py-1.5 text-xs uppercase tracking-wide text-blue-900 transition hover:bg-white/70 dark:border-white/10 dark:text-[#c5d7ff] dark:hover:bg-white/[0.08]",children:d?x.jsxs(x.Fragment,{children:[x.jsx("span",{className:"hidden sm:inline",children:"Hide replies"}),x.jsx(Pde,{className:"h-4 w-4 sm:h-3 sm:w-3"})]}):x.jsxs(x.Fragment,{children:[x.jsx("span",{className:"hidden sm:inline",children:"Show replies"}),x.jsx(NZ,{className:"h-4 w-4 sm:h-3 sm:w-3"})]})})]}),d&&x.jsxs(x.Fragment,{children:[x.jsx("div",{ref:E,className:"mt-3 space-y-3 max-h-96 overflow-y-auto",style:{scrollBehavior:"auto",overflowAnchor:"none"},onScroll:_,children:F===0?x.jsx("div",{className:"rounded-lg border border-dashed border-blue-200/80 bg-white/60 px-3 py-2 text-xs text-blue-900/70 dark:border-white/10 dark:bg-white/[0.04] dark:text-[#b4c7ff]",children:"No replies yet. Ask a clarifying question here."}):Ln}),L&&x.jsx("div",{className:"mt-3 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-900 dark:border-amber-500/30 dark:bg-[#2f2410] dark:text-amber-100",children:L}),x.jsxs("div",{className:"mt-3 rounded-2xl border border-slate-200/80 bg-gradient-to-b from-white to-slate-50/80 p-3 shadow-[0_12px_28px_-22px_rgba(15,23,42,0.5)] dark:border-[#3f4354] dark:bg-gradient-to-b dark:from-[#252937]/90 dark:to-[#1d202b]/90",children:[F===0&&x.jsx("p",{className:"mb-2 text-xs font-medium text-blue-900/80 dark:text-[#b4c7ff]",children:"Replying in thread keeps this discussion linked to this message."}),x.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3",children:[x.jsx("label",{htmlFor:W,className:"sr-only",children:"Reply in thread"}),x.jsx("textarea",{id:W,ref:f,className:"flex-1 w-full sm:w-auto min-w-0 resize-none rounded-xl border border-slate-200 bg-white px-3 py-2.5 text-base sm:text-sm text-[#1f2937] placeholder-slate-500 shadow-inner outline-none transition focus:border-blue-400 focus:ring-2 focus:ring-blue-200/70 disabled:opacity-60 dark:border-[#4d5368] dark:bg-[#171a22] dark:text-[#ececf1] dark:placeholder-[#8e8ea0] dark:focus:border-blue-400 dark:focus:ring-blue-500/30",placeholder:G,"aria-label":"Reply in thread",value:u,onChange:Ye=>g(Ye.target.value),onKeyDown:vn,disabled:Jt,rows:1,maxLength:H,style:{minHeight:"44px",maxHeight:"120px",outline:"none",boxShadow:"none",WebkitAppearance:"none",MozAppearance:"none",appearance:"none"}}),x.jsxs("div",{className:"flex items-center justify-between sm:justify-end gap-2",children:[u.length>0&&x.jsx("div",{className:"text-xs text-gray-500 dark:text-[#bfc2cd] whitespace-nowrap",children:x.jsxs("span",{className:u.length>=H?"text-red-600 font-semibold":"",children:[u.length,"/",H]})}),x.jsx("button",{type:"button",onClick:et,disabled:Jt||u.trim().length===0,className:`flex h-11 w-11 sm:h-9 sm:w-9 items-center justify-center rounded-full transition active:scale-95 ${u.trim().length>0&&!Jt?"bg-blue-600 text-white hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-400":"bg-slate-200 text-slate-400 dark:bg-[#2f313a] dark:text-[#6b6f7a]"} disabled:cursor-not-allowed`,title:"Send thread message",children:h?x.jsx(ig,{className:"h-5 w-5 sm:h-4 sm:w-4 animate-spin"}):x.jsx(bZ,{className:"h-5 w-5 sm:h-4 sm:w-4"})})]})]})]})]})]})]})]})}function Yrt(e=800,t=100,n="sine"){try{if(typeof window>"u"){Ue("[SoundEffects] Window is not available for audio playback");return}const r=window.AudioContext??window.webkitAudioContext;if(!r){Ue("[SoundEffects] AudioContext not supported in this browser");return}const A=new r,i=A.createOscillator(),a=A.createGain();i.connect(a),a.connect(A.destination),i.frequency.value=e,i.type=n,a.gain.setValueAtTime(.3,A.currentTime),a.gain.exponentialRampToValueAtTime(.01,A.currentTime+t/1e3),i.start(A.currentTime),i.stop(A.currentTime+t/1e3)}catch{}}const brt={messageSent:{frequency:600,duration:80,type:"sine"},messageReceived:{frequency:800,duration:100,type:"sine"},success:{frequency:1e3,duration:150,type:"sine"},error:{frequency:400,duration:200,type:"square"},notification:{frequency:700,duration:120,type:"sine"}};function DB(e,t){if(!t)return;const n=brt[e];if(n)try{Yrt(n.frequency,n.duration,n.type),Ue(`[SoundEffects] Playing ${e} sound effect`)}catch{}}function Nrt({messages:e,onRegenerate:t,onStartThread:n,onSendThreadMessage:r,sessionId:A,isLoading:i}){const a=m.useRef(null),s=m.useRef(null),o=m.useRef(e.length),l=m.useRef(""),c=m.useRef(i),u=m.useRef(!0),{settings:g}=Om(),{topLevelMessages:d,threadLookup:B}=m.useMemo(()=>{const p=new Map,f=[];return e.forEach(E=>{if(E.isThreadMessage&&E.parentMessageId){const y=p.get(E.parentMessageId)||[];p.set(E.parentMessageId,[...y,E]);return}f.push(E)}),{topLevelMessages:f,threadLookup:p}},[e]),h=()=>{if(!s.current)return;const{scrollTop:p,scrollHeight:f,clientHeight:E}=s.current,C=f-p-E<200;u.current=C},w=m.useCallback(()=>{requestAnimationFrame(()=>{s.current&&(s.current.scrollTop=s.current.scrollHeight)})},[]);return m.useEffect(()=>{const p=e.length,f=o.current,E=p>f,y=e[e.length-1],C=(y==null?void 0:y.content)||"",I=C!==l.current,Q=(y==null?void 0:y.isStreaming)??!1;E||Q&&I?(w(),u.current=!0):u.current&&I&&w(),o.current=p,l.current=C},[e,w]),m.useEffect(()=>{i&&(w(),u.current=!0)},[i,w]),m.useEffect(()=>{if(c.current&&!i){const p=e[e.length-1];(p==null?void 0:p.role)==="assistant"&&p.content&&DB("messageReceived",g.soundEnabled)}c.current=i},[i,e,g.soundEnabled]),d.length===0?x.jsx("div",{className:"flex-1 flex items-center justify-center px-4 sm:px-6",children:x.jsxs("div",{className:"text-center text-lg text-gray-500 dark:text-[#bfc2cd]",children:[x.jsx("p",{className:"text-xl",children:"Your messages will appear here."}),x.jsx("p",{className:"mt-1 text-lg",children:"Start the conversation by sending a prompt below."})]})}):x.jsx("div",{ref:s,className:"message-list flex-1 overflow-y-auto py-6",onScroll:h,children:x.jsxs("div",{className:"space-y-6 px-3 sm:px-4",children:[d.map(p=>x.jsx("div",{style:{contentVisibility:"auto",containIntrinsicSize:"420px"},children:x.jsx(Frt,{message:p,onRegenerate:t,onStartThread:n,onSendThreadMessage:r,threadMessages:B.get(p.id),sessionId:A,isThreadSendDisabled:i})},p.id)),x.jsx("div",{ref:a,className:"h-8"})]})})}const xrt=4e3;function Drt(e,t,n={}){var D;const[r,A]=m.useState(!1),[i,a]=m.useState(null),s=m.useRef(null),o=m.useRef(""),l=m.useRef(""),c=m.useRef(!1),u=m.useRef(null),g=typeof navigator<"u"?navigator.language:"en-US",d=Number.isFinite(n.silenceTimeoutMs)?Math.max(Math.floor(n.silenceTimeoutMs),1e3):xrt,B=((D=n.language)==null?void 0:D.trim())||g||"en-US",h=m.useCallback(F=>F.replace(/\s+/g," ").trim(),[]),w=m.useCallback(F=>{const N=h(F);N&&N!==l.current&&(l.current=N,e(" "+N))},[h,e]),p=m.useCallback(()=>{if(!o.current)return;const F=o.current;o.current="",w(F)},[w]),f=typeof window<"u"&&("webkitSpeechRecognition"in window||"SpeechRecognition"in window),E=m.useCallback(()=>{!t||c.current||(c.current=!0,t())},[t]),y=m.useCallback(()=>{u.current!==null&&(clearTimeout(u.current),u.current=null)},[]),C=m.useCallback(()=>{y(),u.current=setTimeout(()=>{s.current?s.current.stop():E()},d)},[y,E,d]),I=m.useCallback(()=>{if(!f){a("Speech recognition is not supported in this browser. Please try Chrome, Edge, or Safari.");return}if(!r)try{c.current=!1;const F=window.SpeechRecognition||window.webkitSpeechRecognition,N=new F;N.continuous=!0,N.interimResults=!0,N.lang=B,N.maxAlternatives=1,N.onstart=()=>{A(!0),a(null),o.current="",l.current="",Ue("Speech recognition started"),C()},N.onresult=S=>{let k="",J="";for(let H=S.resultIndex;H<S.results.length;H++){const v=S.results[H][0].transcript;S.results[H].isFinal?k+=v:J+=v}J&&(o.current=h(J)),k&&(o.current="",w(k)),C()},N.onend=()=>{y(),p(),A(!1),s.current=null,Ue("Speech recognition ended"),E()},N.onerror=S=>{switch(y(),El("Speech recognition error:",S.error),A(!1),s.current=null,o.current="",E(),S.error){case"no-speech":a("No speech detected. Please try again.");break;case"audio-capture":a("Microphone access denied. Please allow microphone access and try again.");break;case"not-allowed":a("Microphone access not allowed. Please enable microphone permissions.");break;case"network":a("Network error occurred. Please check your connection.");break;default:a(`Speech recognition error: ${S.error}`)}},N.start(),s.current=N}catch{a("Failed to start speech recognition. Please try again."),A(!1)}},[f,r,p,E,C,y,B,h,w]),Q=m.useCallback(()=>{if(s.current){const F=s.current;F.onend=null,F.onerror=null,F.onresult=null,F.onstart=null;try{F.stop()}catch{}s.current=null}y(),p(),A(!1),a(null),E()},[y,p,E]);return{isListening:r,isSupported:f,startListening:I,stopListening:Q,error:i}}const Srt=300,c4=3,gf=5;function Urt(e,t={}){const{enabled:n=xce(),adapterName:r,inputRef:A}=t,[i,a]=m.useState([]),[s,o]=m.useState(!1),[l,c]=m.useState(-1),u=m.useRef(null),g=m.useRef(null),d=m.useRef(null),B=m.useRef(null),h=m.useRef(0),w=m.useRef([]),p=m.useRef([]);m.useEffect(()=>{w.current=i},[i]);const f=m.useCallback(N=>{if(typeof N!="string")return null;const S=N.replace(/[\r\n\u2028\u2029]+/g," ").replace(/\s{2,}/g," ").trim();return S?{text:S}:null},[]),E=m.useCallback(N=>{const S=N.toLowerCase().trim(),k=p.current.length>0?p.current:w.current;if(!S)return k.slice(0,gf);const J=k.filter(H=>H.text.toLowerCase().includes(S));return J.length>0?J.slice(0,gf):k.slice(0,gf)},[]),y=m.useCallback(async N=>{if(!n||N.length<c4){a([]),p.current=[],g.current&&clearTimeout(g.current),o(!1);return}if(!r){a([]),p.current=[],g.current&&clearTimeout(g.current),o(!1);return}d.current&&d.current.abort(),d.current=new AbortController;const S=h.current+1;h.current=S,g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{S===h.current&&o(!0)},150);try{const k={"X-Adapter-Name":r},J=new URLSearchParams;J.set("q",N),J.set("limit",String(gf));const H=`/api/v1/autocomplete?${J.toString()}`,v=await fetch(H,{method:"GET",headers:k,signal:d.current.signal});if(!v.ok){An("[useAutocomplete] Request failed:",v.status),a(E(N));return}const R=await v.json(),L=Array.isArray(R==null?void 0:R.suggestions)?R.suggestions.map(T=>f(typeof T=="string"?T:T==null?void 0:T.text)).filter(T=>T!==null):[];if(S!==h.current)return;L.length===0?a(E(N)):(a(L),p.current=L),c(-1),Ue("[useAutocomplete] Received",L.length,"suggestions")}catch(k){if(k instanceof Error&&k.name==="AbortError")return;An("[useAutocomplete] Error:",k instanceof Error?k.message:String(k)),S===h.current&&a(E(N))}finally{S===h.current&&(g.current&&(clearTimeout(g.current),g.current=null),o(!1))}},[n,r,f,E]);m.useEffect(()=>{u.current&&clearTimeout(u.current);const N=()=>{d.current&&d.current.abort(),g.current&&clearTimeout(g.current),o(!1)};if(!n||e.length<c4){a([]),N();return}if(B.current){if(e===B.current){a([]),N();return}B.current=null}return u.current=setTimeout(()=>{y(e)},Srt),()=>{u.current&&clearTimeout(u.current)}},[e,y,n]),m.useEffect(()=>()=>{d.current&&d.current.abort(),g.current&&clearTimeout(g.current)},[]);const C=m.useCallback(()=>{c(N=>N<i.length-1?N+1:0)},[i.length]),I=m.useCallback(()=>{c(N=>N>0?N-1:i.length-1)},[i.length]),Q=m.useCallback(()=>{a([]),p.current=[],c(-1),d.current&&d.current.abort(),g.current&&clearTimeout(g.current),o(!1)},[]),D=m.useCallback(N=>{if(!(A!=null&&A.current))return;const S=()=>{const k=A.current;if(!k)return;const J=typeof N=="string"?N.length:k.value.length;k.focus({preventScroll:!0}),typeof k.setSelectionRange=="function"&&k.setSelectionRange(J,J)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(S):setTimeout(S,0)},[A]),F=m.useCallback(N=>{B.current=N},[]);return{suggestions:i,isLoading:s,selectedIndex:l,setSelectedIndex:c,selectNext:C,selectPrevious:I,clearSuggestions:Q,focusInputAfterSelection:D,suppressUntilQueryChange:F}}let df=null;function krt(){let e=null,t=null;const n=(A,i,a)=>{e=i||null,t=a||null},r=()=>{if(!t)throw new Error("Adapter name is required");return{async*streamChat(A,i,a,s,o,l,c,u,g,d,B){var p,f;const h={messages:[{role:"user",content:A}],stream:i!==!1};a&&a.length>0&&(h.file_ids=a),s&&(h.thread_id=s),o&&(h.audio_input=o),l&&(h.audio_format=l),c&&(h.language=c),u!==void 0&&(h.return_audio=u),g&&(h.tts_voice=g),d&&(h.source_language=d),B&&(h.target_language=B);const w=await fetch("/api/v1/chat",{method:"POST",headers:{"Content-Type":"application/json","X-Adapter-Name":t,...e?{"X-Session-ID":e}:{}},body:JSON.stringify(h)});if(!w.ok)throw new Error(`API request failed: ${w.status} ${w.statusText}`);if((p=w.headers.get("content-type"))!=null&&p.includes("text/event-stream")){const E=(f=w.body)==null?void 0:f.getReader(),y=new TextDecoder;let C="";if(!E)throw new Error("Response body is not readable");for(;;){const{done:I,value:Q}=await E.read();if(I)break;C+=y.decode(Q,{stream:!0});const D=C.split(`
|
|
995
995
|
`);C=D.pop()||"";for(const F of D)if(F.startsWith("data: "))try{const N=JSON.parse(F.substring(6));if(N.request_id&&!N.response&&!N.done){yield{text:"",done:!1,request_id:N.request_id};continue}yield{text:N.text||N.content||N.message||N.response||"",done:N.done||!1,audio:N.audio,audioFormat:N.audio_format||N.audioFormat,audio_chunk:N.audio_chunk,chunk_index:N.chunk_index,threading:N.threading}}catch{}}if(C.trim()){const I=C.split(`
|
|
996
996
|
`);for(const Q of I)if(Q.startsWith("data: "))try{const D=JSON.parse(Q.substring(6));if(D.request_id&&!D.response&&!D.done){yield{text:"",done:!1,request_id:D.request_id};continue}yield{text:D.text||D.content||D.message||D.response||"",done:D.done||!1,audio:D.audio,audioFormat:D.audio_format||D.audioFormat,audio_chunk:D.audio_chunk,chunk_index:D.chunk_index,threading:D.threading}}catch{}}}else{const E=await w.json();yield{text:E.message||E.response||"",done:!0}}},async createThread(A,i){const a=await fetch("/api/threads",{method:"POST",headers:{"Content-Type":"application/json","X-Adapter-Name":t,"X-Session-ID":i},body:JSON.stringify({message_id:A,session_id:i})});if(!a.ok)throw new Error(`Failed to create thread: ${a.statusText}`);return a.json()},async getThreadInfo(A){const i=await fetch(`/api/threads/${A}`,{headers:{"X-Adapter-Name":t}});if(!i.ok)throw new Error(`Failed to get thread info: ${i.statusText}`);return i.json()},async deleteThread(A){const i=await fetch(`/api/threads/${A}`,{method:"DELETE",headers:{"X-Adapter-Name":t}});if(!i.ok)throw new Error(`Failed to delete thread: ${i.statusText}`);return i.json()},async clearConversationHistory(A){const i=await fetch(`/api/admin/chat-history/${A||e}`,{method:"DELETE",headers:{"X-Adapter-Name":t}});if(!i.ok)throw new Error(`Failed to clear history: ${i.statusText}`);return i.json()},async getConversationHistory(A,i){const a=A||e;if(!a)throw new Error("No session ID available for conversation history");const s=typeof i=="number"&&Number.isFinite(i)&&i>0?`?limit=${Math.floor(i)}`:"",o=await fetch(`/api/admin/chat-history/${a}${s}`,{headers:{"X-Adapter-Name":t}});if(!o.ok)throw new Error(`Failed to load history: ${o.statusText}`);return o.json()},async deleteConversationWithFiles(A,i){const a=A||e,s=i&&i.length>0?`?file_ids=${i.join(",")}`:"",o=await fetch(`/api/admin/conversations/${a}${s}`,{method:"DELETE",headers:{"X-Adapter-Name":t}});if(!o.ok)throw new Error(`Failed to delete conversation: ${o.statusText}`);return o.json()},getSessionId:()=>e,async uploadFile(A){const i=new FormData;i.append("file",A);const a=await fetch("/api/files/upload",{method:"POST",headers:{"X-Adapter-Name":t},body:i});if(!a.ok)throw new Error(`Failed to upload file: ${a.statusText}`);return a.json()},async listFiles(){const A=await fetch("/api/files",{headers:{"X-Adapter-Name":t}});if(!A.ok)throw new Error(`Failed to list files: ${A.statusText}`);const i=await A.json();return Array.isArray(i)?i:i.files||[]},async getFileInfo(A){const i=await fetch(`/api/files/${A}`,{headers:{"X-Adapter-Name":t}});if(!i.ok)throw new Error(`Failed to get file info: ${i.statusText}`);return i.json()},async queryFile(A,i,a){const s=await fetch(`/api/files/${A}/query`,{method:"POST",headers:{"Content-Type":"application/json","X-Adapter-Name":t},body:JSON.stringify({query:i,max_results:a})});if(!s.ok)throw new Error(`Failed to query file: ${s.statusText}`);return s.json()},async deleteFile(A){const i=await fetch(`/api/files/${A}`,{method:"DELETE",headers:{"X-Adapter-Name":t}});if(!i.ok)throw new Error(`Failed to delete file: ${i.statusText}`);return i.json()},async validateApiKey(){const A=await fetch(`/api/admin/api-keys/${t}/status`,{headers:{"X-Adapter-Name":t}});if(!A.ok)throw new Error(`Failed to validate API key: ${A.statusText}`);return A.json()},async getAdapterInfo(){const i=await fetch("/api/admin/adapters/info",{headers:{"X-Adapter-Name":t}});if(!i.ok){const a=await i.text(),s=`${i.status} ${i.statusText}`.trim(),o=i.status===401?`Adapter info request was unauthorized for '${t}'. Verify the adapter exists and you have access.`:`Failed to load adapter info (${s}) for '${t}'.`;throw console.warn("[ProxyApi] Adapter info request failed",{adapter:t,status:i.status,statusText:i.statusText,details:a||void 0}),new Error(o)}return i.json()},async stopChat(A,i){const a=await fetch("/api/v1/chat/stop",{method:"POST",headers:{"Content-Type":"application/json","X-Adapter-Name":t},body:JSON.stringify({session_id:A,request_id:i})});return a.ok?(await a.json()).status==="cancelled":(console.warn(`[ProxyApi] stopChat failed: ${a.status} ${a.statusText}`),!1)}}};return{configureApi:n,streamChat:async function*(A,i,a,s,o,l,c,u,g,d,B){yield*r().streamChat(A,i,a,s,o,l,c,u,g,d,B)},stopChat:async(A,i)=>r().stopChat(A,i),ApiClient:class{constructor(i){wi(this,"client");t=i.adapterName||null,e=i.sessionId||null,this.client=r()}async*streamChat(...i){yield*this.client.streamChat(...i)}get createThread(){var i;return(i=this.client.createThread)==null?void 0:i.bind(this.client)}get getThreadInfo(){var i;return(i=this.client.getThreadInfo)==null?void 0:i.bind(this.client)}get deleteThread(){var i;return(i=this.client.deleteThread)==null?void 0:i.bind(this.client)}get clearConversationHistory(){var i;return(i=this.client.clearConversationHistory)==null?void 0:i.bind(this.client)}get getConversationHistory(){var i;return(i=this.client.getConversationHistory)==null?void 0:i.bind(this.client)}get deleteConversationWithFiles(){var i;return(i=this.client.deleteConversationWithFiles)==null?void 0:i.bind(this.client)}get getSessionId(){var i;return(i=this.client.getSessionId)==null?void 0:i.bind(this.client)}get uploadFile(){var i;return(i=this.client.uploadFile)==null?void 0:i.bind(this.client)}get listFiles(){var i;return(i=this.client.listFiles)==null?void 0:i.bind(this.client)}get getFileInfo(){var i;return(i=this.client.getFileInfo)==null?void 0:i.bind(this.client)}get queryFile(){var i;return(i=this.client.queryFile)==null?void 0:i.bind(this.client)}get deleteFile(){var i;return(i=this.client.deleteFile)==null?void 0:i.bind(this.client)}get validateApiKey(){var i;return(i=this.client.validateApiKey)==null?void 0:i.bind(this.client)}get getAdapterInfo(){var i;return(i=this.client.getAdapterInfo)==null?void 0:i.bind(this.client)}get stopChat(){var i;return(i=this.client.stopChat)==null?void 0:i.bind(this.client)}}}}async function Grt(){return df||(df=krt(),df)}async function Lr(){return await Grt()}const Bf=e=>{const t=e==null?void 0:e.trim();return t||(typeof window<"u"&&window.localStorage?localStorage.getItem("chat-adapter-name"):null)};class e0{static async uploadFile(t,n,r,A,i){try{const a=dt.maxFileSizeMB*1024*1024;if(t.size>a)throw new Error(`File size exceeds maximum limit of ${dt.maxFileSizeMB}MB`);if(!(["application/pdf","text/plain","text/markdown","text/csv","application/json","text/html","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel","application/vnd.ms-excel.sheet.macroEnabled.12","text/x-python","text/x-python-script","text/x-java-source","text/x-java","text/x-sql","text/javascript","application/javascript","text/typescript","application/typescript","text/x-c++src","text/x-csrc","text/x-c","text/x-go","text/x-rust","text/x-ruby","text/x-php","text/x-shellscript","text/x-sh","text/yaml","text/x-yaml","text/xml","application/xml","text/css","text/x-scss","text/x-sass","text/x-less","image/png","image/jpeg","image/tiff","audio/wav","audio/mpeg","audio/mp3","audio/mp4","audio/ogg","audio/flac","audio/webm","audio/x-m4a","audio/aac","text/vtt"].includes(t.type)||/\.(pdf|txt|md|csv|json|html|docx|pptx|xlsx|py|java|sql|js|mjs|ts|tsx|cpp|cxx|cc|c|h|hpp|go|rs|rb|php|sh|bash|zsh|yaml|yml|xml|css|scss|sass|less|png|jpe?g|tiff?|wav|mp3|mp4|ogg|flac|webm|m4a|aac|vtt)$/i.test(t.name)||(t.type==="application/x-zip-compressed"||t.type==="application/zip")&&/\.xlsx$/i.test(t.name)))throw new Error(`File type not supported: ${t.type||"unknown"}`);n&&n({filename:t.name,progress:0,status:"uploading"});const l=await Lr(),c=(A==null?void 0:A.trim())||Zn(),u=Bf(i);if(!u)throw new Error("Adapter not configured. Please select an adapter from the dropdown.");Ue(`Using adapter: ${u}`);const g=new l.ApiClient({apiUrl:c,sessionId:null,adapterName:u});if(!g.uploadFile)throw new Error("File upload is not available.");const d=await g.uploadFile(t);n&&n({filename:t.name,progress:75,status:"processing",fileId:d.file_id});let B;try{B=await this.pollFileStatus(d.file_id,30,2e3,void 0,c,u)}catch(h){if((h instanceof Error?h.message:String(h)).includes("was deleted"))throw new Error(`File ${d.file_id} was deleted during upload`);An(`File status polling failed for ${d.file_id}:`,h),B={file_id:d.file_id,filename:d.filename,mime_type:d.mime_type,file_size:d.file_size,processing_status:d.status||"processing",chunk_count:d.chunk_count}}return n&&n({filename:t.name,progress:100,status:B.processing_status==="completed"?"completed":"processing",fileId:d.file_id}),B}catch(a){let s=a instanceof Error?a.message:"Upload failed";throw s.includes("401")&&(s="Authentication failed. Please check your adapter configuration."),n&&n({filename:t.name,progress:0,status:"error",error:s}),new Error(s)}}static async uploadFiles(t,n){const r=t.map(async(A,i)=>{try{return await this.uploadFile(A,a=>{n&&n(i,a)})}catch(a){throw Yr(`Failed to upload file ${A.name}:`,a),a}});return Promise.all(r)}static async listFiles(t,n,r){try{const A=await Lr(),i=(n==null?void 0:n.trim())||Zn(),a=Bf(r);if(!a)throw new Error("Adapter not configured");const s=new A.ApiClient({apiUrl:i,sessionId:null,adapterName:a});if(!s.listFiles)throw new Error("File listing is not available.");const o=await s.listFiles();return(Array.isArray(o)?o:Array.isArray(o.files)?o.files:[]).map(c=>({file_id:c.file_id,filename:c.filename,mime_type:c.mime_type,file_size:c.file_size,upload_timestamp:c.upload_timestamp,processing_status:c.processing_status,chunk_count:c.chunk_count}))}catch(A){Yr("Failed to list files:",A);const i=A instanceof Error?A.message:"Failed to list files";throw new Error(i)}}static async getFileInfo(t,n,r,A){try{const i=await Lr(),a=(r==null?void 0:r.trim())||Zn(),s=Bf(A);if(!s)throw new Error("Adapter not configured");const o=new i.ApiClient({apiUrl:a,sessionId:null,adapterName:s});if(!o.getFileInfo)throw new Error("File info retrieval is not available.");const l=await o.getFileInfo(t);return{file_id:l.file_id,filename:l.filename,mime_type:l.mime_type,file_size:l.file_size,upload_timestamp:l.upload_timestamp,processing_status:l.processing_status,chunk_count:l.chunk_count}}catch(i){if(i instanceof Error&&(i.message.includes("404")||i.message.includes("File not found")))throw new Error(`File ${t} was deleted`);Yr(`Failed to get file info for ${t}:`,i);const a=i instanceof Error?i.message:`Failed to get file info: ${t}`;throw new Error(a)}}static async pollFileStatus(t,n=30,r=2e3,A,i,a){for(let s=0;s<n;s++)try{if(A&&!A())throw new Error("Polling cancelled - component unmounted");const o=await this.getFileInfo(t,void 0,i,a);if(o.processing_status==="completed")return o;if(o.processing_status==="error"||o.processing_status==="failed")throw new Error(`File processing failed for ${t}`);s<n-1&&await new Promise(l=>setTimeout(l,r))}catch(o){const l=o instanceof Error?o.message:String(o);if(l.includes("404")||l.includes("File not found")||l.includes("was deleted"))throw new Error(`File ${t} was deleted during upload`);if(l.includes("component unmounted"))throw o;if(s<n-1){await new Promise(c=>setTimeout(c,r));continue}throw o}throw new Error(`File processing timeout: ${t} did not complete within ${n*r/1e3} seconds`)}static async deleteFile(t,n,r,A){try{const i=await Lr(),a=(r==null?void 0:r.trim())||Zn(),s=Bf(A);if(!s)throw new Error("Adapter not configured");const o=new i.ApiClient({apiUrl:a,sessionId:null,adapterName:s});if(!o.deleteFile)throw new Error("File deletion is not available.");return await o.deleteFile(t)}catch(i){if(i instanceof Error&&(i.message.includes("404")||i.message.includes("File not found")||i.message.includes("Not Found")))return{message:"File already deleted",file_id:t};Yr(`Failed to delete file ${t}:`,i);const a=i instanceof Error?i.message:`Failed to delete file: ${t}`;throw new Error(a)}}}const u4=e=>{let t;const n=new Set,r=(l,c)=>{const u=typeof l=="function"?l(t):l;if(!Object.is(u,t)){const g=t;t=c??(typeof u!="object"||u===null)?u:Object.assign({},t,u),n.forEach(d=>d(t,g))}},A=()=>t,s={setState:r,getState:A,getInitialState:()=>o,subscribe:l=>(n.add(l),()=>n.delete(l))},o=t=e(r,A,s);return s},vrt=e=>e?u4(e):u4,Rrt=e=>e;function zrt(e,t=Rrt){const n=Br.useSyncExternalStore(e.subscribe,Br.useCallback(()=>t(e.getState()),[e,t]),Br.useCallback(()=>t(e.getInitialState()),[e,t]));return Br.useDebugValue(n),n}const g4=e=>{const t=vrt(e),n=r=>zrt(t,r);return Object.assign(n,t),n},jrt=e=>e?g4(e):g4;class Trt{constructor(){wi(this,"audioQueue",[]);wi(this,"isPlaying",!1);wi(this,"currentAudio",null);wi(this,"audioContext",null);wi(this,"isEnabled",!1);wi(this,"onPlaybackStart",null);wi(this,"onPlaybackEnd",null);wi(this,"onChunkPlayed",null);wi(this,"blobUrls",[]);wi(this,"suppressPlaybackErrors",!1)}async enableAudio(){try{try{const t=new Audio("data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQAAAAA=");t.volume=0,await t.play(),t.pause()}catch{Ue("[AudioStreamManager] Silent audio unlock deferred (will work on next interaction)")}return this.isEnabled=!0,Ue("[AudioStreamManager] Audio playback enabled"),!0}catch{return!1}}disableAudio(){!this.isEnabled&&!this.isPlaying||(this.isEnabled=!1,this.stop())}async ensureAudioContext(){if(!this.audioContext&&typeof AudioContext<"u")try{return this.audioContext=new AudioContext,this.audioContext.state==="suspended"&&await this.audioContext.resume(),!0}catch{return!1}if(this.audioContext&&this.audioContext.state==="suspended")try{await this.audioContext.resume()}catch{return!1}return!0}isAudioEnabled(){return this.isEnabled}setOnPlaybackStart(t){this.onPlaybackStart=t}setOnPlaybackEnd(t){this.onPlaybackEnd=t}setOnChunkPlayed(t){this.onChunkPlayed=t}async addChunk(t){if(!this.isEnabled){Ue(`[AudioStreamManager] Audio disabled, dropping chunk ${t.chunkIndex}`);return}Ue(`[AudioStreamManager] Adding chunk ${t.chunkIndex} to queue`),this.audioQueue.push(t),this.audioQueue.sort((n,r)=>n.chunkIndex-r.chunkIndex),this.isPlaying||this.playNextChunk()}async playNextChunk(){var n,r;if(this.audioQueue.length===0){this.isPlaying=!1,this.onPlaybackEnd&&this.onPlaybackEnd();return}if(!this.isEnabled){this.audioQueue=[],this.isPlaying=!1;return}this.suppressPlaybackErrors=!1,await this.ensureAudioContext(),this.isPlaying=!0;const t=this.audioQueue.shift();try{if(!this.isPlaying)return;if(this.onPlaybackStart&&t.chunkIndex===0&&this.onPlaybackStart(),Ue(`[AudioStreamManager] Playing chunk ${t.chunkIndex}`),!t.audio||t.audio.length===0)throw new Error(`Empty audio data for chunk ${t.chunkIndex}`);let A;try{A=atob(t.audio)}catch(u){throw new Error(`Failed to decode base64 audio for chunk ${t.chunkIndex}: ${u instanceof Error?u.message:String(u)}`)}if(A.length===0)throw new Error(`Decoded audio data is empty for chunk ${t.chunkIndex}`);const i=new Uint8Array(A.length);for(let u=0;u<A.length;u++)i[u]=A.charCodeAt(u);const a=t.audioFormat==="mp3"?"audio/mpeg":t.audioFormat==="wav"?"audio/wav":t.audioFormat==="ogg"?"audio/ogg":t.audioFormat==="opus"?"audio/ogg; codecs=opus":t.audioFormat==="webm"?"audio/webm":`audio/${t.audioFormat}`,s=new Blob([i],{type:a}),o=URL.createObjectURL(s);this.blobUrls.push(o);const l=new Audio;l.src=o,this.currentAudio=l;const c=()=>{l.src&&(l.src=""),URL.revokeObjectURL(o),this.blobUrls=this.blobUrls.filter(u=>u!==o)};await new Promise((u,g)=>{let d=!1;const B=()=>{var f;if(d)return;const w=l.error,p=w?{code:w.code,message:w.message||`MediaError code ${w.code}`,MEDIA_ERR_ABORTED:w.code===MediaError.MEDIA_ERR_ABORTED,MEDIA_ERR_NETWORK:w.code===MediaError.MEDIA_ERR_NETWORK,MEDIA_ERR_DECODE:w.code===MediaError.MEDIA_ERR_DECODE,MEDIA_ERR_SRC_NOT_SUPPORTED:w.code===MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED}:"Unknown error";if(this.suppressPlaybackErrors){d=!0,c(),u();return}d=!0,console.error(`[AudioStreamManager] Error playing chunk ${t.chunkIndex}:`,p,{audioFormat:t.audioFormat,chunkIndex:t.chunkIndex,audioLength:t.audio.length,mimeType:a,audioContextState:(f=this.audioContext)==null?void 0:f.state,audioSrc:l.src,audioReadyState:l.readyState}),El(`[AudioStreamManager] Error playing chunk ${t.chunkIndex}:`,p),c(),g(new Error(`Audio playback error: ${JSON.stringify(p)}`))};l.addEventListener("error",B,{once:!0});const h=async()=>{var w;if(!d)try{l.addEventListener("ended",()=>{d||(d=!0,Ue(`[AudioStreamManager] Chunk ${t.chunkIndex} finished`),this.onChunkPlayed&&this.onChunkPlayed(t.chunkIndex),c(),u())},{once:!0});const p=l.play();p&&await p}catch(p){if(d)return;if(this.suppressPlaybackErrors){d=!0,c(),u();return}d=!0,console.error(`[AudioStreamManager] Audio.play() rejected for chunk ${t.chunkIndex}:`,p,{audioFormat:t.audioFormat,chunkIndex:t.chunkIndex,audioContextState:(w=this.audioContext)==null?void 0:w.state,isEnabled:this.isEnabled,audioSrc:l.src,audioReadyState:l.readyState}),c(),g(p)}};l.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA?h():l.addEventListener("canplay",h,{once:!0})}),this.currentAudio=null,this.playNextChunk()}catch(A){if(this.suppressPlaybackErrors)return;const i=A instanceof Error?A.message:String(A);console.error(`[AudioStreamManager] Failed to play chunk ${t.chunkIndex}:`,i,A,{audioFormat:t.audioFormat,chunkIndex:t.chunkIndex,audioLength:(n=t.audio)==null?void 0:n.length,audioContextState:(r=this.audioContext)==null?void 0:r.state,isEnabled:this.isEnabled}),El(`[AudioStreamManager] Failed to play chunk ${t.chunkIndex}:`,A),this.playNextChunk()}}stop(){this.suppressPlaybackErrors=!0,this.isPlaying=!1,this.audioQueue=[],this.currentAudio&&(this.currentAudio.pause(),this.currentAudio.src="",this.currentAudio=null),this.blobUrls.forEach(t=>URL.revokeObjectURL(t)),this.blobUrls=[]}reset(){this.stop()}getQueueSize(){return this.audioQueue.length}isCurrentlyPlaying(){return this.isPlaying}}const ac=new Trt,Lrt=ort(),qu=new Map,Hrt=32;let uB=null,Yo=null,Tl=null;const vx=(e,t,n)=>({id:e,sessionId:t,title:"New Chat",messages:[],createdAt:new Date,updatedAt:new Date,apiUrl:n,adapterName:void 0,adapterLoadError:null}),d4=(e,t)=>{const n=qu.get(e);if(n){if(n.timeoutId&&(clearTimeout(n.timeoutId),n.timeoutId=null),n.content){const r=n.content;n.content="",t(A=>({conversations:A.conversations.map(i=>{if(i.id!==e)return i;const a=[...i.messages],s=a[a.length-1];return s&&s.role==="assistant"&&(a[a.length-1]={...s,content:s.content+r}),{...i,messages:a,updatedAt:new Date}})}))}qu.delete(e)}},Em=()=>{const e=localStorage.getItem("chatbot-session-id");if(e)return e;const t=`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`;return localStorage.setItem("chatbot-session-id",t),t},Jrt=e=>{localStorage.setItem("chatbot-session-id",e)};let Ort=0;const rw=e=>{const t=Date.now(),n=++Ort,r=Math.random().toString(36).substr(2,9);return`msg_${t}_${n}_${r}_${e}`},Vo=()=>{const e=Date.now(),t=Math.random().toString(36).substr(2,9);return`session_${e}_${t}`},B4=e=>e.filter(t=>!t.isThreadMessage&&!(t.role==="assistant"&&t.isStreaming)).length,Wrt=(e,t)=>{if(e instanceof Date)return new Date(e);if(typeof e=="number"&&Number.isFinite(e)){const n=new Date(e);if(!Number.isNaN(n.getTime()))return n}if(typeof e=="string"){const n=new Date(e);if(!Number.isNaN(n.getTime()))return n}return t?new Date(t):new Date},Krt=(e,t)=>{const n=new Map;t.forEach((A,i)=>{A.databaseMessageId&&n.set(A.databaseMessageId,{message:A,index:i})});const r=new Set;return e.map(A=>{const i=A.role==="user"?"user":"assistant",a=typeof A.message_id=="string"&&A.message_id.length>0?A.message_id:void 0;let s;if(a&&n.has(a)){const c=n.get(a);s=c.message,r.add(c.index)}else for(let c=0;c<t.length;c++)if(!r.has(c)&&t[c].role===i){s=t[c],r.add(c);break}const o=A.timestamp?Wrt(A.timestamp,s==null?void 0:s.timestamp):s!=null&&s.timestamp?new Date(s.timestamp):new Date,l=s?{...s,content:A.content??s.content,timestamp:o}:{id:a?`srv_${a}`:rw(i),content:A.content||"",role:i,timestamp:o};if(l.isStreaming=!1,a&&(l.databaseMessageId=a),!l.supportsThreading&&A.metadata&&typeof A.metadata=="object"){const c=A.metadata,u=c==null?void 0:c.retrieved_docs;Array.isArray(u)&&u.length>0&&(l.supportsThreading=!0)}return l})},Vrt=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){const r=e[n],A=t[n];if(r.role!==A.role||r.content!==A.content||(r.databaseMessageId||null)!==(A.databaseMessageId||null)||+r.timestamp!=+A.timestamp)return!1}return!0};let mm=!1,ym="";async function gB(){if(mm&&ym)return!0;try{const e=await Lr(),t=localStorage.getItem("chat-api-url");t&&t===wm&&localStorage.removeItem("chat-api-url");const n=t&&t!==wm?t:Zn(),r=Em(),A=localStorage.getItem("chat-adapter-name")||Lrt;return e.configureApi(n,r,A),ym=n,mm=!0,!0}catch(e){return Yr("Failed to configure API:",e),!1}}const Nt=jrt((e,t)=>({conversations:[],currentConversationId:null,isLoading:!1,error:null,sessionId:Em(),getSessionId:()=>t().sessionId,configureApiSettings:async(n,r,A)=>{const i=t(),a=i.conversations.find(o=>o.id===i.currentConversationId),s=(a==null?void 0:a.sessionId)||r||Em();r&&Jrt(r),e({sessionId:s});try{const o=await Lr();if(!A||!A.trim())throw new Error("Adapter name is required");o.configureApi(n,s,A),ym=n,mm=!0;let l;try{const c=new o.ApiClient({apiUrl:n,sessionId:null,adapterName:A});typeof c.getAdapterInfo=="function"&&(l=await c.getAdapterInfo(),Ue("Adapter info loaded:",l))}catch(c){An("Failed to load adapter info:",c)}if(a)e(c=>({conversations:c.conversations.map(u=>u.id===a.id?{...u,adapterName:A,apiUrl:n,adapterInfo:l,adapterLoadError:null,updatedAt:new Date}:u)}));else if(A&&A.trim()){const c=`conv_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,u=Vo();e(g=>({conversations:[...g.conversations,{id:c,sessionId:u,title:"New Conversation",messages:[],createdAt:new Date,updatedAt:new Date,adapterName:A,apiUrl:n,adapterInfo:l,adapterLoadError:null}],currentConversationId:c}))}}catch(o){throw e({isLoading:!1}),o instanceof Error?o:new Error("Failed to configure API settings")}A?localStorage.setItem("chat-adapter-name",A):localStorage.removeItem("chat-adapter-name"),e({isLoading:!1})},createConversation:()=>{const n=t(),r=dt.maxConversations,A=n.conversations.length,i=n.currentConversationId?n.conversations.find(c=>c.id===n.currentConversationId):null;if(r!==null&&A>=r){const c=`Maximum of ${r} conversations reached. Please delete an existing conversation before starting a new one.`;throw e({error:c}),new Error(c)}if(i&&i.messages.length===0){const c="Finish or delete the current conversation before starting a new one.";throw e({error:c}),new Error(c)}const a=`conv_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,s=Vo(),o=Zn(),l={id:a,sessionId:s,title:"New Chat",messages:[],createdAt:new Date,updatedAt:new Date,apiUrl:o,adapterName:void 0,adapterLoadError:null};return e(c=>({conversations:[l,...c.conversations],currentConversationId:a,sessionId:s})),setTimeout(()=>{const c=t();localStorage.setItem("chat-state",JSON.stringify({conversations:c.conversations,currentConversationId:c.currentConversationId}))},0),a},selectConversation:async n=>{const r=t().conversations.find(A=>A.id===n);if(r){const A=r.messages.some(o=>o.role==="assistant"&&o.isStreaming);e({currentConversationId:n,sessionId:r.sessionId,isLoading:A});const i=r.apiUrl||Zn(),a=r.adapterName;if(await gB()&&a){const o=await Lr();if(o.configureApi(i,r.sessionId,a),!r.adapterInfo)try{const l=new o.ApiClient({apiUrl:i,sessionId:null,adapterName:a});if(typeof l.getAdapterInfo=="function"){const c=await l.getAdapterInfo();Ue("Adapter info loaded for conversation:",c),e(u=>({conversations:u.conversations.map(g=>g.id===n?{...g,adapterInfo:c,adapterLoadError:null,updatedAt:new Date}:g)})),setTimeout(()=>{const u=t();localStorage.setItem("chat-state",JSON.stringify({conversations:u.conversations,currentConversationId:u.currentConversationId}))},0)}}catch{}}}setTimeout(()=>{const A=t();localStorage.setItem("chat-state",JSON.stringify({conversations:A.conversations,currentConversationId:A.currentConversationId}))},0)},deleteConversation:async n=>{var i,a;const r=t(),A=r.conversations.find(s=>s.id===n);if(Ue(`🗑️ Deleting conversation ${n}:`,{conversationId:n,sessionId:A==null?void 0:A.sessionId,title:A==null?void 0:A.title,messageCount:A==null?void 0:A.messages.length,fileCount:((i=A==null?void 0:A.attachedFiles)==null?void 0:i.length)||0}),r.currentConversationId===n&&ac.stop(),A!=null&&A.sessionId)try{if(!await gB())Yr("Failed to configure API for conversation deletion");else{const o=A.apiUrl||Zn(),l=A.adapterName;l?Ue(`Using conversation's adapter for deletion: ${l} (conversation: ${n})`):An(`Skipping server deletion for conversation ${n}: adapter not configured`);const c=await Lr(),u=new c.ApiClient({apiUrl:o,sessionId:A.sessionId,adapterName:l}),g=((a=A==null?void 0:A.attachedFiles)==null?void 0:a.map(d=>d.file_id))||[];if(Ue(`🔧 Calling deleteConversationWithFiles for session: ${A.sessionId}`),Ue(`🔧 File IDs to delete: ${g.join(", ")||"none"}`),u.deleteConversationWithFiles){const d=await u.deleteConversationWithFiles(A.sessionId,g);Ue(`✅ Deleted conversation and files for session: ${A.sessionId}`,d),Ue(` - Deleted ${d.deleted_messages} messages`),Ue(` - Deleted ${d.deleted_files} files`),d.file_deletion_errors&&d.file_deletion_errors.length>0&&An(` - Errors deleting files: ${d.file_deletion_errors.join(", ")}`)}else An("⚠️ deleteConversationWithFiles method not available on API client")}}catch(s){Yr("Failed to clear conversation history from server:",s)}e(s=>{var c;const o=s.conversations.filter(u=>u.id!==n),l=s.currentConversationId===n?((c=o[0])==null?void 0:c.id)||null:s.currentConversationId;if(o.length===0){const u=`conv_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,g=Vo(),d=Zn(),B={id:u,sessionId:g,title:"New Chat",messages:[],createdAt:new Date,updatedAt:new Date,apiUrl:d,adapterName:void 0,adapterLoadError:null};return setTimeout(()=>{localStorage.setItem("chat-state",JSON.stringify({conversations:[B],currentConversationId:u}))},0),{conversations:[B],currentConversationId:u,sessionId:g}}return setTimeout(()=>{localStorage.setItem("chat-state",JSON.stringify({conversations:o,currentConversationId:l}))},0),{conversations:o,currentConversationId:l}})},deleteAllConversations:async()=>{const r=[...t().conversations];ac.stop();const A=r.map(async l=>{var c;if(l!=null&&l.sessionId)try{if(!await gB()){Yr("Failed to configure API for conversation deletion");return}const g=va(l.apiUrl),d=l.adapterName;if(!d){Ue(`Skipping server deletion for conversation ${l.id}: adapter not configured`);return}const B=await Lr(),h=new B.ApiClient({apiUrl:g,sessionId:l.sessionId,adapterName:d}),w=((c=l==null?void 0:l.attachedFiles)==null?void 0:c.map(p=>p.file_id))||[];h.deleteConversationWithFiles?(await h.deleteConversationWithFiles(l.sessionId,w),Ue(`✅ Deleted conversation ${l.id} and files`)):An(`deleteConversationWithFiles not available for conversation ${l.id}`)}catch(u){Yr(`Failed to delete conversation ${l.id} from server:`,u)}});Promise.allSettled(A).then(l=>{const c=l.filter(u=>u.status==="rejected");c.length>0&&Yr(`Some conversations failed to delete from server: ${c.length}`,c)});const i=`conv_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,a=Vo(),s=Zn(),o={id:i,sessionId:a,title:"New Chat",messages:[],createdAt:new Date,updatedAt:new Date,apiUrl:s,adapterLoadError:null};e({conversations:[o],currentConversationId:i,sessionId:a}),setTimeout(()=>{localStorage.setItem("chat-state",JSON.stringify({conversations:[o],currentConversationId:i}))},0)},sendMessage:async(n,r,A)=>{var i,a,s,o,l,c,u,g,d,B,h;try{if(t().isLoading){An("Another request is already in progress");return}if(!await gB())throw new Error("API not properly configured. Please configure API settings first.");let p=t().currentConversationId;p||(p=t().createConversation());const f=t().conversations.find(v=>v.id===p);if(!f)throw new Error("Conversation not found");const E=r?r.map(v=>{var L;const R=(L=f==null?void 0:f.attachedFiles)==null?void 0:L.find(T=>T.file_id===v);return R||{file_id:v,filename:"",mime_type:"",file_size:0}}).filter(v=>v!==void 0):[];E.length>0&&E.forEach(v=>{t().addFileToConversation(p,v)});const y=A||null;let C,I=null;if(y){if(C=f.messages.find(v=>{var R;return((R=v.threadInfo)==null?void 0:R.thread_id)===y}),!C)throw new Error("Thread metadata not found. Please recreate the thread from this message.");if(I=((i=C.threadInfo)==null?void 0:i.thread_session_id)||null,!I)throw new Error("Thread session is missing. Please recreate the thread from this message.")}const Q=B4(f.messages),D=dt.maxMessagesPerConversation;if(D!==null&&Q>=D){An(`[chatStore] Conversation ${p} reached the message limit (${D}).`),e({isLoading:!1});return}const F=dt.maxTotalMessages;if(F!==null&&t().conversations.reduce((R,L)=>R+B4(L.messages),0)>=F){An(`[chatStore] Workspace reached the total message limit (${F}).`),e({isLoading:!1});return}const N={id:rw("user"),content:n,role:"user",timestamp:new Date,attachments:E.length>0?E:void 0},S=rw("assistant"),k={id:S,content:"",role:"assistant",timestamp:new Date,isStreaming:!0};if(y&&C){N.isThreadMessage=!0,N.threadId=y,N.parentMessageId=C.id,k.isThreadMessage=!0,k.threadId=y,k.parentMessageId=C.id;const v=dt.maxMessagesPerThread;if(v!==null&&f.messages.filter(L=>L.isThreadMessage?(L.threadId===y||L.parentMessageId===C.id)&&!(L.role==="assistant"&&L.isStreaming):!1).length>=v){An(`[chatStore] Thread ${y} reached the message limit (${v}).`),e({isLoading:!1});return}}e(v=>{const R=v.conversations.find(K=>K.id===p),L=(R==null?void 0:R.messages.filter(K=>K.role==="assistant"&&K.isStreaming))||[];return L.length>0&&An(`Cleaning up ${L.length} existing streaming messages`),{conversations:v.conversations.map(K=>{if(K.id!==p)return{...K,messages:K.messages};const G=K.messages.filter(W=>!(W.role==="assistant"&&W.isStreaming));return{...K,messages:[...G,N,k],updatedAt:new Date,title:K.messages.length===0?n.slice(0,50)+(n.length>50?"...":""):K.title}}),isLoading:!0,error:null}});const J=p;let H=!1;ac.reset();try{const v=t().conversations.find(ce=>ce.id===J);if(!v)throw new Error("Conversation not found");if(!v.adapterName)throw An(`[sendMessage] Conversation ${J} has no adapter name`),new Error("Adapter not configured for this conversation. Please select an adapter first.");Ue(`[sendMessage] Using adapter for conversation ${J}: ${v.adapterName}`);const R=va(v.apiUrl),L=v.adapterName,T=A||null,K=I||v.sessionId,G=await Lr();G.configureApi(R,K,L),T&&K!==v.sessionId&&Ue(`[chatStore] Thread mode: using thread session ${K} (original: ${v.sessionId})`),Ue("[chatStore] Starting streamChat with fileIds:",r);const W=t().conversations.find(ce=>ce.id===J),Ae=((s=(a=W==null?void 0:W.adapterInfo)==null?void 0:a.adapter_name)==null?void 0:s.includes("voice"))||((l=(o=W==null?void 0:W.adapterInfo)==null?void 0:o.adapter_name)==null?void 0:l.includes("audio"))||((u=(c=W==null?void 0:W.adapterInfo)==null?void 0:c.adapter_name)==null?void 0:u.includes("multilingual")),z=()=>{try{const ce=localStorage.getItem("chat-settings");if(ce)return JSON.parse(ce).voiceEnabled===!0}catch(ce){An("Failed to read global voice setting:",ce)}return!1},$=W==null?void 0:W.audioSettings,le=z(),ge=($==null?void 0:$.enabled)??le??Ae,de=($==null?void 0:$.ttsVoice)||void 0,we=($==null?void 0:$.language)||"en-US",_=$==null?void 0:$.audioFormat;Ue("[chatStore] Audio settings:",{returnAudio:ge,ttsVoice:de,language:we,audioFormat:_,isVoiceAdapter:Ae,adapterName:(g=W==null?void 0:W.adapterInfo)==null?void 0:g.adapter_name});const ue=new AbortController;uB=ue,Tl=K,Yo=null;for await(const ce of G.streamChat(n,!0,r,T||void 0,void 0,void 0,we,ge,de,void 0,void 0)){if(ce.request_id&&!Yo&&(Yo=ce.request_id,Ue(`[chatStore] >>> CAPTURED request_id for stop: ${ce.request_id}, session=${Tl}`)),Ue("[chatStore] Received stream chunk:",{text:(d=ce.text)==null?void 0:d.substring(0,50),done:ce.done,request_id:ce.request_id,hasAudio:!!ce.audio,hasAudioChunk:!!ce.audio_chunk,audioFormat:ce.audioFormat,audioLength:(B=ce.audio)==null?void 0:B.length,chunkIndex:ce.chunk_index}),ce.audio_chunk){Ue("[chatStore] Received audio chunk:",{chunk_index:ce.chunk_index,audioFormat:ce.audioFormat,audioLength:(h=ce.audio_chunk)==null?void 0:h.length});const ae=ce.chunk_index??0;ac.addChunk({audio:ce.audio_chunk,audioFormat:ce.audioFormat||"opus",chunkIndex:ae})}if(ce.text){const ae=sh(ce.text);ae?(t().appendToLastMessage(ae,J),H=!0):ce.text.length>100&&An("[chatStore] Filtered out potential base64 audio data from message content")}if(ce.audio&&ce.done&&e(ae=>({conversations:ae.conversations.map(he=>{if(he.id!==J)return he;const xe=[...he.messages],Ce=xe[xe.length-1];return Ce&&Ce.role==="assistant"&&(xe[xe.length-1]={...Ce,audio:ce.audio,audioFormat:ce.audioFormat||"mp3"}),{...he,messages:xe,updatedAt:new Date}})})),ce.done){Ue("[chatStore] Stream completed, receivedAnyText:",H),Ue("[chatStore] Done chunk received:",{hasThreading:!!ce.threading,threading:ce.threading,assistantMessageId:S});const ae=ce.threading;ae&&ae.supports_threading&&(e(he=>({conversations:he.conversations.map(xe=>xe.id!==J?xe:{...xe,messages:xe.messages.map(Ce=>Ce.id===S?{...Ce,supportsThreading:!0,databaseMessageId:ae.message_id}:Ce),updatedAt:new Date})})),Ue(`[chatStore] Message ${S} marked as supporting threading`,{message_id:ae.message_id,session_id:ae.session_id,databaseMessageId:ae.message_id}));break}}!H&&!ue.signal.aborted?(An("[chatStore] No text received from stream, showing error message"),t().appendToLastMessage("No response received from the server. Please try again later.",J)):!H&&ue.signal.aborted&&Ue("[chatStore] Stream cancelled before text received - not showing error")}catch(v){if(v instanceof Error&&(v.name==="AbortError"||v.message==="Stream cancelled by user"||v.message.includes("aborted")))Ue("[chatStore] Stream was cancelled by user"),H=!0;else{Yr("Chat API error:",v);let L="Sorry, there was an error processing your request.";v instanceof Error&&(v.message.startsWith("Server error:")?L=v.message.substring(14):(v.message.includes("Could not connect")||v.message.includes("timed out"))&&(L=v.message)),t().appendToLastMessage(L,J)}}uB=null,Yo=null,Tl=null,d4(J,e),e(v=>{const R=v.conversations.map(K=>K.id===J?{...K,messages:K.messages.map(G=>G.id===S?{...G,isStreaming:!1}:G),updatedAt:new Date}:K),L=R.find(K=>K.id===v.currentConversationId),T=L?L.messages.some(K=>K.role==="assistant"&&K.isStreaming):!1;return{conversations:R,isLoading:T}}),setTimeout(()=>{const v=t();localStorage.setItem("chat-state",JSON.stringify({conversations:v.conversations,currentConversationId:v.currentConversationId}))},0)}catch(w){Yr("Chat store error:",w),e(()=>({isLoading:!1,error:`Failed to send message: ${w instanceof Error?w.message:"Unknown error"}`}))}},createThread:async(n,r)=>{try{const A=t().conversations.find(d=>d.sessionId===r);if(!A)throw new Error("Conversation not found for session");if(!A.adapterName)throw new Error("Adapter not configured for this conversation");const i=A.messages.find(d=>d.id===n);if(!i)throw new Error("Message not found");const a=i.databaseMessageId||n,s=va(A.apiUrl||Zn()),o=A.adapterName,l=await Lr(),c=new l.ApiClient({apiUrl:s,sessionId:r,adapterName:o}),g=await new(await Kt(async()=>{const{ThreadService:d}=await import("./threadService-B9Db3n0J.js");return{ThreadService:d}},[])).ThreadService(c).createThread(a,r);e(d=>({conversations:d.conversations.map(B=>B.sessionId!==r?B:{...B,messages:B.messages.map(h=>h.id===n?{...h,threadInfo:g,supportsThreading:!0}:h),currentThreadId:void 0,currentThreadSessionId:void 0})})),Ue(`[chatStore] Created thread ${g.thread_id} for message ${n}`)}catch(A){throw Yr("Failed to create thread:",A),A}},appendToLastMessage:(n,r)=>{const A=sh(n);if(!A&&n)return;const i=sk(A),a=r||t().currentConversationId;if(!a)return;const s=a,o=qu.get(s);o?(o.content+=i,o.timeoutId&&clearTimeout(o.timeoutId)):qu.set(s,{content:i,timeoutId:null});const l=()=>{const u=qu.get(s);if(!u||!u.content)return;const g=u.content;u.content="",u.timeoutId=null,e(d=>({conversations:d.conversations.map(B=>{if(B.id!==a)return B;const h=[...B.messages],w=h[h.length-1];return w&&w.role==="assistant"&&w.isStreaming&&(h[h.length-1]={...w,content:w.content+g}),{...B,messages:h,updatedAt:new Date}})}))},c=qu.get(s);c.timeoutId=setTimeout(l,Hrt)},regenerateResponse:async n=>{var r,A,i,a,s,o;try{if(t().isLoading){An("Another request is already in progress");return}if(!await gB())throw new Error("API not properly configured");const c=t(),u=c.conversations.find(f=>f.id===c.currentConversationId);if(!u)return;const g=u.messages.findIndex(f=>f.id===n);if(g===-1)return;const d=u.messages[g-1];if(!d||d.role!=="user")return;const B=(d.attachments||[]).map(f=>f.file_id).filter(f=>typeof f=="string"&&f.length>0),h=rw("assistant");e(f=>({conversations:f.conversations.map(E=>E.id===f.currentConversationId?{...E,messages:[...E.messages.slice(0,g),{id:h,content:"",role:"assistant",timestamp:new Date,isStreaming:!0}],updatedAt:new Date}:E),isLoading:!0,error:null}));const w=c.currentConversationId;if(!w)throw new Error("No conversation selected");let p=!1;try{const f=t().conversations.find(k=>k.id===w);if(!f)throw new Error("Conversation not found");if(!f.adapterName)throw new Error("Adapter not configured for this conversation. Please select an adapter first.");if(f.sessionId){const k=va(f.apiUrl),J=f.adapterName;(await Lr()).configureApi(k,f.sessionId,J)}const E=await Lr(),y=t().conversations.find(k=>k.id===w),C=((A=(r=y==null?void 0:y.adapterInfo)==null?void 0:r.adapter_name)==null?void 0:A.includes("voice"))||((a=(i=y==null?void 0:y.adapterInfo)==null?void 0:i.adapter_name)==null?void 0:a.includes("audio"))||((o=(s=y==null?void 0:y.adapterInfo)==null?void 0:s.adapter_name)==null?void 0:o.includes("multilingual")),I=()=>{try{const k=localStorage.getItem("chat-settings");if(k)return JSON.parse(k).voiceEnabled===!0}catch(k){An("Failed to read global voice setting:",k)}return!1},Q=y==null?void 0:y.audioSettings,D=I(),F=(Q==null?void 0:Q.enabled)??D??C,N=(Q==null?void 0:Q.ttsVoice)||void 0,S=(Q==null?void 0:Q.language)||"en-US";for await(const k of E.streamChat(d.content,!0,B.length>0?B:void 0,void 0,void 0,void 0,S,F,N)){if(k.text){const J=sh(k.text);J?(t().appendToLastMessage(J,w),p=!0):k.text.length>100&&An("[chatStore] Filtered out potential base64 audio data from regenerated message content")}if(k.audio&&k.done&&e(J=>({conversations:J.conversations.map(H=>{if(H.id!==w)return H;const v=[...H.messages],R=v[v.length-1];return R&&R.role==="assistant"&&(v[v.length-1]={...R,audio:k.audio,audioFormat:k.audioFormat||"mp3"}),{...H,messages:v,updatedAt:new Date}})})),k.done)break}p||t().appendToLastMessage("No response received from the server. Please try again later.",w)}catch(f){Yr("Regenerate API error:",f);let E="Sorry, there was an error regenerating the response.";f instanceof Error&&(f.message.startsWith("Server error:")?E=f.message.substring(14):(f.message.includes("Could not connect")||f.message.includes("timed out"))&&(E=f.message)),t().appendToLastMessage(E,w)}d4(w,e),e(f=>{const E=f.conversations.map(I=>I.id===w?{...I,messages:I.messages.map(Q=>Q.id===h?{...Q,isStreaming:!1}:Q),updatedAt:new Date}:I),y=E.find(I=>I.id===f.currentConversationId),C=y?y.messages.some(I=>I.role==="assistant"&&I.isStreaming):!1;return{conversations:E,isLoading:C}})}catch(l){Yr("Regenerate error:",l),e({isLoading:!1,error:`Failed to regenerate response: ${l instanceof Error?l.message:"Unknown error"}`})}},updateConversationTitle:(n,r)=>{e(A=>({conversations:A.conversations.map(i=>i.id===n?{...i,title:r,updatedAt:new Date}:i)})),setTimeout(()=>{const A=t();localStorage.setItem("chat-state",JSON.stringify({conversations:A.conversations,currentConversationId:A.currentConversationId}))},0)},clearError:()=>{e({error:null})},cleanupStreamingMessages:()=>{e(n=>({conversations:n.conversations.map(r=>(r.id===n.currentConversationId,r)),isLoading:!1}))},canCreateNewConversation:()=>{const n=t(),r=dt.maxConversations;if(!n.currentConversationId)return r===null||n.conversations.length<r;const A=n.conversations.find(i=>i.id===n.currentConversationId);return A&&A.messages.length>0?r===null||n.conversations.length<r:!1},getConversationCount:()=>t().conversations.length,addFileToConversation:(n,r)=>{Ue("[chatStore] addFileToConversation called",{conversationId:n,fileId:r.file_id,filename:r.filename}),e(A=>{var s,o;const i={conversations:A.conversations.map(l=>l.id===n?{...l,attachedFiles:[...(l.attachedFiles||[]).filter(c=>c.file_id!==r.file_id),r],updatedAt:new Date}:l)},a=i.conversations.find(l=>l.id===n);return Ue(`[chatStore] Updated conversation ${n}`,{hasConversation:!!a,attachedFilesCount:((s=a==null?void 0:a.attachedFiles)==null?void 0:s.length)||0,attachedFiles:(o=a==null?void 0:a.attachedFiles)==null?void 0:o.map(l=>({file_id:l.file_id,filename:l.filename}))}),i}),setTimeout(()=>{const A=t();localStorage.setItem("chat-state",JSON.stringify({conversations:A.conversations,currentConversationId:A.currentConversationId}))},0)},removeFileFromConversation:async(n,r)=>{try{const A=t().conversations.find(s=>s.id===n);if(!A)throw new Error("Conversation not found");if(!A.adapterName)throw new Error("Adapter not configured for this conversation. Cannot delete file.");const i=A.adapterName,a=va(A.apiUrl);Ue(`[chatStore] Calling FileUploadService.deleteFile for ${r}`),await e0.deleteFile(r,void 0,a,i),Ue(`[chatStore] Successfully deleted file ${r} from server`)}catch(A){A instanceof Error&&(A.message.includes("404")||A.message.includes("File not found"))}e(A=>({conversations:A.conversations.map(i=>i.id===n?{...i,attachedFiles:(i.attachedFiles||[]).filter(a=>a.file_id!==r),updatedAt:new Date}:i)})),setTimeout(()=>{const A=t();localStorage.setItem("chat-state",JSON.stringify({conversations:A.conversations,currentConversationId:A.currentConversationId}))},0)},loadConversationFiles:async n=>{try{const r=t().conversations.find(c=>c.id===n);if(!r)return;if(!r.adapterName){Ue(`Skipping file load for conversation ${n}: adapter not configured`);return}const A=r.adapterName,i=va(r.apiUrl);if(new Set((r.attachedFiles||[]).map(c=>c.file_id)).size===0){Ue(`No files to sync for conversation ${n}`);return}const o=(await e0.listFiles(void 0,i,A)).map(c=>({file_id:c.file_id,filename:c.filename,mime_type:c.mime_type,file_size:c.file_size,upload_timestamp:c.upload_timestamp,processing_status:c.processing_status,chunk_count:c.chunk_count})),l=new Map(o.map(c=>[c.file_id,c]));e(c=>{const u=c.conversations.find(d=>d.id===n);if(!u)return c;const g=(u.attachedFiles||[]).map(d=>l.get(d.file_id)||d).filter(d=>l.has(d.file_id)||!d.processing_status||d.processing_status==="processing");return{conversations:c.conversations.map(d=>d.id===n?{...d,attachedFiles:g,updatedAt:new Date}:d)}}),setTimeout(()=>{const c=t();localStorage.setItem("chat-state",JSON.stringify({conversations:c.conversations,currentConversationId:c.currentConversationId}))},0)}catch(r){Yr(`Failed to load files for conversation ${n}:`,r)}},syncConversationFiles:async n=>{await t().loadConversationFiles(n)},syncConversationsWithBackend:async()=>{try{const n=t();if(n.conversations.length===0)return;const r=await Lr(),A=dt.maxMessagesPerConversation!==null&&dt.maxMessagesPerConversation||void 0;let i=!1;const s=(await Promise.all(n.conversations.map(async o=>{var l;if(!o.sessionId)return null;if(!o.adapterName)return An(`[chatStore] Skipping backend sync for conversation ${o.id} - adapter not configured`),null;try{const c=new r.ApiClient({apiUrl:va(o.apiUrl),sessionId:o.sessionId,adapterName:o.adapterName});if(typeof c.getConversationHistory!="function")return i||(i=!0,An("[chatStore] Conversation history endpoint not supported by current API client")),null;const u=await c.getConversationHistory(o.sessionId,A),g=Array.isArray(u==null?void 0:u.messages)?u.messages:[];if(g.length===0)return o.messages.length===0?null:{id:o.id,sessionId:(u==null?void 0:u.session_id)||o.sessionId,messages:[],cleared:!0,updatedAt:new Date};const d=Krt(g,o.messages);return Vrt(o.messages,d)?null:{id:o.id,sessionId:(u==null?void 0:u.session_id)||o.sessionId,messages:d,cleared:!1,updatedAt:((l=d[d.length-1])==null?void 0:l.timestamp)||new Date}}catch(c){return An(`[chatStore] Failed to sync session ${o.sessionId}:`,c),null}}))).filter(o=>!!o);if(s.length===0)return;e(o=>{const l=new Map(s.map(u=>[u.id,u]));return{conversations:o.conversations.map(u=>{const g=l.get(u.id);return g?g.cleared?{...u,sessionId:g.sessionId||u.sessionId,messages:[],attachedFiles:[],title:"New Chat",updatedAt:g.updatedAt,adapterLoadError:null}:{...u,sessionId:g.sessionId||u.sessionId,messages:g.messages,updatedAt:g.updatedAt,adapterLoadError:null}:u}),currentConversationId:o.currentConversationId}}),setTimeout(()=>{const o=t();localStorage.setItem("chat-state",JSON.stringify({conversations:o.conversations,currentConversationId:o.currentConversationId}))},0)}catch{}},stopStreaming:async()=>{var r;if(!t().isLoading)return;if(uB&&uB.abort(),Yo&&Tl)try{Ue(`[chatStore] Calling stopChat API: session=${Tl}, request=${Yo}`);const A=await Lr(),i=await((r=A.stopChat)==null?void 0:r.call(A,Tl,Yo));Ue(`[chatStore] Server-side cancellation result: ${i}`)}catch{}const n=t().currentConversationId;e(n?A=>({conversations:A.conversations.map(i=>i.id!==n?i:{...i,messages:i.messages.map(a=>a.isStreaming?{...a,isStreaming:!1}:a),updatedAt:new Date}),isLoading:!1}):{isLoading:!1}),uB=null,Yo=null,Tl=null},clearCurrentConversationAdapter:()=>{const n=t().currentConversationId;n&&(e(r=>({conversations:r.conversations.map(A=>A.id===n?{...A,adapterName:void 0,adapterInfo:void 0,adapterLoadError:null}:A)})),setTimeout(()=>{const r=t();localStorage.setItem("chat-state",JSON.stringify({conversations:r.conversations,currentConversationId:r.currentConversationId}))},0))}})),Prt=async()=>{var o;const e=localStorage.getItem("chat-state"),t=Zn(),n=typeof window<"u"?!!localStorage.getItem("chat-api-url"):!1;let r=Em(),A=!1;if(e)try{const l=JSON.parse(e),c=B=>{if(B instanceof Date)return B;const h=B?new Date(B):new Date;return Number.isNaN(h.getTime())?new Date:h},g=(Array.isArray(l.conversations)?l.conversations:[]).map(B=>{const w=(Array.isArray(B.messages)?B.messages:[]).filter(y=>!(y.role==="assistant"&&y.isStreaming)).map(y=>({...y,timestamp:c(y.timestamp),isStreaming:!1})),p={id:B.id,sessionId:B.sessionId||Vo(),title:B.title||"New Chat",messages:w,createdAt:c(B.createdAt),updatedAt:c(B.updatedAt),attachedFiles:B.attachedFiles||[],adapterName:B.adapterName,apiUrl:B.apiUrl,adapterInfo:B.adapterInfo,adapterLoadError:B.adapterLoadError||null,audioSettings:B.audioSettings,currentThreadId:void 0,currentThreadSessionId:void 0},E=p.messages.length===0&&!p.adapterName&&!n?t:va(B.apiUrl);return{...p,apiUrl:E}});if(A=g.length>0,l.currentConversationId&&g.length>0){const B=g.find(h=>h.id===l.currentConversationId);B&&B.sessionId&&(r=B.sessionId)}if(g.length===0){const B=`conv_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,h=Vo(),w=vx(B,h,Zn());Nt.setState({conversations:[w],currentConversationId:B,sessionId:h}),r=h}else Nt.setState({conversations:g,currentConversationId:l.currentConversationId||((o=g[0])==null?void 0:o.id)||null,sessionId:r}),!l.currentConversationId&&g.length>0&&(Nt.setState({currentConversationId:g[0].id,sessionId:g[0].sessionId||r}),r=g[0].sessionId||r);const d=Nt.getState().conversations;Ue("📋 Loaded conversations:",d.map(B=>{var h;return{id:B.id,title:B.title,sessionId:B.sessionId,messageCount:((h=B.messages)==null?void 0:h.length)||0}})),setTimeout(()=>{Nt.getState().cleanupStreamingMessages()},100)}catch(l){Yr("Failed to load chat state:",l);const c=`conv_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,u=Vo(),g=vx(c,u,Zn());Nt.setState({conversations:[g],currentConversationId:c,sessionId:u}),r=u}else{const l=`conv_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,c=Vo(),u=vx(l,c,Zn());Nt.setState({conversations:[u],currentConversationId:l,sessionId:c}),r=c}localStorage.removeItem("chat-api-key");const i=Nt.getState(),a=i.currentConversationId?i.conversations.find(l=>l.id===i.currentConversationId):null,s=A&&(a!=null&&a.apiUrl)?a.apiUrl:Zn();try{const l=await Lr(),c=a==null?void 0:a.adapterName;if(!c)Ue("No adapter selected yet. Waiting for user selection before configuring API.");else if(l.configureApi(s,r,c),ym=s,mm=!0,Ue("Using existing adapter from conversation:",c),!(a!=null&&a.adapterInfo))try{const u=new l.ApiClient({apiUrl:s,sessionId:null,adapterName:c});if(typeof u.getAdapterInfo=="function"){const g=await u.getAdapterInfo();Ue("Adapter info loaded for existing adapter:",g);const d=Nt.getState();d.currentConversationId&&(Nt.setState({conversations:d.conversations.map(B=>B.id===d.currentConversationId?{...B,adapterInfo:g,adapterLoadError:null,updatedAt:new Date}:B)}),setTimeout(()=>{const B=Nt.getState();localStorage.setItem("chat-state",JSON.stringify({conversations:B.conversations,currentConversationId:B.currentConversationId}))},0))}}catch(u){An("Failed to load adapter info for existing adapter:",u)}}catch(l){Yr("Failed to initialize API:",l)}try{await Nt.getState().syncConversationsWithBackend()}catch{}};typeof window<"u"&&Prt();const Xrt=new Map,Zrt=new Map,qrt=new Map,_rt=()=>{if(typeof window>"u")return null;try{return localStorage.getItem("chat-adapter-name")}catch{return null}},Uce=e=>typeof e=="object"&&e!==null&&"message"in e,$rt=e=>e instanceof Error?e.message:typeof e=="string"?e:Uce(e)?e.message??"Unknown error":"Unknown error";function eAt({conversationId:e,onFilesSelected:t,onUploadError:n,onClose:r,onUploadingChange:A,onUploadSuccess:i,maxFiles:a=dt.maxFilesPerConversation,disabled:s=!1}){const[o,l]=m.useState(!1),[c,u]=m.useState(0),g=m.useRef(null),d=m.useRef(qrt),B=m.useRef(new Map),h=m.useRef(!0),w=m.useRef(Xrt),p=m.useRef(Zrt),f=m.useRef(e),E=Nt(W=>W.conversations),y=m.useMemo(()=>{if(!e)return new Map;const W=w.current.get(e);return W?new Map(W):new Map},[e,c]),C=m.useCallback(W=>{if(!W){A==null||A(null,!1),u($=>$+1);return}const Ae=w.current.get(W)||new Map,z=E.find($=>$.id===W);if(z&&z.attachedFiles){const $=z.attachedFiles.filter(de=>!de.processing_status||de.processing_status==="processing"||de.processing_status==="uploading"),le=new Map(Ae);let ge=!1;$.forEach(de=>{if(!Array.from(Ae.values()).find(_=>_.fileId===de.file_id)){const _=`${W}-${de.filename}-${de.file_id}`;le.set(_,{filename:de.filename,progress:de.processing_status==="uploading"?50:90,status:de.processing_status||"processing",fileId:de.file_id}),ge=!0}}),ge||le.size>0?(w.current.set(W,le),A==null||A(W,!0)):(w.current.delete(W),A==null||A(W,!1))}else Ae.size>0?w.current.set(W,Ae):w.current.delete(W),A==null||A(W,Ae.size>0);u($=>$+1)},[E,A]);m.useEffect(()=>{f.current=e,C(e)},[e,C]),m.useEffect(()=>{e&&C(e)},[E,e,C]);const I=m.useCallback((W,Ae)=>{if(!W)return;const z=w.current.get(W)||new Map,$=Ae(new Map(z));$.size>0?w.current.set(W,$):w.current.delete(W),A==null||A(W,$.size>0),u(le=>le+1)},[A]),Q=m.useCallback((W,Ae)=>{if(!W)return;const z=p.current.get(W)||[],$=Ae([...z||[]]),le=new Set(z.map(ge=>ge.file_id));if(p.current.set(W,$),t(W,$),i){const ge=$.filter(de=>!le.has(de.file_id));ge.length>0&&i(W,ge)}u(ge=>ge+1)},[t,i]),D=Nt(W=>W.removeFileFromConversation),F=Nt(W=>W.addFileToConversation);m.useEffect(()=>(h.current=!0,()=>{h.current=!1}),[]);const N=m.useCallback(()=>{h.current=!1,new Map(B.current).forEach(Ae=>Ae.abort()),setTimeout(()=>{const Ae=Nt.getState(),z=new Map(Ae.conversations.map(le=>[le.id,le])),$=[];d.current.forEach((le,ge)=>{var de;if(le){const we=z.get(le);if(new Set(((de=we==null?void 0:we.attachedFiles)==null?void 0:de.map(ue=>ue.file_id))||[]).has(ge)){d.current.delete(ge);return}}$.push({fileId:ge,conversationId:le||null})}),$.length>0&&(r==null||r(),$.forEach(async({fileId:le,conversationId:ge})=>{try{if(ge)await D(ge,le);else{const de=_rt();await e0.deleteFile(le,void 0,void 0,de??void 0)}}catch(de){if(Uce(de)){const we=de.message??"";!we.includes("404")&&we.includes("File not found")}}}))},300)},[r,D]);m.useEffect(()=>N,[N]);const S=m.useCallback(async W=>{if(!W||W.length===0)return;const Ae=Array.from(W),z=Nt.getState(),$=e||z.currentConversationId;if(!$){n==null||n("Please select or create a conversation before uploading files.");return}const le=z.conversations.find(_=>_.id===$);if(!le){n==null||n("Conversation not found. Please try again.");return}if((p.current.get($)||[]).length+Ae.length>a){const _=`Maximum ${a} files allowed per conversation. Please remove some files first.`;n==null||n(_);return}if(dt.maxTotalFiles!==null&&z.conversations.reduce((ce,ae)=>{var he;return ce+(((he=ae.attachedFiles)==null?void 0:he.length)||0)},0)+Ae.length>dt.maxTotalFiles){const ce=`Maximum ${dt.maxTotalFiles} total files allowed across all conversations. Please remove some files from other conversations first.`;n==null||n(ce);return}if(!le.adapterName){n==null||n("Adapter not configured for this conversation. Please select an adapter first.");return}const de=le.adapterName,we=va(le.apiUrl);for(let _=0;_<Ae.length;_++){const ue=Ae[_],ce=new AbortController;B.current.set(ue.name,ce);const ae=`${$}-${ue.name}-${Date.now()}-${_}`;let he=null;try{const xe=await e0.uploadFile(ue,Ce=>{if(I($,oe=>(oe.set(ae,Ce),oe)),Ce.fileId&&!he){he=Ce.fileId,d.current.set(Ce.fileId,$);const oe={file_id:Ce.fileId,filename:ue.name,mime_type:ue.type||"application/octet-stream",file_size:ue.size,processing_status:Ce.status==="uploading"?"uploading":Ce.status==="processing"?"processing":Ce.status==="completed"?"completed":void 0};Ue(`[FileUpload] Adding file ${Ce.fileId} to conversation ${$} immediately (status: ${oe.processing_status})`),F($,oe)}},void 0,we,de).catch(Ce=>{if(Ce.message&&Ce.message.includes("was deleted")){he&&d.current.delete(he);const oe=Ce.message.match(/File\s+([\w-]+)\s+was deleted/);return oe&&oe[1]&&d.current.delete(oe[1]),Ue(`File ${ue.name} was deleted during upload`),null}throw Ce});xe?(d.current.set(xe.file_id,$),Ue(`[FileUpload] Updating file ${xe.file_id} in conversation ${$} with final status`),F($,xe),xe.processing_status==="completed"?I($,Ce=>(Ce.delete(ae),Ce)):I($,Ce=>{const oe=Ce.get(ae);return oe&&Ce.set(ae,{...oe,progress:90,status:"processing",fileId:xe.file_id}),Ce}),Q($,Ce=>{if(new Set(Ce.map(et=>et.file_id)).has(xe.file_id))return Ce;const Le=[...Ce,xe];return Ue(`[FileUpload] Updated uploadedFiles for ${$}: ${Le.length} files`,Le),Le})):(An(`Upload completed for ${ue.name} but uploadedAttachment is null`),I($,Ce=>(Ce.delete(ae),Ce)))}catch(xe){const Ce=$rt(xe);if(xe instanceof DOMException&&xe.name==="AbortError"||ce.signal.aborted){Ue(`Upload cancelled for ${ue.name}`),he&&d.current.delete(he);continue}if(Ce.includes("was deleted")){Ue(`File ${ue.name} was deleted during upload`),he&&d.current.delete(he);const oe=Ce.match(/File\s+([\w-]+)\s+was deleted/);oe&&oe[1]&&d.current.delete(oe[1]);continue}h.current?(El(`Failed to upload file ${ue.name}:`,xe),El(`File type: ${ue.type}, File name: ${ue.name}`),n==null||n(Ce||`Failed to upload ${ue.name}`)):An(`Upload error for ${ue.name} (component unmounted):`,Ce),he&&d.current.delete(he)}finally{B.current.delete(ue.name)}}},[F,e,a,n,Q,I]),k=m.useCallback(W=>{W.preventDefault(),W.stopPropagation(),s||l(!0)},[s]),J=m.useCallback(W=>{W.preventDefault(),W.stopPropagation(),l(!1)},[]),H=m.useCallback(W=>{if(W.preventDefault(),W.stopPropagation(),l(!1),s)return;const Ae=W.dataTransfer.files;S(Ae)},[s,S]),v=m.useCallback(W=>{const Ae=W.target.files;S(Ae),g.current&&(g.current.value="")},[S]),R=m.useCallback(()=>{!s&&g.current&&g.current.click()},[s]),L=y.size>0,T=m.useMemo(()=>{const W=new Map;return E.forEach(Ae=>{W.set(Ae.id,Ae.title||"Conversation")}),W},[E]),K=m.useMemo(()=>{const W=[];return w.current.forEach((Ae,z)=>{z!==e&&Ae.size>0&&W.push({conversationId:z,uploads:Array.from(Ae.entries()).map(([$,le])=>({key:$,progress:le}))})}),W},[e,c]),G=x.jsx("div",{className:"w-full max-w-full overflow-hidden space-y-2",children:Array.from(y.values()).map(W=>x.jsxs("div",{className:"w-full max-w-full flex items-center gap-3 p-3 bg-slate-50 dark:bg-slate-800/50 rounded-lg overflow-hidden",children:[x.jsx(ig,{className:"w-4 h-4 text-emerald-600 dark:text-emerald-400 animate-spin flex-shrink-0"}),x.jsxs("div",{className:"flex-1 min-w-0 overflow-hidden",children:[x.jsx("p",{className:"text-sm font-medium text-slate-700 dark:text-slate-300 truncate",children:W.filename}),x.jsx("div",{className:"mt-1 bg-slate-200 dark:bg-slate-700 rounded-full h-1.5",children:x.jsx("div",{className:"bg-emerald-600 dark:bg-emerald-400 h-1.5 rounded-full transition-all duration-300",style:{width:`${W.progress}%`}})})]}),x.jsx("span",{className:"text-xs text-slate-500 dark:text-slate-400",children:W.status==="uploading"?"Uploading...":W.status==="processing"?"Processing...":W.status==="completed"?"Done":"Error"})]},W.filename))});return L?x.jsx("div",{className:"w-full max-w-full overflow-hidden space-y-3",children:G}):x.jsxs("div",{className:"w-full max-w-full overflow-hidden space-y-3",children:[x.jsxs("div",{onClick:R,onDragOver:k,onDragLeave:J,onDrop:H,className:`
|
|
997
997
|
relative w-full max-w-full border-2 border-dashed rounded-xl p-3 sm:p-4 transition-all cursor-pointer
|
|
@@ -1007,4 +1007,4 @@ ${FBe}`,rrt=()=>{if(typeof document>"u"||document.getElementById(l4))return;cons
|
|
|
1007
1007
|
{ "name": "Electric Vehicle Population", "apiKey": "ev", "apiUrl": "http://localhost:3000", "description": "Accesses statistics and insights about electric vehicle registrations." },
|
|
1008
1008
|
{ "name": "Paris Open Data", "apiKey": "paris", "apiUrl": "http://localhost:3000", "description": "Interact with Paris city open data for events, venues, and more." },
|
|
1009
1009
|
{ "name": "REST API", "apiKey": "rest", "apiUrl": "http://localhost:3000", "description": "Enables generic REST API exploration and data extraction." }
|
|
1010
|
-
]`;try{const t=JSON.parse(e);if(Array.isArray(t)){Ue("Loading adapters from VITE_ADAPTERS environment variable");const n=ok(t);if(n.length>0)return n}}catch{}return null}async function az(){if(Ll)return Ll;try{const t=await fetch("/api/adapters");if(t.ok){const n=await t.json(),r=ok(n.adapters);if(r.length>0)return Ll=r,Ue("Fetched adapters from /api/adapters:",Ll),Ll;Ue("/api/adapters response did not contain valid adapters, trying fallback")}Ue(`/api/adapters returned ${t.status}, trying fallback`)}catch{}const e=cAt();if(e&&e.length>0)return Ll=e,Ll;throw new Error("No adapters available. Configure VITE_ADAPTERS environment variable.")}const uAt="h-[96px]";function gAt({onAdapterSelect:e,className:t="",title:n="",subtitle:r="Each AI agent is tuned for a specific expertise. Pick one to start a focused conversation.",eyebrow:A="Pick an AI Agent"}){const[i,a]=m.useState([]),[s,o]=m.useState(!0),[l,c]=m.useState(null),u=m.useRef(null),[g,d]=m.useState(!1),[B,h]=m.useState(""),w=m.useMemo(()=>{const f=B.trim().toLowerCase();return f?i.filter(E=>{var I;const y=E.name.toLowerCase().includes(f),C=((I=E.description)==null?void 0:I.toLowerCase().includes(f))??!1;return y||C}):i},[i,B]);m.useEffect(()=>{let f=!0;return(async()=>{try{o(!0),c(null);const C=(await az()).slice().sort((I,Q)=>I.name.localeCompare(Q.name,void 0,{sensitivity:"base"}));f&&a(C)}catch{f&&c("Unable to load agents right now.")}finally{f&&o(!1)}})(),()=>{f=!1}},[]),m.useEffect(()=>{const f=()=>{const E=u.current;if(!E){d(!1);return}const y=E.scrollHeight-E.clientHeight>4;d(y)};return f(),window.addEventListener("resize",f),()=>{window.removeEventListener("resize",f)}},[w,s,l]);const p=()=>s?x.jsx("div",{className:"grid gap-4",children:Array.from({length:3}).map((f,E)=>x.jsx("div",{className:`${uAt} animate-pulse rounded-2xl border border-gray-200 bg-white dark:border-[#3b3c49] dark:bg-[#22232b]`},E))}):l?x.jsx("div",{className:"rounded-2xl border border-red-200 bg-red-50 px-4 py-6 text-sm text-red-700 dark:border-red-900 dark:bg-red-950/30 dark:text-red-200",children:l}):i.length===0?x.jsx("div",{className:"rounded-2xl border border-gray-200 bg-white px-4 py-6 text-sm text-gray-600 dark:border-[#3b3c49] dark:bg-[#22232b] dark:text-gray-300",children:"No agents are available yet. Configure adapters in your middleware settings to continue."}):w.length===0?x.jsx("div",{className:"rounded-2xl border border-gray-200 bg-white px-4 py-6 text-sm text-gray-600 dark:border-[#3b3c49] dark:bg-[#22232b] dark:text-gray-300",children:"No agents match your search."}):x.jsxs("div",{className:"relative flex flex-col h-full min-h-0",children:[x.jsx("div",{ref:u,className:"flex-1 min-h-0 overflow-y-auto pr-1 pb-6",onScroll:()=>{const f=u.current;if(!f)return;const E=f.scrollHeight-f.scrollTop-f.clientHeight>4;d(E)},children:x.jsx("div",{className:"grid gap-3",children:w.map(f=>x.jsx(oAt,{adapter:f,onSelect:E=>e(E.name)},f.name))})}),g&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:"pointer-events-none absolute inset-x-0 bottom-0 h-14 bg-gradient-to-b from-transparent to-white dark:to-[#1c1d23]"}),x.jsx("div",{className:"pointer-events-none absolute bottom-3 left-1/2 -translate-x-1/2 rounded-full bg-white/95 px-3 py-1 text-xs font-semibold text-gray-600 shadow-sm dark:bg-[#1c1d23]/95 dark:text-gray-200",children:"Scroll for more"})]})]});return x.jsxs("div",{className:`flex w-full flex-col gap-6 ${t}`,children:[(A||n||r)&&x.jsxs("div",{className:"flex-shrink-0",children:[A&&x.jsx("p",{className:"text-sm font-semibold uppercase tracking-wide text-blue-600 dark:text-blue-300",children:A}),n&&x.jsx("h2",{className:"mt-2 text-2xl font-bold text-gray-900 dark:text-white",children:n}),r&&x.jsx("p",{className:"mt-2 text-base text-gray-600 dark:text-gray-300",children:r})]}),x.jsxs("div",{className:"relative w-full flex-shrink-0",children:[x.jsx(DZ,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400"}),x.jsx("input",{type:"text",placeholder:"Search agents",value:B,disabled:s||!!l||i.length===0,onChange:f=>h(f.target.value),className:"w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm text-gray-900 placeholder-gray-400 shadow-inner focus:border-gray-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-60 dark:border-[#3b3c49] dark:bg-[#1f2027] dark:text-white dark:shadow-none"})]}),x.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:p()})]})}const dAt=(e,t)=>{const[n,r]=m.useState({stars:0,forks:0,license:"Apache-2.0",description:"An adaptable, open-source context-aware inference engine designed for privacy, control, and independence from proprietary models.",isLoading:!0,error:null});return m.useEffect(()=>{(async()=>{var i;try{const a=await fetch(`https://api.github.com/repos/${e}/${t}`);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);const s=await a.json();r({stars:s.stargazers_count||0,forks:s.forks_count||0,license:((i=s.license)==null?void 0:i.name)||"Apache-2.0",description:s.description||"An adaptable, open-source context-aware inference engine designed for privacy, control, and independence from proprietary models.",isLoading:!1,error:null})}catch(a){console.warn("Failed to fetch GitHub stats:",a),r({stars:104,forks:19,license:"Apache-2.0",description:"An adaptable, open-source context-aware inference engine designed for privacy, control, and independence from proprietary models.",isLoading:!1,error:a instanceof Error?a.message:"Failed to fetch stats"})}})()},[e,t]),n};function f4({className:e=""}){const t=frt(),n=wrt(),r=Ert(),A=dAt(n,r);if(!t)return null;const i=`https://github.com/${n}/${r}`,a=()=>A.isLoading?x.jsxs("div",{className:"flex items-center gap-2 text-xs font-medium text-gray-600 dark:text-[#bfc2cd]",children:[x.jsx("div",{className:"h-3.5 w-3.5 animate-spin rounded-full border-2 border-gray-300 border-t-transparent dark:border-[#4a4b54] dark:border-t-transparent"}),x.jsx("span",{children:"Loading…"})]}):A.error?x.jsx("div",{className:"text-xs font-medium text-red-600 dark:text-red-400",children:"Failed to load stats."}):x.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 text-xs font-semibold text-gray-800 dark:text-[#ececf1]",children:[x.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-white/80 px-2.5 py-0.5 text-gray-800 shadow-sm dark:bg-[#2c2f36] dark:text-[#ececf1]",children:[x.jsx(BBe,{className:"h-3.5 w-3.5 text-yellow-500 dark:text-yellow-300"}),A.stars.toLocaleString()]}),x.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-white/80 px-2.5 py-0.5 text-gray-800 shadow-sm dark:bg-[#2c2f36] dark:text-[#ececf1]",children:[x.jsx($de,{className:"h-3.5 w-3.5 text-blue-500 dark:text-blue-300"}),A.forks.toLocaleString()]})]});return x.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`inline-flex flex-col items-center gap-1 text-sm text-gray-700 transition hover:text-blue-700 dark:text-[#ececf1] dark:hover:text-blue-300 ${e}`,children:[x.jsxs("div",{className:"flex items-center gap-1 text-[11px] font-semibold uppercase tracking-wide text-blue-600 dark:text-blue-300",children:[x.jsx(eBe,{className:"h-3.5 w-3.5"}),x.jsx("span",{children:"Powered by ORBIT"})]}),a()]})}const BAt=60*1e3;let Rx=null,w4=0;const zx=e=>{if(!e||e==="/")return"/";const t=e.trim();if(!t)return"/";const n=t.startsWith("/")?t:`/${t}`;return n==="/"?"/":n.endsWith("/")?n.slice(0,-1):n},kce=()=>{if(typeof window>"u")return zx("/");const e=zx("/");if(typeof document>"u")return e;const t=document.querySelector("base[href]");if(!t)return e;try{const n=new URL(t.getAttribute("href")||"/",window.location.origin);return zx(n.pathname||e)}catch{return e}},lk=e=>e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),hAt=async()=>{const e=Date.now();if(Rx&&e-w4<BAt)return Rx;let t=[];try{t=await az()}catch{}const n=new Map;return t.forEach(r=>{const A=lk(r.name);A&&n.set(A,r.name)}),Rx=n,w4=e,n},E4=e=>{var i;const t=kce(),n=e.startsWith("/")?e:`/${e}`;let r=n;if(t!=="/"){if(!n.startsWith(t))return null;r=n.slice(t.length)}const A=r.split("/").filter(Boolean);return A.length===0?null:((i=A[0])==null?void 0:i.toLowerCase())||null},pAt=e=>{const t=kce();if(!e)return t;const n=e.replace(/^\/+|\/+$/g,"");return t==="/"?n?`/${n}`:"/":`${t}/${n}`.replace(/\/{2,}/g,"/")},Cu=e=>{if(typeof window>"u")return;const t=pAt(e),n=window.location.pathname;if(t===n)return;const r=window.location.search||"",A=window.location.hash||"";window.history.replaceState(window.history.state,"",`${t}${r}${A}`)},fAt=async e=>{const t=e.trim().toLowerCase();return t&&(await hAt()).get(t)||null},wAt="rounded-t-[32px] border border-white/40 bg-white/95 px-4 pb-4 pt-[max(env(safe-area-inset-top),1rem)] shadow-[0_25px_60px_rgba(15,23,42,0.15)] backdrop-blur-xl dark:border-[#2f303d] dark:bg-[#1c1d23]/95 md:rounded-none md:border-0 md:bg-transparent md:px-0 md:pb-0 md:pt-0 md:shadow-none md:backdrop-blur-0 md:dark:bg-transparent md:dark:border-0",m4="-mx-4 mt-auto overflow-hidden rounded-t-[28px] border-t border-x border-white/40 bg-white/98 pb-[max(env(safe-area-inset-bottom),0.75rem)] shadow-[0_-12px_45px_rgba(15,23,42,0.2)] backdrop-blur-xl transition-all duration-200 dark:border-[#2f303d] dark:bg-[#1c1d23]/98 md:mx-0 md:mt-0 md:overflow-visible md:rounded-none md:border-0 md:bg-transparent md:pb-0 md:shadow-none md:backdrop-blur-0 md:dark:bg-transparent md:dark:border-0 [&>div]:rounded-t-[28px] md:[&>div]:rounded-none [&>div]:bg-transparent md:[&>div]:px-0",EAt="sticky top-0 z-10 -mx-4 px-4 pt-2 pb-4 bg-white/95 backdrop-blur-xl dark:bg-[#1c1d23]/95 border-b border-white/50 dark:border-white/10 md:static md:mx-0 md:px-0 md:pt-6 md:pb-6 md:bg-transparent md:backdrop-blur-0 md:border-gray-200 md:dark:border-[#4a4b54] md:dark:bg-transparent";function mAt({onOpenSettings:e,onOpenSidebar:t}){var Ye,ee,se,me,Pe,st,Rt;const{conversations:n,currentConversationId:r,createConversation:A,canCreateNewConversation:i,sendMessage:a,regenerateResponse:s,isLoading:o,configureApiSettings:l,error:c,clearError:u,createThread:g,clearCurrentConversationAdapter:d}=Nt(),{settings:B}=Om(),{theme:h,isDark:w}=Jm(),p=h.mode==="dark"?"dark":h.mode==="light"?"light":"",f=w?"dark":"light",E=["message-markdown w-full min-w-0","prose prose-slate dark:prose-invert max-w-none",p].filter(Boolean).join(" "),y=["application-description prose prose-slate dark:prose-invert max-w-none text-base leading-relaxed","text-[#4a4c5a] dark:text-[#bfc2cd]","[&>:first-child]:mt-0 [&>:last-child]:mb-0",p].filter(Boolean).join(" "),[C,I]=m.useState(!1),[Q,D]=m.useState(null),F=n.find(Me=>Me.id===r),N=!F||F.messages.length===0,S=Nce(),k=bce(),J=lrt().trim(),H=J.length>0,v=m.useRef(typeof window<"u"?E4(window.location.pathname):null),R=N&&!v.current,[L,T]=m.useState(R),K=m.useRef(null),G=N&&L,W=N&&!L&&!!(F!=null&&F.adapterName),Ae="mx-auto w-full max-w-5xl",z=W?Ae:"w-full",$=i(),le=$?"Start a new conversation":"Finish your current conversation before starting a new one.",ge=!!(F!=null&&F.adapterInfo&&!G),de=N&&!G,we=F!=null&&F.adapterName&&!G?F.adapterName:G?k:"",ue=`${EAt} ${G?"border-transparent dark:border-transparent md:border-transparent md:dark:border-transparent":""}`.trim(),ce=!!Q,ae=m.useCallback(()=>{const Me=Nt.getState(),Z=Me.currentConversationId?Me.conversations.find(Fe=>Fe.id===Me.currentConversationId):null;if(!Z||Z.messages.length>0)try{const Fe=A();return K.current=Fe,Fe}catch(Fe){An("Cannot create a new conversation for agent selection:",Fe instanceof Error?Fe.message:"Unknown error")}return(Z==null?void 0:Z.id)||null},[A]);m.useEffect(()=>{F!=null&&F.adapterLoadError?D(F.adapterLoadError):D(null)},[F==null?void 0:F.id,F==null?void 0:F.adapterName,F==null?void 0:F.adapterLoadError]);const he=m.useCallback(()=>{typeof window>"u"||setTimeout(()=>{const Me=Nt.getState();localStorage.setItem("chat-state",JSON.stringify({conversations:Me.conversations,currentConversationId:Me.currentConversationId}))},0)},[]),xe=m.useCallback((Me,Z)=>{if(!Me)return;const Fe=Z||"Unable to configure this agent.";let Ge=!1;Nt.setState(Je=>{const qe=Je.conversations.find($e=>$e.id===Me);return!qe||qe.messages.length>0?Je:(Ge=!0,{conversations:Je.conversations.map($e=>$e.id===Me?{...$e,adapterLoadError:Fe}:$e)})}),Ge&&he()},[he]),Ce=m.useCallback(Me=>{if(!Me)return;let Z=!1;Nt.setState(Fe=>{const Ge=Fe.conversations.find(Je=>Je.id===Me);return!Ge||!Ge.adapterLoadError?Fe:(Z=!0,{conversations:Fe.conversations.map(Je=>Je.id===Me?{...Je,adapterLoadError:null}:Je)})}),Z&&he()},[he]),oe=m.useCallback(Me=>Me instanceof Error?Me.message.includes("401")?"We couldn’t load this agent. It may not exist or you might not have access to it.":Me.message.includes("404")?"This agent was not found on the server. Please pick another agent.":Me.message:"Unable to load agent overview right now.",[]),Le=m.useCallback(async Me=>{if(!Me)return{ok:!1};const Z=Me.adapterName;if(!Z)return{ok:!1};try{const Fe=await Lr(),Ge=new Fe.ApiClient({apiUrl:Me.apiUrl||Zn(),sessionId:null,adapterName:Z});if(typeof Ge.getAdapterInfo!="function")return{ok:!1};const Je=await Ge.getAdapterInfo();return Nt.setState($e=>({conversations:$e.conversations.map(zt=>zt.id===Me.id?{...zt,adapterInfo:Je,adapterLoadError:null,updatedAt:new Date}:zt)})),Nt.getState().currentConversationId===Me.id&&D(null),he(),{ok:!0}}catch(Fe){const Ge=Nt.getState(),Je=oe(Fe);Ge.currentConversationId===Me.id&&D(Je);const qe=Ge.conversations.find($e=>$e.id===Me.id);return qe&&qe.messages.length===0&&xe(Me.id,Je),{ok:!1,error:Fe}}},[oe,xe,he,D]);m.useEffect(()=>{if(!N){L&&T(!1),K.current=(F==null?void 0:F.id)||null;return}if(v.current){K.current=(F==null?void 0:F.id)||null;return}const Me=(F==null?void 0:F.id)||null;K.current!==Me&&(K.current=Me,T(!0))},[N,F==null?void 0:F.id,L]),m.useEffect(()=>{if(!v.current){if(G||!(F!=null&&F.adapterName)){Cu(null);return}Cu(lk(F.adapterName))}},[G,F==null?void 0:F.adapterName]),m.useEffect(()=>{let Me=!1;const Z=async()=>{if(typeof window>"u")return;const Ge=E4(window.location.pathname);if(!Ge)return;const Je=await fAt(Ge);if(Me)return;if(!Je){ae(),Cu(null),d(),T(!0),v.current=null;return}ae(),T(!1),Cu(Ge);const qe=Nn.current;qe&&await qe(Je),v.current=null};Z();const Fe=()=>{Z()};return window.addEventListener("popstate",Fe),()=>{Me=!0,window.removeEventListener("popstate",Fe)}},[ae,d]),m.useEffect(()=>{var Me,Z,Fe;Ue("[ChatInterface] Conversation state:",{hasConversation:!!F,adapterName:F==null?void 0:F.adapterName,hasAdapterInfo:!!(F!=null&&F.adapterInfo),hasNotes:!!((Me=F==null?void 0:F.adapterInfo)!=null&&Me.notes),notes:((Fe=(Z=F==null?void 0:F.adapterInfo)==null?void 0:Z.notes)==null?void 0:Fe.substring(0,50))+"..."})},[F]);const et=m.useRef(null);m.useEffect(()=>{(async()=>{var Ge;const Z=F==null?void 0:F.adapterName;if(et.current===Z)return;const Fe=!(F!=null&&F.adapterInfo)||(F==null?void 0:F.adapterInfo)&&F.adapterInfo.notes===void 0;if(Z&&Fe){et.current=Z,Ue("[ChatInterface] Loading adapter info - adapterName:",Z,"reason:",F!=null&&F.adapterInfo?"notes undefined":"missing");try{F!=null&&F.adapterLoadError&&Ce(F.id);const Je=(F==null?void 0:F.apiUrl)||Zn();Ue("[ChatInterface] Calling configureApiSettings for:",Z),await l(Je,void 0,Z),Ue("[ChatInterface] Adapter info loaded successfully");const qe=Nt.getState(),$e=qe.conversations.find(zt=>zt.id===qe.currentConversationId);if(($e==null?void 0:$e.adapterName)===Z&&(!$e.adapterInfo||$e.adapterInfo.notes===void 0)){const zt=await Le($e);!zt.ok&&zt.error&&El("[ChatInterface] Failed to fetch adapter info after configuring adapter:",zt.error)}}catch(Je){if(et.current=null,(F==null?void 0:F.adapterName)===Z){const qe=oe(Je);D(qe),xe(F.id,qe)}}}else Ue("[ChatInterface] Skipping adapter info load:",{adapterName:Z,hasAdapterInfo:!!(F!=null&&F.adapterInfo),hasNotes:((Ge=F==null?void 0:F.adapterInfo)==null?void 0:Ge.notes)!==void 0,refValue:et.current})})()},[F==null?void 0:F.adapterName,F==null?void 0:F.adapterInfo,F==null?void 0:F.apiUrl,F==null?void 0:F.adapterLoadError,F==null?void 0:F.id,l,Ce,Le,oe,xe]),m.useEffect(()=>{let Me=null;const Z=()=>{Me&&(Me(),Me=null)};if(B.voiceEnabled){if(ac.isAudioEnabled())return Z;const Fe=()=>{Z();const Ge=async()=>{Z(),await ac.enableAudio()||Fe()};document.addEventListener("pointerdown",Ge,{once:!0}),document.addEventListener("keydown",Ge,{once:!0}),Me=()=>{document.removeEventListener("pointerdown",Ge),document.removeEventListener("keydown",Ge)}};return Fe(),Z}return Z(),ac.disableAudio(),Z},[B.voiceEnabled]);const vn=(Me,Z,Fe)=>{a(Me,Z,Fe)},Jt=async(Me,Z,Fe)=>{await a(Fe,void 0,Me)},ln=()=>{try{A()}catch(Me){An("Cannot create new conversation:",Me instanceof Error?Me.message:"Unknown error")}},Ln=m.useCallback(async Me=>{if(!Me)return;const Z=Nt.getState(),Fe=Z.currentConversationId?Z.conversations.find(Ge=>Ge.id===Z.currentConversationId):null;if(Fe){I(!0),D(null),Ce(Fe.id);try{const Ge=Fe.apiUrl||Zn();await l(Ge,void 0,Me),u();const Je=Nt.getState(),qe=Je.conversations.find($e=>$e.id===Je.currentConversationId);if((qe==null?void 0:qe.adapterName)===Me&&(!qe.adapterInfo||qe.adapterInfo.notes===void 0)){const $e=await Le(qe);!$e.ok&&$e.error&&El("Failed to load adapter info after selecting adapter:",$e.error)}}catch(Ge){const Je=oe(Ge);D(Je),xe(Fe.id,Je)}finally{I(!1)}}},[l,u,Le,xe,Ce,oe]),Pr=Me=>{ae(),T(!1),Cu(lk(Me)),Ln(Me)},Nn=m.useRef(Ln);return m.useEffect(()=>{Nn.current=Ln},[Ln]),x.jsx("div",{className:"flex-1 flex flex-col bg-gray-50 dark:bg-[#202123] overflow-hidden",children:x.jsx("div",{className:"flex h-full w-full flex-col px-3 sm:px-6 overflow-hidden",children:x.jsxs("div",{className:`mx-auto flex h-full w-full max-w-5xl flex-col overflow-hidden ${wAt}`,children:[c&&x.jsx("div",{role:"alert",className:"mt-6 rounded-md border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700 dark:border-red-600/40 dark:bg-red-900/30 dark:text-red-200",children:x.jsxs("div",{className:"flex items-start justify-between",children:[x.jsx("p",{children:c}),x.jsx("button",{onClick:u,className:"ml-4 rounded p-1 text-red-500 hover:bg-red-100 hover:text-red-700 dark:text-red-200 dark:hover:bg-red-800/40","aria-label":"Dismiss error",children:"×"})]})}),x.jsxs("div",{className:ue,children:[t&&x.jsxs("div",{className:"mb-4 grid grid-cols-2 gap-3 md:hidden",children:[x.jsxs("button",{onClick:t,className:"inline-flex items-center justify-center gap-2 rounded-2xl border border-white/50 bg-white/80 px-4 py-3.5 text-sm font-semibold text-gray-800 shadow-sm active:scale-[0.97] transition-all duration-150 hover:bg-white dark:border-[#2f303d] dark:bg-[#232430] dark:text-[#ececf1]","aria-label":"Open conversations menu",children:[x.jsx(tBe,{className:"h-5 w-5"}),"Chats"]}),x.jsxs("button",{onClick:e,className:"inline-flex items-center justify-center gap-2 rounded-2xl border border-white/50 bg-[#11121a]/90 px-4 py-3.5 text-sm font-semibold text-white shadow-sm active:scale-[0.97] transition-all duration-150 hover:bg-[#0c0d14] dark:border-[#3b3c49] dark:bg-[#565869] dark:hover:bg-[#6b6f7a]","aria-label":"Open settings",children:[x.jsx(SZ,{className:"h-5 w-5"}),"Settings"]})]}),x.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between",children:[x.jsx("div",{className:"min-w-0 flex-1",children:ge&&x.jsxs("div",{className:"space-y-3",children:[x.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2 justify-start md:flex-nowrap",children:[((Ye=F==null?void 0:F.adapterInfo)==null?void 0:Ye.model)&&x.jsxs("div",{className:"inline-flex max-w-full flex-shrink items-center gap-2 rounded-full border border-gray-200 bg-gray-100 px-2.5 py-1 text-xs font-semibold uppercase tracking-wider text-gray-500 dark:border-[#4a4b54] dark:bg-[#343541] dark:text-[#bfc2cd] min-w-0",title:F.adapterInfo.model,"aria-label":`Model: ${F.adapterInfo.model}`,children:[x.jsx("span",{children:"Model"}),x.jsx("span",{className:"block truncate text-gray-800 normal-case dark:text-[#ececf1]",children:F.adapterInfo.model})]}),x.jsxs("div",{className:"inline-flex max-w-full flex-shrink items-center gap-2 rounded-md border border-gray-200 bg-gray-100 px-2.5 py-1 text-xs font-semibold uppercase tracking-wider text-gray-600 dark:border-[#4a4b54] dark:bg-[#343541] dark:text-[#bfc2cd] min-w-0",title:(F==null?void 0:F.adapterName)||((ee=F==null?void 0:F.adapterInfo)==null?void 0:ee.adapter_name)||"Configured Agent","aria-label":`Agent: ${(F==null?void 0:F.adapterName)||((se=F==null?void 0:F.adapterInfo)==null?void 0:se.adapter_name)||"Configured Agent"}`,children:[x.jsx("span",{children:"Agent"}),x.jsx("span",{className:"block truncate text-gray-800 normal-case dark:text-[#ececf1]",children:(F==null?void 0:F.adapterName)||((me=F==null?void 0:F.adapterInfo)==null?void 0:me.adapter_name)||"Configured Agent"})]})]}),x.jsxs("div",{className:"space-y-1",children:[x.jsx("h1",{className:"text-2xl font-semibold text-[#353740] dark:text-[#ececf1]",children:(F==null?void 0:F.title)||"New Chat"}),F&&x.jsxs("div",{className:"flex items-center gap-2 text-sm text-gray-500 dark:text-[#bfc2cd]",children:[x.jsx("span",{className:"font-medium",children:F.messages.length}),x.jsxs("span",{children:["Updated ",F.updatedAt.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})]})]})]})]})}),x.jsxs("div",{className:"flex flex-col items-stretch gap-3 sm:flex-row sm:items-center sm:justify-end sm:gap-4",children:[!G&&x.jsx(f4,{className:"order-1 sm:order-2 sm:min-w-[220px]"}),!G&&x.jsxs("button",{onClick:ln,disabled:!$,className:`order-2 sm:order-1 inline-flex items-center justify-center gap-2 rounded-full border px-3.5 py-2.5 text-sm font-semibold uppercase tracking-wide transition-all ${$?"border-[#343541] text-[#1f1f21] bg-white/80 shadow-[0_2px_8px_rgba(15,23,42,0.06)] hover:-translate-y-0.5 hover:bg-white hover:shadow-[0_8px_20px_rgba(15,23,42,0.12)] dark:border-[#565869] dark:text-[#ececf1] dark:bg-[#2c2f36] dark:hover:bg-[#353947]":"cursor-not-allowed border-gray-200 text-gray-400 bg-white/40 dark:border-[#3c3f4a] dark:text-[#6b6f7a] dark:bg-transparent"}`,title:le,children:[x.jsx(uBe,{className:"h-3.5 w-3.5"}),"New Conversation"]})]})]})]}),N?x.jsx("div",{className:`flex flex-1 flex-col min-h-0 pt-4 md:pt-6 ${G?"overflow-hidden":""}`,children:x.jsxs("div",{className:`flex-1 flex flex-col justify-between md:justify-start ${G?"min-h-0 overflow-hidden":"md:flex-none"}`,children:[x.jsxs("div",{className:`w-full ${G?"flex flex-col min-h-0 overflow-hidden flex-1":"space-y-6"}`,children:[de&&!W&&we&&x.jsxs("div",{className:`${Ae}`,children:[x.jsx("h2",{className:"text-2xl font-semibold text-[#11111b] dark:text-white",children:we}),we===k&&H&&G&&x.jsx("div",{className:"mt-2",children:x.jsx(Zu,{content:J,className:y,syntaxTheme:f})})]}),G?x.jsxs("div",{className:"flex flex-col min-h-0 overflow-hidden flex-1 gap-6",children:[x.jsxs("div",{className:`${Ae} flex-shrink-0 flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between`,children:[x.jsxs("div",{className:"flex-1",children:[x.jsx("h2",{className:"text-2xl font-semibold text-[#11111b] dark:text-white",children:k}),H&&x.jsx("div",{className:"mt-2",children:x.jsx(Zu,{content:J,className:y,syntaxTheme:f})})]}),x.jsx(f4,{className:"sm:min-w-[220px]"})]}),x.jsx(gAt,{onAdapterSelect:Pr,className:`${Ae} flex-1 min-h-0 overflow-hidden`})]}):W?x.jsxs("div",{className:`${Ae} rounded-3xl border border-gray-300 bg-white/95 p-6 shadow-sm dark:border-[#565869] dark:bg-[#1c1d23]/90`,children:[x.jsxs("div",{className:"flex items-center justify-between gap-3 mb-4",children:[x.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:(F==null?void 0:F.adapterName)||((Pe=F==null?void 0:F.adapterInfo)==null?void 0:Pe.adapter_name)||"Configured Agent"}),x.jsx("button",{type:"button",onClick:()=>{d(),Cu(null),T(!0)},className:"text-sm font-semibold text-blue-600 hover:text-blue-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 dark:text-blue-300 dark:hover:text-blue-200",children:"Change Agent"})]}),x.jsx("div",{className:"rounded-2xl border border-gray-300 bg-white/70 px-4 pb-4 pt-3 dark:border-[#565869] dark:bg-[#232430]/80",children:(st=F==null?void 0:F.adapterInfo)!=null&&st.notes?x.jsx(Zu,{content:F.adapterInfo.notes,className:E,syntaxTheme:f}):Q?x.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:Q}):C?x.jsx("p",{className:"text-sm text-gray-600 dark:text-[#bfc2cd]",children:"Configuring your agent… hang tight for just a moment."}):x.jsx("p",{className:"text-sm text-gray-600 dark:text-[#bfc2cd]",children:"Fetching agent overview… this only takes a moment."})})]}):x.jsx("div",{className:`${Ae} mb-2`,children:(Rt=F==null?void 0:F.adapterInfo)!=null&&Rt.notes?x.jsx("div",{className:"text-base text-gray-600 dark:text-[#bfc2cd] leading-relaxed",children:x.jsx(Zu,{content:F.adapterInfo.notes,className:E,syntaxTheme:f})}):x.jsx("h2",{className:"text-xl md:text-2xl font-medium text-[#353740] dark:text-[#ececf1]",children:"How can I assist you today?"})})]}),!G&&x.jsx("div",{className:m4,children:x.jsx("div",{className:z,children:x.jsx(p4,{onSend:vn,disabled:o||!F||!(F!=null&&F.adapterName)||ce,placeholder:S})})})]})}):x.jsxs("div",{className:"flex flex-1 flex-col",children:[x.jsx(Nrt,{messages:F.messages,onRegenerate:s,onStartThread:async(Me,Z)=>{try{await g(Me,Z)}catch{}},onSendThreadMessage:Jt,sessionId:F.sessionId,isLoading:o}),x.jsx("div",{className:m4,children:x.jsx("div",{className:"w-full",children:x.jsx(p4,{onSend:vn,disabled:o||!F||!F.adapterName||L||ce,placeholder:"Ask another question..."})})})]})]})})})}const yAt=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed",'[contenteditable="true"]','[tabindex]:not([tabindex="-1"])'].join(",");function Im(e,{enabled:t,onEscape:n}){m.useEffect(()=>{if(!t||!e.current)return;const r=e.current,A=document.activeElement,i=Array.from(r.querySelectorAll(yAt)).filter(l=>!l.hasAttribute("disabled")&&l.tabIndex!==-1),a=i[0]||r,s=i[i.length-1]||r;a.focus({preventScroll:!0});const o=l=>{if(l.key==="Escape"){n==null||n();return}if(l.key!=="Tab")return;if(i.length===0){l.preventDefault(),r.focus({preventScroll:!0});return}const c=document.activeElement;if(l.shiftKey){(!c||c===a||!r.contains(c))&&(l.preventDefault(),s.focus({preventScroll:!0}));return}(!c||c===s||!r.contains(c))&&(l.preventDefault(),a.focus({preventScroll:!0}))};return document.addEventListener("keydown",o),()=>{var l;document.removeEventListener("keydown",o),(l=A==null?void 0:A.focus)==null||l.call(A,{preventScroll:!0})}},[t,n,e])}function y4({isOpen:e,onClose:t,onConfirm:n,title:r,message:A,confirmText:i="Confirm",cancelText:a="Cancel",type:s="danger",isLoading:o=!1}){const l=m.useRef(null);if(Im(l,{enabled:e,onEscape:t}),!e)return null;const c=()=>{o||n()},g=(()=>{switch(s){case"danger":return{icon:"text-red-500",iconBg:"bg-red-100 dark:bg-red-900/20",confirmButton:"bg-red-600 hover:bg-red-700 focus:ring-red-500",border:"border-red-200 dark:border-red-800"};case"warning":return{icon:"text-amber-500",iconBg:"bg-amber-100 dark:bg-amber-900/20",confirmButton:"bg-amber-600 hover:bg-amber-700 focus:ring-amber-500",border:"border-amber-200 dark:border-amber-800"};default:return{icon:"text-blue-500",iconBg:"bg-blue-100 dark:bg-blue-900/20",confirmButton:"bg-blue-600 hover:bg-blue-700 focus:ring-blue-500",border:"border-blue-200 dark:border-blue-800"}}})();return x.jsx("div",{className:"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4 z-50 animate-fadeIn",children:x.jsxs("div",{ref:l,role:"dialog","aria-modal":"true","aria-labelledby":"confirm-title",tabIndex:-1,className:"bg-white dark:bg-gray-800 rounded-2xl shadow-2xl w-full max-w-md transform animate-fadeIn",children:[x.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700",children:[x.jsxs("div",{className:"flex items-center gap-3",children:[x.jsx("div",{className:`w-10 h-10 rounded-full ${g.iconBg} flex items-center justify-center`,children:x.jsx(u2,{className:`w-5 h-5 ${g.icon}`})}),x.jsx("h2",{id:"confirm-title",className:"text-lg font-semibold text-gray-900 dark:text-gray-100",children:r})]}),x.jsx("button",{onClick:t,className:"p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors","aria-label":"Close",children:x.jsx(ag,{className:"w-5 h-5 text-gray-500 dark:text-gray-400"})})]}),x.jsx("div",{className:"p-6",children:x.jsx("p",{className:"text-gray-600 dark:text-gray-300 leading-relaxed",children:A})}),x.jsxs("div",{className:"flex items-center justify-end gap-3 p-6 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 rounded-b-2xl",children:[x.jsx("button",{onClick:t,disabled:o,className:"px-4 py-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 rounded-lg transition-colors font-medium disabled:opacity-50 disabled:cursor-not-allowed",children:a}),x.jsx("button",{onClick:c,disabled:o,className:`px-4 py-2.5 text-white rounded-lg transition-all font-medium shadow-sm hover:shadow-md transform hover:scale-105 active:scale-95 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-gray-800 disabled:opacity-50 disabled:cursor-not-allowed disabled:transform-none ${g.confirmButton}`,children:o?x.jsxs("div",{className:"flex items-center gap-2",children:[x.jsx("div",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Clearing..."]}):i})]})]})})}function IAt({selectedAdapter:e,onAdapterChange:t,disabled:n,showDescriptions:r=!1,variant:A="sidebar",label:i,showLabel:a}){const[s,o]=m.useState([]),[l,c]=m.useState(!0),[u,g]=m.useState(null),[d,B]=m.useState(!1);m.useEffect(()=>{let D=!0;async function F(){try{c(!0),g(null);const N=await az();D&&o(N)}catch{D&&g("Failed to load adapters. Please check your connection.")}finally{D&&c(!1)}}return F(),()=>{D=!1}},[]);const h=s.find(D=>D.name===e),w=typeof a=="boolean"?a:A==="prominent",p=i||(A==="prominent"?"Select an agent":"Adapter"),f=m.useMemo(()=>A==="prominent"?"relative w-full text-left":"relative w-full",[A]),E=m.useMemo(()=>{const D="w-full rounded-md border bg-white px-4 py-3 text-left text-sm text-[#353740] focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 dark:bg-[#343541] dark:text-[#ececf1]";return A==="prominent"?[D,"border-gray-300 shadow-sm transition-all duration-200 focus-visible:ring-blue-500 dark:border-[#4a4b54] dark:focus-visible:ring-blue-400"].join(" "):["w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-left text-sm text-[#353740] focus:border-gray-400 focus:outline-none dark:border-[#4a4b54] dark:bg-[#343541] dark:text-[#ececf1] dark:focus:border-[#6b6f7a]"].join(" ")},[A]),y=m.useMemo(()=>A==="prominent"?"absolute z-20 mt-2 w-full rounded-xl border border-gray-200 bg-white shadow-xl ring-1 ring-black/5 dark:border-[#4a4b54] dark:bg-[#1f2027]":"absolute z-20 mt-1 w-full rounded-md border border-gray-200 bg-white shadow-lg ring-1 ring-black/5 dark:border-[#4a4b54] dark:bg-[#1f2027]",[A]),Q=w?`mb-2 block text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-[#bfc2cd] ${A==="prominent"?"!text-sm !font-semibold !text-gray-700 dark:!text-white":""}`:"sr-only";return x.jsxs("div",{className:f,children:[x.jsx("label",{className:Q,children:p}),x.jsxs("div",{className:"relative",children:[x.jsx("button",{type:"button",onClick:()=>!n&&B(!d),disabled:n||l||s.length===0,className:`${E} disabled:opacity-50 disabled:cursor-not-allowed`,"aria-label":p,children:x.jsxs("div",{className:"flex items-center justify-between gap-2",children:[x.jsxs("div",{className:"flex flex-col min-w-0",children:[x.jsx("span",{className:`truncate font-medium ${h?"text-[#11121a] dark:text-white":"text-gray-500 dark:text-gray-400"}`,children:l?"Loading agents…":u?"Error loading agents":h?h.name:s.length===0?"No agents available":"Select an agent"}),A==="prominent"&&(h==null?void 0:h.description)&&x.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:h.description})]}),x.jsx(NZ,{className:`h-4 w-4 flex-shrink-0 transition-transform text-gray-400 dark:text-gray-300 ${d?"rotate-180":""}`})]})}),d&&!n&&s.length>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:"fixed inset-0 z-10",onClick:()=>B(!1)}),x.jsx("div",{className:y,children:x.jsx("div",{className:"max-h-72 overflow-auto py-2",children:s.map(D=>{const F=D.name===e;return x.jsx("button",{type:"button",onClick:()=>{F||t(D.name),B(!1)},className:`w-full px-4 py-3 text-left text-sm transition-colors ${F?"bg-blue-50 text-blue-700 dark:bg-blue-900/30 dark:text-blue-200":"text-[#353740] hover:bg-gray-50 dark:text-[#ececf1] dark:hover:bg-[#2a2d35]"}`,children:x.jsxs("div",{className:"flex flex-col gap-1",children:[x.jsx("span",{className:"font-medium truncate",children:D.name}),r&&D.description&&x.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",style:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:D.description})]})},D.name)})})})]})]}),u&&x.jsx("p",{className:"mt-1 text-xs text-red-600 dark:text-red-400",children:u})]})}const CAt="2.14.0",QAt={version:CAt},Gce=QAt.version;function vce(){return{appVersion:Gce}}const wf=100,MAt={small:{cardText:"text-xs",cardPadding:"px-2.5 py-2",cardGap:"gap-0",titleText:"text-sm",metaText:"text-[10px]",metaGap:"gap-1",badgePadding:"px-1.5 py-0.5",badgeText:"text-[10px]",badgeIcon:"h-3 w-3",actionButton:"p-1.5",actionIcon:"h-3.5 w-3.5"},medium:{cardText:"text-sm",cardPadding:"px-3 py-3",cardGap:"gap-0",titleText:"text-sm",metaText:"text-[11px]",metaGap:"gap-1.5",badgePadding:"px-2 py-0.5",badgeText:"text-[11px]",badgeIcon:"h-3.5 w-3.5",actionButton:"p-2",actionIcon:"h-4 w-4"},large:{cardText:"text-base",cardPadding:"px-4 py-4",cardGap:"gap-0",titleText:"text-base",metaText:"text-sm",metaGap:"gap-2",badgePadding:"px-2.5 py-1",badgeText:"text-sm",badgeIcon:"h-4 w-4",actionButton:"p-2",actionIcon:"h-4 w-4"}};function I4({onRequestClose:e,onOpenSettings:t}){const{conversations:n,currentConversationId:r,selectConversation:A,deleteConversation:i,deleteAllConversations:a,updateConversationTitle:s,getConversationCount:o,configureApiSettings:l,clearError:c}=Nt(),u=n.find(oe=>oe.id===r),[g,d]=m.useState(""),[B,h]=m.useState(null),[w,p]=m.useState(""),[f,E]=m.useState({isOpen:!1,conversationId:"",conversationTitle:"",isDeleting:!1}),[y,C]=m.useState({isOpen:!1,isDeleting:!1}),[I,Q]=m.useState(!1),[D,F]=m.useState(null),[N,S]=m.useState(!1),[k,J]=m.useState(null),H=m.useRef(null),v=!u||u.messages.length===0,{theme:R}=Jm(),L=MAt[R.fontSize??"medium"];m.useEffect(()=>{u!=null&&u.adapterName?F(u.adapterName):F(null)},[u==null?void 0:u.adapterName]),m.useEffect(()=>{J(null)},[r]);const T=n.filter(oe=>oe.messages.length>0&&!oe.adapterLoadError),K=T.filter(oe=>oe.title.toLowerCase().includes(g.toLowerCase())||oe.messages.some(Le=>Le.content.toLowerCase().includes(g.toLowerCase()))),G=T.length>0?K:[],W=o(),Ae=W===1?"conversation":"conversations",z=async oe=>{if(!(!v||!oe)){F(oe),J(null),S(!0);try{const Le=(u==null?void 0:u.apiUrl)||Zn();await l(Le,void 0,oe),c(),Q(!1)}catch(Le){const et=Le instanceof Error?Le.message:"Failed to configure adapter";J(et)}finally{S(!1)}}},$=async oe=>{try{await A(oe),e==null||e()}catch{}},le=(oe,Le)=>{oe.stopPropagation(),E({isOpen:!0,conversationId:Le.id,conversationTitle:Le.title,isDeleting:!1})},ge=async()=>{E(oe=>({...oe,isDeleting:!0}));try{await i(f.conversationId),E({isOpen:!1,conversationId:"",conversationTitle:"",isDeleting:!1})}catch{E({isOpen:!1,conversationId:"",conversationTitle:"",isDeleting:!1})}},de=()=>{E({isOpen:!1,conversationId:"",conversationTitle:"",isDeleting:!1})},we=(oe,Le)=>{oe.stopPropagation(),h(Le.id),p(Le.title.slice(0,wf))},_=oe=>{const Le=w.slice(0,wf).trim();Le&&s(oe,Le),h(null),p("")},ue=()=>{h(null),p("")},ce=()=>{C({isOpen:!0,isDeleting:!1})},ae=async()=>{C(oe=>({...oe,isDeleting:!0}));try{await a(),C({isOpen:!1,isDeleting:!1})}catch{C({isOpen:!1,isDeleting:!1})}},he=()=>{C({isOpen:!1,isDeleting:!1})},xe=oe=>{const Le=oe.toLocaleDateString([],{year:"numeric",month:"short",day:"numeric"}),et=oe.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return`${Le} · ${et}`},Ce=oe=>{var Le;return oe.adapterName&&oe.adapterName.trim().length>0?oe.adapterName:(Le=oe.adapterInfo)!=null&&Le.adapter_name&&oe.adapterInfo.adapter_name.trim().length>0?oe.adapterInfo.adapter_name:null};return Im(H,{enabled:I,onEscape:()=>Q(!1)}),x.jsxs(x.Fragment,{children:[I&&x.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4",children:x.jsxs("div",{ref:H,role:"dialog","aria-modal":"true","aria-labelledby":"select-agent-title",tabIndex:-1,className:"w-full max-w-md rounded-lg border border-gray-200 bg-white p-6 shadow-lg dark:border-[#444654] dark:bg-[#202123]",children:[x.jsx("h2",{id:"select-agent-title",className:"mb-4 text-lg font-medium text-[#353740] dark:text-[#ececf1]",children:"Select an Agent"}),x.jsxs("div",{className:"space-y-5",children:[x.jsx(IAt,{selectedAdapter:D||(u==null?void 0:u.adapterName)||null,onAdapterChange:z,disabled:N,variant:"prominent",showDescriptions:!0,showLabel:!1}),k&&x.jsx("div",{className:"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-600/40 dark:bg-red-900/30 dark:text-red-200",children:k}),x.jsx("div",{className:"flex justify-end gap-3 pt-2",children:x.jsx("button",{type:"button",onClick:()=>{J(null),Q(!1)},className:"rounded-md border border-transparent px-4 py-2 text-sm text-gray-600 hover:border-gray-300 hover:text-gray-900 disabled:cursor-not-allowed disabled:opacity-50 dark:text-[#d1d5db] dark:hover:text-white",disabled:N,children:"Cancel"})})]})]})}),x.jsxs("div",{className:"flex h-full w-full md:w-72 flex-col border-r border-b border-gray-200 bg-gradient-to-b from-white via-gray-50 to-gray-100 dark:border-[#4a4b54] dark:bg-[#202123] dark:bg-none",children:[x.jsxs("div",{className:"bg-white/95 p-4 shadow-sm dark:border-[#4a4b54] dark:bg-[#202123] dark:shadow-none",children:[x.jsxs("div",{className:"space-y-3 pb-3",children:[x.jsxs("div",{className:"flex items-center justify-between text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-[#bfc2cd]",children:[x.jsx("span",{children:"Version"}),x.jsxs("span",{className:"text-gray-900 dark:text-white",children:["v",Gce]})]}),x.jsxs("button",{onClick:t,disabled:!t,className:"flex w-full items-center justify-center gap-2 rounded-md border border-gray-300 px-3 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50 hover:border-gray-400 disabled:cursor-not-allowed disabled:opacity-50 dark:border-[#4a4b54] dark:text-[#ececf1] dark:hover:bg-[#3c3f4a] dark:hover:border-[#6b6f7a] dark:disabled:hover:bg-transparent dark:disabled:hover:border-[#4a4b54]",children:[x.jsx(SZ,{className:"h-4 w-4"}),"Settings"]}),n.length>0&&n.some(oe=>oe.messages.length>0)&&x.jsxs("button",{onClick:ce,className:"flex w-full items-center justify-center gap-2 rounded-md border border-red-300 px-3 py-2 text-sm font-medium text-red-600 hover:bg-red-50 hover:border-red-400 dark:border-red-600/40 dark:text-red-400 dark:hover:bg-red-900/20 dark:hover:border-red-500/60 transition-colors",title:"Delete all conversations",children:[x.jsx(wBe,{className:"h-4 w-4"}),"Delete Conversations"]})]}),x.jsx("div",{className:"mt-4 space-y-3",children:k&&!I&&x.jsx("p",{className:"text-xs text-red-600 dark:text-red-400",children:k})}),x.jsx("div",{className:"border-t border-gray-200 pt-4 mt-4 dark:border-[#4a4b54]",children:x.jsxs("div",{className:"relative flex items-center",children:[x.jsx(DZ,{className:"pointer-events-none absolute left-3 h-4 w-4 text-gray-400"}),x.jsx("input",{type:"text","aria-label":"Search conversations",placeholder:"Search Conversations",value:g,onChange:oe=>d(oe.target.value),className:"w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm text-[#353740] placeholder-gray-400 shadow-inner focus:border-gray-400 focus:outline-none dark:border-[#4a4b54] dark:bg-[#343541] dark:text-[#ececf1] dark:shadow-none"})]})})]}),x.jsx("div",{className:"flex-1 overflow-y-auto px-3 py-3 dark:bg-[#202123] dark:bg-none",children:G.length===0?x.jsxs("div",{className:"rounded-xl border border-dashed border-gray-300 bg-white/90 p-6 text-center text-sm text-gray-500 shadow-sm dark:border-[#4a4b54] dark:bg-[#252830] dark:text-[#bfc2cd] dark:shadow-none",children:[x.jsx(Uw,{className:"mx-auto mb-3 h-6 w-6 text-gray-400 dark:text-[#6b6f7a]"}),x.jsx("p",{children:g?"No conversations found":"No conversations yet"})]}):x.jsx("div",{className:"space-y-2",children:G.map(oe=>{const Le=Ce(oe);return x.jsx("div",{role:"button",tabIndex:0,onKeyDown:et=>{(et.key==="Enter"||et.key===" ")&&(et.preventDefault(),$(oe.id))},onClick:()=>$(oe.id),className:`group flex w-full cursor-pointer items-start rounded-xl border text-left transition shadow-sm ${L.cardGap} ${L.cardPadding} ${L.cardText} dark:shadow-none ${r===oe.id?"border-[#343541] bg-white dark:border-[#6b6f7a] dark:bg-[#2c2f36]":"border-gray-100 bg-white hover:border-gray-300 hover:bg-gray-50 dark:border-transparent dark:bg-[#252830] dark:hover:border-[#4a4b54] dark:hover:bg-[#2f323c]"} focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/70 dark:focus-visible:ring-blue-400/70`,"aria-current":r===oe.id?"true":void 0,"aria-label":`Open conversation: ${oe.title}`,children:B===oe.id?x.jsx("input",{type:"text",value:w,onChange:et=>p(et.target.value.slice(0,wf)),onKeyDown:et=>{et.key==="Enter"&&_(oe.id),et.key==="Escape"&&ue()},onBlur:()=>_(oe.id),maxLength:wf,className:`flex-1 border-none bg-transparent text-[#353740] focus:outline-none dark:text-[#ececf1] ${L.titleText}`,autoFocus:!0}):x.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[x.jsxs("div",{className:`flex items-center gap-2 ${L.cardText}`,children:[x.jsx("h3",{className:`flex-1 truncate font-semibold ${L.titleText} ${r===oe.id?"text-[#1f2937] dark:text-white":"text-gray-700 dark:text-[#d4d7e2]"}`,children:oe.title}),x.jsxs("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100",children:[x.jsx("button",{onClick:et=>we(et,oe),className:`rounded-full text-gray-500 hover:bg-gray-200 hover:text-[#353740] dark:text-[#bfc2cd] dark:hover:bg-[#3c3f4a] ${L.actionButton}`,title:"Rename conversation","aria-label":`Rename conversation: ${oe.title}`,children:x.jsx(lBe,{className:L.actionIcon})}),x.jsx("button",{onClick:et=>le(et,oe),className:`rounded-full text-red-500 hover:bg-red-50 dark:text-red-300 dark:hover:bg-red-900/30 ${L.actionButton}`,title:"Delete conversation","aria-label":`Delete conversation: ${oe.title}`,children:x.jsx(UZ,{className:L.actionIcon})})]})]}),x.jsxs("div",{className:`mt-1 flex items-center overflow-hidden pr-1 text-gray-500 dark:text-[#a6acc5] ${L.metaGap} ${L.metaText}`,children:[x.jsx("span",{className:"min-w-0 flex-1 truncate leading-none",children:xe(oe.updatedAt)}),x.jsxs("span",{className:`inline-flex shrink-0 items-center gap-1 rounded-full bg-white/80 font-medium text-gray-600 shadow-sm dark:bg-white/10 dark:text-[#e5e7f4] leading-none ${L.badgePadding} ${L.badgeText}`,children:[x.jsx(Uw,{className:L.badgeIcon}),oe.messages.length]}),oe.attachedFiles&&oe.attachedFiles.length>0&&x.jsxs("span",{className:`inline-flex shrink-0 items-center gap-1 rounded-full bg-white/80 font-medium text-gray-600 shadow-sm dark:bg-white/10 dark:text-[#e5e7f4] leading-none ${L.badgePadding} ${L.badgeText}`,children:[x.jsx(xZ,{className:L.badgeIcon}),oe.attachedFiles.length]})]}),Le&&x.jsxs("div",{className:"flex items-center gap-2 text-[11px] uppercase tracking-wide text-gray-500 dark:text-[#a6acc5]",children:[x.jsx("span",{className:"inline-flex items-center rounded-full bg-blue-50 px-2 py-0.5 text-[10px] font-semibold text-blue-700 dark:bg-blue-900/30 dark:text-blue-200",children:"Agent"}),x.jsx("span",{className:"min-w-0 flex-1 truncate text-gray-600 dark:text-[#d4d7e2]",children:Le})]})]})},oe.id)})})})]}),x.jsx(y4,{isOpen:f.isOpen,onClose:de,onConfirm:ge,title:"Delete Conversation",message:`Are you sure you want to delete "${f.conversationTitle}"? This will clear the conversation history.`,confirmText:"Delete",cancelText:"Cancel",type:"danger",isLoading:f.isDeleting}),x.jsx(y4,{isOpen:y.isOpen,onClose:he,onConfirm:ae,title:"Clear All Conversations",message:`Are you sure you want to delete all ${W} ${Ae}? This will clear all conversation history.`,confirmText:"Clear All",cancelText:"Cancel",type:"danger",isLoading:y.isDeleting})]})}function FAt({isOpen:e,onClose:t}){const{theme:n,updateTheme:r}=Jm(),{settings:A,updateSettings:i}=Om(),[a]=m.useState(()=>vce()),[s,o]=m.useState(!1),[l,c]=m.useState(""),[u,g]=m.useState(!1),d=m.useRef(null),B=m.useRef(null),h=Q=>{r({mode:Q})},w=Q=>{r({fontSize:Q})},p=()=>{r({highContrast:!n.highContrast})},f=()=>{i({soundEnabled:!A.soundEnabled})},E=()=>{c(""),g(!1),o(!0)},y=()=>{o(!1),c(""),g(!1)},C=()=>{y(),localStorage.clear(),window.location.reload()},I=u&&l.trim().toLowerCase()==="reset";return Im(d,{enabled:e&&!s,onEscape:t}),Im(B,{enabled:s,onEscape:y}),e?x.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center p-4 z-50",children:x.jsxs("div",{ref:d,role:"dialog","aria-modal":"true","aria-labelledby":"settings-title",tabIndex:-1,className:"bg-white dark:bg-gray-800 rounded-2xl shadow-2xl w-full max-w-md max-h-[90vh] flex flex-col overflow-hidden relative",children:[x.jsxs("div",{className:"flex-shrink-0 flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-600",children:[x.jsx("h2",{id:"settings-title",className:"text-xl font-semibold text-gray-900 dark:text-gray-100",children:"Settings"}),x.jsx("button",{onClick:t,className:"p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors","aria-label":"Close settings",children:x.jsx(ag,{className:"w-5 h-5 text-gray-500 dark:text-gray-400"})})]}),x.jsxs("div",{className:"flex-1 min-h-0 p-6 space-y-6 overflow-y-auto",children:[x.jsxs("div",{className:"space-y-4",children:[x.jsxs("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100 flex items-center gap-2",children:[x.jsx(sBe,{className:"w-5 h-5"}),"Appearance"]}),x.jsxs("div",{className:"space-y-2",children:[x.jsx("label",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Theme"}),x.jsx("div",{className:"grid grid-cols-3 gap-2",children:[{value:"light",label:"Light",icon:hBe},{value:"dark",label:"Dark",icon:iBe},{value:"system",label:"System",icon:ABe}].map(({value:Q,label:D,icon:F})=>x.jsxs("button",{onClick:()=>h(Q),className:`flex flex-col items-center gap-2 p-3 rounded-lg border-2 transition-all duration-200 ${n.mode===Q?"border-blue-500 bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-300":"border-gray-200 dark:border-gray-600 hover:border-gray-300 dark:hover:border-gray-500 text-gray-700 dark:text-gray-300"}`,children:[x.jsx(F,{className:"w-5 h-5"}),x.jsx("span",{className:"text-sm font-medium",children:D})]},Q))})]}),x.jsxs("div",{className:"flex items-center justify-between",children:[x.jsxs("div",{children:[x.jsx("label",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"High Contrast"}),x.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:"Improve readability with enhanced contrast"})]}),x.jsx("button",{onClick:p,role:"switch","aria-checked":n.highContrast,"aria-label":"Toggle high contrast mode",className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${n.highContrast?"bg-blue-600":"bg-gray-200 dark:bg-gray-600"}`,children:x.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${n.highContrast?"translate-x-6":"translate-x-1"}`})})]}),x.jsxs("div",{className:"space-y-2",children:[x.jsxs("label",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 flex items-center gap-2",children:[x.jsx(EBe,{className:"w-4 h-4"}),"Font Size"]}),x.jsx("div",{className:"grid grid-cols-3 gap-2",children:[{value:"small",label:"Small"},{value:"medium",label:"Medium"},{value:"large",label:"Large"}].map(({value:Q,label:D})=>x.jsx("button",{onClick:()=>w(Q),className:`p-2 rounded-lg border-2 transition-colors text-center ${n.fontSize===Q?"border-blue-500 bg-blue-50 dark:bg-blue-900/20":"border-gray-200 dark:border-gray-600 hover:border-gray-300 dark:hover:border-gray-500"}`,children:x.jsx("span",{className:`font-medium ${Q==="small"?"text-sm":Q==="large"?"text-lg":"text-base"}`,children:D})},Q))})]})]}),x.jsxs("div",{className:"space-y-4",children:[x.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:"Chat Preferences"}),x.jsxs("div",{className:"flex items-center justify-between",children:[x.jsxs("div",{className:"flex items-center gap-2",children:[x.jsx(kw,{className:"w-4 h-4 text-gray-600 dark:text-gray-400"}),x.jsxs("div",{children:[x.jsx("label",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Sound Effects"}),x.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:"Play sounds for notifications and events"})]})]}),x.jsx("button",{onClick:f,role:"switch","aria-checked":A.soundEnabled,"aria-label":"Toggle sound effects",className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${A.soundEnabled?"bg-blue-600":"bg-gray-200 dark:bg-gray-600"}`,children:x.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${A.soundEnabled?"translate-x-6":"translate-x-1"}`})})]})]}),x.jsxs("div",{className:"space-y-4 pt-4 border-t border-gray-200 dark:border-gray-600",children:[x.jsxs("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100 flex items-center gap-2",children:[x.jsx(UZ,{className:"w-5 h-5"}),"Data Management"]}),x.jsxs("div",{className:"space-y-3",children:[x.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:"Clear all application data including conversations, and personalized settings."}),x.jsx("button",{onClick:E,className:"w-full px-4 py-2 text-sm font-medium text-red-600 dark:text-red-400 border border-red-300 dark:border-red-700 rounded-lg hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors",children:"Reset Application"})]})]}),x.jsxs("div",{className:"space-y-2 pt-4 border-t border-gray-200 dark:border-gray-600",children:[x.jsxs("h3",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 flex items-center gap-2",children:[x.jsx(aBe,{className:"w-4 h-4"}),"About"]}),x.jsx("div",{className:"space-y-1",children:x.jsxs("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:[yrt()," v",(a==null?void 0:a.appVersion)||"1.0.0"]})})]})]}),s&&x.jsx("div",{className:"absolute inset-0 bg-black/70 flex items-center justify-center p-4 z-50",children:x.jsxs("div",{ref:B,role:"dialog","aria-modal":"true","aria-labelledby":"reset-dialog-title",tabIndex:-1,className:"w-full max-w-sm rounded-2xl bg-white dark:bg-gray-900 border border-red-100 dark:border-red-800 shadow-2xl p-6 space-y-4",children:[x.jsxs("div",{className:"flex items-start gap-3",children:[x.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/40",children:x.jsx(u2,{className:"w-5 h-5 text-red-600 dark:text-red-400"})}),x.jsxs("div",{children:[x.jsx("p",{id:"reset-dialog-title",className:"text-base font-semibold text-gray-900 dark:text-gray-100",children:"Reset application data?"}),x.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:["This removes everything stored on this device. Type ",x.jsx("span",{className:"font-semibold text-gray-900 dark:text-gray-100",children:"RESET"})," to continue."]})]})]}),x.jsxs("div",{className:"space-y-2",children:[x.jsx("label",{className:"text-xs font-medium text-gray-700 dark:text-gray-300",children:"Confirmation text"}),x.jsx("input",{value:l,onChange:Q=>c(Q.target.value.toUpperCase()),placeholder:"RESET",className:"w-full rounded-lg border border-gray-300 dark:border-gray-600 bg-transparent px-3 py-2 text-sm uppercase tracking-widest focus:outline-none focus:ring-2 focus:ring-red-400 dark:text-gray-100"})]}),x.jsxs("label",{className:"flex items-start gap-2 text-xs text-gray-600 dark:text-gray-400",children:[x.jsx("input",{type:"checkbox",checked:u,onChange:Q=>g(Q.target.checked),className:"mt-0.5 h-4 w-4 rounded border-gray-300 dark:border-gray-500 text-red-600 focus:ring-red-500"}),x.jsx("span",{children:"I understand this action is permanent and will reload the app."})]}),x.jsxs("div",{className:"flex gap-2 pt-2",children:[x.jsx("button",{onClick:y,className:"flex-1 px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors",children:"Cancel"}),x.jsx("button",{onClick:C,disabled:!I,className:`flex-1 px-4 py-2 text-sm font-semibold rounded-lg transition-colors ${I?"bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600":"bg-red-200 text-red-600/60 dark:bg-red-900/20 dark:text-red-400/60 cursor-not-allowed"}`,children:"Reset"})]})]})})]})}):null}function YAt({message:e}){return x.jsx("div",{className:"min-h-screen bg-slate-950 text-white flex items-center justify-center px-4 py-12",children:x.jsxs("div",{className:"max-w-lg w-full text-center space-y-6",children:[x.jsx("div",{className:"flex justify-center",children:x.jsx("div",{className:"bg-white/10 rounded-full p-4",children:x.jsx(u2,{className:"h-10 w-10 text-amber-300","aria-hidden":"true"})})}),x.jsx("div",{className:"space-y-2",children:x.jsx("p",{className:"text-2xl font-semibold tracking-tight",children:"Temporarily Unavailable"})}),x.jsx("p",{className:"text-sm text-white/60",children:e})]})})}function bAt(){const[e,t]=m.useState(!1),[n,r]=m.useState(!1),A=mrt();return A?x.jsx(Rj,{children:x.jsx(YAt,{message:A})}):x.jsx(Rj,{children:x.jsx(Hde,{children:x.jsxs("div",{className:"min-h-screen flex flex-col md:flex-row bg-white dark:bg-[#212121] text-slate-900 dark:text-slate-100",children:[x.jsx("div",{className:"hidden md:flex md:min-h-screen",children:x.jsx(I4,{onOpenSettings:()=>t(!0)})}),x.jsx("div",{className:"flex-1 flex justify-center w-full",children:x.jsx(mAt,{onOpenSettings:()=>t(!0),onOpenSidebar:()=>r(!0)})}),x.jsx(FAt,{isOpen:e,onClose:()=>t(!1)}),n&&x.jsxs("div",{className:"fixed inset-0 z-50 flex md:hidden",children:[x.jsx("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:()=>r(!1),"aria-hidden":"true"}),x.jsxs("div",{className:"relative z-10 h-full w-[min(18rem,85vw)] animate-slideIn",children:[x.jsx(I4,{onRequestClose:()=>r(!1),onOpenSettings:()=>{t(!0),r(!1)}}),x.jsx("button",{onClick:()=>r(!1),className:"absolute -right-3 top-[max(env(safe-area-inset-top),0.75rem)] rounded-full bg-white/95 p-2.5 text-gray-600 shadow-lg active:scale-95 transition-transform dark:bg-[#2d2f39] dark:text-[#ececf1]","aria-label":"Close menu",children:x.jsx(ag,{className:"h-5 w-5"})})]})]})]})})})}document.title=bce();const NAt=vce();Ue(`📱 App Version: v${NAt.appVersion}`);Lde.createRoot(document.getElementById("root")).render(x.jsx(m.StrictMode,{children:x.jsx(bAt,{})}));export{Nxe as $,Z1e as A,kAt as B,Vt as C,KAt as D,JAt as E,pr as F,gie as G,GAt as H,_B as I,xxe as J,yv as K,nze as L,Y as M,JDe as N,i3e as O,tA as P,VTe as Q,qDe as R,Xe as S,$1e as T,PAt as U,no as V,Ive as W,k8 as X,U8 as Y,fee as Z,F$ as _,fe as a,HG as a$,See as a0,RG as a1,wy as a2,cGe as a3,lGe as a4,Sg as a5,oGe as a6,sGe as a7,oE as a8,Y0 as a9,lG as aA,b8 as aB,th as aC,kTe as aD,GTe as aE,nre as aF,Yy as aG,RTe as aH,UTe as aI,FTe as aJ,CE as aK,Are as aL,sTe as aM,dv as aN,eu as aO,tre as aP,uTe as aQ,YTe as aR,Dy as aS,dje as aT,KTe as aU,I0 as aV,jDe as aW,y0 as aX,Oe as aY,tt as aZ,G$ as a_,GG as aa,UG as ab,ec as ac,sE as ad,tee as ae,RA as af,Ake as ag,wG as ah,_$ as ai,M0 as aj,vAt as ak,Xve as al,p8 as am,Sy as an,MG as ao,Cn as ap,JG as aq,Iy as ar,gDe as as,s1e as at,FG as au,OG as av,bg as aw,UAt as ax,zTe as ay,DDe as az,OAt as b,y5 as b0,m5 as b1,Lee as b2,cE as b3,TAt as b4,RAt as b5,kg as b6,Ea as b7,zAt as b8,jAt as b9,mW as bA,S0 as bB,i1e as bC,A1e as bD,QG as bE,Ve as bF,One as bG,wTe as bH,K3e as bI,sU as bJ,Fl as bK,id as bL,qne as bM,IE as bN,hv as bO,v5 as bP,N0 as bQ,Kt as bR,HAt as ba,LAt as bb,SAt as bc,rze as bd,mr as be,Yl as bf,zre as bg,ru as bh,cre as bi,ct as bj,Pa as bk,gv as bl,wje as bm,Pl as bn,Bv as bo,hje as bp,yje as bq,ad as br,gTe as bs,fje as bt,pje as bu,Xne as bv,mE as bw,L5 as bx,x0 as by,Fje as bz,VAt as c,Ut as d,KDe as e,VDe as f,WDe as g,ODe as h,k$ as i,Ti as j,lze as k,ZTe as l,nd as m,gre as n,C3e as o,ZAt as p,XAt as q,sa as r,PDe as s,XDe as t,tze as u,uv as v,S1e as w,WAt as x,Vi as y,e3e as z};
|
|
1010
|
+
]`;try{const t=JSON.parse(e);if(Array.isArray(t)){Ue("Loading adapters from VITE_ADAPTERS environment variable");const n=ok(t);if(n.length>0)return n}}catch{}return null}async function az(){if(Ll)return Ll;try{const t=await fetch("/api/adapters");if(t.ok){const n=await t.json(),r=ok(n.adapters);if(r.length>0)return Ll=r,Ue("Fetched adapters from /api/adapters:",Ll),Ll;Ue("/api/adapters response did not contain valid adapters, trying fallback")}Ue(`/api/adapters returned ${t.status}, trying fallback`)}catch{}const e=cAt();if(e&&e.length>0)return Ll=e,Ll;throw new Error("No adapters available. Configure VITE_ADAPTERS environment variable.")}const uAt="h-[96px]";function gAt({onAdapterSelect:e,className:t="",title:n="",subtitle:r="Each AI agent is tuned for a specific expertise. Pick one to start a focused conversation.",eyebrow:A="Pick an AI Agent"}){const[i,a]=m.useState([]),[s,o]=m.useState(!0),[l,c]=m.useState(null),u=m.useRef(null),[g,d]=m.useState(!1),[B,h]=m.useState(""),w=m.useMemo(()=>{const f=B.trim().toLowerCase();return f?i.filter(E=>{var I;const y=E.name.toLowerCase().includes(f),C=((I=E.description)==null?void 0:I.toLowerCase().includes(f))??!1;return y||C}):i},[i,B]);m.useEffect(()=>{let f=!0;return(async()=>{try{o(!0),c(null);const C=(await az()).slice().sort((I,Q)=>I.name.localeCompare(Q.name,void 0,{sensitivity:"base"}));f&&a(C)}catch{f&&c("Unable to load agents right now.")}finally{f&&o(!1)}})(),()=>{f=!1}},[]),m.useEffect(()=>{const f=()=>{const E=u.current;if(!E){d(!1);return}const y=E.scrollHeight-E.clientHeight>4;d(y)};return f(),window.addEventListener("resize",f),()=>{window.removeEventListener("resize",f)}},[w,s,l]);const p=()=>s?x.jsx("div",{className:"grid gap-4",children:Array.from({length:3}).map((f,E)=>x.jsx("div",{className:`${uAt} animate-pulse rounded-2xl border border-gray-200 bg-white dark:border-[#3b3c49] dark:bg-[#22232b]`},E))}):l?x.jsx("div",{className:"rounded-2xl border border-red-200 bg-red-50 px-4 py-6 text-sm text-red-700 dark:border-red-900 dark:bg-red-950/30 dark:text-red-200",children:l}):i.length===0?x.jsx("div",{className:"rounded-2xl border border-gray-200 bg-white px-4 py-6 text-sm text-gray-600 dark:border-[#3b3c49] dark:bg-[#22232b] dark:text-gray-300",children:"No agents are available yet. Configure adapters in your middleware settings to continue."}):w.length===0?x.jsx("div",{className:"rounded-2xl border border-gray-200 bg-white px-4 py-6 text-sm text-gray-600 dark:border-[#3b3c49] dark:bg-[#22232b] dark:text-gray-300",children:"No agents match your search."}):x.jsxs("div",{className:"relative flex flex-col h-full min-h-0",children:[x.jsx("div",{ref:u,className:"flex-1 min-h-0 overflow-y-auto pr-1 pb-6",onScroll:()=>{const f=u.current;if(!f)return;const E=f.scrollHeight-f.scrollTop-f.clientHeight>4;d(E)},children:x.jsx("div",{className:"grid gap-3",children:w.map(f=>x.jsx(oAt,{adapter:f,onSelect:E=>e(E.name)},f.name))})}),g&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:"pointer-events-none absolute inset-x-0 bottom-0 h-14 bg-gradient-to-b from-transparent to-white dark:to-[#1c1d23]"}),x.jsx("div",{className:"pointer-events-none absolute bottom-3 left-1/2 -translate-x-1/2 rounded-full bg-white/95 px-3 py-1 text-xs font-semibold text-gray-600 shadow-sm dark:bg-[#1c1d23]/95 dark:text-gray-200",children:"Scroll for more"})]})]});return x.jsxs("div",{className:`flex w-full flex-col gap-6 ${t}`,children:[(A||n||r)&&x.jsxs("div",{className:"flex-shrink-0",children:[A&&x.jsx("p",{className:"text-sm font-semibold uppercase tracking-wide text-blue-600 dark:text-blue-300",children:A}),n&&x.jsx("h2",{className:"mt-2 text-2xl font-bold text-gray-900 dark:text-white",children:n}),r&&x.jsx("p",{className:"mt-2 text-base text-gray-600 dark:text-gray-300",children:r})]}),x.jsxs("div",{className:"relative w-full flex-shrink-0",children:[x.jsx(DZ,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400"}),x.jsx("input",{type:"text",placeholder:"Search agents",value:B,disabled:s||!!l||i.length===0,onChange:f=>h(f.target.value),className:"w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm text-gray-900 placeholder-gray-400 shadow-inner focus:border-gray-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-60 dark:border-[#3b3c49] dark:bg-[#1f2027] dark:text-white dark:shadow-none"})]}),x.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:p()})]})}const dAt=(e,t)=>{const[n,r]=m.useState({stars:0,forks:0,license:"Apache-2.0",description:"An adaptable, open-source context-aware inference engine designed for privacy, control, and independence from proprietary models.",isLoading:!0,error:null});return m.useEffect(()=>{(async()=>{var i;try{const a=await fetch(`https://api.github.com/repos/${e}/${t}`);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);const s=await a.json();r({stars:s.stargazers_count||0,forks:s.forks_count||0,license:((i=s.license)==null?void 0:i.name)||"Apache-2.0",description:s.description||"An adaptable, open-source context-aware inference engine designed for privacy, control, and independence from proprietary models.",isLoading:!1,error:null})}catch(a){console.warn("Failed to fetch GitHub stats:",a),r({stars:104,forks:19,license:"Apache-2.0",description:"An adaptable, open-source context-aware inference engine designed for privacy, control, and independence from proprietary models.",isLoading:!1,error:a instanceof Error?a.message:"Failed to fetch stats"})}})()},[e,t]),n};function f4({className:e=""}){const t=frt(),n=wrt(),r=Ert(),A=dAt(n,r);if(!t)return null;const i=`https://github.com/${n}/${r}`,a=()=>A.isLoading?x.jsxs("div",{className:"flex items-center gap-2 text-xs font-medium text-gray-600 dark:text-[#bfc2cd]",children:[x.jsx("div",{className:"h-3.5 w-3.5 animate-spin rounded-full border-2 border-gray-300 border-t-transparent dark:border-[#4a4b54] dark:border-t-transparent"}),x.jsx("span",{children:"Loading…"})]}):A.error?x.jsx("div",{className:"text-xs font-medium text-red-600 dark:text-red-400",children:"Failed to load stats."}):x.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-2 text-xs font-semibold text-gray-800 dark:text-[#ececf1]",children:[x.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-white/80 px-2.5 py-0.5 text-gray-800 shadow-sm dark:bg-[#2c2f36] dark:text-[#ececf1]",children:[x.jsx(BBe,{className:"h-3.5 w-3.5 text-yellow-500 dark:text-yellow-300"}),A.stars.toLocaleString()]}),x.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-white/80 px-2.5 py-0.5 text-gray-800 shadow-sm dark:bg-[#2c2f36] dark:text-[#ececf1]",children:[x.jsx($de,{className:"h-3.5 w-3.5 text-blue-500 dark:text-blue-300"}),A.forks.toLocaleString()]})]});return x.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`inline-flex flex-col items-center gap-1 text-sm text-gray-700 transition hover:text-blue-700 dark:text-[#ececf1] dark:hover:text-blue-300 ${e}`,children:[x.jsxs("div",{className:"flex items-center gap-1 text-[11px] font-semibold uppercase tracking-wide text-blue-600 dark:text-blue-300",children:[x.jsx(eBe,{className:"h-3.5 w-3.5"}),x.jsx("span",{children:"Powered by ORBIT"})]}),a()]})}const BAt=60*1e3;let Rx=null,w4=0;const zx=e=>{if(!e||e==="/")return"/";const t=e.trim();if(!t)return"/";const n=t.startsWith("/")?t:`/${t}`;return n==="/"?"/":n.endsWith("/")?n.slice(0,-1):n},kce=()=>{if(typeof window>"u")return zx("/");const e=zx("/");if(typeof document>"u")return e;const t=document.querySelector("base[href]");if(!t)return e;try{const n=new URL(t.getAttribute("href")||"/",window.location.origin);return zx(n.pathname||e)}catch{return e}},lk=e=>e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""),hAt=async()=>{const e=Date.now();if(Rx&&e-w4<BAt)return Rx;let t=[];try{t=await az()}catch{}const n=new Map;return t.forEach(r=>{const A=lk(r.name);A&&n.set(A,r.name)}),Rx=n,w4=e,n},E4=e=>{var i;const t=kce(),n=e.startsWith("/")?e:`/${e}`;let r=n;if(t!=="/"){if(!n.startsWith(t))return null;r=n.slice(t.length)}const A=r.split("/").filter(Boolean);return A.length===0?null:((i=A[0])==null?void 0:i.toLowerCase())||null},pAt=e=>{const t=kce();if(!e)return t;const n=e.replace(/^\/+|\/+$/g,"");return t==="/"?n?`/${n}`:"/":`${t}/${n}`.replace(/\/{2,}/g,"/")},Cu=e=>{if(typeof window>"u")return;const t=pAt(e),n=window.location.pathname;if(t===n)return;const r=window.location.search||"",A=window.location.hash||"";window.history.replaceState(window.history.state,"",`${t}${r}${A}`)},fAt=async e=>{const t=e.trim().toLowerCase();return t&&(await hAt()).get(t)||null},wAt="rounded-t-[32px] border border-white/40 bg-white/95 px-4 pb-4 pt-[max(env(safe-area-inset-top),1rem)] shadow-[0_25px_60px_rgba(15,23,42,0.15)] backdrop-blur-xl dark:border-[#2f303d] dark:bg-[#1c1d23]/95 md:rounded-none md:border-0 md:bg-transparent md:px-0 md:pb-0 md:pt-0 md:shadow-none md:backdrop-blur-0 md:dark:bg-transparent md:dark:border-0",m4="-mx-4 mt-auto overflow-hidden rounded-t-[28px] border-t border-x border-white/40 bg-white/98 pb-[max(env(safe-area-inset-bottom),0.75rem)] shadow-[0_-12px_45px_rgba(15,23,42,0.2)] backdrop-blur-xl transition-all duration-200 dark:border-[#2f303d] dark:bg-[#1c1d23]/98 md:mx-0 md:mt-0 md:overflow-visible md:rounded-none md:border-0 md:bg-transparent md:pb-0 md:shadow-none md:backdrop-blur-0 md:dark:bg-transparent md:dark:border-0 [&>div]:rounded-t-[28px] md:[&>div]:rounded-none [&>div]:bg-transparent md:[&>div]:px-0",EAt="sticky top-0 z-10 -mx-4 px-4 pt-2 pb-4 bg-white/95 backdrop-blur-xl dark:bg-[#1c1d23]/95 border-b border-white/50 dark:border-white/10 md:static md:mx-0 md:px-0 md:pt-6 md:pb-6 md:bg-transparent md:backdrop-blur-0 md:border-gray-200 md:dark:border-[#4a4b54] md:dark:bg-transparent";function mAt({onOpenSettings:e,onOpenSidebar:t}){var Ye,ee,se,me,Pe,st,Rt;const{conversations:n,currentConversationId:r,createConversation:A,canCreateNewConversation:i,sendMessage:a,regenerateResponse:s,isLoading:o,configureApiSettings:l,error:c,clearError:u,createThread:g,clearCurrentConversationAdapter:d}=Nt(),{settings:B}=Om(),{theme:h,isDark:w}=Jm(),p=h.mode==="dark"?"dark":h.mode==="light"?"light":"",f=w?"dark":"light",E=["message-markdown w-full min-w-0","prose prose-slate dark:prose-invert max-w-none",p].filter(Boolean).join(" "),y=["application-description prose prose-slate dark:prose-invert max-w-none text-base leading-relaxed","text-[#4a4c5a] dark:text-[#bfc2cd]","[&>:first-child]:mt-0 [&>:last-child]:mb-0",p].filter(Boolean).join(" "),[C,I]=m.useState(!1),[Q,D]=m.useState(null),F=n.find(Me=>Me.id===r),N=!F||F.messages.length===0,S=Nce(),k=bce(),J=lrt().trim(),H=J.length>0,v=m.useRef(typeof window<"u"?E4(window.location.pathname):null),R=N&&!v.current,[L,T]=m.useState(R),K=m.useRef(null),G=N&&L,W=N&&!L&&!!(F!=null&&F.adapterName),Ae="mx-auto w-full max-w-5xl",z=W?Ae:"w-full",$=i(),le=$?"Start a new conversation":"Finish your current conversation before starting a new one.",ge=!!(F!=null&&F.adapterInfo&&!G),de=N&&!G,we=F!=null&&F.adapterName&&!G?F.adapterName:G?k:"",ue=`${EAt} ${G?"border-transparent dark:border-transparent md:border-transparent md:dark:border-transparent":""}`.trim(),ce=!!Q,ae=m.useCallback(()=>{const Me=Nt.getState(),Z=Me.currentConversationId?Me.conversations.find(Fe=>Fe.id===Me.currentConversationId):null;if(!Z||Z.messages.length>0)try{const Fe=A();return K.current=Fe,Fe}catch(Fe){An("Cannot create a new conversation for agent selection:",Fe instanceof Error?Fe.message:"Unknown error")}return(Z==null?void 0:Z.id)||null},[A]);m.useEffect(()=>{F!=null&&F.adapterLoadError?D(F.adapterLoadError):D(null)},[F==null?void 0:F.id,F==null?void 0:F.adapterName,F==null?void 0:F.adapterLoadError]);const he=m.useCallback(()=>{typeof window>"u"||setTimeout(()=>{const Me=Nt.getState();localStorage.setItem("chat-state",JSON.stringify({conversations:Me.conversations,currentConversationId:Me.currentConversationId}))},0)},[]),xe=m.useCallback((Me,Z)=>{if(!Me)return;const Fe=Z||"Unable to configure this agent.";let Ge=!1;Nt.setState(Je=>{const qe=Je.conversations.find($e=>$e.id===Me);return!qe||qe.messages.length>0?Je:(Ge=!0,{conversations:Je.conversations.map($e=>$e.id===Me?{...$e,adapterLoadError:Fe}:$e)})}),Ge&&he()},[he]),Ce=m.useCallback(Me=>{if(!Me)return;let Z=!1;Nt.setState(Fe=>{const Ge=Fe.conversations.find(Je=>Je.id===Me);return!Ge||!Ge.adapterLoadError?Fe:(Z=!0,{conversations:Fe.conversations.map(Je=>Je.id===Me?{...Je,adapterLoadError:null}:Je)})}),Z&&he()},[he]),oe=m.useCallback(Me=>Me instanceof Error?Me.message.includes("401")?"We couldn’t load this agent. It may not exist or you might not have access to it.":Me.message.includes("404")?"This agent was not found on the server. Please pick another agent.":Me.message:"Unable to load agent overview right now.",[]),Le=m.useCallback(async Me=>{if(!Me)return{ok:!1};const Z=Me.adapterName;if(!Z)return{ok:!1};try{const Fe=await Lr(),Ge=new Fe.ApiClient({apiUrl:Me.apiUrl||Zn(),sessionId:null,adapterName:Z});if(typeof Ge.getAdapterInfo!="function")return{ok:!1};const Je=await Ge.getAdapterInfo();return Nt.setState($e=>({conversations:$e.conversations.map(zt=>zt.id===Me.id?{...zt,adapterInfo:Je,adapterLoadError:null,updatedAt:new Date}:zt)})),Nt.getState().currentConversationId===Me.id&&D(null),he(),{ok:!0}}catch(Fe){const Ge=Nt.getState(),Je=oe(Fe);Ge.currentConversationId===Me.id&&D(Je);const qe=Ge.conversations.find($e=>$e.id===Me.id);return qe&&qe.messages.length===0&&xe(Me.id,Je),{ok:!1,error:Fe}}},[oe,xe,he,D]);m.useEffect(()=>{if(!N){L&&T(!1),K.current=(F==null?void 0:F.id)||null;return}if(v.current){K.current=(F==null?void 0:F.id)||null;return}const Me=(F==null?void 0:F.id)||null;K.current!==Me&&(K.current=Me,T(!0))},[N,F==null?void 0:F.id,L]),m.useEffect(()=>{if(!v.current){if(G||!(F!=null&&F.adapterName)){Cu(null);return}Cu(lk(F.adapterName))}},[G,F==null?void 0:F.adapterName]),m.useEffect(()=>{let Me=!1;const Z=async()=>{if(typeof window>"u")return;const Ge=E4(window.location.pathname);if(!Ge)return;const Je=await fAt(Ge);if(Me)return;if(!Je){ae(),Cu(null),d(),T(!0),v.current=null;return}ae(),T(!1),Cu(Ge);const qe=Nn.current;qe&&await qe(Je),v.current=null};Z();const Fe=()=>{Z()};return window.addEventListener("popstate",Fe),()=>{Me=!0,window.removeEventListener("popstate",Fe)}},[ae,d]),m.useEffect(()=>{var Me,Z,Fe;Ue("[ChatInterface] Conversation state:",{hasConversation:!!F,adapterName:F==null?void 0:F.adapterName,hasAdapterInfo:!!(F!=null&&F.adapterInfo),hasNotes:!!((Me=F==null?void 0:F.adapterInfo)!=null&&Me.notes),notes:((Fe=(Z=F==null?void 0:F.adapterInfo)==null?void 0:Z.notes)==null?void 0:Fe.substring(0,50))+"..."})},[F]);const et=m.useRef(null);m.useEffect(()=>{(async()=>{var Ge;const Z=F==null?void 0:F.adapterName;if(et.current===Z)return;const Fe=!(F!=null&&F.adapterInfo)||(F==null?void 0:F.adapterInfo)&&F.adapterInfo.notes===void 0;if(Z&&Fe){et.current=Z,Ue("[ChatInterface] Loading adapter info - adapterName:",Z,"reason:",F!=null&&F.adapterInfo?"notes undefined":"missing");try{F!=null&&F.adapterLoadError&&Ce(F.id);const Je=(F==null?void 0:F.apiUrl)||Zn();Ue("[ChatInterface] Calling configureApiSettings for:",Z),await l(Je,void 0,Z),Ue("[ChatInterface] Adapter info loaded successfully");const qe=Nt.getState(),$e=qe.conversations.find(zt=>zt.id===qe.currentConversationId);if(($e==null?void 0:$e.adapterName)===Z&&(!$e.adapterInfo||$e.adapterInfo.notes===void 0)){const zt=await Le($e);!zt.ok&&zt.error&&El("[ChatInterface] Failed to fetch adapter info after configuring adapter:",zt.error)}}catch(Je){if(et.current=null,(F==null?void 0:F.adapterName)===Z){const qe=oe(Je);D(qe),xe(F.id,qe)}}}else Ue("[ChatInterface] Skipping adapter info load:",{adapterName:Z,hasAdapterInfo:!!(F!=null&&F.adapterInfo),hasNotes:((Ge=F==null?void 0:F.adapterInfo)==null?void 0:Ge.notes)!==void 0,refValue:et.current})})()},[F==null?void 0:F.adapterName,F==null?void 0:F.adapterInfo,F==null?void 0:F.apiUrl,F==null?void 0:F.adapterLoadError,F==null?void 0:F.id,l,Ce,Le,oe,xe]),m.useEffect(()=>{let Me=null;const Z=()=>{Me&&(Me(),Me=null)};if(B.voiceEnabled){if(ac.isAudioEnabled())return Z;const Fe=()=>{Z();const Ge=async()=>{Z(),await ac.enableAudio()||Fe()};document.addEventListener("pointerdown",Ge,{once:!0}),document.addEventListener("keydown",Ge,{once:!0}),Me=()=>{document.removeEventListener("pointerdown",Ge),document.removeEventListener("keydown",Ge)}};return Fe(),Z}return Z(),ac.disableAudio(),Z},[B.voiceEnabled]);const vn=(Me,Z,Fe)=>{a(Me,Z,Fe)},Jt=async(Me,Z,Fe)=>{await a(Fe,void 0,Me)},ln=()=>{try{A()}catch(Me){An("Cannot create new conversation:",Me instanceof Error?Me.message:"Unknown error")}},Ln=m.useCallback(async Me=>{if(!Me)return;const Z=Nt.getState(),Fe=Z.currentConversationId?Z.conversations.find(Ge=>Ge.id===Z.currentConversationId):null;if(Fe){I(!0),D(null),Ce(Fe.id);try{const Ge=Fe.apiUrl||Zn();await l(Ge,void 0,Me),u();const Je=Nt.getState(),qe=Je.conversations.find($e=>$e.id===Je.currentConversationId);if((qe==null?void 0:qe.adapterName)===Me&&(!qe.adapterInfo||qe.adapterInfo.notes===void 0)){const $e=await Le(qe);!$e.ok&&$e.error&&El("Failed to load adapter info after selecting adapter:",$e.error)}}catch(Ge){const Je=oe(Ge);D(Je),xe(Fe.id,Je)}finally{I(!1)}}},[l,u,Le,xe,Ce,oe]),Pr=Me=>{ae(),T(!1),Cu(lk(Me)),Ln(Me)},Nn=m.useRef(Ln);return m.useEffect(()=>{Nn.current=Ln},[Ln]),x.jsx("div",{className:"flex-1 flex flex-col bg-gray-50 dark:bg-[#202123] overflow-hidden",children:x.jsx("div",{className:"flex h-full w-full flex-col px-3 sm:px-6 overflow-hidden",children:x.jsxs("div",{className:`mx-auto flex h-full w-full max-w-5xl flex-col overflow-hidden ${wAt}`,children:[c&&x.jsx("div",{role:"alert",className:"mt-6 rounded-md border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700 dark:border-red-600/40 dark:bg-red-900/30 dark:text-red-200",children:x.jsxs("div",{className:"flex items-start justify-between",children:[x.jsx("p",{children:c}),x.jsx("button",{onClick:u,className:"ml-4 rounded p-1 text-red-500 hover:bg-red-100 hover:text-red-700 dark:text-red-200 dark:hover:bg-red-800/40","aria-label":"Dismiss error",children:"×"})]})}),x.jsxs("div",{className:ue,children:[t&&x.jsxs("div",{className:"mb-4 grid grid-cols-2 gap-3 md:hidden",children:[x.jsxs("button",{onClick:t,className:"inline-flex items-center justify-center gap-2 rounded-2xl border border-white/50 bg-white/80 px-4 py-3.5 text-sm font-semibold text-gray-800 shadow-sm active:scale-[0.97] transition-all duration-150 hover:bg-white dark:border-[#2f303d] dark:bg-[#232430] dark:text-[#ececf1]","aria-label":"Open conversations menu",children:[x.jsx(tBe,{className:"h-5 w-5"}),"Chats"]}),x.jsxs("button",{onClick:e,className:"inline-flex items-center justify-center gap-2 rounded-2xl border border-white/50 bg-[#11121a]/90 px-4 py-3.5 text-sm font-semibold text-white shadow-sm active:scale-[0.97] transition-all duration-150 hover:bg-[#0c0d14] dark:border-[#3b3c49] dark:bg-[#565869] dark:hover:bg-[#6b6f7a]","aria-label":"Open settings",children:[x.jsx(SZ,{className:"h-5 w-5"}),"Settings"]})]}),x.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-end sm:justify-between",children:[x.jsx("div",{className:"min-w-0 flex-1",children:ge&&x.jsxs("div",{className:"space-y-3",children:[x.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2 justify-start md:flex-nowrap",children:[((Ye=F==null?void 0:F.adapterInfo)==null?void 0:Ye.model)&&x.jsxs("div",{className:"inline-flex max-w-full flex-shrink items-center gap-2 rounded-full border border-gray-200 bg-gray-100 px-2.5 py-1 text-xs font-semibold uppercase tracking-wider text-gray-500 dark:border-[#4a4b54] dark:bg-[#343541] dark:text-[#bfc2cd] min-w-0",title:F.adapterInfo.model,"aria-label":`Model: ${F.adapterInfo.model}`,children:[x.jsx("span",{children:"Model"}),x.jsx("span",{className:"block truncate text-gray-800 normal-case dark:text-[#ececf1]",children:F.adapterInfo.model})]}),x.jsxs("div",{className:"inline-flex max-w-full flex-shrink items-center gap-2 rounded-md border border-gray-200 bg-gray-100 px-2.5 py-1 text-xs font-semibold uppercase tracking-wider text-gray-600 dark:border-[#4a4b54] dark:bg-[#343541] dark:text-[#bfc2cd] min-w-0",title:(F==null?void 0:F.adapterName)||((ee=F==null?void 0:F.adapterInfo)==null?void 0:ee.adapter_name)||"Configured Agent","aria-label":`Agent: ${(F==null?void 0:F.adapterName)||((se=F==null?void 0:F.adapterInfo)==null?void 0:se.adapter_name)||"Configured Agent"}`,children:[x.jsx("span",{children:"Agent"}),x.jsx("span",{className:"block truncate text-gray-800 normal-case dark:text-[#ececf1]",children:(F==null?void 0:F.adapterName)||((me=F==null?void 0:F.adapterInfo)==null?void 0:me.adapter_name)||"Configured Agent"})]})]}),x.jsxs("div",{className:"space-y-1",children:[x.jsx("h1",{className:"text-2xl font-semibold text-[#353740] dark:text-[#ececf1]",children:(F==null?void 0:F.title)||"New Chat"}),F&&x.jsxs("div",{className:"flex items-center gap-2 text-sm text-gray-500 dark:text-[#bfc2cd]",children:[x.jsx("span",{className:"font-medium",children:F.messages.length}),x.jsxs("span",{children:["Updated ",F.updatedAt.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})]})]})]})]})}),x.jsxs("div",{className:"flex flex-col items-stretch gap-3 sm:flex-row sm:items-center sm:justify-end sm:gap-4",children:[!G&&x.jsx(f4,{className:"order-1 sm:order-2 sm:min-w-[220px]"}),!G&&x.jsxs("button",{onClick:ln,disabled:!$,className:`order-2 sm:order-1 inline-flex items-center justify-center gap-2 rounded-full border px-3.5 py-2.5 text-sm font-semibold uppercase tracking-wide transition-all ${$?"border-[#343541] text-[#1f1f21] bg-white/80 shadow-[0_2px_8px_rgba(15,23,42,0.06)] hover:-translate-y-0.5 hover:bg-white hover:shadow-[0_8px_20px_rgba(15,23,42,0.12)] dark:border-[#565869] dark:text-[#ececf1] dark:bg-[#2c2f36] dark:hover:bg-[#353947]":"cursor-not-allowed border-gray-200 text-gray-400 bg-white/40 dark:border-[#3c3f4a] dark:text-[#6b6f7a] dark:bg-transparent"}`,title:le,children:[x.jsx(uBe,{className:"h-3.5 w-3.5"}),"New Conversation"]})]})]})]}),N?x.jsx("div",{className:`flex flex-1 flex-col min-h-0 pt-4 md:pt-6 ${G?"overflow-hidden":""}`,children:x.jsxs("div",{className:`flex-1 flex flex-col justify-between md:justify-start ${G?"min-h-0 overflow-hidden":"md:flex-none"}`,children:[x.jsxs("div",{className:`w-full ${G?"flex flex-col min-h-0 overflow-hidden flex-1":"space-y-6"}`,children:[de&&!W&&we&&x.jsxs("div",{className:`${Ae}`,children:[x.jsx("h2",{className:"text-2xl font-semibold text-[#11111b] dark:text-white",children:we}),we===k&&H&&G&&x.jsx("div",{className:"mt-2",children:x.jsx(Zu,{content:J,className:y,syntaxTheme:f})})]}),G?x.jsxs("div",{className:"flex flex-col min-h-0 overflow-hidden flex-1 gap-6",children:[x.jsxs("div",{className:`${Ae} flex-shrink-0 flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between`,children:[x.jsxs("div",{className:"flex-1",children:[x.jsx("h2",{className:"text-2xl font-semibold text-[#11111b] dark:text-white",children:k}),H&&x.jsx("div",{className:"mt-2",children:x.jsx(Zu,{content:J,className:y,syntaxTheme:f})})]}),x.jsx(f4,{className:"sm:min-w-[220px]"})]}),x.jsx(gAt,{onAdapterSelect:Pr,className:`${Ae} flex-1 min-h-0 overflow-hidden`})]}):W?x.jsxs("div",{className:`${Ae} rounded-3xl border border-gray-300 bg-white/95 p-6 shadow-sm dark:border-[#565869] dark:bg-[#1c1d23]/90`,children:[x.jsxs("div",{className:"flex items-center justify-between gap-3 mb-4",children:[x.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:(F==null?void 0:F.adapterName)||((Pe=F==null?void 0:F.adapterInfo)==null?void 0:Pe.adapter_name)||"Configured Agent"}),x.jsx("button",{type:"button",onClick:()=>{d(),Cu(null),T(!0)},className:"text-sm font-semibold text-blue-600 hover:text-blue-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 dark:text-blue-300 dark:hover:text-blue-200",children:"Change Agent"})]}),x.jsx("div",{className:"rounded-2xl border border-gray-300 bg-white/70 px-4 pb-4 pt-3 dark:border-[#565869] dark:bg-[#232430]/80",children:(st=F==null?void 0:F.adapterInfo)!=null&&st.notes?x.jsx(Zu,{content:F.adapterInfo.notes,className:E,syntaxTheme:f}):Q?x.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:Q}):C?x.jsx("p",{className:"text-sm text-gray-600 dark:text-[#bfc2cd]",children:"Configuring your agent… hang tight for just a moment."}):x.jsx("p",{className:"text-sm text-gray-600 dark:text-[#bfc2cd]",children:"Fetching agent overview… this only takes a moment."})})]}):x.jsx("div",{className:`${Ae} mb-2`,children:(Rt=F==null?void 0:F.adapterInfo)!=null&&Rt.notes?x.jsx("div",{className:"text-base text-gray-600 dark:text-[#bfc2cd] leading-relaxed",children:x.jsx(Zu,{content:F.adapterInfo.notes,className:E,syntaxTheme:f})}):x.jsx("h2",{className:"text-xl md:text-2xl font-medium text-[#353740] dark:text-[#ececf1]",children:"How can I assist you today?"})})]}),!G&&x.jsx("div",{className:m4,children:x.jsx("div",{className:z,children:x.jsx(p4,{onSend:vn,disabled:o||!F||!(F!=null&&F.adapterName)||ce,placeholder:S})})})]})}):x.jsxs("div",{className:"flex flex-1 flex-col",children:[x.jsx(Nrt,{messages:F.messages,onRegenerate:s,onStartThread:async(Me,Z)=>{try{await g(Me,Z)}catch{}},onSendThreadMessage:Jt,sessionId:F.sessionId,isLoading:o}),x.jsx("div",{className:m4,children:x.jsx("div",{className:"w-full",children:x.jsx(p4,{onSend:vn,disabled:o||!F||!F.adapterName||L||ce,placeholder:"Ask another question..."})})})]})]})})})}const yAt=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed",'[contenteditable="true"]','[tabindex]:not([tabindex="-1"])'].join(",");function Im(e,{enabled:t,onEscape:n}){m.useEffect(()=>{if(!t||!e.current)return;const r=e.current,A=document.activeElement,i=Array.from(r.querySelectorAll(yAt)).filter(l=>!l.hasAttribute("disabled")&&l.tabIndex!==-1),a=i[0]||r,s=i[i.length-1]||r;a.focus({preventScroll:!0});const o=l=>{if(l.key==="Escape"){n==null||n();return}if(l.key!=="Tab")return;if(i.length===0){l.preventDefault(),r.focus({preventScroll:!0});return}const c=document.activeElement;if(l.shiftKey){(!c||c===a||!r.contains(c))&&(l.preventDefault(),s.focus({preventScroll:!0}));return}(!c||c===s||!r.contains(c))&&(l.preventDefault(),a.focus({preventScroll:!0}))};return document.addEventListener("keydown",o),()=>{var l;document.removeEventListener("keydown",o),(l=A==null?void 0:A.focus)==null||l.call(A,{preventScroll:!0})}},[t,n,e])}function y4({isOpen:e,onClose:t,onConfirm:n,title:r,message:A,confirmText:i="Confirm",cancelText:a="Cancel",type:s="danger",isLoading:o=!1}){const l=m.useRef(null);if(Im(l,{enabled:e,onEscape:t}),!e)return null;const c=()=>{o||n()},g=(()=>{switch(s){case"danger":return{icon:"text-red-500",iconBg:"bg-red-100 dark:bg-red-900/20",confirmButton:"bg-red-600 hover:bg-red-700 focus:ring-red-500",border:"border-red-200 dark:border-red-800"};case"warning":return{icon:"text-amber-500",iconBg:"bg-amber-100 dark:bg-amber-900/20",confirmButton:"bg-amber-600 hover:bg-amber-700 focus:ring-amber-500",border:"border-amber-200 dark:border-amber-800"};default:return{icon:"text-blue-500",iconBg:"bg-blue-100 dark:bg-blue-900/20",confirmButton:"bg-blue-600 hover:bg-blue-700 focus:ring-blue-500",border:"border-blue-200 dark:border-blue-800"}}})();return x.jsx("div",{className:"fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center p-4 z-50 animate-fadeIn",children:x.jsxs("div",{ref:l,role:"dialog","aria-modal":"true","aria-labelledby":"confirm-title",tabIndex:-1,className:"bg-white dark:bg-gray-800 rounded-2xl shadow-2xl w-full max-w-md transform animate-fadeIn",children:[x.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700",children:[x.jsxs("div",{className:"flex items-center gap-3",children:[x.jsx("div",{className:`w-10 h-10 rounded-full ${g.iconBg} flex items-center justify-center`,children:x.jsx(u2,{className:`w-5 h-5 ${g.icon}`})}),x.jsx("h2",{id:"confirm-title",className:"text-lg font-semibold text-gray-900 dark:text-gray-100",children:r})]}),x.jsx("button",{onClick:t,className:"p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors","aria-label":"Close",children:x.jsx(ag,{className:"w-5 h-5 text-gray-500 dark:text-gray-400"})})]}),x.jsx("div",{className:"p-6",children:x.jsx("p",{className:"text-gray-600 dark:text-gray-300 leading-relaxed",children:A})}),x.jsxs("div",{className:"flex items-center justify-end gap-3 p-6 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 rounded-b-2xl",children:[x.jsx("button",{onClick:t,disabled:o,className:"px-4 py-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 rounded-lg transition-colors font-medium disabled:opacity-50 disabled:cursor-not-allowed",children:a}),x.jsx("button",{onClick:c,disabled:o,className:`px-4 py-2.5 text-white rounded-lg transition-all font-medium shadow-sm hover:shadow-md transform hover:scale-105 active:scale-95 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-gray-800 disabled:opacity-50 disabled:cursor-not-allowed disabled:transform-none ${g.confirmButton}`,children:o?x.jsxs("div",{className:"flex items-center gap-2",children:[x.jsx("div",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}),"Clearing..."]}):i})]})]})})}function IAt({selectedAdapter:e,onAdapterChange:t,disabled:n,showDescriptions:r=!1,variant:A="sidebar",label:i,showLabel:a}){const[s,o]=m.useState([]),[l,c]=m.useState(!0),[u,g]=m.useState(null),[d,B]=m.useState(!1);m.useEffect(()=>{let D=!0;async function F(){try{c(!0),g(null);const N=await az();D&&o(N)}catch{D&&g("Failed to load adapters. Please check your connection.")}finally{D&&c(!1)}}return F(),()=>{D=!1}},[]);const h=s.find(D=>D.name===e),w=typeof a=="boolean"?a:A==="prominent",p=i||(A==="prominent"?"Select an agent":"Adapter"),f=m.useMemo(()=>A==="prominent"?"relative w-full text-left":"relative w-full",[A]),E=m.useMemo(()=>{const D="w-full rounded-md border bg-white px-4 py-3 text-left text-sm text-[#353740] focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 dark:bg-[#343541] dark:text-[#ececf1]";return A==="prominent"?[D,"border-gray-300 shadow-sm transition-all duration-200 focus-visible:ring-blue-500 dark:border-[#4a4b54] dark:focus-visible:ring-blue-400"].join(" "):["w-full rounded-md border border-gray-300 bg-white px-3 py-2 text-left text-sm text-[#353740] focus:border-gray-400 focus:outline-none dark:border-[#4a4b54] dark:bg-[#343541] dark:text-[#ececf1] dark:focus:border-[#6b6f7a]"].join(" ")},[A]),y=m.useMemo(()=>A==="prominent"?"absolute z-20 mt-2 w-full rounded-xl border border-gray-200 bg-white shadow-xl ring-1 ring-black/5 dark:border-[#4a4b54] dark:bg-[#1f2027]":"absolute z-20 mt-1 w-full rounded-md border border-gray-200 bg-white shadow-lg ring-1 ring-black/5 dark:border-[#4a4b54] dark:bg-[#1f2027]",[A]),Q=w?`mb-2 block text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-[#bfc2cd] ${A==="prominent"?"!text-sm !font-semibold !text-gray-700 dark:!text-white":""}`:"sr-only";return x.jsxs("div",{className:f,children:[x.jsx("label",{className:Q,children:p}),x.jsxs("div",{className:"relative",children:[x.jsx("button",{type:"button",onClick:()=>!n&&B(!d),disabled:n||l||s.length===0,className:`${E} disabled:opacity-50 disabled:cursor-not-allowed`,"aria-label":p,children:x.jsxs("div",{className:"flex items-center justify-between gap-2",children:[x.jsxs("div",{className:"flex flex-col min-w-0",children:[x.jsx("span",{className:`truncate font-medium ${h?"text-[#11121a] dark:text-white":"text-gray-500 dark:text-gray-400"}`,children:l?"Loading agents…":u?"Error loading agents":h?h.name:s.length===0?"No agents available":"Select an agent"}),A==="prominent"&&(h==null?void 0:h.description)&&x.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:h.description})]}),x.jsx(NZ,{className:`h-4 w-4 flex-shrink-0 transition-transform text-gray-400 dark:text-gray-300 ${d?"rotate-180":""}`})]})}),d&&!n&&s.length>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:"fixed inset-0 z-10",onClick:()=>B(!1)}),x.jsx("div",{className:y,children:x.jsx("div",{className:"max-h-72 overflow-auto py-2",children:s.map(D=>{const F=D.name===e;return x.jsx("button",{type:"button",onClick:()=>{F||t(D.name),B(!1)},className:`w-full px-4 py-3 text-left text-sm transition-colors ${F?"bg-blue-50 text-blue-700 dark:bg-blue-900/30 dark:text-blue-200":"text-[#353740] hover:bg-gray-50 dark:text-[#ececf1] dark:hover:bg-[#2a2d35]"}`,children:x.jsxs("div",{className:"flex flex-col gap-1",children:[x.jsx("span",{className:"font-medium truncate",children:D.name}),r&&D.description&&x.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",style:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:D.description})]})},D.name)})})})]})]}),u&&x.jsx("p",{className:"mt-1 text-xs text-red-600 dark:text-red-400",children:u})]})}const CAt="2.14.1",QAt={version:CAt},Gce=QAt.version;function vce(){return{appVersion:Gce}}const wf=100,MAt={small:{cardText:"text-xs",cardPadding:"px-2.5 py-2",cardGap:"gap-0",titleText:"text-sm",metaText:"text-[10px]",metaGap:"gap-1",badgePadding:"px-1.5 py-0.5",badgeText:"text-[10px]",badgeIcon:"h-3 w-3",actionButton:"p-1.5",actionIcon:"h-3.5 w-3.5"},medium:{cardText:"text-sm",cardPadding:"px-3 py-3",cardGap:"gap-0",titleText:"text-sm",metaText:"text-[11px]",metaGap:"gap-1.5",badgePadding:"px-2 py-0.5",badgeText:"text-[11px]",badgeIcon:"h-3.5 w-3.5",actionButton:"p-2",actionIcon:"h-4 w-4"},large:{cardText:"text-base",cardPadding:"px-4 py-4",cardGap:"gap-0",titleText:"text-base",metaText:"text-sm",metaGap:"gap-2",badgePadding:"px-2.5 py-1",badgeText:"text-sm",badgeIcon:"h-4 w-4",actionButton:"p-2",actionIcon:"h-4 w-4"}};function I4({onRequestClose:e,onOpenSettings:t}){const{conversations:n,currentConversationId:r,selectConversation:A,deleteConversation:i,deleteAllConversations:a,updateConversationTitle:s,getConversationCount:o,configureApiSettings:l,clearError:c}=Nt(),u=n.find(oe=>oe.id===r),[g,d]=m.useState(""),[B,h]=m.useState(null),[w,p]=m.useState(""),[f,E]=m.useState({isOpen:!1,conversationId:"",conversationTitle:"",isDeleting:!1}),[y,C]=m.useState({isOpen:!1,isDeleting:!1}),[I,Q]=m.useState(!1),[D,F]=m.useState(null),[N,S]=m.useState(!1),[k,J]=m.useState(null),H=m.useRef(null),v=!u||u.messages.length===0,{theme:R}=Jm(),L=MAt[R.fontSize??"medium"];m.useEffect(()=>{u!=null&&u.adapterName?F(u.adapterName):F(null)},[u==null?void 0:u.adapterName]),m.useEffect(()=>{J(null)},[r]);const T=n.filter(oe=>oe.messages.length>0&&!oe.adapterLoadError),K=T.filter(oe=>oe.title.toLowerCase().includes(g.toLowerCase())||oe.messages.some(Le=>Le.content.toLowerCase().includes(g.toLowerCase()))),G=T.length>0?K:[],W=o(),Ae=W===1?"conversation":"conversations",z=async oe=>{if(!(!v||!oe)){F(oe),J(null),S(!0);try{const Le=(u==null?void 0:u.apiUrl)||Zn();await l(Le,void 0,oe),c(),Q(!1)}catch(Le){const et=Le instanceof Error?Le.message:"Failed to configure adapter";J(et)}finally{S(!1)}}},$=async oe=>{try{await A(oe),e==null||e()}catch{}},le=(oe,Le)=>{oe.stopPropagation(),E({isOpen:!0,conversationId:Le.id,conversationTitle:Le.title,isDeleting:!1})},ge=async()=>{E(oe=>({...oe,isDeleting:!0}));try{await i(f.conversationId),E({isOpen:!1,conversationId:"",conversationTitle:"",isDeleting:!1})}catch{E({isOpen:!1,conversationId:"",conversationTitle:"",isDeleting:!1})}},de=()=>{E({isOpen:!1,conversationId:"",conversationTitle:"",isDeleting:!1})},we=(oe,Le)=>{oe.stopPropagation(),h(Le.id),p(Le.title.slice(0,wf))},_=oe=>{const Le=w.slice(0,wf).trim();Le&&s(oe,Le),h(null),p("")},ue=()=>{h(null),p("")},ce=()=>{C({isOpen:!0,isDeleting:!1})},ae=async()=>{C(oe=>({...oe,isDeleting:!0}));try{await a(),C({isOpen:!1,isDeleting:!1})}catch{C({isOpen:!1,isDeleting:!1})}},he=()=>{C({isOpen:!1,isDeleting:!1})},xe=oe=>{const Le=oe.toLocaleDateString([],{year:"numeric",month:"short",day:"numeric"}),et=oe.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return`${Le} · ${et}`},Ce=oe=>{var Le;return oe.adapterName&&oe.adapterName.trim().length>0?oe.adapterName:(Le=oe.adapterInfo)!=null&&Le.adapter_name&&oe.adapterInfo.adapter_name.trim().length>0?oe.adapterInfo.adapter_name:null};return Im(H,{enabled:I,onEscape:()=>Q(!1)}),x.jsxs(x.Fragment,{children:[I&&x.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4",children:x.jsxs("div",{ref:H,role:"dialog","aria-modal":"true","aria-labelledby":"select-agent-title",tabIndex:-1,className:"w-full max-w-md rounded-lg border border-gray-200 bg-white p-6 shadow-lg dark:border-[#444654] dark:bg-[#202123]",children:[x.jsx("h2",{id:"select-agent-title",className:"mb-4 text-lg font-medium text-[#353740] dark:text-[#ececf1]",children:"Select an Agent"}),x.jsxs("div",{className:"space-y-5",children:[x.jsx(IAt,{selectedAdapter:D||(u==null?void 0:u.adapterName)||null,onAdapterChange:z,disabled:N,variant:"prominent",showDescriptions:!0,showLabel:!1}),k&&x.jsx("div",{className:"rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-600/40 dark:bg-red-900/30 dark:text-red-200",children:k}),x.jsx("div",{className:"flex justify-end gap-3 pt-2",children:x.jsx("button",{type:"button",onClick:()=>{J(null),Q(!1)},className:"rounded-md border border-transparent px-4 py-2 text-sm text-gray-600 hover:border-gray-300 hover:text-gray-900 disabled:cursor-not-allowed disabled:opacity-50 dark:text-[#d1d5db] dark:hover:text-white",disabled:N,children:"Cancel"})})]})]})}),x.jsxs("div",{className:"flex h-full w-full md:w-72 flex-col border-r border-b border-gray-200 bg-gradient-to-b from-white via-gray-50 to-gray-100 dark:border-[#4a4b54] dark:bg-[#202123] dark:bg-none",children:[x.jsxs("div",{className:"bg-white/95 p-4 shadow-sm dark:border-[#4a4b54] dark:bg-[#202123] dark:shadow-none",children:[x.jsxs("div",{className:"space-y-3 pb-3",children:[x.jsxs("div",{className:"flex items-center justify-between text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-[#bfc2cd]",children:[x.jsx("span",{children:"Version"}),x.jsxs("span",{className:"text-gray-900 dark:text-white",children:["v",Gce]})]}),x.jsxs("button",{onClick:t,disabled:!t,className:"flex w-full items-center justify-center gap-2 rounded-md border border-gray-300 px-3 py-2 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-50 hover:border-gray-400 disabled:cursor-not-allowed disabled:opacity-50 dark:border-[#4a4b54] dark:text-[#ececf1] dark:hover:bg-[#3c3f4a] dark:hover:border-[#6b6f7a] dark:disabled:hover:bg-transparent dark:disabled:hover:border-[#4a4b54]",children:[x.jsx(SZ,{className:"h-4 w-4"}),"Settings"]}),n.length>0&&n.some(oe=>oe.messages.length>0)&&x.jsxs("button",{onClick:ce,className:"flex w-full items-center justify-center gap-2 rounded-md border border-red-300 px-3 py-2 text-sm font-medium text-red-600 hover:bg-red-50 hover:border-red-400 dark:border-red-600/40 dark:text-red-400 dark:hover:bg-red-900/20 dark:hover:border-red-500/60 transition-colors",title:"Delete all conversations",children:[x.jsx(wBe,{className:"h-4 w-4"}),"Delete Conversations"]})]}),x.jsx("div",{className:"mt-4 space-y-3",children:k&&!I&&x.jsx("p",{className:"text-xs text-red-600 dark:text-red-400",children:k})}),x.jsx("div",{className:"border-t border-gray-200 pt-4 mt-4 dark:border-[#4a4b54]",children:x.jsxs("div",{className:"relative flex items-center",children:[x.jsx(DZ,{className:"pointer-events-none absolute left-3 h-4 w-4 text-gray-400"}),x.jsx("input",{type:"text","aria-label":"Search conversations",placeholder:"Search Conversations",value:g,onChange:oe=>d(oe.target.value),className:"w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm text-[#353740] placeholder-gray-400 shadow-inner focus:border-gray-400 focus:outline-none dark:border-[#4a4b54] dark:bg-[#343541] dark:text-[#ececf1] dark:shadow-none"})]})})]}),x.jsx("div",{className:"flex-1 overflow-y-auto px-3 py-3 dark:bg-[#202123] dark:bg-none",children:G.length===0?x.jsxs("div",{className:"rounded-xl border border-dashed border-gray-300 bg-white/90 p-6 text-center text-sm text-gray-500 shadow-sm dark:border-[#4a4b54] dark:bg-[#252830] dark:text-[#bfc2cd] dark:shadow-none",children:[x.jsx(Uw,{className:"mx-auto mb-3 h-6 w-6 text-gray-400 dark:text-[#6b6f7a]"}),x.jsx("p",{children:g?"No conversations found":"No conversations yet"})]}):x.jsx("div",{className:"space-y-2",children:G.map(oe=>{const Le=Ce(oe);return x.jsx("div",{role:"button",tabIndex:0,onKeyDown:et=>{(et.key==="Enter"||et.key===" ")&&(et.preventDefault(),$(oe.id))},onClick:()=>$(oe.id),className:`group flex w-full cursor-pointer items-start rounded-xl border text-left transition shadow-sm ${L.cardGap} ${L.cardPadding} ${L.cardText} dark:shadow-none ${r===oe.id?"border-[#343541] bg-white dark:border-[#6b6f7a] dark:bg-[#2c2f36]":"border-gray-100 bg-white hover:border-gray-300 hover:bg-gray-50 dark:border-transparent dark:bg-[#252830] dark:hover:border-[#4a4b54] dark:hover:bg-[#2f323c]"} focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/70 dark:focus-visible:ring-blue-400/70`,"aria-current":r===oe.id?"true":void 0,"aria-label":`Open conversation: ${oe.title}`,children:B===oe.id?x.jsx("input",{type:"text",value:w,onChange:et=>p(et.target.value.slice(0,wf)),onKeyDown:et=>{et.key==="Enter"&&_(oe.id),et.key==="Escape"&&ue()},onBlur:()=>_(oe.id),maxLength:wf,className:`flex-1 border-none bg-transparent text-[#353740] focus:outline-none dark:text-[#ececf1] ${L.titleText}`,autoFocus:!0}):x.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[x.jsxs("div",{className:`flex items-center gap-2 ${L.cardText}`,children:[x.jsx("h3",{className:`flex-1 truncate font-semibold ${L.titleText} ${r===oe.id?"text-[#1f2937] dark:text-white":"text-gray-700 dark:text-[#d4d7e2]"}`,children:oe.title}),x.jsxs("div",{className:"flex items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100",children:[x.jsx("button",{onClick:et=>we(et,oe),className:`rounded-full text-gray-500 hover:bg-gray-200 hover:text-[#353740] dark:text-[#bfc2cd] dark:hover:bg-[#3c3f4a] ${L.actionButton}`,title:"Rename conversation","aria-label":`Rename conversation: ${oe.title}`,children:x.jsx(lBe,{className:L.actionIcon})}),x.jsx("button",{onClick:et=>le(et,oe),className:`rounded-full text-red-500 hover:bg-red-50 dark:text-red-300 dark:hover:bg-red-900/30 ${L.actionButton}`,title:"Delete conversation","aria-label":`Delete conversation: ${oe.title}`,children:x.jsx(UZ,{className:L.actionIcon})})]})]}),x.jsxs("div",{className:`mt-1 flex items-center overflow-hidden pr-1 text-gray-500 dark:text-[#a6acc5] ${L.metaGap} ${L.metaText}`,children:[x.jsx("span",{className:"min-w-0 flex-1 truncate leading-none",children:xe(oe.updatedAt)}),x.jsxs("span",{className:`inline-flex shrink-0 items-center gap-1 rounded-full bg-white/80 font-medium text-gray-600 shadow-sm dark:bg-white/10 dark:text-[#e5e7f4] leading-none ${L.badgePadding} ${L.badgeText}`,children:[x.jsx(Uw,{className:L.badgeIcon}),oe.messages.length]}),oe.attachedFiles&&oe.attachedFiles.length>0&&x.jsxs("span",{className:`inline-flex shrink-0 items-center gap-1 rounded-full bg-white/80 font-medium text-gray-600 shadow-sm dark:bg-white/10 dark:text-[#e5e7f4] leading-none ${L.badgePadding} ${L.badgeText}`,children:[x.jsx(xZ,{className:L.badgeIcon}),oe.attachedFiles.length]})]}),Le&&x.jsxs("div",{className:"flex items-center gap-2 text-[11px] uppercase tracking-wide text-gray-500 dark:text-[#a6acc5]",children:[x.jsx("span",{className:"inline-flex items-center rounded-full bg-blue-50 px-2 py-0.5 text-[10px] font-semibold text-blue-700 dark:bg-blue-900/30 dark:text-blue-200",children:"Agent"}),x.jsx("span",{className:"min-w-0 flex-1 truncate text-gray-600 dark:text-[#d4d7e2]",children:Le})]})]})},oe.id)})})})]}),x.jsx(y4,{isOpen:f.isOpen,onClose:de,onConfirm:ge,title:"Delete Conversation",message:`Are you sure you want to delete "${f.conversationTitle}"? This will clear the conversation history.`,confirmText:"Delete",cancelText:"Cancel",type:"danger",isLoading:f.isDeleting}),x.jsx(y4,{isOpen:y.isOpen,onClose:he,onConfirm:ae,title:"Clear All Conversations",message:`Are you sure you want to delete all ${W} ${Ae}? This will clear all conversation history.`,confirmText:"Clear All",cancelText:"Cancel",type:"danger",isLoading:y.isDeleting})]})}function FAt({isOpen:e,onClose:t}){const{theme:n,updateTheme:r}=Jm(),{settings:A,updateSettings:i}=Om(),[a]=m.useState(()=>vce()),[s,o]=m.useState(!1),[l,c]=m.useState(""),[u,g]=m.useState(!1),d=m.useRef(null),B=m.useRef(null),h=Q=>{r({mode:Q})},w=Q=>{r({fontSize:Q})},p=()=>{r({highContrast:!n.highContrast})},f=()=>{i({soundEnabled:!A.soundEnabled})},E=()=>{c(""),g(!1),o(!0)},y=()=>{o(!1),c(""),g(!1)},C=()=>{y(),localStorage.clear(),window.location.reload()},I=u&&l.trim().toLowerCase()==="reset";return Im(d,{enabled:e&&!s,onEscape:t}),Im(B,{enabled:s,onEscape:y}),e?x.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center p-4 z-50",children:x.jsxs("div",{ref:d,role:"dialog","aria-modal":"true","aria-labelledby":"settings-title",tabIndex:-1,className:"bg-white dark:bg-gray-800 rounded-2xl shadow-2xl w-full max-w-md max-h-[90vh] flex flex-col overflow-hidden relative",children:[x.jsxs("div",{className:"flex-shrink-0 flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-600",children:[x.jsx("h2",{id:"settings-title",className:"text-xl font-semibold text-gray-900 dark:text-gray-100",children:"Settings"}),x.jsx("button",{onClick:t,className:"p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors","aria-label":"Close settings",children:x.jsx(ag,{className:"w-5 h-5 text-gray-500 dark:text-gray-400"})})]}),x.jsxs("div",{className:"flex-1 min-h-0 p-6 space-y-6 overflow-y-auto",children:[x.jsxs("div",{className:"space-y-4",children:[x.jsxs("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100 flex items-center gap-2",children:[x.jsx(sBe,{className:"w-5 h-5"}),"Appearance"]}),x.jsxs("div",{className:"space-y-2",children:[x.jsx("label",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Theme"}),x.jsx("div",{className:"grid grid-cols-3 gap-2",children:[{value:"light",label:"Light",icon:hBe},{value:"dark",label:"Dark",icon:iBe},{value:"system",label:"System",icon:ABe}].map(({value:Q,label:D,icon:F})=>x.jsxs("button",{onClick:()=>h(Q),className:`flex flex-col items-center gap-2 p-3 rounded-lg border-2 transition-all duration-200 ${n.mode===Q?"border-blue-500 bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-300":"border-gray-200 dark:border-gray-600 hover:border-gray-300 dark:hover:border-gray-500 text-gray-700 dark:text-gray-300"}`,children:[x.jsx(F,{className:"w-5 h-5"}),x.jsx("span",{className:"text-sm font-medium",children:D})]},Q))})]}),x.jsxs("div",{className:"flex items-center justify-between",children:[x.jsxs("div",{children:[x.jsx("label",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"High Contrast"}),x.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:"Improve readability with enhanced contrast"})]}),x.jsx("button",{onClick:p,role:"switch","aria-checked":n.highContrast,"aria-label":"Toggle high contrast mode",className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${n.highContrast?"bg-blue-600":"bg-gray-200 dark:bg-gray-600"}`,children:x.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${n.highContrast?"translate-x-6":"translate-x-1"}`})})]}),x.jsxs("div",{className:"space-y-2",children:[x.jsxs("label",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 flex items-center gap-2",children:[x.jsx(EBe,{className:"w-4 h-4"}),"Font Size"]}),x.jsx("div",{className:"grid grid-cols-3 gap-2",children:[{value:"small",label:"Small"},{value:"medium",label:"Medium"},{value:"large",label:"Large"}].map(({value:Q,label:D})=>x.jsx("button",{onClick:()=>w(Q),className:`p-2 rounded-lg border-2 transition-colors text-center ${n.fontSize===Q?"border-blue-500 bg-blue-50 dark:bg-blue-900/20":"border-gray-200 dark:border-gray-600 hover:border-gray-300 dark:hover:border-gray-500"}`,children:x.jsx("span",{className:`font-medium ${Q==="small"?"text-sm":Q==="large"?"text-lg":"text-base"}`,children:D})},Q))})]})]}),x.jsxs("div",{className:"space-y-4",children:[x.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:"Chat Preferences"}),x.jsxs("div",{className:"flex items-center justify-between",children:[x.jsxs("div",{className:"flex items-center gap-2",children:[x.jsx(kw,{className:"w-4 h-4 text-gray-600 dark:text-gray-400"}),x.jsxs("div",{children:[x.jsx("label",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Sound Effects"}),x.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:"Play sounds for notifications and events"})]})]}),x.jsx("button",{onClick:f,role:"switch","aria-checked":A.soundEnabled,"aria-label":"Toggle sound effects",className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${A.soundEnabled?"bg-blue-600":"bg-gray-200 dark:bg-gray-600"}`,children:x.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${A.soundEnabled?"translate-x-6":"translate-x-1"}`})})]})]}),x.jsxs("div",{className:"space-y-4 pt-4 border-t border-gray-200 dark:border-gray-600",children:[x.jsxs("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100 flex items-center gap-2",children:[x.jsx(UZ,{className:"w-5 h-5"}),"Data Management"]}),x.jsxs("div",{className:"space-y-3",children:[x.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:"Clear all application data including conversations, and personalized settings."}),x.jsx("button",{onClick:E,className:"w-full px-4 py-2 text-sm font-medium text-red-600 dark:text-red-400 border border-red-300 dark:border-red-700 rounded-lg hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors",children:"Reset Application"})]})]}),x.jsxs("div",{className:"space-y-2 pt-4 border-t border-gray-200 dark:border-gray-600",children:[x.jsxs("h3",{className:"text-sm font-medium text-gray-700 dark:text-gray-300 flex items-center gap-2",children:[x.jsx(aBe,{className:"w-4 h-4"}),"About"]}),x.jsx("div",{className:"space-y-1",children:x.jsxs("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:[yrt()," v",(a==null?void 0:a.appVersion)||"1.0.0"]})})]})]}),s&&x.jsx("div",{className:"absolute inset-0 bg-black/70 flex items-center justify-center p-4 z-50",children:x.jsxs("div",{ref:B,role:"dialog","aria-modal":"true","aria-labelledby":"reset-dialog-title",tabIndex:-1,className:"w-full max-w-sm rounded-2xl bg-white dark:bg-gray-900 border border-red-100 dark:border-red-800 shadow-2xl p-6 space-y-4",children:[x.jsxs("div",{className:"flex items-start gap-3",children:[x.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/40",children:x.jsx(u2,{className:"w-5 h-5 text-red-600 dark:text-red-400"})}),x.jsxs("div",{children:[x.jsx("p",{id:"reset-dialog-title",className:"text-base font-semibold text-gray-900 dark:text-gray-100",children:"Reset application data?"}),x.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:["This removes everything stored on this device. Type ",x.jsx("span",{className:"font-semibold text-gray-900 dark:text-gray-100",children:"RESET"})," to continue."]})]})]}),x.jsxs("div",{className:"space-y-2",children:[x.jsx("label",{className:"text-xs font-medium text-gray-700 dark:text-gray-300",children:"Confirmation text"}),x.jsx("input",{value:l,onChange:Q=>c(Q.target.value.toUpperCase()),placeholder:"RESET",className:"w-full rounded-lg border border-gray-300 dark:border-gray-600 bg-transparent px-3 py-2 text-sm uppercase tracking-widest focus:outline-none focus:ring-2 focus:ring-red-400 dark:text-gray-100"})]}),x.jsxs("label",{className:"flex items-start gap-2 text-xs text-gray-600 dark:text-gray-400",children:[x.jsx("input",{type:"checkbox",checked:u,onChange:Q=>g(Q.target.checked),className:"mt-0.5 h-4 w-4 rounded border-gray-300 dark:border-gray-500 text-red-600 focus:ring-red-500"}),x.jsx("span",{children:"I understand this action is permanent and will reload the app."})]}),x.jsxs("div",{className:"flex gap-2 pt-2",children:[x.jsx("button",{onClick:y,className:"flex-1 px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors",children:"Cancel"}),x.jsx("button",{onClick:C,disabled:!I,className:`flex-1 px-4 py-2 text-sm font-semibold rounded-lg transition-colors ${I?"bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600":"bg-red-200 text-red-600/60 dark:bg-red-900/20 dark:text-red-400/60 cursor-not-allowed"}`,children:"Reset"})]})]})})]})}):null}function YAt({message:e}){return x.jsx("div",{className:"min-h-screen bg-slate-950 text-white flex items-center justify-center px-4 py-12",children:x.jsxs("div",{className:"max-w-lg w-full text-center space-y-6",children:[x.jsx("div",{className:"flex justify-center",children:x.jsx("div",{className:"bg-white/10 rounded-full p-4",children:x.jsx(u2,{className:"h-10 w-10 text-amber-300","aria-hidden":"true"})})}),x.jsx("div",{className:"space-y-2",children:x.jsx("p",{className:"text-2xl font-semibold tracking-tight",children:"Temporarily Unavailable"})}),x.jsx("p",{className:"text-sm text-white/60",children:e})]})})}function bAt(){const[e,t]=m.useState(!1),[n,r]=m.useState(!1),A=mrt();return A?x.jsx(Rj,{children:x.jsx(YAt,{message:A})}):x.jsx(Rj,{children:x.jsx(Hde,{children:x.jsxs("div",{className:"min-h-screen flex flex-col md:flex-row bg-white dark:bg-[#212121] text-slate-900 dark:text-slate-100",children:[x.jsx("div",{className:"hidden md:flex md:min-h-screen",children:x.jsx(I4,{onOpenSettings:()=>t(!0)})}),x.jsx("div",{className:"flex-1 flex justify-center w-full",children:x.jsx(mAt,{onOpenSettings:()=>t(!0),onOpenSidebar:()=>r(!0)})}),x.jsx(FAt,{isOpen:e,onClose:()=>t(!1)}),n&&x.jsxs("div",{className:"fixed inset-0 z-50 flex md:hidden",children:[x.jsx("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:()=>r(!1),"aria-hidden":"true"}),x.jsxs("div",{className:"relative z-10 h-full w-[min(18rem,85vw)] animate-slideIn",children:[x.jsx(I4,{onRequestClose:()=>r(!1),onOpenSettings:()=>{t(!0),r(!1)}}),x.jsx("button",{onClick:()=>r(!1),className:"absolute -right-3 top-[max(env(safe-area-inset-top),0.75rem)] rounded-full bg-white/95 p-2.5 text-gray-600 shadow-lg active:scale-95 transition-transform dark:bg-[#2d2f39] dark:text-[#ececf1]","aria-label":"Close menu",children:x.jsx(ag,{className:"h-5 w-5"})})]})]})]})})})}document.title=bce();const NAt=vce();Ue(`📱 App Version: v${NAt.appVersion}`);Lde.createRoot(document.getElementById("root")).render(x.jsx(m.StrictMode,{children:x.jsx(bAt,{})}));export{Nxe as $,Z1e as A,kAt as B,Vt as C,KAt as D,JAt as E,pr as F,gie as G,GAt as H,_B as I,xxe as J,yv as K,nze as L,Y as M,JDe as N,i3e as O,tA as P,VTe as Q,qDe as R,Xe as S,$1e as T,PAt as U,no as V,Ive as W,k8 as X,U8 as Y,fee as Z,F$ as _,fe as a,HG as a$,See as a0,RG as a1,wy as a2,cGe as a3,lGe as a4,Sg as a5,oGe as a6,sGe as a7,oE as a8,Y0 as a9,lG as aA,b8 as aB,th as aC,kTe as aD,GTe as aE,nre as aF,Yy as aG,RTe as aH,UTe as aI,FTe as aJ,CE as aK,Are as aL,sTe as aM,dv as aN,eu as aO,tre as aP,uTe as aQ,YTe as aR,Dy as aS,dje as aT,KTe as aU,I0 as aV,jDe as aW,y0 as aX,Oe as aY,tt as aZ,G$ as a_,GG as aa,UG as ab,ec as ac,sE as ad,tee as ae,RA as af,Ake as ag,wG as ah,_$ as ai,M0 as aj,vAt as ak,Xve as al,p8 as am,Sy as an,MG as ao,Cn as ap,JG as aq,Iy as ar,gDe as as,s1e as at,FG as au,OG as av,bg as aw,UAt as ax,zTe as ay,DDe as az,OAt as b,y5 as b0,m5 as b1,Lee as b2,cE as b3,TAt as b4,RAt as b5,kg as b6,Ea as b7,zAt as b8,jAt as b9,mW as bA,S0 as bB,i1e as bC,A1e as bD,QG as bE,Ve as bF,One as bG,wTe as bH,K3e as bI,sU as bJ,Fl as bK,id as bL,qne as bM,IE as bN,hv as bO,v5 as bP,N0 as bQ,Kt as bR,HAt as ba,LAt as bb,SAt as bc,rze as bd,mr as be,Yl as bf,zre as bg,ru as bh,cre as bi,ct as bj,Pa as bk,gv as bl,wje as bm,Pl as bn,Bv as bo,hje as bp,yje as bq,ad as br,gTe as bs,fje as bt,pje as bu,Xne as bv,mE as bw,L5 as bx,x0 as by,Fje as bz,VAt as c,Ut as d,KDe as e,VDe as f,WDe as g,ODe as h,k$ as i,Ti as j,lze as k,ZTe as l,nd as m,gre as n,C3e as o,ZAt as p,XAt as q,sa as r,PDe as s,XDe as t,tze as u,uv as v,S1e as w,WAt as x,Vi as y,e3e as z};
|