@useago/sdk 1.5.0 → 1.5.2

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/AgoClient-5VGybmvz.cjs +8 -0
  3. package/dist/AgoClient-DXrH2AMi.js +964 -0
  4. package/dist/angular.cjs +1 -1
  5. package/dist/angular.d.cts +79 -2
  6. package/dist/angular.d.ts +79 -2
  7. package/dist/angular.js +2 -2
  8. package/dist/{createConversationSession-BBYfQLLS.cjs → createConversationSession-0WTqcCLK.cjs} +1 -1
  9. package/dist/{createConversationSession-DCSWShaW.js → createConversationSession-DPrrr70o.js} +1 -1
  10. package/dist/createFormCollector-1GKKwQV_.cjs +1 -0
  11. package/dist/{createFormCollector-sB6rMccD.js → createFormCollector-DYh90kiG.js} +97 -91
  12. package/dist/devtools.d.cts +79 -2
  13. package/dist/devtools.d.ts +79 -2
  14. package/dist/functions-CPs7omgM.cjs +1 -0
  15. package/dist/helpers.cjs +1 -1
  16. package/dist/helpers.d.cts +5 -0
  17. package/dist/helpers.d.ts +5 -0
  18. package/dist/helpers.js +1 -1
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.d.cts +95 -4
  21. package/dist/index.d.ts +95 -4
  22. package/dist/index.js +6 -6
  23. package/dist/react.cjs +3 -3
  24. package/dist/react.d.cts +186 -4
  25. package/dist/react.d.ts +186 -4
  26. package/dist/react.js +670 -475
  27. package/dist/testing.cjs +1 -1
  28. package/dist/testing.d.cts +79 -2
  29. package/dist/testing.d.ts +79 -2
  30. package/dist/testing.js +1 -1
  31. package/dist/vue.cjs +1 -1
  32. package/dist/vue.d.cts +79 -2
  33. package/dist/vue.d.ts +79 -2
  34. package/dist/vue.js +1 -1
  35. package/dist/widget.cjs +4 -4
  36. package/dist/widget.d.cts +79 -2
  37. package/dist/widget.d.ts +79 -2
  38. package/dist/widget.js +437 -423
  39. package/llms-full.txt +74 -2
  40. package/package.json +1 -1
  41. package/dist/AgoClient-q39FIjSC.js +0 -912
  42. package/dist/AgoClient-wcPRaIMs.cjs +0 -8
  43. package/dist/createFormCollector-eimwwWEi.cjs +0 -1
  44. package/dist/functions-IGSjjvF4.cjs +0 -1
  45. package/dist/rolldown-runtime-16Nf8qvH.cjs +0 -1
  46. /package/dist/{autoContinue-D3Mmaaca.js → autoContinue-CC8K9mBU.js} +0 -0
  47. /package/dist/{autoContinue-CcCTva-D.cjs → autoContinue-CP9pJR-V.cjs} +0 -0
  48. /package/dist/{createMockClient-CjdCqixj.cjs → createMockClient-C-wrjb2C.cjs} +0 -0
  49. /package/dist/{createMockClient-BUc9PSbo.js → createMockClient-we-XoPom.js} +0 -0
  50. /package/dist/{functions-CApuQZ2b.js → functions-tzyOZNp6.js} +0 -0
package/dist/widget.cjs CHANGED
@@ -1,5 +1,5 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const se=require("./AgoClient-wcPRaIMs.cjs"),ct=require("./createFormCollector-eimwwWEi.cjs"),Gt=require("./createConversationSession-BBYfQLLS.cjs");var jt='"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',Re=`var(--ago-font, ${jt})`,pt={font:"--ago-font",radius:"--ago-radius",messageRadius:"--ago-message-radius",brand:"--ago-brand-color",brandText:"--ago-brand-text-color",headerBg:"--ago-header-background",headerText:"--ago-header-text-color",panelBg:"--ago-panel-background",messagesBg:"--ago-messages-background",text:"--ago-text-color",mutedText:"--ago-muted-text-color",border:"--ago-border-color",accent:"--ago-accent-color",agentBubbleBg:"--ago-agent-bubble-background"},Ae="var(--ago-brand-color, #03182f)",_e="var(--ago-brand-text-color, #fff)",Vt="var(--ago-header-background, var(--ago-brand-color, #03182f))",ft="var(--ago-header-text-color, #e8f0fe)",ee="var(--ago-panel-background, #fff)",xt="var(--ago-messages-background, #fbfbfb)",J="var(--ago-text-color, #30373e)",bt="var(--ago-muted-text-color, #6b6d6f)",L="var(--ago-border-color, #dee3e8)",De="var(--ago-accent-color, #1b5fc4)",ut="var(--ago-agent-bubble-background, #f1f3f5)",qt="var(--ago-radius, 16px)",ze="var(--ago-message-radius, 16px)",Kt="var(--ago-message-radius, 20px)";function Xt(n,o){if(o)for(const i of Object.keys(pt)){const r=o[i];r!=null&&n.style.setProperty(pt[i],r)}}function v(n,o){Object.assign(n.style,o)}function h(n={}){const o=document.createElement("div");return v(o,n),o}var mt="ago-chat-widget-keyframes";function Qt(){if(typeof document>"u"||document.getElementById(mt))return;const n=document.createElement("style");n.id=mt,n.textContent="@keyframes ago-pulse { 0%, 80%, 100% { opacity: 0.3; transform: scale(0.8); } 40% { opacity: 1; transform: scale(1); } }@keyframes ago-spin { to { transform: rotate(360deg); } }",document.head.appendChild(n)}function Yt(n){let o=[];const i=document.createElement("form");v(i,{display:"flex",flexDirection:"column",gap:"8px",padding:"12px",borderTop:`1px solid ${L}`,backgroundColor:ee}),i.className="ago-chat-input";const r=h({display:"flex",flexWrap:"wrap",gap:"6px"}),b=h({display:"flex",gap:"8px",alignItems:"flex-end"}),a=document.createElement("textarea");a.placeholder=n.placeholder,a.setAttribute("aria-label",n.placeholder),a.rows=1,v(a,{flex:"1",resize:"none",boxSizing:"border-box",padding:"10px 12px",border:`1px solid ${L}`,borderRadius:"12px",fontSize:"16px",fontFamily:Re,lineHeight:"1.4",maxHeight:"110px",overflowY:"hidden"});const C=()=>{a.style.height="auto";const c=Math.min(a.scrollHeight+2,110);a.style.height=`${c}px`,a.style.overflowY=a.scrollHeight+2>110?"auto":"hidden"};a.addEventListener("input",()=>{C(),A()});const m='<svg width="18" height="18" viewBox="0 -960 960 960" fill="currentColor" aria-hidden="true"><path d="M440-160v-487L216-423l-56-57 320-320 320 320-56 57-224-224v487h-80Z"/></svg>',x='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true" style="animation: ago-spin 0.8s linear infinite"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>',p=document.createElement("button");p.type="submit",p.setAttribute("aria-label","Send"),p.innerHTML=m,v(p,{flexShrink:"0",width:"40px",height:"40px",padding:"0",border:"none",borderRadius:"50%",backgroundColor:Ae,color:_e,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer"});let f=!1;const A=()=>{const s=a.value.trim()!==""||o.length>0,c=f||!s;p.disabled=c,p.innerHTML=f?x:m,p.style.opacity=c&&!f?"0.5":"1",p.style.cursor=c?"default":"pointer"};let R=null,_=null;n.allowFiles&&(R=document.createElement("input"),R.type="file",R.multiple=!0,v(R,{display:"none"}),_=document.createElement("button"),_.type="button",_.setAttribute("aria-label","Attach file"),_.textContent="📎",v(_,{padding:"10px 12px",border:`1px solid ${L}`,borderRadius:"12px",backgroundColor:ee,cursor:"pointer",fontSize:"14px"}),_.addEventListener("click",()=>R?.click()),R.addEventListener("change",()=>{o=[...o,...Array.from(R?.files??[])],Y()}));function Y(){r.replaceChildren(),o.forEach((s,c)=>{const w=h({display:"flex",alignItems:"center",gap:"4px",padding:"4px 8px",backgroundColor:"#f0f4ff",border:`1px solid ${L}`,borderRadius:"8px",fontSize:"12px"}),$=document.createElement("span");$.textContent=s.name;const I=document.createElement("button");I.type="button",I.setAttribute("aria-label",`Remove ${s.name}`),I.textContent="×",v(I,{border:"none",background:"transparent",cursor:"pointer",fontSize:"14px",lineHeight:"1"}),I.addEventListener("click",()=>{o=o.filter((j,V)=>V!==c),Y()}),w.append($,I),r.appendChild(w)}),A()}const D=()=>{const s=a.value,c=o;return a.value="",C(),o=[],Y(),{content:s,files:c}},g=()=>{const{content:s,files:c}=D();(s.trim()||c.length>0)&&n.onSend(s.trim(),c.length>0?c:void 0)};return i.addEventListener("submit",s=>{s.preventDefault(),g()}),a.addEventListener("keydown",s=>{s.key==="Enter"&&!s.shiftKey&&(s.preventDefault(),g())}),_&&b.appendChild(_),b.append(a,p),R&&i.appendChild(R),i.append(r,b),A(),{inputRow:i,getValueAndClear:D,setDisabled:s=>{a.disabled=s,f=s,A()},focus:()=>a.focus()}}var Zt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ae(n){return n.replace(/[&<>"']/g,o=>Zt[o])}function gt(n){const o=n.trim();return/^(https?:|mailto:|tel:|#|\/|\.\/|\.\.\/)/i.test(o)||!/^[a-z][a-z0-9+.-]*:/i.test(o)?o:null}var vt='"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace',Se="";function te(n){const o=[],i=b=>(o.push(b),`${Se}${o.length-1}${Se}`);let r=n;return r=r.replace(/`([^`]+)`/g,(b,a)=>i(`<code style="background:#f0f2f5;padding:2px 5px;border-radius:4px;font-size:13px;font-family:${vt}">${ae(a)}</code>`)),r=r.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g,(b,a,C)=>{const m=gt(C);return m?i(`<img alt="${ae(a)}" src="${ae(m)}" style="max-width:100%;border-radius:8px;margin:4px 0" />`):b}),r=r.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(b,a,C)=>{const m=gt(C);return m?i(`<a href="${ae(m)}" target="_blank" rel="noopener noreferrer" style="color:#1b5fc4;text-decoration:underline">${te(a)}</a>`):b}),r=ae(r),r=r.replace(/\*\*([^*]+?)\*\*/g,"<strong>$1</strong>").replace(/__([^_]+?)__/g,"<strong>$1</strong>").replace(/~~([^~]+?)~~/g,"<del>$1</del>").replace(/(^|[^*])\*(?!\s)([^*]+?)\*/g,"$1<em>$2</em>").replace(/(^|[^\w_])_(?!\s)([^_]+?)_/g,"$1<em>$2</em>"),r=r.replace(new RegExp(`${Se}(\\d+)${Se}`,"g"),(b,a)=>o[Number(a)]),r}function B(n,o,i){const r=document.createElement(n);return Object.assign(r.style,o),i!==void 0&&(r.innerHTML=i),r}var yt=/^ {0,3}([-*_])( *\1){2,} *$/,wt=/^ {0,3}(#{1,6})\s+(.*?)\s*#*\s*$/,Ct=/^ {0,3}(```+|~~~+)/,Ie=/^ {0,3}>\s?/,le=/^(\s*)([-*+]|\d+[.)])\s+(.*)$/,Jt=["20px","18px","16px","15px","14px","13px"],Fe=n=>n.match(/^\s*/)?.[0].length??0;function en(n){return n.trim()===""||yt.test(n)||wt.test(n)||Ct.test(n)||Ie.test(n)||le.test(n)}function Et(n){const o=n[0].match(le),i=o[1].length,r=/\d/.test(o[2]),b=B(r?"ol":"ul",{margin:"0 0 8px 0",paddingLeft:"20px",listStyleType:r?"decimal":"disc",listStylePosition:"outside"});let a=0;for(;a<n.length;){const C=n[a].match(le),m=[];for(a++;a<n.length&&Fe(n[a])>i;)m.push(n[a]),a++;const x=B("li",{display:"list-item",margin:"2px 0",lineHeight:"1.6"}),p=C[3].match(/^\[([ xX])\]\s+(.*)$/);p?(x.style.listStyleType="none",x.style.marginLeft="-20px",x.innerHTML=`<span style="margin-right:6px">${p[1].toLowerCase()==="x"?"☑":"☐"}</span>${te(p[2])}`):x.innerHTML=te(C[3]),m.filter(f=>le.test(f)).length>0&&x.appendChild(Et(m.filter(f=>f.trim()!==""))),b.appendChild(x)}return b}function tn(n){const o=m=>m.replace(/^\s*\|?/,"").replace(/\|?\s*$/,"").split("|").map(x=>x.trim()),i=B("div",{overflowX:"auto",margin:"0 0 8px 0"}),r=B("table",{borderCollapse:"collapse",width:"100%",fontSize:"13px"}),b=document.createElement("thead"),a=document.createElement("tr");for(const m of o(n[0]))a.appendChild(B("th",{border:"1px solid #dee3e8",padding:"6px 10px",textAlign:"left",backgroundColor:"#f5f7fa",fontWeight:"600"},te(m)));b.appendChild(a),r.appendChild(b);const C=document.createElement("tbody");for(const m of n.slice(2)){const x=document.createElement("tr");for(const p of o(m))x.appendChild(B("td",{border:"1px solid #dee3e8",padding:"6px 10px"},te(p)));C.appendChild(x)}return r.appendChild(C),i.appendChild(r),i}var nn=n=>!!n&&/^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)*\|?\s*$/.test(n);function ke(n){const o=document.createDocumentFragment(),i=n.replace(/\r\n?/g,`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const se=require("./AgoClient-5VGybmvz.cjs"),mt=require("./createFormCollector-1GKKwQV_.cjs"),Xt=require("./createConversationSession-0WTqcCLK.cjs");var Yt='"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',Ie=`var(--ago-font, ${Yt})`,gt={font:"--ago-font",radius:"--ago-radius",messageRadius:"--ago-message-radius",brand:"--ago-brand-color",brandText:"--ago-brand-text-color",headerBg:"--ago-header-background",headerText:"--ago-header-text-color",panelBg:"--ago-panel-background",messagesBg:"--ago-messages-background",text:"--ago-text-color",mutedText:"--ago-muted-text-color",border:"--ago-border-color",accent:"--ago-accent-color",agentBubbleBg:"--ago-agent-bubble-background"},_e="var(--ago-brand-color, #03182f)",Le="var(--ago-brand-text-color, #fff)",Qt="var(--ago-header-background, var(--ago-brand-color, #03182f))",ht="var(--ago-header-text-color, #e8f0fe)",te="var(--ago-panel-background, #fff)",Ct="var(--ago-messages-background, #fbfbfb)",ee="var(--ago-text-color, #30373e)",Et="var(--ago-muted-text-color, #6b6d6f)",N="var(--ago-border-color, #dee3e8)",Fe="var(--ago-accent-color, #1b5fc4)",xt="var(--ago-agent-bubble-background, #f1f3f5)",Zt="var(--ago-radius, 16px)",Pe="var(--ago-message-radius, 16px)",Jt="var(--ago-message-radius, 20px)";function en(t,o){if(o)for(const i of Object.keys(gt)){const r=o[i];r!=null&&t.style.setProperty(gt[i],r)}}function v(t,o){Object.assign(t.style,o)}function h(t={}){const o=document.createElement("div");return v(o,t),o}var bt="ago-chat-widget-keyframes";function tn(){if(typeof document>"u"||document.getElementById(bt))return;const t=document.createElement("style");t.id=bt,t.textContent="@keyframes ago-pulse { 0%, 80%, 100% { opacity: 0.3; transform: scale(0.8); } 40% { opacity: 1; transform: scale(1); } }@keyframes ago-spin { to { transform: rotate(360deg); } }",document.head.appendChild(t)}function nn(t){let o=[];const i=document.createElement("form");v(i,{display:"flex",flexDirection:"column",gap:"8px",padding:"12px",borderTop:`1px solid ${N}`,backgroundColor:te}),i.className="ago-chat-input";const r=h({display:"flex",flexWrap:"wrap",gap:"6px"}),b=h({display:"flex",gap:"8px",alignItems:"flex-end"}),a=document.createElement("textarea");a.placeholder=t.placeholder,a.setAttribute("aria-label",t.placeholder),a.rows=1,v(a,{flex:"1",resize:"none",boxSizing:"border-box",padding:"10px 12px",border:`1px solid ${N}`,borderRadius:"12px",fontSize:"16px",fontFamily:Ie,lineHeight:"1.4",maxHeight:"110px",overflowY:"hidden"});const C=()=>{a.style.height="auto";const c=Math.min(a.scrollHeight+2,110);a.style.height=`${c}px`,a.style.overflowY=a.scrollHeight+2>110?"auto":"hidden"};a.addEventListener("input",()=>{C(),I()});const m='<svg width="18" height="18" viewBox="0 -960 960 960" fill="currentColor" aria-hidden="true"><path d="M440-160v-487L216-423l-56-57 320-320 320 320-56 57-224-224v487h-80Z"/></svg>',x='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true" style="animation: ago-spin 0.8s linear infinite"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>',p=document.createElement("button");p.type="submit",p.setAttribute("aria-label","Send"),p.innerHTML=m,v(p,{flexShrink:"0",width:"40px",height:"40px",padding:"0",border:"none",borderRadius:"50%",backgroundColor:_e,color:Le,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer"});let f=!1;const I=()=>{const l=a.value.trim()!==""||o.length>0,c=f||!l;p.disabled=c,p.innerHTML=f?x:m,p.style.opacity=c&&!f?"0.5":"1",p.style.cursor=c?"default":"pointer"};let R=null,A=null;t.allowFiles&&(R=document.createElement("input"),R.type="file",R.multiple=!0,v(R,{display:"none"}),A=document.createElement("button"),A.type="button",A.setAttribute("aria-label","Attach file"),A.textContent="📎",v(A,{padding:"10px 12px",border:`1px solid ${N}`,borderRadius:"12px",backgroundColor:te,cursor:"pointer",fontSize:"14px"}),A.addEventListener("click",()=>R?.click()),R.addEventListener("change",()=>{o=[...o,...Array.from(R?.files??[])],Q()}));function Q(){r.replaceChildren(),o.forEach((l,c)=>{const w=h({display:"flex",alignItems:"center",gap:"4px",padding:"4px 8px",backgroundColor:"#f0f4ff",border:`1px solid ${N}`,borderRadius:"8px",fontSize:"12px"}),B=document.createElement("span");B.textContent=l.name;const k=document.createElement("button");k.type="button",k.setAttribute("aria-label",`Remove ${l.name}`),k.textContent="×",v(k,{border:"none",background:"transparent",cursor:"pointer",fontSize:"14px",lineHeight:"1"}),k.addEventListener("click",()=>{o=o.filter((j,V)=>V!==c),Q()}),w.append(B,k),r.appendChild(w)}),I()}const D=()=>{const l=a.value,c=o;return a.value="",C(),o=[],Q(),{content:l,files:c}},g=()=>{const{content:l,files:c}=D();(l.trim()||c.length>0)&&t.onSend(l.trim(),c.length>0?c:void 0)};return i.addEventListener("submit",l=>{l.preventDefault(),g()}),a.addEventListener("keydown",l=>{l.key==="Enter"&&!l.shiftKey&&(l.preventDefault(),g())}),A&&b.appendChild(A),b.append(a,p),R&&i.appendChild(R),i.append(r,b),I(),{inputRow:i,getValueAndClear:D,setDisabled:l=>{a.disabled=l,f=l,I()},focus:()=>a.focus()}}var on={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ae(t){return t.replace(/[&<>"']/g,o=>on[o])}function vt(t){const o=t.trim();return/^(https?:|mailto:|tel:|#|\/|\.\/|\.\.\/)/i.test(o)||!/^[a-z][a-z0-9+.-]*:/i.test(o)?o:null}var St='"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace',Re="";function ne(t){const o=[],i=b=>(o.push(b),`${Re}${o.length-1}${Re}`);let r=t;return r=r.replace(/`([^`]+)`/g,(b,a)=>i(`<code style="background:#f0f2f5;padding:2px 5px;border-radius:4px;font-size:13px;font-family:${St}">${ae(a)}</code>`)),r=r.replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g,(b,a,C)=>{const m=vt(C);return m?i(`<img alt="${ae(a)}" src="${ae(m)}" style="max-width:100%;border-radius:8px;margin:4px 0" />`):b}),r=r.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(b,a,C)=>{const m=vt(C);return m?i(`<a href="${ae(m)}" target="_blank" rel="noopener noreferrer" style="color:#1b5fc4;text-decoration:underline">${ne(a)}</a>`):b}),r=ae(r),r=r.replace(/\*\*([^*]+?)\*\*/g,"<strong>$1</strong>").replace(/__([^_]+?)__/g,"<strong>$1</strong>").replace(/~~([^~]+?)~~/g,"<del>$1</del>").replace(/(^|[^*])\*(?!\s)([^*]+?)\*/g,"$1<em>$2</em>").replace(/(^|[^\w_])_(?!\s)([^_]+?)_/g,"$1<em>$2</em>"),r=r.replace(new RegExp(`${Re}(\\d+)${Re}`,"g"),(b,a)=>o[Number(a)]),r}function O(t,o,i){const r=document.createElement(t);return Object.assign(r.style,o),i!==void 0&&(r.innerHTML=i),r}var Rt=/^ {0,3}([-*_])( *\1){2,} *$/,kt=/^ {0,3}(#{1,6})\s+(.*?)\s*#*\s*$/,It=/^ {0,3}(```+|~~~+)/,Ae=/^ {0,3}>\s?/,le=/^(\s*)([-*+]|\d+[.)])\s+(.*)$/,rn=["20px","18px","16px","15px","14px","13px"],He=t=>t.match(/^\s*/)?.[0].length??0;function an(t){return t.trim()===""||Rt.test(t)||kt.test(t)||It.test(t)||Ae.test(t)||le.test(t)}function At(t){const o=t[0].match(le),i=o[1].length,r=/\d/.test(o[2]),b=O(r?"ol":"ul",{margin:"0 0 8px 0",paddingLeft:"20px",listStyleType:r?"decimal":"disc",listStylePosition:"outside"});let a=0;for(;a<t.length;){const C=t[a].match(le),m=[];for(a++;a<t.length&&He(t[a])>i;)m.push(t[a]),a++;const x=O("li",{display:"list-item",margin:"2px 0",lineHeight:"1.6"}),p=C[3].match(/^\[([ xX])\]\s+(.*)$/);p?(x.style.listStyleType="none",x.style.marginLeft="-20px",x.innerHTML=`<span style="margin-right:6px">${p[1].toLowerCase()==="x"?"☑":"☐"}</span>${ne(p[2])}`):x.innerHTML=ne(C[3]),m.filter(f=>le.test(f)).length>0&&x.appendChild(At(m.filter(f=>f.trim()!==""))),b.appendChild(x)}return b}function sn(t){const o=m=>m.replace(/^\s*\|?/,"").replace(/\|?\s*$/,"").split("|").map(x=>x.trim()),i=O("div",{overflowX:"auto",margin:"0 0 8px 0"}),r=O("table",{borderCollapse:"collapse",width:"100%",fontSize:"13px"}),b=document.createElement("thead"),a=document.createElement("tr");for(const m of o(t[0]))a.appendChild(O("th",{border:"1px solid #dee3e8",padding:"6px 10px",textAlign:"left",backgroundColor:"#f5f7fa",fontWeight:"600"},ne(m)));b.appendChild(a),r.appendChild(b);const C=document.createElement("tbody");for(const m of t.slice(2)){const x=document.createElement("tr");for(const p of o(m))x.appendChild(O("td",{border:"1px solid #dee3e8",padding:"6px 10px"},ne(p)));C.appendChild(x)}return r.appendChild(C),i.appendChild(r),i}var ln=t=>!!t&&/^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)*\|?\s*$/.test(t);function Ne(t){const o=document.createDocumentFragment(),i=t.replace(/\r\n?/g,`
2
2
  `).split(`
3
- `);let r=0;for(;r<i.length;){const a=i[r];if(a.trim()===""){r++;continue}const C=a.match(Ct);if(C){const p=C[1][0],f=[];for(r++;r<i.length&&!new RegExp(`^ {0,3}${p==="`"?"`{3,}":"~{3,}"}\\s*$`).test(i[r]);)f.push(i[r]),r++;r++;const A=B("pre",{margin:"0 0 8px 0"});A.appendChild(B("code",{display:"block",background:"#f5f5f5",padding:"8px 12px",borderRadius:"6px",fontSize:"13px",overflowX:"auto",fontFamily:vt,whiteSpace:"pre"},ae(f.join(`
4
- `)))),o.appendChild(A);continue}if(yt.test(a)){o.appendChild(B("hr",{border:"none",borderTop:"1px solid #dee3e8",margin:"12px 0"})),r++;continue}const m=a.match(wt);if(m){const p=m[1].length;o.appendChild(B(`h${p}`,{margin:"16px 0 8px 0",fontSize:Jt[p-1],fontWeight:"600",lineHeight:"1.3"},te(m[2]))),r++;continue}if(Ie.test(a)){const p=[];for(;r<i.length&&Ie.test(i[r]);)p.push(i[r].replace(Ie,"")),r++;const f=B("blockquote",{borderLeft:"4px solid #dee3e8",paddingLeft:"12px",margin:"0 0 8px 0",fontStyle:"italic",color:"#6b6d6f"});f.appendChild(ke(p.join(`
5
- `))),o.appendChild(f);continue}if(a.includes("|")&&nn(i[r+1])){const p=[a,i[r+1]];for(r+=2;r<i.length&&i[r].includes("|")&&i[r].trim();)p.push(i[r]),r++;o.appendChild(tn(p));continue}if(le.test(a)){const p=[],f=Fe(a);for(;r<i.length&&i[r].trim()!=="";)if(le.test(i[r])||Fe(i[r])>f)p.push(i[r]),r++;else break;o.appendChild(Et(p));continue}const x=[a];for(r++;r<i.length&&!en(i[r]);)x.push(i[r]),r++;o.appendChild(B("p",{margin:"0 0 8px 0",lineHeight:"1.6"},x.map(p=>te(p)).join("<br>")))}const b=o.lastElementChild;return b&&(b.style.marginBottom="0"),o}function on(n,o){const{isLast:i,isLastOfBlock:r,bubbleStyle:b,showAgentName:a,agentBubble:C,followUpEnabled:m,followUpHandler:x,isMobile:p}=o,f=n.role==="user",A=b==="imessage",R=h({display:"flex",flexDirection:"column",alignItems:f?"flex-end":"flex-start",marginBottom:A&&!r?"2px":"16px"});if(R.className=`ago-message ago-message--${n.role}`,!f&&a&&n.agent){const g=h({fontSize:"13px",fontWeight:"500",color:J,marginBottom:"6px",padding:"0 4px"});g.className="ago-message__agent",g.textContent=n.agent.displayName||n.agent.name,R.appendChild(g)}if(!f&&n.sources&&n.sources.length>0){const g=h({display:"grid",gridTemplateColumns:"1fr 1fr",gap:"6px",marginBottom:"10px",width:"100%",maxWidth:"85%"});g.className="ago-message__sources",n.sources.forEach((s,c)=>{const w=s.url?document.createElement("a"):document.createElement("div");s.url&&w instanceof HTMLAnchorElement&&(w.href=s.url,w.target="_blank",w.rel="noopener noreferrer"),v(w,{display:"flex",alignItems:"center",gap:"8px",padding:"8px 10px",border:`1px solid ${L}`,borderRadius:"8px",backgroundColor:ee,textDecoration:"none",color:J,fontSize:"12px",overflow:"hidden"});const $=h({flexShrink:"0",width:"18px",height:"18px",borderRadius:"3px",border:`1px solid ${De}`,color:De,fontSize:"11px",fontWeight:"500",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#f0f4ff"});$.textContent=String(c+1);const I=h({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});I.textContent=s.title,I.title=s.title,w.append($,I),g.appendChild(w)}),R.appendChild(g)}if(n.attachments&&n.attachments.length>0){const g=h({display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"6px",justifyContent:f?"flex-end":"flex-start",maxWidth:"75%"});g.className="ago-message__attachments";for(const s of n.attachments){const c=se.safeAttachmentUrl(s.url);if(se.canInlineImage(s)&&c){const M=document.createElement("a");M.href=c,M.target="_blank",M.rel="noopener noreferrer",v(M,{display:"inline-block",textDecoration:"none"});const q=document.createElement("img");q.src=c,q.alt=s.name,q.loading="lazy",v(q,{maxWidth:"180px",maxHeight:"160px",objectFit:"cover",borderRadius:"10px",border:`1px solid ${L}`,display:"block"}),M.appendChild(q),g.appendChild(M);continue}const w=c?document.createElement("a"):document.createElement("div");c&&w instanceof HTMLAnchorElement&&(w.href=c,w.target="_blank",w.rel="noopener noreferrer"),v(w,{display:"inline-flex",alignItems:"center",gap:"8px",padding:"8px 12px",borderRadius:"10px",border:`1px solid ${L}`,backgroundColor:f?"rgba(255,255,255,0.12)":ee,color:f?_e:J,fontSize:"13px",textDecoration:"none",maxWidth:"220px"});const $=document.createElement("span");$.textContent="📄",$.setAttribute("aria-hidden","true"),v($,{fontSize:"16px",lineHeight:"1",flexShrink:"0"});const I=h({display:"flex",flexDirection:"column",minWidth:"0"}),j=h({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"160px"});j.textContent=s.name,j.title=s.name,I.appendChild(j);const V=se.formatFileSize(s.fileSize);if(V){const M=h({fontSize:"11px",color:bt});M.textContent=V,I.appendChild(M)}w.append($,I),g.appendChild(w)}R.appendChild(g)}const _=f||C||A,Y=!!n.content||n.status==="IN_PROGRESS"||n.status==="WAITING_CLIENT",D=h({maxWidth:_?A||f?p?"88%":"75%":p?"92%":"85%":"100%",padding:_?"10px 14px":"2px 8px",borderRadius:A?Kt:_?ze:"0",backgroundColor:f?Ae:_?ut:"transparent",color:f?_e:J,overflowWrap:"break-word",textWrap:"pretty",fontSize:"16px",lineHeight:"1.6"});if(D.className="ago-message__content",A&&r){D.style.position="relative";const g=h({position:"absolute",zIndex:"0",bottom:"-2px",width:"20px",height:"20px",background:f?Ae:ut});g.className="ago-message__tail";const s=h({position:"absolute",zIndex:"1",bottom:"-2px",width:"10px",height:"20px",background:xt});s.className="ago-message__tail-mask",f?(g.style.right="-8px",g.style.borderBottomLeftRadius="16px 14px",s.style.right="-10px",s.style.borderBottomLeftRadius="10px"):(g.style.left="-7px",g.style.borderBottomRightRadius="16px 14px",s.style.left="-10px",s.style.borderBottomRightRadius="10px"),D.append(g,s)}if(n.content?D.appendChild(ke(n.content)):(n.status==="IN_PROGRESS"||n.status==="WAITING_CLIENT")&&D.appendChild(an()),Y&&R.appendChild(D),i&&n.followUpReplies&&n.followUpReplies.length>0){const g=h({display:"flex",flexWrap:"wrap",gap:"8px",marginTop:"10px"});g.className="ago-message__followups";for(const s of n.followUpReplies){const c=document.createElement("button");c.type="button",c.className="ago-message__followup-btn",c.textContent=s,c.disabled=!m,v(c,{minHeight:"36px",padding:"6px 14px",fontSize:"14px",borderRadius:ze,border:`1px solid ${L}`,backgroundColor:ee,color:J,cursor:m?"pointer":"default",transition:"border-color 0.15s"}),x&&c.addEventListener("click",()=>x(s)),c.addEventListener("mouseenter",()=>{c.style.borderColor=De}),c.addEventListener("mouseleave",()=>{c.style.borderColor=L}),g.appendChild(c)}R.appendChild(g)}return R}function rn(n){const o=h({display:"flex",alignItems:"center",gap:"8px",padding:"10px 14px",backgroundColor:"#f0fdf4",color:"#15803d",borderRadius:ze,marginTop:"8px",fontSize:"13px",border:"1px solid #bbf7d0"});o.className="ago-form-notice",o.setAttribute("role","status");const i=document.createElement("span");i.textContent="✓",i.setAttribute("aria-hidden","true"),v(i,{fontWeight:"700"});const r=document.createElement("span");return r.textContent=n,o.append(i,r),o}function an(){const n=h({display:"flex",gap:"4px",padding:"4px 0"});for(let o=0;o<3;o++){const i=h({width:"6px",height:"6px",borderRadius:"50%",backgroundColor:"#b5bfc8",animation:"ago-pulse 1.2s ease-in-out infinite",animationDelay:`${o*.2}s`});n.appendChild(i)}return n}function sn(){const n="http://www.w3.org/2000/svg",o=document.createElementNS(n,"svg");o.setAttribute("width","26"),o.setAttribute("height","26"),o.setAttribute("viewBox","0 0 24 24"),o.setAttribute("fill","none");const i=document.createElementNS(n,"path");return i.setAttribute("d","M21 11.5a8.38 8.38 0 0 1-8.5 8.5 8.5 8.5 0 0 1-3.8-.9L3 21l1.9-5.7a8.5 8.5 0 0 1-.9-3.8 8.38 8.38 0 0 1 8.5-8.5 8.38 8.38 0 0 1 8.5 8.5z"),i.setAttribute("stroke","currentColor"),i.setAttribute("stroke-width","2"),i.setAttribute("stroke-linecap","round"),i.setAttribute("stroke-linejoin","round"),o.appendChild(i),o}var ht="Form submitted.";function ln(n){if(typeof n=="string")return n||null;if(!n||typeof n!="object")return null;const o=n;if(typeof o.message=="string"&&o.message)return o.message;const i=o.result;if(typeof i=="string"&&i)return i;if(i&&typeof i=="object"){const r=i.message;if(typeof r=="string"&&r)return r}return null}var dn=0;function cn(n){const o=typeof n=="string"?document.querySelector(n):n;if(!o)throw new Error(`mountChatWidget: target "${String(n)}" not found.`);return o}function pn(n,o){const{title:i="Chat",welcomeMessage:r="Hello! How can I help you today?",placeholder:b="Type a message...",allowFiles:a=!1,height:C=500,placement:m="inline",width:x=400,defaultOpen:p=!1,logoUrl:f,showAgentName:A=!1,agentBubble:R=!1,bubbleStyle:_="default",showHeader:Y=!0,theme:D,loadThreads:g=!1,forms:s,formSubmittedMessage:c=ht,onFollowUpClick:w,onMessageSent:$,onMessageReceived:I,onFormSubmitted:j,onFormError:V,onOpen:M,onClose:q}=o,ne=typeof r=="string"?{message:r,mode:"static"}:r,He=ne.message,Pe=ne.mode??"static",St="speed"in ne&&ne.speed||45,We="followUpReplies"in ne&&ne.followUpReplies||void 0;if(!o.client&&!o.config?.baseUrl)throw new se.AgoError("mountChatWidget requires either `client` or `config` (with a baseUrl).","config_missing_base_url");const E=o.client??new se.AgoClient(o.config),Ue=cn(n),z=m==="left"||m==="right",Rt=z&&(o.launcher??!0);let oe=z?p:!0;const It=o.mobile?.breakpoint??768,Ne=o.mobile?.trigger??"tap",Ge=typeof window<"u"&&!!window.matchMedia,O=Ge?window.matchMedia(`(max-width: ${It}px)`):void 0,At=Ge?window.matchMedia("(prefers-reduced-motion: reduce)"):void 0,re=!z&&!!O,Le=o.persistConversation,ge=Le?Gt.createConversationSession(Le===!0?{}:Le):void 0;let P=o.conversationId??ge?.getLastActiveThread()??void 0,u=[],Z=!1,de=null,K;const je=[];function _t(e){if(typeof c=="function"){const l=c(e);if(typeof l=="string"&&l)return l}const t=ln(e);return t||(typeof c=="string"?c:ht)}const he=[],d=h({display:"flex",flexDirection:"column",height:z?"100%":typeof C=="number"?`${C}px`:C,border:`1px solid ${L}`,borderRadius:qt,overflow:"hidden",backgroundColor:ee,fontFamily:Re,textAlign:"left",boxShadow:"rgba(15, 15, 15, 0.08) 0px 2px 16px 0px"});d.className="ago-chat-widget",Xt(d,D);let F;if(Y){if(F=h({padding:"14px 16px",borderBottom:`1px solid ${L}`,backgroundColor:Vt,color:ft,display:"flex",alignItems:"center",gap:"10px"}),F.className="ago-chat-widget__header",f){const t=document.createElement("img");t.src=f,t.alt="Logo",v(t,{height:"24px",width:"auto"}),F.appendChild(t)}const e=document.createElement("h3");if(e.textContent=i,v(e,{margin:"0",fontSize:"15px",fontWeight:"600"}),F.appendChild(e),z){const t=document.createElement("button");t.type="button",t.className="ago-chat-widget__close",t.setAttribute("aria-label","Close"),t.textContent="×",v(t,{marginLeft:"auto",background:"transparent",border:"none",color:ft,fontSize:"22px",lineHeight:"1",cursor:"pointer",padding:"0 2px"}),t.addEventListener("click",()=>Be()),F.appendChild(t)}}const k=h({flex:"1",overflow:"auto",padding:"16px",backgroundColor:xt});k.className="ago-chat-widget__messages",k.setAttribute("role","log"),k.setAttribute("aria-live","polite"),k.setAttribute("aria-relevant","additions text"),k.setAttribute("aria-atomic","false");const{inputRow:Te,setDisabled:kt,focus:xe}=Yt({placeholder:b,allowFiles:a,onSend:(e,t)=>{we(e,t)}});Qt(),d.append(...F?[F]:[],k,Te);let be=d,W,T;const ve=m==="left"?"left":"right";if(z&&(W=h({position:"fixed",top:"0",bottom:"0",[ve]:"0",width:typeof x=="number"?`${x}px`:x,maxWidth:"100vw",display:"flex",zIndex:"2147483000",transition:"transform 0.3s ease",boxShadow:"rgba(15, 15, 15, 0.18) 0px 0px 24px 0px"}),W.className="ago-chat-widget-panel",v(d,{height:"100%",width:"100%",borderRadius:"0",border:"none",boxShadow:"none",[ve==="left"?"borderRight":"borderLeft"]:`1px solid ${L}`}),W.appendChild(d),be=W),Rt){if(T=document.createElement("button"),T.type="button",T.className="ago-chat-widget-launcher",T.setAttribute("aria-label",`Open ${i}`),v(T,{position:"fixed",bottom:"20px",[ve]:"20px",width:"56px",height:"56px",borderRadius:"50%",border:"none",backgroundColor:Ae,color:_e,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",zIndex:"2147483000",boxShadow:"rgba(15, 15, 15, 0.2) 0px 4px 14px 0px",fontFamily:Re}),f){const e=document.createElement("img");e.src=f,e.alt="",v(e,{width:"26px",height:"26px",objectFit:"contain"}),T.appendChild(e)}else T.appendChild(sn());T.addEventListener("click",()=>Oe())}const ce=re?`ago-vt-${++dn}`:"",Ve=52;let U=!1,pe=0,ie=0,H,fe,X;const ye={height:d.style.height,border:d.style.border,borderRadius:d.style.borderRadius,boxShadow:d.style.boxShadow};Ue.appendChild(be),T&&Ue.appendChild(T),Ce(),re&&(H=Pt(),d.insertBefore(H,d.firstChild),fe=document.createElement("style"),fe.id=ce,fe.textContent=`::view-transition-group(${ce}),::view-transition-group(${ce}-bar){animation-duration:0.3s;animation-timing-function:cubic-bezier(0.4,0,0.2,1)}`,document.head.appendChild(fe),(Ne==="focus"||Ne==="tap")&&(d.addEventListener("pointerdown",e=>{if(U||!O?.matches)return;const t=Te.contains(e.target);if(Ne==="tap"){if((e.target instanceof Element?e.target:null)?.closest("button,a[href],[role='button']"))return}else if(!t)return;t&&e.preventDefault(),ue()},!0),d.addEventListener("focusin",e=>{O?.matches&&Te.contains(e.target)&&ue()})),document.addEventListener("keydown",nt)),O&&O.addEventListener("change",ot);const Nt=w!==!1,Lt=w===!1?void 0:w??(e=>{re&&O?.matches&&!U?ue().then(()=>we(e)):we(e)});function N(){if(k.replaceChildren(),u.length===0){if(Pe==="static"){const t=h({textAlign:"center",color:bt,padding:"24px 16px",fontSize:"16px",lineHeight:"1.5"});t.appendChild(ke(He)),k.appendChild(t)}}else u.forEach((t,l)=>{const S=l===u.length-1||u[l+1].role!==t.role;k.appendChild(on(t,{isLast:l===u.length-1,isLastOfBlock:S,bubbleStyle:_,showAgentName:A,agentBubble:R,followUpEnabled:Nt,followUpHandler:Lt,isMobile:!!O?.matches}))});for(const t of je)k.appendChild(rn(t));if(de){const t=h({padding:"10px 14px",backgroundColor:"#fef2f2",color:"#dc2626",borderRadius:"12px",marginTop:"8px",fontSize:"13px",border:"1px solid #fecaca"});t.setAttribute("role","alert"),t.textContent=de,k.appendChild(t)}k.scrollTop=k.scrollHeight;const e=u[u.length-1];kt(Z&&e?.role==="assistant"&&(e.status==="IN_PROGRESS"||e.status==="WAITING_CLIENT"))}function Tt(){for(let e=u.length-1;e>=0;e--){const t=u[e];if(t.role==="assistant"&&(t.status==="IN_PROGRESS"||t.status==="WAITING_CLIENT"))return t}}const qe=e=>{P||(P=e.conversationId)},Ke=e=>{const t=Tt();t&&(t.content+=e.content,N())},Xe=e=>{const t=u.findIndex(l=>l.id===e.id||l.role==="assistant"&&l.status==="IN_PROGRESS");t>=0?u[t]=e:u.push(e),N(),xe()},Qe=e=>{const t=u.findIndex(l=>l.id===e.id||l.role==="assistant"&&l.status==="IN_PROGRESS");t>=0?u[t]=e:u.push(e),Z=!1,N(),e.status==="DONE"&&I?.({id:e.id,content:e.content})},Ye=e=>{de=e.error,Z=!1,u=u.filter(t=>!t.id.startsWith("temp-")),N()};function $t(e){const t={id:`ago-intro-${Date.now()}`,conversationId:"",content:"",role:"assistant",status:"IN_PROGRESS",createdAt:new Date};u.push(t),N();const l=e.match(/\S+\s*/g)??[e];let S=0;K=setInterval(()=>{if(S>=l.length){clearInterval(K),K=void 0,t.status="DONE",We&&(t.followUpReplies=We),N();return}t.content+=l[S],S++,N()},St)}E.on("message:start",qe),E.on("message:chunk",Ke),E.on("message:answer-complete",Xe),E.on("message:complete",Qe),E.on("message:error",Ye);const Ze=e=>j?.(e),Je=e=>V?.(e);j&&E.on("form:submitted",Ze),V&&E.on("form:error",Je);const $e=[];let et=!1;const tt=e=>{if(et)return;$e.push(e.install(E));let t=e.store.get().submitted;const l=e.store.subscribe(S=>{S.submitted&&!t&&(je.push(_t(S.submitResult)),N()),t=S.submitted});$e.push(l)};for(const e of s??[])e.schema!=null?tt(ct.createFormCollector(e)):ct.loadFormCollector(E,e).then(t=>tt(t)).catch(()=>{});async function we(e,t){const l=e.trim();if(!l&&!t?.length||Z)return;if($?.(l),Z=!0,de=null,K){clearInterval(K),K=void 0;const y=u.find(G=>G.id.startsWith("ago-intro-"));y&&!y.content?u=u.filter(G=>G!==y):y&&(y.status="DONE")}const S=Date.now();u.push({id:`temp-user-${S}`,conversationId:P||"",content:l,role:"user",status:"DONE",attachments:t&&t.length>0?se.attachmentsFromFiles(t):void 0,createdAt:new Date}),u.push({id:`temp-assistant-${S}`,conversationId:P||"",content:"",role:"assistant",status:"IN_PROGRESS",createdAt:new Date}),N();try{const y=await E.sendMessage(l,{conversationId:P,files:t});y.conversationId&&(P||(P=y.conversationId),ge?.setActiveThread(y.conversationId,y.createdAt));const G=u.find(Q=>Q.id===`temp-user-${S}`);if(G&&(G.id=`user-${S}`,G.conversationId=y.conversationId),!u.some(Q=>Q.id===y.id)){const Q=u.findIndex(Ut=>Ut.id===`temp-assistant-${S}`);Q>=0?u[Q]=y:u.push(y)}u=u.filter(Q=>!Q.id.startsWith("temp-")),y.status!=="WAITING_CLIENT"&&(Z=!1),N(),g&&Me()}catch(y){de=y instanceof Error?y.message:"Failed to send message",Z=!1,u=u.filter(G=>!G.id.startsWith("temp-")),N()}}async function Me(){try{const e=await E.getConversations();he.splice(0,he.length,...e)}catch{}return he}async function Mt(e){try{const t=(await E.getConversation(e))?.messages??[];t.length>0&&u.length===0&&(u=t,N())}catch{u.length===0&&(ge?.clear(),P=void 0)}}return N(),re&&O?.matches||xe(),P?Mt(P):Pe==="streaming"&&$t(He),g&&Me(),{client:E,element:be,sendMessage:we,...z||re?{open:Bt,close:Dt,toggle:zt}:{},session:ge,threads:he,refreshThreads:Me,destroy(){K&&clearInterval(K),E.off("message:start",qe),E.off("message:chunk",Ke),E.off("message:answer-complete",Xe),E.off("message:complete",Qe),E.off("message:error",Ye),j&&E.off("form:submitted",Ze),V&&E.off("form:error",Je),et=!0,$e.forEach(e=>e()),be.remove(),T?.remove(),H?.remove(),fe?.remove(),X?.remove(),O?.removeEventListener("change",ot),re&&(document.removeEventListener("keydown",nt),at(),document.documentElement.style.removeProperty("overflow")),o.client||E.destroy()}};function Ce(){if(!W)return;{const t=ve==="left"?"border-right":"border-left";O?.matches?(W.style.width="100%",d.style.borderRadius="0",d.style.removeProperty(t)):(W.style.width=typeof x=="number"?`${x}px`:x,d.style.setProperty(t,`1px solid ${L}`))}const e=m==="left"?"translateX(-100%)":"translateX(100%)";W.style.transform=oe?"translateX(0)":e,W.setAttribute("aria-hidden",oe?"false":"true"),T&&(T.style.display=oe?"none":"flex")}function Oe(){oe=!0,Ce(),xe(),M?.()}function Be(){oe=!1,Ce(),q?.()}function Ot(){oe?Be():Oe()}function Bt(){z?Oe():ue()}function Dt(){z?Be():me()}function zt(){z?Ot():U?me():ue()}function Ft(){return Array.from(d.querySelectorAll('a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])')).filter(e=>e.getClientRects().length>0)}function nt(e){if(!U)return;if(e.key==="Escape"){me();return}if(e.key!=="Tab")return;const t=Ft();if(t.length===0){e.preventDefault();return}const l=t[0],S=t[t.length-1],y=document.activeElement;e.shiftKey&&(y===l||!d.contains(y))?(e.preventDefault(),S.focus()):!e.shiftKey&&(y===S||!d.contains(y))&&(e.preventDefault(),l.focus())}function ot(e){z?Ce():!e.matches&&U&&me(),N()}function rt(){return window.visualViewport?.height??window.innerHeight}function it(){const e=window.visualViewport,t=e?.offsetTop??0,l=e?.height??pe,S=Math.min(0,t+l-pe);d.style.top=`${S}px`,H&&(H.style.top=`${t}px`)}function Ee(){ie||(ie=requestAnimationFrame(()=>{ie=0,it()}))}function Ht(){window.visualViewport?.addEventListener("resize",Ee),window.visualViewport?.addEventListener("scroll",Ee)}function at(){window.visualViewport?.removeEventListener("resize",Ee),window.visualViewport?.removeEventListener("scroll",Ee),ie&&(cancelAnimationFrame(ie),ie=0)}function st(){k.scrollTop=k.scrollHeight}function Pt(){const e=h({position:"fixed",top:"0",left:"0",right:"0",height:`calc(${Ve}px + env(safe-area-inset-top))`,display:"none",alignItems:"center",justifyContent:"space-between",padding:"env(safe-area-inset-top) 14px 0",backgroundColor:ee,borderBottom:`1px solid ${L}`,zIndex:"2147483001",fontFamily:Re});if(e.className="ago-chat-widget-mobile-bar",f){const l=document.createElement("img");l.src=f,l.alt="",v(l,{height:"28px",width:"auto"}),e.appendChild(l)}else if(i){const l=document.createElement("span");l.textContent=i,v(l,{fontSize:"15px",fontWeight:"600",color:J,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}),e.appendChild(l)}else e.appendChild(h({}));const t=document.createElement("button");return t.type="button",t.setAttribute("aria-label","Close"),t.textContent="×",v(t,{border:"none",background:"transparent",fontSize:"26px",lineHeight:"1",color:J,cursor:"pointer",padding:"4px 8px"}),t.addEventListener("click",()=>{me()}),e.appendChild(t),e}function Wt(){return typeof document.startViewTransition=="function"&&!At?.matches&&!!O?.matches}function lt(e){const t=document;if(Wt()&&t.startViewTransition){d.style.setProperty("view-transition-name",ce),H?.style.setProperty("view-transition-name",`${ce}-bar`);const l=()=>{d.style.removeProperty("view-transition-name"),H?.style.removeProperty("view-transition-name")};return t.startViewTransition(e).finished.then(l,l)}return e(),Promise.resolve()}function dt(e){if(e)X&&d.parentElement?.insertBefore(X,d),v(d,{position:"fixed",top:"0",left:"0",right:"0",bottom:"0",height:"var(--ago-vh, 100dvh)",zIndex:"2147483000",border:"none",borderRadius:"0",boxShadow:"none",paddingTop:`calc(${Ve}px + env(safe-area-inset-top))`,paddingBottom:"env(safe-area-inset-bottom)"}),d.setAttribute("role","dialog"),d.setAttribute("aria-modal","true"),d.setAttribute("aria-label",i),document.documentElement.style.overflow="hidden",F&&(F.style.display="none"),H&&(H.style.display="flex");else{X?.remove(),X=void 0;for(const t of["position","top","left","right","bottom","z-index","padding-top","padding-bottom"])d.style.removeProperty(t);d.style.height=ye.height,d.style.border=ye.border,d.style.borderRadius=ye.borderRadius,d.style.boxShadow=ye.boxShadow,d.removeAttribute("role"),d.removeAttribute("aria-modal"),d.removeAttribute("aria-label"),document.documentElement.style.removeProperty("overflow"),F&&(F.style.display="flex"),H&&(H.style.display="none")}}function ue(){if(U||!O?.matches)return Promise.resolve();const e=d.getBoundingClientRect();if(e.height>=rt()*.8)return Promise.resolve();U=!0,X=h({width:`${e.width}px`,height:`${e.height}px`}),X.className="ago-chat-widget-spacer",X.setAttribute("aria-hidden","true"),pe=rt(),d.style.setProperty("--ago-vh",`${pe}px`),it(),Ht();const t=lt(()=>dt(!0));return t.then(()=>{st(),xe()}),st(),M?.(),t}function me(){if(!U)return Promise.resolve();U=!1,at(),d.querySelector("textarea")?.blur();const e=lt(()=>dt(!1));return e.then(()=>d.style.removeProperty("--ago-vh")),pe=0,q?.(),e}}exports.mountChatWidget=pn;exports.renderMarkdown=ke;
3
+ `);let r=0;for(;r<i.length;){const a=i[r];if(a.trim()===""){r++;continue}const C=a.match(It);if(C){const p=C[1][0],f=[];for(r++;r<i.length&&!new RegExp(`^ {0,3}${p==="`"?"`{3,}":"~{3,}"}\\s*$`).test(i[r]);)f.push(i[r]),r++;r++;const I=O("pre",{margin:"0 0 8px 0"});I.appendChild(O("code",{display:"block",background:"#f5f5f5",padding:"8px 12px",borderRadius:"6px",fontSize:"13px",overflowX:"auto",fontFamily:St,whiteSpace:"pre"},ae(f.join(`
4
+ `)))),o.appendChild(I);continue}if(Rt.test(a)){o.appendChild(O("hr",{border:"none",borderTop:"1px solid #dee3e8",margin:"12px 0"})),r++;continue}const m=a.match(kt);if(m){const p=m[1].length;o.appendChild(O(`h${p}`,{margin:"16px 0 8px 0",fontSize:rn[p-1],fontWeight:"600",lineHeight:"1.3"},ne(m[2]))),r++;continue}if(Ae.test(a)){const p=[];for(;r<i.length&&Ae.test(i[r]);)p.push(i[r].replace(Ae,"")),r++;const f=O("blockquote",{borderLeft:"4px solid #dee3e8",paddingLeft:"12px",margin:"0 0 8px 0",fontStyle:"italic",color:"#6b6d6f"});f.appendChild(Ne(p.join(`
5
+ `))),o.appendChild(f);continue}if(a.includes("|")&&ln(i[r+1])){const p=[a,i[r+1]];for(r+=2;r<i.length&&i[r].includes("|")&&i[r].trim();)p.push(i[r]),r++;o.appendChild(sn(p));continue}if(le.test(a)){const p=[],f=He(a);for(;r<i.length&&i[r].trim()!=="";)if(le.test(i[r])||He(i[r])>f)p.push(i[r]),r++;else break;o.appendChild(At(p));continue}const x=[a];for(r++;r<i.length&&!an(i[r]);)x.push(i[r]),r++;o.appendChild(O("p",{margin:"0 0 8px 0",lineHeight:"1.6"},x.map(p=>ne(p)).join("<br>")))}const b=o.lastElementChild;return b&&(b.style.marginBottom="0"),o}function dn(t,o){const{isLast:i,isLastOfBlock:r,bubbleStyle:b,showAgentName:a,agentBubble:C,followUpEnabled:m,followUpHandler:x,isMobile:p}=o,f=t.role==="user",I=b==="imessage",R=h({display:"flex",flexDirection:"column",alignItems:f?"flex-end":"flex-start",marginBottom:I&&!r?"2px":"16px"});if(R.className=`ago-message ago-message--${t.role}`,!f&&a&&t.agent){const g=h({fontSize:"13px",fontWeight:"500",color:ee,marginBottom:"6px",padding:"0 4px"});g.className="ago-message__agent",g.textContent=t.agent.displayName||t.agent.name,R.appendChild(g)}if(!f&&t.sources&&t.sources.length>0){const g=h({display:"grid",gridTemplateColumns:"1fr 1fr",gap:"6px",marginBottom:"10px",width:"100%",maxWidth:"85%"});g.className="ago-message__sources",t.sources.forEach((l,c)=>{const w=l.url?document.createElement("a"):document.createElement("div");l.url&&w instanceof HTMLAnchorElement&&(w.href=l.url,w.target="_blank",w.rel="noopener noreferrer"),v(w,{display:"flex",alignItems:"center",gap:"8px",padding:"8px 10px",border:`1px solid ${N}`,borderRadius:"8px",backgroundColor:te,textDecoration:"none",color:ee,fontSize:"12px",overflow:"hidden"});const B=h({flexShrink:"0",width:"18px",height:"18px",borderRadius:"3px",border:`1px solid ${Fe}`,color:Fe,fontSize:"11px",fontWeight:"500",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#f0f4ff"});B.textContent=String(c+1);const k=h({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});k.textContent=l.title,k.title=l.title,w.append(B,k),g.appendChild(w)}),R.appendChild(g)}if(t.attachments&&t.attachments.length>0){const g=h({display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"6px",justifyContent:f?"flex-end":"flex-start",maxWidth:"75%"});g.className="ago-message__attachments";for(const l of t.attachments){const c=se.safeAttachmentUrl(l.url);if(se.canInlineImage(l)&&c){const M=document.createElement("a");M.href=c,M.target="_blank",M.rel="noopener noreferrer",v(M,{display:"inline-block",textDecoration:"none"});const q=document.createElement("img");q.src=c,q.alt=l.name,q.loading="lazy",v(q,{maxWidth:"180px",maxHeight:"160px",objectFit:"cover",borderRadius:"10px",border:`1px solid ${N}`,display:"block"}),M.appendChild(q),g.appendChild(M);continue}const w=c?document.createElement("a"):document.createElement("div");c&&w instanceof HTMLAnchorElement&&(w.href=c,w.target="_blank",w.rel="noopener noreferrer"),v(w,{display:"inline-flex",alignItems:"center",gap:"8px",padding:"8px 12px",borderRadius:"10px",border:`1px solid ${N}`,backgroundColor:f?"rgba(255,255,255,0.12)":te,color:f?Le:ee,fontSize:"13px",textDecoration:"none",maxWidth:"220px"});const B=document.createElement("span");B.textContent="📄",B.setAttribute("aria-hidden","true"),v(B,{fontSize:"16px",lineHeight:"1",flexShrink:"0"});const k=h({display:"flex",flexDirection:"column",minWidth:"0"}),j=h({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"160px"});j.textContent=l.name,j.title=l.name,k.appendChild(j);const V=se.formatFileSize(l.fileSize);if(V){const M=h({fontSize:"11px",color:Et});M.textContent=V,k.appendChild(M)}w.append(B,k),g.appendChild(w)}R.appendChild(g)}const A=f||C||I,Q=!!t.content||t.status==="IN_PROGRESS"||t.status==="WAITING_CLIENT",D=h({maxWidth:A?I||f?p?"88%":"75%":p?"92%":"85%":"100%",padding:A?"10px 14px":"2px 8px",borderRadius:I?Jt:A?Pe:"0",backgroundColor:f?_e:A?xt:"transparent",color:f?Le:ee,overflowWrap:"break-word",textWrap:"pretty",fontSize:"16px",lineHeight:"1.6"});if(D.className="ago-message__content",I&&r){D.style.position="relative";const g=h({position:"absolute",zIndex:"0",bottom:"-2px",width:"20px",height:"20px",background:f?_e:xt});g.className="ago-message__tail";const l=h({position:"absolute",zIndex:"1",bottom:"-2px",width:"10px",height:"20px",background:Ct});l.className="ago-message__tail-mask",f?(g.style.right="-8px",g.style.borderBottomLeftRadius="16px 14px",l.style.right="-10px",l.style.borderBottomLeftRadius="10px"):(g.style.left="-7px",g.style.borderBottomRightRadius="16px 14px",l.style.left="-10px",l.style.borderBottomRightRadius="10px"),D.append(g,l)}if(t.content?D.appendChild(Ne(t.content)):(t.status==="IN_PROGRESS"||t.status==="WAITING_CLIENT")&&D.appendChild(pn()),Q&&R.appendChild(D),i&&t.followUpReplies&&t.followUpReplies.length>0){const g=h({display:"flex",flexWrap:"wrap",gap:"8px",marginTop:"10px"});g.className="ago-message__followups";for(const l of t.followUpReplies){const c=document.createElement("button");c.type="button",c.className="ago-message__followup-btn",c.textContent=l,c.disabled=!m,v(c,{minHeight:"36px",padding:"6px 14px",fontSize:"14px",borderRadius:Pe,border:`1px solid ${N}`,backgroundColor:te,color:ee,cursor:m?"pointer":"default",transition:"border-color 0.15s"}),x&&c.addEventListener("click",()=>x(l)),c.addEventListener("mouseenter",()=>{c.style.borderColor=Fe}),c.addEventListener("mouseleave",()=>{c.style.borderColor=N}),g.appendChild(c)}R.appendChild(g)}return R}function cn(t){const o=h({display:"flex",alignItems:"center",gap:"8px",padding:"10px 14px",backgroundColor:"#f0fdf4",color:"#15803d",borderRadius:Pe,marginTop:"8px",fontSize:"13px",border:"1px solid #bbf7d0"});o.className="ago-form-notice",o.setAttribute("role","status");const i=document.createElement("span");i.textContent="✓",i.setAttribute("aria-hidden","true"),v(i,{fontWeight:"700"});const r=document.createElement("span");return r.textContent=t,o.append(i,r),o}function pn(){const t=h({display:"flex",gap:"4px",padding:"4px 0"});for(let o=0;o<3;o++){const i=h({width:"6px",height:"6px",borderRadius:"50%",backgroundColor:"#b5bfc8",animation:"ago-pulse 1.2s ease-in-out infinite",animationDelay:`${o*.2}s`});t.appendChild(i)}return t}function fn(){const t="http://www.w3.org/2000/svg",o=document.createElementNS(t,"svg");o.setAttribute("width","26"),o.setAttribute("height","26"),o.setAttribute("viewBox","0 0 24 24"),o.setAttribute("fill","none");const i=document.createElementNS(t,"path");return i.setAttribute("d","M21 11.5a8.38 8.38 0 0 1-8.5 8.5 8.5 8.5 0 0 1-3.8-.9L3 21l1.9-5.7a8.5 8.5 0 0 1-.9-3.8 8.38 8.38 0 0 1 8.5-8.5 8.38 8.38 0 0 1 8.5 8.5z"),i.setAttribute("stroke","currentColor"),i.setAttribute("stroke-width","2"),i.setAttribute("stroke-linecap","round"),i.setAttribute("stroke-linejoin","round"),o.appendChild(i),o}var yt="Form submitted.";function un(t){if(typeof t=="string")return t||null;if(!t||typeof t!="object")return null;const o=t;if(typeof o.message=="string"&&o.message)return o.message;const i=o.result;if(typeof i=="string"&&i)return i;if(i&&typeof i=="object"){const r=i.message;if(typeof r=="string"&&r)return r}return null}var mn=0,We=0,Ue=0;function wt(){if(We++>0)return;Ue=window.scrollY;const{style:t}=document.body;t.position="fixed",t.top=`-${Ue}px`,t.left="0",t.right="0",t.width="100%",document.documentElement.style.overflow="hidden"}function ke(){if(We===0||--We>0)return;const{style:t}=document.body;t.removeProperty("position"),t.removeProperty("top"),t.removeProperty("left"),t.removeProperty("right"),t.removeProperty("width"),document.documentElement.style.removeProperty("overflow"),window.scrollTo(0,Ue)}function gn(t){const o=typeof t=="string"?document.querySelector(t):t;if(!o)throw new Error(`mountChatWidget: target "${String(t)}" not found.`);return o}function hn(t,o){const{title:i="Chat",welcomeMessage:r="Hello! How can I help you today?",placeholder:b="Type a message...",allowFiles:a=!1,height:C=500,placement:m="inline",width:x=400,defaultOpen:p=!1,logoUrl:f,showAgentName:I=!1,agentBubble:R=!1,bubbleStyle:A="default",showHeader:Q=!0,theme:D,loadThreads:g=!1,forms:l,formSubmittedMessage:c=yt,onFollowUpClick:w,onMessageSent:B,onMessageReceived:k,onFormSubmitted:j,onFormError:V,onOpen:M,onClose:q}=o,oe=typeof r=="string"?{message:r,mode:"static"}:r,Ge=oe.message,je=oe.mode??"static",_t="speed"in oe&&oe.speed||45,Ve="followUpReplies"in oe&&oe.followUpReplies||void 0;if(!o.client&&!o.config?.baseUrl)throw new se.AgoError("mountChatWidget requires either `client` or `config` (with a baseUrl).","config_missing_base_url");const E=o.client??new se.AgoClient(o.config),qe=gn(t),z=m==="left"||m==="right",Lt=z&&(o.launcher??!0);let Z=z?p:!0,ge=!1;const Nt=o.mobile?.breakpoint??768,Te=o.mobile?.trigger??"tap",Ke=typeof window<"u"&&!!window.matchMedia,T=Ke?window.matchMedia(`(max-width: ${Nt}px)`):void 0,Tt=Ke?window.matchMedia("(prefers-reduced-motion: reduce)"):void 0,re=!z&&!!T,$e=o.persistConversation,he=$e?Xt.createConversationSession($e===!0?{}:$e):void 0;let H=o.conversationId??he?.getLastActiveThread()??void 0,u=[],J=!1,de=null,K;const Xe=[];function $t(e){if(typeof c=="function"){const s=c(e);if(typeof s=="string"&&s)return s}const n=un(e);return n||(typeof c=="string"?c:yt)}const xe=[],d=h({display:"flex",flexDirection:"column",height:z?"100%":typeof C=="number"?`${C}px`:C,border:`1px solid ${N}`,borderRadius:Zt,overflow:"hidden",backgroundColor:te,fontFamily:Ie,textAlign:"left",boxShadow:"rgba(15, 15, 15, 0.08) 0px 2px 16px 0px"});d.className="ago-chat-widget",en(d,D);let F;if(Q){if(F=h({padding:"14px 16px",borderBottom:`1px solid ${N}`,backgroundColor:Qt,color:ht,display:"flex",alignItems:"center",gap:"10px"}),F.className="ago-chat-widget__header",f){const n=document.createElement("img");n.src=f,n.alt="Logo",v(n,{height:"24px",width:"auto"}),F.appendChild(n)}const e=document.createElement("h3");if(e.textContent=i,v(e,{margin:"0",fontSize:"15px",fontWeight:"600"}),F.appendChild(e),z){const n=document.createElement("button");n.type="button",n.className="ago-chat-widget__close",n.setAttribute("aria-label","Close"),n.textContent="×",v(n,{marginLeft:"auto",background:"transparent",border:"none",color:ht,fontSize:"22px",lineHeight:"1",cursor:"pointer",padding:"0 2px"}),n.addEventListener("click",()=>ze()),F.appendChild(n)}}const _=h({flex:"1",overflow:"auto",overscrollBehavior:"contain",padding:"16px",backgroundColor:Ct});_.className="ago-chat-widget__messages",_.setAttribute("role","log"),_.setAttribute("aria-live","polite"),_.setAttribute("aria-relevant","additions text"),_.setAttribute("aria-atomic","false");const{inputRow:Be,setDisabled:Bt,focus:be}=nn({placeholder:b,allowFiles:a,onSend:(e,n)=>{Ce(e,n)}});tn(),d.append(...F?[F]:[],_,Be);let ve=d,U,$;const ye=m==="left"?"left":"right";if(z&&(U=h({position:"fixed",top:"0",bottom:"0",[ye]:"0",width:typeof x=="number"?`${x}px`:x,maxWidth:"100vw",display:"flex",zIndex:"2147483000",transition:"transform 0.3s ease",boxShadow:"rgba(15, 15, 15, 0.18) 0px 0px 24px 0px"}),U.className="ago-chat-widget-panel",v(d,{height:"100%",width:"100%",borderRadius:"0",border:"none",boxShadow:"none",[ye==="left"?"borderRight":"borderLeft"]:`1px solid ${N}`}),U.appendChild(d),ve=U),Lt){if($=document.createElement("button"),$.type="button",$.className="ago-chat-widget-launcher",$.setAttribute("aria-label",`Open ${i}`),v($,{position:"fixed",bottom:"20px",[ye]:"20px",width:"56px",height:"56px",borderRadius:"50%",border:"none",backgroundColor:_e,color:Le,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",zIndex:"2147483000",boxShadow:"rgba(15, 15, 15, 0.2) 0px 4px 14px 0px",fontFamily:Ie}),f){const e=document.createElement("img");e.src=f,e.alt="",v(e,{width:"26px",height:"26px",objectFit:"contain"}),$.appendChild(e)}else $.appendChild(fn());$.addEventListener("click",()=>De())}const ce=re?`ago-vt-${++mn}`:"",Ye=52;let W=!1,pe=0,ie=0,P,fe,X;const we={height:d.style.height,border:d.style.border,borderRadius:d.style.borderRadius,boxShadow:d.style.boxShadow};qe.appendChild(ve),$&&qe.appendChild($),Ee(),re&&(P=Vt(),d.insertBefore(P,d.firstChild),fe=document.createElement("style"),fe.id=ce,fe.textContent=`::view-transition-group(${ce}),::view-transition-group(${ce}-bar){animation-duration:0.3s;animation-timing-function:cubic-bezier(0.4,0,0.2,1)}`,document.head.appendChild(fe),(Te==="focus"||Te==="tap")&&(d.addEventListener("pointerdown",e=>{if(W||!T?.matches)return;const n=Be.contains(e.target);if(Te==="tap"){if((e.target instanceof Element?e.target:null)?.closest("button,a[href],[role='button']"))return}else if(!n)return;n&&e.preventDefault(),ue()},!0),d.addEventListener("focusin",e=>{T?.matches&&Be.contains(e.target)&&ue()})),document.addEventListener("keydown",at)),T&&T.addEventListener("change",st);const Mt=w!==!1,Ot=w===!1?void 0:w??(e=>{re&&T?.matches&&!W?ue().then(()=>Ce(e)):Ce(e)});function L(){if(_.replaceChildren(),u.length===0){if(je==="static"){const n=h({textAlign:"center",color:Et,padding:"24px 16px",fontSize:"16px",lineHeight:"1.5"});n.appendChild(Ne(Ge)),_.appendChild(n)}}else u.forEach((n,s)=>{const S=s===u.length-1||u[s+1].role!==n.role;_.appendChild(dn(n,{isLast:s===u.length-1,isLastOfBlock:S,bubbleStyle:A,showAgentName:I,agentBubble:R,followUpEnabled:Mt,followUpHandler:Ot,isMobile:!!T?.matches}))});for(const n of Xe)_.appendChild(cn(n));if(de){const n=h({padding:"10px 14px",backgroundColor:"#fef2f2",color:"#dc2626",borderRadius:"12px",marginTop:"8px",fontSize:"13px",border:"1px solid #fecaca"});n.setAttribute("role","alert"),n.textContent=de,_.appendChild(n)}_.scrollTop=_.scrollHeight;const e=u[u.length-1];Bt(J&&e?.role==="assistant"&&(e.status==="IN_PROGRESS"||e.status==="WAITING_CLIENT"))}function Dt(){for(let e=u.length-1;e>=0;e--){const n=u[e];if(n.role==="assistant"&&(n.status==="IN_PROGRESS"||n.status==="WAITING_CLIENT"))return n}}const Qe=e=>{H||(H=e.conversationId)},Ze=e=>{const n=Dt();n&&(n.content+=e.content,L())},Je=e=>{const n=u.findIndex(s=>s.id===e.id||s.role==="assistant"&&s.status==="IN_PROGRESS");n>=0?u[n]=e:u.push(e),L(),be()},et=e=>{const n=u.findIndex(s=>s.id===e.id||s.role==="assistant"&&s.status==="IN_PROGRESS");n>=0?u[n]=e:u.push(e),J=!1,L(),e.status==="DONE"&&k?.({id:e.id,content:e.content})},tt=e=>{de=e.error,J=!1,u=u.filter(n=>!n.id.startsWith("temp-")),L()};function zt(e){const n={id:`ago-intro-${Date.now()}`,conversationId:"",content:"",role:"assistant",status:"IN_PROGRESS",createdAt:new Date};u.push(n),L();const s=e.match(/\S+\s*/g)??[e];let S=0;K=setInterval(()=>{if(S>=s.length){clearInterval(K),K=void 0,n.status="DONE",Ve&&(n.followUpReplies=Ve),L();return}n.content+=s[S],S++,L()},_t)}E.on("message:start",Qe),E.on("message:chunk",Ze),E.on("message:answer-complete",Je),E.on("message:complete",et),E.on("message:error",tt);const nt=e=>j?.(e),ot=e=>V?.(e);j&&E.on("form:submitted",nt),V&&E.on("form:error",ot);const Me=[];let rt=!1;const it=e=>{if(rt)return;Me.push(e.install(E));let n=e.store.get().submitted;const s=e.store.subscribe(S=>{S.submitted&&!n&&(Xe.push($t(S.submitResult)),L()),n=S.submitted});Me.push(s)};for(const e of l??[])e.schema!=null?it(mt.createFormCollector(e)):mt.loadFormCollector(E,e).then(n=>it(n)).catch(()=>{});async function Ce(e,n){const s=e.trim();if(!s&&!n?.length||J)return;if(B?.(s),J=!0,de=null,K){clearInterval(K),K=void 0;const y=u.find(G=>G.id.startsWith("ago-intro-"));y&&!y.content?u=u.filter(G=>G!==y):y&&(y.status="DONE")}const S=Date.now();u.push({id:`temp-user-${S}`,conversationId:H||"",content:s,role:"user",status:"DONE",attachments:n&&n.length>0?se.attachmentsFromFiles(n):void 0,createdAt:new Date}),u.push({id:`temp-assistant-${S}`,conversationId:H||"",content:"",role:"assistant",status:"IN_PROGRESS",createdAt:new Date}),L();try{const y=await E.sendMessage(s,{conversationId:H,files:n});y.conversationId&&(H||(H=y.conversationId),he?.setActiveThread(y.conversationId,y.createdAt));const G=u.find(Y=>Y.id===`temp-user-${S}`);if(G&&(G.id=`user-${S}`,G.conversationId=y.conversationId),!u.some(Y=>Y.id===y.id)){const Y=u.findIndex(Kt=>Kt.id===`temp-assistant-${S}`);Y>=0?u[Y]=y:u.push(y)}u=u.filter(Y=>!Y.id.startsWith("temp-")),y.status!=="WAITING_CLIENT"&&(J=!1),L(),g&&Oe()}catch(y){de=y instanceof Error?y.message:"Failed to send message",J=!1,u=u.filter(G=>!G.id.startsWith("temp-")),L()}}async function Oe(){try{const e=await E.getConversations();xe.splice(0,xe.length,...e)}catch{}return xe}async function Ft(e){try{const n=(await E.getConversation(e))?.messages??[];n.length>0&&u.length===0&&(u=n,L())}catch{u.length===0&&(he?.clear(),H=void 0)}}return L(),re&&T?.matches||be(),H?Ft(H):je==="streaming"&&zt(Ge),g&&Oe(),{client:E,element:ve,sendMessage:Ce,...z||re?{open:Ht,close:Wt,toggle:Ut}:{},session:he,threads:xe,refreshThreads:Oe,destroy(){K&&clearInterval(K),E.off("message:start",Qe),E.off("message:chunk",Ze),E.off("message:answer-complete",Je),E.off("message:complete",et),E.off("message:error",tt),j&&E.off("form:submitted",nt),V&&E.off("form:error",ot),rt=!0,Me.forEach(e=>e()),ve.remove(),$?.remove(),P?.remove(),fe?.remove(),X?.remove(),T?.removeEventListener("change",st),re&&(document.removeEventListener("keydown",at),ct(),W&&ke()),ge&&(ge=!1,ke()),o.client||E.destroy()}};function Ee(){if(!U)return;{const s=ye==="left"?"border-right":"border-left";T?.matches?(U.style.width="100%",d.style.borderRadius="0",d.style.removeProperty(s)):(U.style.width=typeof x=="number"?`${x}px`:x,d.style.setProperty(s,`1px solid ${N}`))}const e=m==="left"?"translateX(-100%)":"translateX(100%)";U.style.transform=Z?"translateX(0)":e,U.setAttribute("aria-hidden",Z?"false":"true"),$&&($.style.display=Z?"none":"flex");const n=Z&&!!T?.matches;n!==ge&&(ge=n,n?wt():ke())}function De(){Z=!0,Ee(),be(),M?.()}function ze(){Z=!1,Ee(),q?.()}function Pt(){Z?ze():De()}function Ht(){z?De():ue()}function Wt(){z?ze():me()}function Ut(){z?Pt():W?me():ue()}function Gt(){return Array.from(d.querySelectorAll('a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])')).filter(e=>e.getClientRects().length>0)}function at(e){if(!W)return;if(e.key==="Escape"){me();return}if(e.key!=="Tab")return;const n=Gt();if(n.length===0){e.preventDefault();return}const s=n[0],S=n[n.length-1],y=document.activeElement;e.shiftKey&&(y===s||!d.contains(y))?(e.preventDefault(),S.focus()):!e.shiftKey&&(y===S||!d.contains(y))&&(e.preventDefault(),s.focus())}function st(e){z?Ee():!e.matches&&W&&me(),L()}function lt(){return window.visualViewport?.height??window.innerHeight}function dt(){const e=window.visualViewport,n=e?.offsetTop??0,s=e?.height??pe,S=Math.min(0,n+s-pe);d.style.top=`${S}px`,P&&(P.style.top=`${n}px`)}function Se(){ie||(ie=requestAnimationFrame(()=>{ie=0,dt()}))}function jt(){window.visualViewport?.addEventListener("resize",Se),window.visualViewport?.addEventListener("scroll",Se)}function ct(){window.visualViewport?.removeEventListener("resize",Se),window.visualViewport?.removeEventListener("scroll",Se),ie&&(cancelAnimationFrame(ie),ie=0)}function pt(){_.scrollTop=_.scrollHeight}function Vt(){const e=h({position:"fixed",top:"0",left:"0",right:"0",height:`calc(${Ye}px + env(safe-area-inset-top))`,display:"none",alignItems:"center",justifyContent:"space-between",padding:"env(safe-area-inset-top) 14px 0",backgroundColor:te,borderBottom:`1px solid ${N}`,zIndex:"2147483001",fontFamily:Ie});if(e.className="ago-chat-widget-mobile-bar",f){const s=document.createElement("img");s.src=f,s.alt="",v(s,{height:"28px",width:"auto"}),e.appendChild(s)}else if(i){const s=document.createElement("span");s.textContent=i,v(s,{fontSize:"15px",fontWeight:"600",color:ee,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}),e.appendChild(s)}else e.appendChild(h({}));const n=document.createElement("button");return n.type="button",n.setAttribute("aria-label","Close"),n.textContent="×",v(n,{border:"none",background:"transparent",fontSize:"26px",lineHeight:"1",color:ee,cursor:"pointer",padding:"4px 8px"}),n.addEventListener("click",()=>{me()}),e.appendChild(n),e}function qt(){return typeof document.startViewTransition=="function"&&!Tt?.matches&&!!T?.matches}function ft(e){const n=document;if(qt()&&n.startViewTransition){d.style.setProperty("view-transition-name",ce),P?.style.setProperty("view-transition-name",`${ce}-bar`);const s=()=>{d.style.removeProperty("view-transition-name"),P?.style.removeProperty("view-transition-name")};return n.startViewTransition(e).finished.then(s,s)}return e(),Promise.resolve()}function ut(e){if(e)X&&d.parentElement?.insertBefore(X,d),v(d,{position:"fixed",top:"0",left:"0",right:"0",bottom:"0",height:"var(--ago-vh, 100dvh)",zIndex:"2147483000",border:"none",borderRadius:"0",boxShadow:"none",paddingTop:`calc(${Ye}px + env(safe-area-inset-top))`,paddingBottom:"env(safe-area-inset-bottom)"}),d.setAttribute("role","dialog"),d.setAttribute("aria-modal","true"),d.setAttribute("aria-label",i),wt(),F&&(F.style.display="none"),P&&(P.style.display="flex");else{X?.remove(),X=void 0;for(const n of["position","top","left","right","bottom","z-index","padding-top","padding-bottom"])d.style.removeProperty(n);d.style.height=we.height,d.style.border=we.border,d.style.borderRadius=we.borderRadius,d.style.boxShadow=we.boxShadow,d.removeAttribute("role"),d.removeAttribute("aria-modal"),d.removeAttribute("aria-label"),ke(),F&&(F.style.display="flex"),P&&(P.style.display="none")}}function ue(){if(W||!T?.matches)return Promise.resolve();const e=d.getBoundingClientRect();if(e.height>=lt()*.8)return Promise.resolve();W=!0,X=h({width:`${e.width}px`,height:`${e.height}px`}),X.className="ago-chat-widget-spacer",X.setAttribute("aria-hidden","true"),pe=lt(),d.style.setProperty("--ago-vh",`${pe}px`),dt(),jt();const n=ft(()=>ut(!0));return n.then(()=>{pt(),be()}),pt(),M?.(),n}function me(){if(!W)return Promise.resolve();W=!1,ct(),d.querySelector("textarea")?.blur();const e=ft(()=>ut(!1));return e.then(()=>d.style.removeProperty("--ago-vh")),pe=0,q?.(),e}}exports.mountChatWidget=hn;exports.renderMarkdown=Ne;
package/dist/widget.d.cts CHANGED
@@ -41,6 +41,12 @@ declare class AgoClient {
41
41
  private warnedEmptyConversations;
42
42
  /** Paused turns awaiting auto-resume, keyed by assistant message id. */
43
43
  private pendingResumes;
44
+ /**
45
+ * Client function invocations held pending user approval, keyed by
46
+ * invocationId (the tool-call id). Populated when {@link requiresApproval}
47
+ * matches; drained by {@link approveFunction} / {@link rejectFunction}.
48
+ */
49
+ private pendingApprovals;
44
50
  /** App-provided gate deciding WHEN a paused turn resumes (see {@link registerResumeGate}). */
45
51
  private resumeGate;
46
52
  constructor(config: AgoConfig);
@@ -91,6 +97,24 @@ declare class AgoClient {
91
97
  */
92
98
  private maybeFlagEmptyReply;
93
99
  private handleClientFunctionInvocation;
100
+ /**
101
+ * Whether a client function invocation must wait for explicit user approval.
102
+ * True when the {@link AgoConfig.approvalPolicy} returns true OR the function
103
+ * was registered with `requiresApproval: true` — the two OR together.
104
+ */
105
+ private requiresApproval;
106
+ /**
107
+ * Approve a client function call held by the approval gate: run it, submit its
108
+ * result, and let the paused turn resume. No-op if the invocation is unknown
109
+ * (already handled, or never gated).
110
+ */
111
+ approveFunction(invocationId: string): Promise<void>;
112
+ /**
113
+ * Reject a client function call held by the approval gate: submit a rejection
114
+ * result so the agent sees the user declined, and let the paused turn resume
115
+ * (the agent decides what to do next). No-op if the invocation is unknown.
116
+ */
117
+ rejectFunction(invocationId: string): Promise<void>;
94
118
  /**
95
119
  * Get list of conversations
96
120
  */
@@ -120,8 +144,10 @@ declare class AgoClient {
120
144
  *
121
145
  * Opt-in on purpose — re-running functions on reload can be surprising (e.g. a
122
146
  * navigation function would navigate again), so the app decides. Returns the
123
- * resumed turn's final message, or `null` when there was nothing to resume or
124
- * some waiting function is not registered on this page.
147
+ * resumed turn's final message, or `null` when there was nothing to resume,
148
+ * some waiting function is not registered on this page, or a waiting call is
149
+ * gated by the approval policy (it is held for `approveFunction` /
150
+ * `rejectFunction` and the turn stays paused, exactly as on the live stream).
125
151
  */
126
152
  resumePendingClientFunctions(conversation: Conversation): Promise<AgoMessage | null>;
127
153
  /**
@@ -416,6 +442,15 @@ declare interface AgoClientEvents {
416
442
  "toolCall:received": ToolCallData;
417
443
  "toolCall:form": ToolCallData;
418
444
  "function:invoke": ClientFunctionInvocation;
445
+ /**
446
+ * A client function call is held pending the user's approval (pause mode +
447
+ * an {@link AgoConfig.approvalPolicy}/`requiresApproval` match). The turn stays
448
+ * at `WAITING_CLIENT`; call `approveFunction(invocationId)` to run it and
449
+ * resume, or `rejectFunction(invocationId)` to decline. Fires after
450
+ * `function:invoke` (which still fires for every call) and instead of the
451
+ * call running immediately.
452
+ */
453
+ "function:awaiting-approval": ClientFunctionInvocation;
419
454
  "function:result": {
420
455
  invocationId: string;
421
456
  result: unknown;
@@ -484,6 +519,20 @@ declare interface AgoConfig {
484
519
  * Older backends ignore the flag, so `"pause"` degrades to legacy behavior.
485
520
  */
486
521
  clientFunctionsMode?: ClientFunctionsMode;
522
+ /**
523
+ * Gate client function calls behind explicit user approval. Return `true` for
524
+ * an invocation the user must approve/reject before it runs; return `false`
525
+ * (or omit the policy) to let it run immediately as before.
526
+ *
527
+ * Only effective in pause mode (`clientFunctionsMode: "pause"`) — a gated call
528
+ * holds at `WAITING_CLIENT`, the SDK emits `function:awaiting-approval`, and it
529
+ * runs (and the turn resumes) only after `approveFunction(invocationId)`; a
530
+ * `rejectFunction(invocationId)` submits a rejection so the agent sees the
531
+ * decline. In placeholder mode there is no pause to hold, so the policy is a
532
+ * no-op and the call runs normally. A per-function `requiresApproval: true`
533
+ * also gates a call; the policy and the flag OR together.
534
+ */
535
+ approvalPolicy?: (invocation: ClientFunctionInvocation) => boolean;
487
536
  /**
488
537
  * Max serialized size (bytes) of a client function result before the SDK
489
538
  * replaces it with a flagged, truncated preview. Everything a handler
@@ -528,6 +577,11 @@ declare interface AgoMessage {
528
577
  declare interface AgoPageStateOptions {
529
578
  /** Name of the synthesized client function. Defaults to "setPageState". */
530
579
  functionName?: string;
580
+ /**
581
+ * Require explicit user approval before this state change runs. See
582
+ * {@link AgoConfig.approvalPolicy} — pause mode only. Defaults to `false`.
583
+ */
584
+ requiresApproval?: boolean;
531
585
  }
532
586
 
533
587
  /**
@@ -652,6 +706,11 @@ declare interface ClientFunctionDefinition {
652
706
  * `Infinity` disables the guard for this function.
653
707
  */
654
708
  maxResultBytes?: number;
709
+ /**
710
+ * Require explicit user approval before this function runs. See
711
+ * {@link AgoConfig.approvalPolicy} — pause mode only. ORs with the policy.
712
+ */
713
+ requiresApproval?: boolean;
655
714
  }
656
715
 
657
716
  /**
@@ -678,6 +737,11 @@ declare type ClientFunctionRegisterOptions = Omit<ClientFunctionSchema, "name">
678
737
  * disables the guard for this function.
679
738
  */
680
739
  maxResultBytes?: number;
740
+ /**
741
+ * Require explicit user approval before this function runs. See
742
+ * {@link AgoConfig.approvalPolicy} — pause mode only. ORs with the policy.
743
+ */
744
+ requiresApproval?: boolean;
681
745
  };
682
746
 
683
747
  /**
@@ -718,6 +782,19 @@ declare interface ContextEntry {
718
782
  description?: string;
719
783
  /** Arbitrary structured data the AI should know about */
720
784
  data?: Record<string, unknown>;
785
+ /**
786
+ * Marks the entry as constant for the whole conversation. The backend then
787
+ * pins it right after the system prompt, where LLM providers cache it across
788
+ * turns, instead of re-processing it next to every new user message.
789
+ *
790
+ * Only set this when the entry's content is byte-identical on every message
791
+ * of a conversation (a schema, a capability list, static instructions). A
792
+ * stable entry that changes between messages invalidates the provider's
793
+ * cache for the entire conversation history, which costs more than leaving
794
+ * the flag off. Default: `false` (re-sent near the newest user message).
795
+ * Backends that don't know the flag ignore it.
796
+ */
797
+ stable?: boolean;
721
798
  }
722
799
 
723
800
  /**
package/dist/widget.d.ts CHANGED
@@ -41,6 +41,12 @@ declare class AgoClient {
41
41
  private warnedEmptyConversations;
42
42
  /** Paused turns awaiting auto-resume, keyed by assistant message id. */
43
43
  private pendingResumes;
44
+ /**
45
+ * Client function invocations held pending user approval, keyed by
46
+ * invocationId (the tool-call id). Populated when {@link requiresApproval}
47
+ * matches; drained by {@link approveFunction} / {@link rejectFunction}.
48
+ */
49
+ private pendingApprovals;
44
50
  /** App-provided gate deciding WHEN a paused turn resumes (see {@link registerResumeGate}). */
45
51
  private resumeGate;
46
52
  constructor(config: AgoConfig);
@@ -91,6 +97,24 @@ declare class AgoClient {
91
97
  */
92
98
  private maybeFlagEmptyReply;
93
99
  private handleClientFunctionInvocation;
100
+ /**
101
+ * Whether a client function invocation must wait for explicit user approval.
102
+ * True when the {@link AgoConfig.approvalPolicy} returns true OR the function
103
+ * was registered with `requiresApproval: true` — the two OR together.
104
+ */
105
+ private requiresApproval;
106
+ /**
107
+ * Approve a client function call held by the approval gate: run it, submit its
108
+ * result, and let the paused turn resume. No-op if the invocation is unknown
109
+ * (already handled, or never gated).
110
+ */
111
+ approveFunction(invocationId: string): Promise<void>;
112
+ /**
113
+ * Reject a client function call held by the approval gate: submit a rejection
114
+ * result so the agent sees the user declined, and let the paused turn resume
115
+ * (the agent decides what to do next). No-op if the invocation is unknown.
116
+ */
117
+ rejectFunction(invocationId: string): Promise<void>;
94
118
  /**
95
119
  * Get list of conversations
96
120
  */
@@ -120,8 +144,10 @@ declare class AgoClient {
120
144
  *
121
145
  * Opt-in on purpose — re-running functions on reload can be surprising (e.g. a
122
146
  * navigation function would navigate again), so the app decides. Returns the
123
- * resumed turn's final message, or `null` when there was nothing to resume or
124
- * some waiting function is not registered on this page.
147
+ * resumed turn's final message, or `null` when there was nothing to resume,
148
+ * some waiting function is not registered on this page, or a waiting call is
149
+ * gated by the approval policy (it is held for `approveFunction` /
150
+ * `rejectFunction` and the turn stays paused, exactly as on the live stream).
125
151
  */
126
152
  resumePendingClientFunctions(conversation: Conversation): Promise<AgoMessage | null>;
127
153
  /**
@@ -416,6 +442,15 @@ declare interface AgoClientEvents {
416
442
  "toolCall:received": ToolCallData;
417
443
  "toolCall:form": ToolCallData;
418
444
  "function:invoke": ClientFunctionInvocation;
445
+ /**
446
+ * A client function call is held pending the user's approval (pause mode +
447
+ * an {@link AgoConfig.approvalPolicy}/`requiresApproval` match). The turn stays
448
+ * at `WAITING_CLIENT`; call `approveFunction(invocationId)` to run it and
449
+ * resume, or `rejectFunction(invocationId)` to decline. Fires after
450
+ * `function:invoke` (which still fires for every call) and instead of the
451
+ * call running immediately.
452
+ */
453
+ "function:awaiting-approval": ClientFunctionInvocation;
419
454
  "function:result": {
420
455
  invocationId: string;
421
456
  result: unknown;
@@ -484,6 +519,20 @@ declare interface AgoConfig {
484
519
  * Older backends ignore the flag, so `"pause"` degrades to legacy behavior.
485
520
  */
486
521
  clientFunctionsMode?: ClientFunctionsMode;
522
+ /**
523
+ * Gate client function calls behind explicit user approval. Return `true` for
524
+ * an invocation the user must approve/reject before it runs; return `false`
525
+ * (or omit the policy) to let it run immediately as before.
526
+ *
527
+ * Only effective in pause mode (`clientFunctionsMode: "pause"`) — a gated call
528
+ * holds at `WAITING_CLIENT`, the SDK emits `function:awaiting-approval`, and it
529
+ * runs (and the turn resumes) only after `approveFunction(invocationId)`; a
530
+ * `rejectFunction(invocationId)` submits a rejection so the agent sees the
531
+ * decline. In placeholder mode there is no pause to hold, so the policy is a
532
+ * no-op and the call runs normally. A per-function `requiresApproval: true`
533
+ * also gates a call; the policy and the flag OR together.
534
+ */
535
+ approvalPolicy?: (invocation: ClientFunctionInvocation) => boolean;
487
536
  /**
488
537
  * Max serialized size (bytes) of a client function result before the SDK
489
538
  * replaces it with a flagged, truncated preview. Everything a handler
@@ -528,6 +577,11 @@ declare interface AgoMessage {
528
577
  declare interface AgoPageStateOptions {
529
578
  /** Name of the synthesized client function. Defaults to "setPageState". */
530
579
  functionName?: string;
580
+ /**
581
+ * Require explicit user approval before this state change runs. See
582
+ * {@link AgoConfig.approvalPolicy} — pause mode only. Defaults to `false`.
583
+ */
584
+ requiresApproval?: boolean;
531
585
  }
532
586
 
533
587
  /**
@@ -652,6 +706,11 @@ declare interface ClientFunctionDefinition {
652
706
  * `Infinity` disables the guard for this function.
653
707
  */
654
708
  maxResultBytes?: number;
709
+ /**
710
+ * Require explicit user approval before this function runs. See
711
+ * {@link AgoConfig.approvalPolicy} — pause mode only. ORs with the policy.
712
+ */
713
+ requiresApproval?: boolean;
655
714
  }
656
715
 
657
716
  /**
@@ -678,6 +737,11 @@ declare type ClientFunctionRegisterOptions = Omit<ClientFunctionSchema, "name">
678
737
  * disables the guard for this function.
679
738
  */
680
739
  maxResultBytes?: number;
740
+ /**
741
+ * Require explicit user approval before this function runs. See
742
+ * {@link AgoConfig.approvalPolicy} — pause mode only. ORs with the policy.
743
+ */
744
+ requiresApproval?: boolean;
681
745
  };
682
746
 
683
747
  /**
@@ -718,6 +782,19 @@ declare interface ContextEntry {
718
782
  description?: string;
719
783
  /** Arbitrary structured data the AI should know about */
720
784
  data?: Record<string, unknown>;
785
+ /**
786
+ * Marks the entry as constant for the whole conversation. The backend then
787
+ * pins it right after the system prompt, where LLM providers cache it across
788
+ * turns, instead of re-processing it next to every new user message.
789
+ *
790
+ * Only set this when the entry's content is byte-identical on every message
791
+ * of a conversation (a schema, a capability list, static instructions). A
792
+ * stable entry that changes between messages invalidates the provider's
793
+ * cache for the entire conversation history, which costs more than leaving
794
+ * the flag off. Default: `false` (re-sent near the newest user message).
795
+ * Backends that don't know the flag ignore it.
796
+ */
797
+ stable?: boolean;
721
798
  }
722
799
 
723
800
  /**