@bridgeline-digital/hawkai-assistant 1.0.0-beta.2 → 1.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -241,11 +241,13 @@ interface Tool<TInput, TOutput> {
241
241
  properties: Record<string, unknown>;
242
242
  required?: string[];
243
243
  };
244
- execute: (input: TInput) => Promise<TOutput>;
244
+ execute: (input: TInput, options?: { signal?: AbortSignal }) => Promise<TOutput>;
245
245
  render?: (data: RenderToolData<TInput>, helpers: RenderToolHelpers) => AsyncRenderToolResult;
246
246
  }
247
247
  ```
248
248
 
249
+ `execute` receives an optional `options.signal` (an `AbortSignal`) as its second argument. The signal aborts when the user stops the response; long-running tools may pass it to `fetch` (or otherwise observe it) to cancel in-flight work. Ignoring it is fine for synchronous or fast tools.
250
+
249
251
  Pass tools in the `tools` array of `Config`:
250
252
 
251
253
  ```js
@@ -7,7 +7,7 @@ ${a}`,l++}else Ee(e,n,i)?u=e.slice(e.charCodeAt(n+6)===k?n+7:n+6,r)||void 0:p(e,
7
7
  `,n)}return e.slice(n)}for(;n<e.length;){let t=e.indexOf(`\r`,n),r=e.indexOf(`
8
8
  `,n),i=-1;if(t!==-1&&r!==-1?i=t<r?t:r:t===-1?r!==-1&&(i=r):i=t===e.length-1?-1:t,i===-1)break;p(e,n,i),n=i+1,e.charCodeAt(n-1)===Se&&e.charCodeAt(n)===xe&&n++}return e.slice(n)}function p(e,t,n){if(t===n){h();return}let r=e.charCodeAt(t);if(Te(e,t,r)){let r=e.charCodeAt(t+5)===k?t+6:t+5,i=e.slice(r,n);c=l===0?i:`${c}
9
9
  ${i}`,l++;return}if(Ee(e,t,r)){u=e.slice(e.charCodeAt(t+6)===k?t+7:t+6,n)||void 0;return}if(r===105&&e.charCodeAt(t+1)===100&&e.charCodeAt(t+2)===58){let r=e.slice(e.charCodeAt(t+3)===k?t+4:t+3,n);s=r.includes(`\0`)?void 0:r;return}if(r===58){i&&i(e.slice(t,n).slice(e.charCodeAt(t+1)===k?2:1));return}let a=e.slice(t,n),o=a.indexOf(`:`);if(o===-1){m(a,``,a);return}let d=a.slice(0,o),f=a.charCodeAt(o+1)===k?2:1;m(d,a.slice(o+f),a)}function m(e,t,i){switch(e){case`event`:u=t||void 0;break;case`data`:c=l===0?t:`${c}
10
- ${t}`,l++;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new be(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new be(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}));break}}function h(){l>0&&t({id:s,event:u,data:c}),s=void 0,c=``,l=0,u=void 0}function ee(e={}){if(e.consume&&a.length>0){let e=a.join(``);p(e,0,e.length)}o=!0,s=void 0,c=``,l=0,u=void 0,a.length=0}return{feed:d,reset:ee}}function Te(e,t,n){return n===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}function Ee(e,t,n){return n===101&&e.charCodeAt(t+1)===118&&e.charCodeAt(t+2)===101&&e.charCodeAt(t+3)===110&&e.charCodeAt(t+4)===116&&e.charCodeAt(t+5)===58}var A=[];for(let e=0;e<256;++e)A.push((e+256).toString(16).slice(1));function De(e,t=0){return(A[e[t+0]]+A[e[t+1]]+A[e[t+2]]+A[e[t+3]]+`-`+A[e[t+4]]+A[e[t+5]]+`-`+A[e[t+6]]+A[e[t+7]]+`-`+A[e[t+8]]+A[e[t+9]]+`-`+A[e[t+10]]+A[e[t+11]]+A[e[t+12]]+A[e[t+13]]+A[e[t+14]]+A[e[t+15]]).toLowerCase()}var Oe=new Uint8Array(16);function ke(){return crypto.getRandomValues(Oe)}function Ae(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():je(e,t,n)}function je(e,t,n){e||={};let r=e.random??e.rng?.()??ke();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return De(r)}var Me=`hawkai-assistant:sessionId`,Ne=`hawkai-assistant:actorId`,j=``,M=``,Pe,Fe=e=>{try{return localStorage.getItem(e)}catch{return null}},Ie=(e,t)=>{try{localStorage.setItem(e,t)}catch{return}},Le=()=>{let e=Fe(Me);e&&(j=e),M=Fe(Ne)||window.HawkAI.Assistant.config.actorId||Ae(),Ie(Ne,M),Pe=window.HawkAI.Assistant.config.context},Re=()=>j,ze=()=>M,Be=()=>{j=Ae(),Ie(Me,j)},N=e=>{j=e,Ie(Me,e)},Ve=()=>{j||(j=Ae(),Ie(Me,j))},He=e=>{M=e||Ae(),Ie(Ne,M)},Ue=()=>Pe,We=e=>{Pe=e},Ge=(e,t)=>e instanceof Error&&e.message?e.message:t,Ke=async e=>{let t=(await e.text()).trim();return t?`Assistant API error ${e.status}: ${t}`:`Assistant API error ${e.status}`},qe=async(e,t,n,r)=>{Ve();let i=window.HawkAI.Assistant.config,a=`${i.apiUrl}/invocations`,o=await fetch(a,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`,Connection:`keep-alive`},body:JSON.stringify({accountId:i.accountId,agentId:i.agentId,sessionId:Re(),actorId:ze(),prompt:e.text,files:e.files,context:Ue(),toolResults:e.toolResults?.map(({toolUseId:e,output:t,status:n})=>({toolUseId:e,content:t===void 0?[]:[n===`error`||typeof t==`string`?{text:String(t)}:{json:t}],status:n})),stream:!0,tools:t.map(({name:e,description:t,inputSchema:n})=>({name:e,description:t,inputSchema:n}))}),signal:r});if(!o.ok)throw Error(await Ke(o));let s=``,c=[],l=we({onEvent:e=>{if(!e.data||e.data===`[DONE]`)return;let t;try{t=JSON.parse(e.data)}catch{throw Error(`Assistant API returned invalid JSON in the stream.`)}if(e.event===`text`)s+=t.delta,n(s);else if(e.event===`frontendTool`){let e=t;c.push(e)}}});if(!o.body)return{role:`assistant`};let u=o.body.getReader(),d=new TextDecoder;for(;;){let{done:e,value:t}=await u.read();if(e)break;try{l.feed(d.decode(t,{stream:!0}))}catch(e){throw Error(Ge(e,`Assistant API returned an invalid stream.`))}}let f={role:`assistant`};return s&&(f.text=s),c.length>0&&(f.toolUses=c.map(({toolUseId:e,tool:t,args:n})=>({id:e,name:t,input:n}))),f},Je=async(e,t,n,r)=>{let i=e;for(;!r?.aborted;){n.onAssistantTurnStart();let e=await qe(i,t,n.onAssistantTextDelta,r);if(n.onAssistantTurnComplete(e),!e.toolUses?.length)break;let a={role:`user`,toolResults:await Promise.all(e.toolUses.map(async e=>{let r=t.find(t=>t.name===e.name);if(r)try{let t=await r.execute(e.input??{});return n.onToolResult(e.id,t,`success`),{toolUseId:e.id,output:t,status:`success`}}catch(t){let r=Ge(t,`Tool "${e.name}" failed.`);return n.onToolResult(e.id,r,`error`),{toolUseId:e.id,output:r,status:`error`}}let i=`Tool "${e.name}" not found.`;return n.onToolResult(e.id,i,`error`),{toolUseId:e.id,output:i,status:`error`}}))};n.onToolResultsTurn(a),i=a}},Ye=async()=>{let e=window.HawkAI.Assistant.config,t=`${e.apiUrl}/invocations`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,"x-agent-id":e.agentId},body:JSON.stringify({accountId:e.accountId,agentId:e.agentId,action:`getUIConfig`})});if(!n.ok)throw Error(`Failed to retrieve configuration from API.`);let r=await n.json();return{enabled:!r.tokenLimitReached,ui:r.ui}},P=async()=>{if(!Re())return[];let e=window.HawkAI.Assistant.config,t=`${e.apiUrl}/invocations`,n=Re(),r=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,"x-agent-id":e.agentId},body:JSON.stringify({accountId:e.accountId,agentId:e.agentId,sessionId:n,actorId:ze(),action:`getHistory`})});if(!r.ok)throw Error(`Failed to retrieve conversation history for session: ${n}.`);return(await r.json()).turns},F={setActorId:void 0,toggle:void 0,sendMessage:void 0,clearChat:void 0},Xe,I,Ze,Qe,$e=0,et=[],L=n,tt=L.__b,nt=L.__r,rt=L.diffed,it=L.__c,at=L.unmount,ot=L.__;function R(e,t){L.__h&&L.__h(I,e,$e||t),$e=0;var n=I.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function z(e){return $e=1,st(_t,e)}function st(e,t,n){var r=R(Xe++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):_t(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=I,!I.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=r.__c.__H.__.filter(function(e){return e.__c});if(i.every(function(e){return!e.__N}))return!a||a.call(this,e,t,n);var o=r.__c.props!==e;return i.some(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a&&a.call(this,e,t,n)||o};I.__f=!0;var a=I.shouldComponentUpdate,o=I.componentWillUpdate;I.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},I.shouldComponentUpdate=i}return r.__N||r.__}function B(e,t){var n=R(Xe++,3);!L.__s&&gt(n.__H,t)&&(n.__=e,n.u=t,I.__H.__h.push(n))}function ct(e){return $e=5,lt(function(){return{current:e}},[])}function lt(e,t){var n=R(Xe++,7);return gt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function ut(e){var t=I.context[e.__c],n=R(Xe++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(I)),t.props.value):e.__}function dt(){for(var e;e=et.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(mt),t.__h.some(ht),t.__h=[]}catch(n){t.__h=[],L.__e(n,e.__v)}}}L.__b=function(e){I=null,tt&&tt(e)},L.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ot&&ot(e,t)},L.__r=function(e){nt&&nt(e),Xe=0;var t=(I=e.__c).__H;t&&(Ze===I?(t.__h=[],I.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(mt),t.__h.some(ht),t.__h=[],Xe=0)),Ze=I},L.diffed=function(e){rt&&rt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(et.push(t)!==1&&Qe===L.requestAnimationFrame||((Qe=L.requestAnimationFrame)||pt)(dt)),t.__H.__.some(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Ze=I=null},L.__c=function(e,t){t.some(function(e){try{e.__h.some(mt),e.__h=e.__h.filter(function(e){return!e.__||ht(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],L.__e(n,e.__v)}}),it&&it(e,t)},L.unmount=function(e){at&&at(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{mt(e)}catch(e){t=e}}),n.__H=void 0,t&&L.__e(t,n.__v))};var ft=typeof requestAnimationFrame==`function`;function pt(e){var t,n=function(){clearTimeout(r),ft&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);ft&&(t=requestAnimationFrame(n))}function mt(e){var t=I,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),I=t}function ht(e){var t=I;e.__c=e.__(),I=t}function gt(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function _t(e,t){return typeof t==`function`?t(e):t}var vt=(()=>{try{return new BroadcastChannel(`hawkai-assistant`)}catch{return null}})(),yt=(e,t)=>{vt?.postMessage({type:e,payload:t})},bt=(e,t)=>{if(!vt)return()=>{};let n=n=>{n.data.type===e&&t(n.data.payload)};return vt.addEventListener(`message`,n),()=>{vt.removeEventListener(`message`,n)}},xt=()=>yt(`turns_updated`,void 0),St=e=>yt(`streaming_changed`,e),Ct=e=>yt(`chat_cleared`,e),wt=()=>yt(`stop_requested`,void 0),Tt=e=>bt(`turns_updated`,e),Et=e=>bt(`streaming_changed`,e),Dt=e=>bt(`chat_cleared`,e),Ot=e=>bt(`stop_requested`,e),kt=0;Array.isArray;function V(e,t,r,i,a,o){t||={};var s,c,l=t;if(`ref`in l)for(c in l={},t)c==`ref`?s=t[c]:l[c]=t[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--kt,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return n.vnode&&n.vnode(u),u}var At=({product:e})=>{let t=e.salePrice??e.price,n=window.HawkAI.Assistant.config.addToCart;return V(`div`,{className:`hawkai-assistant__product flex w-32 shrink-0 flex-col overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 text-xs text-gray-700 dark:text-gray-300`,children:[V(`a`,{href:e.url,target:`_top`,rel:`noreferrer`,className:`flex flex-col hover:shadow-md`,children:[e.imageUrl&&V(`img`,{src:e.imageUrl,alt:e.title,className:`hawkai-assistant__product__image h-20 w-full object-cover`}),V(`div`,{className:`hawkai-assistant__product__info flex flex-col gap-1 p-2`,children:[V(`span`,{className:`hawkai-assistant__product__title line-clamp-2 font-medium leading-tight`,children:e.title}),t!==void 0&&V(`span`,{className:`hawkai-assistant__product__price font-semibold text-primary dark:text-white`,children:[`$`,t.toFixed(2)]})]})]}),n&&V(`button`,{type:`button`,className:`hawkai-assistant__product__add-to-cart-button mt-auto w-full px-2 py-1 text-xs font-medium text-white bg-primary cursor-pointer hover:opacity-90`,onClick:t=>{t.stopPropagation(),n(e)},children:`Add to Cart`})]})},jt=({products:e})=>V(`div`,{className:`hawkai-assistant__carousel flex gap-2 overflow-x-auto py-1`,children:e.map(e=>V(At,{product:e},e.id))}),Mt=()=>({name:`display_products`,description:`Render a visual product carousel that is immediately visible to the user in the chat.
10
+ ${t}`,l++;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new be(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new be(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}));break}}function h(){l>0&&t({id:s,event:u,data:c}),s=void 0,c=``,l=0,u=void 0}function ee(e={}){if(e.consume&&a.length>0){let e=a.join(``);p(e,0,e.length)}o=!0,s=void 0,c=``,l=0,u=void 0,a.length=0}return{feed:d,reset:ee}}function Te(e,t,n){return n===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}function Ee(e,t,n){return n===101&&e.charCodeAt(t+1)===118&&e.charCodeAt(t+2)===101&&e.charCodeAt(t+3)===110&&e.charCodeAt(t+4)===116&&e.charCodeAt(t+5)===58}var A=[];for(let e=0;e<256;++e)A.push((e+256).toString(16).slice(1));function De(e,t=0){return(A[e[t+0]]+A[e[t+1]]+A[e[t+2]]+A[e[t+3]]+`-`+A[e[t+4]]+A[e[t+5]]+`-`+A[e[t+6]]+A[e[t+7]]+`-`+A[e[t+8]]+A[e[t+9]]+`-`+A[e[t+10]]+A[e[t+11]]+A[e[t+12]]+A[e[t+13]]+A[e[t+14]]+A[e[t+15]]).toLowerCase()}var Oe=new Uint8Array(16);function ke(){return crypto.getRandomValues(Oe)}function Ae(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():je(e,t,n)}function je(e,t,n){e||={};let r=e.random??e.rng?.()??ke();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return De(r)}var Me=`hawkai-assistant:sessionId`,Ne=`hawkai-assistant:actorId`,j=``,M=``,Pe,Fe=e=>{try{return localStorage.getItem(e)}catch{return null}},Ie=(e,t)=>{try{localStorage.setItem(e,t)}catch{return}},Le=()=>{let e=Fe(Me);e&&(j=e),M=Fe(Ne)||window.HawkAI.Assistant.config.actorId||Ae(),Ie(Ne,M),Pe=window.HawkAI.Assistant.config.context},Re=()=>j,ze=()=>M,Be=()=>{j=Ae(),Ie(Me,j)},N=e=>{j=e,Ie(Me,e)},Ve=()=>{j||(j=Ae(),Ie(Me,j))},He=e=>{M=e||Ae(),Ie(Ne,M)},Ue=()=>Pe,We=e=>{Pe=e},Ge=(e,t)=>e instanceof Error&&e.message?e.message:t,Ke=async e=>{let t=(await e.text()).trim();return t?`Assistant API error ${e.status}: ${t}`:`Assistant API error ${e.status}`},qe=async(e,t,n,r)=>{Ve();let i=window.HawkAI.Assistant.config,a=`${i.apiUrl}/invocations`,o=await fetch(a,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`,Connection:`keep-alive`},body:JSON.stringify({accountId:i.accountId,agentId:i.agentId,sessionId:Re(),actorId:ze(),prompt:e.text,files:e.files,context:Ue(),toolResults:e.toolResults?.map(({toolUseId:e,output:t,status:n})=>({toolUseId:e,content:t===void 0?[]:[n===`error`||typeof t==`string`?{text:String(t)}:{json:t}],status:n})),stream:!0,tools:t.map(({name:e,description:t,inputSchema:n})=>({name:e,description:t,inputSchema:n}))}),signal:r});if(!o.ok)throw Error(await Ke(o));let s=``,c=[],l=we({onEvent:e=>{if(!e.data||e.data===`[DONE]`)return;let t;try{t=JSON.parse(e.data)}catch{throw Error(`Assistant API returned invalid JSON in the stream.`)}if(e.event===`text`)s+=t.delta,n(s);else if(e.event===`frontendTool`){let e=t;c.push(e)}}});if(!o.body)return{role:`assistant`};let u=o.body.getReader(),d=new TextDecoder;for(;;){let{done:e,value:t}=await u.read();if(e)break;try{l.feed(d.decode(t,{stream:!0}))}catch(e){throw Error(Ge(e,`Assistant API returned an invalid stream.`))}}let f=d.decode();if(f)try{l.feed(f)}catch(e){throw Error(Ge(e,`Assistant API returned an invalid stream.`))}let p={role:`assistant`};return s&&(p.text=s),c.length>0&&(p.toolUses=c.map(({toolUseId:e,tool:t,args:n})=>({id:e,name:t,input:n}))),p},Je=async(e,t,n,r)=>{let i=e,a=(e,t)=>(n.onToolResult(e,t,`error`),{toolUseId:e,output:t,status:`error`});for(;!r?.aborted;){n.onAssistantTurnStart();let e=await qe(i,t,n.onAssistantTextDelta,r);if(n.onAssistantTurnComplete(e),!e.toolUses?.length)break;let o={role:`user`,toolResults:await Promise.all(e.toolUses.map(async e=>{let i=t.find(t=>t.name===e.name);if(!i)return a(e.id,`Tool "${e.name}" not found.`);try{let t=await i.execute(e.input??{},{signal:r});return n.onToolResult(e.id,t,`success`),{toolUseId:e.id,output:t,status:`success`}}catch(t){return a(e.id,Ge(t,`Tool "${e.name}" failed.`))}}))};n.onToolResultsTurn(o),i=o}},Ye=async()=>{let e=window.HawkAI.Assistant.config,t=`${e.apiUrl}/invocations`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,"x-agent-id":e.agentId},body:JSON.stringify({accountId:e.accountId,agentId:e.agentId,action:`getUIConfig`})});if(!n.ok)throw Error(`Failed to retrieve configuration from API.`);let r=await n.json();return{enabled:!r.tokenLimitReached,ui:r.ui}},P=async()=>{if(!Re())return[];let e=window.HawkAI.Assistant.config,t=`${e.apiUrl}/invocations`,n=Re(),r=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,"x-agent-id":e.agentId},body:JSON.stringify({accountId:e.accountId,agentId:e.agentId,sessionId:n,actorId:ze(),action:`getHistory`})});if(!r.ok)throw Error(`Failed to retrieve conversation history for session: ${n}.`);return(await r.json()).turns},F={setActorId:void 0,toggle:void 0,sendMessage:void 0,clearChat:void 0},Xe,I,Ze,Qe,$e=0,et=[],L=n,tt=L.__b,nt=L.__r,rt=L.diffed,it=L.__c,at=L.unmount,ot=L.__;function R(e,t){L.__h&&L.__h(I,e,$e||t),$e=0;var n=I.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function z(e){return $e=1,st(_t,e)}function st(e,t,n){var r=R(Xe++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):_t(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=I,!I.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=r.__c.__H.__.filter(function(e){return e.__c});if(i.every(function(e){return!e.__N}))return!a||a.call(this,e,t,n);var o=r.__c.props!==e;return i.some(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a&&a.call(this,e,t,n)||o};I.__f=!0;var a=I.shouldComponentUpdate,o=I.componentWillUpdate;I.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},I.shouldComponentUpdate=i}return r.__N||r.__}function B(e,t){var n=R(Xe++,3);!L.__s&&gt(n.__H,t)&&(n.__=e,n.u=t,I.__H.__h.push(n))}function ct(e){return $e=5,lt(function(){return{current:e}},[])}function lt(e,t){var n=R(Xe++,7);return gt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function ut(e){var t=I.context[e.__c],n=R(Xe++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(I)),t.props.value):e.__}function dt(){for(var e;e=et.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(mt),t.__h.some(ht),t.__h=[]}catch(n){t.__h=[],L.__e(n,e.__v)}}}L.__b=function(e){I=null,tt&&tt(e)},L.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ot&&ot(e,t)},L.__r=function(e){nt&&nt(e),Xe=0;var t=(I=e.__c).__H;t&&(Ze===I?(t.__h=[],I.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(mt),t.__h.some(ht),t.__h=[],Xe=0)),Ze=I},L.diffed=function(e){rt&&rt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(et.push(t)!==1&&Qe===L.requestAnimationFrame||((Qe=L.requestAnimationFrame)||pt)(dt)),t.__H.__.some(function(e){e.u&&(e.__H=e.u),e.u=void 0})),Ze=I=null},L.__c=function(e,t){t.some(function(e){try{e.__h.some(mt),e.__h=e.__h.filter(function(e){return!e.__||ht(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],L.__e(n,e.__v)}}),it&&it(e,t)},L.unmount=function(e){at&&at(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{mt(e)}catch(e){t=e}}),n.__H=void 0,t&&L.__e(t,n.__v))};var ft=typeof requestAnimationFrame==`function`;function pt(e){var t,n=function(){clearTimeout(r),ft&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);ft&&(t=requestAnimationFrame(n))}function mt(e){var t=I,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),I=t}function ht(e){var t=I;e.__c=e.__(),I=t}function gt(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function _t(e,t){return typeof t==`function`?t(e):t}var vt=(()=>{try{return new BroadcastChannel(`hawkai-assistant`)}catch{return null}})(),yt=(e,t)=>{vt?.postMessage({type:e,payload:t})},bt=(e,t)=>{if(!vt)return()=>{};let n=n=>{n.data.type===e&&t(n.data.payload)};return vt.addEventListener(`message`,n),()=>{vt.removeEventListener(`message`,n)}},xt=()=>yt(`turns_updated`,void 0),St=e=>yt(`streaming_changed`,e),Ct=e=>yt(`chat_cleared`,e),wt=()=>yt(`stop_requested`,void 0),Tt=e=>bt(`turns_updated`,e),Et=e=>bt(`streaming_changed`,e),Dt=e=>bt(`chat_cleared`,e),Ot=e=>bt(`stop_requested`,e),kt=0;Array.isArray;function V(e,t,r,i,a,o){t||={};var s,c,l=t;if(`ref`in l)for(c in l={},t)c==`ref`?s=t[c]:l[c]=t[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--kt,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return n.vnode&&n.vnode(u),u}var At=({product:e})=>{let t=e.salePrice??e.price,n=window.HawkAI.Assistant.config.addToCart;return V(`div`,{className:`hawkai-assistant__product flex w-32 shrink-0 flex-col overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 text-xs text-gray-700 dark:text-gray-300`,children:[V(`a`,{href:e.url,target:`_top`,rel:`noreferrer`,className:`flex flex-col hover:shadow-md`,children:[e.imageUrl&&V(`img`,{src:e.imageUrl,alt:e.title,className:`hawkai-assistant__product__image h-20 w-full object-cover`}),V(`div`,{className:`hawkai-assistant__product__info flex flex-col gap-1 p-2`,children:[V(`span`,{className:`hawkai-assistant__product__title line-clamp-2 font-medium leading-tight`,children:e.title}),t!==void 0&&V(`span`,{className:`hawkai-assistant__product__price font-semibold text-primary dark:text-white`,children:[`$`,t.toFixed(2)]})]})]}),n&&V(`button`,{type:`button`,className:`hawkai-assistant__product__add-to-cart-button mt-auto w-full px-2 py-1 text-xs font-medium text-white bg-primary cursor-pointer hover:opacity-90`,onClick:t=>{t.stopPropagation(),n(e)},children:`Add to Cart`})]})},jt=({products:e})=>V(`div`,{className:`hawkai-assistant__carousel flex gap-2 overflow-x-auto py-1`,children:e.map(e=>V(At,{product:e},e.id))}),Mt=()=>({name:`display_products`,description:`Render a visual product carousel that is immediately visible to the user in the chat.
11
11
  Call this after a product search to show products that directly match what the user asked for.
12
12
  Only include products that are genuinely relevant — if the user asked for shoes, exclude shoe organizers, shoe racks, or other accessories.
13
13
  When in doubt, omit the result rather than showing something tangentially related.
@@ -28,7 +28,7 @@ display_products succeeded, your next assistant response must be CONVERSATIONAL
28
28
  Only call display_products again when the user explicitly asks for NEW or DIFFERENT products — e.g. "show me goggles instead", "what about boots?", "filter by brand X", "add more".
29
29
  If the user submits a toolResult after a successful display_products call without asking for anything new, respond with text only.`,inputSchema:{type:`object`,properties:{products:{type:`array`,description:`The products to display.`,items:{type:`object`,properties:{id:{type:`string`,description:`Unique product identifier.`},title:{type:`string`,description:`Product name.`},url:{type:`string`,description:`URL of the product page.`},imageUrl:{type:`string`,description:`URL of the product image.`},price:{type:`number`,description:`Regular price.`},salePrice:{type:`number`,description:`Sale price, if discounted.`},rating:{type:`number`,description:`Average rating (0–5).`},brand:{type:`string`,description:`Brand name.`},sku:{type:`string`,description:`SKU or part number.`},description:{type:`string`,description:`Short product description.`}},required:[`id`,`title`,`url`]}}},required:[`products`]},execute:async e=>`Product cards have been displayed for products with IDs: ${e.products.map(e=>e.id).join(`, `)}`,render:({input:e})=>{let t=e.products??[];return t.length===0?null:y(jt,{products:t})}}),Nt=()=>({name:`retrieve_page_context`,description:`Get information about the page the user is currently viewing: URL, title, headings, and main content. Call this when the user asks about the current page or when page details would materially improve the answer.`,inputSchema:{type:`object`,properties:{}},execute:async e=>{let t=e=>document.querySelector(`meta[name="${e}"]`)?.content||document.querySelector(`meta[property="${e}"]`)?.content||``,n=document.title||``,r=t(`description`)||t(`og:description`)||``,i=t(`og:title`)||``,a=document.querySelector(`h1`)?.textContent?.trim()||``,o=[];document.querySelectorAll(`script[type="application/ld+json"]`).forEach(e=>{try{o.push(JSON.parse(e.textContent??``))}catch{}});let s=document.querySelector(`main`)||document.querySelector(`[role="main"]`)||document.querySelector(`article`)||document.querySelector(`.content`)||document.querySelector(`#content`),c=1700,l=(s?.textContent?.trim()||``).replace(/\n{3,}/g,`
30
30
 
31
- `),u=o.length?JSON.stringify(o).slice(0,300):``,d=l.slice(0,c)+(l.length>c?`…`:``);return{url:location.href,title:n,description:r,ogTitle:i,h1:a,mainContent:d,structuredData:u}}}),Pt=ye(null),Ft=`hawkai-assistant-closed`,It=()=>{try{return localStorage.getItem(Ft)===`true`}catch{return!1}},Lt=({children:e,initialTurns:t})=>{let[n,r]=z(t),[i,a]=z(!1),[o,s]=z(It),c=ct(!1);B(()=>{try{localStorage.setItem(Ft,String(o))}catch{return}},[o]),B(()=>{let e=e=>{e.key===Ft&&s(e.newValue===`true`)};return window.addEventListener(`storage`,e),()=>{window.removeEventListener(`storage`,e)}},[]),B(()=>{let e=Tt(async()=>{c.current||r(await P())}),t=Et(a),n=Dt(e=>{N(e),r([])});return()=>{e(),t(),n()}},[]);let l=e=>{c.current=e,a(e),St(e)},u=e=>{r(t=>[...t,e])},d=e=>{r(t=>t.length===0?[e]:[...t.slice(0,-1),e]),xt()},f=e=>{r(t=>{if(t.length===0)return t;let n=t[t.length-1];return n.role===`assistant`?[...t.slice(0,-1),{...n,text:e}]:t})},p=[Nt(),Mt(),...window.HawkAI.Assistant.config.tools??[]],m=()=>{Be(),r([]),Ct(Re())};return B(()=>(F.setActorId=e=>{He(e),m()},()=>{F.setActorId=void 0}),[]),V(Pt.Provider,{value:{turns:n,tools:p,isStreaming:i,setIsStreaming:l,userClosed:o,setUserClosed:s,appendTurn:u,replaceLastTurn:d,updateLastAssistantText:f,updateToolUse:(e,t)=>{r(n=>n.map(n=>{if(n.role!==`assistant`||!n.toolUses?.length)return n;let r=n.toolUses.findIndex(t=>t.id===e);if(r===-1)return n;let i=n.toolUses.slice();return i[r]={...i[r],...t},{...n,toolUses:i}}))},clearChat:m},children:e})},Rt=()=>{let e=ut(Pt);if(e===null)throw Error(`useAssistant must be used inside AssistantProvider`);return e},zt=()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`,Bt=(e=`auto`)=>{let[t,n]=z(()=>e===`light`||e===`dark`?e:zt());return B(()=>{if(e===`light`||e===`dark`){n(e);return}n(zt());let t=window.matchMedia(`(prefers-color-scheme: dark)`),r=e=>{n(e.matches?`dark`:`light`)};return t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t};function Vt(e,t){for(var n in t)e[n]=t[n];return e}function Ht(e,t){for(var n in e)if(n!==`__source`&&!(n in t))return!0;for(var r in t)if(r!==`__source`&&e[r]!==t[r])return!0;return!1}function Ut(e,t){this.props=e,this.context=t}(Ut.prototype=new S).isPureReactComponent=!0,Ut.prototype.shouldComponentUpdate=function(e,t){return Ht(this.props,e)||Ht(this.state,t)};var Wt=n.__b;n.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Wt&&Wt(e)};var Gt=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.forward_ref`)||3911;function Kt(e){function t(t){var n=Vt({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=Gt,t.render=e,t.prototype.isReactComponent=t.__f=!0,t.displayName=`ForwardRef(`+(e.displayName||e.name)+`)`,t}var qt=n.__e;n.__e=function(e,t,n,r){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e??(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}qt(e,t,n,r)};var Jt=n.unmount;function Yt(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){typeof e.__c==`function`&&e.__c()}),e.__c.__H=null),(e=Vt({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return Yt(e,t,n)})),e}function Xt(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return Xt(e,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Zt(){this.__u=0,this.o=null,this.__b=null}function Qt(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function $t(){this.i=null,this.l=null}n.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Jt&&Jt(e)},(Zt.prototype=new S).__c=function(e,t){var n=t.__c,r=this;r.o??=[],r.o.push(n);var i=Qt(r.__v),a=!1,o=function(){a||r.__z||(a=!0,n.__R=null,i?i(c):c())};n.__R=o;var s=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=Xt(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=s,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},Zt.prototype.componentWillUnmount=function(){this.o=[]},Zt.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement(`div`),r=this.__v.__k[0].__c;this.__v.__k[0]=Yt(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&y(x,null,e.fallback);return i&&(i.__u&=-33),[y(x,null,t.__a?null:e.children),i]};var en=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!==`t`||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};($t.prototype=new S).__a=function(e){var t=this,n=Qt(t.__v),r=t.l.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),en(t,e,r)):i()};n?n(a):a()}},$t.prototype.render=function(e){this.i=null,this.l=new Map;var t=ce(e.children);e.revealOrder&&e.revealOrder[0]===`b`&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},$t.prototype.componentDidUpdate=$t.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){en(e,n,t)})};var tn=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,nn=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,rn=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,an=/[A-Z0-9]/g,on=typeof document<`u`,sn=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/:/fil|che|ra/).test(e)};S.prototype.isReactComponent=!0,[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(S.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var cn=n.event;n.event=function(e){return cn&&(e=cn(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var ln={configurable:!0,get:function(){return this.class}},un=n.vnode;n.vnode=function(e){typeof e.type==`string`&&function(e){var t=e.props,n=e.type,r={},i=n.indexOf(`-`)==-1;for(var a in t){var o=t[a];if(!(a===`value`&&`defaultValue`in t&&o==null||on&&a===`children`&&n===`noscript`||a===`class`||a===`className`)){var s=a.toLowerCase();a===`defaultValue`&&`value`in t&&t.value==null?a=`value`:a===`download`&&!0===o?o=``:s===`translate`&&o===`no`?o=!1:s[0]===`o`&&s[1]===`n`?s===`ondoubleclick`?a=`ondblclick`:s!==`onchange`||n!==`input`&&n!==`textarea`||sn(t.type)?s===`onfocus`?a=`onfocusin`:s===`onblur`?a=`onfocusout`:rn.test(a)&&(a=s):s=a=`oninput`:i&&nn.test(a)?a=a.replace(an,`-$&`).toLowerCase():o===null&&(o=void 0),s===`oninput`&&r[a=s]&&(a=`oninputCapture`),r[a]=o}}n==`select`&&(r.multiple&&Array.isArray(r.value)&&(r.value=ce(t.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),r.defaultValue!=null&&(r.value=ce(t.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,`className`,ln)):t.className&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=tn,un&&un(e)};var dn=n.__r;n.__r=function(e){dn&&dn(e),e.__c};var fn=n.diffed;n.diffed=function(e){fn&&fn(e);var t=e.props,n=e.__e;n!=null&&e.type===`textarea`&&`value`in t&&t.value!==n.value&&(n.value=t.value==null?``:t.value)};function pn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M8.625 12a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375M21 12c0 4.556-4.03 8.25-9 8.25a9.764 9.764 0 0 1-2.555-.337A5.972 5.972 0 0 1 5.41 20.97a5.969 5.969 0 0 1-.474-.065 4.48 4.48 0 0 0 .978-2.025c.09-.457-.133-.901-.467-1.226C3.93 16.178 3 14.189 3 12c0-4.556 4.03-8.25 9-8.25s9 3.694 9 8.25Z`}))}var mn=Kt(pn);function hn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13`}))}var gn=Kt(hn);function _n({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M6 18 18 6M6 6l12 12`}))}var vn=Kt(_n);function yn(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=yn(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function bn(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=yn(e))&&(r&&(r+=` `),r+=t);return r}var xn=({isOpen:e,onClick:t})=>{let n=window.HawkAI.Assistant.config?.ui?.position??`right`;return V(`button`,{type:`button`,onClick:t,className:bn({"hawkai-assistant__trigger fixed bottom-6 z-50 flex h-14 w-14 cursor-pointer items-center justify-center rounded-full bg-primary text-white shadow-lg/30 hover:bg-primary-hover focus:outline-none":!0,"hawkai-assistant__trigger--open":e,"hawkai-assistant__trigger--right right-6":n===`right`,"hawkai-assistant__trigger--left left-6":n===`left`}),title:e?`Close Assistant`:`Open Assistant`,"aria-label":e?`Close Assistant`:`Open Assistant`,children:V(e?vn:mn,{className:`size-6`,strokeWidth:2,"aria-hidden":!0})})};function Sn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`M3.28 2.22a.75.75 0 0 0-1.06 1.06L5.44 6.5H2.75a.75.75 0 0 0 0 1.5h4.5A.75.75 0 0 0 8 7.25v-4.5a.75.75 0 0 0-1.5 0v2.69L3.28 2.22ZM13.5 2.75a.75.75 0 0 0-1.5 0v4.5c0 .414.336.75.75.75h4.5a.75.75 0 0 0 0-1.5h-2.69l3.22-3.22a.75.75 0 0 0-1.06-1.06L13.5 5.44V2.75ZM3.28 17.78l3.22-3.22v2.69a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.69l-3.22 3.22a.75.75 0 1 0 1.06 1.06ZM13.5 14.56l3.22 3.22a.75.75 0 1 0 1.06-1.06l-3.22-3.22h2.69a.75.75 0 0 0 0-1.5h-4.5a.75.75 0 0 0-.75.75v4.5a.75.75 0 0 0 1.5 0v-2.69Z`}))}var Cn=Kt(Sn);function wn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`m13.28 7.78 3.22-3.22v2.69a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.69l-3.22 3.22a.75.75 0 0 0 1.06 1.06ZM2 17.25v-4.5a.75.75 0 0 1 1.5 0v2.69l3.22-3.22a.75.75 0 0 1 1.06 1.06L4.56 16.5h2.69a.75.75 0 0 1 0 1.5h-4.5a.747.747 0 0 1-.75-.75ZM12.22 13.28l3.22 3.22h-2.69a.75.75 0 0 0 0 1.5h4.5a.747.747 0 0 0 .75-.75v-4.5a.75.75 0 0 0-1.5 0v2.69l-3.22-3.22a.75.75 0 1 0-1.06 1.06ZM3.5 4.56l3.22 3.22a.75.75 0 0 0 1.06-1.06L4.56 3.5h2.69a.75.75 0 0 0 0-1.5h-4.5a.75.75 0 0 0-.75.75v4.5a.75.75 0 0 0 1.5 0V4.56Z`}))}var Tn=Kt(wn);function En({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z`}))}var Dn=Kt(En);function On({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z`}))}var kn=Kt(On);function An({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`M3.478 2.404a.75.75 0 0 0-.926.941l2.432 7.905H13.5a.75.75 0 0 1 0 1.5H4.984l-2.432 7.905a.75.75 0 0 0 .926.94 60.519 60.519 0 0 0 18.445-8.986.75.75 0 0 0 0-1.218A60.517 60.517 0 0 0 3.478 2.404Z`}))}var jn=Kt(An);function Mn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{fillRule:`evenodd`,d:`M4.5 7.5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-9a3 3 0 0 1-3-3v-9Z`,clipRule:`evenodd`}))}var Nn=Kt(Mn),Pn=e=>e instanceof Error&&e.message?`Sorry, something went wrong: ${e.message}`:`Sorry, something went wrong while generating a response.`,Fn=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result.split(`,`)[1]),r.onerror=n,r.readAsDataURL(e)}),In=()=>{let{tools:e,isStreaming:t,setIsStreaming:n,appendTurn:r,replaceLastTurn:i,updateLastAssistantText:a,updateToolUse:o}=Rt(),s=ct(null);return B(()=>Ot(()=>{s.current?.abort()}),[]),{isStreaming:t,sendMessage:async(c,l=[])=>{let u=c?.trim()??``;if(!u&&!l.length||t)return;let d=await Promise.all(l.map(async e=>({name:e.name,mediaType:e.type,data:await Fn(e)}))),f={role:`user`,text:u||void 0,files:d.length>0?d:void 0},p=new AbortController;s.current=p,r(f),n(!0);try{await Je(f,e,{onAssistantTurnStart:()=>r({role:`assistant`,text:``}),onAssistantTextDelta:e=>a(e),onAssistantTurnComplete:e=>i(e),onToolResultsTurn:e=>r(e),onToolResult:(e,t,n)=>o(e,{output:t,status:n})},p.signal)}catch(e){if(e instanceof DOMException&&e.name===`AbortError`){xt();return}a(Pn(e))}finally{s.current=null,n(!1)}},stopMessage:()=>{s.current?.abort(),wt()}}},Ln=3,Rn=()=>{let[e,t]=z(``),[n,r]=z([]),i=ct(null),{isStreaming:a,sendMessage:o,stopMessage:s}=In(),c=window.HawkAI.Assistant.config.ui,l=c?.allowFileUpload!==!1;B(()=>(F.sendMessage=o,()=>{F.sendMessage=void 0}),[o]);let u=e=>{let t=Array.from(e.target.files??[]),i=Ln-n.length;r(e=>[...e,...t.slice(0,i)]),e.target.value=``},d=e=>{r(t=>t.filter((t,n)=>n!==e))},f=async i=>{i.preventDefault();let a=e,s=n;t(``),r([]),await o(a,s)},p=e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),f(e))},m=e.trim()!==``||n.length>0;return V(`form`,{onSubmit:f,className:`hawkai-assistant__form flex flex-col border-t border-solid border-gray-200 dark:border-gray-700 p-3 mt-auto gap-2`,children:[n.length>0&&V(`div`,{className:`hawkai-assistant__form__file-list flex flex-wrap gap-1`,children:n.map((e,t)=>V(`div`,{className:`hawkai-assistant__form__file flex items-center gap-1 rounded-full bg-gray-100 dark:bg-gray-800 px-2 py-1 text-xs text-gray-700 dark:text-gray-300`,children:[V(`span`,{className:`hawkai-assistant__form__file__name max-w-32 truncate`,children:e.name}),V(`button`,{type:`button`,onClick:()=>d(t),title:`Remove ${e.name}`,"aria-label":`Remove ${e.name}`,className:`hawkai-assistant__form__file__remove-button shrink-0 text-gray-400 dark:text-gray-500 cursor-pointer hover:text-gray-700 dark:hover:text-gray-300 focus:outline-none`,children:V(vn,{className:`h-3 w-3`})})]},t))}),V(`div`,{className:`hawkai-assistant__form__input-row flex items-end gap-2`,children:[V(`label`,{htmlFor:`assistant-message`,className:`hawkai-assistant__form__label sr-only`,children:`Message`}),V(`textarea`,{id:`assistant-message`,className:`hawkai-assistant__form__text-input h-21 flex-1 resize-none rounded-lg border border-gray-200 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 p-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary`,placeholder:c?.placeholder||`Enter your message here`,value:e,onInput:e=>t(e.target.value),onKeyDown:p,"aria-required":`true`}),V(`div`,{className:`hawkai-assistant__form__actions flex shrink-0 flex-col gap-1`,children:[l&&V(x,{children:[V(`input`,{ref:i,type:`file`,accept:`application/pdf,image/gif,image/jpeg,image/png,image/webp,text/csv,text/plain`,multiple:!0,"aria-label":`Attach files`,className:`hawkai-assistant__form__file-input hidden`,onChange:u}),V(`button`,{type:`button`,disabled:n.length>=Ln||a,title:`Attach files`,"aria-label":`Attach files`,onClick:()=>i.current?.click(),className:`hawkai-assistant__form__attach-button flex h-10 w-10 items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent`,children:V(gn,{className:`h-5 w-5`})})]}),a?V(`button`,{type:`button`,onClick:s,title:`Stop`,"aria-label":`Stop`,className:`hawkai-assistant__form__stop-button flex h-10 w-10 items-center justify-center rounded-lg bg-primary text-white cursor-pointer hover:bg-primary-hover focus:outline-none`,children:V(Nn,{className:`h-5 w-5`})}):V(`button`,{type:`submit`,disabled:!m,title:`Send`,"aria-label":`Send`,className:`hawkai-assistant__form__send-button flex h-10 w-10 items-center justify-center rounded-lg bg-primary text-white cursor-pointer hover:bg-primary-hover focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-primary`,children:V(jn,{className:`h-5 w-5`})})]})]})]})},zn=()=>V(`div`,{className:`hawkai-assistant__loading-indicator w-fit rounded-2xl rounded-bl-sm bg-gray-100 dark:bg-gray-800 px-3 py-2 text-sm text-gray-900 dark:text-gray-100`,children:V(`span`,{className:`inline-flex gap-1`,children:[V(`span`,{className:`animate-bounce`,style:{animationDelay:`0ms`},children:`•`}),V(`span`,{className:`animate-bounce`,style:{animationDelay:`150ms`},children:`•`}),V(`span`,{className:`animate-bounce`,style:{animationDelay:`300ms`},children:`•`})]})});function Bn(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Vn(e){if(Array.isArray(e))return e}function Hn(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Un(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
31
+ `),u=o.length?JSON.stringify(o).slice(0,300):``,d=l.slice(0,c)+(l.length>c?`…`:``);return{url:location.href,title:n,description:r,ogTitle:i,h1:a,mainContent:d,structuredData:u}}}),Pt=ye(null),Ft=`hawkai-assistant-closed`,It=()=>{try{return localStorage.getItem(Ft)===`true`}catch{return!1}},Lt=({children:e,initialTurns:t})=>{let[n,r]=z(t),[i,a]=z(!1),[o,s]=z(It),c=ct(!1);B(()=>{try{localStorage.setItem(Ft,String(o))}catch{return}},[o]),B(()=>{let e=e=>{e.key===Ft&&s(e.newValue===`true`)};return window.addEventListener(`storage`,e),()=>{window.removeEventListener(`storage`,e)}},[]),B(()=>{let e=Tt(async()=>{c.current||r(await P())}),t=Et(a),n=Dt(e=>{N(e),r([])});return()=>{e(),t(),n()}},[]);let l=e=>{c.current=e,a(e),St(e)},u=e=>{r(t=>[...t,e])},d=e=>{r(t=>t.length===0?[e]:[...t.slice(0,-1),e]),xt()},f=e=>{r(t=>{if(t.length===0)return t;let n=t[t.length-1];return n.role===`assistant`?[...t.slice(0,-1),{...n,text:e}]:t})},p=lt(()=>[Nt(),Mt(),...window.HawkAI.Assistant.config.tools??[]],[]),m=()=>{Be(),r([]),Ct(Re())},h=(e,t)=>{r(n=>n.map(n=>{if(n.role!==`assistant`||!n.toolUses?.length)return n;let r=n.toolUses.findIndex(t=>t.id===e);if(r===-1)return n;let i=n.toolUses.slice();return i[r]={...i[r],...t},{...n,toolUses:i}}))};B(()=>(F.setActorId=e=>{He(e),m()},()=>{F.setActorId=void 0}),[]);let ee=lt(()=>({turns:n,tools:p,isStreaming:i,setIsStreaming:l,userClosed:o,setUserClosed:s,appendTurn:u,replaceLastTurn:d,updateLastAssistantText:f,updateToolUse:h,clearChat:m}),[n,p,i,o]);return V(Pt.Provider,{value:ee,children:e})},Rt=()=>{let e=ut(Pt);if(e===null)throw Error(`useAssistant must be used inside AssistantProvider`);return e},zt=()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`,Bt=(e=`auto`)=>{let[t,n]=z(()=>e===`light`||e===`dark`?e:zt());return B(()=>{if(e===`light`||e===`dark`){n(e);return}n(zt());let t=window.matchMedia(`(prefers-color-scheme: dark)`),r=e=>{n(e.matches?`dark`:`light`)};return t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t};function Vt(e,t){for(var n in t)e[n]=t[n];return e}function Ht(e,t){for(var n in e)if(n!==`__source`&&!(n in t))return!0;for(var r in t)if(r!==`__source`&&e[r]!==t[r])return!0;return!1}function Ut(e,t){this.props=e,this.context=t}(Ut.prototype=new S).isPureReactComponent=!0,Ut.prototype.shouldComponentUpdate=function(e,t){return Ht(this.props,e)||Ht(this.state,t)};var Wt=n.__b;n.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Wt&&Wt(e)};var Gt=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.forward_ref`)||3911;function Kt(e){function t(t){var n=Vt({},t);return delete n.ref,e(n,t.ref||null)}return t.$$typeof=Gt,t.render=e,t.prototype.isReactComponent=t.__f=!0,t.displayName=`ForwardRef(`+(e.displayName||e.name)+`)`,t}var qt=n.__e;n.__e=function(e,t,n,r){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e??(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}qt(e,t,n,r)};var Jt=n.unmount;function Yt(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){typeof e.__c==`function`&&e.__c()}),e.__c.__H=null),(e=Vt({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return Yt(e,t,n)})),e}function Xt(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return Xt(e,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Zt(){this.__u=0,this.o=null,this.__b=null}function Qt(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function $t(){this.i=null,this.l=null}n.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Jt&&Jt(e)},(Zt.prototype=new S).__c=function(e,t){var n=t.__c,r=this;r.o??=[],r.o.push(n);var i=Qt(r.__v),a=!1,o=function(){a||r.__z||(a=!0,n.__R=null,i?i(c):c())};n.__R=o;var s=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=Xt(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=s,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},Zt.prototype.componentWillUnmount=function(){this.o=[]},Zt.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement(`div`),r=this.__v.__k[0].__c;this.__v.__k[0]=Yt(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&y(x,null,e.fallback);return i&&(i.__u&=-33),[y(x,null,t.__a?null:e.children),i]};var en=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!==`t`||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};($t.prototype=new S).__a=function(e){var t=this,n=Qt(t.__v),r=t.l.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),en(t,e,r)):i()};n?n(a):a()}},$t.prototype.render=function(e){this.i=null,this.l=new Map;var t=ce(e.children);e.revealOrder&&e.revealOrder[0]===`b`&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},$t.prototype.componentDidUpdate=$t.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){en(e,n,t)})};var tn=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,nn=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,rn=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,an=/[A-Z0-9]/g,on=typeof document<`u`,sn=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/:/fil|che|ra/).test(e)};S.prototype.isReactComponent=!0,[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(S.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var cn=n.event;n.event=function(e){return cn&&(e=cn(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var ln={configurable:!0,get:function(){return this.class}},un=n.vnode;n.vnode=function(e){typeof e.type==`string`&&function(e){var t=e.props,n=e.type,r={},i=n.indexOf(`-`)==-1;for(var a in t){var o=t[a];if(!(a===`value`&&`defaultValue`in t&&o==null||on&&a===`children`&&n===`noscript`||a===`class`||a===`className`)){var s=a.toLowerCase();a===`defaultValue`&&`value`in t&&t.value==null?a=`value`:a===`download`&&!0===o?o=``:s===`translate`&&o===`no`?o=!1:s[0]===`o`&&s[1]===`n`?s===`ondoubleclick`?a=`ondblclick`:s!==`onchange`||n!==`input`&&n!==`textarea`||sn(t.type)?s===`onfocus`?a=`onfocusin`:s===`onblur`?a=`onfocusout`:rn.test(a)&&(a=s):s=a=`oninput`:i&&nn.test(a)?a=a.replace(an,`-$&`).toLowerCase():o===null&&(o=void 0),s===`oninput`&&r[a=s]&&(a=`oninputCapture`),r[a]=o}}n==`select`&&(r.multiple&&Array.isArray(r.value)&&(r.value=ce(t.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),r.defaultValue!=null&&(r.value=ce(t.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,`className`,ln)):t.className&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=tn,un&&un(e)};var dn=n.__r;n.__r=function(e){dn&&dn(e),e.__c};var fn=n.diffed;n.diffed=function(e){fn&&fn(e);var t=e.props,n=e.__e;n!=null&&e.type===`textarea`&&`value`in t&&t.value!==n.value&&(n.value=t.value==null?``:t.value)};function pn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M8.625 12a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375M21 12c0 4.556-4.03 8.25-9 8.25a9.764 9.764 0 0 1-2.555-.337A5.972 5.972 0 0 1 5.41 20.97a5.969 5.969 0 0 1-.474-.065 4.48 4.48 0 0 0 .978-2.025c.09-.457-.133-.901-.467-1.226C3.93 16.178 3 14.189 3 12c0-4.556 4.03-8.25 9-8.25s9 3.694 9 8.25Z`}))}var mn=Kt(pn);function hn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13`}))}var gn=Kt(hn);function _n({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M6 18 18 6M6 6l12 12`}))}var vn=Kt(_n);function yn(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=yn(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function bn(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=yn(e))&&(r&&(r+=` `),r+=t);return r}var xn=({isOpen:e,onClick:t})=>{let n=window.HawkAI.Assistant.config?.ui?.position??`right`;return V(`button`,{type:`button`,"data-testid":`assistant-toggle-button`,onClick:t,className:bn({"hawkai-assistant__trigger fixed bottom-6 z-50 flex h-14 w-14 cursor-pointer items-center justify-center rounded-full bg-primary text-white shadow-lg/30 hover:bg-primary-hover focus:outline-none":!0,"hawkai-assistant__trigger--open":e,"hawkai-assistant__trigger--right right-6":n===`right`,"hawkai-assistant__trigger--left left-6":n===`left`}),title:e?`Close Assistant`:`Open Assistant`,"aria-label":e?`Close Assistant`:`Open Assistant`,children:V(e?vn:mn,{className:`size-6`,strokeWidth:2,"aria-hidden":!0})})};function Sn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`M3.28 2.22a.75.75 0 0 0-1.06 1.06L5.44 6.5H2.75a.75.75 0 0 0 0 1.5h4.5A.75.75 0 0 0 8 7.25v-4.5a.75.75 0 0 0-1.5 0v2.69L3.28 2.22ZM13.5 2.75a.75.75 0 0 0-1.5 0v4.5c0 .414.336.75.75.75h4.5a.75.75 0 0 0 0-1.5h-2.69l3.22-3.22a.75.75 0 0 0-1.06-1.06L13.5 5.44V2.75ZM3.28 17.78l3.22-3.22v2.69a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.69l-3.22 3.22a.75.75 0 1 0 1.06 1.06ZM13.5 14.56l3.22 3.22a.75.75 0 1 0 1.06-1.06l-3.22-3.22h2.69a.75.75 0 0 0 0-1.5h-4.5a.75.75 0 0 0-.75.75v4.5a.75.75 0 0 0 1.5 0v-2.69Z`}))}var Cn=Kt(Sn);function wn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`m13.28 7.78 3.22-3.22v2.69a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.69l-3.22 3.22a.75.75 0 0 0 1.06 1.06ZM2 17.25v-4.5a.75.75 0 0 1 1.5 0v2.69l3.22-3.22a.75.75 0 0 1 1.06 1.06L4.56 16.5h2.69a.75.75 0 0 1 0 1.5h-4.5a.747.747 0 0 1-.75-.75ZM12.22 13.28l3.22 3.22h-2.69a.75.75 0 0 0 0 1.5h4.5a.747.747 0 0 0 .75-.75v-4.5a.75.75 0 0 0-1.5 0v2.69l-3.22-3.22a.75.75 0 1 0-1.06 1.06ZM3.5 4.56l3.22 3.22a.75.75 0 0 0 1.06-1.06L4.56 3.5h2.69a.75.75 0 0 0 0-1.5h-4.5a.75.75 0 0 0-.75.75v4.5a.75.75 0 0 0 1.5 0V4.56Z`}))}var Tn=Kt(wn);function En({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z`}))}var Dn=Kt(En);function On({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z`}))}var kn=Kt(On);function An({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{d:`M3.478 2.404a.75.75 0 0 0-.926.941l2.432 7.905H13.5a.75.75 0 0 1 0 1.5H4.984l-2.432 7.905a.75.75 0 0 0 .926.94 60.519 60.519 0 0 0 18.445-8.986.75.75 0 0 0 0-1.218A60.517 60.517 0 0 0 3.478 2.404Z`}))}var jn=Kt(An);function Mn({title:e,titleId:t,...n},r){return y(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?y(`title`,{id:t},e):null,y(`path`,{fillRule:`evenodd`,d:`M4.5 7.5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-9a3 3 0 0 1-3-3v-9Z`,clipRule:`evenodd`}))}var Nn=Kt(Mn),Pn=e=>e instanceof Error&&e.message?`Sorry, something went wrong: ${e.message}`:`Sorry, something went wrong while generating a response.`,Fn=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result.split(`,`)[1]),r.onerror=n,r.readAsDataURL(e)}),In=()=>{let{tools:e,isStreaming:t,setIsStreaming:n,appendTurn:r,replaceLastTurn:i,updateLastAssistantText:a,updateToolUse:o}=Rt(),s=ct(null);return B(()=>Ot(()=>{s.current?.abort()}),[]),{isStreaming:t,sendMessage:async(c,l=[])=>{let u=c?.trim()??``;if(!u&&!l.length||t)return;let d=await Promise.all(l.map(async e=>({name:e.name,mediaType:e.type,data:await Fn(e)}))),f={role:`user`,text:u||void 0,files:d.length>0?d:void 0},p=new AbortController;s.current=p,r(f),n(!0);try{await Je(f,e,{onAssistantTurnStart:()=>r({role:`assistant`,text:``}),onAssistantTextDelta:e=>a(e),onAssistantTurnComplete:e=>i(e),onToolResultsTurn:e=>r(e),onToolResult:(e,t,n)=>o(e,{output:t,status:n})},p.signal)}catch(e){if(e instanceof DOMException&&e.name===`AbortError`){xt();return}a(Pn(e))}finally{s.current=null,n(!1)}},stopMessage:()=>{s.current?.abort(),wt()}}},Ln=3,Rn=()=>{let[e,t]=z(``),[n,r]=z([]),i=ct(null),{isStreaming:a,sendMessage:o,stopMessage:s}=In(),c=window.HawkAI.Assistant.config.ui,l=c?.allowFileUpload!==!1;B(()=>(F.sendMessage=o,()=>{F.sendMessage=void 0}),[o]);let u=e=>{let t=Array.from(e.target.files??[]),i=Ln-n.length;r(e=>[...e,...t.slice(0,i)]),e.target.value=``},d=e=>{r(t=>t.filter((t,n)=>n!==e))},f=async i=>{i.preventDefault();let a=e,s=n;t(``),r([]),await o(a,s)},p=e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),f(e))},m=e.trim()!==``||n.length>0;return V(`form`,{onSubmit:f,className:`hawkai-assistant__form flex flex-col border-t border-solid border-gray-200 dark:border-gray-700 p-3 mt-auto gap-2`,children:[n.length>0&&V(`div`,{className:`hawkai-assistant__form__file-list flex flex-wrap gap-1`,children:n.map((e,t)=>V(`div`,{className:`hawkai-assistant__form__file flex items-center gap-1 rounded-full bg-gray-100 dark:bg-gray-800 px-2 py-1 text-xs text-gray-700 dark:text-gray-300`,children:[V(`span`,{className:`hawkai-assistant__form__file__name max-w-32 truncate`,children:e.name}),V(`button`,{type:`button`,onClick:()=>d(t),title:`Remove ${e.name}`,"aria-label":`Remove ${e.name}`,className:`hawkai-assistant__form__file__remove-button shrink-0 text-gray-400 dark:text-gray-500 cursor-pointer hover:text-gray-700 dark:hover:text-gray-300 focus:outline-none`,children:V(vn,{className:`h-3 w-3`})})]},t))}),V(`div`,{className:`hawkai-assistant__form__input-row flex items-end gap-2`,children:[V(`label`,{htmlFor:`assistant-message`,className:`hawkai-assistant__form__label sr-only`,children:`Message`}),V(`textarea`,{id:`assistant-message`,"data-testid":`message-input`,className:`hawkai-assistant__form__text-input h-21 flex-1 resize-none rounded-lg border border-gray-200 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 p-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary`,placeholder:c?.placeholder||`Enter your message here`,value:e,onInput:e=>t(e.target.value),onKeyDown:p,"aria-required":`true`}),V(`div`,{className:`hawkai-assistant__form__actions flex shrink-0 flex-col gap-1`,children:[l&&V(x,{children:[V(`input`,{ref:i,type:`file`,accept:`application/pdf,image/gif,image/jpeg,image/png,image/webp,text/csv,text/plain`,multiple:!0,"aria-label":`Attach files`,className:`hawkai-assistant__form__file-input hidden`,onChange:u}),V(`button`,{type:`button`,"data-testid":`attach-button`,disabled:n.length>=Ln||a,title:`Attach files`,"aria-label":`Attach files`,onClick:()=>i.current?.click(),className:`hawkai-assistant__form__attach-button flex h-10 w-10 items-center justify-center rounded-lg border border-gray-200 dark:border-gray-700 text-gray-500 dark:text-gray-400 cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent`,children:V(gn,{className:`h-5 w-5`})})]}),a?V(`button`,{type:`button`,"data-testid":`stop-button`,onClick:s,title:`Stop`,"aria-label":`Stop`,className:`hawkai-assistant__form__stop-button flex h-10 w-10 items-center justify-center rounded-lg bg-primary text-white cursor-pointer hover:bg-primary-hover focus:outline-none`,children:V(Nn,{className:`h-5 w-5`})}):V(`button`,{type:`submit`,"data-testid":`send-button`,disabled:!m,title:`Send`,"aria-label":`Send`,className:`hawkai-assistant__form__send-button flex h-10 w-10 items-center justify-center rounded-lg bg-primary text-white cursor-pointer hover:bg-primary-hover focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-primary`,children:V(jn,{className:`h-5 w-5`})})]})]})]})},zn=()=>V(`div`,{"data-testid":`loading-indicator`,className:`hawkai-assistant__loading-indicator w-fit rounded-2xl rounded-bl-sm bg-gray-100 dark:bg-gray-800 px-3 py-2 text-sm text-gray-900 dark:text-gray-100`,children:V(`span`,{className:`inline-flex gap-1`,children:[V(`span`,{className:`animate-bounce`,style:{animationDelay:`0ms`},children:`•`}),V(`span`,{className:`animate-bounce`,style:{animationDelay:`150ms`},children:`•`}),V(`span`,{className:`animate-bounce`,style:{animationDelay:`300ms`},children:`•`})]})});function Bn(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Vn(e){if(Array.isArray(e))return e}function Hn(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Un(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
32
32
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Wn(e,t){return Vn(e)||Hn(e,t)||Gn(e,t)||Un()}function Gn(e,t){if(e){if(typeof e==`string`)return Bn(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Bn(e,t):void 0}}var Kn=Object.entries,qn=Object.setPrototypeOf,Jn=Object.isFrozen,Yn=Object.getPrototypeOf,Xn=Object.getOwnPropertyDescriptor,H=Object.freeze,U=Object.seal,Zn=Object.create,Qn=typeof Reflect<`u`&&Reflect,$n=Qn.apply,er=Qn.construct;H||=function(e){return e},U||=function(e){return e},$n||=function(e,t){for(var n=arguments.length,r=Array(n>2?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];return e.apply(t,r)},er||=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return new e(...n)};var tr=q(Array.prototype.forEach),nr=q(Array.prototype.lastIndexOf),rr=q(Array.prototype.pop),ir=q(Array.prototype.push),ar=q(Array.prototype.splice),W=Array.isArray,or=q(String.prototype.toLowerCase),sr=q(String.prototype.toString),cr=q(String.prototype.match),lr=q(String.prototype.replace),ur=q(String.prototype.indexOf),dr=q(String.prototype.trim),fr=q(Number.prototype.toString),pr=q(Boolean.prototype.toString),mr=typeof BigInt>`u`?null:q(BigInt.prototype.toString),hr=typeof Symbol>`u`?null:q(Symbol.prototype.toString),G=q(Object.prototype.hasOwnProperty),gr=q(Object.prototype.toString),K=q(RegExp.prototype.test),_r=vr(TypeError);function q(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return $n(e,t,r)}}function vr(e){return function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];return er(e,n)}}function J(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:or;if(qn&&qn(e,null),!W(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(Jn(t)||(t[r]=e),i=e)}e[i]=!0}return e}function yr(e){for(let t=0;t<e.length;t++)G(e,t)||(e[t]=null);return e}function Y(e){let t=Zn(null);for(let r of Kn(e)){var n=Wn(r,2);let i=n[0],a=n[1];G(e,i)&&(W(a)?t[i]=yr(a):a&&typeof a==`object`&&a.constructor===Object?t[i]=Y(a):t[i]=a)}return t}function br(e){switch(typeof e){case`string`:return e;case`number`:return fr(e);case`boolean`:return pr(e);case`bigint`:return mr?mr(e):`0`;case`symbol`:return hr?hr(e):`Symbol()`;case`undefined`:return gr(e);case`function`:case`object`:{if(e===null)return gr(e);let t=e,n=xr(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:gr(e)}return gr(e)}default:return gr(e)}}function xr(e,t){for(;e!==null;){let n=Xn(e,t);if(n){if(n.get)return q(n.get);if(typeof n.value==`function`)return q(n.value)}e=Yn(e)}function n(){return null}return n}function Sr(e){try{return K(e,``),!0}catch{return!1}}var Cr=H(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),wr=H(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),Tr=H([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Er=H([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),Dr=H(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Or=H([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),kr=H([`#text`]),Ar=H(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),jr=H(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Mr=H(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Nr=H([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),Pr=U(/{{[\w\W]*|^[\w\W]*}}/g),Fr=U(/<%[\w\W]*|^[\w\W]*%>/g),Ir=U(/\${[\w\W]*/g),Lr=U(/^data-[\-\w.\u00B7-\uFFFF]+$/),Rr=U(/^aria-[\-\w]+$/),zr=U(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Br=U(/^(?:\w+script|data):/i),Vr=U(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Hr=U(/^html$/i),Ur=U(/^[a-z][.\w]*(-[.\w]+)+$/i),Wr={element:1,text:3,progressingInstruction:7,comment:8,document:9},Gr=function(){return typeof window>`u`?null:window},Kr=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},qr=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Jr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Gr(),t=e=>Jr(e);if(t.version=`3.4.5`,t.removed=[],!e||!e.document||e.document.nodeType!==Wr.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript,a=e.DocumentFragment,o=e.HTMLTemplateElement,s=e.Node,c=e.Element,l=e.NodeFilter,u=e.NamedNodeMap,d=u===void 0?e.NamedNodeMap||e.MozNamedAttrMap:u,f=e.HTMLFormElement,p=e.DOMParser,m=e.trustedTypes,h=c.prototype,ee=xr(h,`cloneNode`),g=xr(h,`remove`),_=xr(h,`nextSibling`),te=xr(h,`childNodes`),v=xr(h,`parentNode`),ne=s&&s.prototype?xr(s.prototype,`nodeType`):null;if(typeof o==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let y,b=``,x=n,S=x.implementation,C=x.createNodeIterator,re=x.createDocumentFragment,ie=x.getElementsByTagName,ae=r.importNode,w=qr();t.isSupported=typeof Kn==`function`&&typeof v==`function`&&S&&S.createHTMLDocument!==void 0;let oe=Pr,se=Fr,T=Ir,ce=Lr,le=Rr,ue=Br,de=Vr,fe=Ur,pe=zr,E=null,me=J({},[...Cr,...wr,...Tr,...Dr,...kr]),D=null,he=J({},[...Ar,...jr,...Mr,...Nr]),O=Object.seal(Zn(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ge=null,_e=null,ve=Object.seal(Zn(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),ye=!0,be=!0,xe=!1,Se=!0,k=!1,Ce=!0,we=!1,Te=!1,Ee=!1,A=!1,De=!1,Oe=!1,ke=!0,Ae=!1,je=`user-content-`,Me=!0,Ne=!1,j={},M=null,Pe=J({},[`annotation-xml`,`audio`,`colgroup`,`desc`,`foreignobject`,`head`,`iframe`,`math`,`mi`,`mn`,`mo`,`ms`,`mtext`,`noembed`,`noframes`,`noscript`,`plaintext`,`script`,`style`,`svg`,`template`,`thead`,`title`,`video`,`xmp`]),Fe=null,Ie=J({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Le=null,Re=J({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),ze=`http://www.w3.org/1998/Math/MathML`,Be=`http://www.w3.org/2000/svg`,N=`http://www.w3.org/1999/xhtml`,Ve=N,He=!1,Ue=null,We=J({},[ze,Be,N],sr),Ge=J({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),Ke=J({},[`annotation-xml`]),qe=J({},[`title`,`style`,`font`,`a`,`script`]),Je=null,Ye=[`application/xhtml+xml`,`text/html`],P=null,F=null,Xe=n.createElement(`form`),I=function(e){return e instanceof RegExp||e instanceof Function},Ze=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(F&&F===e)return;(!e||typeof e!=`object`)&&(e={}),e=Y(e),Je=Ye.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,P=Je===`application/xhtml+xml`?sr:or,E=G(e,`ALLOWED_TAGS`)&&W(e.ALLOWED_TAGS)?J({},e.ALLOWED_TAGS,P):me,D=G(e,`ALLOWED_ATTR`)&&W(e.ALLOWED_ATTR)?J({},e.ALLOWED_ATTR,P):he,Ue=G(e,`ALLOWED_NAMESPACES`)&&W(e.ALLOWED_NAMESPACES)?J({},e.ALLOWED_NAMESPACES,sr):We,Le=G(e,`ADD_URI_SAFE_ATTR`)&&W(e.ADD_URI_SAFE_ATTR)?J(Y(Re),e.ADD_URI_SAFE_ATTR,P):Re,Fe=G(e,`ADD_DATA_URI_TAGS`)&&W(e.ADD_DATA_URI_TAGS)?J(Y(Ie),e.ADD_DATA_URI_TAGS,P):Ie,M=G(e,`FORBID_CONTENTS`)&&W(e.FORBID_CONTENTS)?J({},e.FORBID_CONTENTS,P):Pe,ge=G(e,`FORBID_TAGS`)&&W(e.FORBID_TAGS)?J({},e.FORBID_TAGS,P):Y({}),_e=G(e,`FORBID_ATTR`)&&W(e.FORBID_ATTR)?J({},e.FORBID_ATTR,P):Y({}),j=G(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?Y(e.USE_PROFILES):e.USE_PROFILES:!1,ye=e.ALLOW_ARIA_ATTR!==!1,be=e.ALLOW_DATA_ATTR!==!1,xe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Se=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,k=e.SAFE_FOR_TEMPLATES||!1,Ce=e.SAFE_FOR_XML!==!1,we=e.WHOLE_DOCUMENT||!1,A=e.RETURN_DOM||!1,De=e.RETURN_DOM_FRAGMENT||!1,Oe=e.RETURN_TRUSTED_TYPE||!1,Ee=e.FORCE_BODY||!1,ke=e.SANITIZE_DOM!==!1,Ae=e.SANITIZE_NAMED_PROPS||!1,Me=e.KEEP_CONTENT!==!1,Ne=e.IN_PLACE||!1,pe=Sr(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:zr,Ve=typeof e.NAMESPACE==`string`?e.NAMESPACE:N,Ge=G(e,`MATHML_TEXT_INTEGRATION_POINTS`)&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS==`object`?Y(e.MATHML_TEXT_INTEGRATION_POINTS):J({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),Ke=G(e,`HTML_INTEGRATION_POINTS`)&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS==`object`?Y(e.HTML_INTEGRATION_POINTS):J({},[`annotation-xml`]);let t=G(e,`CUSTOM_ELEMENT_HANDLING`)&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING==`object`?Y(e.CUSTOM_ELEMENT_HANDLING):Zn(null);if(O=Zn(null),G(t,`tagNameCheck`)&&I(t.tagNameCheck)&&(O.tagNameCheck=t.tagNameCheck),G(t,`attributeNameCheck`)&&I(t.attributeNameCheck)&&(O.attributeNameCheck=t.attributeNameCheck),G(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(O.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),k&&(be=!1),De&&(A=!0),j&&(E=J({},kr),D=Zn(null),j.html===!0&&(J(E,Cr),J(D,Ar)),j.svg===!0&&(J(E,wr),J(D,jr),J(D,Nr)),j.svgFilters===!0&&(J(E,Tr),J(D,jr),J(D,Nr)),j.mathMl===!0&&(J(E,Dr),J(D,Mr),J(D,Nr))),ve.tagCheck=null,ve.attributeCheck=null,G(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?ve.tagCheck=e.ADD_TAGS:W(e.ADD_TAGS)&&(E===me&&(E=Y(E)),J(E,e.ADD_TAGS,P))),G(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?ve.attributeCheck=e.ADD_ATTR:W(e.ADD_ATTR)&&(D===he&&(D=Y(D)),J(D,e.ADD_ATTR,P))),G(e,`ADD_URI_SAFE_ATTR`)&&W(e.ADD_URI_SAFE_ATTR)&&J(Le,e.ADD_URI_SAFE_ATTR,P),G(e,`FORBID_CONTENTS`)&&W(e.FORBID_CONTENTS)&&(M===Pe&&(M=Y(M)),J(M,e.FORBID_CONTENTS,P)),G(e,`ADD_FORBID_CONTENTS`)&&W(e.ADD_FORBID_CONTENTS)&&(M===Pe&&(M=Y(M)),J(M,e.ADD_FORBID_CONTENTS,P)),Me&&(E[`#text`]=!0),we&&J(E,[`html`,`head`,`body`]),E.table&&(J(E,[`tbody`]),delete ge.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw _r(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw _r(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);y=e.TRUSTED_TYPES_POLICY,b=y.createHTML(``)}else y===void 0&&(y=Kr(m,i)),y!==null&&typeof b==`string`&&(b=y.createHTML(``));H&&H(e),F=e},Qe=J({},[...wr,...Tr,...Er]),$e=J({},[...Dr,...Or]),et=function(e){let t=v(e);(!t||!t.tagName)&&(t={namespaceURI:Ve,tagName:`template`});let n=or(e.tagName),r=or(t.tagName);return Ue[e.namespaceURI]?e.namespaceURI===Be?t.namespaceURI===N?n===`svg`:t.namespaceURI===ze?n===`svg`&&(r===`annotation-xml`||Ge[r]):!!Qe[n]:e.namespaceURI===ze?t.namespaceURI===N?n===`math`:t.namespaceURI===Be?n===`math`&&Ke[r]:!!$e[n]:e.namespaceURI===N?t.namespaceURI===Be&&!Ke[r]||t.namespaceURI===ze&&!Ge[r]?!1:!$e[n]&&(qe[n]||!Qe[n]):!!(Je===`application/xhtml+xml`&&Ue[e.namespaceURI]):!1},L=function(e){ir(t.removed,{element:e});try{v(e).removeChild(e)}catch{g(e)}},tt=function(e,n){try{ir(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{ir(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(A||De)try{L(n)}catch{}else try{n.setAttribute(e,``)}catch{}},nt=function(e){let t=null,r=null;if(Ee)e=`<remove></remove>`+e;else{let t=cr(e,/^[\r\n\t ]+/);r=t&&t[0]}Je===`application/xhtml+xml`&&Ve===N&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=y?y.createHTML(e):e;if(Ve===N)try{t=new p().parseFromString(i,Je)}catch{}if(!t||!t.documentElement){t=S.createDocument(Ve,`template`,null);try{t.documentElement.innerHTML=He?b:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Ve===N?ie.call(t,we?`html`:`body`)[0]:we?t.documentElement:a},rt=function(e){return C.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},it=function(e){e.normalize();let t=C.call(e.ownerDocument||e,e,l.SHOW_TEXT|l.SHOW_COMMENT|l.SHOW_CDATA_SECTION|l.SHOW_PROCESSING_INSTRUCTION,null),n=t.nextNode();for(;n;){let e=n.data;tr([oe,se,T],t=>{e=lr(e,t,` `)}),n.data=e,n=t.nextNode()}},at=function(e){return e instanceof f&&(typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||!(e.attributes instanceof d)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`)},ot=function(e){if(!ne||typeof e!=`object`||!e)return!1;try{return typeof ne(e)==`number`}catch{return!1}};function R(e,n,r){tr(e,e=>{e.call(t,n,r,F)})}let z=function(e){let n=null;if(R(w.beforeSanitizeElements,e,null),at(e))return L(e),!0;let r=P(e.nodeName);if(R(w.uponSanitizeElement,e,{tagName:r,allowedTags:E}),Ce&&e.hasChildNodes()&&!ot(e.firstElementChild)&&K(/<[/\w!]/g,e.innerHTML)&&K(/<[/\w!]/g,e.textContent)||Ce&&e.namespaceURI===N&&r===`style`&&ot(e.firstElementChild)||e.nodeType===Wr.progressingInstruction||Ce&&e.nodeType===Wr.comment&&K(/<[/\w]/g,e.data))return L(e),!0;if(ge[r]||!(ve.tagCheck instanceof Function&&ve.tagCheck(r))&&!E[r]){if(!ge[r]&&ct(r)&&(O.tagNameCheck instanceof RegExp&&K(O.tagNameCheck,r)||O.tagNameCheck instanceof Function&&O.tagNameCheck(r)))return!1;if(Me&&!M[r]){let t=v(e)||e.parentNode,n=te(e)||e.childNodes;if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=ee(n[i],!0);t.insertBefore(r,_(e))}}}return L(e),!0}return e instanceof c&&!et(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&K(/<\/no(script|embed|frames)/i,e.innerHTML)?(L(e),!0):(k&&e.nodeType===Wr.text&&(n=e.textContent,tr([oe,se,T],e=>{n=lr(n,e,` `)}),e.textContent!==n&&(ir(t.removed,{element:e.cloneNode()}),e.textContent=n)),R(w.afterSanitizeElements,e,null),!1)},st=function(e,t,r){if(_e[t]||ke&&(t===`id`||t===`name`)&&(r in n||r in Xe))return!1;let i=D[t]||ve.attributeCheck instanceof Function&&ve.attributeCheck(t,e);if(!(be&&!_e[t]&&K(ce,t))&&!(ye&&K(le,t))){if(!i||_e[t]){if(!(ct(e)&&(O.tagNameCheck instanceof RegExp&&K(O.tagNameCheck,e)||O.tagNameCheck instanceof Function&&O.tagNameCheck(e))&&(O.attributeNameCheck instanceof RegExp&&K(O.attributeNameCheck,t)||O.attributeNameCheck instanceof Function&&O.attributeNameCheck(t,e))||t===`is`&&O.allowCustomizedBuiltInElements&&(O.tagNameCheck instanceof RegExp&&K(O.tagNameCheck,r)||O.tagNameCheck instanceof Function&&O.tagNameCheck(r))))return!1}else if(!Le[t]&&!K(pe,lr(r,de,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&ur(r,`data:`)===0&&Fe[e])&&!(xe&&!K(ue,lr(r,de,``)))&&r)return!1}return!0},B=J({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),ct=function(e){return!B[or(e)]&&K(fe,e)},lt=function(e){R(w.beforeSanitizeAttributes,e,null);let n=e.attributes;if(!n||at(e))return;let r={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:D,forceKeepAttr:void 0},i=n.length;for(;i--;){let a=n[i],o=a.name,s=a.namespaceURI,c=a.value,l=P(o),u=c,d=o===`value`?u:dr(u);if(r.attrName=l,r.attrValue=d,r.keepAttr=!0,r.forceKeepAttr=void 0,R(w.uponSanitizeAttribute,e,r),d=r.attrValue,Ae&&(l===`id`||l===`name`)&&ur(d,je)!==0&&(tt(o,e),d=je+d),Ce&&K(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){tt(o,e);continue}if(l===`attributename`&&cr(d,`href`)){tt(o,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){tt(o,e);continue}if(!Se&&K(/\/>/i,d)){tt(o,e);continue}k&&tr([oe,se,T],e=>{d=lr(d,e,` `)});let f=P(e.nodeName);if(!st(f,l,d)){tt(o,e);continue}if(y&&typeof m==`object`&&typeof m.getAttributeType==`function`&&!s)switch(m.getAttributeType(f,l)){case`TrustedHTML`:d=y.createHTML(d);break;case`TrustedScriptURL`:d=y.createScriptURL(d);break}if(d!==u)try{s?e.setAttributeNS(s,o,d):e.setAttribute(o,d),at(e)?L(e):rr(t.removed)}catch{tt(o,e)}}R(w.afterSanitizeAttributes,e,null)},ut=function(e){let t=null,n=rt(e);for(R(w.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)R(w.uponSanitizeShadowNode,t,null),z(t),lt(t),t.content instanceof a&&ut(t.content);R(w.afterSanitizeShadowDOM,e,null)},dt=function(e){if(e.nodeType===Wr.element&&e.shadowRoot instanceof a){let t=e.shadowRoot;dt(t),ut(t)}let t=e.childNodes;if(!t)return;let n=[];tr(t,e=>{ir(n,e)});for(let e of n)dt(e)};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,o=null,s=null,c=null;if(He=!e,He&&(e=`<!-->`),typeof e!=`string`&&!ot(e)&&(e=br(e),typeof e!=`string`))throw _r(`dirty is not a string, aborting`);if(!t.isSupported)return e;if(Te||Ze(n),t.removed=[],typeof e==`string`&&(Ne=!1),Ne){let t=e.nodeName;if(typeof t==`string`){let e=P(t);if(!E[e]||ge[e])throw _r(`root node is forbidden and cannot be sanitized in-place`)}dt(e)}else if(ot(e))i=nt(`<!---->`),o=i.ownerDocument.importNode(e,!0),o.nodeType===Wr.element&&o.nodeName===`BODY`||o.nodeName===`HTML`?i=o:i.appendChild(o),dt(o);else{if(!A&&!k&&!we&&e.indexOf(`<`)===-1)return y&&Oe?y.createHTML(e):e;if(i=nt(e),!i)return A?null:Oe?b:``}i&&Ee&&L(i.firstChild);let l=rt(Ne?e:i);for(;s=l.nextNode();)z(s),lt(s),s.content instanceof a&&ut(s.content);if(Ne)return k&&it(e),e;if(A){if(k&&it(i),De)for(c=re.call(i.ownerDocument);i.firstChild;)c.appendChild(i.firstChild);else c=i;return(D.shadowroot||D.shadowrootmode)&&(c=ae.call(r,c,!0)),c}let u=we?i.outerHTML:i.innerHTML;return we&&E[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&K(Hr,i.ownerDocument.doctype.name)&&(u=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
33
33
  `+u),k&&tr([oe,se,T],e=>{u=lr(u,e,` `)}),y&&Oe?y.createHTML(u):u},t.setConfig=function(){Ze(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}),Te=!0},t.clearConfig=function(){F=null,Te=!1},t.isValidAttribute=function(e,t,n){return F||Ze({}),st(P(e),P(t),n)},t.addHook=function(e,t){typeof t==`function`&&ir(w[e],t)},t.removeHook=function(e,t){if(t!==void 0){let n=nr(w[e],t);return n===-1?void 0:ar(w[e],n,1)[0]}return rr(w[e])},t.removeHooks=function(e){w[e]=[]},t.removeAllHooks=function(){w=qr()},t}var Yr=Jr();function Xr(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Zr=Xr();function Qr(e){Zr=e}var $r={exec:()=>null};function ei(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function X(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(Z.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var ti=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),Z={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:ei(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:ei(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:ei(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:ei(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:ei(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:ei(e=>RegExp(`^ {0,${e}}>`))},ni=/^(?:[ \t]*(?:\n|$))+/,ri=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,ii=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,ai=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,oi=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,si=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ci=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,li=X(ci).replace(/bull/g,si).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),ui=X(ci).replace(/bull/g,si).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),di=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,fi=/^[^\n]+/,pi=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,mi=X(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,pi).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),hi=X(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,si).getRegex(),gi=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,_i=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,vi=X(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,_i).replace(`tag`,gi).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),yi=X(di).replace(`hr`,ai).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,gi).getRegex(),bi={blockquote:X(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,yi).getRegex(),code:ri,def:mi,fences:ii,heading:oi,hr:ai,html:vi,lheading:li,list:hi,newline:ni,paragraph:yi,table:$r,text:fi},xi=X(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,ai).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,gi).getRegex(),Si={...bi,lheading:ui,table:xi,paragraph:X(di).replace(`hr`,ai).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,xi).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,gi).getRegex()},Ci={...bi,html:X(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,_i).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:$r,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:X(di).replace(`hr`,ai).replace(`heading`,` *#{1,6} *[^
34
34
  ]`).replace(`lheading`,li).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},wi=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ti=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Ei=/^( {2,}|\\)\n(?!\s*$)/,Di=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Oi=/[\p{P}\p{S}]/u,ki=/[\s\p{P}\p{S}]/u,Ai=/[^\s\p{P}\p{S}]/u,ji=X(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,ki).getRegex(),Mi=/(?!~)[\p{P}\p{S}]/u,Ni=/(?!~)[\s\p{P}\p{S}]/u,Pi=/(?:[^\s\p{P}\p{S}]|~)/u,Fi=X(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,ti?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Ii=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Li=X(Ii,`u`).replace(/punct/g,Oi).getRegex(),Ri=X(Ii,`u`).replace(/punct/g,Mi).getRegex(),zi=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Bi=X(zi,`gu`).replace(/notPunctSpace/g,Ai).replace(/punctSpace/g,ki).replace(/punct/g,Oi).getRegex(),Vi=X(zi,`gu`).replace(/notPunctSpace/g,Pi).replace(/punctSpace/g,Ni).replace(/punct/g,Mi).getRegex(),Hi=X(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Ai).replace(/punctSpace/g,ki).replace(/punct/g,Oi).getRegex(),Ui=X(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,Oi).getRegex(),Wi=X(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Ai).replace(/punctSpace/g,ki).replace(/punct/g,Oi).getRegex(),Gi=X(/\\(punct)/,`gu`).replace(/punct/g,Oi).getRegex(),Ki=X(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),qi=X(_i).replace(`(?:-->|$)`,`-->`).getRegex(),Ji=X(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,qi).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Yi=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Xi=X(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Yi).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Zi=X(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Yi).replace(`ref`,pi).getRegex(),Qi=X(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,pi).getRegex(),$i=X(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Zi).replace(`nolink`,Qi).getRegex(),ea=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,ta={_backpedal:$r,anyPunctuation:Gi,autolink:Ki,blockSkip:Fi,br:Ei,code:Ti,del:$r,delLDelim:$r,delRDelim:$r,emStrongLDelim:Li,emStrongRDelimAst:Bi,emStrongRDelimUnd:Hi,escape:wi,link:Xi,nolink:Qi,punctuation:ji,reflink:Zi,reflinkSearch:$i,tag:Ji,text:Di,url:$r},na={...ta,link:X(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Yi).getRegex(),reflink:X(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Yi).getRegex()},ra={...ta,emStrongRDelimAst:Vi,emStrongLDelim:Ri,delLDelim:Ui,delRDelim:Wi,url:X(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,ea).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:X(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,ea).getRegex()},ia={...ra,br:X(Ei).replace(`{2,}`,`*`).getRegex(),text:X(ra.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},aa={normal:bi,gfm:Si,pedantic:Ci},oa={normal:ta,gfm:ra,breaks:ia,pedantic:na},sa={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},ca=e=>sa[e];function la(e,t){if(t){if(Z.escapeTest.test(e))return e.replace(Z.escapeReplace,ca)}else if(Z.escapeTestNoEncode.test(e))return e.replace(Z.escapeReplaceNoEncode,ca);return e}function ua(e){try{e=encodeURI(e).replace(Z.percentDecode,`%`)}catch{return null}return e}function da(e,t){let n=e.replace(Z.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(Z.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``);for(;r<n.length;r++)n[r]=n[r].trim().replace(Z.slashPipe,`|`);return n}function fa(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function pa(e){let t=e.split(`
@@ -93,5 +93,5 @@ ${this.parser.parse(e)}</blockquote>
93
93
  ${e}</tr>
94
94
  `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
95
95
  `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${la(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=ua(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+la(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=ua(e);if(i===null)return la(n);e=i;let a=`<img src="${e}" alt="${la(n)}"`;return t&&(a+=` title="${la(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:la(e.text)}},ba=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},xa=class e{options;renderer;textRenderer;constructor(e){this.options=e||Zr,this.options.renderer=this.options.renderer||new ya,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ba}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},Sa=class{options;block;constructor(e){this.options=e||Zr}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?Q.lex:Q.lexInline}provideParser(e=this.block){return e?xa.parse:xa.parseInline}},Ca=class{defaults=Xr();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=xa;Renderer=ya;TextRenderer=ba;Lexer=Q;Tokenizer=va;Hooks=Sa;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new ya(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new va(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Sa;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];Sa.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&Sa.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Q.lex(e,t??this.defaults)}parser(e,t){return xa.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?Q.lex:Q.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?xa.parse:xa.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?Q.lex:Q.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?xa.parse:xa.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
96
- Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+la(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},wa=new Ca;function $(e,t){return wa.parse(e,t)}$.options=$.setOptions=function(e){return wa.setOptions(e),$.defaults=wa.defaults,Qr($.defaults),$},$.getDefaults=Xr,$.defaults=Zr,$.use=function(...e){return wa.use(...e),$.defaults=wa.defaults,Qr($.defaults),$},$.walkTokens=function(e,t){return wa.walkTokens(e,t)},$.parseInline=wa.parseInline,$.Parser=xa,$.parser=xa.parse,$.Renderer=ya,$.TextRenderer=ba,$.Lexer=Q,$.lexer=Q.lex,$.Tokenizer=va,$.Hooks=Sa,$.parse=$,$.options,$.setOptions,$.use,$.walkTokens,$.parseInline,xa.parse,Q.lex;var Ta={a:`text-blue-600 underline hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300`,blockquote:`border-l-4 border-gray-300 dark:border-gray-700 pl-3 italic mb-2`,code:`bg-gray-100 dark:bg-gray-800 dark:text-gray-200 rounded px-1 font-mono text-xs`,em:`italic`,h1:`text-2xl font-bold mb-2`,h2:`text-xl font-bold mb-2`,h3:`text-lg font-bold mb-2`,h4:`font-bold mb-2`,h5:`font-bold mb-2`,h6:`font-bold mb-2`,hr:`border-gray-300 dark:border-gray-700 mb-2`,li:``,ol:`list-decimal pl-4 mb-2 last:mb-0`,p:`mb-2 last:mb-0`,pre:`bg-gray-100 dark:bg-gray-800 rounded p-2 mb-2 overflow-x-auto`,strong:`font-bold`,table:`border-collapse mb-2 w-full`,tbody:``,td:`border border-gray-300 dark:border-gray-700 px-2 py-1`,th:`border border-gray-300 dark:border-gray-700 px-2 py-1 font-bold`,thead:``,tr:``,ul:`list-disc pl-4 mb-2 last:mb-0`},Ea=[`a`,`blockquote`,`code`,`em`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`hr`,`li`,`ol`,`p`,`pre`,`strong`,`table`,`tbody`,`td`,`th`,`thead`,`tr`,`ul`],Da=new Ca,Oa=(e,t)=>{let n={...Ta,...t},r=Da.parse(e),i=Yr.sanitize(r,{ADD_ATTR:[`target`]}),a=document.createElement(`div`);a.innerHTML=i;for(let e of Ea){let t=n[e];t&&a.querySelectorAll(e).forEach(e=>{e.classList.add(...t.split(` `).filter(Boolean))})}return a.querySelectorAll(`a`).forEach(e=>{e.setAttribute(`target`,`_blank`),e.setAttribute(`rel`,`noopener noreferrer`)}),V(`div`,{dangerouslySetInnerHTML:{__html:a.innerHTML}})},ka=({children:e})=>{let t=ct(null),n=e instanceof Promise,[r,i]=z(n?null:e),[a,o]=z(n);return B(()=>{if(!(e instanceof Promise)){i(e),o(!1);return}let t=!1;return e.then(e=>{t||(i(e),o(!1))}),()=>{t=!0}},[e]),B(()=>{let e=t.current;if(!(!e||!(r instanceof HTMLElement)))return e.appendChild(r),()=>{e.contains(r)&&e.removeChild(r)}},[r]),a?V(zn,{}):r===null?null:typeof r==`string`?V(`div`,{className:`hawkai-assistant__tool__text w-fit rounded-2xl rounded-bl-sm bg-gray-100 dark:bg-gray-800 px-3 py-2 text-sm text-gray-900 dark:text-gray-100`,children:Oa(r)}):r instanceof HTMLElement?V(`div`,{ref:t,className:`hawkai-assistant__tool__element`}):V(x,{children:r})},Aa=({turn:e,isLoading:t})=>{let n=e.role===`user`,{tools:r}=Rt(),{sendMessage:i}=In();if(n&&!e.text&&!e.files?.length)return null;let a={sendMessage:i},o=e.role===`assistant`&&e.toolUses?e.toolUses.map(e=>{let t=r.find(t=>t.name===e.name);if(!t?.render)return null;let n=t.render({input:e.input,status:e.status},a);return n===null?null:{id:e.id,result:n}}).filter(e=>e!==null):[],s=!!e.text;return V(`div`,{className:bn({"hawkai-assistant__message flex flex-col max-w-[min(90%,900px)]":!0,"hawkai-assistant__message--user items-end self-end":n,"hawkai-assistant__message--assistant items-start":!n}),children:[n&&e.files?.map((e,t)=>e.mediaType.startsWith(`image/`)&&e.data?V(`img`,{src:`data:${e.mediaType};base64,${e.data}`,alt:e.name,className:`hawkai-assistant__message__image my-1 max-w-full rounded-xl max-h-32 object-contain`},t):V(`div`,{className:`hawkai-assistant__message__file my-1 flex items-center gap-1 rounded-lg bg-gray-100 dark:bg-gray-800 px-3 py-2 text-xs text-gray-700 dark:text-gray-300`,children:V(`span`,{children:e.name})},t)),t&&!n&&!e.text?V(zn,{}):s&&V(`div`,{className:bn({"hawkai-assistant__message__bubble rounded-2xl px-3 py-2 text-sm":!0,"hawkai-assistant__message__bubble--user bg-primary text-white rounded-br-sm whitespace-pre-wrap":n,"hawkai-assistant__message__bubble--assistant bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-gray-100 rounded-bl-sm":!n}),children:n?e.text:Oa(e.text)}),o.map(({id:e,result:t})=>V(`div`,{className:`hawkai-assistant__message__tool-result my-2 last:mb-0 w-full`,children:V(ka,{children:t})},e))]})},ja=`Hi - how can I help you search for what you need?`,Ma=()=>{let{turns:e,isStreaming:t}=Rt(),n=ct(null),r=window.HawkAI.Assistant.config.ui,i=e[e.length-1],a=t&&!(i?.role===`assistant`&&!i?.text);return B(()=>{n.current&&(n.current.scrollTop=n.current.scrollHeight)},[e,t]),V(`div`,{ref:n,className:`hawkai-assistant__message-list flex flex-1 flex-col gap-2 overflow-y-auto p-3`,children:[V(Aa,{turn:{role:`assistant`,text:r?.initialMessage??ja}}),e.map((n,r)=>{let i=r===e.length-1;return V(Aa,{turn:n,isLoading:t&&i&&n.role===`assistant`&&!n.text},r)}),a&&V(`div`,{className:`hawkai-assistant__loading-wrapper flex flex-col items-start`,children:V(zn,{})})]})},Na=()=>{let{turns:e}=Rt(),{sendMessage:t}=In(),n=window.HawkAI.Assistant.config.ui?.promptOptions;return!n?.length||e.length>0?null:V(`div`,{className:`hawkai-assistant__prompt-options flex flex-wrap gap-2 px-4 py-3`,children:n.map(e=>V(`button`,{type:`button`,onClick:()=>t(e),className:`hawkai-assistant__prompt-options__button cursor-pointer rounded-2xl rounded-br-sm bg-primary px-3 py-2 text-left text-sm text-white focus:outline-none hover:opacity-90`,children:e},e))})},Pa=({visible:e,onClose:t})=>{let[n,r]=z(!1),{clearChat:i,isStreaming:a}=Rt();if(!e)return null;let o=window.HawkAI.Assistant.config?.ui,s=o?.logoUrl,c=o?.heading||`Assistant`,l=o?.position??`right`,u=o?.allowFullScreen!==!1,d=o?.display===`drawer`,f=!d,p=`size-5`;return V(`div`,{className:bn({"hawkai-assistant__window fixed z-50 flex flex-col bg-white dark:bg-gray-900":!0,"hawkai-assistant__window--fullscreen inset-0":n,"hawkai-assistant__window--window":f,"hawkai-assistant__window--drawer":d,"hawkai-assistant__window--right":l===`right`,"hawkai-assistant__window--left":l===`left`},f&&!n&&{"inset-x-2 top-4 bottom-24 rounded-xl shadow-2xl ring-1 ring-black/5 dark:ring-white/10":!0,"sm:inset-x-auto sm:top-auto sm:h-160 sm:w-120":!0,"sm:right-6":l===`right`,"sm:left-6":l===`left`},d&&!n&&{"inset-y-0 w-full shadow-2xl sm:w-120":!0,"right-0":l===`right`,"left-0":l===`left`}),children:[V(`header`,{className:bn({"hawkai-assistant__window__header flex items-center justify-between bg-primary px-4 py-3":!0,"hawkai-assistant__window__header--fullscreen":n,"rounded-t-xl":!n&&!d}),children:[s&&V(`img`,{src:s,alt:``,className:`hawkai-assistant__window__logo max-h-10 max-w-25`}),V(`span`,{className:`hawkai-assistant__window__title text-md font-semibold text-white`,children:c}),V(`div`,{className:`hawkai-assistant__window__actions flex items-center gap-2`,children:[V(`button`,{type:`button`,onClick:i,disabled:a,className:`hawkai-assistant__window__clear-button cursor-pointer text-white/90 hover:text-white focus:outline-none disabled:cursor-not-allowed disabled:opacity-40`,title:`New conversation`,"aria-label":`New conversation`,children:V(Dn,{className:p,"aria-hidden":!0})}),u&&V(`button`,{type:`button`,onClick:()=>r(e=>!e),className:bn({"hawkai-assistant__window__fullscreen-button cursor-pointer text-white/90 hover:text-white focus:outline-none":!0,"hawkai-assistant__window__fullscreen-button--active":n}),title:n?`Exit fullscreen`:`Enter fullscreen`,"aria-label":n?`Exit fullscreen`:`Enter fullscreen`,children:V(n?Cn:Tn,{className:p,"aria-hidden":!0})}),d&&V(`button`,{type:`button`,onClick:t,className:`hawkai-assistant__window__close-button cursor-pointer text-white/90 hover:text-white focus:outline-none`,title:`Close`,"aria-label":`Close`,children:V(kn,{className:p,"aria-hidden":!0})})]})]}),V(`div`,{className:`hawkai-assistant__window__body flex flex-1 flex-col overflow-hidden`,children:[V(Ma,{}),V(Na,{}),V(Rn,{})]})]})},Fa=()=>{let{turns:e,userClosed:t,setUserClosed:n,clearChat:r}=Rt(),[i,a]=z(()=>(e.length>0||window.HawkAI.Assistant.config.ui?.open===!0)&&!t),o=()=>{a(!0),n(!1)},s=()=>{a(!1),n(!0)};return B(()=>(F.toggle=e=>{e?o():s()},()=>{F.toggle=void 0}),[]),B(()=>(F.clearChat=r,()=>{F.clearChat=void 0}),[r]),V(x,{children:[V(xn,{isOpen:i,onClick:()=>i?s():o()}),V(Pa,{visible:i,onClose:s})]})},Ia=({initialTurns:e})=>V(`div`,{className:`hawkai-assistant`,"data-theme":Bt(window.HawkAI.Assistant.config.ui?.theme),children:V(Lt,{initialTurns:e,children:V(Fa,{})})}),La=`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
97
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--radius-sm:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-bounce:bounce 1s infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#333;--color-primary-hover:#444}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}::marker{color:currentColor}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-6{right:calc(var(--spacing) * 6)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-24{bottom:calc(var(--spacing) * 24)}.left-0{left:calc(var(--spacing) * 0)}.left-6{left:calc(var(--spacing) * 6)}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-21{height:calc(var(--spacing) * 21)}.max-h-10{max-height:calc(var(--spacing) * 10)}.max-h-32{max-height:calc(var(--spacing) * 32)}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-14{width:calc(var(--spacing) * 14)}.w-32{width:calc(var(--spacing) * 32)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-25{max-width:calc(var(--spacing) * 25)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-\\[min\\(90\\%\\,900px\\)\\]{max-width:min(90%,900px)}.max-w-full{max-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.animate-bounce{animation:var(--animate-bounce)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-br-sm{border-bottom-right-radius:var(--radius-sm)}.rounded-bl-sm{border-bottom-left-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-solid{--tw-border-style:solid;border-style:solid}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-primary{background-color:var(--color-primary)}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-primary{color:var(--color-primary)}.text-white{color:var(--color-white)}.text-white\\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\\/90{color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow-lg\\/30{--tw-shadow-alpha:30%;--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,oklab(0% 0 0/.3)), 0 4px 6px -4px var(--tw-shadow-color,oklab(0% 0 0/.3));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-black\\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.last\\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}@media (hover:hover){.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\\:text-blue-800:hover{color:var(--color-blue-800)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:opacity-90:hover{opacity:.9}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}.disabled\\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\\:hover\\:bg-primary:disabled:hover{background-color:var(--color-primary)}.disabled\\:hover\\:bg-transparent:disabled:hover{background-color:#0000}}@media (width>=40rem){.sm\\:inset-x-auto{inset-inline:auto}.sm\\:top-auto{top:auto}.sm\\:right-6{right:calc(var(--spacing) * 6)}.sm\\:left-6{left:calc(var(--spacing) * 6)}.sm\\:h-160{height:calc(var(--spacing) * 160)}.sm\\:w-120{width:calc(var(--spacing) * 120)}}.dark\\:border-gray-700:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-gray-700)}.dark\\:bg-gray-800:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-gray-800)}.dark\\:bg-gray-900:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-gray-900)}.dark\\:text-blue-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-blue-400)}.dark\\:text-gray-100:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-100)}.dark\\:text-gray-200:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-200)}.dark\\:text-gray-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-300)}.dark\\:text-gray-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-400)}.dark\\:text-gray-500:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-500)}.dark\\:text-white:where([data-theme=dark],[data-theme=dark] *){color:var(--color-white)}.dark\\:ring-white\\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\\:ring-white\\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}@media (hover:hover){.dark\\:hover\\:bg-gray-800:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-gray-800)}.dark\\:hover\\:text-blue-300:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-blue-300)}.dark\\:hover\\:text-gray-300:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-gray-300)}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}`,Ra=`[HawkAI Assistant]`,za=(...e)=>{console.error(Ra,...e)},Ba=!1,Va=e=>{if(!(typeof e!=`object`||!e||Object.isFrozen(e))){Object.freeze(e);for(let t of Object.values(e))Va(t)}},Ha=e=>{let t=[];if((!e.apiUrl||typeof e.apiUrl!=`string`)&&t.push(`apiUrl`),(!e.agentId||typeof e.agentId!=`string`)&&t.push(`agentId`),t.length>0)throw Error(`[HawkAI Assistant] invalid or missing configuration properties: ${t.join(`, `)}`)},Ua=()=>{let e=new CSSStyleSheet;e.replaceSync(La.replace(/:root/gu,`:host`));let t=[];for(let n of Array.from(e.cssRules))n instanceof CSSPropertyRule&&n.initialValue&&t.push(`${n.name}: ${n.initialValue}`);t.length>0&&e.insertRule(`:host { ${t.join(`; `)} }`);let n=window.HawkAI.Assistant.config.ui?.colors;return n?.primary&&e.insertRule(`:host { --color-primary: ${n.primary.default}; --color-primary-hover: ${n.primary.hover}; }`,e.cssRules.length),e},Wa=async e=>{if(Ha(e),Ba)return;Ba=!0,window.HawkAI.Assistant.config=e,Object.freeze(window.HawkAI.Assistant),Le();let t=async t=>{Va(e);let n=document.createElement(`div`);document.body.appendChild(n);let r=n.attachShadow({mode:`open`}),i=[Ua()];if(e.ui?.styles){let t=new CSSStyleSheet;t.replaceSync(e.ui.styles),i.push(t)}if(r.adoptedStyleSheets=i,ve(y(Ia,{initialTurns:t}),r),e.ui?.stylesheetUrl)try{let t=await(await fetch(e.ui.stylesheetUrl)).text(),n=new CSSStyleSheet;n.replaceSync(t),r.adoptedStyleSheets=[...r.adoptedStyleSheets,n]}catch{za(`Failed to load external stylesheet.`)}};if(e.loadConfigFromApi===!1)try{t(await P())}catch(e){za(e)}else try{let n=await Ye();n.enabled&&(e.ui={...n.ui,...e.ui},t(await P()))}catch(e){za(e)}},Ga=e=>{F.setActorId?.(e)},Ka=e=>{We(e)},qa=e=>{F.toggle?.(e)},Ja=async(e,t)=>{F.toggle?.(!0),setTimeout(()=>{F.sendMessage?.(e,t)},250)},Ya=()=>{F.clearChat?.()};return window.HawkAI=window.HawkAI??{},window.HawkAI.Assistant={config:void 0,initialize:Wa,setActorId:Ga,setContext:Ka,toggle:qa,sendMessage:Ja,clearChat:Ya},e.clearChat=Ya,e.initialize=Wa,e.sendMessage=Ja,e.setActorId=Ga,e.setContext=Ka,e.toggle=qa,e})({});
96
+ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+la(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},wa=new Ca;function $(e,t){return wa.parse(e,t)}$.options=$.setOptions=function(e){return wa.setOptions(e),$.defaults=wa.defaults,Qr($.defaults),$},$.getDefaults=Xr,$.defaults=Zr,$.use=function(...e){return wa.use(...e),$.defaults=wa.defaults,Qr($.defaults),$},$.walkTokens=function(e,t){return wa.walkTokens(e,t)},$.parseInline=wa.parseInline,$.Parser=xa,$.parser=xa.parse,$.Renderer=ya,$.TextRenderer=ba,$.Lexer=Q,$.lexer=Q.lex,$.Tokenizer=va,$.Hooks=Sa,$.parse=$,$.options,$.setOptions,$.use,$.walkTokens,$.parseInline,xa.parse,Q.lex;var Ta={a:`text-blue-600 underline hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300`,blockquote:`border-l-4 border-gray-300 dark:border-gray-700 pl-3 italic mb-2`,code:`bg-gray-100 dark:bg-gray-800 dark:text-gray-200 rounded px-1 font-mono text-xs`,em:`italic`,h1:`text-2xl font-bold mb-2`,h2:`text-xl font-bold mb-2`,h3:`text-lg font-bold mb-2`,h4:`font-bold mb-2`,h5:`font-bold mb-2`,h6:`font-bold mb-2`,hr:`border-gray-300 dark:border-gray-700 mb-2`,li:``,ol:`list-decimal pl-4 mb-2 last:mb-0`,p:`mb-2 last:mb-0`,pre:`bg-gray-100 dark:bg-gray-800 rounded p-2 mb-2 overflow-x-auto`,strong:`font-bold`,table:`border-collapse mb-2 w-full`,tbody:``,td:`border border-gray-300 dark:border-gray-700 px-2 py-1`,th:`border border-gray-300 dark:border-gray-700 px-2 py-1 font-bold`,thead:``,tr:``,ul:`list-disc pl-4 mb-2 last:mb-0`},Ea=[`a`,`blockquote`,`code`,`em`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`hr`,`li`,`ol`,`p`,`pre`,`strong`,`table`,`tbody`,`td`,`th`,`thead`,`tr`,`ul`],Da=new Ca,Oa=(e,t)=>{let n={...Ta,...t},r=Da.parse(e),i=Yr.sanitize(r,{ADD_ATTR:[`target`]}),a=document.createElement(`div`);a.innerHTML=i;for(let e of Ea){let t=n[e],r=t?t.split(` `).filter(Boolean):[],i=e===`a`;r.length===0&&!i||a.querySelectorAll(e).forEach(e=>{r.length>0&&e.classList.add(...r),i&&(e.setAttribute(`target`,`_blank`),e.setAttribute(`rel`,`noopener noreferrer`))})}return V(`div`,{dangerouslySetInnerHTML:{__html:a.innerHTML}})},ka=`[HawkAI Assistant]`,Aa=(...e)=>{console.error(ka,...e)},ja=({children:e})=>{let t=ct(null),n=e instanceof Promise,[r,i]=z(n?null:e),[a,o]=z(n);return B(()=>{if(!(e instanceof Promise)){i(e),o(!1);return}let t=!1;return e.then(e=>{t||(i(e),o(!1))}).catch(e=>{t||(Aa(`Failed to render tool result.`,e),o(!1))}),()=>{t=!0}},[e]),B(()=>{let e=t.current;if(!(!e||!(r instanceof HTMLElement)))return e.appendChild(r),()=>{e.contains(r)&&e.removeChild(r)}},[r]),a?V(zn,{}):r===null?null:typeof r==`string`?V(`div`,{className:`hawkai-assistant__tool__text w-fit rounded-2xl rounded-bl-sm bg-gray-100 dark:bg-gray-800 px-3 py-2 text-sm text-gray-900 dark:text-gray-100`,children:Oa(r)}):r instanceof HTMLElement?V(`div`,{ref:t,className:`hawkai-assistant__tool__element`}):V(x,{children:r})},Ma=({turn:e,isLoading:t})=>{let n=e.role===`user`,{tools:r}=Rt(),{sendMessage:i}=In();if(n&&!e.text&&!e.files?.length)return null;let a={sendMessage:i},o=e.role===`assistant`&&e.toolUses?e.toolUses.map(e=>{let t=r.find(t=>t.name===e.name);if(!t?.render)return null;let n=t.render({input:e.input,status:e.status},a);return n===null?null:{id:e.id,result:n}}).filter(e=>e!==null):[],s=!!e.text;return V(`div`,{"data-testid":`message`,"data-role":e.role,className:bn({"hawkai-assistant__message flex flex-col max-w-[min(90%,900px)]":!0,"hawkai-assistant__message--user items-end self-end":n,"hawkai-assistant__message--assistant items-start":!n}),children:[n&&e.files?.map((e,t)=>e.mediaType.startsWith(`image/`)&&e.data?V(`img`,{src:`data:${e.mediaType};base64,${e.data}`,alt:e.name,className:`hawkai-assistant__message__image my-1 max-w-full rounded-xl max-h-32 object-contain`},t):V(`div`,{className:`hawkai-assistant__message__file my-1 flex items-center gap-1 rounded-lg bg-gray-100 dark:bg-gray-800 px-3 py-2 text-xs text-gray-700 dark:text-gray-300`,children:V(`span`,{children:e.name})},t)),t&&!n&&!e.text?V(zn,{}):s&&V(`div`,{className:bn({"hawkai-assistant__message__bubble rounded-2xl px-3 py-2 text-sm":!0,"hawkai-assistant__message__bubble--user bg-primary text-white rounded-br-sm whitespace-pre-wrap":n,"hawkai-assistant__message__bubble--assistant bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-gray-100 rounded-bl-sm":!n}),children:n?e.text:Oa(e.text)}),o.map(({id:e,result:t})=>V(`div`,{className:`hawkai-assistant__message__tool-result my-2 last:mb-0 w-full`,children:V(ja,{children:t})},e))]})},Na=`Hi - how can I help you search for what you need?`,Pa=()=>{let{turns:e,isStreaming:t}=Rt(),n=ct(null),r=window.HawkAI.Assistant.config.ui,i=e[e.length-1],a=t&&!(i?.role===`assistant`&&!i?.text);return B(()=>{n.current&&(n.current.scrollTop=n.current.scrollHeight)},[e,t]),V(`div`,{ref:n,"data-testid":`message-list`,className:`hawkai-assistant__message-list flex flex-1 flex-col gap-2 overflow-y-auto p-3`,children:[V(`div`,{"data-testid":`initial-message`,children:V(Ma,{turn:{role:`assistant`,text:r?.initialMessage??Na}})}),e.map((n,r)=>{let i=r===e.length-1;return V(Ma,{turn:n,isLoading:t&&i&&n.role===`assistant`&&!n.text},r)}),a&&V(`div`,{className:`hawkai-assistant__loading-wrapper flex flex-col items-start`,children:V(zn,{})})]})},Fa=()=>{let{turns:e}=Rt(),{sendMessage:t}=In(),n=window.HawkAI.Assistant.config.ui?.promptOptions;return!n?.length||e.length>0?null:V(`div`,{"data-testid":`prompt-options`,className:`hawkai-assistant__prompt-options flex flex-wrap gap-2 px-4 py-3`,children:n.map(e=>V(`button`,{type:`button`,onClick:()=>t(e),className:`hawkai-assistant__prompt-options__button cursor-pointer rounded-2xl rounded-br-sm bg-primary px-3 py-2 text-left text-sm text-white focus:outline-none hover:opacity-90`,children:e},e))})},Ia=({visible:e,onClose:t})=>{let[n,r]=z(!1),{clearChat:i,isStreaming:a}=Rt();if(!e)return null;let o=window.HawkAI.Assistant.config?.ui,s=o?.logoUrl,c=o?.heading||`Assistant`,l=o?.position??`right`,u=o?.allowFullScreen!==!1,d=o?.display===`drawer`,f=!d,p=`size-5`;return V(`div`,{"data-testid":`assistant-window`,className:bn({"hawkai-assistant__window fixed z-50 flex flex-col bg-white dark:bg-gray-900":!0,"hawkai-assistant__window--fullscreen inset-0":n,"hawkai-assistant__window--window":f,"hawkai-assistant__window--drawer":d,"hawkai-assistant__window--right":l===`right`,"hawkai-assistant__window--left":l===`left`},f&&!n&&{"inset-x-2 top-4 bottom-24 rounded-xl shadow-2xl ring-1 ring-black/5 dark:ring-white/10":!0,"sm:inset-x-auto sm:top-auto sm:h-160 sm:w-120":!0,"sm:right-6":l===`right`,"sm:left-6":l===`left`},d&&!n&&{"inset-y-0 w-full shadow-2xl sm:w-120":!0,"right-0":l===`right`,"left-0":l===`left`}),children:[V(`header`,{className:bn({"hawkai-assistant__window__header flex items-center justify-between bg-primary px-4 py-3":!0,"hawkai-assistant__window__header--fullscreen":n,"rounded-t-xl":!n&&!d}),children:[s&&V(`img`,{src:s,alt:``,className:`hawkai-assistant__window__logo max-h-10 max-w-25`}),V(`span`,{className:`hawkai-assistant__window__title text-md font-semibold text-white`,children:c}),V(`div`,{className:`hawkai-assistant__window__actions flex items-center gap-2`,children:[V(`button`,{type:`button`,"data-testid":`clear-chat-button`,onClick:i,disabled:a,className:`hawkai-assistant__window__clear-button cursor-pointer text-white/90 hover:text-white focus:outline-none disabled:cursor-not-allowed disabled:opacity-40`,title:`New conversation`,"aria-label":`New conversation`,children:V(Dn,{className:p,"aria-hidden":!0})}),u&&V(`button`,{type:`button`,"data-testid":`fullscreen-toggle-button`,onClick:()=>r(e=>!e),className:bn({"hawkai-assistant__window__fullscreen-button cursor-pointer text-white/90 hover:text-white focus:outline-none":!0,"hawkai-assistant__window__fullscreen-button--active":n}),title:n?`Exit fullscreen`:`Enter fullscreen`,"aria-label":n?`Exit fullscreen`:`Enter fullscreen`,children:V(n?Cn:Tn,{className:p,"aria-hidden":!0})}),d&&V(`button`,{type:`button`,"data-testid":`close-window-button`,onClick:t,className:`hawkai-assistant__window__close-button cursor-pointer text-white/90 hover:text-white focus:outline-none`,title:`Close`,"aria-label":`Close`,children:V(kn,{className:p,"aria-hidden":!0})})]})]}),V(`div`,{className:`hawkai-assistant__window__body flex flex-1 flex-col overflow-hidden`,children:[V(Pa,{}),V(Fa,{}),V(Rn,{})]})]})},La=()=>{let{turns:e,userClosed:t,setUserClosed:n,clearChat:r}=Rt(),[i,a]=z(()=>(e.length>0||window.HawkAI.Assistant.config.ui?.open===!0)&&!t),o=()=>{a(!0),n(!1)},s=()=>{a(!1),n(!0)};return B(()=>(F.toggle=e=>{e?o():s()},()=>{F.toggle=void 0}),[]),B(()=>(F.clearChat=r,()=>{F.clearChat=void 0}),[r]),V(x,{children:[V(xn,{isOpen:i,onClick:()=>i?s():o()}),V(Ia,{visible:i,onClose:s})]})},Ra=({initialTurns:e})=>V(`div`,{className:`hawkai-assistant`,"data-theme":Bt(window.HawkAI.Assistant.config.ui?.theme),children:V(Lt,{initialTurns:e,children:V(La,{})})}),za=`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
97
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--radius-sm:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-bounce:bounce 1s infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#333;--color-primary-hover:#444}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}::marker{color:currentColor}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-6{right:calc(var(--spacing) * 6)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-24{bottom:calc(var(--spacing) * 24)}.left-0{left:calc(var(--spacing) * 0)}.left-6{left:calc(var(--spacing) * 6)}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-21{height:calc(var(--spacing) * 21)}.max-h-10{max-height:calc(var(--spacing) * 10)}.max-h-32{max-height:calc(var(--spacing) * 32)}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-14{width:calc(var(--spacing) * 14)}.w-32{width:calc(var(--spacing) * 32)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-25{max-width:calc(var(--spacing) * 25)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-\\[min\\(90\\%\\,900px\\)\\]{max-width:min(90%,900px)}.max-w-full{max-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.animate-bounce{animation:var(--animate-bounce)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-br-sm{border-bottom-right-radius:var(--radius-sm)}.rounded-bl-sm{border-bottom-left-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-solid{--tw-border-style:solid;border-style:solid}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-primary{background-color:var(--color-primary)}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-primary{color:var(--color-primary)}.text-white{color:var(--color-white)}.text-white\\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\\/90{color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow-lg\\/30{--tw-shadow-alpha:30%;--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,oklab(0% 0 0/.3)), 0 4px 6px -4px var(--tw-shadow-color,oklab(0% 0 0/.3));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-black\\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.last\\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}@media (hover:hover){.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\\:text-blue-800:hover{color:var(--color-blue-800)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:opacity-90:hover{opacity:.9}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}.disabled\\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\\:hover\\:bg-primary:disabled:hover{background-color:var(--color-primary)}.disabled\\:hover\\:bg-transparent:disabled:hover{background-color:#0000}}@media (width>=40rem){.sm\\:inset-x-auto{inset-inline:auto}.sm\\:top-auto{top:auto}.sm\\:right-6{right:calc(var(--spacing) * 6)}.sm\\:left-6{left:calc(var(--spacing) * 6)}.sm\\:h-160{height:calc(var(--spacing) * 160)}.sm\\:w-120{width:calc(var(--spacing) * 120)}}.dark\\:border-gray-700:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-gray-700)}.dark\\:bg-gray-800:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-gray-800)}.dark\\:bg-gray-900:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-gray-900)}.dark\\:text-blue-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-blue-400)}.dark\\:text-gray-100:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-100)}.dark\\:text-gray-200:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-200)}.dark\\:text-gray-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-300)}.dark\\:text-gray-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-400)}.dark\\:text-gray-500:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-500)}.dark\\:text-white:where([data-theme=dark],[data-theme=dark] *){color:var(--color-white)}.dark\\:ring-white\\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\\:ring-white\\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}@media (hover:hover){.dark\\:hover\\:bg-gray-800:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-gray-800)}.dark\\:hover\\:text-blue-300:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-blue-300)}.dark\\:hover\\:text-gray-300:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-gray-300)}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}`,Ba=!1,Va=e=>{if(!(typeof e!=`object`||!e||Object.isFrozen(e))){Object.freeze(e);for(let t of Object.values(e))Va(t)}},Ha=e=>{let t=[];if((!e.apiUrl||typeof e.apiUrl!=`string`)&&t.push(`apiUrl`),(!e.accountId||typeof e.accountId!=`string`)&&t.push(`accountId`),(!e.agentId||typeof e.agentId!=`string`)&&t.push(`agentId`),t.length>0)throw Error(`[HawkAI Assistant] invalid or missing configuration properties: ${t.join(`, `)}`)},Ua=()=>{let e=new CSSStyleSheet;e.replaceSync(za.replace(/:root/gu,`:host`));let t=[];for(let n of Array.from(e.cssRules))n instanceof CSSPropertyRule&&n.initialValue&&t.push(`${n.name}: ${n.initialValue}`);t.length>0&&e.insertRule(`:host { ${t.join(`; `)} }`);let n=window.HawkAI.Assistant.config.ui?.colors;return n?.primary&&e.insertRule(`:host { --color-primary: ${n.primary.default}; --color-primary-hover: ${n.primary.hover}; }`,e.cssRules.length),e},Wa=async e=>{if(Ha(e),Ba)return;Ba=!0,window.HawkAI.Assistant.config=e,Object.freeze(window.HawkAI.Assistant),Le();let t=async t=>{Va(e);let n=document.createElement(`div`);document.body.appendChild(n);let r=n.attachShadow({mode:`open`}),i=[Ua()];if(e.ui?.styles){let t=new CSSStyleSheet;t.replaceSync(e.ui.styles),i.push(t)}if(r.adoptedStyleSheets=i,ve(y(Ra,{initialTurns:t}),r),e.ui?.stylesheetUrl)try{let t=await(await fetch(e.ui.stylesheetUrl)).text(),n=new CSSStyleSheet;n.replaceSync(t),r.adoptedStyleSheets=[...r.adoptedStyleSheets,n]}catch{Aa(`Failed to load external stylesheet.`)}};if(e.loadConfigFromApi===!1)try{t(await P())}catch(e){Aa(e)}else try{let n=await Ye();n.enabled&&(e.ui={...n.ui,...e.ui},t(await P()))}catch(e){Aa(e)}},Ga=e=>{F.setActorId?.(e)},Ka=e=>{We(e)},qa=e=>{F.toggle?.(e)},Ja=async(e,t)=>{F.toggle?.(!0),setTimeout(()=>{F.sendMessage?.(e,t)},250)},Ya=()=>{F.clearChat?.()};return window.HawkAI=window.HawkAI??{},window.HawkAI.Assistant={config:void 0,initialize:Wa,setActorId:Ga,setContext:Ka,toggle:qa,sendMessage:Ja,clearChat:Ya},e.clearChat=Ya,e.initialize=Wa,e.sendMessage=Ja,e.setActorId=Ga,e.setContext=Ka,e.toggle=qa,e})({});
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export { clearChat, initialize, sendMessage, setActorId, setContext, toggle } from './main';
2
- export type { Config, RenderToolData, RenderToolHelpers, RenderToolResult, Tool, ToolRenderStatus, UiConfig } from './types';
2
+ export type { Config, RenderToolData, RenderToolHelpers, RenderToolResult, Tool, ToolExecuteOptions, ToolRenderStatus, UiConfig } from './types';
package/dist/index.js CHANGED
@@ -542,46 +542,46 @@ var je = "hawkai-assistant:sessionId", Me = "hawkai-assistant:actorId", j = "",
542
542
  throw Error(Ue(e, "Assistant API returned an invalid stream."));
543
543
  }
544
544
  }
545
- let f = { role: "assistant" };
546
- return s && (f.text = s), c.length > 0 && (f.toolUses = c.map(({ toolUseId: e, tool: t, args: n }) => ({
545
+ let f = d.decode();
546
+ if (f) try {
547
+ l.feed(f);
548
+ } catch (e) {
549
+ throw Error(Ue(e, "Assistant API returned an invalid stream."));
550
+ }
551
+ let p = { role: "assistant" };
552
+ return s && (p.text = s), c.length > 0 && (p.toolUses = c.map(({ toolUseId: e, tool: t, args: n }) => ({
547
553
  id: e,
548
554
  name: t,
549
555
  input: n
550
- }))), f;
556
+ }))), p;
551
557
  }, Ke = async (e, t, n, r) => {
552
- let i = e;
558
+ let i = e, a = (e, t) => (n.onToolResult(e, t, "error"), {
559
+ toolUseId: e,
560
+ output: t,
561
+ status: "error"
562
+ });
553
563
  for (; !r?.aborted;) {
554
564
  n.onAssistantTurnStart();
555
565
  let e = await Ge(i, t, n.onAssistantTextDelta, r);
556
566
  if (n.onAssistantTurnComplete(e), !e.toolUses?.length) break;
557
- let a = {
567
+ let o = {
558
568
  role: "user",
559
569
  toolResults: await Promise.all(e.toolUses.map(async (e) => {
560
- let r = t.find((t) => t.name === e.name);
561
- if (r) try {
562
- let t = await r.execute(e.input ?? {});
570
+ let i = t.find((t) => t.name === e.name);
571
+ if (!i) return a(e.id, `Tool "${e.name}" not found.`);
572
+ try {
573
+ let t = await i.execute(e.input ?? {}, { signal: r });
563
574
  return n.onToolResult(e.id, t, "success"), {
564
575
  toolUseId: e.id,
565
576
  output: t,
566
577
  status: "success"
567
578
  };
568
579
  } catch (t) {
569
- let r = Ue(t, `Tool "${e.name}" failed.`);
570
- return n.onToolResult(e.id, r, "error"), {
571
- toolUseId: e.id,
572
- output: r,
573
- status: "error"
574
- };
580
+ return a(e.id, Ue(t, `Tool "${e.name}" failed.`));
575
581
  }
576
- let i = `Tool "${e.name}" not found.`;
577
- return n.onToolResult(e.id, i, "error"), {
578
- toolUseId: e.id,
579
- output: i,
580
- status: "error"
581
- };
582
582
  }))
583
583
  };
584
- n.onToolResultsTurn(a), i = a;
584
+ n.onToolResultsTurn(o), i = o;
585
585
  }
586
586
  }, qe = async () => {
587
587
  let e = window.HawkAI.Assistant.config, t = `${e.apiUrl}/invocations`, n = await fetch(t, {
@@ -979,45 +979,52 @@ var kt = ({ product: e }) => {
979
979
  text: e
980
980
  }] : t;
981
981
  });
982
- }, p = [
982
+ }, p = ct(() => [
983
983
  Mt(),
984
984
  jt(),
985
985
  ...window.HawkAI.Assistant.config.tools ?? []
986
- ], m = () => {
986
+ ], []), m = () => {
987
987
  Re(), r([]), St(Ie());
988
+ }, h = (e, t) => {
989
+ r((n) => n.map((n) => {
990
+ if (n.role !== "assistant" || !n.toolUses?.length) return n;
991
+ let r = n.toolUses.findIndex((t) => t.id === e);
992
+ if (r === -1) return n;
993
+ let i = n.toolUses.slice();
994
+ return i[r] = {
995
+ ...i[r],
996
+ ...t
997
+ }, {
998
+ ...n,
999
+ toolUses: i
1000
+ };
1001
+ }));
988
1002
  };
989
- return B(() => (F.setActorId = (e) => {
1003
+ B(() => (F.setActorId = (e) => {
990
1004
  Be(e), m();
991
1005
  }, () => {
992
1006
  F.setActorId = void 0;
993
- }), []), /* @__PURE__ */ V(Nt.Provider, {
994
- value: {
995
- turns: n,
996
- tools: p,
997
- isStreaming: i,
998
- setIsStreaming: l,
999
- userClosed: o,
1000
- setUserClosed: s,
1001
- appendTurn: u,
1002
- replaceLastTurn: d,
1003
- updateLastAssistantText: f,
1004
- updateToolUse: (e, t) => {
1005
- r((n) => n.map((n) => {
1006
- if (n.role !== "assistant" || !n.toolUses?.length) return n;
1007
- let r = n.toolUses.findIndex((t) => t.id === e);
1008
- if (r === -1) return n;
1009
- let i = n.toolUses.slice();
1010
- return i[r] = {
1011
- ...i[r],
1012
- ...t
1013
- }, {
1014
- ...n,
1015
- toolUses: i
1016
- };
1017
- }));
1018
- },
1019
- clearChat: m
1020
- },
1007
+ }), []);
1008
+ let g = ct(() => ({
1009
+ turns: n,
1010
+ tools: p,
1011
+ isStreaming: i,
1012
+ setIsStreaming: l,
1013
+ userClosed: o,
1014
+ setUserClosed: s,
1015
+ appendTurn: u,
1016
+ replaceLastTurn: d,
1017
+ updateLastAssistantText: f,
1018
+ updateToolUse: h,
1019
+ clearChat: m
1020
+ }), [
1021
+ n,
1022
+ p,
1023
+ i,
1024
+ o
1025
+ ]);
1026
+ return /* @__PURE__ */ V(Nt.Provider, {
1027
+ value: g,
1021
1028
  children: e
1022
1029
  });
1023
1030
  }, Lt = () => {
@@ -1308,6 +1315,7 @@ var bn = ({ isOpen: e, onClick: t }) => {
1308
1315
  let n = window.HawkAI.Assistant.config?.ui?.position ?? "right";
1309
1316
  return /* @__PURE__ */ V("button", {
1310
1317
  type: "button",
1318
+ "data-testid": "assistant-toggle-button",
1311
1319
  onClick: t,
1312
1320
  className: yn({
1313
1321
  "hawkai-assistant__trigger fixed bottom-6 z-50 flex h-14 w-14 cursor-pointer items-center justify-center rounded-full bg-primary text-white shadow-lg/30 hover:bg-primary-hover focus:outline-none": !0,
@@ -1507,6 +1515,7 @@ var Mn = /* @__PURE__ */ Gt(jn), Nn = (e) => e instanceof Error && e.message ? `
1507
1515
  }),
1508
1516
  /* @__PURE__ */ V("textarea", {
1509
1517
  id: "assistant-message",
1518
+ "data-testid": "message-input",
1510
1519
  className: "hawkai-assistant__form__text-input h-21 flex-1 resize-none rounded-lg border border-gray-200 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 p-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary",
1511
1520
  placeholder: c?.placeholder || "Enter your message here",
1512
1521
  value: e,
@@ -1526,6 +1535,7 @@ var Mn = /* @__PURE__ */ Gt(jn), Nn = (e) => e instanceof Error && e.message ? `
1526
1535
  onChange: u
1527
1536
  }), /* @__PURE__ */ V("button", {
1528
1537
  type: "button",
1538
+ "data-testid": "attach-button",
1529
1539
  disabled: n.length >= In || a,
1530
1540
  title: "Attach files",
1531
1541
  "aria-label": "Attach files",
@@ -1534,6 +1544,7 @@ var Mn = /* @__PURE__ */ Gt(jn), Nn = (e) => e instanceof Error && e.message ? `
1534
1544
  children: /* @__PURE__ */ V(hn, { className: "h-5 w-5" })
1535
1545
  })] }), a ? /* @__PURE__ */ V("button", {
1536
1546
  type: "button",
1547
+ "data-testid": "stop-button",
1537
1548
  onClick: s,
1538
1549
  title: "Stop",
1539
1550
  "aria-label": "Stop",
@@ -1541,6 +1552,7 @@ var Mn = /* @__PURE__ */ Gt(jn), Nn = (e) => e instanceof Error && e.message ? `
1541
1552
  children: /* @__PURE__ */ V(Mn, { className: "h-5 w-5" })
1542
1553
  }) : /* @__PURE__ */ V("button", {
1543
1554
  type: "submit",
1555
+ "data-testid": "send-button",
1544
1556
  disabled: !m,
1545
1557
  title: "Send",
1546
1558
  "aria-label": "Send",
@@ -1552,6 +1564,7 @@ var Mn = /* @__PURE__ */ Gt(jn), Nn = (e) => e instanceof Error && e.message ? `
1552
1564
  })]
1553
1565
  });
1554
1566
  }, Rn = () => /* @__PURE__ */ V("div", {
1567
+ "data-testid": "loading-indicator",
1555
1568
  className: "hawkai-assistant__loading-indicator w-fit rounded-2xl rounded-bl-sm bg-gray-100 dark:bg-gray-800 px-3 py-2 text-sm text-gray-900 dark:text-gray-100",
1556
1569
  children: /* @__PURE__ */ V("span", {
1557
1570
  className: "inline-flex gap-1",
@@ -3731,15 +3744,15 @@ var wa = {
3731
3744
  }, r = Ea.parse(e), i = Jr.sanitize(r, { ADD_ATTR: ["target"] }), a = document.createElement("div");
3732
3745
  a.innerHTML = i;
3733
3746
  for (let e of Ta) {
3734
- let t = n[e];
3735
- t && a.querySelectorAll(e).forEach((e) => {
3736
- e.classList.add(...t.split(" ").filter(Boolean));
3747
+ let t = n[e], r = t ? t.split(" ").filter(Boolean) : [], i = e === "a";
3748
+ r.length === 0 && !i || a.querySelectorAll(e).forEach((e) => {
3749
+ r.length > 0 && e.classList.add(...r), i && (e.setAttribute("target", "_blank"), e.setAttribute("rel", "noopener noreferrer"));
3737
3750
  });
3738
3751
  }
3739
- return a.querySelectorAll("a").forEach((e) => {
3740
- e.setAttribute("target", "_blank"), e.setAttribute("rel", "noopener noreferrer");
3741
- }), /* @__PURE__ */ V("div", { dangerouslySetInnerHTML: { __html: a.innerHTML } });
3742
- }, Oa = ({ children: e }) => {
3752
+ return /* @__PURE__ */ V("div", { dangerouslySetInnerHTML: { __html: a.innerHTML } });
3753
+ }, Oa = "[HawkAI Assistant]", ka = (...e) => {
3754
+ console.error(Oa, ...e);
3755
+ }, Aa = ({ children: e }) => {
3743
3756
  let t = st(null), n = e instanceof Promise, [r, i] = z(n ? null : e), [a, o] = z(n);
3744
3757
  return B(() => {
3745
3758
  if (!(e instanceof Promise)) {
@@ -3749,6 +3762,8 @@ var wa = {
3749
3762
  let t = !1;
3750
3763
  return e.then((e) => {
3751
3764
  t || (i(e), o(!1));
3765
+ }).catch((e) => {
3766
+ t || (ka("Failed to render tool result.", e), o(!1));
3752
3767
  }), () => {
3753
3768
  t = !0;
3754
3769
  };
@@ -3764,7 +3779,7 @@ var wa = {
3764
3779
  ref: t,
3765
3780
  className: "hawkai-assistant__tool__element"
3766
3781
  }) : /* @__PURE__ */ V(x, { children: r });
3767
- }, ka = ({ turn: e, isLoading: t }) => {
3782
+ }, ja = ({ turn: e, isLoading: t }) => {
3768
3783
  let n = e.role === "user", { tools: r } = Lt(), { sendMessage: i } = Fn();
3769
3784
  if (n && !e.text && !e.files?.length) return null;
3770
3785
  let a = { sendMessage: i }, o = e.role === "assistant" && e.toolUses ? e.toolUses.map((e) => {
@@ -3780,6 +3795,8 @@ var wa = {
3780
3795
  };
3781
3796
  }).filter((e) => e !== null) : [], s = !!e.text;
3782
3797
  return /* @__PURE__ */ V("div", {
3798
+ "data-testid": "message",
3799
+ "data-role": e.role,
3783
3800
  className: yn({
3784
3801
  "hawkai-assistant__message flex flex-col max-w-[min(90%,900px)]": !0,
3785
3802
  "hawkai-assistant__message--user items-end self-end": n,
@@ -3804,25 +3821,29 @@ var wa = {
3804
3821
  }),
3805
3822
  o.map(({ id: e, result: t }) => /* @__PURE__ */ V("div", {
3806
3823
  className: "hawkai-assistant__message__tool-result my-2 last:mb-0 w-full",
3807
- children: /* @__PURE__ */ V(Oa, { children: t })
3824
+ children: /* @__PURE__ */ V(Aa, { children: t })
3808
3825
  }, e))
3809
3826
  ]
3810
3827
  });
3811
- }, Aa = "Hi - how can I help you search for what you need?", ja = () => {
3828
+ }, Ma = "Hi - how can I help you search for what you need?", Na = () => {
3812
3829
  let { turns: e, isStreaming: t } = Lt(), n = st(null), r = window.HawkAI.Assistant.config.ui, i = e[e.length - 1], a = t && !(i?.role === "assistant" && !i?.text);
3813
3830
  return B(() => {
3814
3831
  n.current && (n.current.scrollTop = n.current.scrollHeight);
3815
3832
  }, [e, t]), /* @__PURE__ */ V("div", {
3816
3833
  ref: n,
3834
+ "data-testid": "message-list",
3817
3835
  className: "hawkai-assistant__message-list flex flex-1 flex-col gap-2 overflow-y-auto p-3",
3818
3836
  children: [
3819
- /* @__PURE__ */ V(ka, { turn: {
3820
- role: "assistant",
3821
- text: r?.initialMessage ?? Aa
3822
- } }),
3837
+ /* @__PURE__ */ V("div", {
3838
+ "data-testid": "initial-message",
3839
+ children: /* @__PURE__ */ V(ja, { turn: {
3840
+ role: "assistant",
3841
+ text: r?.initialMessage ?? Ma
3842
+ } })
3843
+ }),
3823
3844
  e.map((n, r) => {
3824
3845
  let i = r === e.length - 1;
3825
- return /* @__PURE__ */ V(ka, {
3846
+ return /* @__PURE__ */ V(ja, {
3826
3847
  turn: n,
3827
3848
  isLoading: t && i && n.role === "assistant" && !n.text
3828
3849
  }, r);
@@ -3833,9 +3854,10 @@ var wa = {
3833
3854
  })
3834
3855
  ]
3835
3856
  });
3836
- }, Ma = () => {
3857
+ }, Pa = () => {
3837
3858
  let { turns: e } = Lt(), { sendMessage: t } = Fn(), n = window.HawkAI.Assistant.config.ui?.promptOptions;
3838
3859
  return !n?.length || e.length > 0 ? null : /* @__PURE__ */ V("div", {
3860
+ "data-testid": "prompt-options",
3839
3861
  className: "hawkai-assistant__prompt-options flex flex-wrap gap-2 px-4 py-3",
3840
3862
  children: n.map((e) => /* @__PURE__ */ V("button", {
3841
3863
  type: "button",
@@ -3844,11 +3866,12 @@ var wa = {
3844
3866
  children: e
3845
3867
  }, e))
3846
3868
  });
3847
- }, Na = ({ visible: e, onClose: t }) => {
3869
+ }, Fa = ({ visible: e, onClose: t }) => {
3848
3870
  let [n, r] = z(!1), { clearChat: i, isStreaming: a } = Lt();
3849
3871
  if (!e) return null;
3850
3872
  let o = window.HawkAI.Assistant.config?.ui, s = o?.logoUrl, c = o?.heading || "Assistant", l = o?.position ?? "right", u = o?.allowFullScreen !== !1, d = o?.display === "drawer", f = !d, p = "size-5";
3851
3873
  return /* @__PURE__ */ V("div", {
3874
+ "data-testid": "assistant-window",
3852
3875
  className: yn({
3853
3876
  "hawkai-assistant__window fixed z-50 flex flex-col bg-white dark:bg-gray-900": !0,
3854
3877
  "hawkai-assistant__window--fullscreen inset-0": n,
@@ -3887,6 +3910,7 @@ var wa = {
3887
3910
  children: [
3888
3911
  /* @__PURE__ */ V("button", {
3889
3912
  type: "button",
3913
+ "data-testid": "clear-chat-button",
3890
3914
  onClick: i,
3891
3915
  disabled: a,
3892
3916
  className: "hawkai-assistant__window__clear-button cursor-pointer text-white/90 hover:text-white focus:outline-none disabled:cursor-not-allowed disabled:opacity-40",
@@ -3899,6 +3923,7 @@ var wa = {
3899
3923
  }),
3900
3924
  u && /* @__PURE__ */ V("button", {
3901
3925
  type: "button",
3926
+ "data-testid": "fullscreen-toggle-button",
3902
3927
  onClick: () => r((e) => !e),
3903
3928
  className: yn({
3904
3929
  "hawkai-assistant__window__fullscreen-button cursor-pointer text-white/90 hover:text-white focus:outline-none": !0,
@@ -3913,6 +3938,7 @@ var wa = {
3913
3938
  }),
3914
3939
  d && /* @__PURE__ */ V("button", {
3915
3940
  type: "button",
3941
+ "data-testid": "close-window-button",
3916
3942
  onClick: t,
3917
3943
  className: "hawkai-assistant__window__close-button cursor-pointer text-white/90 hover:text-white focus:outline-none",
3918
3944
  title: "Close",
@@ -3928,13 +3954,13 @@ var wa = {
3928
3954
  }), /* @__PURE__ */ V("div", {
3929
3955
  className: "hawkai-assistant__window__body flex flex-1 flex-col overflow-hidden",
3930
3956
  children: [
3931
- /* @__PURE__ */ V(ja, {}),
3932
- /* @__PURE__ */ V(Ma, {}),
3957
+ /* @__PURE__ */ V(Na, {}),
3958
+ /* @__PURE__ */ V(Pa, {}),
3933
3959
  /* @__PURE__ */ V(Ln, {})
3934
3960
  ]
3935
3961
  })]
3936
3962
  });
3937
- }, Pa = () => {
3963
+ }, Ia = () => {
3938
3964
  let { turns: e, userClosed: t, setUserClosed: n, clearChat: r } = Lt(), [i, a] = z(() => (e.length > 0 || window.HawkAI.Assistant.config.ui?.open === !0) && !t), o = () => {
3939
3965
  a(!0), n(!1);
3940
3966
  }, s = () => {
@@ -3949,30 +3975,28 @@ var wa = {
3949
3975
  }), [r]), /* @__PURE__ */ V(x, { children: [/* @__PURE__ */ V(bn, {
3950
3976
  isOpen: i,
3951
3977
  onClick: () => i ? s() : o()
3952
- }), /* @__PURE__ */ V(Na, {
3978
+ }), /* @__PURE__ */ V(Fa, {
3953
3979
  visible: i,
3954
3980
  onClose: s
3955
3981
  })] });
3956
- }, Fa = ({ initialTurns: e }) => /* @__PURE__ */ V("div", {
3982
+ }, La = ({ initialTurns: e }) => /* @__PURE__ */ V("div", {
3957
3983
  className: "hawkai-assistant",
3958
3984
  "data-theme": zt(window.HawkAI.Assistant.config.ui?.theme),
3959
3985
  children: /* @__PURE__ */ V(It, {
3960
3986
  initialTurns: e,
3961
- children: /* @__PURE__ */ V(Pa, {})
3987
+ children: /* @__PURE__ */ V(Ia, {})
3962
3988
  })
3963
- }), Ia = "/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--radius-sm:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-bounce:bounce 1s infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#333;--color-primary-hover:#444}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}::marker{color:currentColor}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-6{right:calc(var(--spacing) * 6)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-24{bottom:calc(var(--spacing) * 24)}.left-0{left:calc(var(--spacing) * 0)}.left-6{left:calc(var(--spacing) * 6)}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-21{height:calc(var(--spacing) * 21)}.max-h-10{max-height:calc(var(--spacing) * 10)}.max-h-32{max-height:calc(var(--spacing) * 32)}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-14{width:calc(var(--spacing) * 14)}.w-32{width:calc(var(--spacing) * 32)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-25{max-width:calc(var(--spacing) * 25)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-\\[min\\(90\\%\\,900px\\)\\]{max-width:min(90%,900px)}.max-w-full{max-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.animate-bounce{animation:var(--animate-bounce)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-br-sm{border-bottom-right-radius:var(--radius-sm)}.rounded-bl-sm{border-bottom-left-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-solid{--tw-border-style:solid;border-style:solid}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-primary{background-color:var(--color-primary)}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-primary{color:var(--color-primary)}.text-white{color:var(--color-white)}.text-white\\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\\/90{color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow-lg\\/30{--tw-shadow-alpha:30%;--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,oklab(0% 0 0/.3)), 0 4px 6px -4px var(--tw-shadow-color,oklab(0% 0 0/.3));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-black\\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.last\\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}@media (hover:hover){.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\\:text-blue-800:hover{color:var(--color-blue-800)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:opacity-90:hover{opacity:.9}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}.disabled\\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\\:hover\\:bg-primary:disabled:hover{background-color:var(--color-primary)}.disabled\\:hover\\:bg-transparent:disabled:hover{background-color:#0000}}@media (width>=40rem){.sm\\:inset-x-auto{inset-inline:auto}.sm\\:top-auto{top:auto}.sm\\:right-6{right:calc(var(--spacing) * 6)}.sm\\:left-6{left:calc(var(--spacing) * 6)}.sm\\:h-160{height:calc(var(--spacing) * 160)}.sm\\:w-120{width:calc(var(--spacing) * 120)}}.dark\\:border-gray-700:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-gray-700)}.dark\\:bg-gray-800:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-gray-800)}.dark\\:bg-gray-900:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-gray-900)}.dark\\:text-blue-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-blue-400)}.dark\\:text-gray-100:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-100)}.dark\\:text-gray-200:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-200)}.dark\\:text-gray-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-300)}.dark\\:text-gray-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-400)}.dark\\:text-gray-500:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-500)}.dark\\:text-white:where([data-theme=dark],[data-theme=dark] *){color:var(--color-white)}.dark\\:ring-white\\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\\:ring-white\\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}@media (hover:hover){.dark\\:hover\\:bg-gray-800:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-gray-800)}.dark\\:hover\\:text-blue-300:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-blue-300)}.dark\\:hover\\:text-gray-300:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-gray-300)}}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}", La = "[HawkAI Assistant]", Ra = (...e) => {
3964
- console.error(La, ...e);
3965
- }, za = !1, Ba = (e) => {
3989
+ }), Ra = "/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--radius-sm:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-bounce:bounce 1s infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#333;--color-primary-hover:#444}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}::marker{color:currentColor}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-6{right:calc(var(--spacing) * 6)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-24{bottom:calc(var(--spacing) * 24)}.left-0{left:calc(var(--spacing) * 0)}.left-6{left:calc(var(--spacing) * 6)}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-20{height:calc(var(--spacing) * 20)}.h-21{height:calc(var(--spacing) * 21)}.max-h-10{max-height:calc(var(--spacing) * 10)}.max-h-32{max-height:calc(var(--spacing) * 32)}.w-3{width:calc(var(--spacing) * 3)}.w-5{width:calc(var(--spacing) * 5)}.w-10{width:calc(var(--spacing) * 10)}.w-14{width:calc(var(--spacing) * 14)}.w-32{width:calc(var(--spacing) * 32)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-25{max-width:calc(var(--spacing) * 25)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-\\[min\\(90\\%\\,900px\\)\\]{max-width:min(90%,900px)}.max-w-full{max-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.animate-bounce{animation:var(--animate-bounce)}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-br-sm{border-bottom-right-radius:var(--radius-sm)}.rounded-bl-sm{border-bottom-left-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-solid{--tw-border-style:solid;border-style:solid}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-primary{background-color:var(--color-primary)}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-primary{color:var(--color-primary)}.text-white{color:var(--color-white)}.text-white\\/90{color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.text-white\\/90{color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow-lg\\/30{--tw-shadow-alpha:30%;--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,oklab(0% 0 0/.3)), 0 4px 6px -4px var(--tw-shadow-color,oklab(0% 0 0/.3));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-black\\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.last\\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}@media (hover:hover){.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\\:text-blue-800:hover{color:var(--color-blue-800)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:opacity-90:hover{opacity:.9}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-primary:focus{--tw-ring-color:var(--color-primary)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}.disabled\\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\\:hover\\:bg-primary:disabled:hover{background-color:var(--color-primary)}.disabled\\:hover\\:bg-transparent:disabled:hover{background-color:#0000}}@media (width>=40rem){.sm\\:inset-x-auto{inset-inline:auto}.sm\\:top-auto{top:auto}.sm\\:right-6{right:calc(var(--spacing) * 6)}.sm\\:left-6{left:calc(var(--spacing) * 6)}.sm\\:h-160{height:calc(var(--spacing) * 160)}.sm\\:w-120{width:calc(var(--spacing) * 120)}}.dark\\:border-gray-700:where([data-theme=dark],[data-theme=dark] *){border-color:var(--color-gray-700)}.dark\\:bg-gray-800:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-gray-800)}.dark\\:bg-gray-900:where([data-theme=dark],[data-theme=dark] *){background-color:var(--color-gray-900)}.dark\\:text-blue-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-blue-400)}.dark\\:text-gray-100:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-100)}.dark\\:text-gray-200:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-200)}.dark\\:text-gray-300:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-300)}.dark\\:text-gray-400:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-400)}.dark\\:text-gray-500:where([data-theme=dark],[data-theme=dark] *){color:var(--color-gray-500)}.dark\\:text-white:where([data-theme=dark],[data-theme=dark] *){color:var(--color-white)}.dark\\:ring-white\\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\\:ring-white\\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}@media (hover:hover){.dark\\:hover\\:bg-gray-800:where([data-theme=dark],[data-theme=dark] *):hover{background-color:var(--color-gray-800)}.dark\\:hover\\:text-blue-300:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-blue-300)}.dark\\:hover\\:text-gray-300:where([data-theme=dark],[data-theme=dark] *):hover{color:var(--color-gray-300)}}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}", za = !1, Ba = (e) => {
3966
3990
  if (!(typeof e != "object" || !e || Object.isFrozen(e))) {
3967
3991
  Object.freeze(e);
3968
3992
  for (let t of Object.values(e)) Ba(t);
3969
3993
  }
3970
3994
  }, Va = (e) => {
3971
3995
  let t = [];
3972
- if ((!e.apiUrl || typeof e.apiUrl != "string") && t.push("apiUrl"), (!e.agentId || typeof e.agentId != "string") && t.push("agentId"), t.length > 0) throw Error(`[HawkAI Assistant] invalid or missing configuration properties: ${t.join(", ")}`);
3996
+ if ((!e.apiUrl || typeof e.apiUrl != "string") && t.push("apiUrl"), (!e.accountId || typeof e.accountId != "string") && t.push("accountId"), (!e.agentId || typeof e.agentId != "string") && t.push("agentId"), t.length > 0) throw Error(`[HawkAI Assistant] invalid or missing configuration properties: ${t.join(", ")}`);
3973
3997
  }, Ha = () => {
3974
3998
  let e = new CSSStyleSheet();
3975
- e.replaceSync(Ia.replace(/:root/gu, ":host"));
3999
+ e.replaceSync(Ra.replace(/:root/gu, ":host"));
3976
4000
  let t = [];
3977
4001
  for (let n of Array.from(e.cssRules)) n instanceof CSSPropertyRule && n.initialValue && t.push(`${n.name}: ${n.initialValue}`);
3978
4002
  t.length > 0 && e.insertRule(`:host { ${t.join("; ")} }`);
@@ -3990,17 +4014,17 @@ var wa = {
3990
4014
  let t = new CSSStyleSheet();
3991
4015
  t.replaceSync(e.ui.styles), i.push(t);
3992
4016
  }
3993
- if (r.adoptedStyleSheets = i, _e(y(Fa, { initialTurns: t }), r), e.ui?.stylesheetUrl) try {
4017
+ if (r.adoptedStyleSheets = i, _e(y(La, { initialTurns: t }), r), e.ui?.stylesheetUrl) try {
3994
4018
  let t = await (await fetch(e.ui.stylesheetUrl)).text(), n = new CSSStyleSheet();
3995
4019
  n.replaceSync(t), r.adoptedStyleSheets = [...r.adoptedStyleSheets, n];
3996
4020
  } catch {
3997
- Ra("Failed to load external stylesheet.");
4021
+ ka("Failed to load external stylesheet.");
3998
4022
  }
3999
4023
  };
4000
4024
  if (e.loadConfigFromApi === !1) try {
4001
4025
  t(await Je());
4002
4026
  } catch (e) {
4003
- Ra(e);
4027
+ ka(e);
4004
4028
  }
4005
4029
  else try {
4006
4030
  let n = await qe();
@@ -4009,7 +4033,7 @@ var wa = {
4009
4033
  ...e.ui
4010
4034
  }, t(await Je()));
4011
4035
  } catch (e) {
4012
- Ra(e);
4036
+ ka(e);
4013
4037
  }
4014
4038
  }, Wa = (e) => {
4015
4039
  F.setActorId?.(e);
package/dist/types.d.ts CHANGED
@@ -6,6 +6,9 @@ export interface RenderToolData<TInput> {
6
6
  export interface RenderToolHelpers {
7
7
  sendMessage: (text: string) => Promise<void>;
8
8
  }
9
+ export interface ToolExecuteOptions {
10
+ signal?: AbortSignal;
11
+ }
9
12
  export type RenderToolResult = import('preact').ComponentChild | HTMLElement | null;
10
13
  export type AsyncRenderToolResult = RenderToolResult | Promise<RenderToolResult>;
11
14
  export interface Tool<TInput, TOutput> {
@@ -16,7 +19,7 @@ export interface Tool<TInput, TOutput> {
16
19
  properties: Record<string, unknown>;
17
20
  required?: string[];
18
21
  };
19
- execute: (input: TInput) => Promise<TOutput>;
22
+ execute: (input: TInput, options?: ToolExecuteOptions) => Promise<TOutput>;
20
23
  render?: (data: RenderToolData<TInput>, helpers: RenderToolHelpers) => AsyncRenderToolResult;
21
24
  }
22
25
  export type AnyTool = Tool<any, any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bridgeline-digital/hawkai-assistant",
3
- "version": "1.0.0-beta.2",
3
+ "version": "1.0.0-beta.3",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@10.33.0",
6
6
  "publishConfig": {
@@ -20,6 +20,8 @@
20
20
  "dev": "vite",
21
21
  "build": "tsc -b && vite build && vite build --config vite.library.config.ts",
22
22
  "preview": "vite preview",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
23
25
  "lint": "biome check --fix .",
24
26
  "prepare": "husky || true",
25
27
  "prepack": "pnpm build",
@@ -42,13 +44,16 @@
42
44
  "@biomejs/biome": "^2.4.15",
43
45
  "@preact/preset-vite": "^2.10.5",
44
46
  "@tailwindcss/vite": "^4.3.0",
47
+ "@testing-library/preact": "^3.2.4",
45
48
  "@types/dompurify": "^3.2.0",
46
49
  "@types/node": "^24.12.4",
47
50
  "husky": "^9.1.7",
51
+ "jsdom": "^29.1.1",
48
52
  "lint-staged": "^17.0.5",
49
53
  "tailwindcss": "^4.3.0",
50
54
  "typescript": "~6.0.3",
51
55
  "vite": "^8.0.13",
52
- "vite-plugin-dts": "^5.0.1"
56
+ "vite-plugin-dts": "^5.0.1",
57
+ "vitest": "^4.1.8"
53
58
  }
54
59
  }