@datalayer/agent-runtimes 1.5.59 → 1.5.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,4 +29,4 @@ import{W as N,f8 as So,r as o,j as t,f9 as yo,fa as Co,c7 as Mn,B as p,H as ht,T
29
29
 
30
30
  `);r.assistant(m)},[]),Ae=o.useRef([]),Ve=o.useRef(!1),B=o.useRef(void 0),ie=o.useRef(void 0),re=o.useRef(void 0),He=N(ts),le=o.useRef(He);le.current=He;const ce=o.useCallback((e,r)=>{if(ie.current)return ie.current;const s=re.current;re.current=void 0;const m=ns(le.current.map(A=>A.value),s?{...r??{},voice:s}:r),d=m?.loop;if(Ve.current&&d?.files&&d.files.length>0){const A=B.current;if(!A)return"A file is given to an application running on a runtime: run it on Datalayer or on your machine to give it one.";let J;try{J=d.files.map(b=>({file:ss(String(b.name??"")),base64:os(String(b.data_url??""))}))}catch(b){return b instanceof Error?b.message:String(b)}A.execute(as(J)).then(b=>{if(!b.success){W(`The files could not be put in the sandbox: ${b.error??"it failed"}.`);return}ce(`${e}
31
31
 
32
- ${is(J.map(we=>we.file))}`,{...m,loop:Object.fromEntries(Object.entries(d).filter(([we])=>we!=="files"))})});return}Z.current?.begin(e,y());const _=i.current?.send;if(!_){Ae.current.push([e,m]);return}_(e,m)},[y]);o.useEffect(()=>{u(Ee?{busy:Y,stop:i.current?.stop,newChat:i.current?.newChat,send:ce}:null)},[Y,Ee,u,ce]),o.useEffect(()=>()=>u(null),[u]),o.useEffect(()=>n.prompts.subscribe(ce),[n.prompts,ce]),o.useEffect(()=>{if(!Ee||Ae.current.length===0)return;const e=Ae.current.splice(0,Ae.current.length);for(const[r,s]of e)y(),i.current?.send(r,s)},[Ee,y]);const We=o.useRef(!1),xe=o.useCallback(async e=>{W(null);const r=await rs(Ne.current,e);if(r){r.sent?Qe(""):W(r.refused);return}We.current||(We.current=!0,Ie?.firstPromptHook?.());const s=await n.submit(e);if(!s.handled){W(s.reason??null);return}Qe(""),s.result?.content&&W(s.result.content)},[n,Ie?.firstPromptHook]),C=o.useMemo(()=>w.find(e=>e.value.surfaceId===g)?.value,[w,g]),ve=o.useCallback(e=>{D.current=!0,fe(e)},[]);o.useEffect(()=>ls(ve),[ve]),o.useEffect(()=>{cs(w.map(e=>e.value.surfaceId))},[w]),o.useEffect(()=>{ds(g&&g!==ne?g:Qs)},[g]);const V=o.useMemo(()=>oe===ne||oe==="none"?void 0:w.find(e=>e.value.surfaceId===oe),[w,oe]);o.useEffect(()=>{D.current||!V||tt(V.value,n)&&fe(oe)},[V,n,oe]);const[ee,rt]=o.useState(null),lt=o.useRef(null),Me=f?.fullScreenTopOffset??0,{fullScreen:O,usingApi:De,toggle:Ge,topOffsetPx:c}=us(lt,{forceOverlay:!!Me,topOffset:Me}),[j,M]=o.useState(!1),$=o.useRef(!1);o.useEffect(()=>{!Y||$.current||O||($.current=!0,M(!0))},[Y,O]),o.useEffect(()=>{O&&M(!1)},[O]),o.useEffect(()=>{C&&!tt(C,n)&&(rt(C.surfaceId),fe(ne))},[C,n]);const Pe=o.useMemo(()=>{if(ee)return w.find(e=>e.value.surfaceId===ee)?.value;if(!D.current&&g===ne)return V?.value},[w,ee,g,V]);o.useEffect(()=>{if(!ee||g!==ne)return;const e=w.find(r=>r.value.surfaceId===ee);e&&tt(e.value,n)&&(rt(null),fe(ee))},[w,g,ee,n]);const I=n.agentId?.trim()||"default",R=fs(n.sandbox.target??"local");Ve.current=R;const v=ps(),te=Nt(v?.selected??Ea),S=v?.members.find(e=>e.id===te),Jt=N(ms)[0]?.value,jt=Jt?.specId,T=Pn(S?.specId??I)??(jt?Pn(jt):void 0),Ke=S?void 0:Jt,Qt=R&&!S?Ks(jt,T):void 0;nt.current=S?.name??T?.name??I;const Xt=N(gs),Zt=h.hiddenOpeners,en=h.hideOpeners,It=h.openers,Et=o.useMemo(()=>{if(en)return[];const e=new Set(Zt??[]),r=b=>e.size===0?b:b.filter(we=>!e.has(we.text));if(It)return r(It);const s=Xt.flatMap(b=>b.value.suggestions);if(s.length>0)return r(s);const m=r(T?.suggestions??[]),d=r(v?.team.suggestions??[]);if(d.length===0)return m;const _=new Set(d.map(b=>b.text)),A=v?.team.name??"Team",J=S?.name??T?.name??I;return[...d.map(b=>({...b,group:A})),...m.filter(b=>!_.has(b.text)).map(b=>({...b,group:J}))]},[Xt,v,T,S,I,Zt,en,It]),ct=o.useMemo(()=>Et.map(e=>({title:e.summary??e.text,message:e.message??e.text,group:e.group})),[Et]),Tt=Oe(T?.icon),z=f?.presence,Dn=Oe(v?.team.icon),tn=N(hs),dt=o.useMemo(()=>{const e=[],r=new Map,s=new Set,m=new Set(w.map(d=>d.value.surfaceId));for(const d of ha(tn,C?.surfaceId)){if(ba(d.value.id,m,C?.surfaceId))continue;let _;try{_=d.value.tools(n)}catch(A){console.warn(`[loop] frontend tools from '${d.plugin}' failed:`,A);continue}for(const A of _){const J=r.get(A.name);if(J){console.warn(`[loop] frontend tool '${A.name}' from '${d.plugin}' is shadowed by the one from '${J}'.`);continue}r.set(A.name,d.plugin),e.push(A),d.value.chatView&&s.add(A.name)}}for(const d of h.frontendTools??[])r.has(d.name)||(r.set(d.name,"chat-extras"),e.push(d),s.add(d.name));return C?e:ga(e,s)},[tn,n.surfaceId,n.agentId,h.frontendTools,C?.surfaceId,w]),Rt=Sa(),Ye=o.useMemo(()=>{if(Rt.length===0)return dt;const e=new Set(dt.map(r=>r.name));return[...dt,...Rt.filter(r=>!e.has(r.name))]},[dt,Rt]),nn=Vn(),At=h.agentToolBundles,Gn=o.useMemo(()=>{const e=h.frontendTools??[];if(!At?.length)return h.frontendTools;const r=Hn(nn.filter(m=>At.includes(m.id)),U),s=new Set(e.map(m=>m.name));return[...e,...r.filter(m=>!s.has(m.name))]},[h.frontendTools,At,nn,U]);B.current=R&&Ye.some(e=>e.name===bs)?U.getOutput(xt)?.sandbox:void 0;const E=xs(n.sandbox,n.serverUrl),on=N(vs),Kn=o.useMemo(()=>on.filter(e=>e.value.composer).map(e=>({name:e.value.name,description:e.value.description})),[on]),Yn=o.useMemo(()=>{if(!v||!S)return _n(T).map(s=>({name:s.name,description:s.description,icon:Oe(s.icon)}));const e=v.members.map(s=>({name:s.name,description:s.description,emoji:s.emoji,icon:Oe(s.icon),disabled:s.id===S.id,disabledReason:s.id===S.id?`You are already talking to ${s.name}`:void 0})),r=Un(v.team,S.id).filter(s=>!v.members.some(m=>m.name===s.name)).map(s=>({name:s.name,description:s.description,icon:Oe(s.icon)}));return[...e,...r]},[v,S,T]),{inference:sn,anonymous:qn}=ua(R),Jn=Gt(e=>e.user),Mt=R&&qn.status==="expired",an=!Jn,qe=Ss();ie.current=qe.disabled?qe.disableReason||"This conversation is closed here.":void 0;const Pt=E===void 0?ys(n.sandbox,a):void 0,Je=ge||Mt||!!Qt||!!Pt||qe.disabled,rn=Mt?an?a.demoKeyExpired:a.keyExpired:Qt??Pt??K??(qe.disabled?qe.disableReason:void 0),[Ut,Qe]=o.useState(""),[ln]=Cs(),Xe=o.useMemo(()=>f?.voice?ws(f.voice,ln):void 0,[f?.voice,ln]),[Qn,Xn]=o.useState(!1),[Zn,cn]=o.useState(),ut=Zn??Ke?.model??T?.model??n.model??"",Ue=ks(),dn=o.useRef(Ue),un=o.useRef(te),fn=o.useRef(Ue);fn.current=Ue,o.useEffect(()=>{un.current!==te&&(un.current=te,dn.current=fn.current,cn(void 0))},[te]);const eo=Ue&&Ue!==dn.current?Ue:null,[to,no]=o.useState(),oo=eo??to??null,so=Bt(je.inpromptMenu),pn=Bt(je.promptAction),mn=Bt(je.chatHeader),ao=o.useMemo(()=>v?.members.map(e=>({id:e.id,name:e.name,description:e.description,icon:Oe(e.icon)}))??[],[v]),Se=zn(e=>e.pending),[gn,io]=o.useState(0);o.useEffect(()=>js(()=>io(e=>e+1)),[]),o.useEffect(()=>{Se&&(Qe(Se.text),zn.getState().consume(),Se.submit&&xe(Se.text))},[Se]);const hn=U.getConfig(xt)?.datalayerCreatePayload,ye=!!(Ke?.createPayload?.app_spec||hn?.app_spec),Lt=ya(hn),ro=Gt(e=>e.token),Ft=U.getConfig(xt)?.datalayerVisitors,lo=Is(Ft),co=U.getConfig(xt)?.embedToken,Ce=Ft?lo.token:co||ro,uo=o.useMemo(()=>Es(f?.voice,Ce||void 0),[f?.voice,Ce]),de=!!(Lt||Ft);if(de&&!ye)throw new Error("A deployment’s page runs its application: its host gave no app_spec.");const[bn]=o.useState(Ln),P=o.useMemo(()=>Ca(f?.thread,Lt,bn),[f?.thread,Lt,bn]),[Le,xn]=o.useState(null),fo=!!(P?.fromRuntime&&Le?.given!==P.id);o.useEffect(()=>{if(!P?.fromRuntime||!ye||!E)return;let e=!0;return(async()=>{let r="";for(let s=0;s<4&&e;s+=1)try{const m=await Ts({agentBaseUrl:E,agentId:I,uid:P.id,token:Ce});e&&xn({given:P.id,thread:{...P,fromRuntime:!1,messages:m}});return}catch(m){r=m instanceof Error?m.message:String(m),await new Promise(d=>setTimeout(d,1500))}e&&xn({given:P.id,thread:{id:Ln(),messages:[],onStarted:P.onStarted},said:Fn.notOpened(r)})})(),()=>{e=!1}},[P?.id,P?.fromRuntime,ye,E,I,Ce]);const vn=P?.fromRuntime?Le?.given===P.id?Le.thread:void 0:P,Ot=o.useMemo(()=>R?ra({agentId:S?.specId??I,instructions:Rs(T,Ke?.instructions),model:ut||void 0,inference:sn,frontendTools:Ye,subagents:v&&S?Un(v.team,S.id):_n(T),sharing:v?.sharing,onSubagentEvent:e=>qs.getState().appendSubagentEvent(e),modeEffect:Ke?.modeEffect}):E!==void 0?{type:"ag-ui",endpoint:ye?`${E}/api/v1/apps/agents/${encodeURIComponent(I)}/ag-ui/`:`${E}/api/v1/ag-ui/${I}/`,...ye&&Ce?{authToken:Ce}:{},...ye?{uiSocket:`${E.replace(/^http/,"ws")}/api/v1/apps/ui`,uiFiles:`${E}/api/v1/apps/agents/${encodeURIComponent(I)}/files`,appSessions:`${E}/api/v1/apps/sessions`,...de?{ownRoutesOnly:!0}:{}}:{},agentId:I,configEndpoint:`${E}/api/v1/configure`,enableConfigQuery:!0}:void 0,[I,R,sn,S,Ye,v,T,Ke,ut,E,ye,Ce,de]),ft=As(!R,Ot?.type==="ag-ui"?Ot.configEndpoint:void 0,void 0,I),Ze=Ms(),pt=Ps(I),[Sn,$t]=o.useState(void 0),[po,mo]=o.useState(void 0);o.useEffect(()=>{if(R||E===void 0)return;const e=Us(E,I,de);if(!e){$t([]);return}let r=!1;return fetch(e).then(s=>s.ok?s.json():null).then(s=>{r||($t(s?Ls(s):[]),mo(s?Fs(s):void 0))}).catch(()=>{r||$t([])}),()=>{r=!0}},[E,I,R,de]);const go=o.useMemo(()=>Os(Sn,()=>Object.values($s).filter(e=>e.available&&zs(e)).map(e=>({id:e.id,name:e.name,provider:e.provider}))),[Sn]),yn=o.useMemo(()=>{const e=ft.data?.builtinTools??[],r=new Set(e.map(s=>s.name));return{runtime:e,frontend:Ye.filter(s=>!r.has(s.name)).map(s=>({id:s.name,name:s.name}))}},[ft.data?.builtinTools,Ye]),Cn=o.useMemo(()=>new Set((Ze.data?.skills??[]).filter(e=>e.status==="enabled"||e.status==="loaded").map(e=>e.id)),[Ze.data]),ho=o.useCallback(async e=>{if(de)throw new Error("A deployment’s chat does not switch its runtime’s model.");cn(e),!(R||E===void 0)&&await fetch(`${E}/api/v1/configure/inference/provider`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({model:e})}).catch(()=>{})},[E,R,de]),wn=f?.promptPlacement==="bottom-chat",bo=f?.promptPlacement==="floating",Fe=f?.promptPlacement==="top",et=f?.hidePrompt===!0||h.hidePrompt===!0,xo={onSend:()=>{xe(Ut)},input:Ut,setInput:Qe,focusTrigger:Se||gn?(Se?.nonce??0)+gn:void 0,placement:bo||G==="floating"||G==="floating-top"||G==="floating-bottom"?"floating":"docked",floatingAnchor:G==="floating-top"?"top":"bottom",isLoading:Y,onStop:()=>n.viewControls.stop?.(),placeholder:rn??h.sendInstead?.says??St,typingSuggestions:Et.map(e=>e.text),suggestions:ct,disableInputPrompt:Je,connectionConfirmed:!Je,interim:Qn,padding:Fe||G==="floating-top"||G==="floating-bottom"||G==="docked-top"?2:3,promptVariant:"lexical",autoFocus:f?.autoFocusPrompt??!0,mentionableAgents:Yn,promptCommands:Kn,headerContent:so.length>0?t.jsx(vt,{slot:je.inpromptMenu,props:{workspace:n}}):void 0,footerExtras:pn.length>0||Xe&&Xe.input!=="off"?t.jsxs(t.Fragment,{children:[pn.length>0?t.jsx(vt,{slot:je.promptAction,props:{workspace:n}}):null,Xe&&Xe.input!=="off"?t.jsx(_s,{voice:Xe,input:Ut,setInput:Qe,disabled:Je,speaking:Ct,onStopSpeaking:()=>i.current?.stopSpeaking?.(),playbackLevel:()=>i.current?.voiceLevel?.()??0,running:Y,onStopRun:()=>i.current?.stop?.(),onInterrupted:()=>i.current?.markInterrupted(),onInterimChange:Xn,answers:!!(f?.voice?.output&&f.voice.output!=="off"&&f.voice.speechUrl),onSpoken:e=>{re.current=e},send:(e,r)=>{re.current=r,xe(e)}}):null]}):void 0,showAgentsMenu:!z,showInlineAgentsMenu:!1,agents:ao,selectedAgentId:te,onSelectAgent:e=>v?.select(e),showTokenUsage:h.showTokenUsage??f?.showTokenUsage??!0,showContextRing:!0,agentUsage:oo??void 0,showModelSelector:!z&&!de,models:go,decisions:po,selectedModel:ut,onModelSelect:e=>{ho(e)},showToolsMenu:!z,availableTools:yn.runtime,availableFrontendTools:yn.frontend,mcpServers:ft.data?.mcpServers??[],mcpStatusData:h.mcpStatusData??void 0,showSkillsMenu:!z,skills:Ze.data?.skills??[],skillsLoading:Ze.isLoading,enabledSkills:Cn,onToggleSkill:e=>Cn.has(e)?pt.disableSkill(e):pt.enableSkill(e),onToggleAllSkills:(e,r)=>e.forEach(s=>r?pt.enableSkill(s):pt.disableSkill(s)),codemodeEnabled:h.codemodeEnabled??!1,onToggleCodemode:h.onToggleCodemode,isA2AProtocol:!1,hasConfigData:!!ft.data,hasSkillsData:!!Ze.data},kn=$e[0]?.value.Component,zt=yt[0]?.value.Component,jn=!f?.hideHeader&&!!zt,mt=kn?t.jsx(kn,{workspace:n,composer:xo}):null,In=w.length>0&&f?.showSurfaceSelector!==!1?t.jsx(Aa,{surfaces:w.map(e=>e.value),active:C?.surfaceId??Pe?.surfaceId??ne,onChange:ve,workspace:n}):null,En=t.jsxs(t.Fragment,{children:[w.map(e=>{const r=e.value,s=C?.surfaceId===r.surfaceId;return s||ot.current.has(r.surfaceId)||tt(r,n)?(ot.current.add(r.surfaceId),t.jsx(p,{sx:s?{flex:"1 1 0",minWidth:0,minHeight:0}:{position:"absolute",inset:0,visibility:"hidden",pointerEvents:"none",zIndex:-1},children:t.jsx(Ns,{load:r.load,props:{surfaceId:r.surfaceId,workspace:n},fallback:t.jsxs(Wt,{children:["Loading ",r.title,"…"]}),errorFallback:d=>t.jsxs(Wt,{children:[r.title," failed to load: ",d.message]})})},r.surfaceId)):null}),!C&&Pe?t.jsx(p,{flex:"1 1 0",minWidth:0,minHeight:0,children:t.jsxs(Wt,{children:["Starting ",Pe.title,"…"]})}):null]}),Tn=t.jsx(t.Fragment,{children:t.jsxs(p,{flex:Fe&&C?"0 0 34%":"1 1 0",maxWidth:Fe&&C?460:void 0,minWidth:0,minHeight:0,display:"flex",flexDirection:"column",borderLeft:C?"1px solid":void 0,borderColor:"border.default",position:"relative",children:[h.errorBanner?t.jsx(p,{flexShrink:0,px:3,py:2,fontSize:1,borderBottom:"1px solid",bg:h.errorBanner.variant==="warning"?"attention.subtle":"danger.subtle",color:h.errorBanner.variant==="warning"?"attention.fg":"danger.fg",borderColor:h.errorBanner.variant==="warning"?"attention.muted":"danger.muted",children:h.errorBanner.message}):null,Le?.said&&Le.given===P?.id?t.jsx(H,{as:"p",role:"status",sx:{m:0,px:3,py:2,fontSize:1,color:"fg.muted"},children:Le.said}):null,t.jsx(p,{flex:"1 1 auto",minHeight:0,display:"flex",children:fo?t.jsx(H,{as:"p",role:"status",sx:{m:0,p:3,fontSize:1,color:"fg.muted"},children:Fn.opening}):t.jsx(Bs,{themeVariant:f?.themeVariant,themeOverrides:f?.themeOverrides,colorMode:f?.colorMode,thread:vn,voice:uo,disabled:Je,disableReason:rn,protocol:Ot,frontendTools:R?void 0:Gn,initialModel:ut||void 0,title:z?.name??S?.name??T?.name??I,description:z?.welcome??T?.description,brandIcon:z?.face?t.jsx(ka,{face:z.face,size:20,state:q}):t.jsx(Tt,{size:20}),headerContent:z&&!Pt?t.jsx(ja,{state:q}):void 0,emptyState:{icon:z?.face?t.jsx("span",{"aria-hidden":!0,style:{fontSize:Nn,lineHeight:1},children:t.jsx(Wn,{face:z.face,size:Nn})}):t.jsx(Tt,{size:48}),title:z?.name??S?.name??T?.name??I,...v&&S?{sections:[{group:v.team.name,icon:t.jsx(Dn,{size:48}),title:v.team.name,subtitle:v.team.description},{group:S.name,icon:t.jsx(Tt,{size:32}),title:S.name,subtitle:T?.description}]}:null},suggestions:Fe||pe||f?.suggestionLabels===!1?[]:ct,showHeader:jn,headerButtons:{showNewChat:f?.headerButtons?.newChat??!1,showClear:f?.headerButtons?.clear??!1},renderHeader:zt?e=>t.jsx(zt,{workspace:n,header:n.chatViewModes?{...e,chatViewMode:n.chatViewModes.value,onChatViewModeChange:n.chatViewModes.onChange,offeredViewModes:n.chatViewModes.offered}:e}):void 0,showInformation:!0,headerActions:t.jsxs(p,{display:"inline-flex",alignItems:"center",gap:2,children:[n.chatHeaderActions,mn.length>0?t.jsx(vt,{slot:je.chatHeader,props:{workspace:n}}):null,t.jsx(Vs,{icon:O?Hs:Ws,"aria-label":O?"Exit full screen":"Enter full screen",variant:"invisible",size:"small",onClick:()=>{M(!1),Ge()},sx:j?{"@keyframes dla-fullscreen-hint":{"0%, 100%":{opacity:1},"50%":{opacity:.4}},"&&":{bg:`color-mix(in srgb, ${l.primary} 16%, transparent)`,boxShadow:`inset 0 0 0 1.5px ${l.primary}`,animation:`dla-fullscreen-hint ${Ra}ms ease-in-out infinite`},"@media (prefers-reduced-motion: reduce)":{"&&":{animation:"none"}}}:void 0})]}),showInput:!1,onSendReady:it,notebookToolSurfacesId:C?void 0:n.surfaceId,showTurnFooter:h.showTokenUsage??f?.showTokenUsage??!0,onContextSnapshot:be,onLoadingChange:kt,onSpeakingChange:Te,onItemsChange:Be,onDisplayItemsChange:F,enableStreaming:!0},vn?.id)}),!jn&&mn.length>0?t.jsx(p,{hidden:!0,children:t.jsx(vt,{slot:je.chatHeader,props:{workspace:n}})}):null,wn&&!et?mt:null]})}),Rn=f?.suggestionLabels!==!1&&ct.length>0?t.jsx(p,{"aria-label":a.suggestedPrompts,display:"flex",flexWrap:"wrap",gap:2,px:2,pb:"6px",children:ct.map(e=>t.jsx(p,{as:"button",type:"button",title:e.message,disabled:Y||Je,onClick:()=>{xe(e.message)},appearance:"none",font:"inherit",fontSize:0,fontWeight:"semibold",lineHeight:1.25,px:"10px",py:"5px",width:On,flex:`0 0 ${On}px`,borderRadius:"999px",border:"1px solid",bg:"canvas.subtle",whiteSpace:"nowrap",sx:{borderColor:"border.default",color:"fg.default",cursor:"pointer","&:hover:not(:disabled)":{borderColor:"accent.fg",color:"accent.fg"},"&:disabled":{opacity:.5,cursor:"default"}},children:t.jsx(Ds,{title:e.title,maxWidth:"100%",sx:{minWidth:0},children:e.title})},e.title))}):null,An=L?t.jsx(p,{flex:"0 0 auto",px:3,py:2,borderTop:"1px solid",borderColor:"border.default",bg:"canvas.subtle",fontSize:1,maxHeight:"40%",overflowY:"auto",children:L}):null;return t.jsxs(p,{ref:lt,sx:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",position:"relative",...O?{bg:"canvas.default"}:null,...O&&!De.current?{position:"fixed",top:c,right:0,bottom:0,left:0,height:"auto",zIndex:1e3}:null},children:[pe?t.jsx(pe.Component,{workspace:n,editors:En,hasEditor:!!C,transcript:Tn,prompt:et?null:mt,chips:et?null:Rn,picker:In,transient:An}):t.jsxs(t.Fragment,{children:[Fe&&!et?t.jsxs(p,{flex:"0 0 auto",borderBottom:"1px solid",borderColor:"border.default",children:[mt,Rn]}):null,In,t.jsxs(p,{flex:"1 1 auto",minHeight:0,display:"flex",position:"relative",children:[En,Tn]}),An,wn||et||Fe?null:mt]}),Mt?t.jsx(p,{position:"absolute",inset:0,zIndex:5,bg:"canvas.default",display:"flex",flexDirection:"column",minHeight:0,children:t.jsx(ca,{agentName:S?.name??T?.name,sandboxStillRuns:R,temporary:an,onSignedIn:()=>Gs.getState().clear()})}):null]})}function Aa({surfaces:n,active:a,onChange:l,workspace:i}){const u=[...n].sort((x,y)=>(x.order??100)-(y.order??100));return t.jsxs(p,{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2,px:3,py:2,borderBottom:"1px solid",borderColor:"border.default",children:[t.jsx(H,{sx:{fontSize:0,color:"fg.muted"},children:"Beside the chat"}),t.jsxs(Vt,{"aria-label":"Editor beside the chat",size:"small",children:[t.jsx(Vt.Button,{selected:a===ne,onClick:()=>l(ne),children:"Chat"}),u.map(x=>{const y=tt(x,i),L=y?void 0:x.unavailableReason?.(i)??"Not available right now";return t.jsx(Vt.Button,{selected:a===x.surfaceId,"aria-disabled":!y,title:L??x.title,leadingIcon:x.icon,onClick:()=>{y&&l(x.surfaceId)},children:x.title},x.surfaceId)})]})]})}function Wt({children:n}){return t.jsx(p,{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"fg.muted",fontSize:1,px:3,textAlign:"center",children:n})}export{La as default};
32
+ ${is(J.map(we=>we.file))}`,{...m,loop:Object.fromEntries(Object.entries(d).filter(([we])=>we!=="files"))})});return}Z.current?.begin(e,y());const _=i.current?.send;if(!_){Ae.current.push([e,m]);return}_(e,m)},[y]);o.useEffect(()=>{u(Ee?{busy:Y,stop:i.current?.stop,newChat:i.current?.newChat,send:ce}:null)},[Y,Ee,u,ce]),o.useEffect(()=>()=>u(null),[u]),o.useEffect(()=>n.prompts.subscribe(ce),[n.prompts,ce]),o.useEffect(()=>{if(!Ee||Ae.current.length===0)return;const e=Ae.current.splice(0,Ae.current.length);for(const[r,s]of e)y(),i.current?.send(r,s)},[Ee,y]);const We=o.useRef(!1),xe=o.useCallback(async e=>{W(null);const r=await rs(Ne.current,e);if(r){r.sent?Qe(""):W(r.refused);return}We.current||(We.current=!0,Ie?.firstPromptHook?.());const s=await n.submit(e);if(!s.handled){W(s.reason??null);return}Qe(""),s.result?.content&&W(s.result.content)},[n,Ie?.firstPromptHook]),C=o.useMemo(()=>w.find(e=>e.value.surfaceId===g)?.value,[w,g]),ve=o.useCallback(e=>{D.current=!0,fe(e)},[]);o.useEffect(()=>ls(ve),[ve]),o.useEffect(()=>{cs(w.map(e=>e.value.surfaceId))},[w]),o.useEffect(()=>{ds(g&&g!==ne?g:Qs)},[g]);const V=o.useMemo(()=>oe===ne||oe==="none"?void 0:w.find(e=>e.value.surfaceId===oe),[w,oe]);o.useEffect(()=>{D.current||!V||tt(V.value,n)&&fe(oe)},[V,n,oe]);const[ee,rt]=o.useState(null),lt=o.useRef(null),Me=f?.fullScreenTopOffset??0,{fullScreen:O,usingApi:De,toggle:Ge,topOffsetPx:c}=us(lt,{forceOverlay:!!Me,topOffset:Me}),[j,M]=o.useState(!1),$=o.useRef(!1);o.useEffect(()=>{!Y||$.current||O||($.current=!0,M(!0))},[Y,O]),o.useEffect(()=>{O&&M(!1)},[O]),o.useEffect(()=>{C&&!tt(C,n)&&(rt(C.surfaceId),fe(ne))},[C,n]);const Pe=o.useMemo(()=>{if(ee)return w.find(e=>e.value.surfaceId===ee)?.value;if(!D.current&&g===ne)return V?.value},[w,ee,g,V]);o.useEffect(()=>{if(!ee||g!==ne)return;const e=w.find(r=>r.value.surfaceId===ee);e&&tt(e.value,n)&&(rt(null),fe(ee))},[w,g,ee,n]);const I=n.agentId?.trim()||"default",R=fs(n.sandbox.target??"local");Ve.current=R;const v=ps(),te=Nt(v?.selected??Ea),S=v?.members.find(e=>e.id===te),Jt=N(ms)[0]?.value,jt=Jt?.specId,T=Pn(S?.specId??I)??(jt?Pn(jt):void 0),Ke=S?void 0:Jt,Qt=R&&!S?Ks(jt,T):void 0;nt.current=S?.name??T?.name??I;const Xt=N(gs),Zt=h.hiddenOpeners,en=h.hideOpeners,It=h.openers,Et=o.useMemo(()=>{if(en)return[];const e=new Set(Zt??[]),r=b=>e.size===0?b:b.filter(we=>!e.has(we.text));if(It)return r(It);const s=Xt.flatMap(b=>b.value.suggestions);if(s.length>0)return r(s);const m=r(T?.suggestions??[]),d=r(v?.team.suggestions??[]);if(d.length===0)return m;const _=new Set(d.map(b=>b.text)),A=v?.team.name??"Team",J=S?.name??T?.name??I;return[...d.map(b=>({...b,group:A})),...m.filter(b=>!_.has(b.text)).map(b=>({...b,group:J}))]},[Xt,v,T,S,I,Zt,en,It]),ct=o.useMemo(()=>Et.map(e=>({title:e.summary??e.text,message:e.message??e.text,group:e.group})),[Et]),Tt=Oe(T?.icon),z=f?.presence,Dn=Oe(v?.team.icon),tn=N(hs),dt=o.useMemo(()=>{const e=[],r=new Map,s=new Set,m=new Set(w.map(d=>d.value.surfaceId));for(const d of ha(tn,C?.surfaceId)){if(ba(d.value.id,m,C?.surfaceId))continue;let _;try{_=d.value.tools(n)}catch(A){console.warn(`[loop] frontend tools from '${d.plugin}' failed:`,A);continue}for(const A of _){const J=r.get(A.name);if(J){console.warn(`[loop] frontend tool '${A.name}' from '${d.plugin}' is shadowed by the one from '${J}'.`);continue}r.set(A.name,d.plugin),e.push(A),d.value.chatView&&s.add(A.name)}}for(const d of h.frontendTools??[])r.has(d.name)||(r.set(d.name,"chat-extras"),e.push(d),s.add(d.name));return C?e:ga(e,s)},[tn,n.surfaceId,n.agentId,h.frontendTools,C?.surfaceId,w]),Rt=Sa(),Ye=o.useMemo(()=>{if(Rt.length===0)return dt;const e=new Set(dt.map(r=>r.name));return[...dt,...Rt.filter(r=>!e.has(r.name))]},[dt,Rt]),nn=Vn(),At=h.agentToolBundles,Gn=o.useMemo(()=>{const e=h.frontendTools??[];if(!At?.length)return h.frontendTools;const r=Hn(nn.filter(m=>At.includes(m.id)),U),s=new Set(e.map(m=>m.name));return[...e,...r.filter(m=>!s.has(m.name))]},[h.frontendTools,At,nn,U]);B.current=R&&Ye.some(e=>e.name===bs)?U.getOutput(xt)?.sandbox:void 0;const E=xs(n.sandbox,n.serverUrl),on=N(vs),Kn=o.useMemo(()=>on.filter(e=>e.value.composer).map(e=>({name:e.value.name,description:e.value.description})),[on]),Yn=o.useMemo(()=>{if(!v||!S)return _n(T).map(s=>({name:s.name,description:s.description,icon:Oe(s.icon)}));const e=v.members.map(s=>({name:s.name,description:s.description,emoji:s.emoji,icon:Oe(s.icon),disabled:s.id===S.id,disabledReason:s.id===S.id?`You are already talking to ${s.name}`:void 0})),r=Un(v.team,S.id).filter(s=>!v.members.some(m=>m.name===s.name)).map(s=>({name:s.name,description:s.description,icon:Oe(s.icon)}));return[...e,...r]},[v,S,T]),{inference:sn,anonymous:qn}=ua(R),Jn=Gt(e=>e.user),Mt=R&&qn.status==="expired",an=!Jn,qe=Ss();ie.current=qe.disabled?qe.disableReason||"This conversation is closed here.":void 0;const Pt=E===void 0?ys(n.sandbox,a):void 0,Je=ge||Mt||!!Qt||!!Pt||qe.disabled,rn=Mt?an?a.demoKeyExpired:a.keyExpired:Qt??Pt??K??(qe.disabled?qe.disableReason:void 0),[Ut,Qe]=o.useState(""),[ln]=Cs(),Xe=o.useMemo(()=>f?.voice?ws(f.voice,ln):void 0,[f?.voice,ln]),[Qn,Xn]=o.useState(!1),[Zn,cn]=o.useState(),ut=Zn??Ke?.model??T?.model??n.model??"",Ue=ks(),dn=o.useRef(Ue),un=o.useRef(te),fn=o.useRef(Ue);fn.current=Ue,o.useEffect(()=>{un.current!==te&&(un.current=te,dn.current=fn.current,cn(void 0))},[te]);const eo=Ue&&Ue!==dn.current?Ue:null,[to,no]=o.useState(),oo=eo??to??null,so=Bt(je.inpromptMenu),pn=Bt(je.promptAction),mn=Bt(je.chatHeader),ao=o.useMemo(()=>v?.members.map(e=>({id:e.id,name:e.name,description:e.description,icon:Oe(e.icon)}))??[],[v]),Se=zn(e=>e.pending),[gn,io]=o.useState(0);o.useEffect(()=>js(()=>io(e=>e+1)),[]),o.useEffect(()=>{Se&&(Qe(Se.text),zn.getState().consume(),Se.submit&&xe(Se.text))},[Se]);const hn=U.getConfig(xt)?.datalayerCreatePayload,ye=!!(Ke?.createPayload?.app_spec||hn?.app_spec),Lt=ya(hn),ro=Gt(e=>e.token),Ft=U.getConfig(xt)?.datalayerVisitors,lo=Is(Ft),co=U.getConfig(xt)?.embedToken,Ce=Ft?lo.token:co||ro,uo=o.useMemo(()=>Es(f?.voice,Ce||void 0),[f?.voice,Ce]),de=!!(Lt||Ft);if(de&&!ye)throw new Error("A deployment’s page runs its application: its host gave no app_spec.");const[bn]=o.useState(Ln),P=o.useMemo(()=>Ca(f?.thread,Lt,bn),[f?.thread,Lt,bn]),[Le,xn]=o.useState(null),fo=!!(P?.fromRuntime&&Le?.given!==P.id);o.useEffect(()=>{if(!P?.fromRuntime||!ye||!E)return;let e=!0;return(async()=>{let r="";for(let s=0;s<4&&e;s+=1)try{const m=await Ts({agentBaseUrl:E,agentId:I,uid:P.id,token:Ce});e&&xn({given:P.id,thread:{...P,fromRuntime:!1,messages:m}});return}catch(m){r=m instanceof Error?m.message:String(m),await new Promise(d=>setTimeout(d,1500))}e&&xn({given:P.id,thread:{id:Ln(),messages:[],onStarted:P.onStarted},said:Fn.notOpened(r)})})(),()=>{e=!1}},[P?.id,P?.fromRuntime,ye,E,I,Ce]);const vn=P?.fromRuntime?Le?.given===P.id?Le.thread:void 0:P,Ot=o.useMemo(()=>R?ra({agentId:S?.specId??I,instructions:Rs(T,Ke?.instructions),model:ut||void 0,inference:sn,frontendTools:Ye,subagents:v&&S?Un(v.team,S.id):_n(T),sharing:v?.sharing,onSubagentEvent:e=>qs.getState().appendSubagentEvent(e),modeEffect:Ke?.modeEffect}):E!==void 0?{type:"ag-ui",endpoint:ye?`${E}/api/v1/apps/agents/${encodeURIComponent(I)}/ag-ui/`:`${E}/api/v1/ag-ui/${I}/`,...ye&&Ce?{authToken:Ce}:{},...ye?{uiSocket:`${E.replace(/^http/,"ws")}/api/v1/apps/ui`,uiFiles:`${E}/api/v1/apps/agents/${encodeURIComponent(I)}/files`,appSessions:`${E}/api/v1/apps/sessions`,...de?{ownRoutesOnly:!0}:{}}:{},agentId:I,configEndpoint:`${E}/api/v1/configure`,enableConfigQuery:!0}:void 0,[I,R,sn,S,Ye,v,T,Ke,ut,E,ye,Ce,de]),ft=As(!R,Ot?.type==="ag-ui"?Ot.configEndpoint:void 0,void 0,I),Ze=Ms(),pt=Ps(I),[Sn,$t]=o.useState(void 0),[po,mo]=o.useState(void 0);o.useEffect(()=>{if(R||E===void 0)return;const e=Us(E,I,de);if(!e){$t([]);return}let r=!1;return fetch(e).then(s=>s.ok?s.json():null).then(s=>{r||($t(s?Ls(s):[]),mo(s?Fs(s):void 0))}).catch(()=>{r||$t([])}),()=>{r=!0}},[E,I,R,de]);const go=o.useMemo(()=>Os(Sn,()=>Object.values($s).filter(e=>e.available&&zs(e)).map(e=>({id:e.id,name:e.name,provider:e.provider}))),[Sn]),yn=o.useMemo(()=>{const e=ft.data?.builtinTools??[],r=new Set(e.map(s=>s.name));return{runtime:e,frontend:Ye.filter(s=>!r.has(s.name)).map(s=>({id:s.name,name:s.name}))}},[ft.data?.builtinTools,Ye]),Cn=o.useMemo(()=>new Set((Ze.data?.skills??[]).filter(e=>e.status==="enabled"||e.status==="loaded").map(e=>e.id)),[Ze.data]),ho=o.useCallback(async e=>{if(de)throw new Error("A deployment’s chat does not switch its runtime’s model.");cn(e),!(R||E===void 0)&&await fetch(`${E}/api/v1/configure/inference/provider`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({model:e})}).catch(()=>{})},[E,R,de]),wn=f?.promptPlacement==="bottom-chat",bo=f?.promptPlacement==="floating",Fe=f?.promptPlacement==="top",et=f?.hidePrompt===!0||h.hidePrompt===!0,xo={onSend:()=>{xe(Ut)},input:Ut,setInput:Qe,focusTrigger:Se||gn?(Se?.nonce??0)+gn:void 0,placement:bo||G==="floating"||G==="floating-top"||G==="floating-bottom"?"floating":"docked",floatingAnchor:G==="floating-top"?"top":"bottom",isLoading:Y,onStop:()=>n.viewControls.stop?.(),placeholder:rn??h.sendInstead?.says??St,typingSuggestions:Et.map(e=>e.text),suggestions:ct,disableInputPrompt:Je,connectionConfirmed:!Je,interim:Qn,padding:Fe||G==="floating-top"||G==="floating-bottom"||G==="docked-top"?2:3,promptVariant:"lexical",autoFocus:f?.autoFocusPrompt??!0,mentionableAgents:Yn,promptCommands:Kn,headerContent:so.length>0?t.jsx(vt,{slot:je.inpromptMenu,props:{workspace:n}}):void 0,footerExtras:pn.length>0||Xe&&Xe.input!=="off"?t.jsxs(t.Fragment,{children:[pn.length>0?t.jsx(vt,{slot:je.promptAction,props:{workspace:n}}):null,Xe&&Xe.input!=="off"?t.jsx(_s,{voice:Xe,input:Ut,setInput:Qe,disabled:Je,speaking:Ct,onStopSpeaking:()=>i.current?.stopSpeaking?.(),playbackLevel:()=>i.current?.voiceLevel?.()??0,running:Y,onStopRun:()=>(i.current?.interrupt??i.current?.stop)?.(),onInterrupted:()=>i.current?.markInterrupted(),onInterimChange:Xn,answers:!!(f?.voice?.output&&f.voice.output!=="off"&&f.voice.speechUrl),onSpoken:e=>{re.current=e},send:(e,r)=>{re.current=r,xe(e)}}):null]}):void 0,showAgentsMenu:!z,showInlineAgentsMenu:!1,agents:ao,selectedAgentId:te,onSelectAgent:e=>v?.select(e),showTokenUsage:h.showTokenUsage??f?.showTokenUsage??!0,showContextRing:!0,agentUsage:oo??void 0,showModelSelector:!z&&!de,models:go,decisions:po,selectedModel:ut,onModelSelect:e=>{ho(e)},showToolsMenu:!z,availableTools:yn.runtime,availableFrontendTools:yn.frontend,mcpServers:ft.data?.mcpServers??[],mcpStatusData:h.mcpStatusData??void 0,showSkillsMenu:!z,skills:Ze.data?.skills??[],skillsLoading:Ze.isLoading,enabledSkills:Cn,onToggleSkill:e=>Cn.has(e)?pt.disableSkill(e):pt.enableSkill(e),onToggleAllSkills:(e,r)=>e.forEach(s=>r?pt.enableSkill(s):pt.disableSkill(s)),codemodeEnabled:h.codemodeEnabled??!1,onToggleCodemode:h.onToggleCodemode,isA2AProtocol:!1,hasConfigData:!!ft.data,hasSkillsData:!!Ze.data},kn=$e[0]?.value.Component,zt=yt[0]?.value.Component,jn=!f?.hideHeader&&!!zt,mt=kn?t.jsx(kn,{workspace:n,composer:xo}):null,In=w.length>0&&f?.showSurfaceSelector!==!1?t.jsx(Aa,{surfaces:w.map(e=>e.value),active:C?.surfaceId??Pe?.surfaceId??ne,onChange:ve,workspace:n}):null,En=t.jsxs(t.Fragment,{children:[w.map(e=>{const r=e.value,s=C?.surfaceId===r.surfaceId;return s||ot.current.has(r.surfaceId)||tt(r,n)?(ot.current.add(r.surfaceId),t.jsx(p,{sx:s?{flex:"1 1 0",minWidth:0,minHeight:0}:{position:"absolute",inset:0,visibility:"hidden",pointerEvents:"none",zIndex:-1},children:t.jsx(Ns,{load:r.load,props:{surfaceId:r.surfaceId,workspace:n},fallback:t.jsxs(Wt,{children:["Loading ",r.title,"…"]}),errorFallback:d=>t.jsxs(Wt,{children:[r.title," failed to load: ",d.message]})})},r.surfaceId)):null}),!C&&Pe?t.jsx(p,{flex:"1 1 0",minWidth:0,minHeight:0,children:t.jsxs(Wt,{children:["Starting ",Pe.title,"…"]})}):null]}),Tn=t.jsx(t.Fragment,{children:t.jsxs(p,{flex:Fe&&C?"0 0 34%":"1 1 0",maxWidth:Fe&&C?460:void 0,minWidth:0,minHeight:0,display:"flex",flexDirection:"column",borderLeft:C?"1px solid":void 0,borderColor:"border.default",position:"relative",children:[h.errorBanner?t.jsx(p,{flexShrink:0,px:3,py:2,fontSize:1,borderBottom:"1px solid",bg:h.errorBanner.variant==="warning"?"attention.subtle":"danger.subtle",color:h.errorBanner.variant==="warning"?"attention.fg":"danger.fg",borderColor:h.errorBanner.variant==="warning"?"attention.muted":"danger.muted",children:h.errorBanner.message}):null,Le?.said&&Le.given===P?.id?t.jsx(H,{as:"p",role:"status",sx:{m:0,px:3,py:2,fontSize:1,color:"fg.muted"},children:Le.said}):null,t.jsx(p,{flex:"1 1 auto",minHeight:0,display:"flex",children:fo?t.jsx(H,{as:"p",role:"status",sx:{m:0,p:3,fontSize:1,color:"fg.muted"},children:Fn.opening}):t.jsx(Bs,{themeVariant:f?.themeVariant,themeOverrides:f?.themeOverrides,colorMode:f?.colorMode,thread:vn,voice:uo,disabled:Je,disableReason:rn,protocol:Ot,frontendTools:R?void 0:Gn,initialModel:ut||void 0,title:z?.name??S?.name??T?.name??I,description:z?.welcome??T?.description,brandIcon:z?.face?t.jsx(ka,{face:z.face,size:20,state:q}):t.jsx(Tt,{size:20}),headerContent:z&&!Pt?t.jsx(ja,{state:q}):void 0,emptyState:{icon:z?.face?t.jsx("span",{"aria-hidden":!0,style:{fontSize:Nn,lineHeight:1},children:t.jsx(Wn,{face:z.face,size:Nn})}):t.jsx(Tt,{size:48}),title:z?.name??S?.name??T?.name??I,...v&&S?{sections:[{group:v.team.name,icon:t.jsx(Dn,{size:48}),title:v.team.name,subtitle:v.team.description},{group:S.name,icon:t.jsx(Tt,{size:32}),title:S.name,subtitle:T?.description}]}:null},suggestions:Fe||pe||f?.suggestionLabels===!1?[]:ct,showHeader:jn,headerButtons:{showNewChat:f?.headerButtons?.newChat??!1,showClear:f?.headerButtons?.clear??!1},renderHeader:zt?e=>t.jsx(zt,{workspace:n,header:n.chatViewModes?{...e,chatViewMode:n.chatViewModes.value,onChatViewModeChange:n.chatViewModes.onChange,offeredViewModes:n.chatViewModes.offered}:e}):void 0,showInformation:!0,headerActions:t.jsxs(p,{display:"inline-flex",alignItems:"center",gap:2,children:[n.chatHeaderActions,mn.length>0?t.jsx(vt,{slot:je.chatHeader,props:{workspace:n}}):null,t.jsx(Vs,{icon:O?Hs:Ws,"aria-label":O?"Exit full screen":"Enter full screen",variant:"invisible",size:"small",onClick:()=>{M(!1),Ge()},sx:j?{"@keyframes dla-fullscreen-hint":{"0%, 100%":{opacity:1},"50%":{opacity:.4}},"&&":{bg:`color-mix(in srgb, ${l.primary} 16%, transparent)`,boxShadow:`inset 0 0 0 1.5px ${l.primary}`,animation:`dla-fullscreen-hint ${Ra}ms ease-in-out infinite`},"@media (prefers-reduced-motion: reduce)":{"&&":{animation:"none"}}}:void 0})]}),showInput:!1,onSendReady:it,notebookToolSurfacesId:C?void 0:n.surfaceId,showTurnFooter:h.showTokenUsage??f?.showTokenUsage??!0,onContextSnapshot:be,onLoadingChange:kt,onSpeakingChange:Te,onItemsChange:Be,onDisplayItemsChange:F,enableStreaming:!0},vn?.id)}),!jn&&mn.length>0?t.jsx(p,{hidden:!0,children:t.jsx(vt,{slot:je.chatHeader,props:{workspace:n}})}):null,wn&&!et?mt:null]})}),Rn=f?.suggestionLabels!==!1&&ct.length>0?t.jsx(p,{"aria-label":a.suggestedPrompts,display:"flex",flexWrap:"wrap",gap:2,px:2,pb:"6px",children:ct.map(e=>t.jsx(p,{as:"button",type:"button",title:e.message,disabled:Y||Je,onClick:()=>{xe(e.message)},appearance:"none",font:"inherit",fontSize:0,fontWeight:"semibold",lineHeight:1.25,px:"10px",py:"5px",width:On,flex:`0 0 ${On}px`,borderRadius:"999px",border:"1px solid",bg:"canvas.subtle",whiteSpace:"nowrap",sx:{borderColor:"border.default",color:"fg.default",cursor:"pointer","&:hover:not(:disabled)":{borderColor:"accent.fg",color:"accent.fg"},"&:disabled":{opacity:.5,cursor:"default"}},children:t.jsx(Ds,{title:e.title,maxWidth:"100%",sx:{minWidth:0},children:e.title})},e.title))}):null,An=L?t.jsx(p,{flex:"0 0 auto",px:3,py:2,borderTop:"1px solid",borderColor:"border.default",bg:"canvas.subtle",fontSize:1,maxHeight:"40%",overflowY:"auto",children:L}):null;return t.jsxs(p,{ref:lt,sx:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",position:"relative",...O?{bg:"canvas.default"}:null,...O&&!De.current?{position:"fixed",top:c,right:0,bottom:0,left:0,height:"auto",zIndex:1e3}:null},children:[pe?t.jsx(pe.Component,{workspace:n,editors:En,hasEditor:!!C,transcript:Tn,prompt:et?null:mt,chips:et?null:Rn,picker:In,transient:An}):t.jsxs(t.Fragment,{children:[Fe&&!et?t.jsxs(p,{flex:"0 0 auto",borderBottom:"1px solid",borderColor:"border.default",children:[mt,Rn]}):null,In,t.jsxs(p,{flex:"1 1 auto",minHeight:0,display:"flex",position:"relative",children:[En,Tn]}),An,wn||et||Fe?null:mt]}),Mt?t.jsx(p,{position:"absolute",inset:0,zIndex:5,bg:"canvas.default",display:"flex",flexDirection:"column",minHeight:0,children:t.jsx(ca,{agentName:S?.name??T?.name,sandboxStillRuns:R,temporary:an,onSignedIn:()=>Gs.getState().clear()})}):null]})}function Aa({surfaces:n,active:a,onChange:l,workspace:i}){const u=[...n].sort((x,y)=>(x.order??100)-(y.order??100));return t.jsxs(p,{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2,px:3,py:2,borderBottom:"1px solid",borderColor:"border.default",children:[t.jsx(H,{sx:{fontSize:0,color:"fg.muted"},children:"Beside the chat"}),t.jsxs(Vt,{"aria-label":"Editor beside the chat",size:"small",children:[t.jsx(Vt.Button,{selected:a===ne,onClick:()=>l(ne),children:"Chat"}),u.map(x=>{const y=tt(x,i),L=y?void 0:x.unavailableReason?.(i)??"Not available right now";return t.jsx(Vt.Button,{selected:a===x.surfaceId,"aria-disabled":!y,title:L??x.title,leadingIcon:x.icon,onClick:()=>{y&&l(x.surfaceId)},children:x.title},x.surfaceId)})]})]})}function Wt({children:n}){return t.jsx(p,{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"fg.muted",fontSize:1,px:3,textAlign:"center",children:n})}export{La as default};