@datalayer/agent-runtimes 1.3.114 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist-embed/chunks/{ChatView-D41Nx5rC.js → ChatView-BpKZPdcp.js} +4 -4
  2. package/dist-embed/datalayer-app-main.js +150 -150
  3. package/lib/apps/apps/appspec.d.ts +13 -0
  4. package/lib/apps/apps/appspec.js +71 -0
  5. package/lib/apps/apps/checks.d.ts +1 -1
  6. package/lib/apps/apps/checks.js +2 -2
  7. package/lib/apps/apps/customComponents.js +1 -1
  8. package/lib/apps/core/canvasBlocks.d.ts +3 -3
  9. package/lib/apps/core/canvasParts.d.ts +6 -4
  10. package/lib/apps/embed/AppEmbed.js +3 -7
  11. package/lib/apps/embed/embedSession.d.ts +8 -4
  12. package/lib/apps/embed/embedSession.js +16 -9
  13. package/lib/apps/plugins/a2ui-surface/AnswerShows.d.ts +21 -0
  14. package/lib/apps/plugins/a2ui-surface/AnswerShows.js +29 -0
  15. package/lib/apps/plugins/a2ui-surface/SurfaceToolResult.js +4 -7
  16. package/lib/apps/plugins/a2ui-surface/index.d.ts +2 -1
  17. package/lib/apps/plugins/a2ui-surface/index.js +10 -1
  18. package/lib/apps/plugins/a2ui-surface/toolResult.d.ts +20 -11
  19. package/lib/apps/plugins/a2ui-surface/toolResult.js +27 -11
  20. package/lib/apps/plugins/app-components/index.d.ts +1 -1
  21. package/lib/apps/plugins/app-components/index.js +2 -2
  22. package/lib/apps/plugins/app-elements/AppElements.d.ts +3 -3
  23. package/lib/apps/plugins/app-elements/AppElements.js +5 -20
  24. package/lib/apps/plugins/app-elements/QuestionView.d.ts +28 -0
  25. package/lib/apps/plugins/app-elements/QuestionView.js +57 -0
  26. package/lib/apps/plugins/app-elements/index.d.ts +7 -4
  27. package/lib/apps/plugins/app-elements/index.js +14 -5
  28. package/lib/apps/plugins/canvas-blocks/index.d.ts +13 -13
  29. package/lib/apps/plugins/canvas-blocks/index.js +24 -24
  30. package/lib/apps/plugins/canvas-parts/index.d.ts +7 -1
  31. package/lib/apps/plugins/canvas-parts/index.js +36 -0
  32. package/lib/apps/plugins/chat/ChatView.js +7 -0
  33. package/lib/chat/base/ChatBase.js +234 -43
  34. package/lib/chat/base/loopElement.d.ts +16 -17
  35. package/lib/chat/base/loopElement.js +11 -27
  36. package/lib/chat/base/loopStep.d.ts +15 -15
  37. package/lib/chat/base/loopStep.js +10 -13
  38. package/lib/chat/base/loopWindow.d.ts +15 -20
  39. package/lib/chat/base/loopWindow.js +26 -27
  40. package/lib/chat/base/uiOps.d.ts +96 -0
  41. package/lib/chat/base/uiOps.js +251 -0
  42. package/lib/chat/messages/ChatMessageList.d.ts +8 -1
  43. package/lib/chat/messages/ChatMessageList.js +4 -4
  44. package/lib/components/a2ui/datalayer/Chart.d.ts +1 -1
  45. package/lib/components/a2ui/datalayer/schema.js +1 -1
  46. package/lib/components/teams/AnswerSurfaces.d.ts +3 -2
  47. package/lib/components/teams/AnswerSurfaces.js +7 -7
  48. package/lib/components/teams/useA2ATeam.d.ts +1 -1
  49. package/lib/config/AgentConfiguration.d.ts +1 -1
  50. package/lib/protocols/AGUIAdapter.d.ts +7 -0
  51. package/lib/protocols/AGUIAdapter.js +43 -3
  52. package/lib/specs/agents/agents.js +338 -169
  53. package/lib/specs/apps.js +47 -0
  54. package/lib/specs/appspecSchema.js +16 -0
  55. package/lib/specs/cogs.js +6 -3
  56. package/lib/specs/index.d.ts +2 -1
  57. package/lib/specs/index.js +2 -1
  58. package/lib/specs/protocols.d.ts +24 -0
  59. package/lib/specs/protocols.js +197 -0
  60. package/lib/specs/ui.d.ts +21 -0
  61. package/lib/specs/{uiPlugins.js → ui.js} +14 -14
  62. package/lib/types/agentspecs.d.ts +51 -5
  63. package/lib/types/messages.d.ts +7 -0
  64. package/lib/types/protocol.d.ts +8 -0
  65. package/package.json +2 -2
  66. package/scripts/codegen/generate_agents.py +43 -8
  67. package/scripts/codegen/generate_protocols.py +207 -0
  68. package/scripts/codegen/generate_sandbox_agents.py +1 -1
  69. package/scripts/codegen/{generate_ui_plugins.py → generate_ui.py} +40 -40
  70. package/scripts/gen_workers.py +2 -2
  71. package/lib/chat/base/loopMessage.d.ts +0 -37
  72. package/lib/chat/base/loopMessage.js +0 -37
  73. package/lib/specs/uiPlugins.d.ts +0 -21
@@ -1,4 +1,4 @@
1
- import{E as _,eM as eo,r as o,j as t,eN as to,eO as no,bZ as gn,B as f,H as lt,T as W,c as G,ct as Rt,et as Lt,eP as ae,cn as ct,e as oo,eQ as so,eR as ao,e2 as io,eS as ro,aH as lo,dW as En,dU as co,dX as Ft,eT as uo,eU as fo,eV as po,eW as mo,eX as hn,eY as go,eZ as ho,e_ as bo,d2 as xo,a_ as So,e$ as vo,f0 as yo,f1 as Co,f2 as wo,f3 as ko,f4 as jo,x as At,f5 as Eo,f6 as Io,f7 as To,f8 as Ro,f9 as Ao,fa as Po,fb as Mo,fc as $o,fd as Uo,fe as Oo,ff as Lo,fg as Fo,fh as zo,fi as No,fj as _o,fk as Bo,fl as Ho,fm as Wo,fn as Vo,fo as De,fp as Do,fq as Go,fr as Ko,fs as Yo,ft as bn,fu as qo,fv as Ie,fw as Jo,fx as Qo,a$ as dt,fy as Xo,fz as Zo,fA as xn,fB as es,fC as ts,eB as ns,fD as Pt,fE as Te,fF as os,fG as ss,fH as as,fI as is,fJ as rs,fK as ls,fL as cs,fM as ds,fN as us,fO as fs,fP as ps,fQ as ms,fR as Mt,fS as gs,fT as hs,I as bs,fU as xs,fV as Ss,fW as Sn,fX as vs,fY as ys,fZ as Cs,f_ as zt,f$ as ws,g0 as ks,ej as $t,g1 as js,g2 as Es}from"../datalayer-app-main.js";import{S as Is,E as Ts,a as Rs}from"./SignInIcon-4HkE48mS.js";import{F as As,a as Ps,b as Ms}from"./LinkedInGreyIcon-BoWXE-HS.js";function $s(){const n=_(eo);return o.useMemo(()=>n.map(s=>s.value),[n])}const Ut={github:{name:"github",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/github/callback"},google:{name:"google",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/google/callback"},linkedin:{name:"linkedin",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/linkedin/callback"}},vn=()=>{if(typeof document>"u")return"";const n=document.getElementById("datalayer-config-data");if(!n?.textContent)return"";try{const s=JSON.parse(n.textContent);return String(s?.iamUrl||"").replace(/\/$/,"")}catch{return""}},Us=(n,s="Unable to start social sign-in.")=>{if(n instanceof Error&&n.message)return n.message;if(typeof n=="string"&&n.trim())return n;if(n&&typeof n=="object"&&"message"in n){const c=n.message;if(typeof c=="string"&&c.trim())return c}return s},Os=ro`
1
+ import{E as _,eM as eo,r as o,j as t,eN as to,eO as no,bZ as gn,B as f,H as lt,T as W,c as G,ct as Rt,et as Lt,eP as ae,cn as ct,e as oo,eQ as so,eR as ao,e2 as io,eS as ro,aH as lo,dW as En,dU as co,dX as Ft,eT as uo,eU as fo,eV as po,eW as mo,eX as hn,eY as go,eZ as ho,e_ as bo,d2 as xo,a_ as So,e$ as vo,f0 as yo,f1 as Co,f2 as wo,f3 as ko,f4 as jo,x as At,f5 as Eo,f6 as Io,f7 as To,f8 as Ro,f9 as Ao,fa as Po,fb as Mo,fc as $o,fd as Uo,fe as Oo,ff as Lo,fg as Fo,fh as zo,fi as No,fj as _o,fk as Bo,fl as Ho,fm as Wo,fn as Vo,fo as De,fp as Do,fq as Go,fr as Ko,fs as Yo,ft as bn,fu as qo,fv as Te,fw as Jo,fx as Qo,a$ as dt,fy as Xo,fz as Zo,fA as xn,fB as es,fC as ts,eB as ns,fD as Pt,fE as Re,fF as os,fG as ss,fH as as,fI as is,fJ as rs,fK as ls,fL as cs,fM as ds,fN as us,fO as fs,fP as ps,fQ as ms,fR as Mt,fS as gs,fT as hs,I as bs,fU as xs,fV as Ss,fW as Sn,fX as vs,fY as ys,fZ as Cs,f_ as zt,f$ as ws,g0 as ks,ej as $t,g1 as js,g2 as Es}from"../datalayer-app-main.js";import{S as Is,E as Ts,a as Rs}from"./SignInIcon-4HkE48mS.js";import{F as As,a as Ps,b as Ms}from"./LinkedInGreyIcon-BoWXE-HS.js";function $s(){const n=_(eo);return o.useMemo(()=>n.map(s=>s.value),[n])}const Ut={github:{name:"github",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/github/callback"},google:{name:"google",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/google/callback"},linkedin:{name:"linkedin",oauth2CallbackServerRoute:"jupyter_iam/oauth2/callback",oauth2CallbackUIRoute:"/iam/oauth2/linkedin/callback"}},vn=()=>{if(typeof document>"u")return"";const n=document.getElementById("datalayer-config-data");if(!n?.textContent)return"";try{const s=JSON.parse(n.textContent);return String(s?.iamUrl||"").replace(/\/$/,"")}catch{return""}},Us=(n,s="Unable to start social sign-in.")=>{if(n instanceof Error&&n.message)return n.message;if(typeof n=="string"&&n.trim())return n;if(n&&typeof n=="object"&&"message"in n){const c=n.message;if(typeof c=="string"&&c.trim())return c}return s},Os=ro`
2
2
  .signin-input-theme-scope input:-webkit-autofill,
3
3
  .signin-input-theme-scope input:-webkit-autofill:hover,
4
4
  .signin-input-theme-scope input:-webkit-autofill:focus,
@@ -25,8 +25,8 @@ import{E as _,eM as eo,r as o,j as t,eN as to,eO as no,bZ as gn,B as f,H as lt,T
25
25
  background-color: var(--bgColor-default) !important;
26
26
  opacity: 1 !important;
27
27
  }
28
- `,Ls=({onSignIn:n,onApiKeySignIn:s,loginUrl:c,name:a,title:d="Datalayer OTEL",description:h="Sign in to access the observability dashboard.",icon:x,leadingIcon:C=t.jsx(io,{size:24}),github:p=!1,google:K=!1,linkedin:B=!1,apiKey:Ge=!1,signUp:L=!0,socialSignInNavigationTarget:Z,asDoc:S=!1,fillHeight:I=!0,hideHero:ee=!1,calloutTitle:Re,calloutDescription:Ke,passwordToggleLabel:ie="Sign in with a password",signUpTitle:Nt="Don't have an account?",signUpDescription:Y="Create a free Datalayer account with your email address.",signUpLabel:ut="Sign up with email",signUpHref:Ae="https://datalayer.ai/signup",onSignUp:H,forgotPasswordHref:q="/password",forgotPasswordLabel:Pe="Forgot password?",showForgotPassword:ft=!0,socialButtonMarginTop:y=3,actionButtonMaxWidth:J=320})=>{const te=S&&!ee,Ye=a??(S&&d==="Datalayer OTEL"?"Datalayer Sign In":d),pt=x??(S?t.jsx(Is,{size:24}):C),F=o.useMemo(()=>{if(c)return c;const i=vn();return i?`${i}/api/iam/v1/login`:"/api/iam/v1/login"},[c]),[V,Se]=o.useState(""),[re,mt]=o.useState(""),[qe,le]=o.useState(!1),[ce,Je]=o.useState(!1),[k,ve]=o.useState(!1),[de,Me]=o.useState(!1),[$e,Qe]=o.useState(null),[z,ye]=o.useState(null),[ne,Xe]=o.useState(""),[ue,Ze]=o.useState(null),[Ue,M]=o.useState(null),{enqueueToast:fe}=to(),[pe,E]=o.useState(!1),[Q,oe]=o.useState(""),D=o.useRef(null),Oe=o.useCallback(i=>no()?gn.URLExt.join(gn.PageConfig.getBaseUrl(),i.oauth2CallbackServerRoute):`${window.location.protocol}//${window.location.hostname}${window.location.port?`:${window.location.port}`:""}${i.oauth2CallbackUIRoute}`,[]),me=o.useMemo(()=>{if(typeof window>"u")return"/";const i=`${window.location.pathname}${window.location.search}${window.location.hash}`;return i.startsWith("/")?i:"/"},[]),Ce=o.useCallback(async i=>{if(!de){M(null),Qe(i.name),Me(!0);try{const g=vn(),m=new URLSearchParams({provider:i.name,callback_uri:Oe(i)}),T=Z===void 0?void 0:String(Z||"").trim(),v=T===void 0?me&&me!=="/"?me:void 0:T&&T.startsWith("/")&&!T.startsWith("//")?T:void 0;v&&m.set("post_auth_redirect",v);const Fe=`${g||""}/api/iam/v1/oauth2/authz/url?${m.toString()}`,j=await fetch(Fe),se=await j.json(),ze=se?.autorization_url;if(!j.ok||!ze)throw new Error(se?.message||"Unable to start social sign-in.");window.location.assign(ze)}catch(g){const m=Us(g);M(m),fe(m,{variant:"error"}),Qe(null),Me(!1)}}},[Oe,me,fe,de,Z]);o.useEffect(()=>{pe&&D.current?.focus()},[pe]);const $=o.useCallback(()=>{E(!1),oe("")},[]),gt=o.useCallback(()=>{!Q.trim()||!s||(s(Q.trim()),$())},[Q,s,$]),ht=o.useCallback(()=>{if(H){H();return}window.location.assign(Ae)},[H,Ae]),bt=o.useCallback(()=>{if(q){if(q.startsWith("http://")||q.startsWith("https://")){window.open(q,"_blank","noopener,noreferrer");return}window.location.assign(q)}},[q]),Le=o.useCallback(async()=>{if(!(S||!V||!re||k)){ve(!0),M(null);try{const i=await fetch(F,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({handle:V,password:re})});if(!i.ok)throw new Error(`HTTP ${i.status}`);const g=await i.json();if(g.success&&g.token){const m=String(g?.user?.id||g?.user?.uid||"").trim();if(!!g?.user?.mfaUrl&&m){ye(m),Ze(g.token),M(null);return}n&&n(g.token,V)}else M(g.message||"Invalid username or password.")}catch(i){M(i instanceof Error?i.message:String(i))}finally{ve(!1)}}},[S,V,re,k,F,n]),ge=o.useCallback(async()=>{if(!(S||k||!z||!ne.trim()||!ue)){ve(!0),M(null);try{const i=new URL(F,window.location.origin),g=i.pathname.endsWith("/api/iam/v1/login")?i.href.replace(/\/api\/iam\/v1\/login$/,""):`${i.origin}`,m=await fetch(`${g}/api/iam/v1/users/${z}/mfa/validate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userUid:z,code:ne.trim()})}),T=await m.json();if(!m.ok||!T?.success)throw new Error(T?.message||"Failed to validate your MFA code.");n&&n(ue,V)}catch(i){const g=i instanceof Error?i.message:String(i);M(g),fe(g,{variant:"error"})}finally{ve(!1)}}},[S,fe,V,k,F,ne,ue,z,n]),we=o.useCallback(i=>{i.key==="Enter"&&(z?ge():Le())},[z,Le,ge]),he=de||k||S;return t.jsxs(f,{className:"signin-input-theme-scope",display:"flex",alignItems:ee||te||!I?"flex-start":"center",justifyContent:"center",minHeight:ee||te||!I?"auto":"100vh",bg:ee?"transparent":"canvas.default",color:"fg.default",py:ee?0:te?2:4,children:[t.jsx(Os,{}),t.jsxs(f,{width:"100%",maxWidth:440,p:0,children:[!ee&&t.jsxs(t.Fragment,{children:[t.jsxs(f,{display:"flex",alignItems:"center",gap:2,mb:te?2:3,justifyContent:"center",children:[pt,t.jsx(lt,{sx:{fontSize:3},children:Ye})]}),t.jsx(W,{as:"p",sx:{fontSize:1,color:"fg.muted",mb:te?2:3,textAlign:"center"},children:h})]}),(Re||Ke)&&t.jsxs(f,{mb:3,textAlign:"center",children:[Re&&t.jsx(lt,{as:"h3",sx:{fontSize:2,mb:1},children:Re}),Ke&&t.jsx(W,{sx:{color:"fg.muted",fontSize:1},children:Ke})]}),!z&&(p||K||B)&&t.jsxs(t.Fragment,{children:[p&&t.jsx(G,{block:!0,size:"large",leadingVisual:$e==="github"?()=>t.jsx(Rt,{size:"small"}):As,disabled:he,onClick:()=>Ce(Ut.github),sx:{mt:y,maxWidth:J,mx:"auto"},children:"Sign in with GitHub"}),K&&t.jsx(G,{block:!0,size:"large",leadingVisual:$e==="google"?()=>t.jsx(Rt,{size:"small"}):Ps,disabled:he,onClick:()=>Ce(Ut.google),sx:{mt:y,maxWidth:J,mx:"auto"},children:"Sign in with Google"}),B&&t.jsx(G,{block:!0,size:"large",leadingVisual:$e==="linkedin"?()=>t.jsx(Rt,{size:"small"}):Ms,disabled:he,onClick:()=>Ce(Ut.linkedin),sx:{mt:y,maxWidth:J,mx:"auto"},children:"Sign in with LinkedIn"})]}),!z&&!qe&&t.jsx(f,{mt:3,display:"flex",justifyContent:"center",children:t.jsx(G,{leadingVisual:Lt,size:"large",block:!0,disabled:S||k||de,onClick:()=>le(!0),sx:{maxWidth:J,mx:"auto"},children:ie})}),!z&&qe&&t.jsxs(f,{mt:4,children:[t.jsxs(ae,{required:!0,sx:{mb:3},children:[t.jsx(ae.Label,{children:"Username"}),t.jsx(ct,{autoFocus:!0,block:!0,placeholder:"Your username",value:V,disabled:k||S,onChange:i=>Se(i.target.value),onKeyDown:we})]}),t.jsxs(ae,{required:!0,sx:{mb:3},children:[t.jsx(ae.Label,{children:"Password"}),t.jsx(ct,{block:!0,placeholder:"Your password",type:ce?"text":"password",value:re,disabled:k||S,onChange:i=>mt(i.target.value),onKeyDown:we,trailingAction:t.jsx(ct.Action,{onClick:()=>Je(!ce),disabled:k||S,icon:ce?Ts:Rs,"aria-label":ce?"Hide password":"Show password",sx:{color:"var(--fgColor-muted)"}})})]}),t.jsxs(f,{display:"flex",alignItems:"center",justifyContent:"space-between",mt:3,children:[t.jsx(G,{variant:"primary",disabled:k||S||!V||!re,onClick:Le,children:k?"Signing in…":"Sign In"}),ft&&t.jsx(oo,{as:"button",sx:{fontSize:1,cursor:S?"not-allowed":"pointer",background:"none",border:"none",opacity:S?.6:1},onClick:()=>{S||k||bt()},children:Pe})]})]}),z&&t.jsxs(t.Fragment,{children:[t.jsxs(ae,{required:!0,sx:{mb:3,mt:2},children:[t.jsx(ae.Label,{children:"MFA Code"}),t.jsx(ct,{autoFocus:!0,block:!0,placeholder:"Your MFA code",value:ne,disabled:k||S,onChange:i=>Xe(i.target.value),onKeyDown:we})]}),t.jsx(G,{variant:"primary",block:!0,disabled:k||S||!ne.trim(),onClick:ge,sx:{maxWidth:J,mx:"auto"},children:k?"Validating…":"Validate MFA Code"})]}),Ue&&t.jsx(W,{sx:{color:"danger.fg",fontSize:1,mt:3,display:"block"},children:Ue}),L&&t.jsxs(f,{mt:4,pt:4,textAlign:"center",borderTop:"1px solid",borderColor:"border.muted",children:[t.jsx(lt,{as:"h3",sx:{fontSize:2,mb:2},children:Nt}),t.jsx(W,{as:"p",sx:{color:"fg.muted",fontSize:1,mb:3},children:Y}),t.jsx(f,{display:"flex",justifyContent:"center",children:t.jsx(G,{variant:"primary",size:"large",leadingVisual:so,disabled:S||k,onClick:ht,children:ut})})]}),Ge&&s&&t.jsxs(t.Fragment,{children:[t.jsxs(f,{display:"flex",alignItems:"center",gap:2,my:3,children:[t.jsx(f,{flex:1,height:"1px",bg:"border.default"}),t.jsx(W,{sx:{fontSize:0,color:"fg.muted"},children:"or"}),t.jsx(f,{flex:1,height:"1px",bg:"border.default"})]}),t.jsx(G,{block:!0,leadingVisual:Lt,disabled:S||k||de,onClick:()=>E(!0),sx:{maxWidth:J,mx:"auto"},children:"Sign in with an API Key"}),pe&&t.jsx(f,{role:"dialog","aria-modal":"true","aria-labelledby":"signin-api-key-title",onKeyDown:i=>{i.key==="Escape"&&$()},onClick:$,position:"fixed",inset:0,zIndex:200,p:3,bg:"canvas.backdrop",display:"flex",alignItems:"center",justifyContent:"center",children:t.jsxs(f,{as:"form",onClick:i=>i.stopPropagation(),onSubmit:i=>{i.preventDefault(),gt()},width:"min(560px, 100%)",p:3,borderRadius:2,border:"1px solid",borderColor:"border.default",bg:"canvas.overlay",color:"fg.default",boxShadow:"shadow.large",children:[t.jsx(lt,{id:"signin-api-key-title",sx:{fontSize:2,mb:2},children:"Enter your API Key"}),t.jsxs(ae,{required:!0,children:[t.jsx(ae.Label,{children:"API Key"}),t.jsx(ao,{block:!0,required:!0,autoFocus:!0,placeholder:"Paste your API key here",value:Q,onInput:i=>oe(i.currentTarget.value),ref:D})]}),t.jsxs(f,{mt:3,display:"flex",justifyContent:"flex-end",gap:2,children:[t.jsx(G,{type:"button",onClick:$,children:"Cancel"}),t.jsx(G,{type:"submit",variant:"primary",disabled:!Q.trim(),children:"Authenticate"})]})]})})]})]})]})};function Fs(n){const{agentId:s,instructions:c,model:a,frontendTools:d,inference:h,subagents:x,sharing:C,onSubagentEvent:p,modeEffect:K}=n;return{type:"browser-vercel-ai",endpoint:"",agentId:s,enableConfigQuery:!1,options:{instructions:c,model:a,frontendTools:d,inference:h,subagents:x,sharing:C,onSubagentEvent:p,modeEffect:K}}}const yn=lo((n,s)=>({pending:void 0,suggest:(c,a)=>{const d=c.trim();d&&n({pending:{text:d,submit:a?.submit??!1,nonce:(s().pending?.nonce??0)+1}})},consume:()=>n({pending:void 0})}));function zs({agentName:n,sandboxStillRuns:s=!1,temporary:c=!0,onSignedIn:a,onSignUp:d}){const{configuration:h}=En(),x=o.useCallback(C=>{co.getState().checkIAMToken(C),a?.()},[a]);return t.jsx(f,{height:"100%",minHeight:0,overflowY:"auto",bg:"canvas.default",px:4,py:4,children:t.jsxs(f,{maxWidth:440,mx:"auto",children:[t.jsxs(f,{display:"flex",alignItems:"center",justifyContent:"center",gap:2,color:"attention.fg",mb:2,children:[t.jsx(Lt,{size:20}),t.jsx(W,{sx:{fontSize:2,fontWeight:"semibold",color:"fg.default"},children:c?"This demo runs on a shared key":"Your key has expired"})]}),t.jsxs(W,{as:"p",sx:{fontSize:1,color:"fg.muted",textAlign:"center",mb:3},children:[c?`${n??"The agent"} has used the time this key allows. Sign in to point your own agent at it, use your own data, and drop the time limit.`:`${n??"The agent"} stopped because your session ran out.`,s?" Your notebook is still running in this page.":""]}),t.jsx(Ls,{hideHero:!0,fillHeight:!1,calloutTitle:"Sign in to keep going",github:!0,google:!0,linkedin:!0,socialSignInNavigationTarget:typeof window>"u"?void 0:`${window.location.pathname}${window.location.search}`,loginUrl:h?.iamUrl?`${h.iamUrl}/api/iam/v1/login`:void 0,onSignIn:x,onSignUp:d})]})})}const Ns="https://r1.datalayer.run";function _s(n=!0){const{configuration:s}=En(),c=Ft(C=>C.token),a=s?.aiInferenceUrl||Ns,d=uo(a,n&&!c),h=c||d.token,x=o.useMemo(()=>({inferenceUrl:a,token:h||void 0}),[a,h]);return{inference:x,needsSignIn:fo(x),anonymous:d,inferenceUrl:a}}const Bs={name:"general-purpose",description:"A capable generalist for a task none of the specialists covers: research, reasoning, drafting, checking.",instructions:"You are a capable general-purpose assistant. Carry out the task you are given completely and report the result plainly, saying what you could not do."};function Cn(n){const s=n?.subagents;if(!s)return[];const c=(s.subagents??[]).map(a=>{const d=a.ref?po(a.ref):void 0;return{name:a.name,description:a.description||d?.description||a.name,instructions:a.instructions??d?.systemPrompt,model:a.model??d?.model??s.defaultModel,icon:d?.icon}});return s.includeGeneralPurpose?[...c,Bs]:c}function Hs(n){return n.replace(/^datalayer_/,"").replace(/_lexical$/,"")}function Ws(n){const s=Hs(n);return/^executeCodeIn(Notebook|Document)$/.test(s)||/^(read|list)[A-Z]/.test(s)}function Vs(n,s){return n.filter(c=>s?.has(c.name)||Ws(c.name))}function Ds(n,s){const c=a=>s&&a.value.id===`${s}-tools`?0:a.value.id==="notebook-tools"?1:2;return n.map((a,d)=>({entry:a,index:d,rank:c(a)})).sort((a,d)=>a.rank-d.rank||a.index-d.index).map(a=>a.entry)}function Gs(n,s,c){if(!c||!n.endsWith("-tools"))return!1;const a=n.slice(0,-6);return s.has(a)&&a!==c}const Ks={type:"object",properties:{}};function Ys(n,s){const c=new Set(n.toolset);return n.commands.filter(a=>c.has(a.name)).map(a=>({name:a.name,description:a.description,parameters:a.parameters??Ks,location:"frontend",handler:async d=>{if(!s)throw new Error(`${a.name}: the ${n.plugin??n.id} plugin is not mounted on this page.`);const h=Object.keys(d??{}).length>0?d:void 0,x=await s.executeCommand(a.command,h);return x===void 0?{ok:!0,command:a.command,argument:h}:x}}))}function qs(n,s){return n.flatMap(c=>Ys(c,s))}function Js(){const n=mo(),s=$s();return o.useMemo(()=>qs(s,n),[s,n])}const wn={opening:"Opening your conversation…",notOpened:n=>`Your conversation could not be opened, so this is a new one: ${n}`};function Qs(n){let s;for(const c of n.split(/\r?\n\r?\n/)){const a=c.split(/\r?\n/).filter(d=>d.startsWith("data:")).map(d=>d.slice(5).trim()).join("");if(a)try{const d=JSON.parse(a);d.type==="MESSAGES_SNAPSHOT"&&Array.isArray(d.messages)&&(s=d.messages)}catch{}}return s}async function kn(n){try{const s=await n.json();if(typeof s.detail=="string"&&s.detail)return s.detail}catch{}return`${n.status}`}async function Xs({agentBaseUrl:n,agentId:s,uid:c,token:a,fetcher:d=fetch}){const h=`${n.replace(/\/+$/,"")}/api/v1/apps/sessions/${encodeURIComponent(c)}`,x=a?{Authorization:`Bearer ${a}`}:{},C=await d(`${h}/messages`,{headers:x});if(C.ok){const B=await C.json();return hn(B.messages)}if(C.status!==404)throw new Error(await kn(C));const p=await d(`${h}/resume`,{method:"POST",headers:{"Content-Type":"application/json",...x},body:JSON.stringify({agent:s})});if(!p.ok)throw new Error(await kn(p));const K=Qs(await p.text());if(!K)throw new Error(`The runtime said nothing of session ${c}.`);return hn(K)}const Zs="var(--theme-accent)";function In({face:n,size:s}){return typeof n=="string"?t.jsx(go,{emoji:n,size:s,label:""}):t.jsx(t.Fragment,{children:n})}function ea({face:n,size:s,state:c}){const a=c==="thinking"||c==="working",d=c==="paused";return t.jsxs(f,{as:"span","aria-hidden":!0,"data-presence":c,position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",width:s+8,height:s+8,flexShrink:0,fontSize:s,lineHeight:1,children:[t.jsx(f,{as:"span",position:"absolute",inset:0,borderRadius:"50%",boxShadow:d?"none":`0 0 0 2px ${Zs}`,border:d?"2px dashed":"none",borderColor:"border.default",opacity:a||c==="waiting"||d?.9:0,transition:"opacity var(--theme-motion-status, 0ms) var(--theme-motion-easing, ease)",animation:a?"loopPresenceBreath 1.8s ease-in-out infinite":"none",reducedMotion:{animation:"none"},sx:{"@keyframes loopPresenceBreath":{"0%, 100%":{transform:"scale(0.92)",opacity:.35},"50%":{transform:"scale(1.06)",opacity:.9}}}}),t.jsx(f,{as:"span",display:"inline-flex",opacity:d?.55:1,filter:d?"grayscale(0.6)":"none",transition:"opacity var(--theme-motion-status, 0ms) var(--theme-motion-easing, ease)",children:t.jsx(In,{face:n,size:s})})]})}function ta({state:n}){return t.jsx(W,{role:"status","aria-live":"polite","data-presence-line":n,sx:{fontSize:0,color:n==="waiting"?"fg.default":"fg.muted",fontWeight:n==="waiting"?"semibold":"normal",whiteSpace:"nowrap",flexShrink:0},children:ho[n]})}const na=zt(void 0),oa=zt(""),sa=zt({}),X="",aa=1400,jn=parseInt(js["--loop-face-large"],10);function da({workspace:n}){const s=bo(),c=xo(),a=o.useRef(null),{setViewControls:d}=n,[h,x]=o.useState(null),C=So(),p=C.getConfig(vo),K=p?.placeholder||s.placeholder,B=p?.defaultSurface??"notebook",Ge=C.getConfig(yo),[L,Z]=o.useState(X),S=o.useRef(!1),I=_(Co),ee=_(wo),Re=_(ko),ie=_(jo)[0]?.value,Y=At(ie?.promptStance??na)??ie?.prompt,ut=_(Eo),Ae=Io(ut[0]?.value),H=o.useRef(Ae);H.current=Ae;const q=o.useRef(""),Pe=_(To),ft=o.useMemo(()=>Ro(()=>Pe.reduce((e,r)=>({...e,...r.value.extras.value}),{})),[Pe]),y=At(Pe.length>0?ft:sa),J=o.useRef(new Set),te=Ao(ws,n),Ye=!te.allowed,pt=Ye?te.reason??"Chat is unavailable for this sandbox":void 0,[F,V]=o.useState(!1),[Se,re]=o.useState(!1),[mt,qe]=o.useState({open:!1,pendingApproval:!1}),le=Po(F,mt,p?.presence?.paused===!0),ce=p?.presence?.onPresence;o.useEffect(()=>{ce?.(le),H.current?.setPresence(le)},[ce,le]);const Je=o.useRef(p?.presence?.onSaying);Je.current=p?.presence?.onSaying;const k=o.useRef({answering:!1}),ve=o.useCallback(e=>{a.current=e,re(!!e)},[]),de=o.useCallback(e=>{const{open:r,pendingApproval:l}=Mo(e);qe(xe=>xe.open===r&&xe.pendingApproval===l?xe:{open:r,pendingApproval:l});const b={saying:Uo(e),answering:$o(e)},u=k.current;(u.saying?.id!==b.saying?.id||u.saying?.text!==b.saying?.text||u.answering!==b.answering)&&(k.current=b,Je.current?.(b));const O=H.current;if(!O)return;O.items(e);const P=new Set(["complete","completed","done","error","failed","cancelled","canceled","rejected","denied","stopped"]),R={insertcell:"adding a cell",updatecell:"editing a cell",runcell:"running a cell",deletecells:"removing cells",readallcells:"reading the notebook",readcell:"reading a cell",executecode:"running code",insertblock:"adding a block",updateblock:"editing a block",runblock:"running a block",readdocument:"reading the document"};let w;for(let xe=e.length-1;xe>=0;xe-=1){const rt=e[xe];if(typeof rt.toolName=="string"&&rt.toolCallId){P.has(String(rt.status).toLowerCase())||(w=rt);break}}if(!w){O.activity(void 0);return}const Tt=w.toolName.toLowerCase().replace(/^datalayer_/,"").replace(/_lexical$/,"").replace(/[^a-z]/g,""),Zn=R[Tt]??`using ${w.toolName}`;O.activity(`${q.current||"The agent"} is ${Zn}…`)},[]),Me=o.useRef(y);Me.current=y;const $e=o.useCallback(e=>{Ln(e),H.current?.usage(e),Me.current.onUsage?.(e)},[]),Qe=o.useCallback(e=>{V(e),e||H.current?.end("done")},[]),z=o.useCallback(e=>{const r=H.current;if(!r)return;let l=-1;for(let u=e.length-1;u>=0;u-=1)if(e[u].role==="user"){l=u;break}const b=e.slice(l+1).filter(u=>u.role==="assistant").map(Oo).filter(u=>u.trim().length>0).join(`
28
+ `,Ls=({onSignIn:n,onApiKeySignIn:s,loginUrl:c,name:a,title:d="Datalayer OTEL",description:h="Sign in to access the observability dashboard.",icon:x,leadingIcon:C=t.jsx(io,{size:24}),github:p=!1,google:K=!1,linkedin:B=!1,apiKey:Ge=!1,signUp:L=!0,socialSignInNavigationTarget:Z,asDoc:S=!1,fillHeight:I=!0,hideHero:ee=!1,calloutTitle:Ae,calloutDescription:Ke,passwordToggleLabel:ie="Sign in with a password",signUpTitle:Nt="Don't have an account?",signUpDescription:Y="Create a free Datalayer account with your email address.",signUpLabel:ut="Sign up with email",signUpHref:Pe="https://datalayer.ai/signup",onSignUp:H,forgotPasswordHref:q="/password",forgotPasswordLabel:Me="Forgot password?",showForgotPassword:ft=!0,socialButtonMarginTop:y=3,actionButtonMaxWidth:J=320})=>{const te=S&&!ee,Ye=a??(S&&d==="Datalayer OTEL"?"Datalayer Sign In":d),pt=x??(S?t.jsx(Is,{size:24}):C),F=o.useMemo(()=>{if(c)return c;const i=vn();return i?`${i}/api/iam/v1/login`:"/api/iam/v1/login"},[c]),[V,Se]=o.useState(""),[re,mt]=o.useState(""),[qe,le]=o.useState(!1),[ce,Je]=o.useState(!1),[k,ve]=o.useState(!1),[de,$e]=o.useState(!1),[Ue,Qe]=o.useState(null),[z,ye]=o.useState(null),[ne,Xe]=o.useState(""),[ue,Ze]=o.useState(null),[Oe,M]=o.useState(null),{enqueueToast:fe}=to(),[pe,E]=o.useState(!1),[Q,oe]=o.useState(""),D=o.useRef(null),Le=o.useCallback(i=>no()?gn.URLExt.join(gn.PageConfig.getBaseUrl(),i.oauth2CallbackServerRoute):`${window.location.protocol}//${window.location.hostname}${window.location.port?`:${window.location.port}`:""}${i.oauth2CallbackUIRoute}`,[]),me=o.useMemo(()=>{if(typeof window>"u")return"/";const i=`${window.location.pathname}${window.location.search}${window.location.hash}`;return i.startsWith("/")?i:"/"},[]),Ce=o.useCallback(async i=>{if(!de){M(null),Qe(i.name),$e(!0);try{const g=vn(),m=new URLSearchParams({provider:i.name,callback_uri:Le(i)}),T=Z===void 0?void 0:String(Z||"").trim(),v=T===void 0?me&&me!=="/"?me:void 0:T&&T.startsWith("/")&&!T.startsWith("//")?T:void 0;v&&m.set("post_auth_redirect",v);const ze=`${g||""}/api/iam/v1/oauth2/authz/url?${m.toString()}`,j=await fetch(ze),se=await j.json(),Ne=se?.autorization_url;if(!j.ok||!Ne)throw new Error(se?.message||"Unable to start social sign-in.");window.location.assign(Ne)}catch(g){const m=Us(g);M(m),fe(m,{variant:"error"}),Qe(null),$e(!1)}}},[Le,me,fe,de,Z]);o.useEffect(()=>{pe&&D.current?.focus()},[pe]);const $=o.useCallback(()=>{E(!1),oe("")},[]),gt=o.useCallback(()=>{!Q.trim()||!s||(s(Q.trim()),$())},[Q,s,$]),ht=o.useCallback(()=>{if(H){H();return}window.location.assign(Pe)},[H,Pe]),bt=o.useCallback(()=>{if(q){if(q.startsWith("http://")||q.startsWith("https://")){window.open(q,"_blank","noopener,noreferrer");return}window.location.assign(q)}},[q]),Fe=o.useCallback(async()=>{if(!(S||!V||!re||k)){ve(!0),M(null);try{const i=await fetch(F,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({handle:V,password:re})});if(!i.ok)throw new Error(`HTTP ${i.status}`);const g=await i.json();if(g.success&&g.token){const m=String(g?.user?.id||g?.user?.uid||"").trim();if(!!g?.user?.mfaUrl&&m){ye(m),Ze(g.token),M(null);return}n&&n(g.token,V)}else M(g.message||"Invalid username or password.")}catch(i){M(i instanceof Error?i.message:String(i))}finally{ve(!1)}}},[S,V,re,k,F,n]),ge=o.useCallback(async()=>{if(!(S||k||!z||!ne.trim()||!ue)){ve(!0),M(null);try{const i=new URL(F,window.location.origin),g=i.pathname.endsWith("/api/iam/v1/login")?i.href.replace(/\/api\/iam\/v1\/login$/,""):`${i.origin}`,m=await fetch(`${g}/api/iam/v1/users/${z}/mfa/validate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userUid:z,code:ne.trim()})}),T=await m.json();if(!m.ok||!T?.success)throw new Error(T?.message||"Failed to validate your MFA code.");n&&n(ue,V)}catch(i){const g=i instanceof Error?i.message:String(i);M(g),fe(g,{variant:"error"})}finally{ve(!1)}}},[S,fe,V,k,F,ne,ue,z,n]),we=o.useCallback(i=>{i.key==="Enter"&&(z?ge():Fe())},[z,Fe,ge]),he=de||k||S;return t.jsxs(f,{className:"signin-input-theme-scope",display:"flex",alignItems:ee||te||!I?"flex-start":"center",justifyContent:"center",minHeight:ee||te||!I?"auto":"100vh",bg:ee?"transparent":"canvas.default",color:"fg.default",py:ee?0:te?2:4,children:[t.jsx(Os,{}),t.jsxs(f,{width:"100%",maxWidth:440,p:0,children:[!ee&&t.jsxs(t.Fragment,{children:[t.jsxs(f,{display:"flex",alignItems:"center",gap:2,mb:te?2:3,justifyContent:"center",children:[pt,t.jsx(lt,{sx:{fontSize:3},children:Ye})]}),t.jsx(W,{as:"p",sx:{fontSize:1,color:"fg.muted",mb:te?2:3,textAlign:"center"},children:h})]}),(Ae||Ke)&&t.jsxs(f,{mb:3,textAlign:"center",children:[Ae&&t.jsx(lt,{as:"h3",sx:{fontSize:2,mb:1},children:Ae}),Ke&&t.jsx(W,{sx:{color:"fg.muted",fontSize:1},children:Ke})]}),!z&&(p||K||B)&&t.jsxs(t.Fragment,{children:[p&&t.jsx(G,{block:!0,size:"large",leadingVisual:Ue==="github"?()=>t.jsx(Rt,{size:"small"}):As,disabled:he,onClick:()=>Ce(Ut.github),sx:{mt:y,maxWidth:J,mx:"auto"},children:"Sign in with GitHub"}),K&&t.jsx(G,{block:!0,size:"large",leadingVisual:Ue==="google"?()=>t.jsx(Rt,{size:"small"}):Ps,disabled:he,onClick:()=>Ce(Ut.google),sx:{mt:y,maxWidth:J,mx:"auto"},children:"Sign in with Google"}),B&&t.jsx(G,{block:!0,size:"large",leadingVisual:Ue==="linkedin"?()=>t.jsx(Rt,{size:"small"}):Ms,disabled:he,onClick:()=>Ce(Ut.linkedin),sx:{mt:y,maxWidth:J,mx:"auto"},children:"Sign in with LinkedIn"})]}),!z&&!qe&&t.jsx(f,{mt:3,display:"flex",justifyContent:"center",children:t.jsx(G,{leadingVisual:Lt,size:"large",block:!0,disabled:S||k||de,onClick:()=>le(!0),sx:{maxWidth:J,mx:"auto"},children:ie})}),!z&&qe&&t.jsxs(f,{mt:4,children:[t.jsxs(ae,{required:!0,sx:{mb:3},children:[t.jsx(ae.Label,{children:"Username"}),t.jsx(ct,{autoFocus:!0,block:!0,placeholder:"Your username",value:V,disabled:k||S,onChange:i=>Se(i.target.value),onKeyDown:we})]}),t.jsxs(ae,{required:!0,sx:{mb:3},children:[t.jsx(ae.Label,{children:"Password"}),t.jsx(ct,{block:!0,placeholder:"Your password",type:ce?"text":"password",value:re,disabled:k||S,onChange:i=>mt(i.target.value),onKeyDown:we,trailingAction:t.jsx(ct.Action,{onClick:()=>Je(!ce),disabled:k||S,icon:ce?Ts:Rs,"aria-label":ce?"Hide password":"Show password",sx:{color:"var(--fgColor-muted)"}})})]}),t.jsxs(f,{display:"flex",alignItems:"center",justifyContent:"space-between",mt:3,children:[t.jsx(G,{variant:"primary",disabled:k||S||!V||!re,onClick:Fe,children:k?"Signing in…":"Sign In"}),ft&&t.jsx(oo,{as:"button",sx:{fontSize:1,cursor:S?"not-allowed":"pointer",background:"none",border:"none",opacity:S?.6:1},onClick:()=>{S||k||bt()},children:Me})]})]}),z&&t.jsxs(t.Fragment,{children:[t.jsxs(ae,{required:!0,sx:{mb:3,mt:2},children:[t.jsx(ae.Label,{children:"MFA Code"}),t.jsx(ct,{autoFocus:!0,block:!0,placeholder:"Your MFA code",value:ne,disabled:k||S,onChange:i=>Xe(i.target.value),onKeyDown:we})]}),t.jsx(G,{variant:"primary",block:!0,disabled:k||S||!ne.trim(),onClick:ge,sx:{maxWidth:J,mx:"auto"},children:k?"Validating…":"Validate MFA Code"})]}),Oe&&t.jsx(W,{sx:{color:"danger.fg",fontSize:1,mt:3,display:"block"},children:Oe}),L&&t.jsxs(f,{mt:4,pt:4,textAlign:"center",borderTop:"1px solid",borderColor:"border.muted",children:[t.jsx(lt,{as:"h3",sx:{fontSize:2,mb:2},children:Nt}),t.jsx(W,{as:"p",sx:{color:"fg.muted",fontSize:1,mb:3},children:Y}),t.jsx(f,{display:"flex",justifyContent:"center",children:t.jsx(G,{variant:"primary",size:"large",leadingVisual:so,disabled:S||k,onClick:ht,children:ut})})]}),Ge&&s&&t.jsxs(t.Fragment,{children:[t.jsxs(f,{display:"flex",alignItems:"center",gap:2,my:3,children:[t.jsx(f,{flex:1,height:"1px",bg:"border.default"}),t.jsx(W,{sx:{fontSize:0,color:"fg.muted"},children:"or"}),t.jsx(f,{flex:1,height:"1px",bg:"border.default"})]}),t.jsx(G,{block:!0,leadingVisual:Lt,disabled:S||k||de,onClick:()=>E(!0),sx:{maxWidth:J,mx:"auto"},children:"Sign in with an API Key"}),pe&&t.jsx(f,{role:"dialog","aria-modal":"true","aria-labelledby":"signin-api-key-title",onKeyDown:i=>{i.key==="Escape"&&$()},onClick:$,position:"fixed",inset:0,zIndex:200,p:3,bg:"canvas.backdrop",display:"flex",alignItems:"center",justifyContent:"center",children:t.jsxs(f,{as:"form",onClick:i=>i.stopPropagation(),onSubmit:i=>{i.preventDefault(),gt()},width:"min(560px, 100%)",p:3,borderRadius:2,border:"1px solid",borderColor:"border.default",bg:"canvas.overlay",color:"fg.default",boxShadow:"shadow.large",children:[t.jsx(lt,{id:"signin-api-key-title",sx:{fontSize:2,mb:2},children:"Enter your API Key"}),t.jsxs(ae,{required:!0,children:[t.jsx(ae.Label,{children:"API Key"}),t.jsx(ao,{block:!0,required:!0,autoFocus:!0,placeholder:"Paste your API key here",value:Q,onInput:i=>oe(i.currentTarget.value),ref:D})]}),t.jsxs(f,{mt:3,display:"flex",justifyContent:"flex-end",gap:2,children:[t.jsx(G,{type:"button",onClick:$,children:"Cancel"}),t.jsx(G,{type:"submit",variant:"primary",disabled:!Q.trim(),children:"Authenticate"})]})]})})]})]})]})};function Fs(n){const{agentId:s,instructions:c,model:a,frontendTools:d,inference:h,subagents:x,sharing:C,onSubagentEvent:p,modeEffect:K}=n;return{type:"browser-vercel-ai",endpoint:"",agentId:s,enableConfigQuery:!1,options:{instructions:c,model:a,frontendTools:d,inference:h,subagents:x,sharing:C,onSubagentEvent:p,modeEffect:K}}}const yn=lo((n,s)=>({pending:void 0,suggest:(c,a)=>{const d=c.trim();d&&n({pending:{text:d,submit:a?.submit??!1,nonce:(s().pending?.nonce??0)+1}})},consume:()=>n({pending:void 0})}));function zs({agentName:n,sandboxStillRuns:s=!1,temporary:c=!0,onSignedIn:a,onSignUp:d}){const{configuration:h}=En(),x=o.useCallback(C=>{co.getState().checkIAMToken(C),a?.()},[a]);return t.jsx(f,{height:"100%",minHeight:0,overflowY:"auto",bg:"canvas.default",px:4,py:4,children:t.jsxs(f,{maxWidth:440,mx:"auto",children:[t.jsxs(f,{display:"flex",alignItems:"center",justifyContent:"center",gap:2,color:"attention.fg",mb:2,children:[t.jsx(Lt,{size:20}),t.jsx(W,{sx:{fontSize:2,fontWeight:"semibold",color:"fg.default"},children:c?"This demo runs on a shared key":"Your key has expired"})]}),t.jsxs(W,{as:"p",sx:{fontSize:1,color:"fg.muted",textAlign:"center",mb:3},children:[c?`${n??"The agent"} has used the time this key allows. Sign in to point your own agent at it, use your own data, and drop the time limit.`:`${n??"The agent"} stopped because your session ran out.`,s?" Your notebook is still running in this page.":""]}),t.jsx(Ls,{hideHero:!0,fillHeight:!1,calloutTitle:"Sign in to keep going",github:!0,google:!0,linkedin:!0,socialSignInNavigationTarget:typeof window>"u"?void 0:`${window.location.pathname}${window.location.search}`,loginUrl:h?.iamUrl?`${h.iamUrl}/api/iam/v1/login`:void 0,onSignIn:x,onSignUp:d})]})})}const Ns="https://r1.datalayer.run";function _s(n=!0){const{configuration:s}=En(),c=Ft(C=>C.token),a=s?.aiInferenceUrl||Ns,d=uo(a,n&&!c),h=c||d.token,x=o.useMemo(()=>({inferenceUrl:a,token:h||void 0}),[a,h]);return{inference:x,needsSignIn:fo(x),anonymous:d,inferenceUrl:a}}const Bs={name:"general-purpose",description:"A capable generalist for a task none of the specialists covers: research, reasoning, drafting, checking.",instructions:"You are a capable general-purpose assistant. Carry out the task you are given completely and report the result plainly, saying what you could not do."};function Cn(n){const s=n?.subagents;if(!s)return[];const c=(s.subagents??[]).map(a=>{const d=a.ref?po(a.ref):void 0;return{name:a.name,description:a.description||d?.description||a.name,instructions:a.instructions??d?.systemPrompt,model:a.model??d?.model??s.defaultModel,icon:d?.icon}});return s.includeGeneralPurpose?[...c,Bs]:c}function Hs(n){return n.replace(/^datalayer_/,"").replace(/_lexical$/,"")}function Ws(n){const s=Hs(n);return/^executeCodeIn(Notebook|Document)$/.test(s)||/^(read|list)[A-Z]/.test(s)}function Vs(n,s){return n.filter(c=>s?.has(c.name)||Ws(c.name))}function Ds(n,s){const c=a=>s&&a.value.id===`${s}-tools`?0:a.value.id==="notebook-tools"?1:2;return n.map((a,d)=>({entry:a,index:d,rank:c(a)})).sort((a,d)=>a.rank-d.rank||a.index-d.index).map(a=>a.entry)}function Gs(n,s,c){if(!c||!n.endsWith("-tools"))return!1;const a=n.slice(0,-6);return s.has(a)&&a!==c}const Ks={type:"object",properties:{}};function Ys(n,s){const c=new Set(n.toolset);return n.commands.filter(a=>c.has(a.name)).map(a=>({name:a.name,description:a.description,parameters:a.parameters??Ks,location:"frontend",handler:async d=>{if(!s)throw new Error(`${a.name}: the ${n.plugin??n.id} plugin is not mounted on this page.`);const h=Object.keys(d??{}).length>0?d:void 0,x=await s.executeCommand(a.command,h);return x===void 0?{ok:!0,command:a.command,argument:h}:x}}))}function qs(n,s){return n.flatMap(c=>Ys(c,s))}function Js(){const n=mo(),s=$s();return o.useMemo(()=>qs(s,n),[s,n])}const wn={opening:"Opening your conversation…",notOpened:n=>`Your conversation could not be opened, so this is a new one: ${n}`};function Qs(n){let s;for(const c of n.split(/\r?\n\r?\n/)){const a=c.split(/\r?\n/).filter(d=>d.startsWith("data:")).map(d=>d.slice(5).trim()).join("");if(a)try{const d=JSON.parse(a);d.type==="MESSAGES_SNAPSHOT"&&Array.isArray(d.messages)&&(s=d.messages)}catch{}}return s}async function kn(n){try{const s=await n.json();if(typeof s.detail=="string"&&s.detail)return s.detail}catch{}return`${n.status}`}async function Xs({agentBaseUrl:n,agentId:s,uid:c,token:a,fetcher:d=fetch}){const h=`${n.replace(/\/+$/,"")}/api/v1/apps/sessions/${encodeURIComponent(c)}`,x=a?{Authorization:`Bearer ${a}`}:{},C=await d(`${h}/messages`,{headers:x});if(C.ok){const B=await C.json();return hn(B.messages)}if(C.status!==404)throw new Error(await kn(C));const p=await d(`${h}/resume`,{method:"POST",headers:{"Content-Type":"application/json",...x},body:JSON.stringify({agent:s})});if(!p.ok)throw new Error(await kn(p));const K=Qs(await p.text());if(!K)throw new Error(`The runtime said nothing of session ${c}.`);return hn(K)}const Zs="var(--theme-accent)";function In({face:n,size:s}){return typeof n=="string"?t.jsx(go,{emoji:n,size:s,label:""}):t.jsx(t.Fragment,{children:n})}function ea({face:n,size:s,state:c}){const a=c==="thinking"||c==="working",d=c==="paused";return t.jsxs(f,{as:"span","aria-hidden":!0,"data-presence":c,position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",width:s+8,height:s+8,flexShrink:0,fontSize:s,lineHeight:1,children:[t.jsx(f,{as:"span",position:"absolute",inset:0,borderRadius:"50%",boxShadow:d?"none":`0 0 0 2px ${Zs}`,border:d?"2px dashed":"none",borderColor:"border.default",opacity:a||c==="waiting"||d?.9:0,transition:"opacity var(--theme-motion-status, 0ms) var(--theme-motion-easing, ease)",animation:a?"loopPresenceBreath 1.8s ease-in-out infinite":"none",reducedMotion:{animation:"none"},sx:{"@keyframes loopPresenceBreath":{"0%, 100%":{transform:"scale(0.92)",opacity:.35},"50%":{transform:"scale(1.06)",opacity:.9}}}}),t.jsx(f,{as:"span",display:"inline-flex",opacity:d?.55:1,filter:d?"grayscale(0.6)":"none",transition:"opacity var(--theme-motion-status, 0ms) var(--theme-motion-easing, ease)",children:t.jsx(In,{face:n,size:s})})]})}function ta({state:n}){return t.jsx(W,{role:"status","aria-live":"polite","data-presence-line":n,sx:{fontSize:0,color:n==="waiting"?"fg.default":"fg.muted",fontWeight:n==="waiting"?"semibold":"normal",whiteSpace:"nowrap",flexShrink:0},children:ho[n]})}const na=zt(void 0),oa=zt(""),sa=zt({}),X="",aa=1400,jn=parseInt(js["--loop-face-large"],10);function da({workspace:n}){const s=bo(),c=xo(),a=o.useRef(null),{setViewControls:d}=n,[h,x]=o.useState(null),C=So(),p=C.getConfig(vo),K=p?.placeholder||s.placeholder,B=p?.defaultSurface??"notebook",Ge=C.getConfig(yo),[L,Z]=o.useState(X),S=o.useRef(!1),I=_(Co),ee=_(wo),Ae=_(ko),ie=_(jo)[0]?.value,Y=At(ie?.promptStance??na)??ie?.prompt,ut=_(Eo),Pe=Io(ut[0]?.value),H=o.useRef(Pe);H.current=Pe;const q=o.useRef(""),Me=_(To),ft=o.useMemo(()=>Ro(()=>Me.reduce((e,r)=>({...e,...r.value.extras.value}),{})),[Me]),y=At(Me.length>0?ft:sa),J=o.useRef(new Set),te=Ao(ws,n),Ye=!te.allowed,pt=Ye?te.reason??"Chat is unavailable for this sandbox":void 0,[F,V]=o.useState(!1),[Se,re]=o.useState(!1),[mt,qe]=o.useState({open:!1,pendingApproval:!1}),le=Po(F,mt,p?.presence?.paused===!0),ce=p?.presence?.onPresence;o.useEffect(()=>{ce?.(le),H.current?.setPresence(le)},[ce,le]);const Je=o.useRef(p?.presence?.onSaying);Je.current=p?.presence?.onSaying;const k=o.useRef({answering:!1}),ve=o.useCallback(e=>{a.current=e,re(!!e)},[]),de=o.useCallback(e=>{const{open:r,pendingApproval:l}=Mo(e);qe(xe=>xe.open===r&&xe.pendingApproval===l?xe:{open:r,pendingApproval:l});const b={saying:Uo(e),answering:$o(e)},u=k.current;(u.saying?.id!==b.saying?.id||u.saying?.text!==b.saying?.text||u.answering!==b.answering)&&(k.current=b,Je.current?.(b));const O=H.current;if(!O)return;O.items(e);const P=new Set(["complete","completed","done","error","failed","cancelled","canceled","rejected","denied","stopped"]),A={insertcell:"adding a cell",updatecell:"editing a cell",runcell:"running a cell",deletecells:"removing cells",readallcells:"reading the notebook",readcell:"reading a cell",executecode:"running code",insertblock:"adding a block",updateblock:"editing a block",runblock:"running a block",readdocument:"reading the document"};let w;for(let xe=e.length-1;xe>=0;xe-=1){const rt=e[xe];if(typeof rt.toolName=="string"&&rt.toolCallId){P.has(String(rt.status).toLowerCase())||(w=rt);break}}if(!w){O.activity(void 0);return}const Tt=w.toolName.toLowerCase().replace(/^datalayer_/,"").replace(/_lexical$/,"").replace(/[^a-z]/g,""),Zn=A[Tt]??`using ${w.toolName}`;O.activity(`${q.current||"The agent"} is ${Zn}…`)},[]),$e=o.useRef(y);$e.current=y;const Ue=o.useCallback(e=>{Ln(e),H.current?.usage(e),$e.current.onUsage?.(e)},[]),Qe=o.useCallback(e=>{V(e),e||H.current?.end("done")},[]),z=o.useCallback(e=>{const r=H.current;if(!r)return;let l=-1;for(let u=e.length-1;u>=0;u-=1)if(e[u].role==="user"){l=u;break}const b=e.slice(l+1).filter(u=>u.role==="assistant").map(Oo).filter(u=>u.trim().length>0).join(`
29
29
 
30
- `);r.assistant(b)},[]),ye=o.useRef([]),ne=o.useRef(!1),Xe=o.useRef(void 0),ue=o.useRef(void 0),Ze=_(Lo),Ue=o.useRef(Ze);Ue.current=Ze;const M=o.useCallback((e,r)=>{if(ue.current)return ue.current;const l=Fo(Ue.current.map(O=>O.value),r),b=l?.loop;if(ne.current&&b?.files&&b.files.length>0){const O=Xe.current;if(!O)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 P;try{P=b.files.map(R=>({file:No(String(R.name??"")),base64:zo(String(R.data_url??""))}))}catch(R){return R instanceof Error?R.message:String(R)}O.execute(_o(P)).then(R=>{if(!R.success){x(`The files could not be put in the sandbox: ${R.error??"it failed"}.`);return}M(`${e}
30
+ `);r.assistant(b)},[]),ye=o.useRef([]),ne=o.useRef(!1),Xe=o.useRef(void 0),ue=o.useRef(void 0),Ze=_(Lo),Oe=o.useRef(Ze);Oe.current=Ze;const M=o.useCallback((e,r)=>{if(ue.current)return ue.current;const l=Fo(Oe.current.map(O=>O.value),r),b=l?.loop;if(ne.current&&b?.files&&b.files.length>0){const O=Xe.current;if(!O)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 P;try{P=b.files.map(A=>({file:No(String(A.name??"")),base64:zo(String(A.data_url??""))}))}catch(A){return A instanceof Error?A.message:String(A)}O.execute(_o(P)).then(A=>{if(!A.success){x(`The files could not be put in the sandbox: ${A.error??"it failed"}.`);return}M(`${e}
31
31
 
32
- ${Bo(P.map(w=>w.file))}`,{...l,loop:Object.fromEntries(Object.entries(b).filter(([w])=>w!=="files"))})});return}H.current?.begin(e,a.current?.thread());const u=a.current?.send;if(!u){ye.current.push([e,l]);return}u(e,l)},[]);o.useEffect(()=>{d(Se?{busy:F,stop:a.current?.stop,newChat:a.current?.newChat,send:M}:null)},[F,Se,d,M]),o.useEffect(()=>()=>d(null),[d]),o.useEffect(()=>n.prompts.subscribe(M),[n.prompts,M]),o.useEffect(()=>{if(!Se||ye.current.length===0)return;const e=ye.current.splice(0,ye.current.length);for(const[r,l]of e)a.current?.send(r,l)},[Se]);const fe=o.useRef(!1),pe=o.useCallback(async e=>{fe.current||(fe.current=!0,Ge?.firstPromptHook?.()),x(null);const r=await n.submit(e);if(!r.handled){x(r.reason??null);return}jt(""),r.result?.content&&x(r.result.content)},[n,Ge?.firstPromptHook]),E=o.useMemo(()=>I.find(e=>e.value.surfaceId===L)?.value,[I,L]),Q=o.useCallback(e=>{S.current=!0,Z(e)},[]);o.useEffect(()=>Ho(Q),[Q]),o.useEffect(()=>{Wo(I.map(e=>e.value.surfaceId))},[I]),o.useEffect(()=>{Vo(L&&L!==X?L:Es)},[L]);const oe=o.useMemo(()=>B===X||B==="none"?void 0:I.find(e=>e.value.surfaceId===B),[I,B]);o.useEffect(()=>{S.current||!oe||De(oe.value,n)&&Z(B)},[oe,n,B]);const[D,Oe]=o.useState(null),me=o.useRef(null),Ce=p?.fullScreenTopOffset??0,{fullScreen:$,usingApi:gt,toggle:ht,topOffsetPx:bt}=Do(me,{forceOverlay:!!Ce,topOffset:Ce}),[Le,ge]=o.useState(!1),we=o.useRef(!1);o.useEffect(()=>{!F||we.current||$||(we.current=!0,ge(!0))},[F,$]),o.useEffect(()=>{$&&ge(!1)},[$]),o.useEffect(()=>{E&&!De(E,n)&&(Oe(E.surfaceId),Z(X))},[E,n]);const he=o.useMemo(()=>{if(D)return I.find(e=>e.value.surfaceId===D)?.value;if(!S.current&&L===X)return oe?.value},[I,D,L,oe]);o.useEffect(()=>{if(!D||L!==X)return;const e=I.find(r=>r.value.surfaceId===D);e&&De(e.value,n)&&(Oe(null),Z(D))},[I,L,D,n]);const i=n.agentId?.trim()||"default",g=Go(n.sandbox.target??"local");ne.current=g;const m=Ko(),T=At(m?.selected??oa),v=m?.members.find(e=>e.id===T),xt=_(Yo)[0]?.value,Fe=xt?.specId,j=bn(v?.specId??i)??(Fe?bn(Fe):void 0),se=v?void 0:xt,ze=g&&!v?Cs(Fe,j):void 0;q.current=v?.name??j?.name??i;const _t=_(qo),Bt=y.hiddenOpeners,Ht=y.hideOpeners,St=y.openers,vt=o.useMemo(()=>{if(Ht)return[];const e=new Set(Bt??[]),r=w=>e.size===0?w:w.filter(Tt=>!e.has(Tt.text));if(St)return r(St);const l=_t.flatMap(w=>w.value.suggestions);if(l.length>0)return r(l);const b=r(j?.suggestions??[]),u=r(m?.team.suggestions??[]);if(u.length===0)return b;const O=new Set(u.map(w=>w.text)),P=m?.team.name??"Team",R=v?.name??j?.name??i;return[...u.map(w=>({...w,group:P})),...b.filter(w=>!O.has(w.text)).map(w=>({...w,group:R}))]},[_t,m,j,v,i,Bt,Ht,St]),et=o.useMemo(()=>vt.map(e=>({title:e.summary??e.text,message:e.message??e.text,group:e.group})),[vt]),yt=Ie(j?.icon),N=p?.presence,Tn=Ie(m?.team.icon),Wt=_(Jo),tt=o.useMemo(()=>{const e=[],r=new Map,l=new Set,b=new Set(I.map(u=>u.value.surfaceId));for(const u of Ds(Wt,E?.surfaceId)){if(Gs(u.value.id,b,E?.surfaceId))continue;let O;try{O=u.value.tools(n)}catch(P){console.warn(`[loop] frontend tools from '${u.plugin}' failed:`,P);continue}for(const P of O){const R=r.get(P.name);if(R){console.warn(`[loop] frontend tool '${P.name}' from '${u.plugin}' is shadowed by the one from '${R}'.`);continue}r.set(P.name,u.plugin),e.push(P),u.value.chatView&&l.add(P.name)}}for(const u of y.frontendTools??[])r.has(u.name)||(r.set(u.name,"chat-extras"),e.push(u),l.add(u.name));return E?e:Vs(e,l)},[Wt,n.surfaceId,n.agentId,y.frontendTools,E?.surfaceId,I]),Ct=Js(),Ne=o.useMemo(()=>{if(Ct.length===0)return tt;const e=new Set(tt.map(r=>r.name));return[...tt,...Ct.filter(r=>!e.has(r.name))]},[tt,Ct]);Xe.current=g&&Ne.some(e=>e.name===Qo)?C.getOutput(dt)?.sandbox:void 0;const A=Xo(n.sandbox,n.serverUrl),Vt=_(Zo),Rn=o.useMemo(()=>Vt.filter(e=>e.value.composer).map(e=>({name:e.value.name,description:e.value.description})),[Vt]),An=o.useMemo(()=>{if(!m||!v)return Cn(j).map(l=>({name:l.name,description:l.description,icon:Ie(l.icon)}));const e=m.members.map(l=>({name:l.name,description:l.description,emoji:l.emoji,icon:Ie(l.icon),disabled:l.id===v.id,disabledReason:l.id===v.id?`You are already talking to ${l.name}`:void 0})),r=xn(m.team,v.id).filter(l=>!m.members.some(b=>b.name===l.name)).map(l=>({name:l.name,description:l.description,icon:Ie(l.icon)}));return[...e,...r]},[m,v,j]),{inference:Dt,anonymous:Pn}=_s(g),Mn=Ft(e=>e.user),wt=g&&Pn.status==="expired",Gt=!Mn,_e=es();ue.current=_e.disabled?_e.disableReason||"This conversation is closed here.":void 0;const kt=A===void 0?ts(n.sandbox,s):void 0,nt=Ye||wt||!!ze||!!kt||_e.disabled,Kt=wt?Gt?s.demoKeyExpired:s.keyExpired:ze??kt??pt??(_e.disabled?_e.disableReason:void 0),[Yt,jt]=o.useState(""),[$n,qt]=o.useState(),ot=$n??se?.model??j?.model??n.model??"",ke=ns(),Jt=o.useRef(ke),Qt=o.useRef(T),Xt=o.useRef(ke);Xt.current=ke,o.useEffect(()=>{Qt.current!==T&&(Qt.current=T,Jt.current=Xt.current,qt(void 0))},[T]);const Un=ke&&ke!==Jt.current?ke:null,[On,Ln]=o.useState(),Fn=Un??On??null,zn=Pt(Te.inpromptMenu),Nn=Pt(Te.promptAction),_n=Pt(Te.chatHeader),Bn=o.useMemo(()=>m?.members.map(e=>({id:e.id,name:e.name,description:e.description,icon:Ie(e.icon)}))??[],[m]),be=yn(e=>e.pending),[Zt,Hn]=o.useState(0);o.useEffect(()=>os(()=>Hn(e=>e+1)),[]),o.useEffect(()=>{be&&(jt(be.text),yn.getState().consume(),be.submit&&pe(be.text))},[be]);const Be=!!(se?.createPayload?.app_spec||C.getConfig(dt)?.datalayerCreatePayload?.app_spec),Wn=Ft(e=>e.token),en=C.getConfig(dt)?.datalayerVisitors,Vn=ss(en),Dn=C.getConfig(dt)?.embedToken,He=en?Vn.token:Dn||Wn,U=p?.thread,[je,tn]=o.useState(null),Gn=!!(U?.fromRuntime&&je?.given!==U.id);o.useEffect(()=>{if(!U?.fromRuntime||!Be||!A)return;let e=!0;return(async()=>{let r="";for(let l=0;l<4&&e;l+=1)try{const b=await Xs({agentBaseUrl:A,agentId:i,uid:U.id,token:He});e&&tn({given:U.id,thread:{...U,fromRuntime:!1,messages:b}});return}catch(b){r=b instanceof Error?b.message:String(b),await new Promise(u=>setTimeout(u,1500))}e&&tn({given:U.id,thread:{id:as(),messages:[],onStarted:U.onStarted},said:wn.notOpened(r)})})(),()=>{e=!1}},[U?.id,U?.fromRuntime,Be,A,i,He]);const nn=U?.fromRuntime?je?.given===U.id?je.thread:void 0:U,Et=o.useMemo(()=>g?Fs({agentId:v?.specId??i,instructions:is(j,se?.instructions),model:ot||void 0,inference:Dt,frontendTools:Ne,subagents:m&&v?xn(m.team,v.id):Cn(j),sharing:m?.sharing,onSubagentEvent:e=>ks.getState().appendSubagentEvent(e),modeEffect:se?.modeEffect}):A!==void 0?{type:"ag-ui",endpoint:Be?`${A}/api/v1/apps/agents/${encodeURIComponent(i)}/ag-ui/`:`${A}/api/v1/ag-ui/${i}/`,...Be&&He?{authToken:He}:{},agentId:i,configEndpoint:`${A}/api/v1/configure`,enableConfigQuery:!0}:void 0,[i,g,Dt,v,Ne,m,j,se,ot,A,Be,He]),st=rs(!g,Et?.type==="ag-ui"?Et.configEndpoint:void 0,void 0,i),We=ls(),at=cs(i),[on,sn]=o.useState(void 0),[Kn,Yn]=o.useState(void 0);o.useEffect(()=>{if(g||A===void 0)return;let e=!1;return fetch(`${A}/api/v1/configure/models?agent_id=${encodeURIComponent(i)}`).then(r=>r.ok?r.json():null).then(r=>{e||(sn(r?ds(r):[]),Yn(r?us(r):void 0))}).catch(()=>{e||sn([])}),()=>{e=!0}},[A,i,g]);const qn=o.useMemo(()=>fs(on,()=>Object.values(ps).filter(e=>e.available&&ms(e)).map(e=>({id:e.id,name:e.name,provider:e.provider}))),[on]),an=o.useMemo(()=>{const e=st.data?.builtinTools??[],r=new Set(e.map(l=>l.name));return{runtime:e,frontend:Ne.filter(l=>!r.has(l.name)).map(l=>({id:l.name,name:l.name}))}},[st.data?.builtinTools,Ne]),rn=o.useMemo(()=>new Set((We.data?.skills??[]).filter(e=>e.status==="enabled"||e.status==="loaded").map(e=>e.id)),[We.data]),Jn=o.useCallback(async e=>{qt(e),!(g||A===void 0)&&await fetch(`${A}/api/v1/configure/inference/provider`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({model:e})}).catch(()=>{})},[A,g]),ln=p?.promptPlacement==="bottom-chat",Qn=p?.promptPlacement==="floating",Ee=p?.promptPlacement==="top",Ve=p?.hidePrompt===!0||y.hidePrompt===!0,Xn={onSend:()=>{pe(Yt)},input:Yt,setInput:jt,focusTrigger:be||Zt?(be?.nonce??0)+Zt:void 0,placement:Qn||Y==="floating"||Y==="floating-top"||Y==="floating-bottom"?"floating":"docked",floatingAnchor:Y==="floating-top"?"top":"bottom",isLoading:F,onStop:()=>n.viewControls.stop?.(),placeholder:Kt??K,typingSuggestions:vt.map(e=>e.text),suggestions:et,disableInputPrompt:nt,connectionConfirmed:!nt,padding:Ee||Y==="floating-top"||Y==="floating-bottom"||Y==="docked-top"?2:3,promptVariant:"lexical",autoFocus:p?.autoFocusPrompt??!0,mentionableAgents:An,promptCommands:Rn,headerContent:zn.length>0?t.jsx(Mt,{slot:Te.inpromptMenu,props:{workspace:n}}):void 0,footerExtras:Nn.length>0?t.jsx(Mt,{slot:Te.promptAction,props:{workspace:n}}):void 0,showAgentsMenu:!N,showInlineAgentsMenu:!1,agents:Bn,selectedAgentId:T,onSelectAgent:e=>m?.select(e),showTokenUsage:y.showTokenUsage??p?.showTokenUsage??!0,showContextRing:!0,agentUsage:Fn??void 0,showModelSelector:!N,models:qn,decisions:Kn,selectedModel:ot,onModelSelect:e=>{Jn(e)},showToolsMenu:!N,availableTools:an.runtime,availableFrontendTools:an.frontend,mcpServers:st.data?.mcpServers??[],mcpStatusData:y.mcpStatusData??void 0,showSkillsMenu:!N,skills:We.data?.skills??[],skillsLoading:We.isLoading,enabledSkills:rn,onToggleSkill:e=>rn.has(e)?at.disableSkill(e):at.enableSkill(e),onToggleAllSkills:(e,r)=>e.forEach(l=>r?at.enableSkill(l):at.disableSkill(l)),codemodeEnabled:y.codemodeEnabled??!1,onToggleCodemode:y.onToggleCodemode,isA2AProtocol:!1,hasConfigData:!!st.data,hasSkillsData:!!We.data},cn=ee[0]?.value.Component,It=Re[0]?.value.Component,it=cn?t.jsx(cn,{workspace:n,composer:Xn}):null,dn=I.length>0&&p?.showSurfaceSelector!==!1?t.jsx(ia,{surfaces:I.map(e=>e.value),active:E?.surfaceId??he?.surfaceId??X,onChange:Q,workspace:n}):null,un=t.jsxs(t.Fragment,{children:[I.map(e=>{const r=e.value,l=E?.surfaceId===r.surfaceId;return l||J.current.has(r.surfaceId)||De(r,n)?(J.current.add(r.surfaceId),t.jsx(f,{sx:l?{flex:"1 1 0",minWidth:0,minHeight:0}:{position:"absolute",inset:0,visibility:"hidden",pointerEvents:"none",zIndex:-1},children:t.jsx(gs,{load:r.load,props:{surfaceId:r.surfaceId,workspace:n},fallback:t.jsxs(Ot,{children:["Loading ",r.title,"…"]}),errorFallback:u=>t.jsxs(Ot,{children:[r.title," failed to load: ",u.message]})})},r.surfaceId)):null}),!E&&he?t.jsx(f,{flex:"1 1 0",minWidth:0,minHeight:0,children:t.jsxs(Ot,{children:["Starting ",he.title,"…"]})}):null]}),fn=t.jsx(t.Fragment,{children:t.jsxs(f,{flex:Ee&&E?"0 0 34%":"1 1 0",maxWidth:Ee&&E?460:void 0,minWidth:0,minHeight:0,display:"flex",flexDirection:"column",borderLeft:E?"1px solid":void 0,borderColor:"border.default",position:"relative",children:[y.errorBanner?t.jsx(f,{flexShrink:0,px:3,py:2,fontSize:1,borderBottom:"1px solid",bg:y.errorBanner.variant==="warning"?"attention.subtle":"danger.subtle",color:y.errorBanner.variant==="warning"?"attention.fg":"danger.fg",borderColor:y.errorBanner.variant==="warning"?"attention.muted":"danger.muted",children:y.errorBanner.message}):null,je?.said&&je.given===U?.id?t.jsx(W,{as:"p",role:"status",sx:{m:0,px:3,py:2,fontSize:1,color:"fg.muted"},children:je.said}):null,t.jsx(f,{flex:"1 1 auto",minHeight:0,display:"flex",children:Gn?t.jsx(W,{as:"p",role:"status",sx:{m:0,p:3,fontSize:1,color:"fg.muted"},children:wn.opening}):t.jsx(hs,{themeVariant:p?.themeVariant,themeOverrides:p?.themeOverrides,colorMode:p?.colorMode,thread:nn,disabled:nt,disableReason:Kt,protocol:Et,frontendTools:g?void 0:y.frontendTools,initialModel:ot||void 0,title:N?.name??v?.name??j?.name??i,description:N?.welcome??j?.description,brandIcon:N?.face?t.jsx(ea,{face:N.face,size:20,state:le}):t.jsx(yt,{size:20}),headerContent:N&&!kt?t.jsx(ta,{state:le}):void 0,emptyState:{icon:N?.face?t.jsx("span",{"aria-hidden":!0,style:{fontSize:jn,lineHeight:1},children:t.jsx(In,{face:N.face,size:jn})}):t.jsx(yt,{size:48}),title:N?.name??v?.name??j?.name??i,...m&&v?{sections:[{group:m.team.name,icon:t.jsx(Tn,{size:48}),title:m.team.name,subtitle:m.team.description},{group:v.name,icon:t.jsx(yt,{size:32}),title:v.name,subtitle:j?.description}]}:null},suggestions:Ee||ie||p?.suggestionLabels===!1?[]:et,showHeader:!p?.hideHeader&&!!It,headerButtons:{showNewChat:p?.headerButtons?.newChat??!1,showClear:p?.headerButtons?.clear??!1},renderHeader:It?e=>t.jsx(It,{workspace:n,header:e}):void 0,showInformation:!0,headerActions:t.jsxs(f,{display:"inline-flex",alignItems:"center",gap:2,children:[n.chatHeaderActions,_n.length>0?t.jsx(Mt,{slot:Te.chatHeader,props:{workspace:n}}):null,t.jsx(bs,{icon:$?xs:Ss,"aria-label":$?"Exit full screen":"Enter full screen",variant:"invisible",size:"small",onClick:()=>{ge(!1),ht()},sx:Le?{"@keyframes dla-fullscreen-hint":{"0%, 100%":{opacity:1},"50%":{opacity:.4}},"&&":{bg:`color-mix(in srgb, ${c.primary} 16%, transparent)`,boxShadow:`inset 0 0 0 1.5px ${c.primary}`,animation:`dla-fullscreen-hint ${aa}ms ease-in-out infinite`},"@media (prefers-reduced-motion: reduce)":{"&&":{animation:"none"}}}:void 0})]}),showInput:!1,onSendReady:ve,notebookToolSurfacesId:E?void 0:n.surfaceId,showTurnFooter:y.showTokenUsage??p?.showTokenUsage??!0,onContextSnapshot:$e,onLoadingChange:Qe,onItemsChange:z,onDisplayItemsChange:de,enableStreaming:!0},nn?.id)}),ln&&!Ve?it:null]})}),pn=p?.suggestionLabels!==!1&&et.length>0?t.jsx(f,{"aria-label":s.suggestedPrompts,display:"flex",flexWrap:"wrap",gap:2,px:2,pb:"6px",children:et.map(e=>t.jsx(f,{as:"button",type:"button",title:e.message,disabled:F||nt,onClick:()=>{pe(e.message)},appearance:"none",font:"inherit",fontSize:0,fontWeight:"semibold",lineHeight:1.25,px:"10px",py:"5px",width:Sn,flex:`0 0 ${Sn}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(vs,{title:e.title,maxWidth:"100%",sx:{minWidth:0},children:e.title})},e.title))}):null,mn=h?t.jsx(f,{flex:"0 0 auto",px:3,py:2,borderTop:"1px solid",borderColor:"border.default",bg:"canvas.subtle",fontSize:1,maxHeight:"40%",overflowY:"auto",children:h}):null;return t.jsxs(f,{ref:me,sx:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",position:"relative",...$?{bg:"canvas.default"}:null,...$&&!gt.current?{position:"fixed",top:bt,right:0,bottom:0,left:0,height:"auto",zIndex:1e3}:null},children:[ie?t.jsx(ie.Component,{workspace:n,editors:un,hasEditor:!!E,transcript:fn,prompt:Ve?null:it,chips:Ve?null:pn,picker:dn,transient:mn}):t.jsxs(t.Fragment,{children:[Ee&&!Ve?t.jsxs(f,{flex:"0 0 auto",borderBottom:"1px solid",borderColor:"border.default",children:[it,pn]}):null,dn,t.jsxs(f,{flex:"1 1 auto",minHeight:0,display:"flex",position:"relative",children:[un,fn]}),mn,ln||Ve||Ee?null:it]}),wt?t.jsx(f,{position:"absolute",inset:0,zIndex:5,bg:"canvas.default",display:"flex",flexDirection:"column",minHeight:0,children:t.jsx(zs,{agentName:v?.name??j?.name,sandboxStillRuns:g,temporary:Gt,onSignedIn:()=>ys.getState().clear()})}):null]})}function ia({surfaces:n,active:s,onChange:c,workspace:a}){const d=[...n].sort((h,x)=>(h.order??100)-(x.order??100));return t.jsxs(f,{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2,px:3,py:2,borderBottom:"1px solid",borderColor:"border.default",children:[t.jsx(W,{sx:{fontSize:0,color:"fg.muted"},children:"Beside the chat"}),t.jsxs($t,{"aria-label":"Editor beside the chat",size:"small",children:[t.jsx($t.Button,{selected:s===X,onClick:()=>c(X),children:"Chat"}),d.map(h=>{const x=De(h,a),C=x?void 0:h.unavailableReason?.(a)??"Not available right now";return t.jsx($t.Button,{selected:s===h.surfaceId,"aria-disabled":!x,title:C??h.title,leadingIcon:h.icon,onClick:()=>{x&&c(h.surfaceId)},children:h.title},h.surfaceId)})]})]})}function Ot({children:n}){return t.jsx(f,{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"fg.muted",fontSize:1,px:3,textAlign:"center",children:n})}export{da as default};
32
+ ${Bo(P.map(w=>w.file))}`,{...l,loop:Object.fromEntries(Object.entries(b).filter(([w])=>w!=="files"))})});return}H.current?.begin(e,a.current?.thread());const u=a.current?.send;if(!u){ye.current.push([e,l]);return}u(e,l)},[]);o.useEffect(()=>{d(Se?{busy:F,stop:a.current?.stop,newChat:a.current?.newChat,send:M}:null)},[F,Se,d,M]),o.useEffect(()=>()=>d(null),[d]),o.useEffect(()=>n.prompts.subscribe(M),[n.prompts,M]),o.useEffect(()=>{if(!Se||ye.current.length===0)return;const e=ye.current.splice(0,ye.current.length);for(const[r,l]of e)a.current?.send(r,l)},[Se]);const fe=o.useRef(!1),pe=o.useCallback(async e=>{fe.current||(fe.current=!0,Ge?.firstPromptHook?.()),x(null);const r=await n.submit(e);if(!r.handled){x(r.reason??null);return}jt(""),r.result?.content&&x(r.result.content)},[n,Ge?.firstPromptHook]),E=o.useMemo(()=>I.find(e=>e.value.surfaceId===L)?.value,[I,L]),Q=o.useCallback(e=>{S.current=!0,Z(e)},[]);o.useEffect(()=>Ho(Q),[Q]),o.useEffect(()=>{Wo(I.map(e=>e.value.surfaceId))},[I]),o.useEffect(()=>{Vo(L&&L!==X?L:Es)},[L]);const oe=o.useMemo(()=>B===X||B==="none"?void 0:I.find(e=>e.value.surfaceId===B),[I,B]);o.useEffect(()=>{S.current||!oe||De(oe.value,n)&&Z(B)},[oe,n,B]);const[D,Le]=o.useState(null),me=o.useRef(null),Ce=p?.fullScreenTopOffset??0,{fullScreen:$,usingApi:gt,toggle:ht,topOffsetPx:bt}=Do(me,{forceOverlay:!!Ce,topOffset:Ce}),[Fe,ge]=o.useState(!1),we=o.useRef(!1);o.useEffect(()=>{!F||we.current||$||(we.current=!0,ge(!0))},[F,$]),o.useEffect(()=>{$&&ge(!1)},[$]),o.useEffect(()=>{E&&!De(E,n)&&(Le(E.surfaceId),Z(X))},[E,n]);const he=o.useMemo(()=>{if(D)return I.find(e=>e.value.surfaceId===D)?.value;if(!S.current&&L===X)return oe?.value},[I,D,L,oe]);o.useEffect(()=>{if(!D||L!==X)return;const e=I.find(r=>r.value.surfaceId===D);e&&De(e.value,n)&&(Le(null),Z(D))},[I,L,D,n]);const i=n.agentId?.trim()||"default",g=Go(n.sandbox.target??"local");ne.current=g;const m=Ko(),T=At(m?.selected??oa),v=m?.members.find(e=>e.id===T),xt=_(Yo)[0]?.value,ze=xt?.specId,j=bn(v?.specId??i)??(ze?bn(ze):void 0),se=v?void 0:xt,Ne=g&&!v?Cs(ze,j):void 0;q.current=v?.name??j?.name??i;const _t=_(qo),Bt=y.hiddenOpeners,Ht=y.hideOpeners,St=y.openers,vt=o.useMemo(()=>{if(Ht)return[];const e=new Set(Bt??[]),r=w=>e.size===0?w:w.filter(Tt=>!e.has(Tt.text));if(St)return r(St);const l=_t.flatMap(w=>w.value.suggestions);if(l.length>0)return r(l);const b=r(j?.suggestions??[]),u=r(m?.team.suggestions??[]);if(u.length===0)return b;const O=new Set(u.map(w=>w.text)),P=m?.team.name??"Team",A=v?.name??j?.name??i;return[...u.map(w=>({...w,group:P})),...b.filter(w=>!O.has(w.text)).map(w=>({...w,group:A}))]},[_t,m,j,v,i,Bt,Ht,St]),et=o.useMemo(()=>vt.map(e=>({title:e.summary??e.text,message:e.message??e.text,group:e.group})),[vt]),yt=Te(j?.icon),N=p?.presence,Tn=Te(m?.team.icon),Wt=_(Jo),tt=o.useMemo(()=>{const e=[],r=new Map,l=new Set,b=new Set(I.map(u=>u.value.surfaceId));for(const u of Ds(Wt,E?.surfaceId)){if(Gs(u.value.id,b,E?.surfaceId))continue;let O;try{O=u.value.tools(n)}catch(P){console.warn(`[loop] frontend tools from '${u.plugin}' failed:`,P);continue}for(const P of O){const A=r.get(P.name);if(A){console.warn(`[loop] frontend tool '${P.name}' from '${u.plugin}' is shadowed by the one from '${A}'.`);continue}r.set(P.name,u.plugin),e.push(P),u.value.chatView&&l.add(P.name)}}for(const u of y.frontendTools??[])r.has(u.name)||(r.set(u.name,"chat-extras"),e.push(u),l.add(u.name));return E?e:Vs(e,l)},[Wt,n.surfaceId,n.agentId,y.frontendTools,E?.surfaceId,I]),Ct=Js(),_e=o.useMemo(()=>{if(Ct.length===0)return tt;const e=new Set(tt.map(r=>r.name));return[...tt,...Ct.filter(r=>!e.has(r.name))]},[tt,Ct]);Xe.current=g&&_e.some(e=>e.name===Qo)?C.getOutput(dt)?.sandbox:void 0;const R=Xo(n.sandbox,n.serverUrl),Vt=_(Zo),Rn=o.useMemo(()=>Vt.filter(e=>e.value.composer).map(e=>({name:e.value.name,description:e.value.description})),[Vt]),An=o.useMemo(()=>{if(!m||!v)return Cn(j).map(l=>({name:l.name,description:l.description,icon:Te(l.icon)}));const e=m.members.map(l=>({name:l.name,description:l.description,emoji:l.emoji,icon:Te(l.icon),disabled:l.id===v.id,disabledReason:l.id===v.id?`You are already talking to ${l.name}`:void 0})),r=xn(m.team,v.id).filter(l=>!m.members.some(b=>b.name===l.name)).map(l=>({name:l.name,description:l.description,icon:Te(l.icon)}));return[...e,...r]},[m,v,j]),{inference:Dt,anonymous:Pn}=_s(g),Mn=Ft(e=>e.user),wt=g&&Pn.status==="expired",Gt=!Mn,Be=es();ue.current=Be.disabled?Be.disableReason||"This conversation is closed here.":void 0;const kt=R===void 0?ts(n.sandbox,s):void 0,nt=Ye||wt||!!Ne||!!kt||Be.disabled,Kt=wt?Gt?s.demoKeyExpired:s.keyExpired:Ne??kt??pt??(Be.disabled?Be.disableReason:void 0),[Yt,jt]=o.useState(""),[$n,qt]=o.useState(),ot=$n??se?.model??j?.model??n.model??"",ke=ns(),Jt=o.useRef(ke),Qt=o.useRef(T),Xt=o.useRef(ke);Xt.current=ke,o.useEffect(()=>{Qt.current!==T&&(Qt.current=T,Jt.current=Xt.current,qt(void 0))},[T]);const Un=ke&&ke!==Jt.current?ke:null,[On,Ln]=o.useState(),Fn=Un??On??null,zn=Pt(Re.inpromptMenu),Nn=Pt(Re.promptAction),_n=Pt(Re.chatHeader),Bn=o.useMemo(()=>m?.members.map(e=>({id:e.id,name:e.name,description:e.description,icon:Te(e.icon)}))??[],[m]),be=yn(e=>e.pending),[Zt,Hn]=o.useState(0);o.useEffect(()=>os(()=>Hn(e=>e+1)),[]),o.useEffect(()=>{be&&(jt(be.text),yn.getState().consume(),be.submit&&pe(be.text))},[be]);const je=!!(se?.createPayload?.app_spec||C.getConfig(dt)?.datalayerCreatePayload?.app_spec),Wn=Ft(e=>e.token),en=C.getConfig(dt)?.datalayerVisitors,Vn=ss(en),Dn=C.getConfig(dt)?.embedToken,He=en?Vn.token:Dn||Wn,U=p?.thread,[Ee,tn]=o.useState(null),Gn=!!(U?.fromRuntime&&Ee?.given!==U.id);o.useEffect(()=>{if(!U?.fromRuntime||!je||!R)return;let e=!0;return(async()=>{let r="";for(let l=0;l<4&&e;l+=1)try{const b=await Xs({agentBaseUrl:R,agentId:i,uid:U.id,token:He});e&&tn({given:U.id,thread:{...U,fromRuntime:!1,messages:b}});return}catch(b){r=b instanceof Error?b.message:String(b),await new Promise(u=>setTimeout(u,1500))}e&&tn({given:U.id,thread:{id:as(),messages:[],onStarted:U.onStarted},said:wn.notOpened(r)})})(),()=>{e=!1}},[U?.id,U?.fromRuntime,je,R,i,He]);const nn=U?.fromRuntime?Ee?.given===U.id?Ee.thread:void 0:U,Et=o.useMemo(()=>g?Fs({agentId:v?.specId??i,instructions:is(j,se?.instructions),model:ot||void 0,inference:Dt,frontendTools:_e,subagents:m&&v?xn(m.team,v.id):Cn(j),sharing:m?.sharing,onSubagentEvent:e=>ks.getState().appendSubagentEvent(e),modeEffect:se?.modeEffect}):R!==void 0?{type:"ag-ui",endpoint:je?`${R}/api/v1/apps/agents/${encodeURIComponent(i)}/ag-ui/`:`${R}/api/v1/ag-ui/${i}/`,...je&&He?{authToken:He}:{},...je?{uiSocket:`${R.replace(/^http/,"ws")}/api/v1/apps/ui`}:{},agentId:i,configEndpoint:`${R}/api/v1/configure`,enableConfigQuery:!0}:void 0,[i,g,Dt,v,_e,m,j,se,ot,R,je,He]),st=rs(!g,Et?.type==="ag-ui"?Et.configEndpoint:void 0,void 0,i),We=ls(),at=cs(i),[on,sn]=o.useState(void 0),[Kn,Yn]=o.useState(void 0);o.useEffect(()=>{if(g||R===void 0)return;let e=!1;return fetch(`${R}/api/v1/configure/models?agent_id=${encodeURIComponent(i)}`).then(r=>r.ok?r.json():null).then(r=>{e||(sn(r?ds(r):[]),Yn(r?us(r):void 0))}).catch(()=>{e||sn([])}),()=>{e=!0}},[R,i,g]);const qn=o.useMemo(()=>fs(on,()=>Object.values(ps).filter(e=>e.available&&ms(e)).map(e=>({id:e.id,name:e.name,provider:e.provider}))),[on]),an=o.useMemo(()=>{const e=st.data?.builtinTools??[],r=new Set(e.map(l=>l.name));return{runtime:e,frontend:_e.filter(l=>!r.has(l.name)).map(l=>({id:l.name,name:l.name}))}},[st.data?.builtinTools,_e]),rn=o.useMemo(()=>new Set((We.data?.skills??[]).filter(e=>e.status==="enabled"||e.status==="loaded").map(e=>e.id)),[We.data]),Jn=o.useCallback(async e=>{qt(e),!(g||R===void 0)&&await fetch(`${R}/api/v1/configure/inference/provider`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({model:e})}).catch(()=>{})},[R,g]),ln=p?.promptPlacement==="bottom-chat",Qn=p?.promptPlacement==="floating",Ie=p?.promptPlacement==="top",Ve=p?.hidePrompt===!0||y.hidePrompt===!0,Xn={onSend:()=>{pe(Yt)},input:Yt,setInput:jt,focusTrigger:be||Zt?(be?.nonce??0)+Zt:void 0,placement:Qn||Y==="floating"||Y==="floating-top"||Y==="floating-bottom"?"floating":"docked",floatingAnchor:Y==="floating-top"?"top":"bottom",isLoading:F,onStop:()=>n.viewControls.stop?.(),placeholder:Kt??K,typingSuggestions:vt.map(e=>e.text),suggestions:et,disableInputPrompt:nt,connectionConfirmed:!nt,padding:Ie||Y==="floating-top"||Y==="floating-bottom"||Y==="docked-top"?2:3,promptVariant:"lexical",autoFocus:p?.autoFocusPrompt??!0,mentionableAgents:An,promptCommands:Rn,headerContent:zn.length>0?t.jsx(Mt,{slot:Re.inpromptMenu,props:{workspace:n}}):void 0,footerExtras:Nn.length>0?t.jsx(Mt,{slot:Re.promptAction,props:{workspace:n}}):void 0,showAgentsMenu:!N,showInlineAgentsMenu:!1,agents:Bn,selectedAgentId:T,onSelectAgent:e=>m?.select(e),showTokenUsage:y.showTokenUsage??p?.showTokenUsage??!0,showContextRing:!0,agentUsage:Fn??void 0,showModelSelector:!N,models:qn,decisions:Kn,selectedModel:ot,onModelSelect:e=>{Jn(e)},showToolsMenu:!N,availableTools:an.runtime,availableFrontendTools:an.frontend,mcpServers:st.data?.mcpServers??[],mcpStatusData:y.mcpStatusData??void 0,showSkillsMenu:!N,skills:We.data?.skills??[],skillsLoading:We.isLoading,enabledSkills:rn,onToggleSkill:e=>rn.has(e)?at.disableSkill(e):at.enableSkill(e),onToggleAllSkills:(e,r)=>e.forEach(l=>r?at.enableSkill(l):at.disableSkill(l)),codemodeEnabled:y.codemodeEnabled??!1,onToggleCodemode:y.onToggleCodemode,isA2AProtocol:!1,hasConfigData:!!st.data,hasSkillsData:!!We.data},cn=ee[0]?.value.Component,It=Ae[0]?.value.Component,it=cn?t.jsx(cn,{workspace:n,composer:Xn}):null,dn=I.length>0&&p?.showSurfaceSelector!==!1?t.jsx(ia,{surfaces:I.map(e=>e.value),active:E?.surfaceId??he?.surfaceId??X,onChange:Q,workspace:n}):null,un=t.jsxs(t.Fragment,{children:[I.map(e=>{const r=e.value,l=E?.surfaceId===r.surfaceId;return l||J.current.has(r.surfaceId)||De(r,n)?(J.current.add(r.surfaceId),t.jsx(f,{sx:l?{flex:"1 1 0",minWidth:0,minHeight:0}:{position:"absolute",inset:0,visibility:"hidden",pointerEvents:"none",zIndex:-1},children:t.jsx(gs,{load:r.load,props:{surfaceId:r.surfaceId,workspace:n},fallback:t.jsxs(Ot,{children:["Loading ",r.title,"…"]}),errorFallback:u=>t.jsxs(Ot,{children:[r.title," failed to load: ",u.message]})})},r.surfaceId)):null}),!E&&he?t.jsx(f,{flex:"1 1 0",minWidth:0,minHeight:0,children:t.jsxs(Ot,{children:["Starting ",he.title,"…"]})}):null]}),fn=t.jsx(t.Fragment,{children:t.jsxs(f,{flex:Ie&&E?"0 0 34%":"1 1 0",maxWidth:Ie&&E?460:void 0,minWidth:0,minHeight:0,display:"flex",flexDirection:"column",borderLeft:E?"1px solid":void 0,borderColor:"border.default",position:"relative",children:[y.errorBanner?t.jsx(f,{flexShrink:0,px:3,py:2,fontSize:1,borderBottom:"1px solid",bg:y.errorBanner.variant==="warning"?"attention.subtle":"danger.subtle",color:y.errorBanner.variant==="warning"?"attention.fg":"danger.fg",borderColor:y.errorBanner.variant==="warning"?"attention.muted":"danger.muted",children:y.errorBanner.message}):null,Ee?.said&&Ee.given===U?.id?t.jsx(W,{as:"p",role:"status",sx:{m:0,px:3,py:2,fontSize:1,color:"fg.muted"},children:Ee.said}):null,t.jsx(f,{flex:"1 1 auto",minHeight:0,display:"flex",children:Gn?t.jsx(W,{as:"p",role:"status",sx:{m:0,p:3,fontSize:1,color:"fg.muted"},children:wn.opening}):t.jsx(hs,{themeVariant:p?.themeVariant,themeOverrides:p?.themeOverrides,colorMode:p?.colorMode,thread:nn,disabled:nt,disableReason:Kt,protocol:Et,frontendTools:g?void 0:y.frontendTools,initialModel:ot||void 0,title:N?.name??v?.name??j?.name??i,description:N?.welcome??j?.description,brandIcon:N?.face?t.jsx(ea,{face:N.face,size:20,state:le}):t.jsx(yt,{size:20}),headerContent:N&&!kt?t.jsx(ta,{state:le}):void 0,emptyState:{icon:N?.face?t.jsx("span",{"aria-hidden":!0,style:{fontSize:jn,lineHeight:1},children:t.jsx(In,{face:N.face,size:jn})}):t.jsx(yt,{size:48}),title:N?.name??v?.name??j?.name??i,...m&&v?{sections:[{group:m.team.name,icon:t.jsx(Tn,{size:48}),title:m.team.name,subtitle:m.team.description},{group:v.name,icon:t.jsx(yt,{size:32}),title:v.name,subtitle:j?.description}]}:null},suggestions:Ie||ie||p?.suggestionLabels===!1?[]:et,showHeader:!p?.hideHeader&&!!It,headerButtons:{showNewChat:p?.headerButtons?.newChat??!1,showClear:p?.headerButtons?.clear??!1},renderHeader:It?e=>t.jsx(It,{workspace:n,header:e}):void 0,showInformation:!0,headerActions:t.jsxs(f,{display:"inline-flex",alignItems:"center",gap:2,children:[n.chatHeaderActions,_n.length>0?t.jsx(Mt,{slot:Re.chatHeader,props:{workspace:n}}):null,t.jsx(bs,{icon:$?xs:Ss,"aria-label":$?"Exit full screen":"Enter full screen",variant:"invisible",size:"small",onClick:()=>{ge(!1),ht()},sx:Fe?{"@keyframes dla-fullscreen-hint":{"0%, 100%":{opacity:1},"50%":{opacity:.4}},"&&":{bg:`color-mix(in srgb, ${c.primary} 16%, transparent)`,boxShadow:`inset 0 0 0 1.5px ${c.primary}`,animation:`dla-fullscreen-hint ${aa}ms ease-in-out infinite`},"@media (prefers-reduced-motion: reduce)":{"&&":{animation:"none"}}}:void 0})]}),showInput:!1,onSendReady:ve,notebookToolSurfacesId:E?void 0:n.surfaceId,showTurnFooter:y.showTokenUsage??p?.showTokenUsage??!0,onContextSnapshot:Ue,onLoadingChange:Qe,onItemsChange:z,onDisplayItemsChange:de,enableStreaming:!0},nn?.id)}),ln&&!Ve?it:null]})}),pn=p?.suggestionLabels!==!1&&et.length>0?t.jsx(f,{"aria-label":s.suggestedPrompts,display:"flex",flexWrap:"wrap",gap:2,px:2,pb:"6px",children:et.map(e=>t.jsx(f,{as:"button",type:"button",title:e.message,disabled:F||nt,onClick:()=>{pe(e.message)},appearance:"none",font:"inherit",fontSize:0,fontWeight:"semibold",lineHeight:1.25,px:"10px",py:"5px",width:Sn,flex:`0 0 ${Sn}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(vs,{title:e.title,maxWidth:"100%",sx:{minWidth:0},children:e.title})},e.title))}):null,mn=h?t.jsx(f,{flex:"0 0 auto",px:3,py:2,borderTop:"1px solid",borderColor:"border.default",bg:"canvas.subtle",fontSize:1,maxHeight:"40%",overflowY:"auto",children:h}):null;return t.jsxs(f,{ref:me,sx:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",position:"relative",...$?{bg:"canvas.default"}:null,...$&&!gt.current?{position:"fixed",top:bt,right:0,bottom:0,left:0,height:"auto",zIndex:1e3}:null},children:[ie?t.jsx(ie.Component,{workspace:n,editors:un,hasEditor:!!E,transcript:fn,prompt:Ve?null:it,chips:Ve?null:pn,picker:dn,transient:mn}):t.jsxs(t.Fragment,{children:[Ie&&!Ve?t.jsxs(f,{flex:"0 0 auto",borderBottom:"1px solid",borderColor:"border.default",children:[it,pn]}):null,dn,t.jsxs(f,{flex:"1 1 auto",minHeight:0,display:"flex",position:"relative",children:[un,fn]}),mn,ln||Ve||Ie?null:it]}),wt?t.jsx(f,{position:"absolute",inset:0,zIndex:5,bg:"canvas.default",display:"flex",flexDirection:"column",minHeight:0,children:t.jsx(zs,{agentName:v?.name??j?.name,sandboxStillRuns:g,temporary:Gt,onSignedIn:()=>ys.getState().clear()})}):null]})}function ia({surfaces:n,active:s,onChange:c,workspace:a}){const d=[...n].sort((h,x)=>(h.order??100)-(x.order??100));return t.jsxs(f,{flex:"0 0 auto",display:"flex",alignItems:"center",gap:2,px:3,py:2,borderBottom:"1px solid",borderColor:"border.default",children:[t.jsx(W,{sx:{fontSize:0,color:"fg.muted"},children:"Beside the chat"}),t.jsxs($t,{"aria-label":"Editor beside the chat",size:"small",children:[t.jsx($t.Button,{selected:s===X,onClick:()=>c(X),children:"Chat"}),d.map(h=>{const x=De(h,a),C=x?void 0:h.unavailableReason?.(a)??"Not available right now";return t.jsx($t.Button,{selected:s===h.surfaceId,"aria-disabled":!x,title:C??h.title,leadingIcon:h.icon,onClick:()=>{x&&c(h.surfaceId)},children:h.title},h.surfaceId)})]})]})}function Ot({children:n}){return t.jsx(f,{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",color:"fg.muted",fontSize:1,px:3,textAlign:"center",children:n})}export{da as default};