@anvia/studio 0.7.0 → 0.7.2

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 (37) hide show
  1. package/dist/ui/assets/{ArrowClockwise.es-CdkDSmVV.js → ArrowClockwise.es-CkX5Dusx.js} +2 -2
  2. package/dist/ui/assets/{ArrowClockwise.es-CdkDSmVV.js.map → ArrowClockwise.es-CkX5Dusx.js.map} +1 -1
  3. package/dist/ui/assets/{Path.es-CAqZdUXu.js → Path.es-BO1_yZml.js} +2 -2
  4. package/dist/ui/assets/{Path.es-CAqZdUXu.js.map → Path.es-BO1_yZml.js.map} +1 -1
  5. package/dist/ui/assets/{Play.es-D9AQgyVC.js → Play.es-CfR0TdqF.js} +2 -2
  6. package/dist/ui/assets/{Play.es-D9AQgyVC.js.map → Play.es-CfR0TdqF.js.map} +1 -1
  7. package/dist/ui/assets/{evals-page-GEsRKWxr.js → evals-page-Daw2NBZy.js} +2 -2
  8. package/dist/ui/assets/{evals-page-GEsRKWxr.js.map → evals-page-Daw2NBZy.js.map} +1 -1
  9. package/dist/ui/assets/index-ga3NT_WB.js +54 -0
  10. package/dist/ui/assets/index-ga3NT_WB.js.map +1 -0
  11. package/dist/ui/assets/{knowledge-page-CQJNZ8fA.js → knowledge-page-BedxCox0.js} +2 -2
  12. package/dist/ui/assets/{knowledge-page-CQJNZ8fA.js.map → knowledge-page-BedxCox0.js.map} +1 -1
  13. package/dist/ui/assets/{mcps-page-BRCLJmEX.js → mcps-page-j8Z039bK.js} +2 -2
  14. package/dist/ui/assets/{mcps-page-BRCLJmEX.js.map → mcps-page-j8Z039bK.js.map} +1 -1
  15. package/dist/ui/assets/{memory-page-DsITtAok.js → memory-page-vAjRwLz5.js} +2 -2
  16. package/dist/ui/assets/{memory-page-DsITtAok.js.map → memory-page-vAjRwLz5.js.map} +1 -1
  17. package/dist/ui/assets/{pipelines-page-vBUhZ5x2.js → pipelines-page-cgBFM32i.js} +2 -2
  18. package/dist/ui/assets/{pipelines-page-vBUhZ5x2.js.map → pipelines-page-cgBFM32i.js.map} +1 -1
  19. package/dist/ui/assets/{renderers-hYnJAoYZ.js → renderers-DLO8tpZC.js} +2 -2
  20. package/dist/ui/assets/{renderers-hYnJAoYZ.js.map → renderers-DLO8tpZC.js.map} +1 -1
  21. package/dist/ui/assets/sessions-page-C7e2jtjB.js +2 -0
  22. package/dist/ui/assets/sessions-page-C7e2jtjB.js.map +1 -0
  23. package/dist/ui/assets/{status-page-B16drVrZ.js → status-page-BszwJuUf.js} +2 -2
  24. package/dist/ui/assets/{status-page-B16drVrZ.js.map → status-page-BszwJuUf.js.map} +1 -1
  25. package/dist/ui/assets/{tools-page-DwgbeCMm.js → tools-page-B5Sd0DZG.js} +2 -2
  26. package/dist/ui/assets/{tools-page-DwgbeCMm.js.map → tools-page-B5Sd0DZG.js.map} +1 -1
  27. package/dist/ui/assets/trace-browser-DbNpg0Zk.js +10 -0
  28. package/dist/ui/assets/{trace-browser-DLB0mURK.js.map → trace-browser-DbNpg0Zk.js.map} +1 -1
  29. package/dist/ui/assets/{transcript-item-DM71m6Mp.js → transcript-item-rmJuWRCF.js} +2 -2
  30. package/dist/ui/assets/{transcript-item-DM71m6Mp.js.map → transcript-item-rmJuWRCF.js.map} +1 -1
  31. package/dist/ui/index.html +1 -1
  32. package/package.json +15 -11
  33. package/dist/ui/assets/index-DW3P6_Qc.js +0 -54
  34. package/dist/ui/assets/index-DW3P6_Qc.js.map +0 -1
  35. package/dist/ui/assets/sessions-page-BYhPHSQS.js +0 -6
  36. package/dist/ui/assets/sessions-page-BYhPHSQS.js.map +0 -1
  37. package/dist/ui/assets/trace-browser-DLB0mURK.js +0 -10
@@ -0,0 +1,2 @@
1
+ import{i as e,n as t,s as n,t as r}from"./jsx-runtime-ZfyQks-z.js";import{A as i,C as a,D as o,F as s,G as c,H as l,L as u,M as d,O as f,P as p,R as m,S as h,T as g,b as _,k as v,n as y,o as b,w as ee,x,z as S}from"./index-ga3NT_WB.js";var C=n(e(),1),w=new Map([[`bold`,C.createElement(C.Fragment,null,C.createElement(`path`,{d:`M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z`}))],[`duotone`,C.createElement(C.Fragment,null,C.createElement(`path`,{d:`M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56Z`,opacity:`0.2`}),C.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z`}))],[`fill`,C.createElement(C.Fragment,null,C.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z`}))],[`light`,C.createElement(C.Fragment,null,C.createElement(`path`,{d:`M216,50H174V40a22,22,0,0,0-22-22H104A22,22,0,0,0,82,40V50H40a6,6,0,0,0,0,12H50V208a14,14,0,0,0,14,14H192a14,14,0,0,0,14-14V62h10a6,6,0,0,0,0-12ZM94,40a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V50H94ZM194,208a2,2,0,0,1-2,2H64a2,2,0,0,1-2-2V62H194ZM110,104v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Zm48,0v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Z`}))],[`regular`,C.createElement(C.Fragment,null,C.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z`}))],[`thin`,C.createElement(C.Fragment,null,C.createElement(`path`,{d:`M216,52H172V40a20,20,0,0,0-20-20H104A20,20,0,0,0,84,40V52H40a4,4,0,0,0,0,8H52V208a12,12,0,0,0,12,12H192a12,12,0,0,0,12-12V60h12a4,4,0,0,0,0-8ZM92,40a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V52H92ZM196,208a4,4,0,0,1-4,4H64a4,4,0,0,1-4-4V60H196ZM108,104v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Zm48,0v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Z`}))]]),T=C.forwardRef((e,t)=>C.createElement(c,{ref:t,...e,weights:w}));T.displayName=`TrashIcon`;var E=T,D=r(),O=`Dialog`,[k,te]=p(O),[A,j]=k(O),M=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,s=C.useRef(null),c=C.useRef(null),[l,u]=h({prop:r,defaultProp:i??!1,onChange:a,caller:O});return(0,D.jsx)(A,{scope:t,triggerRef:s,contentRef:c,contentId:g(),titleId:g(),descriptionId:g(),open:l,onOpenChange:u,onOpenToggle:C.useCallback(()=>u(e=>!e),[u]),modal:o,children:n})};M.displayName=O;var N=`DialogTrigger`,ne=C.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(N,n),a=S(t,i.triggerRef);return(0,D.jsx)(d.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":Q(i.open),...r,ref:a,onClick:s(e.onClick,i.onOpenToggle)})});ne.displayName=N;var P=`DialogPortal`,[F,I]=k(P,{forceMount:void 0}),L=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,o=j(P,t);return(0,D.jsx)(F,{scope:t,forceMount:n,children:C.Children.map(r,e=>(0,D.jsx)(a,{present:n||o.open,children:(0,D.jsx)(ee,{asChild:!0,container:i,children:e})}))})};L.displayName=P;var R=`DialogOverlay`,z=C.forwardRef((e,t)=>{let n=I(R,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,o=j(R,e.__scopeDialog);return o.modal?(0,D.jsx)(a,{present:r||o.open,children:(0,D.jsx)(V,{...i,ref:t})}):null});z.displayName=R;var B=m(`DialogOverlay.RemoveScroll`),V=C.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,a=j(R,n),o=S(t,i());return(0,D.jsx)(_,{as:B,allowPinchZoom:!0,shards:[a.contentRef],children:(0,D.jsx)(d.div,{"data-state":Q(a.open),...r,ref:o,style:{pointerEvents:`auto`,...r.style}})})}),H=`DialogContent`,U=C.forwardRef((e,t)=>{let n=I(H,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,o=j(H,e.__scopeDialog);return(0,D.jsx)(a,{present:r||o.open,children:o.modal?(0,D.jsx)(W,{...i,ref:t}):(0,D.jsx)(G,{...i,ref:t})})});U.displayName=H;var W=C.forwardRef((e,t)=>{let n=j(H,e.__scopeDialog),r=C.useRef(null),i=S(t,n.contentRef,r);return C.useEffect(()=>{let e=r.current;if(e)return x(e)},[]),(0,D.jsx)(K,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:s(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:s(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:s(e.onFocusOutside,e=>e.preventDefault())})}),G=C.forwardRef((e,t)=>{let n=j(H,e.__scopeDialog),r=C.useRef(!1),i=C.useRef(!1);return(0,D.jsx)(K,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),K=C.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...s}=e,c=j(H,n);return f(),(0,D.jsx)(D.Fragment,{children:(0,D.jsx)(o,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,D.jsx)(v,{role:`dialog`,id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Q(c.open),...s,ref:t,deferPointerDownOutside:!0,onDismiss:()=>c.onOpenChange(!1)})})})}),q=`DialogTitle`,J=C.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(q,n);return(0,D.jsx)(d.h2,{id:i.titleId,...r,ref:t})});J.displayName=q;var Y=`DialogDescription`,X=C.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(Y,n);return(0,D.jsx)(d.p,{id:i.descriptionId,...r,ref:t})});X.displayName=Y;var Z=`DialogClose`,re=C.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(Z,n);return(0,D.jsx)(d.button,{type:`button`,...r,ref:t,onClick:s(e.onClick,()=>i.onOpenChange(!1))})});re.displayName=Z;function Q(e){return e?`open`:`closed`}var ie=M;function ae({className:e,children:n,...r}){return(0,D.jsxs)(L,{children:[(0,D.jsx)(z,{className:`fixed inset-0 z-50 bg-background/80 backdrop-blur-sm`}),(0,D.jsx)(U,{className:t(`fixed left-1/2 top-1/2 z-50 grid w-[min(420px,calc(100vw-32px))] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl border border-border bg-popover p-5 text-popover-foreground shadow-2xl shadow-black/40`,e),...r,children:n})]})}function oe({className:e,...n}){return(0,D.jsx)(`div`,{className:t(`grid gap-1.5`,e),...n})}function se({className:e,...n}){return(0,D.jsx)(`div`,{className:t(`flex justify-end gap-2`,e),...n})}function ce({className:e,...n}){return(0,D.jsx)(J,{className:t(`text-base font-bold`,e),...n})}function le({className:e,...n}){return(0,D.jsx)(X,{className:t(`text-sm leading-6 text-muted-foreground`,e),...n})}function $(e){return e.sessionsEnabled?(0,D.jsx)(`section`,{className:`grid min-h-0 w-full overflow-auto pb-6 pl-0 pr-6`,"aria-label":`Sessions`,children:(0,D.jsxs)(`div`,{className:`min-w-225 overflow-hidden rounded-xl border border-border/80 bg-card/70 p-2 shadow-sm`,children:[(0,D.jsxs)(`div`,{className:`sticky top-0 z-10 grid min-h-11 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px_72px] items-center gap-4 rounded-lg border border-border/60 bg-card/95 px-4 font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-muted-foreground backdrop-blur`,children:[(0,D.jsx)(`span`,{children:`Session`}),(0,D.jsx)(`span`,{children:`Agent`}),(0,D.jsx)(`span`,{children:`Messages`}),(0,D.jsx)(`span`,{children:`Updated`}),(0,D.jsx)(`span`,{className:`sr-only`,children:`Actions`})]}),e.sessionLoadState===`loading`&&e.sessions.length===0?(0,D.jsx)(`div`,{className:`px-5 py-4 text-sm font-medium text-muted-foreground`,children:`Loading sessions`}):null,e.sessionLoadState===`idle`&&e.sessions.length===0?(0,D.jsx)(`div`,{className:`px-5 py-4 text-sm font-medium text-muted-foreground`,children:`No sessions`}):null,e.sessions.map(n=>(0,D.jsxs)(`div`,{className:t(`mt-1 grid min-h-14 w-full min-w-0 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px_72px] items-center gap-4 rounded-lg border border-transparent px-4 text-left text-muted-foreground transition duration-200 hover:border-primary/20 hover:bg-accent/80 hover:text-accent-foreground`,n.id===e.selectedSessionId&&`border-primary/35 bg-primary/10 text-primary`),children:[(0,D.jsxs)(u,{className:`col-span-4 grid h-full min-h-14 min-w-0 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px] items-center justify-start gap-4 border-0 bg-transparent p-0 text-left text-inherit shadow-none hover:bg-transparent hover:text-inherit`,type:`button`,variant:`ghost`,onClick:()=>e.onOpenSession(n.id),children:[(0,D.jsxs)(`span`,{className:`grid min-w-0 gap-0.5`,children:[(0,D.jsx)(`strong`,{className:`min-w-0 truncate text-sm font-medium text-foreground`,children:n.title??`Untitled chat`}),(0,D.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs font-medium text-muted-foreground`,children:n.id})]}),(0,D.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:y(e.agents,n.agentId)}),(0,D.jsxs)(`span`,{className:`text-xs font-medium tabular-nums text-muted-foreground`,children:[n.messageCount,` messages`]}),(0,D.jsx)(`time`,{className:`text-xs font-medium text-muted-foreground`,children:b(n.updatedAt)})]}),(0,D.jsxs)(`span`,{className:`flex items-center justify-end gap-1`,children:[(0,D.jsx)(u,{"aria-label":`View tracing for ${n.title??`Untitled chat`}`,className:`h-7 min-h-7 w-7 border-0 bg-transparent p-0 text-muted-foreground opacity-80 hover:bg-transparent hover:text-primary hover:opacity-100 [&_svg]:h-3.5 [&_svg]:w-3.5`,size:`icon`,type:`button`,variant:`ghost`,onClick:t=>{t.stopPropagation(),e.onViewSessionTracing(n.id)},children:(0,D.jsx)(l,{"aria-hidden":`true`})}),(0,D.jsx)(u,{"aria-label":`Delete ${n.title??`Untitled chat`}`,className:`h-7 min-h-7 w-7 border-0 bg-transparent p-0 text-muted-foreground opacity-80 hover:bg-transparent hover:text-destructive hover:opacity-100 [&_svg]:h-3.5 [&_svg]:w-3.5`,size:`icon`,type:`button`,variant:`ghost`,onClick:t=>{t.stopPropagation(),e.onDeleteSession(n)},children:(0,D.jsx)(E,{"aria-hidden":`true`})})]})]},n.id))]})}):(0,D.jsx)(`div`,{className:`w-full rounded-lg border border-dashed border-border p-8 text-sm font-medium text-muted-foreground`,children:`Sessions are disabled`})}function ue(e){let t=e.session?.title??`Untitled chat`;return(0,D.jsx)(ie,{open:e.session!==void 0,onOpenChange:e.onOpenChange,children:(0,D.jsxs)(ae,{children:[(0,D.jsxs)(oe,{children:[(0,D.jsx)(ce,{children:`Delete session`}),(0,D.jsxs)(le,{children:[`Delete "`,t,`" and its traces. This cannot be undone.`]})]}),(0,D.jsxs)(se,{children:[(0,D.jsx)(u,{type:`button`,variant:`ghost`,onClick:()=>e.onOpenChange(!1),children:`Cancel`}),(0,D.jsx)(u,{type:`button`,variant:`destructive`,onClick:()=>{e.session!==void 0&&e.onConfirm(e.session)},children:`Delete`})]})]})})}export{ue as DeleteSessionDialog,$ as SessionsPage};
2
+ //# sourceMappingURL=sessions-page-C7e2jtjB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions-page-C7e2jtjB.js","names":["s","e","t","Dialog","PortalPrimitive","RemoveScroll","DialogContent","Fragment","DialogTitle","DialogDescription"],"sources":["../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/defs/Trash.es.js","../../../../../node_modules/.pnpm/@phosphor-icons+react@2.1.10_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@phosphor-icons/react/dist/csr/Trash.es.js","../../../../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.17_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_02115fea7d1b017428075e9497896153/node_modules/@radix-ui/react-dialog/dist/index.mjs","../../../src/ui/app/components/ui/dialog.tsx","../../../src/ui/app/modules/sessions/sessions-page.tsx"],"sourcesContent":["import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,50H174V40a22,22,0,0,0-22-22H104A22,22,0,0,0,82,40V50H40a6,6,0,0,0,0,12H50V208a14,14,0,0,0,14,14H192a14,14,0,0,0,14-14V62h10a6,6,0,0,0,0-12ZM94,40a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V50H94ZM194,208a2,2,0,0,1-2,2H64a2,2,0,0,1-2-2V62H194ZM110,104v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Zm48,0v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,52H172V40a20,20,0,0,0-20-20H104A20,20,0,0,0,84,40V52H40a4,4,0,0,0,0,8H52V208a12,12,0,0,0,12,12H192a12,12,0,0,0,12-12V60h12a4,4,0,0,0,0-8ZM92,40a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V52H92ZM196,208a4,4,0,0,1-4,4H64a4,4,0,0,1-4-4V60H196ZM108,104v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Zm48,0v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport s from \"../lib/IconBase.es.js\";\nimport t from \"../defs/Trash.es.js\";\nconst r = o.forwardRef((a, e) => /* @__PURE__ */ o.createElement(s, { ref: e, ...a, weights: t }));\nr.displayName = \"TrashIcon\";\nconst n = r;\nexport {\n n as Trash,\n r as TrashIcon\n};\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer, useDismissableLayerSurface } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n const registerDismissableSurface = useDismissableLayerSurface();\n const composedRefs = useComposedRefs(forwardedRef, registerDismissableSurface);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: composedRefs,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n useFocusGuards();\n return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: forwardedRef,\n deferPointerDownOutside: true,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ) });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nvar WarningProvider = (props) => {\n return props.children;\n};\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nexport {\n DialogClose as Close,\n DialogContent as Content,\n DialogDescription as Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n DialogOverlay as Overlay,\n DialogPortal as Portal,\n Dialog as Root,\n DialogTitle as Title,\n DialogTrigger as Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport function DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\" />\n <DialogPrimitive.Content\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 grid w-[min(420px,calc(100vw-32px))] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl border border-border bg-popover p-5 text-popover-foreground shadow-2xl shadow-black/40\",\n className,\n )}\n {...props}\n >\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n}\n\nexport function DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"grid gap-1.5\", className)} {...props} />;\n}\n\nexport function DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"flex justify-end gap-2\", className)} {...props} />;\n}\n\nexport function DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return <DialogPrimitive.Title className={cn(\"text-base font-bold\", className)} {...props} />;\n}\n\nexport function DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n className={cn(\"text-sm leading-6 text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n","import { ActivityIcon as Activity, Trash } from \"@phosphor-icons/react\";\nimport type { StudioConfig, StudioSessionSummary } from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../../components/ui/dialog\";\nimport { cn } from \"../../lib/utils\";\nimport { agentLabel, formatRelativeTime } from \"../shared/format\";\nimport type { SessionLoadState } from \"../shared/types\";\n\nexport function SessionsPage(props: {\n agents: StudioConfig[\"agents\"];\n sessions: StudioSessionSummary[];\n sessionsEnabled: boolean;\n sessionLoadState: SessionLoadState;\n selectedSessionId: string;\n onOpenSession: (sessionId: string) => void;\n onViewSessionTracing: (sessionId: string) => void;\n onDeleteSession: (session: StudioSessionSummary) => void;\n}) {\n if (!props.sessionsEnabled) {\n return (\n <div className=\"w-full rounded-lg border border-dashed border-border p-8 text-sm font-medium text-muted-foreground\">\n Sessions are disabled\n </div>\n );\n }\n\n return (\n <section className=\"grid min-h-0 w-full overflow-auto pb-6 pl-0 pr-6\" aria-label=\"Sessions\">\n <div className=\"min-w-225 overflow-hidden rounded-xl border border-border/80 bg-card/70 p-2 shadow-sm\">\n <div className=\"sticky top-0 z-10 grid min-h-11 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px_72px] items-center gap-4 rounded-lg border border-border/60 bg-card/95 px-4 font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-muted-foreground backdrop-blur\">\n <span>Session</span>\n <span>Agent</span>\n <span>Messages</span>\n <span>Updated</span>\n <span className=\"sr-only\">Actions</span>\n </div>\n {props.sessionLoadState === \"loading\" && props.sessions.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">\n Loading sessions\n </div>\n ) : null}\n {props.sessionLoadState === \"idle\" && props.sessions.length === 0 ? (\n <div className=\"px-5 py-4 text-sm font-medium text-muted-foreground\">No sessions</div>\n ) : null}\n {props.sessions.map((session) => (\n <div\n className={cn(\n \"mt-1 grid min-h-14 w-full min-w-0 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px_72px] items-center gap-4 rounded-lg border border-transparent px-4 text-left text-muted-foreground transition duration-200 hover:border-primary/20 hover:bg-accent/80 hover:text-accent-foreground\",\n session.id === props.selectedSessionId &&\n \"border-primary/35 bg-primary/10 text-primary\",\n )}\n key={session.id}\n >\n <Button\n className=\"col-span-4 grid h-full min-h-14 min-w-0 grid-cols-[minmax(220px,1.3fr)_180px_120px_120px] items-center justify-start gap-4 border-0 bg-transparent p-0 text-left text-inherit shadow-none hover:bg-transparent hover:text-inherit\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onOpenSession(session.id)}\n >\n <span className=\"grid min-w-0 gap-0.5\">\n <strong className=\"min-w-0 truncate text-sm font-medium text-foreground\">\n {session.title ?? \"Untitled chat\"}\n </strong>\n <span className=\"min-w-0 truncate font-mono text-xs font-medium text-muted-foreground\">\n {session.id}\n </span>\n </span>\n <span className=\"min-w-0 truncate text-xs font-medium\">\n {agentLabel(props.agents, session.agentId)}\n </span>\n <span className=\"text-xs font-medium tabular-nums text-muted-foreground\">\n {session.messageCount} messages\n </span>\n <time className=\"text-xs font-medium text-muted-foreground\">\n {formatRelativeTime(session.updatedAt)}\n </time>\n </Button>\n <span className=\"flex items-center justify-end gap-1\">\n <Button\n aria-label={`View tracing for ${session.title ?? \"Untitled chat\"}`}\n className=\"h-7 min-h-7 w-7 border-0 bg-transparent p-0 text-muted-foreground opacity-80 hover:bg-transparent hover:text-primary hover:opacity-100 [&_svg]:h-3.5 [&_svg]:w-3.5\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={(event) => {\n event.stopPropagation();\n props.onViewSessionTracing(session.id);\n }}\n >\n <Activity aria-hidden=\"true\" />\n </Button>\n <Button\n aria-label={`Delete ${session.title ?? \"Untitled chat\"}`}\n className=\"h-7 min-h-7 w-7 border-0 bg-transparent p-0 text-muted-foreground opacity-80 hover:bg-transparent hover:text-destructive hover:opacity-100 [&_svg]:h-3.5 [&_svg]:w-3.5\"\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n onClick={(event) => {\n event.stopPropagation();\n props.onDeleteSession(session);\n }}\n >\n <Trash aria-hidden=\"true\" />\n </Button>\n </span>\n </div>\n ))}\n </div>\n </section>\n );\n}\n\nexport function DeleteSessionDialog(props: {\n session: StudioSessionSummary | undefined;\n onOpenChange: (open: boolean) => void;\n onConfirm: (session: StudioSessionSummary) => void;\n}) {\n const title = props.session?.title ?? \"Untitled chat\";\n\n return (\n <Dialog open={props.session !== undefined} onOpenChange={props.onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete session</DialogTitle>\n <DialogDescription>\n Delete \"{title}\" and its traces. This cannot be undone.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <Button type=\"button\" variant=\"ghost\" onClick={() => props.onOpenChange(false)}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={() => {\n if (props.session !== undefined) {\n props.onConfirm(props.session);\n }\n }}\n >\n Delete\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{i as e,s as t,t as n}from"./jsx-runtime-ZfyQks-z.js";import{L as r}from"./index-DW3P6_Qc.js";import{t as i}from"./badge-CNbpc5Sm.js";import{t as a}from"./renderers-hYnJAoYZ.js";var o=t(e(),1),s=n();function c(e){let[t,n]=(0,o.useState)(),[c,p]=(0,o.useState)(!1),[m,h]=(0,o.useState)(``),g=(0,o.useCallback)(async()=>{if(!e.enabled){n(void 0);return}p(!0),h(``);try{let e=await fetch(`/status`);if(!e.ok)throw Error(`Status failed with HTTP ${e.status}`);n(await e.json())}catch(e){h(e instanceof Error?e.message:String(e)),n(void 0)}finally{p(!1)}},[e.enabled]);return(0,o.useEffect)(()=>{g()},[g]),(0,s.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55`,"aria-label":`Status`,children:[(0,s.jsx)(`header`,{className:`bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur`,children:(0,s.jsxs)(`div`,{className:`grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1`,children:[(0,s.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,s.jsx)(`div`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.24em] text-primary`,children:`Operations`}),(0,s.jsx)(`h1`,{className:`m-0 text-2xl font-semibold leading-none tracking-tight text-foreground`,children:`Status`}),(0,s.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:`Runtime health, storage adapters, feature capabilities, and current record counts.`})]}),(0,s.jsx)(r,{className:`h-9 min-h-9 rounded-lg px-3 font-mono text-xs`,type:`button`,variant:`secondary`,disabled:c,onClick:()=>void g(),children:`Refresh`})]})}),(0,s.jsx)(`div`,{className:`min-h-0 overflow-auto pb-6 pl-0 pr-6`,children:e.enabled?c&&t===void 0?(0,s.jsx)(f,{title:`Loading status`,text:`Reading runtime status.`}):m.length>0?(0,s.jsx)(f,{title:`Status error`,text:m}):t===void 0?null:(0,s.jsxs)(`div`,{className:`grid gap-4`,children:[(0,s.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-4`,children:[(0,s.jsx)(l,{label:`Agents`,value:t.counts.agents}),(0,s.jsx)(l,{label:`Pipelines`,value:t.counts.pipelines}),(0,s.jsx)(l,{label:`Sessions`,value:t.counts.sessions??`-`}),(0,s.jsx)(l,{label:`Traces`,value:t.counts.traces??`-`})]}),(0,s.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,0.85fr)_minmax(0,1.15fr)]`,children:[(0,s.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5`,children:[(0,s.jsx)(d,{children:`runtime`}),(0,s.jsx)(u,{label:`id`,value:t.runner.id}),(0,s.jsx)(u,{label:`name`,value:t.runner.name??`-`}),(0,s.jsx)(u,{label:`version`,value:t.runner.version??`-`}),(0,s.jsx)(u,{label:`generated`,value:t.generatedAt})]}),(0,s.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5`,children:[(0,s.jsx)(d,{children:`storage`}),(0,s.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[Object.entries(t.storage).map(([e,t])=>(0,s.jsx)(u,{label:e,value:t??`-`},e)),Object.entries(t.storage).length===0?(0,s.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground`,children:`No storage adapters reported.`}):null]})]})]}),(0,s.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5`,children:[(0,s.jsx)(d,{children:`capabilities`}),(0,s.jsx)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:Object.entries(t.capabilities).map(([e,t])=>(0,s.jsx)(i,{className:t?.enabled?`border-primary/35 bg-primary/10 text-primary`:`border-border/80 bg-muted/55 text-muted-foreground`,children:e},e))})]}),(0,s.jsxs)(`section`,{className:`grid min-w-0 overflow-hidden rounded-xl border border-border/80 bg-card/45`,children:[(0,s.jsx)(`div`,{className:`flex min-h-10 items-center justify-between gap-3 border-b border-border/80 bg-muted/20 px-4`,children:(0,s.jsx)(d,{children:`raw summary`})}),(0,s.jsx)(`div`,{className:`min-w-0 overflow-x-auto`,children:(0,s.jsx)(`pre`,{className:`m-0 min-w-max p-4 font-mono text-[12px] leading-5 text-foreground`,children:(0,s.jsx)(`code`,{children:(0,s.jsx)(a,{text:JSON.stringify(t,null,2)})})})})]})]}):(0,s.jsx)(f,{title:`Status unavailable`,text:`This Studio runtime did not expose status.`})})]})}function l(e){return(0,s.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/80 bg-card/45 p-5`,children:[(0,s.jsx)(`span`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:e.label}),(0,s.jsx)(`span`,{className:`font-mono text-3xl font-semibold tracking-tight text-foreground`,children:e.value})]})}function u(e){return(0,s.jsxs)(`div`,{className:`grid min-w-0 gap-1 rounded-lg bg-background/45 px-3 py-2 text-sm`,children:[(0,s.jsx)(`span`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:e.label}),(0,s.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs text-foreground`,title:String(e.value),children:e.value})]})}function d(e){return(0,s.jsx)(`h2`,{className:`m-0 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:e.children})}function f(e){return(0,s.jsx)(`div`,{className:`grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center`,children:(0,s.jsxs)(`div`,{className:`grid max-w-md gap-2`,children:[(0,s.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:e.title}),(0,s.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:e.text})]})})}export{c as StatusPage};
2
- //# sourceMappingURL=status-page-B16drVrZ.js.map
1
+ import{i as e,s as t,t as n}from"./jsx-runtime-ZfyQks-z.js";import{L as r}from"./index-ga3NT_WB.js";import{t as i}from"./badge-CNbpc5Sm.js";import{t as a}from"./renderers-DLO8tpZC.js";var o=t(e(),1),s=n();function c(e){let[t,n]=(0,o.useState)(),[c,p]=(0,o.useState)(!1),[m,h]=(0,o.useState)(``),g=(0,o.useCallback)(async()=>{if(!e.enabled){n(void 0);return}p(!0),h(``);try{let e=await fetch(`/status`);if(!e.ok)throw Error(`Status failed with HTTP ${e.status}`);n(await e.json())}catch(e){h(e instanceof Error?e.message:String(e)),n(void 0)}finally{p(!1)}},[e.enabled]);return(0,o.useEffect)(()=>{g()},[g]),(0,s.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55`,"aria-label":`Status`,children:[(0,s.jsx)(`header`,{className:`bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur`,children:(0,s.jsxs)(`div`,{className:`grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1`,children:[(0,s.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,s.jsx)(`div`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.24em] text-primary`,children:`Operations`}),(0,s.jsx)(`h1`,{className:`m-0 text-2xl font-semibold leading-none tracking-tight text-foreground`,children:`Status`}),(0,s.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:`Runtime health, storage adapters, feature capabilities, and current record counts.`})]}),(0,s.jsx)(r,{className:`h-9 min-h-9 rounded-lg px-3 font-mono text-xs`,type:`button`,variant:`secondary`,disabled:c,onClick:()=>void g(),children:`Refresh`})]})}),(0,s.jsx)(`div`,{className:`min-h-0 overflow-auto pb-6 pl-0 pr-6`,children:e.enabled?c&&t===void 0?(0,s.jsx)(f,{title:`Loading status`,text:`Reading runtime status.`}):m.length>0?(0,s.jsx)(f,{title:`Status error`,text:m}):t===void 0?null:(0,s.jsxs)(`div`,{className:`grid gap-4`,children:[(0,s.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-4`,children:[(0,s.jsx)(l,{label:`Agents`,value:t.counts.agents}),(0,s.jsx)(l,{label:`Pipelines`,value:t.counts.pipelines}),(0,s.jsx)(l,{label:`Sessions`,value:t.counts.sessions??`-`}),(0,s.jsx)(l,{label:`Traces`,value:t.counts.traces??`-`})]}),(0,s.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,0.85fr)_minmax(0,1.15fr)]`,children:[(0,s.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5`,children:[(0,s.jsx)(d,{children:`runtime`}),(0,s.jsx)(u,{label:`id`,value:t.runner.id}),(0,s.jsx)(u,{label:`name`,value:t.runner.name??`-`}),(0,s.jsx)(u,{label:`version`,value:t.runner.version??`-`}),(0,s.jsx)(u,{label:`generated`,value:t.generatedAt})]}),(0,s.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5`,children:[(0,s.jsx)(d,{children:`storage`}),(0,s.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[Object.entries(t.storage).map(([e,t])=>(0,s.jsx)(u,{label:e,value:t??`-`},e)),Object.entries(t.storage).length===0?(0,s.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground`,children:`No storage adapters reported.`}):null]})]})]}),(0,s.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5`,children:[(0,s.jsx)(d,{children:`capabilities`}),(0,s.jsx)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:Object.entries(t.capabilities).map(([e,t])=>(0,s.jsx)(i,{className:t?.enabled?`border-primary/35 bg-primary/10 text-primary`:`border-border/80 bg-muted/55 text-muted-foreground`,children:e},e))})]}),(0,s.jsxs)(`section`,{className:`grid min-w-0 overflow-hidden rounded-xl border border-border/80 bg-card/45`,children:[(0,s.jsx)(`div`,{className:`flex min-h-10 items-center justify-between gap-3 border-b border-border/80 bg-muted/20 px-4`,children:(0,s.jsx)(d,{children:`raw summary`})}),(0,s.jsx)(`div`,{className:`min-w-0 overflow-x-auto`,children:(0,s.jsx)(`pre`,{className:`m-0 min-w-max p-4 font-mono text-[12px] leading-5 text-foreground`,children:(0,s.jsx)(`code`,{children:(0,s.jsx)(a,{text:JSON.stringify(t,null,2)})})})})]})]}):(0,s.jsx)(f,{title:`Status unavailable`,text:`This Studio runtime did not expose status.`})})]})}function l(e){return(0,s.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/80 bg-card/45 p-5`,children:[(0,s.jsx)(`span`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:e.label}),(0,s.jsx)(`span`,{className:`font-mono text-3xl font-semibold tracking-tight text-foreground`,children:e.value})]})}function u(e){return(0,s.jsxs)(`div`,{className:`grid min-w-0 gap-1 rounded-lg bg-background/45 px-3 py-2 text-sm`,children:[(0,s.jsx)(`span`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:e.label}),(0,s.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs text-foreground`,title:String(e.value),children:e.value})]})}function d(e){return(0,s.jsx)(`h2`,{className:`m-0 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:e.children})}function f(e){return(0,s.jsx)(`div`,{className:`grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center`,children:(0,s.jsxs)(`div`,{className:`grid max-w-md gap-2`,children:[(0,s.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:e.title}),(0,s.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:e.text})]})})}export{c as StatusPage};
2
+ //# sourceMappingURL=status-page-BszwJuUf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status-page-B16drVrZ.js","names":[],"sources":["../../../src/ui/app/modules/status/status-page.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport type { StudioStatusSummary } from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport { JsonSyntax } from \"../shared/renderers\";\n\nexport function StatusPage(props: { enabled: boolean }) {\n const [summary, setSummary] = useState<StudioStatusSummary | undefined>();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(\"\");\n\n const loadStatus = useCallback(async () => {\n if (!props.enabled) {\n setSummary(undefined);\n return;\n }\n setLoading(true);\n setError(\"\");\n try {\n const response = await fetch(\"/status\");\n if (!response.ok) {\n throw new Error(`Status failed with HTTP ${response.status}`);\n }\n setSummary((await response.json()) as StudioStatusSummary);\n } catch (loadError) {\n setError(loadError instanceof Error ? loadError.message : String(loadError));\n setSummary(undefined);\n } finally {\n setLoading(false);\n }\n }, [props.enabled]);\n\n useEffect(() => {\n void loadStatus();\n }, [loadStatus]);\n\n return (\n <section\n className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55\"\n aria-label=\"Status\"\n >\n <header className=\"bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur\">\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.24em] text-primary\">\n Operations\n </div>\n <h1 className=\"m-0 text-2xl font-semibold leading-none tracking-tight text-foreground\">\n Status\n </h1>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n Runtime health, storage adapters, feature capabilities, and current record counts.\n </p>\n </div>\n <Button\n className=\"h-9 min-h-9 rounded-lg px-3 font-mono text-xs\"\n type=\"button\"\n variant=\"secondary\"\n disabled={loading}\n onClick={() => void loadStatus()}\n >\n Refresh\n </Button>\n </div>\n </header>\n\n <div className=\"min-h-0 overflow-auto pb-6 pl-0 pr-6\">\n {!props.enabled ? (\n <EmptyState\n title=\"Status unavailable\"\n text=\"This Studio runtime did not expose status.\"\n />\n ) : loading && summary === undefined ? (\n <EmptyState title=\"Loading status\" text=\"Reading runtime status.\" />\n ) : error.length > 0 ? (\n <EmptyState title=\"Status error\" text={error} />\n ) : summary === undefined ? null : (\n <div className=\"grid gap-4\">\n <div className=\"grid gap-4 lg:grid-cols-4\">\n <Metric label=\"Agents\" value={summary.counts.agents} />\n <Metric label=\"Pipelines\" value={summary.counts.pipelines} />\n <Metric label=\"Sessions\" value={summary.counts.sessions ?? \"-\"} />\n <Metric label=\"Traces\" value={summary.counts.traces ?? \"-\"} />\n </div>\n <div className=\"grid gap-4 xl:grid-cols-[minmax(0,0.85fr)_minmax(0,1.15fr)]\">\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5\">\n <SectionLabel>runtime</SectionLabel>\n <KeyValue label=\"id\" value={summary.runner.id} />\n <KeyValue label=\"name\" value={summary.runner.name ?? \"-\"} />\n <KeyValue label=\"version\" value={summary.runner.version ?? \"-\"} />\n <KeyValue label=\"generated\" value={summary.generatedAt} />\n </section>\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5\">\n <SectionLabel>storage</SectionLabel>\n <div className=\"grid gap-2 sm:grid-cols-2\">\n {Object.entries(summary.storage).map(([key, value]) => (\n <KeyValue key={key} label={key} value={value ?? \"-\"} />\n ))}\n {Object.entries(summary.storage).length === 0 ? (\n <div className=\"rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground\">\n No storage adapters reported.\n </div>\n ) : null}\n </div>\n </section>\n </div>\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5\">\n <SectionLabel>capabilities</SectionLabel>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n {Object.entries(summary.capabilities).map(([name, capability]) => (\n <Badge\n className={\n capability?.enabled\n ? \"border-primary/35 bg-primary/10 text-primary\"\n : \"border-border/80 bg-muted/55 text-muted-foreground\"\n }\n key={name}\n >\n {name}\n </Badge>\n ))}\n </div>\n </section>\n <section className=\"grid min-w-0 overflow-hidden rounded-xl border border-border/80 bg-card/45\">\n <div className=\"flex min-h-10 items-center justify-between gap-3 border-b border-border/80 bg-muted/20 px-4\">\n <SectionLabel>raw summary</SectionLabel>\n </div>\n <div className=\"min-w-0 overflow-x-auto\">\n <pre className=\"m-0 min-w-max p-4 font-mono text-[12px] leading-5 text-foreground\">\n <code>\n <JsonSyntax text={JSON.stringify(summary, null, 2)} />\n </code>\n </pre>\n </div>\n </section>\n </div>\n )}\n </div>\n </section>\n );\n}\n\nfunction Metric(props: { label: string; value: string | number }) {\n return (\n <div className=\"grid gap-2 rounded-xl border border-border/80 bg-card/45 p-5\">\n <span className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"font-mono text-3xl font-semibold tracking-tight text-foreground\">\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction KeyValue(props: { label: string; value: string | number }) {\n return (\n <div className=\"grid min-w-0 gap-1 rounded-lg bg-background/45 px-3 py-2 text-sm\">\n <span className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n {props.label}\n </span>\n <span\n className=\"min-w-0 truncate font-mono text-xs text-foreground\"\n title={String(props.value)}\n >\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction SectionLabel(props: { children: string }) {\n return (\n <h2 className=\"m-0 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {props.children}\n </h2>\n );\n}\n\nfunction EmptyState(props: { title: string; text: string }) {\n return (\n <div className=\"grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center\">\n <div className=\"grid max-w-md gap-2\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">{props.title}</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">{props.text}</p>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"status-page-BszwJuUf.js","names":[],"sources":["../../../src/ui/app/modules/status/status-page.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport type { StudioStatusSummary } from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport { JsonSyntax } from \"../shared/renderers\";\n\nexport function StatusPage(props: { enabled: boolean }) {\n const [summary, setSummary] = useState<StudioStatusSummary | undefined>();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(\"\");\n\n const loadStatus = useCallback(async () => {\n if (!props.enabled) {\n setSummary(undefined);\n return;\n }\n setLoading(true);\n setError(\"\");\n try {\n const response = await fetch(\"/status\");\n if (!response.ok) {\n throw new Error(`Status failed with HTTP ${response.status}`);\n }\n setSummary((await response.json()) as StudioStatusSummary);\n } catch (loadError) {\n setError(loadError instanceof Error ? loadError.message : String(loadError));\n setSummary(undefined);\n } finally {\n setLoading(false);\n }\n }, [props.enabled]);\n\n useEffect(() => {\n void loadStatus();\n }, [loadStatus]);\n\n return (\n <section\n className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55\"\n aria-label=\"Status\"\n >\n <header className=\"bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur\">\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.24em] text-primary\">\n Operations\n </div>\n <h1 className=\"m-0 text-2xl font-semibold leading-none tracking-tight text-foreground\">\n Status\n </h1>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n Runtime health, storage adapters, feature capabilities, and current record counts.\n </p>\n </div>\n <Button\n className=\"h-9 min-h-9 rounded-lg px-3 font-mono text-xs\"\n type=\"button\"\n variant=\"secondary\"\n disabled={loading}\n onClick={() => void loadStatus()}\n >\n Refresh\n </Button>\n </div>\n </header>\n\n <div className=\"min-h-0 overflow-auto pb-6 pl-0 pr-6\">\n {!props.enabled ? (\n <EmptyState\n title=\"Status unavailable\"\n text=\"This Studio runtime did not expose status.\"\n />\n ) : loading && summary === undefined ? (\n <EmptyState title=\"Loading status\" text=\"Reading runtime status.\" />\n ) : error.length > 0 ? (\n <EmptyState title=\"Status error\" text={error} />\n ) : summary === undefined ? null : (\n <div className=\"grid gap-4\">\n <div className=\"grid gap-4 lg:grid-cols-4\">\n <Metric label=\"Agents\" value={summary.counts.agents} />\n <Metric label=\"Pipelines\" value={summary.counts.pipelines} />\n <Metric label=\"Sessions\" value={summary.counts.sessions ?? \"-\"} />\n <Metric label=\"Traces\" value={summary.counts.traces ?? \"-\"} />\n </div>\n <div className=\"grid gap-4 xl:grid-cols-[minmax(0,0.85fr)_minmax(0,1.15fr)]\">\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5\">\n <SectionLabel>runtime</SectionLabel>\n <KeyValue label=\"id\" value={summary.runner.id} />\n <KeyValue label=\"name\" value={summary.runner.name ?? \"-\"} />\n <KeyValue label=\"version\" value={summary.runner.version ?? \"-\"} />\n <KeyValue label=\"generated\" value={summary.generatedAt} />\n </section>\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5\">\n <SectionLabel>storage</SectionLabel>\n <div className=\"grid gap-2 sm:grid-cols-2\">\n {Object.entries(summary.storage).map(([key, value]) => (\n <KeyValue key={key} label={key} value={value ?? \"-\"} />\n ))}\n {Object.entries(summary.storage).length === 0 ? (\n <div className=\"rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground\">\n No storage adapters reported.\n </div>\n ) : null}\n </div>\n </section>\n </div>\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-card/45 p-5\">\n <SectionLabel>capabilities</SectionLabel>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n {Object.entries(summary.capabilities).map(([name, capability]) => (\n <Badge\n className={\n capability?.enabled\n ? \"border-primary/35 bg-primary/10 text-primary\"\n : \"border-border/80 bg-muted/55 text-muted-foreground\"\n }\n key={name}\n >\n {name}\n </Badge>\n ))}\n </div>\n </section>\n <section className=\"grid min-w-0 overflow-hidden rounded-xl border border-border/80 bg-card/45\">\n <div className=\"flex min-h-10 items-center justify-between gap-3 border-b border-border/80 bg-muted/20 px-4\">\n <SectionLabel>raw summary</SectionLabel>\n </div>\n <div className=\"min-w-0 overflow-x-auto\">\n <pre className=\"m-0 min-w-max p-4 font-mono text-[12px] leading-5 text-foreground\">\n <code>\n <JsonSyntax text={JSON.stringify(summary, null, 2)} />\n </code>\n </pre>\n </div>\n </section>\n </div>\n )}\n </div>\n </section>\n );\n}\n\nfunction Metric(props: { label: string; value: string | number }) {\n return (\n <div className=\"grid gap-2 rounded-xl border border-border/80 bg-card/45 p-5\">\n <span className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"font-mono text-3xl font-semibold tracking-tight text-foreground\">\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction KeyValue(props: { label: string; value: string | number }) {\n return (\n <div className=\"grid min-w-0 gap-1 rounded-lg bg-background/45 px-3 py-2 text-sm\">\n <span className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n {props.label}\n </span>\n <span\n className=\"min-w-0 truncate font-mono text-xs text-foreground\"\n title={String(props.value)}\n >\n {props.value}\n </span>\n </div>\n );\n}\n\nfunction SectionLabel(props: { children: string }) {\n return (\n <h2 className=\"m-0 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {props.children}\n </h2>\n );\n}\n\nfunction EmptyState(props: { title: string; text: string }) {\n return (\n <div className=\"grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center\">\n <div className=\"grid max-w-md gap-2\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">{props.title}</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">{props.text}</p>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{i as e,n as t,s as n,t as r}from"./jsx-runtime-ZfyQks-z.js";import{L as i,_ as a,g as o,h as s,m as c,v as l,y as u}from"./index-DW3P6_Qc.js";import{t as d}from"./badge-CNbpc5Sm.js";import{t as f}from"./renderers-hYnJAoYZ.js";var p=n(e(),1),m=r();function h(e){let t=e.agents.find(t=>t.id===e.selectedAgentId)??e.agents[0],n=e.summary?.tools??[],[r,f]=(0,p.useState)(``),[h,b]=(0,p.useState)(`{}`),[S,w]=(0,p.useState)(`idle`),[T,E]=(0,p.useState)(),[D,O]=(0,p.useState)(``),k=(0,p.useMemo)(()=>n.find(e=>e.name===r)??n[0],[r,n]);(0,p.useEffect)(()=>{if(n.length===0){f(``);return}n.some(e=>e.name===r)||f(n[0]?.name??``)},[r,n]);async function A(){if(t===void 0||k===void 0)return;let e;try{e=JSON.parse(h)}catch(e){O(e instanceof Error?e.message:String(e)),E(void 0);return}w(`running`),O(``),E(void 0);try{let n=await fetch(`/agents/${encodeURIComponent(t.id)}/tools/${encodeURIComponent(k.name)}/runs`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({args:e})}),r=await n.json();E(r),(!n.ok||r.status===`error`)&&O(C(r.error??r))}catch(e){O(e instanceof Error?e.message:String(e))}finally{w(`idle`)}}return(0,m.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55`,"aria-label":`Tools`,children:[(0,m.jsx)(`header`,{className:`bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur`,children:(0,m.jsxs)(`div`,{className:`grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1`,children:[(0,m.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,m.jsx)(`div`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.24em] text-primary`,children:`Agent capabilities`}),(0,m.jsx)(`h1`,{className:`m-0 text-2xl font-semibold leading-none tracking-tight text-foreground`,children:`Tools`}),(0,m.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:`Tool definitions registered on Studio agents, including approval policy and input schema.`})]}),e.agents.length>1?(0,m.jsxs)(s,{value:t?.id??``,onValueChange:e.onSelectAgent,children:[(0,m.jsx)(l,{className:`h-9 min-h-9 w-64 rounded-lg border-border bg-card/80 font-mono text-xs max-md:w-full`,children:(0,m.jsx)(u,{placeholder:`Agent`})}),(0,m.jsx)(o,{align:`end`,children:e.agents.map(e=>(0,m.jsx)(a,{value:e.id,children:e.name??e.id},e.id))})]}):null]})}),(0,m.jsx)(`div`,{className:`min-h-0 overflow-auto pb-6 pl-0 pr-6`,children:(0,m.jsx)(`div`,{className:`grid w-full gap-4`,children:e.enabled?e.loading?(0,m.jsx)(v,{title:`Loading tools`,message:`Reading registered tool metadata.`}):n.length===0?(0,m.jsx)(v,{title:`No tools`,message:`The selected agent has no registered tools.`}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`section`,{className:`grid gap-4 rounded-xl border border-border/80 bg-card/55 p-4 shadow-sm xl:grid-cols-[minmax(300px,0.7fr)_minmax(0,1fr)]`,children:[(0,m.jsxs)(`div`,{className:`grid content-start gap-3`,children:[(0,m.jsxs)(`div`,{className:`grid gap-1`,children:[(0,m.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:`Run tool`}),(0,m.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:`Invoke a registered tool directly with JSON arguments and inspect the raw result.`})]}),(0,m.jsxs)(s,{value:k?.name??``,onValueChange:f,children:[(0,m.jsx)(l,{className:`h-9 min-h-9 rounded-lg border-border bg-background/80 font-mono text-xs`,children:(0,m.jsx)(u,{placeholder:`Tool`})}),(0,m.jsx)(o,{children:n.map(e=>(0,m.jsx)(a,{value:e.name,children:e.name},`${e.source}:${e.name}`))})]}),k===void 0?null:(0,m.jsxs)(`div`,{className:`grid gap-2 rounded-lg bg-background/45 p-3`,children:[(0,m.jsx)(`span`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:`selected definition`}),(0,m.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:k.description}),(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,m.jsx)(d,{className:y(k.source),children:k.source}),(0,m.jsxs)(d,{className:`border-border/80 bg-muted/55 text-muted-foreground`,children:[x(k.parameters),` fields`]})]})]})]}),(0,m.jsxs)(`div`,{className:`grid min-w-0 gap-3`,children:[(0,m.jsx)(c,{className:`min-h-40 resize-y rounded-lg border-border bg-background/70 p-3 font-mono text-xs leading-5`,value:h,spellCheck:!1,onChange:e=>b(e.target.value)}),(0,m.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,m.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs text-muted-foreground`,children:`Arguments must be valid JSON.`}),(0,m.jsx)(i,{className:`h-9 min-h-9 rounded-lg px-4 font-mono text-xs`,type:`button`,disabled:S===`running`||k===void 0,onClick:()=>void A(),children:S===`running`?`Running`:`Run`})]}),D.length>0?(0,m.jsx)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 font-mono text-xs leading-5 text-destructive`,children:D}):null,T===void 0?null:(0,m.jsx)(_,{value:T,title:`Result`})]})]}),(0,m.jsxs)(`div`,{className:`grid gap-1 overflow-hidden rounded-xl border border-border/80 bg-card/55 p-2 shadow-sm`,children:[(0,m.jsxs)(`div`,{className:`grid min-h-10 grid-cols-[minmax(260px,0.75fr)_minmax(0,1fr)] items-center rounded-lg border border-border/60 bg-muted/20 px-4 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground max-lg:hidden`,children:[(0,m.jsx)(`span`,{children:`Definition`}),(0,m.jsx)(`span`,{children:`Parameter schema`})]}),n.map(e=>(0,m.jsx)(g,{tool:e},`${e.source}:${e.name}`))]})]}):(0,m.jsx)(v,{title:`Tools unavailable`,message:`No registered Studio agent exposes static or dynamic tools.`})})})]})}function g(e){let n=x(e.tool.parameters);return(0,m.jsxs)(`article`,{className:`grid grid-cols-[minmax(300px,0.75fr)_minmax(0,1fr)] gap-2 rounded-lg border border-transparent bg-background/25 p-2 transition duration-200 hover:border-border/70 hover:bg-background/35 max-lg:grid-cols-1`,children:[(0,m.jsxs)(`div`,{className:`grid content-start gap-4 rounded-lg bg-card/25 p-3`,children:[(0,m.jsxs)(`div`,{className:`grid gap-1`,children:[(0,m.jsx)(`h2`,{className:`m-0 truncate font-mono text-[15px] font-semibold text-foreground`,children:e.tool.name}),(0,m.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium text-muted-foreground`,children:e.tool.agentId})]}),(0,m.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:e.tool.description}),(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,m.jsx)(d,{className:y(e.tool.source),children:e.tool.source}),(0,m.jsxs)(d,{className:t(e.tool.approval.required?`border-primary/35 bg-primary/10 text-primary`:`border-border/80 bg-muted/55 text-muted-foreground`),children:[`approval `,e.tool.approval.required?`required`:`none`]}),(0,m.jsxs)(d,{className:`border-border/80 bg-transparent text-muted-foreground`,children:[n,` `,n===1?`field`:`fields`]})]}),e.tool.approval.reason===void 0?null:(0,m.jsx)(`p`,{className:`m-0 rounded-lg bg-primary/10 px-3 py-2 text-xs leading-5 text-muted-foreground`,children:e.tool.approval.reason})]}),(0,m.jsx)(_,{value:e.tool.parameters,title:`JSON schema`})]})}function _(e){return(0,m.jsxs)(`section`,{className:`grid min-w-0 content-start overflow-hidden rounded-lg bg-background/45`,children:[(0,m.jsxs)(`div`,{className:`flex min-h-9 items-center justify-between gap-3 bg-muted/20 px-4`,children:[(0,m.jsx)(`span`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:e.title}),(0,m.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:b(e.value)})]}),(0,m.jsx)(`div`,{className:`min-w-0 overflow-x-auto`,children:(0,m.jsx)(`pre`,{className:`m-0 max-h-96 min-w-max p-4 font-mono text-[12px] leading-5 text-foreground`,children:(0,m.jsx)(`code`,{children:(0,m.jsx)(f,{text:S(e.value)})})})})]})}function v(e){return(0,m.jsx)(`div`,{className:`grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center`,children:(0,m.jsxs)(`div`,{className:`grid max-w-md gap-2`,children:[(0,m.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:e.title}),(0,m.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:e.message})]})})}function y(e){return e===`dynamic`?`border-primary/35 bg-primary/10 text-primary`:`border-border/80 bg-muted/55 text-muted-foreground`}function b(e){if(typeof e!=`object`||!e||Array.isArray(e))return`value`;let t=e.type;return typeof t==`string`?t:`object`}function x(e){if(typeof e!=`object`||!e||Array.isArray(e))return 0;let t=e.properties;return typeof t==`object`&&t&&!Array.isArray(t)?Object.keys(t).length:0}function S(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function C(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}export{h as ToolsPage};
2
- //# sourceMappingURL=tools-page-DwgbeCMm.js.map
1
+ import{i as e,n as t,s as n,t as r}from"./jsx-runtime-ZfyQks-z.js";import{L as i,_ as a,g as o,h as s,m as c,v as l,y as u}from"./index-ga3NT_WB.js";import{t as d}from"./badge-CNbpc5Sm.js";import{t as f}from"./renderers-DLO8tpZC.js";var p=n(e(),1),m=r();function h(e){let t=e.agents.find(t=>t.id===e.selectedAgentId)??e.agents[0],n=e.summary?.tools??[],[r,f]=(0,p.useState)(``),[h,b]=(0,p.useState)(`{}`),[S,w]=(0,p.useState)(`idle`),[T,E]=(0,p.useState)(),[D,O]=(0,p.useState)(``),k=(0,p.useMemo)(()=>n.find(e=>e.name===r)??n[0],[r,n]);(0,p.useEffect)(()=>{if(n.length===0){f(``);return}n.some(e=>e.name===r)||f(n[0]?.name??``)},[r,n]);async function A(){if(t===void 0||k===void 0)return;let e;try{e=JSON.parse(h)}catch(e){O(e instanceof Error?e.message:String(e)),E(void 0);return}w(`running`),O(``),E(void 0);try{let n=await fetch(`/agents/${encodeURIComponent(t.id)}/tools/${encodeURIComponent(k.name)}/runs`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({args:e})}),r=await n.json();E(r),(!n.ok||r.status===`error`)&&O(C(r.error??r))}catch(e){O(e instanceof Error?e.message:String(e))}finally{w(`idle`)}}return(0,m.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55`,"aria-label":`Tools`,children:[(0,m.jsx)(`header`,{className:`bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur`,children:(0,m.jsxs)(`div`,{className:`grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1`,children:[(0,m.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,m.jsx)(`div`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.24em] text-primary`,children:`Agent capabilities`}),(0,m.jsx)(`h1`,{className:`m-0 text-2xl font-semibold leading-none tracking-tight text-foreground`,children:`Tools`}),(0,m.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:`Tool definitions registered on Studio agents, including approval policy and input schema.`})]}),e.agents.length>1?(0,m.jsxs)(s,{value:t?.id??``,onValueChange:e.onSelectAgent,children:[(0,m.jsx)(l,{className:`h-9 min-h-9 w-64 rounded-lg border-border bg-card/80 font-mono text-xs max-md:w-full`,children:(0,m.jsx)(u,{placeholder:`Agent`})}),(0,m.jsx)(o,{align:`end`,children:e.agents.map(e=>(0,m.jsx)(a,{value:e.id,children:e.name??e.id},e.id))})]}):null]})}),(0,m.jsx)(`div`,{className:`min-h-0 overflow-auto pb-6 pl-0 pr-6`,children:(0,m.jsx)(`div`,{className:`grid w-full gap-4`,children:e.enabled?e.loading?(0,m.jsx)(v,{title:`Loading tools`,message:`Reading registered tool metadata.`}):n.length===0?(0,m.jsx)(v,{title:`No tools`,message:`The selected agent has no registered tools.`}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`section`,{className:`grid gap-4 rounded-xl border border-border/80 bg-card/55 p-4 shadow-sm xl:grid-cols-[minmax(300px,0.7fr)_minmax(0,1fr)]`,children:[(0,m.jsxs)(`div`,{className:`grid content-start gap-3`,children:[(0,m.jsxs)(`div`,{className:`grid gap-1`,children:[(0,m.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:`Run tool`}),(0,m.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:`Invoke a registered tool directly with JSON arguments and inspect the raw result.`})]}),(0,m.jsxs)(s,{value:k?.name??``,onValueChange:f,children:[(0,m.jsx)(l,{className:`h-9 min-h-9 rounded-lg border-border bg-background/80 font-mono text-xs`,children:(0,m.jsx)(u,{placeholder:`Tool`})}),(0,m.jsx)(o,{children:n.map(e=>(0,m.jsx)(a,{value:e.name,children:e.name},`${e.source}:${e.name}`))})]}),k===void 0?null:(0,m.jsxs)(`div`,{className:`grid gap-2 rounded-lg bg-background/45 p-3`,children:[(0,m.jsx)(`span`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:`selected definition`}),(0,m.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:k.description}),(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,m.jsx)(d,{className:y(k.source),children:k.source}),(0,m.jsxs)(d,{className:`border-border/80 bg-muted/55 text-muted-foreground`,children:[x(k.parameters),` fields`]})]})]})]}),(0,m.jsxs)(`div`,{className:`grid min-w-0 gap-3`,children:[(0,m.jsx)(c,{className:`min-h-40 resize-y rounded-lg border-border bg-background/70 p-3 font-mono text-xs leading-5`,value:h,spellCheck:!1,onChange:e=>b(e.target.value)}),(0,m.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,m.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs text-muted-foreground`,children:`Arguments must be valid JSON.`}),(0,m.jsx)(i,{className:`h-9 min-h-9 rounded-lg px-4 font-mono text-xs`,type:`button`,disabled:S===`running`||k===void 0,onClick:()=>void A(),children:S===`running`?`Running`:`Run`})]}),D.length>0?(0,m.jsx)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 font-mono text-xs leading-5 text-destructive`,children:D}):null,T===void 0?null:(0,m.jsx)(_,{value:T,title:`Result`})]})]}),(0,m.jsxs)(`div`,{className:`grid gap-1 overflow-hidden rounded-xl border border-border/80 bg-card/55 p-2 shadow-sm`,children:[(0,m.jsxs)(`div`,{className:`grid min-h-10 grid-cols-[minmax(260px,0.75fr)_minmax(0,1fr)] items-center rounded-lg border border-border/60 bg-muted/20 px-4 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground max-lg:hidden`,children:[(0,m.jsx)(`span`,{children:`Definition`}),(0,m.jsx)(`span`,{children:`Parameter schema`})]}),n.map(e=>(0,m.jsx)(g,{tool:e},`${e.source}:${e.name}`))]})]}):(0,m.jsx)(v,{title:`Tools unavailable`,message:`No registered Studio agent exposes static or dynamic tools.`})})})]})}function g(e){let n=x(e.tool.parameters);return(0,m.jsxs)(`article`,{className:`grid grid-cols-[minmax(300px,0.75fr)_minmax(0,1fr)] gap-2 rounded-lg border border-transparent bg-background/25 p-2 transition duration-200 hover:border-border/70 hover:bg-background/35 max-lg:grid-cols-1`,children:[(0,m.jsxs)(`div`,{className:`grid content-start gap-4 rounded-lg bg-card/25 p-3`,children:[(0,m.jsxs)(`div`,{className:`grid gap-1`,children:[(0,m.jsx)(`h2`,{className:`m-0 truncate font-mono text-[15px] font-semibold text-foreground`,children:e.tool.name}),(0,m.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium text-muted-foreground`,children:e.tool.agentId})]}),(0,m.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:e.tool.description}),(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,m.jsx)(d,{className:y(e.tool.source),children:e.tool.source}),(0,m.jsxs)(d,{className:t(e.tool.approval.required?`border-primary/35 bg-primary/10 text-primary`:`border-border/80 bg-muted/55 text-muted-foreground`),children:[`approval `,e.tool.approval.required?`required`:`none`]}),(0,m.jsxs)(d,{className:`border-border/80 bg-transparent text-muted-foreground`,children:[n,` `,n===1?`field`:`fields`]})]}),e.tool.approval.reason===void 0?null:(0,m.jsx)(`p`,{className:`m-0 rounded-lg bg-primary/10 px-3 py-2 text-xs leading-5 text-muted-foreground`,children:e.tool.approval.reason})]}),(0,m.jsx)(_,{value:e.tool.parameters,title:`JSON schema`})]})}function _(e){return(0,m.jsxs)(`section`,{className:`grid min-w-0 content-start overflow-hidden rounded-lg bg-background/45`,children:[(0,m.jsxs)(`div`,{className:`flex min-h-9 items-center justify-between gap-3 bg-muted/20 px-4`,children:[(0,m.jsx)(`span`,{className:`font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:e.title}),(0,m.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:b(e.value)})]}),(0,m.jsx)(`div`,{className:`min-w-0 overflow-x-auto`,children:(0,m.jsx)(`pre`,{className:`m-0 max-h-96 min-w-max p-4 font-mono text-[12px] leading-5 text-foreground`,children:(0,m.jsx)(`code`,{children:(0,m.jsx)(f,{text:S(e.value)})})})})]})}function v(e){return(0,m.jsx)(`div`,{className:`grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center`,children:(0,m.jsxs)(`div`,{className:`grid max-w-md gap-2`,children:[(0,m.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:e.title}),(0,m.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:e.message})]})})}function y(e){return e===`dynamic`?`border-primary/35 bg-primary/10 text-primary`:`border-border/80 bg-muted/55 text-muted-foreground`}function b(e){if(typeof e!=`object`||!e||Array.isArray(e))return`value`;let t=e.type;return typeof t==`string`?t:`object`}function x(e){if(typeof e!=`object`||!e||Array.isArray(e))return 0;let t=e.properties;return typeof t==`object`&&t&&!Array.isArray(t)?Object.keys(t).length:0}function S(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function C(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}export{h as ToolsPage};
2
+ //# sourceMappingURL=tools-page-B5Sd0DZG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools-page-DwgbeCMm.js","names":[],"sources":["../../../src/ui/app/modules/tools/tools-page.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport type {\n StudioAgentToolMetadata,\n StudioAgentToolsSummary,\n StudioConfig,\n StudioToolRunResponse,\n} from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport { Textarea } from \"../../components/ui/textarea\";\nimport { cn } from \"../../lib/utils\";\nimport { JsonSyntax } from \"../shared/renderers\";\n\nexport function ToolsPage(props: {\n agents: StudioConfig[\"agents\"];\n selectedAgentId: string;\n summary: StudioAgentToolsSummary | undefined;\n enabled: boolean;\n loading: boolean;\n onSelectAgent: (agentId: string) => void;\n}) {\n const selectedAgent =\n props.agents.find((agent) => agent.id === props.selectedAgentId) ?? props.agents[0];\n const tools = props.summary?.tools ?? [];\n const [selectedToolName, setSelectedToolName] = useState(\"\");\n const [argsText, setArgsText] = useState(\"{}\");\n const [runState, setRunState] = useState<\"idle\" | \"running\">(\"idle\");\n const [runResponse, setRunResponse] = useState<StudioToolRunResponse | undefined>();\n const [runError, setRunError] = useState(\"\");\n const selectedTool = useMemo(\n () => tools.find((tool) => tool.name === selectedToolName) ?? tools[0],\n [selectedToolName, tools],\n );\n\n useEffect(() => {\n if (tools.length === 0) {\n setSelectedToolName(\"\");\n return;\n }\n if (!tools.some((tool) => tool.name === selectedToolName)) {\n setSelectedToolName(tools[0]?.name ?? \"\");\n }\n }, [selectedToolName, tools]);\n\n async function runSelectedTool() {\n if (selectedAgent === undefined || selectedTool === undefined) {\n return;\n }\n let args: unknown;\n try {\n args = JSON.parse(argsText);\n } catch (parseError) {\n setRunError(parseError instanceof Error ? parseError.message : String(parseError));\n setRunResponse(undefined);\n return;\n }\n\n setRunState(\"running\");\n setRunError(\"\");\n setRunResponse(undefined);\n try {\n const response = await fetch(\n `/agents/${encodeURIComponent(selectedAgent.id)}/tools/${encodeURIComponent(\n selectedTool.name,\n )}/runs`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ args }),\n },\n );\n const body = (await response.json()) as StudioToolRunResponse;\n setRunResponse(body);\n if (!response.ok || body.status === \"error\") {\n setRunError(formatJson(body.error ?? body));\n }\n } catch (error) {\n setRunError(error instanceof Error ? error.message : String(error));\n } finally {\n setRunState(\"idle\");\n }\n }\n\n return (\n <section\n className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55\"\n aria-label=\"Tools\"\n >\n <header className=\"bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur\">\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.24em] text-primary\">\n Agent capabilities\n </div>\n <h1 className=\"m-0 text-2xl font-semibold leading-none tracking-tight text-foreground\">\n Tools\n </h1>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n Tool definitions registered on Studio agents, including approval policy and input\n schema.\n </p>\n </div>\n {props.agents.length > 1 ? (\n <Select value={selectedAgent?.id ?? \"\"} onValueChange={props.onSelectAgent}>\n <SelectTrigger className=\"h-9 min-h-9 w-64 rounded-lg border-border bg-card/80 font-mono text-xs max-md:w-full\">\n <SelectValue placeholder=\"Agent\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {props.agents.map((agent) => (\n <SelectItem value={agent.id} key={agent.id}>\n {agent.name ?? agent.id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n </div>\n </header>\n\n <div className=\"min-h-0 overflow-auto pb-6 pl-0 pr-6\">\n <div className=\"grid w-full gap-4\">\n {!props.enabled ? (\n <EmptyState\n title=\"Tools unavailable\"\n message=\"No registered Studio agent exposes static or dynamic tools.\"\n />\n ) : props.loading ? (\n <EmptyState title=\"Loading tools\" message=\"Reading registered tool metadata.\" />\n ) : tools.length === 0 ? (\n <EmptyState title=\"No tools\" message=\"The selected agent has no registered tools.\" />\n ) : (\n <>\n <section className=\"grid gap-4 rounded-xl border border-border/80 bg-card/55 p-4 shadow-sm xl:grid-cols-[minmax(300px,0.7fr)_minmax(0,1fr)]\">\n <div className=\"grid content-start gap-3\">\n <div className=\"grid gap-1\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">Run tool</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">\n Invoke a registered tool directly with JSON arguments and inspect the raw\n result.\n </p>\n </div>\n <Select value={selectedTool?.name ?? \"\"} onValueChange={setSelectedToolName}>\n <SelectTrigger className=\"h-9 min-h-9 rounded-lg border-border bg-background/80 font-mono text-xs\">\n <SelectValue placeholder=\"Tool\" />\n </SelectTrigger>\n <SelectContent>\n {tools.map((tool) => (\n <SelectItem value={tool.name} key={`${tool.source}:${tool.name}`}>\n {tool.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {selectedTool === undefined ? null : (\n <div className=\"grid gap-2 rounded-lg bg-background/45 p-3\">\n <span className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n selected definition\n </span>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">\n {selectedTool.description}\n </p>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <Badge className={sourceBadgeClass(selectedTool.source)}>\n {selectedTool.source}\n </Badge>\n <Badge className=\"border-border/80 bg-muted/55 text-muted-foreground\">\n {schemaPropertyCount(selectedTool.parameters)} fields\n </Badge>\n </div>\n </div>\n )}\n </div>\n <div className=\"grid min-w-0 gap-3\">\n <Textarea\n className=\"min-h-40 resize-y rounded-lg border-border bg-background/70 p-3 font-mono text-xs leading-5\"\n value={argsText}\n spellCheck={false}\n onChange={(event) => setArgsText(event.target.value)}\n />\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <span className=\"min-w-0 truncate font-mono text-xs text-muted-foreground\">\n Arguments must be valid JSON.\n </span>\n <Button\n className=\"h-9 min-h-9 rounded-lg px-4 font-mono text-xs\"\n type=\"button\"\n disabled={runState === \"running\" || selectedTool === undefined}\n onClick={() => void runSelectedTool()}\n >\n {runState === \"running\" ? \"Running\" : \"Run\"}\n </Button>\n </div>\n {runError.length > 0 ? (\n <div className=\"rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 font-mono text-xs leading-5 text-destructive\">\n {runError}\n </div>\n ) : null}\n {runResponse === undefined ? null : (\n <SchemaBlock value={runResponse} title=\"Result\" />\n )}\n </div>\n </section>\n\n <div className=\"grid gap-1 overflow-hidden rounded-xl border border-border/80 bg-card/55 p-2 shadow-sm\">\n <div className=\"grid min-h-10 grid-cols-[minmax(260px,0.75fr)_minmax(0,1fr)] items-center rounded-lg border border-border/60 bg-muted/20 px-4 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground max-lg:hidden\">\n <span>Definition</span>\n <span>Parameter schema</span>\n </div>\n {tools.map((tool) => (\n <ToolDefinitionRow tool={tool} key={`${tool.source}:${tool.name}`} />\n ))}\n </div>\n </>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nfunction ToolDefinitionRow(props: { tool: StudioAgentToolMetadata }) {\n const propertyCount = schemaPropertyCount(props.tool.parameters);\n return (\n <article className=\"grid grid-cols-[minmax(300px,0.75fr)_minmax(0,1fr)] gap-2 rounded-lg border border-transparent bg-background/25 p-2 transition duration-200 hover:border-border/70 hover:bg-background/35 max-lg:grid-cols-1\">\n <div className=\"grid content-start gap-4 rounded-lg bg-card/25 p-3\">\n <div className=\"grid gap-1\">\n <h2 className=\"m-0 truncate font-mono text-[15px] font-semibold text-foreground\">\n {props.tool.name}\n </h2>\n <span className=\"truncate font-mono text-[11px] font-medium text-muted-foreground\">\n {props.tool.agentId}\n </span>\n </div>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n {props.tool.description}\n </p>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <Badge className={sourceBadgeClass(props.tool.source)}>{props.tool.source}</Badge>\n <Badge\n className={cn(\n props.tool.approval.required\n ? \"border-primary/35 bg-primary/10 text-primary\"\n : \"border-border/80 bg-muted/55 text-muted-foreground\",\n )}\n >\n approval {props.tool.approval.required ? \"required\" : \"none\"}\n </Badge>\n <Badge className=\"border-border/80 bg-transparent text-muted-foreground\">\n {propertyCount} {propertyCount === 1 ? \"field\" : \"fields\"}\n </Badge>\n </div>\n {props.tool.approval.reason === undefined ? null : (\n <p className=\"m-0 rounded-lg bg-primary/10 px-3 py-2 text-xs leading-5 text-muted-foreground\">\n {props.tool.approval.reason}\n </p>\n )}\n </div>\n <SchemaBlock value={props.tool.parameters} title=\"JSON schema\" />\n </article>\n );\n}\n\nfunction SchemaBlock(props: { value: unknown; title: string }) {\n return (\n <section className=\"grid min-w-0 content-start overflow-hidden rounded-lg bg-background/45\">\n <div className=\"flex min-h-9 items-center justify-between gap-3 bg-muted/20 px-4\">\n <span className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {props.title}\n </span>\n <span className=\"font-mono text-[10px] text-muted-foreground\">\n {schemaType(props.value)}\n </span>\n </div>\n <div className=\"min-w-0 overflow-x-auto\">\n <pre className=\"m-0 max-h-96 min-w-max p-4 font-mono text-[12px] leading-5 text-foreground\">\n <code>\n <JsonSyntax text={formatSchema(props.value)} />\n </code>\n </pre>\n </div>\n </section>\n );\n}\n\nfunction EmptyState(props: { title: string; message: string }) {\n return (\n <div className=\"grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center\">\n <div className=\"grid max-w-md gap-2\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">{props.title}</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">{props.message}</p>\n </div>\n </div>\n );\n}\n\nfunction sourceBadgeClass(source: \"static\" | \"dynamic\"): string {\n return source === \"dynamic\"\n ? \"border-primary/35 bg-primary/10 text-primary\"\n : \"border-border/80 bg-muted/55 text-muted-foreground\";\n}\n\nfunction schemaType(value: unknown): string {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return \"value\";\n }\n const type = (value as { type?: unknown }).type;\n return typeof type === \"string\" ? type : \"object\";\n}\n\nfunction schemaPropertyCount(value: unknown): number {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return 0;\n }\n const properties = (value as { properties?: unknown }).properties;\n return typeof properties === \"object\" && properties !== null && !Array.isArray(properties)\n ? Object.keys(properties).length\n : 0;\n}\n\nfunction formatSchema(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction formatJson(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tools-page-B5Sd0DZG.js","names":[],"sources":["../../../src/ui/app/modules/tools/tools-page.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport type {\n StudioAgentToolMetadata,\n StudioAgentToolsSummary,\n StudioConfig,\n StudioToolRunResponse,\n} from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport { Textarea } from \"../../components/ui/textarea\";\nimport { cn } from \"../../lib/utils\";\nimport { JsonSyntax } from \"../shared/renderers\";\n\nexport function ToolsPage(props: {\n agents: StudioConfig[\"agents\"];\n selectedAgentId: string;\n summary: StudioAgentToolsSummary | undefined;\n enabled: boolean;\n loading: boolean;\n onSelectAgent: (agentId: string) => void;\n}) {\n const selectedAgent =\n props.agents.find((agent) => agent.id === props.selectedAgentId) ?? props.agents[0];\n const tools = props.summary?.tools ?? [];\n const [selectedToolName, setSelectedToolName] = useState(\"\");\n const [argsText, setArgsText] = useState(\"{}\");\n const [runState, setRunState] = useState<\"idle\" | \"running\">(\"idle\");\n const [runResponse, setRunResponse] = useState<StudioToolRunResponse | undefined>();\n const [runError, setRunError] = useState(\"\");\n const selectedTool = useMemo(\n () => tools.find((tool) => tool.name === selectedToolName) ?? tools[0],\n [selectedToolName, tools],\n );\n\n useEffect(() => {\n if (tools.length === 0) {\n setSelectedToolName(\"\");\n return;\n }\n if (!tools.some((tool) => tool.name === selectedToolName)) {\n setSelectedToolName(tools[0]?.name ?? \"\");\n }\n }, [selectedToolName, tools]);\n\n async function runSelectedTool() {\n if (selectedAgent === undefined || selectedTool === undefined) {\n return;\n }\n let args: unknown;\n try {\n args = JSON.parse(argsText);\n } catch (parseError) {\n setRunError(parseError instanceof Error ? parseError.message : String(parseError));\n setRunResponse(undefined);\n return;\n }\n\n setRunState(\"running\");\n setRunError(\"\");\n setRunResponse(undefined);\n try {\n const response = await fetch(\n `/agents/${encodeURIComponent(selectedAgent.id)}/tools/${encodeURIComponent(\n selectedTool.name,\n )}/runs`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ args }),\n },\n );\n const body = (await response.json()) as StudioToolRunResponse;\n setRunResponse(body);\n if (!response.ok || body.status === \"error\") {\n setRunError(formatJson(body.error ?? body));\n }\n } catch (error) {\n setRunError(error instanceof Error ? error.message : String(error));\n } finally {\n setRunState(\"idle\");\n }\n }\n\n return (\n <section\n className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55\"\n aria-label=\"Tools\"\n >\n <header className=\"bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur\">\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.24em] text-primary\">\n Agent capabilities\n </div>\n <h1 className=\"m-0 text-2xl font-semibold leading-none tracking-tight text-foreground\">\n Tools\n </h1>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n Tool definitions registered on Studio agents, including approval policy and input\n schema.\n </p>\n </div>\n {props.agents.length > 1 ? (\n <Select value={selectedAgent?.id ?? \"\"} onValueChange={props.onSelectAgent}>\n <SelectTrigger className=\"h-9 min-h-9 w-64 rounded-lg border-border bg-card/80 font-mono text-xs max-md:w-full\">\n <SelectValue placeholder=\"Agent\" />\n </SelectTrigger>\n <SelectContent align=\"end\">\n {props.agents.map((agent) => (\n <SelectItem value={agent.id} key={agent.id}>\n {agent.name ?? agent.id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : null}\n </div>\n </header>\n\n <div className=\"min-h-0 overflow-auto pb-6 pl-0 pr-6\">\n <div className=\"grid w-full gap-4\">\n {!props.enabled ? (\n <EmptyState\n title=\"Tools unavailable\"\n message=\"No registered Studio agent exposes static or dynamic tools.\"\n />\n ) : props.loading ? (\n <EmptyState title=\"Loading tools\" message=\"Reading registered tool metadata.\" />\n ) : tools.length === 0 ? (\n <EmptyState title=\"No tools\" message=\"The selected agent has no registered tools.\" />\n ) : (\n <>\n <section className=\"grid gap-4 rounded-xl border border-border/80 bg-card/55 p-4 shadow-sm xl:grid-cols-[minmax(300px,0.7fr)_minmax(0,1fr)]\">\n <div className=\"grid content-start gap-3\">\n <div className=\"grid gap-1\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">Run tool</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">\n Invoke a registered tool directly with JSON arguments and inspect the raw\n result.\n </p>\n </div>\n <Select value={selectedTool?.name ?? \"\"} onValueChange={setSelectedToolName}>\n <SelectTrigger className=\"h-9 min-h-9 rounded-lg border-border bg-background/80 font-mono text-xs\">\n <SelectValue placeholder=\"Tool\" />\n </SelectTrigger>\n <SelectContent>\n {tools.map((tool) => (\n <SelectItem value={tool.name} key={`${tool.source}:${tool.name}`}>\n {tool.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {selectedTool === undefined ? null : (\n <div className=\"grid gap-2 rounded-lg bg-background/45 p-3\">\n <span className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n selected definition\n </span>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">\n {selectedTool.description}\n </p>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <Badge className={sourceBadgeClass(selectedTool.source)}>\n {selectedTool.source}\n </Badge>\n <Badge className=\"border-border/80 bg-muted/55 text-muted-foreground\">\n {schemaPropertyCount(selectedTool.parameters)} fields\n </Badge>\n </div>\n </div>\n )}\n </div>\n <div className=\"grid min-w-0 gap-3\">\n <Textarea\n className=\"min-h-40 resize-y rounded-lg border-border bg-background/70 p-3 font-mono text-xs leading-5\"\n value={argsText}\n spellCheck={false}\n onChange={(event) => setArgsText(event.target.value)}\n />\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <span className=\"min-w-0 truncate font-mono text-xs text-muted-foreground\">\n Arguments must be valid JSON.\n </span>\n <Button\n className=\"h-9 min-h-9 rounded-lg px-4 font-mono text-xs\"\n type=\"button\"\n disabled={runState === \"running\" || selectedTool === undefined}\n onClick={() => void runSelectedTool()}\n >\n {runState === \"running\" ? \"Running\" : \"Run\"}\n </Button>\n </div>\n {runError.length > 0 ? (\n <div className=\"rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 font-mono text-xs leading-5 text-destructive\">\n {runError}\n </div>\n ) : null}\n {runResponse === undefined ? null : (\n <SchemaBlock value={runResponse} title=\"Result\" />\n )}\n </div>\n </section>\n\n <div className=\"grid gap-1 overflow-hidden rounded-xl border border-border/80 bg-card/55 p-2 shadow-sm\">\n <div className=\"grid min-h-10 grid-cols-[minmax(260px,0.75fr)_minmax(0,1fr)] items-center rounded-lg border border-border/60 bg-muted/20 px-4 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground max-lg:hidden\">\n <span>Definition</span>\n <span>Parameter schema</span>\n </div>\n {tools.map((tool) => (\n <ToolDefinitionRow tool={tool} key={`${tool.source}:${tool.name}`} />\n ))}\n </div>\n </>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nfunction ToolDefinitionRow(props: { tool: StudioAgentToolMetadata }) {\n const propertyCount = schemaPropertyCount(props.tool.parameters);\n return (\n <article className=\"grid grid-cols-[minmax(300px,0.75fr)_minmax(0,1fr)] gap-2 rounded-lg border border-transparent bg-background/25 p-2 transition duration-200 hover:border-border/70 hover:bg-background/35 max-lg:grid-cols-1\">\n <div className=\"grid content-start gap-4 rounded-lg bg-card/25 p-3\">\n <div className=\"grid gap-1\">\n <h2 className=\"m-0 truncate font-mono text-[15px] font-semibold text-foreground\">\n {props.tool.name}\n </h2>\n <span className=\"truncate font-mono text-[11px] font-medium text-muted-foreground\">\n {props.tool.agentId}\n </span>\n </div>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n {props.tool.description}\n </p>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <Badge className={sourceBadgeClass(props.tool.source)}>{props.tool.source}</Badge>\n <Badge\n className={cn(\n props.tool.approval.required\n ? \"border-primary/35 bg-primary/10 text-primary\"\n : \"border-border/80 bg-muted/55 text-muted-foreground\",\n )}\n >\n approval {props.tool.approval.required ? \"required\" : \"none\"}\n </Badge>\n <Badge className=\"border-border/80 bg-transparent text-muted-foreground\">\n {propertyCount} {propertyCount === 1 ? \"field\" : \"fields\"}\n </Badge>\n </div>\n {props.tool.approval.reason === undefined ? null : (\n <p className=\"m-0 rounded-lg bg-primary/10 px-3 py-2 text-xs leading-5 text-muted-foreground\">\n {props.tool.approval.reason}\n </p>\n )}\n </div>\n <SchemaBlock value={props.tool.parameters} title=\"JSON schema\" />\n </article>\n );\n}\n\nfunction SchemaBlock(props: { value: unknown; title: string }) {\n return (\n <section className=\"grid min-w-0 content-start overflow-hidden rounded-lg bg-background/45\">\n <div className=\"flex min-h-9 items-center justify-between gap-3 bg-muted/20 px-4\">\n <span className=\"font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {props.title}\n </span>\n <span className=\"font-mono text-[10px] text-muted-foreground\">\n {schemaType(props.value)}\n </span>\n </div>\n <div className=\"min-w-0 overflow-x-auto\">\n <pre className=\"m-0 max-h-96 min-w-max p-4 font-mono text-[12px] leading-5 text-foreground\">\n <code>\n <JsonSyntax text={formatSchema(props.value)} />\n </code>\n </pre>\n </div>\n </section>\n );\n}\n\nfunction EmptyState(props: { title: string; message: string }) {\n return (\n <div className=\"grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center\">\n <div className=\"grid max-w-md gap-2\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">{props.title}</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">{props.message}</p>\n </div>\n </div>\n );\n}\n\nfunction sourceBadgeClass(source: \"static\" | \"dynamic\"): string {\n return source === \"dynamic\"\n ? \"border-primary/35 bg-primary/10 text-primary\"\n : \"border-border/80 bg-muted/55 text-muted-foreground\";\n}\n\nfunction schemaType(value: unknown): string {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return \"value\";\n }\n const type = (value as { type?: unknown }).type;\n return typeof type === \"string\" ? type : \"object\";\n}\n\nfunction schemaPropertyCount(value: unknown): number {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return 0;\n }\n const properties = (value as { properties?: unknown }).properties;\n return typeof properties === \"object\" && properties !== null && !Array.isArray(properties)\n ? Object.keys(properties).length\n : 0;\n}\n\nfunction formatSchema(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction formatJson(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n"],"mappings":"8PAoBA,SAAgB,EAAU,EAOvB,CACD,IAAM,EACJ,EAAM,OAAO,KAAM,GAAU,EAAM,KAAO,EAAM,gBAAgB,EAAI,EAAM,OAAO,GAC7E,EAAQ,EAAM,SAAS,OAAS,EAAE,CAClC,CAAC,EAAkB,IAAA,EAAA,EAAA,UAAgC,GAAG,CACtD,CAAC,EAAU,IAAA,EAAA,EAAA,UAAwB,KAAK,CACxC,CAAC,EAAU,IAAA,EAAA,EAAA,UAA4C,OAAO,CAC9D,CAAC,EAAa,IAAA,EAAA,EAAA,WAA+D,CAC7E,CAAC,EAAU,IAAA,EAAA,EAAA,UAAwB,GAAG,CACtC,GAAA,EAAA,EAAA,aACE,EAAM,KAAM,GAAS,EAAK,OAAS,EAAiB,EAAI,EAAM,GACpE,CAAC,EAAkB,EAAM,CAC1B,EAED,EAAA,EAAA,eAAgB,CACd,GAAI,EAAM,SAAW,EAAG,CACtB,EAAoB,GAAG,CACvB,OAEG,EAAM,KAAM,GAAS,EAAK,OAAS,EAAiB,EACvD,EAAoB,EAAM,IAAI,MAAQ,GAAG,EAE1C,CAAC,EAAkB,EAAM,CAAC,CAE7B,eAAe,GAAkB,CAC/B,GAAI,IAAkB,IAAA,IAAa,IAAiB,IAAA,GAClD,OAEF,IAAI,EACJ,GAAI,CACF,EAAO,KAAK,MAAM,EAAS,OACpB,EAAY,CACnB,EAAY,aAAsB,MAAQ,EAAW,QAAU,OAAO,EAAW,CAAC,CAClF,EAAe,IAAA,GAAU,CACzB,OAGF,EAAY,UAAU,CACtB,EAAY,GAAG,CACf,EAAe,IAAA,GAAU,CACzB,GAAI,CACF,IAAM,EAAW,MAAM,MACrB,WAAW,mBAAmB,EAAc,GAAG,CAAC,SAAS,mBACvD,EAAa,KACd,CAAC,OACF,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,mBACjB,CACD,KAAM,KAAK,UAAU,CAAE,OAAM,CAAC,CAC/B,CACF,CACK,EAAQ,MAAM,EAAS,MAAM,CACnC,EAAe,EAAK,EAChB,CAAC,EAAS,IAAM,EAAK,SAAW,UAClC,EAAY,EAAW,EAAK,OAAS,EAAK,CAAC,OAEtC,EAAO,CACd,EAAY,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,CAAC,QAC3D,CACR,EAAY,OAAO,EAIvB,OACE,EAAA,EAAA,MAAC,UAAD,CACE,UAAU,+EACV,aAAW,iBAFb,EAIE,EAAA,EAAA,KAAC,SAAD,CAAQ,UAAU,+DAChB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,yFAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,wFAA+E,qBAExF,CAAA,EACN,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,kFAAyE,QAElF,CAAA,EACL,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,oEAA2D,4FAGpE,CAAA,CACA,GACL,EAAM,OAAO,OAAS,GACrB,EAAA,EAAA,MAAC,EAAD,CAAQ,MAAO,GAAe,IAAM,GAAI,cAAe,EAAM,uBAA7D,EACE,EAAA,EAAA,KAAC,EAAD,CAAe,UAAU,iGACvB,EAAA,EAAA,KAAC,EAAD,CAAa,YAAY,QAAU,CAAA,CACrB,CAAA,EAChB,EAAA,EAAA,KAAC,EAAD,CAAe,MAAM,eAClB,EAAM,OAAO,IAAK,IACjB,EAAA,EAAA,KAAC,EAAD,CAAY,MAAO,EAAM,YACtB,EAAM,MAAQ,EAAM,GACV,CAFqB,EAAM,GAE3B,CACb,CACY,CAAA,CACT,GACP,KACA,GACC,CAAA,EAET,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iDACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,6BACX,EAAM,QAKJ,EAAM,SACR,EAAA,EAAA,KAAC,EAAD,CAAY,MAAM,gBAAgB,QAAQ,oCAAsC,CAAA,CAC9E,EAAM,SAAW,GACnB,EAAA,EAAA,KAAC,EAAD,CAAY,MAAM,WAAW,QAAQ,8CAAgD,CAAA,EAErF,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,mIAAnB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,oCAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sBAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,uDAA8C,WAAa,CAAA,EACzE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uDAA8C,oFAGvD,CAAA,CACA,IACN,EAAA,EAAA,MAAC,EAAD,CAAQ,MAAO,GAAc,MAAQ,GAAI,cAAe,WAAxD,EACE,EAAA,EAAA,KAAC,EAAD,CAAe,UAAU,oFACvB,EAAA,EAAA,KAAC,EAAD,CAAa,YAAY,OAAS,CAAA,CACpB,CAAA,EAChB,EAAA,EAAA,KAAC,EAAD,CAAA,SACG,EAAM,IAAK,IACV,EAAA,EAAA,KAAC,EAAD,CAAY,MAAO,EAAK,cACrB,EAAK,KACK,CAFsB,GAAG,EAAK,OAAO,GAAG,EAAK,OAE7C,CACb,CACY,CAAA,CACT,GACR,IAAiB,IAAA,GAAY,MAC5B,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sDAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,iGAAwF,sBAEjG,CAAA,EACP,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uDACV,EAAa,YACZ,CAAA,EACJ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,wCAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAO,UAAW,EAAiB,EAAa,OAAO,UACpD,EAAa,OACR,CAAA,EACR,EAAA,EAAA,MAAC,EAAD,CAAO,UAAU,8DAAjB,CACG,EAAoB,EAAa,WAAW,CAAC,UACxC,GACJ,GACF,GAEJ,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8BAAf,EACE,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,8FACV,MAAO,EACP,WAAY,GACZ,SAAW,GAAU,EAAY,EAAM,OAAO,MAAM,CACpD,CAAA,EACF,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,2DAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oEAA2D,gCAEpE,CAAA,EACP,EAAA,EAAA,KAAC,EAAD,CACE,UAAU,gDACV,KAAK,SACL,SAAU,IAAa,WAAa,IAAiB,IAAA,GACrD,YAAe,KAAK,GAAiB,UAEpC,IAAa,UAAY,UAAY,MAC/B,CAAA,CACL,GACL,EAAS,OAAS,GACjB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,4HACZ,EACG,CAAA,CACJ,KACH,IAAgB,IAAA,GAAY,MAC3B,EAAA,EAAA,KAAC,EAAD,CAAa,MAAO,EAAa,MAAM,SAAW,CAAA,CAEhD,GACE,IAEV,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,kGAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4OAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAM,aAAiB,CAAA,EACvB,EAAA,EAAA,KAAC,OAAD,CAAA,SAAM,mBAAuB,CAAA,CACzB,GACL,EAAM,IAAK,IACV,EAAA,EAAA,KAAC,EAAD,CAAyB,OAA4C,CAAjC,GAAG,EAAK,OAAO,GAAG,EAAK,OAAU,CACrE,CACE,GACL,CAAA,CAAA,EA1FH,EAAA,EAAA,KAAC,EAAD,CACE,MAAM,oBACN,QAAQ,8DACR,CAAA,CAyFA,CAAA,CACF,CAAA,CACE,GAId,SAAS,EAAkB,EAA0C,CACnE,IAAM,EAAgB,EAAoB,EAAM,KAAK,WAAW,CAChE,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,wNAAnB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,8DAAf,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sBAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,4EACX,EAAM,KAAK,KACT,CAAA,EACL,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,4EACb,EAAM,KAAK,QACP,CAAA,CACH,IACN,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,oEACV,EAAM,KAAK,YACV,CAAA,EACJ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,wCAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAO,UAAW,EAAiB,EAAM,KAAK,OAAO,UAAG,EAAM,KAAK,OAAe,CAAA,EAClF,EAAA,EAAA,MAAC,EAAD,CACE,UAAW,EACT,EAAM,KAAK,SAAS,SAChB,+CACA,qDACL,UALH,CAMC,YACW,EAAM,KAAK,SAAS,SAAW,WAAa,OAChD,IACR,EAAA,EAAA,MAAC,EAAD,CAAO,UAAU,iEAAjB,CACG,EAAc,IAAE,IAAkB,EAAI,QAAU,SAC3C,GACJ,GACL,EAAM,KAAK,SAAS,SAAW,IAAA,GAAY,MAC1C,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,0FACV,EAAM,KAAK,SAAS,OACnB,CAAA,CAEF,IACN,EAAA,EAAA,KAAC,EAAD,CAAa,MAAO,EAAM,KAAK,WAAY,MAAM,cAAgB,CAAA,CACzD,GAId,SAAS,EAAY,EAA0C,CAC7D,OACE,EAAA,EAAA,MAAC,UAAD,CAAS,UAAU,kFAAnB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4EAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,gGACb,EAAM,MACF,CAAA,EACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,uDACb,EAAW,EAAM,MAAM,CACnB,CAAA,CACH,IACN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,oCACb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,uFACb,EAAA,EAAA,KAAC,OAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAa,EAAM,MAAM,CAAI,CAAA,CAC1C,CAAA,CACH,CAAA,CACF,CAAA,CACE,GAId,SAAS,EAAW,EAA2C,CAC7D,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,0HACb,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,+BAAf,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,uDAA+C,EAAM,MAAW,CAAA,EAC9E,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,uDAA+C,EAAM,QAAY,CAAA,CAC1E,GACF,CAAA,CAIV,SAAS,EAAiB,EAAsC,CAC9D,OAAO,IAAW,UACd,+CACA,qDAGN,SAAS,EAAW,EAAwB,CAC1C,GAAI,OAAO,GAAU,WAAY,GAAkB,MAAM,QAAQ,EAAM,CACrE,MAAO,QAET,IAAM,EAAQ,EAA6B,KAC3C,OAAO,OAAO,GAAS,SAAW,EAAO,SAG3C,SAAS,EAAoB,EAAwB,CACnD,GAAI,OAAO,GAAU,WAAY,GAAkB,MAAM,QAAQ,EAAM,CACrE,MAAO,GAET,IAAM,EAAc,EAAmC,WACvD,OAAO,OAAO,GAAe,UAAY,GAAuB,CAAC,MAAM,QAAQ,EAAW,CACtF,OAAO,KAAK,EAAW,CAAC,OACxB,EAGN,SAAS,EAAa,EAAwB,CAC5C,GAAI,CACF,OAAO,KAAK,UAAU,EAAO,KAAM,EAAE,MAC/B,CACN,OAAO,OAAO,EAAM,EAIxB,SAAS,EAAW,EAAwB,CAC1C,GAAI,CACF,OAAO,KAAK,UAAU,EAAO,KAAM,EAAE,MAC/B,CACN,OAAO,OAAO,EAAM"}
@@ -0,0 +1,10 @@
1
+ import{i as e,n as t,s as n,t as r}from"./jsx-runtime-ZfyQks-z.js";import{t as i}from"./Path.es-BO1_yZml.js";import{B as a,C as o,E as s,F as c,G as l,I as u,L as d,M as f,N as ee,P as p,U as m,V as h,W as g,a as _,c as v,f as y,i as b,j as x,l as S,p as C,s as w,t as T,u as E,z as D}from"./index-ga3NT_WB.js";import{t as O}from"./badge-CNbpc5Sm.js";var k=n(e(),1),te=new Map([[`bold`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M236,200a12,12,0,0,1-24,0,84.09,84.09,0,0,0-84-84H61l27.52,27.51a12,12,0,0,1-17,17l-48-48a12,12,0,0,1,0-17l48-48a12,12,0,0,1,17,17L61,92h67A108.12,108.12,0,0,1,236,200Z`}))],[`duotone`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M80,56v96L32,104Z`,opacity:`0.2`}),k.createElement(`path`,{d:`M128,96H88V56a8,8,0,0,0-13.66-5.66l-48,48a8,8,0,0,0,0,11.32l48,48A8,8,0,0,0,88,152V112h40a88.1,88.1,0,0,1,88,88,8,8,0,0,0,16,0A104.11,104.11,0,0,0,128,96ZM72,132.69,43.31,104,72,75.31Z`}))],[`fill`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M232,200a8,8,0,0,1-16,0,88.1,88.1,0,0,0-88-88H88v40a8,8,0,0,1-13.66,5.66l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,88,56V96h40A104.11,104.11,0,0,1,232,200Z`}))],[`light`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M230,200a6,6,0,0,1-12,0,90.1,90.1,0,0,0-90-90H46.49l37.75,37.76a6,6,0,1,1-8.48,8.48l-48-48a6,6,0,0,1,0-8.48l48-48a6,6,0,0,1,8.48,8.48L46.49,98H128A102.12,102.12,0,0,1,230,200Z`}))],[`regular`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M232,200a8,8,0,0,1-16,0,88.1,88.1,0,0,0-88-88H51.31l34.35,34.34a8,8,0,0,1-11.32,11.32l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,85.66,61.66L51.31,96H128A104.11,104.11,0,0,1,232,200Z`}))],[`thin`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M228,200a4,4,0,0,1-8,0,92.1,92.1,0,0,0-92-92H41.66l41.17,41.17a4,4,0,0,1-5.66,5.66l-48-48a4,4,0,0,1,0-5.66l48-48a4,4,0,0,1,5.66,5.66L41.66,100H128A100.11,100.11,0,0,1,228,200Z`}))]]),ne=new Map([[`bold`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z`}))],[`duotone`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M112,56V200L40,128Z`,opacity:`0.2`}),k.createElement(`path`,{d:`M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z`}))],[`fill`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z`}))],[`light`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z`}))],[`regular`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z`}))],[`thin`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z`}))]]),re=new Map([[`bold`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z`}))],[`duotone`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M176,128,96,208V48Z`,opacity:`0.2`}),k.createElement(`path`,{d:`M181.66,122.34l-80-80A8,8,0,0,0,88,48V208a8,8,0,0,0,13.66,5.66l80-80A8,8,0,0,0,181.66,122.34ZM104,188.69V67.31L164.69,128Z`}))],[`fill`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M181.66,133.66l-80,80A8,8,0,0,1,88,208V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,181.66,133.66Z`}))],[`light`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M180.24,132.24l-80,80a6,6,0,0,1-8.48-8.48L167.51,128,91.76,52.24a6,6,0,0,1,8.48-8.48l80,80A6,6,0,0,1,180.24,132.24Z`}))],[`regular`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z`}))],[`thin`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M178.83,130.83l-80,80a4,4,0,0,1-5.66-5.66L170.34,128,93.17,50.83a4,4,0,0,1,5.66-5.66l80,80A4,4,0,0,1,178.83,130.83Z`}))]]),ie=new Map([[`bold`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M156,88H100a12,12,0,0,0-12,12v56a12,12,0,0,0,12,12h56a12,12,0,0,0,12-12V100A12,12,0,0,0,156,88Zm-12,56H112V112h32Zm88-4H220V116h12a12,12,0,0,0,0-24H220V56a20,20,0,0,0-20-20H164V24a12,12,0,0,0-24,0V36H116V24a12,12,0,0,0-24,0V36H56A20,20,0,0,0,36,56V92H24a12,12,0,0,0,0,24H36v24H24a12,12,0,0,0,0,24H36v36a20,20,0,0,0,20,20H92v12a12,12,0,0,0,24,0V220h24v12a12,12,0,0,0,24,0V220h36a20,20,0,0,0,20-20V164h12a12,12,0,0,0,0-24Zm-36,56H60V60H196Z`}))],[`duotone`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M200,48H56a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H200a8,8,0,0,0,8-8V56A8,8,0,0,0,200,48ZM152,152H104V104h48Z`,opacity:`0.2`}),k.createElement(`path`,{d:`M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z`}))],[`fill`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M104,104h48v48H104Zm136,48a8,8,0,0,1-8,8H216v40a16,16,0,0,1-16,16H160v16a8,8,0,0,1-16,0V216H112v16a8,8,0,0,1-16,0V216H56a16,16,0,0,1-16-16V160H24a8,8,0,0,1,0-16H40V112H24a8,8,0,0,1,0-16H40V56A16,16,0,0,1,56,40H96V24a8,8,0,0,1,16,0V40h32V24a8,8,0,0,1,16,0V40h40a16,16,0,0,1,16,16V96h16a8,8,0,0,1,0,16H216v32h16A8,8,0,0,1,240,152ZM168,96a8,8,0,0,0-8-8H96a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8Z`}))],[`light`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M152,98H104a6,6,0,0,0-6,6v48a6,6,0,0,0,6,6h48a6,6,0,0,0,6-6V104A6,6,0,0,0,152,98Zm-6,48H110V110h36Zm86,0H214V110h18a6,6,0,0,0,0-12H214V56a14,14,0,0,0-14-14H158V24a6,6,0,0,0-12,0V42H110V24a6,6,0,0,0-12,0V42H56A14,14,0,0,0,42,56V98H24a6,6,0,0,0,0,12H42v36H24a6,6,0,0,0,0,12H42v42a14,14,0,0,0,14,14H98v18a6,6,0,0,0,12,0V214h36v18a6,6,0,0,0,12,0V214h42a14,14,0,0,0,14-14V158h18a6,6,0,0,0,0-12Zm-30,54a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2H200a2,2,0,0,1,2,2Z`}))],[`regular`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M152,96H104a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V104A8,8,0,0,0,152,96Zm-8,48H112V112h32Zm88,0H216V112h16a8,8,0,0,0,0-16H216V56a16,16,0,0,0-16-16H160V24a8,8,0,0,0-16,0V40H112V24a8,8,0,0,0-16,0V40H56A16,16,0,0,0,40,56V96H24a8,8,0,0,0,0,16H40v32H24a8,8,0,0,0,0,16H40v40a16,16,0,0,0,16,16H96v16a8,8,0,0,0,16,0V216h32v16a8,8,0,0,0,16,0V216h40a16,16,0,0,0,16-16V160h16a8,8,0,0,0,0-16Zm-32,56H56V56H200v95.87s0,.09,0,.13,0,.09,0,.13V200Z`}))],[`thin`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M152,100H104a4,4,0,0,0-4,4v48a4,4,0,0,0,4,4h48a4,4,0,0,0,4-4V104A4,4,0,0,0,152,100Zm-4,48H108V108h40Zm84,0H212V108h20a4,4,0,0,0,0-8H212V56a12,12,0,0,0-12-12H156V24a4,4,0,0,0-8,0V44H108V24a4,4,0,0,0-8,0V44H56A12,12,0,0,0,44,56v44H24a4,4,0,0,0,0,8H44v40H24a4,4,0,0,0,0,8H44v44a12,12,0,0,0,12,12h44v20a4,4,0,0,0,8,0V212h40v20a4,4,0,0,0,8,0V212h44a12,12,0,0,0,12-12V156h20a4,4,0,0,0,0-8Zm-28,52a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4Z`}))]]),ae=new Map([[`bold`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M128,76a52,52,0,1,0,52,52A52.06,52.06,0,0,0,128,76Zm0,80a28,28,0,1,1,28-28A28,28,0,0,1,128,156Zm113.86-49.57A12,12,0,0,0,236,98.34L208.21,82.49l-.11-31.31a12,12,0,0,0-4.25-9.12,116,116,0,0,0-38-21.41,12,12,0,0,0-9.68.89L128,37.27,99.83,21.53a12,12,0,0,0-9.7-.9,116.06,116.06,0,0,0-38,21.47,12,12,0,0,0-4.24,9.1l-.14,31.34L20,98.35a12,12,0,0,0-5.85,8.11,110.7,110.7,0,0,0,0,43.11A12,12,0,0,0,20,157.66l27.82,15.85.11,31.31a12,12,0,0,0,4.25,9.12,116,116,0,0,0,38,21.41,12,12,0,0,0,9.68-.89L128,218.73l28.14,15.74a12,12,0,0,0,9.7.9,116.06,116.06,0,0,0,38-21.47,12,12,0,0,0,4.24-9.1l.14-31.34,27.81-15.81a12,12,0,0,0,5.85-8.11A110.7,110.7,0,0,0,241.86,106.43Zm-22.63,33.18-26.88,15.28a11.94,11.94,0,0,0-4.55,4.59c-.54,1-1.11,1.93-1.7,2.88a12,12,0,0,0-1.83,6.31L184.13,199a91.83,91.83,0,0,1-21.07,11.87l-27.15-15.19a12,12,0,0,0-5.86-1.53h-.29c-1.14,0-2.3,0-3.44,0a12.08,12.08,0,0,0-6.14,1.51L93,210.82A92.27,92.27,0,0,1,71.88,199l-.11-30.24a12,12,0,0,0-1.83-6.32c-.58-.94-1.16-1.91-1.7-2.88A11.92,11.92,0,0,0,63.7,155L36.8,139.63a86.53,86.53,0,0,1,0-23.24l26.88-15.28a12,12,0,0,0,4.55-4.58c.54-1,1.11-1.94,1.7-2.89a12,12,0,0,0,1.83-6.31L71.87,57A91.83,91.83,0,0,1,92.94,45.17l27.15,15.19a11.92,11.92,0,0,0,6.15,1.52c1.14,0,2.3,0,3.44,0a12.08,12.08,0,0,0,6.14-1.51L163,45.18A92.27,92.27,0,0,1,184.12,57l.11,30.24a12,12,0,0,0,1.83,6.32c.58.94,1.16,1.91,1.7,2.88A11.92,11.92,0,0,0,192.3,101l26.9,15.33A86.53,86.53,0,0,1,219.23,139.61Z`}))],[`duotone`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M230.1,108.76,198.25,90.62c-.64-1.16-1.31-2.29-2-3.41l-.12-36A104.61,104.61,0,0,0,162,32L130,49.89c-1.34,0-2.69,0-4,0L94,32A104.58,104.58,0,0,0,59.89,51.25l-.16,36c-.7,1.12-1.37,2.26-2,3.41l-31.84,18.1a99.15,99.15,0,0,0,0,38.46l31.85,18.14c.64,1.16,1.31,2.29,2,3.41l.12,36A104.61,104.61,0,0,0,94,224l32-17.87c1.34,0,2.69,0,4,0L162,224a104.58,104.58,0,0,0,34.08-19.25l.16-36c.7-1.12,1.37-2.26,2-3.41l31.84-18.1A99.15,99.15,0,0,0,230.1,108.76ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z`,opacity:`0.2`}),k.createElement(`path`,{d:`M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm109.94-52.79a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A111.92,111.92,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.63a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21Zm-15,34.91-28.57,16.25a8,8,0,0,0-3,3c-.58,1-1.19,2.06-1.81,3.06a7.94,7.94,0,0,0-1.22,4.21l-.15,32.25a95.89,95.89,0,0,1-25.37,14.3L134,199.13a8,8,0,0,0-3.91-1h-.19c-1.21,0-2.43,0-3.64,0a8.1,8.1,0,0,0-4.1,1l-28.84,16.1A96,96,0,0,1,67.88,201l-.11-32.2a8,8,0,0,0-1.22-4.22c-.62-1-1.23-2-1.8-3.06a8.09,8.09,0,0,0-3-3.06l-28.6-16.29a90.49,90.49,0,0,1,0-28.26L61.67,97.63a8,8,0,0,0,3-3c.58-1,1.19-2.06,1.81-3.06a7.94,7.94,0,0,0,1.22-4.21l.15-32.25a95.89,95.89,0,0,1,25.37-14.3L122,56.87a8,8,0,0,0,4.1,1c1.21,0,2.43,0,3.64,0a8,8,0,0,0,4.1-1l28.84-16.1A96,96,0,0,1,188.12,55l.11,32.2a8,8,0,0,0,1.22,4.22c.62,1,1.23,2,1.8,3.06a8.09,8.09,0,0,0,3,3.06l28.6,16.29A90.49,90.49,0,0,1,222.9,142.12Z`}))],[`fill`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M237.94,107.21a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A111.92,111.92,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.63a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z`}))],[`light`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M128,82a46,46,0,1,0,46,46A46.06,46.06,0,0,0,128,82Zm0,80a34,34,0,1,1,34-34A34,34,0,0,1,128,162Zm108-54.4a6,6,0,0,0-2.92-4L202.64,86.22l-.42-.71L202.1,51.2A6,6,0,0,0,200,46.64a110.12,110.12,0,0,0-36.07-20.31,6,6,0,0,0-4.84.45L128.46,43.86h-1L96.91,26.76a6,6,0,0,0-4.86-.44A109.92,109.92,0,0,0,56,46.68a6,6,0,0,0-2.12,4.55l-.16,34.34c-.14.23-.28.47-.41.71L22.91,103.57A6,6,0,0,0,20,107.62a104.81,104.81,0,0,0,0,40.78,6,6,0,0,0,2.92,4l30.42,17.33.42.71.12,34.31A6,6,0,0,0,56,209.36a110.12,110.12,0,0,0,36.07,20.31,6,6,0,0,0,4.84-.45l30.61-17.08h1l30.56,17.1A6.09,6.09,0,0,0,162,230a5.83,5.83,0,0,0,1.93-.32,109.92,109.92,0,0,0,36-20.36,6,6,0,0,0,2.12-4.55l.16-34.34c.14-.23.28-.47.41-.71l30.42-17.29a6,6,0,0,0,2.92-4.05A104.81,104.81,0,0,0,236,107.6Zm-11.25,35.79L195.32,160.1a6.07,6.07,0,0,0-2.28,2.3c-.59,1-1.21,2.11-1.86,3.14a6,6,0,0,0-.91,3.16l-.16,33.21a98.15,98.15,0,0,1-27.52,15.53L133,200.88a6,6,0,0,0-2.93-.77h-.14c-1.24,0-2.5,0-3.74,0a6,6,0,0,0-3.07.76L93.45,217.43a98,98,0,0,1-27.56-15.49l-.12-33.17a6,6,0,0,0-.91-3.16c-.64-1-1.27-2.08-1.86-3.14a6,6,0,0,0-2.27-2.3L31.3,143.4a93,93,0,0,1,0-30.79L60.68,95.9A6.07,6.07,0,0,0,63,93.6c.59-1,1.21-2.11,1.86-3.14a6,6,0,0,0,.91-3.16l.16-33.21A98.15,98.15,0,0,1,93.41,38.56L123,55.12a5.81,5.81,0,0,0,3.07.76c1.24,0,2.5,0,3.74,0a6,6,0,0,0,3.07-.76l29.65-16.56a98,98,0,0,1,27.56,15.49l.12,33.17a6,6,0,0,0,.91,3.16c.64,1,1.27,2.08,1.86,3.14a6,6,0,0,0,2.27,2.3L224.7,112.6A93,93,0,0,1,224.73,143.39Z`}))],[`regular`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm109.94-52.79a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A112.1,112.1,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.62a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21Zm-15,34.91-28.57,16.25a8,8,0,0,0-3,3c-.58,1-1.19,2.06-1.81,3.06a7.94,7.94,0,0,0-1.22,4.21l-.15,32.25a95.89,95.89,0,0,1-25.37,14.3L134,199.13a8,8,0,0,0-3.91-1h-.19c-1.21,0-2.43,0-3.64,0a8.08,8.08,0,0,0-4.1,1l-28.84,16.1A96,96,0,0,1,67.88,201l-.11-32.2a8,8,0,0,0-1.22-4.22c-.62-1-1.23-2-1.8-3.06a8.09,8.09,0,0,0-3-3.06l-28.6-16.29a90.49,90.49,0,0,1,0-28.26L61.67,97.63a8,8,0,0,0,3-3c.58-1,1.19-2.06,1.81-3.06a7.94,7.94,0,0,0,1.22-4.21l.15-32.25a95.89,95.89,0,0,1,25.37-14.3L122,56.87a8,8,0,0,0,4.1,1c1.21,0,2.43,0,3.64,0a8.08,8.08,0,0,0,4.1-1l28.84-16.1A96,96,0,0,1,188.12,55l.11,32.2a8,8,0,0,0,1.22,4.22c.62,1,1.23,2,1.8,3.06a8.09,8.09,0,0,0,3,3.06l28.6,16.29A90.49,90.49,0,0,1,222.9,142.12Z`}))],[`thin`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M128,84a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,84Zm0,80a36,36,0,1,1,36-36A36,36,0,0,1,128,164Zm106-56a4,4,0,0,0-2-2.7l-30.89-17.6q-.47-.82-1-1.62L200.1,51.2a3.94,3.94,0,0,0-1.42-3,107.8,107.8,0,0,0-35.41-19.94,4,4,0,0,0-3.23.29L129,45.87h-2l-31-17.36a4,4,0,0,0-3.23-.3,108.05,108.05,0,0,0-35.39,20,4,4,0,0,0-1.41,3l-.16,34.9-1,1.62L23.9,105.3A4,4,0,0,0,22,108a102.76,102.76,0,0,0,0,40,4,4,0,0,0,1.95,2.7l30.89,17.6q.47.83,1,1.62l.12,34.87a3.94,3.94,0,0,0,1.42,3,107.8,107.8,0,0,0,35.41,19.94,4,4,0,0,0,3.23-.29L127,210.13h2l31,17.36a4,4,0,0,0,3.23.3,108.05,108.05,0,0,0,35.39-20,4,4,0,0,0,1.41-3l.16-34.9,1-1.62L232.1,150.7a4,4,0,0,0,2-2.71A102.76,102.76,0,0,0,234,108Zm-7.48,36.67L196.3,161.84a4,4,0,0,0-1.51,1.53c-.61,1.09-1.25,2.17-1.91,3.24a3.92,3.92,0,0,0-.61,2.1l-.16,34.15a99.8,99.8,0,0,1-29.7,16.77l-30.4-17a4.06,4.06,0,0,0-2-.51H130c-1.28,0-2.57,0-3.84,0a4.1,4.1,0,0,0-2.05.51l-30.45,17A100.23,100.23,0,0,1,63.89,202.9l-.12-34.12a3.93,3.93,0,0,0-.61-2.11c-.66-1-1.3-2.14-1.91-3.23a4,4,0,0,0-1.51-1.53L29.49,144.68a94.78,94.78,0,0,1,0-33.34L59.7,94.16a4,4,0,0,0,1.51-1.53c.61-1.09,1.25-2.17,1.91-3.23a4,4,0,0,0,.61-2.11l.16-34.15a99.8,99.8,0,0,1,29.7-16.77l30.4,17a4.1,4.1,0,0,0,2.05.51c1.28,0,2.57,0,3.84,0a4,4,0,0,0,2.05-.51l30.45-17A100.23,100.23,0,0,1,192.11,53.1l.12,34.12a3.93,3.93,0,0,0,.61,2.11c.66,1,1.3,2.14,1.91,3.23a4,4,0,0,0,1.51,1.53l30.25,17.23A94.78,94.78,0,0,1,226.54,144.66Z`}))]]),oe=new Map([[`bold`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M236,64a36,36,0,1,0-48,33.94V112a4,4,0,0,1-4,4H96a27.8,27.8,0,0,0-4,.29V97.94a36,36,0,1,0-24,0v60.12a36,36,0,1,0,24,0V144a4,4,0,0,1,4-4h88a28,28,0,0,0,28-28V97.94A36.07,36.07,0,0,0,236,64ZM80,52A12,12,0,1,1,68,64,12,12,0,0,1,80,52Zm0,152a12,12,0,1,1,12-12A12,12,0,0,1,80,204ZM200,76a12,12,0,1,1,12-12A12,12,0,0,1,200,76Z`}))],[`duotone`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M224,64a24,24,0,1,1-24-24A24,24,0,0,1,224,64Z`,opacity:`0.2`}),k.createElement(`path`,{d:`M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z`}))],[`fill`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192Z`}))],[`light`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M230,64a30,30,0,1,0-36,29.4V112a10,10,0,0,1-10,10H96a21.84,21.84,0,0,0-10,2.42v-31a30,30,0,1,0-12,0v69.2a30,30,0,1,0,12,0V144a10,10,0,0,1,10-10h88a22,22,0,0,0,22-22V93.4A30.05,30.05,0,0,0,230,64ZM62,64A18,18,0,1,1,80,82,18,18,0,0,1,62,64ZM98,192a18,18,0,1,1-18-18A18,18,0,0,1,98,192ZM200,82a18,18,0,1,1,18-18A18,18,0,0,1,200,82Z`}))],[`regular`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z`}))],[`thin`,k.createElement(k.Fragment,null,k.createElement(`path`,{d:`M228,64a28,28,0,1,0-32,27.71V112a12,12,0,0,1-12,12H96a19.91,19.91,0,0,0-12,4V91.71a28,28,0,1,0-8,0v72.58a28,28,0,1,0,8,0V144a12,12,0,0,1,12-12h88a20,20,0,0,0,20-20V91.71A28,28,0,0,0,228,64ZM60,64A20,20,0,1,1,80,84,20,20,0,0,1,60,64Zm40,128a20,20,0,1,1-20-20A20,20,0,0,1,100,192ZM200,84a20,20,0,1,1,20-20A20,20,0,0,1,200,84Z`}))]]),se=k.forwardRef((e,t)=>k.createElement(l,{ref:t,...e,weights:te}));se.displayName=`ArrowBendUpLeftIcon`;var ce=se,le=k.forwardRef((e,t)=>k.createElement(l,{ref:t,...e,weights:ne}));le.displayName=`ArrowLeftIcon`;var ue=le,de=k.forwardRef((e,t)=>k.createElement(l,{ref:t,...e,weights:re}));de.displayName=`CaretRightIcon`;var fe=de,A=k.forwardRef((e,t)=>k.createElement(l,{ref:t,...e,weights:ie}));A.displayName=`CpuIcon`;var pe=A,me=k.forwardRef((e,t)=>k.createElement(l,{ref:t,...e,weights:ae}));me.displayName=`GearSixIcon`;var he=me,ge=k.forwardRef((e,t)=>k.createElement(l,{ref:t,...e,weights:oe}));ge.displayName=`GitBranchIcon`;var _e=ge,j=r();function ve({className:e,...n}){return(0,j.jsx)(`div`,{className:t(`rounded-xl border border-border/80 bg-card/95 text-card-foreground shadow-sm shadow-black/20`,e),...n})}function ye(e,t){return k.useReducer((e,n)=>t[e][n]??e,e)}var M=`ScrollArea`,[be,xe]=p(M),[Se,N]=be(M),Ce=k.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[s,c]=k.useState(null),[l,u]=k.useState(null),[d,p]=k.useState(null),[m,h]=k.useState(null),[g,_]=k.useState(null),[v,y]=k.useState(0),[b,x]=k.useState(0),[S,C]=k.useState(!1),[w,T]=k.useState(!1),E=D(t,e=>c(e)),O=ee(i);return(0,j.jsx)(Se,{scope:n,type:r,dir:O,scrollHideDelay:a,scrollArea:s,viewport:l,onViewportChange:u,content:d,onContentChange:p,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:S,onScrollbarXEnabledChange:C,scrollbarY:g,onScrollbarYChange:_,scrollbarYEnabled:w,onScrollbarYEnabledChange:T,onCornerWidthChange:y,onCornerHeightChange:x,children:(0,j.jsx)(f.div,{dir:O,...o,ref:E,style:{position:`relative`,"--radix-scroll-area-corner-width":v+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})});Ce.displayName=M;var we=`ScrollAreaViewport`,Te=k.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,o=N(we,n),s=D(t,k.useRef(null),o.onViewportChange);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(Ee,{nonce:i}),(0,j.jsx)(f.div,{"data-radix-scroll-area-viewport":``,...a,ref:s,style:{overflowX:o.scrollbarXEnabled?`scroll`:`hidden`,overflowY:o.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,j.jsx)(`div`,{ref:o.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});Te.displayName=we;var Ee=k.memo(({nonce:e})=>(0,j.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:e}),(e,t)=>e.nonce===t.nonce),P=`ScrollAreaScrollbar`,De=k.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=N(P,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return k.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,j.jsx)(Oe,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,j.jsx)(ke,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,j.jsx)(Ae,{...r,ref:t,forceMount:n}):i.type===`always`?(0,j.jsx)(F,{...r,ref:t,"data-state":`visible`}):null});De.displayName=P;var Oe=k.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=N(P,e.__scopeScrollArea),[a,s]=k.useState(!1);return k.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),s(!0)},r=()=>{t=window.setTimeout(()=>s(!1),i.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,j.jsx)(o,{present:n||a,children:(0,j.jsx)(Ae,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),ke=k.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=N(P,e.__scopeScrollArea),a=e.orientation===`horizontal`,s=V(()=>u(`SCROLL_END`),100),[l,u]=ye(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return k.useEffect(()=>{if(l===`idle`){let e=window.setTimeout(()=>u(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[l,i.scrollHideDelay,u]),k.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(u(`SCROLL`),s()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,u,s]),(0,j.jsx)(o,{present:n||l!==`hidden`,children:(0,j.jsx)(F,{"data-state":l===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:c(e.onPointerEnter,()=>u(`POINTER_ENTER`)),onPointerLeave:c(e.onPointerLeave,()=>u(`POINTER_LEAVE`))})})}),Ae=k.forwardRef((e,t)=>{let n=N(P,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,s]=k.useState(!1),c=e.orientation===`horizontal`,l=V(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;s(c?e:t)}},10);return H(n.viewport,l),H(n.content,l),(0,j.jsx)(o,{present:r||a,children:(0,j.jsx)(F,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),F=k.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=N(P,e.__scopeScrollArea),a=k.useRef(null),o=k.useRef(0),[s,c]=k.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=Be(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return Ve(e,o.current,s,t)}return n===`horizontal`?(0,j.jsx)(je,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=He(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,j.jsx)(Me,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=He(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),je=k.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=N(P,e.__scopeScrollArea),[o,s]=k.useState(),c=k.useRef(null),l=D(t,c,a.onScrollbarXChange);return k.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,j.jsx)(Fe,{"data-orientation":`horizontal`,...i,ref:l,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":z(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),B(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:R(o.paddingLeft),paddingEnd:R(o.paddingRight)}})}})}),Me=k.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=N(P,e.__scopeScrollArea),[o,s]=k.useState(),c=k.useRef(null),l=D(t,c,a.onScrollbarYChange);return k.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,j.jsx)(Fe,{"data-orientation":`vertical`,...i,ref:l,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":z(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),B(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:R(o.paddingTop),paddingEnd:R(o.paddingBottom)}})}})}),[Ne,Pe]=be(P),Fe=k.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:s,onThumbPositionChange:l,onDragScroll:u,onWheelScroll:d,onResize:ee,...p}=e,m=N(P,n),[h,g]=k.useState(null),_=D(t,e=>g(e)),v=k.useRef(null),y=k.useRef(``),b=m.viewport,S=r.content-r.viewport,C=x(d),w=x(l),T=V(ee,10);function E(e){v.current&&u({x:e.clientX-v.current.left,y:e.clientY-v.current.top})}return k.useEffect(()=>{let e=e=>{let t=e.target;h?.contains(t)&&C(e,S)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[b,h,S,C]),k.useEffect(w,[r,w]),H(h,T),H(m.content,T),(0,j.jsx)(Ne,{scope:n,scrollbar:h,hasThumb:i,onThumbChange:x(a),onThumbPointerUp:x(o),onThumbPositionChange:w,onThumbPointerDown:x(s),children:(0,j.jsx)(f.div,{...p,ref:_,style:{position:`absolute`,...p.style},onPointerDown:c(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),v.current=h.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,m.viewport&&(m.viewport.style.scrollBehavior=`auto`),E(e))}),onPointerMove:c(e.onPointerMove,E),onPointerUp:c(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,m.viewport&&(m.viewport.style.scrollBehavior=``),v.current=null})})})}),I=`ScrollAreaThumb`,Ie=k.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Pe(I,e.__scopeScrollArea);return(0,j.jsx)(o,{present:n||i.hasThumb,children:(0,j.jsx)(Le,{ref:t,...r})})}),Le=k.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,a=N(I,n),o=Pe(I,n),{onThumbPositionChange:s}=o,l=D(t,e=>o.onThumbChange(e)),u=k.useRef(void 0),d=V(()=>{u.current&&=(u.current(),void 0)},100);return k.useEffect(()=>{let e=a.viewport;if(e){let t=()=>{d(),u.current||(u.current=We(e,s),s())};return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,d,s]),(0,j.jsx)(f.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:l,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:c(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:c(e.onPointerUp,o.onThumbPointerUp)})});Ie.displayName=I;var L=`ScrollAreaCorner`,Re=k.forwardRef((e,t)=>{let n=N(L,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,j.jsx)(ze,{...e,ref:t}):null});Re.displayName=L;var ze=k.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=N(L,n),[a,o]=k.useState(0),[s,c]=k.useState(0),l=!!(a&&s);return H(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),H(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),l?(0,j.jsx)(f.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function R(e){return e?parseInt(e,10):0}function Be(e,t){let n=e/t;return isNaN(n)?0:n}function z(e){let t=Be(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Ve(e,t,n,r=`ltr`){let i=z(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return Ue([c,l],d)(e)}function He(e,t,n=`ltr`){let r=z(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=u(e,n===`ltr`?[0,o]:[o*-1,0]);return Ue([0,o],[0,s])(c)}function Ue(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function B(e,t){return e>0&&e<t}var We=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function V(e,t){let n=x(e),r=k.useRef(0);return k.useEffect(()=>()=>window.clearTimeout(r.current),[]),k.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function H(e,t){let n=x(t);s(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Ge=Ce,Ke=Te,qe=Re;function Je({className:e,children:n,...r}){return(0,j.jsxs)(Ge,{className:t(`relative overflow-hidden`,e),...r,children:[(0,j.jsx)(Ke,{className:`h-full w-full rounded-[inherit]`,children:n}),(0,j.jsx)(Ye,{}),(0,j.jsx)(qe,{})]})}function Ye({className:e,orientation:n=`vertical`,...r}){return(0,j.jsx)(De,{orientation:n,className:t(`flex touch-none select-none transition-colors`,n===`vertical`&&`h-full w-2.5 border-l border-l-transparent p-px`,n===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent p-px`,e),...r,children:(0,j.jsx)(Ie,{className:`relative flex-1 rounded-lg bg-muted-foreground/40`})})}function Xe(e){if(!e.tracesEnabled)return(0,j.jsx)(`div`,{className:`w-full rounded-lg border border-dashed border-border p-8 text-sm font-medium text-muted-foreground`,children:`Tracing is disabled`});let t=e.selectedTraceId.length===0?void 0:e.traces.find(t=>t.id===e.selectedTraceId),n=t===void 0||e.traceSessionDetailId!==t.sessionId?[]:e.traces.filter(e=>e.sessionId===t.sessionId);return(0,j.jsx)(`section`,{className:`grid h-full min-h-0 w-full content-stretch pb-6 pl-0 pr-6`,"aria-label":`Tracing`,children:e.selectedTraceId.length===0?(0,j.jsx)(Ze,{agents:e.agents,traces:e.traces,traceLoadState:e.traceLoadState,onSelectTrace:e.onSelectTrace}):(0,j.jsx)(Qe,{selectedTrace:t,selectedSessionTraces:n,selectedTraceId:e.selectedTraceId,traceLoadState:e.traceLoadState,onBack:()=>e.onSelectTrace(``),onShowSessionTraces:e.onShowSessionTraces})})}function Ze(e){return(0,j.jsx)(ve,{className:`min-h-0 overflow-hidden rounded-xl border-border/80 bg-card/80`,"aria-label":`Traces`,children:(0,j.jsx)(Je,{className:`h-full min-h-0`,children:(0,j.jsxs)(`div`,{className:`grid min-w-280 gap-1 p-2`,children:[(0,j.jsxs)(`div`,{className:`sticky top-0 z-10 grid min-h-11 grid-cols-[minmax(220px,1.3fr)_150px_120px_120px_120px_120px_110px_90px] items-center gap-4 rounded-lg border border-border/60 bg-card/95 px-4 font-mono text-[11px] font-semibold uppercase tracking-[0.18em] text-muted-foreground backdrop-blur`,children:[(0,j.jsx)(`span`,{children:`Trace`}),(0,j.jsx)(`span`,{children:`Session`}),(0,j.jsx)(`span`,{children:`Agent`}),(0,j.jsx)(`span`,{children:`Status`}),(0,j.jsx)(`span`,{children:`Started`}),(0,j.jsx)(`span`,{children:`Duration`}),(0,j.jsx)(`span`,{children:`First delta`}),(0,j.jsx)(`span`,{children:`Events`})]}),e.traceLoadState===`loading`&&e.traces.length===0?(0,j.jsx)(`div`,{className:`px-5 py-4 text-sm font-medium text-muted-foreground`,children:`Loading traces`}):null,e.traceLoadState===`idle`&&e.traces.length===0?(0,j.jsx)(`div`,{className:`px-5 py-4 text-sm font-medium text-muted-foreground`,children:`No traces found`}):null,e.traces.map(n=>(0,j.jsxs)(d,{className:`grid h-auto min-h-14 w-full grid-cols-[minmax(220px,1.3fr)_150px_120px_120px_120px_120px_110px_90px] items-center justify-start gap-4 whitespace-normal rounded-lg border border-transparent bg-transparent px-4 py-2.5 text-left text-muted-foreground shadow-none transition duration-200 hover:border-primary/20 hover:bg-accent/70 hover:text-accent-foreground`,type:`button`,variant:`ghost`,onClick:()=>e.onSelectTrace(n.id),children:[(0,j.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs font-medium text-muted-foreground`,children:n.id}),(0,j.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs font-medium`,children:n.sessionId}),(0,j.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:y(e.agents,n)}),(0,j.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2 text-xs font-medium capitalize`,children:[(0,j.jsx)(`span`,{className:t(`h-2.5 w-2.5 shrink-0 rounded-lg`,It(n.status))}),(0,j.jsx)(`span`,{className:`min-w-0 truncate`,children:n.status})]}),(0,j.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:v(n.startedAt)}),(0,j.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:b(_(n.durationMs))}),(0,j.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:b(_(Q(n.observations)))}),(0,j.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium tabular-nums`,children:n.observationCount})]},n.id))]})})})}function Qe(e){return(0,j.jsxs)(`div`,{className:`grid h-full min-h-0 min-w-0 grid-rows-[auto_minmax(0,1fr)] gap-2 overflow-hidden rounded-xl border border-border/80 bg-card/70 p-2 shadow-sm`,children:[(0,j.jsxs)(`header`,{className:`grid min-h-16 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 overflow-hidden rounded-lg border border-border/60 bg-card/95 px-4 py-3`,children:[(0,j.jsx)(d,{"aria-label":`Back to traces`,className:`h-8 min-h-8 w-8 text-muted-foreground hover:text-foreground`,size:`icon`,type:`button`,variant:`ghost`,onClick:e.onBack,children:(0,j.jsx)(ue,{"aria-hidden":`true`})}),(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,j.jsx)(`strong`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.selectedTrace?.name??`Trace detail`}),(0,j.jsx)(`span`,{className:`flex min-w-0 items-center gap-2 overflow-hidden text-xs font-medium text-muted-foreground`,children:e.selectedTrace===void 0?e.traceLoadState===`loading`?`Loading trace`:`Trace not found`:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:t(`h-2 w-2 shrink-0 rounded-lg`,It(e.selectedTrace.status))}),(0,j.jsx)(`span`,{className:`shrink-0 capitalize`,children:e.selectedTrace.status}),(0,j.jsx)(`span`,{className:`shrink-0`,"aria-hidden":`true`,children:`/`}),(0,j.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[`Session`,` `,(0,j.jsx)(`span`,{className:`font-mono font-semibold`,children:e.selectedTrace.sessionId})]})]})})]}),(0,j.jsx)(`span`,{className:`hidden max-w-[42vw] truncate rounded-lg bg-muted px-2 py-1 font-mono text-xs font-medium text-muted-foreground md:block`,children:e.selectedTraceId})]}),(0,j.jsx)(`div`,{className:`min-h-0 min-w-0 overflow-hidden`,children:e.selectedTrace===void 0?(0,j.jsx)(ve,{className:`grid h-full place-items-center rounded-lg border-border bg-card p-6 text-sm font-medium text-muted-foreground`,children:e.traceLoadState===`loading`?`Loading trace`:`Trace not found`}):(0,j.jsx)($e,{traces:e.selectedSessionTraces.length>0?e.selectedSessionTraces:[e.selectedTrace],onShowSessionTraces:e.onShowSessionTraces})})]})}function $e(e){let t=(0,k.useMemo)(()=>[...e.traces].sort((e,t)=>Date.parse(e.startedAt)-Date.parse(t.startedAt)),[e.traces]),n=t[0]?.id??``,[r,i]=(0,k.useState)(n),[a,o]=(0,k.useState)(`trace`);(0,k.useEffect)(()=>{i(n),o(`trace`)},[n]);let s=t.find(e=>e.id===r)??t[0],c=s===void 0?[]:xt(s),l=(e,t)=>{i(e),o(t)};return s===void 0?(0,j.jsx)(`section`,{className:`grid h-full min-h-0 w-full place-items-center text-sm font-medium text-muted-foreground`,"aria-label":`Traces`,children:`No trace selected`}):(0,j.jsx)(`section`,{className:`grid h-full min-h-0 w-full content-stretch overflow-hidden`,"aria-label":`Traces`,children:(0,j.jsxs)(`div`,{className:`grid h-full min-h-0 grid-cols-[320px_minmax(0,1fr)] overflow-hidden max-md:grid-cols-1`,children:[(0,j.jsxs)(`nav`,{className:`grid min-h-0 auto-rows-min content-start overflow-auto border-r border-border/80 bg-card/35 pr-2 max-md:max-h-80 max-md:border-b max-md:border-r-0`,"aria-label":`Trace timeline`,children:[(0,j.jsxs)(`div`,{className:`sticky top-0 z-30 flex min-h-11 items-center justify-between bg-card/90 py-0 pl-0 pr-5 text-xs font-medium text-muted-foreground backdrop-blur`,children:[(0,j.jsx)(`span`,{children:`Search`}),(0,j.jsx)(`strong`,{className:`text-foreground`,children:`Timeline`})]}),t.map(e=>{let t=s.id===e.id,n=xt(e);return(0,j.jsxs)(`div`,{className:`contents`,children:[(0,j.jsx)(U,{active:t&&a===`trace`,ancestorLevels:[],hasChildren:!0,isLastSibling:!0,level:0,tone:`trace`,title:e.name??`Agent`,subtitle:_(e.durationMs),onSelect:()=>l(e.id,`trace`)}),(0,j.jsx)(U,{active:t&&a===`agent`,ancestorLevels:[],hasChildren:n.length>0,isLastSibling:!0,level:1,tone:`agent`,title:`agent.run`,subtitle:_(e.durationMs),onSelect:()=>l(e.id,`agent`)}),n.map(r=>(0,j.jsxs)(`div`,{className:`contents`,children:[(0,j.jsx)(U,{active:t&&a===`turn:${r.turn}`,ancestorLevels:[],hasChildren:r.observations.length>0,isLastSibling:r.turn===n.at(-1)?.turn,level:2,tone:`turn`,title:`turn.${r.turn}`,subtitle:_(r.durationMs),onSelect:()=>l(e.id,`turn:${r.turn}`)}),(0,j.jsx)(et,{activeKey:a,isLastTurn:r.turn===n.at(-1)?.turn,observations:r.observations,onSelect:t=>l(e.id,`observation:${t}`),traceActive:t})]},`${e.id}:turn:${r.turn}`))]},e.id)})]}),(0,j.jsx)(nt,{trace:s,turns:c,activeKey:a,onShowSessionTraces:e.onShowSessionTraces})]})})}function U(e){let n=e=>22+e*22;return(0,j.jsxs)(d,{className:t(`relative grid h-auto min-h-0 w-full min-w-0 grid-cols-[20px_minmax(0,1fr)] items-start justify-start gap-2 whitespace-normal rounded-lg border-0 bg-transparent px-3 py-2.5 text-left text-muted-foreground shadow-none transition duration-200 hover:bg-accent/70 hover:text-accent-foreground`,e.active&&`bg-primary/10 text-primary hover:bg-primary/10 hover:text-primary`),type:`button`,variant:`ghost`,onClick:e.onSelect,style:{paddingLeft:`${12+e.level*22}px`},children:[e.ancestorLevels.map(e=>(0,j.jsx)(`span`,{className:`pointer-events-none absolute inset-y-0 w-px bg-muted-foreground/35`,style:{left:`${n(e)}px`},"aria-hidden":`true`},`ancestor-line-${e}`)),e.level>0?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:`pointer-events-none absolute top-0 w-px bg-muted-foreground/35`,style:{left:`${n(e.level-1)}px`,height:`18px`},"aria-hidden":`true`}),e.isLastSibling?null:(0,j.jsx)(`span`,{className:`pointer-events-none absolute bottom-0 w-px bg-muted-foreground/35`,style:{left:`${n(e.level-1)}px`,top:`18px`},"aria-hidden":`true`}),(0,j.jsx)(`span`,{className:`pointer-events-none absolute h-px bg-muted-foreground/35`,style:{left:`${n(e.level-1)}px`,top:`18px`,width:`22px`},"aria-hidden":`true`})]}):null,e.hasChildren?(0,j.jsx)(`span`,{className:`pointer-events-none absolute bottom-0 w-px bg-muted-foreground/35`,style:{left:`${n(e.level)}px`,top:`18px`},"aria-hidden":`true`}):null,(0,j.jsx)(`span`,{className:t(`relative z-10 grid h-5 w-5 place-items-center rounded-lg bg-transparent [&_svg]:h-3 [&_svg]:w-3 [&_svg]:opacity-100`,Rt(e.tone)),children:(0,j.jsx)(Lt,{tone:e.tone})}),(0,j.jsxs)(`span`,{className:`grid min-w-0 gap-0.5`,children:[(0,j.jsx)(`strong`,{className:`min-w-0 truncate text-sm font-medium leading-5 text-current`,children:e.title}),(0,j.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium text-muted-foreground`,children:e.subtitle})]})]})}function et(e){let t=St(e.observations);return(0,j.jsx)(j.Fragment,{children:t.map((n,r)=>(0,j.jsx)(tt,{activeKey:e.activeKey,ancestorLevels:e.isLastTurn?[]:[1],isLastSibling:r===t.length-1,level:3,node:n,onSelect:e.onSelect,traceActive:e.traceActive},n.observation.id))})}function tt(e){let t=$(e.node.observation),n=e.isLastSibling?e.ancestorLevels:[...e.ancestorLevels,e.level];return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(U,{active:e.traceActive&&e.activeKey===`observation:${e.node.observation.id}`,ancestorLevels:e.ancestorLevels,hasChildren:e.node.children.length>0,isLastSibling:e.isLastSibling,level:e.level,tone:e.node.observation.kind,title:Pt(e.node.observation),subtitle:t.length>0?`${_(e.node.observation.durationMs)} · ${t}`:_(e.node.observation.durationMs),onSelect:()=>e.onSelect(e.node.observation.id)}),e.node.children.map((t,r)=>(0,j.jsx)(tt,{activeKey:e.activeKey,ancestorLevels:n,isLastSibling:r===e.node.children.length-1,level:e.level+1,node:t,onSelect:e.onSelect,traceActive:e.traceActive},t.observation.id))]})}function nt(e){let n=Ct(e.trace,e.turns,e.activeKey);return(0,j.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-card/70`,"aria-label":`Trace detail`,children:[(0,j.jsx)(`header`,{className:`border-b border-border/60 bg-card/70 px-6 py-5`,children:(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-5`,children:[(0,j.jsx)(`div`,{className:`flex min-w-0 items-start justify-between gap-4`,children:(0,j.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,j.jsx)(`span`,{className:t(`grid h-8 w-8 shrink-0 place-items-center rounded-lg bg-primary text-primary-foreground [&_svg]:h-4 [&_svg]:w-4 [&_svg]:opacity-100`,n.tone!==`trace`&&`bg-muted text-foreground`,Rt(n.tone)),children:(0,j.jsx)(Lt,{tone:n.tone})}),(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,j.jsx)(`h2`,{className:`m-0 min-w-0 truncate text-2xl font-semibold leading-none tracking-[-0.01em] text-foreground`,children:n.title}),(0,j.jsx)(`div`,{className:`font-mono text-xs font-medium text-muted-foreground`,children:n.startedAt})]})]})}),(0,j.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-2`,children:[(0,j.jsx)(W,{label:`Duration`,value:_(n.durationMs)}),n.firstDeltaMs===void 0?null:(0,j.jsx)(W,{label:`First delta`,value:_(n.firstDeltaMs)}),n.usage.length===0?null:(0,j.jsx)(W,{label:`Usage`,value:n.usage}),(0,j.jsxs)(`button`,{className:`grid min-w-0 gap-1 rounded-lg bg-card/85 px-4 py-3 text-left transition duration-200 hover:bg-accent hover:text-accent-foreground`,type:`button`,onClick:()=>e.onShowSessionTraces(e.trace.sessionId),children:[(0,j.jsx)(`span`,{className:`font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Session`}),(0,j.jsx)(`span`,{className:`min-w-0 truncate font-mono text-sm font-semibold text-current`,children:e.trace.sessionId})]})]})]})}),(0,j.jsx)(`div`,{className:`min-w-0 overflow-auto`,children:(0,j.jsxs)(`div`,{className:`grid min-w-0 content-start gap-6 p-6`,children:[n.input===void 0?null:(0,j.jsx)(G,{title:`Input`,value:n.input}),n.output===void 0?null:(0,j.jsx)(G,{title:`Output`,value:n.output,tone:`success`}),n.error===void 0?null:(0,j.jsx)(G,{title:`Error`,value:n.error,tone:`error`}),(0,j.jsx)(G,{title:`Metadata`,value:n.metadata,rawJson:!0})]})})]})}function W(e){return(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-1 rounded-lg bg-card/85 px-4 py-3`,children:[(0,j.jsx)(`span`,{className:`font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.label}),(0,j.jsx)(`span`,{className:`min-w-0 truncate font-mono text-sm font-semibold text-foreground`,children:e.value})]})}function G(e){let n=ht(e.title,e.value);return(0,j.jsxs)(`section`,{className:`grid min-w-0 gap-3`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,j.jsx)(`h3`,{className:`m-0 text-lg font-semibold leading-tight text-foreground`,children:e.title}),(0,j.jsx)(`span`,{className:`h-px flex-1 bg-border/80`,"aria-hidden":`true`})]}),e.rawJson?(0,j.jsx)(ot,{value:e.value}):(0,j.jsx)(`div`,{className:`grid min-w-0 gap-3`,children:n.map(n=>(0,j.jsxs)(`article`,{className:t(`grid min-w-0 gap-3 rounded-lg bg-card/85 px-4 py-4`,e.compact&&`grid-cols-[150px_minmax(0,1fr)] items-start gap-4 max-lg:grid-cols-1`),children:[(0,j.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2 font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:[(0,j.jsx)(mt,{label:n.label}),n.label]}),(0,j.jsx)(rt,{compact:e.compact,item:n,tone:e.tone})]},`${n.label}-${n.text}`))})]})}function rt(e){let n=it(e.item);return n.length>0?(0,j.jsx)(`div`,{className:`grid min-w-0 gap-5`,children:n.map(e=>(0,j.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,j.jsx)(`span`,{className:`font-mono text-xs font-semibold tabular-nums text-muted-foreground`,children:e.index}),(0,j.jsx)(O,{className:t(`px-1.5 py-0.5`,e.role===`User`&&`border-chart-2/40 bg-chart-2/15 text-chart-2`,e.role===`Assistant`&&`border-chart-1/40 bg-chart-1/15 text-chart-1`,e.role===`Tool`&&`border-chart-5/40 bg-chart-5/15 text-chart-5`),children:e.role})]}),(0,j.jsx)(`p`,{className:`m-0 whitespace-pre-wrap text-[15px] leading-7 text-foreground [overflow-wrap:anywhere]`,children:e.text})]},`${e.index}-${e.role}-${e.text}`))}):(0,j.jsx)(`p`,{className:t(`m-0 whitespace-pre-wrap text-[15px] leading-7 text-foreground [overflow-wrap:anywhere]`,e.compact&&`font-mono text-[13px] leading-6`,e.tone===`success`&&!pt(e.item)&&`text-primary`,e.tone===`error`&&`text-destructive`),children:e.item.text})}function it(e){return e.label.startsWith(`Conversation history`)?e.text.split(`
2
+
3
+ `).flatMap(e=>{let[t,...n]=e.split(`
4
+ `),r=/^(\d+)\.\s+(.+)$/.exec(t??``);return r===null?[]:[{index:r[1]??``,role:r[2]??`Message`,text:n.join(`
5
+ `)}]}):[]}function at(e){try{return JSON.stringify(e,null,2)??`undefined`}catch{return String(e)}}function ot(e){return(0,j.jsx)(`div`,{className:`overflow-x-auto rounded-lg bg-card/85 px-4 py-4 font-mono text-[13px] leading-6 text-foreground`,children:(0,j.jsx)(lt,{depth:0,path:`$`,value:e.value})})}var st=16,ct=20;function lt(e){return ft(e.value)?(0,j.jsx)(ut,{arrayIndex:e.arrayIndex,depth:e.depth,path:e.path,propertyKey:e.propertyKey,trailingComma:e.trailingComma,value:e.value}):(0,j.jsxs)(`div`,{className:`min-w-max whitespace-pre`,style:{paddingLeft:`${K(e.depth)}px`},children:[(0,j.jsx)(q,{arrayIndex:e.arrayIndex,propertyKey:e.propertyKey}),(0,j.jsx)(dt,{value:e.value}),e.trailingComma?(0,j.jsx)(`span`,{className:`text-foreground`,children:`,`}):null]})}function ut(e){let[t,n]=(0,k.useState)(e.depth===0),r=Array.isArray(e.value)?e.value:void 0,i=r===void 0?Object.entries(e.value):r.map((e,t)=>[String(t),e]),a=r===void 0?`{`:`[`,o=r===void 0?`}`:`]`,s=r===void 0?`{…}`:`[…]`;return i.length===0?(0,j.jsxs)(`div`,{className:`min-w-max whitespace-pre`,style:{paddingLeft:`${K(e.depth)}px`},children:[(0,j.jsx)(q,{arrayIndex:e.arrayIndex,propertyKey:e.propertyKey}),(0,j.jsxs)(`span`,{className:`text-foreground`,children:[a,o,e.trailingComma?`,`:``]})]}):(0,j.jsxs)(`div`,{className:`grid min-w-max`,children:[(0,j.jsxs)(`button`,{"aria-expanded":t,className:`grid min-w-max grid-cols-[16px_auto] items-center gap-1 rounded-lg py-0.5 pr-2 text-left transition duration-200 hover:bg-accent/45 hover:text-accent-foreground`,onClick:()=>n(e=>!e),style:{paddingLeft:`${e.depth*st}px`},type:`button`,children:[(0,j.jsx)(`span`,{className:`grid h-4 w-4 place-items-center text-muted-foreground [&_svg]:h-3 [&_svg]:w-3`,children:t?(0,j.jsx)(g,{"aria-hidden":`true`}):(0,j.jsx)(fe,{"aria-hidden":`true`})}),(0,j.jsxs)(`span`,{className:`whitespace-pre`,children:[(0,j.jsx)(q,{arrayIndex:e.arrayIndex,propertyKey:e.propertyKey}),t?(0,j.jsx)(`span`,{className:`text-foreground`,children:a}):(0,j.jsx)(`span`,{className:`text-muted-foreground`,children:s}),!t&&e.trailingComma?(0,j.jsx)(`span`,{className:`text-foreground`,children:`,`}):null]})]}),t?(0,j.jsxs)(j.Fragment,{children:[i.map(([t,n],a)=>(0,j.jsx)(lt,{arrayIndex:r===void 0?void 0:Number(t),depth:e.depth+1,path:`${e.path}.${t}`,propertyKey:r===void 0?t:void 0,trailingComma:a<i.length-1,value:n},`${e.path}.${t}`)),(0,j.jsxs)(`div`,{className:`min-w-max whitespace-pre text-foreground`,style:{paddingLeft:`${K(e.depth)}px`},children:[o,e.trailingComma?`,`:``]})]}):null]})}function K(e){return e*st+ct}function q(e){return e.propertyKey===void 0?e.arrayIndex===void 0?null:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`span`,{className:`text-muted-foreground`,children:[`[`,e.arrayIndex,`]`]}),(0,j.jsx)(`span`,{className:`text-foreground`,children:` `})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:`text-chart-2`,children:JSON.stringify(e.propertyKey)}),(0,j.jsx)(`span`,{className:`text-foreground`,children:`: `})]})}function dt(e){return typeof e.value==`string`?(0,j.jsx)(`span`,{className:`text-primary`,children:JSON.stringify(e.value)}):typeof e.value==`number`?(0,j.jsx)(`span`,{className:`text-chart-1`,children:String(e.value)}):typeof e.value==`boolean`?(0,j.jsx)(`span`,{className:`text-chart-4`,children:String(e.value)}):e.value===null?(0,j.jsx)(`span`,{className:`text-muted-foreground`,children:`null`}):e.value===void 0?(0,j.jsx)(`span`,{className:`text-muted-foreground`,children:`undefined`}):(0,j.jsx)(`span`,{className:`text-foreground`,children:at(e.value)})}function ft(e){return Array.isArray(e)||C(e)}function pt(e){return e.label===`Message Id`}function mt(e){let t=`h-3.5 w-3.5 shrink-0`;switch(e.label){case`System prompt`:return(0,j.jsx)(he,{"aria-hidden":`true`,className:t});case`Prompt`:return(0,j.jsx)(m,{"aria-hidden":`true`,className:t});case`Output`:case`Assistant output`:return(0,j.jsx)(ce,{"aria-hidden":`true`,className:t});default:return null}}function ht(e,t){if(e===`Output`){let e=gt(t);if(e.length>0)return e}let n=J(t,e);if(n.length>0)return n;if(!C(t))return[{label:e,text:bt(t)}];let r=[];for(let[e,n]of Object.entries(t)){let t=J(n,e);if(t.length>0){r.push(...t);continue}r.push({label:X(e),text:bt(n)})}return r.length>0?r:[{label:e,text:`Empty object`}]}function gt(e){if(!C(e))return[];let t=[],n=J(e.choice,`choice`);return t.push(...n),typeof e.messageId==`string`&&e.messageId.length>0&&t.push({label:`Message Id`,text:e.messageId}),t}function J(e,t){if(typeof e==`string`&&t===void 0)return[{label:`Value`,text:e}];if(Array.isArray(e))return t===`chatHistory`?_t(e):t===`history`?vt(e):e.map((e,n)=>({label:Y(e,n,t),text:T(e)||w(e)})).filter(e=>e.text.length>0);if(!C(e))return[];let n=Array.isArray(e.chatHistory)?e.chatHistory:void 0;if(n!==void 0){let t=yt(e);return t.push(...J(n,`chatHistory`)),t}if(Array.isArray(e.prompt))return J(e.prompt,`prompt`);let r=[];r.push(...yt(e));let i=Array.isArray(e.history)?e.history:[];i.length>0&&r.push(...J(i,`history`));let a=T(e.prompt);return a.length>0&&r.push({label:i.length>0?`Current prompt`:`Prompt`,text:a}),r}function _t(e){let t=e.map((e,t)=>({label:Y(e,t,`chatHistory`),text:T(e)||w(e)})).filter(e=>e.text.length>0),n=t.at(-1),r=t.slice(0,-1),i=[];return r.length>0&&i.push({label:`Conversation history (${r.length})`,text:r.map((e,t)=>`${t+1}. ${e.label}\n${e.text}`).join(`
6
+
7
+ `)}),n!==void 0&&i.push({label:r.length>0?`Current prompt`:`Prompt`,text:n.text}),i}function vt(e){let t=e.map((e,t)=>({label:Y(e,t,`history`),text:T(e)||w(e)})).filter(e=>e.text.length>0);return t.length===0?[]:[{label:`Conversation history (${t.length})`,text:t.map((e,t)=>`${t+1}. ${e.label}\n${e.text}`).join(`
8
+
9
+ `)}]}function Y(e,t,n){if(C(e)){let t=typeof e.type==`string`?e.type:void 0;if(n===`choice`){if(t===`text`)return`Assistant output`;if(t===`reasoning`)return`Reasoning`}if(t===`reasoning`)return`Reasoning`;if(typeof e.role==`string`)return X(e.role);if(t!==void 0)return X(t)}return`${n===void 0?`Item`:`${X(n)} item`} ${t+1}`}function X(e){return e.replace(/[_-]+/g,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).trim().replace(/\b\w/g,e=>e.toUpperCase())}function yt(e){let t=e.instructions;return typeof t!=`string`||t.trim().length===0?[]:[{label:`System prompt`,text:t}]}function bt(e){if(e===void 0)return`undefined`;if(e===null)return`null`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e,null,2)}catch{return String(e)}}function xt(e){let t=new Map;for(let n of e.observations){let e=Number.isFinite(n.turn)?n.turn:t.size+1;t.set(e,[...t.get(e)??[],n])}return[...t.entries()].sort(([e],[t])=>e-t).map(([e,t])=>({turn:e,observations:t,durationMs:t.reduce((e,t)=>e+(t.durationMs??0),0)}))}function St(e){let t=new Map;for(let n of e)t.set(n.id,{observation:n,children:[]});let n=[];for(let r of e){let e=t.get(r.id);if(e===void 0)continue;let i=r.parentObservationId,a=i===void 0?void 0:t.get(i);a===void 0?n.push(e):a.children.push(e)}return n}function Ct(e,t,n){if(n===`agent`)return{title:`agent.run`,tone:`agent`,startedAt:S(e.startedAt),durationMs:e.durationMs,firstDeltaMs:Q(e.observations),usage:E(e.usage),input:e.input,output:e.output,error:e.error,metadata:wt(e)};if(n.startsWith(`turn:`)){let r=Number(n.slice(5)),i=t.find(e=>e.turn===r);return{title:`turn.${Number.isFinite(r)?r:1}`,tone:`turn`,startedAt:S(i?.observations[0]?.startedAt??e.startedAt),durationMs:i?.durationMs,firstDeltaMs:Q(i?.observations??[]),usage:zt(i?.observations??[]),input:i?.observations[0]?.input,output:i?.observations.at(-1)?.output,metadata:Tt(r,i?.observations??[])}}if(n.startsWith(`observation:`)){let t=n.slice(12),r=e.observations.find(e=>e.id===t);if(r!==void 0)return{title:Pt(r),tone:r.kind,startedAt:S(r.startedAt),durationMs:r.durationMs,firstDeltaMs:Ft(r.metadata),usage:$(r),input:r.input,output:r.output,error:r.error,metadata:Et(r)}}return{title:e.name??`Agent`,tone:`trace`,startedAt:S(e.startedAt),durationMs:e.durationMs,firstDeltaMs:Q(e.observations),usage:E(e.usage),input:e.input,output:e.output,error:e.error,metadata:wt(e)}}function wt(e){let t=C(e.metadata)?e.metadata:{},n=Z({status:e.status,traceId:e.trace?.traceId??e.id,observationId:e.trace?.observationId,sessionId:e.sessionId,observationCount:e.observationCount,messageCount:Nt(t.messages),startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs});return Z({...t,status:e.status,traceId:e.trace?.traceId??e.id,observationId:e.trace?.observationId,sessionId:e.sessionId,observationCount:e.observationCount,messageCount:Nt(t.messages),startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,trace:C(t.trace)?t.trace:n})}function Tt(e,t){return Z({turn:e,observationCount:t.length,generationCount:t.filter(e=>e.kind===`generation`).length,toolCount:t.filter(e=>e.kind===`tool`).length,agentCount:t.filter(e=>e.kind===`agent`).length,firstDeltaMs:Q(t),status:Mt(t),startedAt:t[0]?.startedAt,endedAt:t.at(-1)?.endedAt})}function Et(e){let t=Z({...C(e.metadata)?e.metadata:{},status:e.status,kind:e.kind,turn:e.turn,parentObservationId:e.parentObservationId??null,startedAt:e.startedAt,endedAt:e.endedAt??null,durationMs:e.durationMs});return Z({...t,trace:C(t.trace)?t.trace:Z({status:e.status,kind:e.kind,turn:e.turn,parentObservationId:e.parentObservationId??null,startedAt:e.startedAt,endedAt:e.endedAt??null,durationMs:e.durationMs}),modelInfo:C(t.modelInfo)?t.modelInfo:Dt(t),modelCall:C(t.modelCall)?t.modelCall:Ot(t),response:C(t.response)?t.response:kt(t),tools:C(t.tools)?t.tools:At(t),timing:C(t.timing)?t.timing:jt(t)})}function Dt(e){let t=Z({provider:e.provider,model:e.model,requestedModel:e.requestedModel,defaultModel:e.defaultModel});return Object.keys(t).length===0?void 0:t}function Ot(e){let t=Z({messageCount:e.historyCount,documentCount:e.documentCount,toolCount:e.toolCount,toolNames:e.toolNames,temperature:e.temperature,maxTokens:e.maxTokens,toolChoice:e.toolChoice,hasOutputSchema:e.hasOutputSchema,additionalParamKeys:e.additionalParamKeys}),n=Z({request:Object.keys(t).length===0?void 0:t,providerRequest:e.providerRequest});return Object.keys(n).length===0?void 0:n}function kt(e){let t=Z({messageId:e.messageId,usage:e.usage,providerResponse:e.providerResponse});return Object.keys(t).length===0?void 0:t}function At(e){let t=Z({count:e.toolCount,names:e.toolNames,toolChoice:e.toolChoice,internalCallId:e.internalCallId,toolCallId:e.toolCallId,skipped:e.skipped,description:e.toolDescription,parameterKeys:e.parameterKeys,requiredParameterKeys:e.requiredParameterKeys,approvalRequired:e.approvalRequired,mcpServerName:e.mcpServerName,argumentBytes:e.argumentBytes,resultBytes:e.resultBytes});return Object.keys(t).length===0?void 0:t}function jt(e){let t=Z({firstDeltaMs:e.firstDeltaMs,durationMs:e.durationMs,startedAt:e.startedAt,endedAt:e.endedAt});return Object.keys(t).length===0?void 0:t}function Mt(e){return e.length===0?`empty`:e.some(e=>e.status===`error`)?`error`:e.some(e=>e.status===`running`)?`running`:`success`}function Nt(e){return Array.isArray(e)?e.length:void 0}function Z(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function Pt(e){return e.kind===`agent`?e.name:e.kind===`tool`?`tool.${e.name}`:e.name}function Q(e){for(let t of e){let e=Ft(t.metadata);if(e!==void 0)return e}}function Ft(e){if(!(!C(e)||typeof e.firstDeltaMs!=`number`))return e.firstDeltaMs}function It(e){switch(e){case`success`:return`bg-primary`;case`error`:return`bg-destructive`;case`running`:return`bg-chart-2`}}function Lt(e){switch(e.tone){case`trace`:return(0,j.jsx)(i,{"aria-hidden":`true`});case`agent`:return(0,j.jsx)(h,{"aria-hidden":`true`});case`turn`:return(0,j.jsx)(_e,{"aria-hidden":`true`});case`generation`:return(0,j.jsx)(pe,{"aria-hidden":`true`});case`tool`:return(0,j.jsx)(a,{"aria-hidden":`true`})}}function Rt(e){switch(e){case`trace`:return`bg-primary text-background`;case`agent`:return`bg-chart-2 text-background`;case`turn`:return`bg-chart-4 text-background`;case`generation`:return`bg-chart-1 text-background`;case`tool`:return`bg-chart-5 text-background`}}function $(e){return!C(e.output)||!C(e.output.usage)?``:Bt(e.output.usage)}function zt(e){return e.map($).filter(e=>e.length>0).join(` + `)}function Bt(e){let t=typeof e.inputTokens==`number`?e.inputTokens:0,n=typeof e.outputTokens==`number`?e.outputTokens:0,r=typeof e.totalTokens==`number`?e.totalTokens:t+n;return r===0?``:`${t} -> ${n} (Σ ${r})`}export{Xe as TraceBrowser};
10
+ //# sourceMappingURL=trace-browser-DbNpg0Zk.js.map