teodor-new-chat-ui 2.0.2 → 2.0.4

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.esm.js CHANGED
@@ -2935,7 +2935,7 @@ function hp({
2935
2935
  }
2936
2936
  }, H = () => {
2937
2937
  const Y = A(
2938
- "rounded-lg px-4 py-3 relative transition-all duration-200",
2938
+ "rounded-lg px-4 py-3 relative transition-all duration-200 min-w-0 break-words",
2939
2939
  T && "px-3 py-2 text-sm"
2940
2940
  );
2941
2941
  switch (P) {
@@ -7771,7 +7771,7 @@ function ro({
7771
7771
  "div",
7772
7772
  {
7773
7773
  onClick: () => B($.threadId),
7774
- className: `group relative p-3 rounded-lg cursor-pointer transition-colors border ${(a ?? m) === $.threadId ? `${s.activeThread || "bg-slate-600 border-slate-500"} ` : `${s.threadItem || "bg-slate-700 border-slate-600 hover:bg-slate-600"}`} ${s.threadItem || ""} text-slate-100`,
7774
+ className: `group relative p-3 rounded-lg cursor-pointer transition-colors border ${(a ?? m) === $.threadId ? `${s.activeThread || "bg-slate-600 border-slate-500"} ` : `${s.threadItem || "bg-slate-700 border-slate-600 hover:bg-slate-600 text-gray-900 dark:text-slate-100"}`} ${s.threadItem || ""} text-gray-900 dark:text-slate-100`,
7775
7775
  children: [
7776
7776
  /* @__PURE__ */ N("div", { className: "flex items-center justify-between", children: [
7777
7777
  /* @__PURE__ */ c("div", { className: "flex-1 min-w-0", children: D === $.threadId ? /* @__PURE__ */ N("div", { className: "flex items-center gap-2", onClick: (z) => z.stopPropagation(), children: [
@@ -7779,8 +7779,8 @@ function ro({
7779
7779
  /* @__PURE__ */ c(fe, { variant: "ghost", size: "sm", onClick: () => T($.threadId), className: "h-6 w-6 p-0", children: /* @__PURE__ */ c(ho, { size: 12 }) }),
7780
7780
  /* @__PURE__ */ c(fe, { variant: "ghost", size: "sm", onClick: P, className: "h-6 w-6 p-0", children: /* @__PURE__ */ c(Kt, { size: 12 }) })
7781
7781
  ] }) : /* @__PURE__ */ N(De, { children: [
7782
- /* @__PURE__ */ c("div", { className: "font-medium text-sm truncate text-slate-100", children: X($) }),
7783
- /* @__PURE__ */ N("div", { className: "flex items-center gap-2 text-xs text-slate-400 mt-1", children: [
7782
+ /* @__PURE__ */ c("div", { className: "font-medium text-sm truncate text-gray-900 dark:text-slate-100", children: X($) }),
7783
+ /* @__PURE__ */ N("div", { className: "flex items-center gap-2 text-xs text-gray-500 dark:text-slate-400 mt-1", children: [
7784
7784
  /* @__PURE__ */ c(ju, { size: 10 }),
7785
7785
  /* @__PURE__ */ c("span", { children: O($.updatedAt || $.createdAt) })
7786
7786
  ] })
package/dist/index.umd.js CHANGED
@@ -6,7 +6,7 @@
6
6
  `+s):r.stack=s}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=it(this.defaults,n);const{transitional:r,paramsSerializer:o,headers:s}=n;r!==void 0&&vn.assertOptions(r,{silentJSONParsing:He.transitional(He.boolean),forcedJSONParsing:He.transitional(He.boolean),clarifyTimeoutError:He.transitional(He.boolean)},!1),o!=null&&(S.isFunction(o)?n.paramsSerializer={serialize:o}:vn.assertOptions(o,{encode:He.function,serialize:He.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),vn.assertOptions(n,{baseUrl:He.spelling("baseURL"),withXsrfToken:He.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=s&&S.merge(s.common,s[n.method]);s&&S.forEach(["delete","get","head","post","put","patch","common"],g=>{delete s[g]}),n.headers=Ee.concat(a,s);const c=[];let d=!0;this.interceptors.request.forEach(function(h){typeof h.runWhen=="function"&&h.runWhen(n)===!1||(d=d&&h.synchronous,c.unshift(h.fulfilled,h.rejected))});const f=[];this.interceptors.response.forEach(function(h){f.push(h.fulfilled,h.rejected)});let u,p=0,m;if(!d){const g=[Ms.bind(this),void 0];for(g.unshift(...c),g.push(...f),m=g.length,u=Promise.resolve(n);p<m;)u=u.then(g[p++],g[p++]);return u}m=c.length;let v=n;for(;p<m;){const g=c[p++],h=c[p++];try{v=g(v)}catch(b){h.call(this,b);break}}try{u=Ms.call(this,v)}catch(g){return Promise.reject(g)}for(p=0,m=f.length;p<m;)u=u.then(f[p++],f[p++]);return u}getUri(t){t=it(this.defaults,t);const n=Ss(t.baseURL,t.url,t.allowAbsoluteUrls);return ps(n,t.params,t.paramsSerializer)}};S.forEach(["delete","get","head","options"],function(t){ct.prototype[t]=function(n,r){return this.request(it(r||{},{method:t,url:n,data:(r||{}).data}))}}),S.forEach(["post","put","patch"],function(t){function n(r){return function(s,a,c){return this.request(it(c||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:s,data:a}))}}ct.prototype[t]=n(),ct.prototype[t+"Form"]=n(!0)});let qu=class Ed{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(s){n=s});const r=this;this.promise.then(o=>{if(!r._listeners)return;let s=r._listeners.length;for(;s-- >0;)r._listeners[s](o);r._listeners=null}),this.promise.then=o=>{let s;const a=new Promise(c=>{r.subscribe(c),s=c}).then(o);return a.cancel=function(){r.unsubscribe(s)},a},t(function(s,a,c){r.reason||(r.reason=new wt(s,a,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Ed(function(o){t=o}),cancel:t}}};function Xu(e){return function(n){return e.apply(null,n)}}function Yu(e){return S.isObject(e)&&e.isAxiosError===!0}const Pr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Pr).forEach(([e,t])=>{Pr[t]=e});function Fs(e){const t=new ct(e),n=Zo(ct.prototype.request,t);return S.extend(n,ct.prototype,t,{allOwnKeys:!0}),S.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return Fs(it(e,o))},n}const ge=Fs(Bt);ge.Axios=ct,ge.CanceledError=wt,ge.CancelToken=qu,ge.isCancel=vs,ge.VERSION=Ds,ge.toFormData=pn,ge.AxiosError=ne,ge.Cancel=ge.CanceledError,ge.all=function(t){return Promise.all(t)},ge.spread=Xu,ge.isAxiosError=Yu,ge.mergeConfig=it,ge.AxiosHeaders=Ee,ge.formToJSON=e=>ms(S.isHTMLForm(e)?new FormData(e):e),ge.getAdapter=ks.getAdapter,ge.HttpStatusCode=Pr,ge.default=ge;const{Axios:dw,AxiosError:uw,CanceledError:fw,isCancel:pw,CancelToken:hw,VERSION:gw,all:mw,Cancel:bw,isAxiosError:vw,spread:ww,toFormData:yw,AxiosHeaders:xw,HttpStatusCode:Sw,formToJSON:Cw,getAdapter:Ew,mergeConfig:Nw}=ge,_r={};function zt(){var e;try{return typeof window<"u"&&((e=window.localStorage)==null?void 0:e.getItem("chat-debug"))==="1"}catch{return!1}}const $s=_r==null?void 0:_r.VITE_API_BASE_URL,Bs=$s?$s.replace(/\/+$/,""):void 0;!Bs&&typeof window<"u"&&console.warn("VITE_API_BASE_URL is not set. The API client will need to be configured via apiConfig prop.");let wn=null;const Ir=new Set;function Or(){return wn}function kr(e){wn=e,Ir.forEach(t=>t(e))}function Us(e){return Ir.add(e),()=>Ir.delete(e)}const We=ge.create({baseURL:Bs||"http://localhost:8000",timeout:3e4,withCredentials:!0});We.interceptors.request.use(e=>(wn&&(e.headers.Authorization=`Bearer ${wn}`),e)),We.interceptors.response.use(e=>e,e=>Promise.reject(e));async function lt(e,t){return(await We.get(e,t)).data}async function Mr(e,t,n){return(await We.post(e,t,n)).data}async function zs(e,t,n){return(await We.put(e,t,n)).data}async function Hs(e,t){return(await We.delete(e,t)).data}async function Ju(e,t){var m;if(zt()){let v=t.body;try{const g=JSON.parse(JSON.stringify(t.body));(m=g==null?void 0:g.payload)!=null&&m.files_info&&Array.isArray(g.payload.files_info)&&(g.payload.files_info=g.payload.files_info.map(h=>({...h,data:h!=null&&h.data?`<base64 ${String(h.data).length} chars>`:h==null?void 0:h.data}))),v=g}catch{}console.debug("[api.stream]",t.method,`${We.defaults.baseURL}${e}`,v)}const r=(We.defaults.baseURL||"").replace(/\/+$|^\s+|\s+$/g,""),o=t.method??"POST",s=Or(),a=t.headers??{},c=e?e.startsWith("/")?e:`/${e}`:"",d=r?`${r}${c}`:c||r,f=await fetch(d,{method:o,headers:{"Content-Type":"application/json",...s?{Authorization:`Bearer ${s}`}:{},...a},body:t.body!==void 0?JSON.stringify(t.body):void 0,credentials:"include",signal:t.signal});if(!f.ok||!f.body){const v=await f.text().catch(()=>"");throw zt()&&console.debug("[api.stream] non-OK",f.status,v==null?void 0:v.slice(0,500)),new Error(`Stream failed: ${f.status} ${f.statusText}${v?": "+v:""}`)}const u=f.body.getReader(),p=new TextDecoder;for(;;){const{done:v,value:g}=await u.read();if(v)break;const h=p.decode(g,{stream:!0});zt()&&console.debug("[api.stream] chunk",h.slice(0,200)),t.onChunk(h)}}function Ve(e){return e&&typeof e=="object"&&"data"in e?e.data:e}class yn{get baseUrl(){const t=We.defaults.baseURL||"";return String(t).replace(/\/+$|^\s+|\s+$/g,"")}updateConfig(t){t.baseUrl&&(We.defaults.baseURL=String(t.baseUrl).replace(/\/+$/g,"")),t.authToken!==void 0&&kr(t.authToken)}getAuthToken(){return Or()}setAuthToken(t){kr(t)}onTokenChange(t){return Us(t)}async listThreads(){const t=await lt("/chat/threads"),n=Ve(t);return(n==null?void 0:n.items)??(t==null?void 0:t.items)??[]}async createThread(t){const r=await Mr("/chat/threads",t?{title:t}:void 0);return Ve(r)}async updateThread(t,n){const r=await zs(`/chat/threads/${t}`,{title:n});return Ve(r)}async deleteThread(t){const n=await Hs(`/chat/threads/${t}`);return Ve(n)}async threadInfo(t){const n=await lt(`/chat/threads/${t}/info`);return Ve(n)}async getMessages(t){const n=await lt("/chat/messages",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ve(n)}async getState(t){const n=await lt("/chat/state",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ve(n)}async getStateHistory(t){const n=await lt("/chat/state/history",{params:{thread_id:t.threadId,checkpoint_id:t.checkpointId,checkpoint_ns:t.checkpointNs}});return Ve(n)}async listCheckpoints(t){const n=await lt("/chat/checkpoints",{params:{thread_id:t}});return Ve(n)}async uploadImage(t,n="/upload"){const r=new FormData;r.append("file",t,t.name),zt()&&console.debug("[api.uploadImage] ->",n,{name:t.name,type:t.type,size:t.size});const o=await Mr(n,r,{headers:{Accept:"application/json"},maxBodyLength:1/0}),s=Ve(o);if(zt()&&console.debug("[api.uploadImage] <-",s),!(s!=null&&s.url))throw new Error("Invalid upload response: missing url");return{url:s.url,mimeType:s.mimeType??t.type,name:s.name??t.name,size:s.size??t.size}}}const Ye=new yn;function Ws(e={}){const t=e.baseUrl??"/api/chat",n=e.streamPath??"/stream",[r,o]=P.useState(e.token??null),s=P.useRef(e.headers??{}),[a,c]=P.useState(!1),[d,f]=P.useState(null),[u,p]=P.useState(""),[m,v]=P.useState(null),g=P.useRef(null),h=P.useCallback(x=>{o(x)},[]),b=P.useCallback(()=>{var x;(x=g.current)==null||x.abort(),g.current=null,c(!1)},[]),w=P.useCallback(()=>{p(""),v(null),f(null)},[]),y=P.useCallback((x,E,C)=>{g.current&&(g.current.abort(),g.current=null),c(!0),f(null),e.autoAppendAssistant!==!1&&p("");const O=new AbortController;return g.current=O,(async()=>{var M,D,j,G;const N=(()=>{var V;try{return typeof window<"u"&&((V=window.localStorage)==null?void 0:V.getItem("chat-debug"))==="1"}catch{return!1}})(),L=V=>{var z;try{const X=JSON.parse(JSON.stringify(V));return(z=X==null?void 0:X.payload)!=null&&z.files_info&&Array.isArray(X.payload.files_info)&&(X.payload.files_info=X.payload.files_info.map(F=>({...F,data:F!=null&&F.data?`<base64 ${String(F.data).length} chars>`:F==null?void 0:F.data}))),X}catch{return V}};try{let V={};try{if(r)V={Authorization:`Bearer ${r}`};else if(typeof window<"u"){const _=window.__AUTH_TOKEN__,I=((M=window.localStorage)==null?void 0:M.getItem("authToken"))||null;let k=null;try{const B=(D=window.localStorage)==null?void 0:D.getItem("chat-settings");B&&(k=((j=JSON.parse(B))==null?void 0:j.apiKey)||null)}catch{}const Y=_||I||k||null;Y&&(V={Authorization:`Bearer ${Y}`})}}catch{}N&&console.debug("[use-chat] POST",t+n,L(x));const z=await fetch(t+n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",...V,...s.current},body:JSON.stringify(x),signal:O.signal});if(!z.ok||!z.body){const T=await z.text().catch(()=>"");throw N&&console.debug("[use-chat] non-OK response",z.status,T==null?void 0:T.slice(0,500)),new Error(`stream ${z.status}${T?": "+T:""}`)}const X=z.body.getReader(),F=new TextDecoder;let q="";for(;;){const{value:T,done:_}=await X.read();if(_)break;q+=F.decode(T,{stream:!0});let I;for(;(I=q.indexOf(`
7
7
 
8
8
  `))>=0;){const k=q.slice(0,I);q=q.slice(I+2);const Y=Qu(k);if(!Y)continue;let B;try{B=JSON.parse(Y)}catch{N&&console.debug("[use-chat] skip malformed SSE data:",Y==null?void 0:Y.slice(0,200));continue}const H=Zu(B)?B.data:B;if(N&&console.debug("[use-chat] event:",H==null?void 0:H.type,H),E==null||E(H),H.type==="token")e.autoAppendAssistant!==!1&&p(de=>de+H.content);else if(H.type==="message_delta"){const de=H.delta.filter(ie=>ie.type==="text").map(ie=>ie.text).join("");de&&e.autoAppendAssistant!==!1&&p(ie=>ie+de)}else H.type==="checkpoint"?v(H.checkpointId):H.type==="error"&&f(H.message)}}}catch(V){if((V==null?void 0:V.name)==="AbortError")return;const z=(V==null?void 0:V.message)||String(V);N&&console.debug("[use-chat] error:",z),f(z),(G=C==null?void 0:C.onError)==null||G.call(C,z)}finally{c(!1),g.current=null}})(),{close:()=>O.abort()}},[t,r,e.autoAppendAssistant]);return P.useEffect(()=>()=>{var x;return(x=g.current)==null?void 0:x.abort()},[]),{isStreaming:a,error:d,assistantText:u,lastCheckpointId:m,stream:y,stop:b,clear:w,setToken:h}}function Zu(e){return!!e&&typeof e=="object"&&e.protocolVersion==="v1"&&"data"in e}function Qu(e){const t=e.split(/\r?\n/),n=[];for(const r of t)if(r&&!r.startsWith(":")&&r.startsWith("data:")){const o=r.slice(5);n.push(o.startsWith(" ")?o.slice(1):o)}return n.length===0?null:n.join(`
9
- `)}const ef={messages:[],assemblingId:null,lastCheckpointId:null,toolIndex:{}};function tf(e,t){var n,r;switch(t.type){case"reset":return{messages:Rs(((n=t.payload)==null?void 0:n.messages)??[]),assemblingId:null,lastCheckpointId:null,toolIndex:{}};case"seed":return{...e,messages:Rs(t.payload.messages)};case"user_message":{const o=t.payload.message;if(e.assemblingId){const s=e.messages.findIndex(a=>a.id===e.assemblingId&&a.role==="assistant");if(s>=0){const a=e.messages.slice(0,s),c=e.messages.slice(s);return{...e,messages:[...a,o,...c]}}}return{...e,messages:[...e.messages,o]}}case"event":{const o=t.payload.ev;if(o.type==="message_start"&&o.role==="assistant"){const s=o.id,a=sf(o.model),c={id:s,role:"assistant",name:a||void 0,model:o.model,createdAt:new Date().toISOString(),content:[]};return{...e,assemblingId:s,messages:[...e.messages,c]}}if(o.type==="token"){const s=e.assemblingId??Dr(e.messages);return s?{...e,messages:nf(e.messages,s,o.content)}:e}if(o.type==="message_delta"){const s=e.assemblingId??Dr(e.messages);return s?{...e,messages:js(e.messages,s,o.delta)}:e}if(o.type==="message_end"){const s=e.assemblingId??Dr(e.messages);if(!s)return{...e,assemblingId:null};const a=e.messages,c=a.findIndex(d=>d.id===s&&d.role==="assistant");if(c>=0&&!((r=a[c].content)==null?void 0:r.some(u=>{var p;return(u==null?void 0:u.type)==="text"&&((p=u.text)==null?void 0:p.trim())}))){const u=[...a.slice(0,c),...a.slice(c+1)];return{...e,assemblingId:null,messages:u}}return{...e,assemblingId:null}}if(o.type==="tool_start"){const s=`tool-${o.id}`,a={type:"tool_call",id:o.id,name:o.name,args:o.args},c={id:s,role:"tool",name:o.name,createdAt:new Date().toISOString(),content:[a]};return{...e,messages:[...e.messages,c],toolIndex:{...e.toolIndex,[o.id]:s}}}if(o.type==="tool_result"){const s=e.toolIndex[o.id]??`tool-${o.id}`,a={type:"tool_result",toolCallId:o.id,output:o.output,error:o.error},c=e.messages.find(u=>u.id===s),d={id:s,role:"tool",content:[a],createdAt:new Date().toISOString()},f=c?js(e.messages,s,[a]):[...e.messages,d];return{...e,messages:f}}if(o.type==="checkpoint"){const s=of(e.messages,o.checkpointId);return{...e,lastCheckpointId:o.checkpointId,messages:s}}if(o.type==="error"){const s={id:`err-${Date.now()}`,role:"system",content:[{type:"text",text:`Error: ${o.message}`}],createdAt:new Date().toISOString()};return{...e,messages:[...e.messages,s]}}return e}default:return e}}function Vs(e=[]){const[t,n]=P.useReducer(tf,{...ef,messages:e}),r=P.useCallback(s=>{n({type:"event",payload:{ev:s}})},[]),o=P.useMemo(()=>({reset:s=>n({type:"reset",payload:{messages:s}}),seed:s=>n({type:"seed",payload:{messages:s}}),pushUser:s=>n({type:"user_message",payload:{message:s}}),onEvent:r}),[r]);return{state:t,dispatch:n,...o}}function Rs(e){return e.filter(t=>{if(t.role!=="assistant")return!0;const n=(t.content||[]).some(o=>{var s;return o&&o.type==="text"&&((s=o.text)==null?void 0:s.trim())}),r=(t.content||[]).some(o=>o&&o.type==="image_url");return!!(n||r)})}function Dr(e){for(let t=e.length-1;t>=0;t--)if(e[t].role==="assistant")return e[t].id;return null}function nf(e,t,n){return e.map(r=>{if(r.id!==t)return r;const o=r.content.slice(),s=o[o.length-1];return s&&s.type==="text"?s.text+=n:o.push({type:"text",text:n}),{...r,content:o}})}function js(e,t,n){return e.map(r=>r.id===t?{...r,content:rf(r.content,n)}:r)}function rf(e,t){const n=e.slice();for(const r of t)if(r.type==="text"){const o=n[n.length-1];(o==null?void 0:o.type)==="text"?o.text+=r.text:n.push({type:"text",text:r.text})}else n.push(r);return n}function of(e,t){for(let n=e.length-1;n>=0;n--)if(e[n].role==="assistant"){const o={...e[n],checkpointId:t};return[...e.slice(0,n),o,...e.slice(n+1)]}return e}function sf(e){if(!e)return null;const t=e.split("/");return t[t.length-1]||null}const Ks=P.createContext(null);function Ht({children:e,apiConfig:t,onError:n,onThreadChange:r,initialThreadId:o=null}){const s=Ye;P.useEffect(()=>{t&&s.updateConfig({baseUrl:t.baseUrl,authToken:t.apiKey})},[s,t]);const{isStreaming:a,error:c,stream:d,stop:f,setToken:u}=Ws({baseUrl:s.baseUrl,token:null,headers:t==null?void 0:t.headers,streamPath:"/chat/stream"}),[p,m]=P.useState(()=>typeof s.getAuthToken=="function"?s.getAuthToken():null);P.useEffect(()=>{u(typeof s.getAuthToken=="function"?s.getAuthToken():null);const I=s.onTokenChange(k=>{m(k),u(k)});return()=>{I()}},[s,u]);const v=P.useCallback(I=>{s.setAuthToken(I)},[s]),{state:g,seed:h,pushUser:b,onEvent:w,reset:y}=Vs(),[x,E]=P.useState([]),[C,O]=P.useState(null),N=P.useCallback(async()=>{const I=await s.listThreads();E(I)},[s]);P.useEffect(()=>{N().catch(()=>{})},[N]),P.useEffect(()=>{r==null||r(C)},[C,r]);const L=P.useRef(null);P.useEffect(()=>{o&&L.current!==o&&(L.current=o,D(o).catch(()=>{}))},[o]);const M=P.useRef(null),D=P.useCallback(async(I,k,Y)=>{var B;if(M.current!==I){M.current=I;try{const H=k??((B=(await s.listCheckpoints(I)).checkpoints.slice().sort((ie,R)=>new Date(R.createdAt).getTime()-new Date(ie.createdAt).getTime())[0])==null?void 0:B.checkpointId),de=await s.getMessages({threadId:I,checkpointId:H,checkpointNs:Y});O(I),h(de.messages)}finally{M.current=null}}},[s,h]),j=P.useCallback(async I=>s.listCheckpoints(I),[s]),G=P.useCallback(async I=>{if(!C)throw new Error("No active thread");const k=await s.getMessages({threadId:C,checkpointId:I});h(k.messages)},[s,C,h]),V=P.useCallback(async()=>{if(!C)throw new Error("No active thread");await D(C)},[C,D]),z=P.useRef(!1);P.useEffect(()=>{const I=z.current;if(z.current=a,I&&!a&&C){const k=g.lastCheckpointId??void 0;s.getMessages({threadId:C,checkpointId:k}).then(Y=>h(Y.messages)).catch(()=>{})}},[a,C,g.lastCheckpointId,s,h]);const X=P.useCallback(async I=>{const k=await s.createThread(I);return await N(),await D(k.threadId),k.threadId},[s,N,D]),F=P.useCallback(async I=>{await s.deleteThread(I),await N(),C===I&&(O(null),y([]))},[s,N,C,y]),q=P.useCallback(async(I,k)=>{await s.updateThread(I,k),await N()},[s,N]),T=P.useCallback(async(I,k)=>{var ae;if(!C)throw new Error("No active thread");async function Y(W){return await new Promise((ee,pe)=>{const he=new FileReader;he.onload=()=>ee(String(he.result)),he.onerror=J=>pe(J),he.readAsDataURL(W)})}async function B(W){return await new Promise((ee,pe)=>{const he=new FileReader;he.onload=()=>{try{const J=he.result;let ve="";const ce=new Uint8Array(J),me=ce.byteLength;for(let Te=0;Te<me;Te++)ve+=String.fromCharCode(ce[Te]);ee(btoa(ve))}catch(J){pe(J)}},he.onerror=J=>pe(J),he.readAsArrayBuffer(W)})}const H=[];I&&H.push({type:"text",text:I});const de=(k==null?void 0:k.attachments)||[];let ie=[];if(de.length>0)for(const W of de)if(W.type&&W.type.startsWith("image/")){let ee=null;try{const pe=await s.uploadImage(W,(t==null?void 0:t.uploadPath)||"/upload").catch(()=>null);ee=(pe==null?void 0:pe.url)||null}catch{}if(!ee)try{ee=await Y(W)}catch{ee=null}if(ee){const pe={type:"image_url",url:ee,mimeType:W.type,alt:W.name};H.push(pe)}try{ie.push({filename:W.name,data:await B(W),mime_type:W.type||"application/octet-stream"})}catch{}}else{const ee=await Y(W).catch(()=>null),pe={type:"file",url:String(ee),mimeType:W.type||void 0,name:W.name,size:W.size};H.push(pe);try{ie.push({filename:W.name,data:await B(W),mime_type:W.type||"application/octet-stream"})}catch{}}const R={id:((ae=crypto.randomUUID)==null?void 0:ae.call(crypto))||`user-${Date.now()}`,role:"user",content:H,createdAt:new Date().toISOString(),checkpointId:(k==null?void 0:k.checkpointId)??g.lastCheckpointId??void 0};b(R);const se={...R,content:R.content.filter(W=>W.type==="text"||W.type==="image_url")},le={threadId:C,payload:{messages:[se],attachments:R.content.filter(W=>W.type==="file").map(W=>({type:"file",url:W.url,mimeType:W.mimeType,name:W.name,size:W.size})),files_info:ie,...(k==null?void 0:k.payloadExtras)??{}},checkpointId:(k==null?void 0:k.checkpointId)??g.lastCheckpointId??void 0,checkpointNs:k==null?void 0:k.checkpointNs,nodeFilter:k==null?void 0:k.nodeFilter,config:k==null?void 0:k.config};d(le,W=>w(W),{onError:W=>console.warn("stream error",W)})},[C,b,d,w,g.lastCheckpointId,s,t==null?void 0:t.uploadPath]),_={baseUrl:s.baseUrl,token:p,setToken:v,api:s,threads:x,currentThreadId:C,setCurrentThreadId:O,messages:g.messages,isStreaming:a,error:c,lastCheckpointId:g.lastCheckpointId,streamingAssistantId:g.assemblingId,refreshThreads:N,createThread:X,deleteThread:F,renameThread:q,loadThread:D,listCheckpoints:j,navigateToCheckpoint:G,returnToLatest:V,send:T,stop:f};return i.jsx(Ks.Provider,{value:_,children:e})}function Lr(){const e=P.useContext(Ks);if(!e)throw new Error("useChat must be used within ChatProvider");return e}function A(...e){return Td.twMerge(Nd.clsx(e))}const af=Dt.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),fe=l.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...o},s)=>{const a=r?Pe.Slot:"button";return i.jsx(a,{className:A(af({variant:t,size:n,className:e})),ref:s,...o})});fe.displayName="Button";const Gs=l.forwardRef(({className:e,...t},n)=>i.jsx("textarea",{className:A("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:n,...t}));Gs.displayName="Textarea";const cf=Dt.cva("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function qs({className:e,variant:t,...n}){return i.jsx("div",{className:A(cf({variant:t}),e),...n})}function U(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function lf(e,t){const n=l.createContext(t),r=s=>{const{children:a,...c}=s,d=l.useMemo(()=>c,Object.values(c));return i.jsx(n.Provider,{value:d,children:a})};r.displayName=e+"Provider";function o(s){const a=l.useContext(n);if(a)return a;if(t!==void 0)return t;throw new Error(`\`${s}\` must be used within \`${e}\``)}return[r,o]}function Le(e,t=[]){let n=[];function r(s,a){const c=l.createContext(a),d=n.length;n=[...n,a];const f=p=>{var w;const{scope:m,children:v,...g}=p,h=((w=m==null?void 0:m[e])==null?void 0:w[d])||c,b=l.useMemo(()=>g,Object.values(g));return i.jsx(h.Provider,{value:b,children:v})};f.displayName=s+"Provider";function u(p,m){var h;const v=((h=m==null?void 0:m[e])==null?void 0:h[d])||c,g=l.useContext(v);if(g)return g;if(a!==void 0)return a;throw new Error(`\`${p}\` must be used within \`${s}\``)}return[f,u]}const o=()=>{const s=n.map(a=>l.createContext(a));return function(c){const d=(c==null?void 0:c[e])||s;return l.useMemo(()=>({[`__scope${e}`]:{...c,[e]:d}}),[c,d])}};return o.scopeName=e,[r,df(o,...t)]}function df(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(s){const a=r.reduce((c,{useScope:d,scopeName:f})=>{const p=d(s)[`__scope${f}`];return{...c,...p}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}var be=globalThis!=null&&globalThis.document?l.useLayoutEffect:()=>{},uf=l[" useInsertionEffect ".trim().toString()]||be;function Qe({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[o,s,a]=ff({defaultProp:t,onChange:n}),c=e!==void 0,d=c?e:o;{const u=l.useRef(e!==void 0);l.useEffect(()=>{const p=u.current;p!==c&&console.warn(`${r} is changing from ${p?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),u.current=c},[c,r])}const f=l.useCallback(u=>{var p;if(c){const m=pf(u)?u(e):u;m!==e&&((p=a.current)==null||p.call(a,m))}else s(u)},[c,e,s,a]);return[d,f]}function ff({defaultProp:e,onChange:t}){const[n,r]=l.useState(e),o=l.useRef(n),s=l.useRef(t);return uf(()=>{s.current=t},[t]),l.useEffect(()=>{var a;o.current!==n&&((a=s.current)==null||a.call(s,n),o.current=n)},[n,o]),[n,r,s]}function pf(e){return typeof e=="function"}function Xs(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Fr(...e){return t=>{let n=!1;const r=e.map(o=>{const s=Xs(o,t);return!n&&typeof s=="function"&&(n=!0),s});if(n)return()=>{for(let o=0;o<r.length;o++){const s=r[o];typeof s=="function"?s():Xs(e[o],null)}}}}function re(...e){return l.useCallback(Fr(...e),e)}var hf=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Z=hf.reduce((e,t)=>{const n=Pe.createSlot(`Primitive.${t}`),r=l.forwardRef((o,s)=>{const{asChild:a,...c}=o,d=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),i.jsx(d,{...c,ref:s})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function Ys(e,t){e&&cn.flushSync(()=>e.dispatchEvent(t))}function gf(e,t){return l.useReducer((n,r)=>t[n][r]??n,e)}var Ne=e=>{const{present:t,children:n}=e,r=mf(t),o=typeof n=="function"?n({present:r.isPresent}):l.Children.only(n),s=re(r.ref,bf(o));return typeof n=="function"||r.isPresent?l.cloneElement(o,{ref:s}):null};Ne.displayName="Presence";function mf(e){const[t,n]=l.useState(),r=l.useRef(null),o=l.useRef(e),s=l.useRef("none"),a=e?"mounted":"unmounted",[c,d]=gf(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return l.useEffect(()=>{const f=xn(r.current);s.current=c==="mounted"?f:"none"},[c]),be(()=>{const f=r.current,u=o.current;if(u!==e){const m=s.current,v=xn(f);e?d("MOUNT"):v==="none"||(f==null?void 0:f.display)==="none"?d("UNMOUNT"):d(u&&m!==v?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,d]),be(()=>{if(t){let f;const u=t.ownerDocument.defaultView??window,p=v=>{const h=xn(r.current).includes(CSS.escape(v.animationName));if(v.target===t&&h&&(d("ANIMATION_END"),!o.current)){const b=t.style.animationFillMode;t.style.animationFillMode="forwards",f=u.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=b)})}},m=v=>{v.target===t&&(s.current=xn(r.current))};return t.addEventListener("animationstart",m),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{u.clearTimeout(f),t.removeEventListener("animationstart",m),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:l.useCallback(f=>{r.current=f?getComputedStyle(f):null,n(f)},[])}}function xn(e){return(e==null?void 0:e.animationName)||"none"}function bf(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var vf=l[" useId ".trim().toString()]||(()=>{}),wf=0;function Fe(e){const[t,n]=l.useState(vf());return be(()=>{n(r=>r??String(wf++))},[e]),t?`radix-${t}`:""}var Sn="Collapsible",[yf,Tw]=Le(Sn),[xf,$r]=yf(Sn),Js=l.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:o,disabled:s,onOpenChange:a,...c}=e,[d,f]=Qe({prop:r,defaultProp:o??!1,onChange:a,caller:Sn});return i.jsx(xf,{scope:n,disabled:s,contentId:Fe(),open:d,onOpenToggle:l.useCallback(()=>f(u=>!u),[f]),children:i.jsx(Z.div,{"data-state":Ur(d),"data-disabled":s?"":void 0,...c,ref:t})})});Js.displayName=Sn;var Zs="CollapsibleTrigger",Qs=l.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,o=$r(Zs,n);return i.jsx(Z.button,{type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":Ur(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled,...r,ref:t,onClick:U(e.onClick,o.onOpenToggle)})});Qs.displayName=Zs;var Br="CollapsibleContent",Sf=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=$r(Br,e.__scopeCollapsible);return i.jsx(Ne,{present:n||o.open,children:({present:s})=>i.jsx(Cf,{...r,ref:t,present:s})})});Sf.displayName=Br;var Cf=l.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:o,...s}=e,a=$r(Br,n),[c,d]=l.useState(r),f=l.useRef(null),u=re(t,f),p=l.useRef(0),m=p.current,v=l.useRef(0),g=v.current,h=a.open||c,b=l.useRef(h),w=l.useRef(void 0);return l.useEffect(()=>{const y=requestAnimationFrame(()=>b.current=!1);return()=>cancelAnimationFrame(y)},[]),be(()=>{const y=f.current;if(y){w.current=w.current||{transitionDuration:y.style.transitionDuration,animationName:y.style.animationName},y.style.transitionDuration="0s",y.style.animationName="none";const x=y.getBoundingClientRect();p.current=x.height,v.current=x.width,b.current||(y.style.transitionDuration=w.current.transitionDuration,y.style.animationName=w.current.animationName),d(r)}},[a.open,r]),i.jsx(Z.div,{"data-state":Ur(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!h,...s,ref:u,style:{"--radix-collapsible-content-height":m?`${m}px`:void 0,"--radix-collapsible-content-width":g?`${g}px`:void 0,...e.style},children:h&&o})});function Ur(e){return e?"open":"closed"}var Ef=Js;const ea=Ef,ta=Qs;function Wt({content:e,className:t=""}){return i.jsx("div",{className:`prose prose-sm max-w-none dark:prose-invert prose-pre:rounded prose-pre:border prose-pre:bg-background/50 prose-code:bg-background/50 prose-code:px-1 prose-code:py-0.5 prose-code:rounded prose-table:my-4 prose-th:px-2 prose-td:px-2 leading-relaxed ${t}`,children:i.jsx(Ad,{remarkPlugins:[Pd],components:{p:({children:n})=>i.jsx("p",{className:"mt-0 mb-3 last:mb-0 whitespace-pre-wrap",children:n}),ul:({children:n})=>i.jsx("ul",{className:"list-disc pl-5 mb-3 space-y-1 marker:text-muted-foreground",children:n}),ol:({children:n})=>i.jsx("ol",{className:"list-decimal pl-5 mb-3 space-y-1 marker:text-muted-foreground",children:n}),li:({children:n})=>i.jsx("li",{className:"leading-snug",children:n}),blockquote:({children:n})=>i.jsx("blockquote",{className:"border-l-4 border-border pl-3 italic text-muted-foreground my-3",children:n}),table:({children:n})=>i.jsx("div",{className:"overflow-x-auto border rounded mb-4",children:i.jsx("table",{className:"w-full border-collapse text-xs",children:n})}),th:({children:n})=>i.jsx("th",{className:"border-b bg-muted/40 px-2 py-1 text-left font-medium text-[11px] uppercase tracking-wide",children:n}),td:({children:n})=>i.jsx("td",{className:"border-b px-2 py-1 align-top",children:n}),code:({className:n,children:r,...o})=>!/language-(\w+)/.exec(n||"")&&!(n!=null&&n.includes("language-"))?i.jsx("code",{className:"text-[12px] font-medium",...o,children:r}):i.jsx("pre",{className:"bg-background/50 p-2 rounded border overflow-x-auto text-xs leading-relaxed",children:i.jsx("code",{className:n,...o,children:r})})},children:e})})}function na({message:e,messageIndex:t,isStreamingMessage:n=!1,streamingDebounceMs:r=40,isEditing:o=!1,showActions:s=!0,showTimestamp:a=!0,showAgentName:c=!0,layoutSize:d="desktop",truncateToolMessages:f=!0,toolMessagePreviewLength:u=200,truncateUserMessages:p=!0,userMessagePreviewLength:m=200,customStyles:v={},checkpointBranches:g=[],currentCheckpointId:h,onSwitchToCheckpoint:b,onReturnToMainThread:w,temporalNavigation:y,onNavigateToPreviousBranch:x,onNavigateToNextBranch:E,onEdit:C,onRegenerate:O,onEditFromCheckpoint:N,onCancelEdit:L,onCopy:M}){const[D,j]=P.useState(!1),[G,V]=P.useState(!1),[z,X]=P.useState(!1),[F,q]=P.useState(!1),T=d==="phone"||d==="half-screen",_=e.role,I=_==="tool",k=P.useMemo(()=>Nf(e.content),[e.content]),Y=P.useMemo(()=>Of(e.content),[e.content]),B=P.useMemo(()=>e.content.filter(J=>J.type==="image_url"),[e.content]),H=P.useMemo(()=>e.content.filter(J=>J.type==="file"),[e.content]),de=Df(k,n?r:0),ie=async()=>{try{const J=I?Vt(e.content):k;await navigator.clipboard.writeText(J),j(!0),setTimeout(()=>j(!1),2e3),M==null||M(J)}catch(J){console.error("Failed to copy:",J)}},R=()=>{if(!C)return;const J=I?Vt(e.content):k;C(e.id,J)},se=()=>O==null?void 0:O(t),le=()=>{const ve=A(T?"h-3 w-3":"h-4 w-4","opacity-60 flex-shrink-0");switch(_){case"user":return i.jsx(K.User,{className:ve});case"assistant":return i.jsx(K.Bot,{className:ve});case"tool":return i.jsx(K.Wrench,{className:ve});default:return i.jsx(K.Bot,{className:ve})}},ae=()=>{const J="group relative mb-4 max-w-full";switch(_){case"user":return A(J,"flex justify-end");case"assistant":case"tool":case"system":return A(J,"flex justify-start");default:return J}},W=()=>{const J=A("rounded-lg px-4 py-3 relative transition-all duration-200",T&&"px-3 py-2 text-sm");switch(_){case"user":return A(J,"bg-primary text-primary-foreground max-w-[95%]",d==="phone"&&"max-w-[98%]");case"assistant":return A(J,"bg-muted text-muted-foreground max-w-[95%] border",d==="phone"&&"max-w-[98%]");case"tool":return A(J,"bg-secondary/50 text-secondary-foreground border border-dashed max-w-[95%]",d==="phone"&&"max-w-[98%]");case"system":return A(J,"bg-accent/40 text-muted-foreground max-w-[85%] border");default:return J}},ee=J=>{if(!J)return"";try{return new Date(J).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}},pe=()=>{if(I&&!z){const ce=Vt(e.content).slice(0,80).replace(/\s+/g," ");return i.jsx("div",{className:A("text-xs font-mono opacity-70 flex items-center justify-between gap-2",T&&"text-[10px]"),children:i.jsxs("span",{className:"truncate max-w-full",children:[ce,ce.length>=80?"…":""]})})}if(I&&f){const ce=Vt(e.content),me=ce.length>u;return i.jsx(ea,{open:G,onOpenChange:V,children:i.jsxs("div",{className:"font-mono text-sm",children:[i.jsx("pre",{className:A("whitespace-pre-wrap break-words",T&&"text-xs"),children:me&&!G?ce.substring(0,u)+"...":ce}),me&&i.jsx(ta,{asChild:!0,children:i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 text-xs",children:G?i.jsxs(i.Fragment,{children:[i.jsx(K.ChevronUp,{className:"h-3 w-3 mr-1"}),"Show less"]}):i.jsxs(i.Fragment,{children:[i.jsx(K.ChevronDown,{className:"h-3 w-3 mr-1"}),"Show more (",ce.length-u," chars)"]})})})]})})}if(I&&z&&!f){const ce=If(e.content);if(ce&&Tf(ce))return i.jsx(Wt,{content:ce.trim()});const me=Vt(e.content);return i.jsx("div",{className:"font-mono text-sm",children:i.jsx("pre",{className:A("whitespace-pre-wrap break-words",T&&"text-xs"),children:me})})}const J=B.length>0&&_!=="tool",ve=H.length>0&&_!=="tool";return i.jsxs("div",{children:[n?i.jsxs("div",{className:"relative",children:[(()=>{const ce=ra(de);return ce!==null?i.jsx(oa,{data:ce}):i.jsx(Wt,{content:Pf(Af(de))})})(),i.jsx("span",{className:"inline-block w-[6px] h-[14px] align-baseline ml-0.5 bg-foreground/40 animate-pulse",style:{verticalAlign:"text-bottom"}})]}):(()=>{const ce=ra(k.trim());if(ce!==null)return i.jsx(oa,{data:ce});if(_==="user"&&p){const me=k.trim();if(me.length>m)return i.jsxs(ea,{open:F,onOpenChange:q,children:[i.jsx("div",{className:A("text-sm",T&&"text-xs"),children:F?i.jsx(Wt,{content:me}):i.jsxs("pre",{className:A("font-sans whitespace-pre-wrap break-words bg-transparent p-0 m-0",T&&"text-xs"),children:[me.substring(0,m),"..."]})}),i.jsx(ta,{asChild:!0,children:i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 text-xs",children:F?i.jsxs(i.Fragment,{children:[i.jsx(K.ChevronUp,{className:"h-3 w-3 mr-1"})," Show less"]}):i.jsxs(i.Fragment,{children:[i.jsx(K.ChevronDown,{className:"h-3 w-3 mr-1"})," Show more (",me.length-m," chars)"]})})})]})}return i.jsx(Wt,{content:k.trim()})})(),J&&i.jsx("div",{className:"mt-2 grid grid-cols-2 gap-2",children:B.map((ce,me)=>i.jsxs("div",{className:"relative border rounded overflow-hidden",children:[i.jsx("img",{src:ce.url,alt:ce.alt??"image",className:"w-full h-auto"}),i.jsxs("div",{className:"absolute top-1 right-1 bg-background/70 rounded px-1 py-0.5 text-[10px] flex items-center gap-1",children:[i.jsx(K.Image,{className:"h-3 w-3"}),i.jsx("span",{children:"image"})]})]},me))}),ve&&i.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:H.map((ce,me)=>{const Te=ce,$=Te.name||"file";return i.jsxs("a",{href:Te.url,download:$,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-2 bg-gray-100 border border-gray-200 rounded px-2 py-1 text-xs hover:bg-gray-200",title:$,children:[i.jsx("span",{className:"inline-block w-1.5 h-1.5 rounded-full bg-gray-400"}),i.jsx("span",{className:"truncate max-w-[180px]",children:$})]},me)})})]})},he=P.useMemo(()=>kf(e),[e]);return P.useMemo(()=>Mf(e,h),[e,h]),i.jsx("div",{className:A(ae(),v.container),children:i.jsxs("div",{className:A(W(),v.content),children:[(a||c||I)&&i.jsxs("div",{className:A("flex items-center justify-between mb-2 pb-2 border-b border-current/10",T&&"mb-1 pb-1",v.header),children:[i.jsxs("div",{className:"flex items-center gap-2",children:[le(),c&&he&&i.jsx("span",{className:A("font-medium",T?"text-xs":"text-sm"),children:he}),I&&Y.name&&i.jsxs(qs,{variant:"outline",className:A("text-xs flex items-center gap-1 cursor-pointer",T&&"text-xs h-4"),onClick:()=>X(J=>!J),children:[i.jsx("span",{children:Y.name}),i.jsx("span",{className:"inline-flex items-center",children:z?i.jsx(K.ChevronUp,{className:"h-3 w-3"}):i.jsx(K.ChevronDown,{className:"h-3 w-3"})})]}),I&&!Y.name&&i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 px-1",onClick:()=>X(J=>!J),children:i.jsxs("span",{className:"text-xs flex items-center gap-1",children:["Tool Output ",z?i.jsx(K.ChevronUp,{className:"h-3 w-3"}):i.jsx(K.ChevronDown,{className:"h-3 w-3"})]})})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[a&&i.jsx("span",{className:A("text-xs opacity-60",T&&"text-xs"),children:ee(e.createdAt)}),s&&!o&&i.jsxs("div",{className:A("opacity-0 group-hover:opacity-100 transition-opacity","flex items-center gap-1",v.actions),children:[i.jsx(fe,{variant:"ghost",size:"sm",onClick:ie,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.Copy,{className:A(D?"text-success":"",T?"h-3 w-3":"h-4 w-4")})}),_==="user"&&C&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:R,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.Edit,{className:A(T?"h-3 w-3":"h-4 w-4")})}),_==="assistant"&&O&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:se,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.RotateCcw,{className:A(T?"h-3 w-3":"h-4 w-4")})})]})]})]}),i.jsx("div",{className:"relative",children:pe()}),I&&z&&(Y.toolCallId||Y.name)&&i.jsxs("div",{className:A("mt-2 pt-2 border-t border-current/10 text-xs opacity-60",T&&"text-xs"),children:[Y.name&&i.jsxs("div",{children:["Function: ",Y.name]}),Y.toolCallId&&i.jsxs("div",{children:["Call ID: ",Y.toolCallId]})]}),s&&_==="user"&&y&&y.totalBranches>1&&i.jsxs("div",{className:"flex items-center gap-2 mt-2 p-2 bg-muted/30 rounded border",children:[i.jsx(K.GitBranch,{className:"h-3 w-3 text-muted-foreground"}),i.jsxs("span",{className:"text-xs text-muted-foreground",children:["Branch ",y.currentIndex+1," of ",y.totalBranches]}),i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",disabled:!y.canGoBack,onClick:()=>x==null?void 0:x(),title:"Go back to previous branch",children:i.jsx(K.ChevronLeft,{className:"h-3 w-3"})}),i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",disabled:!y.canGoForward,onClick:()=>E==null?void 0:E(),title:"Go forward to next branch",children:i.jsx(K.ChevronRight,{className:"h-3 w-3"})})]})]}),!(a||c||I)&&s&&!o&&i.jsxs("div",{className:A("absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity","flex items-center gap-1",v.actions),children:[i.jsx(fe,{variant:"ghost",size:"sm",onClick:ie,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.Copy,{className:A(D?"text-success":"",T?"h-3 w-3":"h-4 w-4")})}),_==="user"&&C&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:R,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.Edit,{className:A(T?"h-3 w-3":"h-4 w-4")})}),_==="assistant"&&O&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:se,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.RotateCcw,{className:A(T?"h-3 w-3":"h-4 w-4")})})]})]})})}function Nf(e){const t=e.filter(n=>n.type==="text").map(n=>n.text).join("");return t||JSON.stringify(e)}function Tf(e){return e.includes(`
9
+ `)}const ef={messages:[],assemblingId:null,lastCheckpointId:null,toolIndex:{}};function tf(e,t){var n,r;switch(t.type){case"reset":return{messages:Rs(((n=t.payload)==null?void 0:n.messages)??[]),assemblingId:null,lastCheckpointId:null,toolIndex:{}};case"seed":return{...e,messages:Rs(t.payload.messages)};case"user_message":{const o=t.payload.message;if(e.assemblingId){const s=e.messages.findIndex(a=>a.id===e.assemblingId&&a.role==="assistant");if(s>=0){const a=e.messages.slice(0,s),c=e.messages.slice(s);return{...e,messages:[...a,o,...c]}}}return{...e,messages:[...e.messages,o]}}case"event":{const o=t.payload.ev;if(o.type==="message_start"&&o.role==="assistant"){const s=o.id,a=sf(o.model),c={id:s,role:"assistant",name:a||void 0,model:o.model,createdAt:new Date().toISOString(),content:[]};return{...e,assemblingId:s,messages:[...e.messages,c]}}if(o.type==="token"){const s=e.assemblingId??Dr(e.messages);return s?{...e,messages:nf(e.messages,s,o.content)}:e}if(o.type==="message_delta"){const s=e.assemblingId??Dr(e.messages);return s?{...e,messages:js(e.messages,s,o.delta)}:e}if(o.type==="message_end"){const s=e.assemblingId??Dr(e.messages);if(!s)return{...e,assemblingId:null};const a=e.messages,c=a.findIndex(d=>d.id===s&&d.role==="assistant");if(c>=0&&!((r=a[c].content)==null?void 0:r.some(u=>{var p;return(u==null?void 0:u.type)==="text"&&((p=u.text)==null?void 0:p.trim())}))){const u=[...a.slice(0,c),...a.slice(c+1)];return{...e,assemblingId:null,messages:u}}return{...e,assemblingId:null}}if(o.type==="tool_start"){const s=`tool-${o.id}`,a={type:"tool_call",id:o.id,name:o.name,args:o.args},c={id:s,role:"tool",name:o.name,createdAt:new Date().toISOString(),content:[a]};return{...e,messages:[...e.messages,c],toolIndex:{...e.toolIndex,[o.id]:s}}}if(o.type==="tool_result"){const s=e.toolIndex[o.id]??`tool-${o.id}`,a={type:"tool_result",toolCallId:o.id,output:o.output,error:o.error},c=e.messages.find(u=>u.id===s),d={id:s,role:"tool",content:[a],createdAt:new Date().toISOString()},f=c?js(e.messages,s,[a]):[...e.messages,d];return{...e,messages:f}}if(o.type==="checkpoint"){const s=of(e.messages,o.checkpointId);return{...e,lastCheckpointId:o.checkpointId,messages:s}}if(o.type==="error"){const s={id:`err-${Date.now()}`,role:"system",content:[{type:"text",text:`Error: ${o.message}`}],createdAt:new Date().toISOString()};return{...e,messages:[...e.messages,s]}}return e}default:return e}}function Vs(e=[]){const[t,n]=P.useReducer(tf,{...ef,messages:e}),r=P.useCallback(s=>{n({type:"event",payload:{ev:s}})},[]),o=P.useMemo(()=>({reset:s=>n({type:"reset",payload:{messages:s}}),seed:s=>n({type:"seed",payload:{messages:s}}),pushUser:s=>n({type:"user_message",payload:{message:s}}),onEvent:r}),[r]);return{state:t,dispatch:n,...o}}function Rs(e){return e.filter(t=>{if(t.role!=="assistant")return!0;const n=(t.content||[]).some(o=>{var s;return o&&o.type==="text"&&((s=o.text)==null?void 0:s.trim())}),r=(t.content||[]).some(o=>o&&o.type==="image_url");return!!(n||r)})}function Dr(e){for(let t=e.length-1;t>=0;t--)if(e[t].role==="assistant")return e[t].id;return null}function nf(e,t,n){return e.map(r=>{if(r.id!==t)return r;const o=r.content.slice(),s=o[o.length-1];return s&&s.type==="text"?s.text+=n:o.push({type:"text",text:n}),{...r,content:o}})}function js(e,t,n){return e.map(r=>r.id===t?{...r,content:rf(r.content,n)}:r)}function rf(e,t){const n=e.slice();for(const r of t)if(r.type==="text"){const o=n[n.length-1];(o==null?void 0:o.type)==="text"?o.text+=r.text:n.push({type:"text",text:r.text})}else n.push(r);return n}function of(e,t){for(let n=e.length-1;n>=0;n--)if(e[n].role==="assistant"){const o={...e[n],checkpointId:t};return[...e.slice(0,n),o,...e.slice(n+1)]}return e}function sf(e){if(!e)return null;const t=e.split("/");return t[t.length-1]||null}const Ks=P.createContext(null);function Ht({children:e,apiConfig:t,onError:n,onThreadChange:r,initialThreadId:o=null}){const s=Ye;P.useEffect(()=>{t&&s.updateConfig({baseUrl:t.baseUrl,authToken:t.apiKey})},[s,t]);const{isStreaming:a,error:c,stream:d,stop:f,setToken:u}=Ws({baseUrl:s.baseUrl,token:null,headers:t==null?void 0:t.headers,streamPath:"/chat/stream"}),[p,m]=P.useState(()=>typeof s.getAuthToken=="function"?s.getAuthToken():null);P.useEffect(()=>{u(typeof s.getAuthToken=="function"?s.getAuthToken():null);const I=s.onTokenChange(k=>{m(k),u(k)});return()=>{I()}},[s,u]);const v=P.useCallback(I=>{s.setAuthToken(I)},[s]),{state:g,seed:h,pushUser:b,onEvent:w,reset:y}=Vs(),[x,E]=P.useState([]),[C,O]=P.useState(null),N=P.useCallback(async()=>{const I=await s.listThreads();E(I)},[s]);P.useEffect(()=>{N().catch(()=>{})},[N]),P.useEffect(()=>{r==null||r(C)},[C,r]);const L=P.useRef(null);P.useEffect(()=>{o&&L.current!==o&&(L.current=o,D(o).catch(()=>{}))},[o]);const M=P.useRef(null),D=P.useCallback(async(I,k,Y)=>{var B;if(M.current!==I){M.current=I;try{const H=k??((B=(await s.listCheckpoints(I)).checkpoints.slice().sort((ie,R)=>new Date(R.createdAt).getTime()-new Date(ie.createdAt).getTime())[0])==null?void 0:B.checkpointId),de=await s.getMessages({threadId:I,checkpointId:H,checkpointNs:Y});O(I),h(de.messages)}finally{M.current=null}}},[s,h]),j=P.useCallback(async I=>s.listCheckpoints(I),[s]),G=P.useCallback(async I=>{if(!C)throw new Error("No active thread");const k=await s.getMessages({threadId:C,checkpointId:I});h(k.messages)},[s,C,h]),V=P.useCallback(async()=>{if(!C)throw new Error("No active thread");await D(C)},[C,D]),z=P.useRef(!1);P.useEffect(()=>{const I=z.current;if(z.current=a,I&&!a&&C){const k=g.lastCheckpointId??void 0;s.getMessages({threadId:C,checkpointId:k}).then(Y=>h(Y.messages)).catch(()=>{})}},[a,C,g.lastCheckpointId,s,h]);const X=P.useCallback(async I=>{const k=await s.createThread(I);return await N(),await D(k.threadId),k.threadId},[s,N,D]),F=P.useCallback(async I=>{await s.deleteThread(I),await N(),C===I&&(O(null),y([]))},[s,N,C,y]),q=P.useCallback(async(I,k)=>{await s.updateThread(I,k),await N()},[s,N]),T=P.useCallback(async(I,k)=>{var ae;if(!C)throw new Error("No active thread");async function Y(W){return await new Promise((ee,pe)=>{const he=new FileReader;he.onload=()=>ee(String(he.result)),he.onerror=J=>pe(J),he.readAsDataURL(W)})}async function B(W){return await new Promise((ee,pe)=>{const he=new FileReader;he.onload=()=>{try{const J=he.result;let ve="";const ce=new Uint8Array(J),me=ce.byteLength;for(let Te=0;Te<me;Te++)ve+=String.fromCharCode(ce[Te]);ee(btoa(ve))}catch(J){pe(J)}},he.onerror=J=>pe(J),he.readAsArrayBuffer(W)})}const H=[];I&&H.push({type:"text",text:I});const de=(k==null?void 0:k.attachments)||[];let ie=[];if(de.length>0)for(const W of de)if(W.type&&W.type.startsWith("image/")){let ee=null;try{const pe=await s.uploadImage(W,(t==null?void 0:t.uploadPath)||"/upload").catch(()=>null);ee=(pe==null?void 0:pe.url)||null}catch{}if(!ee)try{ee=await Y(W)}catch{ee=null}if(ee){const pe={type:"image_url",url:ee,mimeType:W.type,alt:W.name};H.push(pe)}try{ie.push({filename:W.name,data:await B(W),mime_type:W.type||"application/octet-stream"})}catch{}}else{const ee=await Y(W).catch(()=>null),pe={type:"file",url:String(ee),mimeType:W.type||void 0,name:W.name,size:W.size};H.push(pe);try{ie.push({filename:W.name,data:await B(W),mime_type:W.type||"application/octet-stream"})}catch{}}const R={id:((ae=crypto.randomUUID)==null?void 0:ae.call(crypto))||`user-${Date.now()}`,role:"user",content:H,createdAt:new Date().toISOString(),checkpointId:(k==null?void 0:k.checkpointId)??g.lastCheckpointId??void 0};b(R);const se={...R,content:R.content.filter(W=>W.type==="text"||W.type==="image_url")},le={threadId:C,payload:{messages:[se],attachments:R.content.filter(W=>W.type==="file").map(W=>({type:"file",url:W.url,mimeType:W.mimeType,name:W.name,size:W.size})),files_info:ie,...(k==null?void 0:k.payloadExtras)??{}},checkpointId:(k==null?void 0:k.checkpointId)??g.lastCheckpointId??void 0,checkpointNs:k==null?void 0:k.checkpointNs,nodeFilter:k==null?void 0:k.nodeFilter,config:k==null?void 0:k.config};d(le,W=>w(W),{onError:W=>console.warn("stream error",W)})},[C,b,d,w,g.lastCheckpointId,s,t==null?void 0:t.uploadPath]),_={baseUrl:s.baseUrl,token:p,setToken:v,api:s,threads:x,currentThreadId:C,setCurrentThreadId:O,messages:g.messages,isStreaming:a,error:c,lastCheckpointId:g.lastCheckpointId,streamingAssistantId:g.assemblingId,refreshThreads:N,createThread:X,deleteThread:F,renameThread:q,loadThread:D,listCheckpoints:j,navigateToCheckpoint:G,returnToLatest:V,send:T,stop:f};return i.jsx(Ks.Provider,{value:_,children:e})}function Lr(){const e=P.useContext(Ks);if(!e)throw new Error("useChat must be used within ChatProvider");return e}function A(...e){return Td.twMerge(Nd.clsx(e))}const af=Dt.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),fe=l.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...o},s)=>{const a=r?Pe.Slot:"button";return i.jsx(a,{className:A(af({variant:t,size:n,className:e})),ref:s,...o})});fe.displayName="Button";const Gs=l.forwardRef(({className:e,...t},n)=>i.jsx("textarea",{className:A("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:n,...t}));Gs.displayName="Textarea";const cf=Dt.cva("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function qs({className:e,variant:t,...n}){return i.jsx("div",{className:A(cf({variant:t}),e),...n})}function U(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function lf(e,t){const n=l.createContext(t),r=s=>{const{children:a,...c}=s,d=l.useMemo(()=>c,Object.values(c));return i.jsx(n.Provider,{value:d,children:a})};r.displayName=e+"Provider";function o(s){const a=l.useContext(n);if(a)return a;if(t!==void 0)return t;throw new Error(`\`${s}\` must be used within \`${e}\``)}return[r,o]}function Le(e,t=[]){let n=[];function r(s,a){const c=l.createContext(a),d=n.length;n=[...n,a];const f=p=>{var w;const{scope:m,children:v,...g}=p,h=((w=m==null?void 0:m[e])==null?void 0:w[d])||c,b=l.useMemo(()=>g,Object.values(g));return i.jsx(h.Provider,{value:b,children:v})};f.displayName=s+"Provider";function u(p,m){var h;const v=((h=m==null?void 0:m[e])==null?void 0:h[d])||c,g=l.useContext(v);if(g)return g;if(a!==void 0)return a;throw new Error(`\`${p}\` must be used within \`${s}\``)}return[f,u]}const o=()=>{const s=n.map(a=>l.createContext(a));return function(c){const d=(c==null?void 0:c[e])||s;return l.useMemo(()=>({[`__scope${e}`]:{...c,[e]:d}}),[c,d])}};return o.scopeName=e,[r,df(o,...t)]}function df(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(s){const a=r.reduce((c,{useScope:d,scopeName:f})=>{const p=d(s)[`__scope${f}`];return{...c,...p}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}var be=globalThis!=null&&globalThis.document?l.useLayoutEffect:()=>{},uf=l[" useInsertionEffect ".trim().toString()]||be;function Qe({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[o,s,a]=ff({defaultProp:t,onChange:n}),c=e!==void 0,d=c?e:o;{const u=l.useRef(e!==void 0);l.useEffect(()=>{const p=u.current;p!==c&&console.warn(`${r} is changing from ${p?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),u.current=c},[c,r])}const f=l.useCallback(u=>{var p;if(c){const m=pf(u)?u(e):u;m!==e&&((p=a.current)==null||p.call(a,m))}else s(u)},[c,e,s,a]);return[d,f]}function ff({defaultProp:e,onChange:t}){const[n,r]=l.useState(e),o=l.useRef(n),s=l.useRef(t);return uf(()=>{s.current=t},[t]),l.useEffect(()=>{var a;o.current!==n&&((a=s.current)==null||a.call(s,n),o.current=n)},[n,o]),[n,r,s]}function pf(e){return typeof e=="function"}function Xs(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Fr(...e){return t=>{let n=!1;const r=e.map(o=>{const s=Xs(o,t);return!n&&typeof s=="function"&&(n=!0),s});if(n)return()=>{for(let o=0;o<r.length;o++){const s=r[o];typeof s=="function"?s():Xs(e[o],null)}}}}function re(...e){return l.useCallback(Fr(...e),e)}var hf=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Z=hf.reduce((e,t)=>{const n=Pe.createSlot(`Primitive.${t}`),r=l.forwardRef((o,s)=>{const{asChild:a,...c}=o,d=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),i.jsx(d,{...c,ref:s})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function Ys(e,t){e&&cn.flushSync(()=>e.dispatchEvent(t))}function gf(e,t){return l.useReducer((n,r)=>t[n][r]??n,e)}var Ne=e=>{const{present:t,children:n}=e,r=mf(t),o=typeof n=="function"?n({present:r.isPresent}):l.Children.only(n),s=re(r.ref,bf(o));return typeof n=="function"||r.isPresent?l.cloneElement(o,{ref:s}):null};Ne.displayName="Presence";function mf(e){const[t,n]=l.useState(),r=l.useRef(null),o=l.useRef(e),s=l.useRef("none"),a=e?"mounted":"unmounted",[c,d]=gf(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return l.useEffect(()=>{const f=xn(r.current);s.current=c==="mounted"?f:"none"},[c]),be(()=>{const f=r.current,u=o.current;if(u!==e){const m=s.current,v=xn(f);e?d("MOUNT"):v==="none"||(f==null?void 0:f.display)==="none"?d("UNMOUNT"):d(u&&m!==v?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,d]),be(()=>{if(t){let f;const u=t.ownerDocument.defaultView??window,p=v=>{const h=xn(r.current).includes(CSS.escape(v.animationName));if(v.target===t&&h&&(d("ANIMATION_END"),!o.current)){const b=t.style.animationFillMode;t.style.animationFillMode="forwards",f=u.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=b)})}},m=v=>{v.target===t&&(s.current=xn(r.current))};return t.addEventListener("animationstart",m),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{u.clearTimeout(f),t.removeEventListener("animationstart",m),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:l.useCallback(f=>{r.current=f?getComputedStyle(f):null,n(f)},[])}}function xn(e){return(e==null?void 0:e.animationName)||"none"}function bf(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var vf=l[" useId ".trim().toString()]||(()=>{}),wf=0;function Fe(e){const[t,n]=l.useState(vf());return be(()=>{n(r=>r??String(wf++))},[e]),t?`radix-${t}`:""}var Sn="Collapsible",[yf,Tw]=Le(Sn),[xf,$r]=yf(Sn),Js=l.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:o,disabled:s,onOpenChange:a,...c}=e,[d,f]=Qe({prop:r,defaultProp:o??!1,onChange:a,caller:Sn});return i.jsx(xf,{scope:n,disabled:s,contentId:Fe(),open:d,onOpenToggle:l.useCallback(()=>f(u=>!u),[f]),children:i.jsx(Z.div,{"data-state":Ur(d),"data-disabled":s?"":void 0,...c,ref:t})})});Js.displayName=Sn;var Zs="CollapsibleTrigger",Qs=l.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,o=$r(Zs,n);return i.jsx(Z.button,{type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":Ur(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled,...r,ref:t,onClick:U(e.onClick,o.onOpenToggle)})});Qs.displayName=Zs;var Br="CollapsibleContent",Sf=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=$r(Br,e.__scopeCollapsible);return i.jsx(Ne,{present:n||o.open,children:({present:s})=>i.jsx(Cf,{...r,ref:t,present:s})})});Sf.displayName=Br;var Cf=l.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:o,...s}=e,a=$r(Br,n),[c,d]=l.useState(r),f=l.useRef(null),u=re(t,f),p=l.useRef(0),m=p.current,v=l.useRef(0),g=v.current,h=a.open||c,b=l.useRef(h),w=l.useRef(void 0);return l.useEffect(()=>{const y=requestAnimationFrame(()=>b.current=!1);return()=>cancelAnimationFrame(y)},[]),be(()=>{const y=f.current;if(y){w.current=w.current||{transitionDuration:y.style.transitionDuration,animationName:y.style.animationName},y.style.transitionDuration="0s",y.style.animationName="none";const x=y.getBoundingClientRect();p.current=x.height,v.current=x.width,b.current||(y.style.transitionDuration=w.current.transitionDuration,y.style.animationName=w.current.animationName),d(r)}},[a.open,r]),i.jsx(Z.div,{"data-state":Ur(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!h,...s,ref:u,style:{"--radix-collapsible-content-height":m?`${m}px`:void 0,"--radix-collapsible-content-width":g?`${g}px`:void 0,...e.style},children:h&&o})});function Ur(e){return e?"open":"closed"}var Ef=Js;const ea=Ef,ta=Qs;function Wt({content:e,className:t=""}){return i.jsx("div",{className:`prose prose-sm max-w-none dark:prose-invert prose-pre:rounded prose-pre:border prose-pre:bg-background/50 prose-code:bg-background/50 prose-code:px-1 prose-code:py-0.5 prose-code:rounded prose-table:my-4 prose-th:px-2 prose-td:px-2 leading-relaxed ${t}`,children:i.jsx(Ad,{remarkPlugins:[Pd],components:{p:({children:n})=>i.jsx("p",{className:"mt-0 mb-3 last:mb-0 whitespace-pre-wrap",children:n}),ul:({children:n})=>i.jsx("ul",{className:"list-disc pl-5 mb-3 space-y-1 marker:text-muted-foreground",children:n}),ol:({children:n})=>i.jsx("ol",{className:"list-decimal pl-5 mb-3 space-y-1 marker:text-muted-foreground",children:n}),li:({children:n})=>i.jsx("li",{className:"leading-snug",children:n}),blockquote:({children:n})=>i.jsx("blockquote",{className:"border-l-4 border-border pl-3 italic text-muted-foreground my-3",children:n}),table:({children:n})=>i.jsx("div",{className:"overflow-x-auto border rounded mb-4",children:i.jsx("table",{className:"w-full border-collapse text-xs",children:n})}),th:({children:n})=>i.jsx("th",{className:"border-b bg-muted/40 px-2 py-1 text-left font-medium text-[11px] uppercase tracking-wide",children:n}),td:({children:n})=>i.jsx("td",{className:"border-b px-2 py-1 align-top",children:n}),code:({className:n,children:r,...o})=>!/language-(\w+)/.exec(n||"")&&!(n!=null&&n.includes("language-"))?i.jsx("code",{className:"text-[12px] font-medium",...o,children:r}):i.jsx("pre",{className:"bg-background/50 p-2 rounded border overflow-x-auto text-xs leading-relaxed",children:i.jsx("code",{className:n,...o,children:r})})},children:e})})}function na({message:e,messageIndex:t,isStreamingMessage:n=!1,streamingDebounceMs:r=40,isEditing:o=!1,showActions:s=!0,showTimestamp:a=!0,showAgentName:c=!0,layoutSize:d="desktop",truncateToolMessages:f=!0,toolMessagePreviewLength:u=200,truncateUserMessages:p=!0,userMessagePreviewLength:m=200,customStyles:v={},checkpointBranches:g=[],currentCheckpointId:h,onSwitchToCheckpoint:b,onReturnToMainThread:w,temporalNavigation:y,onNavigateToPreviousBranch:x,onNavigateToNextBranch:E,onEdit:C,onRegenerate:O,onEditFromCheckpoint:N,onCancelEdit:L,onCopy:M}){const[D,j]=P.useState(!1),[G,V]=P.useState(!1),[z,X]=P.useState(!1),[F,q]=P.useState(!1),T=d==="phone"||d==="half-screen",_=e.role,I=_==="tool",k=P.useMemo(()=>Nf(e.content),[e.content]),Y=P.useMemo(()=>Of(e.content),[e.content]),B=P.useMemo(()=>e.content.filter(J=>J.type==="image_url"),[e.content]),H=P.useMemo(()=>e.content.filter(J=>J.type==="file"),[e.content]),de=Df(k,n?r:0),ie=async()=>{try{const J=I?Vt(e.content):k;await navigator.clipboard.writeText(J),j(!0),setTimeout(()=>j(!1),2e3),M==null||M(J)}catch(J){console.error("Failed to copy:",J)}},R=()=>{if(!C)return;const J=I?Vt(e.content):k;C(e.id,J)},se=()=>O==null?void 0:O(t),le=()=>{const ve=A(T?"h-3 w-3":"h-4 w-4","opacity-60 flex-shrink-0");switch(_){case"user":return i.jsx(K.User,{className:ve});case"assistant":return i.jsx(K.Bot,{className:ve});case"tool":return i.jsx(K.Wrench,{className:ve});default:return i.jsx(K.Bot,{className:ve})}},ae=()=>{const J="group relative mb-4 max-w-full";switch(_){case"user":return A(J,"flex justify-end");case"assistant":case"tool":case"system":return A(J,"flex justify-start");default:return J}},W=()=>{const J=A("rounded-lg px-4 py-3 relative transition-all duration-200 min-w-0 break-words",T&&"px-3 py-2 text-sm");switch(_){case"user":return A(J,"bg-primary text-primary-foreground max-w-[95%]",d==="phone"&&"max-w-[98%]");case"assistant":return A(J,"bg-muted text-muted-foreground max-w-[95%] border",d==="phone"&&"max-w-[98%]");case"tool":return A(J,"bg-secondary/50 text-secondary-foreground border border-dashed max-w-[95%]",d==="phone"&&"max-w-[98%]");case"system":return A(J,"bg-accent/40 text-muted-foreground max-w-[85%] border");default:return J}},ee=J=>{if(!J)return"";try{return new Date(J).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return""}},pe=()=>{if(I&&!z){const ce=Vt(e.content).slice(0,80).replace(/\s+/g," ");return i.jsx("div",{className:A("text-xs font-mono opacity-70 flex items-center justify-between gap-2",T&&"text-[10px]"),children:i.jsxs("span",{className:"truncate max-w-full",children:[ce,ce.length>=80?"…":""]})})}if(I&&f){const ce=Vt(e.content),me=ce.length>u;return i.jsx(ea,{open:G,onOpenChange:V,children:i.jsxs("div",{className:"font-mono text-sm",children:[i.jsx("pre",{className:A("whitespace-pre-wrap break-words",T&&"text-xs"),children:me&&!G?ce.substring(0,u)+"...":ce}),me&&i.jsx(ta,{asChild:!0,children:i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 text-xs",children:G?i.jsxs(i.Fragment,{children:[i.jsx(K.ChevronUp,{className:"h-3 w-3 mr-1"}),"Show less"]}):i.jsxs(i.Fragment,{children:[i.jsx(K.ChevronDown,{className:"h-3 w-3 mr-1"}),"Show more (",ce.length-u," chars)"]})})})]})})}if(I&&z&&!f){const ce=If(e.content);if(ce&&Tf(ce))return i.jsx(Wt,{content:ce.trim()});const me=Vt(e.content);return i.jsx("div",{className:"font-mono text-sm",children:i.jsx("pre",{className:A("whitespace-pre-wrap break-words",T&&"text-xs"),children:me})})}const J=B.length>0&&_!=="tool",ve=H.length>0&&_!=="tool";return i.jsxs("div",{children:[n?i.jsxs("div",{className:"relative",children:[(()=>{const ce=ra(de);return ce!==null?i.jsx(oa,{data:ce}):i.jsx(Wt,{content:Pf(Af(de))})})(),i.jsx("span",{className:"inline-block w-[6px] h-[14px] align-baseline ml-0.5 bg-foreground/40 animate-pulse",style:{verticalAlign:"text-bottom"}})]}):(()=>{const ce=ra(k.trim());if(ce!==null)return i.jsx(oa,{data:ce});if(_==="user"&&p){const me=k.trim();if(me.length>m)return i.jsxs(ea,{open:F,onOpenChange:q,children:[i.jsx("div",{className:A("text-sm",T&&"text-xs"),children:F?i.jsx(Wt,{content:me}):i.jsxs("pre",{className:A("font-sans whitespace-pre-wrap break-words bg-transparent p-0 m-0",T&&"text-xs"),children:[me.substring(0,m),"..."]})}),i.jsx(ta,{asChild:!0,children:i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 text-xs",children:F?i.jsxs(i.Fragment,{children:[i.jsx(K.ChevronUp,{className:"h-3 w-3 mr-1"})," Show less"]}):i.jsxs(i.Fragment,{children:[i.jsx(K.ChevronDown,{className:"h-3 w-3 mr-1"})," Show more (",me.length-m," chars)"]})})})]})}return i.jsx(Wt,{content:k.trim()})})(),J&&i.jsx("div",{className:"mt-2 grid grid-cols-2 gap-2",children:B.map((ce,me)=>i.jsxs("div",{className:"relative border rounded overflow-hidden",children:[i.jsx("img",{src:ce.url,alt:ce.alt??"image",className:"w-full h-auto"}),i.jsxs("div",{className:"absolute top-1 right-1 bg-background/70 rounded px-1 py-0.5 text-[10px] flex items-center gap-1",children:[i.jsx(K.Image,{className:"h-3 w-3"}),i.jsx("span",{children:"image"})]})]},me))}),ve&&i.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:H.map((ce,me)=>{const Te=ce,$=Te.name||"file";return i.jsxs("a",{href:Te.url,download:$,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-2 bg-gray-100 border border-gray-200 rounded px-2 py-1 text-xs hover:bg-gray-200",title:$,children:[i.jsx("span",{className:"inline-block w-1.5 h-1.5 rounded-full bg-gray-400"}),i.jsx("span",{className:"truncate max-w-[180px]",children:$})]},me)})})]})},he=P.useMemo(()=>kf(e),[e]);return P.useMemo(()=>Mf(e,h),[e,h]),i.jsx("div",{className:A(ae(),v.container),children:i.jsxs("div",{className:A(W(),v.content),children:[(a||c||I)&&i.jsxs("div",{className:A("flex items-center justify-between mb-2 pb-2 border-b border-current/10",T&&"mb-1 pb-1",v.header),children:[i.jsxs("div",{className:"flex items-center gap-2",children:[le(),c&&he&&i.jsx("span",{className:A("font-medium",T?"text-xs":"text-sm"),children:he}),I&&Y.name&&i.jsxs(qs,{variant:"outline",className:A("text-xs flex items-center gap-1 cursor-pointer",T&&"text-xs h-4"),onClick:()=>X(J=>!J),children:[i.jsx("span",{children:Y.name}),i.jsx("span",{className:"inline-flex items-center",children:z?i.jsx(K.ChevronUp,{className:"h-3 w-3"}):i.jsx(K.ChevronDown,{className:"h-3 w-3"})})]}),I&&!Y.name&&i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 px-1",onClick:()=>X(J=>!J),children:i.jsxs("span",{className:"text-xs flex items-center gap-1",children:["Tool Output ",z?i.jsx(K.ChevronUp,{className:"h-3 w-3"}):i.jsx(K.ChevronDown,{className:"h-3 w-3"})]})})]}),i.jsxs("div",{className:"flex items-center gap-2",children:[a&&i.jsx("span",{className:A("text-xs opacity-60",T&&"text-xs"),children:ee(e.createdAt)}),s&&!o&&i.jsxs("div",{className:A("opacity-0 group-hover:opacity-100 transition-opacity","flex items-center gap-1",v.actions),children:[i.jsx(fe,{variant:"ghost",size:"sm",onClick:ie,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.Copy,{className:A(D?"text-success":"",T?"h-3 w-3":"h-4 w-4")})}),_==="user"&&C&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:R,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.Edit,{className:A(T?"h-3 w-3":"h-4 w-4")})}),_==="assistant"&&O&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:se,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.RotateCcw,{className:A(T?"h-3 w-3":"h-4 w-4")})})]})]})]}),i.jsx("div",{className:"relative",children:pe()}),I&&z&&(Y.toolCallId||Y.name)&&i.jsxs("div",{className:A("mt-2 pt-2 border-t border-current/10 text-xs opacity-60",T&&"text-xs"),children:[Y.name&&i.jsxs("div",{children:["Function: ",Y.name]}),Y.toolCallId&&i.jsxs("div",{children:["Call ID: ",Y.toolCallId]})]}),s&&_==="user"&&y&&y.totalBranches>1&&i.jsxs("div",{className:"flex items-center gap-2 mt-2 p-2 bg-muted/30 rounded border",children:[i.jsx(K.GitBranch,{className:"h-3 w-3 text-muted-foreground"}),i.jsxs("span",{className:"text-xs text-muted-foreground",children:["Branch ",y.currentIndex+1," of ",y.totalBranches]}),i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",disabled:!y.canGoBack,onClick:()=>x==null?void 0:x(),title:"Go back to previous branch",children:i.jsx(K.ChevronLeft,{className:"h-3 w-3"})}),i.jsx(fe,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",disabled:!y.canGoForward,onClick:()=>E==null?void 0:E(),title:"Go forward to next branch",children:i.jsx(K.ChevronRight,{className:"h-3 w-3"})})]})]}),!(a||c||I)&&s&&!o&&i.jsxs("div",{className:A("absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity","flex items-center gap-1",v.actions),children:[i.jsx(fe,{variant:"ghost",size:"sm",onClick:ie,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.Copy,{className:A(D?"text-success":"",T?"h-3 w-3":"h-4 w-4")})}),_==="user"&&C&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:R,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.Edit,{className:A(T?"h-3 w-3":"h-4 w-4")})}),_==="assistant"&&O&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:se,className:A("h-6 w-6 p-0 hover:bg-background/50",T&&"h-5 w-5"),children:i.jsx(K.RotateCcw,{className:A(T?"h-3 w-3":"h-4 w-4")})})]})]})})}function Nf(e){const t=e.filter(n=>n.type==="text").map(n=>n.text).join("");return t||JSON.stringify(e)}function Tf(e){return e.includes(`
10
10
  `)||e.includes("```")||/[-*] /.test(e)||/#+\s/.test(e)}function Af(e){let t=e;try{(t.match(/```/g)||[]).length%2===1&&(t+="\n```"),(t.replace(/```[\s\S]*?```/g,"").match(new RegExp("(?<!`)`(?!`)","g"))||[]).length%2===1&&(t+="`")}catch{}return t}function Pf(e){let t=e;try{const n=[],r=[],o="\0F",s="\0I";let a=t.replace(/```[\s\S]*?```/g,c=>(n.push(c),`${o}${n.length-1}\0`));a=a.replace(/`[^`]*`/g,c=>(r.push(c),`${s}${r.length-1}\0`)),a=a.replace(/\b([A-Za-z0-9_&\/-]+)\b(\s+\1\b)+/g,"$1").replace(/\b([A-Za-z0-9_&\/-]+\s+[A-Za-z0-9_&\/-]+)\b(\s+\1\b)+/g,"$1").replace(/([\.,;:!\?\-])\1+/g,"$1").replace(/([:;!\?\)])([A-Za-z])/g,"$1 $2").replace(/\s{3,}/g," "),a=a.replace(/\u0000F(\d+)\u0000/g,(c,d)=>n[Number(d)]??""),a=a.replace(/\u0000I(\d+)\u0000/g,(c,d)=>r[Number(d)]??""),t=a}catch{}return t}function ra(e){const t=e==null?void 0:e.trim();if(!t||!(t.startsWith("{")||t.startsWith("[")))return null;try{return JSON.parse(t)}catch{return null}}function oa({data:e}){if(Array.isArray(e))return e.every(n=>n===null||["string","number","boolean"].includes(typeof n))?i.jsx("div",{className:"prose prose-sm max-w-none dark:prose-invert",children:i.jsx("ul",{className:"list-disc pl-5",children:e.map((n,r)=>i.jsx("li",{children:String(n)},r))})}):i.jsx("pre",{className:"font-mono text-xs bg-background/50 rounded border p-2 overflow-x-auto whitespace-pre-wrap break-words",children:Rt(e)});if(e&&typeof e=="object"){const t=Array.isArray(e.distilled_facts)?e.distilled_facts:null,n=Array.isArray(e.follow_up_queries)?e.follow_up_queries:null,r=typeof e.is_sufficient=="boolean"?e.is_sufficient:void 0;if(t||n||typeof r=="boolean")return i.jsxs("div",{className:"prose prose-sm max-w-none dark:prose-invert",children:[typeof r=="boolean"&&i.jsxs("p",{children:[i.jsx("strong",{children:"Is sufficient:"})," ",r?"Yes":"No"]}),n&&n.length>0&&i.jsxs("div",{children:[i.jsx("p",{children:i.jsx("strong",{children:"Follow-up queries:"})}),i.jsx("ul",{className:"list-disc pl-5",children:n.map((s,a)=>i.jsx("li",{children:String(s)},a))})]}),t&&t.length>0&&i.jsxs("div",{children:[i.jsx("p",{children:i.jsx("strong",{children:"Facts:"})}),i.jsx("ul",{className:"list-disc pl-5",children:t.map((s,a)=>i.jsx("li",{children:String(s)},a))})]})]});const o=Object.entries(e);return i.jsx("div",{className:"prose prose-sm max-w-none dark:prose-invert",children:i.jsx("dl",{className:"mt-0",children:o.map(([s,a])=>i.jsxs("div",{className:"mb-1",children:[i.jsxs("dt",{className:"inline font-medium mr-1",children:[s,":"]}),i.jsx("dd",{className:"inline",children:_f(a)})]},s))})})}return i.jsx("pre",{className:"font-mono text-xs bg-background/50 rounded border p-2 overflow-x-auto whitespace-pre-wrap break-words",children:Rt(e)})}function _f(e){if(e==null)return String(e);const t=typeof e;if(t==="string"||t==="number"||t==="boolean")return String(e);if(Array.isArray(e)&&e.every(r=>r===null||["string","number","boolean"].includes(typeof r)))return e.join(", ");try{return i.jsx("code",{className:"text-xs",children:JSON.stringify(e)})}catch{return String(e)}}function Vt(e){const t=e.filter(n=>n.type==="tool_result");if(t.length)try{return t.length===1?Rt(t[0].output):Rt(t.map(n=>({toolCallId:n.toolCallId,output:n.output})))}catch{}return Rt(e)}function If(e){const t=e.find(r=>r.type==="tool_result");if(!t)return null;const n=t.output;return typeof n=="string"?n:null}function Rt(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Of(e){const t=e.find(r=>r.type==="tool_call"),n=e.find(r=>r.type==="tool_result");return{name:t==null?void 0:t.name,toolCallId:(n==null?void 0:n.toolCallId)??(t==null?void 0:t.id)}}function kf(e){return e.name&&e.name.trim()?e.name:e.model&&e.model.includes("/")?e.model.split("/").pop()||null:e.model||null}function Mf(e,t){return e.checkpointId||t||null}function Df(e,t){const[n,r]=P.useState(e);return P.useEffect(()=>{if(!t){r(e);return}const o=setTimeout(()=>r(e),t);return()=>clearTimeout(o)},[e,t]),n}const yt=1e4;function Lf(e){if(typeof e!="string")return String(e);const t=[/<script[^>]*>.*?<\/script>/gi,/<iframe[^>]*>.*?<\/iframe>/gi,/javascript:/gi,/vbscript:/gi,/on\w+\s*=/gi,/<object[^>]*>.*?<\/object>/gi,/<embed[^>]*>.*?<\/embed>/gi,/<form[^>]*>.*?<\/form>/gi];let n=e;for(const o of t)n=n.replace(o,"");return/<[^>]+>/.test(n)&&!/<(?!\/?(?:code|strong|em|b|i|br|p|ul|ol|li|h[1-6])\b)[^>]+>/i.test(n)?n.replace(/<code>(.*?)<\/code>/gi,"`$1`").replace(/<strong>(.*?)<\/strong>/gi,"**$1**").replace(/<b>(.*?)<\/b>/gi,"**$1**").replace(/<em>(.*?)<\/em>/gi,"*$1*").replace(/<i>(.*?)<\/i>/gi,"*$1*").replace(/<br\s*\/?>/gi,`
11
11
  `).replace(/<p>(.*?)<\/p>/gi,`$1
12
12
 
@@ -55,7 +55,7 @@
55
55
  `)},ai=function(){var e=parseInt(document.body.getAttribute(At)||"0",10);return isFinite(e)?e:0},tg=function(){l.useEffect(function(){return document.body.setAttribute(At,(ai()+1).toString()),function(){var e=ai()-1;e<=0?document.body.removeAttribute(At):document.body.setAttribute(At,e.toString())}},[])},ng=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;tg();var s=l.useMemo(function(){return Zh(o)},[o]);return l.createElement(Qh,{styles:eg(s,!t,o,n?"":"!important")})},bo=!1;if(typeof window<"u")try{var Hn=Object.defineProperty({},"passive",{get:function(){return bo=!0,!0}});window.addEventListener("test",Hn,Hn),window.removeEventListener("test",Hn,Hn)}catch{bo=!1}var Pt=bo?{passive:!1}:!1,rg=function(e){return e.tagName==="TEXTAREA"},ii=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!rg(e)&&n[t]==="visible")},og=function(e){return ii(e,"overflowY")},sg=function(e){return ii(e,"overflowX")},ci=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=li(e,r);if(o){var s=di(e,r),a=s[1],c=s[2];if(a>c)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},ag=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},ig=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},li=function(e,t){return e==="v"?og(t):sg(t)},di=function(e,t){return e==="v"?ag(t):ig(t)},cg=function(e,t){return e==="h"&&t==="rtl"?-1:1},lg=function(e,t,n,r,o){var s=cg(e,window.getComputedStyle(t).direction),a=s*r,c=n.target,d=t.contains(c),f=!1,u=a>0,p=0,m=0;do{if(!c)break;var v=di(e,c),g=v[0],h=v[1],b=v[2],w=h-b-s*g;(g||w)&&li(e,c)&&(p+=w,m+=g);var y=c.parentNode;c=y&&y.nodeType===Node.DOCUMENT_FRAGMENT_NODE?y.host:y}while(!d&&c!==document.body||d&&(t.contains(c)||t===c));return(u&&Math.abs(p)<1||!u&&Math.abs(m)<1)&&(f=!0),f},Wn=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},ui=function(e){return[e.deltaX,e.deltaY]},fi=function(e){return e&&"current"in e?e.current:e},dg=function(e,t){return e[0]===t[0]&&e[1]===t[1]},ug=function(e){return`
56
56
  .block-interactivity-`.concat(e,` {pointer-events: none;}
57
57
  .allow-interactivity-`).concat(e,` {pointer-events: all;}
58
- `)},fg=0,_t=[];function pg(e){var t=l.useRef([]),n=l.useRef([0,0]),r=l.useRef(),o=l.useState(fg++)[0],s=l.useState(si)[0],a=l.useRef(e);l.useEffect(function(){a.current=e},[e]),l.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var h=Dh([e.lockRef.current],(e.shards||[]).map(fi),!0).filter(Boolean);return h.forEach(function(b){return b.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),h.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var c=l.useCallback(function(h,b){if("touches"in h&&h.touches.length===2||h.type==="wheel"&&h.ctrlKey)return!a.current.allowPinchZoom;var w=Wn(h),y=n.current,x="deltaX"in h?h.deltaX:y[0]-w[0],E="deltaY"in h?h.deltaY:y[1]-w[1],C,O=h.target,N=Math.abs(x)>Math.abs(E)?"h":"v";if("touches"in h&&N==="h"&&O.type==="range")return!1;var L=ci(N,O);if(!L)return!0;if(L?C=N:(C=N==="v"?"h":"v",L=ci(N,O)),!L)return!1;if(!r.current&&"changedTouches"in h&&(x||E)&&(r.current=C),!C)return!0;var M=r.current||C;return lg(M,b,h,M==="h"?x:E)},[]),d=l.useCallback(function(h){var b=h;if(!(!_t.length||_t[_t.length-1]!==s)){var w="deltaY"in b?ui(b):Wn(b),y=t.current.filter(function(C){return C.name===b.type&&(C.target===b.target||b.target===C.shadowParent)&&dg(C.delta,w)})[0];if(y&&y.should){b.cancelable&&b.preventDefault();return}if(!y){var x=(a.current.shards||[]).map(fi).filter(Boolean).filter(function(C){return C.contains(b.target)}),E=x.length>0?c(b,x[0]):!a.current.noIsolation;E&&b.cancelable&&b.preventDefault()}}},[]),f=l.useCallback(function(h,b,w,y){var x={name:h,delta:b,target:w,should:y,shadowParent:hg(w)};t.current.push(x),setTimeout(function(){t.current=t.current.filter(function(E){return E!==x})},1)},[]),u=l.useCallback(function(h){n.current=Wn(h),r.current=void 0},[]),p=l.useCallback(function(h){f(h.type,ui(h),h.target,c(h,e.lockRef.current))},[]),m=l.useCallback(function(h){f(h.type,Wn(h),h.target,c(h,e.lockRef.current))},[]);l.useEffect(function(){return _t.push(s),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:m}),document.addEventListener("wheel",d,Pt),document.addEventListener("touchmove",d,Pt),document.addEventListener("touchstart",u,Pt),function(){_t=_t.filter(function(h){return h!==s}),document.removeEventListener("wheel",d,Pt),document.removeEventListener("touchmove",d,Pt),document.removeEventListener("touchstart",u,Pt)}},[]);var v=e.removeScrollBar,g=e.inert;return l.createElement(l.Fragment,null,g?l.createElement(s,{styles:ug(o)}):null,v?l.createElement(ng,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function hg(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const gg=Vh(oi,pg);var Vn=l.forwardRef(function(e,t){return l.createElement(zn,qe({},e,{ref:t,sideCar:gg}))});Vn.classNames=zn.classNames;var vo=["Enter"," "],mg=["ArrowDown","PageUp","Home"],pi=["ArrowUp","PageDown","End"],bg=[...mg,...pi],vg={ltr:[...vo,"ArrowRight"],rtl:[...vo,"ArrowLeft"]},wg={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Yt="Menu",[Jt,yg,xg]=zr(Yt),[ut,hi]=Le(Yt,[xg,Nt,Xa]),Rn=Nt(),gi=Xa(),[Sg,ft]=ut(Yt),[Cg,Zt]=ut(Yt),mi=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:o,onOpenChange:s,modal:a=!0}=e,c=Rn(t),[d,f]=l.useState(null),u=l.useRef(!1),p=we(s),m=Cn(o);return l.useEffect(()=>{const v=()=>{u.current=!0,document.addEventListener("pointerdown",g,{capture:!0,once:!0}),document.addEventListener("pointermove",g,{capture:!0,once:!0})},g=()=>u.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",g,{capture:!0}),document.removeEventListener("pointermove",g,{capture:!0})}},[]),i.jsx(so,{...c,children:i.jsx(Sg,{scope:t,open:n,onOpenChange:p,content:d,onContentChange:f,children:i.jsx(Cg,{scope:t,onClose:l.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:u,dir:m,modal:a,children:r})})})};mi.displayName=Yt;var Eg="MenuAnchor",wo=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=Rn(n);return i.jsx(ao,{...o,...r,ref:t})});wo.displayName=Eg;var yo="MenuPortal",[Ng,bi]=ut(yo,{forceMount:void 0}),vi=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:o}=e,s=ft(yo,t);return i.jsx(Ng,{scope:t,forceMount:n,children:i.jsx(Ne,{present:n||s.open,children:i.jsx(Ln,{asChild:!0,container:o,children:r})})})};vi.displayName=yo;var Oe="MenuContent",[Tg,xo]=ut(Oe),wi=l.forwardRef((e,t)=>{const n=bi(Oe,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=ft(Oe,e.__scopeMenu),a=Zt(Oe,e.__scopeMenu);return i.jsx(Jt.Provider,{scope:e.__scopeMenu,children:i.jsx(Ne,{present:r||s.open,children:i.jsx(Jt.Slot,{scope:e.__scopeMenu,children:a.modal?i.jsx(Ag,{...o,ref:t}):i.jsx(Pg,{...o,ref:t})})})})}),Ag=l.forwardRef((e,t)=>{const n=ft(Oe,e.__scopeMenu),r=l.useRef(null),o=re(t,r);return l.useEffect(()=>{const s=r.current;if(s)return po(s)},[]),i.jsx(So,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:U(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Pg=l.forwardRef((e,t)=>{const n=ft(Oe,e.__scopeMenu);return i.jsx(So,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),_g=Pe.createSlot("MenuContent.ScrollLock"),So=l.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:a,disableOutsidePointerEvents:c,onEntryFocus:d,onEscapeKeyDown:f,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:m,onDismiss:v,disableOutsideScroll:g,...h}=e,b=ft(Oe,n),w=Zt(Oe,n),y=Rn(n),x=gi(n),E=yg(n),[C,O]=l.useState(null),N=l.useRef(null),L=re(t,N,b.onContentChange),M=l.useRef(0),D=l.useRef(""),j=l.useRef(0),G=l.useRef(null),V=l.useRef("right"),z=l.useRef(0),X=g?Vn:l.Fragment,F=g?{as:_g,allowPinchZoom:!0}:void 0,q=_=>{var R,se;const I=D.current+_,k=E().filter(le=>!le.disabled),Y=document.activeElement,B=(R=k.find(le=>le.ref.current===Y))==null?void 0:R.textValue,H=k.map(le=>le.textValue),de=Hg(H,I,B),ie=(se=k.find(le=>le.textValue===de))==null?void 0:se.ref.current;(function le(ae){D.current=ae,window.clearTimeout(M.current),ae!==""&&(M.current=window.setTimeout(()=>le(""),1e3))})(I),ie&&setTimeout(()=>ie.focus())};l.useEffect(()=>()=>window.clearTimeout(M.current),[]),Vr();const T=l.useCallback(_=>{var k,Y;return V.current===((k=G.current)==null?void 0:k.side)&&Vg(_,(Y=G.current)==null?void 0:Y.area)},[]);return i.jsx(Tg,{scope:n,searchRef:D,onItemEnter:l.useCallback(_=>{T(_)&&_.preventDefault()},[T]),onItemLeave:l.useCallback(_=>{var I;T(_)||((I=N.current)==null||I.focus(),O(null))},[T]),onTriggerLeave:l.useCallback(_=>{T(_)&&_.preventDefault()},[T]),pointerGraceTimerRef:j,onPointerGraceIntentChange:l.useCallback(_=>{G.current=_},[]),children:i.jsx(X,{...F,children:i.jsx(En,{asChild:!0,trapped:o,onMountAutoFocus:U(s,_=>{var I;_.preventDefault(),(I=N.current)==null||I.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:i.jsx(jt,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:f,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:m,onDismiss:v,children:i.jsx(_h,{asChild:!0,...x,dir:w.dir,orientation:"vertical",loop:r,currentTabStopId:C,onCurrentTabStopIdChange:O,onEntryFocus:U(d,_=>{w.isUsingKeyboardRef.current||_.preventDefault()}),preventScrollOnEntryFocus:!0,children:i.jsx(io,{role:"menu","aria-orientation":"vertical","data-state":Fi(b.open),"data-radix-menu-content":"",dir:w.dir,...y,...h,ref:L,style:{outline:"none",...h.style},onKeyDown:U(h.onKeyDown,_=>{const k=_.target.closest("[data-radix-menu-content]")===_.currentTarget,Y=_.ctrlKey||_.altKey||_.metaKey,B=_.key.length===1;k&&(_.key==="Tab"&&_.preventDefault(),!Y&&B&&q(_.key));const H=N.current;if(_.target!==H||!bg.includes(_.key))return;_.preventDefault();const ie=E().filter(R=>!R.disabled).map(R=>R.ref.current);pi.includes(_.key)&&ie.reverse(),Ug(ie)}),onBlur:U(e.onBlur,_=>{_.currentTarget.contains(_.target)||(window.clearTimeout(M.current),D.current="")}),onPointerMove:U(e.onPointerMove,en(_=>{const I=_.target,k=z.current!==_.clientX;if(_.currentTarget.contains(I)&&k){const Y=_.clientX>z.current?"right":"left";V.current=Y,z.current=_.clientX}}))})})})})})})});wi.displayName=Oe;var Ig="MenuGroup",Co=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Z.div,{role:"group",...r,ref:t})});Co.displayName=Ig;var Og="MenuLabel",yi=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Z.div,{...r,ref:t})});yi.displayName=Og;var jn="MenuItem",xi="menu.itemSelect",Kn=l.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...o}=e,s=l.useRef(null),a=Zt(jn,e.__scopeMenu),c=xo(jn,e.__scopeMenu),d=re(t,s),f=l.useRef(!1),u=()=>{const p=s.current;if(!n&&p){const m=new CustomEvent(xi,{bubbles:!0,cancelable:!0});p.addEventListener(xi,v=>r==null?void 0:r(v),{once:!0}),Ys(p,m),m.defaultPrevented?f.current=!1:a.onClose()}};return i.jsx(Si,{...o,ref:d,disabled:n,onClick:U(e.onClick,u),onPointerDown:p=>{var m;(m=e.onPointerDown)==null||m.call(e,p),f.current=!0},onPointerUp:U(e.onPointerUp,p=>{var m;f.current||(m=p.currentTarget)==null||m.click()}),onKeyDown:U(e.onKeyDown,p=>{const m=c.searchRef.current!=="";n||m&&p.key===" "||vo.includes(p.key)&&(p.currentTarget.click(),p.preventDefault())})})});Kn.displayName=jn;var Si=l.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:o,...s}=e,a=xo(jn,n),c=gi(n),d=l.useRef(null),f=re(t,d),[u,p]=l.useState(!1),[m,v]=l.useState("");return l.useEffect(()=>{const g=d.current;g&&v((g.textContent??"").trim())},[s.children]),i.jsx(Jt.ItemSlot,{scope:n,disabled:r,textValue:o??m,children:i.jsx(Ih,{asChild:!0,...c,focusable:!r,children:i.jsx(Z.div,{role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:f,onPointerMove:U(e.onPointerMove,en(g=>{r?a.onItemLeave(g):(a.onItemEnter(g),g.defaultPrevented||g.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:U(e.onPointerLeave,en(g=>a.onItemLeave(g))),onFocus:U(e.onFocus,()=>p(!0)),onBlur:U(e.onBlur,()=>p(!1))})})})}),kg="MenuCheckboxItem",Ci=l.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...o}=e;return i.jsx(Pi,{scope:e.__scopeMenu,checked:n,children:i.jsx(Kn,{role:"menuitemcheckbox","aria-checked":Gn(n)?"mixed":n,...o,ref:t,"data-state":No(n),onSelect:U(o.onSelect,()=>r==null?void 0:r(Gn(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Ci.displayName=kg;var Ei="MenuRadioGroup",[Mg,Dg]=ut(Ei,{value:void 0,onValueChange:()=>{}}),Ni=l.forwardRef((e,t)=>{const{value:n,onValueChange:r,...o}=e,s=we(r);return i.jsx(Mg,{scope:e.__scopeMenu,value:n,onValueChange:s,children:i.jsx(Co,{...o,ref:t})})});Ni.displayName=Ei;var Ti="MenuRadioItem",Ai=l.forwardRef((e,t)=>{const{value:n,...r}=e,o=Dg(Ti,e.__scopeMenu),s=n===o.value;return i.jsx(Pi,{scope:e.__scopeMenu,checked:s,children:i.jsx(Kn,{role:"menuitemradio","aria-checked":s,...r,ref:t,"data-state":No(s),onSelect:U(r.onSelect,()=>{var a;return(a=o.onValueChange)==null?void 0:a.call(o,n)},{checkForDefaultPrevented:!1})})})});Ai.displayName=Ti;var Eo="MenuItemIndicator",[Pi,Lg]=ut(Eo,{checked:!1}),_i=l.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...o}=e,s=Lg(Eo,n);return i.jsx(Ne,{present:r||Gn(s.checked)||s.checked===!0,children:i.jsx(Z.span,{...o,ref:t,"data-state":No(s.checked)})})});_i.displayName=Eo;var Fg="MenuSeparator",Ii=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Z.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});Ii.displayName=Fg;var $g="MenuArrow",Oi=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=Rn(n);return i.jsx(co,{...o,...r,ref:t})});Oi.displayName=$g;var Bg="MenuSub",[Aw,ki]=ut(Bg),Qt="MenuSubTrigger",Mi=l.forwardRef((e,t)=>{const n=ft(Qt,e.__scopeMenu),r=Zt(Qt,e.__scopeMenu),o=ki(Qt,e.__scopeMenu),s=xo(Qt,e.__scopeMenu),a=l.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:d}=s,f={__scopeMenu:e.__scopeMenu},u=l.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return l.useEffect(()=>u,[u]),l.useEffect(()=>{const p=c.current;return()=>{window.clearTimeout(p),d(null)}},[c,d]),i.jsx(wo,{asChild:!0,...f,children:i.jsx(Si,{id:o.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":o.contentId,"data-state":Fi(n.open),...e,ref:Fr(t,o.onTriggerChange),onClick:p=>{var m;(m=e.onClick)==null||m.call(e,p),!(e.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:U(e.onPointerMove,en(p=>{s.onItemEnter(p),!p.defaultPrevented&&!e.disabled&&!n.open&&!a.current&&(s.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:U(e.onPointerLeave,en(p=>{var v,g;u();const m=(v=n.content)==null?void 0:v.getBoundingClientRect();if(m){const h=(g=n.content)==null?void 0:g.dataset.side,b=h==="right",w=b?-5:5,y=m[b?"left":"right"],x=m[b?"right":"left"];s.onPointerGraceIntentChange({area:[{x:p.clientX+w,y:p.clientY},{x:y,y:m.top},{x,y:m.top},{x,y:m.bottom},{x:y,y:m.bottom}],side:h}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(p),p.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:U(e.onKeyDown,p=>{var v;const m=s.searchRef.current!=="";e.disabled||m&&p.key===" "||vg[r.dir].includes(p.key)&&(n.onOpenChange(!0),(v=n.content)==null||v.focus(),p.preventDefault())})})})});Mi.displayName=Qt;var Di="MenuSubContent",Li=l.forwardRef((e,t)=>{const n=bi(Oe,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=ft(Oe,e.__scopeMenu),a=Zt(Oe,e.__scopeMenu),c=ki(Di,e.__scopeMenu),d=l.useRef(null),f=re(t,d);return i.jsx(Jt.Provider,{scope:e.__scopeMenu,children:i.jsx(Ne,{present:r||s.open,children:i.jsx(Jt.Slot,{scope:e.__scopeMenu,children:i.jsx(So,{id:c.contentId,"aria-labelledby":c.triggerId,...o,ref:f,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:u=>{var p;a.isUsingKeyboardRef.current&&((p=d.current)==null||p.focus()),u.preventDefault()},onCloseAutoFocus:u=>u.preventDefault(),onFocusOutside:U(e.onFocusOutside,u=>{u.target!==c.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:U(e.onEscapeKeyDown,u=>{a.onClose(),u.preventDefault()}),onKeyDown:U(e.onKeyDown,u=>{var v;const p=u.currentTarget.contains(u.target),m=wg[a.dir].includes(u.key);p&&m&&(s.onOpenChange(!1),(v=c.trigger)==null||v.focus(),u.preventDefault())})})})})})});Li.displayName=Di;function Fi(e){return e?"open":"closed"}function Gn(e){return e==="indeterminate"}function No(e){return Gn(e)?"indeterminate":e?"checked":"unchecked"}function Ug(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function zg(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Hg(e,t,n){const o=t.length>1&&Array.from(t).every(f=>f===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let a=zg(e,Math.max(s,0));o.length===1&&(a=a.filter(f=>f!==n));const d=a.find(f=>f.toLowerCase().startsWith(o.toLowerCase()));return d!==n?d:void 0}function Wg(e,t){const{x:n,y:r}=e;let o=!1;for(let s=0,a=t.length-1;s<t.length;a=s++){const c=t[s],d=t[a],f=c.x,u=c.y,p=d.x,m=d.y;u>r!=m>r&&n<(p-f)*(r-u)/(m-u)+f&&(o=!o)}return o}function Vg(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return Wg(n,t)}function en(e){return t=>t.pointerType==="mouse"?e(t):void 0}var Rg=mi,jg=wo,Kg=vi,Gg=wi,qg=Co,Xg=yi,Yg=Kn,Jg=Ci,Zg=Ni,Qg=Ai,em=_i,tm=Ii,nm=Oi,rm=Mi,om=Li,qn="DropdownMenu",[sm,Pw]=Le(qn,[hi]),xe=hi(),[am,$i]=sm(qn),Bi=e=>{const{__scopeDropdownMenu:t,children:n,dir:r,open:o,defaultOpen:s,onOpenChange:a,modal:c=!0}=e,d=xe(t),f=l.useRef(null),[u,p]=Qe({prop:o,defaultProp:s??!1,onChange:a,caller:qn});return i.jsx(am,{scope:t,triggerId:Fe(),triggerRef:f,contentId:Fe(),open:u,onOpenChange:p,onOpenToggle:l.useCallback(()=>p(m=>!m),[p]),modal:c,children:i.jsx(Rg,{...d,open:u,onOpenChange:p,dir:r,modal:c,children:n})})};Bi.displayName=qn;var Ui="DropdownMenuTrigger",zi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:r=!1,...o}=e,s=$i(Ui,n),a=xe(n);return i.jsx(jg,{asChild:!0,...a,children:i.jsx(Z.button,{type:"button",id:s.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":s.open?s.contentId:void 0,"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:Fr(t,s.triggerRef),onPointerDown:U(e.onPointerDown,c=>{!r&&c.button===0&&c.ctrlKey===!1&&(s.onOpenToggle(),s.open||c.preventDefault())}),onKeyDown:U(e.onKeyDown,c=>{r||(["Enter"," "].includes(c.key)&&s.onOpenToggle(),c.key==="ArrowDown"&&s.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(c.key)&&c.preventDefault())})})})});zi.displayName=Ui;var im="DropdownMenuPortal",Hi=e=>{const{__scopeDropdownMenu:t,...n}=e,r=xe(t);return i.jsx(Kg,{...r,...n})};Hi.displayName=im;var Wi="DropdownMenuContent",Vi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=$i(Wi,n),s=xe(n),a=l.useRef(!1);return i.jsx(Gg,{id:o.contentId,"aria-labelledby":o.triggerId,...s,...r,ref:t,onCloseAutoFocus:U(e.onCloseAutoFocus,c=>{var d;a.current||(d=o.triggerRef.current)==null||d.focus(),a.current=!1,c.preventDefault()}),onInteractOutside:U(e.onInteractOutside,c=>{const d=c.detail.originalEvent,f=d.button===0&&d.ctrlKey===!0,u=d.button===2||f;(!o.modal||u)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Vi.displayName=Wi;var cm="DropdownMenuGroup",lm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(qg,{...o,...r,ref:t})});lm.displayName=cm;var dm="DropdownMenuLabel",Ri=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Xg,{...o,...r,ref:t})});Ri.displayName=dm;var um="DropdownMenuItem",ji=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Yg,{...o,...r,ref:t})});ji.displayName=um;var fm="DropdownMenuCheckboxItem",Ki=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Jg,{...o,...r,ref:t})});Ki.displayName=fm;var pm="DropdownMenuRadioGroup",hm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Zg,{...o,...r,ref:t})});hm.displayName=pm;var gm="DropdownMenuRadioItem",Gi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Qg,{...o,...r,ref:t})});Gi.displayName=gm;var mm="DropdownMenuItemIndicator",qi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(em,{...o,...r,ref:t})});qi.displayName=mm;var bm="DropdownMenuSeparator",Xi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(tm,{...o,...r,ref:t})});Xi.displayName=bm;var vm="DropdownMenuArrow",wm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(nm,{...o,...r,ref:t})});wm.displayName=vm;var ym="DropdownMenuSubTrigger",Yi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(rm,{...o,...r,ref:t})});Yi.displayName=ym;var xm="DropdownMenuSubContent",Ji=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(om,{...o,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Ji.displayName=xm;var Sm=Bi,Cm=zi,Em=Hi,Zi=Vi,Qi=Ri,ec=ji,tc=Ki,nc=Gi,rc=qi,oc=Xi,sc=Yi,ac=Ji;const Nm=Sm,Tm=Cm,Am=l.forwardRef(({className:e,inset:t,children:n,...r},o)=>i.jsxs(sc,{ref:o,className:A("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",t&&"pl-8",e),...r,children:[n,i.jsx(K.ChevronRight,{className:"ml-auto h-4 w-4"})]}));Am.displayName=sc.displayName;const Pm=l.forwardRef(({className:e,...t},n)=>i.jsx(ac,{ref:n,className:A("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t}));Pm.displayName=ac.displayName;const ic=l.forwardRef(({className:e,sideOffset:t=4,...n},r)=>i.jsx(Em,{children:i.jsx(Zi,{ref:r,sideOffset:t,className:A("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n})}));ic.displayName=Zi.displayName;const cc=l.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(ec,{ref:r,className:A("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t&&"pl-8",e),...n}));cc.displayName=ec.displayName;const _m=l.forwardRef(({className:e,children:t,checked:n,...r},o)=>i.jsxs(tc,{ref:o,className:A("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...r,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(rc,{children:i.jsx(K.Check,{className:"h-4 w-4"})})}),t]}));_m.displayName=tc.displayName;const Im=l.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(nc,{ref:r,className:A("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(rc,{children:i.jsx(K.Circle,{className:"h-2 w-2 fill-current"})})}),t]}));Im.displayName=nc.displayName;const Om=l.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(Qi,{ref:r,className:A("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...n}));Om.displayName=Qi.displayName;const km=l.forwardRef(({className:e,...t},n)=>i.jsx(oc,{ref:n,className:A("-mx-1 my-1 h-px bg-muted",e),...t}));km.displayName=oc.displayName;function tn({className:e="",placeholder:t="Type your message...",autoFocus:n=!0,maxHeight:r=void 0,streamingDebounceMs:o=40,enableFileUpload:s=!0,enableMessageEditing:a=!0,customStyles:c={},onMessageSent:d,onError:f}){const{currentThreadId:u,messages:p,isStreaming:m,streamingAssistantId:v,error:g,send:h,stop:b,lastCheckpointId:w,listCheckpoints:y,navigateToCheckpoint:x,returnToLatest:E}=Lr(),[C,O]=P.useState(""),[N,L]=P.useState(null),[M,D]=P.useState(null),[j,G]=P.useState([]),[V,z]=P.useState(!1),[X,F]=P.useState([]),[q,T]=P.useState(null),_=P.useRef(null),I=P.useRef(null),k=P.useRef(null),[Y,B]=P.useState("desktop");P.useEffect(()=>{const $=()=>{const te=window.innerWidth;B(te<640?"phone":te<1024?"tablet":"desktop")};return $(),window.addEventListener("resize",$),()=>window.removeEventListener("resize",$)},[]),P.useEffect(()=>{var $;($=_.current)==null||$.scrollIntoView({behavior:"smooth"})},[p]),P.useEffect(()=>{var $;n&&(($=I.current)==null||$.focus())},[n]),P.useEffect(()=>{g&&!V&&(f==null||f(g))},[g,V,f]),P.useEffect(()=>{let $=!0;if(!u){F([]),T(null);return}return y(u).then(te=>{var Ae;if(!$)return;const oe=te.checkpoints||[];F(oe);const ue=((Ae=oe.slice().sort((Mt,Se)=>new Date(Se.createdAt).getTime()-new Date(Mt.createdAt).getTime())[0])==null?void 0:Ae.checkpointId)||null;T(Mt=>Mt??ue)}).catch(()=>{}),()=>{$=!1}},[u,y]),P.useEffect(()=>{w&&T(w)},[w]);const H=$=>{if($.length>yt)return`Message too long (${$.length}/${yt} characters)`;try{return $f($),null}catch(te){return(te==null?void 0:te.message)||"Invalid message"}},de=$=>{const te=$.content||[],oe=te.filter(ue=>ue.type==="text").map(ue=>ue.text).join("");if(oe)return oe;try{return JSON.stringify(te,null,2)}catch{return String(te)}},ie=$=>{var Mt;if(!X.length)return[];const oe=(((Mt=p[$])==null?void 0:Mt.role)??"user")==="user",ue=oe?$+2:$+1;return X.filter(Se=>(Se.messagesLen??-1)>=(oe?ue:0)).filter(Se=>oe?(Se.messagesLen??0)>=ue:(Se.messagesLen??0)===ue).map(Se=>({checkpoint_id:Se.checkpointId,checkpoint_ns:Se.checkpointNs,message_count:Se.messagesLen??0,last_message_preview:Se.preview??void 0,ts:new Date(Se.createdAt).getTime(),isCurrent:Se.checkpointId===q})).sort((Se,rw)=>(Se.ts||0)-(rw.ts||0))},R=$=>{if($===void 0)return{canGoBack:!1,canGoForward:!1,currentIndex:0,totalBranches:0};const te=ie($);if(te.length<=1)return{canGoBack:!1,canGoForward:!1,currentIndex:0,totalBranches:te.length};const oe=Math.max(0,te.findIndex(ue=>ue.isCurrent));return{canGoBack:oe>0,canGoForward:oe<te.length-1,currentIndex:oe,totalBranches:te.length}},se=async()=>{const $=C.trim();if(!$&&j.length===0)return;const te=H($);if(te){D(te);return}try{const oe=window.__editingCheckpointId||q||void 0;await h($,{checkpointId:oe,payloadExtras:N?{edit:!0,originalMessageId:N}:void 0,attachments:j}),d==null||d($),O(""),D(null),G([]),delete window.__editingCheckpointId,L(null),I.current&&(I.current.style.height="auto")}catch(oe){const ue=(oe==null?void 0:oe.message)||"Failed to send message";D(ue),f==null||f(ue)}},le=($,te)=>{a&&(L($),O(te),D(null),setTimeout(()=>{I.current&&(I.current.focus(),I.current.style.height="auto",I.current.style.height=I.current.scrollHeight+"px")},0))},ae=async($,te)=>{const oe=p.find(Ae=>Ae.id===$);if(!oe){D("Message not found");return}const ue=de(oe);L($),O(ue),window.__editingCheckpointId=te,setTimeout(()=>{var Ae;return(Ae=I.current)==null?void 0:Ae.focus()},0)},W=()=>{L(null),O(""),D(null),delete window.__editingCheckpointId,I.current&&(I.current.style.height="auto")},ee=$=>{$.key==="Enter"&&!$.shiftKey?($.preventDefault(),se()):$.key==="Escape"&&N&&($.preventDefault(),W())},pe=$=>{const te=Array.from($.target.files||[]);G(oe=>[...oe,...te])},he=$=>G(te=>te.filter((oe,ue)=>$!==ue)),J=async $=>{u&&(await x($),T($))},ve=async()=>{await E(),T(null)},ce=`flex flex-col h-full bg-transparent ${e} ${c.container||""}`,me=`flex-1 min-h-0 overflow-y-auto p-4 space-y-4 bg-transparent ${c.messagesArea||""}`,Te=`flex-shrink-0 border-t p-4 bg-transparent ${c.inputArea||""}`;return i.jsxs("div",{className:ce,children:[!!g&&!V&&i.jsxs("div",{className:"bg-red-50 border border-red-200 text-red-800 px-4 py-2 text-sm flex items-center justify-between",children:[i.jsx("span",{children:g}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:()=>z(!0),className:"text-red-800 hover:bg-red-100","aria-label":"Dismiss error",children:i.jsx(K.X,{size:16})})]}),u&&X.length>0&&i.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 border-b bg-background/50 text-xs",children:[i.jsx(K.GitBranch,{className:"h-4 w-4 opacity-70"}),i.jsx("span",{className:"opacity-70",children:"Checkpoint:"}),i.jsxs("select",{className:"border rounded px-2 py-1 text-xs",value:q??"",onChange:$=>{const te=$.target.value||null;te?J(te):ve()},children:[i.jsx("option",{value:"",children:"Latest"}),X.slice().sort(($,te)=>new Date(te.createdAt).getTime()-new Date($.createdAt).getTime()).map($=>i.jsxs("option",{value:$.checkpointId,children:[new Date($.createdAt).toLocaleString(),$.preview?` — ${$.preview.slice(0,30)}`:""]},$.checkpointId))]})]}),i.jsxs("div",{className:me,style:r?{maxHeight:r}:void 0,children:[p.length===0?i.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:"No messages yet. Start a conversation!"}):p.map(($,te)=>i.jsx(na,{message:$,messageIndex:te,isStreamingMessage:m&&v===$.id,streamingDebounceMs:o,isEditing:N===$.id,showActions:a,showTimestamp:!1,showAgentName:!0,layoutSize:Y,truncateToolMessages:!1,toolMessagePreviewLength:200,checkpointBranches:ie(te),currentCheckpointId:q??void 0,temporalNavigation:R(te),onSwitchToCheckpoint:J,onReturnToMainThread:ve,onNavigateToPreviousBranch:()=>{const oe=ie(te),ue=Math.max(0,oe.findIndex(Ae=>Ae.isCurrent));ue>0&&J(oe[ue-1].checkpoint_id)},onNavigateToNextBranch:()=>{const oe=ie(te),ue=Math.max(0,oe.findIndex(Ae=>Ae.isCurrent));ue>=0&&ue<oe.length-1&&J(oe[ue+1].checkpoint_id)},onEdit:(oe,ue)=>le(oe,ue),onEditFromCheckpoint:ae,onRegenerate:()=>{const oe=[...p].reverse().find(Ae=>Ae.role==="user"),ue=oe?de(oe):"";ue&&h(ue,{checkpointId:q??void 0})},onCancelEdit:W},$.id||te)),i.jsx("div",{ref:_})]}),i.jsxs("div",{className:Te,children:[N&&i.jsx("div",{className:"mb-3 p-3 bg-blue-50 border border-blue-200 rounded-lg",children:i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(K.Edit3,{size:16,className:"text-blue-600"}),i.jsx("span",{className:"text-sm font-medium text-blue-800",children:"Editing message"})]}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:W,className:"text-blue-600 hover:bg-blue-100",children:i.jsx(K.X,{size:16})})]})}),s&&i.jsxs("div",{className:"mb-3",children:[i.jsx("input",{ref:k,type:"file",multiple:!0,onChange:$=>pe($),className:"hidden"}),j.length>0&&i.jsx("div",{className:"mb-3 flex flex-wrap gap-2",children:j.map(($,te)=>i.jsxs("div",{className:"flex items-center gap-2 bg-gray-100 rounded-lg px-3 py-2 text-sm",children:[i.jsx(K.Paperclip,{size:14}),i.jsx("span",{className:"truncate max-w-[150px]",children:$.name}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:()=>he(te),className:"h-4 w-4 p-0 text-gray-500 hover:text-red-500","aria-label":`Remove ${$.name}`,children:i.jsx(K.X,{size:12})})]},te))})]}),M&&i.jsx("div",{className:"mb-3 text-sm text-red-600 bg-red-50 border border-red-200 rounded px-3 py-2",children:M}),i.jsxs("div",{className:"flex items-end gap-2",children:[s&&i.jsxs(Nm,{children:[i.jsx(Tm,{asChild:!0,children:i.jsx(fe,{type:"button",size:"icon",variant:"outline",disabled:m,title:"More input actions",className:c.moreButton||"",children:i.jsx(K.Plus,{size:16})})}),i.jsx(ic,{align:"start",sideOffset:6,className:"w-52",children:i.jsxs(cc,{onClick:()=>{var $;return($=k.current)==null?void 0:$.click()},className:"cursor-pointer",children:[i.jsx(K.Paperclip,{className:"h-4 w-4 mr-2"})," Attach files or images"]})})]}),i.jsx("div",{className:"flex-1",children:i.jsx(Gs,{ref:I,value:C,onChange:$=>{O($.target.value),D(null),I.current&&(I.current.style.height="auto",I.current.style.height=`${I.current.scrollHeight}px`)},onKeyDown:ee,placeholder:N?"Edit your message...":t,className:`resize-none min-h-[44px] max-h-[20rem] w-full ${N?"border-blue-400 bg-blue-50":""} ${M?"border-red-400":""} ${c.textarea||""}`,disabled:!1,maxLength:yt,rows:1})}),i.jsx("div",{children:m?i.jsx(fe,{type:"button",onClick:b,size:"icon",variant:"outline",className:"shrink-0",title:"Stop generating",children:i.jsx(K.Square,{size:16})}):i.jsx(fe,{type:"button",onClick:se,size:"icon",disabled:!C.trim()&&j.length===0,className:`shrink-0 ${c.sendButton||""}`,title:N?"Save changes":"Send message",children:i.jsx(K.Send,{size:16})})})]}),C.length>yt*.8&&i.jsxs("div",{className:"mt-2 text-xs text-gray-500 text-right",children:[C.length,"/",yt]})]})]})}const nn=l.forwardRef(({className:e,type:t,...n},r)=>i.jsx("input",{type:t,className:A("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:r,...n}));nn.displayName="Input";function To(e,[t,n]){return Math.min(n,Math.max(t,e))}function Mm(e,t){return l.useReducer((n,r)=>t[n][r]??n,e)}var Ao="ScrollArea",[lc,_w]=Le(Ao),[Dm,ke]=lc(Ao),dc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...a}=e,[c,d]=l.useState(null),[f,u]=l.useState(null),[p,m]=l.useState(null),[v,g]=l.useState(null),[h,b]=l.useState(null),[w,y]=l.useState(0),[x,E]=l.useState(0),[C,O]=l.useState(!1),[N,L]=l.useState(!1),M=re(t,j=>d(j)),D=Cn(o);return i.jsx(Dm,{scope:n,type:r,dir:D,scrollHideDelay:s,scrollArea:c,viewport:f,onViewportChange:u,content:p,onContentChange:m,scrollbarX:v,onScrollbarXChange:g,scrollbarXEnabled:C,onScrollbarXEnabledChange:O,scrollbarY:h,onScrollbarYChange:b,scrollbarYEnabled:N,onScrollbarYEnabledChange:L,onCornerWidthChange:y,onCornerHeightChange:E,children:i.jsx(Z.div,{dir:D,...a,ref:M,style:{position:"relative","--radix-scroll-area-corner-width":w+"px","--radix-scroll-area-corner-height":x+"px",...e.style}})})});dc.displayName=Ao;var uc="ScrollAreaViewport",fc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,nonce:o,...s}=e,a=ke(uc,n),c=l.useRef(null),d=re(t,c,a.onViewportChange);return i.jsxs(i.Fragment,{children:[i.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),i.jsx(Z.div,{"data-radix-scroll-area-viewport":"",...s,ref:d,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...e.style},children:i.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});fc.displayName=uc;var Xe="ScrollAreaScrollbar",Po=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ke(Xe,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:a}=o,c=e.orientation==="horizontal";return l.useEffect(()=>(c?s(!0):a(!0),()=>{c?s(!1):a(!1)}),[c,s,a]),o.type==="hover"?i.jsx(Lm,{...r,ref:t,forceMount:n}):o.type==="scroll"?i.jsx(Fm,{...r,ref:t,forceMount:n}):o.type==="auto"?i.jsx(pc,{...r,ref:t,forceMount:n}):o.type==="always"?i.jsx(_o,{...r,ref:t}):null});Po.displayName=Xe;var Lm=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ke(Xe,e.__scopeScrollArea),[s,a]=l.useState(!1);return l.useEffect(()=>{const c=o.scrollArea;let d=0;if(c){const f=()=>{window.clearTimeout(d),a(!0)},u=()=>{d=window.setTimeout(()=>a(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",f),c.addEventListener("pointerleave",u),()=>{window.clearTimeout(d),c.removeEventListener("pointerenter",f),c.removeEventListener("pointerleave",u)}}},[o.scrollArea,o.scrollHideDelay]),i.jsx(Ne,{present:n||s,children:i.jsx(pc,{"data-state":s?"visible":"hidden",...r,ref:t})})}),Fm=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ke(Xe,e.__scopeScrollArea),s=e.orientation==="horizontal",a=Zn(()=>d("SCROLL_END"),100),[c,d]=Mm("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return l.useEffect(()=>{if(c==="idle"){const f=window.setTimeout(()=>d("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(f)}},[c,o.scrollHideDelay,d]),l.useEffect(()=>{const f=o.viewport,u=s?"scrollLeft":"scrollTop";if(f){let p=f[u];const m=()=>{const v=f[u];p!==v&&(d("SCROLL"),a()),p=v};return f.addEventListener("scroll",m),()=>f.removeEventListener("scroll",m)}},[o.viewport,s,d,a]),i.jsx(Ne,{present:n||c!=="hidden",children:i.jsx(_o,{"data-state":c==="hidden"?"hidden":"visible",...r,ref:t,onPointerEnter:U(e.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:U(e.onPointerLeave,()=>d("POINTER_LEAVE"))})})}),pc=l.forwardRef((e,t)=>{const n=ke(Xe,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,a]=l.useState(!1),c=e.orientation==="horizontal",d=Zn(()=>{if(n.viewport){const f=n.viewport.offsetWidth<n.viewport.scrollWidth,u=n.viewport.offsetHeight<n.viewport.scrollHeight;a(c?f:u)}},10);return It(n.viewport,d),It(n.content,d),i.jsx(Ne,{present:r||s,children:i.jsx(_o,{"data-state":s?"visible":"hidden",...o,ref:t})})}),_o=l.forwardRef((e,t)=>{const{orientation:n="vertical",...r}=e,o=ke(Xe,e.__scopeScrollArea),s=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),f=vc(c.viewport,c.content),u={...r,sizes:c,onSizesChange:d,hasThumb:f>0&&f<1,onThumbChange:m=>s.current=m,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:m=>a.current=m};function p(m,v){return Wm(m,a.current,c,v)}return n==="horizontal"?i.jsx($m,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const m=o.viewport.scrollLeft,v=wc(m,c,o.dir);s.current.style.transform=`translate3d(${v}px, 0, 0)`}},onWheelScroll:m=>{o.viewport&&(o.viewport.scrollLeft=m)},onDragScroll:m=>{o.viewport&&(o.viewport.scrollLeft=p(m,o.dir))}}):n==="vertical"?i.jsx(Bm,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const m=o.viewport.scrollTop,v=wc(m,c);s.current.style.transform=`translate3d(0, ${v}px, 0)`}},onWheelScroll:m=>{o.viewport&&(o.viewport.scrollTop=m)},onDragScroll:m=>{o.viewport&&(o.viewport.scrollTop=p(m))}}):null}),$m=l.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=ke(Xe,e.__scopeScrollArea),[a,c]=l.useState(),d=l.useRef(null),f=re(t,d,s.onScrollbarXChange);return l.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),i.jsx(gc,{"data-orientation":"horizontal",...o,ref:f,sizes:n,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Jn(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.x),onDragScroll:u=>e.onDragScroll(u.x),onWheelScroll:(u,p)=>{if(s.viewport){const m=s.viewport.scrollLeft+u.deltaX;e.onWheelScroll(m),xc(m,p)&&u.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:Yn(a.paddingLeft),paddingEnd:Yn(a.paddingRight)}})}})}),Bm=l.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=ke(Xe,e.__scopeScrollArea),[a,c]=l.useState(),d=l.useRef(null),f=re(t,d,s.onScrollbarYChange);return l.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),i.jsx(gc,{"data-orientation":"vertical",...o,ref:f,sizes:n,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Jn(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.y),onDragScroll:u=>e.onDragScroll(u.y),onWheelScroll:(u,p)=>{if(s.viewport){const m=s.viewport.scrollTop+u.deltaY;e.onWheelScroll(m),xc(m,p)&&u.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:Yn(a.paddingTop),paddingEnd:Yn(a.paddingBottom)}})}})}),[Um,hc]=lc(Xe),gc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:a,onThumbPointerDown:c,onThumbPositionChange:d,onDragScroll:f,onWheelScroll:u,onResize:p,...m}=e,v=ke(Xe,n),[g,h]=l.useState(null),b=re(t,M=>h(M)),w=l.useRef(null),y=l.useRef(""),x=v.viewport,E=r.content-r.viewport,C=we(u),O=we(d),N=Zn(p,10);function L(M){if(w.current){const D=M.clientX-w.current.left,j=M.clientY-w.current.top;f({x:D,y:j})}}return l.useEffect(()=>{const M=D=>{const j=D.target;(g==null?void 0:g.contains(j))&&C(D,E)};return document.addEventListener("wheel",M,{passive:!1}),()=>document.removeEventListener("wheel",M,{passive:!1})},[x,g,E,C]),l.useEffect(O,[r,O]),It(g,N),It(v.content,N),i.jsx(Um,{scope:n,scrollbar:g,hasThumb:o,onThumbChange:we(s),onThumbPointerUp:we(a),onThumbPositionChange:O,onThumbPointerDown:we(c),children:i.jsx(Z.div,{...m,ref:b,style:{position:"absolute",...m.style},onPointerDown:U(e.onPointerDown,M=>{M.button===0&&(M.target.setPointerCapture(M.pointerId),w.current=g.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",v.viewport&&(v.viewport.style.scrollBehavior="auto"),L(M))}),onPointerMove:U(e.onPointerMove,L),onPointerUp:U(e.onPointerUp,M=>{const D=M.target;D.hasPointerCapture(M.pointerId)&&D.releasePointerCapture(M.pointerId),document.body.style.webkitUserSelect=y.current,v.viewport&&(v.viewport.style.scrollBehavior=""),w.current=null})})})}),Xn="ScrollAreaThumb",mc=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=hc(Xn,e.__scopeScrollArea);return i.jsx(Ne,{present:n||o.hasThumb,children:i.jsx(zm,{ref:t,...r})})}),zm=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=ke(Xn,n),a=hc(Xn,n),{onThumbPositionChange:c}=a,d=re(t,p=>a.onThumbChange(p)),f=l.useRef(void 0),u=Zn(()=>{f.current&&(f.current(),f.current=void 0)},100);return l.useEffect(()=>{const p=s.viewport;if(p){const m=()=>{if(u(),!f.current){const v=Vm(p,c);f.current=v,c()}};return c(),p.addEventListener("scroll",m),()=>p.removeEventListener("scroll",m)}},[s.viewport,u,c]),i.jsx(Z.div,{"data-state":a.hasThumb?"visible":"hidden",...o,ref:d,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:U(e.onPointerDownCapture,p=>{const v=p.target.getBoundingClientRect(),g=p.clientX-v.left,h=p.clientY-v.top;a.onThumbPointerDown({x:g,y:h})}),onPointerUp:U(e.onPointerUp,a.onThumbPointerUp)})});mc.displayName=Xn;var Io="ScrollAreaCorner",bc=l.forwardRef((e,t)=>{const n=ke(Io,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?i.jsx(Hm,{...e,ref:t}):null});bc.displayName=Io;var Hm=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=ke(Io,n),[s,a]=l.useState(0),[c,d]=l.useState(0),f=!!(s&&c);return It(o.scrollbarX,()=>{var p;const u=((p=o.scrollbarX)==null?void 0:p.offsetHeight)||0;o.onCornerHeightChange(u),d(u)}),It(o.scrollbarY,()=>{var p;const u=((p=o.scrollbarY)==null?void 0:p.offsetWidth)||0;o.onCornerWidthChange(u),a(u)}),f?i.jsx(Z.div,{...r,ref:t,style:{width:s,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function Yn(e){return e?parseInt(e,10):0}function vc(e,t){const n=e/t;return isNaN(n)?0:n}function Jn(e){const t=vc(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Wm(e,t,n,r="ltr"){const o=Jn(n),s=o/2,a=t||s,c=o-a,d=n.scrollbar.paddingStart+a,f=n.scrollbar.size-n.scrollbar.paddingEnd-c,u=n.content-n.viewport,p=r==="ltr"?[0,u]:[u*-1,0];return yc([d,f],p)(e)}function wc(e,t,n="ltr"){const r=Jn(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,a=t.content-t.viewport,c=s-r,d=n==="ltr"?[0,a]:[a*-1,0],f=To(e,d);return yc([0,a],[0,c])(f)}function yc(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function xc(e,t){return e>0&&e<t}var Vm=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function o(){const s={left:e.scrollLeft,top:e.scrollTop},a=n.left!==s.left,c=n.top!==s.top;(a||c)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function Zn(e,t){const n=we(e),r=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(r.current),[]),l.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function It(e,t){const n=we(t);be(()=>{let r=0;if(e){const o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,n])}var Sc=dc,Rm=fc,jm=bc;const Cc=l.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(Sc,{ref:r,className:A("relative overflow-hidden",e),...n,children:[i.jsx(Rm,{className:"h-full w-full rounded-[inherit] overflow-auto",children:t}),i.jsx(Ec,{}),i.jsx(jm,{})]}));Cc.displayName=Sc.displayName;const Ec=l.forwardRef(({className:e,orientation:t="vertical",...n},r)=>i.jsx(Po,{ref:r,orientation:t,className:A("flex touch-none select-none transition-colors",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",e),...n,children:i.jsx(mc,{className:"relative flex-1 rounded-full bg-border"})}));Ec.displayName=Po.displayName;function Qn({className:e="",showCreateButton:t=!0,showDeleteButton:n=!0,showEditTitle:r=!0,maxHeight:o="400px",customStyles:s={},currentThreadId:a=null,navigateToThread:c,onThreadSelect:d,onThreadCreate:f,onThreadDelete:u}){const{loadThread:p,threads:m,refreshThreads:v,currentThreadId:g,createThread:h,deleteThread:b,renameThread:w}=Lr(),[y,x]=P.useState(m??[]),[E,C]=P.useState(!1),[O,N]=P.useState(null),[L,M]=P.useState(null),[D,j]=P.useState(""),[G,V]=P.useState(!1);P.useEffect(()=>{x(m??[])},[m]);const z=async B=>{try{await p(B),c==null||c(B),d==null||d(B)}catch(H){console.error("Failed to select thread:",H)}},X=async()=>{try{V(!0);const B=await h();f==null||f(B),c==null||c(B)}catch(B){console.error("Failed to create thread:",B)}finally{V(!1)}},F=async(B,H)=>{if(H.stopPropagation(),!!confirm("Delete this thread?"))try{await b(B),u==null||u(B)}catch(de){console.error("Failed to delete thread:",de)}},q=(B,H)=>{H.stopPropagation(),M(B.threadId),j(B.title||`Thread ${B.threadId.slice(0,8)}`)},T=async B=>{if(D.trim())try{await w(B,D.trim()),M(null),j("")}catch(H){console.error("Failed to update title:",H)}},_=()=>{M(null),j("")},I=(B,H)=>{B.key==="Enter"?T(H):B.key==="Escape"&&_()},k=B=>{if(!B)return"";try{const H=new Date(B),ie=new Date().getTime()-H.getTime(),R=Math.floor(ie/(1e3*60*60*24));return R===0?H.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):R===1?"Yesterday":R<7?`${R} days ago`:H.toLocaleDateString()}catch{return""}},Y=B=>B.title||`Thread ${B.threadId.slice(0,8)}`;return i.jsxs("div",{className:`flex flex-col h-full ${e} ${s.container||""}`,children:[t&&i.jsx("div",{className:s.header||"flex-shrink-0 p-4 border-b bg-slate-800 border-slate-700 text-slate-100",children:i.jsxs(fe,{onClick:X,disabled:G||E,className:s.createButton||"w-full !bg-slate-700 hover:!bg-slate-600 !text-slate-100 !border-slate-600",size:"sm",children:[i.jsx(K.Plus,{size:16,className:"mr-2"}),G?"Creating...":"New Conversation"]})}),i.jsx(Cc,{className:`flex-1 ${s.threadList||""}`,style:{maxHeight:o},children:i.jsx("div",{className:"p-2 space-y-1 pb-4",children:E?i.jsx("div",{className:"text-center py-8 text-slate-400",children:"Loading…"}):y.length===0?i.jsxs("div",{className:"text-center py-8 text-slate-400",children:[i.jsx(K.MessageSquare,{className:"w-8 h-8 mx-auto mb-2 opacity-40 text-slate-500"}),i.jsx("p",{className:"text-sm text-slate-500",children:"No conversations yet"})]}):y.slice().sort((B,H)=>new Date(H.updatedAt||H.createdAt||"").getTime()-new Date(B.updatedAt||B.createdAt||"").getTime()).map(B=>i.jsxs("div",{onClick:()=>z(B.threadId),className:`group relative p-3 rounded-lg cursor-pointer transition-colors border ${(a??g)===B.threadId?`${s.activeThread||"bg-slate-600 border-slate-500"} `:`${s.threadItem||"bg-slate-700 border-slate-600 hover:bg-slate-600"}`} ${s.threadItem||""} text-slate-100`,children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("div",{className:"flex-1 min-w-0",children:L===B.threadId?i.jsxs("div",{className:"flex items-center gap-2",onClick:H=>H.stopPropagation(),children:[i.jsx(nn,{value:D,onChange:H=>j(H.target.value),onKeyDown:H=>I(H,B.threadId),className:"h-6 text-sm",autoFocus:!0}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:()=>T(B.threadId),className:"h-6 w-6 p-0",children:i.jsx(K.Check,{size:12})}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:_,className:"h-6 w-6 p-0",children:i.jsx(K.X,{size:12})})]}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"font-medium text-sm truncate text-slate-100",children:Y(B)}),i.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400 mt-1",children:[i.jsx(K.Calendar,{size:10}),i.jsx("span",{children:k(B.updatedAt||B.createdAt)})]})]})}),i.jsxs("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity ml-2",children:[r&&L!==B.threadId&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:H=>q(B,H),className:"h-6 w-6 p-0",title:"Edit title",children:i.jsx(K.Edit3,{size:12})}),n&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:H=>F(B.threadId,H),className:"h-6 w-6 p-0 text-red-400 hover:text-red-300 hover:bg-red-900/20",title:"Delete thread",children:i.jsx(K.Trash2,{size:12})})]})]}),a===B.threadId&&i.jsx("div",{className:"absolute left-0 top-1/2 -translate-y-1/2 w-1 h-8 bg-blue-400 rounded-r"})]},B.threadId))})})]})}const Nc=P.createContext(null);function Km({children:e,basePath:t="/chat"}){const n=P.useMemo(()=>t?t==="/"?"":t.endsWith("/")?t.slice(0,-1):t:"/chat",[t]),r={basePath:n,buildThreadPath:o=>`${n}/${o}`,buildBasePath:()=>n};return i.jsx(Nc.Provider,{value:r,children:e})}function Gm(){const e=P.useContext(Nc);return e||{basePath:"/chat",buildThreadPath:t=>`/chat/${t}`,buildBasePath:()=>"/chat"}}const Tc={BASE_URL:"/",DEV:!1,MODE:"library",PROD:!0,SSR:!1};function rn(e){var o;const t=typeof{url:typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:br&&br.tagName.toUpperCase()==="SCRIPT"&&br.src||new URL("index.umd.js",document.baseURI).href}<"u"&&Tc?Tc[e]:void 0,n=(o=globalThis==null?void 0:globalThis.process)==null?void 0:o.env,r=n?n[e]:void 0;return(t??r)||void 0}function qm(){return rn("VITE_API_BASE_URL")||rn("NEXT_PUBLIC_API_BASE_URL")||void 0}function Xm(){return rn("VITE_API_KEY")||rn("NEXT_PUBLIC_API_KEY")||rn("VITE_AUTH_TOKEN")||void 0}function Ac(){const e=qm(),t=Xm(),n={};return e&&(n.baseUrl=e),t&&(n.apiKey=t),n}function Pc(){const e=Ac(),t=Ye.getAuthToken();return{apiBaseUrl:e.baseUrl||Ye.baseUrl||"http://localhost:8000",apiKey:t||e.apiKey||"",model:"gpt-4",temperature:.7,maxTokens:4096,layoutSize:"desktop",showThreads:!0,autoScrollMessages:!0,truncateToolMessages:!0,toolMessagePreviewLength:200,darkMode:!1,enableSound:!1,messageHistory:100}}const _c="chat-settings";function Ym(){try{const e=localStorage.getItem(_c);return e?JSON.parse(e):{}}catch(e){return console.error("Failed to parse stored settings:",e),{}}}function Jm(e){try{localStorage.setItem(_c,JSON.stringify(e)),e.apiKey&&Ye.setAuthToken(e.apiKey)}catch(t){console.error("Failed to save settings:",t)}}function Zm(){const e=Pc(),t=Ym(),n=Ye.getAuthToken();return{...e,...t,apiKey:n||t.apiKey||e.apiKey,apiBaseUrl:Ye.baseUrl||t.apiBaseUrl||e.apiBaseUrl}}function Qm(e){e.apiKey&&Ye.setAuthToken(e.apiKey),Jm(e)}const Oo=768;function eb(){const[e,t]=l.useState(void 0);return l.useEffect(()=>{const n=window.matchMedia(`(max-width: ${Oo-1}px)`),r=()=>{t(window.innerWidth<Oo)};return n.addEventListener("change",r),t(window.innerWidth<Oo),()=>n.removeEventListener("change",r)},[]),!!e}var tb="Separator",Ic="horizontal",nb=["horizontal","vertical"],Oc=l.forwardRef((e,t)=>{const{decorative:n,orientation:r=Ic,...o}=e,s=rb(r)?r:Ic,c=n?{role:"none"}:{"aria-orientation":s==="vertical"?s:void 0,role:"separator"};return i.jsx(Z.div,{"data-orientation":s,...c,...o,ref:t})});Oc.displayName=tb;function rb(e){return nb.includes(e)}var kc=Oc;const ko=l.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},o)=>i.jsx(kc,{ref:o,decorative:n,orientation:t,className:A("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...r}));ko.displayName=kc.displayName;var er="Dialog",[Mc,Iw]=Le(er),[ob,Ue]=Mc(er),Dc=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:s,modal:a=!0}=e,c=l.useRef(null),d=l.useRef(null),[f,u]=Qe({prop:r,defaultProp:o??!1,onChange:s,caller:er});return i.jsx(ob,{scope:t,triggerRef:c,contentRef:d,contentId:Fe(),titleId:Fe(),descriptionId:Fe(),open:f,onOpenChange:u,onOpenToggle:l.useCallback(()=>u(p=>!p),[u]),modal:a,children:n})};Dc.displayName=er;var Lc="DialogTrigger",Fc=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(Lc,n),s=re(t,o.triggerRef);return i.jsx(Z.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Lo(o.open),...r,ref:s,onClick:U(e.onClick,o.onOpenToggle)})});Fc.displayName=Lc;var Mo="DialogPortal",[sb,$c]=Mc(Mo,{forceMount:void 0}),Bc=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,s=Ue(Mo,t);return i.jsx(sb,{scope:t,forceMount:n,children:l.Children.map(r,a=>i.jsx(Ne,{present:n||s.open,children:i.jsx(Ln,{asChild:!0,container:o,children:a})}))})};Bc.displayName=Mo;var tr="DialogOverlay",Uc=l.forwardRef((e,t)=>{const n=$c(tr,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=Ue(tr,e.__scopeDialog);return s.modal?i.jsx(Ne,{present:r||s.open,children:i.jsx(ib,{...o,ref:t})}):null});Uc.displayName=tr;var ab=Pe.createSlot("DialogOverlay.RemoveScroll"),ib=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(tr,n);return i.jsx(Vn,{as:ab,allowPinchZoom:!0,shards:[o.contentRef],children:i.jsx(Z.div,{"data-state":Lo(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),pt="DialogContent",zc=l.forwardRef((e,t)=>{const n=$c(pt,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=Ue(pt,e.__scopeDialog);return i.jsx(Ne,{present:r||s.open,children:s.modal?i.jsx(cb,{...o,ref:t}):i.jsx(lb,{...o,ref:t})})});zc.displayName=pt;var cb=l.forwardRef((e,t)=>{const n=Ue(pt,e.__scopeDialog),r=l.useRef(null),o=re(t,n.contentRef,r);return l.useEffect(()=>{const s=r.current;if(s)return po(s)},[]),i.jsx(Hc,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:U(e.onCloseAutoFocus,s=>{var a;s.preventDefault(),(a=n.triggerRef.current)==null||a.focus()}),onPointerDownOutside:U(e.onPointerDownOutside,s=>{const a=s.detail.originalEvent,c=a.button===0&&a.ctrlKey===!0;(a.button===2||c)&&s.preventDefault()}),onFocusOutside:U(e.onFocusOutside,s=>s.preventDefault())})}),lb=l.forwardRef((e,t)=>{const n=Ue(pt,e.__scopeDialog),r=l.useRef(!1),o=l.useRef(!1);return i.jsx(Hc,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var a,c;(a=e.onCloseAutoFocus)==null||a.call(e,s),s.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),s.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:s=>{var d,f;(d=e.onInteractOutside)==null||d.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const a=s.target;((f=n.triggerRef.current)==null?void 0:f.contains(a))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&o.current&&s.preventDefault()}})}),Hc=l.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,...a}=e,c=Ue(pt,n),d=l.useRef(null),f=re(t,d);return Vr(),i.jsxs(i.Fragment,{children:[i.jsx(En,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:i.jsx(jt,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Lo(c.open),...a,ref:f,onDismiss:()=>c.onOpenChange(!1)})}),i.jsxs(i.Fragment,{children:[i.jsx(db,{titleId:c.titleId}),i.jsx(fb,{contentRef:d,descriptionId:c.descriptionId})]})]})}),Do="DialogTitle",Wc=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(Do,n);return i.jsx(Z.h2,{id:o.titleId,...r,ref:t})});Wc.displayName=Do;var Vc="DialogDescription",Rc=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(Vc,n);return i.jsx(Z.p,{id:o.descriptionId,...r,ref:t})});Rc.displayName=Vc;var jc="DialogClose",Kc=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(jc,n);return i.jsx(Z.button,{type:"button",...r,ref:t,onClick:U(e.onClick,()=>o.onOpenChange(!1))})});Kc.displayName=jc;function Lo(e){return e?"open":"closed"}var Gc="DialogTitleWarning",[Ow,qc]=lf(Gc,{contentName:pt,titleName:Do,docsSlug:"dialog"}),db=({titleId:e})=>{const t=qc(Gc),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
58
+ `)},fg=0,_t=[];function pg(e){var t=l.useRef([]),n=l.useRef([0,0]),r=l.useRef(),o=l.useState(fg++)[0],s=l.useState(si)[0],a=l.useRef(e);l.useEffect(function(){a.current=e},[e]),l.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var h=Dh([e.lockRef.current],(e.shards||[]).map(fi),!0).filter(Boolean);return h.forEach(function(b){return b.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),h.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var c=l.useCallback(function(h,b){if("touches"in h&&h.touches.length===2||h.type==="wheel"&&h.ctrlKey)return!a.current.allowPinchZoom;var w=Wn(h),y=n.current,x="deltaX"in h?h.deltaX:y[0]-w[0],E="deltaY"in h?h.deltaY:y[1]-w[1],C,O=h.target,N=Math.abs(x)>Math.abs(E)?"h":"v";if("touches"in h&&N==="h"&&O.type==="range")return!1;var L=ci(N,O);if(!L)return!0;if(L?C=N:(C=N==="v"?"h":"v",L=ci(N,O)),!L)return!1;if(!r.current&&"changedTouches"in h&&(x||E)&&(r.current=C),!C)return!0;var M=r.current||C;return lg(M,b,h,M==="h"?x:E)},[]),d=l.useCallback(function(h){var b=h;if(!(!_t.length||_t[_t.length-1]!==s)){var w="deltaY"in b?ui(b):Wn(b),y=t.current.filter(function(C){return C.name===b.type&&(C.target===b.target||b.target===C.shadowParent)&&dg(C.delta,w)})[0];if(y&&y.should){b.cancelable&&b.preventDefault();return}if(!y){var x=(a.current.shards||[]).map(fi).filter(Boolean).filter(function(C){return C.contains(b.target)}),E=x.length>0?c(b,x[0]):!a.current.noIsolation;E&&b.cancelable&&b.preventDefault()}}},[]),f=l.useCallback(function(h,b,w,y){var x={name:h,delta:b,target:w,should:y,shadowParent:hg(w)};t.current.push(x),setTimeout(function(){t.current=t.current.filter(function(E){return E!==x})},1)},[]),u=l.useCallback(function(h){n.current=Wn(h),r.current=void 0},[]),p=l.useCallback(function(h){f(h.type,ui(h),h.target,c(h,e.lockRef.current))},[]),m=l.useCallback(function(h){f(h.type,Wn(h),h.target,c(h,e.lockRef.current))},[]);l.useEffect(function(){return _t.push(s),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:m}),document.addEventListener("wheel",d,Pt),document.addEventListener("touchmove",d,Pt),document.addEventListener("touchstart",u,Pt),function(){_t=_t.filter(function(h){return h!==s}),document.removeEventListener("wheel",d,Pt),document.removeEventListener("touchmove",d,Pt),document.removeEventListener("touchstart",u,Pt)}},[]);var v=e.removeScrollBar,g=e.inert;return l.createElement(l.Fragment,null,g?l.createElement(s,{styles:ug(o)}):null,v?l.createElement(ng,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function hg(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const gg=Vh(oi,pg);var Vn=l.forwardRef(function(e,t){return l.createElement(zn,qe({},e,{ref:t,sideCar:gg}))});Vn.classNames=zn.classNames;var vo=["Enter"," "],mg=["ArrowDown","PageUp","Home"],pi=["ArrowUp","PageDown","End"],bg=[...mg,...pi],vg={ltr:[...vo,"ArrowRight"],rtl:[...vo,"ArrowLeft"]},wg={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Yt="Menu",[Jt,yg,xg]=zr(Yt),[ut,hi]=Le(Yt,[xg,Nt,Xa]),Rn=Nt(),gi=Xa(),[Sg,ft]=ut(Yt),[Cg,Zt]=ut(Yt),mi=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:o,onOpenChange:s,modal:a=!0}=e,c=Rn(t),[d,f]=l.useState(null),u=l.useRef(!1),p=we(s),m=Cn(o);return l.useEffect(()=>{const v=()=>{u.current=!0,document.addEventListener("pointerdown",g,{capture:!0,once:!0}),document.addEventListener("pointermove",g,{capture:!0,once:!0})},g=()=>u.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",g,{capture:!0}),document.removeEventListener("pointermove",g,{capture:!0})}},[]),i.jsx(so,{...c,children:i.jsx(Sg,{scope:t,open:n,onOpenChange:p,content:d,onContentChange:f,children:i.jsx(Cg,{scope:t,onClose:l.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:u,dir:m,modal:a,children:r})})})};mi.displayName=Yt;var Eg="MenuAnchor",wo=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=Rn(n);return i.jsx(ao,{...o,...r,ref:t})});wo.displayName=Eg;var yo="MenuPortal",[Ng,bi]=ut(yo,{forceMount:void 0}),vi=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:o}=e,s=ft(yo,t);return i.jsx(Ng,{scope:t,forceMount:n,children:i.jsx(Ne,{present:n||s.open,children:i.jsx(Ln,{asChild:!0,container:o,children:r})})})};vi.displayName=yo;var Oe="MenuContent",[Tg,xo]=ut(Oe),wi=l.forwardRef((e,t)=>{const n=bi(Oe,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=ft(Oe,e.__scopeMenu),a=Zt(Oe,e.__scopeMenu);return i.jsx(Jt.Provider,{scope:e.__scopeMenu,children:i.jsx(Ne,{present:r||s.open,children:i.jsx(Jt.Slot,{scope:e.__scopeMenu,children:a.modal?i.jsx(Ag,{...o,ref:t}):i.jsx(Pg,{...o,ref:t})})})})}),Ag=l.forwardRef((e,t)=>{const n=ft(Oe,e.__scopeMenu),r=l.useRef(null),o=re(t,r);return l.useEffect(()=>{const s=r.current;if(s)return po(s)},[]),i.jsx(So,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:U(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Pg=l.forwardRef((e,t)=>{const n=ft(Oe,e.__scopeMenu);return i.jsx(So,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),_g=Pe.createSlot("MenuContent.ScrollLock"),So=l.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:a,disableOutsidePointerEvents:c,onEntryFocus:d,onEscapeKeyDown:f,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:m,onDismiss:v,disableOutsideScroll:g,...h}=e,b=ft(Oe,n),w=Zt(Oe,n),y=Rn(n),x=gi(n),E=yg(n),[C,O]=l.useState(null),N=l.useRef(null),L=re(t,N,b.onContentChange),M=l.useRef(0),D=l.useRef(""),j=l.useRef(0),G=l.useRef(null),V=l.useRef("right"),z=l.useRef(0),X=g?Vn:l.Fragment,F=g?{as:_g,allowPinchZoom:!0}:void 0,q=_=>{var R,se;const I=D.current+_,k=E().filter(le=>!le.disabled),Y=document.activeElement,B=(R=k.find(le=>le.ref.current===Y))==null?void 0:R.textValue,H=k.map(le=>le.textValue),de=Hg(H,I,B),ie=(se=k.find(le=>le.textValue===de))==null?void 0:se.ref.current;(function le(ae){D.current=ae,window.clearTimeout(M.current),ae!==""&&(M.current=window.setTimeout(()=>le(""),1e3))})(I),ie&&setTimeout(()=>ie.focus())};l.useEffect(()=>()=>window.clearTimeout(M.current),[]),Vr();const T=l.useCallback(_=>{var k,Y;return V.current===((k=G.current)==null?void 0:k.side)&&Vg(_,(Y=G.current)==null?void 0:Y.area)},[]);return i.jsx(Tg,{scope:n,searchRef:D,onItemEnter:l.useCallback(_=>{T(_)&&_.preventDefault()},[T]),onItemLeave:l.useCallback(_=>{var I;T(_)||((I=N.current)==null||I.focus(),O(null))},[T]),onTriggerLeave:l.useCallback(_=>{T(_)&&_.preventDefault()},[T]),pointerGraceTimerRef:j,onPointerGraceIntentChange:l.useCallback(_=>{G.current=_},[]),children:i.jsx(X,{...F,children:i.jsx(En,{asChild:!0,trapped:o,onMountAutoFocus:U(s,_=>{var I;_.preventDefault(),(I=N.current)==null||I.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:i.jsx(jt,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:f,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:m,onDismiss:v,children:i.jsx(_h,{asChild:!0,...x,dir:w.dir,orientation:"vertical",loop:r,currentTabStopId:C,onCurrentTabStopIdChange:O,onEntryFocus:U(d,_=>{w.isUsingKeyboardRef.current||_.preventDefault()}),preventScrollOnEntryFocus:!0,children:i.jsx(io,{role:"menu","aria-orientation":"vertical","data-state":Fi(b.open),"data-radix-menu-content":"",dir:w.dir,...y,...h,ref:L,style:{outline:"none",...h.style},onKeyDown:U(h.onKeyDown,_=>{const k=_.target.closest("[data-radix-menu-content]")===_.currentTarget,Y=_.ctrlKey||_.altKey||_.metaKey,B=_.key.length===1;k&&(_.key==="Tab"&&_.preventDefault(),!Y&&B&&q(_.key));const H=N.current;if(_.target!==H||!bg.includes(_.key))return;_.preventDefault();const ie=E().filter(R=>!R.disabled).map(R=>R.ref.current);pi.includes(_.key)&&ie.reverse(),Ug(ie)}),onBlur:U(e.onBlur,_=>{_.currentTarget.contains(_.target)||(window.clearTimeout(M.current),D.current="")}),onPointerMove:U(e.onPointerMove,en(_=>{const I=_.target,k=z.current!==_.clientX;if(_.currentTarget.contains(I)&&k){const Y=_.clientX>z.current?"right":"left";V.current=Y,z.current=_.clientX}}))})})})})})})});wi.displayName=Oe;var Ig="MenuGroup",Co=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Z.div,{role:"group",...r,ref:t})});Co.displayName=Ig;var Og="MenuLabel",yi=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Z.div,{...r,ref:t})});yi.displayName=Og;var jn="MenuItem",xi="menu.itemSelect",Kn=l.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...o}=e,s=l.useRef(null),a=Zt(jn,e.__scopeMenu),c=xo(jn,e.__scopeMenu),d=re(t,s),f=l.useRef(!1),u=()=>{const p=s.current;if(!n&&p){const m=new CustomEvent(xi,{bubbles:!0,cancelable:!0});p.addEventListener(xi,v=>r==null?void 0:r(v),{once:!0}),Ys(p,m),m.defaultPrevented?f.current=!1:a.onClose()}};return i.jsx(Si,{...o,ref:d,disabled:n,onClick:U(e.onClick,u),onPointerDown:p=>{var m;(m=e.onPointerDown)==null||m.call(e,p),f.current=!0},onPointerUp:U(e.onPointerUp,p=>{var m;f.current||(m=p.currentTarget)==null||m.click()}),onKeyDown:U(e.onKeyDown,p=>{const m=c.searchRef.current!=="";n||m&&p.key===" "||vo.includes(p.key)&&(p.currentTarget.click(),p.preventDefault())})})});Kn.displayName=jn;var Si=l.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:o,...s}=e,a=xo(jn,n),c=gi(n),d=l.useRef(null),f=re(t,d),[u,p]=l.useState(!1),[m,v]=l.useState("");return l.useEffect(()=>{const g=d.current;g&&v((g.textContent??"").trim())},[s.children]),i.jsx(Jt.ItemSlot,{scope:n,disabled:r,textValue:o??m,children:i.jsx(Ih,{asChild:!0,...c,focusable:!r,children:i.jsx(Z.div,{role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:f,onPointerMove:U(e.onPointerMove,en(g=>{r?a.onItemLeave(g):(a.onItemEnter(g),g.defaultPrevented||g.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:U(e.onPointerLeave,en(g=>a.onItemLeave(g))),onFocus:U(e.onFocus,()=>p(!0)),onBlur:U(e.onBlur,()=>p(!1))})})})}),kg="MenuCheckboxItem",Ci=l.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...o}=e;return i.jsx(Pi,{scope:e.__scopeMenu,checked:n,children:i.jsx(Kn,{role:"menuitemcheckbox","aria-checked":Gn(n)?"mixed":n,...o,ref:t,"data-state":No(n),onSelect:U(o.onSelect,()=>r==null?void 0:r(Gn(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Ci.displayName=kg;var Ei="MenuRadioGroup",[Mg,Dg]=ut(Ei,{value:void 0,onValueChange:()=>{}}),Ni=l.forwardRef((e,t)=>{const{value:n,onValueChange:r,...o}=e,s=we(r);return i.jsx(Mg,{scope:e.__scopeMenu,value:n,onValueChange:s,children:i.jsx(Co,{...o,ref:t})})});Ni.displayName=Ei;var Ti="MenuRadioItem",Ai=l.forwardRef((e,t)=>{const{value:n,...r}=e,o=Dg(Ti,e.__scopeMenu),s=n===o.value;return i.jsx(Pi,{scope:e.__scopeMenu,checked:s,children:i.jsx(Kn,{role:"menuitemradio","aria-checked":s,...r,ref:t,"data-state":No(s),onSelect:U(r.onSelect,()=>{var a;return(a=o.onValueChange)==null?void 0:a.call(o,n)},{checkForDefaultPrevented:!1})})})});Ai.displayName=Ti;var Eo="MenuItemIndicator",[Pi,Lg]=ut(Eo,{checked:!1}),_i=l.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...o}=e,s=Lg(Eo,n);return i.jsx(Ne,{present:r||Gn(s.checked)||s.checked===!0,children:i.jsx(Z.span,{...o,ref:t,"data-state":No(s.checked)})})});_i.displayName=Eo;var Fg="MenuSeparator",Ii=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(Z.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});Ii.displayName=Fg;var $g="MenuArrow",Oi=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=Rn(n);return i.jsx(co,{...o,...r,ref:t})});Oi.displayName=$g;var Bg="MenuSub",[Aw,ki]=ut(Bg),Qt="MenuSubTrigger",Mi=l.forwardRef((e,t)=>{const n=ft(Qt,e.__scopeMenu),r=Zt(Qt,e.__scopeMenu),o=ki(Qt,e.__scopeMenu),s=xo(Qt,e.__scopeMenu),a=l.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:d}=s,f={__scopeMenu:e.__scopeMenu},u=l.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return l.useEffect(()=>u,[u]),l.useEffect(()=>{const p=c.current;return()=>{window.clearTimeout(p),d(null)}},[c,d]),i.jsx(wo,{asChild:!0,...f,children:i.jsx(Si,{id:o.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":o.contentId,"data-state":Fi(n.open),...e,ref:Fr(t,o.onTriggerChange),onClick:p=>{var m;(m=e.onClick)==null||m.call(e,p),!(e.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:U(e.onPointerMove,en(p=>{s.onItemEnter(p),!p.defaultPrevented&&!e.disabled&&!n.open&&!a.current&&(s.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:U(e.onPointerLeave,en(p=>{var v,g;u();const m=(v=n.content)==null?void 0:v.getBoundingClientRect();if(m){const h=(g=n.content)==null?void 0:g.dataset.side,b=h==="right",w=b?-5:5,y=m[b?"left":"right"],x=m[b?"right":"left"];s.onPointerGraceIntentChange({area:[{x:p.clientX+w,y:p.clientY},{x:y,y:m.top},{x,y:m.top},{x,y:m.bottom},{x:y,y:m.bottom}],side:h}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(p),p.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:U(e.onKeyDown,p=>{var v;const m=s.searchRef.current!=="";e.disabled||m&&p.key===" "||vg[r.dir].includes(p.key)&&(n.onOpenChange(!0),(v=n.content)==null||v.focus(),p.preventDefault())})})})});Mi.displayName=Qt;var Di="MenuSubContent",Li=l.forwardRef((e,t)=>{const n=bi(Oe,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=ft(Oe,e.__scopeMenu),a=Zt(Oe,e.__scopeMenu),c=ki(Di,e.__scopeMenu),d=l.useRef(null),f=re(t,d);return i.jsx(Jt.Provider,{scope:e.__scopeMenu,children:i.jsx(Ne,{present:r||s.open,children:i.jsx(Jt.Slot,{scope:e.__scopeMenu,children:i.jsx(So,{id:c.contentId,"aria-labelledby":c.triggerId,...o,ref:f,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:u=>{var p;a.isUsingKeyboardRef.current&&((p=d.current)==null||p.focus()),u.preventDefault()},onCloseAutoFocus:u=>u.preventDefault(),onFocusOutside:U(e.onFocusOutside,u=>{u.target!==c.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:U(e.onEscapeKeyDown,u=>{a.onClose(),u.preventDefault()}),onKeyDown:U(e.onKeyDown,u=>{var v;const p=u.currentTarget.contains(u.target),m=wg[a.dir].includes(u.key);p&&m&&(s.onOpenChange(!1),(v=c.trigger)==null||v.focus(),u.preventDefault())})})})})})});Li.displayName=Di;function Fi(e){return e?"open":"closed"}function Gn(e){return e==="indeterminate"}function No(e){return Gn(e)?"indeterminate":e?"checked":"unchecked"}function Ug(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function zg(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Hg(e,t,n){const o=t.length>1&&Array.from(t).every(f=>f===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let a=zg(e,Math.max(s,0));o.length===1&&(a=a.filter(f=>f!==n));const d=a.find(f=>f.toLowerCase().startsWith(o.toLowerCase()));return d!==n?d:void 0}function Wg(e,t){const{x:n,y:r}=e;let o=!1;for(let s=0,a=t.length-1;s<t.length;a=s++){const c=t[s],d=t[a],f=c.x,u=c.y,p=d.x,m=d.y;u>r!=m>r&&n<(p-f)*(r-u)/(m-u)+f&&(o=!o)}return o}function Vg(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return Wg(n,t)}function en(e){return t=>t.pointerType==="mouse"?e(t):void 0}var Rg=mi,jg=wo,Kg=vi,Gg=wi,qg=Co,Xg=yi,Yg=Kn,Jg=Ci,Zg=Ni,Qg=Ai,em=_i,tm=Ii,nm=Oi,rm=Mi,om=Li,qn="DropdownMenu",[sm,Pw]=Le(qn,[hi]),xe=hi(),[am,$i]=sm(qn),Bi=e=>{const{__scopeDropdownMenu:t,children:n,dir:r,open:o,defaultOpen:s,onOpenChange:a,modal:c=!0}=e,d=xe(t),f=l.useRef(null),[u,p]=Qe({prop:o,defaultProp:s??!1,onChange:a,caller:qn});return i.jsx(am,{scope:t,triggerId:Fe(),triggerRef:f,contentId:Fe(),open:u,onOpenChange:p,onOpenToggle:l.useCallback(()=>p(m=>!m),[p]),modal:c,children:i.jsx(Rg,{...d,open:u,onOpenChange:p,dir:r,modal:c,children:n})})};Bi.displayName=qn;var Ui="DropdownMenuTrigger",zi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:r=!1,...o}=e,s=$i(Ui,n),a=xe(n);return i.jsx(jg,{asChild:!0,...a,children:i.jsx(Z.button,{type:"button",id:s.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":s.open?s.contentId:void 0,"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:Fr(t,s.triggerRef),onPointerDown:U(e.onPointerDown,c=>{!r&&c.button===0&&c.ctrlKey===!1&&(s.onOpenToggle(),s.open||c.preventDefault())}),onKeyDown:U(e.onKeyDown,c=>{r||(["Enter"," "].includes(c.key)&&s.onOpenToggle(),c.key==="ArrowDown"&&s.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(c.key)&&c.preventDefault())})})})});zi.displayName=Ui;var im="DropdownMenuPortal",Hi=e=>{const{__scopeDropdownMenu:t,...n}=e,r=xe(t);return i.jsx(Kg,{...r,...n})};Hi.displayName=im;var Wi="DropdownMenuContent",Vi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=$i(Wi,n),s=xe(n),a=l.useRef(!1);return i.jsx(Gg,{id:o.contentId,"aria-labelledby":o.triggerId,...s,...r,ref:t,onCloseAutoFocus:U(e.onCloseAutoFocus,c=>{var d;a.current||(d=o.triggerRef.current)==null||d.focus(),a.current=!1,c.preventDefault()}),onInteractOutside:U(e.onInteractOutside,c=>{const d=c.detail.originalEvent,f=d.button===0&&d.ctrlKey===!0,u=d.button===2||f;(!o.modal||u)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Vi.displayName=Wi;var cm="DropdownMenuGroup",lm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(qg,{...o,...r,ref:t})});lm.displayName=cm;var dm="DropdownMenuLabel",Ri=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Xg,{...o,...r,ref:t})});Ri.displayName=dm;var um="DropdownMenuItem",ji=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Yg,{...o,...r,ref:t})});ji.displayName=um;var fm="DropdownMenuCheckboxItem",Ki=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Jg,{...o,...r,ref:t})});Ki.displayName=fm;var pm="DropdownMenuRadioGroup",hm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Zg,{...o,...r,ref:t})});hm.displayName=pm;var gm="DropdownMenuRadioItem",Gi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(Qg,{...o,...r,ref:t})});Gi.displayName=gm;var mm="DropdownMenuItemIndicator",qi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(em,{...o,...r,ref:t})});qi.displayName=mm;var bm="DropdownMenuSeparator",Xi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(tm,{...o,...r,ref:t})});Xi.displayName=bm;var vm="DropdownMenuArrow",wm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(nm,{...o,...r,ref:t})});wm.displayName=vm;var ym="DropdownMenuSubTrigger",Yi=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(rm,{...o,...r,ref:t})});Yi.displayName=ym;var xm="DropdownMenuSubContent",Ji=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=xe(n);return i.jsx(om,{...o,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Ji.displayName=xm;var Sm=Bi,Cm=zi,Em=Hi,Zi=Vi,Qi=Ri,ec=ji,tc=Ki,nc=Gi,rc=qi,oc=Xi,sc=Yi,ac=Ji;const Nm=Sm,Tm=Cm,Am=l.forwardRef(({className:e,inset:t,children:n,...r},o)=>i.jsxs(sc,{ref:o,className:A("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",t&&"pl-8",e),...r,children:[n,i.jsx(K.ChevronRight,{className:"ml-auto h-4 w-4"})]}));Am.displayName=sc.displayName;const Pm=l.forwardRef(({className:e,...t},n)=>i.jsx(ac,{ref:n,className:A("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t}));Pm.displayName=ac.displayName;const ic=l.forwardRef(({className:e,sideOffset:t=4,...n},r)=>i.jsx(Em,{children:i.jsx(Zi,{ref:r,sideOffset:t,className:A("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n})}));ic.displayName=Zi.displayName;const cc=l.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(ec,{ref:r,className:A("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t&&"pl-8",e),...n}));cc.displayName=ec.displayName;const _m=l.forwardRef(({className:e,children:t,checked:n,...r},o)=>i.jsxs(tc,{ref:o,className:A("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...r,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(rc,{children:i.jsx(K.Check,{className:"h-4 w-4"})})}),t]}));_m.displayName=tc.displayName;const Im=l.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(nc,{ref:r,className:A("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(rc,{children:i.jsx(K.Circle,{className:"h-2 w-2 fill-current"})})}),t]}));Im.displayName=nc.displayName;const Om=l.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(Qi,{ref:r,className:A("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...n}));Om.displayName=Qi.displayName;const km=l.forwardRef(({className:e,...t},n)=>i.jsx(oc,{ref:n,className:A("-mx-1 my-1 h-px bg-muted",e),...t}));km.displayName=oc.displayName;function tn({className:e="",placeholder:t="Type your message...",autoFocus:n=!0,maxHeight:r=void 0,streamingDebounceMs:o=40,enableFileUpload:s=!0,enableMessageEditing:a=!0,customStyles:c={},onMessageSent:d,onError:f}){const{currentThreadId:u,messages:p,isStreaming:m,streamingAssistantId:v,error:g,send:h,stop:b,lastCheckpointId:w,listCheckpoints:y,navigateToCheckpoint:x,returnToLatest:E}=Lr(),[C,O]=P.useState(""),[N,L]=P.useState(null),[M,D]=P.useState(null),[j,G]=P.useState([]),[V,z]=P.useState(!1),[X,F]=P.useState([]),[q,T]=P.useState(null),_=P.useRef(null),I=P.useRef(null),k=P.useRef(null),[Y,B]=P.useState("desktop");P.useEffect(()=>{const $=()=>{const te=window.innerWidth;B(te<640?"phone":te<1024?"tablet":"desktop")};return $(),window.addEventListener("resize",$),()=>window.removeEventListener("resize",$)},[]),P.useEffect(()=>{var $;($=_.current)==null||$.scrollIntoView({behavior:"smooth"})},[p]),P.useEffect(()=>{var $;n&&(($=I.current)==null||$.focus())},[n]),P.useEffect(()=>{g&&!V&&(f==null||f(g))},[g,V,f]),P.useEffect(()=>{let $=!0;if(!u){F([]),T(null);return}return y(u).then(te=>{var Ae;if(!$)return;const oe=te.checkpoints||[];F(oe);const ue=((Ae=oe.slice().sort((Mt,Se)=>new Date(Se.createdAt).getTime()-new Date(Mt.createdAt).getTime())[0])==null?void 0:Ae.checkpointId)||null;T(Mt=>Mt??ue)}).catch(()=>{}),()=>{$=!1}},[u,y]),P.useEffect(()=>{w&&T(w)},[w]);const H=$=>{if($.length>yt)return`Message too long (${$.length}/${yt} characters)`;try{return $f($),null}catch(te){return(te==null?void 0:te.message)||"Invalid message"}},de=$=>{const te=$.content||[],oe=te.filter(ue=>ue.type==="text").map(ue=>ue.text).join("");if(oe)return oe;try{return JSON.stringify(te,null,2)}catch{return String(te)}},ie=$=>{var Mt;if(!X.length)return[];const oe=(((Mt=p[$])==null?void 0:Mt.role)??"user")==="user",ue=oe?$+2:$+1;return X.filter(Se=>(Se.messagesLen??-1)>=(oe?ue:0)).filter(Se=>oe?(Se.messagesLen??0)>=ue:(Se.messagesLen??0)===ue).map(Se=>({checkpoint_id:Se.checkpointId,checkpoint_ns:Se.checkpointNs,message_count:Se.messagesLen??0,last_message_preview:Se.preview??void 0,ts:new Date(Se.createdAt).getTime(),isCurrent:Se.checkpointId===q})).sort((Se,rw)=>(Se.ts||0)-(rw.ts||0))},R=$=>{if($===void 0)return{canGoBack:!1,canGoForward:!1,currentIndex:0,totalBranches:0};const te=ie($);if(te.length<=1)return{canGoBack:!1,canGoForward:!1,currentIndex:0,totalBranches:te.length};const oe=Math.max(0,te.findIndex(ue=>ue.isCurrent));return{canGoBack:oe>0,canGoForward:oe<te.length-1,currentIndex:oe,totalBranches:te.length}},se=async()=>{const $=C.trim();if(!$&&j.length===0)return;const te=H($);if(te){D(te);return}try{const oe=window.__editingCheckpointId||q||void 0;await h($,{checkpointId:oe,payloadExtras:N?{edit:!0,originalMessageId:N}:void 0,attachments:j}),d==null||d($),O(""),D(null),G([]),delete window.__editingCheckpointId,L(null),I.current&&(I.current.style.height="auto")}catch(oe){const ue=(oe==null?void 0:oe.message)||"Failed to send message";D(ue),f==null||f(ue)}},le=($,te)=>{a&&(L($),O(te),D(null),setTimeout(()=>{I.current&&(I.current.focus(),I.current.style.height="auto",I.current.style.height=I.current.scrollHeight+"px")},0))},ae=async($,te)=>{const oe=p.find(Ae=>Ae.id===$);if(!oe){D("Message not found");return}const ue=de(oe);L($),O(ue),window.__editingCheckpointId=te,setTimeout(()=>{var Ae;return(Ae=I.current)==null?void 0:Ae.focus()},0)},W=()=>{L(null),O(""),D(null),delete window.__editingCheckpointId,I.current&&(I.current.style.height="auto")},ee=$=>{$.key==="Enter"&&!$.shiftKey?($.preventDefault(),se()):$.key==="Escape"&&N&&($.preventDefault(),W())},pe=$=>{const te=Array.from($.target.files||[]);G(oe=>[...oe,...te])},he=$=>G(te=>te.filter((oe,ue)=>$!==ue)),J=async $=>{u&&(await x($),T($))},ve=async()=>{await E(),T(null)},ce=`flex flex-col h-full bg-transparent ${e} ${c.container||""}`,me=`flex-1 min-h-0 overflow-y-auto p-4 space-y-4 bg-transparent ${c.messagesArea||""}`,Te=`flex-shrink-0 border-t p-4 bg-transparent ${c.inputArea||""}`;return i.jsxs("div",{className:ce,children:[!!g&&!V&&i.jsxs("div",{className:"bg-red-50 border border-red-200 text-red-800 px-4 py-2 text-sm flex items-center justify-between",children:[i.jsx("span",{children:g}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:()=>z(!0),className:"text-red-800 hover:bg-red-100","aria-label":"Dismiss error",children:i.jsx(K.X,{size:16})})]}),u&&X.length>0&&i.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 border-b bg-background/50 text-xs",children:[i.jsx(K.GitBranch,{className:"h-4 w-4 opacity-70"}),i.jsx("span",{className:"opacity-70",children:"Checkpoint:"}),i.jsxs("select",{className:"border rounded px-2 py-1 text-xs",value:q??"",onChange:$=>{const te=$.target.value||null;te?J(te):ve()},children:[i.jsx("option",{value:"",children:"Latest"}),X.slice().sort(($,te)=>new Date(te.createdAt).getTime()-new Date($.createdAt).getTime()).map($=>i.jsxs("option",{value:$.checkpointId,children:[new Date($.createdAt).toLocaleString(),$.preview?` — ${$.preview.slice(0,30)}`:""]},$.checkpointId))]})]}),i.jsxs("div",{className:me,style:r?{maxHeight:r}:void 0,children:[p.length===0?i.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:"No messages yet. Start a conversation!"}):p.map(($,te)=>i.jsx(na,{message:$,messageIndex:te,isStreamingMessage:m&&v===$.id,streamingDebounceMs:o,isEditing:N===$.id,showActions:a,showTimestamp:!1,showAgentName:!0,layoutSize:Y,truncateToolMessages:!1,toolMessagePreviewLength:200,checkpointBranches:ie(te),currentCheckpointId:q??void 0,temporalNavigation:R(te),onSwitchToCheckpoint:J,onReturnToMainThread:ve,onNavigateToPreviousBranch:()=>{const oe=ie(te),ue=Math.max(0,oe.findIndex(Ae=>Ae.isCurrent));ue>0&&J(oe[ue-1].checkpoint_id)},onNavigateToNextBranch:()=>{const oe=ie(te),ue=Math.max(0,oe.findIndex(Ae=>Ae.isCurrent));ue>=0&&ue<oe.length-1&&J(oe[ue+1].checkpoint_id)},onEdit:(oe,ue)=>le(oe,ue),onEditFromCheckpoint:ae,onRegenerate:()=>{const oe=[...p].reverse().find(Ae=>Ae.role==="user"),ue=oe?de(oe):"";ue&&h(ue,{checkpointId:q??void 0})},onCancelEdit:W},$.id||te)),i.jsx("div",{ref:_})]}),i.jsxs("div",{className:Te,children:[N&&i.jsx("div",{className:"mb-3 p-3 bg-blue-50 border border-blue-200 rounded-lg",children:i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(K.Edit3,{size:16,className:"text-blue-600"}),i.jsx("span",{className:"text-sm font-medium text-blue-800",children:"Editing message"})]}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:W,className:"text-blue-600 hover:bg-blue-100",children:i.jsx(K.X,{size:16})})]})}),s&&i.jsxs("div",{className:"mb-3",children:[i.jsx("input",{ref:k,type:"file",multiple:!0,onChange:$=>pe($),className:"hidden"}),j.length>0&&i.jsx("div",{className:"mb-3 flex flex-wrap gap-2",children:j.map(($,te)=>i.jsxs("div",{className:"flex items-center gap-2 bg-gray-100 rounded-lg px-3 py-2 text-sm",children:[i.jsx(K.Paperclip,{size:14}),i.jsx("span",{className:"truncate max-w-[150px]",children:$.name}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:()=>he(te),className:"h-4 w-4 p-0 text-gray-500 hover:text-red-500","aria-label":`Remove ${$.name}`,children:i.jsx(K.X,{size:12})})]},te))})]}),M&&i.jsx("div",{className:"mb-3 text-sm text-red-600 bg-red-50 border border-red-200 rounded px-3 py-2",children:M}),i.jsxs("div",{className:"flex items-end gap-2",children:[s&&i.jsxs(Nm,{children:[i.jsx(Tm,{asChild:!0,children:i.jsx(fe,{type:"button",size:"icon",variant:"outline",disabled:m,title:"More input actions",className:c.moreButton||"",children:i.jsx(K.Plus,{size:16})})}),i.jsx(ic,{align:"start",sideOffset:6,className:"w-52",children:i.jsxs(cc,{onClick:()=>{var $;return($=k.current)==null?void 0:$.click()},className:"cursor-pointer",children:[i.jsx(K.Paperclip,{className:"h-4 w-4 mr-2"})," Attach files or images"]})})]}),i.jsx("div",{className:"flex-1",children:i.jsx(Gs,{ref:I,value:C,onChange:$=>{O($.target.value),D(null),I.current&&(I.current.style.height="auto",I.current.style.height=`${I.current.scrollHeight}px`)},onKeyDown:ee,placeholder:N?"Edit your message...":t,className:`resize-none min-h-[44px] max-h-[20rem] w-full ${N?"border-blue-400 bg-blue-50":""} ${M?"border-red-400":""} ${c.textarea||""}`,disabled:!1,maxLength:yt,rows:1})}),i.jsx("div",{children:m?i.jsx(fe,{type:"button",onClick:b,size:"icon",variant:"outline",className:"shrink-0",title:"Stop generating",children:i.jsx(K.Square,{size:16})}):i.jsx(fe,{type:"button",onClick:se,size:"icon",disabled:!C.trim()&&j.length===0,className:`shrink-0 ${c.sendButton||""}`,title:N?"Save changes":"Send message",children:i.jsx(K.Send,{size:16})})})]}),C.length>yt*.8&&i.jsxs("div",{className:"mt-2 text-xs text-gray-500 text-right",children:[C.length,"/",yt]})]})]})}const nn=l.forwardRef(({className:e,type:t,...n},r)=>i.jsx("input",{type:t,className:A("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:r,...n}));nn.displayName="Input";function To(e,[t,n]){return Math.min(n,Math.max(t,e))}function Mm(e,t){return l.useReducer((n,r)=>t[n][r]??n,e)}var Ao="ScrollArea",[lc,_w]=Le(Ao),[Dm,ke]=lc(Ao),dc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...a}=e,[c,d]=l.useState(null),[f,u]=l.useState(null),[p,m]=l.useState(null),[v,g]=l.useState(null),[h,b]=l.useState(null),[w,y]=l.useState(0),[x,E]=l.useState(0),[C,O]=l.useState(!1),[N,L]=l.useState(!1),M=re(t,j=>d(j)),D=Cn(o);return i.jsx(Dm,{scope:n,type:r,dir:D,scrollHideDelay:s,scrollArea:c,viewport:f,onViewportChange:u,content:p,onContentChange:m,scrollbarX:v,onScrollbarXChange:g,scrollbarXEnabled:C,onScrollbarXEnabledChange:O,scrollbarY:h,onScrollbarYChange:b,scrollbarYEnabled:N,onScrollbarYEnabledChange:L,onCornerWidthChange:y,onCornerHeightChange:E,children:i.jsx(Z.div,{dir:D,...a,ref:M,style:{position:"relative","--radix-scroll-area-corner-width":w+"px","--radix-scroll-area-corner-height":x+"px",...e.style}})})});dc.displayName=Ao;var uc="ScrollAreaViewport",fc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,nonce:o,...s}=e,a=ke(uc,n),c=l.useRef(null),d=re(t,c,a.onViewportChange);return i.jsxs(i.Fragment,{children:[i.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),i.jsx(Z.div,{"data-radix-scroll-area-viewport":"",...s,ref:d,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...e.style},children:i.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});fc.displayName=uc;var Xe="ScrollAreaScrollbar",Po=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ke(Xe,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:a}=o,c=e.orientation==="horizontal";return l.useEffect(()=>(c?s(!0):a(!0),()=>{c?s(!1):a(!1)}),[c,s,a]),o.type==="hover"?i.jsx(Lm,{...r,ref:t,forceMount:n}):o.type==="scroll"?i.jsx(Fm,{...r,ref:t,forceMount:n}):o.type==="auto"?i.jsx(pc,{...r,ref:t,forceMount:n}):o.type==="always"?i.jsx(_o,{...r,ref:t}):null});Po.displayName=Xe;var Lm=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ke(Xe,e.__scopeScrollArea),[s,a]=l.useState(!1);return l.useEffect(()=>{const c=o.scrollArea;let d=0;if(c){const f=()=>{window.clearTimeout(d),a(!0)},u=()=>{d=window.setTimeout(()=>a(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",f),c.addEventListener("pointerleave",u),()=>{window.clearTimeout(d),c.removeEventListener("pointerenter",f),c.removeEventListener("pointerleave",u)}}},[o.scrollArea,o.scrollHideDelay]),i.jsx(Ne,{present:n||s,children:i.jsx(pc,{"data-state":s?"visible":"hidden",...r,ref:t})})}),Fm=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=ke(Xe,e.__scopeScrollArea),s=e.orientation==="horizontal",a=Zn(()=>d("SCROLL_END"),100),[c,d]=Mm("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return l.useEffect(()=>{if(c==="idle"){const f=window.setTimeout(()=>d("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(f)}},[c,o.scrollHideDelay,d]),l.useEffect(()=>{const f=o.viewport,u=s?"scrollLeft":"scrollTop";if(f){let p=f[u];const m=()=>{const v=f[u];p!==v&&(d("SCROLL"),a()),p=v};return f.addEventListener("scroll",m),()=>f.removeEventListener("scroll",m)}},[o.viewport,s,d,a]),i.jsx(Ne,{present:n||c!=="hidden",children:i.jsx(_o,{"data-state":c==="hidden"?"hidden":"visible",...r,ref:t,onPointerEnter:U(e.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:U(e.onPointerLeave,()=>d("POINTER_LEAVE"))})})}),pc=l.forwardRef((e,t)=>{const n=ke(Xe,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,a]=l.useState(!1),c=e.orientation==="horizontal",d=Zn(()=>{if(n.viewport){const f=n.viewport.offsetWidth<n.viewport.scrollWidth,u=n.viewport.offsetHeight<n.viewport.scrollHeight;a(c?f:u)}},10);return It(n.viewport,d),It(n.content,d),i.jsx(Ne,{present:r||s,children:i.jsx(_o,{"data-state":s?"visible":"hidden",...o,ref:t})})}),_o=l.forwardRef((e,t)=>{const{orientation:n="vertical",...r}=e,o=ke(Xe,e.__scopeScrollArea),s=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),f=vc(c.viewport,c.content),u={...r,sizes:c,onSizesChange:d,hasThumb:f>0&&f<1,onThumbChange:m=>s.current=m,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:m=>a.current=m};function p(m,v){return Wm(m,a.current,c,v)}return n==="horizontal"?i.jsx($m,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const m=o.viewport.scrollLeft,v=wc(m,c,o.dir);s.current.style.transform=`translate3d(${v}px, 0, 0)`}},onWheelScroll:m=>{o.viewport&&(o.viewport.scrollLeft=m)},onDragScroll:m=>{o.viewport&&(o.viewport.scrollLeft=p(m,o.dir))}}):n==="vertical"?i.jsx(Bm,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const m=o.viewport.scrollTop,v=wc(m,c);s.current.style.transform=`translate3d(0, ${v}px, 0)`}},onWheelScroll:m=>{o.viewport&&(o.viewport.scrollTop=m)},onDragScroll:m=>{o.viewport&&(o.viewport.scrollTop=p(m))}}):null}),$m=l.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=ke(Xe,e.__scopeScrollArea),[a,c]=l.useState(),d=l.useRef(null),f=re(t,d,s.onScrollbarXChange);return l.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),i.jsx(gc,{"data-orientation":"horizontal",...o,ref:f,sizes:n,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Jn(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.x),onDragScroll:u=>e.onDragScroll(u.x),onWheelScroll:(u,p)=>{if(s.viewport){const m=s.viewport.scrollLeft+u.deltaX;e.onWheelScroll(m),xc(m,p)&&u.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:Yn(a.paddingLeft),paddingEnd:Yn(a.paddingRight)}})}})}),Bm=l.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=ke(Xe,e.__scopeScrollArea),[a,c]=l.useState(),d=l.useRef(null),f=re(t,d,s.onScrollbarYChange);return l.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),i.jsx(gc,{"data-orientation":"vertical",...o,ref:f,sizes:n,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Jn(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.y),onDragScroll:u=>e.onDragScroll(u.y),onWheelScroll:(u,p)=>{if(s.viewport){const m=s.viewport.scrollTop+u.deltaY;e.onWheelScroll(m),xc(m,p)&&u.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:Yn(a.paddingTop),paddingEnd:Yn(a.paddingBottom)}})}})}),[Um,hc]=lc(Xe),gc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:a,onThumbPointerDown:c,onThumbPositionChange:d,onDragScroll:f,onWheelScroll:u,onResize:p,...m}=e,v=ke(Xe,n),[g,h]=l.useState(null),b=re(t,M=>h(M)),w=l.useRef(null),y=l.useRef(""),x=v.viewport,E=r.content-r.viewport,C=we(u),O=we(d),N=Zn(p,10);function L(M){if(w.current){const D=M.clientX-w.current.left,j=M.clientY-w.current.top;f({x:D,y:j})}}return l.useEffect(()=>{const M=D=>{const j=D.target;(g==null?void 0:g.contains(j))&&C(D,E)};return document.addEventListener("wheel",M,{passive:!1}),()=>document.removeEventListener("wheel",M,{passive:!1})},[x,g,E,C]),l.useEffect(O,[r,O]),It(g,N),It(v.content,N),i.jsx(Um,{scope:n,scrollbar:g,hasThumb:o,onThumbChange:we(s),onThumbPointerUp:we(a),onThumbPositionChange:O,onThumbPointerDown:we(c),children:i.jsx(Z.div,{...m,ref:b,style:{position:"absolute",...m.style},onPointerDown:U(e.onPointerDown,M=>{M.button===0&&(M.target.setPointerCapture(M.pointerId),w.current=g.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",v.viewport&&(v.viewport.style.scrollBehavior="auto"),L(M))}),onPointerMove:U(e.onPointerMove,L),onPointerUp:U(e.onPointerUp,M=>{const D=M.target;D.hasPointerCapture(M.pointerId)&&D.releasePointerCapture(M.pointerId),document.body.style.webkitUserSelect=y.current,v.viewport&&(v.viewport.style.scrollBehavior=""),w.current=null})})})}),Xn="ScrollAreaThumb",mc=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=hc(Xn,e.__scopeScrollArea);return i.jsx(Ne,{present:n||o.hasThumb,children:i.jsx(zm,{ref:t,...r})})}),zm=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=ke(Xn,n),a=hc(Xn,n),{onThumbPositionChange:c}=a,d=re(t,p=>a.onThumbChange(p)),f=l.useRef(void 0),u=Zn(()=>{f.current&&(f.current(),f.current=void 0)},100);return l.useEffect(()=>{const p=s.viewport;if(p){const m=()=>{if(u(),!f.current){const v=Vm(p,c);f.current=v,c()}};return c(),p.addEventListener("scroll",m),()=>p.removeEventListener("scroll",m)}},[s.viewport,u,c]),i.jsx(Z.div,{"data-state":a.hasThumb?"visible":"hidden",...o,ref:d,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:U(e.onPointerDownCapture,p=>{const v=p.target.getBoundingClientRect(),g=p.clientX-v.left,h=p.clientY-v.top;a.onThumbPointerDown({x:g,y:h})}),onPointerUp:U(e.onPointerUp,a.onThumbPointerUp)})});mc.displayName=Xn;var Io="ScrollAreaCorner",bc=l.forwardRef((e,t)=>{const n=ke(Io,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?i.jsx(Hm,{...e,ref:t}):null});bc.displayName=Io;var Hm=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=ke(Io,n),[s,a]=l.useState(0),[c,d]=l.useState(0),f=!!(s&&c);return It(o.scrollbarX,()=>{var p;const u=((p=o.scrollbarX)==null?void 0:p.offsetHeight)||0;o.onCornerHeightChange(u),d(u)}),It(o.scrollbarY,()=>{var p;const u=((p=o.scrollbarY)==null?void 0:p.offsetWidth)||0;o.onCornerWidthChange(u),a(u)}),f?i.jsx(Z.div,{...r,ref:t,style:{width:s,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function Yn(e){return e?parseInt(e,10):0}function vc(e,t){const n=e/t;return isNaN(n)?0:n}function Jn(e){const t=vc(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Wm(e,t,n,r="ltr"){const o=Jn(n),s=o/2,a=t||s,c=o-a,d=n.scrollbar.paddingStart+a,f=n.scrollbar.size-n.scrollbar.paddingEnd-c,u=n.content-n.viewport,p=r==="ltr"?[0,u]:[u*-1,0];return yc([d,f],p)(e)}function wc(e,t,n="ltr"){const r=Jn(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,a=t.content-t.viewport,c=s-r,d=n==="ltr"?[0,a]:[a*-1,0],f=To(e,d);return yc([0,a],[0,c])(f)}function yc(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function xc(e,t){return e>0&&e<t}var Vm=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function o(){const s={left:e.scrollLeft,top:e.scrollTop},a=n.left!==s.left,c=n.top!==s.top;(a||c)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function Zn(e,t){const n=we(e),r=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(r.current),[]),l.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function It(e,t){const n=we(t);be(()=>{let r=0;if(e){const o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,n])}var Sc=dc,Rm=fc,jm=bc;const Cc=l.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(Sc,{ref:r,className:A("relative overflow-hidden",e),...n,children:[i.jsx(Rm,{className:"h-full w-full rounded-[inherit] overflow-auto",children:t}),i.jsx(Ec,{}),i.jsx(jm,{})]}));Cc.displayName=Sc.displayName;const Ec=l.forwardRef(({className:e,orientation:t="vertical",...n},r)=>i.jsx(Po,{ref:r,orientation:t,className:A("flex touch-none select-none transition-colors",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",e),...n,children:i.jsx(mc,{className:"relative flex-1 rounded-full bg-border"})}));Ec.displayName=Po.displayName;function Qn({className:e="",showCreateButton:t=!0,showDeleteButton:n=!0,showEditTitle:r=!0,maxHeight:o="400px",customStyles:s={},currentThreadId:a=null,navigateToThread:c,onThreadSelect:d,onThreadCreate:f,onThreadDelete:u}){const{loadThread:p,threads:m,refreshThreads:v,currentThreadId:g,createThread:h,deleteThread:b,renameThread:w}=Lr(),[y,x]=P.useState(m??[]),[E,C]=P.useState(!1),[O,N]=P.useState(null),[L,M]=P.useState(null),[D,j]=P.useState(""),[G,V]=P.useState(!1);P.useEffect(()=>{x(m??[])},[m]);const z=async B=>{try{await p(B),c==null||c(B),d==null||d(B)}catch(H){console.error("Failed to select thread:",H)}},X=async()=>{try{V(!0);const B=await h();f==null||f(B),c==null||c(B)}catch(B){console.error("Failed to create thread:",B)}finally{V(!1)}},F=async(B,H)=>{if(H.stopPropagation(),!!confirm("Delete this thread?"))try{await b(B),u==null||u(B)}catch(de){console.error("Failed to delete thread:",de)}},q=(B,H)=>{H.stopPropagation(),M(B.threadId),j(B.title||`Thread ${B.threadId.slice(0,8)}`)},T=async B=>{if(D.trim())try{await w(B,D.trim()),M(null),j("")}catch(H){console.error("Failed to update title:",H)}},_=()=>{M(null),j("")},I=(B,H)=>{B.key==="Enter"?T(H):B.key==="Escape"&&_()},k=B=>{if(!B)return"";try{const H=new Date(B),ie=new Date().getTime()-H.getTime(),R=Math.floor(ie/(1e3*60*60*24));return R===0?H.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):R===1?"Yesterday":R<7?`${R} days ago`:H.toLocaleDateString()}catch{return""}},Y=B=>B.title||`Thread ${B.threadId.slice(0,8)}`;return i.jsxs("div",{className:`flex flex-col h-full ${e} ${s.container||""}`,children:[t&&i.jsx("div",{className:s.header||"flex-shrink-0 p-4 border-b bg-slate-800 border-slate-700 text-slate-100",children:i.jsxs(fe,{onClick:X,disabled:G||E,className:s.createButton||"w-full !bg-slate-700 hover:!bg-slate-600 !text-slate-100 !border-slate-600",size:"sm",children:[i.jsx(K.Plus,{size:16,className:"mr-2"}),G?"Creating...":"New Conversation"]})}),i.jsx(Cc,{className:`flex-1 ${s.threadList||""}`,style:{maxHeight:o},children:i.jsx("div",{className:"p-2 space-y-1 pb-4",children:E?i.jsx("div",{className:"text-center py-8 text-slate-400",children:"Loading…"}):y.length===0?i.jsxs("div",{className:"text-center py-8 text-slate-400",children:[i.jsx(K.MessageSquare,{className:"w-8 h-8 mx-auto mb-2 opacity-40 text-slate-500"}),i.jsx("p",{className:"text-sm text-slate-500",children:"No conversations yet"})]}):y.slice().sort((B,H)=>new Date(H.updatedAt||H.createdAt||"").getTime()-new Date(B.updatedAt||B.createdAt||"").getTime()).map(B=>i.jsxs("div",{onClick:()=>z(B.threadId),className:`group relative p-3 rounded-lg cursor-pointer transition-colors border ${(a??g)===B.threadId?`${s.activeThread||"bg-slate-600 border-slate-500"} `:`${s.threadItem||"bg-slate-700 border-slate-600 hover:bg-slate-600 text-gray-900 dark:text-slate-100"}`} ${s.threadItem||""} text-gray-900 dark:text-slate-100`,children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("div",{className:"flex-1 min-w-0",children:L===B.threadId?i.jsxs("div",{className:"flex items-center gap-2",onClick:H=>H.stopPropagation(),children:[i.jsx(nn,{value:D,onChange:H=>j(H.target.value),onKeyDown:H=>I(H,B.threadId),className:"h-6 text-sm",autoFocus:!0}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:()=>T(B.threadId),className:"h-6 w-6 p-0",children:i.jsx(K.Check,{size:12})}),i.jsx(fe,{variant:"ghost",size:"sm",onClick:_,className:"h-6 w-6 p-0",children:i.jsx(K.X,{size:12})})]}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"font-medium text-sm truncate text-gray-900 dark:text-slate-100",children:Y(B)}),i.jsxs("div",{className:"flex items-center gap-2 text-xs text-gray-500 dark:text-slate-400 mt-1",children:[i.jsx(K.Calendar,{size:10}),i.jsx("span",{children:k(B.updatedAt||B.createdAt)})]})]})}),i.jsxs("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity ml-2",children:[r&&L!==B.threadId&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:H=>q(B,H),className:"h-6 w-6 p-0",title:"Edit title",children:i.jsx(K.Edit3,{size:12})}),n&&i.jsx(fe,{variant:"ghost",size:"sm",onClick:H=>F(B.threadId,H),className:"h-6 w-6 p-0 text-red-400 hover:text-red-300 hover:bg-red-900/20",title:"Delete thread",children:i.jsx(K.Trash2,{size:12})})]})]}),a===B.threadId&&i.jsx("div",{className:"absolute left-0 top-1/2 -translate-y-1/2 w-1 h-8 bg-blue-400 rounded-r"})]},B.threadId))})})]})}const Nc=P.createContext(null);function Km({children:e,basePath:t="/chat"}){const n=P.useMemo(()=>t?t==="/"?"":t.endsWith("/")?t.slice(0,-1):t:"/chat",[t]),r={basePath:n,buildThreadPath:o=>`${n}/${o}`,buildBasePath:()=>n};return i.jsx(Nc.Provider,{value:r,children:e})}function Gm(){const e=P.useContext(Nc);return e||{basePath:"/chat",buildThreadPath:t=>`/chat/${t}`,buildBasePath:()=>"/chat"}}const Tc={BASE_URL:"/",DEV:!1,MODE:"library",PROD:!0,SSR:!1};function rn(e){var o;const t=typeof{url:typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:br&&br.tagName.toUpperCase()==="SCRIPT"&&br.src||new URL("index.umd.js",document.baseURI).href}<"u"&&Tc?Tc[e]:void 0,n=(o=globalThis==null?void 0:globalThis.process)==null?void 0:o.env,r=n?n[e]:void 0;return(t??r)||void 0}function qm(){return rn("VITE_API_BASE_URL")||rn("NEXT_PUBLIC_API_BASE_URL")||void 0}function Xm(){return rn("VITE_API_KEY")||rn("NEXT_PUBLIC_API_KEY")||rn("VITE_AUTH_TOKEN")||void 0}function Ac(){const e=qm(),t=Xm(),n={};return e&&(n.baseUrl=e),t&&(n.apiKey=t),n}function Pc(){const e=Ac(),t=Ye.getAuthToken();return{apiBaseUrl:e.baseUrl||Ye.baseUrl||"http://localhost:8000",apiKey:t||e.apiKey||"",model:"gpt-4",temperature:.7,maxTokens:4096,layoutSize:"desktop",showThreads:!0,autoScrollMessages:!0,truncateToolMessages:!0,toolMessagePreviewLength:200,darkMode:!1,enableSound:!1,messageHistory:100}}const _c="chat-settings";function Ym(){try{const e=localStorage.getItem(_c);return e?JSON.parse(e):{}}catch(e){return console.error("Failed to parse stored settings:",e),{}}}function Jm(e){try{localStorage.setItem(_c,JSON.stringify(e)),e.apiKey&&Ye.setAuthToken(e.apiKey)}catch(t){console.error("Failed to save settings:",t)}}function Zm(){const e=Pc(),t=Ym(),n=Ye.getAuthToken();return{...e,...t,apiKey:n||t.apiKey||e.apiKey,apiBaseUrl:Ye.baseUrl||t.apiBaseUrl||e.apiBaseUrl}}function Qm(e){e.apiKey&&Ye.setAuthToken(e.apiKey),Jm(e)}const Oo=768;function eb(){const[e,t]=l.useState(void 0);return l.useEffect(()=>{const n=window.matchMedia(`(max-width: ${Oo-1}px)`),r=()=>{t(window.innerWidth<Oo)};return n.addEventListener("change",r),t(window.innerWidth<Oo),()=>n.removeEventListener("change",r)},[]),!!e}var tb="Separator",Ic="horizontal",nb=["horizontal","vertical"],Oc=l.forwardRef((e,t)=>{const{decorative:n,orientation:r=Ic,...o}=e,s=rb(r)?r:Ic,c=n?{role:"none"}:{"aria-orientation":s==="vertical"?s:void 0,role:"separator"};return i.jsx(Z.div,{"data-orientation":s,...c,...o,ref:t})});Oc.displayName=tb;function rb(e){return nb.includes(e)}var kc=Oc;const ko=l.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},o)=>i.jsx(kc,{ref:o,decorative:n,orientation:t,className:A("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...r}));ko.displayName=kc.displayName;var er="Dialog",[Mc,Iw]=Le(er),[ob,Ue]=Mc(er),Dc=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:s,modal:a=!0}=e,c=l.useRef(null),d=l.useRef(null),[f,u]=Qe({prop:r,defaultProp:o??!1,onChange:s,caller:er});return i.jsx(ob,{scope:t,triggerRef:c,contentRef:d,contentId:Fe(),titleId:Fe(),descriptionId:Fe(),open:f,onOpenChange:u,onOpenToggle:l.useCallback(()=>u(p=>!p),[u]),modal:a,children:n})};Dc.displayName=er;var Lc="DialogTrigger",Fc=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(Lc,n),s=re(t,o.triggerRef);return i.jsx(Z.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Lo(o.open),...r,ref:s,onClick:U(e.onClick,o.onOpenToggle)})});Fc.displayName=Lc;var Mo="DialogPortal",[sb,$c]=Mc(Mo,{forceMount:void 0}),Bc=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,s=Ue(Mo,t);return i.jsx(sb,{scope:t,forceMount:n,children:l.Children.map(r,a=>i.jsx(Ne,{present:n||s.open,children:i.jsx(Ln,{asChild:!0,container:o,children:a})}))})};Bc.displayName=Mo;var tr="DialogOverlay",Uc=l.forwardRef((e,t)=>{const n=$c(tr,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=Ue(tr,e.__scopeDialog);return s.modal?i.jsx(Ne,{present:r||s.open,children:i.jsx(ib,{...o,ref:t})}):null});Uc.displayName=tr;var ab=Pe.createSlot("DialogOverlay.RemoveScroll"),ib=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(tr,n);return i.jsx(Vn,{as:ab,allowPinchZoom:!0,shards:[o.contentRef],children:i.jsx(Z.div,{"data-state":Lo(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),pt="DialogContent",zc=l.forwardRef((e,t)=>{const n=$c(pt,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=Ue(pt,e.__scopeDialog);return i.jsx(Ne,{present:r||s.open,children:s.modal?i.jsx(cb,{...o,ref:t}):i.jsx(lb,{...o,ref:t})})});zc.displayName=pt;var cb=l.forwardRef((e,t)=>{const n=Ue(pt,e.__scopeDialog),r=l.useRef(null),o=re(t,n.contentRef,r);return l.useEffect(()=>{const s=r.current;if(s)return po(s)},[]),i.jsx(Hc,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:U(e.onCloseAutoFocus,s=>{var a;s.preventDefault(),(a=n.triggerRef.current)==null||a.focus()}),onPointerDownOutside:U(e.onPointerDownOutside,s=>{const a=s.detail.originalEvent,c=a.button===0&&a.ctrlKey===!0;(a.button===2||c)&&s.preventDefault()}),onFocusOutside:U(e.onFocusOutside,s=>s.preventDefault())})}),lb=l.forwardRef((e,t)=>{const n=Ue(pt,e.__scopeDialog),r=l.useRef(!1),o=l.useRef(!1);return i.jsx(Hc,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var a,c;(a=e.onCloseAutoFocus)==null||a.call(e,s),s.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),s.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:s=>{var d,f;(d=e.onInteractOutside)==null||d.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const a=s.target;((f=n.triggerRef.current)==null?void 0:f.contains(a))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&o.current&&s.preventDefault()}})}),Hc=l.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,...a}=e,c=Ue(pt,n),d=l.useRef(null),f=re(t,d);return Vr(),i.jsxs(i.Fragment,{children:[i.jsx(En,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:i.jsx(jt,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Lo(c.open),...a,ref:f,onDismiss:()=>c.onOpenChange(!1)})}),i.jsxs(i.Fragment,{children:[i.jsx(db,{titleId:c.titleId}),i.jsx(fb,{contentRef:d,descriptionId:c.descriptionId})]})]})}),Do="DialogTitle",Wc=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(Do,n);return i.jsx(Z.h2,{id:o.titleId,...r,ref:t})});Wc.displayName=Do;var Vc="DialogDescription",Rc=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(Vc,n);return i.jsx(Z.p,{id:o.descriptionId,...r,ref:t})});Rc.displayName=Vc;var jc="DialogClose",Kc=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ue(jc,n);return i.jsx(Z.button,{type:"button",...r,ref:t,onClick:U(e.onClick,()=>o.onOpenChange(!1))})});Kc.displayName=jc;function Lo(e){return e?"open":"closed"}var Gc="DialogTitleWarning",[Ow,qc]=lf(Gc,{contentName:pt,titleName:Do,docsSlug:"dialog"}),db=({titleId:e})=>{const t=qc(Gc),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
59
59
 
60
60
  If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
61
61
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "teodor-new-chat-ui",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "React chat UI components with streaming support, tool calls, and modern design",
5
5
  "main": "dist/index.umd.js",
6
6
  "module": "dist/index.esm.js",