@usereq/widget 0.2.0-rc.0 → 0.2.0-rc.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.
Files changed (2) hide show
  1. package/dist/widget.js +1 -1
  2. package/package.json +2 -2
package/dist/widget.js CHANGED
@@ -3562,7 +3562,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let n="<p>An error
3562
3562
  `)?"":`
3563
3563
  `)}${l}
3564
3564
 
3565
- `})}return r},fEt=/([\\`*_~[\]|])/g,pEt=e=>e.replace(fEt,"\\$1"),gEt=(e,t)=>{if(!t.length)return e;let r=e;for(let n of t){let i=new RegExp(`(<${n}(?=[\\s>/])[^>]*>)([\\s\\S]*?)(</${n}\\s*>)`,"gi");r=r.replace(i,(a,s,o,l)=>s+pEt(o).replace(/\n\n/g,"&#10;&#10;")+l)}return r},yfe=e=>e.type==="text"?e.value:"children"in e&&Array.isArray(e.children)?e.children.map(yfe).join(""):"",mEt=e=>t=>{if(!e||e.length===0)return;let r=new Set(e.map(n=>n.toLowerCase()));hu(t,"element",n=>{if(r.has(n.tagName.toLowerCase())){let i=yfe(n);n.children=i?[{type:"text",value:i}]:[]}})},yEt=()=>e=>{hu(e,"code",t=>{var r,n;t.meta&&(t.data=(r=t.data)!=null?r:{},t.data.hProperties={...(n=t.data.hProperties)!=null?n:{},metastring:t.meta})})},vEt=/^[ \t]*<[\w!/?-]/,bEt=/(^|\n)[ \t]{4,}(?=<[\w!/?-])/g,xEt=e=>typeof e!="string"||e.length===0||!vEt.test(e)?e:e.replace(bEt,"$1"),j_={...sm,protocols:{...sm.protocols,href:[...(wEt=(TEt=sm.protocols)==null?void 0:TEt.href)!=null?wEt:[],"tel"]},attributes:{...sm.attributes,code:[...(kEt=(EEt=sm.attributes)==null?void 0:EEt.code)!=null?kEt:[],"metastring"]}},tB={raw:jhe,sanitize:[q2t,j_],harden:[sor,{allowedImagePrefixes:["*"],allowedLinkPrefixes:["*"],allowedProtocols:["*"],defaultOrigin:void 0,allowDataImages:!0}]},CEt={gfm:[$Te,{}],codeMeta:yEt},vfe=Object.values(tB),SEt=Object.values(CEt),_Et={block:" ▋",circle:" ●"},bfe=["github-light","github-dark"],xfe={enabled:!0},ko=(0,ft.createContext)({shikiTheme:bfe,controls:!0,isAnimating:!1,lineNumbers:!0,mode:"streaming",mermaid:void 0,linkSafety:xfe}),Tfe=(0,ft.memo)(({content:e,shouldParseIncompleteMarkdown:t,shouldNormalizeHtmlIndentation:r,index:n,isIncomplete:i,dir:a,animatePlugin:s,...o})=>{if(s){let h=s.getLastRenderCharCount();s.setPrevContentLength(h)}let l=typeof e=="string"&&r?xEt(e):e,u=(0,Ke.jsx)(dfe,{...o,children:l});return(0,Ke.jsx)(Cde.Provider,{value:i,children:a?(0,Ke.jsx)("div",{dir:a,style:{display:"contents"},children:u}):u})},(e,t)=>{if(e.content!==t.content||e.shouldNormalizeHtmlIndentation!==t.shouldNormalizeHtmlIndentation||e.index!==t.index||e.isIncomplete!==t.isIncomplete||e.dir!==t.dir)return!1;if(e.components!==t.components){let r=Object.keys(e.components||{}),n=Object.keys(t.components||{});if(r.length!==n.length||r.some(i=>{var a,s;return((a=e.components)==null?void 0:a[i])!==((s=t.components)==null?void 0:s[i])}))return!1}return!(e.rehypePlugins!==t.rehypePlugins||e.remarkPlugins!==t.remarkPlugins)}),Tfe.displayName="Block",AEt=(0,ft.memo)(({children:e,mode:t="streaming",dir:r,parseIncompleteMarkdown:n=!0,normalizeHtmlIndentation:i=!1,components:a,rehypePlugins:s=vfe,remarkPlugins:o=SEt,className:l,shikiTheme:u=bfe,mermaid:h,controls:d=!0,isAnimating:f=!1,animated:p,BlockComponent:g=Tfe,parseMarkdownIntoBlocksFn:y=hEt,caret:b,plugins:T,remend:w,linkSafety:x=xfe,lineNumbers:C=!0,allowedTags:R,literalTagContent:_,translations:S,icons:A,prefix:B,onAnimationStart:O,onAnimationEnd:P,...H})=>{let I=(0,ft.useId)(),[z,M]=(0,ft.useTransition)(),$=(0,ft.useMemo)(()=>awt(B),[B]),N=(0,ft.useRef)(null),U=(0,ft.useRef)(O),V=(0,ft.useRef)(P);U.current=O,V.current=P,(0,ft.useEffect)(()=>{var Fe,Se,Qe;if(t==="static")return;let Oe=N.current;if(N.current=f,Oe===null){f&&((Fe=U.current)==null||Fe.call(U));return}f&&!Oe?(Se=U.current)==null||Se.call(U):!f&&Oe&&((Qe=V.current)==null||Qe.call(V))},[f,t]);let F=(0,ft.useMemo)(()=>R?Object.keys(R):[],[R]),X=(0,ft.useMemo)(()=>{if(typeof e!="string")return"";let Fe=t==="streaming"&&n?tTt(e,w):e;return _&&_.length>0&&(Fe=gEt(Fe,_)),F.length>0&&(Fe=dEt(Fe,F)),Fe},[e,t,n,w,F,_]),Y=(0,ft.useMemo)(()=>y(X),[X,y]),[W,Z]=(0,ft.useState)(Y);(0,ft.useEffect)(()=>{t==="streaming"&&!ee?M(()=>{Z(Y)}):Z(Y)},[Y,t]);let ne=t==="streaming"?W:Y,se=(0,ft.useMemo)(()=>r==="auto"?ne.map(qTt):void 0,[ne,r]),ae=(0,ft.useMemo)(()=>ne.map((Fe,Se)=>`${I}-${Se}`),[ne.length,I]),ce=(0,ft.useMemo)(()=>p===!0?"true":p?JSON.stringify(p):"",[p]),ee=(0,ft.useMemo)(()=>ce?ce==="true"?wde():wde(p):null,[ce]),ue=(0,ft.useMemo)(()=>{var Fe,Se;return{shikiTheme:(Se=(Fe=T?.code)==null?void 0:Fe.getThemes())!=null?Se:u,controls:d,isAnimating:f,lineNumbers:C,mode:t,mermaid:h,linkSafety:x}},[u,d,f,C,t,h,x,T?.code]),he=(0,ft.useMemo)(()=>({...Nde,...S}),[(0,ft.useMemo)(()=>S?JSON.stringify(S):"",[S])]),fe=(0,ft.useMemo)(()=>{let{inlineCode:Fe,...Se}=a??{},Qe={...Hwt,...Se};if(Fe){let Oe=Qe.code;Qe.code=pt=>"data-block"in pt?Oe?(0,ft.createElement)(Oe,pt):null:(0,ft.createElement)(Fe,pt)}return Qe},[a]),we=(0,ft.useMemo)(()=>{let Fe=[];return T!=null&&T.cjk&&(Fe=[...Fe,...T.cjk.remarkPluginsBefore]),Fe=[...Fe,...o],T!=null&&T.cjk&&(Fe=[...Fe,...T.cjk.remarkPluginsAfter]),T!=null&&T.math&&(Fe=[...Fe,T.math.remarkPlugin]),Fe},[o,T?.math,T?.cjk]),ke=(0,ft.useMemo)(()=>{var Fe;let Se=s;if(R&&Object.keys(R).length>0&&s===vfe){let Qe={...j_,tagNames:[...(Fe=j_.tagNames)!=null?Fe:[],...Object.keys(R)],attributes:{...j_.attributes,...R}};Se=[tB.raw,[q2t,Qe],tB.harden]}return _&&_.length>0&&(Se=[...Se,[mEt,_]]),T!=null&&T.math&&(Se=[...Se,T.math.rehypePlugin]),ee&&f&&(Se=[...Se,ee.rehypePlugin]),Se},[s,T?.math,ee,f,R,_]),Me=(0,ft.useMemo)(()=>{if(!f||ne.length===0)return!1;let Fe=ne.at(-1);return lfe(Fe)||Ywt(Fe)},[f,ne]),$e=(0,ft.useMemo)(()=>b&&f&&!Me?{"--streamdown-caret":`"${_Et[b]}"`}:void 0,[b,f,Me]);return t==="static"?(0,Ke.jsx)(qP.Provider,{value:he,children:(0,Ke.jsx)(YP.Provider,{value:T??null,children:(0,Ke.jsx)(ko.Provider,{value:ue,children:(0,Ke.jsx)(Rde,{icons:A,children:(0,Ke.jsx)(VP.Provider,{value:$,children:(0,Ke.jsx)("div",{className:$("space-y-4 whitespace-normal [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",l),dir:r==="auto"?qTt(X):r,children:(0,Ke.jsx)(dfe,{components:fe,rehypePlugins:ke,remarkPlugins:we,...H,children:X})})})})})})}):(0,Ke.jsx)(qP.Provider,{value:he,children:(0,Ke.jsx)(YP.Provider,{value:T??null,children:(0,Ke.jsx)(ko.Provider,{value:ue,children:(0,Ke.jsx)(Rde,{icons:A,children:(0,Ke.jsx)(VP.Provider,{value:$,children:(0,Ke.jsxs)("div",{className:$("space-y-4 whitespace-normal [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",b&&!Me?"[&>*:last-child]:after:inline [&>*:last-child]:after:align-baseline [&>*:last-child]:after:content-[var(--streamdown-caret)]":null,l),style:$e,children:[ne.length===0&&b&&f&&(0,Ke.jsx)("span",{}),ne.map((Fe,Se)=>{var Qe;let Oe=Se===ne.length-1,pt=f&&Oe&&lfe(Fe);return(0,Ke.jsx)(g,{animatePlugin:ee,components:fe,content:Fe,dir:(Qe=se?.[Se])!=null?Qe:r!=="auto"?r:void 0,index:Se,isIncomplete:pt,rehypePlugins:ke,remarkPlugins:we,shouldNormalizeHtmlIndentation:i,shouldParseIncompleteMarkdown:n,...H},ae[Se])})]})})})})})})},(e,t)=>e.children===t.children&&e.shikiTheme===t.shikiTheme&&e.isAnimating===t.isAnimating&&e.animated===t.animated&&e.mode===t.mode&&e.plugins===t.plugins&&e.className===t.className&&e.linkSafety===t.linkSafety&&e.lineNumbers===t.lineNumbers&&e.normalizeHtmlIndentation===t.normalizeHtmlIndentation&&e.literalTagContent===t.literalTagContent&&JSON.stringify(e.translations)===JSON.stringify(t.translations)&&e.prefix===t.prefix&&e.dir===t.dir),AEt.displayName="Streamdown",LEt=({children:e,className:t,minZoom:r=.5,maxZoom:n=3,zoomStep:i=.1,showControls:a=!0,initialZoom:s=1,fullscreen:o=!1})=>{let{RotateCcwIcon:l,ZoomInIcon:u,ZoomOutIcon:h}=hc(),d=fn(),f=(0,ft.useRef)(null),p=(0,ft.useRef)(null),[g,y]=(0,ft.useState)(s),[b,T]=(0,ft.useState)({x:0,y:0}),[w,x]=(0,ft.useState)(!1),[C,R]=(0,ft.useState)({x:0,y:0}),[_,S]=(0,ft.useState)({x:0,y:0}),A=(0,ft.useCallback)($=>{y(N=>Math.max(r,Math.min(n,N+$)))},[r,n]),B=(0,ft.useCallback)(()=>{A(i)},[A,i]),O=(0,ft.useCallback)(()=>{A(-i)},[A,i]),P=(0,ft.useCallback)(()=>{y(s),T({x:0,y:0})},[s]),H=(0,ft.useCallback)($=>{$.preventDefault(),A($.deltaY>0?-i:i)},[A,i]),I=(0,ft.useCallback)($=>{if($.button!==0||$.isPrimary===!1)return;x(!0),R({x:$.clientX,y:$.clientY}),S(b);let N=$.currentTarget;N instanceof HTMLElement&&N.setPointerCapture($.pointerId)},[b]),z=(0,ft.useCallback)($=>{if(!w)return;$.preventDefault();let N=$.clientX-C.x,U=$.clientY-C.y;T({x:_.x+N,y:_.y+U})},[w,C,_]),M=(0,ft.useCallback)($=>{x(!1);let N=$.currentTarget;N instanceof HTMLElement&&N.releasePointerCapture($.pointerId)},[]);return(0,ft.useEffect)(()=>{let $=f.current;if($)return $.addEventListener("wheel",H,{passive:!1}),()=>{$.removeEventListener("wheel",H)}},[H]),(0,ft.useEffect)(()=>{let $=p.current;if($&&w)return document.body.style.userSelect="none",$.addEventListener("pointermove",z,{passive:!1}),$.addEventListener("pointerup",M),$.addEventListener("pointercancel",M),()=>{document.body.style.userSelect="",$.removeEventListener("pointermove",z),$.removeEventListener("pointerup",M),$.removeEventListener("pointercancel",M)}},[w,z,M]),(0,Ke.jsxs)("div",{className:d("relative flex flex-col",o?"h-full w-full":"min-h-28 w-full",t),ref:f,style:{cursor:w?"grabbing":"grab"},children:[a?(0,Ke.jsxs)("div",{className:d("absolute z-10 flex flex-col gap-1 rounded-md border border-border bg-background/80 p-1 supports-[backdrop-filter]:bg-background/70 supports-[backdrop-filter]:backdrop-blur-sm",o?"bottom-4 left-4":"bottom-2 left-2"),children:[(0,Ke.jsx)("button",{className:d("flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50"),disabled:g>=n,onClick:B,title:"Zoom in",type:"button",children:(0,Ke.jsx)(u,{size:16})}),(0,Ke.jsx)("button",{className:d("flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50"),disabled:g<=r,onClick:O,title:"Zoom out",type:"button",children:(0,Ke.jsx)(h,{size:16})}),(0,Ke.jsx)("button",{className:d("flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground"),onClick:P,title:"Reset zoom and pan",type:"button",children:(0,Ke.jsx)(l,{size:16})})]}):null,(0,Ke.jsx)("div",{className:d("flex-1 origin-center transition-transform duration-150 ease-out",o?"flex h-full w-full items-center justify-center":"flex w-full items-center justify-center"),onPointerDown:I,ref:p,role:"application",style:{transform:`translate(${b.x}px, ${b.y}px) scale(${g})`,transformOrigin:"center center",touchAction:"none",willChange:"transform"},children:e})]})},wfe=({chart:e,className:t,config:r,fullscreen:n=!1,showControls:i=!0})=>{let a=fn(),[s,o]=(0,ft.useState)(null),[l,u]=(0,ft.useState)(!1),[h,d]=(0,ft.useState)(""),[f,p]=(0,ft.useState)(""),[g,y]=(0,ft.useState)(0),{mermaid:b}=(0,ft.useContext)(ko),T=XP(),w=b?.errorComponent,{shouldRender:x,containerRef:C}=Hur({immediate:n});if((0,ft.useEffect)(()=>{if(x){if(!T){o("Mermaid plugin not available. Please add the mermaid plugin to enable diagram rendering.");return}(async()=>{try{o(null),u(!0);let _=T.getMermaid(r),S=e.split("").reduce((O,P)=>(O<<5)-O+P.charCodeAt(0)|0,0),A=`mermaid-${Math.abs(S)}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,{svg:B}=await _.render(A,e);d(B),p(B)}catch(_){f||h||o(_ instanceof Error?_.message:"Failed to render Mermaid chart")}finally{u(!1)}})()}},[e,r,g,x,T]),!(x||h||f))return(0,Ke.jsx)("div",{className:a("my-4 min-h-[200px]",t),ref:C});if(l&&!h&&!f)return(0,Ke.jsx)("div",{className:a("my-4 flex justify-center p-4",t),ref:C,children:(0,Ke.jsxs)("div",{className:a("flex items-center space-x-2 text-muted-foreground"),children:[(0,Ke.jsx)("div",{className:a("h-4 w-4 animate-spin rounded-full border-current border-b-2")}),(0,Ke.jsx)("span",{className:a("text-sm"),children:"Loading diagram..."})]})});if(s&&!h&&!f){let _=()=>y(S=>S+1);return w?(0,Ke.jsx)("div",{ref:C,children:(0,Ke.jsx)(w,{chart:e,error:s,retry:_})}):(0,Ke.jsxs)("div",{className:a("rounded-md bg-red-50 p-4",t),ref:C,children:[(0,Ke.jsxs)("p",{className:a("font-mono text-red-700 text-sm"),children:["Mermaid Error: ",s]}),(0,Ke.jsxs)("details",{className:a("mt-2"),children:[(0,Ke.jsx)("summary",{className:a("cursor-pointer text-red-600 text-xs"),children:"Show Code"}),(0,Ke.jsx)("pre",{className:a("mt-2 overflow-x-auto rounded bg-red-100 p-2 text-red-800 text-xs"),children:e})]})]})}let R=h||f;return(0,Ke.jsx)("div",{className:a("size-full",t),"data-streamdown":"mermaid",ref:C,children:(0,Ke.jsx)(LEt,{className:a(n?"size-full overflow-hidden":"overflow-hidden",t),fullscreen:n,maxZoom:3,minZoom:.5,showControls:i,zoomStep:.1,children:(0,Ke.jsx)("div",{"aria-label":"Mermaid chart",className:a("flex justify-center",n?"size-full items-center":null),dangerouslySetInnerHTML:{__html:R},role:"img"})})})}}));Efe();var _fr=re.createContext(null);function qur(e,t){if(e.length===0)return[];const r=t?.initialDelayMs??0,n=t?.typingHoldMs??1260,i=t?.interMessageDelayMs??1520,a=Math.max(0,t?.interMessageDelayJitterMs??100);return e.map((s,o)=>{const l=o===0?r+n:i,u=o===0||a===0?0:Math.round((Math.random()*2-1)*a);return{message:s,delayMs:Math.max(0,l+u)}})}function REt(e){const t=e?.trim();return t?t.replace(/\/+$/,""):null}function NEt(){const e="https://api.usereq.com",t=globalThis.__USEREQ_WIDGET_API_BASE__;return REt(e)??REt(t)??"http://localhost:4000"}async function Hw(e,t){const r=await fetch(new URL(e,`${NEt()}/`).toString(),{...t,headers:{"Content-Type":"application/json",...t.headers??{}},credentials:"omit"}),n=await r.text(),i=n?JSON.parse(n):null;if(!r.ok)throw new Error(typeof i=="object"&&i&&"error"in i?String(i.error??r.statusText):r.statusText);return i}async function Gur(e){return Hw("/api/widget/sessions",{method:"POST",body:JSON.stringify(e)})}async function Wur(e){return Hw("/api/conversations/public/start",{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({agentId:e.agentId})})}async function Yur(e){return Hw(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages`,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({content:e.content})})}async function jur(e){return Hw(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages`,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({content:e.content})})}async function Xur(e){return Hw("/api/conversations/public/current",{method:"GET",headers:{Authorization:`Bearer ${e}`}})}async function Kur(e){const t=new URLSearchParams;return e.cursor&&t.set("cursor",e.cursor),Hw(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages?${t.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${e.sessionToken}`}})}function kfe(e){return`usereq-widget:${e}`}function Zur(e){try{const t=sessionStorage.getItem(kfe(e));if(!t)return null;const r=JSON.parse(t);return!r?.sessionToken||!r?.expiresAt||!r?.widgetConfig?.agentId||!r?.widgetConfig?.name?null:r}catch{return null}}function rB(e,t){sessionStorage.setItem(kfe(e),JSON.stringify(t))}function Qur(e){sessionStorage.removeItem(kfe(e))}function nB(e){return[...e].sort((t,r)=>new Date(t.createdAt).getTime()-new Date(r.createdAt).getTime())}var DEt={loadSession:Zur,saveSession:rB,mintWidgetSession:Gur,getCurrentConversation:Xur,listConversationMessages:Kur,getOrigin:()=>window.location.origin,now:()=>Date.now()};function Jur(e,t=Date.now()){if(!e)return!1;const r=new Date(e.expiresAt).getTime();return Number.isFinite(r)&&r>t}async function iB(e,t=DEt,r){const n=t.loadSession(e.agentId),i=Jur(n,t.now());if(i&&!r?.refreshWidgetConfig)return n;if(i&&r?.refreshWidgetConfig)try{const o=await t.mintWidgetSession({agentId:e.agentId,origin:t.getOrigin(),pageUrl:e.pageUrl,referrer:e.referrer}),l={...n,widgetConfig:o.widgetConfig};return t.saveSession(e.agentId,l),l}catch{return n}const a=await t.mintWidgetSession({agentId:e.agentId,origin:t.getOrigin(),pageUrl:e.pageUrl,referrer:e.referrer}),s={sessionToken:a.sessionToken,expiresAt:a.expiresAt,widgetConfig:a.widgetConfig};return t.saveSession(e.agentId,s),s}async function ehr(e,t){const r=await iB(e,t,{refreshWidgetConfig:!0});let n=r.conversationId,i=[];if(n)try{i=nB((await t.listConversationMessages({conversationId:n,sessionToken:r.sessionToken})).data)}catch{n=void 0,i=[]}else try{n=(await t.getCurrentConversation(r.sessionToken)).conversation?.id??void 0,n&&(i=nB((await t.listConversationMessages({conversationId:n,sessionToken:r.sessionToken})).data))}catch{n=void 0,i=[]}const a={...r,conversationId:n};return t.saveSession(e.agentId,a),{session:a,conversationId:n,messages:i}}async function thr(e){return ehr(e,DEt)}async function rhr(e){const t=await iB({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0});if(!t.conversationId)throw new Error("Widget conversation not started");const r=await Yur({conversationId:t.conversationId,sessionToken:t.sessionToken,content:e.content}),n={...t,conversationId:t.conversationId};return rB(e.agentId,n),{session:n,conversationId:t.conversationId,messages:nB([r.userMessage,...r.assistantMessages]),userMessage:r.userMessage,assistantMessages:r.assistantMessages}}async function IEt(e){const t=await iB({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0});if(!t.conversationId)throw new Error("Widget conversation not started");const r=e.decision!=null?EBt({confirmationId:e.confirmationId,decision:e.decision}):wBt({confirmationId:e.confirmationId,prompt:e.prompt}),n=await jur({conversationId:t.conversationId,sessionToken:t.sessionToken,content:r}),i={...t,conversationId:t.conversationId};return rB(e.agentId,i),{session:i,conversationId:t.conversationId,confirmationMessage:n.confirmationMessage}}async function nhr(e){const t=await iB({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0}),r=await Wur({agentId:e.agentId,sessionToken:t.sessionToken}),n={...t,conversationId:r.conversation.id};return rB(e.agentId,n),{session:n,conversationId:r.conversation.id,messages:nB([r.welcomeMessage]),welcomeMessage:r.welcomeMessage}}async function ihr(e){Qur(e)}var ahr="/api/widget/events/batch",shr=10,ohr=2500,Cfe=12e4,MEt=200,lhr=600*1e3,OEt="usereq-widget:unique-script-loaded:";function chr(e){if(!e)return;const t=e.trim();if(!t)return;const r=Number(t);if(Number.isFinite(r)&&r>=0)return Math.min(Cfe,r*1e3);const n=Date.parse(t);if(!Number.isNaN(n)){const i=n-Date.now();if(i>0)return Math.min(Cfe,i)}}function uhr(e){if(e.ok)return{outcome:"ok"};const t=e.status;return t===408||t===425||t===429||t>=500?{outcome:"retry",retryAfterMs:chr(e.headers.get("retry-after"))}:t>=400&&t<500?{outcome:"drop"}:{outcome:"retry"}}var hhr=class{mode;agentId;getSession;getConversationId;batchSize;flushIntervalMs;uniqueScriptSeen=new Set;flushTimer=null;queue=[];disposed=!1;consecutiveFailures=0;nextAllowedFlushAt=0;constructor(e){this.mode=e.mode,this.agentId=e.agentId,this.getSession=e.getSession,this.getConversationId=e.getConversationId,this.batchSize=Math.max(1,e.batchSize??shr),this.flushIntervalMs=Math.max(200,e.flushIntervalMs??ohr)}dispose(){this.disposed||(this.disposed=!0,this.clearFlushTimer())}trackScriptLoaded(){this.track({eventType:"SCRIPT_LOADED"})}trackUniqueScriptLoaded(){}trackView(e){this.track({eventType:"VIEW",triggerRuleType:e}),e==="element_displayed"&&this.track({eventType:"DISPLAY_AFTER_ELEMENT_SHOWED",triggerRuleType:e})}trackClick(){this.track({eventType:"CLICK"})}trackLinkClicked(e){const t=e.trim();if(!t)return;const r=this.normalizeLinkUrl(t);this.track({eventType:"LINK_CLICKED",linkUrl:r})}track(e){}enqueue(e){this.queue.push(e),this.queue.length>MEt&&this.queue.splice(0,this.queue.length-MEt)}pruneStale(e){this.queue.length!==0&&(this.queue=this.queue.filter(t=>e-t.enqueuedAt<lhr))}async flush(e){}computeBackoffDelay(){const e=Math.max(0,this.consecutiveFailures-1),t=this.flushIntervalMs*Math.pow(2,e),r=t*.2*Math.random();return Math.min(Cfe,t+r)}async sendBatch(e){if(e.events.length===0)return{outcome:"ok"};const t=new URL(ahr,`${NEt()}/`).toString(),r={events:e.events.map(n=>{const{conversationId:i,triggerRuleType:a,linkUrl:s,...o}=n;return{...o,...i?{conversationId:i}:{},...a?{triggerRuleType:a}:{},...s?{linkUrl:s}:{}}}),pageUrl:window.location.href,referrer:document.referrer||void 0,sessionToken:e.sessionToken};if(e.transport==="beacon"&&typeof navigator.sendBeacon=="function"){const n=new Blob([JSON.stringify(r)],{type:"application/json"});if(navigator.sendBeacon(t,n))return{outcome:"ok"}}try{return uhr(await fetch(t,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`,"Content-Type":"application/json"},body:JSON.stringify(r),credentials:"omit",keepalive:e.transport==="beacon"}))}catch{return{outcome:"retry"}}}scheduleFlush(e){if(this.flushTimer!=null)return;const t=Math.max(0,e??this.flushIntervalMs);this.flushTimer=window.setTimeout(()=>{this.flushTimer=null,this.flush()},t)}clearFlushTimer(){this.flushTimer!=null&&(window.clearTimeout(this.flushTimer),this.flushTimer=null)}hasSessionUniqueScriptLoaded(e){try{return sessionStorage.getItem(`${OEt}${e}`)==="1"}catch{return!1}}setSessionUniqueScriptLoaded(e){try{sessionStorage.setItem(`${OEt}${e}`,"1")}catch{}}handlePageHide=()=>{this.flush({transport:"beacon"})};handleVisibilityChange=()=>{document.visibilityState==="hidden"&&this.flush({transport:"beacon"})};normalizeLinkUrl(e){try{return new URL(e,window.location.href).toString()}catch{return e}}};function dhr(e){return new hhr(e)}var fhr=`
3565
+ `})}return r},fEt=/([\\`*_~[\]|])/g,pEt=e=>e.replace(fEt,"\\$1"),gEt=(e,t)=>{if(!t.length)return e;let r=e;for(let n of t){let i=new RegExp(`(<${n}(?=[\\s>/])[^>]*>)([\\s\\S]*?)(</${n}\\s*>)`,"gi");r=r.replace(i,(a,s,o,l)=>s+pEt(o).replace(/\n\n/g,"&#10;&#10;")+l)}return r},yfe=e=>e.type==="text"?e.value:"children"in e&&Array.isArray(e.children)?e.children.map(yfe).join(""):"",mEt=e=>t=>{if(!e||e.length===0)return;let r=new Set(e.map(n=>n.toLowerCase()));hu(t,"element",n=>{if(r.has(n.tagName.toLowerCase())){let i=yfe(n);n.children=i?[{type:"text",value:i}]:[]}})},yEt=()=>e=>{hu(e,"code",t=>{var r,n;t.meta&&(t.data=(r=t.data)!=null?r:{},t.data.hProperties={...(n=t.data.hProperties)!=null?n:{},metastring:t.meta})})},vEt=/^[ \t]*<[\w!/?-]/,bEt=/(^|\n)[ \t]{4,}(?=<[\w!/?-])/g,xEt=e=>typeof e!="string"||e.length===0||!vEt.test(e)?e:e.replace(bEt,"$1"),j_={...sm,protocols:{...sm.protocols,href:[...(wEt=(TEt=sm.protocols)==null?void 0:TEt.href)!=null?wEt:[],"tel"]},attributes:{...sm.attributes,code:[...(kEt=(EEt=sm.attributes)==null?void 0:EEt.code)!=null?kEt:[],"metastring"]}},tB={raw:jhe,sanitize:[q2t,j_],harden:[sor,{allowedImagePrefixes:["*"],allowedLinkPrefixes:["*"],allowedProtocols:["*"],defaultOrigin:void 0,allowDataImages:!0}]},CEt={gfm:[$Te,{}],codeMeta:yEt},vfe=Object.values(tB),SEt=Object.values(CEt),_Et={block:" ▋",circle:" ●"},bfe=["github-light","github-dark"],xfe={enabled:!0},ko=(0,ft.createContext)({shikiTheme:bfe,controls:!0,isAnimating:!1,lineNumbers:!0,mode:"streaming",mermaid:void 0,linkSafety:xfe}),Tfe=(0,ft.memo)(({content:e,shouldParseIncompleteMarkdown:t,shouldNormalizeHtmlIndentation:r,index:n,isIncomplete:i,dir:a,animatePlugin:s,...o})=>{if(s){let h=s.getLastRenderCharCount();s.setPrevContentLength(h)}let l=typeof e=="string"&&r?xEt(e):e,u=(0,Ke.jsx)(dfe,{...o,children:l});return(0,Ke.jsx)(Cde.Provider,{value:i,children:a?(0,Ke.jsx)("div",{dir:a,style:{display:"contents"},children:u}):u})},(e,t)=>{if(e.content!==t.content||e.shouldNormalizeHtmlIndentation!==t.shouldNormalizeHtmlIndentation||e.index!==t.index||e.isIncomplete!==t.isIncomplete||e.dir!==t.dir)return!1;if(e.components!==t.components){let r=Object.keys(e.components||{}),n=Object.keys(t.components||{});if(r.length!==n.length||r.some(i=>{var a,s;return((a=e.components)==null?void 0:a[i])!==((s=t.components)==null?void 0:s[i])}))return!1}return!(e.rehypePlugins!==t.rehypePlugins||e.remarkPlugins!==t.remarkPlugins)}),Tfe.displayName="Block",AEt=(0,ft.memo)(({children:e,mode:t="streaming",dir:r,parseIncompleteMarkdown:n=!0,normalizeHtmlIndentation:i=!1,components:a,rehypePlugins:s=vfe,remarkPlugins:o=SEt,className:l,shikiTheme:u=bfe,mermaid:h,controls:d=!0,isAnimating:f=!1,animated:p,BlockComponent:g=Tfe,parseMarkdownIntoBlocksFn:y=hEt,caret:b,plugins:T,remend:w,linkSafety:x=xfe,lineNumbers:C=!0,allowedTags:R,literalTagContent:_,translations:S,icons:A,prefix:B,onAnimationStart:O,onAnimationEnd:P,...H})=>{let I=(0,ft.useId)(),[z,M]=(0,ft.useTransition)(),$=(0,ft.useMemo)(()=>awt(B),[B]),N=(0,ft.useRef)(null),U=(0,ft.useRef)(O),V=(0,ft.useRef)(P);U.current=O,V.current=P,(0,ft.useEffect)(()=>{var Fe,Se,Qe;if(t==="static")return;let Oe=N.current;if(N.current=f,Oe===null){f&&((Fe=U.current)==null||Fe.call(U));return}f&&!Oe?(Se=U.current)==null||Se.call(U):!f&&Oe&&((Qe=V.current)==null||Qe.call(V))},[f,t]);let F=(0,ft.useMemo)(()=>R?Object.keys(R):[],[R]),X=(0,ft.useMemo)(()=>{if(typeof e!="string")return"";let Fe=t==="streaming"&&n?tTt(e,w):e;return _&&_.length>0&&(Fe=gEt(Fe,_)),F.length>0&&(Fe=dEt(Fe,F)),Fe},[e,t,n,w,F,_]),Y=(0,ft.useMemo)(()=>y(X),[X,y]),[W,Z]=(0,ft.useState)(Y);(0,ft.useEffect)(()=>{t==="streaming"&&!ee?M(()=>{Z(Y)}):Z(Y)},[Y,t]);let ne=t==="streaming"?W:Y,se=(0,ft.useMemo)(()=>r==="auto"?ne.map(qTt):void 0,[ne,r]),ae=(0,ft.useMemo)(()=>ne.map((Fe,Se)=>`${I}-${Se}`),[ne.length,I]),ce=(0,ft.useMemo)(()=>p===!0?"true":p?JSON.stringify(p):"",[p]),ee=(0,ft.useMemo)(()=>ce?ce==="true"?wde():wde(p):null,[ce]),ue=(0,ft.useMemo)(()=>{var Fe,Se;return{shikiTheme:(Se=(Fe=T?.code)==null?void 0:Fe.getThemes())!=null?Se:u,controls:d,isAnimating:f,lineNumbers:C,mode:t,mermaid:h,linkSafety:x}},[u,d,f,C,t,h,x,T?.code]),he=(0,ft.useMemo)(()=>({...Nde,...S}),[(0,ft.useMemo)(()=>S?JSON.stringify(S):"",[S])]),fe=(0,ft.useMemo)(()=>{let{inlineCode:Fe,...Se}=a??{},Qe={...Hwt,...Se};if(Fe){let Oe=Qe.code;Qe.code=pt=>"data-block"in pt?Oe?(0,ft.createElement)(Oe,pt):null:(0,ft.createElement)(Fe,pt)}return Qe},[a]),we=(0,ft.useMemo)(()=>{let Fe=[];return T!=null&&T.cjk&&(Fe=[...Fe,...T.cjk.remarkPluginsBefore]),Fe=[...Fe,...o],T!=null&&T.cjk&&(Fe=[...Fe,...T.cjk.remarkPluginsAfter]),T!=null&&T.math&&(Fe=[...Fe,T.math.remarkPlugin]),Fe},[o,T?.math,T?.cjk]),ke=(0,ft.useMemo)(()=>{var Fe;let Se=s;if(R&&Object.keys(R).length>0&&s===vfe){let Qe={...j_,tagNames:[...(Fe=j_.tagNames)!=null?Fe:[],...Object.keys(R)],attributes:{...j_.attributes,...R}};Se=[tB.raw,[q2t,Qe],tB.harden]}return _&&_.length>0&&(Se=[...Se,[mEt,_]]),T!=null&&T.math&&(Se=[...Se,T.math.rehypePlugin]),ee&&f&&(Se=[...Se,ee.rehypePlugin]),Se},[s,T?.math,ee,f,R,_]),Me=(0,ft.useMemo)(()=>{if(!f||ne.length===0)return!1;let Fe=ne.at(-1);return lfe(Fe)||Ywt(Fe)},[f,ne]),$e=(0,ft.useMemo)(()=>b&&f&&!Me?{"--streamdown-caret":`"${_Et[b]}"`}:void 0,[b,f,Me]);return t==="static"?(0,Ke.jsx)(qP.Provider,{value:he,children:(0,Ke.jsx)(YP.Provider,{value:T??null,children:(0,Ke.jsx)(ko.Provider,{value:ue,children:(0,Ke.jsx)(Rde,{icons:A,children:(0,Ke.jsx)(VP.Provider,{value:$,children:(0,Ke.jsx)("div",{className:$("space-y-4 whitespace-normal [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",l),dir:r==="auto"?qTt(X):r,children:(0,Ke.jsx)(dfe,{components:fe,rehypePlugins:ke,remarkPlugins:we,...H,children:X})})})})})})}):(0,Ke.jsx)(qP.Provider,{value:he,children:(0,Ke.jsx)(YP.Provider,{value:T??null,children:(0,Ke.jsx)(ko.Provider,{value:ue,children:(0,Ke.jsx)(Rde,{icons:A,children:(0,Ke.jsx)(VP.Provider,{value:$,children:(0,Ke.jsxs)("div",{className:$("space-y-4 whitespace-normal [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",b&&!Me?"[&>*:last-child]:after:inline [&>*:last-child]:after:align-baseline [&>*:last-child]:after:content-[var(--streamdown-caret)]":null,l),style:$e,children:[ne.length===0&&b&&f&&(0,Ke.jsx)("span",{}),ne.map((Fe,Se)=>{var Qe;let Oe=Se===ne.length-1,pt=f&&Oe&&lfe(Fe);return(0,Ke.jsx)(g,{animatePlugin:ee,components:fe,content:Fe,dir:(Qe=se?.[Se])!=null?Qe:r!=="auto"?r:void 0,index:Se,isIncomplete:pt,rehypePlugins:ke,remarkPlugins:we,shouldNormalizeHtmlIndentation:i,shouldParseIncompleteMarkdown:n,...H},ae[Se])})]})})})})})})},(e,t)=>e.children===t.children&&e.shikiTheme===t.shikiTheme&&e.isAnimating===t.isAnimating&&e.animated===t.animated&&e.mode===t.mode&&e.plugins===t.plugins&&e.className===t.className&&e.linkSafety===t.linkSafety&&e.lineNumbers===t.lineNumbers&&e.normalizeHtmlIndentation===t.normalizeHtmlIndentation&&e.literalTagContent===t.literalTagContent&&JSON.stringify(e.translations)===JSON.stringify(t.translations)&&e.prefix===t.prefix&&e.dir===t.dir),AEt.displayName="Streamdown",LEt=({children:e,className:t,minZoom:r=.5,maxZoom:n=3,zoomStep:i=.1,showControls:a=!0,initialZoom:s=1,fullscreen:o=!1})=>{let{RotateCcwIcon:l,ZoomInIcon:u,ZoomOutIcon:h}=hc(),d=fn(),f=(0,ft.useRef)(null),p=(0,ft.useRef)(null),[g,y]=(0,ft.useState)(s),[b,T]=(0,ft.useState)({x:0,y:0}),[w,x]=(0,ft.useState)(!1),[C,R]=(0,ft.useState)({x:0,y:0}),[_,S]=(0,ft.useState)({x:0,y:0}),A=(0,ft.useCallback)($=>{y(N=>Math.max(r,Math.min(n,N+$)))},[r,n]),B=(0,ft.useCallback)(()=>{A(i)},[A,i]),O=(0,ft.useCallback)(()=>{A(-i)},[A,i]),P=(0,ft.useCallback)(()=>{y(s),T({x:0,y:0})},[s]),H=(0,ft.useCallback)($=>{$.preventDefault(),A($.deltaY>0?-i:i)},[A,i]),I=(0,ft.useCallback)($=>{if($.button!==0||$.isPrimary===!1)return;x(!0),R({x:$.clientX,y:$.clientY}),S(b);let N=$.currentTarget;N instanceof HTMLElement&&N.setPointerCapture($.pointerId)},[b]),z=(0,ft.useCallback)($=>{if(!w)return;$.preventDefault();let N=$.clientX-C.x,U=$.clientY-C.y;T({x:_.x+N,y:_.y+U})},[w,C,_]),M=(0,ft.useCallback)($=>{x(!1);let N=$.currentTarget;N instanceof HTMLElement&&N.releasePointerCapture($.pointerId)},[]);return(0,ft.useEffect)(()=>{let $=f.current;if($)return $.addEventListener("wheel",H,{passive:!1}),()=>{$.removeEventListener("wheel",H)}},[H]),(0,ft.useEffect)(()=>{let $=p.current;if($&&w)return document.body.style.userSelect="none",$.addEventListener("pointermove",z,{passive:!1}),$.addEventListener("pointerup",M),$.addEventListener("pointercancel",M),()=>{document.body.style.userSelect="",$.removeEventListener("pointermove",z),$.removeEventListener("pointerup",M),$.removeEventListener("pointercancel",M)}},[w,z,M]),(0,Ke.jsxs)("div",{className:d("relative flex flex-col",o?"h-full w-full":"min-h-28 w-full",t),ref:f,style:{cursor:w?"grabbing":"grab"},children:[a?(0,Ke.jsxs)("div",{className:d("absolute z-10 flex flex-col gap-1 rounded-md border border-border bg-background/80 p-1 supports-[backdrop-filter]:bg-background/70 supports-[backdrop-filter]:backdrop-blur-sm",o?"bottom-4 left-4":"bottom-2 left-2"),children:[(0,Ke.jsx)("button",{className:d("flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50"),disabled:g>=n,onClick:B,title:"Zoom in",type:"button",children:(0,Ke.jsx)(u,{size:16})}),(0,Ke.jsx)("button",{className:d("flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50"),disabled:g<=r,onClick:O,title:"Zoom out",type:"button",children:(0,Ke.jsx)(h,{size:16})}),(0,Ke.jsx)("button",{className:d("flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground"),onClick:P,title:"Reset zoom and pan",type:"button",children:(0,Ke.jsx)(l,{size:16})})]}):null,(0,Ke.jsx)("div",{className:d("flex-1 origin-center transition-transform duration-150 ease-out",o?"flex h-full w-full items-center justify-center":"flex w-full items-center justify-center"),onPointerDown:I,ref:p,role:"application",style:{transform:`translate(${b.x}px, ${b.y}px) scale(${g})`,transformOrigin:"center center",touchAction:"none",willChange:"transform"},children:e})]})},wfe=({chart:e,className:t,config:r,fullscreen:n=!1,showControls:i=!0})=>{let a=fn(),[s,o]=(0,ft.useState)(null),[l,u]=(0,ft.useState)(!1),[h,d]=(0,ft.useState)(""),[f,p]=(0,ft.useState)(""),[g,y]=(0,ft.useState)(0),{mermaid:b}=(0,ft.useContext)(ko),T=XP(),w=b?.errorComponent,{shouldRender:x,containerRef:C}=Hur({immediate:n});if((0,ft.useEffect)(()=>{if(x){if(!T){o("Mermaid plugin not available. Please add the mermaid plugin to enable diagram rendering.");return}(async()=>{try{o(null),u(!0);let _=T.getMermaid(r),S=e.split("").reduce((O,P)=>(O<<5)-O+P.charCodeAt(0)|0,0),A=`mermaid-${Math.abs(S)}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,{svg:B}=await _.render(A,e);d(B),p(B)}catch(_){f||h||o(_ instanceof Error?_.message:"Failed to render Mermaid chart")}finally{u(!1)}})()}},[e,r,g,x,T]),!(x||h||f))return(0,Ke.jsx)("div",{className:a("my-4 min-h-[200px]",t),ref:C});if(l&&!h&&!f)return(0,Ke.jsx)("div",{className:a("my-4 flex justify-center p-4",t),ref:C,children:(0,Ke.jsxs)("div",{className:a("flex items-center space-x-2 text-muted-foreground"),children:[(0,Ke.jsx)("div",{className:a("h-4 w-4 animate-spin rounded-full border-current border-b-2")}),(0,Ke.jsx)("span",{className:a("text-sm"),children:"Loading diagram..."})]})});if(s&&!h&&!f){let _=()=>y(S=>S+1);return w?(0,Ke.jsx)("div",{ref:C,children:(0,Ke.jsx)(w,{chart:e,error:s,retry:_})}):(0,Ke.jsxs)("div",{className:a("rounded-md bg-red-50 p-4",t),ref:C,children:[(0,Ke.jsxs)("p",{className:a("font-mono text-red-700 text-sm"),children:["Mermaid Error: ",s]}),(0,Ke.jsxs)("details",{className:a("mt-2"),children:[(0,Ke.jsx)("summary",{className:a("cursor-pointer text-red-600 text-xs"),children:"Show Code"}),(0,Ke.jsx)("pre",{className:a("mt-2 overflow-x-auto rounded bg-red-100 p-2 text-red-800 text-xs"),children:e})]})]})}let R=h||f;return(0,Ke.jsx)("div",{className:a("size-full",t),"data-streamdown":"mermaid",ref:C,children:(0,Ke.jsx)(LEt,{className:a(n?"size-full overflow-hidden":"overflow-hidden",t),fullscreen:n,maxZoom:3,minZoom:.5,showControls:i,zoomStep:.1,children:(0,Ke.jsx)("div",{"aria-label":"Mermaid chart",className:a("flex justify-center",n?"size-full items-center":null),dangerouslySetInnerHTML:{__html:R},role:"img"})})})}}));Efe();var _fr=re.createContext(null);function qur(e,t){if(e.length===0)return[];const r=t?.initialDelayMs??0,n=t?.typingHoldMs??1260,i=t?.interMessageDelayMs??1520,a=Math.max(0,t?.interMessageDelayJitterMs??100);return e.map((s,o)=>{const l=o===0?r+n:i,u=o===0||a===0?0:Math.round((Math.random()*2-1)*a);return{message:s,delayMs:Math.max(0,l+u)}})}function REt(e){const t=e?.trim();return t?t.replace(/\/+$/,""):null}function NEt(){const e="https://api-dev.usereq.com",t=globalThis.__USEREQ_WIDGET_API_BASE__;return REt(e)??REt(t)??"http://localhost:4000"}async function Hw(e,t){const r=await fetch(new URL(e,`${NEt()}/`).toString(),{...t,headers:{"Content-Type":"application/json",...t.headers??{}},credentials:"omit"}),n=await r.text(),i=n?JSON.parse(n):null;if(!r.ok)throw new Error(typeof i=="object"&&i&&"error"in i?String(i.error??r.statusText):r.statusText);return i}async function Gur(e){return Hw("/api/widget/sessions",{method:"POST",body:JSON.stringify(e)})}async function Wur(e){return Hw("/api/conversations/public/start",{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({agentId:e.agentId})})}async function Yur(e){return Hw(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages`,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({content:e.content})})}async function jur(e){return Hw(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages`,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`},body:JSON.stringify({content:e.content})})}async function Xur(e){return Hw("/api/conversations/public/current",{method:"GET",headers:{Authorization:`Bearer ${e}`}})}async function Kur(e){const t=new URLSearchParams;return e.cursor&&t.set("cursor",e.cursor),Hw(`/api/conversations/public/${encodeURIComponent(e.conversationId)}/messages?${t.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${e.sessionToken}`}})}function kfe(e){return`usereq-widget:${e}`}function Zur(e){try{const t=sessionStorage.getItem(kfe(e));if(!t)return null;const r=JSON.parse(t);return!r?.sessionToken||!r?.expiresAt||!r?.widgetConfig?.agentId||!r?.widgetConfig?.name?null:r}catch{return null}}function rB(e,t){sessionStorage.setItem(kfe(e),JSON.stringify(t))}function Qur(e){sessionStorage.removeItem(kfe(e))}function nB(e){return[...e].sort((t,r)=>new Date(t.createdAt).getTime()-new Date(r.createdAt).getTime())}var DEt={loadSession:Zur,saveSession:rB,mintWidgetSession:Gur,getCurrentConversation:Xur,listConversationMessages:Kur,getOrigin:()=>window.location.origin,now:()=>Date.now()};function Jur(e,t=Date.now()){if(!e)return!1;const r=new Date(e.expiresAt).getTime();return Number.isFinite(r)&&r>t}async function iB(e,t=DEt,r){const n=t.loadSession(e.agentId),i=Jur(n,t.now());if(i&&!r?.refreshWidgetConfig)return n;if(i&&r?.refreshWidgetConfig)try{const o=await t.mintWidgetSession({agentId:e.agentId,origin:t.getOrigin(),pageUrl:e.pageUrl,referrer:e.referrer}),l={...n,widgetConfig:o.widgetConfig};return t.saveSession(e.agentId,l),l}catch{return n}const a=await t.mintWidgetSession({agentId:e.agentId,origin:t.getOrigin(),pageUrl:e.pageUrl,referrer:e.referrer}),s={sessionToken:a.sessionToken,expiresAt:a.expiresAt,widgetConfig:a.widgetConfig};return t.saveSession(e.agentId,s),s}async function ehr(e,t){const r=await iB(e,t,{refreshWidgetConfig:!0});let n=r.conversationId,i=[];if(n)try{i=nB((await t.listConversationMessages({conversationId:n,sessionToken:r.sessionToken})).data)}catch{n=void 0,i=[]}else try{n=(await t.getCurrentConversation(r.sessionToken)).conversation?.id??void 0,n&&(i=nB((await t.listConversationMessages({conversationId:n,sessionToken:r.sessionToken})).data))}catch{n=void 0,i=[]}const a={...r,conversationId:n};return t.saveSession(e.agentId,a),{session:a,conversationId:n,messages:i}}async function thr(e){return ehr(e,DEt)}async function rhr(e){const t=await iB({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0});if(!t.conversationId)throw new Error("Widget conversation not started");const r=await Yur({conversationId:t.conversationId,sessionToken:t.sessionToken,content:e.content}),n={...t,conversationId:t.conversationId};return rB(e.agentId,n),{session:n,conversationId:t.conversationId,messages:nB([r.userMessage,...r.assistantMessages]),userMessage:r.userMessage,assistantMessages:r.assistantMessages}}async function IEt(e){const t=await iB({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0});if(!t.conversationId)throw new Error("Widget conversation not started");const r=e.decision!=null?EBt({confirmationId:e.confirmationId,decision:e.decision}):wBt({confirmationId:e.confirmationId,prompt:e.prompt}),n=await jur({conversationId:t.conversationId,sessionToken:t.sessionToken,content:r}),i={...t,conversationId:t.conversationId};return rB(e.agentId,i),{session:i,conversationId:t.conversationId,confirmationMessage:n.confirmationMessage}}async function nhr(e){const t=await iB({agentId:e.agentId,pageUrl:window.location.href,referrer:document.referrer||void 0}),r=await Wur({agentId:e.agentId,sessionToken:t.sessionToken}),n={...t,conversationId:r.conversation.id};return rB(e.agentId,n),{session:n,conversationId:r.conversation.id,messages:nB([r.welcomeMessage]),welcomeMessage:r.welcomeMessage}}async function ihr(e){Qur(e)}var ahr="/api/widget/events/batch",shr=10,ohr=2500,Cfe=12e4,MEt=200,lhr=600*1e3,OEt="usereq-widget:unique-script-loaded:";function chr(e){if(!e)return;const t=e.trim();if(!t)return;const r=Number(t);if(Number.isFinite(r)&&r>=0)return Math.min(Cfe,r*1e3);const n=Date.parse(t);if(!Number.isNaN(n)){const i=n-Date.now();if(i>0)return Math.min(Cfe,i)}}function uhr(e){if(e.ok)return{outcome:"ok"};const t=e.status;return t===408||t===425||t===429||t>=500?{outcome:"retry",retryAfterMs:chr(e.headers.get("retry-after"))}:t>=400&&t<500?{outcome:"drop"}:{outcome:"retry"}}var hhr=class{mode;agentId;getSession;getConversationId;batchSize;flushIntervalMs;uniqueScriptSeen=new Set;flushTimer=null;queue=[];disposed=!1;consecutiveFailures=0;nextAllowedFlushAt=0;constructor(e){this.mode=e.mode,this.agentId=e.agentId,this.getSession=e.getSession,this.getConversationId=e.getConversationId,this.batchSize=Math.max(1,e.batchSize??shr),this.flushIntervalMs=Math.max(200,e.flushIntervalMs??ohr)}dispose(){this.disposed||(this.disposed=!0,this.clearFlushTimer())}trackScriptLoaded(){this.track({eventType:"SCRIPT_LOADED"})}trackUniqueScriptLoaded(){}trackView(e){this.track({eventType:"VIEW",triggerRuleType:e}),e==="element_displayed"&&this.track({eventType:"DISPLAY_AFTER_ELEMENT_SHOWED",triggerRuleType:e})}trackClick(){this.track({eventType:"CLICK"})}trackLinkClicked(e){const t=e.trim();if(!t)return;const r=this.normalizeLinkUrl(t);this.track({eventType:"LINK_CLICKED",linkUrl:r})}track(e){}enqueue(e){this.queue.push(e),this.queue.length>MEt&&this.queue.splice(0,this.queue.length-MEt)}pruneStale(e){this.queue.length!==0&&(this.queue=this.queue.filter(t=>e-t.enqueuedAt<lhr))}async flush(e){}computeBackoffDelay(){const e=Math.max(0,this.consecutiveFailures-1),t=this.flushIntervalMs*Math.pow(2,e),r=t*.2*Math.random();return Math.min(Cfe,t+r)}async sendBatch(e){if(e.events.length===0)return{outcome:"ok"};const t=new URL(ahr,`${NEt()}/`).toString(),r={events:e.events.map(n=>{const{conversationId:i,triggerRuleType:a,linkUrl:s,...o}=n;return{...o,...i?{conversationId:i}:{},...a?{triggerRuleType:a}:{},...s?{linkUrl:s}:{}}}),pageUrl:window.location.href,referrer:document.referrer||void 0,sessionToken:e.sessionToken};if(e.transport==="beacon"&&typeof navigator.sendBeacon=="function"){const n=new Blob([JSON.stringify(r)],{type:"application/json"});if(navigator.sendBeacon(t,n))return{outcome:"ok"}}try{return uhr(await fetch(t,{method:"POST",headers:{Authorization:`Bearer ${e.sessionToken}`,"Content-Type":"application/json"},body:JSON.stringify(r),credentials:"omit",keepalive:e.transport==="beacon"}))}catch{return{outcome:"retry"}}}scheduleFlush(e){if(this.flushTimer!=null)return;const t=Math.max(0,e??this.flushIntervalMs);this.flushTimer=window.setTimeout(()=>{this.flushTimer=null,this.flush()},t)}clearFlushTimer(){this.flushTimer!=null&&(window.clearTimeout(this.flushTimer),this.flushTimer=null)}hasSessionUniqueScriptLoaded(e){try{return sessionStorage.getItem(`${OEt}${e}`)==="1"}catch{return!1}}setSessionUniqueScriptLoaded(e){try{sessionStorage.setItem(`${OEt}${e}`,"1")}catch{}}handlePageHide=()=>{this.flush({transport:"beacon"})};handleVisibilityChange=()=>{document.visibilityState==="hidden"&&this.flush({transport:"beacon"})};normalizeLinkUrl(e){try{return new URL(e,window.location.href).toString()}catch{return e}}};function dhr(e){return new hhr(e)}var fhr=`
3566
3566
  :host {
3567
3567
  color-scheme: light;
3568
3568
  --tw-border-style: solid;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usereq/widget",
3
- "version": "0.2.0-rc.0",
3
+ "version": "0.2.0-rc.1",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -76,7 +76,7 @@
76
76
  },
77
77
  "dependencies": {
78
78
  "@streamdown/mermaid": "^1.0.2",
79
- "@usereq/ui": "^0.2.0",
79
+ "@usereq/ui": "^0.2.1",
80
80
  "lucide-react": "^0.553.0",
81
81
  "motion": "^12.23.24",
82
82
  "react": "^19.2.0",