react-ai-agent 1.5.8 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/ui.css +1 -1
- package/index.d.ts +24 -6
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react"),t=require("react-syntax-highlighter"),s=require("react/jsx-runtime"),a=require("@tanstack/react-virtual"),r=require("streamdown"),n=require("react-markdown"),i=require("framer-motion");function o(e){return e&&e.__esModule?e:{default:e}}var c=o(e),l=o(n);class d{constructor(e,t={}){this.tokenManager=e,this.abortController=null,this.config={uploadUrl:"https://api.oblien.com/ai/chat/upload",chatUrl:"https://api.oblien.com/ai/chat/send",historyUrl:"https://api.oblien.com/ai/session/history",prepareSessionUrl:"https://api.oblien.com/ai/session/prepare",...t}}setConfig(e){this.config={...this.config,...e}}async getToken(){return await this.tokenManager.getAccessToken()}getSessionId(){return this.tokenManager.getSessionId()}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}async uploadFiles(e,t){if(!e?.length)return[];const s=await this.getToken(),a=new FormData;e.forEach((e,t)=>{a.append("files",e.file,e.name)});const r=await fetch(this.config.uploadUrl,{method:"POST",headers:{Authorization:"Bearer "+s},body:a,signal:t});if(!r.ok)throw Error("File upload failed: "+r.status);return(await r.json()).uploadId}async sendMessage({message:e,context:t,attachedFiles:s,uploadId:a,sessionId:r,allowThinking:n},i=null){this.abort();try{this.abortController=new AbortController;const l=this.abortController.signal,d=await this.getToken();if(!d)throw Error("No access token available");if(!(r=r||this.getSessionId()))throw Error("No session ID available");s?.length>0&&!a&&(a=await this.uploadFiles(s,l));const h=await fetch(this.config.chatUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:i?"text/event-stream":"application/json",Authorization:"Bearer "+d},body:JSON.stringify({message:e,context:t,uploadId:a,sessionId:r,allowThinking:n}),signal:l});if(!h.ok){let e=null;try{e=await h.json()}catch(o){}const t={status:!1,error:e?.error||"HTTP error! status: "+h.status,message:e?.message||"Server returned "+h.status,limit:e?.limit,...e};return i&&i(JSON.stringify({event:"stream_error",data:{errorType:e?.error||"http_error",error:t.error,message:t.message,limit:t.limit}})),t}if(!i)try{return{status:!0,data:await h.json()}}catch(c){return{status:!1,error:c.message}}if(!h.body)throw Error("ReadableStream not supported");const u=h.body.getReader(),g=new TextDecoder;let m="";for(;;)try{const{value:e,done:t}=await u.read();if(t){i(JSON.stringify({event:"ai_response_end",data:{status:"end"}}));break}m+=g.decode(e,{stream:!0});const s=m.split("\n");m=s.pop()||"";for(const a of s)a.trim()&&i(a)}catch(c){i(JSON.stringify({event:"stream_error",data:{errorType:"stream_error",error:c.message,message:"Error reading stream"}}));break}return{status:!0}}catch(c){const e={status:!1,error:c.message,message:"AbortError"===c.name?"Request aborted":"Failed to send message"};return i&&i(JSON.stringify({event:"stream_error",data:{errorType:"connection_error",error:e.error,message:e.message}})),e}}async getHistory({offset:e=0,limit:t=20,sessionId:s}={}){try{const a=await this.getToken();if(!(s=s||this.getSessionId()))throw Error("No session ID available");const r=await fetch(this.config.historyUrl+`?offset=${e}&limit=${t}&sessionId=${s}`,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer "+a}});if(!r.ok){const e=await r.json().catch(()=>({error:"Failed to load history"}));return{error:e.error||"Failed to load history",message:e.message}}return await r.json()}catch(a){return{error:a.message,message:"Failed to load chat history"}}}async prepareSession(e,t){try{const s=await this.getToken();if(!(t=t||this.getSessionId()))throw Error("No session ID available");const a=await fetch(this.config.prepareSessionUrl+"?sessionId="+t,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+s},body:JSON.stringify(e)});if(!a.ok){const e=await a.json().catch(()=>({error:"Failed to prepare session"}));return{error:e.error||"Failed to prepare session",message:e.message}}return await a.json()}catch(s){return{error:s.message,message:"Failed to prepare session"}}}}const h=new class{constructor({socketUrl:e}={}){this.socket=null,this.listeners=new Map,this.bufferedEvents=new Map,this.bufferableEventTypes=new Set([]),this.reconnectAttempts=0,this.maxReconnectAttempts=5e3,this.reconnectTimeout=3e3,this.socketUrl=e,this.requireAppRunning=null}setSocketUrl(e){this.socketUrl=e}_processBinaryData(e){this.notifyListeners("binary",{data:e})}async connect(e,t=[]){return this.socket&&this.disconnect(),e||(e=await getToken()),new Promise(async(s,a)=>{try{const a=new URL(this.socketUrl+"?token="+e+"&"+t.join("&"));this.socket=new WebSocket(a),this.socket.onopen=()=>{this.reconnectAttempts=0,this.reconnectTimeout=3e3,this.notifyListeners("connect",{connected:!0}),s(!0)},this.socket.onmessage=async e=>{try{if(e.data instanceof Blob){const t=new FileReader;return t.onload=()=>{this._processBinaryData(t.result)},void t.readAsArrayBuffer(e.data)}if(e.data instanceof ArrayBuffer)return void this._processBinaryData(e.data);if("string"==typeof e.data){const t=JSON.parse(e.data);if(this._checkPendingRequests(t))return;return this.notifyListeners("message",t),this.requireAppRunning?.events.includes(t.type)&&!this.listeners.has(t?.type)&&t?.type&&this.requireAppRunning&&"running"!==this.requireAppRunning?.status&&await this.requireAppRunning.callback(t),void(t.type&&this.notifyListeners(t.type,t))}}catch(t){}},this.socket.onclose=s=>{this.notifyListeners("disconnect",{code:s.code,reason:s.reason}),1e3!==s.code&&this.attemptReconnect(e,t)},this.socket.onerror=e=>{this.notifyListeners("error",e)}}catch(r){}})}disconnect(){this.socket&&(this.notifyListeners("close",{code:1e3,reason:"User disconnected"}),this.socket.close(1e3,"User disconnected"),this.socket=null)}attemptReconnect(e,t){this.maxReconnectAttempts>this.reconnectAttempts&&this.socket?(this.reconnectAttempts++,this.notifyListeners("reconnectAttempt",{attempts:this.reconnectAttempts}),setTimeout(()=>{this.connect(e,t)},this.reconnectTimeout)):this.notifyListeners("reconnectFailed",{attempts:this.reconnectAttempts})}isConnected(){return this.socket&&this.socket.readyState===WebSocket.OPEN}sendAsync(e,t=3e4){return new Promise((s,a)=>{if(!this.isConnected())return a(Error("WebSocket is not connected"));const r=e.requestId||`req_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,n={...e,requestId:r};this.pendingRequests||(this.pendingRequests=new Map),this.pendingRequests.set(r,{resolve:s,reject:a,timeoutId:setTimeout(()=>{this.pendingRequests.has(r)&&(this.pendingRequests.delete(r),a(Error(`Request ${r} timed out after ${t}ms`)))},t)}),this.send(n)})}_checkPendingRequests(e){if(!this.pendingRequests||!e.requestId)return!1;const t=this.pendingRequests.get(e.requestId);return!!t&&(clearTimeout(t.timeoutId),this.pendingRequests.delete(e.requestId),t.resolve(e),!0)}send(e){return!!this.isConnected()&&(this.socket.send(JSON.stringify(e)),!0)}on(e,t){return this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t),this.bufferedEvents.has(e)&&(this.bufferedEvents.get(e).forEach(e=>{try{t(e)}catch(s){}}),this.bufferedEvents.delete(e)),()=>this.off(e,t)}off(e,t){if(!this.listeners.has(e))return;const s=this.listeners.get(e),a=s.indexOf(t);-1!==a&&s.splice(a,1),0===s.length&&this.listeners.delete(e)}notifyListeners(e,t){const s=this.listeners.has(e);if(!s&&this.bufferableEventTypes.has(e))return this.bufferedEvents.has(e)||this.bufferedEvents.set(e,[]),void this.bufferedEvents.get(e).push(t);s&&this.listeners.get(e).forEach(e=>{try{e(t)}catch(s){}})}setAppServerStatus(e){this.requireAppRunning.status=e}setRequireAppRunning(e,t,s){return this.requireAppRunning={events:e,callback:t,status:s},()=>{this.requireAppRunning=null}}};class u{constructor(){this.buffer=""}feed(e){if(!e)return[];const t=this._tryDirectJson(e);if(t.length)return t;const s=this._tryDirectSSE(e);return s.length?s:(this.buffer+=e,this._fallbackExtract())}_tryDirectJson(e){const t=[];try{const s=JSON.parse(e);return s&&"object"==typeof s&&t.push(s),t}catch{}return e.includes("{")&&e.includes("}")?this._fallbackExtractFromText(e):[]}_tryDirectSSE(e){const t=[];for(let s of e.split("\n")){if(s=s.trim(),!s.startsWith("data:"))continue;const e=s.slice(5).trim();try{const s=JSON.parse(e);s&&"object"==typeof s&&t.push(s)}catch{}}return t}_fallbackExtract(){const e=this._fallbackExtractFromText(this.buffer);for(const t of e){const e=JSON.stringify(t),s=this.buffer.indexOf(e);-1!==s&&(this.buffer=this.buffer.slice(0,s)+this.buffer.slice(s+e.length))}return e}_fallbackExtractFromText(e){const t=[];let s=-1,a=0,r=!1,n=!1;for(let i=0;e.length>i;i++){const o=e[i];if(n)n=!1;else if("\\"===o)n=!0;else if('"'===o)r=!r;else if(!r)if("{"===o)0===a&&(s=i),a++;else if("}"===o&&(a--,0===a&&-1!==s)){const a=e.slice(s,i+1);try{const e=JSON.parse(a);t.push(e)}catch{}s=-1}}return t}}class g{constructor(){this.jsonStreamParser=new u}parseJsonStream(e){return this.jsonStreamParser.feed(e)}processRawChunk(e,t){try{const s=this.parseJsonStream(e);if(!s.length)return;for(const e of s)t(e.error||e.errorType?"stream_error":"end"===e.status||"end"===e.type||"ai_response_end"===e.event?"response_end":"response",e)}catch(s){}}}class m{constructor(e){this.chatApi=e,this.streamProcessor=new g,this.eventHandlers=new Map,this.mode=null}setMode(e="sse",t=null){this.mode=e}on(e,t){return this.eventHandlers.has(e)||this.eventHandlers.set(e,[]),this.eventHandlers.get(e).push(t),()=>{const s=this.eventHandlers.get(e);if(s){const e=s.indexOf(t);e>-1&&s.splice(e,1)}}}off(e,t){const s=this.eventHandlers.get(e);if(s){const e=s.indexOf(t);e>-1&&s.splice(e,1)}}emit(e,t){const s=this.eventHandlers.get(e);s&&s.forEach(e=>{try{e(t)}catch(s){}})}abort(){}send(e){"websocket"===this.mode&&h&&h.send(e)}startStream(e,t,s){return this.chatApi.sendMessage(e,e=>{if(t&&s)try{t(e)}catch(a){}this.streamProcessor.processRawChunk(e,(r,n)=>{if(t&&!s)try{t(e)}catch(a){}this.emit(r,n)})})}clear(){this.eventHandlers.clear()}}class p{constructor(){this.accessToken=null,this.refreshToken=null,this.tokenExpiry=null,this.refreshCallback=null,this.sessionId=null}decodeJWT(e){try{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),s=decodeURIComponent(atob(t).split("").map(e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)).join(""));return JSON.parse(s)}catch(t){return null}}isTokenExpired(e,t=30){if(!e)return!0;const s=this.decodeJWT(e);if(!s||!s.exp)return!0;const a=1e3*s.exp;return Date.now()>=a-1e3*t}setRefreshCallback(e){this.refreshCallback=e}async setAuth({accessToken:e,refreshToken:t,expiresIn:s,sessionId:a}){this.accessToken=e,this.refreshToken=t,this.sessionId=a;const r=this.decodeJWT(e);r&&r.exp?(this.tokenExpiry=1e3*r.exp,this.tokenExpiry<Date.now()+3e4&&await this.refreshTokens()):s&&(this.tokenExpiry=Date.now()+1e3*s)}async getAccessToken(){if(!this.accessToken)throw Error("No access token available. Initialize tokens first.");return this.isTokenExpired(this.accessToken,30)&&await this.refreshTokens(),this.accessToken}getSessionId(){return this.sessionId}async refreshTokens(){if(!this.refreshCallback)throw Error("No refresh callback provided");if(!this.refreshToken)throw Error("No refresh token available");try{const e=await this.refreshCallback(this.refreshToken);if(!e||!e.accessToken)throw Error("Invalid refresh response");return this.setAuth({accessToken:e.accessToken,refreshToken:e.refreshToken||this.refreshToken,expiresIn:e.expiresIn,sessionId:e.sessionId||this.sessionId}),this.accessToken}catch(e){throw this.clear(),e}}hasTokens(){return!!this.accessToken}clear(){this.accessToken=null,this.refreshToken=null,this.tokenExpiry=null,this.sessionId=null}}class f{constructor(){this.messages=[],this.messageIndex=new Map,this.listeners=new Set}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}_notify(){this.listeners.forEach(e=>e([...this.messages]))}_rebuildIndex(){this.messageIndex.clear(),this.messages.forEach((e,t)=>{this.messageIndex.set(e.messageId,t)})}addMessage(e){const t={...e,messageId:e.messageId||this._generateId(),timestamp:e.timestamp||Date.now(),uniqueKey:`msg-${e.messageId}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`};return this.messages.push(t),this.messageIndex.set(t.messageId,this.messages.length-1),this._notify(),t}updateMessage(e,t,s={}){const a=this.messageIndex.get(e);if(void 0===a)return null;const r=this.messages[a],n={};if(Object.entries(t).forEach(([e,t])=>{n[e]="function"==typeof t?t(r[e]):t}),s.silent)return Object.assign(this.messages[a],n),this.messages[a];const i=n.hasOwnProperty("isLive")||n.hasOwnProperty("isFinished")||n.hasOwnProperty("isThinkingFinished")||n.hasOwnProperty("statusType")||n.hasOwnProperty("sender")||n.hasOwnProperty("type")||n.hasOwnProperty("text");return this.messages[a]={...r,...n,...i&&{uniqueKey:`msg-${e}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}},this._notify(),this.messages[a]}insertMessage(e,t="end"){const s={...e,messageId:e.messageId||this._generateId(),timestamp:e.timestamp||Date.now(),uniqueKey:`msg-${e.messageId}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`};return"start"===t||0===t?this.messages.unshift(s):"end"!==t&&this.messages.length>t?this.messages.splice(t,0,s):this.messages.push(s),this._rebuildIndex(),this._notify(),s}insertMessages(e,t="end"){const s=e.map(e=>({...e,messageId:e.messageId||this._generateId(),timestamp:e.timestamp||Date.now(),uniqueKey:e.uniqueKey||`msg-${e.messageId}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}));return"start"===t||0===t?this.messages.unshift(...s):"end"!==t&&this.messages.length>t?this.messages.splice(t,0,...s):this.messages.push(...s),this._rebuildIndex(),this._notify(),s}removeMessage(e){const t=this.messageIndex.get(e);return void 0!==t&&(this.messages.splice(t,1),this._rebuildIndex(),this._notify(),!0)}getMessage(e){const t=this.messageIndex.get(e);return void 0!==t?this.messages[t]:null}hasMessage(e){return this.messageIndex.has(e)}getAllMessages(){return[...this.messages]}clear(){this.messages=[],this.messageIndex.clear(),this._notify()}setMessages(e){this.messages=e.map(e=>({...e,uniqueKey:e.uniqueKey||`msg-${e.messageId}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`})),this._rebuildIndex(),this._notify()}_generateId(){return`msg-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}get count(){return this.messages.length}}class x{constructor(e,t){this.messageManager=e,this.statusRegistry=t,this.activeStreamingMessages=new Map}handleUserMessage({messageId:e,text:t,attachedFiles:s=[],...a}){return this.messageManager.addMessage({messageId:e||this.messageManager._generateId("user"),sender:"user",type:"user",text:t,attachedFiles:s,...a})}incrementChunkIndex(e){const t=this._getState(e);return t.chunkIndex+=1,t.chunkIndex}markTypeProcessed(e,t){this._getState(e).lastProcessedType=t}shouldFinishThinking(e){const t=this._getState(e);return t.hasChunk&&t.hasThinking&&!t.thinkingFinished}markThinkingFinished(e){const t=this._getState(e),s=e+"-thinking";t.thinkingFinished=!0,t.hasChunk=!0,t.hasThinking&&this.messageManager.hasMessage(s)&&this.messageManager.updateMessage(s,{isLive:!1,isThinkingFinished:!0})}}class b{constructor(){this.handlers=new Map,this.globalHandlers=[],this.streamForwarders=new Map}register(e,t,s={}){this.handlers.has(e)||this.handlers.set(e,[]);const a={handler:t,filter:s};return this.handlers.get(e).push(a),()=>{const t=this.handlers.get(e);if(t){const e=t.indexOf(a);e>-1&&t.splice(e,1)}}}registerGlobal(e,t={}){const s={handler:e,filter:t};return this.globalHandlers.push(s),()=>{const e=this.globalHandlers.indexOf(s);e>-1&&this.globalHandlers.splice(e,1)}}_matchesFilter(e,t){return!t.instanceId||e.instanceId===t.instanceId}async handle(e){const{status:t,messageId:s}=e,a=t?.type||e.type;await Promise.all(this.globalHandlers.filter(t=>this._matchesFilter(e,t.filter)).map(t=>Promise.resolve(t.handler(e)).catch(e=>{})));const r=this.handlers.get(a)||[];await Promise.all(r.filter(t=>this._matchesFilter(e,t.filter)).map(t=>Promise.resolve(t.handler(e)).catch(e=>{}))),"started"===t?.state||"in_progress"===t?.state?this._startStreamForwarding(s,a,e):"finished"!==t?.state&&"error"!==t?.state||this._stopStreamForwarding(s,a,e)}registerStreamForwarder(e){const t=Math.random().toString(36).substring(2,9);return this.streamForwarders.set(t,{forwarder:e,active:!1,messageId:null}),{id:t,stop:()=>this.streamForwarders.delete(t)}}forwardStream(e,t){this.streamForwarders.forEach(s=>{if(s.active&&s.messageId===e)try{"chunk"===t.type&&s.forwarder({...t,statusType:s.statusType})}catch(a){}})}_startStreamForwarding(e,t,s){this.streamForwarders.forEach(a=>{a.active=!0,a.messageId=e,a.statusType=t,a.forwarder.onStart&&a.forwarder.onStart({...s,statusType:t})})}_stopStreamForwarding(e,t,s){this.streamForwarders.forEach(a=>{a.messageId===e&&(a.active=!1,a.statusType=null,a.forwarder.onEnd&&a.forwarder.onEnd({...s,statusType:t}))})}clear(){this.handlers.clear(),this.globalHandlers=[],this.streamForwarders.clear()}}const y=new b;function w(){return y}const k={current:{}},v=new Map;class j{constructor(e){this.messageId=e,this.fullText="",this.displayIndex=0,this.previousDisplayIndex=0,this.isTyping=!1,this.isComplete=!1,this.isCleanedUp=!1,this.intervalId=null,this.mode=k.current.mode||"char",this.speed=k.current.speed||50,this.batchSize=k.current.batchSize||5,this.listeners=new Set}setFullText(e,t){this.fullText+=e||"",!this.isTyping&&this.fullText.length>0&&this.startTyping(),t||!1!==this.isComplete||(this.isComplete=!0)}waitForAnimation(){return new Promise(e=>{if(this.displayIndex>=this.fullText.length)return void e();const t=setInterval(()=>{this.fullText.length>this.displayIndex||(clearInterval(t),e())},50)})}startTyping(){this.isTyping||(this.isTyping=!0,this.intervalId=setInterval(()=>{if(this.fullText.length>this.displayIndex){const e=this.getNextIncrement();this.previousDisplayIndex=this.displayIndex,this.displayIndex=Math.min(this.displayIndex+e,this.fullText.length),this.notifyListeners()}else this.isComplete&&(this.stopTyping(),this.onComplete&&(this.onComplete(),this.onComplete=null))},1e3/this.speed))}getNextIncrement(){switch(this.mode){case"char":default:return 1;case"word":{let e=this.displayIndex+1;for(;this.fullText.length>e;){const t=this.fullText[e];if(" "===t||"\n"===t||/[.,!?;:]/.test(t))return e-this.displayIndex+1;e++}return this.fullText.length-this.displayIndex}case"batch":return this.batchSize}}stopTyping(){this.isTyping=!1,this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}subscribe(e,t={}){const s={callback:e,newOnly:t.newOnly||!1};return this.listeners.add(s),()=>this.listeners.delete(s)}notifyListeners(){const e=this.fullText.slice(this.previousDisplayIndex,this.displayIndex),t=this.fullText.slice(0,this.displayIndex);this.listeners.forEach(s=>{s.callback(s.newOnly?e:t)})}cleanup(){this.isCleanedUp||(this.isCleanedUp=!0,this.stopTyping(),this.listeners.clear(),v.delete(this.messageId))}}function S(e){return v.get(e)}class M{constructor(){}async processChunk(e,t=null,s,a){const r=e.messageId,n=function(e){if(v.has(e))return v.get(e);const t=new j(e);return v.set(e,t),t}(e.messageId);if(n.setFullText(e.text||"",e.isLive),s){const s=e.from&&this.forwardingManager?.handlers[e.from],a=t&&this.forwardingManager?this.forwardingManager.getSession(t):null,n=s&&a&&e.from===a?.action;e.from&&!s&&this.forwardingManager&&(this._warnedActions||(this._warnedActions=new Set),this._warnedActions.has(e.from)||this._warnedActions.add(e.from));const i=s?this.forwardingManager.handlers[e.from]:null,o=e.from&&"replace"===(i?.mode||"replace");if(n){const s=this.forwardingManager.isAnimated(t),a=this.forwardingManager.getSubscriptionMode(t);if(s){const s=S(r);s.hasForwarder||(s.hasForwarder=!0,s.subscribe(s=>{this.forwardingManager.forwardChunk(t,s,e.isLive)},{newOnly:"delta"===a}),s.onComplete=()=>{this.forwardingManager.cleanupSession(t)})}else this.forwardingManager.forwardChunk(t,e.text||"",e.isLive)}if(o)return}this.messageHandlers.messageManager.hasMessage(r)?this.messageHandlers.messageManager.updateMessage(r,{text:t=>t+(e.text||"")},{silent:!0}):this.messageHandlers.messageManager.addMessage({messageId:r,sender:"ai",type:"chunk",text:e.text||"",isLive:!0,tokens:e.tokens}),await n.waitForAnimation()}async processHolding(e){}async processThinking(e){const t=e.messageId+"-thinking";this.messageHandlers.messageManager.hasMessage(t)?this.messageHandlers.messageManager.updateMessage(t,{text:t=>t+(e.text||"")}):this.messageHandlers.messageManager.addMessage({messageId:t,sender:"ai",type:"thinking",text:e.text||"",isLive:!0,timestamp:Date.now()})}async finishThinking(e){const t=e.messageId+"-thinking",s=this.messageHandlers.messageManager.getMessage(t);if(s){const e=Date.now();this.messageHandlers.messageManager.updateMessage(t,{isLive:!1,finalized:!0,duration:parseFloat(((e-(s.timestamp||e))/1e3).toFixed(1)),endTimestamp:e})}}async finishChunk(e){const t=e.messageId,s=this.messageHandlers.messageManager.getMessage(t);s&&this.messageHandlers.messageManager.updateMessage(t,{isLive:!1,finalized:!0,text:s.text||""})}async processStatus(e,t=null){const s=e.taskId||e.messageId;if(!s)return;if(this.messageHandlers.statusRegistry)try{await this.messageHandlers.statusRegistry.handle({...e,messageId:s,instanceId:t,status:{type:e.action||e.type,state:"started"===e.type?"started":"finished"===e.type?"finished":"in_progress",data:e.data}})}catch(r){}const a=this.messageHandlers.messageManager.hasMessage(s);"started"!==e.type&&"status"!==e.type?"finished"!==e.type?a?this.messageHandlers.messageManager.updateMessage(s,{statusType:e.type,data:e.data,isFinished:e.type.includes("end")||"finished"===e.type}):this.messageHandlers.messageManager.addMessage({messageId:s,sender:"ai",type:"status",action:e.action,statusType:e.type,data:e.data,isFinished:e.type.includes("end")||"finished"===e.type}):a&&this.messageHandlers.messageManager.updateMessage(s,{statusType:e.type,isFinished:!0}):a||this.messageHandlers.messageManager.addMessage({messageId:s,sender:"ai",type:"status",action:e.action,statusType:e.type,data:e.data,isFinished:!1})}}class N extends M{constructor(e,t,s,a=null){super(),this.messageHandlers=e,this.forwardingManager=t,this.queue=[],this.queueHistory=[],this.isProcessing=!1,this.lastMessageId=null,this.useForwarding=s,this.currentForwardingSession=null,this.onQueueComplete=null,this.instanceId=a}async process(){this.isProcessing=!0;const e=[...this.queue];this.queueHistory.push(...e),this.queue=[];for(let t=0;e.length>t;t++){const s=e[t],a=this.queueHistory.findIndex(e=>(e.messageId||e.taskId)==(s.messageId||s.taskId)),r=this.queueHistory[a-1];r&&!r.finalized&&(r.finalized=!0,await this.notifyPreviousItem(r)),await this.processItem(s)}this.isProcessing=!1,this.queue.length>0?this.process():(this.finalize(),this.onQueueComplete&&this.onQueueComplete())}filterData(e){return e}async addToQueue(e){const t=this.filterData(e);this.queue.push(t),this.isProcessing||this.process()}async notifyPreviousItem(e){"thinking"===e.type?await this.finishThinking(e):"chunk"===e.type&&await this.finishChunk(e)}async processItem(e){const{type:t}=e;e.messageId&&(this.lastMessageId=e.messageId);const s=e.action||e.data?.action,a=e.taskId||e.messageId;switch(this.forwardingManager&&this.useForwarding&&("started"===t&&s&&this.forwardingManager.startSession(a,s,this.instanceId)&&(this.currentForwardingSession=a),"finished"===t&&this.currentForwardingSession&&(this.forwardingManager.endSession(this.currentForwardingSession),this.currentForwardingSession=null),"end"===t&&this.currentForwardingSession&&(this.forwardingManager.endSession(this.currentForwardingSession),this.currentForwardingSession=null)),t){case"thinking":await this.processThinking(e);break;case"holding":await this.processHolding(e);break;case"chunk":await this.processChunk(e,this.currentForwardingSession,this.useForwarding,this.forwardingManager.newOnly);break;case"started":case"finished":case"status":case"status_start":case"status_end":case"status_error":case"error":case"action":await this.processStatus(e,this.instanceId);break;case"end":await this.finalize(e)}}async clear(){this.queue=[],this.isProcessing=!1,v.forEach(e=>{e.stopTyping(),e.cleanup()}),this.currentForwardingSession&&this.forwardingManager&&(this.forwardingManager.endSession(this.currentForwardingSession),this.currentForwardingSession=null),this.onQueueComplete&&this.onQueueComplete()}async endResponse(){this.queueHistory=[]}async finalize(e){this.lastMessageId&&await this.finishChunk({messageId:this.lastMessageId}),this.isProcessing=!1,this.queue=[]}}let I=null;class C{constructor(e={}){this.initialHandlers={...e},this.dynamicHandlers={},this.handlers={...e},this.activeSessions=new Map}register(e,t,s={}){const a=s.instanceId?`${e}:${s.instanceId}`:e;return this.dynamicHandlers[a]={handler:t,mode:s.mode||"dual",animated:!1!==s.animated,subscriptionMode:s.subscriptionMode||"delta",instanceId:s.instanceId},this._rebuildHandlers(),()=>{delete this.dynamicHandlers[a],this._rebuildHandlers()}}_rebuildHandlers(){this.handlers={...this.initialHandlers},Object.assign(this.handlers,this.dynamicHandlers)}startSession(e,t,s=null){const a=s?`${t}:${s}`:null,r=a&&this.handlers[a]||this.handlers[t];return!(!r||r.instanceId&&r.instanceId!==s||(this.activeSessions.get(e)||this.activeSessions.set(e,{action:t,handler:r.handler,mode:r.mode,animated:r.animated,subscriptionMode:r.subscriptionMode,instanceId:r.instanceId,lastText:"",fullText:"",streamEnded:!1}),0))}endSession(e){const t=this.activeSessions.get(e);t&&(t.streamEnded=!0,t.animated||this.cleanupSession(e))}cleanupSession(e){const t=this.activeSessions.get(e);if(t){if(t.handler&&t.fullText)try{t.handler(null,t.fullText,{action:t.action,event:"end",isLive:!1})}catch(s){}this.activeSessions.delete(e)}}isActive(e){return this.activeSessions.has(e)}getSession(e){return this.activeSessions.get(e)}forwardChunk(e,t,s=!0){const a=this.activeSessions.get(e);if(!a)return!1;const r=t||"";if(0===r.length&&s)return!0;let n,i;"full"===a.subscriptionMode?(i=r,n=r):(a.fullText+=r,n=r,i=a.fullText);try{a.handler(n,i,{action:a.action,isLive:!a.streamEnded&&s,event:"chunk",subscriptionMode:a.subscriptionMode})}catch(o){}return!0}shouldReplace(e){const t=this.activeSessions.get(e);return t&&"replace"===t.mode}isAnimated(e){const t=this.activeSessions.get(e);return t&&t.animated}getSubscriptionMode(e){const t=this.activeSessions.get(e);return t?t.subscriptionMode:"delta"}getActiveSessions(){return Array.from(this.activeSessions.keys())}clearAll(){this.activeSessions.clear()}}function T(e){return I?e&&Object.keys(e).length>0&&(I.initialHandlers={...e},I._rebuildHandlers()):I=new C(e),I}const F={'code[class*="language-"]':{color:"#d7d5d1",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",fontSize:"14px",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",background:"#1e1e1e",borderRadius:"15px"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#0e0c0a"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#0e0c0a"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#0e0c0a"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#0e0c0a"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#0e0c0a"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#0e0c0a"},'code[class*="language-"]::selection':{textShadow:"none",background:"#0e0c0a"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#0e0c0a"},':not(pre) > code[class*="language-"]':{color:"white",background:"#222222",padding:"0.1em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"#545053"},string:{color:"#838083"},number:{color:"#838083"},builtin:{color:"#838083"},char:{color:"#838083"},constant:{color:"#838083"},variable:{color:"#838083"},"class-name":{color:"#D7D5D1"},function:{color:"#D7D5D1"},tag:{color:"#838083"},"attr-name":{color:"#D7D5D1"},selector:{color:"#838083"},important:{fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}},E=e=>{return e&&(t=c.default.Children.toArray(e).map(e=>"string"==typeof e?e:e?.props?.children?e.props.children+"":"").join(""))&&/[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]/.test(t)?"rtl":"ltr";var t},R=e.createContext(null),_=e.createContext({});function A(){return e.useContext(_)}const q={send:"/arrow up md-61-1696832363.png",attach:"/attach-1-1662364367.png",public:"/world-229-1658433759.png",arrowDown:"/chevron down-4-1696832126.png",close:"/close remove-802-1662363936.png",add:"/plus 4-12-1662493809.png",logs:"/website terminal-62-1658431404.png",terminal:"/terminal-184-1658431404.png",minimize:"/chevron down-4-1696832126.png",removeBold:"/delete-29-1661490994.png",info:"/info menu-42-1661490994.png",leftSidebar:"/grid interface-166-1658433281.png",file:"/document-180-1658431575.png",folder:"/folder file-32-1661323044.png",tick:"/check circle-3-1660219236.png",square:"/square-38-1666783764.png",search:"/search-123-1658435124.png",check:"/checkmark-7-1660219236.png",lock:"/lock-62-1691989601.png",discord:"/discord-141-1693375491.png",twitter:"/x.com-179-1693375584.png",refresh:"/refresh right-64-1696832204.png",back:"/arrow right md-49-1696832059.png",home:"/home-123-1658433759.png",forward:"/arrow left md-33-1696832059.png",newTab:"/new tab-123-1658433759.png",devTools:"/developer tools-123-1658433759.png",externalLink:"/External_link_HtLszLDBXqHilHK674zh2aKoSL7xUhyboAzP.png",deploy:"/space rocket-88-1687505465.png",projects:"/git fork-163-1658431404.png",settings:"/setting-100-1658432731.png",logout:"/Logout_q9Ri9V6YI29BipbKthCSXYDM0WoxMC05JTYO.png",notfound:"/search not found-92-1666688362.png",chatai:"/chat intelligence-6-1686046192.png",credit:"/bank card-91-1658234909.png",question:"/question mark circle-29-1662452248.png",blank:"/code-15-1658431404.png",react:"/react-native-29-1693375583.png",nextjs:"/next js circle-172-1693375539.png",vue:"/vue-160-1693375217.png",angular:"/angular-62-1693375491.png",node:"/npm-183-1693375539.png",python:"/python-122-1662819152.png",mobile:"/iphone-36-1658434492.png",laravel:"/laravel-108-1693375539.png",php:"/php-7-1693375216.png",url:"/link-68-1692683696.png",grid:"/gallery view-155-1658433281.png",list:"/bulleted list-15-1692683663.png",download:"/Download_61W5ztaZuYZoYEY7utQW7FU1y4lMiUO2rHjg.png",upload:"/upload-123-1658433759.png",starfilled:"/star-31-1660810259.png",edit:"/pen-304-1658238246.png",globe:"/earth-30-1687505545.png",minus:"/minus 4-9-1660810450.png",switch:"/changing-330-1658238246.png",history:"/counter clockwise undo-46-1658435834.png",golang:"/Go_Logo_Blue.svg.png",github:"/github-8-1693375538.png",pull:"/git pull-170-1658431404.png",sync:"/update left-39-1696832255.png",error:"/error triangle-16-1662499385.png",reload:"/flash refresh-94-1658434699.png",filter:"/filter-25-1662364403.png",sets:"/setting-41-1662364403.png",read:"/eye-20-1691989638.png",index:"/database-27-1658237565.png",debug:"/terminal-184-1658431404.png",brain:"/brain-41-1686045820.png",command:"/command-147-1658431404.png",pdf:"/document pdf-66-1662364367.png",websocket:"/power outlet-81-1689918655.png",ai:"/ai chip-118-1686045593.png",dashboard:"/dashboard 6-8-1662364403.png",store:"/store-30-1662820309.png",icons:"/ui8-139-1693375584.png",build:"/tools-58-1662364403.png",linkedin:"/linkedin-113-1693375539.png",support:"/headphone-24-1663753435.png",nofee:"/snow%20bag-318-1672139659.png",anytime:"/circle%20clock-39-1658435834.png",free:"/bird-106-1678249964.png",cloud:"/cloud%20connect-56-1658236831.png",code:"/code-12-1658431404.png",screenshot:"/scan%20image-226-1658434699.png",pagecontent:"/web%20page%20download-36-1658436291.png",improve:"/ai%20neural%20share-142-1686045754.png",roadmap:"/roadmap-159-1681196175.png"},H={figma:"/icons/project/Figma-logo.svg.png",githubraw:"/icons/project/github-mark-white.png"},z=(e,t,a="#000",r={},n=!1)=>n?s.jsx("img",{src:H[e]?.replace(/ /g,"%20"),alt:e,style:{width:t,height:t,objectFit:"contain",...r}}):s.jsx("div",{style:{maskImage:`url('https://cdn.oblien.com/static/png-icons/${q[e]?.replace(/ /g,"%20")||e?.replace(/ /g,"%20")}')`,maskSize:"contain",maskRepeat:"no-repeat",maskPosition:"center",WebkitMaskSize:"contain",WebkitMaskRepeat:"no-repeat",WebkitMaskPosition:"center",width:t,height:t,backgroundColor:a,...r}}),D=({error:e})=>{const{welcome:t}=A(),a=(()=>{if(!e)return null;let t="";return t="string"==typeof e?e:e.message?e.message:e.error?"string"==typeof e.error?e.error:e.error.message||"An error occurred":"An unexpected error occurred",t})();return s.jsx("div",{className:"react-chat-agent-start-chat flex flex-col items-center justify-center h-full",children:"object"!=typeof t||t?.title?s.jsxs("div",{className:"react-chat-agent-start-chat-content text-center mb-8 flex flex-col items-center justify-center gap-2",children:[e&&s.jsx("span",{className:"react-chat-agent-start-chat-error-icon",children:z("error",70,"currentColor",{marginBottom:"10px"})}),s.jsx("h2",{className:"react-chat-agent-start-chat-title text-2xl font-light text-theme-primary mb-4",children:e?"Something went wrong":t?.title}),s.jsx("p",{className:"react-chat-agent-start-chat-description text-theme-muted mb-6 max-w-md text-base leading-relaxed",children:e?a:t?.description}),e&&e.type&&s.jsx("p",{className:"react-chat-agent-start-chat-error-type text-xs text-theme-tertiary mt-2 opacity-50",children:e.type.replace("_"," ")})]}):t})},L=({message:e,allowEdit:t=!0})=>{const a=[];return t&&a.push({icon:"edit",text:"Edit",onClick:()=>{}}),e.snapshot&&a.push({icon:"refresh",text:"Restore checkpoint",onClick:()=>{}}),s.jsxs("div",{className:"react-chat-agent-user-message flex flex-col mb-2",children:[s.jsx("div",{className:"react-chat-agent-user-message-bubble-wrapper flex justify-end mb-2",children:s.jsx("div",{className:"react-chat-agent-user-message-bubble bg-secondary text-theme-primary px-4 py-2 rounded-[20px] max-w-xs md:max-w-md",style:{wordBreak:"break-word"},children:s.jsx("p",{className:"react-chat-agent-user-message-text text-[16px] leading-[22px] tracking-wide",children:e.text})})}),s.jsx("div",{className:"react-chat-agent-user-message-actions flex justify-end gap-4",children:a.map((e,t)=>s.jsxs("button",{className:`react-chat-agent-user-message-action react-chat-agent-user-message-action-${e.icon} flex items-center gap-1 opacity-25`,onClick:e.onClick,children:[s.jsx("span",{className:"react-chat-agent-user-message-action-icon",children:z(e.icon,16,"currentColor")}),s.jsx("span",{className:"react-chat-agent-user-message-action-label text-[12px] font-[300] text-theme-primary",children:e.text})]},t))})]})},O=({message:t})=>{const{markdownComponents:a}=A(),[n,i]=e.useState("");return e.useEffect(()=>{if(t.finalized||!t.isLive)return void i(t.text||"");const e=S(t.messageId);if(e)return e.subscribe(e=>{i(e)});i(t.text||"")},[t.messageId,t.finalized,t.isLive,t.text]),s.jsx("div",{className:"react-chat-agent-ai-response mb-4 mx-auto",children:s.jsx("div",{className:"react-chat-agent-ai-content text-theme-primary prose prose-invert max-w-none",style:{wordBreak:"break-word"},children:s.jsx(r.Streamdown,{components:a,children:n})})})},P=({message:a,removeMessage:r})=>{const n=e.useRef(null),i=e.useRef(null),o=e.useRef(a.finalized),[c,d]=e.useState(!a.finalized),h=a.text||"",u=a.isLive||!a.finalized,g=a.finalized,m=a.duration||0;return e.useEffect(()=>{n.current&&c&&u&&(n.current.scrollTop=n.current.scrollHeight)},[h,c,u]),e.useEffect(()=>{g&&!o.current&&(setTimeout(()=>{d(!1)},800),a.autoCleanup&&setTimeout(()=>{r?.(a.messageId)},1500))},[g,a.autoCleanup,a.messageId,r]),s.jsxs("div",{className:"react-chat-agent-thinking-message mb-4 mx-auto opacity-50",children:[g?s.jsxs("button",{onClick:()=>{d(!c)},className:"react-chat-agent-thinking-toggle react-chat-agent-thinking-toggle-finished text-theme-tertiary text-sm hover:text-theme-secondary transition-colors mb-2 flex items-center gap-2",children:[s.jsx("span",{className:"react-chat-agent-thinking-toggle-icon",children:z(c?"brain-10-1663078315.png":"brain-11-1663755045.png",20,"currentColor")}),s.jsxs("span",{className:"react-chat-agent-thinking-toggle-text",children:["Thought for ",m," second",1!==m?"s":""]})]}):s.jsxs("div",{className:"react-chat-agent-thinking-header text-theme-tertiary text-sm hover:text-theme-secondary transition-colors mb-2 flex items-center gap-2",children:[s.jsx("span",{className:"react-chat-agent-thinking-icon",children:z("brain-11-1663755045.png",20,"currentColor")}),s.jsx("span",{className:"react-chat-agent-thinking-label",children:"Thinking..."})]}),c&&h&&s.jsx("div",{ref:n,className:"react-chat-agent-thinking-content-scroll max-h-[150px] overflow-y-auto scrollbar-thin scrollbar-track-transparent",style:{scrollBehavior:"smooth",WebkitMaskImage:"linear-gradient(to top, transparent 0%, black 60%, transparent 98%)",maskImage:"linear-gradient(to top, transparent 0%, black 60%, transparent 98%)"},children:s.jsx("div",{ref:i,className:"react-chat-agent-thinking-content text-theme-primary prose prose-invert max-w-none whitespace-pre-wrap text-sm pt-10",style:{wordBreak:"break-word",opacity:u?.8:1,transition:"opacity 0.15s ease"},children:s.jsx(l.default,{components:{code({node:e,inline:a,className:r,children:n,...i}){const o=/language-(\w+)/.exec(r||""),c=(n+"").replace(/\n$/,""),l=!a&&c.includes("\n");return a||!l?s.jsx("code",{className:"react-chat-agent-thinking-code-inline px-1 py-0.5 bg-secondary rounded text-xs font-mono whitespace-pre-wrap",...i,children:n}):s.jsx("div",{className:"react-chat-agent-thinking-code-block rounded-[15px] overflow-hidden my-3",children:s.jsx(t.Prism,{language:o?.[1]||"javascript",style:F,children:c})})},p:({children:e})=>s.jsx("p",{className:"react-chat-agent-thinking-paragraph mb-2 leading-5 text-sm",children:e}),ul:({children:e})=>s.jsx("ul",{className:"react-chat-agent-thinking-list react-chat-agent-thinking-list-unordered list-disc pl-5 mb-3 grid text-sm",children:e}),ol:({children:e})=>s.jsx("ol",{className:"react-chat-agent-thinking-list react-chat-agent-thinking-list-ordered list-decimal pl-5 mb-3 grid text-sm",children:e}),li:({children:e})=>s.jsx("li",{className:"react-chat-agent-thinking-list-item mb-1 text-sm",children:e}),h1:({children:e})=>s.jsx("h1",{className:"react-chat-agent-thinking-heading react-chat-agent-thinking-heading-1 text-lg font-semibold mb-2 mt-3",children:e}),h2:({children:e})=>s.jsx("h2",{className:"react-chat-agent-thinking-heading react-chat-agent-thinking-heading-2 text-base font-semibold mb-2 mt-3",children:e}),h3:({children:e})=>s.jsx("h3",{className:"react-chat-agent-thinking-heading react-chat-agent-thinking-heading-3 text-sm font-semibold mb-1 mt-2",children:e}),blockquote:({children:e})=>s.jsx("blockquote",{className:"react-chat-agent-thinking-blockquote border-l-4 border-gray-600 pl-3 italic my-3 text-theme-quaternary text-sm",children:e})},children:h})})})]})},$=({text:e,style:t,fontSize:a="1em",paddingRight:r="140px",backgroundSize:n="125px",isDark:i=!1})=>{let o=1;"string"==typeof a?o=parseFloat(a)||3:"number"==typeof a&&(o=a);let c=n;"125px"===n&&"3em"!==a&&(c=o/3*125+"px");const l={fontSize:a,paddingRight:r,WebkitBackgroundSize:c+" 100%",MozBackgroundSize:c+" 100%",backgroundSize:c+" 100%",...t};return s.jsx("div",{className:"react-chat-agent-shimmer-text shimmer "+(i?"dark":"light"),style:l,children:e})},U=({message:t,title:a,isProcessing:r,isFinished:n,icon:i,iconComponent:o,isFlat:c,onClick:l,isDark:d=!1,unmountOnExit:h,action:u,data:g,className:m,style:p})=>{const f=u||t?.action,x=g||t?.data,b=void 0!==n?n:t?.isFinished,y=void 0!==r?r:!b,w=a||t?.title,k=i||t?.icon,v=o||t?.iconComponent,j=void 0!==c?c:t?.isFlat,S=void 0!==h?h:t?.unmountOnExit,M=l,N=e.useMemo(()=>w||(f?(({data:e,action:t,isFinished:s})=>{if(!t||"string"!=typeof t)return"Processing...";try{const a=t.replace(/([A-Z])/g," $1").replace(/_/g," ").trim().split(/\s+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ");return s?a:`${a}${e?.tool?" "+e?.tool:""}...`}catch(a){return t}})({data:x,action:f,isFinished:b}):"Processing..."),[w,f,b,x]);return s.jsx("div",j?{className:"mb-[-2px] mx-auto "+m,style:{cursor:M?"pointer":"default",...p},onClick:M,children:s.jsxs("div",{className:`flex items-center gap-3 px-0 rounded-[12px] text-${d?"white":"black"} relative overflow-auto`,children:[S?s.jsx("div",{className:`animate-spin h-[16px] w-[16px] mr-[4px] absolute border-[1.5px] border-${d?"white":"black"} rounded-full border-t-transparent opacity-50`}):v?v():z(k||"check circle-3-1660219236.png",20,d?"rgba(255,255,255,0.25)":"rgba(0,0,0,0.25)",{position:"absolute"}),y?s.jsx($,{isDark:d,text:N,style:{fontSize:"14px",marginLeft:"30px"}}):s.jsx("span",{className:`text-[14px] text-${d?"white":"black"}/20 ml-[30px] ${v?"!ml-0":""}`,children:N})]})}:{className:"mb-[10px] mx-auto "+m,style:{cursor:M?"pointer":"default",...p},onClick:M,children:s.jsxs("div",{className:`flex items-center p-3 rounded-[12px] text-${d?"white":"black"} relative overflow-hidden`,style:{backgroundColor:d?"rgba(255,255,255,0.02)":"rgba(0,0,0,0.02)"},children:[y?s.jsx("div",{className:`animate-spin h-[16px] w-[16px] mr-[4px] absolute border-[1.5px] border-${d?"white":"black"} rounded-full border-t-transparent opacity-50`}):v?v():z(k||"check circle-3-1660219236.png",20,d?"rgba(255,255,255,0.8)":"rgba(0,0,0,0.8)",{position:"absolute"}),s.jsx("div",{className:"flex-1",children:y?s.jsx($,{isDark:d,text:N,style:{marginLeft:"28px",marginTop:"-2px",color:d?"rgba(255,255,255,0.2)":"rgba(0,0,0,0.2)"}}):s.jsx("span",{className:`text-[14px] text-${d?"white":"black"}/50 ml-[30px]`,children:N})})]})})};var B=e.memo(({item:e,removeMessage:t,allowEditMessage:a,animationConfig:r})=>{const{statusComponents:n}=A();if("user"===e.sender)return s.jsx("div",{className:"react-chat-agent-message-item react-chat-agent-message-user",children:s.jsx(L,{message:e,allowEdit:a})});if("status"===e.type&&e.action){const t=n?.[e.action];return s.jsx("div",{className:"react-chat-agent-message-item react-chat-agent-message-status",children:s.jsx(t||U,{message:e})})}return s.jsx("div","thinking"===e.type?{className:"react-chat-agent-message-item react-chat-agent-message-thinking",children:s.jsx(P,{message:e,removeMessage:t})}:{className:"react-chat-agent-message-item react-chat-agent-message-ai",children:s.jsx(O,{message:e,animationConfig:r})})},(e,t)=>e.item.uniqueKey===t.item.uniqueKey);const W=({type:e})=>{const t=["w-1.5 h-1.5","w-2.5 h-2.5","w-1.5 h-1.5"],a="text"===e?["L","O","A","D","I","N","G"]:Array.from({length:3}).fill(""),r=.6+.1*(a.length-1);return s.jsx("div",{className:"react-chat-agent-loading-response flex",children:s.jsx("div",{className:"react-chat-agent-loading-content flex justify-center items-center "+("text"===e?"text-7xl font-extrabold font-[Montserrat]":"gap-1.5"),children:a.map((a,n)=>s.jsx(i.motion.span,{className:`react-chat-agent-loading-item react-chat-agent-loading-item-${e} inline-block ${"text"===e?"mx-[-0.05em]":t[n]+" rounded-full bg-inverse"}`,animate:{scale:[.75,1.5,.75],opacity:[.75,1,.75],filter:["blur(4px)","blur(0px)","blur(4px)"]},transition:{repeat:1/0,duration:.6,ease:"easeInOut",repeatDelay:r-.6,delay:.1*n},children:"text"===e?a:""},n))})})},J=()=>s.jsxs("div",{className:"react-chat-agent-loading-mock space-y-8 px-5 pt-20 pb-40 w-full max-w-[800px] mx-auto",children:[s.jsxs("div",{className:"react-chat-agent-loading-mock-welcome flex items-start gap-4 mb-12",children:[s.jsx("div",{className:"react-chat-agent-loading-mock-avatar react-chat-agent-loading-mock-avatar-welcome w-10 h-10 rounded-full shimmer-skeleton"}),s.jsxs("div",{className:"react-chat-agent-loading-mock-content flex-1 space-y-3",children:[s.jsx("div",{className:"react-chat-agent-loading-mock-line react-chat-agent-loading-mock-line-1 h-4 rounded-full shimmer-skeleton w-2/3"}),s.jsx("div",{className:"react-chat-agent-loading-mock-line react-chat-agent-loading-mock-line-2 h-4 rounded-full shimmer-skeleton w-1/2"})]})]}),Array.from({length:2}).map((e,t)=>s.jsxs("div",{className:"react-chat-agent-loading-mock-message-group space-y-6",children:[s.jsxs("div",{className:"react-chat-agent-loading-mock-message react-chat-agent-loading-mock-message-user flex items-start gap-4 justify-end",children:[s.jsx("div",{className:"react-chat-agent-loading-mock-message-content max-w-[70%] space-y-2",children:s.jsx("div",{className:"react-chat-agent-loading-mock-line h-3 rounded-full shimmer-skeleton w-full"})}),s.jsx("div",{className:"react-chat-agent-loading-mock-avatar react-chat-agent-loading-mock-avatar-user w-8 h-8 rounded-full shimmer-skeleton"})]}),s.jsxs("div",{className:"react-chat-agent-loading-mock-message react-chat-agent-loading-mock-message-ai flex items-start gap-4",children:[s.jsx("div",{className:"react-chat-agent-loading-mock-avatar react-chat-agent-loading-mock-avatar-ai w-8 h-8 rounded-full shimmer-skeleton"}),s.jsxs("div",{className:"react-chat-agent-loading-mock-message-content flex-1 space-y-3",children:[s.jsx("div",{className:"react-chat-agent-loading-mock-line react-chat-agent-loading-mock-line-1 h-3 rounded-full shimmer-skeleton w-4/5"}),s.jsx("div",{className:"react-chat-agent-loading-mock-line react-chat-agent-loading-mock-line-2 h-3 rounded-full shimmer-skeleton w-3/4"})]})]})]},t))]}),K=e.forwardRef(({isDark:t=!1,className:r="",allowEditMessage:n=!1,showWelcome:i=!0,showLoadMore:o=!0,showLoadingIndicator:c=!0,welcomeComponent:l,loadingComponent:d,containerStyle:h={},useGradientMask:u=!0,gradientMaskStyle:g="linear-gradient(to bottom, transparent 6.5%, black 18%)"},m)=>{const[p,f]=e.useState(!1),x=e.useRef(!1),{sendMsg:b,messages:y,messageManager:w,isLoading:k,isStreaming:v,isPanelOpen:j,error:S,isInitialLoading:M,isResponseStarted:N,abort:I,loadMoreMessages:C,isLoadingMore:T,hasMoreMessages:F,enableHistory:E,animationConfig:R,loadingComponent:_}=A(),q=d||_,H=e.useRef(null),L=e.useRef(!0),O=a.useVirtualizer({count:y?.length||0,getScrollElement:()=>H.current,estimateSize:()=>150,overscan:10,measureElement:"undefined"!=typeof window&&-1===navigator.userAgent.indexOf("Firefox")?e=>e?.getBoundingClientRect().height:void 0}),P=e.useCallback(()=>{const e=H.current;e&&(e.scrollTop=e.scrollHeight)},[]),$=e.useCallback(()=>{const e=H.current;return!!e&&50>e.scrollHeight-e.scrollTop-e.clientHeight},[]);e.useEffect(()=>{L.current&&y?.length>0&&P()},[y,P]),e.useEffect(()=>{if(!v)return;const e=setInterval(()=>{L.current&&P()},100);return()=>clearInterval(e)},[v,P]);const U=e.useCallback(()=>{const e=H.current;if(!e)return;const t=e.scrollTop>20;t!==x.current&&(x.current=t,f(t)),L.current=$()},[$]),K=e.useCallback((e=>{let t=0;return function(...s){const a=Date.now();100>a-t||(t=a,e(...s))}})(U),[U]);e.useEffect(()=>{const e=H.current;if(e)return e.addEventListener("scroll",K),()=>e.removeEventListener("scroll",K)},[K]);const G=e.useCallback(e=>{w&&w.removeMessage&&w.removeMessage(e)},[w]),Q=e.useCallback(async e=>{L.current=!0,await b(e),setTimeout(P,100)},[b,P]);e.useImperativeHandle(m,()=>({scrollToBottom:P,isAtBottom:$,scrollContainer:H.current,virtualizer:O,sendMessage:Q,abort:I,isStreaming:v,isLoading:k,messages:y,messageManager:w}),[P,$,O,Q,I,v,k,y,w]);const Y=O.getVirtualItems();return s.jsx("div",{ref:H,className:"react-chat-agent react-chat-core overflow-y-auto scrollbar-hide "+r,"data-theme":t?"dark":"light",style:{WebkitMaskImage:u&&p?g:"none",...h},children:M?s.jsx(q||J,{}):y&&0!==y.length?s.jsxs("div",{className:"react-chat-core-messages",children:[o&&E&&F&&y.length>0&&!S&&!M&&s.jsx("div",{className:"react-chat-core-load-more flex justify-center py-4",children:s.jsx("button",{onClick:C,disabled:T,className:"react-chat-core-load-more-button flex items-center gap-2 text-theme-tertiary hover:text-theme-primary transition-colors disabled:opacity-50 disabled:cursor-not-allowed opacity-50",children:s.jsxs(s.Fragment,T?{children:[s.jsx("div",{className:"react-chat-core-load-more-spinner w-4 h-4 border-2 border-theme-primary border-t-theme-tertiary rounded-full animate-spin"}),s.jsx("span",{className:"react-chat-core-load-more-text text-sm",children:"Loading..."})]}:{children:[z("refresh",18,"currentColor"),s.jsx("span",{className:"react-chat-core-load-more-text text-sm",children:"Load more messages"})]})})}),s.jsx("div",{className:"react-chat-core-virtual-container",style:{height:O.getTotalSize()+"px",width:"100%",position:"relative"},children:Y.map(e=>{const t=y[e.index];return t?s.jsx("div",{"data-index":e.index,ref:O.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${e.start}px)`},children:s.jsx(B,{item:t,removeMessage:G,allowEditMessage:n,animationConfig:R})},t.uniqueKey||t.messageId||e.key):null})}),c&&k&&!N&&s.jsx(W,{})]}):i&&(l?s.jsx(l,{error:S}):s.jsx(D,{error:S,miniMode:j}))})});K.displayName="ChatCore";var G=e.memo(K);const Q=({todos:e=[]})=>e&&0!==e?.length?s.jsx("div",{className:"react-chat-agent-queue-manager flex w-[calc(100%-50px)] ml-[5px] items-end gap-2 top-0 z-9 absolute h-0",children:s.jsxs("div",{className:"react-chat-agent-queue-manager-wrapper flex items-center w-full relative bottom-0",children:[s.jsx("div",{className:"react-chat-agent-queue-manager-backdrop backdrop-blur-[20px] w-full h-full z-0 absolute bg-theme-overlay border-b-0 rounded-t-[15px] "}),s.jsx("div",{className:"react-chat-agent-queue-manager-content flex items-center gap-2 w-full p-1 py-[5px] z-99"})]})}):null,Y=({children:e,content:t,visible:a})=>a?s.jsxs("div",{className:"react-chat-agent-tooltip-wrapper relative",children:[e,s.jsxs("div",{className:"react-chat-agent-tooltip absolute bottom-full right-0 mb-2 w-64 p-3 bg-theme-surface rounded-lg shadow-lg z-50 backdrop-blur-sm",children:[s.jsx("div",{className:"react-chat-agent-tooltip-content text-theme-secondary text-sm space-y-2",children:t}),s.jsx("div",{className:"react-chat-agent-tooltip-arrow absolute top-full right-4 w-2 h-2 bg-theme-surface transform rotate-45 translate-y-[-4px]"})]})]}):e,X=()=>{const[t,a]=e.useState(!1),{sessionMetrics:r,usedTokens:n,contextLimit:i}=A(),o=(100*(n/i||0)).toFixed(2),c=e=>e?1e6>e?1e3>e?""+e:(e/1e3).toFixed(1)+"K":(e/1e6).toFixed(1)+"M":"0",l=s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"font-medium text-theme-primary border-b border-theme-tertiary pb-1",children:"Session Info"}),s.jsxs("div",{className:"space-y-1 text-xs",children:[s.jsxs("div",{className:"flex justify-between",children:[s.jsx("span",{className:"text-theme-quaternary",children:"Context size:"}),s.jsxs("span",{children:[c(r?.contextUsed)," / ",c(r?.contextLimit)]})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsx("span",{className:"text-theme-quaternary",children:"Session Tokens:"}),s.jsx("span",{children:c(r?.tokensUsed)})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsx("span",{className:"text-theme-quaternary",children:"All time tokens:"}),s.jsx("span",{children:c(r?.allTimeTokens)})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsx("span",{className:"text-theme-quaternary",children:"Requests:"}),s.jsx("span",{children:c(r?.requests)})]})]})]});return s.jsx(Y,{content:l,visible:t,children:s.jsxs("div",{className:"react-chat-agent-progress-bar flex items-center gap-2 cursor-pointer",onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),children:[s.jsxs("span",{className:"react-chat-agent-progress-percentage text-theme-ghost font-light text-[12px] leading-[18px]",children:[o,"%"]}),s.jsxs("div",{className:"react-chat-agent-progress-circle-wrapper relative w-4 h-4 flex items-center justify-center",children:[s.jsx("div",{className:"react-chat-agent-progress-circle-bg absolute inset-0 rounded-full bg-theme-muted"}),s.jsx("div",{className:"react-chat-agent-progress-circle-fill absolute inset-0 rounded-full",style:{background:`conic-gradient(var(--rca-text-faint) ${o}%, transparent 0)`}}),s.jsx("div",{className:"react-chat-agent-progress-circle-inner absolute inset-0.5 rounded-full bg-secondary"})]})]})})},V=({attachedFiles:e=[],removeFile:t})=>{const{currentSelectedFile:a,setIsHoldEnabled:r,setCurrentSelectedFile:n,manuallyAddedFiles:i=[],setManuallyAddedFiles:o=()=>{}}=A(),c=[...a?[a]:[],...i,...e];return s.jsxs("div",{className:"react-chat-agent-chat-bar flex items-center w-full mb-2 justify-between",children:[s.jsxs("div",{className:"react-chat-agent-chat-bar-left flex items-center",children:[c.length>0&&s.jsx(ee,{files:c,handleRemoveFile:e=>{"object"==typeof e&&e.id?t&&t(e.id):e===a?(n(null),r(!1)):o(t=>t.filter(t=>t!==e))}}),s.jsxs("button",{className:"react-chat-agent-context-button text-theme-primary hover:opacity-100 opacity-25 mr-2 flex items-center gap-1 whitespace-nowrap right-0 z-9 text-[12px] leading-relaxed ",children:[s.jsx("span",{className:"react-chat-agent-context-button-icon",children:z("add",20,"currentColor",{marginLeft:"-5px"})}),0===c.length&&s.jsx("span",{className:"react-chat-agent-context-button-label",children:"Context"})]})]}),s.jsx("div",{className:"react-chat-agent-chat-bar-right",children:s.jsx(X,{})})]})},Z=({file:t,handleRemoveFile:a})=>{const[r,n]=e.useState(!1),i="object"==typeof t&&t.id,o=i?t.name:t.split("/").pop(),c=i?t.id:t;return s.jsxs("div",{className:"react-chat-agent-file-item flex items-center gap-2 px-2 py-[2px] bg-theme-subtle rounded-full cursor-pointer relative border border-theme-subtle",onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[r?s.jsx("button",{className:"react-chat-agent-file-item-remove w-[16px] opacity-50 hover:opacity-100 -ml-[2px] -mr-[2px] h-[16px]",onClick:e=>{e.stopPropagation(),a(t)},children:s.jsx("span",{className:"react-chat-agent-file-item-remove-icon",children:z("close",16,"currentColor")})}):s.jsx("div",{className:"react-chat-agent-file-item-icon-wrapper",children:i&&t.preview?s.jsx("img",{src:t.preview,alt:o,className:"react-chat-agent-file-item-preview w-3 h-4 object-cover rounded",style:{marginRight:0,width:"12px",height:"16px"}}):s.jsx(FileIcon,{fileName:o,style:{marginRight:0,width:"12px",height:"16px"}})}),s.jsx("div",{className:"react-chat-agent-file-item-name text-theme-quaternary hover:text-theme-primary text-[12px] leading-relaxed whitespace-nowrap truncate max-w-[100px]",children:o})]},c)},ee=({files:e,handleRemoveFile:t})=>s.jsx("div",{className:"react-chat-agent-file-items flex items-center gap-2 mr-2",children:e.map(e=>s.jsx(Z,{file:e,handleRemoveFile:t},"object"==typeof e&&e.id?e.id:e))}),te=()=>{const[t,a]=e.useState(0),r=e.useRef(),n=e.useRef(0),i=e.useRef(0);return e.useEffect(()=>{i.current=performance.now(),n.current=t;const e=s=>{const o=s-i.current;i.current=s,n.current+=o/1e3*360,360>n.current||(n.current-=360);const c=Math.round(n.current);5>Math.abs(c-t)||a(c),r.current=requestAnimationFrame(e)};return r.current=requestAnimationFrame(e),()=>{r.current&&(cancelAnimationFrame(r.current),r.current=null)}},[]),s.jsx("div",{className:"react-chat-agent-loader-animation w-full h-full z-1 absolute rounded-[15px]",children:s.jsx("div",{className:"glowing pointer-events-none absolute inset-0 rounded-[inherit] opacity-100 transition-opacity safari:!hidden style_glowingEffect__yGXeX",style:{"--blur":"1px","--spread":"30","--active":"1","--start":t,display:"flex"},children:s.jsx("div",{className:"style_glow__i4Qpo"})})})},se=()=>{const{streamError:t,clearStreamError:a,retryLastMessage:r,sendRequestCallback:n,triggerLoadingStates:i}=A(),[o]=e.useState(t?.choices||[{id:"retry",label:"Retry"},{id:"cancel",label:"Cancel"}]);return t?s.jsx("div",{className:"react-chat-agent-stream-error w-full mb-3",children:s.jsxs("div",{className:"react-chat-agent-error-content flex w-full justify-between items-center gap-3 px-3 py-2 bg-theme-faint rounded-lg border-l-2 border-[#ef4444]",children:[s.jsx("div",{className:"react-chat-agent-error-message-wrapper",children:s.jsx("div",{className:"react-chat-agent-error-message text-[12px] text-theme-primary font-medium",children:t.message||"An error occurred during streaming"})}),s.jsx("div",{className:"react-chat-agent-error-actions flex gap-2 items-center",children:o&&o.length>0&&o.map(e=>s.jsx("button",{onClick:()=>(async e=>{"retry"===e?"connection_error"===t.errorType?await r():(i(),n({type:"stream_error",callback:"retry",requestId:t.requestId})):"cancel"===e&&(t.requestId&&n({type:"stream_error",callback:"cancel",requestId:t.requestId}),a())})(e.id),className:`react-chat-agent-error-action react-chat-agent-error-action-${e.id} text-[11px] font-medium px-3 py-1 rounded-md transition-all duration-200\n ${"retry"===e.id?"text-theme-primary hover:text-theme-secondary underline underline-offset-2":"cancel"===e.id?"text-theme-subtle hover:text-theme-tertiary":"text-theme-tertiary hover:text-theme-primary"}\n `,children:e.label},e.id))})]})}):null},ae=({onSendMessage:t,miniMode:a=!1,isStreaming:r,abort:n,todos:i})=>{const[o,c]=e.useState(""),l=e.useRef(null),{attachedFiles:d,fileInputRef:h,onFileSelect:u,onPaste:g,removeFile:m,clearFiles:p}=function(){const[t,s]=e.useState([]),a=e.useRef(null),r=e.useCallback(async e=>{const t=await e.arrayBuffer(),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(e=>e.toString(16).padStart(2,"0")).join("")},[]),n=e.useCallback(async e=>{const a=[];for(const s of e){if(t.some(e=>e.name===s.name&&e.size===s.size&&e.type===s.type))continue;let e=!1;if(5242880>s.size)try{const n=await r(s);t.some(e=>e.hash===n)||(a.push({file:s,id:Date.now()+Math.random(),name:s.name,size:s.size,type:s.type,hash:n,preview:s.type.startsWith("image/")?URL.createObjectURL(s):null}),e=!0)}catch(n){}e||a.push({file:s,id:Date.now()+Math.random(),name:s.name,size:s.size,type:s.type,preview:s.type.startsWith("image/")?URL.createObjectURL(s):null})}a.length>0&&s(e=>[...e,...a])},[t,r]),i=e.useCallback(e=>{const t=Array.from(e.target.files||[]);t.length>0&&n(t),e.target.value=""},[n]),o=e.useCallback(e=>{const t=Array.from(e.clipboardData?.items||[]).filter(e=>"file"===e.kind).map(e=>e.getAsFile()).filter(Boolean);t.length>0&&(e.preventDefault(),n(t))},[n]),c=e.useCallback(e=>{s(t=>{const s=t.filter(t=>t.id!==e),a=t.find(t=>t.id===e);return a?.preview&&URL.revokeObjectURL(a.preview),s})},[]),l=e.useCallback(()=>{s(e=>(e.forEach(e=>{e.preview&&URL.revokeObjectURL(e.preview)}),[]))},[]);return{attachedFiles:t,fileInputRef:a,onFileSelect:i,onPaste:o,removeFile:c,clearFiles:l}}();e.useEffect(()=>{l.current&&(l.current.style.height="auto",l.current.style.height=Math.min(l.current.scrollHeight,150)+"px")},[o]);const f=e=>{e.preventDefault(),(o.trim()||d.length>0)&&(t({message:o,attachedFiles:d}),c(""),p(),l.current&&(l.current.style.height="auto"))};return s.jsx("div",{className:"react-chat-agent-input absolute mx-auto bottom-0 w-full p-[15px] right-0 left-0 max-w-[600px] z-2",children:s.jsxs("div",{className:"react-chat-agent-input-wrapper mx-auto min-h-[120px] relative",style:a?{minHeight:"110px"}:{},children:[r&&s.jsx(te,{}),s.jsx("div",{className:"react-chat-agent-input-backdrop backdrop-blur-[20px] w-full h-full z-0 absolute bg-theme-overlay rounded-[15px]"}),s.jsxs("div",{className:"react-chat-agent-input-content pt-[15px] px-[20px] mx-auto min-h-[120px] relative z-99",children:[s.jsx(Q,{todos:i}),s.jsx(se,{}),s.jsx(V,{attachedFiles:d,removeFile:m}),s.jsx("div",{className:"react-chat-agent-input-textarea-wrapper relative pb-[50px]",children:s.jsx("textarea",{autoSave:"off",autoFocus:!1,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false","data-form-type":"other",ref:l,value:o,onChange:e=>c(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),f(e))},onPaste:g,placeholder:"Type a message...",className:"react-chat-agent-textarea w-full text-[14px] text-theme-primary pr-12 min-h-[40px] max-h-[150px] resize-none outline-none bg-transparent",rows:1})}),s.jsxs("div",{className:"react-chat-agent-input-actions flex items-center justify-between mt-auto bottom-[15px] absolute w-[calc(100%-40px)]",children:[s.jsxs("div",{className:"react-chat-agent-input-actions-left flex items-center",children:[s.jsx("input",{ref:h,type:"file",multiple:!0,accept:"image/*,video/*,audio/*,.pdf,.doc,.docx,.txt,.md,.json,.js,.ts,.jsx,.tsx,.py,.html,.css,.xml,.csv",onChange:u,className:"react-chat-agent-file-input hidden"}),s.jsxs("button",{type:"button",onClick:()=>h.current?.click(),className:"react-chat-agent-attach-button flex justify-center items-center cursor-pointer text-theme-primary rounded-full transition-colors hover:opacity-80 disabled:opacity-50 disabled:cursor-not-allowed",children:[z("attach",18,"currentColor"),s.jsx("span",{className:"react-chat-agent-attach-label text-[14px] ml-2 font-[300]",children:"Attach"})]})]}),s.jsxs("div",{className:"react-chat-agent-input-actions-right flex items-center",children:[s.jsxs("button",{type:"button",className:"react-chat-agent-agent-button flex justify-center p-1 px-2 mr-2 items-center cursor-pointer text-theme-primary rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[z("brain",18,"currentColor"),s.jsx("span",{className:"react-chat-agent-agent-label text-[12px] mx-2 text-theme-quaternary font-[300] -mt-[2px]",children:"Agent"}),z("arrowDown",16,"currentColor",{transform:"rotate(180deg)"})]}),s.jsx("button",{type:"button",onClick:e=>{r?n():f(e)},className:"react-chat-agent-send-button w-[30px] h-[30px] flex justify-center items-center cursor-pointer bg-inverse text-inverse rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:!o.trim()&&!r,children:z(r?"square":"send",r?15:20,"currentColor")})]})]})]})]})})};var re=e.memo(ae);const ne=({historyOpen:t,setHistoryOpen:a,isDark:r=!1,onCreateSession:n})=>{const[i,o]=e.useState(!1),{headerComponent:c}=A();return s.jsxs("div",{className:"react-chat-agent-header flex justify-between items-center py-2 px-5 absolute top-0 left-0 right-0 z-10",children:[s.jsxs("div",{className:"react-chat-agent-header-left flex items-center gap-4 opacity-50",children:[s.jsx("button",{className:"react-chat-agent-header-new-chat flex items-center cursor-pointer hover:opacity-80",style:{opacity:i?.5:1,cursor:i?"progress":"pointer"},disabled:i,onClick:async({replace:e=!1}={})=>{if(n)try{o(!0),await n({replace:e})}catch(t){}finally{o(!1)}},children:z("add",25,r?"#fff":"#000")}),s.jsx("div",{className:"react-chat-agent-header-history flex items-center cursor-pointer hover:opacity-80",onClick:t?()=>a(!1):()=>a(!0),children:z(t?"close":"history",18,r?"#fff":"#000")})]}),c&&c(),s.jsx("div",{className:"react-chat-agent-header-right w-[80px]"})]})};var ie=e.memo(ne);const oe=({isDark:t=!1,allowEditMessage:a=!1,useWebSocket:r=!1,children:n,onCreateSession:i,className:o="h-full w-full"})=>{const[c,l]=e.useState(!1),d=e.useRef(null),{sendMsg:h,isStreaming:u,abort:g}=A(),m=e.useCallback(async e=>{await h(e),setTimeout(()=>{d.current?.scrollToBottom()},100)},[h]);return s.jsxs("div",{className:"react-chat-agent-panel flex flex-col h-full relative chat-panel "+o,"data-theme":t?"dark":"light",children:[s.jsx(ie,{historyOpen:c,setHistoryOpen:l,useWebSocket:r,isDark:t,onCreateSession:i}),s.jsxs("div",{className:"relative flex-grow w-full max-w-[600px] mx-auto h-full min-w-[300px]",children:[s.jsx(G,{ref:d,isDark:t,allowEditMessage:a,className:"react-chat-agent-chat-container absolute chat-container h-full flex-grow px-5 pt-20 pb-50 mb-[20px] w-full mx-auto"}),s.jsx(re,{onSendMessage:m,isStreaming:u,abort:g})]}),n]})};var ce=e.memo(oe);exports.ChatApi=d,exports.ChatCore=G,exports.ChatHeader=ie,exports.ChatInput=re,exports.ChatInstanceContext=R,exports.ChatLoadingMock=J,exports.ChatPanel=ce,exports.ChatProvider=function({children:a,initialWelcome:r={title:"Welcome to AI Chat Agent",description:"A perfect agent library for your needs, for docs visit oblien.com/docs/chat-agent"},refreshTokenCallback:n,markdownComponents:i,typingAnimation:o={mode:"char",speed:200},statusComponents:l,forwardingHandlers:h={},authConfig:u,enableHistory:g=!0,loadingComponent:b,allowThinking:y=!0,headerComponent:v,config:j,agentId:S,className:M="h-full w-full",onError:I}){const C=e.useRef(S||"chat-"+Math.random().toString(36).substring(2,9)).current,[A,q]=e.useState(!0),[H,z]=e.useState(u?.sessionId),[D,L]=e.useState(!1),[O,P]=e.useState(!1),[$,U]=e.useState(!1),[B,W]=e.useState(null),[J,K]=e.useState(null),[G,Q]=e.useState(!1),[Y,X]=e.useState(!1),[V,Z]=e.useState(null),ee=e.useRef(r).current,[te,se]=e.useState([]),ae=e.useRef(!1),re=e.useRef(!1),ne=e.useRef(new f),ie=e.useRef(null),oe=e.useMemo(()=>w(),[]),ce=e.useRef(new p),le=e.useRef(new d(ce.current,j)),de=e.useRef(new m(le.current)),he=e.useRef(T(h)),ue=e.useRef(new x(ne.current,oe)),ge=e.useRef(new N(ue.current,he.current,Object.keys(h).length>0,C)),me=e.useCallback(()=>{const e=ae.current||re.current;P(e),e||L(!1)},[]);e.useEffect(()=>{ge.current.onQueueComplete=()=>{re.current=!1,me()}},[me]);const pe=e.useRef(i||((e={})=>({code({node:e,inline:a,className:r,children:n,...i}){const o=/language-(\w+)/.exec(r||""),c=(n+"").replace(/\n$/,""),l=!a&&c.includes("\n");return a||!l?s.jsx("code",{className:"inline-code px-1.5 py-0.5 rounded text-sm font-mono whitespace-pre-wrap",...i,children:n}):s.jsx("div",{className:"code-block rounded-lg overflow-hidden my-4",children:s.jsx(t.Prism,{language:o?.[1]||"javascript",style:F,customStyle:{margin:0,borderRadius:0},children:c})})},p:({children:e})=>{const t=E(e);return s.jsx("p",{className:"mb-4 leading-relaxed last:mb-0",dir:t,children:e})},ul:({children:e})=>{const t=E(e);return s.jsx("ul",{className:"my-3 space-y-1 list-disc list-outside "+("rtl"===t?"pr-6":"pl-6"),dir:t,children:e})},ol:({children:e})=>{const t=E(e);return s.jsx("ol",{className:"my-3 space-y-1 list-decimal list-outside "+("rtl"===t?"pr-6":"pl-6"),dir:t,children:e})},li:({children:e})=>{const t=E(e);return s.jsx("li",{className:"leading-relaxed "+("rtl"===t?"pr-1":"pl-1"),dir:t,children:e})},h1:({children:e})=>{const t=E(e);return s.jsx("h1",{className:"markdown-h1 mb-4 mt-6 first:mt-0 leading-[1.25]",dir:t,children:e})},h2:({children:e})=>{const t=E(e);return s.jsx("h2",{className:"markdown-h2 mb-4 mt-6 first:mt-0 leading-[1.3]",dir:t,children:e})},h3:({children:e})=>{const t=E(e);return s.jsx("h3",{className:"markdown-h3 mb-3 mt-5 first:mt-0 leading-[1.4]",dir:t,children:e})},h4:({children:e})=>{const t=E(e);return s.jsx("h4",{className:"markdown-h4 mb-2 mt-4 first:mt-0 leading-[1.4]",dir:t,children:e})},h5:({children:e})=>{const t=E(e);return s.jsx("h5",{className:"markdown-h5 mb-2 mt-4 first:mt-0 leading-[1.5]",dir:t,children:e})},h6:({children:e})=>{const t=E(e);return s.jsx("h6",{className:"markdown-h6 mb-2 mt-4 first:mt-0 leading-[1.5]",dir:t,children:e})},blockquote:({children:e})=>{const t=E(e);return s.jsx("blockquote",{className:"markdown-blockquote py-1 my-4 italic "+("rtl"===t?"pr-4 border-r-4":"pl-4 border-l-4"),dir:t,children:e})},strong:({children:e})=>s.jsx("strong",{className:"markdown-strong font-semibold",children:e}),em:({children:e})=>s.jsx("em",{className:"markdown-em italic",children:e}),a:({children:e,href:t})=>s.jsx("a",{href:t,className:"markdown-link text-blue-400 hover:text-blue-300 underline decoration-blue-400/30 hover:decoration-blue-300/50 transition-colors",target:"_blank",rel:"noopener noreferrer",children:e}),hr:()=>s.jsx("hr",{className:"markdown-hr my-6"}),table:({children:e})=>s.jsx("div",{className:"overflow-x-auto my-4",children:s.jsx("table",{className:"markdown-table min-w-full border-collapse",children:e})}),thead:({children:e})=>s.jsx("thead",{className:"markdown-thead",children:e}),tbody:({children:e})=>s.jsx("tbody",{className:"markdown-tbody",children:e}),tr:({children:e})=>s.jsx("tr",{className:"markdown-tr transition-colors",children:e}),th:({children:e})=>s.jsx("th",{className:"markdown-th px-4 py-2 text-left font-semibold text-sm",children:e}),td:({children:e})=>s.jsx("td",{className:"markdown-td px-4 py-2 text-sm",children:e}),input:({type:e,checked:t,...a})=>s.jsx("input","checkbox"===e?{type:"checkbox",checked:t,disabled:!0,className:"mr-2 align-middle",...a}:{type:e,...a}),del:({children:e})=>s.jsx("del",{className:"markdown-del line-through",children:e}),pre:({children:e})=>s.jsx("pre",{className:"overflow-x-auto",children:e}),...e}))()).current,fe=e.useRef(b),xe=e.useRef(l),be=e.useRef(v);e.useEffect(()=>{b!==fe.current&&(fe.current=b),l!==xe.current&&(xe.current=l),v!==be.current&&(be.current=v),n&&ce.current.setRefreshCallback(n)},[b,l,v,n]);const ye=e.useRef(!1),we=e.useRef(H),ke=e.useRef(null);k.current=o;const ve=e.useRef(new Set);e.useEffect(()=>{const e=ne.current.subscribe(e=>{se(e)});return()=>{e()}},[]),e.useEffect(()=>{we.current=H},[H]);const je=e.useRef(!1);e.useEffect(()=>{(async()=>{if(u&&u.sessionId)try{await ce.current.setAuth(u)}catch(B){let t="Authentication failed. Please refresh the page.";B?.message?.includes("No refresh token")?t="Session expired. Please refresh the page to continue.":B?.message&&(t=B.message),W({type:"auth_error",message:t,error:B}),q(!1)}else q(!1)})()},[!1,u]);const Se=e.useCallback(e=>{W(e.error)},[]),Me=e.useCallback(async()=>{if(g)try{if(ve.current.has(H))return void q(!1);ve.current.add(H),q(!0);const e=await le.current.getHistory();if(e.error)return Se(e),void q(!1);e.history&&e.history.length>0&&ne.current.insertMessages(e.history,"end"),X(!!e.has_more),q(!1)}catch(e){let t="Could not load message history.";e?.message?.includes("No refresh token")?t="Session expired. Please refresh the page to continue.":e?.message?.includes("Network")?t="Network error. Please check your connection.":e?.message&&(t=e.message),W({type:"history_error",message:t,error:e}),q(!1)}else q(!1)},[H,Se,g]);e.useEffect(()=>{(async()=>{H&&!je.current?(je.current=!0,await Me()):H||je.current||(je.current=!0,q(!1))})()},[H,Me]);const Ne=e.useCallback(()=>(ae.current=!1,re.current=!1,P(!1),L(!1),U(!1),ge.current.clear(),ie.current=null,le.current.abort(),de.current.abort()),[]),Ie=e.useCallback(e=>{const t={...e,id:e?.id||Math.random().toString(36).substring(2,9),timestamp:Date.now()};K(t),I&&I(t)},[I]),Ce=e.useCallback(()=>{K(null)},[]),Te=e.useCallback(()=>{ae.current=!1,ie.current&&(ge.current.endResponse(),ie.current=null),me()},[me]),Fe=e.useCallback(()=>{ye.current=!1,ae.current=!1,me()},[me]),Ee=e.useCallback(e=>{const t=e?.data?.messageId||e?.messageId;t&&(ie.current=t),$||U(!0),re.current=!0,ge.current.addToQueue(e),me()},[$,me]);e.useEffect(()=>(de.current.on("stream_error",Ie),de.current.on("response",Ee),de.current.on("response_end",Te),de.current.on("disconnect",Fe),()=>{de.current.off("stream_error",Ie),de.current.off("response",Ee),de.current.off("response_end",Te),de.current.off("disconnect",Fe)}),[Ie,Ee,Te,Fe]);const Re=async({messageId:e=Math.random().toString(36).substring(2,9),message:t="",attachedFiles:s=[],uploadId:a=null}={})=>{if(!t.trim())return;const r="user-"+e;try{ke.current&&ke.current?.messageId===r||ue.current.handleUserMessage({messageId:r,text:t,attachedFiles:s}),ke.current={messageId:r,message:t,attachedFiles:s,uploadId:a},L(!0),U(!1),ae.current=!0,me();const e=he.current.handlers._stream_feedback,n=e?.handler,i="raw"===e?.mode,o=await de.current.startStream({message:t,attachedFiles:s,uploadId:a,sessionId:we.current,context:null,allowThinking:y},n,i);o.status||(ae.current=!1,me(),Ie({errorType:"connection_error",error:o.error||"Error occurred while connecting to server",message:o.message||"Failed to send message"}))}catch(n){ae.current=!1,me(),Ie({errorType:"send_error",error:n.message||"Unknown error",message:"Failed to send message"})}finally{L(!1)}},_e=e.useCallback(async()=>{ke.current&&await Re(ke.current)},[]),Ae=e.useMemo(()=>({addMessage:e=>ne.current.addMessage(e),updateMessage:(e,t)=>ne.current.updateMessage(e,t),removeMessage:e=>ne.current.removeMessage(e),getMessage:e=>ne.current.getMessage(e),clear:()=>ne.current.clear()}),[]),qe=e.useMemo(()=>({register:(e,t)=>oe.register(e,t,{instanceId:C}),registerGlobal:e=>oe.registerGlobal(e,{instanceId:C})}),[C,oe]);return c.default.createElement("div",{className:"react-chat-agent "+M},c.default.createElement(_.Provider,{value:{sendMsg:Re,messages:te,messageManager:Ae,isLoading:D,isStreaming:O,isResponseStarted:$,isInitialLoading:A,isLoadingMore:G,error:B,streamError:J,clearStreamError:Ce,getHistory:Me,loadMoreMessages:async()=>{if(g&&!G&&Y){Q(!0);try{const e=ne.current.count,t=await le.current.getHistory({offset:e,limit:20});if(t.error)return Se(t),void Q(!1);t.history&&t.history.length>0?(ne.current.insertMessages(t.history,"start"),X(t.has_more)):X(!1)}catch(e){W({type:"load_more_error",message:"Failed to load more messages",error:e})}finally{Q(!1)}}},hasMoreMessages:Y,enableHistory:g,retryLastMessage:_e,abort:Ne,sessionId:H,setSessionId:z,instanceId:C,currentSelectedFile:V,setCurrentSelectedFile:Z,welcome:ee,statusRegistry:qe,markdownComponents:pe,statusComponents:xe.current,loadingComponent:fe.current,headerComponent:be.current,typingAnimation:o}},c.default.createElement(R.Provider,{value:C},a)))},exports.ForwardingManager=C,exports.LoadingResponse=W,exports.MessageItem=B,exports.MessageManager=f,exports.ModeToggle=({modes:e=[],activeMode:t,onModeChange:a,isDark:r=!1})=>e&&e.length>1?s.jsx("div",{className:"react-chat-agent-mode-toggle toggle-container flex items-center bg-theme-faint rounded-full !ml-5 flex-shrink-0 h-[35px]",style:{padding:"4px"},children:e.map(e=>s.jsx("button",{onClick:()=>a(e.id),className:`react-chat-agent-mode-button ${t===e.id?"react-chat-agent-mode-button-active":"react-chat-agent-mode-button-inactive"} relative px-3 py-1 text-[12px] font-medium rounded-full transition-all duration-200\n ${t===e.id?"bg-background text-theme-primary":"text-theme-subtle hover:text-theme-tertiary hover:bg-theme-subtle"}\n `,children:s.jsxs("div",{className:"react-chat-agent-mode-button-content flex items-center gap-1.5",children:[s.jsx("span",{className:"react-chat-agent-mode-button-icon",children:e.icon}),s.jsx("span",{className:"react-chat-agent-mode-button-label",children:e.label})]})},e.id))}):null,exports.SessionManager=class{constructor(e){this.tokenManager=e||new p,this.createSessionCallback=null,this.onSessionCreated=null}setCreateSessionCallback(e){this.createSessionCallback=e}setOnSessionCreated(e){this.onSessionCreated=e}async createSession(e={}){if(!this.createSessionCallback)throw Error("No session creation callback provided. Use SessionManager.setCreateSessionCallback()");try{const t=await this.createSessionCallback(e);if(!t||!t.sessionId)throw Error("Invalid session data: missing sessionId");if(!t.accessToken)throw Error("Invalid session data: missing accessToken");return tokenManager.setAuth(t),this.onSessionCreated&&this.onSessionCreated(t),t}catch(t){throw t}}getSessionId(){return tokenManager.getSessionId()}clearSession(){tokenManager.clear()}},exports.ShimmerText=$,exports.StartChat=D,exports.StatusBlock=U,exports.StatusHandlerRegistry=b,exports.StreamService=m,exports.TokenManager=p,exports.WebSocketService=h,exports.getGlobalForwardingManager=T,exports.getGlobalStatusRegistry=w,exports.resetGlobalForwardingManager=function(){I=null},exports.setGlobalForwardingManager=function(e){I=e},exports.useChatContext=A,exports.useForwarding=function(t,s,a={}){const r=T(),n=e.useRef(new Map),i=A(),o=i?.instanceId,c=e.useRef(s),l=e.useRef(a);e.useEffect(()=>{c.current=s,l.current=a}),e.useEffect(()=>{const e=[];if("object"!=typeof t||s){if("string"==typeof t&&s){const s=r.register(t,(...e)=>c.current(...e),{mode:l.current.mode||"dual",animated:!1!==l.current.animated,subscriptionMode:l.current.subscriptionMode||"delta",instanceId:o});e.push(s)}}else Object.entries(t).forEach(([t,s])=>{const a=r.register(t,(...e)=>s.handler(...e),{mode:s.mode||"dual",animated:!1!==s.animated,subscriptionMode:s.subscriptionMode||"delta",instanceId:o});e.push(a)});return()=>{e.forEach(e=>e())}},[t,r]);const d=e.useCallback((e,t,s={})=>{const a=r.register(e,t,s);return n.current.set(e,a),a},[r]),h=e.useCallback(e=>{const t=n.current.get(e);t&&(t(),n.current.delete(e))},[]),u=e.useCallback(()=>r.getActiveSessions(),[r]),g=e.useCallback(e=>r.handlers[e],[r]),m=e.useCallback(()=>Object.entries(r.handlers).map(([e,t])=>({action:e,...t})),[r]);return{register:d,unregister:h,getActiveSessions:u,getHandler:g,getAllHandlers:m}},exports.useStatusSubscription=function(t,s,a={}){const r=e.useContext(R),n=void 0!==a.instanceId?a.instanceId:r,i=n?{instanceId:n}:{},o=w(),c=e.useRef(s);e.useEffect(()=>{c.current=s},[s]),e.useEffect(()=>{const e=[];if("object"==typeof t&&null!==t)Object.entries(t).forEach(([t,s])=>{if("*"===t){const t=o.registerGlobal(s,i);e.push(t)}else{const a=o.register(t,s,i);e.push(a)}});else if("string"==typeof t){const s=e=>c.current?.(e);if("*"===t){const t=o.registerGlobal(s,i);e.push(t)}else{const a=o.register(t,s,i);e.push(a)}}return()=>{e.forEach(e=>e?.())}},[t,n])};
|
|
1
|
+
"use strict";var e=require("react"),t=require("react-syntax-highlighter"),s=require("react/jsx-runtime"),n=require("react-dom"),r=require("streamdown"),i=require("react-markdown"),o=require("framer-motion"),a=require("@tanstack/react-virtual");function l(e){return e&&e.__esModule?e:{default:e}}var c=l(e),d=l(n),u=l(i);class h{constructor(e={}){this.config=e,this.abortController=null}async sendMessage(e,t=null){throw Error("Implement sendMessage()")}async getHistory(e={}){throw Error("Implement getHistory()")}async uploadFiles(e,t){return null}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class m extends h{constructor(e={}){super({chatUrl:"https://api.oblien.com/ai/chat/send",historyUrl:"https://api.oblien.com/ai/session/history",uploadUrl:"https://api.oblien.com/ai/chat/upload",...e}),this.tokenManager=e.tokenManager||null}async getHeaders(){const e={"Content-Type":"application/json"};return this.tokenManager?e.Authorization="Bearer "+await this.tokenManager.getAccessToken():this.config.token&&(e.Authorization="Bearer "+this.config.token),e}async sendMessage(e,t=null){this.abort(),this.abortController=new AbortController;try{const s=await this.getHeaders();t&&(s.Accept="text/event-stream");const n=await fetch(this.config.chatUrl,{method:"POST",headers:s,body:JSON.stringify(e),signal:this.abortController.signal,credentials:this.config.credentials||"same-origin"});if(!n.ok){const e=await n.json().catch(()=>({error:"Request failed"}));return t&&t(JSON.stringify({event:"stream_error",data:{errorType:"http_error",error:e.error,message:e.message}})),{status:!1,error:e.error}}if(!t)return{status:!0,data:await n.json()};const r=n.body.getReader(),i=new TextDecoder;let o="";for(;;){const{value:e,done:s}=await r.read();if(s){t(JSON.stringify({event:"ai_response_end",data:{status:"end"}}));break}o+=i.decode(e,{stream:!0});const n=o.split("\n");o=n.pop()||"";for(const r of n)r.trim()&&t(r)}return{status:!0}}catch(s){return t&&t(JSON.stringify({event:"stream_error",data:{errorType:"connection_error",error:s.message}})),{status:!1,error:s.message}}}async getHistory(e={}){try{const t=await this.getHeaders(),{offset:s=0,limit:n=20,sessionId:r}=e,i=`${this.config.historyUrl}?offset=${s}&limit=${n}&sessionId=${r}`,o=await fetch(i,{headers:t,credentials:this.config.credentials||"same-origin"});return o.ok?await o.json():{error:"Failed to load history"}}catch(t){return{error:t.message}}}async uploadFiles(e,t){if(!e?.length)return null;const s=new FormData;e.forEach(e=>s.append("files",e.file,e.name));const n={};this.tokenManager?n.Authorization="Bearer "+await this.tokenManager.getAccessToken():this.config.token&&(n.Authorization="Bearer "+this.config.token);const r=await fetch(this.config.uploadUrl,{method:"POST",headers:n,body:s,signal:t,credentials:this.config.credentials||"same-origin"});if(!r.ok)throw Error("Upload failed");return(await r.json()).uploadId}}const g=new class{constructor({socketUrl:e}={}){this.socket=null,this.listeners=new Map,this.bufferedEvents=new Map,this.bufferableEventTypes=new Set([]),this.reconnectAttempts=0,this.maxReconnectAttempts=5e3,this.reconnectTimeout=3e3,this.socketUrl=e,this.requireAppRunning=null}setSocketUrl(e){this.socketUrl=e}_processBinaryData(e){this.notifyListeners("binary",{data:e})}async connect(e,t=[]){return this.socket&&this.disconnect(),e||(e=await getToken()),new Promise(async(s,n)=>{try{const n=new URL(this.socketUrl+"?token="+e+"&"+t.join("&"));this.socket=new WebSocket(n),this.socket.onopen=()=>{this.reconnectAttempts=0,this.reconnectTimeout=3e3,this.notifyListeners("connect",{connected:!0}),s(!0)},this.socket.onmessage=async e=>{try{if(e.data instanceof Blob){const t=new FileReader;return t.onload=()=>{this._processBinaryData(t.result)},void t.readAsArrayBuffer(e.data)}if(e.data instanceof ArrayBuffer)return void this._processBinaryData(e.data);if("string"==typeof e.data){const t=JSON.parse(e.data);if(this._checkPendingRequests(t))return;return this.notifyListeners("message",t),this.requireAppRunning?.events.includes(t.type)&&!this.listeners.has(t?.type)&&t?.type&&this.requireAppRunning&&"running"!==this.requireAppRunning?.status&&await this.requireAppRunning.callback(t),void(t.type&&this.notifyListeners(t.type,t))}}catch(t){}},this.socket.onclose=s=>{this.notifyListeners("disconnect",{code:s.code,reason:s.reason}),1e3!==s.code&&this.attemptReconnect(e,t)},this.socket.onerror=e=>{this.notifyListeners("error",e)}}catch(r){}})}disconnect(){this.socket&&(this.notifyListeners("close",{code:1e3,reason:"User disconnected"}),this.socket.close(1e3,"User disconnected"),this.socket=null)}attemptReconnect(e,t){this.maxReconnectAttempts>this.reconnectAttempts&&this.socket?(this.reconnectAttempts++,this.notifyListeners("reconnectAttempt",{attempts:this.reconnectAttempts}),setTimeout(()=>{this.connect(e,t)},this.reconnectTimeout)):this.notifyListeners("reconnectFailed",{attempts:this.reconnectAttempts})}isConnected(){return this.socket&&this.socket.readyState===WebSocket.OPEN}sendAsync(e,t=3e4){return new Promise((s,n)=>{if(!this.isConnected())return n(Error("WebSocket is not connected"));const r=e.requestId||`req_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,i={...e,requestId:r};this.pendingRequests||(this.pendingRequests=new Map),this.pendingRequests.set(r,{resolve:s,reject:n,timeoutId:setTimeout(()=>{this.pendingRequests.has(r)&&(this.pendingRequests.delete(r),n(Error(`Request ${r} timed out after ${t}ms`)))},t)}),this.send(i)})}_checkPendingRequests(e){if(!this.pendingRequests||!e.requestId)return!1;const t=this.pendingRequests.get(e.requestId);return!!t&&(clearTimeout(t.timeoutId),this.pendingRequests.delete(e.requestId),t.resolve(e),!0)}send(e){return!!this.isConnected()&&(this.socket.send(JSON.stringify(e)),!0)}on(e,t){return this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t),this.bufferedEvents.has(e)&&(this.bufferedEvents.get(e).forEach(e=>{try{t(e)}catch(s){}}),this.bufferedEvents.delete(e)),()=>this.off(e,t)}off(e,t){if(!this.listeners.has(e))return;const s=this.listeners.get(e),n=s.indexOf(t);-1!==n&&s.splice(n,1),0===s.length&&this.listeners.delete(e)}notifyListeners(e,t){const s=this.listeners.has(e);if(!s&&this.bufferableEventTypes.has(e))return this.bufferedEvents.has(e)||this.bufferedEvents.set(e,[]),void this.bufferedEvents.get(e).push(t);s&&this.listeners.get(e).forEach(e=>{try{e(t)}catch(s){}})}setAppServerStatus(e){this.requireAppRunning.status=e}setRequireAppRunning(e,t,s){return this.requireAppRunning={events:e,callback:t,status:s},()=>{this.requireAppRunning=null}}};class p{constructor(){this.buffer=""}feed(e){if(!e)return[];const t=this._tryDirectJson(e);if(t.length)return t;const s=this._tryDirectSSE(e);return s.length?s:(this.buffer+=e,this._fallbackExtract())}_tryDirectJson(e){const t=[];try{const s=JSON.parse(e);return s&&"object"==typeof s&&t.push(s),t}catch{}return e.includes("{")&&e.includes("}")?this._fallbackExtractFromText(e):[]}_tryDirectSSE(e){const t=[];for(let s of e.split("\n")){if(s=s.trim(),!s.startsWith("data:"))continue;const e=s.slice(5).trim();try{const s=JSON.parse(e);s&&"object"==typeof s&&t.push(s)}catch{}}return t}_fallbackExtract(){const e=this._fallbackExtractFromText(this.buffer);for(const t of e){const e=JSON.stringify(t),s=this.buffer.indexOf(e);-1!==s&&(this.buffer=this.buffer.slice(0,s)+this.buffer.slice(s+e.length))}return e}_fallbackExtractFromText(e){const t=[];let s=-1,n=0,r=!1,i=!1;for(let o=0;e.length>o;o++){const a=e[o];if(i)i=!1;else if("\\"===a)i=!0;else if('"'===a)r=!r;else if(!r)if("{"===a)0===n&&(s=o),n++;else if("}"===a&&(n--,0===n&&-1!==s)){const n=e.slice(s,o+1);try{const e=JSON.parse(n);t.push(e)}catch{}s=-1}}return t}}class f{constructor(){this.jsonStreamParser=new p}parseJsonStream(e){return this.jsonStreamParser.feed(e)}processRawChunk(e,t){try{const s=this.parseJsonStream(e);if(!s.length)return;for(const e of s){let s,n=e.event||"response";s=e.type&&("started"===e.type||"finished"===e.type||"status"===e.type||e.taskId)?e:e.data||e,"ai_response"===n?n="response":"ai_response_end"===n&&(n="response_end"),t(n,s)}}catch(s){}}}class x{constructor(e){this.chatApi=e,this.streamProcessor=new f,this.eventHandlers=new Map,this.mode=null}setMode(e="sse",t=null){this.mode=e}on(e,t){return this.eventHandlers.has(e)||this.eventHandlers.set(e,[]),this.eventHandlers.get(e).push(t),()=>{const s=this.eventHandlers.get(e);if(s){const e=s.indexOf(t);e>-1&&s.splice(e,1)}}}off(e,t){const s=this.eventHandlers.get(e);if(s){const e=s.indexOf(t);e>-1&&s.splice(e,1)}}emit(e,t){const s=this.eventHandlers.get(e);s&&s.forEach(e=>{try{e(t)}catch(s){}})}abort(){}send(e){"websocket"===this.mode&&g&&g.send(e)}startStream(e,t,s){return this.chatApi.sendMessage(e,e=>{if(t&&s)try{t(e)}catch(n){}this.streamProcessor.processRawChunk(e,(r,i)=>{if(t&&!s)try{t(e)}catch(n){}this.emit(r,i)})})}clear(){this.eventHandlers.clear()}}class v{constructor(){this.accessToken=null,this.refreshToken=null,this.tokenExpiry=null,this.refreshCallback=null,this.sessionId=null}decodeJWT(e){try{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),s=decodeURIComponent(atob(t).split("").map(e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)).join(""));return JSON.parse(s)}catch(t){return null}}isTokenExpired(e,t=30){if(!e)return!0;const s=this.decodeJWT(e);if(!s||!s.exp)return!0;const n=1e3*s.exp;return Date.now()>=n-1e3*t}setRefreshCallback(e){this.refreshCallback=e}async setAuth({accessToken:e,refreshToken:t,expiresIn:s,sessionId:n}){this.accessToken=e,this.refreshToken=t,this.sessionId=n;const r=this.decodeJWT(e);r&&r.exp?(this.tokenExpiry=1e3*r.exp,this.tokenExpiry<Date.now()+3e4&&await this.refreshTokens()):s&&(this.tokenExpiry=Date.now()+1e3*s)}async getAccessToken(){if(!this.accessToken)throw Error("No access token available. Initialize tokens first.");return this.isTokenExpired(this.accessToken,30)&&await this.refreshTokens(),this.accessToken}getSessionId(){return this.sessionId}async refreshTokens(){if(!this.refreshCallback)throw Error("No refresh callback provided");if(!this.refreshToken)throw Error("No refresh token available");try{const e=await this.refreshCallback(this.refreshToken);if(!e||!e.accessToken)throw Error("Invalid refresh response");return this.setAuth({accessToken:e.accessToken,refreshToken:e.refreshToken||this.refreshToken,expiresIn:e.expiresIn,sessionId:e.sessionId||this.sessionId}),this.accessToken}catch(e){throw this.clear(),e}}hasTokens(){return!!this.accessToken}clear(){this.accessToken=null,this.refreshToken=null,this.tokenExpiry=null,this.sessionId=null}}class w{constructor(){this.messages=[],this.messageIndex=new Map,this.listeners=new Set}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}_notify(){this.listeners.forEach(e=>e([...this.messages]))}_rebuildIndex(){this.messageIndex.clear(),this.messages.forEach((e,t)=>{this.messageIndex.set(e.messageId,t)})}addMessage(e){const t={...e,messageId:e.messageId||this._generateId(),timestamp:e.timestamp||Date.now(),uniqueKey:`msg-${e.messageId}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`};return this.messages.push(t),this.messageIndex.set(t.messageId,this.messages.length-1),this._notify(),t}updateMessage(e,t,s={}){const n=this.messageIndex.get(e);if(void 0===n)return null;const r=this.messages[n],i={};if(Object.entries(t).forEach(([e,t])=>{i[e]="function"==typeof t?t(r[e]):t}),s.silent)return Object.assign(this.messages[n],i),this.messages[n];const o=i.hasOwnProperty("isLive")||i.hasOwnProperty("isFinished")||i.hasOwnProperty("isThinkingFinished")||i.hasOwnProperty("statusType")||i.hasOwnProperty("sender")||i.hasOwnProperty("type")||i.hasOwnProperty("text");return this.messages[n]={...r,...i,...o&&{uniqueKey:`msg-${e}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}},this._notify(),this.messages[n]}insertMessage(e,t="end"){const s={...e,messageId:e.messageId||this._generateId(),timestamp:e.timestamp||Date.now(),uniqueKey:`msg-${e.messageId}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`};return"start"===t||0===t?this.messages.unshift(s):"end"!==t&&this.messages.length>t?this.messages.splice(t,0,s):this.messages.push(s),this._rebuildIndex(),this._notify(),s}insertMessages(e,t="end"){const s=e.map(e=>({...e,messageId:e.messageId||this._generateId(),timestamp:e.timestamp||Date.now(),uniqueKey:e.uniqueKey||`msg-${e.messageId}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,isLive:!1,isFinished:!0,text:e.content||e.text||""}));return"start"===t||0===t?this.messages.unshift(...s):"end"!==t&&this.messages.length>t?this.messages.splice(t,0,...s):this.messages.push(...s),this._rebuildIndex(),this._notify(),s}removeMessage(e){const t=this.messageIndex.get(e);return void 0!==t&&(this.messages.splice(t,1),this._rebuildIndex(),this._notify(),!0)}getMessage(e){const t=this.messageIndex.get(e);return void 0!==t?this.messages[t]:null}hasMessage(e){return this.messageIndex.has(e)}getAllMessages(){return[...this.messages]}clear(){this.messages=[],this.messageIndex.clear(),this._notify()}setMessages(e){this.messages=e.map(e=>({...e,uniqueKey:e.uniqueKey||`msg-${e.messageId}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`})),this._rebuildIndex(),this._notify()}_generateId(){return`msg-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}get count(){return this.messages.length}}class y{constructor(e,t){this.messageManager=e,this.statusRegistry=t,this.activeStreamingMessages=new Map}handleUserMessage({messageId:e,text:t,attachedFiles:s=[],...n}){return this.messageManager.addMessage({messageId:e||this.messageManager._generateId("user"),sender:"user",type:"user",text:t,attachedFiles:s,...n})}incrementChunkIndex(e){const t=this._getState(e);return t.chunkIndex+=1,t.chunkIndex}markTypeProcessed(e,t){this._getState(e).lastProcessedType=t}shouldFinishThinking(e){const t=this._getState(e);return t.hasChunk&&t.hasThinking&&!t.thinkingFinished}markThinkingFinished(e){const t=this._getState(e),s=e+"-thinking";t.thinkingFinished=!0,t.hasChunk=!0,t.hasThinking&&this.messageManager.hasMessage(s)&&this.messageManager.updateMessage(s,{isLive:!1,isThinkingFinished:!0})}}class b{constructor(){this.handlers=new Map,this.globalHandlers=[],this.streamForwarders=new Map}register(e,t,s={}){this.handlers.has(e)||this.handlers.set(e,[]);const n={handler:t,filter:s};return this.handlers.get(e).push(n),()=>{const t=this.handlers.get(e);if(t){const e=t.indexOf(n);e>-1&&t.splice(e,1)}}}registerGlobal(e,t={}){const s={handler:e,filter:t};return this.globalHandlers.push(s),()=>{const e=this.globalHandlers.indexOf(s);e>-1&&this.globalHandlers.splice(e,1)}}_matchesFilter(e,t){return!t.instanceId||e.instanceId===t.instanceId}async handle(e){const{status:t,messageId:s}=e,n=t?.type||e.type;await Promise.all(this.globalHandlers.filter(t=>this._matchesFilter(e,t.filter)).map(t=>Promise.resolve(t.handler(e)).catch(e=>{})));const r=this.handlers.get(n)||[];await Promise.all(r.filter(t=>this._matchesFilter(e,t.filter)).map(t=>Promise.resolve(t.handler(e)).catch(e=>{}))),"started"===t?.state||"in_progress"===t?.state?this._startStreamForwarding(s,n,e):"finished"!==t?.state&&"error"!==t?.state||this._stopStreamForwarding(s,n,e)}registerStreamForwarder(e){const t=Math.random().toString(36).substring(2,9);return this.streamForwarders.set(t,{forwarder:e,active:!1,messageId:null}),{id:t,stop:()=>this.streamForwarders.delete(t)}}forwardStream(e,t){this.streamForwarders.forEach(s=>{if(s.active&&s.messageId===e)try{"chunk"===t.type&&s.forwarder({...t,statusType:s.statusType})}catch(n){}})}_startStreamForwarding(e,t,s){this.streamForwarders.forEach(n=>{n.active=!0,n.messageId=e,n.statusType=t,n.forwarder.onStart&&n.forwarder.onStart({...s,statusType:t})})}_stopStreamForwarding(e,t,s){this.streamForwarders.forEach(n=>{n.messageId===e&&(n.active=!1,n.statusType=null,n.forwarder.onEnd&&n.forwarder.onEnd({...s,statusType:t}))})}clear(){this.handlers.clear(),this.globalHandlers=[],this.streamForwarders.clear()}}const k=new b;function I(){return k}const S={current:{}},C=new Map;class T{constructor(e){this.messageId=e,this.fullText="",this.displayIndex=0,this.previousDisplayIndex=0,this.isTyping=!1,this.isComplete=!1,this.isCleanedUp=!1,this.intervalId=null,this.mode=S.current.mode,this.speed=S.current.speed,this.batchSize=S.current.batchSize,this.listeners=new Set}setFullText(e,t){this.fullText+=e||"",!this.isTyping&&this.fullText.length>0&&this.startTyping(),t||!1!==this.isComplete||(this.isComplete=!0)}waitForAnimation(){return new Promise(e=>{if(this.displayIndex>=this.fullText.length)return void e();const t=setInterval(()=>{this.fullText.length>this.displayIndex||(clearInterval(t),e())},50)})}startTyping(){this.isTyping||(this.isTyping=!0,this.intervalId=setInterval(()=>{if(this.fullText.length>this.displayIndex){const e=this.getNextIncrement();this.previousDisplayIndex=this.displayIndex,this.displayIndex=Math.min(this.displayIndex+e,this.fullText.length),this.notifyListeners()}else this.isComplete&&(this.stopTyping(),this.onComplete&&(this.onComplete(),this.onComplete=null))},1e3/this.speed))}getNextIncrement(){switch(this.mode){case"char":case"chars":default:return 1;case"word":case"words":{let e=this.displayIndex+1;for(;this.fullText.length>e;){const t=this.fullText[e];if(" "===t||"\n"===t||/[.,!?;:]/.test(t))return e-this.displayIndex+1;e++}return this.fullText.length-this.displayIndex}case"batch":case"batches":return this.batchSize}}stopTyping(){this.isTyping=!1,this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}subscribe(e,t={}){const s={callback:e,newOnly:t.newOnly||!1};return this.listeners.add(s),()=>this.listeners.delete(s)}notifyListeners(){const e=this.fullText.slice(this.previousDisplayIndex,this.displayIndex),t=this.fullText.slice(0,this.displayIndex);this.listeners.forEach(s=>{s.callback(s.newOnly?e:t)})}cleanup(){this.isCleanedUp||(this.isCleanedUp=!0,this.stopTyping(),this.listeners.clear(),C.delete(this.messageId))}}function j(e){return C.get(e)}class M{constructor(){}async processChunk(e,t=null,s,n){const r=e.messageId,i=function(e){if(C.has(e))return C.get(e);const t=new T(e);return C.set(e,t),t}(e.messageId);if(i.setFullText(e.text||"",e.isLive),s){const s=e.from&&this.forwardingManager?.handlers[e.from],n=t&&this.forwardingManager?this.forwardingManager.getSession(t):null,i=s&&n&&e.from===n?.action;e.from&&!s&&this.forwardingManager&&(this._warnedActions||(this._warnedActions=new Set),this._warnedActions.has(e.from)||this._warnedActions.add(e.from));const o=s?this.forwardingManager.handlers[e.from]:null,a=e.from&&"replace"===(o?.mode||"replace");if(i){const s=this.forwardingManager.isAnimated(t),n=this.forwardingManager.getSubscriptionMode(t);if(s){const s=j(r);s.hasForwarder||(s.hasForwarder=!0,s.subscribe(s=>{this.forwardingManager.forwardChunk(t,s,e.isLive)},{newOnly:"delta"===n}),s.onComplete=()=>{this.forwardingManager.cleanupSession(t)})}else this.forwardingManager.forwardChunk(t,e.text||"",e.isLive)}if(a)return}this.messageHandlers.messageManager.hasMessage(r)?this.messageHandlers.messageManager.updateMessage(r,{text:t=>t+(e.text||"")},{silent:!0}):this.messageHandlers.messageManager.addMessage({messageId:r,sender:"ai",type:"chunk",text:e.text||"",isLive:!0,tokens:e.tokens}),await i.waitForAnimation()}async processHolding(e){}async processThinking(e){const t=e.messageId+"-thinking";this.messageHandlers.messageManager.hasMessage(t)?this.messageHandlers.messageManager.updateMessage(t,{text:t=>t+(e.text||"")}):this.messageHandlers.messageManager.addMessage({messageId:t,sender:"ai",type:"thinking",text:e.text||"",isLive:!0,timestamp:Date.now()})}async finishThinking(e){const t=e.messageId+"-thinking",s=this.messageHandlers.messageManager.getMessage(t);if(s){const e=Date.now();this.messageHandlers.messageManager.updateMessage(t,{isLive:!1,finalized:!0,duration:parseFloat(((e-(s.timestamp||e))/1e3).toFixed(1)),endTimestamp:e})}}async finishChunk(e){const t=e.messageId,s=this.messageHandlers.messageManager.getMessage(t);s&&this.messageHandlers.messageManager.updateMessage(t,{isLive:!1,finalized:!0,text:s.text||""})}async processStatus(e,t=null){const s=e.taskId||e.messageId;if(!s)return;if(this.messageHandlers.statusRegistry)try{await this.messageHandlers.statusRegistry.handle({...e,messageId:s,instanceId:t,status:{type:e.action||e.type,state:"started"===e.type?"started":"finished"===e.type?"finished":"in_progress",data:e.data}})}catch(r){}const n=this.messageHandlers.messageManager.hasMessage(s);"started"!==e.type&&"status"!==e.type?"finished"!==e.type?n?this.messageHandlers.messageManager.updateMessage(s,{statusType:e.type,data:e.data,metadata:e.metadata,isFinished:e.type.includes("end")||"finished"===e.type}):this.messageHandlers.messageManager.addMessage({messageId:s,sender:"ai",type:"status",action:e.action,statusType:e.type,data:e.data,metadata:e.metadata,isFinished:e.type.includes("end")||"finished"===e.type,isFlat:!0}):n&&this.messageHandlers.messageManager.updateMessage(s,{statusType:e.type,isFinished:!0}):n||this.messageHandlers.messageManager.addMessage({messageId:s,sender:"ai",type:"status",action:e.action,statusType:e.type,data:e.data,metadata:e.metadata,isFinished:!1,isFlat:!0})}}class R extends M{constructor(e,t,s,n=null){super(),this.messageHandlers=e,this.forwardingManager=t,this.queue=[],this.queueHistory=[],this.isProcessing=!1,this.lastMessageId=null,this.useForwarding=s,this.currentForwardingSession=null,this.onQueueComplete=null,this.instanceId=n}async process(){this.isProcessing=!0;const e=[...this.queue];this.queueHistory.push(...e),this.queue=[];for(let t=0;e.length>t;t++){const s=e[t],n=this.queueHistory.findIndex(e=>(e.messageId||e.taskId)==(s.messageId||s.taskId)),r=this.queueHistory[n-1];r&&!r.finalized&&(r.finalized=!0,await this.notifyPreviousItem(r)),await this.processItem(s)}this.isProcessing=!1,this.queue.length>0?this.process():(this.finalize(),this.onQueueComplete&&this.onQueueComplete())}filterData(e){return e}async addToQueue(e){const t=this.filterData(e);this.queue.push(t),this.isProcessing||this.process()}async notifyPreviousItem(e){"thinking"===e.type?await this.finishThinking(e):"chunk"===e.type&&await this.finishChunk(e)}async processItem(e){const{type:t}=e;e.messageId&&(this.lastMessageId=e.messageId);const s=e.action||e.data?.action,n=e.taskId||e.messageId;switch(this.forwardingManager&&this.useForwarding&&("started"===t&&s&&this.forwardingManager.startSession(n,s,this.instanceId)&&(this.currentForwardingSession=n),"finished"===t&&this.currentForwardingSession&&(this.forwardingManager.endSession(this.currentForwardingSession),this.currentForwardingSession=null),"end"===t&&this.currentForwardingSession&&(this.forwardingManager.endSession(this.currentForwardingSession),this.currentForwardingSession=null)),t){case"thinking":await this.processThinking(e);break;case"holding":await this.processHolding(e);break;case"chunk":await this.processChunk(e,this.currentForwardingSession,this.useForwarding,this.forwardingManager.newOnly);break;case"started":case"finished":case"status":case"status_start":case"status_end":case"status_error":case"error":case"action":await this.processStatus(e,this.instanceId);break;case"end":await this.finalize(e)}}async clear(){this.queue=[],this.isProcessing=!1,C.forEach(e=>{e.stopTyping(),e.cleanup()}),this.currentForwardingSession&&this.forwardingManager&&(this.forwardingManager.endSession(this.currentForwardingSession),this.currentForwardingSession=null),this.onQueueComplete&&this.onQueueComplete()}async endResponse(){this.queueHistory=[]}async finalize(e){this.lastMessageId&&await this.finishChunk({messageId:this.lastMessageId}),this.isProcessing=!1,this.queue=[]}}let z=null;class E{constructor(e={}){this.initialHandlers={...e},this.dynamicHandlers={},this.handlers={...e},this.activeSessions=new Map}register(e,t,s={}){const n=s.instanceId?`${e}:${s.instanceId}`:e;return this.dynamicHandlers[n]={handler:t,mode:s.mode||"dual",animated:!1!==s.animated,subscriptionMode:s.subscriptionMode||"delta",instanceId:s.instanceId},this._rebuildHandlers(),()=>{delete this.dynamicHandlers[n],this._rebuildHandlers()}}_rebuildHandlers(){this.handlers={...this.initialHandlers},Object.assign(this.handlers,this.dynamicHandlers)}startSession(e,t,s=null){const n=s?`${t}:${s}`:null,r=n&&this.handlers[n]||this.handlers[t];return!(!r||r.instanceId&&r.instanceId!==s||(this.activeSessions.get(e)||this.activeSessions.set(e,{action:t,handler:r.handler,mode:r.mode,animated:r.animated,subscriptionMode:r.subscriptionMode,instanceId:r.instanceId,lastText:"",fullText:"",streamEnded:!1}),0))}endSession(e){const t=this.activeSessions.get(e);t&&(t.streamEnded=!0,t.animated||this.cleanupSession(e))}cleanupSession(e){const t=this.activeSessions.get(e);if(t){if(t.handler&&t.fullText)try{t.handler(null,t.fullText,{action:t.action,event:"end",isLive:!1})}catch(s){}this.activeSessions.delete(e)}}isActive(e){return this.activeSessions.has(e)}getSession(e){return this.activeSessions.get(e)}forwardChunk(e,t,s=!0){const n=this.activeSessions.get(e);if(!n)return!1;const r=t||"";if(0===r.length&&s)return!0;let i,o;"full"===n.subscriptionMode?(o=r,i=r):(n.fullText+=r,i=r,o=n.fullText);try{n.handler(i,o,{action:n.action,isLive:!n.streamEnded&&s,event:"chunk",subscriptionMode:n.subscriptionMode})}catch(a){}return!0}shouldReplace(e){const t=this.activeSessions.get(e);return t&&"replace"===t.mode}isAnimated(e){const t=this.activeSessions.get(e);return t&&t.animated}getSubscriptionMode(e){const t=this.activeSessions.get(e);return t?t.subscriptionMode:"delta"}getActiveSessions(){return Array.from(this.activeSessions.keys())}clearAll(){this.activeSessions.clear()}}function H(e){return z?e&&Object.keys(e).length>0&&(z.initialHandlers={...e},z._rebuildHandlers()):z=new E(e),z}const N={'code[class*="language-"]':{color:"#d7d5d1",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",fontSize:"14px",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none"},'pre[class*="language-"]':{color:"white",fontFamily:'Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace',textAlign:"left",whiteSpace:"pre",wordSpacing:"normal",wordBreak:"normal",wordWrap:"normal",lineHeight:"1.5",MozTabSize:"4",OTabSize:"4",tabSize:"4",WebkitHyphens:"none",MozHyphens:"none",msHyphens:"none",hyphens:"none",padding:"1em",margin:"0.5em 0",overflow:"auto",background:"#1e1e1e",borderRadius:"15px"},'pre[class*="language-"]::-moz-selection':{textShadow:"none",background:"#0e0c0a"},'pre[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#0e0c0a"},'code[class*="language-"]::-moz-selection':{textShadow:"none",background:"#0e0c0a"},'code[class*="language-"] ::-moz-selection':{textShadow:"none",background:"#0e0c0a"},'pre[class*="language-"]::selection':{textShadow:"none",background:"#0e0c0a"},'pre[class*="language-"] ::selection':{textShadow:"none",background:"#0e0c0a"},'code[class*="language-"]::selection':{textShadow:"none",background:"#0e0c0a"},'code[class*="language-"] ::selection':{textShadow:"none",background:"#0e0c0a"},':not(pre) > code[class*="language-"]':{color:"white",background:"#222222",padding:"0.1em",borderRadius:"0.3em",whiteSpace:"normal"},comment:{color:"#545053"},string:{color:"#838083"},number:{color:"#838083"},builtin:{color:"#838083"},char:{color:"#838083"},constant:{color:"#838083"},variable:{color:"#838083"},"class-name":{color:"#D7D5D1"},function:{color:"#D7D5D1"},tag:{color:"#838083"},"attr-name":{color:"#D7D5D1"},selector:{color:"#838083"},important:{fontWeight:"bold"},bold:{fontWeight:"bold"},italic:{fontStyle:"italic"}},F=e=>{return e&&(t=c.default.Children.toArray(e).map(e=>"string"==typeof e?e:e?.props?.children?e.props.children+"":"").join(""))&&/[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]/.test(t)?"rtl":"ltr";var t},A=e.createContext(null),O=e.createContext({}),B=()=>e.useContext(O);let L={};const _={send:"/arrow up md-61-1696832363.png",attach:"/attach-1-1662364367.png",public:"/world-229-1658433759.png",arrowDown:"/chevron down-4-1696832126.png",close:"/close remove-802-1662363936.png",add:"/plus 4-12-1662493809.png",logs:"/website terminal-62-1658431404.png",terminal:"/terminal-184-1658431404.png",minimize:"/chevron down-4-1696832126.png",removeBold:"/delete-29-1661490994.png",info:"/info menu-42-1661490994.png",leftSidebar:"/grid interface-166-1658433281.png",file:"/document-180-1658431575.png",folder:"/folder file-32-1661323044.png",tick:"/check circle-3-1660219236.png",square:"/square-38-1666783764.png",search:"/search-123-1658435124.png",check:"/checkmark-7-1660219236.png",lock:"/lock-62-1691989601.png",discord:"/discord-141-1693375491.png",twitter:"/x.com-179-1693375584.png",refresh:"/refresh right-64-1696832204.png",back:"/arrow right md-49-1696832059.png",home:"/home-123-1658433759.png",forward:"/arrow left md-33-1696832059.png",newTab:"/new tab-123-1658433759.png",devTools:"/developer tools-123-1658433759.png",externalLink:"/External_link_HtLszLDBXqHilHK674zh2aKoSL7xUhyboAzP.png",deploy:"/space rocket-88-1687505465.png",projects:"/git fork-163-1658431404.png",settings:"/setting-100-1658432731.png",logout:"/Logout_q9Ri9V6YI29BipbKthCSXYDM0WoxMC05JTYO.png",notfound:"/search not found-92-1666688362.png",chatai:"/chat intelligence-6-1686046192.png",credit:"/bank card-91-1658234909.png",question:"/question mark circle-29-1662452248.png",blank:"/code-15-1658431404.png",react:"/react-native-29-1693375583.png",nextjs:"/next js circle-172-1693375539.png",vue:"/vue-160-1693375217.png",angular:"/angular-62-1693375491.png",node:"/npm-183-1693375539.png",python:"/python-122-1662819152.png",mobile:"/iphone-36-1658434492.png",laravel:"/laravel-108-1693375539.png",php:"/php-7-1693375216.png",url:"/link-68-1692683696.png",grid:"/gallery view-155-1658433281.png",list:"/bulleted list-15-1692683663.png",download:"/Download_61W5ztaZuYZoYEY7utQW7FU1y4lMiUO2rHjg.png",upload:"/upload-123-1658433759.png",starfilled:"/star-31-1660810259.png",edit:"/pen-304-1658238246.png",globe:"/earth-30-1687505545.png",minus:"/minus 4-9-1660810450.png",switch:"/changing-330-1658238246.png",history:"/counter clockwise undo-46-1658435834.png",golang:"/Go_Logo_Blue.svg.png",github:"/github-8-1693375538.png",pull:"/git pull-170-1658431404.png",sync:"/update left-39-1696832255.png",error:"/error triangle-16-1662499385.png",reload:"/flash refresh-94-1658434699.png",filter:"/filter-25-1662364403.png",sets:"/setting-41-1662364403.png",read:"/eye-20-1691989638.png",index:"/database-27-1658237565.png",debug:"/terminal-184-1658431404.png",brain:"/brain-41-1686045820.png",command:"/command-147-1658431404.png",pdf:"/document pdf-66-1662364367.png",websocket:"/power outlet-81-1689918655.png",ai:"/ai chip-118-1686045593.png",dashboard:"/dashboard 6-8-1662364403.png",store:"/store-30-1662820309.png",icons:"/ui8-139-1693375584.png",build:"/tools-58-1662364403.png",linkedin:"/linkedin-113-1693375539.png",support:"/headphone-24-1663753435.png",nofee:"/snow%20bag-318-1672139659.png",anytime:"/circle%20clock-39-1658435834.png",free:"/bird-106-1678249964.png",cloud:"/cloud%20connect-56-1658236831.png",code:"/code-12-1658431404.png",screenshot:"/scan%20image-226-1658434699.png",pagecontent:"/web%20page%20download-36-1658436291.png",improve:"/ai%20neural%20share-142-1686045754.png",roadmap:"/roadmap-159-1681196175.png"},D={figma:"/icons/project/Figma-logo.svg.png",githubraw:"/icons/project/github-mark-white.png"},P=(e,t,n="#000",r={},i=!1)=>{if(i)return s.jsx("img",{src:D[e]?.replace(/ /g,"%20"),alt:e,style:{width:t,height:t,objectFit:"contain",...r}});let o=_[e]?.replace(/ /g,"%20")||e?.replace(/ /g,"%20");return o=e.startsWith("http")?e:"https://cdn.oblien.com/static/png-icons/"+o,s.jsx("div",{style:{maskImage:`url('${o}')`,maskSize:"contain",maskRepeat:"no-repeat",maskPosition:"center",WebkitMaskSize:"contain",WebkitMaskRepeat:"no-repeat",WebkitMaskPosition:"center",width:t,height:t,backgroundColor:n,...r}})},q=({showLoadMore:e,enableHistory:t,hasMoreMessages:n,messagesLength:r,error:i,isInitialLoading:o,loadMoreMessages:a,isLoadingMore:l})=>e&&t&&n&&0!==r&&!i&&!o?s.jsx("div",{className:"react-chat-core-load-more flex justify-center py-4",children:s.jsx("button",{onClick:a,disabled:l,className:"react-chat-core-load-more-button flex items-center gap-2 text-theme-tertiary hover:text-theme-primary transition-colors disabled:opacity-50 disabled:cursor-not-allowed opacity-50",children:s.jsxs(s.Fragment,l?{children:[s.jsx("div",{className:"react-chat-core-load-more-spinner w-4 h-4 border-2 border-theme-primary border-t-theme-tertiary rounded-full animate-spin"}),s.jsx("span",{className:"react-chat-core-load-more-text text-sm",children:"Loading..."})]}:{children:[P("refresh",18,"currentColor"),s.jsx("span",{className:"react-chat-core-load-more-text text-sm",children:"Load more messages"})]})})}):null,W=({error:e})=>{const{welcome:t}=B(),n=(()=>{if(!e)return null;let t="";return t="string"==typeof e?e:e.message?e.message:e.error?"string"==typeof e.error?e.error:e.error.message||"An error occurred":"An unexpected error occurred",t})();return s.jsx("div",{className:"react-ai-agent-start-chat flex flex-col items-center justify-center h-full",children:"object"!=typeof t||t?.title?s.jsxs("div",{className:"react-ai-agent-start-chat-content text-center mb-8 flex flex-col items-center justify-center gap-2",children:[e&&s.jsx("span",{className:"react-ai-agent-start-chat-error-icon",children:P("error",70,"currentColor",{marginBottom:"10px"})}),s.jsx("h2",{className:"react-ai-agent-start-chat-title text-2xl font-light text-theme-primary mb-4",children:e?"Something went wrong":t?.title}),s.jsx("p",{className:"react-ai-agent-start-chat-description text-theme-muted mb-6 max-w-md text-base leading-relaxed",children:e?n:t?.description}),e&&e.type&&s.jsx("p",{className:"react-ai-agent-start-chat-error-type text-xs text-theme-tertiary mt-2 opacity-50",children:e.type.replace("_"," ")})]}):t})},U=({WelcomeComponent:e,error:t,isPanelOpen:n})=>e?s.jsx(e,{error:t}):s.jsx(W,{error:t,miniMode:n}),V=()=>s.jsxs("div",{className:"react-ai-agent-loading-mock space-y-8 px-5 pt-20 pb-40 w-full max-w-[800px] mx-auto",children:[s.jsxs("div",{className:"react-ai-agent-loading-mock-welcome flex items-start gap-4 mb-12",children:[s.jsx("div",{className:"react-ai-agent-loading-mock-avatar react-ai-agent-loading-mock-avatar-welcome w-10 h-10 rounded-full shimmer-skeleton"}),s.jsxs("div",{className:"react-ai-agent-loading-mock-content flex-1 space-y-3",children:[s.jsx("div",{className:"react-ai-agent-loading-mock-line react-ai-agent-loading-mock-line-1 h-4 rounded-full shimmer-skeleton w-2/3"}),s.jsx("div",{className:"react-ai-agent-loading-mock-line react-ai-agent-loading-mock-line-2 h-4 rounded-full shimmer-skeleton w-1/2"})]})]}),Array.from({length:2}).map((e,t)=>s.jsxs("div",{className:"react-ai-agent-loading-mock-message-group space-y-6",children:[s.jsxs("div",{className:"react-ai-agent-loading-mock-message react-ai-agent-loading-mock-message-user flex items-start gap-4 justify-end",children:[s.jsx("div",{className:"react-ai-agent-loading-mock-message-content max-w-[70%] space-y-2",children:s.jsx("div",{className:"react-ai-agent-loading-mock-line h-3 rounded-full shimmer-skeleton w-full"})}),s.jsx("div",{className:"react-ai-agent-loading-mock-avatar react-ai-agent-loading-mock-avatar-user w-8 h-8 rounded-full shimmer-skeleton"})]}),s.jsxs("div",{className:"react-ai-agent-loading-mock-message react-ai-agent-loading-mock-message-ai flex items-start gap-4",children:[s.jsx("div",{className:"react-ai-agent-loading-mock-avatar react-ai-agent-loading-mock-avatar-ai w-8 h-8 rounded-full shimmer-skeleton"}),s.jsxs("div",{className:"react-ai-agent-loading-mock-message-content flex-1 space-y-3",children:[s.jsx("div",{className:"react-ai-agent-loading-mock-line react-ai-agent-loading-mock-line-1 h-3 rounded-full shimmer-skeleton w-4/5"}),s.jsx("div",{className:"react-ai-agent-loading-mock-line react-ai-agent-loading-mock-line-2 h-3 rounded-full shimmer-skeleton w-3/4"})]})]})]},t))]}),$=({onComplete:t,duration:n=800})=>{const[r,i]=e.useState(0),[o,a]=e.useState(!1),l=e.useRef(0);return e.useEffect(()=>{l.current=300,requestAnimationFrame(()=>{i(l.current)});const e=setTimeout(()=>{a(!0),t?.()},n);return()=>clearTimeout(e)},[n,t]),o?null:s.jsx("div",{style:{height:r+"px",transition:`height ${n}ms cubic-bezier(0.4, 0, 0.2, 1)`,pointerEvents:"none"}})};function G(e){return()=>e}function K(e){e()}function J(e,t){return s=>e(t(s))}function Y(e,t){return()=>e(t)}function Q(e){return void 0!==e}function X(){}function Z(e,t){return t(e),e}function ee(e,t){return t(e)}function te(...e){return e}function se(e,t){return e(1,t)}function ne(e,t){e(0,t)}function re(e){e(2)}function ie(e){return e(4)}function oe(e,t){return se(e,function(e){return t=>e(0,t)}(t))}function ae(e,t){const s=e(1,e=>{s(),t(e)});return s}function le(e){let t,s;return n=>r=>{t=r,s&&clearTimeout(s),s=setTimeout(()=>{n(t)},e)}}function ce(e,t){return e===t}function de(e=ce){let t;return s=>n=>{e(t,n)||(t=n,s(n))}}function ue(e){return t=>s=>{e(s)&&t(s)}}function he(e){return t=>J(t,e)}function me(e){return t=>()=>{t(e)}}function ge(e,...t){const s=function(...e){return t=>e.reduceRight(ee,t)}(...t);return(t,n)=>{switch(t){case 2:return void re(e);case 1:return se(e,s(n))}}}function pe(e,t){return s=>n=>{s(t=e(t,n))}}function fe(e){return t=>s=>{e>0?e--:t(s)}}function xe(e){let t,s=null;return n=>r=>{s=r,!t&&(t=setTimeout(()=>{t=void 0,n(s)},e))}}function ve(...e){const t=Array(e.length);let s=0,n=null;const r=Math.pow(2,e.length)-1;return e.forEach((e,i)=>{const o=Math.pow(2,i);se(e,e=>{const a=s;s|=o,t[i]=e,a!==r&&s===r&&n&&(n(),n=null)})}),e=>i=>{const o=()=>{e([i].concat(t))};s===r?o():n=o}}function we(e){let t=e;const s=be();return(e,n)=>{switch(e){case 0:t=n;break;case 1:n(t);break;case 4:return t}return s(e,n)}}function ye(e,t){return Z(we(t),t=>oe(e,t))}function be(){const e=[];return(t,s)=>{switch(t){case 0:return void e.slice().forEach(e=>{e(s)});case 2:return void e.splice(0,e.length);case 1:return e.push(s),()=>{const t=e.indexOf(s);t>-1&&e.splice(t,1)}}}}function ke(e){return Z(be(),t=>oe(e,t))}function Ie(e,t=[],{singleton:s}={singleton:!0}){return{constructor:e,dependencies:t,id:Se(),singleton:s}}const Se=()=>Symbol();function Ce(...e){const t=be(),s=Array(e.length);let n=0;const r=Math.pow(2,e.length)-1;return e.forEach((e,i)=>{const o=Math.pow(2,i);se(e,e=>{s[i]=e,n|=o,n===r&&ne(t,s)})}),function(e,i){switch(e){case 2:return void re(t);case 1:return n===r&&i(s),se(t,i)}}}function Te(e,t=ce){return ge(e,de(t))}function je(...e){return function(t,s){switch(t){case 2:return;case 1:return function(...e){return()=>{e.map(K)}}(...e.map(e=>se(e,s)))}}}var Me=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(Me||{});const Re=Ie(()=>{const e=we(3);return{log:we((t,s,n=1)=>{null!=(typeof globalThis>"u"?window:globalThis).VIRTUOSO_LOG_LEVEL||ie(e)}),logLevel:e}},[],{singleton:!0});function ze(e,t,s){return Ee(e,t,s).callbackRef}function Ee(e,t,s){const n=c.default.useRef(null);let r=e=>{};const i=c.default.useMemo(()=>"u">typeof ResizeObserver?new ResizeObserver(t=>{const n=()=>{const s=t[0].target;null!==s.offsetParent&&e(s)};s?n():requestAnimationFrame(n)}):null,[e,s]);return r=e=>{e&&t?(null==i||i.observe(e),n.current=e):(n.current&&(null==i||i.unobserve(n.current)),n.current=null)},{callbackRef:r,ref:n}}function He(e,t,s){return"normal"!==t&&!(null!=t&&t.endsWith("px"))&&s(e+" was not resolved to pixel value correctly",t,Me.WARN),"normal"===t?0:parseInt(null!=t?t:"0",10)}function Ne(e,t,s){const n=c.default.useRef(null),r=c.default.useCallback(s=>{if(null==s||!s.offsetParent)return;const r=s.getBoundingClientRect(),i=r.width;let a,l;if(t){const e=t.getBoundingClientRect(),s=r.top-e.top;l=e.height-Math.max(0,s),a=s+t.scrollTop}else{const e=o.current.ownerDocument.defaultView;l=e.innerHeight-Math.max(0,r.top),a=r.top+e.scrollY}n.current={offsetTop:a,visibleHeight:l,visibleWidth:i},e(n.current)},[e,t]),{callbackRef:i,ref:o}=Ee(r,!0,s),a=c.default.useCallback(()=>{r(o.current)},[r,o]);return c.default.useEffect(()=>{var e;if(t){t.addEventListener("scroll",a);const e=new ResizeObserver(()=>{requestAnimationFrame(a)});return e.observe(t),()=>{t.removeEventListener("scroll",a),e.unobserve(t)}}{const t=null==(e=o.current)?void 0:e.ownerDocument.defaultView;return null==t||t.addEventListener("scroll",a),null==t||t.addEventListener("resize",a),()=>{null==t||t.removeEventListener("scroll",a),null==t||t.removeEventListener("resize",a)}}},[a,t,o]),i}const Fe=Ie(()=>{const e=be(),t=be(),s=we(0),n=be(),r=we(0),i=be(),o=be(),a=we(0),l=we(0),c=we(0),d=we(0),u=be(),h=be(),m=we(!1),g=we(!1),p=we(!1);return oe(ge(e,he(({scrollTop:e})=>e)),t),oe(ge(e,he(({scrollHeight:e})=>e)),o),oe(t,r),{deviation:s,fixedFooterHeight:c,fixedHeaderHeight:l,footerHeight:d,headerHeight:a,horizontalDirection:g,scrollBy:h,scrollContainerState:e,scrollHeight:o,scrollingInProgress:m,scrollTo:u,scrollTop:t,skipAnimationFrameInResizeObserver:p,smoothScrollTargetReached:n,statefulScrollTop:r,viewportHeight:i}},[],{singleton:!0}),Ae={lvl:0};function Oe(e,t){const s=e.length;if(0===s)return[];let{index:n,value:r}=t(e[0]);const i=[];for(let o=1;s>o;o++){const{index:s,value:a}=t(e[o]);i.push({end:s-1,start:n,value:r}),n=s,r=a}return i.push({end:1/0,start:n,value:r}),i}function Be(e){return e===Ae}function Le(e,t){if(!Be(e))return t===e.k?e.v:Le(e.k>t?e.l:e.r,t)}function _e(e,t,s="k"){if(Be(e))return[-1/0,void 0];if(+e[s]===t)return[e.k,e.v];if(t>+e[s]){const n=_e(e.r,t,s);return n[0]===-1/0?[e.k,e.v]:n}return _e(e.l,t,s)}function De(e,t,s){return Be(e)?Qe(t,s,1):t===e.k?Ge(e,{k:t,v:s}):function(e){return Ze(Xe(e))}(Ge(e,e.k>t?{l:De(e.l,t,s)}:{r:De(e.r,t,s)}))}function Pe(){return Ae}function qe(e,t,s){return Be(e)?[]:function(e){return Oe(e,({k:e,v:t})=>({index:e,value:t}))}(Ve(e,_e(e,t)[0],s))}function We(e,t){if(Be(e))return Ae;const{k:s,l:n,r:r}=e;if(t===s){if(Be(n))return r;if(Be(r))return n;{const[t,s]=Ye(n);return $e(Ge(e,{k:t,l:Ke(n),v:s}))}}return $e(Ge(e,s>t?{l:We(n,t)}:{r:We(r,t)}))}function Ue(e){return Be(e)?[]:[...Ue(e.l),{k:e.k,v:e.v},...Ue(e.r)]}function Ve(e,t,s){if(Be(e))return[];const{k:n,l:r,r:i,v:o}=e;let a=[];return n>t&&(a=a.concat(Ve(r,t,s))),n>=t&&s>=n&&a.push({k:n,v:o}),s>=n&&(a=a.concat(Ve(i,t,s))),a}function $e(e){const{l:t,lvl:s,r:n}=e;if(n.lvl>=s-1&&t.lvl>=s-1)return e;if(s>n.lvl+1){if(Je(t))return Xe(Ge(e,{lvl:s-1}));if(!Be(t)&&!Be(t.r))return Ge(t.r,{l:Ge(t,{r:t.r.l}),lvl:s,r:Ge(e,{l:t.r.r,lvl:s-1})});throw Error("Unexpected empty nodes")}if(Je(e))return Ze(Ge(e,{lvl:s-1}));if(Be(n)||Be(n.l))throw Error("Unexpected empty nodes");{const t=n.l,r=Je(t)?n.lvl-1:n.lvl;return Ge(t,{l:Ge(e,{lvl:s-1,r:t.l}),lvl:t.lvl+1,r:Ze(Ge(n,{l:t.r,lvl:r}))})}}function Ge(e,t){return Qe(void 0!==t.k?t.k:e.k,void 0!==t.v?t.v:e.v,void 0!==t.lvl?t.lvl:e.lvl,void 0!==t.l?t.l:e.l,void 0!==t.r?t.r:e.r)}function Ke(e){return Be(e.r)?e.l:$e(Ge(e,{r:Ke(e.r)}))}function Je(e){return Be(e)||e.lvl>e.r.lvl}function Ye(e){return Be(e.r)?[e.k,e.v]:Ye(e.r)}function Qe(e,t,s,n=Ae,r=Ae){return{k:e,l:n,lvl:s,r:r,v:t}}function Xe(e){const{l:t}=e;return Be(t)||t.lvl!==e.lvl?e:Ge(t,{r:Ge(e,{l:t.r})})}function Ze(e){const{lvl:t,r:s}=e;return Be(s)||Be(s.r)||s.lvl!==t||s.r.lvl!==t?e:Ge(s,{l:Ge(e,{r:s.l}),lvl:t+1})}function et(e,t){return!(!e||e.startIndex!==t.startIndex||e.endIndex!==t.endIndex)}function tt(e,t){return!(!e||e[0]!==t[0]||e[1]!==t[1])}const st=Ie(()=>({recalcInProgress:we(!1)}),[],{singleton:!0});function nt(e,t,s){return e[rt(e,t,s)]}function rt(e,t,s,n=0){let r=e.length-1;for(;r>=n;){const i=Math.floor((n+r)/2),o=s(e[i],t);if(0===o)return i;if(-1===o){if(2>r-n)return i-1;r=i-1}else{if(r===n)return i;n=i+1}}throw Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function it(e,t){return Math.round(e.getBoundingClientRect()[t])}function ot(e){return!Be(e.groupOffsetTree)}function at({index:e},t){return t===e?0:e>t?-1:1}function lt({offset:e},t){return t===e?0:e>t?-1:1}function ct(e,t,s){if(0===t.length)return 0;const{index:n,offset:r,size:i}=nt(t,e,at),o=e-n,a=i*o+(o-1)*s+r;return a>0?a+s:a}function dt(e,t){if(!ot(t))return e;let s=0;for(;e+s>=t.groupIndices[s];)s++;return e+s}function ut(e,t,s){if(function(e){return"u">typeof e.groupIndex}(e))return t.groupIndices[e.groupIndex]+1;{let n=dt("LAST"===e.index?s:e.index,t);return n=Math.max(0,n,Math.min(s,n)),n}}function ht(e,[t,s,n,r]){t.length>0&&n("received item sizes",t,Me.DEBUG);const i=e.sizeTree;let o=i,a=0;if(s.length>0&&Be(i)&&2===t.length){const e=t[0].size,n=t[1].size;o=s.reduce((t,s)=>De(De(t,s,e),s+1,n),o)}else[o,a]=function(e,t){let s=Be(e)?0:1/0;for(const n of t){const{endIndex:t,size:r,startIndex:i}=n;if(s=Math.min(s,i),Be(e)){e=De(e,0,r);continue}const o=qe(e,i-1,t+1);if(o.some(ft(n)))continue;let a=!1,l=!1;for(const{end:s,start:n,value:c}of o)a?(t>=n||r===c)&&(e=We(e,n)):(l=c!==r,a=!0),s>t&&t>=n&&c!==r&&(e=De(e,t+1,c));l&&(e=De(e,i,r))}return[e,s]}(o,t);if(o===i)return e;const{lastIndex:l,lastOffset:c,lastSize:d,offsetTree:u}=gt(e.offsetTree,a,o,r);return{groupIndices:s,groupOffsetTree:s.reduce((e,t)=>De(e,t,ct(t,u,r)),Pe()),lastIndex:l,lastOffset:c,lastSize:d,offsetTree:u,sizeTree:o}}function mt(e,t){let s=0,n=0;for(;e>s;)s+=t[n+1]-t[n]-1,n++;return n-(s===e?0:1)}function gt(e,t,s,n){let r=e,i=0,o=0,a=0,l=0;if(0!==t){l=rt(r,t-1,at),a=r[l].offset;const e=_e(s,t-1);i=e[0],o=e[1],r.length&&r[l].size===_e(s,t)[1]&&(l-=1),r=r.slice(0,l+1)}else r=[];for(const{start:c,value:d}of qe(s,t,1/0)){const e=c-i,t=e*o+a+e*n;r.push({index:c,offset:t,size:d}),i=c,a=t,o=d}return{lastIndex:i,lastOffset:a,lastSize:o,offsetTree:r}}function pt(e){return{index:e.index,value:e}}function ft(e){const{endIndex:t,size:s,startIndex:n}=e;return e=>e.start===n&&(e.end===t||e.end===1/0)&&e.value===s}const xt={offsetHeight:"height",offsetWidth:"width"},vt=Ie(([{log:e},{recalcInProgress:t}])=>{const s=be(),n=be(),r=ye(n,0),i=be(),o=be(),a=we(0),l=we([]),c=we(void 0),d=we(void 0),u=we(void 0),h=we(void 0),m=we((e,t)=>it(e,xt[t])),g=we(void 0),p=we(0),f={groupIndices:[],groupOffsetTree:Pe(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:Pe()},x=ye(ge(s,ve(l,e,p),pe(ht,f),de()),f),v=ye(ge(l,de(),pe((e,t)=>({current:t,prev:e.current}),{current:[],prev:[]}),he(({prev:e})=>e)),[]);oe(ge(l,ue(e=>e.length>0),ve(x,p),he(([e,t,s])=>{const n=e.reduce((e,n,r)=>De(e,n,ct(n,t.offsetTree,s)||r),Pe());return{...t,groupIndices:e,groupOffsetTree:n}})),x),oe(ge(n,ve(x),ue(([e,{lastIndex:t}])=>t>e),he(([e,{lastIndex:t,lastSize:s}])=>[{endIndex:t,size:s,startIndex:e}])),s),oe(c,d);const w=ye(ge(c,he(e=>void 0===e)),!0);oe(ge(d,ue(e=>void 0!==e&&Be(ie(x).sizeTree)),he(e=>{const t=ie(u),s=ie(l).length>0;return t?s?[{endIndex:0,size:t,startIndex:0},{endIndex:1,size:e,startIndex:1}]:[]:[{endIndex:0,size:e,startIndex:0}]})),s),oe(ge(h,ue(e=>void 0!==e&&e.length>0&&Be(ie(x).sizeTree)),he(e=>{const t=[];let s=e[0],n=0;for(let r=1;e.length>r;r++){const i=e[r];i!==s&&(t.push({endIndex:r-1,size:s,startIndex:n}),s=i,n=r)}return t.push({endIndex:e.length-1,size:s,startIndex:n}),t})),s),oe(ge(l,ve(u,d),ue(([,e,t])=>void 0!==e&&void 0!==t),he(([e,t,s])=>{const n=[];for(let r=0;e.length>r;r++){const i=e[r],o=e[r+1];n.push({startIndex:i,endIndex:i,size:t}),void 0!==o&&n.push({startIndex:i+1,endIndex:o-1,size:s})}return n})),s);const y=ke(ge(s,ve(x),pe(({sizes:e},[t,s])=>({changed:s!==e,sizes:s}),{changed:!1,sizes:f}),he(e=>e.changed)));se(ge(a,pe((e,t)=>({diff:e.prev-t,prev:t}),{diff:0,prev:0}),he(e=>e.diff)),e=>{const{groupIndices:s}=ie(x);if(e>0)ne(t,!0),ne(i,e+mt(e,s));else if(0>e){const t=ie(v);t.length>0&&(e-=mt(-e,t)),ne(o,e)}}),se(ge(a,ve(e)),([e,t])=>{0>e&&t("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:a},Me.ERROR)});const b=ke(i);oe(ge(i,ve(x),he(([e,t])=>{const s=[],n=t.lastSize;if(t.groupIndices.length>0){const r=Le(t.sizeTree,0);let i=0,o=0;for(;e>i;){const e=t.groupIndices[o],a=t.groupIndices.length===o+1?1/0:t.groupIndices[o+1]-e-1;s.push({endIndex:e,size:r,startIndex:e}),s.push({endIndex:e+1+a-1,size:n,startIndex:e+1}),o++,i+=a+1}const a=Ue(t.sizeTree);return i!==e&&a.shift(),a.reduce((t,{k:s,v:n})=>{let r=t.ranges;return 0!==t.prevSize&&(r=[...t.ranges,{endIndex:s+e-1,size:t.prevSize,startIndex:t.prevIndex}]),{prevIndex:s+e,prevSize:n,ranges:r}},{prevIndex:e,prevSize:0,ranges:s}).ranges}return Ue(t.sizeTree).reduce((t,{k:s,v:n})=>({prevIndex:s+e,prevSize:n,ranges:[...t.ranges,{endIndex:s+e-1,size:t.prevSize,startIndex:t.prevIndex}]}),{prevIndex:0,prevSize:n,ranges:[]}).ranges})),s);const k=ke(ge(o,ve(x,p),he(([e,{offsetTree:t},s])=>ct(-e,t,s))));return oe(ge(o,ve(x,p),he(([e,t,s])=>{if(t.groupIndices.length>0){if(Be(t.sizeTree))return t;let n=Pe();const r=ie(v);let i=0,o=0,a=0;for(;-e>i;){a=r[o];const e=r[o+1]-a-1;o++,i+=e+1}return n=Ue(t.sizeTree).reduce((t,{k:s,v:n})=>De(t,Math.max(0,s+e),n),n),i!==-e&&(n=De(n,0,Le(t.sizeTree,a)),n=De(n,1,_e(t.sizeTree,1-e)[1])),{...t,sizeTree:n,...gt(t.offsetTree,0,n,s)}}{const n=Ue(t.sizeTree).reduce((t,{k:s,v:n})=>De(t,Math.max(0,s+e),n),Pe());return{...t,sizeTree:n,...gt(t.offsetTree,0,n,s)}}})),x),{beforeUnshiftWith:b,data:g,defaultItemSize:d,firstItemIndex:a,fixedItemSize:c,fixedGroupSize:u,gap:p,groupIndices:l,heightEstimates:h,itemSize:m,listRefresh:y,shiftWith:o,shiftWithOffset:k,sizeRanges:s,sizes:x,statefulTotalCount:r,totalCount:n,trackItemSizes:w,unshiftWith:i}},te(Re,st),{singleton:!0});function wt(e){return e.reduce((e,t)=>(e.groupIndices.push(e.totalCount),e.totalCount+=t+1,e),{groupIndices:[],totalCount:0})}const yt=Ie(([{groupIndices:e,sizes:t,totalCount:s},{headerHeight:n,scrollTop:r}])=>{const i=be(),o=be(),a=ke(ge(i,he(wt)));return oe(ge(a,he(e=>e.totalCount)),s),oe(ge(a,he(e=>e.groupIndices)),e),oe(ge(Ce(r,t,n),ue(([e,t])=>ot(t)),he(([e,t,s])=>_e(t.groupOffsetTree,Math.max(e-s,0),"v")[0]),de(),he(e=>[e])),o),{groupCounts:i,topItemsIndexes:o}},te(vt,Fe)),bt=Ie(([{log:e}])=>{const t=we(!1),s=ke(ge(t,ue(e=>e),de()));return se(t,t=>{t&&ie(e)("props updated",{},Me.DEBUG)}),{didMount:s,propsReady:t}},te(Re),{singleton:!0}),kt="u">typeof document&&"scrollBehavior"in document.documentElement.style;function It(e){const t="number"==typeof e?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!kt)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const St=Ie(([{gap:e,listRefresh:t,sizes:s,totalCount:n},{fixedFooterHeight:r,fixedHeaderHeight:i,footerHeight:o,headerHeight:a,scrollingInProgress:l,scrollTo:c,smoothScrollTargetReached:d,viewportHeight:u},{log:h}])=>{const m=be(),g=be(),p=we(0);let f=null,x=null,v=null;function w(){f&&(f(),f=null),v&&(v(),v=null),x&&(clearTimeout(x),x=null),ne(l,!1)}return oe(ge(m,ve(s,u,n,p,a,o,h),ve(e,i,r),he(([[e,s,n,r,i,o,a,c],u,h,p])=>{const y=It(e),{align:b,behavior:k,offset:I}=y,S=r-1,C=ut(y,s,S);let T=ct(C,s.offsetTree,u)+o;"end"===b?(T+=h+_e(s.sizeTree,C)[1]-n+p,C===S&&(T+=a)):"center"===b?T+=(h+_e(s.sizeTree,C)[1]-n+p)/2:T-=i,I&&(T+=I);const j=t=>{w(),t?(c("retrying to scroll to",{location:e},Me.DEBUG),ne(m,e)):(ne(g,!0),c("list did not change, scroll successful",{},Me.DEBUG))};if(w(),"smooth"===k){let e=!1;v=se(t,t=>{e=e||t}),f=ae(d,()=>{j(e)})}else f=ae(ge(t,e=>{const t=setTimeout(()=>{e(!1)},150);return s=>{s&&(e(!0),clearTimeout(t))}}),j);return x=setTimeout(()=>{w()},1200),ne(l,!0),c("scrolling from index to",{behavior:k,index:C,top:T},Me.DEBUG),{behavior:k,top:T}})),c),{scrollTargetReached:g,scrollToIndex:m,topListHeight:p}},te(vt,Fe,Re),{singleton:!0});function Ct(e,t){0==e?t():requestAnimationFrame(()=>{Ct(e-1,t)})}function Tt(e,t){return"number"==typeof e?e:"LAST"===e.index?t-1:e.index}const jt=Ie(([{defaultItemSize:e,listRefresh:t,sizes:s},{scrollTop:n},{scrollTargetReached:r,scrollToIndex:i},{didMount:o}])=>{const a=we(!0),l=we(0),c=we(!0);return oe(ge(o,ve(l),ue(([e,t])=>!!t),me(!1)),a),oe(ge(o,ve(l),ue(([e,t])=>!!t),me(!1)),c),se(ge(Ce(t,o),ve(a,s,e,c),ue(([[,e],t,{sizeTree:s},n,r])=>e&&(!Be(s)||Q(n))&&!t&&!r),ve(l)),([,e])=>{ae(r,()=>{ne(c,!0)}),Ct(4,()=>{ae(n,()=>{ne(a,!0)}),ne(i,e)})}),{initialItemFinalLocationReached:c,initialTopMostItemIndex:l,scrolledToInitialItem:a}},te(vt,Fe,St,bt),{singleton:!0});function Mt(e,t){return 1.01>Math.abs(e-t)}const Rt="up",zt="down",Et={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},Ht=Ie(([{footerHeight:e,headerHeight:t,scrollBy:s,scrollContainerState:n,scrollTop:r,viewportHeight:i}])=>{const o=we(!1),a=we(!0),l=be(),c=be(),d=we(4),u=we(0),h=ye(ge(je(ge(Te(r),fe(1),me(!0)),ge(Te(r),fe(1),me(!1),le(100))),de()),!1),m=ye(ge(je(ge(s,me(!0)),ge(s,me(!1),le(200))),de()),!1);oe(ge(Ce(Te(r),Te(u)),he(([e,t])=>t>=e),de()),a),oe(ge(a,xe(50)),c);const g=ke(ge(Ce(n,Te(i),Te(t),Te(e),Te(d)),pe((e,[{scrollHeight:t,scrollTop:s},n,r,i,o])=>{const a={scrollHeight:t,scrollTop:s,viewportHeight:n};if(s+n-t>-o){let t,n;return s>e.state.scrollTop?(t="SCROLLED_DOWN",n=e.state.scrollTop-s):(t="SIZE_DECREASED",n=e.state.scrollTop-s||e.scrollTopDelta),{atBottom:!0,atBottomBecause:t,scrollTopDelta:n,state:a}}let l;return l=a.scrollHeight>e.state.scrollHeight?"SIZE_INCREASED":e.state.viewportHeight>n?"VIEWPORT_HEIGHT_DECREASING":e.state.scrollTop>s?"SCROLLING_UPWARDS":"NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:l,state:a}},Et),de((e,t)=>e&&e.atBottom===t.atBottom))),p=ye(ge(n,pe((e,{scrollHeight:t,scrollTop:s,viewportHeight:n})=>Mt(e.scrollHeight,t)?{changed:!1,jump:0,scrollHeight:t,scrollTop:s}:e.scrollTop!==s&&1>t-(s+n)?{changed:!0,jump:e.scrollTop-s,scrollHeight:t,scrollTop:s}:{changed:!0,jump:0,scrollHeight:t,scrollTop:s},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),ue(e=>e.changed),he(e=>e.jump)),0);oe(ge(g,he(e=>e.atBottom)),o),oe(ge(o,xe(50)),l);const f=we(zt);oe(ge(n,he(({scrollTop:e})=>e),de(),pe((e,t)=>ie(m)?{direction:e.direction,prevScrollTop:t}:{direction:e.prevScrollTop>t?Rt:zt,prevScrollTop:t},{direction:zt,prevScrollTop:0}),he(e=>e.direction)),f),oe(ge(n,xe(50),me("none")),f);const x=we(0);return oe(ge(h,ue(e=>!e),me(0)),x),oe(ge(r,xe(100),ve(h),ue(([e,t])=>t),pe(([e,t],[s])=>[t,s],[0,0]),he(([e,t])=>t-e)),x),{atBottomState:g,atBottomStateChange:l,atBottomThreshold:d,atTopStateChange:c,atTopThreshold:u,isAtBottom:o,isAtTop:a,isScrolling:h,lastJumpDueToItemResize:p,scrollDirection:f,scrollVelocity:x}},te(Fe)),Nt="top",Ft="bottom",At="none";function Ot(e,t,s){return"number"==typeof e?s===Rt&&t===Nt||s===zt&&t===Ft?e:0:s===Rt?t===Nt?e.main:e.reverse:t===Ft?e.main:e.reverse}function Bt(e,t){var s;return"number"==typeof e?e:null!=(s=e[t])?s:0}const Lt=Ie(([{deviation:e,fixedHeaderHeight:t,headerHeight:s,scrollTop:n,viewportHeight:r}])=>{const i=be(),o=we(0),a=we(0),l=we(0);return{increaseViewportBy:a,listBoundary:i,overscan:l,topListHeight:o,visibleRange:ye(ge(Ce(Te(n),Te(r),Te(s),Te(i,tt),Te(l),Te(o),Te(t),Te(e),Te(a)),he(([e,t,s,[n,r],i,o,a,l,c])=>{const d=e-l,u=o+a,h=Math.max(s-d,0);let m=At;const g=Bt(c,Nt),p=Bt(c,Ft);return n-=l,r+=s+a,(n+=s+a)>e+u-g&&(m=Rt),e-h+t+p>(r-=l)&&(m=zt),m!==At?[Math.max(d-s-Ot(i,Nt,m)-g,0),d-h-a+t+Ot(i,Ft,m)+p]:null}),ue(e=>null!=e),de(tt)),[0,0])}},te(Fe),{singleton:!0}),_t={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function Dt(e,t,s,n,r,i){const{lastIndex:o,lastOffset:a,lastSize:l}=r;let c=0,d=0;if(e.length>0){c=e[0].offset;const t=e[e.length-1];d=t.offset+t.size}const u=s-o,h=c,m=a+u*l+(u-1)*n-d;return{bottom:d,firstItemIndex:i,items:qt(e,r,i),offsetBottom:m,offsetTop:c,top:h,topItems:qt(t,r,i),topListHeight:t.reduce((e,t)=>t.size+e,0),totalCount:s}}function Pt(e,t,s,n,r,i){let o=0;if(s.groupIndices.length>0)for(const c of s.groupIndices){if(c-o>=e)break;o++}const a=e+o,l=Tt(t,a);return Dt(Array.from({length:a}).map((e,t)=>({data:i[t+l],index:t+l,offset:0,size:0})),[],a,r,s,n)}function qt(e,t,s){if(0===e.length)return[];if(!ot(t))return e.map(e=>({...e,index:e.index+s,originalIndex:e.index}));const n=[],r=qe(t.groupOffsetTree,e[0].index,e[e.length-1].index);let i,o=0;for(const a of e){let e;(!i||a.index>i.end)&&(i=r.shift(),o=t.groupIndices.indexOf(i.start)),e=a.index===i.start?{index:o,type:"group"}:{groupIndex:o,index:a.index-(o+1)+s},n.push({...e,data:a.data,offset:a.offset,originalIndex:a.index,size:a.size})}return n}function Wt(e,t){var s;return void 0===e?0:"number"==typeof e?e:null!=(s=e[t])?s:0}const Ut=Ie(([{data:e,firstItemIndex:t,gap:s,sizes:n,totalCount:r},i,{listBoundary:o,topListHeight:a,visibleRange:l},{initialTopMostItemIndex:c,scrolledToInitialItem:d},{topListHeight:u},h,{didMount:m},{recalcInProgress:g}])=>{const p=we([]),f=we(0),x=be(),v=we(0);oe(i.topItemsIndexes,p);const w=ye(ge(Ce(m,g,Te(l,tt),Te(r),Te(n),Te(c),d,Te(p),Te(t),Te(s),Te(v),e),ue(([e,t,,s,,,,,,,,n])=>e&&!t&&!(n&&n.length!==s)),he(([,,[e,t],s,n,r,i,o,a,l,c,d])=>{var u,h,m,g;const p=n,{offsetTree:x,sizeTree:v}=p,w=ie(f);if(0===s)return{..._t,totalCount:s};if(0===e&&0===t)return 0===w?{..._t,totalCount:s}:Pt(w,r,n,a,l,d||[]);if(Be(v))return w>0?null:Dt(function(e,t,s){if(ot(t)){const n=dt(e,t);return[{index:_e(t.groupOffsetTree,n)[0],offset:0,size:0},{data:null==s?void 0:s[0],index:n,offset:0,size:0}]}return[{data:null==s?void 0:s[0],index:e,offset:0,size:0}]}(Tt(r,s),p,d),[],s,l,p,a);const y=[];if(o.length>0){const e=o[0],t=o[o.length-1];let s=0;for(const n of qe(v,e,t)){const r=n.value,i=Math.max(n.start,e),o=Math.min(n.end,t);for(let e=i;o>=e;e++)y.push({data:null==d?void 0:d[e],index:e,offset:s,size:r}),s+=r}}if(!i)return Dt([],y,s,l,p,a);const b=o.length>0?o[o.length-1]+1:0,k=function(e,t,s,n=0){return n>0&&(t=Math.max(t,nt(e,n,at).offset)),Oe(function(e,t,s,n){const r=rt(e,t,n),i=rt(e,s,n,r);return e.slice(r,i+1)}(e,t,s,lt),pt)}(x,e,t,b);if(0===k.length)return null;const I=s-1,S=Z([],s=>{for(const n of k){const r=n.value;let i=r.offset,o=n.start;const a=r.size;if(e>r.offset){o+=Math.floor((e-r.offset+l)/(a+l));const t=o-n.start;i+=t*a+t*l}b>o&&(i+=(b-o)*a,o=b);const c=Math.min(n.end,I);for(let e=o;c>=e&&t>i;e++)s.push({data:null==d?void 0:d[e],index:e,offset:i,size:a}),i+=a+l}}),C=Wt(c,Nt),T=Wt(c,Ft);if(S.length>0&&(C>0||T>0)){const e=S[0],t=S[S.length-1];if(C>0&&e.index>b){const t=Math.min(C,e.index-b),s=[];let n=e.offset;for(let r=e.index-1;r>=e.index-t;r--){const t=null!=(h=null==(u=qe(v,r,r)[0])?void 0:u.value)?h:e.size;n-=t+l,s.unshift({data:null==d?void 0:d[r],index:r,offset:n,size:t})}S.unshift(...s)}if(T>0&&I>t.index){const e=Math.min(T,I-t.index);let s=t.offset+t.size+l;for(let n=t.index+1;t.index+e>=n;n++){const e=null!=(g=null==(m=qe(v,n,n)[0])?void 0:m.value)?g:t.size;S.push({data:null==d?void 0:d[n],index:n,offset:s,size:e}),s+=e+l}}}return Dt(S,y,s,l,p,a)}),ue(e=>null!==e),de()),_t);oe(ge(e,ue(Q),he(e=>null==e?void 0:e.length)),r),oe(ge(w,he(e=>e.topListHeight)),u),oe(u,a),oe(ge(w,he(e=>[e.top,e.bottom])),o),oe(ge(w,he(e=>e.items)),x);const y=ke(ge(w,ue(({items:e})=>e.length>0),ve(r,e),ue(([{items:e},t])=>e[e.length-1].originalIndex===t-1),he(([,e,t])=>[e-1,t]),de(tt),he(([e])=>e))),b=ke(ge(w,xe(200),ue(({items:e,topItems:t})=>e.length>0&&e[0].originalIndex===t.length),he(({items:e})=>e[0].index),de())),k=ke(ge(w,ue(({items:e})=>e.length>0),he(({items:e})=>{let t=0,s=e.length-1;for(;"group"===e[t].type&&s>t;)t++;for(;"group"===e[s].type&&s>t;)s--;return{endIndex:e[s].index,startIndex:e[t].index}}),de(et)));return{endReached:y,initialItemCount:f,itemsRendered:x,listState:w,minOverscanItemCount:v,rangeChanged:k,startReached:b,topItemsIndexes:p,...h}},te(vt,yt,Lt,jt,St,Ht,bt,st),{singleton:!0}),Vt=Ie(([{fixedFooterHeight:e,fixedHeaderHeight:t,footerHeight:s,headerHeight:n},{listState:r}])=>{const i=be(),o=ye(ge(Ce(s,e,n,t,r),he(([e,t,s,n,r])=>e+t+s+n+r.offsetBottom+r.bottom)),0);return oe(Te(o),i),{totalListHeight:o,totalListHeightChanged:i}},te(Fe,Ut),{singleton:!0}),$t=Ie(([{viewportHeight:e},{totalListHeight:t}])=>{const s=we(!1);return{alignToBottom:s,paddingTopAddition:ye(ge(Ce(s,e,t),ue(([e])=>e),he(([,e,t])=>Math.max(0,e-t)),xe(0),de()),0)}},te(Fe,Vt),{singleton:!0}),Gt=Ie(()=>({context:we(null)})),Kt=({itemBottom:e,itemTop:t,locationParams:{align:s,behavior:n,...r},viewportBottom:i,viewportTop:o})=>o>t?{...r,align:null!=s?s:"start",behavior:n}:e>i?{...r,align:null!=s?s:"end",behavior:n}:null,Jt=Ie(([{gap:e,sizes:t,totalCount:s},{fixedFooterHeight:n,fixedHeaderHeight:r,headerHeight:i,scrollingInProgress:o,scrollTop:a,viewportHeight:l},{scrollToIndex:c}])=>{const d=be();return oe(ge(d,ve(t,l,s,i,r,n,a),ve(e),he(([[e,t,s,n,r,i,a,l],c])=>{const{align:d,behavior:u,calculateViewLocation:h=Kt,done:m,...g}=e,p=ut(e,t,n-1),f=ct(p,t.offsetTree,c)+r+i,x=h({itemBottom:f+_e(t.sizeTree,p)[1],itemTop:f,locationParams:{align:d,behavior:u,...g},viewportBottom:l+s-a,viewportTop:l+i});return x?m&&ae(ge(o,ue(e=>!e),fe(ie(o)?1:2)),m):null==m||m(),x}),ue(e=>null!==e)),c),{scrollIntoView:d}},te(vt,Fe,St,Ut,Re),{singleton:!0});function Yt(e){return!!e&&("smooth"===e?"smooth":"auto")}const Qt=Ie(([{listRefresh:e,totalCount:t,fixedItemSize:s,data:n},{atBottomState:r,isAtBottom:i},{scrollToIndex:o},{scrolledToInitialItem:a},{didMount:l,propsReady:c},{log:d},{scrollingInProgress:u},{context:h},{scrollIntoView:m}])=>{const g=we(!1),p=be();let f=null;function x(e){ne(o,{align:"end",behavior:e,index:"LAST"})}function v(e){const t=ae(r,t=>{e&&!t.atBottom&&"SIZE_INCREASED"===t.notAtBottomBecause&&!f&&(ie(d)("scrolling to bottom due to increased size",{},Me.DEBUG),x("auto"))});setTimeout(t,100)}se(ge(Ce(ge(Te(t),fe(1)),l),ve(Te(g),i,a,u),he(([[e,t],s,n,r,i])=>{let o=t&&r,a="auto";return o&&(a=((e,t)=>"function"==typeof e?Yt(e(t)):t&&Yt(e))(s,n||i),o=o&&!!a),{followOutputBehavior:a,shouldFollow:o,totalCount:e}}),ue(({shouldFollow:e})=>e)),({followOutputBehavior:t,totalCount:n})=>{f&&(f(),f=null),ie(s)?requestAnimationFrame(()=>{ie(d)("following output to ",{totalCount:n},Me.DEBUG),x(t)}):f=ae(e,()=>{ie(d)("following output to ",{totalCount:n},Me.DEBUG),x(t),f=null})}),se(ge(Ce(Te(g),t,c),ue(([e,,t])=>e&&t),pe(({value:e},[,t])=>({refreshed:e===t,value:t}),{refreshed:!1,value:0}),ue(({refreshed:e})=>e),ve(g,t)),([,e])=>{ie(a)&&v(!1!==e)}),se(p,()=>{v(!1!==ie(g))}),se(Ce(Te(g),r),([e,t])=>{e&&!t.atBottom&&"VIEWPORT_HEIGHT_DECREASING"===t.notAtBottomBecause&&x("auto")});const w=we(null),y=be();return oe(je(ge(Te(n),he(e=>{var t;return null!=(t=null==e?void 0:e.length)?t:0})),ge(Te(t))),y),se(ge(Ce(ge(y,fe(1)),l),ve(Te(w),a,u,h),he(([[e,t],s,n,r,i])=>t&&n&&(null==s?void 0:s({context:i,totalCount:e,scrollingInProgress:r}))),ue(e=>!!e),xe(0)),t=>{f&&(f(),f=null),ie(s)?requestAnimationFrame(()=>{ie(d)("scrolling into view",{}),ne(m,t)}):f=ae(e,()=>{ie(d)("scrolling into view",{}),ne(m,t),f=null})}),{autoscrollToBottom:p,followOutput:g,scrollIntoViewOnChange:w}},te(vt,Ht,St,jt,bt,Re,Fe,Gt,Jt)),Xt=Ie(([{data:e,firstItemIndex:t,gap:s,sizes:n},{initialTopMostItemIndex:r},{initialItemCount:i,listState:o},{didMount:a}])=>(oe(ge(a,ve(i),ue(([,e])=>0!==e),ve(r,n,t,s,e),he(([[,e],t,s,n,r,i=[]])=>Pt(e,t,s,n,r,i))),o),{}),te(vt,jt,Ut,bt),{singleton:!0}),Zt=Ie(([{didMount:e},{scrollTo:t},{listState:s}])=>{const n=we(0);return se(ge(e,ve(n),ue(([,e])=>0!==e),he(([,e])=>({top:e}))),e=>{ae(ge(s,fe(1),ue(e=>e.items.length>1)),()=>{requestAnimationFrame(()=>{ne(t,e)})})}),{initialScrollTop:n}},te(bt,Fe,Ut),{singleton:!0}),es=Ie(([{scrollVelocity:e}])=>{const t=we(!1),s=be(),n=we(!1);return oe(ge(e,ve(n,t,s),ue(([e,t])=>!!t),he(([e,t,s,n])=>{const{enter:r,exit:i}=t;if(s){if(i(e,n))return!1}else if(r(e,n))return!0;return s}),de()),t),se(ge(Ce(t,e,s),ve(n)),([[e,t,s],n])=>{e&&n&&n.change&&n.change(t,s)}),{isSeeking:t,scrollSeekConfiguration:n,scrollSeekRangeChanged:s,scrollVelocity:e}},te(Ht),{singleton:!0}),ts=Ie(([{scrollContainerState:e,scrollTo:t}])=>{const s=be(),n=be(),r=be(),i=we(!1),o=we(void 0);return oe(ge(Ce(s,n),he(([{scrollHeight:e,scrollTop:t,viewportHeight:s},{offsetTop:n}])=>({scrollHeight:e,scrollTop:Math.max(0,t-n),viewportHeight:s}))),e),oe(ge(t,ve(n),he(([e,{offsetTop:t}])=>({...e,top:e.top+t}))),r),{customScrollParent:o,useWindowScroll:i,windowScrollContainerState:s,windowScrollTo:r,windowViewportRect:n}},te(Fe)),ss=Ie(([{sizeRanges:e,sizes:t},{headerHeight:s,scrollTop:n},{initialTopMostItemIndex:r},{didMount:i},{useWindowScroll:o,windowScrollContainerState:a,windowViewportRect:l}])=>{const c=be(),d=we(void 0),u=we(null),h=we(null);return oe(a,u),oe(l,h),se(ge(c,ve(t,n,o,u,h,s)),([e,t,s,n,r,i,o])=>{const a=function(e){return Ue(e).map(({k:e,v:t},s,n)=>{const r=n[s+1];return{endIndex:r?r.k-1:1/0,size:t,startIndex:e}})}(t.sizeTree);n&&null!==r&&null!==i&&(s=r.scrollTop-i.offsetTop),e({ranges:a,scrollTop:s-=o})}),oe(ge(d,ue(Q),he(ns)),r),oe(ge(i,ve(d),ue(([,e])=>void 0!==e),de(),he(([,e])=>e.ranges)),e),{getState:c,restoreStateFrom:d}},te(vt,Fe,jt,bt,ts));function ns(e){return{align:"start",index:0,offset:e.scrollTop}}const rs=Ie(([{topItemsIndexes:e}])=>{const t=we(0);return oe(ge(t,ue(e=>e>=0),he(e=>Array.from({length:e}).map((e,t)=>t))),e),{topItemCount:t}},te(Ut));function is(e){let t,s=!1;return()=>(s||(s=!0,t=e()),t)}const os=is(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),as=Ie(([{deviation:e,scrollBy:t,scrollingInProgress:s,scrollTop:n},{isAtBottom:r,isScrolling:i,lastJumpDueToItemResize:o,scrollDirection:a},{listState:l},{beforeUnshiftWith:c,gap:d,shiftWithOffset:u,sizes:h},{log:m},{recalcInProgress:g}])=>{const p=ke(ge(l,ve(o),pe(([,e,t,s],[{bottom:n,items:r,offsetBottom:i,totalCount:o},a])=>{const l=n+i;let c=0;return t===o&&e.length>0&&r.length>0&&(0===r[0].originalIndex&&0===e[0].originalIndex||(c=l-s,0!==c&&(c+=a))),[c,r,o,l]},[0,[],0,0]),ue(([e])=>0!==e),ve(n,a,s,r,m,g),ue(([,e,t,s,,,n])=>!n&&!s&&0!==e&&t===Rt),he(([[e],,,,,t])=>(t("Upward scrolling compensation",{amount:e},Me.DEBUG),e))));function f(s){s>0?(ne(t,{behavior:"auto",top:-s}),ne(e,0)):(ne(e,0),ne(t,{behavior:"auto",top:-s}))}return se(ge(p,ve(e,i)),([t,s,n])=>{n&&os()?ne(e,s-t):f(-t)}),se(ge(Ce(ye(i,!1),e,g),ue(([e,t,s])=>!e&&!s&&0!==t),he(([e,t])=>t),xe(1)),f),oe(ge(u,he(e=>({top:-e}))),t),se(ge(c,ve(h,d),he(([e,{groupIndices:t,lastSize:s,sizeTree:n},r])=>{function i(e){return e*(s+r)}if(0===t.length)return i(e);{let s=0;const r=Le(n,0);let o=0,a=0;for(;e>o;){o++,s+=r;let n=t.length===a+1?1/0:t[a+1]-t[a]-1;o+n>e&&(s-=r,n=e-o+1),o+=n,s+=i(n),a++}return s}})),s=>{ne(e,s),requestAnimationFrame(()=>{ne(t,{top:s}),requestAnimationFrame(()=>{ne(e,0),ne(g,!1)})})}),{deviation:e}},te(Fe,Ht,Ut,vt,Re,st)),ls=Ie(([e,t,s,n,r,i,o,a,l,c,d])=>({...e,...t,...s,...n,...r,...i,...o,...a,...l,...c,...d}),te(Lt,Xt,bt,es,Vt,Zt,$t,ts,Jt,Re,Gt)),cs=Ie(([{data:e,defaultItemSize:t,firstItemIndex:s,fixedItemSize:n,fixedGroupSize:r,gap:i,groupIndices:o,heightEstimates:a,itemSize:l,sizeRanges:c,sizes:d,statefulTotalCount:u,totalCount:h,trackItemSizes:m},{initialItemFinalLocationReached:g,initialTopMostItemIndex:p,scrolledToInitialItem:f},x,v,w,y,{scrollToIndex:b},k,{topItemCount:I},{groupCounts:S},C])=>{const{listState:T,minOverscanItemCount:j,topItemsIndexes:M,rangeChanged:R,...z}=y;return oe(R,C.scrollSeekRangeChanged),oe(ge(C.windowViewportRect,he(e=>e.visibleHeight)),x.viewportHeight),{data:e,defaultItemHeight:t,firstItemIndex:s,fixedItemHeight:n,fixedGroupHeight:r,gap:i,groupCounts:S,heightEstimates:a,initialItemFinalLocationReached:g,initialTopMostItemIndex:p,scrolledToInitialItem:f,sizeRanges:c,topItemCount:I,topItemsIndexes:M,totalCount:h,...w,groupIndices:o,itemSize:l,listState:T,minOverscanItemCount:j,scrollToIndex:b,statefulTotalCount:u,trackItemSizes:m,rangeChanged:R,...z,...C,...x,sizes:d,...v}},te(vt,jt,Fe,ss,Qt,Ut,St,as,rs,yt,ls));function ds(e,t){const s={},n={};let r=0;const i=e.length;for(;i>r;)n[e[r]]=1,r+=1;for(const o in t)Object.hasOwn(n,o)||(s[o]=t[o]);return s}const us="u">typeof document?c.default.useLayoutEffect:c.default.useEffect;function hs(e,t,n){const r=Object.keys(t.required||{}),i=Object.keys(t.optional||{}),o=Object.keys(t.methods||{}),a=Object.keys(t.events||{}),l=c.default.createContext({});function d(e,s){e.propsReady&&ne(e.propsReady,!1);for(const n of r)ne(e[t.required[n]],s[n]);for(const n of i)n in s&&ne(e[t.optional[n]],s[n]);e.propsReady&&ne(e.propsReady,!0)}function u(e){return a.reduce((s,n)=>(s[n]=function(e){let t,s;const n=()=>null==t?void 0:t();return function(r,i){switch(r){case 1:return i?s===i?void 0:(n(),s=i,t=se(e,i),t):(n(),X);case 2:return n(),void(s=null)}}}(e[t.events[n]]),s),{})}const h=c.default.forwardRef((h,m)=>{const{children:g,...p}=h,[f]=c.default.useState(()=>Z(function(e){const t=new Map,s=({constructor:e,dependencies:n,id:r,singleton:i})=>{if(i&&t.has(r))return t.get(r);const o=e(n.map(e=>s(e)));return i&&t.set(r,o),o};return s(e)}(e),e=>{d(e,p)})),[x]=c.default.useState(Y(u,f));return us(()=>{for(const e of a)e in p&&se(x[e],p[e]);return()=>{Object.values(x).map(re)}},[p,x,f]),us(()=>{d(f,p)}),c.default.useImperativeHandle(m,G(function(e){return o.reduce((s,n)=>(s[n]=s=>{ne(e[t.methods[n]],s)},s),{})}(f))),s.jsx(l.Provider,{value:f,children:n?s.jsx(n,{...ds([...r,...i,...a],p),children:g}):g})});return{Component:h,useEmitter:(e,t)=>{const s=c.default.useContext(l)[e];us(()=>se(s,t),[t,s])},useEmitterValue:c.default.version.startsWith("18")?e=>{const t=c.default.useContext(l)[e],s=c.default.useCallback(e=>se(t,e),[t]);return c.default.useSyncExternalStore(s,()=>ie(t),()=>ie(t))}:e=>{const t=c.default.useContext(l)[e],[s,n]=c.default.useState(Y(ie,t));return us(()=>se(t,e=>{e!==s&&n(G(e))}),[t,s]),s},usePublisher:e=>{const t=c.default.useContext(l);return c.default.useCallback(s=>{ne(t[e],s)},[t,e])}}}const ms=c.default.createContext(void 0),gs=c.default.createContext(void 0),ps="u">typeof document?c.default.useLayoutEffect:c.default.useEffect;function fs(e){return"self"in e}function xs(e,t,s,n=X,r,i){const o=c.default.useRef(null),a=c.default.useRef(null),l=c.default.useRef(null),u=c.default.useCallback(s=>{let n,r,o;const c=s.target;if(function(e){return"body"in e}(c)||fs(c)){const e=fs(c)?c:c.defaultView;o=i?e.scrollX:e.scrollY,n=i?e.document.documentElement.scrollWidth:e.document.documentElement.scrollHeight,r=i?e.innerWidth:e.innerHeight}else o=i?c.scrollLeft:c.scrollTop,n=i?c.scrollWidth:c.scrollHeight,r=i?c.offsetWidth:c.offsetHeight;const u=()=>{e({scrollHeight:n,scrollTop:Math.max(o,0),viewportHeight:r})};s.suppressFlushSync?u():d.default.flushSync(u),null!==a.current&&(o===a.current||0>=o||o===n-r)&&(a.current=null,t(!0),l.current&&(clearTimeout(l.current),l.current=null))},[e,t,i]);return c.default.useEffect(()=>{const e=r||o.current;return n(r||o.current),u({suppressFlushSync:!0,target:e}),e.addEventListener("scroll",u,{passive:!0}),()=>{n(null),e.removeEventListener("scroll",u)}},[o,u,s,n,r]),{scrollByCallback:function(e){i&&(e={behavior:e.behavior,left:e.top}),o.current.scrollBy(e)},scrollerRef:o,scrollToCallback:function(s){const n=o.current;if(!n||(i?"offsetWidth"in n&&0===n.offsetWidth:"offsetHeight"in n&&0===n.offsetHeight))return;const r="smooth"===s.behavior;let c,d,u;if(fs(n)?(d=Math.max(it(n.document.documentElement,i?"width":"height"),i?n.document.documentElement.scrollWidth:n.document.documentElement.scrollHeight),c=i?n.innerWidth:n.innerHeight,u=i?window.scrollX:window.scrollY):(d=n[i?"scrollWidth":"scrollHeight"],c=it(n,i?"width":"height"),u=n[i?"scrollLeft":"scrollTop"]),s.top=Math.ceil(Math.max(Math.min(d-c,s.top),0)),Mt(c,d)||s.top===u)return e({scrollHeight:d,scrollTop:u,viewportHeight:c}),void(r&&t(!0));r?(a.current=s.top,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{l.current=null,a.current=null,t(!0)},1e3)):a.current=null,i&&(s={behavior:s.behavior,left:s.top}),n.scrollTo(s)}}}const vs="-webkit-sticky",ws="sticky",ys=is(()=>{if(typeof document>"u")return ws;const e=document.createElement("div");return e.style.position=vs,e.style.position===vs?vs:ws});function bs(e){return e}const ks=Ie(([e,t])=>({...e,...t}),te(cs,Ie(()=>{const e=we(e=>"Item "+e),t=we(e=>"Group "+e),s=we({}),n=we(bs),r=we("div"),i=we(X),o=(e,t=null)=>ye(ge(s,he(t=>t[e]),de()),t);return{components:s,computeItemKey:n,EmptyPlaceholder:o("EmptyPlaceholder"),FooterComponent:o("Footer"),GroupComponent:o("Group","div"),groupContent:t,HeaderComponent:o("Header"),HeaderFooterTag:r,ItemComponent:o("Item","div"),itemContent:e,ListComponent:o("List","div"),ScrollerComponent:o("Scroller","div"),scrollerRef:i,ScrollSeekPlaceholder:o("ScrollSeekPlaceholder"),TopItemListComponent:o("TopItemList")}}))),Is=({height:e})=>s.jsx("div",{style:{height:e}}),Ss={overflowAnchor:"none",position:ys(),zIndex:1},Cs={overflowAnchor:"none"},Ts={...Cs,display:"inline-block",height:"100%"},js=c.default.memo(function({showTopList:t=!1}){const n=Us("listState"),r=Vs("sizeRanges"),i=Us("useWindowScroll"),o=Us("customScrollParent"),a=Vs("windowScrollContainerState"),l=Vs("scrollContainerState"),d=o||i?a:l,u=Us("itemContent"),h=Us("context"),m=Us("groupContent"),g=Us("trackItemSizes"),p=Us("itemSize"),f=Us("log"),x=Vs("gap"),v=Us("horizontalDirection"),{callbackRef:w}=function(e,t,s,n,r,i,o,a,l){const d=c.default.useCallback(s=>{const l=function(e,t,s,n){const r=e.length;if(0===r)return null;const i=[];for(let o=0;r>o;o++){const r=e.item(o);if(void 0===r.dataset.index)continue;const a=parseInt(r.dataset.index),l=parseFloat(r.dataset.knownSize),c=t(r,s);if(0===c&&n("Zero-sized element, this should not happen",{child:r},Me.ERROR),c===l)continue;const d=i[i.length-1];0===i.length||d.size!==c||d.endIndex!==a-1?i.push({endIndex:a,size:c,startIndex:a}):i[i.length-1].endIndex++}return i}(s.children,t,a?"offsetWidth":"offsetHeight",r);let c=s.parentElement;for(;!c.dataset.virtuosoScroller;)c=c.parentElement;const d="window"===c.lastElementChild.dataset.viewportType;let u;d&&(u=c.ownerDocument.defaultView);const h=o?a?o.offsetWidth:o.offsetHeight:d?a?u.innerWidth:u.innerHeight:a?c.offsetWidth:c.offsetHeight;n({scrollHeight:o?a?o.scrollWidth:o.scrollHeight:d?a?u.document.documentElement.scrollWidth:u.document.documentElement.scrollHeight:a?c.scrollWidth:c.scrollHeight,scrollTop:Math.max(o?a?o.scrollLeft:o.scrollTop:d?a?u.scrollX||u.document.documentElement.scrollLeft:u.scrollY||u.document.documentElement.scrollTop:a?c.scrollLeft:c.scrollTop,0),viewportHeight:h}),null==i||i(a?He("column-gap",getComputedStyle(s).columnGap,r):He("row-gap",getComputedStyle(s).rowGap,r)),null!==l&&e(l)},[e,t,r,i,o,n,a]);return Ee(d,s,l)}(r,p,g,t?X:d,f,x,o,v,Us("skipAnimationFrameInResizeObserver")),[y,b]=c.default.useState(0);Ws("deviation",e=>{y!==e&&b(e)});const k=Us("EmptyPlaceholder"),I=Us("ScrollSeekPlaceholder")||Is,S=Us("ListComponent"),C=Us("ItemComponent"),T=Us("GroupComponent"),j=Us("computeItemKey"),M=Us("isSeeking"),R=Us("groupIndices").length>0,z=Us("alignToBottom"),E=Us("initialItemFinalLocationReached"),H=t?{}:{boxSizing:"border-box",...v?{display:"inline-block",height:"100%",marginLeft:0!==y?y:z?"auto":0,paddingLeft:n.offsetTop,paddingRight:n.offsetBottom,whiteSpace:"nowrap"}:{marginTop:0!==y?y:z?"auto":0,paddingBottom:n.offsetBottom,paddingTop:n.offsetTop},...E?{}:{visibility:"hidden"}};return!t&&0===n.totalCount&&k?s.jsx(k,{...Hs(k,h)}):s.jsx(S,{...Hs(S,h),"data-testid":t?"virtuoso-top-item-list":"virtuoso-item-list",ref:w,style:H,children:(t?n.topItems:n.items).map(t=>{const s=t.originalIndex,r=j(s+n.firstItemIndex,t.data,h);return M?e.createElement(I,{...Hs(I,h),height:t.size,index:t.index,key:r,type:t.type||"item",..."group"===t.type?{}:{groupIndex:t.groupIndex}}):"group"===t.type?e.createElement(T,{...Hs(T,h),"data-index":s,"data-item-index":t.index,"data-known-size":t.size,key:r,style:Ss},m(t.index,h)):e.createElement(C,{...Hs(C,h),...Ns(C,t.data),"data-index":s,"data-item-group-index":t.groupIndex,"data-item-index":t.index,"data-known-size":t.size,key:r,style:v?Ts:Cs},R?u(t.index,t.groupIndex,t.data,h):u(t.index,t.data,h))})})}),Ms={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},Rs={outline:"none",overflowX:"auto",position:"relative"},zs=e=>({height:"100%",position:"absolute",top:0,width:"100%",...e?{display:"flex",flexDirection:"column"}:{}}),Es={position:ys(),top:0,width:"100%",zIndex:1};function Hs(e,t){if("string"!=typeof e)return{context:t}}function Ns(e,t){return{item:"string"==typeof e?void 0:t}}const Fs=c.default.memo(function(){const e=Us("HeaderComponent"),t=Vs("headerHeight"),n=Us("HeaderFooterTag"),r=ze(c.default.useMemo(()=>e=>{t(it(e,"height"))},[t]),!0,Us("skipAnimationFrameInResizeObserver")),i=Us("context");return e?s.jsx(n,{ref:r,children:s.jsx(e,{...Hs(e,i)})}):null}),As=c.default.memo(function(){const e=Us("FooterComponent"),t=Vs("footerHeight"),n=Us("HeaderFooterTag"),r=ze(c.default.useMemo(()=>e=>{t(it(e,"height"))},[t]),!0,Us("skipAnimationFrameInResizeObserver")),i=Us("context");return e?s.jsx(n,{ref:r,children:s.jsx(e,{...Hs(e,i)})}):null});function Os({useEmitter:e,useEmitterValue:t,usePublisher:n}){return c.default.memo(function({children:r,style:i,context:o,...a}){const l=n("scrollContainerState"),c=t("ScrollerComponent"),d=n("smoothScrollTargetReached"),u=t("scrollerRef"),h=t("horizontalDirection")||!1,{scrollByCallback:m,scrollerRef:g,scrollToCallback:p}=xs(l,d,c,u,void 0,h);return e("scrollTo",p),e("scrollBy",m),s.jsx(c,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:g,style:{...h?Rs:Ms,...i},tabIndex:0,...a,...Hs(c,o),children:r})})}function Bs({useEmitter:e,useEmitterValue:t,usePublisher:n}){return c.default.memo(function({children:r,style:i,context:o,...a}){const l=n("windowScrollContainerState"),d=t("ScrollerComponent"),u=n("smoothScrollTargetReached"),h=t("totalListHeight"),m=t("deviation"),g=t("customScrollParent"),p=c.default.useRef(null),f=t("scrollerRef"),{scrollByCallback:x,scrollerRef:v,scrollToCallback:w}=xs(l,u,d,f,g);return ps(()=>{var e;return v.current=g||(null==(e=p.current)?void 0:e.ownerDocument.defaultView),()=>{v.current=null}},[v,g]),e("windowScrollTo",w),e("scrollBy",x),s.jsx(d,{ref:p,"data-virtuoso-scroller":!0,style:{position:"relative",...i,...0!==h?{height:h+m}:{}},...a,...Hs(d,o),children:r})})}const Ls=({children:e})=>{const t=c.default.useContext(ms),n=Vs("viewportHeight"),r=Vs("fixedItemHeight"),i=Us("alignToBottom"),o=Us("horizontalDirection"),a=ze(c.default.useMemo(()=>J(n,e=>it(e,o?"width":"height")),[n,o]),!0,Us("skipAnimationFrameInResizeObserver"));return c.default.useEffect(()=>{t&&(n(t.viewportHeight),r(t.itemHeight))},[t,n,r]),s.jsx("div",{"data-viewport-type":"element",ref:a,style:zs(i),children:e})},_s=({children:e})=>{const t=c.default.useContext(ms),n=Vs("windowViewportRect"),r=Vs("fixedItemHeight"),i=Us("customScrollParent"),o=Ne(n,i,Us("skipAnimationFrameInResizeObserver")),a=Us("alignToBottom");return c.default.useEffect(()=>{t&&(r(t.itemHeight),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,n,r]),s.jsx("div",{"data-viewport-type":"window",ref:o,style:zs(a),children:e})},Ds=({children:e})=>{const t=Us("TopItemListComponent")||"div",n=Us("headerHeight"),r={...Es,marginTop:n+"px"},i=Us("context");return s.jsx(t,{style:r,...Hs(t,i),children:e})},Ps=c.default.memo(function(e){const t=Us("useWindowScroll"),n=Us("topItemsIndexes").length>0,r=Us("customScrollParent"),i=Us("context");return s.jsxs(r||t?Gs:$s,{...e,context:i,children:[n&&s.jsx(Ds,{children:s.jsx(js,{showTopList:!0})}),s.jsxs(r||t?_s:Ls,{children:[s.jsx(Fs,{}),s.jsx(js,{}),s.jsx(As,{})]})]})}),{Component:qs,useEmitter:Ws,useEmitterValue:Us,usePublisher:Vs}=hs(ks,{required:{},optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},Ps),$s=Os({useEmitter:Ws,useEmitterValue:Us,usePublisher:Vs}),Gs=Bs({useEmitter:Ws,useEmitterValue:Us,usePublisher:Vs}),Ks=qs;ys();const Js={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},Ys={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:Qs,floor:Xs,max:Zs,min:en,round:tn}=Math;function sn(e,t,s){return Array.from({length:t-e+1}).map((t,n)=>({data:null===s?null:s[n+e],index:n+e}))}function nn(e,t){return e&&e.width===t.width&&e.height===t.height}function rn(e,t){return e&&e.column===t.column&&e.row===t.row}const on=Ie(([{increaseViewportBy:e,listBoundary:t,overscan:s,visibleRange:n},{footerHeight:r,headerHeight:i,scrollBy:o,scrollContainerState:a,scrollTo:l,scrollTop:c,smoothScrollTargetReached:d,viewportHeight:u},h,m,{didMount:g,propsReady:p},{customScrollParent:f,useWindowScroll:x,windowScrollContainerState:v,windowScrollTo:w,windowViewportRect:y},b])=>{const k=we(0),I=we(0),S=we(Js),C=we({height:0,width:0}),T=we({height:0,width:0}),j=be(),M=be(),R=we(0),z=we(null),E=we({column:0,row:0}),H=be(),N=be(),F=we(!1),A=we(0),O=we(!0),B=we(!1),L=we(!1);se(ge(g,ve(A),ue(([e,t])=>!!t)),()=>{ne(O,!1)}),se(ge(Ce(g,O,T,C,A,B),ue(([e,t,s,n,,r])=>e&&!t&&0!==s.height&&0!==n.height&&!r)),([,,,,e])=>{ne(B,!0),Ct(1,()=>{ne(j,e)}),ae(ge(c),()=>{ne(t,[0,0]),ne(O,!0)})}),oe(ge(N,ue(e=>null!=e&&e.scrollTop>0),me(0)),I),se(ge(g,ve(N),ue(([,e])=>null!=e)),([,e])=>{e&&(ne(C,e.viewport),ne(T,e.item),ne(E,e.gap),e.scrollTop>0&&(ne(F,!0),ae(ge(c,fe(1)),e=>{ne(F,!1)}),ne(l,{top:e.scrollTop})))}),oe(ge(C,he(({height:e})=>e)),u),oe(ge(Ce(Te(C,nn),Te(T,nn),Te(E,(e,t)=>e&&e.column===t.column&&e.row===t.row),Te(c)),he(([e,t,s,n])=>({gap:s,item:t,scrollTop:n,viewport:e}))),H),oe(ge(Ce(Te(k),n,Te(E,rn),Te(T,nn),Te(C,nn),Te(z),Te(I),Te(F),Te(O),Te(A)),ue(([,,,,,,,e])=>!e),he(([e,[t,s],n,r,i,o,a,,l,c])=>{const{column:d,row:u}=n,{height:h,width:m}=r,{width:g}=i;if(0===a&&(0===e||0===g))return Js;if(0===m){const t=Tt(c,e);return function(e){return{...Ys,items:e}}(sn(t,t+Math.max(a-1,0),o))}const p=an(g,m,d);let f,x;l?0===t&&0===s&&a>0?(f=0,x=a-1):(f=p*Xs((t+u)/(h+u)),x=p*Qs((s+u)/(h+u))-1,x=en(e-1,Zs(x,p-1)),f=en(x,Zs(0,f))):(f=0,x=-1);const v=sn(f,x,o),{bottom:w,top:y}=ln(i,n,r,v),b=Qs(e/p);return{bottom:w,itemHeight:h,items:v,itemWidth:m,offsetBottom:b*h+(b-1)*u-w,offsetTop:y,top:y}})),S),oe(ge(z,ue(e=>null!==e),he(e=>e.length)),k),oe(ge(Ce(C,T,S,E),ue(([e,t,{items:s}])=>s.length>0&&0!==t.height&&0!==e.height),he(([e,t,{items:s},n])=>{const{bottom:r,top:i}=ln(e,n,t,s);return[i,r]}),de(tt)),t);const _=we(!1);oe(ge(c,ve(_),he(([e,t])=>t||0!==e)),_);const D=ke(ge(Ce(S,k),ue(([{items:e}])=>e.length>0),ve(_),ue(([[e,t],s])=>(s||e.bottom>0&&e.itemHeight>0&&0===e.offsetBottom&&e.items.length===t)&&e.items[e.items.length-1].index===t-1),he(([[,e]])=>e-1),de())),P=ke(ge(Te(S),ue(({items:e})=>e.length>0&&0===e[0].index),me(0),de())),q=ke(ge(Te(S),ve(F),ue(([{items:e},t])=>e.length>0&&!t),he(([{items:e}])=>({endIndex:e[e.length-1].index,startIndex:e[0].index})),de(et),xe(0)));oe(q,m.scrollSeekRangeChanged),oe(ge(j,ve(C,T,k,E),he(([e,t,s,n,r])=>{const i=It(e),{align:o,behavior:a,offset:l}=i;let c=i.index;"LAST"===c&&(c=n-1),c=Zs(0,c,en(n-1,c));let d=cn(t,r,s,c);return"end"===o?d=tn(d-t.height+s.height):"center"===o&&(d=tn(d-t.height/2+s.height/2)),l&&(d+=l),{behavior:a,top:d}})),l);const W=ye(ge(S,he(e=>e.offsetBottom+e.bottom)),0);return oe(ge(y,he(e=>({height:e.visibleHeight,width:e.visibleWidth}))),C),{customScrollParent:f,data:z,deviation:R,footerHeight:r,gap:E,headerHeight:i,increaseViewportBy:e,initialItemCount:I,itemDimensions:T,overscan:s,restoreStateFrom:N,scrollBy:o,scrollContainerState:a,scrollHeight:M,scrollTo:l,scrollToIndex:j,scrollTop:c,smoothScrollTargetReached:d,totalCount:k,useWindowScroll:x,viewportDimensions:C,windowScrollContainerState:v,windowScrollTo:w,windowViewportRect:y,...m,gridState:S,horizontalDirection:L,initialTopMostItemIndex:A,totalListHeight:W,...h,endReached:D,propsReady:p,rangeChanged:q,startReached:P,stateChanged:H,stateRestoreInProgress:F,...b}},te(Lt,Fe,Ht,es,bt,ts,Re));function an(e,t,s){return Zs(1,Xs((e+s)/(Xs(t)+s)))}function ln(e,t,s,n){const{height:r}=s;if(void 0===r||0===n.length)return{bottom:0,top:0};const i=cn(e,t,s,n[0].index);return{bottom:cn(e,t,s,n[n.length-1].index)+r,top:i}}function cn(e,t,s,n){const r=an(e.width,s.width,t.column),i=Xs(n/r),o=i*s.height+Zs(0,i-1)*t.row;return o>0?o+t.row:o}const dn=Ie(([e,t])=>({...e,...t}),te(on,Ie(()=>{const e=we(e=>"Item "+e),t=we({}),s=we(null),n=we("virtuoso-grid-item"),r=we("virtuoso-grid-list"),i=we(bs),o=we("div"),a=we(X),l=(e,s=null)=>ye(ge(t,he(t=>t[e]),de()),s),c=we(!1),d=we(!1);return oe(Te(d),c),{components:t,computeItemKey:i,context:s,FooterComponent:l("Footer"),HeaderComponent:l("Header"),headerFooterTag:o,itemClassName:n,ItemComponent:l("Item","div"),itemContent:e,listClassName:r,ListComponent:l("List","div"),readyStateChanged:c,reportReadyState:d,ScrollerComponent:l("Scroller","div"),scrollerRef:a,ScrollSeekPlaceholder:l("ScrollSeekPlaceholder","div")}}))),un=c.default.memo(function(){const t=vn("gridState"),n=vn("listClassName"),r=vn("itemClassName"),i=vn("itemContent"),o=vn("computeItemKey"),a=vn("isSeeking"),l=wn("scrollHeight"),d=vn("ItemComponent"),u=vn("ListComponent"),h=vn("ScrollSeekPlaceholder"),m=vn("context"),g=wn("itemDimensions"),p=wn("gap"),f=vn("log"),x=vn("stateRestoreInProgress"),v=wn("reportReadyState"),w=ze(c.default.useMemo(()=>e=>{l(e.parentElement.parentElement.scrollHeight);const t=e.firstChild;if(t){const{height:e,width:s}=t.getBoundingClientRect();g({height:e,width:s})}p({column:kn("column-gap",getComputedStyle(e).columnGap,f),row:kn("row-gap",getComputedStyle(e).rowGap,f)})},[l,g,p,f]),!0,!1);return ps(()=>{t.itemHeight>0&&t.itemWidth>0&&v(!0)},[t]),x?null:s.jsx(u,{className:n,ref:w,...Hs(u,m),"data-testid":"virtuoso-item-list",style:{paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},children:t.items.map(n=>{const l=o(n.index,n.data,m);return a?s.jsx(h,{...Hs(h,m),height:t.itemHeight,index:n.index,width:t.itemWidth},l):e.createElement(d,{...Hs(d,m),className:r,"data-index":n.index,key:l},i(n.index,n.data,m))})})}),hn=c.default.memo(function(){const e=vn("HeaderComponent"),t=wn("headerHeight"),n=vn("headerFooterTag"),r=ze(c.default.useMemo(()=>e=>{t(it(e,"height"))},[t]),!0,!1),i=vn("context");return e?s.jsx(n,{ref:r,children:s.jsx(e,{...Hs(e,i)})}):null}),mn=c.default.memo(function(){const e=vn("FooterComponent"),t=wn("footerHeight"),n=vn("headerFooterTag"),r=ze(c.default.useMemo(()=>e=>{t(it(e,"height"))},[t]),!0,!1),i=vn("context");return e?s.jsx(n,{ref:r,children:s.jsx(e,{...Hs(e,i)})}):null}),gn=({children:e})=>{const t=c.default.useContext(gs),n=wn("itemDimensions"),r=wn("viewportDimensions"),i=ze(c.default.useMemo(()=>e=>{r(e.getBoundingClientRect())},[r]),!0,!1);return c.default.useEffect(()=>{t&&(r({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,r,n]),s.jsx("div",{ref:i,style:zs(!1),children:e})},pn=({children:e})=>{const t=c.default.useContext(gs),n=wn("windowViewportRect"),r=wn("itemDimensions"),i=vn("customScrollParent"),o=Ne(n,i,!1);return c.default.useEffect(()=>{t&&(r({height:t.itemHeight,width:t.itemWidth}),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,r]),s.jsx("div",{ref:o,style:zs(!1),children:e})},fn=c.default.memo(function({...e}){const t=vn("useWindowScroll"),n=vn("customScrollParent"),r=n||t?bn:yn,i=n||t?pn:gn,o=vn("context");return s.jsx(r,{...e,...Hs(r,o),children:s.jsxs(i,{children:[s.jsx(hn,{}),s.jsx(un,{}),s.jsx(mn,{})]})})}),{useEmitter:xn,useEmitterValue:vn,usePublisher:wn}=hs(dn,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},fn),yn=Os({useEmitter:xn,useEmitterValue:vn,usePublisher:wn}),bn=Bs({useEmitter:xn,useEmitterValue:vn,usePublisher:wn});function kn(e,t,s){return"normal"!==t&&!(null!=t&&t.endsWith("px"))&&s(e+" was not resolved to pixel value correctly",t,Me.WARN),"normal"===t?0:parseInt(null!=t?t:"0",10)}const In=({message:e,allowEdit:t=!0})=>{const n=[];return t&&n.push({icon:"edit",text:"Edit",onClick:()=>{}}),e.snapshot&&n.push({icon:"refresh",text:"Restore checkpoint",onClick:()=>{}}),s.jsxs("div",{className:"react-ai-agent-user-message flex flex-col mb-2",children:[s.jsx("div",{className:"react-ai-agent-user-message-bubble-wrapper flex justify-end mb-2",children:s.jsx("div",{className:"react-ai-agent-user-message-bubble bg-secondary text-theme-primary px-4 py-2 rounded-[20px] max-w-xs md:max-w-md",style:{wordBreak:"break-word"},children:s.jsx("p",{className:"react-ai-agent-user-message-text text-[16px] leading-[22px] tracking-wide",children:e.text})})}),s.jsx("div",{className:"react-ai-agent-user-message-actions flex justify-end gap-4",children:n.map((e,t)=>s.jsxs("button",{className:`react-ai-agent-user-message-action react-ai-agent-user-message-action-${e.icon} flex items-center gap-1 opacity-25`,onClick:e.onClick,children:[s.jsx("span",{className:"react-ai-agent-user-message-action-icon",children:P(e.icon,16,"currentColor")}),s.jsx("span",{className:"react-ai-agent-user-message-action-label text-[12px] font-[300] text-theme-primary",children:e.text})]},t))})]})},Sn=({message:t})=>{const{markdownComponents:n}=B(),[i,o]=e.useState("");return e.useEffect(()=>{const e=j(t.messageId);if(e)return e.subscribe(e=>{o(e)});o(t.text||"")},[t.messageId,t.text]),s.jsx("div",{className:"react-ai-agent-ai-response mb-4 mx-auto",children:s.jsx("div",{className:"react-ai-agent-ai-content text-theme-primary prose prose-invert max-w-none",style:{wordBreak:"break-word"},children:s.jsx(r.Streamdown,{components:n,children:i})})})};var Cn=e.memo(Sn),Tn=e.memo(({text:e})=>{const{markdownComponents:t}=B(),n=e||"";return s.jsx("div",{className:"react-ai-agent-ai-response mb-4 mx-auto",style:{minHeight:"20px"},children:s.jsx("div",{className:"react-ai-agent-ai-content text-theme-primary prose prose-invert max-w-none",style:{wordBreak:"break-word",minHeight:"20px"},children:n?s.jsx(u.default,{components:t,children:n}):s.jsx("span",{style:{opacity:.5},children:"..."})})})}),jn=e.memo(({message:e,animationConfig:t})=>e.isLive&&!e.finalized?s.jsx(Cn,{message:e,animationConfig:t}):s.jsx(Tn,{text:e.text}));const Mn=e.memo(({message:n,isInCurrentSession:r})=>{const i=e.useRef(null),o=e.useRef(n.finalized),a=e.useRef(null),[l,c]=e.useState(!n.finalized),[d,h]=e.useState(!1),[m,g]=e.useState(""),p=n.isLive||!n.finalized,f=n.finalized||!r,x=n.duration||0,v=e.useMemo(()=>n.text||"",[n.text]);e.useEffect(()=>{requestAnimationFrame(()=>{h(!0)})},[]),e.useEffect(()=>{if(!p||!l)return void g(v);const e=m.length,t=v.length;if(e>=t)return;const s=Math.min(5,t-e),n=setTimeout(()=>{g(v.slice(0,e+s))},20);return()=>clearTimeout(n)},[v,m,p,l]),e.useEffect(()=>{if(i.current&&l&&p)return a.current&&cancelAnimationFrame(a.current),a.current=requestAnimationFrame(()=>{i.current&&(i.current.scrollTop=i.current.scrollHeight)}),()=>{a.current&&cancelAnimationFrame(a.current)}},[m,l,p]),e.useEffect(()=>{if(f&&!o.current&&l){const e=setTimeout(()=>{c(!1)},800);return()=>clearTimeout(e)}},[f,l]);const w=e.useCallback(()=>{c(e=>!e)},[]),y=e.useMemo(()=>({code({node:e,inline:n,className:r,children:i,...o}){const a=/language-(\w+)/.exec(r||""),l=(i+"").replace(/\n$/,""),c=!n&&l.includes("\n");return n||!c?s.jsx("code",{className:"react-ai-agent-thinking-code-inline px-1 py-0.5 bg-secondary rounded text-xs font-mono whitespace-pre-wrap",...o,children:i}):s.jsx("div",{className:"react-ai-agent-thinking-code-block rounded-[15px] overflow-hidden my-3",children:s.jsx(t.Prism,{language:a?.[1]||"javascript",style:N,children:l})})},p:({children:e})=>s.jsx("p",{className:"react-ai-agent-thinking-paragraph mb-2 leading-5 text-sm",children:e}),ul:({children:e})=>s.jsx("ul",{className:"react-ai-agent-thinking-list react-ai-agent-thinking-list-unordered list-disc pl-5 mb-3 grid text-sm",children:e}),ol:({children:e})=>s.jsx("ol",{className:"react-ai-agent-thinking-list react-ai-agent-thinking-list-ordered list-decimal pl-5 mb-3 grid text-sm",children:e}),li:({children:e})=>s.jsx("li",{className:"react-ai-agent-thinking-list-item mb-1 text-sm",children:e}),h1:({children:e})=>s.jsx("h1",{className:"react-ai-agent-thinking-heading react-ai-agent-thinking-heading-1 text-lg font-semibold mb-2 mt-3",children:e}),h2:({children:e})=>s.jsx("h2",{className:"react-ai-agent-thinking-heading react-ai-agent-thinking-heading-2 text-base font-semibold mb-2 mt-3",children:e}),h3:({children:e})=>s.jsx("h3",{className:"react-ai-agent-thinking-heading react-ai-agent-thinking-heading-3 text-sm font-semibold mb-1 mt-2",children:e}),blockquote:({children:e})=>s.jsx("blockquote",{className:"react-ai-agent-thinking-blockquote border-l-4 border-gray-600 pl-3 italic my-3 text-theme-quaternary text-sm",children:e})}),[]);return s.jsxs("div",{className:"react-ai-agent-thinking-message mb-4 mx-auto opacity-50 transition-all duration-300 ease-out",style:{opacity:d?.5:0,transform:d?"translateY(0)":"translateY(-10px)"},children:[f?s.jsxs("button",{onClick:w,className:"react-ai-agent-thinking-toggle react-ai-agent-thinking-toggle-finished text-theme-tertiary text-sm hover:text-theme-secondary transition-colors mb-2 flex items-center gap-2",children:[s.jsx("span",{className:"react-ai-agent-thinking-toggle-icon transition-transform duration-300",style:{transform:l?"rotate(0deg)":"rotate(-90deg)"},children:P(l?"brain-10-1663078315.png":"brain-11-1663755045.png",20,"currentColor")}),s.jsxs("span",{className:"react-ai-agent-thinking-toggle-text",children:["Thought for ",x," second",1!==x?"s":""]})]}):s.jsxs("div",{className:"react-ai-agent-thinking-header text-theme-tertiary text-sm mb-2 flex items-center gap-2",children:[s.jsx("span",{className:"react-ai-agent-thinking-icon animate-pulse",children:P("brain-11-1663755045.png",20,"currentColor")}),s.jsx("span",{className:"react-ai-agent-thinking-label",children:"Thinking..."})]}),s.jsx("div",{style:{maxHeight:l?"150px":"0px",opacity:l?1:0,overflow:"hidden",transition:"max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s ease-out"},children:m&&s.jsx("div",{ref:i,className:"react-ai-agent-thinking-content-scroll overflow-y-auto scrollbar-thin scrollbar-track-transparent",style:{maxHeight:"150px",scrollBehavior:"smooth",WebkitMaskImage:"linear-gradient(to top, transparent 0%, black 60%, transparent 98%)",maskImage:"linear-gradient(to top, transparent 0%, black 60%, transparent 98%)"},children:s.jsx("div",{className:"react-ai-agent-thinking-content text-theme-primary prose prose-invert max-w-none whitespace-pre-wrap text-sm pt-10",style:{wordBreak:"break-word",opacity:p?.8:1,transition:"opacity 0.15s ease"},children:s.jsx(u.default,{components:y,children:m})})})})]})},(e,t)=>e.message.text===t.message.text&&e.message.finalized===t.message.finalized&&e.message.isLive===t.message.isLive&&e.message.duration===t.message.duration&&e.isInCurrentSession===t.isInCurrentSession);Mn.displayName="ThinkingMessage";const Rn=({text:e,style:t,fontSize:n="1em",paddingRight:r="140px",backgroundSize:i="125px",isDark:o=!1})=>{let a=1;"string"==typeof n?a=parseFloat(n)||3:"number"==typeof n&&(a=n);let l=i;"125px"===i&&"3em"!==n&&(l=a/3*125+"px");const c={fontSize:n,paddingRight:r,WebkitBackgroundSize:l+" 100%",MozBackgroundSize:l+" 100%",backgroundSize:l+" 100%",...t};return s.jsx("div",{className:"react-ai-agent-shimmer-text shimmer "+(o?"dark":"light"),style:c,children:e})},zn=({message:t,title:n,isProcessing:r,isFinished:i,icon:o,iconComponent:a,isFlat:l=!0,onClick:c,isDark:d=!1,unmountOnExit:u,action:h,data:m,className:g,style:p,metadata:f})=>{const x=h||t?.action,v=m||t?.data,w=void 0!==i?i:t?.isFinished,y=void 0!==r?r:!w,b=f||t?.metadata,k=n||b?.name||t?.title,I=a||t?.iconComponent,S=void 0!==l?l:void 0===t?.isFlat||t.isFlat,C=void 0!==u?u:t?.unmountOnExit,T=c,j=b?.icon||o,M=e.useMemo(()=>k?y?`Processing ${k}...`:"Finished "+k:x?(({data:e,action:t,isFinished:s})=>{if(!t||"string"!=typeof t)return"Processing...";try{const n=t.replace(/([A-Z])/g," $1").replace(/_/g," ").trim().split(/\s+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(" ");return s?n:`${n}${e?.tool?" "+e?.tool:""}...`}catch(n){return t}})({data:v,action:x,isFinished:w}):"Processing...",[k,x,w,v]);return s.jsx("div",S?{className:"mb-[-2px] mx-auto "+g,style:{cursor:T?"pointer":"default",...p},onClick:T,children:s.jsxs("div",{className:`flex items-center gap-3 px-0 rounded-[12px] text-${d?"white":"black"} relative overflow-auto`,children:[C?s.jsx("div",{className:`animate-spin h-[16px] w-[16px] mr-[4px] absolute border-[1.5px] border-${d?"white":"black"} rounded-full border-t-transparent opacity-50`}):I?I():P(j||"check circle-3-1660219236.png",20,d?"rgba(255,255,255,0.25)":"rgba(0,0,0,0.25)",{position:"absolute"}),y?s.jsx(Rn,{isDark:d,text:M,style:{fontSize:"14px",marginLeft:"30px"}}):s.jsx("span",{style:{color:d?"rgba(255,255,255,0.25)":"rgba(0,0,0,0.25)"},className:"text-[14px] ml-[30px] "+(I?"!ml-0":""),children:M})]})}:{className:"mb-[10px] mx-auto "+g,style:{cursor:T?"pointer":"default",...p},onClick:T,children:s.jsxs("div",{className:`flex items-center p-3 rounded-[12px] text-${d?"white":"black"} relative overflow-hidden`,style:{backgroundColor:d?"rgba(255,255,255,0.02)":"rgba(0,0,0,0.02)"},children:[y?s.jsx("div",{className:`animate-spin h-[16px] w-[16px] mr-[4px] absolute border-[1.5px] border-${d?"white":"black"} rounded-full border-t-transparent opacity-50`}):I?I():P(icon||"check circle-3-1660219236.png",20,d?"rgba(255,255,255,0.8)":"rgba(0,0,0,0.8)",{position:"absolute"}),s.jsx("div",{className:"flex-1",children:y?s.jsx(Rn,{isDark:d,text:M,style:{marginLeft:"28px",marginTop:"-2px",color:d?"rgba(255,255,255,0.2)":"rgba(0,0,0,0.2)"}}):s.jsx("span",{className:`text-[14px] text-${d?"white":"black"}/50 ml-[30px]`,children:M})})]})})};var En=e.memo(({item:e,removeMessage:t,allowEditMessage:n,animationConfig:r,isInCurrentSession:i})=>s.jsx("div","user"===e.sender?{className:"react-ai-agent-message-item react-ai-agent-message-user",children:s.jsx(In,{message:e,allowEdit:n})}:"status"===e.type&&e.action?{className:"react-ai-agent-message-item react-ai-agent-message-status",children:s.jsx(L[e.action]||zn,{message:e})}:"thinking"===e.type?{className:"react-ai-agent-message-item react-ai-agent-message-thinking",children:s.jsx(Mn,{message:e,removeMessage:t,isInCurrentSession:i})}:{className:"react-ai-agent-message-item react-ai-agent-message-ai",children:s.jsx(jn,{message:e,animationConfig:r,isInCurrentSession:i})}));const Hn=({type:e})=>{const t=["w-1.5 h-1.5","w-2.5 h-2.5","w-1.5 h-1.5"],n="text"===e?["L","O","A","D","I","N","G"]:Array.from({length:3}).fill(""),r=.6+.1*(n.length-1);return s.jsx("div",{className:"react-ai-agent-loading-response flex",children:s.jsx("div",{className:"react-ai-agent-loading-content flex justify-center items-center "+("text"===e?"text-7xl font-extrabold font-[Montserrat]":"gap-1.5"),children:n.map((n,i)=>s.jsx(o.motion.span,{className:`react-ai-agent-loading-item react-ai-agent-loading-item-${e} inline-block ${"text"===e?"mx-[-0.05em]":t[i]+" rounded-full bg-inverse"}`,animate:{scale:[.75,1.5,.75],opacity:[.75,1,.75],filter:["blur(4px)","blur(0px)","blur(4px)"]},transition:{repeat:1/0,duration:.6,ease:"easeInOut",repeatDelay:r-.6,delay:.1*i},children:"text"===e?n:""},i))})})},Nn=({messages:t,isLoading:s,isResponseStarted:n,showLoadingIndicator:r,showSpacer:i=!1,spacerKey:o=0,onSpacerComplete:a})=>e.useMemo(()=>{const e=[...t];return i&&e.push({type:"viewport-spacer",messageId:"viewport-spacer-"+o,onComplete:a,isResponseStarted:n}),r&&s&&!n&&e.push({type:"loading-indicator",messageId:"loading-indicator"}),e},[t,r,s,n,i,o,a]),Fn=t=>e.useMemo(()=>{for(let e=t.length-1;e>=0;e--)if("user"===t[e].sender)return e;return-1},[t]),An=({item:e,index:t,lastUserIndex:n,removeMessage:r,allowEditMessage:i,animationConfig:o,isLastItem:a=!1,isFirstItem:l=!1})=>{if(!e)return null;if("viewport-spacer"===e.type)return s.jsx($,{onComplete:e.onComplete,isResponseStarted:e.isResponseStarted});if("loading-indicator"===e.type)return s.jsx(Hn,{});const c=s.jsx(En,{item:e,removeMessage:r,allowEditMessage:i,animationConfig:o,isInCurrentSession:t>n});return a?s.jsx("div",{style:{paddingBottom:"200px"},children:c}):l?s.jsx("div",{style:{paddingTop:"100px"},children:c}):c},On=({messages:t,removeMessage:n,allowEditMessage:r,animationConfig:i,height:o,width:a,shouldAutoScrollRef:l,isLoading:c,isResponseStarted:d,showLoadingIndicator:u,showSpacer:h,spacerKey:m,onSpacerComplete:g})=>{const p=e.useRef(!0),f=Nn({messages:t,isLoading:c,isResponseStarted:d,showLoadingIndicator:u,showSpacer:h,spacerKey:m,onSpacerComplete:g}),x=Fn(t),v=e.useCallback(e=>{p.current=e,l&&(l.current=e)},[l]);e.useCallback(()=>"smooth",[]);const w=e.useCallback(e=>An({item:f[e],index:e,lastUserIndex:x,removeMessage:n,allowEditMessage:r,isLastItem:e===f.length-1,animationConfig:i}),[f,x,n,r,i]);return s.jsx(Ks,{style:{height:o,width:a},data:f,totalCount:f.length,itemContent:w,initialTopMostItemIndex:f.length-1,atBottomStateChange:v,alignToBottom:!0})},Bn="u">typeof window?e.useLayoutEffect:e.useEffect;function Ln(e){if(void 0!==e)switch(typeof e){case"number":return e;case"string":if(e.endsWith("px"))return parseFloat(e)}}function _n(t){const s=e.useRef(()=>{throw Error("Cannot call during render.")});return Bn(()=>{s.current=t},[t]),e.useCallback(e=>s.current?.(e),[s])}function Dn({scrollOffset:e}){return e}function Pn(e,t="Assertion error"){if(!e)throw Error(t)}function qn(e,t){if(e===t)return!0;if(!!e!=!!t||(Pn(void 0!==e),Pn(void 0!==t),Object.keys(e).length!==Object.keys(t).length))return!1;for(const s in e)if(!Object.is(t[s],e[s]))return!1;return!0}function Wn({cachedBounds:e,itemCount:t,itemSize:s}){if(0===t)return 0;if("number"==typeof s)return t*s;{const s=e.get(0===e.size?0:e.size-1);return Pn(void 0!==s,"Unexpected bounds cache miss"),t*((s.scrollOffset+s.size)/e.size)}}function Un({cachedBounds:e,containerScrollOffset:t,containerSize:s,itemCount:n,overscanCount:r}){const i=n-1;let o=0,a=-1,l=0,c=-1,d=0;for(;i>d;){const s=e.get(d);if(s.scrollOffset+s.size>t)break;d++}for(o=d,l=Math.max(0,o-r);i>d;){const n=e.get(d);if(n.scrollOffset+n.size>=t+s)break;d++}return a=Math.min(i,d),c=Math.min(n-1,a+r),0>o&&(o=0,a=-1,l=0,c=-1),{startIndexVisible:o,stopIndexVisible:a,startIndexOverscan:l,stopIndexOverscan:c}}function Vn(e,t){const{ariaAttributes:s,style:n,...r}=e,{ariaAttributes:i,style:o,...a}=t;return qn(s,i)&&qn(n,o)&&qn(r,a)}const $n="data-react-window-index";function Gn({children:t,className:n,defaultHeight:r=0,listRef:i,onResize:o,onRowsRendered:a,overscanCount:l=3,rowComponent:c,rowCount:d,rowHeight:u,rowProps:h,tagName:m="div",style:g,...p}){const f=function(t){return e.useMemo(()=>t,Object.values(t))}(h),x=e.useMemo(()=>e.memo(c,Vn),[c]),[v,w]=e.useState(null),y=function(e){return null!=e&&"object"==typeof e&&"getAverageRowHeight"in e&&"function"==typeof e.getAverageRowHeight}(u),b=e.useMemo(()=>y?e=>u.getRowHeight(e)??u.getAverageRowHeight():u,[y,u]),{getCellBounds:k,getEstimatedSize:I,scrollToIndex:S,startIndexOverscan:C,startIndexVisible:T,stopIndexOverscan:j,stopIndexVisible:M}=function({containerElement:t,containerStyle:s,defaultContainerSize:n=0,direction:r,isRtl:i=!1,itemCount:o,itemProps:a,itemSize:l,onResize:c,overscanCount:d}){const{height:u=n,width:h=n}=function({box:t,defaultHeight:s,defaultWidth:n,disabled:r,element:i,mode:o,style:a}){const{styleHeight:l,styleWidth:c}=e.useMemo(()=>({styleHeight:Ln(a?.height),styleWidth:Ln(a?.width)}),[a?.height,a?.width]),[d,u]=e.useState({height:s,width:n}),h=r||void 0!==l||"only-width"===o||void 0!==l&&void 0!==c;return Bn(()=>{if(null===i||h)return;const e=new ResizeObserver(e=>{for(const t of e){const{contentRect:e,target:s}=t;i===s&&u(t=>t.height===e.height&&t.width===e.width?t:{height:e.height,width:e.width})}});return e.observe(i,{box:t}),()=>{e?.unobserve(i)}},[t,h,i,l,c]),e.useMemo(()=>({height:l??d.height,width:c??d.width}),[d,l,c])}({defaultHeight:n,defaultWidth:void 0,element:t,mode:"only-height",style:s}),m=e.useRef({height:0,width:0}),g=u,p=function({containerSize:e,itemSize:t}){let s;return"string"==typeof t?(Pn(t.endsWith("%"),`Invalid item size: "${t}"; string values must be percentages (e.g. "100%")`),Pn(void 0!==e,"Container size must be defined if a percentage item size is specified"),s=e*parseInt(t)/100):s=t,s}({containerSize:g,itemSize:l});e.useLayoutEffect(()=>{if("function"==typeof c){const e=m.current;(e.height!==u||e.width!==h)&&(c({height:u,width:h},{...e}),e.height=u,e.width=h)}},[u,c,h]);const f=function({itemCount:t,itemProps:s,itemSize:n}){return e.useMemo(()=>function({itemCount:e,itemProps:t,itemSize:s}){const n=new Map;return{get(r){for(Pn(e>r,"Invalid index "+r);r>n.size-1;){const e=n.size;let i;switch(typeof s){case"function":i=s(e,t);break;case"number":i=s}if(0===e)n.set(e,{size:i,scrollOffset:0});else{const t=n.get(e-1);Pn(void 0!==t,"Unexpected bounds cache miss for index "+r),n.set(e,{scrollOffset:t.scrollOffset+t.size,size:i})}}const i=n.get(r);return Pn(void 0!==i,"Unexpected bounds cache miss for index "+r),i},set(e,t){n.set(e,t)},get size(){return n.size}}}({itemCount:t,itemProps:s,itemSize:n}),[t,s,n])}({itemCount:o,itemProps:a,itemSize:p}),x=e.useCallback(e=>f.get(e),[f]),[v,w]=e.useState(()=>Un({cachedBounds:f,containerScrollOffset:0,containerSize:g,itemCount:o,overscanCount:d})),{startIndexVisible:y,startIndexOverscan:b,stopIndexVisible:k,stopIndexOverscan:I}={startIndexVisible:Math.min(o-1,v.startIndexVisible),startIndexOverscan:Math.min(o-1,v.startIndexOverscan),stopIndexVisible:Math.min(o-1,v.stopIndexVisible),stopIndexOverscan:Math.min(o-1,v.stopIndexOverscan)},S=e.useCallback(()=>Wn({cachedBounds:f,itemCount:o,itemSize:p}),[f,o,p]),C=e.useCallback(e=>{const s=Dn({containerElement:t,direction:r,isRtl:i,scrollOffset:e});return Un({cachedBounds:f,containerScrollOffset:s,containerSize:g,itemCount:o,overscanCount:d})},[f,t,g,r,i,o,d]);Bn(()=>{w(C(t?.scrollTop??0))},[t,r,C]),Bn(()=>{if(!t)return;const e=()=>{w(e=>{const{scrollTop:s}=t,n=Dn({containerElement:t,direction:r,isRtl:i,scrollOffset:s}),a=Un({cachedBounds:f,containerScrollOffset:n,containerSize:g,itemCount:o,overscanCount:d});return qn(a,e)?e:a})};return t.addEventListener("scroll",e),()=>{t.removeEventListener("scroll",e)}},[f,t,g,r,o,d]);const T=_n(({align:e="auto",containerScrollOffset:s,index:n})=>{let a=function({align:e,cachedBounds:t,index:s,itemCount:n,itemSize:r,containerScrollOffset:i,containerSize:o}){if(0>s||s>=n)throw RangeError("Invalid index specified: "+s,{cause:`Index ${s} is not within the range of 0 - ${n-1}`});const a=Wn({cachedBounds:t,itemCount:n,itemSize:r}),l=t.get(s),c=Math.max(0,Math.min(a-o,l.scrollOffset)),d=Math.max(0,l.scrollOffset-o+l.size);switch("smart"===e&&(e=d>i||i>c?"center":"auto"),e){case"start":return c;case"end":return d;case"center":return l.scrollOffset>o/2?a-o/2>l.scrollOffset+l.size/2?l.scrollOffset+l.size/2-o/2:a-o:0;default:return d>i||i>c?d>i?d:c:i}}({align:e,cachedBounds:f,containerScrollOffset:s,containerSize:g,index:n,itemCount:o,itemSize:p});if(t){if(a=Dn({containerElement:t,direction:r,isRtl:i,scrollOffset:a}),"function"!=typeof t.scrollTo){const e=C(a);qn(v,e)||w(e)}return a}});return{getCellBounds:x,getEstimatedSize:S,scrollToIndex:T,startIndexOverscan:b,startIndexVisible:y,stopIndexOverscan:I,stopIndexVisible:k}}({containerElement:v,containerStyle:g,defaultContainerSize:r,direction:"vertical",itemCount:d,itemProps:f,itemSize:b,onResize:o,overscanCount:l});e.useImperativeHandle(i,()=>({get element(){return v},scrollToRow({align:e="auto",behavior:t="auto",index:s}){const n=S({align:e,containerScrollOffset:v?.scrollTop??0,index:s});"function"==typeof v?.scrollTo&&v.scrollTo({behavior:t,top:n})}}),[v,S]),Bn(()=>{if(!v)return;const e=Array.from(v.children).filter((e,t)=>!e.hasAttribute("aria-hidden")&&(e.setAttribute($n,""+(C+t)),!0));return y?u.observeRowElements(e):void 0},[v,y,u,C,j]),e.useEffect(()=>{C>=0&&j>=0&&a&&a({startIndex:T,stopIndex:M},{startIndex:C,stopIndex:j})},[a,C,T,j,M]);const R=e.useMemo(()=>{const t=[];if(d>0)for(let s=C;j>=s;s++){const n=k(s);t.push(e.createElement(x,{...f,ariaAttributes:{"aria-posinset":s+1,"aria-setsize":d,role:"listitem"},key:s,index:s,style:{position:"absolute",left:0,transform:`translateY(${n.scrollOffset}px)`,height:y?void 0:n.size,width:"100%"}}))}return t},[x,k,y,d,f,C,j]),z=s.jsx("div",{"aria-hidden":!0,style:{height:I(),width:"100%",zIndex:-1}});return e.createElement(m,{role:"list",...p,className:n,ref:w,style:{position:"relative",maxHeight:"100%",flexGrow:1,overflowY:"auto",...g}},R,t,z)}const Kn=({dynamicHeight:t,messages:n,removeMessage:r,allowEditMessage:i,animationConfig:o,height:a,width:l,overscan:c,listRef:d,isLoading:u,isResponseStarted:h,showLoadingIndicator:m,showSpacer:g,spacerKey:p,onSpacerComplete:f})=>{const x=Nn({messages:n,isLoading:u,isResponseStarted:h,showLoadingIndicator:m,showSpacer:g,spacerKey:p,onSpacerComplete:f}),v=Fn(n),w=e.useRef(new Map),y=e.useMemo(()=>({itemsData:x,removeMessage:r,allowEditMessage:i,animationConfig:o,dynamicHeight:t,lastUserIndex:v,heightCacheRef:w}),[x,r,i,o,t,v]),b=e.useCallback(({index:e,style:t,ariaAttributes:n,...r})=>{const{itemsData:i,removeMessage:o,allowEditMessage:a,animationConfig:l,dynamicHeight:c,lastUserIndex:d,heightCacheRef:u}=r;return s.jsx("div",{style:t,ref:t=>{if(t){const s=i[e],n=s?.uniqueKey||s?.messageId||e;u.current.has(n)||requestAnimationFrame(()=>{const s=t.getBoundingClientRect().height;s!==c.getRowHeight(e)&&(c.setRowHeight(e,s),u.current.set(n,s))})}},...n,children:An({item:i[e],index:e,lastUserIndex:d,removeMessage:o,isLastItem:e===i.length-1,allowEditMessage:a,animationConfig:l})})},[]);return s.jsx("div",{style:{height:a,width:l,overflow:"hidden"},children:s.jsx(Gn,{listRef:d,rowComponent:b,rowCount:x.length,rowHeight:t,rowProps:y,overscanCount:c})})},Jn=({itemsData:t,scrollToBottom:s,shouldAutoScrollRef:n,isStreaming:r})=>{const i=e.useRef(0),o=e.useRef(!1);e.useEffect(()=>{!o.current&&t.length>0&&(o.current=!0,requestAnimationFrame(()=>{requestAnimationFrame(()=>{s(!1)})}))},[]),e.useEffect(()=>{t.length>i.current&&(i.current=t.length,!1!==n?.current&&s(!0))},[t.length,s,n]),e.useEffect(()=>{if(!r)return;const e=setInterval(()=>{!1!==n?.current&&s(!1)},100);return()=>clearInterval(e)},[r,s,n])},Yn=({messages:t,removeMessage:n,allowEditMessage:r,animationConfig:i,height:o,width:l,isStreaming:c,shouldAutoScrollRef:d})=>{const u=e.useRef(null),h=t,m=Fn(t),g=a.useVirtualizer({count:h.length,getScrollElement:()=>u.current,estimateSize:()=>100,overscan:5,measureElement:"undefined"!=typeof window&&-1===navigator.userAgent.indexOf("Firefox")?e=>e?.getBoundingClientRect().height:void 0}),{handleScroll:p}=(t=>{const s=e.useRef(!1),n=e.useRef(null),r=e.useCallback(e=>{n.current&&clearTimeout(n.current),s.current=!0,n.current=setTimeout(()=>{s.current=!1},150),e&&t&&(t.current=50>Math.abs(e.scrollHeight-e.scrollTop-e.clientHeight))},[t]);return{isUserScrollingRef:s,handleScroll:r}})(d),f=e.useCallback((e=!0)=>{const t=u.current;t&&t.scrollTo({top:t.scrollHeight,behavior:e?"smooth":"auto"})},[]);Jn({itemsData:h,scrollToBottom:f,shouldAutoScrollRef:d,isStreaming:c});const x=g.getVirtualItems();return s.jsx("div",{ref:u,onScroll:()=>p(u.current),className:"tanstack-virtual-container",style:{height:o,width:l,overflowY:"auto",contain:"strict"},children:s.jsx("div",{style:{height:g.getTotalSize()+"px",width:"100%",position:"relative"},children:x.map(e=>s.jsx("div",{"data-index":e.index,ref:g.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${e.start}px)`},children:An({item:h[e.index],index:e.index,lastUserIndex:m,removeMessage:n,allowEditMessage:r,animationConfig:i,isLastItem:e.index===h.length-1,isFirstItem:0===e.index})},e.key))})})},Qn=({messages:e,removeMessage:t,allowEditMessage:n,animationConfig:r,scrollToBottom:i,shouldAutoScrollRef:o,isStreaming:a,scrollContainerRef:l,height:c,width:d,isLoading:u,isResponseStarted:h,showLoadingIndicator:m,showSpacer:g,spacerKey:p,onSpacerComplete:f})=>{const x=Nn({messages:e,isLoading:u,isResponseStarted:h,showLoadingIndicator:m,showSpacer:g,spacerKey:p,onSpacerComplete:f}),v=Fn(e);return Jn({itemsData:x,scrollToBottom:e=>i(),shouldAutoScrollRef:o,isStreaming:a}),s.jsx("div",{ref:l,className:"react-chat-core-simple-container overflow-y-auto scrollbar-hide",style:{height:c,width:d,overflowY:"auto"},children:x.map((e,i)=>e?s.jsx("div",{children:An({item:e,index:i,lastUserIndex:v,removeMessage:t,allowEditMessage:n,animationConfig:r})},e.uniqueKey||e.messageId||i):null)})},Xn=e.forwardRef(({virtualization:t="tanstack",estimateSize:n=150,overscan:r=10,isDark:i=!1,className:o="",containerStyle:a={},useGradientMask:l=!0,gradientMaskStyle:c="linear-gradient(to bottom, transparent 6.5%, black 18%)",allowEditMessage:d=!1,showWelcome:u=!0,showLoadMore:h=!0,showLoadingIndicator:m=!0,keepUserMessageInView:g=!0,welcomeComponent:p,loadingComponent:f,initialAnimation:x=null,height:v="100%",width:w="100%"},y)=>{const[b,k]=e.useState(!1),[I,S]=e.useState(!1),C=e.useRef(null),{sendMsg:T,messages:j,messageManager:M,isLoading:R,isStreaming:z,isPanelOpen:E,error:H,isInitialLoading:N,isResponseStarted:F,abort:A,loadMoreMessages:O,isLoadingMore:L,hasMoreMessages:_,enableHistory:D,animationConfig:P,loadingComponent:W}=B(),$=f||W,{showSpacer:G,spacerKey:K,triggerSpacer:J,handleSpacerComplete:Y}=(()=>{const[t,s]=e.useState(!1),[n,r]=e.useState(0);return{showSpacer:t,spacerKey:n,triggerSpacer:()=>{s(!0),r(e=>e+1)},handleSpacerComplete:()=>{s(!1)}}})(),{scrollContainerRef:Q,shouldAutoScrollRef:X,scrollToBottom:Z,isAtBottom:ee}=(({onGradientChange:t,isStreaming:s})=>{const n=e.useRef(null),r=e.useRef(!0),i=e.useRef(!1),o=e.useCallback(()=>{const e=n.current;e&&(e.scrollTop=e.scrollHeight)},[]),a=e.useCallback(()=>{const e=n.current;return!!e&&50>e.scrollHeight-e.scrollTop-e.clientHeight},[]),l=e.useCallback(()=>{const e=n.current;if(!e)return;const s=e.scrollTop>20;s!==i.current&&(i.current=s,t&&t(s)),r.current=a()},[a,t]),c=e.useCallback((e=>{let t=0;return function(...s){const n=Date.now();100>n-t||(t=n,e(...s))}})(l),[l]);return e.useEffect(()=>{const e=n.current;if(e)return e.addEventListener("scroll",c),()=>e.removeEventListener("scroll",c)},[c]),e.useEffect(()=>{if(!s)return;const e=setInterval(()=>{r.current&&o()},100);return()=>clearInterval(e)},[s,o]),{scrollContainerRef:n,shouldAutoScrollRef:r,scrollToBottom:o,isAtBottom:a}})({onGradientChange:k,isStreaming:"none"===t&&z}),te="react-window"===t?(({estimateSize:t})=>function({defaultRowHeight:t,key:s}){const[n,r]=e.useState({key:s,map:new Map});n.key!==s&&r({key:s,map:new Map});const{map:i}=n,o=e.useCallback(()=>{let e=0;return i.forEach(t=>{e+=t}),0===e?t:e/i.size},[t,i]),a=e.useCallback(e=>{const s=i.get(e);return void 0!==s?s:(i.set(e,t),t)},[t,i]),l=e.useCallback((e,t)=>{r(s=>{if(s.map.get(e)===t)return s;const n=new Map(s.map);return n.set(e,t),{...s,map:n}})},[]),c=_n(e=>{0!==e.length&&e.forEach(e=>{const{borderBoxSize:t,target:s}=e,n=s.getAttribute($n);Pn(null!==n,`Invalid ${$n} attribute value`);const r=parseInt(n),{blockSize:i}=t[0];i&&l(r,i)})}),[d]=e.useState(()=>new ResizeObserver(c));e.useEffect(()=>()=>{d.disconnect()},[d]);const u=e.useCallback(e=>(e.forEach(e=>d.observe(e)),()=>{e.forEach(e=>d.unobserve(e))}),[d]);return e.useMemo(()=>({getAverageRowHeight:o,getRowHeight:a,setRowHeight:l,observeRowElements:u}),[o,a,l,u])}({defaultRowHeight:t}))({estimateSize:n}):null,se=e.useCallback(()=>{"virtuoso"!==t&&"tanstack"!==t&&("react-window"===t&&C.current?.scrollToBottomCustom?C.current.scrollToBottomCustom():"none"===t&&Z())},[t,Z]),ne=e.useCallback(()=>{g&&setTimeout(()=>{J()},200)},[g,J]),{removeMessage:re,handleSendMessage:ie}=(({messageManager:t,sendMsg:s,shouldAutoScrollRef:n,onUserMessageSent:r})=>({removeMessage:e.useCallback(e=>{t?.removeMessage&&t.removeMessage(e)},[t]),handleSendMessage:e.useCallback(async e=>{n&&(n.current=!0),r&&r(),await s(e)},[s,n,r])}))({messageManager:M,sendMsg:T,scrollToBottom:se,shouldAutoScrollRef:X,onUserMessageSent:ne});return e.useEffect(()=>{if(N)S(!1);else{if(j&&j.length>0&&!I){const e=setTimeout(()=>{S(!0)},100);return()=>clearTimeout(e)}j&&0!==j.length||S(!0)}},[N,j,I]),e.useImperativeHandle(y,()=>({scrollToBottom:se,isAtBottom:ee,scrollContainer:Q.current,dynamicHeight:te,listRef:C.current,sendMessage:ie,abort:A,isStreaming:z,isLoading:R,messages:j,messageManager:M}),[se,ee,te,ie,A,z,R,j,M]),s.jsx("div",{className:"react-ai-agent-chat-core "+o,"data-theme":i?"dark":"light",style:{WebkitMaskImage:c,...a},children:N?s.jsx($||V,{}):j&&0!==j.length?s.jsxs("div",{className:"react-chat-core-messages h-full w-full",style:{opacity:I?1:0,transition:"opacity 0.3s ease-out"},children:[s.jsx(q,{showLoadMore:h,enableHistory:D,hasMoreMessages:_,messagesLength:j.length,error:H,isInitialLoading:N,loadMoreMessages:O,isLoadingMore:L}),(()=>{const e={messages:j,removeMessage:re,allowEditMessage:d,animationConfig:P,isLoading:R,isResponseStarted:F,showLoadingIndicator:m,isStreaming:z,showSpacer:g&&G,spacerKey:K,onSpacerComplete:Y};switch(t){case"virtuoso":return s.jsx(On,{height:v,width:w,listRef:C,shouldAutoScrollRef:X,...e});case"react-window":return s.jsx(Kn,{dynamicHeight:te,height:v,width:w,overscan:r,listRef:C,isStreaming:z,shouldAutoScrollRef:X,...e});case"tanstack":return s.jsx(Yn,{height:v,width:w,isStreaming:z,shouldAutoScrollRef:X,...e});default:return s.jsx(Qn,{scrollToBottom:se,shouldAutoScrollRef:X,isStreaming:z,scrollContainerRef:Q,height:v,width:w,...e})}})()]}):u&&s.jsx("div",{style:{opacity:I?1:0,transition:"opacity 0.3s ease-out"},children:s.jsx(U,{WelcomeComponent:p,error:H,isPanelOpen:E})})})});Xn.displayName="ChatCore";var Zn=e.memo(Xn);const er=({todos:e=[]})=>e&&0!==e?.length?s.jsx("div",{className:"react-ai-agent-queue-manager flex w-[calc(100%-50px)] ml-[5px] items-end gap-2 top-0 z-9 absolute h-0",children:s.jsxs("div",{className:"react-ai-agent-queue-manager-wrapper flex items-center w-full relative bottom-0",children:[s.jsx("div",{className:"react-ai-agent-queue-manager-backdrop backdrop-blur-[20px] w-full h-full z-0 absolute bg-theme-overlay border-b-0 rounded-t-[15px] "}),s.jsx("div",{className:"react-ai-agent-queue-manager-content flex items-center gap-2 w-full p-1 py-[5px] z-99"})]})}):null,tr=({children:e,content:t,visible:n})=>n?s.jsxs("div",{className:"react-ai-agent-tooltip-wrapper relative",children:[e,s.jsxs("div",{className:"react-ai-agent-tooltip absolute bottom-full right-0 mb-2 w-64 p-3 bg-theme-surface rounded-lg shadow-lg z-50 backdrop-blur-sm",children:[s.jsx("div",{className:"react-ai-agent-tooltip-content text-theme-secondary text-sm space-y-2",children:t}),s.jsx("div",{className:"react-ai-agent-tooltip-arrow absolute top-full right-4 w-2 h-2 bg-theme-surface transform rotate-45 translate-y-[-4px]"})]})]}):e,sr=()=>{const[t,n]=e.useState(!1),{sessionMetrics:r,usedTokens:i,contextLimit:o}=B(),a=(100*(i/o||0)).toFixed(2),l=e=>e?1e6>e?1e3>e?""+e:(e/1e3).toFixed(1)+"K":(e/1e6).toFixed(1)+"M":"0",c=s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"font-medium text-theme-primary border-b border-theme-tertiary pb-1",children:"Session Info"}),s.jsxs("div",{className:"space-y-1 text-xs",children:[s.jsxs("div",{className:"flex justify-between",children:[s.jsx("span",{className:"text-theme-quaternary",children:"Context size:"}),s.jsxs("span",{children:[l(r?.contextUsed)," / ",l(r?.contextLimit)]})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsx("span",{className:"text-theme-quaternary",children:"Session Tokens:"}),s.jsx("span",{children:l(r?.tokensUsed)})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsx("span",{className:"text-theme-quaternary",children:"All time tokens:"}),s.jsx("span",{children:l(r?.allTimeTokens)})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsx("span",{className:"text-theme-quaternary",children:"Requests:"}),s.jsx("span",{children:l(r?.requests)})]})]})]});return s.jsx(tr,{content:c,visible:t,children:s.jsxs("div",{className:"react-ai-agent-progress-bar flex items-center gap-2 cursor-pointer",onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[s.jsxs("span",{className:"react-ai-agent-progress-percentage text-theme-ghost font-light text-[12px] leading-[18px]",children:[a,"%"]}),s.jsxs("div",{className:"react-ai-agent-progress-circle-wrapper relative w-4 h-4 flex items-center justify-center",children:[s.jsx("div",{className:"react-ai-agent-progress-circle-bg absolute inset-0 rounded-full bg-theme-muted"}),s.jsx("div",{className:"react-ai-agent-progress-circle-fill absolute inset-0 rounded-full",style:{background:`conic-gradient(var(--rca-text-faint) ${a}%, transparent 0)`}}),s.jsx("div",{className:"react-ai-agent-progress-circle-inner absolute inset-0.5 rounded-full bg-secondary"})]})]})})},nr=({attachedFiles:e=[],removeFile:t})=>{const{currentSelectedFile:n,setIsHoldEnabled:r,setCurrentSelectedFile:i,manuallyAddedFiles:o=[],setManuallyAddedFiles:a=()=>{}}=B(),l=[...n?[n]:[],...o,...e];return s.jsxs("div",{className:"react-ai-agent-chat-bar flex items-center w-full mb-2 justify-between",children:[s.jsxs("div",{className:"react-ai-agent-chat-bar-left flex items-center",children:[l.length>0&&s.jsx(ir,{files:l,handleRemoveFile:e=>{"object"==typeof e&&e.id?t&&t(e.id):e===n?(i(null),r(!1)):a(t=>t.filter(t=>t!==e))}}),s.jsxs("button",{className:"react-ai-agent-context-button text-theme-primary hover:opacity-100 opacity-25 mr-2 flex items-center gap-1 whitespace-nowrap right-0 z-9 text-[12px] leading-relaxed ",children:[s.jsx("span",{className:"react-ai-agent-context-button-icon",children:P("add",20,"currentColor",{marginLeft:"-5px"})}),0===l.length&&s.jsx("span",{className:"react-ai-agent-context-button-label",children:"Context"})]})]}),s.jsx("div",{className:"react-ai-agent-chat-bar-right",children:s.jsx(sr,{})})]})},rr=({file:t,handleRemoveFile:n})=>{const[r,i]=e.useState(!1),o="object"==typeof t&&t.id,a=o?t.name:t.split("/").pop(),l=o?t.id:t;return s.jsxs("div",{className:"react-ai-agent-file-item flex items-center gap-2 px-2 py-[2px] bg-theme-subtle rounded-full cursor-pointer relative border border-theme-subtle",onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),children:[r?s.jsx("button",{className:"react-ai-agent-file-item-remove w-[16px] opacity-50 hover:opacity-100 -ml-[2px] -mr-[2px] h-[16px]",onClick:e=>{e.stopPropagation(),n(t)},children:s.jsx("span",{className:"react-ai-agent-file-item-remove-icon",children:P("close",16,"currentColor")})}):s.jsx("div",{className:"react-ai-agent-file-item-icon-wrapper",children:o&&t.preview?s.jsx("img",{src:t.preview,alt:a,className:"react-ai-agent-file-item-preview w-3 h-4 object-cover rounded",style:{marginRight:0,width:"12px",height:"16px"}}):s.jsx(FileIcon,{fileName:a,style:{marginRight:0,width:"12px",height:"16px"}})}),s.jsx("div",{className:"react-ai-agent-file-item-name text-theme-quaternary hover:text-theme-primary text-[12px] leading-relaxed whitespace-nowrap truncate max-w-[100px]",children:a})]},l)},ir=({files:e,handleRemoveFile:t})=>s.jsx("div",{className:"react-ai-agent-file-items flex items-center gap-2 mr-2",children:e.map(e=>s.jsx(rr,{file:e,handleRemoveFile:t},"object"==typeof e&&e.id?e.id:e))}),or=()=>{const[t,n]=e.useState(0),r=e.useRef(),i=e.useRef(0),o=e.useRef(0),a=e.useRef(null),l=e.useRef(1);return e.useEffect(()=>{const e=()=>{if(a.current){const{width:e,height:t}=a.current.getBoundingClientRect();l.current=e/t}};e();const t=new ResizeObserver(e);return a.current&&t.observe(a.current),()=>{t.disconnect()}},[]),e.useEffect(()=>{o.current=performance.now(),i.current=t;const e=s=>{const a=s-o.current;o.current=s,i.current+=a/1e3*360,360>i.current||(i.current-=360);const c=i.current*(Math.PI/180),d=l.current,u=Math.round((Math.atan2(Math.sin(c),Math.cos(c)/d)*(180/Math.PI)+360)%360);3>Math.abs(u-t)||n(u),r.current=requestAnimationFrame(e)};return r.current=requestAnimationFrame(e),()=>{r.current&&(cancelAnimationFrame(r.current),r.current=null)}},[]),s.jsx("div",{ref:a,className:"react-ai-agent-loader-animation w-full h-full absolute inset-0 rounded-[inherit]",children:s.jsx("div",{className:"glowing pointer-events-none absolute inset-0 rounded-[inherit] opacity-100 transition-opacity safari:!hidden style_glowingEffect__yGXeX",style:{"--blur":"1px","--spread":"30","--active":"1","--start":t,display:"flex"},children:s.jsx("div",{className:"style_glow__i4Qpo"})})})},ar="image/*,video/*,audio/*,.pdf,.doc,.docx,.txt,.md,.json,.js,.ts,.jsx,.tsx,.py,.html,.css,.xml,.csv";function lr(){const[t,s]=e.useState([]),n=e.useRef(null),r=e.useCallback(async e=>{const t=await e.arrayBuffer(),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(e=>e.toString(16).padStart(2,"0")).join("")},[]),i=e.useCallback(async e=>{const n=[];for(const s of e){if(t.some(e=>e.name===s.name&&e.size===s.size&&e.type===s.type))continue;let e=!1;if(5242880>s.size)try{const i=await r(s);t.some(e=>e.hash===i)||(n.push({file:s,id:Date.now()+Math.random(),name:s.name,size:s.size,type:s.type,hash:i,preview:s.type.startsWith("image/")?URL.createObjectURL(s):null}),e=!0)}catch(i){}e||n.push({file:s,id:Date.now()+Math.random(),name:s.name,size:s.size,type:s.type,preview:s.type.startsWith("image/")?URL.createObjectURL(s):null})}n.length>0&&s(e=>[...e,...n])},[t,r]),o=e.useCallback(e=>{const t=Array.from(e.target.files||[]);t.length>0&&i(t),e.target.value=""},[i]),a=e.useCallback(e=>{const t=Array.from(e.clipboardData?.items||[]).filter(e=>"file"===e.kind).map(e=>e.getAsFile()).filter(Boolean);t.length>0&&(e.preventDefault(),i(t))},[i]),l=e.useCallback(e=>{s(t=>{const s=t.filter(t=>t.id!==e),n=t.find(t=>t.id===e);return n?.preview&&URL.revokeObjectURL(n.preview),s})},[]),c=e.useCallback(()=>{s(e=>(e.forEach(e=>{e.preview&&URL.revokeObjectURL(e.preview)}),[]))},[]);return{attachedFiles:t,fileInputRef:n,onFileSelect:o,onPaste:a,removeFile:l,clearFiles:c}}const cr=()=>{const{streamError:t,clearStreamError:n,retryLastMessage:r,sendRequestCallback:i,triggerLoadingStates:o}=B(),[a]=e.useState(t?.choices||[{id:"retry",label:"Retry"},{id:"cancel",label:"Cancel"}]);return t?s.jsx("div",{className:"react-ai-agent-stream-error w-full mb-3",children:s.jsxs("div",{className:"react-ai-agent-error-content flex w-full justify-between items-center gap-3 px-3 py-2 bg-theme-faint rounded-lg border-l-2 border-[#ef4444]",children:[s.jsx("div",{className:"react-ai-agent-error-message-wrapper",children:s.jsx("div",{className:"react-ai-agent-error-message text-[12px] text-theme-primary font-medium",children:t.message||"An error occurred during streaming"})}),s.jsx("div",{className:"react-ai-agent-error-actions flex gap-2 items-center",children:a&&a.length>0&&a.map(e=>s.jsx("button",{onClick:()=>(async e=>{"retry"===e?"connection_error"===t.errorType?await r():(o(),i({type:"stream_error",callback:"retry",requestId:t.requestId})):"cancel"===e&&(t.requestId&&i({type:"stream_error",callback:"cancel",requestId:t.requestId}),n())})(e.id),className:`react-ai-agent-error-action react-ai-agent-error-action-${e.id} text-[11px] font-medium px-3 py-1 rounded-md transition-all duration-200\n ${"retry"===e.id?"text-theme-primary hover:text-theme-secondary underline underline-offset-2":"cancel"===e.id?"text-theme-subtle hover:text-theme-tertiary":"text-theme-tertiary hover:text-theme-primary"}\n `,children:e.label},e.id))})]})}):null},dr=e.forwardRef(({onSendMessage:t,miniMode:n=!1,isStreaming:r,abort:i,todos:o},a)=>{const[l,c]=e.useState(""),d=e.useRef(null),{attachedFiles:u,fileInputRef:h,onFileSelect:m,onPaste:g,removeFile:p,clearFiles:f}=lr();e.useEffect(()=>{d.current&&(d.current.style.height="auto",d.current.style.height=Math.min(d.current.scrollHeight,150)+"px")},[l]),e.useImperativeHandle(a,()=>({focus:()=>{d.current?.focus()}}),[]);const x=e=>{e.preventDefault(),(l.trim()||u.length>0)&&(t({message:l,attachedFiles:u}),c(""),f(),d.current&&(d.current.style.height="auto"))};return s.jsx("div",{className:"react-ai-agent-input absolute mx-auto bottom-0 w-full p-[15px] right-0 left-0 max-w-[600px] z-2",children:s.jsxs("div",{className:"react-ai-agent-input-wrapper mx-auto min-h-[120px] relative",style:n?{minHeight:"110px"}:{},children:[r&&s.jsx("div",{className:"absolute inset-0 pointer-events-none rounded-[15px]",style:{zIndex:1},children:s.jsx(or,{})}),s.jsx("div",{className:"react-ai-agent-input-backdrop backdrop-blur-[20px] w-full h-full z-0 absolute bg-theme-overlay rounded-[15px]"}),s.jsxs("div",{className:"react-ai-agent-input-content pt-[15px] px-[20px] mx-auto min-h-[120px] relative z-99",style:{zIndex:2},children:[s.jsx(er,{todos:o}),s.jsx(cr,{}),s.jsx(nr,{attachedFiles:u,removeFile:p}),s.jsx("div",{className:"react-ai-agent-input-textarea-wrapper relative pb-[50px]",children:s.jsx("textarea",{autoSave:"off",autoFocus:!1,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false","data-form-type":"other",ref:d,value:l,onChange:e=>c(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),x(e))},onPaste:g,placeholder:"Type a message...",className:"react-ai-agent-textarea w-full text-[14px] text-theme-primary pr-12 min-h-[40px] max-h-[150px] resize-none outline-none bg-transparent",rows:1})}),s.jsxs("div",{className:"react-ai-agent-input-actions flex items-center justify-between mt-auto bottom-[15px] absolute w-[calc(100%-40px)]",children:[s.jsxs("div",{className:"react-ai-agent-input-actions-left flex items-center",children:[s.jsx("input",{ref:h,type:"file",multiple:!0,accept:ar,onChange:m,className:"react-ai-agent-file-input hidden"}),s.jsxs("button",{type:"button",onClick:()=>h.current?.click(),className:"react-ai-agent-attach-button flex justify-center items-center cursor-pointer text-theme-primary rounded-full transition-colors hover:opacity-80 disabled:opacity-50 disabled:cursor-not-allowed",children:[P("attach",18,"currentColor"),s.jsx("span",{className:"react-ai-agent-attach-label text-[14px] ml-2 font-[300]",children:"Attach"})]})]}),s.jsxs("div",{className:"react-ai-agent-input-actions-right flex items-center",children:[s.jsxs("button",{type:"button",className:"react-ai-agent-agent-button flex justify-center p-1 px-2 mr-2 items-center cursor-pointer text-theme-primary rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[P("brain",18,"currentColor"),s.jsx("span",{className:"react-ai-agent-agent-label text-[12px] mx-2 text-theme-quaternary font-[300] -mt-[2px]",children:"Agent"}),P("arrowDown",16,"currentColor",{transform:"rotate(180deg)"})]}),s.jsx("button",{type:"button",onClick:e=>{r?i():x(e)},className:"react-ai-agent-send-button w-[30px] h-[30px] flex justify-center items-center cursor-pointer bg-inverse text-inverse rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:!l.trim()&&!r,children:P(r?"square":"send",r?15:20,"currentColor")})]})]})]})]})})});dr.displayName="ChatInputDefault";var ur=e.memo(dr);const hr=({historyOpen:t,setHistoryOpen:n,isDark:r=!1,onCreateSession:i})=>{const[o,a]=e.useState(!1),{headerComponent:l}=B();return s.jsxs("div",{className:"react-ai-agent-header flex justify-between items-center py-2 px-5 absolute top-0 left-0 right-0 z-10",children:[s.jsxs("div",{className:"react-ai-agent-header-left flex items-center gap-4 opacity-50",children:[s.jsx("button",{className:"react-ai-agent-header-new-chat flex items-center cursor-pointer hover:opacity-80",style:{opacity:o?.5:1,cursor:o?"progress":"pointer"},disabled:o,onClick:async({replace:e=!1}={})=>{if(i)try{a(!0),await i({replace:e})}catch(t){}finally{a(!1)}},children:P("add",25,r?"#fff":"#000")}),s.jsx("div",{className:"react-ai-agent-header-history flex items-center cursor-pointer hover:opacity-80",onClick:t?()=>n(!1):()=>n(!0),children:P(t?"close":"history",18,r?"#fff":"#000")})]}),l&&l(),s.jsx("div",{className:"react-ai-agent-header-right w-[80px]"})]})};var mr=e.memo(hr);const gr=({isDark:t=!1,allowEditMessage:n=!1,useWebSocket:r=!1,children:i,onCreateSession:o,className:a="h-full w-full"})=>{const[l,c]=e.useState(!1),d=e.useRef(null),{sendMsg:u,isStreaming:h,abort:m}=B(),g=e.useCallback(async e=>{d.current?.sendMessage?await d.current.sendMessage(e):(await u(e),setTimeout(()=>{d.current?.scrollToBottom()},100))},[u]);return s.jsxs("div",{className:"react-ai-agent-panel react-chat-core flex flex-col h-full relative chat-panel "+a,"data-theme":t?"dark":"light",children:[s.jsx(mr,{historyOpen:l,setHistoryOpen:c,useWebSocket:r,isDark:t,onCreateSession:o}),s.jsxs("div",{className:"relative flex-grow w-full max-w-[600px] mx-auto h-full min-w-[300px]",children:[s.jsx(Zn,{ref:d,isDark:t,allowEditMessage:n}),s.jsx(ur,{onSendMessage:g,isStreaming:h,abort:m})]}),i]})};var pr=e.memo(gr);const fr={collapsed:{width:"280px",height:"60px",borderRadius:"50px",padding:"px-5 py-3",gap:"gap-2",showAttach:!1,showAgent:!1,showTopContent:!0,sendButtonSize:34,compact:!1},expanded:{width:"500px",height:"auto",minHeight:"120px",borderRadius:"20px",padding:"pt-[15px] px-[20px] pb-0",gap:"",showAttach:!0,showAgent:!0,showTopContent:!0,sendButtonSize:30,compact:!1},collapsedCompact:{width:"280px",height:"60px",borderRadius:"50px",padding:"px-3 py-3",gap:"gap-2",showAttach:!1,showAgent:!1,showTopContent:!1,sendButtonSize:34,compact:!0},expandedCompact:{width:"600px",height:"60px",minHeight:"60px",borderRadius:"50px",padding:"px-3 py-3",gap:"gap-2",showAttach:!0,showAgent:!1,showTopContent:!1,sendButtonSize:34,compact:!0}},xr=e.forwardRef(({onSendMessage:t,miniMode:n=!1,isStreaming:r,abort:i,todos:o,variant:a="default",placeholder:l="Type a message...",collapsed:c=!1,onExpand:d,position:u="bottom-center",compact:h},m)=>{const[g,p]=e.useState(""),[f,x]=e.useState(!1),v=e.useRef(null),{attachedFiles:w,fileInputRef:y,onFileSelect:b,onPaste:k,removeFile:I,clearFiles:S}=lr();e.useEffect(()=>{!c&&v.current&&(v.current.style.height="auto",v.current.style.height=Math.min(v.current.scrollHeight,150)+"px")},[g,c]),e.useImperativeHandle(m,()=>({focus:()=>{v.current?.focus()}}),[]);const C=e=>{e.preventDefault(),(g.trim()||w.length>0)&&(t({message:g,attachedFiles:w}),p(""),S(),!c&&v.current&&(v.current.style.height="auto"))},T=h?c?fr.collapsedCompact:fr.expandedCompact:c?fr.collapsed:fr.expanded;return s.jsxs("div",{className:"react-ai-agent-input-morph",style:{width:T.width,transition:"width 0.4s cubic-bezier(0.4, 0, 0.2, 1)"},"data-theme":"dark",children:[r&&!c&&s.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{height:T.height,minHeight:T.minHeight||T.height,borderRadius:T.borderRadius,zIndex:1,transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1) 0.15s, border-radius "+(c?"0.15s cubic-bezier(0.4, 0, 0.2, 1) 0.3s":"0.15s cubic-bezier(0.4, 0, 0.2, 1)")},children:s.jsx(or,{})}),s.jsxs("div",{className:"react-ai-agent-input-wrapper relative",style:{height:T.height,minHeight:T.minHeight||T.height,zIndex:2,transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1) 0.15s",overflow:"hidden"},children:[s.jsx("div",{className:"react-ai-agent-input-backdrop backdrop-blur-[20px] w-full h-full z-0 absolute bg-theme-overlay shadow-lg",style:{borderRadius:T.borderRadius,transition:c?"border-radius 0.15s cubic-bezier(0.4, 0, 0.2, 1) 0.3s":"border-radius 0.15s cubic-bezier(0.4, 0, 0.2, 1)"}}),s.jsxs("div",{className:"relative z-10 h-full "+T.padding,style:{transition:"padding 0.3s cubic-bezier(0.4, 0, 0.2, 1) 0.15s"},children:[T.showTopContent&&s.jsxs("div",{style:{opacity:c?0:1,height:c?0:"auto",overflow:"hidden",pointerEvents:c?"none":"auto",transition:c?"opacity 0.12s ease-out, height 0.15s ease-out":"opacity 0.3s ease-out 0.4s, height 0.3s ease-out 0.15s"},children:[s.jsx(er,{todos:o}),s.jsx(cr,{}),s.jsx(nr,{attachedFiles:w,removeFile:I})]}),s.jsxs("div",{className:"flex items-center w-full "+(T.compact||c?T.gap:""),style:{position:T.compact||c?"relative":"static"},children:[s.jsx("input",{ref:y,type:"file",multiple:!0,accept:ar,onChange:b,className:"react-ai-agent-file-input hidden"}),T.compact&&T.showAttach&&s.jsx("div",{className:"flex-shrink-0",style:{opacity:c?0:1,width:c?0:"auto",overflow:"hidden",pointerEvents:c?"none":"auto",transition:c?"opacity 0.12s ease-out, width 0.12s ease-out":"opacity 0.3s ease-out 0.45s, width 0.3s ease-out 0.45s"},children:s.jsx("button",{type:"button",onClick:()=>y.current?.click(),className:(T.compact?"-mr-2":"")+" react-ai-agent-attach-button flex justify-center items-center cursor-pointer text-theme-primary rounded-full transition-colors hover:opacity-80 disabled:opacity-50 disabled:cursor-not-allowed w-[30px] h-[30px]",children:P("attach",T.compact?20:18,"currentColor")})}),s.jsx("div",{className:T.compact||c?"flex-1":"relative pb-[50px] w-full",style:{transition:"padding 0.3s ease-out 0.15s",marginTop:c&&!T.compact?"2px":void 0},children:s.jsx("textarea",{autoSave:"off",autoFocus:!1,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false","data-form-type":"other",ref:v,value:g,onChange:e=>p(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),C(e))},onPaste:k,onFocus:()=>{x(!0),c&&d&&d()},onBlur:()=>{x(!1)},placeholder:l,className:"text-[14px] text-theme-primary resize-none outline-none bg-transparent "+(T.compact||c?"w-full pr-0 pl-3":"w-full min-h-[40px] max-h-[150px] pr-12"),style:{overflow:"auto",height:T.compact||c?"30px":void 0,maxHeight:T.compact||c?"30px":void 0,paddingTop:T.compact||c?"7px":void 0,paddingBottom:T.compact||c?"3px":void 0,lineHeight:T.compact||c?"16px":void 0,transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1) 0.15s"},rows:1})}),s.jsxs("div",{className:"flex items-center "+(T.compact||c?"flex-shrink-0":"justify-between"),style:{position:T.compact||c?"static":"absolute",bottom:T.compact||c?"auto":"15px",left:T.compact||c?"auto":"20px",right:T.compact||c?"auto":"20px",width:T.compact||c?"auto":"calc(100% - 40px)"},children:[!T.compact&&s.jsx("div",{className:"react-ai-agent-input-actions-left flex items-center",style:{opacity:c||!T.showAttach?0:1,width:c||!T.showAttach?0:"auto",overflow:"hidden",pointerEvents:c||!T.showAttach?"none":"auto",transition:c?"opacity 0.12s ease-out, width 0.12s ease-out":"opacity 0.3s ease-out 0.45s, width 0.3s ease-out 0.45s"},children:s.jsxs("button",{type:"button",onClick:()=>y.current?.click(),className:"react-ai-agent-attach-button flex justify-center items-center cursor-pointer text-theme-primary rounded-full transition-colors hover:opacity-80 disabled:opacity-50 disabled:cursor-not-allowed",children:[P("attach",18,"currentColor"),s.jsx("span",{className:"react-ai-agent-attach-label text-[14px] ml-2 font-[300]",children:"Attach"})]})}),s.jsxs("div",{className:"react-ai-agent-input-actions-right flex items-center",children:[s.jsx("div",{style:{opacity:c||!T.showAgent?0:1,width:c||!T.showAgent?0:"auto",overflow:"hidden",transition:c?"opacity 0.12s ease-out, width 0.12s ease-out":"opacity 0.3s ease-out 0.45s, width 0.3s ease-out 0.45s"},children:T.showAgent&&s.jsxs("button",{type:"button",className:"react-ai-agent-agent-button flex justify-center p-1 px-2 mr-2 items-center cursor-pointer text-theme-primary rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap",children:[P("brain",18,"currentColor"),s.jsx("span",{className:"react-ai-agent-agent-label text-[12px] mx-2 text-theme-quaternary font-[300] -mt-[2px]",children:"Agent"}),P("arrowDown",16,"currentColor",{transform:"rotate(180deg)"})]})}),s.jsx("button",{type:"button",onClick:e=>{r?i():C(e)},className:"react-ai-agent-send-button flex justify-center items-center cursor-pointer bg-inverse text-inverse rounded-full hover:scale-110",disabled:!g.trim()&&!r,style:{width:T.sendButtonSize+"px",height:T.sendButtonSize+"px",transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1) 0.15s, transform 0.2s ease-out"},children:P(r?"square":"send",r?15:c?18:20,"currentColor")})]})]})]})]})]})]})});xr.displayName="ChatInput";var vr=e.memo(xr);const wr=({allowEditMessage:t=!1,children:n,placeholder:r="Ask me anything...",position:i="bottom-center",isDark:o,compact:a})=>{const[l,c]=e.useState(!1),[d,u]=e.useState(!1),[h,m]=e.useState(!1),[g,p]=e.useState(!1),f=e.useRef(null),x=e.useRef(null),v=e.useRef([]),{isStreaming:w,abort:y}=B(),b=e.useCallback(()=>{v.current.forEach(e=>clearTimeout(e)),v.current=[]},[]),k=e.useCallback(async e=>{f.current?.sendMessage?await f.current.sendMessage(e):setTimeout(()=>{f.current?.scrollToBottom()},100)},[]),I=e.useCallback(()=>{b(),u(!1),m(!1),c(!0),p(!1);const e=setTimeout(()=>{p(!0)},350);v.current.push(e);const t=setTimeout(()=>{x.current?.focus()},400);v.current.push(t)},[b]),S=e.useCallback(()=>{b(),u(!0),c(!1);const e=setTimeout(()=>{m(!0)},250);v.current.push(e);const t=setTimeout(()=>{p(!1),u(!1),m(!1)},500);v.current.push(t)},[b]);e.useEffect(()=>{const e=e=>{"Escape"===e.key&&l&&S()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[l,S]),e.useEffect(()=>()=>{b()},[b]);const C=l||d;return s.jsxs("div",{className:"react-chat-core","data-theme":o?"dark":"light",children:[C&&s.jsx("div",{className:"fixed inset-0 bg-black/80 z-40 transition-opacity duration-300 ease-in-out "+(h?"opacity-0":"opacity-100"),style:{backdropFilter:"blur(20px)"},onClick:S}),C&&s.jsx("div",{className:"fixed inset-0 z-45 flex items-center justify-center p-8",style:{pointerEvents:"none"},children:s.jsxs("div",{className:"relative w-full max-w-3xl react-ai-agent-panel rounded-3xl",style:{height:"100vh",pointerEvents:"auto"},children:[g&&s.jsx("div",{className:"absolute inset-0 px-4 py-4 rounded-3xl overflow-hidden",style:{opacity:d?0:1,transition:"opacity 0.25s ease-out"},children:s.jsx(Zn,{ref:f,isDark:o,allowEditMessage:t,className:"h-full w-full"})}),n]})}),s.jsx("div",{className:"fixed bottom-8 z-50 "+(()=>{switch(i){case"bottom-right":return"right-8";case"bottom-left":return"left-8";default:return"left-1/2 -translate-x-1/2"}})(),children:s.jsx(vr,{ref:x,collapsed:!l,onExpand:I,onSendMessage:k,isStreaming:w,abort:y,variant:l?"pill":"collapsed",placeholder:r,position:i,compact:a})})]})};var yr=e.memo(wr);function br(e,t){return JSON.stringify({event:e,data:t})}function kr(e,t,s=!0){return br("ai_response",{messageId:e,content:t,isLive:s})}function Ir(){return br("ai_response_end",{status:"end"})}exports.BaseApiHandler=h,exports.ChatCore=Zn,exports.ChatHeader=mr,exports.ChatInput=vr,exports.ChatInstanceContext=A,exports.ChatLoadingMock=V,exports.ChatProvider=function({children:n,initialWelcome:r={title:"Welcome to AI Chat Agent",description:"A perfect agent library for your needs, for docs visit oblien.com/docs/chat-agent"},refreshTokenCallback:i,markdownComponents:o,typingAnimation:a={mode:"chars",speed:400},statusComponents:l,forwardingHandlers:d={},authConfig:u,enableHistory:h=!0,loadingComponent:g,allowThinking:p=!0,headerComponent:f,config:b,apiHandler:k,agentId:C,className:T="h-full w-full",onError:j}){const M=e.useRef(C||"chat-"+Math.random().toString(36).substring(2,9)).current,[z,E]=e.useState(!0),[B,_]=e.useState(u?.sessionId),[D,P]=e.useState(!1),[q,W]=e.useState(!1),[U,V]=e.useState(!1),[$,G]=e.useState(null),[K,J]=e.useState(null),[Y,Q]=e.useState(!1),[X,Z]=e.useState(!1),[ee,te]=e.useState(null),se=e.useRef(r).current,[ne,re]=e.useState([]),ie=e.useRef(!1),oe=e.useRef(!1),ae=e.useRef(new w),le=e.useRef(null),ce=e.useMemo(()=>I(),[]),de=e.useRef(i?new v:null),ue=e.useRef(k||new m({...b,...de.current&&{tokenManager:de.current},token:u?.accessToken,sessionId:u?.sessionId})),he=e.useRef(new x(ue.current)),me=e.useRef(H(d)),ge=e.useRef(new y(ae.current,ce)),pe=e.useRef(new R(ge.current,me.current,Object.keys(d).length>0,M)),fe=e.useCallback(()=>{const e=ie.current||oe.current;W(e),e||P(!1)},[]);e.useEffect(()=>{pe.current.onQueueComplete=()=>{oe.current=!1,fe()}},[fe]);const xe=e.useRef(o||((e={})=>({code({node:e,inline:n,className:r,children:i,...o}){const a=/language-(\w+)/.exec(r||""),l=(i+"").replace(/\n$/,""),c=!n&&l.includes("\n");return n||!c?s.jsx("code",{className:"inline-code px-1.5 py-0.5 rounded text-sm font-mono whitespace-pre-wrap",...o,children:i}):s.jsx("div",{className:"code-block rounded-lg overflow-hidden my-4",children:s.jsx(t.Prism,{language:a?.[1]||"javascript",style:N,customStyle:{margin:0,borderRadius:0},children:l})})},p:({children:e})=>{const t=F(e);return s.jsx("p",{className:"mb-4 leading-relaxed last:mb-0",dir:t,children:e})},ul:({children:e})=>{const t=F(e);return s.jsx("ul",{className:"my-3 space-y-1 list-disc list-outside "+("rtl"===t?"pr-6":"pl-6"),dir:t,children:e})},ol:({children:e})=>{const t=F(e);return s.jsx("ol",{className:"my-3 space-y-1 list-decimal list-outside "+("rtl"===t?"pr-6":"pl-6"),dir:t,children:e})},li:({children:e})=>{const t=F(e);return s.jsx("li",{className:"leading-relaxed "+("rtl"===t?"pr-1":"pl-1"),dir:t,children:e})},h1:({children:e})=>{const t=F(e);return s.jsx("h1",{className:"markdown-h1 mb-4 mt-6 first:mt-0 leading-[1.25]",dir:t,children:e})},h2:({children:e})=>{const t=F(e);return s.jsx("h2",{className:"markdown-h2 mb-4 mt-6 first:mt-0 leading-[1.3]",dir:t,children:e})},h3:({children:e})=>{const t=F(e);return s.jsx("h3",{className:"markdown-h3 mb-3 mt-5 first:mt-0 leading-[1.4]",dir:t,children:e})},h4:({children:e})=>{const t=F(e);return s.jsx("h4",{className:"markdown-h4 mb-2 mt-4 first:mt-0 leading-[1.4]",dir:t,children:e})},h5:({children:e})=>{const t=F(e);return s.jsx("h5",{className:"markdown-h5 mb-2 mt-4 first:mt-0 leading-[1.5]",dir:t,children:e})},h6:({children:e})=>{const t=F(e);return s.jsx("h6",{className:"markdown-h6 mb-2 mt-4 first:mt-0 leading-[1.5]",dir:t,children:e})},blockquote:({children:e})=>{const t=F(e);return s.jsx("blockquote",{className:"markdown-blockquote py-1 my-4 italic "+("rtl"===t?"pr-4 border-r-4":"pl-4 border-l-4"),dir:t,children:e})},strong:({children:e})=>s.jsx("strong",{className:"markdown-strong font-semibold",children:e}),em:({children:e})=>s.jsx("em",{className:"markdown-em italic",children:e}),a:({children:e,href:t})=>s.jsx("a",{href:t,className:"markdown-link text-blue-400 hover:text-blue-300 underline decoration-blue-400/30 hover:decoration-blue-300/50 transition-colors",target:"_blank",rel:"noopener noreferrer",children:e}),hr:()=>s.jsx("hr",{className:"markdown-hr my-6"}),table:({children:e})=>s.jsx("div",{className:"overflow-x-auto my-4",children:s.jsx("table",{className:"markdown-table min-w-full border-collapse",children:e})}),thead:({children:e})=>s.jsx("thead",{className:"markdown-thead",children:e}),tbody:({children:e})=>s.jsx("tbody",{className:"markdown-tbody",children:e}),tr:({children:e})=>s.jsx("tr",{className:"markdown-tr transition-colors",children:e}),th:({children:e})=>s.jsx("th",{className:"markdown-th px-4 py-2 text-left font-semibold text-sm",children:e}),td:({children:e})=>s.jsx("td",{className:"markdown-td px-4 py-2 text-sm",children:e}),input:({type:e,checked:t,...n})=>s.jsx("input","checkbox"===e?{type:"checkbox",checked:t,disabled:!0,className:"mr-2 align-middle",...n}:{type:e,...n}),del:({children:e})=>s.jsx("del",{className:"markdown-del line-through",children:e}),pre:({children:e})=>s.jsx("pre",{className:"overflow-x-auto",children:e}),...e}))()).current,ve=e.useRef(g),we=e.useRef(l),ye=e.useRef(f);e.useEffect(()=>{var e;g!==ve.current&&(ve.current=g),l!==we.current&&(we.current=l,e=l||{},L={...e}),f!==ye.current&&(ye.current=f),i&&de.current&&de.current.setRefreshCallback(i)},[g,l,f,i]);const be=e.useRef(!1),ke=e.useRef(B),Ie=e.useRef(null);S.current=a;const Se=e.useRef(new Set);e.useEffect(()=>{const e=ae.current.subscribe(e=>{re(e)});return()=>{e()}},[]),e.useEffect(()=>{ke.current=B},[B]);const Ce=e.useRef(!1);e.useEffect(()=>{(async()=>{if(u&&u.sessionId&&de.current)try{await de.current.setAuth(u)}catch($){let t="Authentication failed. Please refresh the page.";$?.message?.includes("No refresh token")?t="Session expired. Please refresh the page to continue.":$?.message&&(t=$.message),G({type:"auth_error",message:t,error:$}),E(!1)}else E(!1)})()},[!1,u]);const Te=e.useCallback(e=>{G(e.error)},[]),je=e.useCallback(async()=>{if(h)try{if(Se.current.has(B))return void E(!1);Se.current.add(B),E(!0);const e=await ue.current.getHistory();if(e.error)return Te(e),void E(!1);e.history&&e.history.length>0&&ae.current.insertMessages(e.history,"end"),Z(!!e.has_more),E(!1)}catch(e){let t="Could not load message history.";e?.message?.includes("No refresh token")?t="Session expired. Please refresh the page to continue.":e?.message?.includes("Network")?t="Network error. Please check your connection.":e?.message&&(t=e.message),G({type:"history_error",message:t,error:e}),E(!1)}else E(!1)},[B,Te,h]);e.useEffect(()=>{(async()=>{B&&!Ce.current?(Ce.current=!0,await je()):B||Ce.current||(Ce.current=!0,E(!1))})()},[B,je]);const Me=e.useCallback(()=>(ie.current=!1,oe.current=!1,W(!1),P(!1),V(!1),pe.current.clear(),le.current=null,ue.current.abort(),he.current.abort()),[]),Re=e.useCallback(e=>{const t={...e,id:e?.id||Math.random().toString(36).substring(2,9),timestamp:Date.now()};J(t),j&&j(t)},[j]),ze=e.useCallback(()=>{J(null)},[]),Ee=e.useCallback(()=>{ie.current=!1,le.current&&(pe.current.endResponse(),le.current=null),fe()},[fe]),He=e.useCallback(()=>{be.current=!1,ie.current=!1,fe()},[fe]),Ne=e.useCallback(e=>{const t=e?.data?.messageId||e?.messageId;t&&(le.current=t),U||V(!0),oe.current=!0,pe.current.addToQueue(e),fe()},[U,fe]);e.useEffect(()=>(he.current.on("stream_error",Re),he.current.on("response",Ne),he.current.on("response_end",Ee),he.current.on("disconnect",He),()=>{he.current.off("stream_error",Re),he.current.off("response",Ne),he.current.off("response_end",Ee),he.current.off("disconnect",He)}),[Re,Ne,Ee,He]);const Fe=async({messageId:e=Math.random().toString(36).substring(2,9),message:t="",attachedFiles:s=[],uploadId:n=null}={})=>{if(!t.trim())return;const r="user-"+e;try{Ie.current&&Ie.current?.messageId===r||ge.current.handleUserMessage({messageId:r,text:t,attachedFiles:s}),Ie.current={messageId:r,message:t,attachedFiles:s,uploadId:n},P(!0),V(!1),ie.current=!0,fe();const e=me.current.handlers._stream_feedback,i=e?.handler,o="raw"===e?.mode,a=await he.current.startStream({message:t,attachedFiles:s,uploadId:n,sessionId:ke.current,context:null,allowThinking:p},i,o);a.status||(ie.current=!1,fe(),Re({errorType:"connection_error",error:a.error||"Error occurred while connecting to server",message:a.message||"Failed to send message"}))}catch(i){ie.current=!1,fe(),Re({errorType:"send_error",error:i.message||"Unknown error",message:"Failed to send message"})}finally{P(!1)}},Ae=e.useCallback(async()=>{Ie.current&&await Fe(Ie.current)},[]),Oe=e.useMemo(()=>({addMessage:e=>ae.current.addMessage(e),updateMessage:(e,t)=>ae.current.updateMessage(e,t),removeMessage:e=>ae.current.removeMessage(e),getMessage:e=>ae.current.getMessage(e),clear:()=>ae.current.clear()}),[]),Be=e.useMemo(()=>({register:(e,t)=>ce.register(e,t,{instanceId:M}),registerGlobal:e=>ce.registerGlobal(e,{instanceId:M})}),[M,ce]);return c.default.createElement("div",{className:"react-ai-agent "+T},c.default.createElement(O.Provider,{value:{sendMsg:Fe,messages:ne,messageManager:Oe,isLoading:D,isStreaming:q,isResponseStarted:U,isInitialLoading:z,isLoadingMore:Y,error:$,streamError:K,clearStreamError:ze,getHistory:je,loadMoreMessages:async()=>{if(h&&!Y&&X){Q(!0);try{const e=ae.current.count,t=await ue.current.getHistory({offset:e,limit:20});if(t.error)return Te(t),void Q(!1);t.history&&t.history.length>0?(ae.current.insertMessages(t.history,"start"),Z(t.has_more)):Z(!1)}catch(e){G({type:"load_more_error",message:"Failed to load more messages",error:e})}finally{Q(!1)}}},hasMoreMessages:X,enableHistory:h,retryLastMessage:Ae,abort:Me,sessionId:B,setSessionId:_,instanceId:M,currentSelectedFile:ee,setCurrentSelectedFile:te,welcome:se,statusRegistry:Be,markdownComponents:xe,statusComponents:we.current,loadingComponent:ve.current,headerComponent:ye.current,typingAnimation:a}},c.default.createElement(A.Provider,{value:M},n)))},exports.DefaultApiHandler=m,exports.DefaultPanel=pr,exports.FloatingPanel=yr,exports.ForwardingManager=E,exports.LoadingResponse=Hn,exports.MessageItem=En,exports.MessageManager=w,exports.ModeToggle=({modes:e=[],activeMode:t,onModeChange:n,isDark:r=!1})=>e&&e.length>1?s.jsx("div",{className:"react-ai-agent-mode-toggle toggle-container flex items-center bg-theme-faint rounded-full !ml-5 flex-shrink-0 h-[35px]",style:{padding:"4px"},children:e.map(e=>s.jsx("button",{onClick:()=>n(e.id),className:`react-ai-agent-mode-button ${t===e.id?"react-ai-agent-mode-button-active":"react-ai-agent-mode-button-inactive"} relative px-3 py-1 text-[12px] font-medium rounded-full transition-all duration-200\n ${t===e.id?"bg-background text-theme-primary":"text-theme-subtle hover:text-theme-tertiary hover:bg-theme-subtle"}\n `,children:s.jsxs("div",{className:"react-ai-agent-mode-button-content flex items-center gap-1.5",children:[s.jsx("span",{className:"react-ai-agent-mode-button-icon",children:e.icon}),s.jsx("span",{className:"react-ai-agent-mode-button-label",children:e.label})]})},e.id))}):null,exports.SessionManager=class{constructor(e){this.tokenManager=e||new v,this.createSessionCallback=null,this.onSessionCreated=null}setCreateSessionCallback(e){this.createSessionCallback=e}setOnSessionCreated(e){this.onSessionCreated=e}async createSession(e={}){if(!this.createSessionCallback)throw Error("No session creation callback provided. Use SessionManager.setCreateSessionCallback()");try{const t=await this.createSessionCallback(e);if(!t||!t.sessionId)throw Error("Invalid session data: missing sessionId");if(!t.accessToken)throw Error("Invalid session data: missing accessToken");return tokenManager.setAuth(t),this.onSessionCreated&&this.onSessionCreated(t),t}catch(t){throw t}}getSessionId(){return tokenManager.getSessionId()}clearSession(){tokenManager.clear()}},exports.ShimmerText=Rn,exports.StartChat=W,exports.StatusBlock=zn,exports.StatusHandlerRegistry=b,exports.StreamService=x,exports.TokenManager=v,exports.WebSocketService=g,exports.adaptHistoryMessages=function(e,t=null){return Array.isArray(e)?e.map(e=>t?t(e):{messageId:e.id||e.messageId||e.uuid||Date.now()+"",type:"assistant"===e.role||"agent"===e.type||"bot"===e.sender?"agent":"user",content:e.content||e.text||e.message||e.body||"",timestamp:e.timestamp||e.created_at||e.createdAt||Date.now()}):[]},exports.adaptOpenAIStream=function(e,t){try{if(e.startsWith("data: ")){const s=e.slice(6);if("[DONE]"===s)return Ir();const n=JSON.parse(s),r=n.choices[0]?.delta?.content;if(r)return kr(t,r,!0)}}catch(s){}return null},exports.createAIResponse=kr,exports.createEndEvent=Ir,exports.createErrorEvent=function(e,t=""){return br("stream_error",{errorType:"error",error:e,message:t})},exports.createSSEEvent=br,exports.createStatusUpdate=function(e,t,s,n=null){return br("status_update",{messageId:e,action:t,status:s,data:n})},exports.createThinkingEvent=function(e,t,s=!0){return br("ai_thinking",{messageId:e,content:t,isLive:s})},exports.createToolCallEvent=function(e,t,s){return br("tool_call",{messageId:e,toolName:t,args:s})},exports.getGlobalForwardingManager=H,exports.getGlobalStatusRegistry=I,exports.parseSSEChunk=function(e){try{const t=e.startsWith("data:")?e.slice(5).trim():e.trim();return t?JSON.parse(t):null}catch(t){return null}},exports.resetGlobalForwardingManager=function(){z=null},exports.setGlobalForwardingManager=function(e){z=e},exports.useChatContext=B,exports.useForwarding=function(t,s,n={}){const r=H(),i=e.useRef(new Map),o=B(),a=o?.instanceId,l=e.useRef(s),c=e.useRef(n);e.useEffect(()=>{l.current=s,c.current=n}),e.useEffect(()=>{const e=[];if("object"!=typeof t||s){if("string"==typeof t&&s){const s=r.register(t,(...e)=>l.current(...e),{mode:c.current.mode||"dual",animated:!1!==c.current.animated,subscriptionMode:c.current.subscriptionMode||"delta",instanceId:a});e.push(s)}}else Object.entries(t).forEach(([t,s])=>{const n=r.register(t,(...e)=>s.handler(...e),{mode:s.mode||"dual",animated:!1!==s.animated,subscriptionMode:s.subscriptionMode||"delta",instanceId:a});e.push(n)});return()=>{e.forEach(e=>e())}},[t,r]);const d=e.useCallback((e,t,s={})=>{const n=r.register(e,t,s);return i.current.set(e,n),n},[r]),u=e.useCallback(e=>{const t=i.current.get(e);t&&(t(),i.current.delete(e))},[]),h=e.useCallback(()=>r.getActiveSessions(),[r]),m=e.useCallback(e=>r.handlers[e],[r]),g=e.useCallback(()=>Object.entries(r.handlers).map(([e,t])=>({action:e,...t})),[r]);return{register:d,unregister:u,getActiveSessions:h,getHandler:m,getAllHandlers:g}},exports.useStatusSubscription=function(t,s,n={}){const r=e.useContext(A),i=void 0!==n.instanceId?n.instanceId:r,o=i?{instanceId:i}:{},a=I(),l=e.useRef(s);e.useEffect(()=>{l.current=s},[s]),e.useEffect(()=>{const e=[];if("object"==typeof t&&null!==t)Object.entries(t).forEach(([t,s])=>{if("*"===t){const t=a.registerGlobal(s,o);e.push(t)}else{const n=a.register(t,s,o);e.push(n)}});else if("string"==typeof t){const s=e=>l.current?.(e);if("*"===t){const t=a.registerGlobal(s,o);e.push(t)}else{const n=a.register(t,s,o);e.push(n)}}return()=>{e.forEach(e=>e?.())}},[t,i])};
|