1"use strict";(self.rspackChunknewapi_web=self.rspackChunknewapi_web||[]).push([[1473],{39864(e,t,r){r.r(t),r.d(t,{component:()=>t$});var s=r(72361),a=r(88592),n=r(68413),l=r(53540),o=r(15762),i=r(29384),d=r(55724),c=r(6702),u=r(20598),m=r(46775),x=r(33120),p=r(1755),h=r(54023),f=r(64577);let g="user",v="assistant",j="loading",b="streaming",y="complete",N="error",w="/pg/chat/completions",k={model:"gpt-4o",group:"auto",temperature:.7,top_p:1,max_tokens:4096,frequency_penalty:0,presence_penalty:0,seed:null,stream:!0},C={temperature:!0,top_p:!0,max_tokens:!1,frequency_penalty:!0,presence_penalty:!0,seed:!1},S="playground_config",A="playground_messages",z="playground_parameter_enabled",R="Request error occurred";async function M(e){return(await f.FH.post(w,e,{skipErrorHandler:!0})).data}async function L(){let{data:e}=await f.FH.get("/api/user/models");return e.success&&Array.isArray(e.data)?e.data.map(e=>({label:e,value:e})):[]}async function E(){let{data:e}=await f.FH.get("/api/user/self/groups");return e.success&&e.data?Object.entries(e.data).map(e=>{let[t,r]=e;return{label:t,value:t,ratio:r.ratio,desc:r.desc}}):[]}var _=r(81204),T=r(28769),F=r(24623),$=r(63162);let O=(0,n.createContext)(null),P=()=>{let e=(0,n.useContext)(O);if(!e)throw Error("Branch components must be used within Branch");return e},I=e=>{let{defaultBranch:t=0,onBranchChange:r,className:a,...l}=e,[o,i]=(0,n.useState)(t),[d,c]=(0,n.useState)([]),u=e=>{i(e),r?.(e)},m={currentBranch:o,totalBranches:d.length,goToPrevious:()=>{u(o>0?o-1:d.length-1)},goToNext:()=>{u(o<d.length-1?o+1:0)},branches:d,setBranches:c};return(0,s.jsx)(O.Provider,{value:m,children:(0,s.jsx)("div",{className:(0,_.cn)("grid w-full gap-2 [&>div]:pb-0",a),...l})})},B=e=>{let{children:t,...r}=e,{currentBranch:a,setBranches:l,branches:o}=P(),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,s.jsx)("div",{className:(0,_.cn)("grid gap-2 overflow-hidden [&>div]:pb-0",t===a?"block":"hidden"),...r,children:e},e.key))},G=e=>{let{className:t,from:r,...a}=e,{totalBranches:n}=P();return n<=1?null:(0,s.jsx)("div",{className:(0,_.cn)("flex items-center gap-2 self-end px-10","assistant"===r?"justify-start":"justify-end",t),...a})},D=e=>{let{className:t,children:r,...a}=e,{t:n}=(0,c.Bd)(),{goToPrevious:l,totalBranches:o}=P();return(0,s.jsx)(m.$,{"aria-label":n("Previous branch"),className:(0,_.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",...a,children:r??(0,s.jsx)(F.A,{size:14})})},U=e=>{let{className:t,children:r,...a}=e,{t:n}=(0,c.Bd)(),{goToNext:l,totalBranches:o}=P();return(0,s.jsx)(m.$,{"aria-label":n("Next branch"),className:(0,_.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",...a,children:r??(0,s.jsx)($.A,{size:14})})},W=e=>{let{className:t,...r}=e,{t:a}=(0,c.Bd)(),{currentBranch:n,totalBranches:l}=P();return(0,s.jsxs)("span",{className:(0,_.cn)("text-muted-foreground text-xs font-medium tabular-nums",t),...r,children:[n+1," ",a("of")," ",l]})};var q=r(45666),J=r(22669);let H=e=>{let{className:t,...r}=e;return(0,s.jsx)(J.z,{className:(0,_.cn)("relative flex-1 overflow-y-auto",t),initial:"smooth",resize:"smooth",role:"log",...r})},K=e=>{let{className:t,...r}=e;return(0,s.jsx)(J.z.Content,{className:(0,_.cn)("p-4",t),...r})},V=e=>{let{className:t,...r}=e,{isAtBottom:a,scrollToBottom:l}=(0,J.B)(),o=(0,n.useCallback)(()=>{l()},[l]);return!a&&(0,s.jsx)(m.$,{className:(0,_.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,s.jsx)(q.A,{className:"size-4","aria-hidden":"true"})})},Q=e=>{let{size:t=16}=e,{t:r}=(0,c.Bd)();return(0,s.jsxs)("svg",{height:t,strokeLinejoin:"round",style:{color:"currentcolor"},viewBox:"0 0 16 16",width:t,children:[(0,s.jsx)("title",{children:r("Loader")}),(0,s.jsxs)("g",{clipPath:"url(#clip0_2393_1490)",children:[(0,s.jsx)("path",{d:"M8 0V4",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M8 16V12",opacity:"0.5",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M3.29773 1.52783L5.64887 4.7639",opacity:"0.9",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M12.7023 1.52783L10.3511 4.7639",opacity:"0.1",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M12.7023 14.472L10.3511 11.236",opacity:"0.4",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M3.29773 14.472L5.64887 11.236",opacity:"0.6",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M15.6085 5.52783L11.8043 6.7639",opacity:"0.2",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M0.391602 10.472L4.19583 9.23598",opacity:"0.7",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M15.6085 10.4722L11.8043 9.2361",opacity:"0.3",stroke:"currentColor",strokeWidth:"1.5"}),(0,s.jsx)("path",{d:"M0.391602 5.52783L4.19583 6.7639",opacity:"0.8",stroke:"currentColor",strokeWidth:"1.5"})]}),(0,s.jsx)("defs",{children:(0,s.jsx)("clipPath",{id:"clip0_2393_1490",children:(0,s.jsx)("rect",{fill:"white",height:"16",width:"16"})})})]})},X=e=>{let{className:t,size:r=16,...a}=e;return(0,s.jsx)("div",{className:(0,_.cn)("inline-flex animate-spin items-center justify-center",t),...a,children:(0,s.jsx)(Q,{size:r})})};var Z=r(65291);r(21144);let Y=e=>{let{className:t,from:r,...a}=e;return(0,s.jsx)("div",{className:(0,_.cn)("group flex w-full items-end justify-end gap-2","user"===r?"is-user":"is-assistant flex-row-reverse justify-end",t),...a})},ee=(0,Z.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"}}),et=e=>{let{children:t,className:r,variant:a,...n}=e;return(0,s.jsx)("div",{className:(0,_.cn)(ee({variant:a,className:r})),...n,children:t})};var er=r(87830),es=r(37116);function ea(e){let{prop:t,defaultProp:r,onChange:s}=e,[a,l]=n.useState(r),o=void 0!==t,i=o?t:a,d=n.useRef(s);return n.useEffect(()=>{d.current=s}),[i,n.useCallback(e=>{if(o){let r="function"==typeof e?e(t):e;r!==t&&d.current?.(r)}else l(e)},[o,t])]}var en=r(38579),el=r(95164);let eo=(0,n.memo)(e=>{let{className:t,children:r,...a}=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,s.jsx)(el.jH,{className:(0,_.cn)("size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",t),...a,children:n})},(e,t)=>e.children===t.children);eo.displayName="Response";let ei=r(47768).P.p,ed=(0,n.memo)(e=>{let{children:t,className:r,duration:a=2,spread:l=2}=e,o=(0,n.useMemo)(()=>(t?.length??0)*l,[t,l]);return(0,s.jsx)(ei,{animate:{backgroundPosition:"0% center"},className:(0,_.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:a,ease:"linear"},children:t})}),ec=(0,n.createContext)(null),eu=(0,n.memo)(e=>{let{className:t,isStreaming:r=!1,open:a,defaultOpen:l=!0,onOpenChange:o,duration:i,children:d,...c}=e,[u,m]=ea({prop:a,defaultProp:l,onChange:o}),[x,p]=ea({prop:i,defaultProp:0}
1),[h,f]=(0,n.useState)(!1),[g,v]=(0,n.useState)(null);return(0,n.useEffect)(()=>{r?null===g&&v(Date.now()):null!==g&&(p(Math.ceil((Date.now()-g)/1e3)),v(null))},[r,g,p]),(0,n.useEffect)(()=>{if(l&&!r&&u&&!h){let e=setTimeout(()=>{m(!1),f(!0)},1e3);return()=>clearTimeout(e)}},[r,u,l,m,h]),(0,s.jsx)(ec.Provider,{value:{isStreaming:r,isOpen:u,setIsOpen:m,duration:x},children:(0,s.jsx)(en.Nt,{className:(0,_.cn)("not-prose mb-4",t),onOpenChange:e=>{m(e)},open:u,...c,children:d})})}),em=(0,n.memo)(e=>{let{className:t,children:r,...a}=e,{isStreaming:l,isOpen:o,duration:i}=(()=>{let e=(0,n.useContext)(ec);if(!e)throw Error("Reasoning components must be used within Reasoning");return e})();return(0,s.jsx)(en.R6,{className:(0,_.cn)("text-muted-foreground hover:text-foreground flex w-full items-center gap-2 text-sm transition-colors",t),...a,children:r??(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(er.A,{className:"size-4"}),l?(0,s.jsx)(ed,{duration:1,children:"Thinking..."}):void 0===i||0===i?(0,s.jsx)("p",{children:"Thought for a few seconds"}):(0,s.jsxs)("p",{children:["Thought for ",i," seconds"]}),(0,s.jsx)(es.A,{className:(0,_.cn)("size-4 transition-transform",o?"rotate-180":"rotate-0")})]})})}),ex=(0,n.memo)(e=>{let{className:t,children:r,...a}=e;return(0,s.jsx)(en.Ke,{className:(0,_.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),...a,children:(0,s.jsx)(eo,{className:"grid gap-2",children:r})})});eu.displayName="Reasoning",em.displayName="ReasoningTrigger",ex.displayName="ReasoningContent";var ep=r(95333);let eh=e=>{let{className:t,...r}=e;return(0,s.jsx)(en.Nt,{className:(0,_.cn)("not-prose text-primary mb-4 text-xs",t),...r})},ef=e=>{let{className:t,count:r,children:a,...n}=e,{t:l}=(0,c.Bd)();return(0,s.jsx)(en.R6,{className:(0,_.cn)("flex items-center gap-2",t),...n,children:a??(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("p",{className:"font-medium",children:[l("Used")," ",r," ",l("sources")]}),(0,s.jsx)(es.A,{className:"h-4 w-4"})]})})},eg=e=>{let{className:t,...r}=e;return(0,s.jsx)(en.Ke,{className:(0,_.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})},ev=e=>{let{href:t,title:r,children:a,...n}=e;return(0,s.jsx)("a",{className:"flex items-center gap-2",href:t,rel:"noreferrer",target:"_blank",...n,children:a??(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(ep.A,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"block font-medium",children:r})]})})};var ej=r(30633);function eb(e){return{id:(0,ej.Ak)(),content:e}}function ey(e){return e.versions[0]||{id:"default",content:""}}function eN(e,t){let r=ey(e);return{...e,versions:[{...r,content:t}]}}function ew(e){return{key:(0,ej.Ak)(),from:g,versions:[eb(e)]}}function ek(){return{key:(0,ej.Ak)(),from:v,versions:[eb("")],reasoning:void 0,isReasoningComplete:!1,isContentComplete:!1,isReasoningStreaming:!1,status:j}}function eC(e){let t=ey(e);return{role:e.from,content:t.content}}function eS(e){if(!e||!e.from||!e.versions.length)return!1;let t=e.versions[0]?.content;return void 0!==t&&("assistant"!==e.from||!!t.trim())}function eA(e){if(!e.includes("<think>"))return{visibleContent:e,reasoning:"",hasUnclosedTag:!1};let t=[],r=[],s=0,a=!1;for(;;){let n=e.indexOf("<think>",s);if(-1===n){s<e.length&&t.push(e.substring(s));break}n>s&&t.push(e.substring(s,n));let l=e.indexOf("</think>",n+7);if(-1===l){r.push(e.substring(n+7)),a=!0;break}r.push(e.substring(n+7,l)),s=l+8}return{visibleContent:t.join("").trim(),reasoning:r.join("\n\n").trim(),hasUnclosedTag:a}}function ez(e,t){if(0===e.length)return e;let r=e[e.length-1];if(!r||r.from!==v)return e;let s=[...e];return s[s.length-1]=t(r),s}function eR(e,t){let{visibleContent:r,reasoning:s}=eA(ey(e).content),a=t||e.reasoning?.content||s||"";return{...eN(e,r),reasoning:a?{content:a,duration:e.reasoning?.duration||0}:void 0,isReasoningStreaming:!1}}var eM=r(67834),eL=r(99893),eE=r(54622),e_=r(5825),eT=r(14653),eF=r(52606),e$=r(34126);function eO(e){let{icon:t,label:r,onClick:a,disabled:n=!1,className:l="",variant:o="default"}=e;return(0,s.jsxs)(e$.m_,{children:[(0,s.jsx)(e$.k$,{render:(0,s.jsx)(m.$,{variant:"ghost",size:"icon",className:`${"destructive"===o?"size-7 text-muted-foreground hover:text-destructive":"size-7 text-muted-foreground hover:text-foreground"} ${l}`,onClick:a,disabled:n,"aria-label":r}),children:(0,s.jsx)(t,{className:"size-4"})}),(0,s.jsx)(e$.ZI,{children:(0,s.jsx)("p",{children:r})})]})}function eP(e){let{message:t,onCopy:r,onRegenerate:a,onEdit:l,onDelete:o,isGenerating:i=!1,alwaysVisible:d=!1,className:c=""}=e,{copiedText:m,copyToClipboard:x}=(0,eF.C)(),{guardAction:p}={guardAction:(0,n.useCallback)(e=>()=>{i?u.oR.warning("Please wait for the current generation to complete"):e()},[i])},h="assistant"===t.from,f=t.versions.some(e=>e.content),g="loading"===t.status||"streaming"===t.status,v=t.versions[0]?.content||"",j=m===v,b=p(()=>a?.(t)),y=p(()=>l?.(t)),N=p(()=>o?.(t));return(0,s.jsx)(e$.Bc,{delay:300,children:(0,s.jsxs)("div",{className:`flex items-center gap-0.5 transition-opacity ${d?"opacity-100":"opacity-0 group-hover:opacity-100 max-md:opacity-100"} ${c}`,children:[f&&(0,s.jsx)(eO,{icon:j?eM.A:eL.A,label:j?"Copied!":"Copy",onClick:()=>{v?(x(v),r?.(t)):u.oR.warning("No content to copy")},className:j?"text-green-600":""}),h&&!g&&a&&(0,s.jsx)(eO,{icon:eE.A,label:"Regenerate",onClick:b,disabled:i}),f&&l&&(0,s.jsx)(eO,{icon:e_.A,label:"Edit",onClick:y,disabled:i}),o&&(0,s.jsx)(eO,{icon:eT.A,label:"Delete",onClick:N,disabled:i,variant:"destructive"})]})})}var eI=r(96855),eB=r(26197),eG=r(52671),eD=r(20032),eU=r(77405);function eW(e){let{message:t,className:r=""}=e,{t:a}=(0,c.Bd)(),n=(0,eD.n)(e=>e.auth.user),l=n?.role!=null&&n.role>=10;if(t.status!==N)return null;let o=t.versions[0]?.content||"An unknown error occurred";return"model_price_error"===t.errorCode?(0,s.jsxs)(eU.Fc,{variant:"default",className:r,children:[(0,s.jsx)(eI.A,{className:"text-orange-500"}),(0,s.jsx)(eU.XL,{children:a("Model Price Not Configured")}),(0,s.jsxs)(eU.TN,{className:"space-y-2",children:[(0,s.jsx)("p",{children:o}),l&&(0,s.jsxs)(m.$,{variant:"outline",size:"sm",onClick:()=>window.open("/console/setting?tab=ratio","_blank"),children:[(0,s.jsx)(eB.A,{className:"mr-1 h-3.5 w-3.5"}),a("Go to Settings")]})]})]}):(0,s.jsxs)(eU.Fc,{variant:"destructive",className:r,children:[(0,s.jsx)(eG.A,{}),(0,s.jsx)(eU.XL,{children:a("Error")}),(0,s.jsx)(eU.TN,{children:o})]})}function eq(e){let{messages:t,onCopyMessage:r,onRegenerateMessage:a,onEditMessage:l,onDeleteMessage:o,isGenerating:i=!1,editingKey:d,onSaveEdit:c,onCancelEdit:u,onSaveEditAndSubmit:x}
1=e,[p,h]=(0,n.useState)(""),[f,j]=(0,n.useState)("");(0,n.useEffect)(()=>{if(!d)return;let e=t.find(e=>e.key===d),r=e?.versions?.[0]?.content||"";h(r),j(r)},[d,t]);let b=(0,n.useMemo)(()=>!p.trim(),[p]),y=(0,n.useMemo)(()=>p!==f,[p,f]);return(0,s.jsxs)(H,{children:[(0,s.jsx)(K,{className:"p-0",children:(0,s.jsx)("div",{className:"mx-auto w-full max-w-4xl px-4 py-4",children:t.map((e,n)=>{let{versions:f=[]}=e,j=n===t.length-1&&e.from===v;return(0,s.jsxs)(I,{defaultBranch:0,children:[(0,s.jsx)(B,{children:f.map((t,n)=>{let f,N,w,k,C,S,A;return(0,s.jsx)(Y,{className:"group flex-row-reverse",from:e.from,children:(0,s.jsx)("div",{className:"w-full min-w-0 flex-1 basis-full py-1",children:d===e.key?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(T.T,{value:p,onChange:e=>h(e.target.value),className:"font-mono text-sm",rows:8}),(0,s.jsxs)("div",{className:"flex gap-2",children:[e.from===g&&(0,s.jsx)(m.$,{size:"sm",onClick:()=>x?.(p),disabled:b||!y,children:"Save & Submit"}),(0,s.jsx)(m.$,{size:"sm",onClick:()=>c?.(p),disabled:b||!y,children:"Save"}),(0,s.jsx)(m.$,{size:"sm",variant:"outline",onClick:()=>u?.(!1),children:"Cancel"})]})]}):(0,s.jsx)(s.Fragment,{children:(f=e.from===v,N=!!e.sources?.length,w=f&&!!e.reasoning?.content,k=f&&!e.isReasoningStreaming&&("loading"===e.status||"streaming"===e.status&&!t.content),C=(e.from===g||!e.isReasoningStreaming)&&!!t.content,S=f?eA(t.content).visibleContent:t.content,A=(0,s.jsx)(eP,{message:e,onCopy:r,onRegenerate:a,onEdit:l,onDelete:o,isGenerating:i,alwaysVisible:j,className:"mt-1"}),(0,s.jsxs)(s.Fragment,{children:[N&&(0,s.jsxs)(eh,{children:[(0,s.jsx)(ef,{count:e.sources.length}),(0,s.jsx)(eg,{children:e.sources.map((t,r)=>(0,s.jsx)(ev,{href:t.href,title:t.title},`${e.key}-source-${r}`))})]}),w&&(0,s.jsxs)(eu,{defaultOpen:!0,isStreaming:e.isReasoningStreaming,children:[(0,s.jsx)(em,{}),(0,s.jsx)(ex,{children:e.reasoning.content})]}),k&&(0,s.jsxs)("div",{className:"flex items-center gap-2 py-2",children:[(0,s.jsx)(X,{}),(0,s.jsx)(ed,{className:"text-sm",duration:1,children:"Responding..."})]}),"error"===e.status?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(eW,{message:e,className:"mb-2"}),A]}):C&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(et,{variant:"flat",className:(0,_.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-3xl 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:(0,s.jsx)(eo,{children:S})}),A]})]}))})})},`${e.key}-${t.id}-${n}`)})}),f.length>1&&(0,s.jsxs)(G,{className:"px-0",from:e.from,children:[(0,s.jsx)(D,{}),(0,s.jsx)(W,{}),(0,s.jsx)(U,{})]})]},e.key)})})}),(0,s.jsx)(V,{})]})}var eJ=r(46753),eH=r(3729),eK=r(98915),eV=r(59211),eQ=r(57961),eX=r(47590),eZ=r(88344),eY=r(66701),e0=r(90492),e1=r(44175),e2=r(67733),e4=r(87807),e3=r(38384),e5=r(72130),e6=r(24328),e7=r(93833);r(82243);let e8=(0,n.createContext)(null),e9=(0,n.createContext)(null),te=()=>(0,n.useContext)(e8),tt=(0,n.createContext)(null),tr=e=>{let{className:t,groupClassName:r,accept:a,multiple:l,globalDrop:o,syncHiddenInput:i,maxFiles:d,maxFileSize:u,onError:m,onSubmit:x,children:p,...h}=e,{t:f}=(0,c.Bd)(),g=te(),v=!!g,j=(0,n.useRef)(null),b=(0,n.useRef)(null),y=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=b.current?.closest("form");e instanceof HTMLFormElement&&(y.current=e)},[]);let[N,w]=(0,n.useState)([]),k=v?g.attachments.files:N,C=(0,n.useCallback)(()=>{j.current?.click()},[]),S=(0,n.useCallback)(e=>!a||""===a.trim()||!a.includes("image/*")||e.type.startsWith("image/"),[a]),A=(0,n.useCallback)(e=>{let t=Array.from(e),r=t.filter(e=>S(e));if(t.length&&0===r.length)return void m?.({code:"accept",message:f("No files match the accepted types.")});let s=r.filter(e=>!u||e.size<=u);r.length>0&&0===s.length?m?.({code:"max_file_size",message:f("All files exceed the maximum size.")}):w(e=>{let t="number"==typeof d?Math.max(0,d-e.length):void 0,r="number"==typeof t?s.slice(0,t):s;"number"==typeof t&&s.length>t&&m?.({code:"max_files",message:f("Too many files. Some were not added.")});let a=[];for(let e of r)a.push({id:(0,ej.Ak)(),type:"file",url:URL.createObjectURL(e),mediaType:e.type,filename:e.name});return e.concat(a)})},[S,d,u,m,f]),z=(0,n.useMemo)(()=>g?e=>g.attachments.add(e):A,[g,A]),R=(0,n.useMemo)(()=>g?e=>g.attachments.remove(e):e=>w(t=>{let r=t.find(t=>
1t.id===e);return r?.url&&URL.revokeObjectURL(r.url),t.filter(t=>t.id!==e)}),[g]),M=(0,n.useMemo)(()=>g?()=>g.attachments.clear():()=>w(e=>{for(let t of e)t.url&&URL.revokeObjectURL(t.url);return[]}),[g]),L=(0,n.useMemo)(()=>g?()=>g.attachments.openFileDialog():C,[g,C]);(0,n.useEffect)(()=>{v&&g.__registerFileInput(j,()=>j.current?.click())},[v,g]),(0,n.useEffect)(()=>{i&&j.current&&0===k.length&&(j.current.value="")},[k,i]),(0,n.useEffect)(()=>{let e=y.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&&z(e.dataTransfer.files)};return e.addEventListener("dragover",t),e.addEventListener("drop",r),()=>{e.removeEventListener("dragover",t),e.removeEventListener("drop",r)}},[z]),(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&&z(e.dataTransfer.files)};return document.addEventListener("dragover",e),document.addEventListener("drop",t),()=>{document.removeEventListener("dragover",e),document.removeEventListener("drop",t)}},[z,o]),(0,n.useEffect)(()=>()=>{if(!v)for(let e of k)e.url&&URL.revokeObjectURL(e.url)},[v,k]);let E=async e=>{let t=await fetch(e),r=await t.blob();return new Promise((e,t)=>{let s=new FileReader;s.onloadend=()=>e(s.result),s.onerror=t,s.readAsDataURL(r)})},T=(0,n.useMemo)(()=>({files:k.map(e=>({...e,id:e.id})),add:z,remove:R,clear:M,openFileDialog:L,fileInputRef:j}),[k,z,R,M,L]),F=(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{"aria-hidden":"true",className:"hidden",ref:b}),(0,s.jsx)("input",{accept:a,"aria-label":f("Upload files"),className:"hidden",multiple:l,onChange:e=>{e.currentTarget.files&&z(e.currentTarget.files)},ref:j,title:f("Upload files"),type:"file"}),(0,s.jsx)("form",{className:(0,_.cn)("w-full",t),onSubmit:e=>{e.preventDefault();let t=e.currentTarget,r=v?g.textInput.value:new FormData(t).get("message")||"";v||t.reset(),Promise.all(k.map(async e=>{let{id:t,...r}=e;return r.url&&r.url.startsWith("blob:")?{...r,url:await E(r.url)}:r})).then(t=>{try{let s=x({text:r,files:t},e);s instanceof Promise?s.then(()=>{M(),v&&g.textInput.clear()}).catch(()=>{}):(M(),v&&g.textInput.clear())}catch(e){}})},...h,children:(0,s.jsx)(e7.MG,{className:r,children:p})})]});return v?F:(0,s.jsx)(tt.Provider,{value:T,children:F})},ts=e=>{let{onChange:t,className:r,placeholder:a,...l}=e,{t:o}=(0,c.Bd)(),i=te(),d=(()=>{let e=(0,n.useContext)(e9),t=(0,n.useContext)(tt),r=e??t;if(!r)throw Error("usePromptInputAttachments must be used within a PromptInput or PromptInputProvider");return r})(),u=a??o("What would you like to know?"),[m,x]=(0,n.useState)(!1),p=i?{value:i.textInput.value,onChange:e=>{i.textInput.setInput(e.currentTarget.value),t?.(e)}}:{onChange:t};return(0,s.jsx)(e7.oR,{className:(0,_.cn)("field-sizing-content max-h-48 min-h-16",r),name:"message",onCompositionEnd:()=>x(!1),onCompositionStart:()=>x(!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&&d.files.length>0){e.preventDefault();let t=d.files.length>0?d.files[d.files.length-1]:void 0;t&&d.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(),d.add(r))},placeholder:u,...l,...p})},ta=e=>{let{className:t,...r}=e;return(0,s.jsx)(e7.Sq,{align:"block-end",className:(0,_.cn)("justify-between gap-1",t),...r})},tn=e=>{let{className:t,...r}=e;return(0,s.jsx)("div",{className:(0,_.cn)("flex items-center gap-1",t),...r})},tl=e=>{let{variant:t="ghost",className:r,size:a,...l}=e,o=a??(n.Children.count(l.children)>1?"sm":"icon-sm");return(0,s.jsx)(e7.Ik,{className:(0,_.cn)(r),size:o,type:"button",variant:t,...l})};var to=r(3676);let ti=e=>{let{className:t,children:r,...a}=e;return(0,s.jsxs)(to.F,{className:"w-full overflow-x-auto whitespace-nowrap",...a,children:[(0,s.jsx)("div",{className:(0,_.cn)("flex w-max flex-nowrap items-center gap-2",t),children:r}),(0,s.jsx)(to.$,{className:"hidden",orientation:"horizontal"})]})},td=e=>{let{suggestion:t,onClick:r,className:a,variant:n="outline",size:l="sm",children:o,...i}=e;return(0,s.jsx)(m.$,{className:(0,_.cn)("cursor-pointer px-4",a),onClick:()=>{r?.(t)},size:l,type:"button",variant:n,...i,children:o||t})};var tc=r(32044),tu=r(4421),tm=r(20468),tx=r(23448),tp=r(15875);function th(e){let{...t}=e;return(0,s.jsx)(tp._s.Root,{"data-slot":"drawer",...t})}function tf(e){let{...t}=e;return(0,s.jsx)(tp._s.Trigger,{"data-slot":"drawer-trigger",...t})}function tg(e){let{...t}=e;return(0,s.jsx)(tp._s.Portal,{"data-slot":"drawer-portal",...t})}function tv(e){let{className:t,...r}=e;return(0,s.jsx)(tp._s.Overlay,{"data-slot":"drawer-overlay",className:(0,_.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 tj(e){let{className:t,children:r,...a}=e;return(0,s.jsxs)(tg,{"data-slot":"drawer-portal",children:[(0,s.jsx)(tv,{}),(0,s.jsxs)(tp._s.Content,{"data-slot":"drawer-content",className:(0,_.cn)("group/drawer-content bg-popover text-popover-foreground fixed z-50 flex h-auto flex-col text-sm 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-xl 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),...a,children:[(0,s.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 tb(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"drawer-header",className:(0,_.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 ty(e){let{className:t,...r}=e;return(0,s.jsx)(tp._s.Title,{"data-slot":"drawer-title",className:(0,_.cn)("text-foreground text-base font-medium",t),...r})}var tN=r(48196);let tw=n.forwardRef((e,t)=>
1{let{currentLabel:r,triggerClassName:a,isDisabled:n,...l}=e;return(0,s.jsxs)(m.$,{ref:t,variant:"outline",role:"combobox",size:"sm",disabled:n,className:(0,_.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",a),...l,children:[(0,s.jsx)(tc.A,{className:"text-muted-foreground block size-4 sm:hidden"}),(0,s.jsx)("span",{className:"text-muted-foreground sm:text-foreground hidden truncate text-xs sm:block",children:r}),(0,s.jsx)(tu.A,{className:"text-muted-foreground hidden h-4 w-4 opacity-50 sm:block"})]})});tw.displayName="ModelTriggerButton";let tk=n.forwardRef((e,t)=>{let{currentLabel:r,triggerClassName:a,isDisabled:n,...l}=e;return(0,s.jsxs)(m.$,{ref:t,variant:"outline",role:"combobox",size:"sm",disabled:n,className:(0,_.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",a),...l,children:[(0,s.jsx)(tm.A,{className:"text-muted-foreground block size-4 sm:hidden"}),(0,s.jsx)("span",{className:"text-muted-foreground sm:text-foreground hidden truncate text-xs sm:block",children:r}),(0,s.jsx)(tu.A,{className:"text-muted-foreground hidden h-4 w-4 opacity-50 sm:block"})]})});tk.displayName="GroupTriggerButton";let tC=n.memo(e=>{let{selectedModel:t,models:r,onModelChange:a,className:l,disabled:o=!1}=e,{t:i}
1=(0,c.Bd)(),[d,u]=(0,n.useState)(!1),[m,x]=(0,n.useState)(""),p=(0,tx.a)(),h=(0,n.useMemo)(()=>r.find(e=>e.value===t),[r,t]),f=(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]),g=(0,n.useMemo)(()=>{if(!m.trim())return f;let e=m.toLowerCase(),t={};return Object.entries(f).forEach(r=>{let[s,a]=r,n=a.filter(t=>t.label.toLowerCase().includes(e)||t.value.toLowerCase().includes(e)||t.description?.toLowerCase().includes(e));n.length>0&&(t[s]=n)}),t},[f,m]),v=(0,n.useCallback)(e=>{a(e),u(!1),x("")},[a]),j=()=>(0,s.jsxs)(e6.uB,{className:(0,_.cn)(p?"h-full flex-1 rounded-lg border-0 bg-transparent":"rounded-lg"),filter:()=>1,shouldFilter:!1,children:[!p&&(0,s.jsx)(e6.G7,{placeholder:i("Search models..."),className:"h-9",value:m,onValueChange:x}),(0,s.jsx)(e6.xL,{children:i("No model found.")}),(0,s.jsx)(e6.oI,{className:p?"!max-h-full flex-1 p-2":"max-h-[300px]",children:0===Object.keys(g).length?(0,s.jsx)("div",{className:"text-muted-foreground px-3 py-6 text-xs",children:i("No model found.")}):Object.entries(g).map((e,r)=>{let[a,n]=e;return(0,s.jsxs)(e6.L$,{children:[r>0&&(0,s.jsx)("div",{className:"border-border my-1 border-t"}),(0,s.jsx)("div",{className:(0,_.cn)("text-muted-foreground px-2 py-1 font-medium",p?"text-xs":"text-[10px]"),children:i("{{category}} Models",{category:a})}),n.map(e=>(0,s.jsx)(e6.h_,{value:e.value,onSelect:v,className:(0,_.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,s.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-1",children:[(0,s.jsx)("div",{className:(0,_.cn)("truncate font-medium",p?"text-sm":"text-[11px]"),children:(0,s.jsx)("span",{className:"inline",children:e.label})}),(0,s.jsx)(eM.A,{className:(0,_.cn)("h-4 w-4 flex-shrink-0",t===e.value?"opacity-100":"opacity-0")})]})},e.value))]},a)})})]});return(0,s.jsx)(s.Fragment,{children:p?(0,s.jsxs)(th,{open:d,onOpenChange:u,children:[(0,s.jsx)(tf,{asChild:!0,children:(0,s.jsx)(tw,{currentLabel:h?.label||i("Model"),triggerClassName:l,isDisabled:o,"aria-expanded":d})}),(0,s.jsxs)(tj,{className:"flex max-h-[80vh] min-h-[60vh] flex-col",children:[(0,s.jsx)(tb,{className:"flex-shrink-0 pb-4",children:(0,s.jsx)(ty,{className:"flex items-center gap-2 text-left text-lg font-medium",children:i("Select Model")})}),(0,s.jsx)("div",{className:"flex min-h-0 flex-1 flex-col",children:j()})]})]}):(0,s.jsxs)(tN.AM,{open:d,onOpenChange:u,children:[(0,s.jsx)(tN.Wv,{render:(0,s.jsx)(tw,{currentLabel:h?.label||i("Model"),triggerClassName:l,isDisabled:o,"aria-expanded":d})}),(0,s.jsx)(tN.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:j()})]})})});tC.displayName="ModelSelector";let tS=n.memo(e=>{let{selectedGroup:t,groups:r,onGroupChange:a,className:l,disabled:o=!1}=e,{t:i}
1=(0,c.Bd)(),[d,u]=(0,n.useState)(!1),x=(0,tx.a)(),p=(0,n.useMemo)(()=>r.find(e=>e.value===t),[r,t]),h=(0,n.useCallback)(e=>{a(e),u(!1)},[a]);return(0,s.jsx)(s.Fragment,{children:x?(0,s.jsxs)(th,{open:d,onOpenChange:u,children:[(0,s.jsx)(tf,{asChild:!0,children:(0,s.jsx)(tk,{currentLabel:p?.label||i("Group"),triggerClassName:l,isDisabled:o,"aria-expanded":d})}),(0,s.jsxs)(tj,{className:"max-h-[80vh]",children:[(0,s.jsx)(tb,{className:"pb-4 text-left",children:(0,s.jsx)(ty,{children:i("Choose Group")})}),(0,s.jsx)("div",{className:"max-h-[calc(80vh-100px)] overflow-y-auto px-4 pb-6",children:(0,s.jsx)("div",{className:"space-y-2",children:r.map(e=>(0,s.jsxs)(m.$,{variant:"outline",onClick:()=>h(e.value),className:(0,_.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,s.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:(0,s.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,s.jsx)("span",{className:"text-foreground text-sm font-medium",children:e.label}),(e.desc||e.description)&&(0,s.jsxs)("div",{className:"text-muted-foreground mt-0.5 text-xs",children:[e.desc||e.description,e.ratio&&(0,s.jsxs)(s.Fragment,{children:[" · ",i("Ratio: {{value}}",{value:e.ratio})]})]})]})}),(0,s.jsx)(eM.A,{className:(0,_.cn)("ml-3 h-5 w-5 shrink-0",t===e.value?"opacity-100":"opacity-0")})]},e.value))})})]})]}):(0,s.jsxs)(tN.AM,{open:d,onOpenChange:u,children:[(0,s.jsx)(tN.Wv,{render:(0,s.jsx)(tk,{currentLabel:p?.label||i("Group"),triggerClassName:l,isDisabled:o,"aria-expanded":d})}),(0,s.jsx)(tN.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,s.jsxs)(e6.uB,{className:(0,_.cn)(x?"h-full flex-1 rounded-lg border-0 bg-transparent":"rounded-lg"),filter:(e,t)=>{let s=r.find(t=>t.value===e);if(!s||!t)return 1;let a=t.toLowerCase();return+!![s.label,s.description||"",s.value].join(" ").toLowerCase().includes(a)},children:[(0,s.jsx)(e6.G7,{placeholder:i("Search groups..."),className:"h-9"}),(0,s.jsx)(e6.xL,{children:i("No group found.")}),(0,s.jsx)(e6.oI,{className:x?"!max-h-full flex-1 p-2":"max-h-[240px]",children:(0,s.jsxs)(e6.L$,{children:[(0,s.jsx)("div",{className:"text-muted-foreground px-2 py-1 text-[10px] font-medium",children:i("Model Group")}),r.map(e=>(0,s.jsxs)(e6.h_,{value:e.value,onSelect:h,className:(0,_.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,s.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 pr-4",children:(0,s.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,s.jsx)("span",{className:"text-foreground truncate text-[11px] font-medium",children:e.label}),(e.desc||e.description)&&(0,s.jsxs)("div",{className:"text-muted-foreground truncate text-[9px] leading-tight",children:[e.desc||e.description,e.ratio&&(0,s.jsxs)(s.Fragment,{children:[" · ",i("Ratio: {{value}}",{value:e.ratio})]})]})]})}),(0,s.jsx)(eM.A,{className:(0,_.cn)("ml-auto h-4 w-4",t===e.value?"opacity-100":"opacity-0")})]},e.value))]})})]})})]})})});tS.displayName="GroupSelector";let tA=e=>{let{selectedModel:t,models:r,onModelChange:a,selectedGroup:n,groups:l,onGroupChange:o,className:i,disabled:d=!1}=e;return(0,s.jsxs)("div",{className:(0,_.cn)("flex items-center gap-2",i),children:[(0,s.jsx)(tS,{selectedGroup:n,groups:l,onGroupChange:o,disabled:d}),(0,s.jsx)(tC,{selectedModel:t,models:r,onModelChange:a,disabled:d})]})},tz=[{icon:eJ.A,text:"Analyze data",color:"#76d0eb"},{icon:eH.A,text:"Surprise me",color:"#76d0eb"},{icon:eK.A,text:"Summarize text",color:"#ea8444"},{icon:eV.A,text:"Code",color:"#6c71ff"},{icon:eQ.A,text:"Get advice",color:"#76d0eb"},{icon:null,text:"More"}];function tR(e){let{onSubmit:t,onStop:r,disabled:a,isGenerating:l,models:o,modelValue:i,onModelChange:d,isModelLoading:m=!1,groups:x,groupValue:p,onGroupChange:h}=e,{t:f}
1=(0,c.Bd)(),[g,v]=(0,n.useState)(""),j=a||m||0===o.length,b=a||0===x.length,y=e=>{u.oR.info(f("Feature in development"),{description:e})};return(0,s.jsxs)("div",{className:"grid shrink-0 gap-4 px-1 md:pb-4",children:[(0,s.jsxs)(tr,{groupClassName:"rounded-xl",onSubmit:e=>{e.text?.trim()&&!a&&(t(e.text),v(""))},children:[(0,s.jsx)(ts,{autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:!1,className:"px-5 md:text-base",disabled:a,onChange:e=>v(e.target.value),placeholder:f("Ask anything"),value:g}),(0,s.jsxs)(ta,{className:"p-2.5",children:[(0,s.jsxs)(tn,{children:[(0,s.jsxs)(e5.rI,{children:[(0,s.jsxs)(e5.ty,{render:(0,s.jsx)(tl,{className:"border font-medium",disabled:a,variant:"outline"}),children:[(0,s.jsx)(eX.A,{size:16}),(0,s.jsx)("span",{className:"hidden sm:inline",children:f("Attach")}),(0,s.jsx)("span",{className:"sr-only sm:hidden",children:f("Attach")})]}),(0,s.jsxs)(e5.SQ,{align:"start",children:[(0,s.jsxs)(e5._2,{onClick:()=>y("upload-file"),children:[(0,s.jsx)(eZ.A,{className:"mr-2",size:16}),f("Upload file")]}),(0,s.jsxs)(e5._2,{onClick:()=>y("upload-photo"),children:[(0,s.jsx)(eY.A,{className:"mr-2",size:16}),f("Upload photo")]}),(0,s.jsxs)(e5._2,{onClick:()=>y("take-screenshot"),children:[(0,s.jsx)(e0.A,{className:"mr-2",size:16}),f("Take screenshot")]}),(0,s.jsxs)(e5._2,{onClick:()=>y("take-photo"),children:[(0,s.jsx)(e1.A,{className:"mr-2",size:16}),f("Take photo")]})]})]}),(0,s.jsxs)(tl,{className:"border font-medium",disabled:a,onClick:()=>u.oR.info(f("Search feature in development")),variant:"outline",children:[(0,s.jsx)(e2.A,{size:16}),(0,s.jsx)("span",{className:"hidden sm:inline",children:f("Search")}),(0,s.jsx)("span",{className:"sr-only sm:hidden",children:f("Search")})]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5 md:gap-2",children:[(0,s.jsx)(tA,{selectedModel:i,models:o,onModelChange:d,selectedGroup:p,groups:x,onGroupChange:h,disabled:j||b}),l&&r?(0,s.jsxs)(tl,{className:"text-foreground font-medium",onClick:r,variant:"secondary",children:[(0,s.jsx)(e4.A,{className:"fill-current",size:16}),(0,s.jsx)("span",{className:"hidden sm:inline",children:f("Stop")}),(0,s.jsx)("span",{className:"sr-only sm:hidden",children:f("Stop")})]}):(0,s.jsxs)(tl,{className:"text-foreground font-medium",disabled:a||!g.trim(),type:"submit",variant:"secondary",children:[(0,s.jsx)(e3.A,{size:16}),(0,s.jsx)("span",{className:"hidden sm:inline",children:f("Send")}),(0,s.jsx)("span",{className:"sr-only sm:hidden",children:f("Send")})]})]})]})]}),(0,s.jsx)(ti,{children:tz.map(e=>{let{icon:r,text:a,color:n}=e;return(0,s.jsxs)(td,{className:`text-xs font-normal sm:text-sm ${"More"===a?"hidden sm:flex":""}`,onClick:()=>{t(a)},suggestion:a,children:[r&&(0,s.jsx)(r,{size:16,style:{color:n}}),a]},a)})})]})}function tM(e){try{localStorage.setItem(S,JSON.stringify(e))}catch(e){console.error("Failed to save config:",e)}}function tL(e){try{localStorage.setItem(z,JSON.stringify(e))}catch(e){console.error("Failed to save parameter enabled:",e)}}function tE(e){try{localStorage.setItem(A,JSON.stringify(e))}catch(e){console.error("Failed to save messages:",e)}}var t_=r(69788);function tT(e,t,r){let s=e.filter(eS).map(eC),a={model:t.model,group:t.group,messages:s,stream:t.stream};return["temperature","top_p","max_tokens","frequency_penalty","presence_penalty","seed"].forEach(e=>{if(r[e]){let r=t[e];null!=r&&(a[e]=r)}}),a}function tF(){let{t:e}=(0,c.Bd)(),{config:t,parameterEnabled:r,messages:a,models:g,groups:_,updateMessages:T,setModels:F,setGroups:$,updateConfig:O}=function(){let[e,t]=(0,n.useState)(()=>{let e=function(){try{let e=localStorage.getItem(S);if(e)return JSON.parse(e)}catch(e){console.error("Failed to load config:",e)}return{}}();return{...k,...e}}),[r,s]=(0,n.useState)(()=>{let e=function(){try{let e=localStorage.getItem(z);if(e)return JSON.parse(e)}catch(e){console.error("Failed to load parameter enabled:",e)}return{}}();return{...C,...e}}
1),[a,l]=(0,n.useState)(()=>(function(){try{let e=localStorage.getItem(A);if(e){let t=JSON.parse(e),r=function(e){let t=-1;for(let r=e.length-1;r>=0;r--){let s=e[r];if(s?.from===v&&(s?.status===j||s?.status===b)){t=r;break}}if(-1===t)return e;let r=eR(e[t]),s=r.versions?.[0]?.content?.trim(),a=r.reasoning?.content?.trim(),n=s||a?{...r,status:y,isReasoningStreaming:!1}:{...eN(r,`${R}: Generation was interrupted`),status:N,isReasoningStreaming:!1},l=[...e];return l[t]=n,l}(t);return r!==t&&tE(r),r}}catch(e){console.error("Failed to load messages:",e)}return null})()||[]),[o,i]=(0,n.useState)([]),[d,c]=(0,n.useState)([]),u=(0,n.useCallback)((e,r)=>{t(t=>{let s={...t,[e]:r};return tM(s),s})},[]),m=(0,n.useCallback)((e,t)=>{s(r=>{let s={...r,[e]:t};return tL(s),s})},[]),x=(0,n.useCallback)(e=>{l(t=>{let r="function"==typeof e?e(t):e;return tE(r),r})},[]),p=(0,n.useCallback)(()=>{x([])},[x]);return{config:e,parameterEnabled:r,messages:a,models:o,groups:d,setModels:i,setGroups:c,updateConfig:u,updateParameterEnabled:m,updateMessages:x,clearMessages:p,resetConfig:(0,n.useCallback)(()=>{t(k),s(C),tM(k),tL(C)},[])}}(),{sendChat:P,stopGeneration:I,isGenerating:B}=function(e){let t,r,s,{config:a,parameterEnabled:l,onMessageUpdate:o}=e,{sendStreamRequest:i,stopStream:d,isStreaming:c}=(t=(0,n.useRef)(null),r=(0,n.useRef)(!1),s=(0,n.useCallback)((e,s,a,n)=>{let l=new t_.y(w,{headers:(0,f.Ql)(),method:"POST",payload:JSON.stringify(e)});t.current=l,r.current=!1;let o=()=>{l.close(),t.current=null},i=(e,t)=>{r.current||(n(e,t),o())};l.addEventListener("message",e=>{if("[DONE]"===e.data){r.current=!0,o(),a();return}try{let t=JSON.parse(e.data),r=t.choices?.[0]?.delta;r&&(r.reasoning_content&&s("reasoning",r.reasoning_content),r.content&&s("content",r.content))}catch(e){console.error("Failed to parse SSE message:",e),i("Error parsing response data")}}),l.addEventListener("error",e=>{if(2!==l.readyState){let t;console.error("SSE Error:",e);let r=e.data||R;if(e.data)try{let s=JSON.parse(e.data);s?.error&&(r=s.error.message||r,t=s.error.code||void 0)}catch{}i(r,t)}}),l.addEventListener("readystatechange",e=>{let t=l.status;void 0!==e.readyState&&e.readyState>=2&&void 0!==t&&200!==t&&i(`HTTP ${t}: Connection closed`)});try{l.stream()}catch(e){console.error("Failed to start SSE stream:",e),n("Error establishing connection"),t.current=null}},[]),{sendStreamRequest:s,stopStream:(0,n.useCallback)(()=>{t.current&&(t.current.close(),t.current=null)},[]),isStreaming:null!==t.current}),m=(0,n.useCallback)((e,t)=>{o(r=>ez(r,r=>r.status===N?r:"reasoning"===e?{...r,reasoning:{content:(r.reasoning?.content||"")+t,duration:0},isReasoningStreaming:!0,status:b}:{...function(e,t){let r=ey(e),s=t?r.content+t:r.content,{reasoning:a,hasUnclosedTag:n}=eA(s),l=a?{content:a,duration:0}:e.reasoning;return{...eN(e,s),reasoning:l,isReasoningStreaming:n}}(r,t),status:b}))},[o]),x=(0,n.useCallback)(()=>{o(e=>ez(e,e=>e.status===y||e.status===N?e:{...eR(e),status:y}))},[o]),p=(0,n.useCallback)((e,t)=>{u.oR.error(e),o(r=>ez(r,r=>({...eN(r,`${R}: ${e}`),status:N,isReasoningStreaming:!1,errorCode:t||null})))},[o]),h=(0,n.useCallback)(e=>{i(tT(e,a,l),m,x,p)},[a,l,i,m,x,p]),g=(0,n.useCallback)(async e=>{let t=tT(e,a,l);try{let e=await M(t),r=e.choices?.[0];if(!r)return;o(e=>ez(e,e=>({...eR({...e,versions:[{...e.versions[0],content:r.message?.content||""}]},r.message?.reasoning_content),status:y})))}catch(e){p(e?.response?.data?.message||e?.message||R,e?.response?.data?.error?.code||void 0)}},[a,l,o,p]);return{sendChat:(0,n.useCallback)(e=>{a.stream?h(e):g(e)},[a.stream,h,g]),stopGeneration:(0,n.useCallback)(()=>{d(),o(e=>ez(e,e=>e.status===j||e.status===b?{...eR(e),status:y}:e))},[d,o]),isGenerating:c}}({config:t,parameterEnabled:r,onMessageUpdate:T}),[G,D]=(0,n.useState)(null),[U,W]=(0,n.useState)(!1),[q,J]=(0,n.useState)(""),[H,K]=(0,n.useState)([]),[V,Q]=(0,n.useState)([]),[X,Z]=(0,n.useState)([]),[Y,ee]=(0,n.use
1State)(!1),{data:et,isLoading:er}=(0,l.I)({queryKey:["playground-models"],queryFn:L}),{data:es}=(0,l.I)({queryKey:["playground-groups"],queryFn:E});(0,n.useEffect)(()=>{if(!et)return;F(et);let e=et.some(e=>e.value===t.model);et.length>0&&!e&&O("model",et[0].value)},[et,t.model,F,O]),(0,n.useEffect)(()=>{es&&$(es.some(e=>"auto"===e.value)?es:[{value:"auto",label:"Auto",ratio:1,desc:"Circuit Breaker"},...es])},[es,$]),(0,n.useEffect)(()=>{U&&K(V.length>0?V:[t.model])},[U,V,t.model]);let ea=(0,n.useMemo)(()=>{let e=q.trim().toLowerCase();return e?g.filter(t=>t.label.toLowerCase().includes(e)):g},[q,g]),en=async s=>{if(0===V.length||Y)return;let a=ew(s);ee(!0),Z(V.map(e=>({model:e,status:"loading",content:""}))),await Promise.allSettled(V.map(async s=>{let n=tT([a],{...t,model:s,stream:!1},r);try{let e=await M(n),t=e.choices?.[0],r=t?.message?.content||"";Z(e=>e.map(e=>e.model===s?{...e,status:"complete",content:r}:e))}catch(r){let t=r?.response?.data?.message||r?.message||e("Request failed");Z(e=>e.map(e=>e.model===s?{...e,status:"error",error:t}:e))}})),ee(!1)},el=(0,n.useCallback)(e=>{D(e.key)},[]),eo=(0,n.useCallback)(e=>{e||D(null)},[]),ei=(0,n.useCallback)((e,t)=>{if(!G)return;let r=a.findIndex(e=>e.key===G);if(-1===r)return;let s=a.map(t=>t.key===G?{...t,versions:[{...t.versions[0],content:e}]}:t);if(D(null),!t||"user"!==s[r].from)return void T(s);let n=[...s.slice(0,r+1),ek()];T(n),P(n)},[G,a,T,P]);return(0,s.jsxs)("div",{className:"relative flex size-full flex-col overflow-hidden",children:[(0,s.jsxs)("div",{className:"absolute top-3 right-3 z-20 flex items-center gap-2",children:[V.length>0&&(0,s.jsxs)(m.$,{size:"sm",variant:"outline",onClick:()=>{Q([]),Z([]),ee(!1)},disabled:Y,children:[(0,s.jsx)(o.A,{className:"mr-1.5 size-4"}),e("Exit Compare")]}),(0,s.jsxs)(m.$,{size:"sm",onClick:()=>W(!0),disabled:B||Y||er,children:[(0,s.jsx)(i.A,{className:"mr-1.5 size-4"}),e("Add Compare Model")]})]}),(0,s.jsx)("div",{className:"flex flex-1 flex-col overflow-hidden",children:V.length>0?(0,s.jsx)("div",{className:"flex flex-1 flex-col gap-3 overflow-hidden p-3 pt-14",children:(0,s.jsx)("div",{className:"grid flex-1 gap-3 overflow-hidden",style:{gridTemplateColumns:`repeat(${V.length}, minmax(0, 1fr))`},children:X.map(t=>(0,s.jsxs)("div",{className:"bg-card flex min-h-0 flex-col rounded-lg border",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between border-b px-4 py-3",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("div",{className:"truncate font-mono text-sm font-semibold",children:t.model}),(0,s.jsx)("div",{className:"text-muted-foreground text-xs",children:"loading"===t.status?e("Generating..."):"complete"===t.status?e("Complete"):"error"===t.status?e("Request failed"):e("Ready")})]}),"loading"===t.status&&(0,s.jsx)(d.A,{className:"text-muted-foreground size-4 animate-spin"})]}),(0,s.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto p-4",children:["idle"===t.status&&(0,s.jsx)("div",{className:"text-muted-foreground flex h-full items-center justify-center text-center text-sm",children:e("Conversation content will be displayed here")}),"loading"===t.status&&(0,s.jsx)("div",{className:"text-muted-foreground flex h-full items-center justify-center text-sm",children:e("Waiting for model response...")}),"error"===t.status&&(0,s.jsx)("div",{className:"text-destructive rounded-lg border border-destructive/30 bg-destructive/10 p-3 text-sm",children:t.error}),"complete"===t.status&&(0,s.jsx)("div",{className:"whitespace-pre-wrap text-sm leading-7",children:t.content||e("No content returned")})]})]},t.model))})}):(0,s.jsx)(eq,{messages:a,onCopyMessage:e=>{e.key},onRegenerateMessage:e=>{let t=a.findIndex(t=>t.key===e.key);if(-1===t)return;let r=[...a.slice(0,t),ek()];T(r),P(r)},onEditMessage:el,onDeleteMessage:e=>{T(a.filter(t=>t.key!==e.key))},isGenerating:B,editingKey:G,onCancelEdit:eo,onSaveEdit:e=>ei(e,!1),onSaveEditAndSubmit:e=>ei(e,!0)})}),(0,s.jsx)("div",{className:"mx-auto w-full max-w-4xl",children:(0,s.jsx)(tR,{disabled:B||Y,groups:_,groupValue:t.group,isGenerating:B||Y,isModelLoading:er,modelValue:t.model,models:g,onGroupChange:e=>O("group",e),onModelChange:e=>O("model",e),onStop:V.length>0?void 0:I,onSubmit:e=>{if(V.length>0)return void en(e);let t=[...a,ew(e),ek()];T(t),P(t)}})}),(0,s.jsx)(p.lG,{open:U,onOpenChange:W,children:(0,s.jsxs)(p.Cf,{className:"sm:max-w-xl",children:[(0,s.jsxs)(p.c7,{children:[(0,s.jsx)(p.L3,{children:e("Select Compare Models")}),(0,s.jsx)(p.rr,{children:e("Select 1 to 3 models to send the same prompt in parallel.")})]}),(0,s.jsx)(h.p,{value:q,onChange:e=>J(e.target.value),placeholder:e("Search models...")}),(0,s.jsx)("div",{className:"max-h-80 space-y-2 overflow-y-auto pr-1",children:ea.map(t=>{let r=H.includes(t.value),a=!r&&H.length>=3;return(0,s.jsxs)("button",{type:"button",className:"hover:bg-muted flex w-full items-center gap-3 rounded-md border px-3 py-2 text-left text-sm disabled:cursor-not-allowed disabled:opacity-50",disabled:a,onClick:()=>{var r;return r=t.value,void K(t=>t.includes(r)?t.filter(e=>e!==r):t.length>=3?(u.oR.info(e("You can compare up to 3 models at once.")),t):[...t,r])},children:[(0,s.jsx)(x.S,{checked:r}),(0,s.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono",children:t.label})]},t.value)})}),(0,s.jsxs)(p.Es,{children:[(0,s.jsx)(m.$,{variant:"outline",onClick:()=>W(!1),children:e("Cancel")}),(0,s.jsxs)(m.$,{onClick:()=>{H.length<1?u.oR.error(e("Select at least one model")):(Q(H.slice(0,3)),Z(H.slice(0,3).map(e=>({model:e,status:"idle",content:""}))),W(!1))},children:[e("Confirm")," (",H.length,"/3)"]})]})]})})]})}function t$(){return(0,s.jsx)(a.gZ,{className:"p-0",children:(0,s.jsx)(tF,{})})}}}]);
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.