1"use strict";(self.rspackChunknewapi_web=self.rspackChunknewapi_web||[]).push([[3967],{68748(e,t,r){r.d(t,{BE:()=>u,I6:()=>g,Uz:()=>o,_s:()=>l,gk:()=>x,tb:()=>m,zj:()=>d});var a=r(72361);r(68413);var s=r(15875),n=r(81204);function l(e){let{...t}=e;return(0,a.jsx)(s._s.Root,{"data-slot":"drawer",...t})}function o(e){let{...t}=e;return(0,a.jsx)(s._s.Trigger,{"data-slot":"drawer-trigger",...t})}function i(e){let{...t}=e;return(0,a.jsx)(s._s.Portal,{"data-slot":"drawer-portal",...t})}function c(e){let{className:t,...r}=e;return(0,a.jsx)(s._s.Overlay,{"data-slot":"drawer-overlay",className:(0,n.cn)("data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 z-50 bg-black/10 supports-backdrop-filter:backdrop-blur-xs",t),...r})}function d(e){let{className:t,children:r,...l}=e;return(0,a.jsxs)(i,{"data-slot":"drawer-portal",children:[(0,a.jsx)(c,{}),(0,a.jsxs)(s._s.Content,{"data-slot":"drawer-content",className:(0,n.cn)("group/drawer-content bg-background text-foreground fixed z-50 flex h-auto flex-col overflow-hidden text-sm shadow-2xl data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-2xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm",t),...l,children:[(0,a.jsx)("div",{className:"bg-muted mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"}),r]})]})}function u(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"drawer-header",className:(0,n.cn)("flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left",t),...r})}function m(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"drawer-footer",className:(0,n.cn)("mt-auto flex flex-col gap-2 p-4",t),...r})}function x(e){let{className:t,...r}=e;return(0,a.jsx)(s._s.Title,{"data-slot":"drawer-title",className:(0,n.cn)("text-foreground text-base font-medium",t),...r})}function g(e){let{className:t,...r}=e;return(0,a.jsx)(s._s.Description,{"data-slot":"drawer-description",className:(0,n.cn)("text-muted-foreground text-sm",t),...r})}},56579(e,t,r){r.d(t,{F:()=>n,s:()=>s});let a="xycai_pending_playground_prompt";function s(e){let t=e.trim();if(!t||"u"<typeof window)return;let r={text:t,createdAt:Date.now()};try{window.sessionStorage.setItem(a,JSON.stringify(r))}catch{}}function n(){if("u"<typeof window)return null;try{let e=window.sessionStorage.getItem(a);if(window.sessionStorage.removeItem(a),!e)return null;let t=JSON.parse(e);if("string"!=typeof t.text||"number"!=typeof t.createdAt||Date.now()-t.createdAt>18e5)return null;return t.text.trim()||null}catch{return null}}},68754(e,t,r){r.r(t),r.d(t,{component:()=>ts});var a=r(72361),s=r(67267),n=r(68413),l=r(96962),o=r(53540),i=r(2718),c=r(82799),d=r(6702),u=r(20598),m=r(61631),x=r(81204),g=r(23448),f=r(46775),h=r(24328),p=r(68748),v=r(48196);let b=n.forwardRef((e,t)=>{let{currentLabel:r,triggerClassName:s,isDisabled:n,...l}=e;return(0,a.jsxs)(f.$,{ref:t,variant:"outline",role:"combobox",size:"sm",disabled:n,className:(0,x.cn)("flex h-8 items-center gap-2 border px-3 font-medium","justify-center p-0 sm:w-auto
1sm:justify-start sm:px-3","w-8","bg-background text-foreground","hover:bg-accent transition-colors","focus:!ring-0 focus:!outline-none","shadow-none",s),...l,children:[(0,a.jsx)(m.GQJ,{className:"text-muted-foreground block size-4 sm:hidden"}),(0,a.jsx)("span",{className:"text-muted-foreground sm:text-foreground hidden truncate text-xs sm:block",children:r}),(0,a.jsx)(m.Mls,{className:"text-muted-foreground hidden h-4 w-4 opacity-50 sm:block"})]})});b.displayName="ModelTriggerButton";let j=n.forwardRef((e,t)=>{let{currentLabel:r,triggerClassName:s,isDisabled:n,...l}=e;return(0,a.jsxs)(f.$,{ref:t,variant:"outline",role:"combobox",size:"sm",disabled:n,className:(0,x.cn)("flex h-8 items-center gap-2 border px-3 font-medium","justify-center p-0 sm:w-auto sm:justify-start sm:px-3","w-8","bg-background text-foreground","hover:bg-accent transition-colors","focus:!ring-0 focus:!outline-none","shadow-none",s),...l,children:[(0,a.jsx)(m.mLz,{className:"text-muted-foreground block size-4 sm:hidden"}),(0,a.jsx)("span",{className:"text-muted-foreground sm:text-foreground hidden truncate text-xs sm:block",children:r}),(0,a.jsx)(m.Mls,{className:"text-muted-foreground hidden h-4 w-4 opacity-50 sm:block"})]})});j.displayName="GroupTriggerButton";let y=n.memo(e=>{let{selectedModel:t,models:r,onModelChange:s,className:l,disabled:o=!1}=e,{t:i}
1=(0,d.Bd)(),[c,u]=(0,n.useState)(!1),[f,j]=(0,n.useState)(""),y=(0,g.a)(),N=(0,n.useMemo)(()=>r.find(e=>e.value===t),[r,t]),w=(0,n.useMemo)(()=>r.reduce((e,t)=>{let r=t.category||i("Other");return e[r]||(e[r]=[]),e[r].push(t),e},{}),[r,i]),k=(0,n.useMemo)(()=>{if(!f.trim())return w;let e=f.toLowerCase(),t={};return Object.entries(w).forEach(r=>{let[a,s]=r,n=s.filter(t=>t.label.toLowerCase().includes(e)||t.value.toLowerCase().includes(e)||t.description?.toLowerCase().includes(e));n.length>0&&(t[a]=n)}),t},[w,f]),C=(0,n.useCallback)(e=>{s(e),u(!1),j("")},[s]),S=()=>(0,a.jsxs)(h.uB,{className:(0,x.cn)(y?"h-full flex-1 rounded-lg border-0 bg-transparent":"rounded-lg"),filter:()=>1,shouldFilter:!1,children:[!y&&(0,a.jsx)(h.G7,{placeholder:i("Search models..."),className:"h-9",value:f,onValueChange:j}),(0,a.jsx)(h.xL,{children:i("No model found.")}),(0,a.jsx)(h.oI,{className:y?"!max-h-full flex-1 p-2":"max-h-[300px]",children:0===Object.keys(k).length?(0,a.jsx)("div",{className:"text-muted-foreground px-3 py-6 text-xs",children:i("No model found.")}):Object.entries(k).map((e,r)=>{let[s,n]=e;return(0,a.jsxs)(h.L$,{children:[r>0&&(0,a.jsx)("div",{className:"border-border my-1 border-t"}),(0,a.jsx)("div",{className:(0,x.cn)("text-muted-foreground px-2 py-1 font-medium",y?"text-xs":"text-[10px]"),children:i("{{category}} Models",{category:s})}),n.map(e=>(0,a.jsx)(h.h_,{value:e.value,onSelect:C,className:(0,x.cn)("mb-0.5 flex items-center justify-between rounded-lg px-2 py-1.5 text-xs","transition-all duration-200","hover:bg-accent","data-[selected=true]:bg-accent"),children:(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-1",children:[(0,a.jsx)("div",{className:(0,x.cn)("truncate font-medium",y?"text-sm":"text-[11px]"),children:(0,a.jsx)("span",{className:"inline",children:e.label})}),(0,a.jsx)(m.Jlk,{className:(0,x.cn)("h-4 w-4 flex-shrink-0",t===e.value?"opacity-100":"opacity-0")})]})},e.value))]},s)})})]});return(0,a.jsx)(a.Fragment,{children:y?(0,a.jsxs)(p._s,{open:c,onOpenChange:u,children:[(0,a.jsx)(p.Uz,{asChild:!0,children:(0,a.jsx)(b,{currentLabel:N?.label||i("Model"),triggerClassName:l,isDisabled:o,"aria-expanded":c})}),(0,a.jsxs)(p.zj,{className:"flex max-h-[80vh] min-h-[60vh] flex-col",children:[(0,a.jsx)(p.BE,{className:"flex-shrink-0 pb-4",children:(0,a.jsx)(p.gk,{className:"flex items-center gap-2 text-left text-lg font-medium",children:i("Select Model")})}),(0,a.jsx)("div",{className:"flex min-h-0 flex-1 flex-col",children:S()})]})]}):(0,a.jsxs)(v.AM,{open:c,onOpenChange:u,children:[(0,a.jsx)(v.Wv,{render:(0,a.jsx)(b,{currentLabel:N?.label||i("Model"),triggerClassName:l,isDisabled:o,"aria-expanded":c})}),(0,a.jsx)(v.hl,{className:"bg-popover z-40 w-[90vw] max-w-[20em] rounded-lg border p-0 !shadow-none sm:w-[20em]",align:"start",side:"bottom",sideOffset:4,collisionPadding:8,children:S()})]})})});y.displayName="ModelSelector",n.memo(e=>{let{selectedGroup:t,groups:r,onGroupChange:s,className:l,disabled:o=!1}=e,{t:i}
1=(0,d.Bd)(),[c,u]=(0,n.useState)(!1),b=(0,g.a)(),y=(0,n.useMemo)(()=>r.find(e=>e.value===t),[r,t]),N=(0,n.useCallback)(e=>{s(e),u(!1)},[s]);return(0,a.jsx)(a.Fragment,{children:b?(0,a.jsxs)(p._s,{open:c,onOpenChange:u,children:[(0,a.jsx)(p.Uz,{asChild:!0,children:(0,a.jsx)(j,{currentLabel:y?.label||i("Group"),triggerClassName:l,isDisabled:o,"aria-expanded":c})}),(0,a.jsxs)(p.zj,{className:"max-h-[80vh]",children:[(0,a.jsx)(p.BE,{className:"pb-4 text-left",children:(0,a.jsx)(p.gk,{children:i("Choose Group")})}),(0,a.jsx)("div",{className:"max-h-[calc(80vh-100px)] overflow-y-auto px-4 pb-6",children:(0,a.jsx)("div",{className:"space-y-2",children:r.map(e=>(0,a.jsxs)(f.$,{variant:"outline",onClick:()=>N(e.value),className:(0,x.cn)("flex h-auto w-full items-center justify-between rounded-lg p-4 text-left whitespace-normal","border-border hover:bg-accent",t===e.value?"bg-accent border-primary/20":"bg-background"),children:[(0,a.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,a.jsx)("span",{className:"text-foreground text-sm font-medium",children:e.label}),(e.desc||e.description)&&(0,a.jsxs)("div",{className:"text-muted-foreground mt-0.5 text-xs",children:[e.desc||e.description,e.ratio&&(0,a.jsxs)(a.Fragment,{children:[" · ",i("Ratio: {{value}}",{value:e.ratio})]})]})]})}),(0,a.jsx)(m.Jlk,{className:(0,x.cn)("ml-3 h-5 w-5 shrink-0",t===e.value?"opacity-100":"opacity-0")})]},e.value))})})]})]}):(0,a.jsxs)(v.AM,{open:c,onOpenChange:u,children:[(0,a.jsx)(v.Wv,{render:(0,a.jsx)(j,{currentLabel:y?.label||i("Group"),triggerClassName:l,isDisabled:o,"aria-expanded":c})}),(0,a.jsx)(v.hl,{className:"bg-popover z-50 w-[90vw] max-w-[14em] rounded-lg border p-0 !shadow-none sm:w-[14em]",align:"start",side:"bottom",sideOffset:4,collisionPadding:8,children:(0,a.jsxs)(h.uB,{className:(0,x.cn)(b?"h-full flex-1 rounded-lg border-0 bg-transparent":"rounded-lg"),filter:(e,t)=>{let a=r.find(t=>t.value===e);if(!a||!t)return 1;let s=t.toLowerCase();return+!![a.label,a.description||"",a.value].join(" ").toLowerCase().includes(s)},children:[(0,a.jsx)(h.G7,{placeholder:i("Search groups..."),className:"h-9"}),(0,a.jsx)(h.xL,{children:i("No group found.")}),(0,a.jsx)(h.oI,{className:b?"!max-h-full flex-1 p-2":"max-h-[240px]",children:(0,a.jsxs)(h.L$,{children:[(0,a.jsx)("div",{className:"text-muted-foreground px-2 py-1 text-[10px] font-medium",children:i("Model Group")}),r.map(e=>(0,a.jsxs)(h.h_,{value:e.value,onSelect:N,className:(0,x.cn)("mb-0.5 flex items-center justify-between rounded-lg px-2 py-2 text-xs","transition-all duration-200","hover:bg-accent","data-[selected=true]:bg-accent"),children:[(0,a.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 pr-4",children:(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,a.jsx)("span",{className:"text-foreground truncate text-[11px] font-medium",children:e.label}),(e.desc||e.description)&&(0,a.jsxs)("div",{className:"text-muted-foreground truncate text-[9px] leading-tight",children:[e.desc||e.description,e.ratio&&(0,a.jsxs)(a.Fragment,{children:[" · ",i("Ratio: {{value}}",{value:e.ratio})]})]})]})}),(0,a.jsx)(m.Jlk,{className:(0,x.cn)("ml-auto h-4 w-4",t===e.value?"opacity-100":"opacity-0")})]},e.value))]})})]})})]})})}).displayName="GroupSelector";var N=r(64989),w=r(89663),k=r(61187),C=r(28769);let S=(0,n.createContext)(null),E=()=>{let e=(0,n.useContext)(S);if(!e)throw Error("Branch components must be used within Branch");return e},R=e=>{let{defaultBranch:t=0,onBranchChange:r,className:s,...l}=e,[o,i]=(0,n.useState)(t),[c,d]=(0,n.useState)([]),u=e=>{i(e),r?.(e)},m={currentBranch:o,totalBranches:c.length,goToPrevious:()=>{u(o>0?o-1:c.length-1)},goToNext:()=>{u(o<c.length-1?o+1:0)},branches:c,setBranches:d};return(0,a.jsx)(S.Provider,{value:m,children:(0,a.jsx)("div",{className:(0,x.cn)("grid w-full gap-2 [&>div]:pb-0",s),...l})})},T=e=>{let{children:t,...r}=e,{currentBranch:s,setBranches:l,branches:o}=E(),i=(0,n.useMemo)(()=>Array.isArray(t)?t:[t],[t]);return(0,n.useEffect)(()=>{o.length!==i.length&&l(i)},[i,o,l]),i.map((e,t)=>(0,a.jsx)("div",{className:(0,x.cn)("grid gap-2 overflow-hidden [&>div]:pb-0",t===s?"block":"hidden"),...r,children:e},e.key))},_=e=>{let{className:t,from:r,...s}=e,{totalBranches:n}=E();return n<=1?null:(0,a.jsx)("div",{className:(0,x.cn)("flex items-center gap-2 self
1-end px-10","assistant"===r?"justify-start":"justify-end",t),...s})},z=e=>{let{className:t,children:r,...s}=e,{t:n}=(0,d.Bd)(),{goToPrevious:l,totalBranches:o}=E();return(0,a.jsx)(f.$,{"aria-label":n("Previous branch"),className:(0,x.cn)("text-muted-foreground size-7 shrink-0 transition-colors","hover:bg-accent hover:text-foreground","disabled:pointer-events-none disabled:opacity-50",t),disabled:o<=1,onClick:l,size:"icon",type:"button",variant:"ghost",...s,children:r??(0,a.jsx)(m.YJP,{size:14})})},O=e=>{let{className:t,children:r,...s}=e,{t:n}=(0,d.Bd)(),{goToNext:l,totalBranches:o}=E();return(0,a.jsx)(f.$,{"aria-label":n("Next branch"),className:(0,x.cn)("text-muted-foreground size-7 shrink-0 transition-colors","hover:bg-accent hover:text-foreground","disabled:pointer-events-none disabled:opacity-50",t),disabled:o<=1,onClick:l,size:"icon",type:"button",variant:"ghost",...s,children:r??(0,a.jsx)(m.vKP,{size:14})})},A=e=>{let{className:t,...r}=e,{t:s}=(0,d.Bd)(),{currentBranch:n,totalBranches:l}=E();return(0,a.jsxs)("span",{className:(0,x.cn)("text-muted-foreground text-xs font-medium tabular-nums",t),...r,children:[n+1," ",s("of")," ",l]})};var L=r(22669);let M=e=>{let{className:t,...r}=e;return(0,a.jsx)(L.z,{className:(0,x.cn)("relative flex-1 overflow-y-auto",t),initial:"smooth",resize:"smooth",role:"log",...r})},I=e=>{let{className:t,...r}=e;return(0,a.jsx)(L.z.Content,{className:(0,x.cn)("p-4",t),...r})},P=e=>{let{className:t,...r}=e,{isAtBottom:s,scrollToBottom:l}=(0,L.B)(),o=(0,n.useCallback)(()=>{l()},[l]);return!s&&(0,a.jsx)(f.$,{className:(0,x.cn)("absolute bottom-4 left-[50%] translate-x-[-50%]",t),onClick:o,size:"icon",type:"button",variant:"outline","aria-label":"Scroll to bottom",...r,children:(0,a.jsx)(m.ZLN,{className:"size-4","aria-hidden":"true"})})},U=e=>{let{size:t=16}=e,{t:r}=(0,d.Bd)();return(0,a.jsxs)("svg",{height:t,strokeLinejoin:"round",style:{color:"currentcolor"},viewBox:"0 0 16 16",width:t,children:[(0,a.jsx)("title",{children:r("Loader")}),(0,a.jsxs)("g",{clipPath:"url(#clip0_2393_1490)",children:[(0,a.jsx)("path",{d:"M8 0V4",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M8 16V12",opacity:"0.5",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M3.29773 1.52783L5.64887 4.7639",opacity:"0.9",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M12.7023 1.52783L10.3511 4.7639",opacity:"0.1",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M12.7023 14.472L10.3511 11.236",opacity:"0.4",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M3.29773 14.472L5.64887 11.236",opacity:"0.6",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M15.6085 5.52783L11.8043 6.7639",opacity:"0.2",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M0.391602 10.472L4.19583 9.23598",opacity:"0.7",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M15.6085 10.4722L11.8043 9.2361",opacity:"0.3",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M0.391602 5.52783L4.19583 6.7639",opacity:"0.8",stroke:"currentColor",strokeWidth:"1.5"})]}),(0,a.jsx)("defs",{children:(0,a.jsx)("clipPath",{id:"clip0_2393_1490",children:(0,a.jsx)("rect",{fill:"white",height:"16",width:"16"})})})]})},F=e=>{let{className:t,size:r=16,...s}=e;return(0,a.jsx)("div",{className:(0,x.cn)("inline-flex animate-spin items-center justify-center",t),...s,children:(0,a.jsx)(U,{size:r})})};var D=r(65291);r(21144);let B=e=>{let{className:t,from:r,...s}=e;return(0,a.jsx)("div",{className:(0,x.cn)("group flex w-full items-end justify-end gap-2","user"===r?"is-user":"is-assistant flex-row-reverse justify-end",t),...s})},$=(0,D.F)("is-user:dark flex flex-col gap-2 overflow-hidden rounded-lg text-sm",{variants:{variant:{contained:["max-w-[100%] px-3 py-1","group-[.is-user]:bg-primary group-[.is-user]:text-primary-foreground","group-[.is-assistant]:bg-secondary group-[.is-assistant]:text-foreground"],flat:["group-[.is-user]:max-w-[80%] group-[.is-user]:bg-secondary group-[.is-user]:px-3 group-[.is-user]:py-1 group-[.is-user]:text-foreground","group-[.is-assistant]:text-foreground"]}},defaultVariants:{variant:"contained"}}),G=e=>{let{children:t,className:r,variant:s,...n}=e;return(0,a.jsx)("div",{className:(0,x.cn)($({variant:s,className:r})),...n,children:t})};function W(e){let{prop:t,defaultProp:r,onChange:a}=e,[s,l]=n.useState(r),o=void 0!==t,i=o?t:s,c=n.useRef(a);return n.useEffect(()=>{c.current=a}),[i,n.useCallback(e=>{if(o){let r="function"==typeof e?e(t):e;r!==t&&c.current?.(r)}else l(e)},[o,t])]}var J=r(38579),Q=r(95164);let V=(0,n.memo)(e=>{let{className:t,children:r,...s}=e,n="string"!=typeof r?r:r.replace(/<\/?(conversation|conversationcontent|reasoning|reasoningcontent|reasoningtrigger|sources|sourcescontent|sourcestrigger|branch|branchmessages|branchnext|branchpage|branchprevious|branchselector|message|messagecontent)\b[^>]*>/gi,"").replace(/<\/?think\b[^>]*>/gi,"");return(0,a.jsx)(Q.jH,{className:(0,x.cn)("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",t),...s,children:n})},(e,t)=>e.children===t.children);V.displayName="Response";let q=r(62673).P.p,K=(0,n.memo)(e=>{let{children:t,className:r,duration:s=2,spread:l=2}=e,o=(0,n.useMemo)(()=>(t?.length??0)*l,[t,l]);return(0,a.jsx)(q,{animate:{backgroundPosition:"0% center"},className:(0,x.cn)("relative inline-block bg-[length:250%_100%,auto] bg-clip-text text-transparent","[background-repeat:no-repeat,padding-box] [--bg:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--color-background),#0000_calc(50%+var(--spread)))]",r),initial:{backgroundPosition:"100% center"},style:{"--spread":`${o}px`,backgroundImage:"var(--bg), linear-gradient(var(--color-muted-foreground), var(--color-muted-foreground))"},transition:{repeat:1/0,duration:s,ease:"linear"},children:t})}),Y=(0,n.createContext)(null),Z=(0,n.memo)(e=>{let{className:t,isStreaming:r=!1,open:s,defaultOpen:l=!0,onOpenChange:o,duration:i,children:c,...d}=e,[u,m]=W({prop:s,defaultProp:l,onChange:o}),[g,f]=W({prop:i,defaultProp:0}
1),[h,p]=(0,n.useState)(!1),[v,b]=(0,n.useState)(null);return(0,n.useEffect)(()=>{r?null===v&&b(Date.now()):null!==v&&(f(Math.ceil((Date.now()-v)/1e3)),b(null))},[r,v,f]),(0,n.useEffect)(()=>{if(l&&!r&&u&&!h){let e=setTimeout(()=>{m(!1),p(!0)},1e3);return()=>clearTimeout(e)}},[r,u,l,m,h]),(0,a.jsx)(Y.Provider,{value:{isStreaming:r,isOpen:u,setIsOpen:m,duration:g},children:(0,a.jsx)(J.Nt,{className:(0,x.cn)("not-prose mb-4",t),onOpenChange:e=>{m(e)},open:u,...d,children:c})})}),H=(0,n.memo)(e=>{let{className:t,children:r,...s}=e,{isStreaming:l,isOpen:o,duration:i}=(()=>{let e=(0,n.useContext)(Y);if(!e)throw Error("Reasoning components must be used within Reasoning");return e})();return(0,a.jsx)(J.R6,{className:(0,x.cn)("text-muted-foreground hover:text-foreground flex w-full items-center gap-2 text-sm transition-colors",t),...s,children:r??(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(m.Sxh,{className:"size-4"}),l?(0,a.jsx)(K,{duration:1,children:"Thinking..."}):void 0===i||0===i?(0,a.jsx)("p",{children:"Thought for a few seconds"}):(0,a.jsxs)("p",{children:["Thought for ",i," seconds"]}),(0,a.jsx)(m.D3D,{className:(0,x.cn)("size-4 transition-transform",o?"rotate-180":"rotate-0")})]})})}),X=(0,n.memo)(e=>{let{className:t,children:r,...s}=e;return(0,a.jsx)(J.Ke,{className:(0,x.cn)("mt-4 text-sm","data-closed:fade-out-0 data-closed:slide-out-to-top-2 data-open:slide-in-from-top-2 text-muted-foreground data-closed:animate-out data-open:animate-in outline-none",t),...s,children:(0,a.jsx)(V,{className:"grid gap-2",children:r})})});Z.displayName="Reasoning",H.displayName="ReasoningTrigger",X.displayName="ReasoningContent";let ee=e=>{let{className:t,...r}=e;return(0,a.jsx)(J.Nt,{className:(0,x.cn)("not-prose text-primary mb-4 text-xs",t),...r})},et=e=>{let{className:t,count:r,children:s,...n}=e,{t:l}=(0,d.Bd)();return(0,a.jsx)(J.R6,{className:(0,x.cn)("flex items-center gap-2",t),...n,children:s??(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("p",{className:"font-medium",children:[l("Used")," ",r," ",l("sources")]}),(0,a.jsx)(m.D3D,{className:"h-4 w-4"})]})})},er=e=>{let{className:t,...r}=e;return(0,a.jsx)(J.Ke,{className:(0,x.cn)("mt-3 flex w-fit flex-col gap-2","data-closed:fade-out-0 data-closed:slide-out-to-top-2 data-open:slide-in-from-top-2 data-closed:animate-out data-open:animate-in outline-none",t),...r})},ea=e=>{let{href:t,title:r,children:s,...n}=e;return(0,a.jsx)("a",{className:"flex items-center gap-2",href:t,rel:"noreferrer",target:"_blank",...n,children:s??(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(m.vP6,{className:"h-4 w-4"}),(0,a.jsx)("span",{className:"block font-medium",children:r})]})})};var es=r(74966),en=r(30633);function el(e){return{id:(0,en.Ak)(),content:e}}function eo(e){return e.versions[0]||{id:"default",content:""}}function ei(e,t){let r=eo(e);return{...e,versions:[{...r,content:t}]}}function ec(){return{key:(0,en.Ak)(),from:es.Ag.ASSISTANT,versions:[el("")],reasoning:void 0,isReasoningComplete:!1,isContentComplete:!1,isReasoningStreaming:!1,status:es.x7.LOADING}}function ed(e){let t=eo(e),r=e.attachments??[];if(0===r.length)return{role:e.from,content:t.content};let a=[];for(let e of(t.content.trim()&&a.push({type:"text",text:t.content}),r)){if(e.mediaType.startsWith("image/")){a.push({type:"image_url",image_url:{url:e.url}});continue}a.push({type:"file",file:{filename:e.filename,file_data:e.url}})}return{role:e.from,content:a}}function eu(e){if(!e||!e.from||!e.versions.length)return!1;let t=e.versions[0]?.content;return void 0!==t&&(!!t.trim()||!!e.attachments?.length)&&("assistant"!==e.from||!!t.trim())}function em(e){if(!e.includes("<think>"))return{visibleContent:e,reasoning:"",hasUnclosedTag:!1};let t=[],r=[],a=0,s=!1;for(;;){let n=e.indexOf("<think>",a);if(-1===n){a<e.length&&t.push(e.substring(a));break}n>a&&t.push(e.substring(a,n));let l=e.indexOf("</think>",n+7);if(-1===l){r.push(e.substring(n+7)),s=!0;break}r.push(e.substring(n+7,l)),a=l+8}return{visibleContent:t.join("").trim(),reasoning:r.join("\n\n").trim(),hasUnclosedTag:s}}function ex(e,t){if(0===e.length)return e;let r=e[e.length-1];if(!r||r.from!==es.Ag.ASSISTANT)return e;let a=[...e];return a[a.length-1]=t(r),a}function eg(e,t){let{visibleContent:r,reasoning:a}=em(eo(e).content),s=t||e.reasoning?.content||a||"";return{...ei(e,r),reasoning:s?{content:s,duration:e.reasoning?.duration||0}:void 0,isReasoningStreaming:!1}}function ef(e,t){let r="length"===t;return{...ei(e,r?es.UU.TRUNCATED_EMPTY:es.UU.EMPTY_COMPLETION),status:es.x7.ERROR,isReasoningStreaming:!1,errorCode:r?es.OQ.OUTPUT_TRUNCATED_EMPTY:es.OQ.EMPTY_COMPLETION}}var eh=r(52606),ep=r(34126);function ev(e){let{icon:t,label:r,onClick:s,disabled:n=!1,className:l="",variant:o="default"}=e,i="destructive"===o?es.fi.DELETE:es.fi.BASE;return(0,a.jsxs)(ep.m_,{children:[(0,a.jsx)(ep.k$,{render:(0,a.jsx)(f.$,{variant:"ghost",size:"icon",className:`${i} ${l}`,onClick:s,disabled:n,"aria-label":r}),children:(0,a.jsx)(t,{className:es.fi.ICON})}),(0,a.jsx)(ep.ZI,{children:(0,a.jsx)("p",{children:r})})]})}function eb(e){let{message:t,onCopy:r,onRegenerate:s,onEdit:l,onDelete:o,isGenerating:i=!1,alwaysVisible:c=!1,className:x=""}=e,{t:g}=(0,d.Bd)(),{copiedText:f,copyToClipboard:h}=(0,eh.C)(),{guardAction:p}=function(e){let{t}=(0,d.Bd)();return{guardAction:(0,n.useCallback)(r=>()=>{e?u.oR.warning(t(es.Tk.WAIT_GENERATION)):r()},[e,t])}}(i),v="assistant"===t.from,b=t.versions.some(e=>e.content),j="loading"===t.status||"streaming"===t.status,y=t.ver
1sions[0]?.content||"",N=f===y,w=p(()=>s?.(t)),k=p(()=>l?.(t)),C=p(()=>o?.(t)),S=t.usage,E=v&&S&&!j;return(0,a.jsx)(ep.Bc,{delay:300,children:(0,a.jsxs)("div",{className:`flex items-center gap-0.5 transition-opacity ${c?"opacity-100":"opacity-0 group-hover:opacity-100 max-md:opacity-100"} ${x}`,children:[E&&(0,a.jsxs)(ep.m_,{children:[(0,a.jsx)(ep.k$,{children:(0,a.jsx)("span",{className:"text-muted-foreground mr-2 text-xs tabular-nums",children:g("{{count}} tokens used",{count:S.total_tokens.toLocaleString()})})}),(0,a.jsx)(ep.ZI,{children:g("Input {{input}} / Output {{output}}",{input:S.prompt_tokens.toLocaleString(),output:S.completion_tokens.toLocaleString()})})]}),b&&(0,a.jsx)(ev,{icon:N?m.Jlk:m.QRo,label:N?g(es.Tk.COPIED):g(es.Tk.COPY),onClick:()=>{y?(h(y),r?.(t)):u.oR.warning(g(es.Tk.NO_CONTENT))},className:N?"text-green-600":""}),v&&!j&&s&&(0,a.jsx)(ev,{icon:m.e9t,label:g(es.Tk.REGENERATE),onClick:w,disabled:i}),b&&l&&(0,a.jsx)(ev,{icon:m.ffu,label:g(es.Tk.EDIT),onClick:k,disabled:i}),o&&(0,a.jsx)(ev,{icon:m.TBR,label:g(es.Tk.DELETE),onClick:C,disabled:i,variant:"destructive"})]})})}var ej=r(20032),ey=r(77405);function eN(e){let{message:t,className:r=""}=e,{t:s}=(0,d.Bd)(),n=(0,ej.n)(e=>e.auth.user),l=n?.role!=null&&n.role>=10;if(t.status!==es.x7.ERROR)return null;let o=t.versions[0]?.content||s("An unknown error occurred");if("model_price_error"===t.errorCode)return(0,a.jsxs)(ey.Fc,{variant:"default",className:r,children:[(0,a.jsx)(m.hcu,{className:"text-orange-500"}),(0,a.jsx)(ey.XL,{children:s("Model Price Not Configured")}),(0,a.jsxs)(ey.TN,{className:"space-y-2",children:[(0,a.jsx)("p",{children:o}),l&&(0,a.jsxs)(f.$,{variant:"outline",size:"sm",onClick:()=>window.open("/system-settings/billing/model-pricing","_blank"),children:[(0,a.jsx)(m.wB_,{className:"mr-1 h-3.5 w-3.5"}),s("Go to Settings")]})]})]});if(t.errorCode===es.OQ.OUTPUT_TRUNCATED_EMPTY||t.errorCode===es.OQ.EMPTY_COMPLETION){let e=t.errorCode===es.OQ.OUTPUT_TRUNCATED_EMPTY;return(0,a.jsxs)(ey.Fc,{variant:"default",className:r,children:[(0,a.jsx)(m.hcu,{className:"text-orange-500"}),(0,a.jsx)(ey.XL,{children:s(e?"Output truncated by max_tokens":"No visible content returned")}),(0,a.jsxs)(ey.TN,{className:"space-y-1",children:[(0,a.jsx)("p",{children:s(e?"The model spent the entire max_tokens budget on reasoning before producing any visible text. Try raising max_tokens or simplifying the request.":"The response ended without returning any visible content.")}),t.usage?.completion_tokens?(0,a.jsxs)("p",{children:[s("Completion tokens consumed"),":"," ",t.usage.completion_tokens]}):null]})]})}return(0,a.jsxs)(ey.Fc,{variant:"destructive",className:r,children:[(0,a.jsx)(m.RIJ,{}),(0,a.jsx)(ey.XL,{children:s("Error")}),(0,a.jsx)(ey.TN,{children:o})]})}function ew(e){let{message:t}=e;return t.attachments?.length?(0,a.jsx)("div",{className:"flex max-w-full flex-wrap justify-end gap-2",children:t.attachments.map((e,r)=>{let s=`${t.key}-attachment-${r}`;return e.mediaType.startsWith("image/")?(0,a.jsx)("a",{className:"bg-muted/35 block overflow-hidden rounded-lg border transition-opacity hover:opacity-90",href:e.url,rel:"noreferrer",target:"_blank",title:e.filename,children:(0,a.jsx)("img",{alt:e.filename,className:"h-28 w-36 object-cover sm:h-32 sm:w-44",src:e.url})},s):(0,a.jsxs)("a",{className:"bg-background/70 hover:bg-background flex max-w-64 items-center gap-2 rounded-lg border px-3 py-2 text-xs transition-colors",download:e.filename,href:e.url,title:e.filename,children:[(0,a.jsx)("span",{className:"bg-muted flex size-8 shrink-0 items-center justify-center rounded-md",children:(0,a.jsx)(m.oSV,{className:"text-muted-foreground size-4"})}),(0,a.jsx)("span",{className:"truncate font-medium",children:e.filename})]},s)})}):null}function ek(e){let{messages:t,onCopyMessage:r,onRegenerateMessage:s,onEditMessage:l,onDeleteMessage:o,isGenerating:i=!1,editingKey:c,onSaveEdit:u,onCancelEdit:m,onSaveEditAndSubmit:g}=e,{t:h}
1=(0,d.Bd)(),[p,v]=(0,n.useState)(""),[b,j]=(0,n.useState)("");(0,n.useEffect)(()=>{if(!c)return;let e=t.find(e=>e.key===c),r=e?.versions?.[0]?.content||"";v(r),j(r)},[c,t]);let y=(0,n.useMemo)(()=>!p.trim(),[p]),N=(0,n.useMemo)(()=>p!==b,[p,b]);return(0,a.jsxs)(M,{children:[(0,a.jsx)(I,{className:"p-0",children:(0,a.jsx)("div",{className:"mx-auto w-full max-w-4xl px-4 py-4",children:t.map((e,n)=>{let{versions:d=[]}=e,b=n===t.length-1&&e.from===es.Ag.ASSISTANT;return(0,a.jsxs)(R,{defaultBranch:0,children:[(0,a.jsx)(T,{children:d.map((t,n)=>{let d,j,w,k,S,E,R,T;return(0,a.jsx)(B,{className:"group flex-row-reverse",from:e.from,children:(0,a.jsx)("div",{className:"w-full min-w-0 flex-1 basis-full py-1",children:c===e.key?(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(C.T,{value:p,onChange:e=>v(e.target.value),className:"font-mono text-sm",rows:8}),(0,a.jsxs)("div",{className:"flex gap-2",children:[e.from===es.Ag.USER&&(0,a.jsx)(f.$,{size:"sm",onClick:()=>g?.(p),disabled:y||!N,children:h("Save & Submit")}),(0,a.jsx)(f.$,{size:"sm",onClick:()=>u?.(p),disabled:y||!N,children:h("Save")}),(0,a.jsx)(f.$,{size:"sm",variant:"outline",onClick:()=>m?.(!1),children:h("Cancel")})]})]}):(0,a.jsx)(a.Fragment,{children:(d=e.from===es.Ag.ASSISTANT,j=!!e.sources?.length,w=d&&!!e.reasoning?.content,k=d&&!e.isReasoningStreaming&&("loading"===e.status||"streaming"===e.status&&!t.content),S=(e.from===es.Ag.USER||!e.isReasoningStreaming)&&!!t.content,E=e.from===es.Ag.USER&&!!e.attachments?.length,R=d?em(t.content).visibleContent:t.content,T=(0,a.jsx)(eb,{message:e,onCopy:r,onRegenerate:s,onEdit:l,onDelete:o,isGenerating:i,alwaysVisible:b,className:"mt-1"}),(0,a.jsxs)(a.Fragment,{children:[j&&(0,a.jsxs)(ee,{children:[(0,a.jsx)(et,{count:e.sources.length}),(0,a.jsx)(er,{children:e.sources.map((t,r)=>(0,a.jsx)(ea,{href:t.href,title:t.title},`${e.key}-source-${r}`))})]}),w&&(0,a.jsxs)(Z,{defaultOpen:!0,isStreaming:e.isReasoningStreaming,children:[(0,a.jsx)(H,{}),(0,a.jsx)(X,{children:e.reasoning.content})]}),k&&(0,a.jsxs)("div",{className:"flex items-center gap-2 py-2",children:[(0,a.jsx)(F,{}),(0,a.jsx)(K,{className:"text-sm",duration:1,children:h("Responding...")})]}),"error"===e.status?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eN,{message:e,className:"mb-2"}),T]}):(S||E)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(G,{variant:"flat",className:(0,x.cn)("group-[.is-assistant]:w-full group-[.is-assistant]:max-w-none group-[.is-user]:w-fit group-[.is-user]:text-foreground group-[.is-user]:bg-secondary dark:group-[.is-user]:bg-muted group-[.is-user]:rounded-lg group-[.is-assistant]:text-foreground group-[.is-assistant]:bg-transparent group-[.is-assistant]:p-0 group-[.is-assistant]:font-serif leading-relaxed break-words whitespace-pre-wrap sm:leading-7 group-[.is-user]:max-w-[85%] sm:group-[.is-user]:max-w-[62ch] md:group-[.is-user]:max-w-[68ch] lg:group-[.is-user]:max-w-[72ch]"),children:[E&&(0,a.jsx)(ew,{message:e}),S&&(0,a.jsx)(V,{children:R})]}),T]})]}))})})},`${e.key}-${t.id}-${n}`)})}),d.length>1&&(0,a.jsxs)(_,{className:"px-0",from:e.from,children:[(0,a.jsx)(z,{}),(0,a.jsx)(A,{}),(0,a.jsx)(O,{})]})]},e.key)})})}),(0,a.jsx)(P,{})]})}var eC=r(43631),eS=r(45569),eE=r(41704),eR=r(57102),eT=r(93362),e_=r(70240);function ez(e){let{...t}=e;return(0,a.jsx)(eS.j,{"data-slot":"hover-card",...t})}function eO(e){let{...t}=e;return(0,a.jsx)(eE.Z,{"data-slot":"hover-card-trigger",...t})}function eA(e){let{className:t,side:r="bottom",sideOffset:s=4,align:n="center",alignOffset:l=4,...o}=e;return(0,a.jsx)(eR.D,{"data-slot":"hover-card-portal",children:(0,a.jsx)(eT.p,{align:n,alignOffset:l,side:r,sideOffset:s,className:"isolate z-50",children:(0,a.jsx)(e_.p,{"data-slot":"hover-card-content",className:(0,x.cn)("bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 z-50 w-64 origin-(--transform-origin) rounded-lg p-2.5 text-sm shadow-md ring-1 outline-hidden duration-100",t),...o})})})}var eL=r(93833);r(82243);let eM=(0,n.createContext)(null),eI=(0,n.createContext)(null),eP=()=>(0,n.useContext)(eM),eU=(0,n.createContext)(null),eF=()=>{let e=(0,n.useContext)(eI),t=(0,n.useContext)(eU),r=e??t;if(!r)throw Error("usePromptInputAttachments must be used within a PromptInput or PromptInputProvider");return r};function eD(e){let{data:t,className:r,...s}=e,{t:n}=(0,d.Bd)(),l=eF(),o=t.filename||"",i="image"==(t.mediaType?.startsWith("image/")&&t.url?"image":"file"),c=o||(i?"Image":"Attachment");return(0,a.jsxs)(eV,{children:[(0,a.jsxs)(eq,{render:(0,a.jsx)("div",{className:(0,x.cn)("group border-border hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 relative flex h-8 cursor-default items-center gap-1.5 rounded-md border px-1.5 text-sm font-medium transition-all select-none",r),...s},t.id),children:[(0,a.jsxs)("div",{className:"relative size-5 shrink-0",children:[(0,a.jsx)("div",{className:"bg-background absolute inset-0 flex size-5 items-center justify-center overflow-hidden rounded transition-opacity group-hover:opacity-0",children:i?(0,a.jsx)("img",{alt:o||"attachment",className:"size-5 object-cover",height:20,src:t.url,width:20}):(0,a.jsx)("div",{className:"text-muted-foreground flex size-5 items-center justify-center",children:(0,a.jsx)(m.Aud,{className:"size-3"})})}),(0,a.jsxs)(f.$,{"aria-label":n("Remove attachment"),className:"absolute inset-0 size-5 cursor-pointer rounded p-0 opacity-0 transition-opacity group-hover:pointer-events-auto group-hover:opacity-100 [&>svg]:size-2.5",onClick:e=>{e.stopPropagation(),l.remove(t.id)},type:"button",variant:"ghost",children:[(0,a.jsx)(m.uv5,{}),(0,a.jsx)("span",{className:"sr-only",children:n("Remove")})]})]}),(0,a.jsx)("span",{className:"flex-1 truncate",children:c})]}),(0,a.jsx)(eK,{className:"w-auto p-2",children:(0,a.jsxs)("div",{className:"w-auto space-y-3",children:[i&&(0,a.jsx)("div",{className:"flex max-h-96 w-96 items-center justify-center overflow-hidden rounded-md border",children:(0,a.jsx)("img",{alt:o||"attachment preview",className:"max-h-full max-w-full object-contain",height:384,src:t.url,width:448})}),(0,a.jsx)("div",{className:"flex items-center gap-2.5",children:(0,a.jsxs)("div",{className:"min-w-0 flex-1 space-y-1 px-0.5",children:[(0,a.jsx)("h4",{className:"truncate text-sm leading-none font-semibold",children:o||(i?"Image":"Attachment")}),t.mediaType&&(0,a.jsx)("p",{className:"text-muted-foreground truncate font-mono text-xs",children:t.mediaType})]})})]})})]})}let eB=e=>{let{className:t,groupClassName:r,accept:s,multiple:l,globalDrop:o,syncHiddenInput:i,maxFiles:c,maxFileSize:u,onError:m,onSubmit:g,children:f,...h}=e,{t:p}=(0,d.Bd)(),v=eP(),b=!!v,j=(0,n.useRef)(null),y=(0,n.useRef)(null),N=(0,n.useRef)(null),w=(0,n.useRef)(new Set);(0,n.useEffect)(()=>{let e=y.current?.closest("form");e instanceof HTMLFormElement&&(N.current=e)},[]);
1let[k,C]=(0,n.useState)([]),S=b?v.attachments.files:k,E=(0,n.useCallback)(e=>{let t=j.current;t&&(t.accept=e?.accept??s??"",t.multiple=e?.multiple??!!l,e?.capture?t.setAttribute("capture",e.capture):t.removeAttribute("capture"),t.click())},[s,l]),R=(0,n.useCallback)(e=>!s||""===s.trim()||!s.includes("image/*")||e.type.startsWith("image/"),[s]),T=(0,n.useCallback)(e=>{let t=Array.from(e),r=t.filter(e=>R(e));if(t.length&&0===r.length)return void m?.({code:"accept",message:p("No files match the accepted types.")});let a=r.filter(e=>!u||e.size<=u);r.length>a.length?m?.({code:"max_file_size",message:p("All files exceed the maximum size.")}):C(e=>{let t="number"==typeof c?Math.max(0,c-e.length):void 0,r="number"==typeof t?a.slice(0,t):a;"number"==typeof t&&a.length>t&&m?.({code:"max_files",message:p("Too many files. Some were not added.")});let s=[];for(let e of r){let t=URL.createObjectURL(e);w.current.add(t),s.push({id:(0,en.Ak)(),type:"file",url:t,mediaType:e.type,filename:e.name})}return e.concat(s)})},[R,c,u,m,p]),_=(0,n.useMemo)(()=>v?e=>v.attachments.add(e):T,[v,T]),z=(0,n.useMemo)(()=>v?e=>v.attachments.remove(e):e=>C(t=>{let r=t.find(t=>t.id===e);return r?.url&&(URL.revokeObjectURL(r.url),w.current.delete(r.url)),t.filter(t=>t.id!==e)}),[v]),O=(0,n.useMemo)(()=>v?()=>v.attachments.clear():()=>C(e=>{for(let t of e)t.url&&(URL.revokeObjectURL(t.url),w.current.delete(t.url));return[]}),[v]),A=(0,n.useMemo)(()=>v?()=>v.attachments.openFileDialog():E,[v,E]);(0,n.useEffect)(()=>{b&&v.__registerFileInput(j,E)},[b,v,E]),(0,n.useEffect)(()=>{i&&j.current&&0===S.length&&(j.current.value="")},[S,i]),(0,n.useEffect)(()=>{let e=N.current;if(!e)return;let t=e=>{e.dataTransfer?.types?.includes("Files")&&e.preventDefault()},r=e=>{e.dataTransfer?.types?.includes("Files")&&e.preventDefault(),e.dataTransfer?.files&&e.dataTransfer.files.length>0&&_(e.dataTransfer.files)};return e.addEventListener("dragover",t),e.addEventListener("drop",r),()=>{e.removeEventListener("dragover",t),e.removeEventListener("drop",r)}},[_]),(0,n.useEffect)(()=>{if(!o)return;let e=e=>{e.dataTransfer?.types?.includes("Files")&&e.preventDefault()},t=e=>{e.dataTransfer?.types?.includes("Files")&&e.preventDefault(),e.dataTransfer?.files&&e.dataTransfer.files.length>0&&_(e.dataTransfer.files)};return document.addEventListener("dragover",e),document.addEventListener("drop",t),()=>{document.removeEventListener("dragover",e),document.removeEventListener("drop",t)}},[_,o]),(0,n.useEffect)(()=>()=>{if(!b){for(let e of w.current)URL.revokeObjectURL(e);w.current.clear()}},[b]);let L=async e=>{let t=await fetch(e),r=await t.blob();return new Promise((e,t)=>{let a=new FileReader;a.onloadend=()=>e(a.result),a.onerror=t,a.readAsDataURL(r)})},M=(0,n.useMemo)(()=>({files:S.map(e=>({...e,id:e.id})),add:_,remove:z,clear:O,openFileDialog:A,fileInputRef:j}),[S,_,z,O,A]),I=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{"aria-hidden":"true",className:"hidden",ref:y}),(0,a.jsx)("input",{accept:s,"aria-label":p("Upload files"),className:"hidden",multiple:l,onChange:e=>{e.currentTarget.files&&_(e.currentTarget.files),e.currentTarget.value=""},ref:j,title:p("Upload files"),type:"file"}),(0,a.jsx)("form",{className:(0,x.cn)("w-full",t),onSubmit:e=>{e.preventDefault();let t=e.currentTarget,r=b?v.textInput.value:new FormData(t).get("message")||"";b||t.reset(),Promise.all(S.map(async e=>{let{id:t,...r}=e;return r.url&&r.url.startsWith("blob:")?{...r,url:await L(r.url)}:r})).then(t=>{try{let a=g({text:r,files:t},e);a instanceof Promise?a.then(()=>{O(),b&&v.textInput.clear()}).catch(()=>{}):(O(),b&&v.textInput.clear())}catch(e){}})},...h,children:(0,a.jsx)(eL.MG,{className:r,children:f})})]});return b?I:(0,a.jsx)(eU.Provider,{value:M,children:I})},e$=e=>{let{onChange:t,className:r,placeholder:s,...l}=e,{t:o}=(0,d.Bd)(),i=eP(),c=eF(),u=s??o("What would you like to know?"),[m,g]=(0,n.useState)(!1),f=i?{value:i.textInput.value,onChange:e=>{i.textInput.setInput(e.currentTarget.value),t?.(e)}}:{onChange:t};return(0,a.jsx)(eL.oR,{className:(0,x.cn)("field-sizing-content max-h-48 min-h-16",r),name:"message",onCompositionEnd:()=>g(!1),onCompositionStart:()=>g(!0),onKeyDown:e=>{if("Enter"===e.key){if(m||e.nativeEvent.isComposing||e.shiftKey)return;e.preventDefault(),e.currentTarget.form?.requestSubmit()}if("Backspace"===e.key&&""===e.currentTarget.value&&c.files.length>0){e.preventDefault();let t=c.files.length>0?c.files[c.files.length-1]:void 0;t&&c.remove(t.id)}},onPaste:e=>{let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e of t)if("file"===e.kind){let t=e.getAsFile();t&&r.push(t)}r.length>0&&(e.preventDefault(),c.add(r))},placeholder:u,...l,...f})},eG=e=>{let{className:t,...r}=e;
1return(0,a.jsx)(eL.Sq,{align:"block-end",className:(0,x.cn)("justify-between gap-1",t),...r})},eW=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,x.cn)("flex items-center gap-1",t),...r})},eJ=e=>{let{variant:t="ghost",className:r,size:s,...l}=e,o=s??(n.Children.count(l.children)>1?"sm":"icon-sm");return(0,a.jsx)(eL.Ik,{className:(0,x.cn)(r),size:o,type:"button",variant:t,...l})},eQ=e=>{let{className:t,textareaRef:r,onTranscriptionChange:s,disabled:l,...o}=e,[i,c]=(0,n.useState)(!1),[d,u]=(0,n.useState)(null),g=(0,n.useRef)(null);(0,n.useEffect)(()=>{if("u">typeof window&&("SpeechRecognition"in window||"webkitSpeechRecognition"in window)){let e=new(window.SpeechRecognition||window.webkitSpeechRecognition);e.continuous=!0,e.interimResults=!0,e.lang="en-US",e.onstart=()=>{c(!0)},e.onend=()=>{c(!1)},e.onresult=e=>{let t="";for(let r of Array.from(e.results))r.isFinal&&(t+=r[0]?.transcript??"");if(t&&r?.current){let e=r.current,a=e.value,n=a+(a?" ":"")+t;e.value=n,e.dispatchEvent(new Event("input",{bubbles:!0})),s?.(n)}},e.onerror=e=>{console.error("Speech recognition error:",e.error),c(!1)},g.current=e,u(e)}return()=>{g.current&&g.current.stop()}},[r,s]);let f=(0,n.useCallback)(()=>{d&&(i?d.stop():d.start())},[d,i]);return(0,a.jsx)(eJ,{className:(0,x.cn)("relative transition-all duration-200",i&&"bg-accent text-accent-foreground animate-pulse",t),disabled:l||!d,onClick:f,...o,children:(0,a.jsx)(m.L9v,{className:"size-4"})})},eV=e=>(0,a.jsx)(ez,{...e}),eq=e=>{let{delay:t=0,closeDelay:r=0,...s}=e;return(0,a.jsx)(eO,{delay:t,closeDelay:r,...s})},eK=e=>{let{align:t="start",...r}=e;return(0,a.jsx)(eA,{align:t,...r})};function eY(){let e=eF();return 0===e.files.length?null:(0,a.jsx)("div",{className:"flex flex-wrap gap-2 px-5 pt-4",children:e.files.map(e=>(0,a.jsx)(eD,{className:"bg-muted/35 max-w-56 rounded-lg",data:e},e.id))})}function eZ(e){let{disabled:t,isGenerating:r,onStop:s,onWebSearchChange:n,setText:l,text:o,textareaRef:i,webSearchEnabled:c}=e,{t:g}=(0,d.Bd)(),f=eF(),h=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];f.openFileDialog({accept:e,multiple:!t,capture:t?"environment":void 0})},p=async()=>{let e;if(!navigator.mediaDevices?.getDisplayMedia)return void u.oR.error(g("Take screenshot"),{description:"å½åæµè§å¨ä¸æ¯æå±å¹æªå¾"});try{e=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});let t=document.createElement("video");if(t.muted=!0,t.srcObject=e,await t.play(),!t.videoWidth||!t.videoHeight)throw Error("æ æ³è¯»åå±å¹ç»é¢");let r=document.createElement("canvas");r.width=t.videoWidth,r.height=t.videoHeight;let a=r.getContext("2d");if(!a)throw Error("æ æ³å建æªå¾");a.drawImage(t,0,0,r.width,r.height);let s=await new Promise((e,t)=>{r.toBlob(r=>{r?e(r):t(Error("æ æ³çææªå¾"))},"image/png")}),n=new Date().toISOString().replace(/[:.]/g,"-");f.add([new File([s],`screenshot-${n}.png`,{type:"image/png"})])}catch(e){if(e instanceof DOMException&&("NotAllowedError"===e.name||"AbortError"===e.name))return;u.oR.error(g("Take screenshot"),{description:e instanceof Error?e.message:"æªå¾å¤±è´¥"})}finally{e?.getTracks().forEach(e=>e.stop())}};return(0,a.jsxs)(eG,{className:"px-4 pt-1 pb-3",children:[(0,a.jsxs)(eW,{className:"gap-1.5",children:[(0,a.jsxs)(eC.rI,{children:[(0,a.jsx)(eC.ty,{render:(0,a.jsx)(eJ,{"aria-label":g("Attach"),className:"size-9 rounded-full p-0",disabled:t,title:g("Attach")}),children:(0,a.jsx)(m.c11,{className:"size-5"})}),(0,a.jsxs)(eC.SQ,{align:"start",children:[(0,a.jsxs)(eC._2,{onClick:()=>h(""),children:[(0,a.jsx)(m.oSV,{className:"mr-2",size:16}),g("Upload file")]}),(0,a.jsxs)(eC._2,{onClick:()=>h("image/*"),children:[(0,a.jsx)(m.xfq,{className:"mr-2",size:16}),g("Upload photo")]}),(0,a.jsxs)(eC._2,{onClick:()=>void p(),children:[(0,a.jsx)(m.zzJ,{className:"mr-2",size:16}),g("Take screenshot")]}),(0,a.jsxs)(eC._2,{onClick:()=>h("image/*",!0),children:[(0,a.jsx)(m.xpe,{className:"mr-2",size:16}),g("Take photo")]})]})]}),(0,a.jsx)(eJ,{"aria-label":g("Search"),"aria-pressed":c,className:(0,x.cn)("size-9 rounded-full p-0 transition-colors",c&&"bg-foreground text-background hover:bg-foreground
1/85 hover:text-background"),disabled:t,onClick:()=>n(!c),title:g("Web search"),children:(0,a.jsx)(m.fCU,{className:"size-5"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(eQ,{"aria-label":"Voice input",className:"size-9 rounded-full p-0",disabled:t,onTranscriptionChange:l,textareaRef:i,title:"Voice input"}),r&&s?(0,a.jsx)(eJ,{"aria-label":g("Stop"),className:"bg-foreground text-background hover:bg-foreground/85 size-10 rounded-full p-0",onClick:s,title:g("Stop"),children:(0,a.jsx)(m.dHM,{className:"fill-current",size:16})}):(0,a.jsx)(eJ,{"aria-label":g("Send"),className:"bg-foreground text-background hover:bg-foreground/85 disabled:bg-muted disabled:text-muted-foreground size-10 rounded-full p-0 disabled:opacity-100",disabled:t||!o.trim()&&0===f.files.length,title:g("Send"),type:"submit",children:(0,a.jsx)(m.DoI,{className:"size-5"})})]})]})}function eH(e){let{onSubmit:t,onStop:r,disabled:s,isGenerating:l,webSearchEnabled:o,onWebSearchChange:i}=e,{t:c}=(0,d.Bd)(),[m,x]=(0,n.useState)(""),g=(0,n.useRef)(null);return(0,a.jsx)("div",{className:"grid shrink-0 px-1",children:(0,a.jsxs)(eB,{globalDrop:!0,groupClassName:"min-h-[132px] overflow-hidden rounded-[30px] border-border/70 bg-background shadow-[0_10px_35px_rgba(15,23,20,0.08)]",maxFiles:5,maxFileSize:0xa00000,multiple:!0,onError:e=>u.oR.error(e.message),onSubmit:e=>{let r=(e.files??[]).map(e=>({url:e.url,mediaType:e.mediaType||"application/octet-stream",filename:e.filename||(e.mediaType?.startsWith("image/")?"image.png":"attachment")})),a=e.text?.trim()??"";if(!a&&0===r.length||s)return;let n=t({text:a,attachments:r});return x(""),n},children:[(0,a.jsx)(eY,{}),(0,a.jsx)(e$,{autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:!1,className:"max-h-48 min-h-[78px] px-6 pt-5 pb-2 text-base leading-6 md:text-base",disabled:s,onChange:e=>x(e.target.value),placeholder:c("Ask anything"),ref:g,value:m}),(0,a.jsx)(eZ,{disabled:s,isGenerating:l,onStop:r,onWebSearchChange:i,setText:x,text:m,textareaRef:g,webSearchEnabled:o})]})})}var eX=r(99523),e0=r(71114),e1=r(54023),e2=r(43015),e4=r(23780);function e5(){let{className:e,size:t="default",variant:r="outline"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{t:s}=(0,d.Bd)(),n=(0,c.Z)(),o=(0,l.jE)(),i=async()=>{try{let e=await (0,k.uQ)({title:s("New conversation")});o.invalidateQueries({queryKey:["playground-sessions"]}),n({to:"/playground",search:{session:e.id}})}catch(e){u.oR.error(e instanceof Error?e.message:s("Failed to create chat"))}};return(0,a.jsxs)(e4.o,{variant:r,size:t,className:e,onClick:i,"aria-label":s("New chat"),children:[(0,a.jsx)(m.f5w,{className:"size-4 shrink-0"}),(0,a.jsx)("span",{className:"group-data-[collapsible=icon]:hidden",children:s("New chat")})]})}function e3(){let{t:e}=(0,d.Bd)(),t=(0,c.Z)(),r=(0,eX.z)(),{setOpenMobile:s}=(0,e2.cL)(),i=(0,l.jE)(),[g,h]=(0,n.useState)(""),p=(0,n.useMemo)(()=>{let e,t;return Number.isFinite(t="number"==typeof(e=r.search.session)?e:Number(e))&&t>0?t:null},[r.search]),v=(0,o.I)({queryKey:["playground-sessions",g],queryFn:async()=>(await (0,k.VF)({keyword:g,pageSize:50})).items||[]}),b=async r=>{try{await (0,k.FU)(r.id),i.invalidateQueries({queryKey:["playground-sessions"]}),p===r.id&&t({to:"/playground",search:{}})}catch(t){u.oR.error(t instanceof Error?t.message:e("Failed to delete chat"))}},j=v.data||[],y=j.length>0||g.length>0;return(0,a.jsxs)("aside",{className:"bg-background flex h-full w-64 shrink-0 flex-col border-r",children:[(0,a.jsxs)("div",{className:"shrink-0 px-3 pt-3 pb-2",children:[(0,a.jsx)(e5,{variant:"default",size:"lg",className:"mb-3 h-10 w-full justify-start rounded-lg px-3 font-sans text-sm tracking-[0] normal-case [corner-shape:round]"}),(0,a.jsx)("div",{className:"text-muted-foreground px-1 pb-2 text-xs font-medium",children:e("Playground conversations")}),y&&(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(m.vji,{className:"text-muted-foreground pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2"}),(0,a.jsx)(e1.p,{value:g,onChange:e=>h(e.target.value),placeholder:e("Search conversations..."),className:"bg-surface-active/60 h-9 rounded-md border-0 pl-9 shadow-none focus-visible:ring-0"})]})]}),(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-2 pb-3",children:j.map(t=>(0,a.jsxs)("div",{className:(0,x.cn)("group mb-1 flex items-center rounded-md transition-colors",p===t.id?"bg-surface-active":"hover:bg-surface-hover"),children:[(0,a.jsx)(e0.N_,{to:"/playground",search:{session:t.id},onClick:()=>s(!1),className:"text-foreground min-w-0 flex-1 truncate px-3 py-2 text-sm font-semibold",children:t.title||e("New conversation")}),(0,a.jsxs)(eC.rI,{children:[(0,a.jsx)(eC.ty,{render:(0,a.jsx)(f.$,{variant:"ghost",size:"icon",className:"mr-1 size-7 opacity-0 group-hover:opacity-100 data-[state=open]:opacity-100"}),children:(0,a.jsx)(m.a4,{className:"size-4"})}),(0,a.jsx)(eC.SQ,{align:"end",children:(0,a.jsxs)(eC._2,{className:"text-destructive focus:text-destructive",onClick:()=>b(t),children:[(0,a.jsx)(m.TBR,{className:"size-4"}),e("Delete")]})})]})]},t.id))})]})}function e6(e){try{localStorage.setItem(es.d5.CONFIG,JSON.stringify(e))}catch(e){console.error("Failed to save config:",e)}}function e7(e){try{localStorage.setItem(es.d5.PARAMETER_ENABLED,JSON.stringify(e))}catch(e){console.error("Failed to save parameter enabled:",e)}}var e8=r(69788),e9=r(64577);function te(e,t,r){let a=e.filter(eu).map(ed),s={model:t.model,group:t.group,messages:a,stream:t.stream};return t.stream&&(s.stream_options={include_usage:!0}),t.webSearchEnabled&&(s.web_search_options={}),["temperature","top_p","max_tokens","frequency_penalty","presence_penalty","seed"].forEach(e
1=>{var a;let n;if(r[e]&&(a=t.model,n=a.toLowerCase(),!("top_p"===e&&n.startsWith("claude-")))){let r=t[e];null!=r&&(s[e]=r)}}),s}var tt=r(56579);let tr=(0,i.GY)("/_authenticated/playground/");function ta(){let{t:e}=(0,d.Bd)(),t=(0,c.Z)(),r=tr.useSearch(),s=(0,l.jE)(),i=r.session??null,m=(0,n.useRef)(!1),x=(0,n.useRef)(null),g=(0,n.useRef)(null),f=(0,n.useRef)(!1),{config:h,parameterEnabled:p,messages:v,models:b,groups:j,updateMessages:C,setModels:S,setGroups:E,updateConfig:R}=function(){let[e,t]=(0,n.useState)(()=>{let e=function(){try{let e=localStorage.getItem(es.d5.CONFIG);if(e)return JSON.parse(e)}catch(e){console.error("Failed to load config:",e)}return{}}();return e?.group==="default"&&(e.group=es.PV.group),{...es.PV,...e}}),[r,a]=(0,n.useState)(()=>{let e=function(){try{let e=localStorage.getItem(es.d5.PARAMETER_ENABLED);if(e)return JSON.parse(e)}catch(e){console.error("Failed to load parameter enabled:",e)}return{}}();return{...es.Y$,...e}}),[s,l]=(0,n.useState)([]),[o,i]=(0,n.useState)([]),[c,d]=(0,n.useState)([]),u=(0,n.useCallback)((e,r)=>{t(t=>{let a={...t,[e]:r};return e6(a),a})},[]),m=(0,n.useCallback)((e,t)=>{a(r=>{let a={...r,[e]:t};return e7(a),a})},[]),x=(0,n.useCallback)(e=>{l(t=>{let r="function"==typeof e?e(t):e;try{localStorage.setItem(es.d5.MESSAGES,JSON.stringify(r))}catch(e){console.error("Failed to save messages:",e)}return r})},[]),g=(0,n.useCallback)(()=>{x([])},[x]);return{config:e,parameterEnabled:r,messages:s,models:o,groups:c,setModels:i,setGroups:d,updateConfig:u,updateParameterEnabled:m,updateMessages:x,clearMessages:g,resetConfig:(0,n.useCallback)(()=>{t(es.PV),a(es.Y$),e6(es.PV),e7(es.Y$)},[])}}(),{sendChat:T,stopGeneration:_,isGenerating:z}=function(e){let t,r,a,{config:s,parameterEnabled:l,onMessageUpdate:o}=e,{sendStreamRequest:i,stopStream:c,isStreaming:d}=(t=(0,n.useRef)(null),r=(0,n.useRef)(!1),a=(0,n.useCallback)((e,a,s,n)=>{let l,o=new e8.y(es.Sn.CHAT_COMPLETIONS,{headers:(0,e9.Ql)(),method:"POST",payload:JSON.stringify(e)});t.current=o,r.current=!1;let i=null,c=()=>{o.close(),t.current=null},d=(e,t)=>{r.current||(n(e,t),c())};o.addEventListener("message",e=>{if("[DONE]"===e.data){r.current=!0,c(),s(l,i);return}try{let t=JSON.parse(e.data);t.usage&&(l=t.usage);let r=t.choices?.[0];r?.finish_reason&&(i=r.finish_reason);let s=r?.delta;s&&(s.reasoning_content&&a("reasoning",s.reasoning_content),s.content&&a("content",s.content))}catch(e){console.error("Failed to parse SSE message:",e),d(es.UU.PARSE_ERROR)}}),o.addEventListener("error",e=>{if(2!==o.readyState){let t;console.error("SSE Error:",e);let r=e.data||es.UU.API_REQUEST_ERROR;if(e.data)try{let a=JSON.parse(e.data);a?.error&&(r=a.error.message||r,t=a.error.code||void 0)}catch{}d(r,t)}}),o.addEventListener("readystatechange",e=>{let t=o.status;void 0!==e.readyState&&e.readyState>=2&&void 0!==t&&200!==t?d(`HTTP ${t}: ${es.UU.CONNECTION_CLOSED}`):void 0!==e.readyState&&e.readyState>=2&&(void 0===t||200===t)&&!r.current&&(r.current=!0,c(),s(l,i))});try{o.stream()}catch(e){console.error("Failed to start SSE stream:",e),n(es.UU.STREAM_START_ERROR),t.current=null}},[]),{sendStreamRequest:a,stopStream:(0,n.useCallback)(()=>{t.current&&(r.current=!0,t.current.close(),t.current=null)},[]),isStreaming:null!==t.current}),m=(0,n.useCallback)((e,t)=>{o(r=>ex(r,r=>r.status===es.x7.ERROR?r:"reasoning"===e?{...r,reasoning:{content:(r.reasoning?.content||"")+t,duration:0},isReasoningStreaming:!0,status:es.x7.STREAMING}:{...function(e,t){let r=eo(e),a=t?r.content+t:r.content,{reasoning:s,hasUnclosedTag:n}=em(a),l=s?{content:s,duration:0}:e.reasoning;return{...ei(e,a),reasoning:l,isReasoningStreaming:n}}(r,t),status:es.x7.STREAMING}))},[o]),x=(0,n.useCallback)((e,t)=>{o(r=>ex(r,r=>{if(r.status===es.x7.COMPLETE||r.status===es.x7.ERROR)return r;let a={...eg(r),usage:e};return eo(a).content.trim()?{...a,status:es.x7.COMPLETE}:ef(a,t)}))},[o]),g=(0,n.useCallback)((e,t)=>{u.oR.error(e),o(r=>ex(r,r=>({...ei(r,`${es.UU.API_REQUEST_ERROR}: ${e}`),status:es.x7.ERROR,isReasoningStreaming:!1,errorCode:t||null})))},[o]),f=(0,n.useCallback)(e=>{i(te(e,s,l),m,x,g)},[s,l,i,m,x,g]),h=(0,n.useCallback)(async e=>{let t=te(e,s,l);try{let e=await (0,k.jS)(t),r=e.choices?.[0];if(!r)return;o(t=>ex(t,t=>{let a=eg({...t,usage:e.usage,versions:[{...t.versions[0],content:r.message?.content||""}]},r.message?.reasoning_content);return eo(a).content.trim()?{...a,status:es.x7.COMPLETE}:ef(a,r.finish_reason)}))}catch(e){g(e?.response?.data?.message||e?.message||es.UU.API_REQUEST_ERROR,e?.response?.data?.error?.code||void 0)}},[s,l,o,g]);return{sendChat:(0,n.useCallback)(e=>{s.stream?f(e):h(e)},[s.stream,f,h]),stopGeneration:(0,n.useCallback)(()=>{c(),o(e=>ex(e,e=>e.status===es.x7.LOADING||e.status===es.x7.STREAMING?{...eg(e),status:es.x7.COMPLETE}:e))},[c,o]),isGenerating:d}}({config:h,parameterEnabled:p,onMessageUpdate:C}
1),[O,A]=(0,n.useState)(null),L=(0,n.useCallback)(()=>{s.invalidateQueries({queryKey:["playground-sessions"]})},[s]);(0,n.useEffect)(()=>{if(!i){null===g.current&&(x.current=null);return}if(g.current===i){x.current=i,g.current=null;return}if(g.current=null,x.current===i||z)return;let r=!1;return m.current=!0,(0,k.so)(i).then(e=>{!r&&(x.current=i,C(e.messages.map(e=>{try{return JSON.parse(e.content)}catch{return null}}).filter(e=>!!e)),e.session.model&&R("model",e.session.model),e.session.group&&R("group",e.session.group))}).catch(a=>{r||(u.oR.error(a instanceof Error?a.message:e("Failed to load chat")),t({to:"/playground",search:{},replace:!0}))}).finally(()=>{r||window.setTimeout(()=>{m.current=!1},0)}),()=>{r=!0,m.current=!1}},[i,z,t,e,R,C]),(0,n.useEffect)(()=>{if(!i||m.current||x.current!==i)return;let t=window.setTimeout(()=>{var t;let r,a;(0,k.XL)(i,{title:(t=e("New conversation"),r=v.find(e=>"user"===e.from),(a=r?.versions?.[0]?.content?.trim())?a.length>40?`${a.slice(0,40)}...`:a:r?.attachments?.[0]?.filename||t),model:h.model,group:h.group,messages:v}).then(L).catch(()=>{})},600);return()=>window.clearTimeout(t)},[i,h.group,h.model,v,L,e]);let{data:M,isLoading:I}=(0,o.I)({queryKey:["playground-models"],queryFn:async()=>{try{return await (0,k.QK)()}catch(t){return u.oR.error(t instanceof Error?t.message:e("Failed to load playground models")),[]}}}),P=z||I||0===b.length,{data:U}=(0,o.I)({queryKey:["playground-groups"],queryFn:async()=>{try{return await (0,k.K4)()}catch(t){return u.oR.error(t instanceof Error?t.message:e("Failed to load playground groups")),[]}}}),{options:F}=(0,w.x)(),D=F.length>0?F:j.map(e=>({value:e.value,label:e.label,desc:e.desc,ratio:e.ratio}));(0,n.useEffect)(()=>{if(!M)return;S(M);let e=M.some(e=>e.value===h.model);M.length>0&&!e&&R("model",M[0].value)},[M,h.model,S,R]),(0,n.useEffect)(()=>{U&&(E(U),!U.some(e=>e.value===h.group)&&U.length>0&&R("group",U.find(e=>"auto"===e.value)?.value??U.find(e=>"default"===e.value)?.value??U[0].value))},[U,E,h.group,R]);let B=(0,n.useCallback)(async r=>{let{text:a,attachments:s}=r,n=i;if(!n)try{let r=await (0,k.uQ)({title:a.trim().slice(0,40)||s[0]?.filename||e("New conversation"),model:h.model,group:h.group});n=r.id,g.current=r.id,x.current=r.id,await t({to:"/playground",search:{session:r.id},replace:!0}),L()}catch(t){g.current=null,x.current=null,u.oR.error(t instanceof Error?t.message:e("Failed to create chat"));return}let l=[...v,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return{key:(0,en.Ak)(),from:es.Ag.USER,versions:[el(e)],...t.length>0?{attachments:t}:{}}}(a,s),ec()];C(l),T(l)},[i,h.group,h.model,v,t,L,T,e,C]);(0,n.useEffect)(()=>{if(f.current||i||z||!M||!U)return;let e=M.some(e=>e.value===h.model),t=0===U.length||U.some(e=>e.value===h.group);if(!e||!t)return;f.current=!0;let r=(0,tt.F)();r&&B({text:r,attachments:[]})},[i,h.group,h.model,U,B,z,M]);let $=(0,n.useCallback)(e=>{A(e.key)},[]),G=(0,n.useCallback)(e=>{e||A(null)},[]),W=(0,n.useCallback)((e,t)=>{if(!O)return;let r=v.findIndex(e=>e.key===O);if(-1===r)return;let a=v.map(t=>t.key===O?{...t,versions:[{...t.versions[0],content:e}]}:t);if(A(null),!t||"user"!==a[r].from)return void C(a);let s=[...a.slice(0,r+1),ec()];C(s),T(s)},[O,v,C,T]);return(0,a.jsxs)("div",{className:"relative flex size-full overflow-hidden",children:[(0,a.jsx)(e3,{}),(0,a.jsxs)("div",{className:"mx-auto flex w-full max-w-[1040px] min-w-0 flex-1 flex-col overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-2 px-4 py-3",children:[(0,a.jsx)(y,{selectedModel:h.model,models:b,onModelChange:e=>R("model",e),disabled:P,className:"border-input bg-muted/40 hover:bg-muted/55 h-8 w-8 rounded-lg px-0 shadow-none sm:w-auto sm:max-w-64 sm:px-3 [&>span]:text-xs [&>span]:font-medium"}),D.length>1?(0,a.jsx)(N.e,{options:D,value:h.group,onValueChange:e=>R("group",e),placeholder:e("Select a group"),disabled:z,compact:!0}):null]}),(0,a.jsx)(ek,{messages:v,onCopyMessage:e=>{e.key},onRegenerateMessage:e=>{let t=v.findIndex(t=>t.key===e.key);if(-1===t)return;let r=[...v.slice(0,t),ec()];C(r),T(r)},onEditMessage:$,onDeleteMessage:e=>{C(v.filter(t=>
1t.key!==e.key))},isGenerating:z,editingKey:O,onCancelEdit:G,onSaveEdit:e=>W(e,!1),onSaveEditAndSubmit:e=>W(e,!0)})]}),(0,a.jsx)("div",{className:"w-full px-5 pb-4 md:px-6",children:(0,a.jsx)(eH,{disabled:z,isGenerating:z,webSearchEnabled:h.webSearchEnabled,onWebSearchChange:e=>R("webSearchEnabled",e),onStop:_,onSubmit:B})})]})]})}function ts(){return(0,a.jsx)(s.gZ,{className:"p-0",children:(0,a.jsx)(ta,{})})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.