@anvia/studio 1.0.1 → 1.0.4
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.
- package/README.md +45 -3
- package/dist/index.d.ts +56 -5
- package/dist/index.js +349 -41
- package/dist/index.js.map +1 -1
- package/dist/ui/assets/Check.es-DgvuCllR.js +2 -0
- package/dist/ui/assets/Check.es-DgvuCllR.js.map +1 -0
- package/dist/ui/assets/Copy.es-DV7tb_eC.js +2 -0
- package/dist/ui/assets/Copy.es-DV7tb_eC.js.map +1 -0
- package/dist/ui/assets/MagnifyingGlass.es-yzEp9c89.js +2 -0
- package/dist/ui/assets/MagnifyingGlass.es-yzEp9c89.js.map +1 -0
- package/dist/ui/assets/Wrench.es-rRuP3Mrh.js +2 -0
- package/dist/ui/assets/Wrench.es-rRuP3Mrh.js.map +1 -0
- package/dist/ui/assets/agents-page-ByhvVYOx.js +2 -0
- package/dist/ui/assets/agents-page-ByhvVYOx.js.map +1 -0
- package/dist/ui/assets/badge-C3fkxijh.js +2 -0
- package/dist/ui/assets/badge-C3fkxijh.js.map +1 -0
- package/dist/ui/assets/button-B_AoswCu.js +2 -0
- package/dist/ui/assets/button-B_AoswCu.js.map +1 -0
- package/dist/ui/assets/{dialog-DN8F1Aaq.js → dialog-BfKpnby4.js} +2 -2
- package/dist/ui/assets/{dialog-DN8F1Aaq.js.map → dialog-BfKpnby4.js.map} +1 -1
- package/dist/ui/assets/{dist-PrGeYMiK.js → dist-Dr6EWOhl.js} +2 -2
- package/dist/ui/assets/{dist-PrGeYMiK.js.map → dist-Dr6EWOhl.js.map} +1 -1
- package/dist/ui/assets/{es2015-Ck1KeeEx.js → es2015-DGcxtKLK.js} +2 -2
- package/dist/ui/assets/{es2015-Ck1KeeEx.js.map → es2015-DGcxtKLK.js.map} +1 -1
- package/dist/ui/assets/favicon-dark.svg +7 -0
- package/dist/ui/assets/favicon-light.svg +7 -0
- package/dist/ui/assets/favicon.svg +1 -1
- package/dist/ui/assets/graphs-page-ne3dJIrx.js +2 -0
- package/dist/ui/assets/graphs-page-ne3dJIrx.js.map +1 -0
- package/dist/ui/assets/index-BGl7eOVR.css +2 -0
- package/dist/ui/assets/index-DF9Ysm8q.js +75 -0
- package/dist/ui/assets/index-DF9Ysm8q.js.map +1 -0
- package/dist/ui/assets/{input-DHvac9Uq.js → input-DuERdYTl.js} +2 -2
- package/dist/ui/assets/{input-DHvac9Uq.js.map → input-DuERdYTl.js.map} +1 -1
- package/dist/ui/assets/knowledge-page-1WgvGV4f.js +2 -0
- package/dist/ui/assets/knowledge-page-1WgvGV4f.js.map +1 -0
- package/dist/ui/assets/{mcps-page-MSz67ifn.js → mcps-page-BV96jSfG.js} +2 -2
- package/dist/ui/assets/mcps-page-BV96jSfG.js.map +1 -0
- package/dist/ui/assets/memory-page-DxClkjRl.js +4 -0
- package/dist/ui/assets/{memory-page-2qr2eMrI.js.map → memory-page-DxClkjRl.js.map} +1 -1
- package/dist/ui/assets/pipelines-page-ClO_uXn1.js +2 -0
- package/dist/ui/assets/pipelines-page-ClO_uXn1.js.map +1 -0
- package/dist/ui/assets/{renderers-BIw5yJkg.js → renderers-Cf55u6J4.js} +3 -3
- package/dist/ui/assets/{renderers-BIw5yJkg.js.map → renderers-Cf55u6J4.js.map} +1 -1
- package/dist/ui/assets/{request-CnFL8L6p.js → request-DbgMKweq.js} +2 -2
- package/dist/ui/assets/{request-CnFL8L6p.js.map → request-DbgMKweq.js.map} +1 -1
- package/dist/ui/assets/{sandboxes-page-DWMtrKYJ.js → sandboxes-page-Bo4S4ILL.js} +2 -2
- package/dist/ui/assets/sandboxes-page-Bo4S4ILL.js.map +1 -0
- package/dist/ui/assets/select-BdCBnmXx.js +2 -0
- package/dist/ui/assets/{select-C1_9fsRu.js.map → select-BdCBnmXx.js.map} +1 -1
- package/dist/ui/assets/sessions-page-BMnR-r_F.js +2 -0
- package/dist/ui/assets/sessions-page-BMnR-r_F.js.map +1 -0
- package/dist/ui/assets/status-page-Ys5dQyMG.js +2 -0
- package/dist/ui/assets/status-page-Ys5dQyMG.js.map +1 -0
- package/dist/ui/assets/studio-DzEdCFsX.js +2 -0
- package/dist/ui/assets/studio-DzEdCFsX.js.map +1 -0
- package/dist/ui/assets/style-BstB0PNS.js +8 -0
- package/dist/ui/assets/style-BstB0PNS.js.map +1 -0
- package/dist/ui/assets/{textarea-CZvhTJxB.js → textarea-fAtCF2cf.js} +2 -2
- package/dist/ui/assets/{textarea-CZvhTJxB.js.map → textarea-fAtCF2cf.js.map} +1 -1
- package/dist/ui/assets/tool-runner-Cwfc3yY8.js +2 -0
- package/dist/ui/assets/tool-runner-Cwfc3yY8.js.map +1 -0
- package/dist/ui/assets/{tools-page-D1ewvG0D.js → tools-page-BSgFqVi2.js} +2 -2
- package/dist/ui/assets/tools-page-BSgFqVi2.js.map +1 -0
- package/dist/ui/assets/trace-browser-Co9iS9HR.js +4 -0
- package/dist/ui/assets/trace-browser-Co9iS9HR.js.map +1 -0
- package/dist/ui/assets/transcript-item-ChVGempt.js +3 -0
- package/dist/ui/assets/transcript-item-ChVGempt.js.map +1 -0
- package/dist/ui/index.html +28 -20
- package/package.json +12 -8
- package/dist/ui/assets/CaretDown.es-CXu4Fvbf.js +0 -2
- package/dist/ui/assets/CaretDown.es-CXu4Fvbf.js.map +0 -1
- package/dist/ui/assets/Check.es-DSXK9-8c.js +0 -2
- package/dist/ui/assets/Check.es-DSXK9-8c.js.map +0 -1
- package/dist/ui/assets/Wrench.es-Cl38Pi3C.js +0 -4
- package/dist/ui/assets/Wrench.es-Cl38Pi3C.js.map +0 -1
- package/dist/ui/assets/agents-page-h-83w9EN.js +0 -2
- package/dist/ui/assets/agents-page-h-83w9EN.js.map +0 -1
- package/dist/ui/assets/badge-O3YyUN3G.js +0 -2
- package/dist/ui/assets/badge-O3YyUN3G.js.map +0 -1
- package/dist/ui/assets/button-Dsqwey2_.js +0 -2
- package/dist/ui/assets/button-Dsqwey2_.js.map +0 -1
- package/dist/ui/assets/index-Dggzi3lZ.js +0 -75
- package/dist/ui/assets/index-Dggzi3lZ.js.map +0 -1
- package/dist/ui/assets/index-VCdJ2Rb4.css +0 -2
- package/dist/ui/assets/knowledge-page-DKnPrmhK.js +0 -2
- package/dist/ui/assets/knowledge-page-DKnPrmhK.js.map +0 -1
- package/dist/ui/assets/mcps-page-MSz67ifn.js.map +0 -1
- package/dist/ui/assets/memory-page-2qr2eMrI.js +0 -4
- package/dist/ui/assets/pipelines-page-D1IB1tw-.js +0 -8
- package/dist/ui/assets/pipelines-page-D1IB1tw-.js.map +0 -1
- package/dist/ui/assets/sandboxes-page-DWMtrKYJ.js.map +0 -1
- package/dist/ui/assets/select-C1_9fsRu.js +0 -2
- package/dist/ui/assets/sessions-page-BIk4q-L8.js +0 -2
- package/dist/ui/assets/sessions-page-BIk4q-L8.js.map +0 -1
- package/dist/ui/assets/status-page-jKTghmnz.js +0 -2
- package/dist/ui/assets/status-page-jKTghmnz.js.map +0 -1
- package/dist/ui/assets/studio-Bh00wIF1.js +0 -2
- package/dist/ui/assets/studio-Bh00wIF1.js.map +0 -1
- package/dist/ui/assets/tool-runner-BtaZqE3R.js +0 -2
- package/dist/ui/assets/tool-runner-BtaZqE3R.js.map +0 -1
- package/dist/ui/assets/tools-page-D1ewvG0D.js.map +0 -1
- package/dist/ui/assets/trace-browser-CwRUyCO6.js +0 -10
- package/dist/ui/assets/trace-browser-CwRUyCO6.js.map +0 -1
- package/dist/ui/assets/transcript-item-ChtaJvPe.js +0 -3
- package/dist/ui/assets/transcript-item-ChtaJvPe.js.map +0 -1
- /package/dist/ui/assets/{pipelines-page-DLioOiRN.css → style-DLioOiRN.css} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,t}from"./utils-DzstcfqT.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`textarea`,{className:t(`min-h-16 w-full resize-none rounded-lg border border-input bg-transparent px-2.5 py-2 text-base leading-6 text-foreground outline-none transition-colors placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring
|
|
2
|
-
//# sourceMappingURL=textarea-
|
|
1
|
+
import{r as e,t}from"./utils-DzstcfqT.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`textarea`,{className:t(`min-h-16 w-full resize-none rounded-lg border border-input bg-transparent px-2.5 py-2 text-base leading-6 text-foreground outline-none transition-colors placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50 dark:bg-transparent dark:disabled:bg-muted`,e),...r})}export{r as t};
|
|
2
|
+
//# sourceMappingURL=textarea-fAtCF2cf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-
|
|
1
|
+
{"version":3,"file":"textarea-fAtCF2cf.js","names":[],"sources":["../../../src/ui/app/components/ui/textarea.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n className={cn(\n \"min-h-16 w-full resize-none rounded-lg border border-input bg-transparent px-2.5 py-2 text-base leading-6 text-foreground outline-none transition-colors placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50 dark:bg-transparent dark:disabled:bg-muted\",\n className,\n )}\n {...props}\n />\n );\n}\n"],"mappings":"oDAGA,SAAgB,EAAS,CAAE,YAAW,GAAG,GAA2C,CAClF,OACE,EAAA,EAAA,IAAA,CAAC,WAAD,CACE,UAAW,EACT,iXACA,CACF,EACA,GAAI,CACL,CAAA,CAEL"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e,r as t,s as n}from"./utils-DzstcfqT.js";import{h as r,t as i,v as a}from"./button-B_AoswCu.js";import{a as o,i as s,n as c,r as l,t as u}from"./select-BdCBnmXx.js";import{t as d}from"./textarea-fAtCF2cf.js";import{t as f}from"./badge-C3fkxijh.js";import{t as p}from"./input-DuERdYTl.js";import{t as ee}from"./renderers-Cf55u6J4.js";var m=n(e(),1),h=t();function g(e){let[t,n]=(0,m.useState)(`form`),r=(0,m.useMemo)(()=>T(e.schema),[e.schema]),i=(0,m.useMemo)(()=>F(e.value),[e.value]),o=e.disabled===!0,s=r.length>0,c=s?t:`json`,l=i.ok&&a(i.value)?i.value:void 0;function u(t,n){let r=l??{};e.onChange(z(P(r,t,n)))}function d(t,n){let r=l??{},i=N(r,t);Array.isArray(i)&&e.onChange(z(P(r,t,i.filter((e,t)=>t!==n))))}return(0,h.jsxs)(`div`,{className:`grid min-w-0 gap-3`,children:[(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,h.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Arguments`}),s?(0,h.jsxs)(`div`,{className:`inline-grid h-8 grid-cols-2 overflow-hidden rounded-md border border-hair bg-background p-0.5`,children:[(0,h.jsx)(_,{active:c===`form`,onClick:()=>n(`form`),children:`Form`}),(0,h.jsx)(_,{active:c===`json`,onClick:()=>n(`json`),children:`JSON`})]}):(0,h.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`JSON`})]}),c===`json`||l===void 0?(0,h.jsx)(v,{disabled:o,error:i.ok?``:i.error,value:e.value,onChange:e.onChange}):(0,h.jsx)(`div`,{className:`grid gap-3`,children:r.map(e=>(0,h.jsx)(y,{disabled:o,field:e,path:[e.name],rootValue:l,onChange:u,onRemoveArrayItem:d},e.name))})]})}function _(e){return(0,h.jsx)(`button`,{className:e.active?`rounded-[5px] bg-muted px-3 text-xs font-semibold text-foreground`:`rounded-[5px] px-3 text-xs font-medium text-muted-foreground transition hover:text-foreground`,type:`button`,onClick:e.onClick,children:e.children})}function v(e){return(0,h.jsxs)(`div`,{className:`grid gap-2`,children:[(0,h.jsx)(d,{className:`min-h-36 resize-y rounded-md border-border bg-background p-3 text-xs leading-5`,disabled:e.disabled,value:e.value,spellCheck:!1,onChange:t=>e.onChange(t.target.value)}),e.error.length===0?null:(0,h.jsx)(`div`,{className:`rounded-md border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive`,children:e.error})]})}function y(e){let t=N(e.rootValue,e.path),n=k(e.field.schema,e.field.name),r=A(e.field.schema),i=D(e.field.schema);if(i===`object`){let i=T(e.field.schema);return(0,h.jsxs)(`fieldset`,{className:`grid min-w-0 gap-3 border-b border-hair pb-3 last:border-b-0`,children:[(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,h.jsx)(`legend`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:n}),e.field.required?(0,h.jsx)(S,{}):null]}),r===void 0?null:(0,h.jsx)(`p`,{className:`m-0 text-xs leading-5 text-muted-foreground`,children:r}),i.length===0?(0,h.jsx)(w,{disabled:e.disabled,path:e.path,value:t,onChange:e.onChange}):(0,h.jsx)(`div`,{className:`grid gap-3 border-l border-hair pl-3`,children:i.map(t=>(0,h.jsx)(y,{disabled:e.disabled,field:t,path:[...e.path,t.name],rootValue:e.rootValue,onChange:e.onChange,onRemoveArrayItem:e.onRemoveArrayItem},t.name))})]})}return i===`array`?(0,h.jsx)(b,{description:r,disabled:e.disabled,field:e.field,label:n,path:e.path,rootValue:e.rootValue,value:t,onChange:e.onChange,onRemoveArrayItem:e.onRemoveArrayItem}):(0,h.jsxs)(`div`,{className:`grid min-w-0 gap-2 border-b border-hair pb-3 last:border-b-0`,children:[(0,h.jsx)(x,{label:n,required:e.field.required}),r===void 0?null:(0,h.jsx)(`p`,{className:`m-0 text-xs leading-5 text-muted-foreground`,children:r}),(0,h.jsx)(te,{disabled:e.disabled,path:e.path,required:e.field.required,schema:e.field.schema,value:t,onChange:e.onChange})]})}function b(e){let t=ne(e.field.schema),n=Array.isArray(e.value)?e.value:[],r=n.map((t,n)=>({index:n,key:`${H(e.path)}:${n}:${V(t)}`}));return(0,h.jsxs)(`div`,{className:`grid min-w-0 gap-3 border-b border-hair pb-3 last:border-b-0`,children:[(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,h.jsx)(x,{label:e.label,required:e.field.required}),t===void 0?null:(0,h.jsx)(i,{className:`h-8 min-h-8 rounded-md px-3 text-xs`,disabled:e.disabled,type:`button`,variant:`secondary`,onClick:()=>e.onChange(e.path,[...n,M(t)]),children:`Add`})]}),e.description===void 0?null:(0,h.jsx)(`p`,{className:`m-0 text-xs leading-5 text-muted-foreground`,children:e.description}),t===void 0?(0,h.jsx)(w,{disabled:e.disabled,path:e.path,value:e.value,onChange:e.onChange}):n.length===0?(0,h.jsx)(`div`,{className:`rounded-md border border-dashed border-hair px-3 py-2 text-xs text-muted-foreground`,children:`Empty array`}):(0,h.jsx)(`div`,{className:`grid gap-3 border-l border-hair pl-3`,children:r.map(n=>(0,h.jsxs)(`div`,{className:`grid gap-2`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,h.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:[`Item `,n.index+1]}),(0,h.jsx)(i,{className:`h-7 min-h-7 rounded-md px-2 text-xs`,disabled:e.disabled,type:`button`,variant:`ghost`,onClick:()=>e.onRemoveArrayItem(e.path,n.index),children:`Remove`})]}),(0,h.jsx)(y,{disabled:e.disabled,field:{name:String(n.index+1),required:!0,schema:t},path:[...e.path,n.index],rootValue:e.rootValue,onChange:e.onChange,onRemoveArrayItem:e.onRemoveArrayItem})]},n.key))})]})}function x(e){return(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,h.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.label}),e.required?(0,h.jsx)(S,{}):null]})}function S(){return(0,h.jsx)(`span`,{className:`rounded-md bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground`,children:`required`})}function te(e){let t=O(e.schema);if(t.length>0){let n=t.findIndex(t=>B(t,e.value)),r=t.map((e,t)=>({label:V(e),value:String(t),key:`${t}:${V(e)}`}));return(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,h.jsxs)(u,{value:n===-1?``:String(n),disabled:e.disabled,onValueChange:n=>e.onChange(e.path,t[Number(n)]),children:[(0,h.jsx)(s,{className:`h-9 min-h-9 rounded-md border-border bg-background text-sm`,children:(0,h.jsx)(o,{placeholder:`Select value`})}),(0,h.jsx)(c,{children:r.map(e=>(0,h.jsx)(l,{value:e.value,children:e.label},e.key))})]}),n===-1||e.required?null:(0,h.jsx)(i,{className:`h-9 min-h-9 rounded-md px-3 text-xs`,disabled:e.disabled,type:`button`,variant:`ghost`,onClick:()=>e.onChange(e.path,void 0),children:`Clear`})]})}let n=D(e.schema);return n===`boolean`?(0,h.jsxs)(`label`,{className:`flex min-h-9 w-fit cursor-pointer items-center gap-2 rounded-md border border-hair bg-background px-3 text-sm text-foreground`,children:[(0,h.jsx)(`input`,{checked:e.value===!0,disabled:e.disabled,type:`checkbox`,className:`h-4 w-4 accent-foreground`,onChange:t=>e.onChange(e.path,t.target.checked)}),`Enabled`]}):n===`number`||n===`integer`?(0,h.jsx)(C,{disabled:e.disabled,path:e.path,schema:e.schema,type:n,value:e.value,onChange:e.onChange}):n===`string`?(0,h.jsx)(p,{className:`h-9 rounded-md border-border bg-background text-sm`,disabled:e.disabled,type:`text`,value:typeof e.value==`string`?e.value:``,placeholder:j(e.schema),onChange:t=>{let n=t.target.value;e.onChange(e.path,n.length===0&&!e.required?void 0:n)}}):(0,h.jsx)(w,{disabled:e.disabled,path:e.path,value:e.value,onChange:e.onChange})}function C(e){let t=typeof e.value==`number`?String(e.value):``,[n,r]=(0,m.useState)(t);return(0,m.useEffect)(()=>{r(t)},[t]),(0,h.jsx)(p,{className:`h-9 rounded-md border-border bg-background text-sm`,disabled:e.disabled,inputMode:e.type===`integer`?`numeric`:`decimal`,type:`text`,value:n,placeholder:j(e.schema),onBlur:()=>{if(n.trim().length===0){r(``);return}let i=I(n,e.type);r(i.ok?String(i.value):t)},onChange:t=>{let n=t.target.value;if(r(n),n.trim().length===0){e.onChange(e.path,void 0);return}let i=I(n,e.type);i.ok&&e.onChange(e.path,i.value)}})}function w(e){let t=(0,m.useMemo)(()=>R(e.value),[e.value]),[n,r]=(0,m.useState)(t),i=(0,m.useMemo)(()=>F(n),[n]);return(0,m.useEffect)(()=>{r(t)},[t]),(0,h.jsxs)(`div`,{className:`grid gap-2`,children:[(0,h.jsx)(d,{className:`min-h-24 resize-y rounded-md border-border bg-background p-3 text-xs leading-5`,disabled:e.disabled,value:n,spellCheck:!1,onChange:t=>{let n=t.target.value;if(r(n),n.trim().length===0){e.onChange(e.path,void 0);return}let i=F(n);i.ok&&e.onChange(e.path,i.value)}}),i.ok||n.trim().length===0?null:(0,h.jsx)(`div`,{className:`rounded-md border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive`,children:i.error})]})}function T(e){if(!a(e))return[];let t=e.properties;if(!a(t))return[];let n=E(e);return Object.entries(t).map(([e,t])=>({name:e,required:n.has(e),schema:a(t)?t:{}}))}function E(e){let t=e.required;return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}function D(e){let t=e.type;if(typeof t==`string`)return t;if(Array.isArray(t)){let e=t.find(e=>typeof e==`string`&&e!==`null`);if(e!==void 0)return e}return O(e).length>0?`enum`:a(e.properties)?`object`:e.items===void 0?`unknown`:`array`}function ne(e){return a(e.items)?e.items:void 0}function O(e){return Array.isArray(e.enum)?e.enum:[]}function k(e,t){return typeof e.title==`string`&&e.title.length>0?e.title:U(t)}function A(e){return typeof e.description==`string`&&e.description.length>0?e.description:void 0}function j(e){return Object.hasOwn(e,`default`)?V(e.default):void 0}function M(e){if(Object.hasOwn(e,`default`))return e.default;let t=O(e);if(t.length>0)return t[0];let n=D(e);return n===`boolean`?!1:n===`integer`||n===`number`?0:n===`array`?[]:n===`object`?{}:n===`string`?``:null}function N(e,t){let n=e;for(let e of t){if(typeof e==`number`){if(!Array.isArray(n))return;n=n[e];continue}if(!a(n))return;n=n[e]}return n}function P(e,t,n){if(t.length===0)return n;let[r,...i]=t,o=Array.isArray(e)?[...e]:a(e)?{...e}:{};if(i.length===0)return n===void 0?(Array.isArray(o)&&typeof r==`number`?o.splice(r,1):!Array.isArray(o)&&typeof r==`string`&&delete o[r],o):((Array.isArray(o)&&typeof r==`number`||!Array.isArray(o)&&typeof r==`string`)&&(o[r]=n),o);let s=P(Array.isArray(o)&&typeof r==`number`||!Array.isArray(o)&&typeof r==`string`?o[r]:void 0,i,n);return(Array.isArray(o)&&typeof r==`number`||!Array.isArray(o)&&typeof r==`string`)&&(o[r]=s),o}function F(e){if(e.trim().length===0)return{ok:!0,value:void 0};try{return{ok:!0,value:JSON.parse(e)}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}function I(e,t){let n=e.trim();if(n.length===0||L(n))return{ok:!1};let r=Number(n);return!Number.isFinite(r)||t===`integer`&&!Number.isInteger(r)?{ok:!1}:{ok:!0,value:r}}function L(e){return e===`-`||e===`+`||e===`.`||e===`-.`||e===`+.`||/^[+-]?\d+\.$/.test(e)||/[eE][+-]?$/.test(e)}function R(e){return e===void 0?``:z(e)}function z(e){return JSON.stringify(e,null,2)}function B(e,t){return JSON.stringify(e)===JSON.stringify(t)}function V(e){return typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):e===null?`null`:JSON.stringify(e)}function H(e){return e.join(`.`)}function U(e){return e.replace(/[_-]+/g,` `).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}function W(e){let t=e.selectedTool===void 0?0:$(e.selectedTool.parameters);return(0,h.jsxs)(`section`,{className:`grid gap-4 border-t border-hair pt-4 xl:grid-cols-[minmax(260px,0.42fr)_minmax(0,1fr)]`,children:[(0,h.jsxs)(`div`,{className:`grid content-start gap-3`,children:[(0,h.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,h.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:`Runner`}),e.selectedTool===void 0?(0,h.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:`No tool selected`}):(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`p`,{className:`m-0 break-all text-sm font-semibold leading-6 text-foreground`,children:e.selectedTool.name}),(0,h.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:e.selectedTool.description})]})]}),e.selectedTool===void 0?null:(0,h.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,h.jsx)(f,{className:X(e.selectedTool),children:Z(e.selectedTool)}),(0,h.jsxs)(f,{className:J(e.selectedTool.approval.required),children:[`approval `,e.selectedTool.approval.required?`required`:`none`]}),(0,h.jsxs)(q,{children:[t,` `,t===1?`field`:`fields`]})]}),e.selectedTool?.approval.reason===void 0?null:(0,h.jsx)(`p`,{className:`m-0 border-l border-hair pl-3 text-xs leading-5 text-muted-foreground`,children:e.selectedTool.approval.reason})]}),(0,h.jsxs)(`div`,{className:`grid min-w-0 gap-3`,children:[(0,h.jsx)(g,{disabled:e.selectedTool===void 0,schema:e.selectedTool?.parameters,value:e.argsText,onChange:e.onArgsTextChange}),(0,h.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,h.jsx)(`span`,{className:`min-w-0 truncate text-xs text-muted-foreground`,children:`Arguments must be valid JSON.`}),(0,h.jsx)(i,{className:`h-8 min-h-8 rounded-md px-4 text-xs`,type:`button`,disabled:e.runState===`running`||e.selectedTool===void 0,onClick:e.onRun,children:e.runState===`running`?`Running`:`Run`})]}),e.runError.length>0?(0,h.jsx)(`div`,{className:`rounded-md border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive`,children:e.runError}):null,e.selectedTool===void 0?null:(0,h.jsxs)(`details`,{className:`group border-t border-hair pt-3`,children:[(0,h.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground marker:hidden`,children:[`Parameter schema`,(0,h.jsx)(`span`,{className:`font-medium normal-case tracking-normal`,children:Q(e.selectedTool.parameters)})]}),(0,h.jsx)(`div`,{className:`mt-3`,children:(0,h.jsx)(K,{value:e.selectedTool.parameters,title:`JSON schema`})})]}),e.runResponse===void 0?null:(0,h.jsx)(G,{response:e.runResponse})]})]})}function G(e){let t=Object.hasOwn(e.response,`result`),n=t?e.response.result:e.response.error,r=t?`Tool result`:`Tool error`;return(0,h.jsxs)(`div`,{className:`grid gap-3`,children:[(0,h.jsx)(K,{value:ae(n),title:r}),(0,h.jsxs)(`details`,{className:`group border-t border-hair pt-3`,children:[(0,h.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground marker:hidden`,children:[`Raw run response`,(0,h.jsxs)(`span`,{className:`font-medium normal-case tracking-normal`,children:[e.response.status,` / `,e.response.durationMs,`ms`]})]}),(0,h.jsx)(`div`,{className:`mt-3`,children:(0,h.jsx)(K,{value:e.response,title:`Studio envelope`})})]})]})}function K(e){return(0,h.jsxs)(`section`,{className:`grid min-w-0 content-start overflow-hidden rounded-lg bg-background`,children:[(0,h.jsxs)(`div`,{className:`flex min-h-9 items-center justify-between gap-3 bg-muted px-4`,children:[(0,h.jsx)(`span`,{className:` text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:e.title}),(0,h.jsx)(`span`,{className:` text-xs text-muted-foreground`,children:Q(e.value)})]}),(0,h.jsx)(`div`,{className:`min-w-0 overflow-x-auto`,children:(0,h.jsx)(`pre`,{className:`m-0 max-h-96 min-w-max p-4 text-xs leading-5 text-foreground`,children:(0,h.jsx)(`code`,{children:(0,h.jsx)(ee,{text:oe(e.value)})})})})]})}function q(e){return(0,h.jsx)(`span`,{className:`inline-flex min-h-7 items-center rounded-md bg-muted px-2.5 text-xs font-medium text-muted-foreground`,children:e.children})}function J(e){return e?`border-hair bg-muted text-foreground`:`border-transparent bg-transparent text-dim`}function Y(e){return e===`dynamic`?`border-hair bg-muted text-foreground`:`border-hair bg-muted text-muted-foreground`}function X(e){return e.mcpServerName===void 0?Y(e.source):`border-hair bg-muted text-foreground`}function Z(e){return e.mcpServerName===void 0?e.source:`MCP / ${e.mcpServerName}`}function Q(e){if(typeof e!=`object`||!e||Array.isArray(e))return`value`;let t=e.type;return typeof t==`string`?t:`object`}function $(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 re(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ie(e){if(a(e)&&typeof e.agentId==`string`&&e.agentId.length!==0&&typeof e.toolName==`string`&&e.toolName.length!==0&&(e.status===`success`||e.status===`error`)&&!(typeof e.durationMs!=`number`||!Number.isFinite(e.durationMs))&&typeof e.startedAt==`string`&&typeof e.endedAt==`string`&&Array.isArray(e.events))return e}function ae(e){if(typeof e!=`string`)return e;let t=r(e);return t.kind===`json`?t.value:e}function oe(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}export{re as a,$ as c,Z as d,J as i,Q as l,q as n,X as o,W as r,ie as s,K as t,Y as u};
|
|
2
|
+
//# sourceMappingURL=tool-runner-Cwfc3yY8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-runner-Cwfc3yY8.js","names":[],"sources":["../../../src/ui/app/modules/tools/schema-argument-editor.tsx","../../../src/ui/app/modules/tools/tool-runner.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { Button } from \"../../components/ui/button\";\nimport { Input } from \"../../components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport { Textarea } from \"../../components/ui/textarea\";\nimport { isRecord } from \"../shared/object\";\n\ntype ArgumentMode = \"form\" | \"json\";\ntype JsonPath = Array<string | number>;\ntype ParseResult = { ok: true; value: unknown } | { ok: false; error: string };\n\nexport function SchemaArgumentEditor(props: {\n schema: unknown;\n value: string;\n disabled?: boolean;\n onChange: (value: string) => void;\n}) {\n const [mode, setMode] = useState<ArgumentMode>(\"form\");\n const rootFields = useMemo(() => schemaFields(props.schema), [props.schema]);\n const parsed = useMemo(() => parseJson(props.value), [props.value]);\n const disabled = props.disabled === true;\n const canRenderForm = rootFields.length > 0;\n const effectiveMode = canRenderForm ? mode : \"json\";\n const rootValue = parsed.ok && isRecord(parsed.value) ? parsed.value : undefined;\n\n function updatePath(path: JsonPath, value: unknown | undefined) {\n const base = rootValue ?? {};\n props.onChange(formatEditorJson(setValueAtPath(base, path, value)));\n }\n\n function removePathItem(path: JsonPath, index: number) {\n const base = rootValue ?? {};\n const arrayValue = getValueAtPath(base, path);\n if (!Array.isArray(arrayValue)) {\n return;\n }\n props.onChange(\n formatEditorJson(\n setValueAtPath(\n base,\n path,\n arrayValue.filter((_, itemIndex) => itemIndex !== index),\n ),\n ),\n );\n }\n\n return (\n <div className=\"grid min-w-0 gap-3\">\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <span className=\"text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Arguments\n </span>\n {canRenderForm ? (\n <div className=\"inline-grid h-8 grid-cols-2 overflow-hidden rounded-md border border-hair bg-background p-0.5\">\n <ModeButton active={effectiveMode === \"form\"} onClick={() => setMode(\"form\")}>\n Form\n </ModeButton>\n <ModeButton active={effectiveMode === \"json\"} onClick={() => setMode(\"json\")}>\n JSON\n </ModeButton>\n </div>\n ) : (\n <span className=\"text-xs font-medium text-muted-foreground\">JSON</span>\n )}\n </div>\n\n {effectiveMode === \"json\" || rootValue === undefined ? (\n <RawJsonEditor\n disabled={disabled}\n error={parsed.ok ? \"\" : parsed.error}\n value={props.value}\n onChange={props.onChange}\n />\n ) : (\n <div className=\"grid gap-3\">\n {rootFields.map((field) => (\n <SchemaField\n disabled={disabled}\n field={field}\n key={field.name}\n path={[field.name]}\n rootValue={rootValue}\n onChange={updatePath}\n onRemoveArrayItem={removePathItem}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction ModeButton(props: { active: boolean; children: string; onClick: () => void }) {\n return (\n <button\n className={\n props.active\n ? \"rounded-[5px] bg-muted px-3 text-xs font-semibold text-foreground\"\n : \"rounded-[5px] px-3 text-xs font-medium text-muted-foreground transition hover:text-foreground\"\n }\n type=\"button\"\n onClick={props.onClick}\n >\n {props.children}\n </button>\n );\n}\n\nfunction RawJsonEditor(props: {\n value: string;\n error: string;\n disabled: boolean;\n onChange: (value: string) => void;\n}) {\n return (\n <div className=\"grid gap-2\">\n <Textarea\n className=\"min-h-36 resize-y rounded-md border-border bg-background p-3 text-xs leading-5\"\n disabled={props.disabled}\n value={props.value}\n spellCheck={false}\n onChange={(event) => props.onChange(event.target.value)}\n />\n {props.error.length === 0 ? null : (\n <div className=\"rounded-md border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive\">\n {props.error}\n </div>\n )}\n </div>\n );\n}\n\ntype SchemaFieldDefinition = {\n name: string;\n schema: Record<string, unknown>;\n required: boolean;\n};\n\nfunction SchemaField(props: {\n field: SchemaFieldDefinition;\n path: JsonPath;\n rootValue: Record<string, unknown>;\n disabled: boolean;\n onChange: (path: JsonPath, value: unknown | undefined) => void;\n onRemoveArrayItem: (path: JsonPath, index: number) => void;\n}) {\n const value = getValueAtPath(props.rootValue, props.path);\n const label = schemaLabel(props.field.schema, props.field.name);\n const description = schemaDescription(props.field.schema);\n const type = schemaPrimaryType(props.field.schema);\n\n if (type === \"object\") {\n const fields = schemaFields(props.field.schema);\n return (\n <fieldset className=\"grid min-w-0 gap-3 border-b border-hair pb-3 last:border-b-0\">\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <legend className=\"min-w-0 truncate text-sm font-semibold text-foreground\">\n {label}\n </legend>\n {props.field.required ? <RequiredBadge /> : null}\n </div>\n {description === undefined ? null : (\n <p className=\"m-0 text-xs leading-5 text-muted-foreground\">{description}</p>\n )}\n {fields.length === 0 ? (\n <JsonValueField\n disabled={props.disabled}\n path={props.path}\n value={value}\n onChange={props.onChange}\n />\n ) : (\n <div className=\"grid gap-3 border-l border-hair pl-3\">\n {fields.map((field) => (\n <SchemaField\n disabled={props.disabled}\n field={field}\n key={field.name}\n path={[...props.path, field.name]}\n rootValue={props.rootValue}\n onChange={props.onChange}\n onRemoveArrayItem={props.onRemoveArrayItem}\n />\n ))}\n </div>\n )}\n </fieldset>\n );\n }\n\n if (type === \"array\") {\n return (\n <ArrayField\n description={description}\n disabled={props.disabled}\n field={props.field}\n label={label}\n path={props.path}\n rootValue={props.rootValue}\n value={value}\n onChange={props.onChange}\n onRemoveArrayItem={props.onRemoveArrayItem}\n />\n );\n }\n\n return (\n <div className=\"grid min-w-0 gap-2 border-b border-hair pb-3 last:border-b-0\">\n <FieldHeader label={label} required={props.field.required} />\n {description === undefined ? null : (\n <p className=\"m-0 text-xs leading-5 text-muted-foreground\">{description}</p>\n )}\n <ScalarFieldControl\n disabled={props.disabled}\n path={props.path}\n required={props.field.required}\n schema={props.field.schema}\n value={value}\n onChange={props.onChange}\n />\n </div>\n );\n}\n\nfunction ArrayField(props: {\n field: SchemaFieldDefinition;\n label: string;\n description: string | undefined;\n path: JsonPath;\n rootValue: Record<string, unknown>;\n value: unknown;\n disabled: boolean;\n onChange: (path: JsonPath, value: unknown | undefined) => void;\n onRemoveArrayItem: (path: JsonPath, index: number) => void;\n}) {\n const itemSchema = schemaItems(props.field.schema);\n const items = Array.isArray(props.value) ? props.value : [];\n const itemEntries = items.map((item, index) => ({\n index,\n key: `${formatPath(props.path)}:${index}:${formatEnumValue(item)}`,\n }));\n return (\n <div className=\"grid min-w-0 gap-3 border-b border-hair pb-3 last:border-b-0\">\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <FieldHeader label={props.label} required={props.field.required} />\n {itemSchema === undefined ? null : (\n <Button\n className=\"h-8 min-h-8 rounded-md px-3 text-xs\"\n disabled={props.disabled}\n type=\"button\"\n variant=\"secondary\"\n onClick={() =>\n props.onChange(props.path, [...items, defaultValueForSchema(itemSchema)])\n }\n >\n Add\n </Button>\n )}\n </div>\n {props.description === undefined ? null : (\n <p className=\"m-0 text-xs leading-5 text-muted-foreground\">{props.description}</p>\n )}\n {itemSchema === undefined ? (\n <JsonValueField\n disabled={props.disabled}\n path={props.path}\n value={props.value}\n onChange={props.onChange}\n />\n ) : items.length === 0 ? (\n <div className=\"rounded-md border border-dashed border-hair px-3 py-2 text-xs text-muted-foreground\">\n Empty array\n </div>\n ) : (\n <div className=\"grid gap-3 border-l border-hair pl-3\">\n {itemEntries.map((item) => (\n <div className=\"grid gap-2\" key={item.key}>\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-xs font-medium text-muted-foreground\">\n Item {item.index + 1}\n </span>\n <Button\n className=\"h-7 min-h-7 rounded-md px-2 text-xs\"\n disabled={props.disabled}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onRemoveArrayItem(props.path, item.index)}\n >\n Remove\n </Button>\n </div>\n <SchemaField\n disabled={props.disabled}\n field={{\n name: String(item.index + 1),\n required: true,\n schema: itemSchema,\n }}\n path={[...props.path, item.index]}\n rootValue={props.rootValue}\n onChange={props.onChange}\n onRemoveArrayItem={props.onRemoveArrayItem}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction FieldHeader(props: { label: string; required: boolean }) {\n return (\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"min-w-0 truncate text-sm font-semibold text-foreground\">{props.label}</span>\n {props.required ? <RequiredBadge /> : null}\n </div>\n );\n}\n\nfunction RequiredBadge() {\n return (\n <span className=\"rounded-md bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground\">\n required\n </span>\n );\n}\n\nfunction ScalarFieldControl(props: {\n schema: Record<string, unknown>;\n path: JsonPath;\n value: unknown;\n required: boolean;\n disabled: boolean;\n onChange: (path: JsonPath, value: unknown | undefined) => void;\n}) {\n const enumOptions = schemaEnum(props.schema);\n if (enumOptions.length > 0) {\n const selectedIndex = enumOptions.findIndex((option) => jsonEqual(option, props.value));\n const optionEntries = enumOptions.map((option, index) => ({\n label: formatEnumValue(option),\n value: String(index),\n key: `${index}:${formatEnumValue(option)}`,\n }));\n return (\n <div className=\"flex min-w-0 items-center gap-2\">\n <Select\n value={selectedIndex === -1 ? \"\" : String(selectedIndex)}\n disabled={props.disabled}\n onValueChange={(value) => props.onChange(props.path, enumOptions[Number(value)])}\n >\n <SelectTrigger className=\"h-9 min-h-9 rounded-md border-border bg-background text-sm\">\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n {optionEntries.map((option) => (\n <SelectItem value={option.value} key={option.key}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {selectedIndex === -1 || props.required ? null : (\n <Button\n className=\"h-9 min-h-9 rounded-md px-3 text-xs\"\n disabled={props.disabled}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onChange(props.path, undefined)}\n >\n Clear\n </Button>\n )}\n </div>\n );\n }\n\n const type = schemaPrimaryType(props.schema);\n if (type === \"boolean\") {\n return (\n <label className=\"flex min-h-9 w-fit cursor-pointer items-center gap-2 rounded-md border border-hair bg-background px-3 text-sm text-foreground\">\n <input\n checked={props.value === true}\n disabled={props.disabled}\n type=\"checkbox\"\n className=\"h-4 w-4 accent-foreground\"\n onChange={(event) => props.onChange(props.path, event.target.checked)}\n />\n Enabled\n </label>\n );\n }\n\n if (type === \"number\" || type === \"integer\") {\n return (\n <NumberFieldControl\n disabled={props.disabled}\n path={props.path}\n schema={props.schema}\n type={type}\n value={props.value}\n onChange={props.onChange}\n />\n );\n }\n\n if (type === \"string\") {\n return (\n <Input\n className=\"h-9 rounded-md border-border bg-background text-sm\"\n disabled={props.disabled}\n type=\"text\"\n value={typeof props.value === \"string\" ? props.value : \"\"}\n placeholder={schemaDefaultPlaceholder(props.schema)}\n onChange={(event) => {\n const nextValue = event.target.value;\n props.onChange(\n props.path,\n nextValue.length === 0 && !props.required ? undefined : nextValue,\n );\n }}\n />\n );\n }\n\n return (\n <JsonValueField\n disabled={props.disabled}\n path={props.path}\n value={props.value}\n onChange={props.onChange}\n />\n );\n}\n\nfunction NumberFieldControl(props: {\n schema: Record<string, unknown>;\n type: \"number\" | \"integer\";\n path: JsonPath;\n value: unknown;\n disabled: boolean;\n onChange: (path: JsonPath, value: unknown | undefined) => void;\n}) {\n const externalValue = typeof props.value === \"number\" ? String(props.value) : \"\";\n const [draft, setDraft] = useState(externalValue);\n\n useEffect(() => {\n setDraft(externalValue);\n }, [externalValue]);\n\n return (\n <Input\n className=\"h-9 rounded-md border-border bg-background text-sm\"\n disabled={props.disabled}\n inputMode={props.type === \"integer\" ? \"numeric\" : \"decimal\"}\n type=\"text\"\n value={draft}\n placeholder={schemaDefaultPlaceholder(props.schema)}\n onBlur={() => {\n if (draft.trim().length === 0) {\n setDraft(\"\");\n return;\n }\n const nextValue = parseNumberDraft(draft, props.type);\n setDraft(nextValue.ok ? String(nextValue.value) : externalValue);\n }}\n onChange={(event) => {\n const nextDraft = event.target.value;\n setDraft(nextDraft);\n if (nextDraft.trim().length === 0) {\n props.onChange(props.path, undefined);\n return;\n }\n const nextValue = parseNumberDraft(nextDraft, props.type);\n if (nextValue.ok) {\n props.onChange(props.path, nextValue.value);\n }\n }}\n />\n );\n}\n\nfunction JsonValueField(props: {\n path: JsonPath;\n value: unknown;\n disabled: boolean;\n onChange: (path: JsonPath, value: unknown | undefined) => void;\n}) {\n const externalValue = useMemo(() => fieldJsonValue(props.value), [props.value]);\n const [draft, setDraft] = useState(externalValue);\n const parsed = useMemo(() => parseJson(draft), [draft]);\n\n useEffect(() => {\n setDraft(externalValue);\n }, [externalValue]);\n\n return (\n <div className=\"grid gap-2\">\n <Textarea\n className=\"min-h-24 resize-y rounded-md border-border bg-background p-3 text-xs leading-5\"\n disabled={props.disabled}\n value={draft}\n spellCheck={false}\n onChange={(event) => {\n const nextDraft = event.target.value;\n setDraft(nextDraft);\n if (nextDraft.trim().length === 0) {\n props.onChange(props.path, undefined);\n return;\n }\n const nextValue = parseJson(nextDraft);\n if (nextValue.ok) {\n props.onChange(props.path, nextValue.value);\n }\n }}\n />\n {parsed.ok || draft.trim().length === 0 ? null : (\n <div className=\"rounded-md border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive\">\n {parsed.error}\n </div>\n )}\n </div>\n );\n}\n\nfunction schemaFields(schema: unknown): SchemaFieldDefinition[] {\n if (!isRecord(schema)) {\n return [];\n }\n const properties = schema.properties;\n if (!isRecord(properties)) {\n return [];\n }\n const required = schemaRequired(schema);\n return Object.entries(properties).map(([name, propertySchema]) => ({\n name,\n required: required.has(name),\n schema: isRecord(propertySchema) ? propertySchema : {},\n }));\n}\n\nfunction schemaRequired(schema: Record<string, unknown>): Set<string> {\n const required = schema.required;\n if (!Array.isArray(required)) {\n return new Set();\n }\n return new Set(required.filter((item): item is string => typeof item === \"string\"));\n}\n\nfunction schemaPrimaryType(schema: Record<string, unknown>): string {\n const type = schema.type;\n if (typeof type === \"string\") {\n return type;\n }\n if (Array.isArray(type)) {\n const firstType = type.find(\n (item): item is string => typeof item === \"string\" && item !== \"null\",\n );\n if (firstType !== undefined) {\n return firstType;\n }\n }\n if (schemaEnum(schema).length > 0) {\n return \"enum\";\n }\n if (isRecord(schema.properties)) {\n return \"object\";\n }\n if (schema.items !== undefined) {\n return \"array\";\n }\n return \"unknown\";\n}\n\nfunction schemaItems(schema: Record<string, unknown>): Record<string, unknown> | undefined {\n return isRecord(schema.items) ? schema.items : undefined;\n}\n\nfunction schemaEnum(schema: Record<string, unknown>): unknown[] {\n return Array.isArray(schema.enum) ? schema.enum : [];\n}\n\nfunction schemaLabel(schema: Record<string, unknown>, fallback: string): string {\n return typeof schema.title === \"string\" && schema.title.length > 0\n ? schema.title\n : formatFieldName(fallback);\n}\n\nfunction schemaDescription(schema: Record<string, unknown>): string | undefined {\n return typeof schema.description === \"string\" && schema.description.length > 0\n ? schema.description\n : undefined;\n}\n\nfunction schemaDefaultPlaceholder(schema: Record<string, unknown>): string | undefined {\n return Object.hasOwn(schema, \"default\") ? formatEnumValue(schema.default) : undefined;\n}\n\nfunction defaultValueForSchema(schema: Record<string, unknown>): unknown {\n if (Object.hasOwn(schema, \"default\")) {\n return schema.default;\n }\n const enumOptions = schemaEnum(schema);\n if (enumOptions.length > 0) {\n return enumOptions[0];\n }\n const type = schemaPrimaryType(schema);\n if (type === \"boolean\") {\n return false;\n }\n if (type === \"integer\" || type === \"number\") {\n return 0;\n }\n if (type === \"array\") {\n return [];\n }\n if (type === \"object\") {\n return {};\n }\n if (type === \"string\") {\n return \"\";\n }\n return null;\n}\n\nfunction getValueAtPath(root: unknown, path: JsonPath): unknown {\n let current = root;\n for (const segment of path) {\n if (typeof segment === \"number\") {\n if (!Array.isArray(current)) {\n return undefined;\n }\n current = current[segment];\n continue;\n }\n if (!isRecord(current)) {\n return undefined;\n }\n current = current[segment];\n }\n return current;\n}\n\nfunction setValueAtPath(root: unknown, path: JsonPath, value: unknown | undefined): unknown {\n if (path.length === 0) {\n return value;\n }\n const [segment, ...rest] = path;\n const nextRoot = Array.isArray(root) ? [...root] : isRecord(root) ? { ...root } : {};\n if (rest.length === 0) {\n if (value === undefined) {\n if (Array.isArray(nextRoot) && typeof segment === \"number\") {\n nextRoot.splice(segment, 1);\n } else if (!Array.isArray(nextRoot) && typeof segment === \"string\") {\n delete nextRoot[segment];\n }\n return nextRoot;\n }\n if (Array.isArray(nextRoot) && typeof segment === \"number\") {\n nextRoot[segment] = value;\n } else if (!Array.isArray(nextRoot) && typeof segment === \"string\") {\n nextRoot[segment] = value;\n }\n return nextRoot;\n }\n const currentValue =\n Array.isArray(nextRoot) && typeof segment === \"number\"\n ? nextRoot[segment]\n : !Array.isArray(nextRoot) && typeof segment === \"string\"\n ? nextRoot[segment]\n : undefined;\n const nextValue = setValueAtPath(currentValue, rest, value);\n if (Array.isArray(nextRoot) && typeof segment === \"number\") {\n nextRoot[segment] = nextValue;\n } else if (!Array.isArray(nextRoot) && typeof segment === \"string\") {\n nextRoot[segment] = nextValue;\n }\n return nextRoot;\n}\n\nfunction parseJson(value: string): ParseResult {\n if (value.trim().length === 0) {\n return { ok: true, value: undefined };\n }\n try {\n return { ok: true, value: JSON.parse(value) };\n } catch (error) {\n return { ok: false, error: error instanceof Error ? error.message : String(error) };\n }\n}\n\ntype NumberParseResult = { ok: true; value: number } | { ok: false };\n\nfunction parseNumberDraft(value: string, type: \"number\" | \"integer\"): NumberParseResult {\n const normalized = value.trim();\n if (normalized.length === 0 || isIncompleteNumberDraft(normalized)) {\n return { ok: false };\n }\n const parsed = Number(normalized);\n if (!Number.isFinite(parsed)) {\n return { ok: false };\n }\n if (type === \"integer\" && !Number.isInteger(parsed)) {\n return { ok: false };\n }\n return { ok: true, value: parsed };\n}\n\nfunction isIncompleteNumberDraft(value: string): boolean {\n return (\n value === \"-\" ||\n value === \"+\" ||\n value === \".\" ||\n value === \"-.\" ||\n value === \"+.\" ||\n /^[+-]?\\d+\\.$/.test(value) ||\n /[eE][+-]?$/.test(value)\n );\n}\n\nfunction fieldJsonValue(value: unknown): string {\n if (value === undefined) {\n return \"\";\n }\n return formatEditorJson(value);\n}\n\nfunction formatEditorJson(value: unknown): string {\n return JSON.stringify(value, null, 2);\n}\n\nfunction jsonEqual(left: unknown, right: unknown): boolean {\n return JSON.stringify(left) === JSON.stringify(right);\n}\n\nfunction formatEnumValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n if (value === null) {\n return \"null\";\n }\n return JSON.stringify(value);\n}\n\nfunction formatPath(path: JsonPath): string {\n return path.join(\".\");\n}\n\nfunction formatFieldName(value: string): string {\n return value\n .replace(/[_-]+/g, \" \")\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .replace(/\\b\\w/g, (match) => match.toUpperCase());\n}\n","import type { ReactNode } from \"react\";\nimport type { StudioAgentToolMetadata, StudioToolRunResponse } from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport { parseToolDisplayValue } from \"../shared/format\";\nimport { isRecord } from \"../shared/object\";\nimport { JsonSyntax } from \"../shared/renderers\";\nimport { SchemaArgumentEditor } from \"./schema-argument-editor\";\n\nexport type ToolRunState = \"idle\" | \"running\";\n\nexport function ToolRunner(props: {\n selectedTool: StudioAgentToolMetadata | undefined;\n argsText: string;\n runState: ToolRunState;\n runError: string;\n runResponse: StudioToolRunResponse | undefined;\n onArgsTextChange: (value: string) => void;\n onRun: () => void;\n}) {\n const propertyCount =\n props.selectedTool === undefined ? 0 : schemaPropertyCount(props.selectedTool.parameters);\n return (\n <section className=\"grid gap-4 border-t border-hair pt-4 xl:grid-cols-[minmax(260px,0.42fr)_minmax(0,1fr)]\">\n <div className=\"grid content-start gap-3\">\n <div className=\"grid gap-1.5\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">Runner</h2>\n {props.selectedTool === undefined ? (\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">No tool selected</p>\n ) : (\n <>\n <p className=\"m-0 break-all text-sm font-semibold leading-6 text-foreground\">\n {props.selectedTool.name}\n </p>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n {props.selectedTool.description}\n </p>\n </>\n )}\n </div>\n {props.selectedTool === undefined ? null : (\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <Badge className={originBadgeClass(props.selectedTool)}>\n {toolOriginLabel(props.selectedTool)}\n </Badge>\n <Badge className={approvalBadgeClass(props.selectedTool.approval.required)}>\n approval {props.selectedTool.approval.required ? \"required\" : \"none\"}\n </Badge>\n <ToolMetaPill>\n {propertyCount} {propertyCount === 1 ? \"field\" : \"fields\"}\n </ToolMetaPill>\n </div>\n )}\n {props.selectedTool?.approval.reason === undefined ? null : (\n <p className=\"m-0 border-l border-hair pl-3 text-xs leading-5 text-muted-foreground\">\n {props.selectedTool.approval.reason}\n </p>\n )}\n </div>\n <div className=\"grid min-w-0 gap-3\">\n <SchemaArgumentEditor\n disabled={props.selectedTool === undefined}\n schema={props.selectedTool?.parameters}\n value={props.argsText}\n onChange={props.onArgsTextChange}\n />\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <span className=\"min-w-0 truncate text-xs text-muted-foreground\">\n Arguments must be valid JSON.\n </span>\n <Button\n className=\"h-8 min-h-8 rounded-md px-4 text-xs\"\n type=\"button\"\n disabled={props.runState === \"running\" || props.selectedTool === undefined}\n onClick={props.onRun}\n >\n {props.runState === \"running\" ? \"Running\" : \"Run\"}\n </Button>\n </div>\n {props.runError.length > 0 ? (\n <div className=\"rounded-md border border-status-danger-ink bg-status-danger-fill px-3 py-2 text-xs leading-5 text-destructive\">\n {props.runError}\n </div>\n ) : null}\n {props.selectedTool === undefined ? null : (\n <details className=\"group border-t border-hair pt-3\">\n <summary className=\"flex cursor-pointer list-none items-center justify-between gap-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground marker:hidden\">\n Parameter schema\n <span className=\"font-medium normal-case tracking-normal\">\n {schemaType(props.selectedTool.parameters)}\n </span>\n </summary>\n <div className=\"mt-3\">\n <SchemaBlock value={props.selectedTool.parameters} title=\"JSON schema\" />\n </div>\n </details>\n )}\n {props.runResponse === undefined ? null : <ToolRunResult response={props.runResponse} />}\n </div>\n </section>\n );\n}\n\nfunction ToolRunResult(props: { response: StudioToolRunResponse }) {\n const hasResult = Object.hasOwn(props.response, \"result\");\n const primaryValue = hasResult ? props.response.result : props.response.error;\n const title = hasResult ? \"Tool result\" : \"Tool error\";\n\n return (\n <div className=\"grid gap-3\">\n <SchemaBlock value={displayToolRunValue(primaryValue)} title={title} />\n <details className=\"group border-t border-hair pt-3\">\n <summary className=\"flex cursor-pointer list-none items-center justify-between gap-3 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground marker:hidden\">\n Raw run response\n <span className=\"font-medium normal-case tracking-normal\">\n {props.response.status} / {props.response.durationMs}ms\n </span>\n </summary>\n <div className=\"mt-3\">\n <SchemaBlock value={props.response} title=\"Studio envelope\" />\n </div>\n </details>\n </div>\n );\n}\n\nexport function SchemaBlock(props: { value: unknown; title: string }) {\n return (\n <section className=\"grid min-w-0 content-start overflow-hidden rounded-lg bg-background\">\n <div className=\"flex min-h-9 items-center justify-between gap-3 bg-muted px-4\">\n <span className=\" text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {props.title}\n </span>\n <span className=\" text-xs text-muted-foreground\">{schemaType(props.value)}</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 text-xs leading-5 text-foreground\">\n <code>\n <JsonSyntax text={formatSchema(props.value)} />\n </code>\n </pre>\n </div>\n </section>\n );\n}\n\nexport function ToolMetaPill(props: { children: ReactNode }) {\n return (\n <span className=\"inline-flex min-h-7 items-center rounded-md bg-muted px-2.5 text-xs font-medium text-muted-foreground\">\n {props.children}\n </span>\n );\n}\n\nexport function approvalBadgeClass(required: boolean): string {\n return required\n ? \"border-hair bg-muted text-foreground\"\n : \"border-transparent bg-transparent text-dim\";\n}\n\nexport function sourceBadgeClass(source: \"static\" | \"dynamic\"): string {\n return source === \"dynamic\"\n ? \"border-hair bg-muted text-foreground\"\n : \"border-hair bg-muted text-muted-foreground\";\n}\n\nexport function originBadgeClass(tool: StudioAgentToolMetadata): string {\n return tool.mcpServerName === undefined\n ? sourceBadgeClass(tool.source)\n : \"border-hair bg-muted text-foreground\";\n}\n\nexport function toolOriginLabel(tool: StudioAgentToolMetadata): string {\n return tool.mcpServerName === undefined ? tool.source : `MCP / ${tool.mcpServerName}`;\n}\n\nexport function 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\nexport function 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\nexport function formatJson(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nexport function parseStudioToolRunResponse(value: unknown): StudioToolRunResponse | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n if (typeof value.agentId !== \"string\" || value.agentId.length === 0) {\n return undefined;\n }\n if (typeof value.toolName !== \"string\" || value.toolName.length === 0) {\n return undefined;\n }\n if (value.status !== \"success\" && value.status !== \"error\") {\n return undefined;\n }\n if (typeof value.durationMs !== \"number\" || !Number.isFinite(value.durationMs)) {\n return undefined;\n }\n if (typeof value.startedAt !== \"string\" || typeof value.endedAt !== \"string\") {\n return undefined;\n }\n if (!Array.isArray(value.events)) {\n return undefined;\n }\n return value as StudioToolRunResponse;\n}\n\nfunction displayToolRunValue(value: unknown): unknown {\n if (typeof value !== \"string\") {\n return value;\n }\n const parsed = parseToolDisplayValue(value);\n return parsed.kind === \"json\" ? parsed.value : value;\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"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e,r as t,s as n}from"./utils-DzstcfqT.js";import{t as r}from"./button-
|
|
2
|
-
//# sourceMappingURL=tools-page-
|
|
1
|
+
import{i as e,r as t,s as n}from"./utils-DzstcfqT.js";import{t as r}from"./button-B_AoswCu.js";import{a as i,i as a,n as o,r as s,t as c}from"./select-BdCBnmXx.js";import{a as l,i as u,n as d,r as f,t as p}from"./studio-DzEdCFsX.js";import{t as m}from"./badge-C3fkxijh.js";import{a as h,c as g,d as _,i as v,l as y,n as b,o as x,r as S,s as C}from"./tool-runner-Cwfc3yY8.js";var w=n(e(),1),T=t();function E(e){let t=e.agents.find(t=>t.id===e.selectedAgentId)??e.agents[0],n=(0,w.useMemo)(()=>e.summary?.tools??[],[e.summary]),[r,m]=(0,w.useState)(``),[g,_]=(0,w.useState)(`{}`),[v,y]=(0,w.useState)(`idle`),[b,x]=(0,w.useState)(),[E,O]=(0,w.useState)(``),k=(0,w.useMemo)(()=>n.find(e=>e.name===r)??n[0],[r,n]),A=t===void 0||k===void 0?``:`${t.id}:${k.name}`,M=(0,w.useRef)(A),N=(0,w.useRef)(0),P=j(n);(0,w.useEffect)(()=>{if(n.length===0){m(``);return}n.some(e=>e.name===r)||m(n[0]?.name??``)},[r,n]),(0,w.useEffect)(()=>{M.current!==A&&(M.current=A,N.current+=1,y(`idle`),O(``),x(void 0))},[A]);async function F(){if(t===void 0||k===void 0)return;let e;try{e=JSON.parse(g)}catch(e){O(e instanceof Error?e.message:String(e)),x(void 0);return}y(`running`),O(``),x(void 0);let n=A,r=N.current+1;N.current=r;let i=()=>N.current===r&&M.current===n;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();if(!i())return;let a=C(r);if(a===void 0){O(`Unexpected Studio tool run response: ${h(r)}`);return}x(a),(!n.ok||a.status===`error`)&&O(h(a.error??a))}catch(e){i()&&O(e instanceof Error?e.message:String(e))}finally{i()&&y(`idle`)}}return(0,T.jsxs)(l,{className:`grid-rows-[auto_minmax(0,1fr)]`,"aria-label":`Tools`,children:[(0,T.jsx)(u,{title:`Tools`,description:`Tool definitions registered on Studio agents, including approval policy and input schema.`,action:(0,T.jsxs)(`div`,{className:`flex min-w-0 flex-wrap justify-end gap-2 max-sm:justify-start`,children:[(0,T.jsx)(d,{label:`tools`,value:P.total}),(0,T.jsx)(d,{label:`mcp`,value:P.mcp}),(0,T.jsx)(d,{label:`static`,value:P.static}),(0,T.jsx)(d,{label:`dynamic`,value:P.dynamic}),(0,T.jsx)(d,{label:`approvals`,value:P.approvals}),e.agents.length>1?(0,T.jsxs)(c,{value:t?.id??``,onValueChange:e.onSelectAgent,children:[(0,T.jsx)(a,{className:`h-8 min-h-8 w-64 rounded-md border-border text-xs max-sm:w-full`,children:(0,T.jsx)(i,{placeholder:`Agent`})}),(0,T.jsx)(o,{align:`end`,children:e.agents.map(e=>(0,T.jsx)(s,{value:e.id,children:e.name??e.id},e.id))})]}):null]})}),(0,T.jsx)(f,{className:`overflow-auto`,children:e.enabled?e.loading?(0,T.jsx)(p,{title:`Loading tools`,text:`Reading registered tool metadata.`}):n.length===0?(0,T.jsx)(p,{title:`No tools`,text:`The selected agent has no registered tools.`}):(0,T.jsxs)(`div`,{className:`grid w-full gap-5`,children:[(0,T.jsx)(D,{selectedToolName:k?.name??``,tools:n,onSelectTool:m}),(0,T.jsx)(S,{argsText:g,runError:E,runResponse:b,runState:v,selectedTool:k,onArgsTextChange:_,onRun:()=>void F()})]}):(0,T.jsx)(p,{title:`Tools unavailable`,text:`No registered Studio agent exposes static or dynamic tools.`})})]})}function D(e){return(0,T.jsx)(`div`,{className:`min-w-[1040px]`,children:(0,T.jsxs)(`table`,{className:`w-full border-separate border-spacing-0 text-left`,children:[(0,T.jsx)(`thead`,{className:`sticky top-0 z-10 bg-header backdrop-blur`,children:(0,T.jsxs)(`tr`,{children:[(0,T.jsx)(k,{children:`Tool`}),(0,T.jsx)(k,{children:`Origin`}),(0,T.jsx)(k,{children:`Schema`}),(0,T.jsx)(k,{children:`Approval`}),(0,T.jsx)(k,{children:`Run`})]})}),(0,T.jsx)(`tbody`,{children:e.tools.map(t=>(0,T.jsx)(O,{active:e.selectedToolName===t.name,tool:t,onSelectTool:e.onSelectTool},`${t.source}:${t.name}`))})]})})}function O(e){let t=g(e.tool.parameters);return(0,T.jsxs)(`tr`,{children:[(0,T.jsx)(A,{children:(0,T.jsxs)(`div`,{className:`grid min-w-0 gap-1.5`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,T.jsx)(`span`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.tool.name}),e.active?(0,T.jsx)(m,{className:M,children:`selected`}):null]}),(0,T.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium text-muted-foreground`,children:e.tool.agentId}),(0,T.jsx)(`p`,{className:`m-0 max-w-[64ch] truncate text-sm leading-6 text-muted-foreground`,children:e.tool.description})]})}),(0,T.jsx)(A,{children:(0,T.jsx)(m,{className:x(e.tool),children:_(e.tool)})}),(0,T.jsx)(A,{children:(0,T.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,T.jsx)(b,{children:y(e.tool.parameters)}),(0,T.jsxs)(b,{children:[t,` `,t===1?`field`:`fields`]})]})}),(0,T.jsx)(A,{children:(0,T.jsxs)(`div`,{className:`grid min-w-0 gap-1.5`,children:[(0,T.jsx)(m,{className:v(e.tool.approval.required),children:e.tool.approval.required?`required`:`none`}),e.tool.approval.reason===void 0?null:(0,T.jsx)(`span`,{className:`max-w-[280px] truncate text-xs leading-5 text-muted-foreground`,title:e.tool.approval.reason,children:e.tool.approval.reason})]})}),(0,T.jsx)(A,{children:(0,T.jsx)(r,{className:`h-8 min-h-8 rounded-md px-3 text-xs`,type:`button`,variant:e.active?`secondary`:`ghost`,onClick:()=>e.onSelectTool(e.tool.name),children:e.active?`Selected`:`Use`})})]})}function k(e){return(0,T.jsx)(`th`,{className:`border-b border-hair py-2.5 pr-5 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground first:pl-0`,children:e.children})}function A(e){return(0,T.jsx)(`td`,{className:`border-b border-hair py-3.5 pr-5 align-top first:pl-0`,children:e.children})}function j(e){return e.reduce((e,t)=>(e.total+=1,t.source===`dynamic`?e.dynamic+=1:e.static+=1,t.mcpServerName!==void 0&&(e.mcp+=1),t.approval.required&&(e.approvals+=1),e),{approvals:0,dynamic:0,mcp:0,static:0,total:0})}var M=`border-hair bg-row-selected text-foreground`;export{E as ToolsPage};
|
|
2
|
+
//# sourceMappingURL=tools-page-BSgFqVi2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools-page-BSgFqVi2.js","names":[],"sources":["../../../src/ui/app/modules/tools/tools-page.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useMemo, useRef, 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 {\n StudioEmptyState,\n StudioHeaderMetric,\n StudioPageContent,\n StudioPageHeader,\n StudioPageShell,\n} from \"../../components/ui/studio\";\nimport {\n approvalBadgeClass,\n formatJson,\n originBadgeClass,\n parseStudioToolRunResponse,\n schemaPropertyCount,\n schemaType,\n ToolMetaPill,\n ToolRunner,\n toolOriginLabel,\n} from \"./tool-runner\";\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 = useMemo(() => props.summary?.tools ?? [], [props.summary]);\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 const selectedToolRunKey =\n selectedAgent === undefined || selectedTool === undefined\n ? \"\"\n : `${selectedAgent.id}:${selectedTool.name}`;\n const selectedToolRunKeyRef = useRef(selectedToolRunKey);\n const runRequestIdRef = useRef(0);\n const toolTotals = summarizeTools(tools);\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 useEffect(() => {\n if (selectedToolRunKeyRef.current === selectedToolRunKey) {\n return;\n }\n selectedToolRunKeyRef.current = selectedToolRunKey;\n runRequestIdRef.current += 1;\n setRunState(\"idle\");\n setRunError(\"\");\n setRunResponse(undefined);\n }, [selectedToolRunKey]);\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 const runToolKey = selectedToolRunKey;\n const requestId = runRequestIdRef.current + 1;\n runRequestIdRef.current = requestId;\n const isCurrentRun = () =>\n runRequestIdRef.current === requestId && selectedToolRunKeyRef.current === runToolKey;\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 rawBody = await response.json();\n if (!isCurrentRun()) {\n return;\n }\n const body = parseStudioToolRunResponse(rawBody);\n if (body === undefined) {\n setRunError(`Unexpected Studio tool run response: ${formatJson(rawBody)}`);\n return;\n }\n setRunResponse(body);\n if (!response.ok || body.status === \"error\") {\n setRunError(formatJson(body.error ?? body));\n }\n } catch (error) {\n if (isCurrentRun()) {\n setRunError(error instanceof Error ? error.message : String(error));\n }\n } finally {\n if (isCurrentRun()) {\n setRunState(\"idle\");\n }\n }\n }\n\n return (\n <StudioPageShell className=\"grid-rows-[auto_minmax(0,1fr)]\" aria-label=\"Tools\">\n <StudioPageHeader\n title=\"Tools\"\n description=\"Tool definitions registered on Studio agents, including approval policy and input schema.\"\n action={\n <div className=\"flex min-w-0 flex-wrap justify-end gap-2 max-sm:justify-start\">\n <StudioHeaderMetric label=\"tools\" value={toolTotals.total} />\n <StudioHeaderMetric label=\"mcp\" value={toolTotals.mcp} />\n <StudioHeaderMetric label=\"static\" value={toolTotals.static} />\n <StudioHeaderMetric label=\"dynamic\" value={toolTotals.dynamic} />\n <StudioHeaderMetric label=\"approvals\" value={toolTotals.approvals} />\n {props.agents.length > 1 ? (\n <Select value={selectedAgent?.id ?? \"\"} onValueChange={props.onSelectAgent}>\n <SelectTrigger className=\"h-8 min-h-8 w-64 rounded-md border-border text-xs max-sm: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 }\n />\n\n <StudioPageContent className=\"overflow-auto\">\n {!props.enabled ? (\n <StudioEmptyState\n title=\"Tools unavailable\"\n text=\"No registered Studio agent exposes static or dynamic tools.\"\n />\n ) : props.loading ? (\n <StudioEmptyState title=\"Loading tools\" text=\"Reading registered tool metadata.\" />\n ) : tools.length === 0 ? (\n <StudioEmptyState title=\"No tools\" text=\"The selected agent has no registered tools.\" />\n ) : (\n <div className=\"grid w-full gap-5\">\n <ToolRegistryTable\n selectedToolName={selectedTool?.name ?? \"\"}\n tools={tools}\n onSelectTool={setSelectedToolName}\n />\n <ToolRunner\n argsText={argsText}\n runError={runError}\n runResponse={runResponse}\n runState={runState}\n selectedTool={selectedTool}\n onArgsTextChange={setArgsText}\n onRun={() => void runSelectedTool()}\n />\n </div>\n )}\n </StudioPageContent>\n </StudioPageShell>\n );\n}\n\nfunction ToolRegistryTable(props: {\n tools: StudioAgentToolMetadata[];\n selectedToolName: string;\n onSelectTool: (toolName: string) => void;\n}) {\n return (\n <div className=\"min-w-[1040px]\">\n <table className=\"w-full border-separate border-spacing-0 text-left\">\n <thead className=\"sticky top-0 z-10 bg-header backdrop-blur\">\n <tr>\n <ToolTableHead>Tool</ToolTableHead>\n <ToolTableHead>Origin</ToolTableHead>\n <ToolTableHead>Schema</ToolTableHead>\n <ToolTableHead>Approval</ToolTableHead>\n <ToolTableHead>Run</ToolTableHead>\n </tr>\n </thead>\n <tbody>\n {props.tools.map((tool) => (\n <ToolRegistryRow\n active={props.selectedToolName === tool.name}\n key={`${tool.source}:${tool.name}`}\n tool={tool}\n onSelectTool={props.onSelectTool}\n />\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction ToolRegistryRow(props: {\n tool: StudioAgentToolMetadata;\n active: boolean;\n onSelectTool: (toolName: string) => void;\n}) {\n const propertyCount = schemaPropertyCount(props.tool.parameters);\n return (\n <tr>\n <ToolTableCell>\n <div className=\"grid min-w-0 gap-1.5\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"min-w-0 truncate text-sm font-semibold text-foreground\">\n {props.tool.name}\n </span>\n {props.active ? <Badge className={selectedBadge}>selected</Badge> : null}\n </div>\n <span className=\"min-w-0 truncate text-xs font-medium text-muted-foreground\">\n {props.tool.agentId}\n </span>\n <p className=\"m-0 max-w-[64ch] truncate text-sm leading-6 text-muted-foreground\">\n {props.tool.description}\n </p>\n </div>\n </ToolTableCell>\n <ToolTableCell>\n <Badge className={originBadgeClass(props.tool)}>{toolOriginLabel(props.tool)}</Badge>\n </ToolTableCell>\n <ToolTableCell>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <ToolMetaPill>{schemaType(props.tool.parameters)}</ToolMetaPill>\n <ToolMetaPill>\n {propertyCount} {propertyCount === 1 ? \"field\" : \"fields\"}\n </ToolMetaPill>\n </div>\n </ToolTableCell>\n <ToolTableCell>\n <div className=\"grid min-w-0 gap-1.5\">\n <Badge className={approvalBadgeClass(props.tool.approval.required)}>\n {props.tool.approval.required ? \"required\" : \"none\"}\n </Badge>\n {props.tool.approval.reason === undefined ? null : (\n <span\n className=\"max-w-[280px] truncate text-xs leading-5 text-muted-foreground\"\n title={props.tool.approval.reason}\n >\n {props.tool.approval.reason}\n </span>\n )}\n </div>\n </ToolTableCell>\n <ToolTableCell>\n <Button\n className=\"h-8 min-h-8 rounded-md px-3 text-xs\"\n type=\"button\"\n variant={props.active ? \"secondary\" : \"ghost\"}\n onClick={() => props.onSelectTool(props.tool.name)}\n >\n {props.active ? \"Selected\" : \"Use\"}\n </Button>\n </ToolTableCell>\n </tr>\n );\n}\n\nfunction ToolTableHead(props: { children: string }) {\n return (\n <th className=\"border-b border-hair py-2.5 pr-5 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground first:pl-0\">\n {props.children}\n </th>\n );\n}\n\nfunction ToolTableCell(props: { children: ReactNode }) {\n return (\n <td className=\"border-b border-hair py-3.5 pr-5 align-top first:pl-0\">{props.children}</td>\n );\n}\n\nfunction summarizeTools(tools: StudioAgentToolMetadata[]) {\n return tools.reduce(\n (totals, tool) => {\n totals.total += 1;\n if (tool.source === \"dynamic\") {\n totals.dynamic += 1;\n } else {\n totals.static += 1;\n }\n if (tool.mcpServerName !== undefined) {\n totals.mcp += 1;\n }\n if (tool.approval.required) {\n totals.approvals += 1;\n }\n return totals;\n },\n { approvals: 0, dynamic: 0, mcp: 0, static: 0, total: 0 },\n );\n}\n\nconst selectedBadge = \"border-hair bg-row-selected text-foreground\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{i as e,r as t,s as n,t as r}from"./utils-DzstcfqT.js";import{a as i,n as a,o,r as s,s as c,t as l}from"./dist-Dr6EWOhl.js";import{_ as u,c as d,d as f,f as p,o as m,p as h,r as g,t as _,v}from"./button-B_AoswCu.js";import{n as y,r as b,t as x}from"./Wrench.es-rRuP3Mrh.js";import{n as S,t as C}from"./Check.es-DgvuCllR.js";import{t as w}from"./Copy.es-DV7tb_eC.js";import{t as T}from"./MagnifyingGlass.es-yzEp9c89.js";import{n as E,t as D}from"./icon-DyadsXLr.js";import{n as O,t as ee}from"./dist-CUv0NHNl.js";import{t as k}from"./studio-DzEdCFsX.js";import{t as te}from"./badge-C3fkxijh.js";import{t as ne}from"./input-DuERdYTl.js";var A=n(e(),1),re=new Map([[`bold`,A.createElement(A.Fragment,null,A.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`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M112,56V200L40,128Z`,opacity:`0.2`}),A.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`,A.createElement(A.Fragment,null,A.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`,A.createElement(A.Fragment,null,A.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`,A.createElement(A.Fragment,null,A.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`,A.createElement(A.Fragment,null,A.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`}))]]),ie=new Map([[`bold`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H40a12,12,0,0,1,0-24H216A12,12,0,0,1,228,128ZM104.49,56.48,116,45V88a12,12,0,0,0,24,0V45l11.51,11.51a12,12,0,0,0,17-17l-32-32a12,12,0,0,0-17,0l-32,32a12,12,0,0,0,17,17Zm47,143L140,211V168a12,12,0,0,0-24,0v43l-11.51-11.52a12,12,0,0,0-17,17l32,32a12,12,0,0,0,17,0l32-32a12,12,0,0,0-17-17Z`}))],[`duotone`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M216,32V224a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V32A16,16,0,0,1,56,16H200A16,16,0,0,1,216,32Z`,opacity:`0.2`}),A.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM101.66,53.66,120,35.31V96a8,8,0,0,0,16,0V35.31l18.34,18.35a8,8,0,0,0,11.32-11.32l-32-32a8,8,0,0,0-11.32,0l-32,32a8,8,0,0,0,11.32,11.32Zm52.68,148.68L136,220.69V160a8,8,0,0,0-16,0v60.69l-18.34-18.35a8,8,0,0,0-11.32,11.32l32,32a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Z`}))],[`fill`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M88.61,51.06a8,8,0,0,1,1.73-8.72l32-32a8,8,0,0,1,11.32,0l32,32A8,8,0,0,1,160,56H136V96a8,8,0,0,1-16,0V56H96A8,8,0,0,1,88.61,51.06ZM216,120H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm-56,80H136V160a8,8,0,0,0-16,0v40H96a8,8,0,0,0-5.66,13.66l32,32a8,8,0,0,0,11.32,0l32-32A8,8,0,0,0,160,200Z`}))],[`light`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H40a6,6,0,0,1,0-12H216A6,6,0,0,1,222,128ZM100.24,52.24,122,30.49V96a6,6,0,0,0,12,0V30.49l21.76,21.75a6,6,0,0,0,8.48-8.48l-32-32a6,6,0,0,0-8.48,0l-32,32a6,6,0,0,0,8.48,8.48Zm55.52,151.52L134,225.51V160a6,6,0,0,0-12,0v65.51l-21.76-21.75a6,6,0,0,0-8.48,8.48l32,32a6,6,0,0,0,8.48,0l32-32a6,6,0,0,0-8.48-8.48Z`}))],[`regular`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM101.66,53.66,120,35.31V96a8,8,0,0,0,16,0V35.31l18.34,18.35a8,8,0,0,0,11.32-11.32l-32-32a8,8,0,0,0-11.32,0l-32,32a8,8,0,0,0,11.32,11.32Zm52.68,148.68L136,220.69V160a8,8,0,0,0-16,0v60.69l-18.34-18.35a8,8,0,0,0-11.32,11.32l32,32a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Z`}))],[`thin`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H40a4,4,0,0,1,0-8H216A4,4,0,0,1,220,128ZM98.83,50.83,124,25.66V96a4,4,0,0,0,8,0V25.66l25.17,25.17a4,4,0,1,0,5.66-5.66l-32-32a4,4,0,0,0-5.66,0l-32,32a4,4,0,0,0,5.66,5.66Zm58.34,154.34L132,230.34V160a4,4,0,0,0-8,0v70.34L98.83,205.17a4,4,0,0,0-5.66,5.66l32,32a4,4,0,0,0,5.66,0l32-32a4,4,0,0,0-5.66-5.66Z`}))]]),ae=new Map([[`bold`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M54.8,119.49A35.06,35.06,0,0,1,49.05,128a35.06,35.06,0,0,1,5.75,8.51C60,147.24,60,159.83,60,172c0,25.94,1.84,32,20,32a12,12,0,0,1,0,24c-19.14,0-32.2-6.9-38.8-20.51C36,196.76,36,184.17,36,172c0-25.94-1.84-32-20-32a12,12,0,0,1,0-24c18.16,0,20-6.06,20-32,0-12.17,0-24.76,5.2-35.49C47.8,34.9,60.86,28,80,28a12,12,0,0,1,0,24c-18.16,0-20,6.06-20,32C60,96.17,60,108.76,54.8,119.49ZM240,116c-18.16,0-20-6.06-20-32,0-12.17,0-24.76-5.2-35.49C208.2,34.9,195.14,28,176,28a12,12,0,0,0,0,24c18.16,0,20,6.06,20,32,0,12.17,0,24.76,5.2,35.49A35.06,35.06,0,0,0,207,128a35.06,35.06,0,0,0-5.75,8.51C196,147.24,196,159.83,196,172c0,25.94-1.84,32-20,32a12,12,0,0,0,0,24c19.14,0,32.2-6.9,38.8-20.51C220,196.76,220,184.17,220,172c0-25.94,1.84-32,20-32a12,12,0,0,0,0-24Z`}))],[`duotone`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M240,128c-64,0,0,88-64,88H80c-64,0,0-88-64-88,64,0,0-88,64-88h96C240,40,176,128,240,128Z`,opacity:`0.2`}),A.createElement(`path`,{d:`M43.18,128a29.78,29.78,0,0,1,8,10.26c4.8,9.9,4.8,22,4.8,33.74,0,24.31,1,36,24,36a8,8,0,0,1,0,16c-17.48,0-29.32-6.14-35.2-18.26-4.8-9.9-4.8-22-4.8-33.74,0-24.31-1-36-24-36a8,8,0,0,1,0-16c23,0,24-11.69,24-36,0-11.72,0-23.84,4.8-33.74C50.68,38.14,62.52,32,80,32a8,8,0,0,1,0,16C57,48,56,59.69,56,84c0,11.72,0,23.84-4.8,33.74A29.78,29.78,0,0,1,43.18,128ZM240,120c-23,0-24-11.69-24-36,0-11.72,0-23.84-4.8-33.74C205.32,38.14,193.48,32,176,32a8,8,0,0,0,0,16c23,0,24,11.69,24,36,0,11.72,0,23.84,4.8,33.74a29.78,29.78,0,0,0,8,10.26,29.78,29.78,0,0,0-8,10.26c-4.8,9.9-4.8,22-4.8,33.74,0,24.31-1,36-24,36a8,8,0,0,0,0,16c17.48,0,29.32-6.14,35.2-18.26,4.8-9.9,4.8-22,4.8-33.74,0-24.31,1-36,24-36a8,8,0,0,0,0-16Z`}))],[`fill`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM88,155.84c.29,14.26.41,20.16,16,20.16a8,8,0,0,1,0,16c-31.27,0-31.72-22.43-32-35.84C71.71,141.9,71.59,136,56,136a8,8,0,0,1,0-16c15.59,0,15.71-5.9,16-20.16C72.28,86.43,72.73,64,104,64a8,8,0,0,1,0,16c-15.59,0-15.71,5.9-16,20.16-.17,8.31-.41,20.09-8,27.84C87.59,135.75,87.83,147.53,88,155.84ZM200,136c-15.59,0-15.71,5.9-16,20.16-.28,13.41-.73,35.84-32,35.84a8,8,0,0,1,0-16c15.59,0,15.71-5.9,16-20.16.17-8.31.41-20.09,8-27.84-7.6-7.75-7.84-19.53-8-27.84C167.71,85.9,167.59,80,152,80a8,8,0,0,1,0-16c31.27,0,31.72,22.43,32,35.84.29,14.26.41,20.16,16,20.16a8,8,0,0,1,0,16Z`}))],[`light`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M39.91,128a27.68,27.68,0,0,1,9.49,11.13C54,148.62,54,160.51,54,172c0,24.27,1.21,38,26,38a6,6,0,0,1,0,12c-16.88,0-27.81-5.6-33.4-17.13C42,195.38,42,183.49,42,172c0-24.27-1.21-38-26-38a6,6,0,0,1,0-12c24.79,0,26-13.73,26-38,0-11.49,0-23.38,4.6-32.87C52.19,39.6,63.12,34,80,34a6,6,0,0,1,0,12C55.21,46,54,59.73,54,84c0,11.49,0,23.38-4.6,32.87A27.68,27.68,0,0,1,39.91,128ZM240,122c-24.79,0-26-13.73-26-38,0-11.49,0-23.38-4.6-32.87C203.81,39.6,192.88,34,176,34a6,6,0,0,0,0,12c24.79,0,26,13.73,26,38,0,11.49,0,23.38,4.6,32.87A27.68,27.68,0,0,0,216.09,128a27.68,27.68,0,0,0-9.49,11.13C202,148.62,202,160.51,202,172c0,24.27-1.21,38-26,38a6,6,0,0,0,0,12c16.88,0,27.81-5.6,33.4-17.13,4.6-9.49,4.6-21.38,4.6-32.87,0-24.27,1.21-38,26-38a6,6,0,0,0,0-12Z`}))],[`regular`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M43.18,128a29.78,29.78,0,0,1,8,10.26c4.8,9.9,4.8,22,4.8,33.74,0,24.31,1,36,24,36a8,8,0,0,1,0,16c-17.48,0-29.32-6.14-35.2-18.26-4.8-9.9-4.8-22-4.8-33.74,0-24.31-1-36-24-36a8,8,0,0,1,0-16c23,0,24-11.69,24-36,0-11.72,0-23.84,4.8-33.74C50.68,38.14,62.52,32,80,32a8,8,0,0,1,0,16C57,48,56,59.69,56,84c0,11.72,0,23.84-4.8,33.74A29.78,29.78,0,0,1,43.18,128ZM240,120c-23,0-24-11.69-24-36,0-11.72,0-23.84-4.8-33.74C205.32,38.14,193.48,32,176,32a8,8,0,0,0,0,16c23,0,24,11.69,24,36,0,11.72,0,23.84,4.8,33.74a29.78,29.78,0,0,0,8,10.26,29.78,29.78,0,0,0-8,10.26c-4.8,9.9-4.8,22-4.8,33.74,0,24.31-1,36-24,36a8,8,0,0,0,0,16c17.48,0,29.32-6.14,35.2-18.26,4.8-9.9,4.8-22,4.8-33.74,0-24.31,1-36,24-36a8,8,0,0,0,0-16Z`}))],[`thin`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M35.89,128C52,136.23,52,155.64,52,172c0,24.8,1.35,40,28,40a4,4,0,0,1,0,8c-36,0-36-26.61-36-48,0-24.8-1.35-40-28-40a4,4,0,0,1,0-8c26.65,0,28-15.2,28-40,0-21.39,0-48,36-48a4,4,0,0,1,0,8C53.35,44,52,59.2,52,84,52,100.36,52,119.77,35.89,128ZM240,124c-26.65,0-28-15.2-28-40,0-21.39,0-48-36-48a4,4,0,0,0,0,8c26.65,0,28,15.2,28,40,0,16.36,0,35.77,16.11,44C204,136.23,204,155.64,204,172c0,24.8-1.35,40-28,40a4,4,0,0,0,0,8c36,0,36-26.61,36-48,0-24.8,1.35-40,28-40a4,4,0,0,0,0-8Z`}))]]),oe=new Map([[`bold`,A.createElement(A.Fragment,null,A.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`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M176,128,96,208V48Z`,opacity:`0.2`}),A.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`,A.createElement(A.Fragment,null,A.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`,A.createElement(A.Fragment,null,A.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`,A.createElement(A.Fragment,null,A.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`,A.createElement(A.Fragment,null,A.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`}))]]),se=new Map([[`bold`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm68-84a12,12,0,0,1-12,12H128a12,12,0,0,1-12-12V72a12,12,0,0,1,24,0v44h44A12,12,0,0,1,196,128Z`}))],[`duotone`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),A.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z`}))],[`fill`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z`}))],[`light`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm62-90a6,6,0,0,1-6,6H128a6,6,0,0,1-6-6V72a6,6,0,0,1,12,0v50h50A6,6,0,0,1,190,128Z`}))],[`regular`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z`}))],[`thin`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm60-92a4,4,0,0,1-4,4H128a4,4,0,0,1-4-4V72a4,4,0,0,1,8,0v52h52A4,4,0,0,1,188,128Z`}))]]),ce=new Map([[`bold`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,96a32,32,0,1,0,32,32A32,32,0,0,0,128,96Zm0,40a8,8,0,1,1,8-8A8,8,0,0,1,128,136Z`}))],[`duotone`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M152,128a24,24,0,1,1-24-24A24,24,0,0,1,152,128Z`,opacity:`0.2`}),A.createElement(`path`,{d:`M128,96a32,32,0,1,0,32,32A32,32,0,0,0,128,96Zm0,48a16,16,0,1,1,16-16A16,16,0,0,1,128,144Z`}))],[`fill`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M156,128a28,28,0,1,1-28-28A28,28,0,0,1,156,128Z`}))],[`light`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,98a30,30,0,1,0,30,30A30,30,0,0,0,128,98Zm0,48a18,18,0,1,1,18-18A18,18,0,0,1,128,146Z`}))],[`regular`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,96a32,32,0,1,0,32,32A32,32,0,0,0,128,96Zm0,48a16,16,0,1,1,16-16A16,16,0,0,1,128,144Z`}))],[`thin`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,100a28,28,0,1,0,28,28A28,28,0,0,0,128,100Zm0,48a20,20,0,1,1,20-20A20,20,0,0,1,128,148Z`}))]]),le=new Map([[`bold`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M199,125.31l-49.88-18.39L130.69,57a19.92,19.92,0,0,0-37.38,0L74.92,106.92,25,125.31a19.92,19.92,0,0,0,0,37.38l49.88,18.39L93.31,231a19.92,19.92,0,0,0,37.38,0l18.39-49.88L199,162.69a19.92,19.92,0,0,0,0-37.38Zm-63.38,35.16a12,12,0,0,0-7.11,7.11L112,212.28l-16.47-44.7a12,12,0,0,0-7.11-7.11L43.72,144l44.7-16.47a12,12,0,0,0,7.11-7.11L112,75.72l16.47,44.7a12,12,0,0,0,7.11,7.11L180.28,144ZM140,40a12,12,0,0,1,12-12h12V16a12,12,0,0,1,24,0V28h12a12,12,0,0,1,0,24H188V64a12,12,0,0,1-24,0V52H152A12,12,0,0,1,140,40ZM252,88a12,12,0,0,1-12,12h-4v4a12,12,0,0,1-24,0v-4h-4a12,12,0,0,1,0-24h4V72a12,12,0,0,1,24,0v4h4A12,12,0,0,1,252,88Z`}))],[`duotone`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M194.82,151.43l-55.09,20.3-20.3,55.09a7.92,7.92,0,0,1-14.86,0l-20.3-55.09-55.09-20.3a7.92,7.92,0,0,1,0-14.86l55.09-20.3,20.3-55.09a7.92,7.92,0,0,1,14.86,0l20.3,55.09,55.09,20.3A7.92,7.92,0,0,1,194.82,151.43Z`,opacity:`0.2`}),A.createElement(`path`,{d:`M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z`}))],[`fill`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M208,144a15.78,15.78,0,0,1-10.42,14.94L146,178l-19,51.62a15.92,15.92,0,0,1-29.88,0L78,178l-51.62-19a15.92,15.92,0,0,1,0-29.88L78,110l19-51.62a15.92,15.92,0,0,1,29.88,0L146,110l51.62,19A15.78,15.78,0,0,1,208,144ZM152,48h16V64a8,8,0,0,0,16,0V48h16a8,8,0,0,0,0-16H184V16a8,8,0,0,0-16,0V32H152a8,8,0,0,0,0,16Zm88,32h-8V72a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0V96h8a8,8,0,0,0,0-16Z`}))],[`light`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M196.89,130.94,144.4,111.6,125.06,59.11a13.92,13.92,0,0,0-26.12,0L79.6,111.6,27.11,130.94a13.92,13.92,0,0,0,0,26.12L79.6,176.4l19.34,52.49a13.92,13.92,0,0,0,26.12,0L144.4,176.4l52.49-19.34a13.92,13.92,0,0,0,0-26.12Zm-4.15,14.86-55.08,20.3a6,6,0,0,0-3.56,3.56l-20.3,55.08a1.92,1.92,0,0,1-3.6,0L89.9,169.66a6,6,0,0,0-3.56-3.56L31.26,145.8a1.92,1.92,0,0,1,0-3.6l55.08-20.3a6,6,0,0,0,3.56-3.56l20.3-55.08a1.92,1.92,0,0,1,3.6,0l20.3,55.08a6,6,0,0,0,3.56,3.56l55.08,20.3a1.92,1.92,0,0,1,0,3.6ZM146,40a6,6,0,0,1,6-6h18V16a6,6,0,0,1,12,0V34h18a6,6,0,0,1,0,12H182V64a6,6,0,0,1-12,0V46H152A6,6,0,0,1,146,40ZM246,88a6,6,0,0,1-6,6H230v10a6,6,0,0,1-12,0V94H208a6,6,0,0,1,0-12h10V72a6,6,0,0,1,12,0V82h10A6,6,0,0,1,246,88Z`}))],[`regular`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z`}))],[`thin`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M196.2,132.81l-53.36-19.65L123.19,59.8a11.93,11.93,0,0,0-22.38,0L81.16,113.16,27.8,132.81a11.93,11.93,0,0,0,0,22.38l53.36,19.65,19.65,53.36a11.93,11.93,0,0,0,22.38,0l19.65-53.36,53.36-19.65a11.93,11.93,0,0,0,0-22.38Zm-2.77,14.87L138.35,168a4,4,0,0,0-2.37,2.37l-20.3,55.08a3.92,3.92,0,0,1-7.36,0L88,170.35A4,4,0,0,0,85.65,168l-55.08-20.3a3.92,3.92,0,0,1,0-7.36L85.65,120A4,4,0,0,0,88,117.65l20.3-55.08a3.92,3.92,0,0,1,7.36,0L136,117.65a4,4,0,0,0,2.37,2.37l55.08,20.3a3.92,3.92,0,0,1,0,7.36ZM148,40a4,4,0,0,1,4-4h20V16a4,4,0,0,1,8,0V36h20a4,4,0,0,1,0,8H180V64a4,4,0,0,1-8,0V44H152A4,4,0,0,1,148,40Zm96,48a4,4,0,0,1-4,4H228v12a4,4,0,0,1-8,0V92H208a4,4,0,0,1,0-8h12V72a4,4,0,0,1,8,0V84h12A4,4,0,0,1,244,88Z`}))]]),ue=new Map([[`bold`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,44a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,44Zm0,168a72,72,0,1,1,72-72A72.08,72.08,0,0,1,128,212ZM164.49,99.51a12,12,0,0,1,0,17l-28,28a12,12,0,0,1-17-17l28-28A12,12,0,0,1,164.49,99.51ZM92,16A12,12,0,0,1,104,4h48a12,12,0,0,1,0,24H104A12,12,0,0,1,92,16Z`}))],[`duotone`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M216,136a88,88,0,1,1-88-88A88,88,0,0,1,216,136Z`,opacity:`0.2`}),A.createElement(`path`,{d:`M128,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm0,176a80,80,0,1,1,80-80A80.09,80.09,0,0,1,128,216ZM173.66,90.34a8,8,0,0,1,0,11.32l-40,40a8,8,0,0,1-11.32-11.32l40-40A8,8,0,0,1,173.66,90.34ZM96,16a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,16Z`}))],[`fill`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm45.66,61.66-40,40a8,8,0,0,1-11.32-11.32l40-40a8,8,0,0,1,11.32,11.32ZM96,16a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,16Z`}))],[`light`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,42a94,94,0,1,0,94,94A94.11,94.11,0,0,0,128,42Zm0,176a82,82,0,1,1,82-82A82.1,82.1,0,0,1,128,218ZM172.24,91.76a6,6,0,0,1,0,8.48l-40,40a6,6,0,1,1-8.48-8.48l40-40A6,6,0,0,1,172.24,91.76ZM98,16a6,6,0,0,1,6-6h48a6,6,0,0,1,0,12H104A6,6,0,0,1,98,16Z`}))],[`regular`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm0,176a80,80,0,1,1,80-80A80.09,80.09,0,0,1,128,216ZM173.66,90.34a8,8,0,0,1,0,11.32l-40,40a8,8,0,0,1-11.32-11.32l40-40A8,8,0,0,1,173.66,90.34ZM96,16a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,16Z`}))],[`thin`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M128,44a92,92,0,1,0,92,92A92.1,92.1,0,0,0,128,44Zm0,176a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,220ZM170.83,93.17a4,4,0,0,1,0,5.66l-40,40a4,4,0,1,1-5.66-5.66l40-40A4,4,0,0,1,170.83,93.17ZM100,16a4,4,0,0,1,4-4h48a4,4,0,0,1,0,8H104A4,4,0,0,1,100,16Z`}))]]),de=new Map([[`bold`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M160,116h48a20,20,0,0,0,20-20V48a20,20,0,0,0-20-20H160a20,20,0,0,0-20,20V60H128a28,28,0,0,0-28,28v28H76v-4A20,20,0,0,0,56,92H24A20,20,0,0,0,4,112v32a20,20,0,0,0,20,20H56a20,20,0,0,0,20-20v-4h24v28a28,28,0,0,0,28,28h12v12a20,20,0,0,0,20,20h48a20,20,0,0,0,20-20V160a20,20,0,0,0-20-20H160a20,20,0,0,0-20,20v12H128a4,4,0,0,1-4-4V88a4,4,0,0,1,4-4h12V96A20,20,0,0,0,160,116ZM52,140H28V116H52Zm112,24h40v40H164Zm0-112h40V92H164Z`}))],[`duotone`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M64,112v32a8,8,0,0,1-8,8H24a8,8,0,0,1-8-8V112a8,8,0,0,1,8-8H56A8,8,0,0,1,64,112ZM208,40H160a8,8,0,0,0-8,8V96a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V48A8,8,0,0,0,208,40Zm0,112H160a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152Z`,opacity:`0.2`}),A.createElement(`path`,{d:`M160,112h48a16,16,0,0,0,16-16V48a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16V64H128a24,24,0,0,0-24,24v32H72v-8A16,16,0,0,0,56,96H24A16,16,0,0,0,8,112v32a16,16,0,0,0,16,16H56a16,16,0,0,0,16-16v-8h32v32a24,24,0,0,0,24,24h16v16a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V160a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16v16H128a8,8,0,0,1-8-8V88a8,8,0,0,1,8-8h16V96A16,16,0,0,0,160,112ZM56,144H24V112H56v32Zm104,16h48v48H160Zm0-112h48V96H160Z`}))],[`fill`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M144,96V80H128a8,8,0,0,0-8,8v80a8,8,0,0,0,8,8h16V160a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16v48a16,16,0,0,1-16,16H160a16,16,0,0,1-16-16V192H128a24,24,0,0,1-24-24V136H72v8a16,16,0,0,1-16,16H24A16,16,0,0,1,8,144V112A16,16,0,0,1,24,96H56a16,16,0,0,1,16,16v8h32V88a24,24,0,0,1,24-24h16V48a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V96a16,16,0,0,1-16,16H160A16,16,0,0,1,144,96Z`}))],[`light`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M160,110h48a14,14,0,0,0,14-14V48a14,14,0,0,0-14-14H160a14,14,0,0,0-14,14V66H128a22,22,0,0,0-22,22v34H70V112A14,14,0,0,0,56,98H24a14,14,0,0,0-14,14v32a14,14,0,0,0,14,14H56a14,14,0,0,0,14-14V134h36v34a22,22,0,0,0,22,22h18v18a14,14,0,0,0,14,14h48a14,14,0,0,0,14-14V160a14,14,0,0,0-14-14H160a14,14,0,0,0-14,14v18H128a10,10,0,0,1-10-10V88a10,10,0,0,1,10-10h18V96A14,14,0,0,0,160,110ZM58,144a2,2,0,0,1-2,2H24a2,2,0,0,1-2-2V112a2,2,0,0,1,2-2H56a2,2,0,0,1,2,2Zm100,16a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H160a2,2,0,0,1-2-2Zm0-112a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2V96a2,2,0,0,1-2,2H160a2,2,0,0,1-2-2Z`}))],[`regular`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M160,112h48a16,16,0,0,0,16-16V48a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16V64H128a24,24,0,0,0-24,24v32H72v-8A16,16,0,0,0,56,96H24A16,16,0,0,0,8,112v32a16,16,0,0,0,16,16H56a16,16,0,0,0,16-16v-8h32v32a24,24,0,0,0,24,24h16v16a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V160a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16v16H128a8,8,0,0,1-8-8V88a8,8,0,0,1,8-8h16V96A16,16,0,0,0,160,112ZM56,144H24V112H56v32Zm104,16h48v48H160Zm0-112h48V96H160Z`}))],[`thin`,A.createElement(A.Fragment,null,A.createElement(`path`,{d:`M160,108h48a12,12,0,0,0,12-12V48a12,12,0,0,0-12-12H160a12,12,0,0,0-12,12V68H128a20,20,0,0,0-20,20v36H68V112a12,12,0,0,0-12-12H24a12,12,0,0,0-12,12v32a12,12,0,0,0,12,12H56a12,12,0,0,0,12-12V132h40v36a20,20,0,0,0,20,20h20v20a12,12,0,0,0,12,12h48a12,12,0,0,0,12-12V160a12,12,0,0,0-12-12H160a12,12,0,0,0-12,12v20H128a12,12,0,0,1-12-12V88a12,12,0,0,1,12-12h20V96A12,12,0,0,0,160,108ZM60,144a4,4,0,0,1-4,4H24a4,4,0,0,1-4-4V112a4,4,0,0,1,4-4H56a4,4,0,0,1,4,4Zm96,16a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4v48a4,4,0,0,1-4,4H160a4,4,0,0,1-4-4Zm0-112a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V96a4,4,0,0,1-4,4H160a4,4,0,0,1-4-4Z`}))]]),fe=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:re}));fe.displayName=`ArrowLeftIcon`;var pe=fe,me=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:ie}));me.displayName=`ArrowsOutLineVerticalIcon`;var he=me,ge=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:ae}));ge.displayName=`BracketsCurlyIcon`;var _e=ge,ve=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:oe}));ve.displayName=`CaretRightIcon`;var j=ve,ye=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:se}));ye.displayName=`ClockIcon`;var be=ye,xe=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:ce}));xe.displayName=`DotOutlineIcon`;var Se=xe,Ce=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:le}));Ce.displayName=`SparkleIcon`;var we=Ce,Te=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:ue}));Te.displayName=`TimerIcon`;var Ee=Te,De=A.forwardRef((e,t)=>A.createElement(E,{ref:t,...e,weights:de}));De.displayName=`TreeStructureIcon`;var Oe=De,M=t();function ke(e){try{return JSON.stringify(e,null,2)??`undefined`}catch{return String(e)}}function Ae(e){return(0,M.jsx)(`div`,{className:`overflow-x-auto rounded-lg border bg-muted p-4 font-mono text-xs leading-5 text-foreground`,children:(0,M.jsx)(Ne,{depth:0,path:`$`,value:e.value})})}var je=16,Me=20;function Ne(e){return Re(e.value)?(0,M.jsx)(Pe,{arrayIndex:e.arrayIndex,depth:e.depth,path:e.path,propertyKey:e.propertyKey,trailingComma:e.trailingComma,value:e.value}):(0,M.jsxs)(`div`,{className:`min-w-max whitespace-pre`,style:{paddingLeft:`${Fe(e.depth)}px`},children:[(0,M.jsx)(Ie,{arrayIndex:e.arrayIndex,propertyKey:e.propertyKey}),(0,M.jsx)(Le,{value:e.value}),e.trailingComma?(0,M.jsx)(`span`,{className:`text-foreground`,children:`,`}):null]})}function Pe(e){let[t,n]=(0,A.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,M.jsxs)(`div`,{className:`min-w-max whitespace-pre`,style:{paddingLeft:`${Fe(e.depth)}px`},children:[(0,M.jsx)(Ie,{arrayIndex:e.arrayIndex,propertyKey:e.propertyKey}),(0,M.jsxs)(`span`,{className:`text-foreground`,children:[a,o,e.trailingComma?`,`:``]})]}):(0,M.jsxs)(`div`,{className:`grid min-w-max`,children:[(0,M.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-transparent hover:text-foreground`,onClick:()=>n(e=>!e),style:{paddingLeft:`${e.depth*je}px`},type:`button`,children:[(0,M.jsx)(`span`,{className:`grid h-4 w-4 place-items-center text-muted-foreground [&_svg]:h-3 [&_svg]:w-3`,children:t?(0,M.jsx)(D,{icon:S,"aria-hidden":`true`}):(0,M.jsx)(D,{icon:j,"aria-hidden":`true`})}),(0,M.jsxs)(`span`,{className:`whitespace-pre`,children:[(0,M.jsx)(Ie,{arrayIndex:e.arrayIndex,propertyKey:e.propertyKey}),t?(0,M.jsx)(`span`,{className:`text-foreground`,children:a}):(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:s}),!t&&e.trailingComma?(0,M.jsx)(`span`,{className:`text-foreground`,children:`,`}):null]})]}),t?(0,M.jsxs)(M.Fragment,{children:[i.map(([t,n],a)=>(0,M.jsx)(Ne,{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,M.jsxs)(`div`,{className:`min-w-max whitespace-pre text-foreground`,style:{paddingLeft:`${Fe(e.depth)}px`},children:[o,e.trailingComma?`,`:``]})]}):null]})}function Fe(e){return e*je+Me}function Ie(e){return e.propertyKey===void 0?e.arrayIndex===void 0?null:(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`span`,{className:`text-muted-foreground`,children:[`[`,e.arrayIndex,`]`]}),(0,M.jsx)(`span`,{className:`text-foreground`,children:` `})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`span`,{className:`code-keyword`,children:JSON.stringify(e.propertyKey)}),(0,M.jsx)(`span`,{className:`text-foreground`,children:`: `})]})}function Le(e){return typeof e.value==`string`?(0,M.jsx)(`span`,{className:`code-string`,children:JSON.stringify(e.value)}):typeof e.value==`number`?(0,M.jsx)(`span`,{className:`code-number`,children:String(e.value)}):typeof e.value==`boolean`?(0,M.jsx)(`span`,{className:`code-literal`,children:String(e.value)}):e.value===null?(0,M.jsx)(`span`,{className:`code-comment`,children:`null`}):e.value===void 0?(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`undefined`}):(0,M.jsx)(`span`,{className:`text-foreground`,children:ke(e.value)})}function Re(e){return Array.isArray(e)||v(e)}function ze(e){let t=/("(?:\\u[\da-fA-F]{4}|\\[^u]|[^\\"])*"(?=\s*:)|"(?:\\u[\da-fA-F]{4}|\\[^u]|[^\\"])*"|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\btrue\b|\bfalse\b|\bnull\b)/g,n=[],r=0;for(let i of e.matchAll(t)){let t=i[0],a=i.index??0;a>r&&n.push({text:e.slice(r,a),type:`plain`,start:r}),n.push({text:t,type:Be(t,e.slice(a+t.length)),start:a}),r=a+t.length}return r<e.length&&n.push({text:e.slice(r),type:`plain`,start:r}),n}function Be(e,t){return e.startsWith(`"`)?t.trimStart().startsWith(`:`)?`key`:`string`:e===`true`||e===`false`?`boolean`:e===`null`?`null`:`number`}function Ve(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 He(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 Ue(e,t,n){if(n===`agent`)return{title:`agent.run`,tone:`agent`,status:e.status,startedAt:p(e.startedAt),durationMs:e.durationMs,firstDeltaMs:P(e.observations),usage:h(e.usage),input:e.input,output:e.output,error:e.error,metadata:We(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`,status:Qe(i?.observations??[]),startedAt:p(i?.observations[0]?.startedAt??e.startedAt),durationMs:i?.durationMs,firstDeltaMs:P(i?.observations??[]),usage:it(i?.observations??[]),input:i?.observations[0]?.input,output:i?.observations.at(-1)?.output,metadata:Ge(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:et(r),tone:r.kind,status:r.status,startedAt:p(r.startedAt),durationMs:r.durationMs,firstDeltaMs:tt(r.metadata),usage:rt(r),input:r.input,output:r.output,error:r.error,metadata:Ke(r)}}return{title:e.name??`Agent`,tone:`trace`,status:e.status,startedAt:p(e.startedAt),durationMs:e.durationMs,firstDeltaMs:P(e.observations),usage:h(e.usage),input:e.input,output:e.output,error:e.error,metadata:We(e)}}function We(e){let t=v(e.metadata)?e.metadata:{},n=N({status:e.status,traceId:e.trace?.traceId??e.id,observationId:e.trace?.observationId,sessionId:e.sessionId,observationCount:e.observationCount,messageCount:$e(t.messages),startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs});return N({...t,status:e.status,traceId:e.trace?.traceId??e.id,observationId:e.trace?.observationId,sessionId:e.sessionId,observationCount:e.observationCount,messageCount:$e(t.messages),startedAt:e.startedAt,endedAt:e.endedAt,durationMs:e.durationMs,trace:v(t.trace)?t.trace:n})}function Ge(e,t){return N({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:P(t),status:Qe(t),startedAt:t[0]?.startedAt,endedAt:t.at(-1)?.endedAt})}function Ke(e){let t=N({...v(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 N({...t,trace:v(t.trace)?t.trace:N({status:e.status,kind:e.kind,turn:e.turn,parentObservationId:e.parentObservationId??null,startedAt:e.startedAt,endedAt:e.endedAt??null,durationMs:e.durationMs}),modelInfo:v(t.modelInfo)?t.modelInfo:qe(t),modelCall:v(t.modelCall)?t.modelCall:Je(t),response:v(t.response)?t.response:Ye(t),tools:v(t.tools)?t.tools:Xe(t),timing:v(t.timing)?t.timing:Ze(t)})}function qe(e){let t=N({provider:e.provider,modelId:e.modelId});return Object.keys(t).length===0?void 0:t}function Je(e){let t=N({messageCount:e.historyCount,documentCount:e.documentCount,toolCount:e.toolCount,toolNames:e.toolNames,temperature:e.temperature,maxTokens:e.maxTokens,toolChoice:e.toolChoice,hasOutputSchema:e.hasOutputSchema,providerOptionKeys:e.providerOptionKeys}),n=N({request:Object.keys(t).length===0?void 0:t,providerRequest:e.providerRequest});return Object.keys(n).length===0?void 0:n}function Ye(e){let t=N({messageId:e.messageId,usage:e.usage,providerResponse:e.providerResponse});return Object.keys(t).length===0?void 0:t}function Xe(e){let t=N({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 Ze(e){let t=N({firstDeltaMs:e.firstDeltaMs,durationMs:e.durationMs,startedAt:e.startedAt,endedAt:e.endedAt});return Object.keys(t).length===0?void 0:t}function Qe(e){return e.length===0?`empty`:e.some(e=>e.status===`error`)?`error`:e.some(e=>e.status===`cancelled`)?`cancelled`:e.some(e=>e.status===`running`)?`running`:`success`}function $e(e){return Array.isArray(e)?e.length:void 0}function N(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}function et(e){return e.kind===`agent`?e.name:e.kind===`tool`?`tool.${e.name}`:e.name}function P(e){for(let t of e){let e=tt(t.metadata);if(e!==void 0)return e}}function tt(e){if(!(!v(e)||typeof e.firstDeltaMs!=`number`))return e.firstDeltaMs}function nt(e){switch(e.tone){case`trace`:return(0,M.jsx)(D,{icon:Se,"aria-hidden":`true`});case`agent`:return(0,M.jsx)(D,{icon:y,"aria-hidden":`true`});case`turn`:return(0,M.jsx)(D,{icon:y,"aria-hidden":`true`});case`generation`:return(0,M.jsx)(D,{icon:we,"aria-hidden":`true`});case`tool`:return(0,M.jsx)(D,{icon:x,"aria-hidden":`true`});default:return(0,M.jsx)(D,{icon:Se,"aria-hidden":`true`})}}function F(e){switch(e){case`trace`:return`bg-foreground text-background`;case`agent`:return`bg-tone-agent text-tone-text`;case`turn`:return`bg-tone-agent text-tone-text`;case`generation`:return`bg-tone-generation text-tone-text`;case`tool`:return`bg-tone-tool text-tone-text`;default:return`bg-muted text-muted-foreground`}}function rt(e){return!v(e.output)||!v(e.output.usage)?``:at(e.output.usage)}function it(e){return e.map(rt).filter(e=>e.length>0).join(` + `)}function at(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})`}function ot({className:e,...t}){return(0,M.jsx)(`div`,{className:r(`flex flex-col gap-4 overflow-hidden rounded-none border border-border bg-card py-4 text-base text-card-foreground`,e),...t})}var st=Object.defineProperty,I=(e,t)=>st(e,`name`,{value:t,configurable:!0});function ct(e,t){return A.useReducer((e,n)=>t[e][n]??e,e)}I(ct,`useStateMachine`);var lt=`ScrollArea`,[ut,dt]=o(lt),[ft,L]=ut(lt),pt=A.forwardRef(I(function(e,t){let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[c,l]=A.useState(null),[u,d]=A.useState(null),[f,p]=A.useState(null),[m,h]=A.useState(null),[_,v]=A.useState(null),[y,b]=A.useState(0),[x,S]=A.useState(0),[C,w]=A.useState(!1),[T,E]=A.useState(!1),D=g(t,l),O=ee(i);return(0,M.jsx)(ft,{scope:n,type:r,dir:O,scrollHideDelay:a,scrollArea:c,viewport:u,onViewportChange:d,content:f,onContentChange:p,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:C,onScrollbarXEnabledChange:w,scrollbarY:_,onScrollbarYChange:v,scrollbarYEnabled:T,onScrollbarYEnabledChange:E,onCornerWidthChange:b,onCornerHeightChange:S,children:(0,M.jsx)(s.div,{dir:O,...o,ref:D,style:{position:`relative`,"--radix-scroll-area-corner-width":y+`px`,"--radix-scroll-area-corner-height":x+`px`,...e.style}})})},`ScrollArea`)),mt=`ScrollAreaViewport`,ht=A.forwardRef(I(function(e,t){let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,o=L(mt,n),c=A.useRef(null),l=g(t,c,o.onViewportChange);return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(gt,{nonce:i}),(0,M.jsx)(s.div,{"data-radix-scroll-area-viewport":``,...a,ref:l,style:{overflowX:o.scrollbarXEnabled?`scroll`:`hidden`,overflowY:o.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,M.jsx)(`div`,{ref:o.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})},`ScrollAreaViewport`)),gt=A.memo(I(function({nonce:e}){return(0,M.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})},`ScrollAreaViewportStyle`),(e,t)=>e.nonce===t.nonce),R=`ScrollAreaScrollbar`,_t=A.forwardRef(I(function(e,t){let{forceMount:n,...r}=e,i=L(R,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return A.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,M.jsx)(vt,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,M.jsx)(yt,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,M.jsx)(bt,{...r,ref:t,forceMount:n}):i.type===`always`?(0,M.jsx)(z,{...r,ref:t,"data-state":`visible`}):null},`ScrollAreaScrollbar`)),vt=A.forwardRef(I(function(e,t){let{forceMount:n,...r}=e,i=L(R,e.__scopeScrollArea),[a,o]=A.useState(!1);return A.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=I(()=>{window.clearTimeout(t),o(!0)},`handlePointerEnter`),r=I(()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)},`handlePointerLeave`);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,M.jsx)(l,{present:n||a,children:(0,M.jsx)(bt,{"data-state":a?`visible`:`hidden`,...r,ref:t})})},`ScrollAreaScrollbarHover`)),yt=A.forwardRef(I(function(e,t){let{forceMount:n,...r}=e,i=L(R,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=U(()=>u(`SCROLL_END`),100),[s,u]=ct(`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 A.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>u(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,u]),A.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=I(()=>{let r=e[t];n!==r&&(u(`SCROLL`),o()),n=r},`handleScroll`);return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,u,o]),(0,M.jsx)(l,{present:n||s!==`hidden`,children:(0,M.jsx)(z,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:c(e.onPointerEnter,()=>u(`POINTER_ENTER`)),onPointerLeave:c(e.onPointerLeave,()=>u(`POINTER_LEAVE`))})})},`ScrollAreaScrollbarScroll`)),bt=A.forwardRef(I(function(e,t){let n=L(R,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=A.useState(!1),s=e.orientation===`horizontal`,c=U(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return W(n.viewport,c),W(n.content,c),(0,M.jsx)(l,{present:r||a,children:(0,M.jsx)(z,{"data-state":a?`visible`:`hidden`,...i,ref:t})})},`ScrollAreaScrollbarAuto`)),z=A.forwardRef(I(function(e,t){let{orientation:n=`vertical`,...r}=e,i=L(R,e.__scopeScrollArea),a=A.useRef(null),o=A.useRef(0),[s,c]=A.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=Mt(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:I(e=>a.current=e,`onThumbChange`),onThumbPointerUp:I(()=>o.current=0,`onThumbPointerUp`),onThumbPointerDown:I(e=>o.current=e,`onThumbPointerDown`)};function d(e,t){return Nt(e,o.current,s,t)}return I(d,`getScrollPosition`),n===`horizontal`?(0,M.jsx)(xt,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=Pt(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,M.jsx)(St,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=Pt(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},`ScrollAreaScrollbarVisible`)),xt=A.forwardRef(I(function(e,t){let{sizes:n,onSizesChange:r,...i}=e,a=L(R,e.__scopeScrollArea),[o,s]=A.useState(),c=A.useRef(null),l=g(t,c,a.onScrollbarXChange);return A.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,M.jsx)(Tt,{"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":V(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),Ft(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:B(o.paddingLeft),paddingEnd:B(o.paddingRight)}})}})},`ScrollAreaScrollbarX`)),St=A.forwardRef(I(function(e,t){let{sizes:n,onSizesChange:r,...i}=e,a=L(R,e.__scopeScrollArea),[o,s]=A.useState(),c=A.useRef(null),l=g(t,c,a.onScrollbarYChange);return A.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,M.jsx)(Tt,{"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":V(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),Ft(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:B(o.paddingTop),paddingEnd:B(o.paddingBottom)}})}})},`ScrollAreaScrollbarY`)),[Ct,wt]=ut(R),Tt=A.forwardRef(I(function(e,t){let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:o,onThumbPointerUp:l,onThumbPointerDown:u,onThumbPositionChange:d,onDragScroll:f,onWheelScroll:p,onResize:m,...h}=e,_=L(R,n),[v,y]=A.useState(null),b=g(t,y),x=A.useRef(null),S=A.useRef(``),C=_.viewport,w=r.content-r.viewport,T=a(p),E=a(d),D=U(m,10);function O(e){if(x.current){let t=e.clientX-x.current.left,n=e.clientY-x.current.top;f({x:t,y:n})}}return I(O,`handleDragScroll`),A.useEffect(()=>{let e=I(e=>{let t=e.target;v?.contains(t)&&T(e,w)},`handleWheel`);return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[C,v,w,T]),A.useEffect(E,[r,E]),W(v,D),W(_.content,D),(0,M.jsx)(Ct,{scope:n,scrollbar:v,hasThumb:i,onThumbChange:a(o),onThumbPointerUp:a(l),onThumbPositionChange:E,onThumbPointerDown:a(u),children:(0,M.jsx)(s.div,{...h,ref:b,style:{position:`absolute`,...h.style},onPointerDown:c(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),x.current=v.getBoundingClientRect(),S.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,_.viewport&&(_.viewport.style.scrollBehavior=`auto`),O(e))}),onPointerMove:c(e.onPointerMove,O),onPointerUp:c(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=S.current,_.viewport&&(_.viewport.style.scrollBehavior=``),x.current=null})})})},`ScrollAreaScrollbarImpl`)),Et=`ScrollAreaThumb`,Dt=A.forwardRef(I(function(e,t){let{forceMount:n,...r}=e,i=wt(Et,e.__scopeScrollArea);return(0,M.jsx)(l,{present:n||i.hasThumb,children:(0,M.jsx)(Ot,{ref:t,...r})})},`ScrollAreaThumb`)),Ot=A.forwardRef(I(function(e,t){let{__scopeScrollArea:n,style:r,...i}=e,a=L(Et,n),o=wt(Et,n),{onThumbPositionChange:l}=o,u=g(t,o.onThumbChange),d=A.useRef(void 0),f=U(()=>{d.current&&=(d.current(),void 0)},100);return A.useEffect(()=>{let e=a.viewport;if(e){let t=I(()=>{if(f(),!d.current){let t=It(e,l);d.current=t,l()}},`handleScroll`);return l(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,f,l]),(0,M.jsx)(s.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:u,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)})},`ScrollAreaThumbImpl`)),kt=`ScrollAreaCorner`,At=A.forwardRef(I(function(e,t){let n=L(kt,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,M.jsx)(jt,{...e,ref:t}):null},`ScrollAreaCorner`)),jt=A.forwardRef(I(function(e,t){let{__scopeScrollArea:n,...r}=e,i=L(kt,n),[a,o]=A.useState(0),[c,l]=A.useState(0),u=!!(a&&c),{onCornerWidthChange:d,onCornerHeightChange:f}=i;return W(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),l(e)}),W(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),A.useEffect(()=>()=>{d(0),f(0)},[d,f]),u?(0,M.jsx)(s.div,{...r,ref:t,style:{width:a,height:c,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null},`ScrollAreaCornerImpl`));function B(e){return e?parseInt(e,10):0}I(B,`toInt`);function Mt(e,t){let n=e/t;return isNaN(n)?0:n}I(Mt,`getThumbRatio`);function V(e){let t=Mt(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}I(V,`getThumbSize`);function Nt(e,t,n,r=`ltr`){let i=V(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 H([c,l],d)(e)}I(Nt,`getScrollPositionFromPointer`);function Pt(e,t,n=`ltr`){let r=V(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=n===`ltr`?[0,o]:[o*-1,0],l=O(e,c);return H([0,o],[0,s])(l)}I(Pt,`getThumbOffsetFromScroll`);function H(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])}}I(H,`linearScale`);function Ft(e,t){return e>0&&e<t}I(Ft,`isScrollingWithinScrollbarBounds`);var It=I((e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return I((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)}),`loop`)(),()=>window.cancelAnimationFrame(r)},`addUnlinkedScrollListener`);function U(e,t){let n=a(e),r=A.useRef(0);return A.useEffect(()=>()=>window.clearTimeout(r.current),[]),A.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}I(U,`useDebounceCallback`);function W(e,t){let n=a(t);i(()=>{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])}I(W,`useResizeObserver`);var Lt=pt,Rt=ht,zt=At;function Bt({className:e,children:t,...n}){return(0,M.jsxs)(Lt,{className:r(`relative overflow-hidden`,e),...n,children:[(0,M.jsx)(Rt,{className:`h-full w-full rounded-[inherit] outline-none transition-[color,box-shadow] focus-visible:ring-3 focus-visible:ring-ring`,children:t}),(0,M.jsx)(Vt,{}),(0,M.jsx)(zt,{})]})}function Vt({className:e,orientation:t=`vertical`,...n}){return(0,M.jsx)(_t,{orientation:t,className:r(`flex touch-none select-none transition-colors`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent p-px`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent p-px`,e),...n,children:(0,M.jsx)(Dt,{className:`relative flex-1 rounded-full bg-border`})})}var Ht=[`messages`,`inputMessages`,`input_messages`,`outputMessages`,`output_messages`,`chatHistory`,`chat_history`,`history`,`prompt`,`output`,`choice`],Ut=[`tools`,`functions`,`toolSchemas`,`tool_schemas`];function Wt(e,t){let n=[],r=[],i=t===`output`?`assistant`:`user`;if(Array.isArray(e)){let t=[];return e.forEach((e,r)=>{let a=K(e,`message:${r}`,i);a===void 0?t.push(e):n.push(a)}),{messages:n,tools:r,additional:t.length>0?t:void 0,hasMessages:n.length>0}}if(!v(e))return{messages:n,tools:r,additional:e,hasMessages:!1};let a=K(e,`message:direct`);if(a!==void 0){let t=new Set([`role`,`type`,`content`,`text`,`message`,`result`,`output`,`value`,`tool_calls`,`toolCalls`,`toolName`,`input`,`arguments`]),n=Object.entries(e).filter(([e])=>!t.has(e));return{messages:[a],tools:r,additional:n.length>0?Object.fromEntries(n):void 0,hasMessages:!0}}let o=new Set;typeof e.instructions==`string`&&e.instructions.trim().length>0&&(n.push({key:`instructions`,role:`system`,content:e.instructions,toolCalls:[]}),o.add(`instructions`));for(let t of Ht){let r=e[t];if(Array.isArray(r)){let e=r.map((e,n)=>K(e,`${t}:${n}`,i)).filter(e=>e!==void 0);e.length>0&&(n.push(...e),o.add(t));continue}let a=K(r,`${t}:direct`,i);a!==void 0&&(n.push(a),o.add(t))}if(Array.isArray(e.choices)){let t=e.choices.map((e,t)=>{if(v(e))return K(e.message??e.delta??e,`choices:${t}`,`assistant`)}).filter(e=>e!==void 0);t.length>0&&(n.push(...t),o.add(`choices`))}for(let t of Ut){let n=e[t];Array.isArray(n)&&(r.push(...n.map((e,n)=>q(e,`${t}:${n}`))),o.add(t))}let s=Object.entries(e).filter(([e])=>!o.has(e));return{messages:n,tools:r,additional:s.length>0?Object.fromEntries(s):void 0,hasMessages:n.length>0}}function Gt(e){let t=[],n=(e,r)=>{if(Array.isArray(e)){e.length===0&&t.push({path:r,label:r||`Value`,value:e}),e.forEach((e,t)=>n(e,r?`${r}.${t}`:String(t)));return}if(v(e)){let i=Object.entries(e);i.length===0&&t.push({path:r,label:r||`Value`,value:e}),i.forEach(([e,t])=>n(t,r?`${r}.${e}`:e));return}t.push({path:r,label:r?qt(r.split(`.`).at(-1)??r):`Value`,value:e})};return n(e,``),t}function G(e){return e===null?`null`:e===void 0?`undefined`:typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):Kt(e)}function Kt(e){try{return JSON.stringify(e,null,2)??`undefined`}catch{return String(e)}}function qt(e){return e.replace(/[_-]+/g,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).trim().replace(/\b\w/g,e=>e.toUpperCase())}function K(e,t,n){if(!v(e))return;let r=Yt(e)??(Jt(e)?n:void 0);if(r!==void 0)return{key:t,role:r,content:Xt(e.content??e.text??e.message??e.result??e.output??e.value),toolCalls:[...Zt(e.tool_calls,`${t}:tool-call`),...Zt(e.toolCalls,`${t}:tool-calls`),...Qt(e.content,`${t}:content-tool-call`),...J(e)?[q(e,`${t}:tool`)]:[]]}}function Jt(e){return`content`in e||`text`in e||`message`in e||`result`in e||`output`in e||`value`in e||`tool_calls`in e||`toolCalls`in e||J(e)}function Yt(e){if(typeof e.role==`string`)return e.role.toLowerCase();if(e.type===`reasoning`)return`reasoning`;if(J(e))return`tool`}function Xt(e){if(e==null)return``;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);if(Array.isArray(e))return e.map(e=>v(e)?J(e)?``:typeof e.text==`string`?e.text:typeof e.content==`string`?e.content:e.type===`image`||e.type===`image_url`?`[Image]`:e.type===`file`?`[File]`:e.type===`audio`?`[Audio]`:G(e):Xt(e)).filter(Boolean).join(`
|
|
2
|
+
`);if(v(e)){if(typeof e.text==`string`)return e.text;if(typeof e.content==`string`)return e.content}return G(e)}function Zt(e,t){return Array.isArray(e)?e.map((e,n)=>q(e,`${t}:${n}`)):[]}function Qt(e,t){return Array.isArray(e)?e.filter(e=>v(e)&&J(e)).map((e,n)=>q(e,`${t}:${n}`)):[]}function q(e,t){if(!v(e))return{key:t,name:`Tool`,value:e};let n=v(e.function)?e.function:void 0,r=Y(e.toolName)??Y(e.name)??Y(n?.name)??(typeof e.type==`string`?qt(e.type):`Tool`),i=Y(e.description)??Y(n?.description),a={key:t,name:r,value:$t(n?.arguments??e.arguments??e.input??e.result??e.output??e.value??e.content??e)};return i!==void 0&&(a.description=i),a}function $t(e){if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}}function J(e){return[`tool_call`,`server_tool_call`,`tool_result`,`server_tool_result`,`tool-call`,`server-tool-call`,`tool-result`,`server-tool-result`].includes(String(e.type))}function Y(e){return typeof e==`string`&&e.length>0?e:void 0}var en=1e5;function X(e){let t=(0,A.useMemo)(()=>Kt(e.value),[e.value]),n=t.length>en,r=(0,A.useMemo)(()=>e.field!==`input`&&e.field!==`output`||n?void 0:Wt(e.value,e.field),[e.field,e.value,n]),i=(0,A.useMemo)(()=>n?[{id:`raw`,label:e.field===`metadata`?`JSON`:`Raw`}]:e.field===`metadata`?[{id:`table`,label:`Table`},{id:`raw`,label:`JSON`}]:r?.hasMessages?[{id:`readable`,label:e.field===`output`?`Response`:`Messages`},{id:`structure`,label:`Structure`},{id:`raw`,label:`Raw`}]:[{id:`structure`,label:`Structure`},{id:`raw`,label:`Raw`}],[r?.hasMessages,e.field,n]),[a,o]=(0,A.useState)(()=>i[0]?.id??`raw`),s=i.some(e=>e.id===a)?a:i[0]?.id??`raw`,c=e.value===null||e.value===void 0?(0,M.jsx)(un,{}):n?(0,M.jsx)(ln,{json:t,title:e.title,truncated:!0}):s===`raw`?(0,M.jsx)(ln,{json:t,title:e.title}):s===`table`?(0,M.jsx)(on,{value:e.value}):s===`readable`&&r?.hasMessages?(0,M.jsx)(nn,{additional:r.additional,messages:r.messages,tools:r.tools}):(0,M.jsx)(Ae,{value:e.value});if(e.field===`metadata`){let t=n||e.value===null||e.value===void 0?0:Gt(e.value).length;return(0,M.jsxs)(`details`,{className:`group grid min-w-0 gap-3`,children:[(0,M.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 rounded-sm py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3 [&::-webkit-details-marker]:hidden`,children:[(0,M.jsx)(D,{icon:j,"aria-hidden":`true`,className:`size-3.5 text-muted-foreground transition-transform group-open:rotate-90`}),(0,M.jsx)(`h3`,{className:`m-0 text-sm font-semibold`,children:e.title}),(0,M.jsx)(`span`,{className:`ml-auto font-mono text-[10px] uppercase tracking-wide text-muted-foreground`,children:n?`Large payload`:`${t} ${t===1?`field`:`fields`}`})]}),(0,M.jsxs)(`div`,{className:`grid gap-3 pl-5`,children:[(0,M.jsx)(tn,{options:i,value:s,onChange:o}),c]})]})}return(0,M.jsxs)(`section`,{className:`grid min-w-0 gap-3`,"aria-label":`${e.title} payload`,children:[(0,M.jsxs)(`header`,{className:`flex min-w-0 items-center gap-3`,children:[(0,M.jsx)(`h3`,{className:`m-0 text-sm font-semibold`,children:e.title}),(0,M.jsx)(`div`,{className:`ml-auto`,children:(0,M.jsx)(tn,{options:i,value:s,onChange:o})})]}),c]})}function tn(e){return e.options.length<2?null:(0,M.jsx)(`fieldset`,{className:`flex h-7 shrink-0 items-center rounded-md border p-0.5`,"aria-label":`Field view`,children:e.options.map(t=>(0,M.jsx)(`button`,{"aria-pressed":e.value===t.id,className:r(`h-5 rounded px-2 font-mono text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,e.value===t.id&&`bg-accent text-foreground`),type:`button`,onClick:()=>e.onChange(t.id),children:t.label},t.id))})}function nn(e){return(0,M.jsxs)(`div`,{className:`grid min-w-0 gap-5`,children:[(0,M.jsx)(`div`,{className:`grid gap-5`,children:e.messages.map(e=>(0,M.jsxs)(`article`,{className:`grid min-w-0 grid-cols-[6.5rem_minmax(0,1fr)] gap-3 max-sm:grid-cols-1`,children:[(0,M.jsx)(`div`,{className:`pt-0.5`,children:(0,M.jsx)(rn,{role:e.role})}),(0,M.jsxs)(`div`,{className:`grid min-w-0 gap-3`,children:[e.content.length>0?(0,M.jsx)(`p`,{className:`m-0 whitespace-pre-wrap break-words text-sm leading-6`,children:e.content}):e.toolCalls.length===0?(0,M.jsx)(`span`,{className:`text-sm italic text-muted-foreground`,children:`No text content`}):null,e.toolCalls.map(e=>(0,M.jsx)(an,{tool:e,label:`Tool call`},e.key))]})]},e.key))}),e.tools.length>0?(0,M.jsxs)(`section`,{children:[(0,M.jsxs)(`p`,{className:`mb-3 font-mono text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[`Available tools · `,e.tools.length]}),(0,M.jsx)(`div`,{className:`grid gap-2`,children:e.tools.map(e=>(0,M.jsx)(an,{tool:e,label:`Definition`},e.key))})]}):null,e.additional===void 0?null:(0,M.jsxs)(`details`,{className:`group/additional`,children:[(0,M.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 text-xs font-medium text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3 [&::-webkit-details-marker]:hidden`,children:[(0,M.jsx)(D,{icon:j,"aria-hidden":`true`,className:`size-3 transition-transform group-open/additional:rotate-90`}),`Additional fields`]}),(0,M.jsx)(`div`,{className:`mt-3 border-l pl-4`,children:(0,M.jsx)(sn,{value:e.additional})})]})]})}function rn({role:e}){return(0,M.jsx)(te,{className:r(`border-hair bg-status-neutral-fill text-status-neutral-ink`,e===`tool`&&`border-tone-tool bg-transparent text-tone-tool`,e===`assistant`&&`text-foreground`),children:qt(e)})}function an(e){return(0,M.jsxs)(`details`,{className:`border-l-2 border-tone-tool pl-3`,children:[(0,M.jsxs)(`summary`,{className:`cursor-pointer list-none py-1 text-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3 [&::-webkit-details-marker]:hidden`,children:[(0,M.jsx)(`span`,{className:`font-mono text-[10px] uppercase tracking-wide text-muted-foreground`,children:e.label}),` `,(0,M.jsx)(`span`,{className:`font-semibold`,children:e.tool.name}),e.tool.description?(0,M.jsx)(`span`,{className:`ml-2 text-muted-foreground`,children:e.tool.description}):null]}),(0,M.jsx)(`div`,{className:`py-2`,children:(0,M.jsx)(sn,{value:e.tool.value})})]})}function on({value:e}){let t=(0,A.useId)(),n=(0,A.useMemo)(()=>Gt(e),[e]),[r,i]=(0,A.useState)(``),a=r.trim().toLowerCase(),o=a?n.filter(e=>e.path.toLowerCase().includes(a)||G(e.value).toLowerCase().includes(a)):n;return(0,M.jsxs)(`div`,{className:`grid gap-2`,children:[(0,M.jsxs)(`label`,{className:`relative block`,htmlFor:t,children:[(0,M.jsx)(D,{icon:T,"aria-hidden":`true`,className:`pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,M.jsx)(ne,{"aria-label":`Search metadata`,className:`h-8 pl-8 font-mono text-xs`,id:t,placeholder:`Search metadata`,value:r,onChange:e=>i(e.currentTarget.value)})]}),(0,M.jsx)(`div`,{className:`min-w-0 overflow-hidden`,children:o.length>0?(0,M.jsx)(`dl`,{className:`grid gap-1`,children:o.map(e=>(0,M.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(8rem,0.42fr)_minmax(0,1fr)] gap-4 py-2 text-xs max-sm:grid-cols-1 max-sm:gap-1`,children:[(0,M.jsx)(`dt`,{className:`break-all font-mono text-muted-foreground`,title:e.path,children:e.path||e.label}),(0,M.jsx)(`dd`,{className:`m-0 whitespace-pre-wrap break-words font-mono`,children:G(e.value)})]},e.path))}):(0,M.jsx)(`p`,{className:`py-6 text-center text-sm text-muted-foreground`,children:`No matching fields`})})]})}function sn({value:e}){if(Array.isArray(e))return e.length===0?(0,M.jsx)(Z,{value:e}):(0,M.jsx)(`div`,{className:`grid gap-1`,children:e.map((e,t)=>(0,M.jsx)(cn,{depth:0,label:String(t),value:e},`${t}:${Kt(e).slice(0,80)}`))});if(v(e)){let t=Object.entries(e);return t.length===0?(0,M.jsx)(Z,{value:e}):(0,M.jsx)(`div`,{className:`grid gap-1`,children:t.map(([e,t])=>(0,M.jsx)(cn,{depth:0,label:e,value:t},e))})}return(0,M.jsx)(Z,{value:e})}function cn(e){if(!(Array.isArray(e.value)||v(e.value)))return(0,M.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(7rem,0.34fr)_minmax(0,1fr)] gap-4 py-2 text-xs max-sm:grid-cols-1 max-sm:gap-1`,children:[(0,M.jsx)(`span`,{className:`break-all font-mono text-muted-foreground`,children:e.label}),(0,M.jsx)(Z,{value:e.value})]});let t=Array.isArray(e.value)?e.value.map((e,t)=>[String(t),e]):v(e.value)?Object.entries(e.value):[];return(0,M.jsxs)(`details`,{open:e.depth<1,className:`group/row py-2`,children:[(0,M.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 font-mono text-xs focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-3 [&::-webkit-details-marker]:hidden`,children:[(0,M.jsx)(D,{icon:j,"aria-hidden":`true`,className:`size-3 text-muted-foreground transition-transform group-open/row:rotate-90`}),(0,M.jsx)(`span`,{children:e.label}),(0,M.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:Array.isArray(e.value)?`${t.length} items`:`${t.length} fields`})]}),(0,M.jsx)(`div`,{className:`ml-1.5 mt-2 grid gap-1 border-l pl-4`,children:t.length>0?t.map(([t,n])=>(0,M.jsx)(cn,{depth:e.depth+1,label:t,value:n},`${e.label}:${t}`)):(0,M.jsx)(Z,{value:e.value})})]})}function Z({value:e}){return(0,M.jsx)(`span`,{className:r(`min-w-0 whitespace-pre-wrap break-words font-mono text-xs`,e==null&&`code-comment`,typeof e==`string`&&`code-string`,typeof e==`number`&&`code-number`,typeof e==`boolean`&&`code-literal`),children:G(e)})}function ln(e){let[t,n]=(0,A.useState)(!1),i=e.truncated?e.json.slice(0,en):e.json;return(0,M.jsxs)(`div`,{className:`relative min-w-0 rounded-lg border bg-muted`,children:[e.truncated?(0,M.jsxs)(`p`,{className:`m-0 border-b px-3 py-2 text-xs text-muted-foreground`,children:[`Large payload · showing the first `,en.toLocaleString(),` `,`characters`]}):null,(0,M.jsx)(_,{"aria-label":`Copy ${e.title} JSON`,className:`absolute right-2 top-2 z-10`,size:`icon`,title:t?`Copied`:`Copy JSON`,type:`button`,variant:`secondary`,onClick:()=>{let t=navigator.clipboard?.writeText(e.json);t!==void 0&&t.then(()=>{n(!0),window.setTimeout(()=>n(!1),1500)},()=>void 0)},children:(0,M.jsx)(D,{icon:t?C:w,"aria-hidden":`true`})}),(0,M.jsxs)(`pre`,{className:`m-0 max-h-[32rem] overflow-auto p-4 pr-12 font-mono text-xs leading-5 text-foreground`,children:[ze(i).map(e=>(0,M.jsx)(`span`,{className:r(e.type===`key`&&`code-keyword`,e.type===`string`&&`code-string`,e.type===`number`&&`code-number`,e.type===`boolean`&&`code-literal`,e.type===`null`&&`code-comment`),children:e.text},e.start)),e.truncated?`
|
|
3
|
+
… display truncated`:null]})]})}function un(){return(0,M.jsx)(`div`,{className:`border-y border-dashed px-4 py-6 text-center text-sm text-muted-foreground`,children:`No data captured`})}function dn(e){if(!e.tracesEnabled)return(0,M.jsx)(k,{className:`h-full`,title:`Tracing unavailable`,text:`This Studio runtime does not expose traces.`});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,M.jsx)(`section`,{className:`grid h-full min-h-0 w-full content-stretch`,"aria-label":`Tracing`,children:e.selectedTraceId.length===0?(0,M.jsx)(fn,{agents:e.agents,traces:e.traces,traceLoadState:e.traceLoadState,onSelectTrace:e.onSelectTrace}):(0,M.jsx)(pn,{selectedTrace:t,selectedSessionTraces:n,selectedTraceId:e.selectedTraceId,traceLoadState:e.traceLoadState,onBack:()=>e.onSelectTrace(``),onShowSessionTraces:e.onShowSessionTraces})})}function fn(e){return e.traces.length===0?(0,M.jsx)(k,{title:e.traceLoadState===`loading`?`Loading traces`:`No traces found`,text:e.traceLoadState===`loading`?`Reading runtime trace records.`:`Run an agent to populate the tracing timeline.`}):(0,M.jsx)(ot,{className:`min-h-0 overflow-hidden rounded-none border-0 bg-background p-0`,"aria-label":`Traces`,children:(0,M.jsx)(Bt,{className:`h-full min-h-0`,children:(0,M.jsxs)(`div`,{className:`grid min-w-280`,children:[(0,M.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 border-b bg-header px-4 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground backdrop-blur`,children:[(0,M.jsx)(`span`,{children:`Trace`}),(0,M.jsx)(`span`,{children:`Session`}),(0,M.jsx)(`span`,{children:`Agent`}),(0,M.jsx)(`span`,{children:`Status`}),(0,M.jsx)(`span`,{children:`Started`}),(0,M.jsx)(`span`,{children:`Duration`}),(0,M.jsx)(`span`,{children:`First delta`}),(0,M.jsx)(`span`,{children:`Events`})]}),e.traces.map(t=>(0,M.jsxs)(_,{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-none border-0 border-b bg-transparent px-4 py-2.5 text-left text-muted-foreground shadow-none transition duration-200 hover:bg-transparent hover:text-foreground`,type:`button`,variant:`ghost`,onClick:()=>e.onSelectTrace(t.id),children:[(0,M.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium text-muted-foreground`,children:t.id}),(0,M.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:t.sessionId}),(0,M.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:u(e.agents,t)}),(0,M.jsx)(hn,{status:t.status}),(0,M.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:f(t.startedAt)}),(0,M.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:m(d(t.durationMs))}),(0,M.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium`,children:m(d(P(t.observations)))}),(0,M.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium tabular-nums`,children:t.observationCount})]},t.id))]})})})}function pn(e){let t=e.selectedTrace?.observations[0]?.kind??`trace`;return(0,M.jsxs)(`div`,{className:`grid h-full min-h-0 min-w-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background`,children:[(0,M.jsxs)(`header`,{className:`shrink-0 border-b bg-background px-4 py-3`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,M.jsx)(_,{"aria-label":`Back to traces`,className:`mt-0.5 text-muted-foreground hover:text-foreground`,size:`icon`,type:`button`,variant:`ghost`,onClick:e.onBack,children:(0,M.jsx)(D,{icon:pe,"aria-hidden":`true`})}),(0,M.jsx)(`span`,{className:r(`grid size-9 shrink-0 place-items-center rounded-lg [&_svg]:size-4`,F(t)),children:(0,M.jsx)(nt,{tone:t})}),(0,M.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,M.jsx)(`h1`,{className:`truncate text-lg font-semibold tracking-tight`,children:mn(e.selectedTrace)}),e.selectedTrace?(0,M.jsx)(hn,{status:e.selectedTrace.status}):null]}),(0,M.jsx)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted-foreground`,children:e.selectedTrace===void 0?e.traceLoadState===`loading`?`Loading trace`:`Trace not found`:(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`span`,{children:f(e.selectedTrace.startedAt)}),(0,M.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,M.jsx)(`span`,{className:`font-mono`,title:e.selectedTraceId,children:e.selectedTraceId})]})})]})]}),e.selectedTrace?(0,M.jsxs)(`dl`,{className:`mt-3 grid grid-cols-2 gap-x-6 gap-y-3 border-t pt-3 sm:grid-cols-4`,children:[(0,M.jsx)(Q,{label:`Duration`,value:d(e.selectedTrace.durationMs)}),(0,M.jsx)(Q,{label:`Spans`,value:String(e.selectedTrace.observationCount)}),(0,M.jsx)(Q,{label:`Tokens`,value:m(h(e.selectedTrace.usage))}),(0,M.jsx)(Q,{label:`Session`,value:e.selectedTrace.sessionId,mono:!0})]}):null]}),(0,M.jsx)(`div`,{className:`min-h-0 min-w-0 overflow-hidden`,children:e.selectedTrace===void 0?(0,M.jsx)(k,{className:`h-full rounded-none`,title:e.traceLoadState===`loading`?`Loading trace`:`Trace not found`,text:e.traceLoadState===`loading`?`Reading the selected trace.`:`The selected trace is not available in this Studio runtime.`}):(0,M.jsx)(gn,{traces:e.selectedSessionTraces.length>0?e.selectedSessionTraces:[e.selectedTrace],onShowSessionTraces:e.onShowSessionTraces})})]})}function mn(e){return e?.name?e.name:v(e?.metadata)&&typeof e.metadata.agentName==`string`?e.metadata.agentName:`Trace detail`}function Q(e){return(0,M.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,M.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:e.label}),(0,M.jsx)(`dd`,{className:r(`truncate text-sm font-medium tabular-nums`,e.mono&&`font-mono`),children:e.value})]})}function hn({status:e}){return(0,M.jsx)(te,{className:r(`border-0 capitalize`,e===`success`&&`bg-status-success-fill text-status-success-ink`,e===`error`&&`bg-status-danger-fill text-status-danger-ink`,(e===`running`||e===`suspended`||e===`cancelled`)&&`bg-status-pending-fill text-status-pending-ink`,e!==`success`&&e!==`error`&&e!==`running`&&e!==`suspended`&&e!==`cancelled`&&`bg-status-neutral-fill text-status-neutral-ink`),children:e})}function gn(e){let t=(0,A.useMemo)(()=>[...e.traces].sort((e,t)=>Date.parse(e.startedAt)-Date.parse(t.startedAt)),[e.traces]),n=t[0]?.id??``,[r,i]=(0,A.useState)(n),[a,o]=(0,A.useState)(`agent`),[s,c]=(0,A.useState)(()=>new Set),[l,u]=(0,A.useState)(``);(0,A.useEffect)(()=>{i(n),o(`agent`)},[n]);let f=t.find(e=>e.id===r)??t[0],p=f===void 0?[]:Ve(f),m=(e,t)=>{i(e),o(t)},h=l.trim().toLowerCase(),g=h.length===0?[]:t.flatMap(e=>e.observations.filter(e=>[e.name,e.kind,e.id].some(e=>e.toLowerCase().includes(h))).map(t=>({trace:e,observation:t}))),v=t.map(e=>`${e.id}:agent`),y=v.length>0&&v.every(e=>s.has(e)),b=e=>{c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return f===void 0?(0,M.jsx)(k,{className:`h-full rounded-none`,title:`No trace selected`,text:`Choose a trace to inspect its spans and metadata.`}):(0,M.jsx)(`section`,{className:`grid h-full min-h-0 w-full content-stretch overflow-hidden bg-background`,"aria-label":`Traces`,children:(0,M.jsxs)(`div`,{className:`grid h-full min-h-0 grid-cols-[minmax(280px,36%)_minmax(420px,64%)] overflow-hidden max-md:grid-cols-1`,children:[(0,M.jsxs)(`nav`,{className:`flex h-full min-h-0 flex-col border-r bg-background max-md:max-h-80 max-md:border-b max-md:border-r-0`,"aria-label":`Trace timeline`,children:[(0,M.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 border-b p-1.5`,children:[(0,M.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,M.jsx)(D,{icon:T,"aria-hidden":`true`,className:`pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,M.jsx)(ne,{"aria-label":`Search spans`,className:`h-8 border-0 bg-transparent pl-7 shadow-none focus-visible:ring-1`,placeholder:`Search spans`,value:l,onChange:e=>u(e.target.value)})]}),(0,M.jsx)(_,{"aria-label":y?`Expand all spans`:`Collapse all spans`,className:`size-8`,size:`icon`,title:y?`Expand all`:`Collapse all`,variant:`ghost`,onClick:()=>c(y?new Set:new Set(v)),children:(0,M.jsx)(D,{icon:y?he:Oe,"aria-hidden":`true`})})]}),(0,M.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto overscroll-contain px-2 py-1`,children:h.length>0?g.length>0?g.map(({trace:e,observation:t})=>(0,M.jsx)($,{active:f.id===e.id&&a===`observation:${t.id}`,ancestorLevels:[],hasChildren:!1,isLastSibling:!0,level:0,tone:t.kind,title:et(t),subtitle:d(t.durationMs),onSelect:()=>m(e.id,`observation:${t.id}`)},`${e.id}:${t.id}`)):(0,M.jsxs)(`div`,{className:`grid place-items-center gap-1 p-6 text-center`,children:[(0,M.jsx)(`span`,{className:`text-sm font-medium`,children:`No matching spans`}),(0,M.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Search by name, kind, or ID.`})]}):t.map(e=>{let n=f.id===e.id,r=Ve(e),i=`${e.id}:agent`,o=s.has(i);return(0,M.jsxs)(`div`,{className:`contents`,children:[(0,M.jsx)($,{active:n&&a===`agent`,ancestorLevels:[],hasChildren:r.length>0,isLastSibling:!0,level:0,tone:`agent`,title:t.length>1?e.name??`agent.run`:`agent.run`,subtitle:d(e.durationMs),collapsed:o,onSelect:()=>m(e.id,`agent`),onToggle:()=>b(i)}),o?null:r.map(t=>{let i=`${e.id}:turn:${t.turn}`,o=s.has(i);return(0,M.jsxs)(`div`,{className:`contents`,children:[(0,M.jsx)($,{active:n&&a===`turn:${t.turn}`,ancestorLevels:[],hasChildren:t.observations.length>0,isLastSibling:t.turn===r.at(-1)?.turn,level:1,tone:`turn`,title:`turn.${t.turn}`,subtitle:d(t.durationMs),collapsed:o,onSelect:()=>m(e.id,`turn:${t.turn}`),onToggle:()=>b(i)}),o?null:(0,M.jsx)(vn,{activeKey:a,collapsed:s,isLastTurn:t.turn===r.at(-1)?.turn,observations:t.observations,onSelect:t=>m(e.id,`observation:${t}`),onToggle:b,traceActive:n})]},i)})]},e.id)})})]}),(0,M.jsx)(bn,{trace:f,turns:p,activeKey:a,onShowSessionTraces:e.onShowSessionTraces})]})})}function $(e){return(0,M.jsxs)(`div`,{className:r(`group flex min-w-0 items-stretch text-muted-foreground hover:bg-transparent hover:text-foreground`,e.active&&`bg-row-selected text-foreground`),children:[(0,M.jsxs)(`button`,{"aria-current":e.active?`true`:void 0,className:`flex min-w-0 flex-1 items-stretch text-left`,type:`button`,onClick:e.onSelect,children:[(0,M.jsx)(_n,{ancestorLevels:e.ancestorLevels,hasChildren:e.hasChildren,isLastSibling:e.isLastSibling,level:e.level,tone:e.tone}),(0,M.jsxs)(`span`,{className:`grid min-w-0 flex-1 content-center py-1.5 pr-2`,children:[(0,M.jsx)(`span`,{className:`truncate text-xs font-medium text-current`,title:e.title,children:e.title}),(0,M.jsx)(`span`,{className:`flex flex-wrap gap-x-2 text-[10px] text-muted-foreground`,children:e.subtitle})]})]}),e.hasChildren&&e.onToggle?(0,M.jsx)(`button`,{"aria-expanded":!e.collapsed,"aria-label":e.collapsed?`Expand ${e.title}`:`Collapse ${e.title}`,className:`m-1 grid size-7 shrink-0 place-items-center rounded-md hover:bg-transparent hover:text-foreground`,type:`button`,onClick:e.onToggle,children:(0,M.jsx)(D,{icon:j,"aria-hidden":`true`,className:r(`size-3.5 transition-transform`,!e.collapsed&&`rotate-90`)})}):null]})}function _n(e){let t=e.level*20;return(0,M.jsxs)(`span`,{className:`relative shrink-0`,"data-tree-depth":e.level,style:{width:`${(e.level+1)*20+4}px`},children:[e.ancestorLevels.map(e=>(0,M.jsx)(`span`,{className:`absolute inset-y-0 w-px bg-border`,"data-tree-line":`ancestor`,style:{left:`${e*20+10}px`}},`ancestor-line-${e}`)),e.level>0?e.isLastSibling?(0,M.jsx)(`span`,{className:`absolute top-0 h-1/2 rounded-bl-sm border-b border-l border-border`,"data-tree-line":`elbow`,style:{left:`${(e.level-1)*20+10}px`,width:`20px`}}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(`span`,{className:`absolute inset-y-0 w-px bg-border`,"data-tree-line":`sibling-continuation`,style:{left:`${(e.level-1)*20+10}px`}}),(0,M.jsx)(`span`,{className:`absolute top-1/2 h-px bg-border`,"data-tree-line":`elbow`,style:{left:`${(e.level-1)*20+10}px`,width:`20px`}})]}):null,e.hasChildren?(0,M.jsx)(`span`,{className:`absolute bottom-0 w-px bg-border`,"data-tree-line":`children`,style:{left:`${t+10}px`,top:`calc(50% + 0.5rem)`}}):null,(0,M.jsx)(`span`,{className:r(`absolute top-1/2 grid size-4 -translate-y-1/2 place-items-center rounded-sm [&_svg]:size-2.5`,F(e.tone)),style:{left:`${t+2}px`},children:(0,M.jsx)(nt,{tone:e.tone})})]})}function vn(e){let t=He(e.observations);return(0,M.jsx)(M.Fragment,{children:t.map((n,r)=>(0,M.jsx)(yn,{activeKey:e.activeKey,ancestorLevels:e.isLastTurn?[]:[0],collapsed:e.collapsed,isLastSibling:r===t.length-1,level:2,node:n,onSelect:e.onSelect,onToggle:e.onToggle,traceActive:e.traceActive},n.observation.id))})}function yn(e){let t=rt(e.node.observation),n=`observation:${e.node.observation.id}`,r=e.collapsed.has(n),i=e.isLastSibling?e.ancestorLevels:[...e.ancestorLevels,e.level];return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)($,{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:et(e.node.observation),subtitle:t.length>0?`${d(e.node.observation.durationMs)} · ${t}`:d(e.node.observation.durationMs),collapsed:r,onSelect:()=>e.onSelect(e.node.observation.id),onToggle:()=>e.onToggle(n)}),r?null:e.node.children.map((t,n)=>(0,M.jsx)(yn,{activeKey:e.activeKey,ancestorLevels:i,collapsed:e.collapsed,isLastSibling:n===e.node.children.length-1,level:e.level+1,node:t,onSelect:e.onSelect,onToggle:e.onToggle,traceActive:e.traceActive},t.observation.id))]})}function bn(e){let t=Ue(e.trace,e.turns,e.activeKey);return(0,M.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background`,"aria-label":`Trace detail`,children:[(0,M.jsx)(`header`,{className:`shrink-0 border-b px-4 py-4 md:px-6`,children:(0,M.jsxs)(`div`,{className:`grid min-w-0 gap-4`,children:[(0,M.jsx)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:(0,M.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,M.jsx)(`span`,{className:r(`grid size-9 shrink-0 place-items-center rounded-lg [&_svg]:size-4`,F(t.tone)),children:(0,M.jsx)(nt,{tone:t.tone})}),(0,M.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,M.jsx)(`h2`,{className:`m-0 min-w-0 truncate text-xl font-semibold tracking-tight`,children:t.title}),(0,M.jsx)(hn,{status:t.status})]}),(0,M.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t.startedAt})]})]})}),(0,M.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,M.jsx)(xn,{icon:(0,M.jsx)(D,{icon:be,"aria-hidden":`true`}),label:`Duration`,value:d(t.durationMs)}),t.firstDeltaMs===void 0?null:(0,M.jsx)(xn,{icon:(0,M.jsx)(D,{icon:Ee,"aria-hidden":`true`}),label:`First delta`,value:d(t.firstDeltaMs)}),t.usage.length===0?null:(0,M.jsx)(xn,{icon:(0,M.jsx)(D,{icon:_e,"aria-hidden":`true`}),label:`Usage`,value:t.usage}),(0,M.jsxs)(`button`,{className:`flex min-w-0 items-center gap-2 rounded-md border bg-muted px-2.5 py-1.5 text-xs hover:border-foreground hover:bg-transparent`,type:`button`,onClick:()=>e.onShowSessionTraces(e.trace.sessionId),children:[(0,M.jsx)(D,{icon:b,"aria-hidden":`true`,className:`size-3.5 text-muted-foreground`}),(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Session`}),(0,M.jsx)(`span`,{className:`max-w-44 truncate font-mono font-medium`,children:e.trace.sessionId})]})]})]})}),(0,M.jsx)(`div`,{className:`min-w-0 overflow-auto`,children:(0,M.jsxs)(`div`,{className:`grid min-w-0 content-start gap-6 p-6`,children:[t.input===void 0?null:(0,M.jsx)(X,{field:`input`,title:`Input`,value:t.input}),t.output===void 0?null:(0,M.jsx)(X,{field:`output`,title:`Output`,value:t.output}),t.error===void 0?null:(0,M.jsx)(X,{field:`error`,title:`Error`,value:t.error}),(0,M.jsx)(X,{field:`metadata`,title:`Metadata`,value:t.metadata})]})})]})}function xn(e){return(0,M.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-md border bg-muted px-2.5 py-1.5 text-xs`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground [&_svg]:size-3.5`,children:e.icon}),(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:e.label}),(0,M.jsx)(`span`,{className:`max-w-44 truncate font-mono font-medium`,children:e.value})]})}export{dn as TraceBrowser};
|
|
4
|
+
//# sourceMappingURL=trace-browser-Co9iS9HR.js.map
|