@exulu/frontend 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +98 -99
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +3 -3
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app/api/auth/[...nextauth]/route.js +2 -2
- package/dist/.next/server/app-paths-manifest.json +4 -4
- package/dist/.next/server/chunks/1051.js +2 -2
- package/dist/.next/server/chunks/2270.js +1 -0
- package/dist/.next/server/chunks/2948.js +1 -1
- package/dist/.next/server/chunks/3434.js +1 -1
- package/dist/.next/server/chunks/3575.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -0
- package/dist/.next/server/chunks/8050.js +1 -1
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js +2 -0
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js.map +1 -0
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js +2 -0
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js.map +1 -0
- package/dist/.next/static/chunks/{3750-90a213a3c7cceb29.js → 3750-f45c59ef1cc79417.js} +2 -2
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js.map +1 -0
- package/dist/.next/static/chunks/{7856-9fa733bdd6429ba8.js → 6066-65606593516b2a3a.js} +18 -18
- package/dist/.next/static/chunks/6066-65606593516b2a3a.js.map +1 -0
- package/dist/.next/static/chunks/{6373-7908bd5269f95aa3.js → 6373-4c5dffaf4193621c.js} +2 -2
- package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js.map +1 -0
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js +2 -0
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-29794b9c33d2bf7e.js → page-4e7e02768ed1a72a.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/layout-093baa26f89338bc.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/layout-093baa26f89338bc.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-0b2d9832e5a023e7.js → page-bc859da58d8505f7.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js.map +1 -0
- package/dist/.next/static/css/c8c015815c72d053.css +4 -0
- package/dist/.next/static/css/c8c015815c72d053.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/dist/package.json +1 -0
- package/package.json +1 -1
- package/dist/.next/server/chunks/6623.js +0 -1
- package/dist/.next/static/chunks/1685-39351b8a15bbecab.js +0 -2
- package/dist/.next/static/chunks/1685-39351b8a15bbecab.js.map +0 -1
- package/dist/.next/static/chunks/1957-899d0d6d0d9c11fd.js +0 -2
- package/dist/.next/static/chunks/1957-899d0d6d0d9c11fd.js.map +0 -1
- package/dist/.next/static/chunks/3750-90a213a3c7cceb29.js.map +0 -1
- package/dist/.next/static/chunks/6373-7908bd5269f95aa3.js.map +0 -1
- package/dist/.next/static/chunks/7856-9fa733bdd6429ba8.js.map +0 -1
- package/dist/.next/static/chunks/8269-0e17dac508340ccf.js +0 -2
- package/dist/.next/static/chunks/8269-0e17dac508340ccf.js.map +0 -1
- package/dist/.next/static/chunks/9105-78d236e8399181e0.js +0 -2
- package/dist/.next/static/chunks/9105-78d236e8399181e0.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-29794b9c33d2bf7e.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-57021bb06089261a.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-57021bb06089261a.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/layout-42021d301fc609b6.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/layout-42021d301fc609b6.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-841b2ed48010048e.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-841b2ed48010048e.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c1e7e0c81ca508c3.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c1e7e0c81ca508c3.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-0b2d9832e5a023e7.js.map +0 -1
- package/dist/.next/static/css/a181dac3df0dc7a7.css +0 -4
- package/dist/.next/static/css/a181dac3df0dc7a7.css.map +0 -1
- /package/dist/.next/static/{J23NmkaMjAJYnE0jX_kO0 → GOwerAkBncYx0J8q1TqQb}/_buildManifest.js +0 -0
- /package/dist/.next/static/{J23NmkaMjAJYnE0jX_kO0 → GOwerAkBncYx0J8q1TqQb}/_ssgManifest.js +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9727],{74083:function(e,s,a){Promise.resolve().then(a.bind(a,90189))},90189:function(e,s,a){"use strict";a.r(s),a.d(s,{default:function(){return ej},dynamic:function(){return ep}});var t=a(57437),l=a(2265),i=a(99376),n=a(7211),r=a(12199),d=a(13832),c=a(64972),o=a(32660),m=a(15863),x=a(83229),u=a(48736),h=a(24156),v=a(99397),p=a(45554),j=a(88893),f=a(32489),g=a(65613),N=a(37099),b=a(62869),y=a(95186),w=a(26815),_=a(76818),C=a(66070),k=a(35974),Z=a(93022),z=a(77992),S=a(27689),E=a(73247),R=a(26110),T=a(19060),A=a(19378);function O(e){var s;let{open:a,onClose:i,onSelect:r,excludeIds:d=[]}=e,[c,o]=(0,l.useState)(""),[m,x]=(0,l.useState)([]),{loading:u,data:h}=(0,n.aM)(S.RV,{variables:{page:1,limit:100,filters:c?[{AND:[{name:{contains:c}},{eval_set_id:{eq:null}}]}]:[{eval_set_id:{eq:null}}]},skip:!a});(0,l.useEffect)(()=>{a||(x([]),o(""))},[a]);let v=((null==h?void 0:null===(s=h.test_casesPagination)||void 0===s?void 0:s.items)||[]).filter(e=>!d.includes(e.id)),p=e=>{x(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])};return(0,t.jsx)(R.Vq,{open:a,onOpenChange:i,children:(0,t.jsxs)(R.cZ,{className:"max-w-3xl max-h-[80vh] flex flex-col",children:[(0,t.jsxs)(R.fK,{children:[(0,t.jsx)(R.$N,{children:"Add Test Cases"}),(0,t.jsx)(R.Be,{children:"Select test cases to add to this eval set. Already added test cases are hidden."}),(0,t.jsx)(g.bZ,{variant:"destructive",className:"mt-3",children:(0,t.jsxs)(g.X,{children:[(0,t.jsx)("strong",{children:"Note:"})," You can only add test cases that are not already in an eval set. Remove them from another eval set first if you want to add them to a new eval set."]})})]}),(0,t.jsxs)("div",{className:"space-y-4 flex-1 overflow-hidden flex flex-col",children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(E.Z,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,t.jsx)(y.I,{placeholder:"Search test cases by name...",value:c,onChange:e=>o(e.target.value),className:"pl-9"})]}),v.length>0&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,t.jsx)(T.X,{id:"select-all-test-cases",checked:m.length===v.length&&v.length>0,onCheckedChange:()=>{m.length===v.length?x([]):x(v.map(e=>e.id))}}),(0,t.jsxs)(w._,{htmlFor:"select-all-test-cases",className:"text-sm text-muted-foreground",children:["Select all (",m.length," selected)"]})]}),(0,t.jsx)(A.x,{className:"flex-1 border rounded-lg",children:(0,t.jsx)("div",{children:u?Array.from({length:3}).map((e,s)=>(0,t.jsx)(Z.O,{className:"h-10 w-full"},s)):0===v.length?(0,t.jsx)("div",{className:"text-center py-12 text-muted-foreground mx-5",children:c?"No test cases found matching your search.":"No test cases available to add."}):v.map(e=>(0,t.jsxs)("div",{onClick:()=>{p(e.id)},className:"flex items-start gap-3 p-3 hover:bg-muted/50",children:[(0,t.jsx)(T.X,{checked:m.includes(e.id),id:"select-test-case-".concat(e.id),onCheckedChange:()=>p(e.id)}),(0,t.jsxs)(w._,{htmlFor:"select-test-case-".concat(e.id),className:"text-sm text-muted-foreground flex flex-col",children:[(0,t.jsx)("span",{children:e.name}),(0,t.jsx)("small",{children:e.description})]})]},e.id))})})]}),(0,t.jsxs)(R.cN,{children:[(0,t.jsx)(b.z,{variant:"outline",onClick:i,children:"Cancel"}),(0,t.jsxs)(b.z,{onClick:()=>{r(m)},disabled:0===m.length,children:["Add ",m.length," Test Case",1!==m.length?"s":""]})]})]})})}var M=a(82534),F=a(44045),P=a(63639),I=a(53647),B=a(6512);function Y(e){var s,a,i,d,c,o,x,u,h;let{modalKey:v,eval_set_id:p,onCreateSuccess:j,existingRun:f=null,open:g,onOpenChange:N}=e,{toast:C}=(0,z.pm)(),Z=!!f&&!!f.id,[E,O]=(0,l.useState)({id:"",name:"",rights_mode:"private",createdAt:"",updatedAt:"",eval_set_id:p,agent_id:"",eval_functions:[],scoring_method:"average",pass_threshold:70,timeout_in_seconds:300,test_case_ids:[]});(0,l.useEffect)(()=>{f?O(f):O({id:"",name:"",rights_mode:"private",createdAt:"",updatedAt:"",eval_set_id:p,agent_id:"",eval_functions:[],scoring_method:"average",pass_threshold:70,timeout_in_seconds:300,test_case_ids:[]})},[f,p]);let{data:M}=(0,n.aM)(S.ym,{variables:{page:1,limit:100,filters:[]},skip:!p}),{data:F}=(0,n.aM)(S.Ts,{skip:!p}),{data:P}=(0,n.aM)(S.RV,{variables:{page:1,limit:500,filters:[{eval_set_id:{eq:p}}]},skip:!p}),Y=(null==P?void 0:null===(s=P.test_casesPagination)||void 0===s?void 0:s.items)||[],[D,{loading:V}]=(0,r.D)(S.oo,{onCompleted:()=>{C({title:"Eval run created",description:"The eval run has been created successfully. You can now run it."}),j&&j(),N(!1)},onError:e=>{C({title:"Failed to create eval run",description:e.message,variant:"destructive"})}}),[U,{loading:q}]=(0,r.D)(S.Nu,{onCompleted:()=>{C({title:"Eval run updated",description:"The eval run has been updated successfully."}),j&&j(),N(!1)},onError:e=>{C({title:"Failed to update eval run",description:e.message,variant:"destructive"})}}),X=V||q,J=e=>{O(s=>({...s,test_case_ids:s.test_case_ids.includes(e)?s.test_case_ids.filter(s=>s!==e):[...s.test_case_ids,e]}))},L=()=>{O(e=>({...e,test_case_ids:e.test_case_ids.length===Y.length?[]:Y.map(e=>e.id)}))},G=e=>{O(s=>({...s,eval_functions:s.eval_functions.some(s=>s.id===e.id)?s.eval_functions.filter(s=>s.id!==e.id):[...s.eval_functions,{...e,config:{}}]}))};return(0,t.jsx)(R.Vq,{open:g,onOpenChange:N,children:(0,t.jsxs)(R.cZ,{className:"max-w-4xl h-[90vh] flex flex-col",children:[(0,t.jsxs)(R.fK,{children:[(0,t.jsx)(R.$N,{children:Z?"Edit Eval Run":"Create Eval Run"}),(0,t.jsx)(R.Be,{children:Z?"Update the configuration for this eval run.":"Configure a new evaluation run for this eval set."})]}),(0,t.jsxs)("form",{onSubmit:e=>{var s,a,t;if(e.preventDefault(),console.log("[EXULU] Eval run",E),!E.name){C({title:"Validation error",description:"Please enter a name for this eval run.",variant:"destructive"});return}if(!E.agent_id){C({title:"Validation error",description:"Please select an agent.",variant:"destructive"});return}if(0===E.test_case_ids.length){C({title:"Validation error",description:"Please select at least one test case.",variant:"destructive"});return}if(0===E.eval_functions.length){C({title:"Validation error",description:"Please select at least one eval function.",variant:"destructive"});return}let l={name:E.name,eval_set_id:p,agent_id:E.agent_id,test_case_ids:E.test_case_ids,eval_functions:E.eval_functions,scoring_method:E.scoring_method.toUpperCase(),pass_threshold:E.pass_threshold,timeout_in_seconds:E.timeout_in_seconds,rights_mode:E.rights_mode,RBAC:{users:null===(s=E.RBAC)||void 0===s?void 0:s.users,roles:null===(a=E.RBAC)||void 0===a?void 0:a.roles,projects:null===(t=E.RBAC)||void 0===t?void 0:t.projects}};Z?U({variables:{id:E.id,data:l}}):D({variables:{data:l}})},className:"flex-1 flex flex-col min-h-0",children:[(0,t.jsx)(A.x,{className:"flex-1 -mx-6 px-6",children:(0,t.jsxs)("div",{className:"space-y-6 pb-4",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-semibold text-sm",children:"Name"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Give this eval run a descriptive name"})]})}),(0,t.jsx)(y.I,{type:"text",placeholder:"e.g., GPT-4 baseline evaluation",value:E.name,onChange:e=>O(s=>({...s,name:e.target.value})),className:"h-11"})]}),(0,t.jsx)(B.Z,{}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-semibold text-sm",children:"Agent"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Choose which agent to evaluate"})]})}),(0,t.jsxs)(I.Ph,{value:E.agent_id,onValueChange:e=>O(s=>({...s,agent_id:e})),children:[(0,t.jsx)(I.i4,{className:"h-11",children:(0,t.jsx)(I.ki,{placeholder:"Select an agent..."})}),(0,t.jsx)(I.Bw,{children:null==M?void 0:null===(i=M.agentsPagination)||void 0===i?void 0:null===(a=i.items)||void 0===a?void 0:a.map(e=>(0,t.jsx)(I.Ql,{value:e.id,children:e.name},e.id))})]})]}),(0,t.jsx)(B.Z,{}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-semibold text-sm",children:"Eval Functions"}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[E.eval_functions.length," of ",(null==F?void 0:null===(c=F.evals)||void 0===c?void 0:null===(d=c.items)||void 0===d?void 0:d.length)||0," selected"]})]})}),(0,t.jsx)(b.z,{type:"button",variant:"outline",size:"sm",onClick:e=>{var s,a;e.stopPropagation(),E.eval_functions.length===(null==F?void 0:null===(a=F.evals)||void 0===a?void 0:null===(s=a.items)||void 0===s?void 0:s.length)?O(e=>({...e,eval_functions:[]})):O(e=>{var s,a;return{...e,eval_functions:(null==F?void 0:null===(a=F.evals)||void 0===a?void 0:null===(s=a.items)||void 0===s?void 0:s.map(e=>({id:e.id,name:e.name,config:{}})))||[]}})},children:E.eval_functions.length===(null==F?void 0:null===(x=F.evals)||void 0===x?void 0:null===(o=x.items)||void 0===o?void 0:o.length)?"Deselect All":"Select All"})]}),(0,t.jsx)("div",{className:"border rounded-lg bg-card",children:(0,t.jsx)("div",{className:"p-3 space-y-2",children:null==F?void 0:null===(h=F.evals)||void 0===h?void 0:null===(u=h.items)||void 0===u?void 0:u.map(e=>(0,t.jsxs)("label",{htmlFor:"eval-".concat(e.id),className:"flex items-start gap-3 p-3 rounded-md hover:bg-accent transition-colors cursor-pointer border border-transparent hover:border-border",children:[(0,t.jsx)(T.X,{id:"eval-".concat(e.id),checked:E.eval_functions.some(s=>s.id===e.id),onCheckedChange:()=>G({id:e.id,name:e.name}),className:"mt-0.5"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsx)("span",{className:"font-medium text-sm",children:e.name})}),e.description&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-2",children:e.description}),e.config&&e.config.length>0&&E.eval_functions.some(s=>s.id===e.id)&&(0,t.jsxs)("div",{className:"mt-3 space-y-3 pt-3 border-t",children:[(0,t.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:"Configuration"}),e.config.map(s=>{var a,l;return(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)(w._,{htmlFor:"".concat(e.id,"-").concat(s.name),className:"text-xs font-medium",children:s.name}),(0,t.jsx)(_.g,{id:"".concat(e.id,"-").concat(s.name),placeholder:s.description,value:(null===(l=E.eval_functions.find(s=>s.id===e.id))||void 0===l?void 0:null===(a=l.config)||void 0===a?void 0:a[s.name])||"",onChange:a=>{a.stopPropagation(),O(t=>({...t,eval_functions:t.eval_functions.map(t=>t.id===e.id?{...t,config:{...t.config,[s.name]:a.target.value}}:t)}))},onClick:e=>e.stopPropagation(),className:"min-h-[80px] text-xs resize-none"}),s.description&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:s.description})]},s.name)})]})]})]},e.id))})})]}),(0,t.jsx)(B.Z,{}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-semibold text-sm",children:"Test Cases"}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[E.test_case_ids.length," of ",Y.length," selected"]})]})}),(0,t.jsx)(b.z,{type:"button",variant:"outline",size:"sm",onClick:e=>{e.stopPropagation(),L()},children:E.test_case_ids.length===Y.length?"Deselect All":"Select All"})]}),(0,t.jsx)("div",{className:"border rounded-lg bg-card",children:(0,t.jsx)(A.x,{className:"h-[250px]",children:(0,t.jsx)("div",{className:"p-3 space-y-2",children:Y.map(e=>{var s;return(0,t.jsxs)("label",{htmlFor:"test-case-".concat(e.id),className:"flex items-start gap-3 p-3 rounded-md hover:bg-accent transition-colors cursor-pointer border border-transparent hover:border-border",children:[(0,t.jsx)(T.X,{id:"test-case-".concat(e.id),checked:E.test_case_ids.includes(e.id),onCheckedChange:()=>J(e.id),className:"mt-0.5"}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,t.jsx)("span",{className:"font-medium text-sm",children:e.name}),(0,t.jsxs)(k.C,{variant:"secondary",className:"text-[10px] shrink-0",children:[(null===(s=e.inputs)||void 0===s?void 0:s.length)||0," msgs"]})]}),e.description&&(0,t.jsx)("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-2",children:e.description})]})]},e.id)})})})})]}),(0,t.jsx)(B.Z,{}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("div",{className:"flex items-center gap-2",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"font-semibold text-sm",children:"Scoring"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Configure how scores are calculated"})]})}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 p-4 border rounded-lg bg-muted/30",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(w._,{htmlFor:"scoringMethod",className:"text-xs font-semibold",children:"Scoring Method"}),(0,t.jsxs)(I.Ph,{value:E.scoring_method,onValueChange:e=>O(s=>({...s,scoring_method:e})),children:[(0,t.jsx)(I.i4,{id:"scoringMethod",className:"h-10",children:(0,t.jsx)(I.ki,{})}),(0,t.jsxs)(I.Bw,{children:[(0,t.jsx)(I.Ql,{value:"median",children:"Median"}),(0,t.jsx)(I.Ql,{value:"average",children:"Average"}),(0,t.jsx)(I.Ql,{value:"sum",children:"Sum"})]})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"How to combine multiple eval function scores"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(w._,{htmlFor:"passThreshold",className:"text-xs font-semibold",children:"Pass Threshold"}),(0,t.jsx)(y.I,{id:"passThreshold",type:"number",min:"0",max:"100",value:E.pass_threshold,onChange:e=>O(s=>({...s,pass_threshold:Number(e.target.value)})),className:"h-10"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Minimum score (0-100) to pass"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(w._,{htmlFor:"timeoutInSeconds",className:"text-xs font-semibold",children:"Timeout (seconds)"}),(0,t.jsx)(y.I,{id:"timeoutInSeconds",type:"number",min:"1",value:E.timeout_in_seconds,onChange:e=>O(s=>({...s,timeout_in_seconds:Number(e.target.value)})),className:"h-10"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:"Max time per test case execution"})]})]})]})]})}),(0,t.jsx)(B.Z,{className:"my-4"}),(0,t.jsx)(R.cN,{className:"shrink-0",children:(0,t.jsxs)(b.z,{type:"submit",disabled:X||!E.name||!E.agent_id||0===E.test_case_ids.length||0===E.eval_functions.length,className:"w-full h-11",children:[X&&(0,t.jsx)(m.Z,{className:"mr-2 h-4 w-4 animate-spin"}),Z?"Update Eval Run":"Create Eval Run"]})})]})]})},v)}var D=a(69304),V=a(12339),U=a(92451),q=a(91723),X=a(65302),J=a(45131),L=a(22252),G=a(11239),H=a(27107),Q=a(77473),$=a(89227),K=a(52636),W=a(78867),ee=a(15868),es=a(33276),ea=a(61094),et=a(94508),el=a(10492);let ei={waiting:(0,t.jsx)(q.Z,{className:"h-3 w-3"}),active:(0,t.jsx)(m.Z,{className:"h-3 w-3 animate-spin"}),completed:null,failed:(0,t.jsx)(J.Z,{className:"h-3 w-3"}),delayed:(0,t.jsx)(q.Z,{className:"h-3 w-3"}),paused:(0,t.jsx)($.Z,{className:"h-3 w-3"}),stuck:(0,t.jsx)(P.Z,{className:"h-3 w-3"})},en={waiting:"text-yellow-600 bg-yellow-50 border-yellow-200",active:"text-blue-600 bg-blue-50 border-blue-200",completed:"",failed:"text-red-600 bg-red-50 border-red-200",delayed:"text-orange-600 bg-orange-50 border-orange-200",paused:"text-gray-600 bg-gray-50 border-gray-200",stuck:"text-red-600 bg-red-50 border-red-200"};function er(e){var s;let{evalRun:a,testCases:l,onCellClick:i,handleEditRun:r,handleCopyRun:d,handleStartRun:c,handleStopRun:o}=e,{data:x,loading:u,refetch:h,networkStatus:v}=(0,n.aM)(S.JL,{variables:{page:1,limit:500,filters:[{label:{contains:"eval-run-"+a.id}}]},skip:!a.id}),p=(null==x?void 0:null===(s=x.job_resultsPagination)||void 0===s?void 0:s.items)||[],j=e=>{let s=p.find(s=>{var t,l;return(null===(t=s.label)||void 0===t?void 0:t.includes(e))&&(null===(l=s.label)||void 0===l?void 0:l.includes(a.id))});return null==s?null:s},f=e=>{if(console.log("[EXULU] result",null==e?void 0:e.result),!e||"completed"!==e.state||void 0===e.result)return"";let s=e.result,t=a.pass_threshold;return s>=t?"text-green-500":s>=t-20?"text-orange-500":"text-red-500"};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex-shrink-0",children:(0,t.jsx)("div",{className:"p-3 text-center border-r bg-muted/20 h-[60px] flex items-center justify-center border-b border-r",children:(0,t.jsxs)("span",{className:"text-xs text-muted-foreground space-x-2 flex items-center justify-center",children:[(0,t.jsxs)(b.z,{variant:"outline",size:"sm",disabled:u||v===Q.Ie.refetch||v===Q.Ie.fetchMore||v===Q.Ie.loading,onClick:()=>{h()},children:[u&&(0,t.jsx)(el.g,{}),(0,t.jsx)(K.Z,{className:"h-3 w-3"})]}),(0,t.jsx)(b.z,{variant:"outline",size:"sm",onClick:()=>{d(a)},children:(0,t.jsx)(W.Z,{className:"h-3 w-3"})}),(0,t.jsx)(b.z,{variant:"outline",size:"sm",onClick:()=>{r(a)},children:(0,t.jsx)(ee.Z,{className:"h-3 w-3"})}),(0,t.jsx)(b.z,{variant:"outline",size:"sm",onClick:()=>{c(a)},children:(0,t.jsx)(es.Z,{className:"h-3 w-3"})}),(0,t.jsx)(b.z,{variant:"outline",size:"sm",onClick:()=>{o(a)},children:(0,t.jsx)(ea.Z,{className:"h-3 w-3"})})]})})}),(0,t.jsx)("div",{className:"flex-shrink-0",children:l.map(e=>{let s=a.test_case_ids.includes(e.id),l=j(e.id);if(!s)return(0,t.jsx)("div",{className:"p-3 text-center border-r bg-muted/20 h-[60px] flex items-center justify-center border-b border-r",children:(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"—"})},e.id);let n=f(l),r=(null==l?void 0:l.state)?en[l.state]:"bg-transparent";return(0,t.jsx)("div",{className:"p-3 text-center border-b border-r h-[60px] flex items-center justify-center",children:(0,t.jsx)("div",{onClick:()=>i(l),className:(0,et.cn)("w-full h-full min-h-[48px] rounded transition-colors flex items-center justify-center gap-2",n||r||"border-gray-200 bg-gray-50",(null==l?void 0:l.state)==="completed"&&"cursor-pointer hover:opacity-80",(!l||"completed"!==l.state)&&"cursor-default"),children:u?(0,t.jsx)(m.Z,{className:"h-3 w-3 animate-spin"}):l?(0,t.jsx)(t.Fragment,{children:"completed"===l.state&&void 0!==l.result?(0,t.jsx)("span",{className:"font-semibold text-sm hover:underline",children:l.result.toFixed(1)}):(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[ei[l.state],(0,t.jsx)("span",{className:"text-xs capitalize",children:l.state})]})}):(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[ei.waiting,(0,t.jsx)("span",{className:"text-xs capitalize",children:"Not started"})]})})},e.id)})})]})}var ed=a(62910),ec=a(27182),eo=a(77256);function em(e){var s,a,i,d,c,o,x,u,h,v,p,j,f;let{evalRuns:g,evalSet:y,onRefetch:w}=e,{toast:_}=(0,z.pm)(),[E,R]=(0,l.useState)(5),[T,O]=(0,l.useState)(null),[M,F]=(0,l.useState)(!1),[P,I]=(0,l.useState)(!1),[B,Q]=(0,l.useState)(null),[$,K]=(0,l.useState)(!1),[W,ee]=(0,l.useState)(null);console.log("[EXULU] Eval set",y);let{data:es,loading:ea}=(0,n.aM)(S.RV,{variables:{page:1,limit:500,filters:[{eval_set_id:{eq:y.id}}]},skip:!y.id,pollInterval:1e4}),el=(null==es?void 0:null===(s=es.test_casesPagination)||void 0===s?void 0:s.items)||[],ei=Array.from(new Set(g.map(e=>e.agent_id).filter(Boolean))),{data:en}=(0,n.aM)(S.W9,{variables:{ids:ei},skip:0===ei.length}),em=new Map(((null==en?void 0:en.agentByIds)||[]).map(e=>[e.id,e])),[ex,{loading:eu}]=(0,r.D)(S.B4,{onCompleted:e=>{_({title:"Eval run started",description:"Scheduled ".concat(e.runEval.count," test cases to run.")}),w()},onError:e=>{_({title:"Failed to start eval run",description:e.message,variant:"destructive"})}}),eh=[...g].sort((e,s)=>new Date(e.createdAt).getTime()-new Date(s.createdAt).getTime()),ev=eh.slice(-E),ep=eh.length>E,ej=e=>{e&&"completed"===e.state&&(O(e),F(!0))},ef=e=>{Q(e),I(!0)},eg=e=>{Q({...e,id:"",name:"".concat(e.name," (Copy)")}),I(!0)},eN=e=>{ee(e),K(!0)},eb=e=>{console.log("Stop run:",e)};return ea?(0,t.jsx)("div",{className:"space-y-2",children:Array.from({length:5}).map((e,s)=>(0,t.jsx)(Z.O,{className:"h-12 w-full"},s))}):0===el.length?(0,t.jsx)("div",{className:"text-center py-8 text-muted-foreground",children:"No test cases in this eval set."}):(0,t.jsxs)("div",{className:"w-full",children:[(0,t.jsxs)(A.x,{className:"w-full",children:[(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsxs)("div",{className:"sticky left-0 z-10 bg-background flex-shrink-0 min-w-[200px]",children:[(0,t.jsx)("div",{className:"p-3 border-r border-b text-left font-medium text-sm h-[120px] flex",children:(0,t.jsx)("span",{className:"text-xs text-muted-foreground m-auto",children:"Test Case \\ Eval Run"})}),el.map(e=>(0,t.jsx)("div",{className:"p-3 border-b border-r h-[60px] flex items-center",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"font-medium text-sm",children:e.name}),(0,t.jsx)("div",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 truncate max-w-[100px]",children:e.id})]})},e.id))]}),ep&&(0,t.jsxs)("div",{className:"flex-shrink-0 min-w-[60px]",children:[(0,t.jsx)("div",{className:"text-center border-b border-r p-2 min-h-[48px] flex items-center justify-center",children:(0,t.jsx)(b.z,{variant:"ghost",size:"sm",onClick:()=>{R(e=>Math.min(e+5,eh.length))},className:"h-8 w-8 p-0",children:(0,t.jsx)(U.Z,{className:"h-4 w-4"})})}),el.map(e=>(0,t.jsx)("div",{className:"p-3 border-b border-r bg-muted/20 min-h-[72px]"},e.id))]}),ev.map(e=>{var s;return(0,t.jsxs)("div",{className:"flex-1 min-w-[100px]",children:[(0,t.jsx)("div",{className:"px-2 py-1.5 text-center font-medium text-sm border-r bg-muted/30 h-[60px]",children:(0,t.jsxs)("div",{className:"space-y-0.5 mt-2",children:[(0,t.jsx)("div",{className:"flex items-center justify-between gap-1",children:(0,t.jsx)("div",{className:"flex-1 text-xs font-semibold text-foreground truncate",children:e.name})}),(0,t.jsx)("div",{className:"text-[10px] text-muted-foreground font-normal leading-tight",children:(0,H.WU)(new Date(e.createdAt),"MMM d, yyyy \xb7 HH:mm")}),(0,t.jsx)("div",{className:"text-[10px] text-muted-foreground font-normal leading-tight truncate max-w-[100px] text-center m-auto",children:(null===(s=em.get(e.agent_id))||void 0===s?void 0:s.name)||e.agent_id})]})}),(0,t.jsx)(er,{evalRun:e,testCases:el,onCellClick:ej,handleEditRun:ef,handleCopyRun:eg,handleStartRun:eN,handleStopRun:eb})]},e.id)})]}),(0,t.jsx)(A.B,{orientation:"horizontal"})]}),(0,t.jsx)(D.yo,{open:M,onOpenChange:F,children:(0,t.jsxs)(D.ue,{className:"sm:max-w-2xl overflow-y-auto",children:[(0,t.jsx)(D.Tu,{children:(0,t.jsx)(D.bC,{children:"Test Result Details"})}),T&&(0,t.jsxs)(V.mQ,{defaultValue:"overview",className:"mt-6",children:[(0,t.jsxs)(V.dr,{className:"grid w-full grid-cols-4",children:[(0,t.jsx)(V.SP,{value:"overview",children:"Overview"}),(0,t.jsx)(V.SP,{value:"messages",children:"Messages"}),(0,t.jsx)(V.SP,{value:"functions",children:"Functions"}),(0,t.jsx)(V.SP,{value:"raw",children:"Raw Data"})]}),(0,t.jsxs)(V.nU,{value:"overview",className:"space-y-4",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)(C.Zb,{children:[(0,t.jsx)(C.Ol,{className:"pb-3",children:(0,t.jsx)(C.ll,{className:"text-sm font-medium text-muted-foreground",children:"Score"})}),(0,t.jsx)(C.aY,{children:(0,t.jsx)("div",{className:"text-3xl font-bold",children:null!==(v=null===(a=T.result)||void 0===a?void 0:a.toFixed(1))&&void 0!==v?v:"N/A"})})]}),(0,t.jsxs)(C.Zb,{children:[(0,t.jsx)(C.Ol,{className:"pb-3",children:(0,t.jsxs)(C.ll,{className:"text-sm font-medium text-muted-foreground flex items-center gap-2",children:[(0,t.jsx)(q.Z,{className:"h-4 w-4"}),"Duration"]})}),(0,t.jsx)(C.aY,{children:(0,t.jsx)("div",{className:"text-2xl font-semibold",children:(0,et.L)((null===(i=T.metadata)||void 0===i?void 0:i.duration)/1e3||0)})})]})]}),(0,t.jsxs)(C.Zb,{children:[(0,t.jsx)(C.Ol,{className:"pb-3",children:(0,t.jsx)(C.ll,{className:"text-sm font-medium",children:"Status & Job Information"})}),(0,t.jsxs)(C.aY,{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Status"}),(0,t.jsxs)(k.C,{variant:"completed"===T.state?"default":"failed"===T.state?"destructive":"secondary",className:"flex items-center gap-1",children:["completed"===T.state&&(0,t.jsx)(X.Z,{className:"h-3 w-3"}),"failed"===T.state&&(0,t.jsx)(J.Z,{className:"h-3 w-3"}),"completed"!==T.state&&"failed"!==T.state&&(0,t.jsx)(L.Z,{className:"h-3 w-3"}),(0,t.jsx)("span",{className:"capitalize",children:T.state})]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Job ID"}),(0,t.jsx)("span",{className:"text-sm font-mono",children:T.job_id})]})]})]}),T.error&&"object"==typeof T.error&&Object.keys(T.error).length>0&&(0,t.jsxs)(C.Zb,{className:"border-destructive",children:[(0,t.jsx)(C.Ol,{className:"pb-3",children:(0,t.jsxs)(C.ll,{className:"text-sm font-medium text-destructive flex items-center gap-2",children:[(0,t.jsx)(J.Z,{className:"h-4 w-4"}),"Error Details"]})}),(0,t.jsx)(C.aY,{children:(0,t.jsx)(ed.G,{code:JSON.stringify(T.error,null,2)})})]}),(null===(d=T.metadata)||void 0===d?void 0:d.tokens)&&(0,t.jsxs)(C.Zb,{children:[(0,t.jsx)(C.Ol,{className:"pb-3",children:(0,t.jsxs)(C.ll,{className:"text-sm font-medium flex items-center gap-2",children:[(0,t.jsx)(G.Z,{className:"h-4 w-4"}),"Token Usage"]})}),(0,t.jsxs)(C.aY,{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Total Tokens"}),(0,t.jsx)("span",{className:"text-lg font-semibold",children:null!==(p=null===(c=T.metadata.tokens.totalTokens)||void 0===c?void 0:c.toLocaleString())&&void 0!==p?p:"N/A"})]}),(0,t.jsx)("div",{className:"h-px bg-border"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Input"}),(0,t.jsx)("div",{className:"text-base font-medium",children:null!==(j=null===(o=T.metadata.tokens.inputTokens)||void 0===o?void 0:o.toLocaleString())&&void 0!==j?j:"N/A"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:"Output"}),(0,t.jsx)("div",{className:"text-base font-medium",children:null!==(f=null===(x=T.metadata.tokens.outputTokens)||void 0===x?void 0:x.toLocaleString())&&void 0!==f?f:"N/A"})]})]})]})]})]}),(0,t.jsx)(V.nU,{value:"messages",className:"space-y-4",children:(0,t.jsx)(C.Zb,{children:(0,t.jsx)(C.aY,{className:"p-0",children:(0,t.jsx)(ec.ri,{className:"max-h-[600px] overflow-y-auto border-0 rounded-lg bg-muted/30",children:(0,t.jsx)(ec.iG,{className:"px-6 py-4",children:(0,t.jsx)(eo.K,{messages:(null===(u=T.metadata)||void 0===u?void 0:u.messages)||[],config:{marginTopFirstMessage:"mt-0",customAssistantClassnames:"bg-secondary/50 rounded-lg px-3 py-1 border-l-2 border-primary/30"},status:"ready",showActions:!1,writeAccess:!1})})})})})}),(0,t.jsx)(V.nU,{value:"functions",className:"space-y-4",children:(null===(h=T.metadata)||void 0===h?void 0:h.function_results)&&T.metadata.function_results.length>0?(0,t.jsx)("div",{className:"space-y-3",children:T.metadata.function_results.map(e=>{var s,a;return(0,t.jsxs)(C.Zb,{children:[(0,t.jsxs)(C.Ol,{className:"pb-3",children:[(0,t.jsx)(C.ll,{className:"text-base font-medium",children:e.eval_function_name}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground font-mono mt-1",children:e.eval_function_id})]}),(0,t.jsxs)(C.aY,{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Result"}),(0,t.jsx)("span",{className:"text-2xl font-bold",children:null!==(a=null===(s=e.result)||void 0===s?void 0:s.toFixed(2))&&void 0!==a?a:"N/A"})]}),(0,t.jsx)("div",{className:"flex items-center justify-between",children:Object.keys(e.eval_function_config||{}).map(s=>(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsxs)("span",{className:"text-sm text-muted-foreground capitalize",children:[s,":"]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground font-mono mt-1",children:e.eval_function_config[s]})]},s))})]})]},e.id)})}):(0,t.jsx)(C.Zb,{children:(0,t.jsx)(C.aY,{className:"py-8 text-center text-muted-foreground",children:"No eval function results available"})})}),(0,t.jsx)(V.nU,{value:"raw",className:"space-y-4",children:(0,t.jsxs)(C.Zb,{children:[(0,t.jsx)(C.Ol,{children:(0,t.jsx)(C.ll,{className:"text-base",children:"Metadata (JSON)"})}),(0,t.jsx)(C.aY,{children:T.metadata?(0,t.jsx)(ed.G,{code:JSON.stringify(T.metadata,null,2)}):(0,t.jsx)("div",{className:"text-sm text-muted-foreground",children:"No metadata available"})})]})})]})]})}),(0,t.jsx)(Y,{modalKey:"eval-run-modal-table-".concat(y.id),eval_set_id:y.id,open:P,onOpenChange:e=>{I(e),e||Q(null)},existingRun:B,onCreateSuccess:w}),(0,t.jsx)(N.aR,{open:$,onOpenChange:K,children:(0,t.jsxs)(N._T,{children:[(0,t.jsxs)(N.fY,{children:[(0,t.jsx)(N.f$,{children:"Start Eval Run?"}),(0,t.jsxs)(N.yT,{children:["This will schedule all ",(null==W?void 0:W.test_case_ids.length)||0,' test cases in "',null==W?void 0:W.name,'" to be run. The eval run will execute each test case against the configured agent and eval functions.']})]}),(0,t.jsxs)(N.xo,{children:[(0,t.jsx)(N.le,{onClick:()=>ee(null),children:"Cancel"}),(0,t.jsxs)(N.OL,{onClick:()=>{W&&ex({variables:{id:W.id}}),K(!1),ee(null)},disabled:eu,children:[eu&&(0,t.jsx)(m.Z,{className:"mr-2 h-4 w-4 animate-spin"}),"Start Run"]})]})]})})]})}var ex=a(8864),eu=a(88985),eh=a(20653);function ev(e){var s,a,i,o,m,x,u,j,f,N,y,w;let{id:_}=e,{user:k}=(0,l.useContext)(d.S),E=(0,l.useContext)(F.E),[R,T]=(0,l.useState)(!1),{toast:A}=(0,z.pm)(),O=k.super_admin||(null===(s=k.role)||void 0===s?void 0:s.evals)==="read"||(null===(a=k.role)||void 0===a?void 0:a.evals)==="write",M=k.super_admin||(null===(i=k.role)||void 0===i?void 0:i.evals)==="write",[I]=(0,r.D)(S.B4,{onCompleted:e=>{A({title:"Eval run started",description:"Scheduled ".concat(e.runEval.count," test cases to run.")})},onError:e=>{A({title:"Failed to start eval run",description:e.message,variant:"destructive"})}}),{loading:B,data:D}=(0,n.aM)(S.iA,{variables:{id:_},skip:!_}),{loading:V,data:U,refetch:q}=(0,n.aM)(S.i9,{variables:{page:1,limit:100,filters:[{eval_set_id:{eq:_}}]},skip:!_,pollInterval:1e4});if(!O)return(0,t.jsx)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:(0,t.jsxs)(g.bZ,{variant:"destructive",children:[(0,t.jsx)(c.Z,{className:"h-4 w-4"}),(0,t.jsx)(g.X,{children:"You don't have permission to access Eval Runs. Contact your administrator to request access."})]})});if(B)return(0,t.jsxs)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:[(0,t.jsx)(Z.O,{className:"h-8 w-64"}),(0,t.jsx)(Z.O,{className:"h-64 w-full"})]});let X=null==D?void 0:D.eval_setById,J=(null==U?void 0:null===(o=U.eval_runsPagination)||void 0===o?void 0:o.items)||[];return(0,t.jsxs)("div",{className:"flex h-full flex-1 flex-col pb-8",children:[(!(null==E?void 0:null===(m=E.workers)||void 0===m?void 0:m.enabled)||!(null==E?void 0:null===(x=E.workers)||void 0===x?void 0:x.redisHost))&&(0,t.jsxs)(g.bZ,{variant:"destructive",className:"mb-6",children:[(0,t.jsx)(P.Z,{className:"h-4 w-4"}),(0,t.jsx)(g.X,{children:"Workers are not enabled. You can view existing eval runs but cannot create or run new evaluations. Configure Redis to enable running eval runs."})]}),(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)(C.Zb,{children:[(0,t.jsx)(C.Ol,{className:"border-b bg-accent/50",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"p-2 rounded-lg bg-primary/10",children:(0,t.jsx)(p.Z,{className:"h-4 w-4 text-primary"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(C.ll,{children:"Evaluation runs"}),(0,t.jsxs)(C.SZ,{children:["Matrix view of test case scores across eval runs. Click on a completed cell to view detailed results."," "]})]})]}),(0,t.jsx)("div",{className:"flex items-center gap-3",children:M&&(null==E?void 0:null===(u=E.workers)||void 0===u?void 0:u.enabled)&&(null==E?void 0:null===(j=E.workers)||void 0===j?void 0:j.redisHost)&&(0,t.jsxs)(b.z,{size:"sm",onClick:()=>T(!0),children:[(0,t.jsx)(v.Z,{className:"mr-2 h-3 w-3"}),"New Eval Run"]})})]})}),(0,t.jsx)(C.aY,{className:"p-0",children:V?(0,t.jsx)("div",{className:"space-y-2",children:Array.from({length:3}).map((e,s)=>(0,t.jsx)(Z.O,{className:"h-16 w-full"},s))}):0===J.length?(0,t.jsxs)("div",{className:"text-center py-12 text-muted-foreground",children:["No eval runs yet. ",M&&(null==E?void 0:null===(f=E.workers)||void 0===f?void 0:f.enabled)&&(null==E?void 0:null===(N=E.workers)||void 0===N?void 0:N.redisHost)&&"Click 'New Eval Run' to create one."]}):(0,t.jsx)(em,{evalRuns:J,evalSet:X,canWrite:M,onRefetch:q})})]}),(null==E?void 0:null===(y=E.workers)||void 0===y?void 0:y.enabled)&&(null==E?void 0:null===(w=E.workers)||void 0===w?void 0:w.redisHost)&&J.length>0&&(0,t.jsx)(C.Zb,{className:"shadow-lg",children:(0,t.jsxs)(eu.zF,{children:[(0,t.jsx)(C.Ol,{className:"border-b bg-accent/50",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"p-2 rounded-lg bg-primary/10",children:(0,t.jsx)(eh.jVc,{className:"h-4 w-4 text-primary"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(C.ll,{children:"Queue management"}),(0,t.jsxs)(C.SZ,{children:["Manage the queue of eval runs."," "]})]})]}),(0,t.jsx)("div",{className:"flex gap-2",children:(0,t.jsx)(eu.wy,{asChild:!0,children:(0,t.jsxs)(b.z,{variant:"ghost",size:"icon",className:"size-8",children:[(0,t.jsx)(h.Z,{className:"size-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Toggle"})]})})})]})}),(0,t.jsx)(eu.Fw,{children:(0,t.jsx)(ex.R,{queueName:"eval_runs",nameGenerator:e=>{var s,a,t,l;return"Eval Run ".concat((null===(s=e.data)||void 0===s?void 0:s.eval_run_name)||(null===(a=e.data)||void 0===a?void 0:a.eval_run_id)," - Test Case ").concat((null===(t=e.data)||void 0===t?void 0:t.test_case_name)||(null===(l=e.data)||void 0===l?void 0:l.test_case_id))},retryJob:e=>{var s,a,t,l;(null===(s=e.data)||void 0===s?void 0:s.test_case_id)&&(null===(a=e.data)||void 0===a?void 0:a.eval_run_id)&&I({variables:{id:null===(t=e.data)||void 0===t?void 0:t.eval_run_id,test_case_ids:[null===(l=e.data)||void 0===l?void 0:l.test_case_id]}})}})})]})})]}),(0,t.jsx)(Y,{modalKey:"create-eval-run-modal-".concat(_),eval_set_id:_,open:R,onOpenChange:T,onCreateSuccess:()=>{q()}})]})}let ep="force-dynamic";function ej(){var e,s,a,E;let R=(0,i.useParams)(),T=(0,i.useRouter)(),{user:A}=(0,l.useContext)(d.S),{toast:F}=(0,z.pm)(),P=R.id,[I,B]=(0,l.useState)(""),[Y,D]=(0,l.useState)(""),[V,U]=(0,l.useState)([]),[q,X]=(0,l.useState)(!1),[J,L]=(0,l.useState)(!1),[G,H]=(0,l.useState)(null),[Q,$]=(0,l.useState)(null),K=A.super_admin||(null===(e=A.role)||void 0===e?void 0:e.evals)==="read"||(null===(s=A.role)||void 0===s?void 0:s.evals)==="write",W=A.super_admin||(null===(a=A.role)||void 0===a?void 0:a.evals)==="write",{loading:ee,data:es,refetch:ea}=(0,n.aM)(S.iA,{variables:{id:P},skip:!P,onCompleted:e=>{(null==e?void 0:e.eval_setById)&&(B(e.eval_setById.name),D(e.eval_setById.description||""))}}),{data:et,refetch:el}=(0,n.aM)(S.RV,{variables:{page:1,limit:500,filters:[{eval_set_id:{eq:P}}]}}),[ei,{loading:en}]=(0,r.D)(S.vP,{onCompleted:()=>{F({title:"Eval set updated",description:"The eval set has been successfully updated."}),ea()},onError:e=>{F({title:"Failed to update eval set",description:e.message,variant:"destructive"})}}),er=e=>{H(e)},[ed,{loading:ec}]=(0,r.D)(S.Mh,{onError:e=>{F({title:"Failed to update test case",description:e.message,variant:"destructive"})}});if(!K)return(0,t.jsx)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:(0,t.jsxs)(g.bZ,{variant:"destructive",children:[(0,t.jsx)(c.Z,{className:"h-4 w-4"}),(0,t.jsx)(g.X,{children:"You don't have permission to access Eval Sets. Contact your administrator to request access."})]})});if(ee)return(0,t.jsxs)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:[(0,t.jsx)(Z.O,{className:"h-8 w-64"}),(0,t.jsx)(Z.O,{className:"h-64 w-full"})]});let eo=(null==et?void 0:null===(E=et.test_casesPagination)||void 0===E?void 0:E.items)||[];return(0,t.jsxs)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"absolute inset-0 bg-primary/5 rounded-lg blur-xl"}),(0,t.jsxs)("div",{className:"relative flex items-center justify-between p-6 border rounded-lg bg-card/50 backdrop-blur-sm",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(b.z,{variant:"ghost",size:"icon",onClick:()=>T.push("/evals"),children:(0,t.jsx)(o.Z,{className:"h-4 w-4"})}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("h2",{className:"text-2xl font-bold tracking-tight",children:"Edit Eval Set"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"Configure test cases for this evaluation set."})]})]}),(0,t.jsx)("div",{className:"flex gap-2",children:W&&(0,t.jsxs)(b.z,{onClick:()=>{if(!I.trim()){F({title:"Validation error",description:"Name is required.",variant:"destructive"});return}if(V.length>500){F({title:"Validation error",description:"Maximum 500 test cases allowed per eval set.",variant:"destructive"});return}ei({variables:{id:P,data:{name:I.trim(),description:Y.trim()||null}}})},disabled:en,children:[en?(0,t.jsx)(m.Z,{className:"mr-2 h-4 w-4 animate-spin"}):(0,t.jsx)(x.Z,{className:"mr-2 h-4 w-4"}),"Save Changes"]})})]})]}),(0,t.jsx)(C.Zb,{className:"shadow-lg",children:(0,t.jsxs)(eu.zF,{children:[(0,t.jsx)(C.Ol,{className:"border-b bg-accent/50",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"p-2 rounded-lg bg-primary/10",children:(0,t.jsx)(u.Z,{className:"h-4 w-4 text-primary"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(C.ll,{children:"Basic Information"}),(0,t.jsx)(C.SZ,{children:"Edit the name and description of this eval set."})]})]}),(0,t.jsx)(eu.wy,{asChild:!0,children:(0,t.jsxs)(b.z,{variant:"ghost",size:"icon",className:"size-8",children:[(0,t.jsx)(h.Z,{className:"size-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Toggle"})]})})]})}),(0,t.jsx)(eu.Fw,{children:(0,t.jsxs)(C.aY,{className:"space-y-4 pt-6",children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(w._,{htmlFor:"name",className:"text-sm font-semibold",children:"Name *"}),(0,t.jsx)(y.I,{id:"name",placeholder:"Eval set name",value:I,onChange:e=>B(e.target.value),disabled:!W})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(w._,{htmlFor:"description",className:"text-sm font-semibold",children:"Description"}),(0,t.jsx)(_.g,{id:"description",placeholder:"Describe what this eval set tests...",value:Y,onChange:e=>D(e.target.value),disabled:!W,rows:3})]})]})})]})}),(0,t.jsx)(C.Zb,{className:"shadow-lg",children:(0,t.jsxs)(eu.zF,{children:[(0,t.jsx)(C.Ol,{className:"border-b bg-accent/50",children:(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"p-2 rounded-lg bg-primary/10",children:(0,t.jsx)(eh.jVc,{className:"h-4 w-4 text-primary"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(C.ll,{children:"Test Cases"}),(0,t.jsxs)(C.SZ,{children:["Add up to 500 test cases to this eval set."," ",(0,t.jsxs)(k.C,{variant:"secondary",className:"ml-1",children:[eo.length,"/500"]})]})]})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[W&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(b.z,{variant:"outline",size:"sm",onClick:()=>L(!0),children:[(0,t.jsx)(v.Z,{className:"mr-2 h-4 w-4"}),"Create New"]}),(0,t.jsxs)(b.z,{variant:"secondary",size:"sm",onClick:()=>X(!0),disabled:V.length>=500,children:[(0,t.jsx)(v.Z,{className:"mr-2 h-4 w-4"}),"Add Existing"]})]}),(0,t.jsx)(eu.wy,{asChild:!0,children:(0,t.jsxs)(b.z,{variant:"ghost",size:"icon",className:"size-8",children:[(0,t.jsx)(h.Z,{className:"size-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Toggle"})]})})]})]})}),(0,t.jsx)(eu.Fw,{children:(0,t.jsx)(C.aY,{className:"pt-6",children:0===eo.length?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[(0,t.jsx)("div",{className:"p-4 rounded-full bg-primary/10 mb-4",children:(0,t.jsx)(p.Z,{className:"h-8 w-8 text-primary"})}),(0,t.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"No test cases yet"}),(0,t.jsx)("p",{className:"text-muted-foreground max-w-sm",children:'Click "Create New" or "Add Existing" to start building your evaluation set.'})]}):(0,t.jsx)("div",{className:"space-y-3",children:eo.map(e=>(0,t.jsxs)("div",{className:"group relative flex items-center justify-between p-4 border rounded-lg transition-all hover:shadow-md hover:border-primary/50 hover:scale-[1.01] hover:bg-accent/30",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"p-1.5 rounded bg-primary/10",children:(0,t.jsx)(u.Z,{className:"h-3.5 w-3.5 text-primary"})}),(0,t.jsx)("span",{className:"font-semibold",children:e.name})]}),e.description&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground mt-2 ml-8",children:e.description})]}),W&&(0,t.jsxs)("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,t.jsxs)(b.z,{variant:"ghost",size:"sm",onClick:()=>{$(e),L(!0)},className:"hover:bg-primary/10",children:[(0,t.jsx)(j.Z,{className:"mr-1 h-3.5 w-3.5"}),"Edit"]}),(0,t.jsxs)(b.z,{variant:"ghost",size:"sm",onClick:()=>er(e.id),className:"hover:bg-destructive/10 hover:text-destructive",children:[(0,t.jsx)(f.Z,{className:"mr-1 h-3.5 w-3.5"}),"Remove"]})]})]},e.id))})})})]})}),(0,t.jsx)(ev,{id:P}),(0,t.jsx)(O,{open:q,onClose:()=>X(!1),onSelect:e=>{let s=Array.from(new Set([...V,...e]));if(s.length>500){F({title:"Too many test cases",description:"Maximum 500 test cases allowed per eval set.",variant:"destructive"});return}for(let e of(console.log("newTestCases",s),s))ed({variables:{id:e,data:{eval_set_id:P}}});el(),X(!1)},excludeIds:V}),(0,t.jsx)(M.F,{open:J,onClose:()=>L(!1),evalSetId:P,onSuccess:()=>{L(!1),el(),ea()},testCase:Q}),(0,t.jsx)(N.aR,{open:!!G,onOpenChange:e=>!e&&H(null),children:(0,t.jsxs)(N._T,{children:[(0,t.jsxs)(N.fY,{children:[(0,t.jsx)(N.f$,{children:"Remove test case from eval set?"}),(0,t.jsx)(N.yT,{children:"This will remove the test case from this eval set. The test case itself will not be deleted and can be added back later."})]}),(0,t.jsxs)(N.xo,{children:[(0,t.jsx)(N.le,{children:"Cancel"}),(0,t.jsx)(N.OL,{onClick:()=>{G&&ed({variables:{id:G,data:{eval_set_id:null}},onCompleted:()=>{F({title:"Test case removed",description:"The test case has been removed from this eval set."}),el(),H(null)}})},children:"Remove"})]})]})})]})}},68656:function(e,s,a){"use strict";a.d(s,{J:function(){return j}});var t=a(57437);a(2265);var l=a(26110),i=a(77992),n=a(35629),r=a(62869),d=a(81103),c=a(94508);let o=e=>{let{className:s,...a}=e;return(0,t.jsx)("div",{className:(0,c.cn)("flex flex-col overflow-hidden rounded-lg border bg-background shadow-sm",s),...a})},m=e=>{let{className:s,...a}=e;return(0,t.jsx)("div",{className:(0,c.cn)("flex items-center justify-between border-b bg-muted/50 px-4 py-3",s),...a})},x=e=>{let{className:s,...a}=e;return(0,t.jsx)("div",{className:(0,c.cn)("flex items-center gap-1",s),...a})},u=e=>{let{tooltip:s,label:a,icon:l,children:i,className:n,size:o="sm",variant:m="ghost",...x}=e,u=(0,t.jsxs)(r.z,{className:(0,c.cn)("size-8 p-0 text-muted-foreground hover:text-foreground",n),size:o,type:"button",variant:m,...x,children:[l?(0,t.jsx)(l,{className:"size-4"}):i,(0,t.jsx)("span",{className:"sr-only",children:a||s})]});return s?(0,t.jsx)(d.pn,{children:(0,t.jsxs)(d.u,{children:[(0,t.jsx)(d.aJ,{asChild:!0,children:u}),(0,t.jsx)(d._v,{children:(0,t.jsx)("p",{children:s})})]})}):u},h=e=>{let{className:s,...a}=e;return(0,t.jsx)("div",{className:(0,c.cn)("flex-1 overflow-auto p-4",s),...a})};var v=a(33245),p=a(78867);function j(e){let{text:s,sliceLength:a}=e,{toast:r}=(0,i.pm)();return(0,t.jsxs)(l.Vq,{children:[(0,t.jsx)(l.hg,{asChild:!0,children:(0,t.jsxs)("button",{className:"cursor-pointer text-sm text-left w-full hover:bg-accent/50 transition-colors rounded-md p-2 group",children:[(0,t.jsxs)("span",{className:"block",children:[null==s?void 0:s.slice(0,null!=a?a:200),a&&s.length>a?"...":""]}),(0,t.jsxs)("span",{className:"flex items-center gap-1 text-xs text-muted-foreground mt-1 group-hover:text-foreground transition-colors",children:[(0,t.jsx)(v.Z,{className:"w-3 h-3"}),"Click to view full text"]})]})}),(0,t.jsx)(l.cZ,{className:"sm:max-w-[800px] max-h-[500px] overflow-y-scroll",children:(0,t.jsxs)(o,{children:[(0,t.jsx)(m,{children:(0,t.jsx)(x,{children:(0,t.jsx)(u,{icon:p.Z,label:"Copy",tooltip:"Copy to clipboard",onClick:async()=>{await navigator.clipboard.writeText(s),r({title:"Copied to clipboard"})}})})}),(0,t.jsx)(h,{children:(0,t.jsx)(n.H,{children:s})})]})})]})}},19060:function(e,s,a){"use strict";a.d(s,{X:function(){return d}});var t=a(57437),l=a(9270),i=a(30401),n=a(2265),r=a(94508);let d=n.forwardRef((e,s)=>{let{className:a,...n}=e;return(0,t.jsx)(l.fC,{ref:s,className:(0,r.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",a),...n,children:(0,t.jsx)(l.z$,{className:(0,r.cn)("flex items-center justify-center text-current"),children:(0,t.jsx)(i.Z,{className:"size-4"})})})});d.displayName=l.fC.displayName},10492:function(e,s,a){"use strict";a.d(s,{g:function(){return i}});var t=a(57437),l=a(94508);let i=e=>{let{className:s}=e;return(0,t.jsxs)("svg",{"aria-hidden":"true",role:"status",className:(0,l.cn)("inline w-4 h-4 text-white animate-spin fill-inherit",s),viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",className:"fill-inherit opacity-20"}),(0,t.jsx)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",className:"fill-inherit"})]})}},53647:function(e,s,a){"use strict";a.d(s,{Bw:function(){return v},Ph:function(){return o},Ql:function(){return p},i4:function(){return x},ki:function(){return m}});var t=a(57437),l=a(46943),i=a(40875),n=a(22135),r=a(30401),d=a(2265),c=a(94508);let o=l.fC;l.ZA;let m=l.B4,x=d.forwardRef((e,s)=>{let{className:a,children:n,...r}=e;return(0,t.jsxs)(l.xz,{ref:s,className:(0,c.cn)("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...r,children:[n,(0,t.jsx)(l.JO,{asChild:!0,children:(0,t.jsx)(i.Z,{className:"size-4 opacity-50"})})]})});x.displayName=l.xz.displayName;let u=d.forwardRef((e,s)=>{let{className:a,...i}=e;return(0,t.jsx)(l.u_,{ref:s,className:(0,c.cn)("flex cursor-default items-center justify-center py-1",a),...i,children:(0,t.jsx)(n.Z,{className:"size-4"})})});u.displayName=l.u_.displayName;let h=d.forwardRef((e,s)=>{let{className:a,...n}=e;return(0,t.jsx)(l.$G,{ref:s,className:(0,c.cn)("flex cursor-default items-center justify-center py-1",a),...n,children:(0,t.jsx)(i.Z,{className:"size-4"})})});h.displayName=l.$G.displayName;let v=d.forwardRef((e,s)=>{let{className:a,children:i,position:n="popper",...r}=e;return(0,t.jsx)(l.h_,{children:(0,t.jsxs)(l.VY,{ref:s,className:(0,c.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===n&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:n,...r,children:[(0,t.jsx)(u,{}),(0,t.jsx)(l.l_,{className:(0,c.cn)("p-1","popper"===n&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:i}),(0,t.jsx)(h,{})]})})});v.displayName=l.VY.displayName,d.forwardRef((e,s)=>{let{className:a,...i}=e;return(0,t.jsx)(l.__,{ref:s,className:(0,c.cn)("py-1.5 pl-8 pr-2 text-sm font-semibold",a),...i})}).displayName=l.__.displayName;let p=d.forwardRef((e,s)=>{let{className:a,children:i,...n}=e;return(0,t.jsxs)(l.ck,{ref:s,className:(0,c.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...n,children:[(0,t.jsx)("span",{className:"absolute left-2 flex size-3.5 items-center justify-center",children:(0,t.jsx)(l.wU,{children:(0,t.jsx)(r.Z,{className:"size-4"})})}),(0,t.jsx)(l.eT,{children:i})]})});p.displayName=l.ck.displayName,d.forwardRef((e,s)=>{let{className:a,...i}=e;return(0,t.jsx)(l.Z0,{ref:s,className:(0,c.cn)("-mx-1 my-1 h-px bg-muted",a),...i})}).displayName=l.Z0.displayName}},function(e){e.O(0,[6840,329,8310,3954,5874,7690,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,605,4567,1206,5338,3825,1785,5110,1713,1425,4811,7107,3145,7856,8269,6373,3832,3750,1685,9105,2971,2117,1744],function(){return e(e.s=74083)}),_N_E=e.O()}]);
|
|
2
|
-
//# sourceMappingURL=page-c1e7e0c81ca508c3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/evals/[id]/page-c1e7e0c81ca508c3.js","mappings":"sFAAAA,QAAAC,OAAA,GAAAC,IAAA,CAAAC,EAAAC,IAAA,CAAAD,EAAA,+cC8BO,SAASE,EAAuBC,CAKT,MAoBVC,KAzBmB,CACrCC,KAAAA,CAAI,CACJC,QAAAA,CAAO,CACPC,SAAAA,CAAQ,CACRC,WAAAA,EAAa,EAAE,CACa,CALSL,EAM/B,CAACM,EAAQC,EAAU,CAAGC,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAC/B,CAACC,EAAaC,EAAe,CAAGF,CAAAA,EAAAA,EAAAA,QAAAA,EAAmB,EAAE,EAErD,CAAEG,QAAAA,CAAO,CAAEV,KAAAA,CAAI,CAAE,CAAGW,CAAAA,EAAAA,EAAAA,EAAAA,EAASC,EAAAA,EAAcA,CAAE,CACjDC,UAAW,CACTC,KAAM,EACNC,MAAO,IACPC,QAASX,EAAS,CAAC,CAAEY,IAAK,CAAC,CAAEC,KAAM,CAAEC,SAAUd,CAAO,CAAE,EAAG,CAAEe,YAAa,CAAEC,GAAI,IAAK,CAAE,EAAE,EAAG,CAAG,CAAC,CAAED,YAAa,CAAEC,GAAI,IAAK,CAAE,EAAE,EAEhIC,KAAM,CAACrB,CACT,GAEAsB,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACHtB,IACHQ,EAAe,EAAE,EACjBH,EAAU,IAEd,EAAG,CAACL,EAAK,EAGT,IAAMuB,EAAqBC,CADTzB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAM0B,oBAAoB,GAA1B1B,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAA4B2B,KAAK,GAAI,EAAE,EACpBC,MAAM,CAAC,GAAa,CAACxB,EAAWyB,QAAQ,CAACC,EAAGC,EAAE,GAE7EC,EAAe,IACnBvB,EAAewB,GACbA,EAAKJ,QAAQ,CAACE,GACVE,EAAKL,MAAM,CAACM,GAAKA,IAAMH,GACvB,IAAIE,EAAMF,EAAG,CAErB,EAcA,MACE,GAAAI,EAAAC,GAAA,EAACC,EAAAA,EAAMA,CAAAA,CAACpC,KAAMA,EAAMqC,aAAcpC,WAChC,GAAAiC,EAAAI,IAAA,EAACC,EAAAA,EAAaA,CAAAA,CAACC,UAAU,iDACvB,GAAAN,EAAAI,IAAA,EAACG,EAAAA,EAAYA,CAAAA,WACX,GAAAP,EAAAC,GAAA,EAACO,EAAAA,EAAWA,CAAAA,UAAC,mBACb,GAAAR,EAAAC,GAAA,EAACQ,EAAAA,EAAiBA,CAAAA,UAAC,oFAGnB,GAAAT,EAAAC,GAAA,EAACS,EAAAA,EAAKA,CAAAA,CAACC,QAAQ,cAAcL,UAAU,gBACrC,GAAAN,EAAAI,IAAA,EAACQ,EAAAA,CAAgBA,CAAAA,WACf,GAAAZ,EAAAC,GAAA,EAACY,SAAAA,UAAO,UAAc,+JAK5B,GAAAb,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,2DAEb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,qBACb,GAAAN,EAAAC,GAAA,EAACc,EAAAA,CAAMA,CAAAA,CAACT,UAAU,qFAClB,GAAAN,EAAAC,GAAA,EAACe,EAAAA,CAAKA,CAAAA,CACJC,YAAY,+BACZC,MAAOhD,EACPiD,SAAU,GAAOhD,EAAUiD,EAAEC,MAAM,CAACH,KAAK,EACzCZ,UAAU,YAKbjB,EAAmBiC,MAAM,CAAG,GAC3B,GAAAtB,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,yCACb,GAAAN,EAAAC,GAAA,EAACsB,EAAAA,CAAQA,CAAAA,CACP3B,GAAG,wBACH4B,QAASnD,EAAYiD,MAAM,GAAKjC,EAAmBiC,MAAM,EAAIjC,EAAmBiC,MAAM,CAAG,EACzFG,gBA7CU,KAClBpD,EAAYiD,MAAM,GAAKjC,EAAmBiC,MAAM,CAClDhD,EAAe,EAAE,EAEjBA,EAAee,EAAmBqC,GAAG,CAAC,GAAa/B,EAAGC,EAAE,EAE5D,IAyCY,GAAAI,EAAAI,IAAA,EAACuB,EAAAA,CAAKA,CAAAA,CAACC,QAAQ,wBAAwBtB,UAAU,0CAAgC,eAClEjC,EAAYiD,MAAM,CAAC,mBAMtC,GAAAtB,EAAAC,GAAA,EAAC4B,EAAAA,CAAUA,CAAAA,CAACvB,UAAU,oCACpB,GAAAN,EAAAC,GAAA,EAACa,MAAAA,UACEvC,EACCuD,MAAMC,IAAI,CAAC,CAAET,OAAQ,CAAE,GAAGI,GAAG,CAAC,CAACM,EAAGC,IAChC,GAAAjC,EAAAC,GAAA,EAACiC,EAAAA,CAAQA,CAAAA,CAAS5B,UAAU,eAAb2B,IAEf5C,IAAAA,EAAmBiC,MAAM,CAC3B,GAAAtB,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,wDACZpC,EAAS,4CAA8C,oCAG1DmB,EAAmBqC,GAAG,CAAC,GACrB,GAAA1B,EAAAI,IAAA,EAACU,MAAAA,CAECqB,QAAS,KACPtC,EAAauC,EAASxC,EAAE,CAC1B,EACAU,UAAU,yDAEV,GAAAN,EAAAC,GAAA,EAACsB,EAAAA,CAAQA,CAAAA,CACPC,QAASnD,EAAYqB,QAAQ,CAAC0C,EAASxC,EAAE,EACzCA,GAAI,oBAAgCyC,MAAA,CAAZD,EAASxC,EAAE,EACnC6B,gBAAiB,IAAM5B,EAAauC,EAASxC,EAAE,IAEjD,GAAAI,EAAAI,IAAA,EAACuB,EAAAA,CAAKA,CAAAA,CAACC,QAAS,oBAAgCS,MAAA,CAAZD,EAASxC,EAAE,EAAIU,UAAU,wDAC3D,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,UAAMF,EAASrD,IAAI,GACpB,GAAAiB,EAAAC,GAAA,EAACsC,QAAAA,UAAOH,EAASI,WAAW,QAbzBJ,EAASxC,EAAE,UAsB5B,GAAAI,EAAAI,IAAA,EAACqC,EAAAA,EAAYA,CAAAA,WACX,GAAAzC,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CAAC/B,QAAQ,UAAUwB,QAASpE,WAAS,WAG5C,GAAAiC,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CACLP,QAtFW,KACnBnE,EAASK,EACX,EAqFUsE,SAAUtE,IAAAA,EAAYiD,MAAM,WAC7B,OACMjD,EAAYiD,MAAM,CAAC,aAAWjD,IAAAA,EAAYiD,MAAM,CAAS,IAAM,aAMhF,2DC/HO,SAASsB,EAAmBhF,CAOT,MA6DFiF,EA4LHC,EAAAA,EAgBuCC,EAAAA,EAuBLA,EAAAA,EAKlCA,EAAAA,KA5Sc,CACjCC,SAAAA,CAAQ,CACR/D,YAAAA,CAAW,CACXgE,gBAAAA,CAAe,CACfC,YAAAA,EAAc,IAAI,CAClBpF,KAAAA,CAAI,CACJqC,aAAAA,CAAY,CACY,CAPSvC,EAQ3B,CAAEuF,MAAAA,CAAK,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,IACZC,EAAY,CAAC,CAACH,GAAe,CAAC,CAACA,EAAYtD,EAAE,CAE7C,CAAC0D,EAASC,EAAW,CAAGnF,CAAAA,EAAAA,EAAAA,QAAAA,EAAkB,CAC9CwB,GAAI,GACJb,KAAM,GACNyE,YAAa,UACbC,UAAW,GACXC,UAAW,GACXzE,YAAAA,EACA0E,SAAU,GACVC,eAAgB,EAAE,CAClBC,eAAgB,UAChBC,eAAgB,GAChBC,mBAAoB,IACpBC,cAAe,EAAE,GAInB5E,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACJ8D,EACFK,EAAWL,GAEXK,EAAW,CACT3D,GAAI,GACJb,KAAM,GACNyE,YAAa,UACbC,UAAW,GACXC,UAAW,GACXzE,YAAAA,EACA0E,SAAU,GACVC,eAAgB,EAAE,CAClBC,eAAgB,UAChBC,eAAgB,GAChBC,mBAAoB,IACpBC,cAAe,EAAE,EAGvB,EAAG,CAACd,EAAajE,EAAY,EAG7B,GAAM,CAAEpB,KAAMiF,CAAU,CAAE,CAAGtE,CAAAA,EAAAA,EAAAA,EAAAA,EAASyF,EAAAA,EAAUA,CAAE,CAChDvF,UAAW,CAAEC,KAAM,EAAGC,MAAO,IAAKC,QAAS,EAAE,EAC7CM,KAAM,CAACF,CACT,GAEM,CAAEpB,KAAMkF,CAAiB,CAAE,CAAGvE,CAAAA,EAAAA,EAAAA,EAAAA,EAAS0F,EAAAA,EAAkBA,CAAE,CAC/D/E,KAAM,CAACF,CACT,GAGM,CAAEpB,KAAMgF,CAAa,CAAE,CAAGrE,CAAAA,EAAAA,EAAAA,EAAAA,EAASC,EAAAA,EAAcA,CAAE,CACvDC,UAAW,CACTC,KAAM,EACNC,MAAO,IACPC,QAAS,CAAC,CAAEI,YAAa,CAAEC,GAAID,CAAY,CAAE,EAAE,EAEjDE,KAAM,CAACF,CACT,GAEMkF,EAAgBtB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAetD,oBAAoB,GAAnCsD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAqCrD,KAAK,GAAI,EAAE,CAEhE,CAAC4E,EAAe,CAAE7F,QAAS8F,CAAa,CAAE,CAAC,CAAGC,CAAAA,EAAAA,EAAAA,CAAAA,EAAYC,EAAAA,EAAeA,CAAE,CAC/EC,YAAa,KACXrB,EAAM,CACJsB,MAAO,mBACPjC,YAAa,iEACf,GACIS,GACFA,IAEF9C,EAAa,GACf,EACAuE,QAAS,IACPvB,EAAM,CACJsB,MAAO,4BACPjC,YAAamC,EAAMC,OAAO,CAC1BjE,QAAS,aACX,EACF,CACF,GAEM,CAACkE,EAAe,CAAEtG,QAASuG,CAAa,CAAE,CAAC,CAAGR,CAAAA,EAAAA,EAAAA,CAAAA,EAAYS,EAAAA,EAAeA,CAAE,CAC/EP,YAAa,KACXrB,EAAM,CACJsB,MAAO,mBACPjC,YAAa,6CACf,GACIS,GACFA,IAEF9C,EAAa,GACf,EACAuE,QAAS,IACPvB,EAAM,CACJsB,MAAO,4BACPjC,YAAamC,EAAMC,OAAO,CAC1BjE,QAAS,aACX,EACF,CACF,GAEMpC,EAAU8F,GAAiBS,EAE3BE,EAAuB,IAC3BzB,EAAWzD,GAAS,EAClB,GAAGA,CAAI,CACPkE,cAAelE,EAAKkE,aAAa,CAACtE,QAAQ,CAACuF,GACvCnF,EAAKkE,aAAa,CAACvE,MAAM,CAACG,GAAMA,IAAOqF,GACvC,IAAInF,EAAKkE,aAAa,CAAEiB,EAAW,CACzC,EACF,EAEMC,EAA2B,KAC/B3B,EAAWzD,GAAS,EAClB,GAAGA,CAAI,CACPkE,cAAelE,EAAKkE,aAAa,CAAC1C,MAAM,GAAK6C,EAAc7C,MAAM,CAC7D,EAAE,CACF6C,EAAczC,GAAG,CAAC,GAAa/B,EAAGC,EAAE,CAC1C,GACF,EAEMuF,EAA2B,IAC/B5B,EAAWzD,GAAS,EAClB,GAAGA,CAAI,CACP8D,eAAgB9D,EAAK8D,cAAc,CAACwB,IAAI,CAACC,GAAMA,EAAGzF,EAAE,GAAK0F,EAAa1F,EAAE,EACpEE,EAAK8D,cAAc,CAACnE,MAAM,CAAC4F,GAAMA,EAAGzF,EAAE,GAAK0F,EAAa1F,EAAE,EAC1D,IAAIE,EAAK8D,cAAc,CAAE,CAAE,GAAG0B,CAAY,CAAEC,OAAQ,CAAC,CAAE,EAAE,CAC/D,EACF,EA6EA,MACE,GAAAvF,EAAAC,GAAA,EAACC,EAAAA,EAAMA,CAAAA,CAAgBpC,KAAMA,EAAMqC,aAAcA,WAC/C,GAAAH,EAAAI,IAAA,EAACC,EAAAA,EAAaA,CAAAA,CAACC,UAAU,6CACvB,GAAAN,EAAAI,IAAA,EAACG,EAAAA,EAAYA,CAAAA,WACX,GAAAP,EAAAC,GAAA,EAACO,EAAAA,EAAWA,CAAAA,UAAE6C,EAAY,gBAAkB,oBAC5C,GAAArD,EAAAC,GAAA,EAACQ,EAAAA,EAAiBA,CAAAA,UACf4C,EAAY,8CAAgD,yDAGjE,GAAArD,EAAAI,IAAA,EAACoF,OAAAA,CAAKC,SApFS,QAoDRnC,EACAA,EACGA,EAjDd,GAJAlC,EAAEsE,cAAc,GAEhBC,QAAQC,GAAG,CAAC,mBAAoBtC,GAE5B,CAACA,EAAQvE,IAAI,CAAE,CACjBoE,EAAM,CACJsB,MAAO,mBACPjC,YAAa,yCACb7B,QAAS,aACX,GACA,MACF,CAEA,GAAI,CAAC2C,EAAQK,QAAQ,CAAE,CACrBR,EAAM,CACJsB,MAAO,mBACPjC,YAAa,0BACb7B,QAAS,aACX,GACA,MACF,CAEA,GAAI2C,IAAAA,EAAQU,aAAa,CAAC1C,MAAM,CAAQ,CACtC6B,EAAM,CACJsB,MAAO,mBACPjC,YAAa,wCACb7B,QAAS,aACX,GACA,MACF,CAEA,GAAI2C,IAAAA,EAAQM,cAAc,CAACtC,MAAM,CAAQ,CACvC6B,EAAM,CACJsB,MAAO,mBACPjC,YAAa,4CACb7B,QAAS,aACX,GACA,MACF,CAEA,IAAM9C,EAAO,CACXkB,KAAMuE,EAAQvE,IAAI,CAClBE,YAAAA,EACA0E,SAAUL,EAAQK,QAAQ,CAC1BK,cAAeV,EAAQU,aAAa,CACpCJ,eAAgBN,EAAQM,cAAc,CACtCC,eAAgBP,EAAQO,cAAc,CAACgC,WAAW,GAClD/B,eAAgBR,EAAQQ,cAAc,CACtCC,mBAAoBT,EAAQS,kBAAkB,CAC9CP,YAAaF,EAAQE,WAAW,CAChCsC,KAAM,CACJC,MAAK,OAAEzC,CAAAA,EAAAA,EAAQwC,IAAI,GAAZxC,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAcyC,KAAK,CAC1BC,MAAK,OAAE1C,CAAAA,EAAAA,EAAQwC,IAAI,GAAZxC,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAc0C,KAAK,CAC1BC,SAAQ,OAAE3C,CAAAA,EAAAA,EAAQwC,IAAI,GAAZxC,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAc2C,QAAQ,CAEpC,EAEI5C,EACFwB,EAAc,CACZnG,UAAW,CACTkB,GAAI0D,EAAQ1D,EAAE,CACd/B,KAAAA,CACF,CACF,GAEAuG,EAAc,CACZ1F,UAAW,CACTb,KAAAA,CACF,CACF,EAGJ,EAWoCyC,UAAU,yCACtC,GAAAN,EAAAC,GAAA,EAAC4B,EAAAA,CAAUA,CAAAA,CAACvB,UAAU,6BACpB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,2BAEb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mCACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACiG,KAAAA,CAAG5F,UAAU,iCAAwB,SACtC,GAAAN,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,yCAAgC,+CAGjD,GAAAN,EAAAC,GAAA,EAACe,EAAAA,CAAKA,CAAAA,CACJoF,KAAK,OACLnF,YAAY,kCACZC,MAAOoC,EAAQvE,IAAI,CACnBoC,SAAU,GAAOoC,EAAWzD,GAAS,EAAE,GAAGA,CAAI,CAAEf,KAAMqC,EAAEC,MAAM,CAACH,KAAK,CAAC,GACrEZ,UAAU,YAGd,GAAAN,EAAAC,GAAA,EAACoG,EAAAA,CAASA,CAAAA,CAAAA,GAEV,GAAArG,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mCACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACiG,KAAAA,CAAG5F,UAAU,iCAAwB,UACtC,GAAAN,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,yCAAgC,wCAGjD,GAAAN,EAAAI,IAAA,EAACkG,EAAAA,EAAMA,CAAAA,CAACpF,MAAOoC,EAAQK,QAAQ,CAAE4C,cAAe,GAAmBhD,EAAWzD,GAAS,EAAE,GAAGA,CAAI,CAAE6D,SAAUzC,CAAM,cAChH,GAAAlB,EAAAC,GAAA,EAACuG,EAAAA,EAAaA,CAAAA,CAAClG,UAAU,gBACvB,GAAAN,EAAAC,GAAA,EAACwG,EAAAA,EAAWA,CAAAA,CAACxF,YAAY,yBAE3B,GAAAjB,EAAAC,GAAA,EAACyG,EAAAA,EAAaA,CAAAA,UACX5D,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAY6D,gBAAgB,GAA5B7D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAA8BtD,KAAK,GAAnCsD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAqCpB,GAAG,CAAC,GACxC,GAAA1B,EAAAC,GAAA,EAAC2G,EAAAA,EAAUA,CAAAA,CAAgB1F,MAAO2F,EAAMjH,EAAE,UACvCiH,EAAM9H,IAAI,EADI8H,EAAMjH,EAAE,WAOjC,GAAAI,EAAAC,GAAA,EAACoG,EAAAA,CAASA,CAAAA,CAAAA,GAEV,GAAArG,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mCACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACiG,KAAAA,CAAG5F,UAAU,iCAAwB,mBACtC,GAAAN,EAAAI,IAAA,EAAC+F,IAAAA,CAAE7F,UAAU,0CACVgD,EAAQM,cAAc,CAACtC,MAAM,CAAC,OAAKyB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAmB+D,KAAK,GAAxB/D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAA0BvD,KAAK,GAA/BuD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiCzB,MAAM,GAAI,EAAE,oBAIvF,GAAAtB,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CACL0D,KAAK,SACLzF,QAAQ,UACRoG,KAAK,KACL5E,QAAS,QAE+BY,EAAAA,EADtC3B,EAAE4F,eAAe,GACb1D,EAAQM,cAAc,CAACtC,MAAM,GAAKyB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAmB+D,KAAK,GAAxB/D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAA0BvD,KAAK,GAA/BuD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiCzB,MAAM,EAC3EiC,EAAWzD,GAAS,EAClB,GAAGA,CAAI,CACP8D,eAAgB,EAAE,CACpB,GAEAL,EAAWzD,QAEOiD,EAAAA,QAFE,CAClB,GAAGjD,CAAI,CACP8D,eAAgBb,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAmB+D,KAAK,GAAxB/D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAA0BvD,KAAK,GAA/BuD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiCrB,GAAG,CAAC,GAAc,EAAE9B,GAAIwB,EAAExB,EAAE,CAAEb,KAAMqC,EAAErC,IAAI,CAAEwG,OAAQ,CAAC,CAAE,MAAO,EAAE,GAGvH,WAECjC,EAAQM,cAAc,CAACtC,MAAM,GAAKyB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAmB+D,KAAK,GAAxB/D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAA0BvD,KAAK,GAA/BuD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiCzB,MAAM,EAAG,eAAiB,kBAGlG,GAAAtB,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qCACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,yBACZyC,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAmB+D,KAAK,GAAxB/D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAA0BvD,KAAK,GAA/BuD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiCrB,GAAG,CAAC,GACpC,GAAA1B,EAAAI,IAAA,EAAC6G,QAAAA,CAECrF,QAAS,QAAiBS,MAAA,CAAT6E,EAAMtH,EAAE,EACzBU,UAAU,iJAEV,GAAAN,EAAAC,GAAA,EAACsB,EAAAA,CAAQA,CAAAA,CACP3B,GAAI,QAAiByC,MAAA,CAAT6E,EAAMtH,EAAE,EACpB4B,QAAS8B,EAAQM,cAAc,CAACwB,IAAI,CAACC,GAAMA,EAAGzF,EAAE,GAAKsH,EAAMtH,EAAE,EAC7D6B,gBAAiB,IAAM0D,EAAyB,CAAEvF,GAAIsH,EAAMtH,EAAE,CAAEb,KAAMmI,EAAMnI,IAAI,GAChFuB,UAAU,WAEZ,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,2BACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mCACb,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,+BAAuB4G,EAAMnI,IAAI,KAElDmI,EAAM1E,WAAW,EAChB,GAAAxC,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,2DACV4G,EAAM1E,WAAW,GAGrB0E,EAAM3B,MAAM,EAAI2B,EAAM3B,MAAM,CAACjE,MAAM,CAAG,GAAKgC,EAAQM,cAAc,CAACwB,IAAI,CAACC,GAAMA,EAAGzF,EAAE,GAAKsH,EAAMtH,EAAE,GAC9F,GAAAI,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,yCACb,GAAAN,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,qDAA4C,kBACxD4G,EAAM3B,MAAM,CAAC7D,GAAG,CAAC,QAQL4B,EAAAA,QAPX,GAAAtD,EAAAI,IAAA,EAACU,MAAAA,CAAsBR,UAAU,wBAC/B,GAAAN,EAAAC,GAAA,EAAC0B,EAAAA,CAAKA,CAAAA,CAACC,QAAS,GAAe2D,MAAAA,CAAZ2B,EAAMtH,EAAE,CAAC,KAAeyC,MAAA,CAAZkD,EAAOxG,IAAI,EAAIuB,UAAU,+BACrDiF,EAAOxG,IAAI,GAEd,GAAAiB,EAAAC,GAAA,EAACkH,EAAAA,CAAQA,CAAAA,CACPvH,GAAI,GAAe2F,MAAAA,CAAZ2B,EAAMtH,EAAE,CAAC,KAAeyC,MAAA,CAAZkD,EAAOxG,IAAI,EAC9BkC,YAAasE,EAAO/C,WAAW,CAC/BtB,MAAOoC,CAAAA,OAAAA,CAAAA,EAAAA,EAAQM,cAAc,CAACwD,IAAI,CAAC/B,GAAMA,EAAGzF,EAAE,GAAKsH,EAAMtH,EAAE,IAApD0D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAuDiC,MAAM,GAA7DjC,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,CAA+D,CAACiC,EAAOxG,IAAI,CAAC,GAAI,GACvFoC,SAAU,IACRC,EAAE4F,eAAe,GACjBzD,EAAWzD,GAAS,EAAE,GAAGA,CAAI,CAAE8D,eAAgB9D,EAAK8D,cAAc,CAAClC,GAAG,CAAC2D,GAAMA,EAAGzF,EAAE,GAAKsH,EAAMtH,EAAE,CAAG,CAAE,GAAGyF,CAAE,CAAEE,OAAQ,CAAE,GAAGF,EAAGE,MAAM,CAAE,CAACA,EAAOxG,IAAI,CAAC,CAAEqC,EAAEC,MAAM,CAACH,KAAK,CAAG,EAAImE,EAAI,GAC7K,EACAlD,QAAS,GAAOf,EAAE4F,eAAe,GACjC1G,UAAU,qCAEXiF,EAAO/C,WAAW,EACjB,GAAAxC,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,yDACViF,EAAO/C,WAAW,KAjBf+C,EAAOxG,IAAI,YAvBxBmI,EAAMtH,EAAE,UAsDvB,GAAAI,EAAAC,GAAA,EAACoG,EAAAA,CAASA,CAAAA,CAAAA,GAGV,GAAArG,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mCACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACiG,KAAAA,CAAG5F,UAAU,iCAAwB,eACtC,GAAAN,EAAAI,IAAA,EAAC+F,IAAAA,CAAE7F,UAAU,0CACVgD,EAAQU,aAAa,CAAC1C,MAAM,CAAC,OAAK6C,EAAc7C,MAAM,CAAC,oBAI9D,GAAAtB,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CACL0D,KAAK,SACLzF,QAAQ,UACRoG,KAAK,KACL5E,QAAS,IACPf,EAAE4F,eAAe,GACjB9B,GACF,WAEC5B,EAAQU,aAAa,CAAC1C,MAAM,GAAK6C,EAAc7C,MAAM,CAAG,eAAiB,kBAG9E,GAAAtB,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qCACb,GAAAN,EAAAC,GAAA,EAAC4B,EAAAA,CAAUA,CAAAA,CAACvB,UAAU,qBACpB,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,yBACZ6D,EAAczC,GAAG,CAAC,QAgBRU,QAfT,GAAApC,EAAAI,IAAA,EAAC6G,QAAAA,CAECrF,QAAS,aAAyBS,MAAA,CAAZD,EAASxC,EAAE,EACjCU,UAAU,iJAEV,GAAAN,EAAAC,GAAA,EAACsB,EAAAA,CAAQA,CAAAA,CACP3B,GAAI,aAAyByC,MAAA,CAAZD,EAASxC,EAAE,EAC5B4B,QAAS8B,EAAQU,aAAa,CAACtE,QAAQ,CAAC0C,EAASxC,EAAE,EACnD6B,gBAAiB,IAAMuD,EAAqB5C,EAASxC,EAAE,EACvDU,UAAU,WAEZ,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,2BACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,+BAAuB8B,EAASrD,IAAI,GACpD,GAAAiB,EAAAI,IAAA,EAACiH,EAAAA,CAAKA,CAAAA,CAAC1G,QAAQ,YAAYL,UAAU,iCAClC8B,CAAAA,OAAAA,CAAAA,EAAAA,EAASkF,MAAM,GAAflF,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBd,MAAM,GAAI,EAAE,cAGjCc,EAASI,WAAW,EACnB,GAAAxC,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,2DACV8B,EAASI,WAAW,QAnBtBJ,EAASxC,EAAE,aA6B5B,GAAAI,EAAAC,GAAA,EAACoG,EAAAA,CAASA,CAAAA,CAAAA,GAEV,GAAArG,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mCACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACiG,KAAAA,CAAG5F,UAAU,iCAAwB,YACtC,GAAAN,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,yCAAgC,6CAGjD,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,qEACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAC,GAAA,EAAC0B,EAAAA,CAAKA,CAAAA,CAACC,QAAQ,gBAAgBtB,UAAU,iCAAwB,mBACjE,GAAAN,EAAAI,IAAA,EAACkG,EAAAA,EAAMA,CAAAA,CACLpF,MAAOoC,EAAQO,cAAc,CAC7B0C,cAAe,GAAgBhD,EAAWzD,GAAS,EAAE,GAAGA,CAAI,CAAE+D,eAAgB3C,CAAuB,cACrG,GAAAlB,EAAAC,GAAA,EAACuG,EAAAA,EAAaA,CAAAA,CAAC5G,GAAG,gBAAgBU,UAAU,gBAC1C,GAAAN,EAAAC,GAAA,EAACwG,EAAAA,EAAWA,CAAAA,CAAAA,KAEd,GAAAzG,EAAAI,IAAA,EAACsG,EAAAA,EAAaA,CAAAA,WACZ,GAAA1G,EAAAC,GAAA,EAAC2G,EAAAA,EAAUA,CAAAA,CAAC1F,MAAM,kBAAS,WAC3B,GAAAlB,EAAAC,GAAA,EAAC2G,EAAAA,EAAUA,CAAAA,CAAC1F,MAAM,mBAAU,YAC5B,GAAAlB,EAAAC,GAAA,EAAC2G,EAAAA,EAAUA,CAAAA,CAAC1F,MAAM,eAAM,cAG5B,GAAAlB,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,yDAAgD,oDAI/D,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAC,GAAA,EAAC0B,EAAAA,CAAKA,CAAAA,CAACC,QAAQ,gBAAgBtB,UAAU,iCAAwB,mBACjE,GAAAN,EAAAC,GAAA,EAACe,EAAAA,CAAKA,CAAAA,CACJpB,GAAG,gBACHwG,KAAK,SACLmB,IAAI,IACJC,IAAI,MACJtG,MAAOoC,EAAQQ,cAAc,CAC7B3C,SAAU,GAAOoC,EAAWzD,GAAS,EAAE,GAAGA,CAAI,CAAEgE,eAAgB2D,OAAOrG,EAAEC,MAAM,CAACH,KAAK,CAAE,IACvFZ,UAAU,SAEZ,GAAAN,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,yDAAgD,qCAI/D,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAC,GAAA,EAAC0B,EAAAA,CAAKA,CAAAA,CAACC,QAAQ,mBAAmBtB,UAAU,iCAAwB,sBACpE,GAAAN,EAAAC,GAAA,EAACe,EAAAA,CAAKA,CAAAA,CACJpB,GAAG,mBACHwG,KAAK,SACLmB,IAAI,IACJrG,MAAOoC,EAAQS,kBAAkB,CACjC5C,SAAU,GAAOoC,EAAWzD,GAAS,EAAE,GAAGA,CAAI,CAAEiE,mBAAoB0D,OAAOrG,EAAEC,MAAM,CAACH,KAAK,CAAE,IAC3FZ,UAAU,SAEZ,GAAAN,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,yDAAgD,mDAQvE,GAAAN,EAAAC,GAAA,EAACoG,EAAAA,CAASA,CAAAA,CAAC/F,UAAU,SACrB,GAAAN,EAAAC,GAAA,EAACwC,EAAAA,EAAYA,CAAAA,CAACnC,UAAU,oBACtB,GAAAN,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CACL0D,KAAK,SACLzD,SAAUpE,GAAW,CAAC+E,EAAQvE,IAAI,EAAI,CAACuE,EAAQK,QAAQ,EAAIL,IAAAA,EAAQU,aAAa,CAAC1C,MAAM,EAAUgC,IAAAA,EAAQM,cAAc,CAACtC,MAAM,CAC9HhB,UAAU,wBACT/B,GAAW,GAAAyB,EAAAC,GAAA,EAACyH,EAAAA,CAAOA,CAAAA,CAACpH,UAAU,8BAC9B+C,EAAY,kBAAoB,8BA5Q9BL,EAmRjB,gNC9fA,IAAM2E,GAAc,CAClBC,QAAS,GAAA5H,EAAAC,GAAA,EAAC4H,EAAAA,CAAKA,CAAAA,CAACvH,UAAU,YAC1BwH,OAAQ,GAAA9H,EAAAC,GAAA,EAACyH,EAAAA,CAAOA,CAAAA,CAACpH,UAAU,yBAC3ByH,UAAW,KACXC,OAAQ,GAAAhI,EAAAC,GAAA,EAACgI,EAAAA,CAAOA,CAAAA,CAAC3H,UAAU,YAC3B4H,QAAS,GAAAlI,EAAAC,GAAA,EAAC4H,EAAAA,CAAKA,CAAAA,CAACvH,UAAU,YAC1B6H,OAAQ,GAAAnI,EAAAC,GAAA,EAACmI,EAAAA,CAAKA,CAAAA,CAAC9H,UAAU,YACzB+H,MAAO,GAAArI,EAAAC,GAAA,EAACqI,EAAAA,CAAaA,CAAAA,CAAChI,UAAU,WAClC,EAEMiI,GAAe,CACnBX,QAAS,iDACTE,OAAQ,2CACRC,UAAW,GACXC,OAAQ,wCACRE,QAAS,iDACTC,OAAQ,2CACRE,MAAO,uCACT,EAEO,SAASG,GAAc5K,CAAoH,MAW7H6K,KAXS,CAAEnF,QAAAA,CAAO,CAAEhE,UAAAA,CAAS,CAAEoJ,YAAAA,CAAW,CAAEC,cAAAA,CAAa,CAAEC,cAAAA,CAAa,CAAEC,eAAAA,CAAc,CAAEC,cAAAA,CAAa,CAAsB,CAApHlL,EAEtB,CAAEC,KAAM4K,CAAc,CAAElK,QAASwK,CAAiB,CAAEC,QAASC,CAAiB,CAAEC,cAAeC,CAAiB,CAAE,CAAG3K,CAAAA,EAAAA,EAAAA,EAAAA,EAAS4K,EAAAA,EAAeA,CAAE,CACnJ1K,UAAW,CACTC,KAAM,EACNC,MAAO,IACPC,QAAS,CAAC,CAAEoI,MAAO,CAAEjI,SAAU,YAAcsE,EAAQ1D,EAAE,CAAG,EAAE,EAE9DT,KAAM,CAACmE,EAAQ1D,EAAE,GAGbyJ,EAAaZ,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAgBa,qBAAqB,GAArCb,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAuCjJ,KAAK,GAAI,EAAE,CAE/D+J,EAAc,IAClB,IAAMC,EAASH,EAAWjC,IAAI,CAAC,QAC7BqC,EAAoCA,QAApCA,CAAAA,OAAAA,CAAAA,EAAAA,EAAGxC,KAAK,GAARwC,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAU/J,QAAQ,CAACgK,EAAAA,GAAAA,CAAAA,OAAiBD,CAAAA,EAAAA,EAAGxC,KAAK,GAARwC,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAU/J,QAAQ,CAAC4D,EAAQ1D,EAAE,YAGnE,MAAI4J,EAAgD,KAE7CA,CACT,EAEMG,EAAe,IAEnB,GADAhE,QAAQC,GAAG,CAAC,iBAAkB4D,MAAAA,EAAAA,KAAAA,EAAAA,EAAQA,MAAM,EACxC,CAACA,GAAUA,cAAAA,EAAOI,KAAK,EAAoBJ,KAAkBK,IAAlBL,EAAOA,MAAM,CAC1D,MAAO,GAGT,IAAMM,EAAQN,EAAOA,MAAM,CACrBO,EAAYzG,EAAQQ,cAAc,QAExC,GAAaiG,EACJ,iBACED,GAASC,EAAY,GACvB,kBAEA,cAEX,EAEA,MACE,GAAA/J,EAAAI,IAAA,EAAAJ,EAAAgK,QAAA,YACE,GAAAhK,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,yBACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CACCR,UAAU,4GACV,GAAAN,EAAAI,IAAA,EAACkC,OAAAA,CAAKhC,UAAU,qFAEd,GAAAN,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,UACRoG,KAAK,KACLpE,SACEoG,GACAI,IAAsBc,EAAAA,EAAaA,CAACjB,OAAO,EAC3CG,IAAsBc,EAAAA,EAAaA,CAACC,SAAS,EAC7Cf,IAAsBc,EAAAA,EAAaA,CAAC1L,OAAO,CAE7C4D,QAAS,KACP8G,GACF,YAEEF,GAAqB,GAAA/I,EAAAC,GAAA,EAACkK,GAAAA,CAAOA,CAAAA,CAAAA,GAE/B,GAAAnK,EAAAC,GAAA,EAACmK,EAAAA,CAAUA,CAAAA,CAAC9J,UAAU,eAIxB,GAAAN,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,UACRoG,KAAK,KACL5E,QAAS,KACPyG,EAActF,EAChB,WACA,GAAAtD,EAAAC,GAAA,EAACoK,EAAAA,CAAIA,CAAAA,CAAC/J,UAAU,cAGlB,GAAAN,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,UACRoG,KAAK,KACL5E,QAAS,KACPwG,EAAcrF,EAChB,WACA,GAAAtD,EAAAC,GAAA,EAACqK,GAAAA,CAAIA,CAAAA,CAAChK,UAAU,cAGlB,GAAAN,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,UACRoG,KAAK,KACL5E,QAAS,KACP0G,EAAevF,EACjB,WACA,GAAAtD,EAAAC,GAAA,EAACsK,GAAAA,CAAIA,CAAAA,CAACjK,UAAU,cAGlB,GAAAN,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,UACRoG,KAAK,KACL5E,QAAS,KACP2G,EAAcxF,EAChB,WACA,GAAAtD,EAAAC,GAAA,EAACuK,GAAAA,CAAMA,CAAAA,CAAClK,UAAU,qBAM1B,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,yBACZhB,EAAUoC,GAAG,CAAC,IACb,IAAM+I,EAAanH,EAAQU,aAAa,CAACtE,QAAQ,CAAC0C,EAASxC,EAAE,EACvD4J,EAASD,EAAYnH,EAASxC,EAAE,EAEtC,GAAI,CAAC6K,EACH,MACE,GAAAzK,EAAAC,GAAA,EAACa,MAAAA,CAECR,UAAU,4GAEV,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,yCAAgC,OAH3C8B,EAASxC,EAAE,EAQtB,IAAM8K,EAAYf,EAAaH,GACzBmB,EAAcnB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQI,KAAK,EAAGrB,EAAY,CAACiB,EAAOI,KAAK,CAAC,CAAG,iBAEjE,MACE,GAAA5J,EAAAC,GAAA,EAACa,MAAAA,CAECR,UAAU,uFAEV,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CACCqB,QAAS,IAAMuG,EAAYc,GAC3BlJ,UAAWsK,CAAAA,EAAAA,GAAAA,EAAAA,EACT,8FACAF,GAAaC,GAAe,6BAC5BnB,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAQI,KAAK,IAAK,aAAe,kCACjC,CAAC,CAACJ,GAAUA,cAAAA,EAAOI,KAAK,GAAqB,2BAG9Cb,EACC,GAAA/I,EAAAC,GAAA,EAACyH,EAAAA,CAAOA,CAAAA,CAACpH,UAAU,yBACjBkJ,EACF,GAAAxJ,EAAAC,GAAA,EAAAD,EAAAgK,QAAA,WACGR,cAAAA,EAAOI,KAAK,EAAoBJ,KAAkBK,IAAlBL,EAAOA,MAAM,CAC5C,GAAAxJ,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,iDACbkJ,EAAOA,MAAM,CAACqB,OAAO,CAAC,KAGzB,GAAA7K,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACZqH,EAAW,CAAC6B,EAAOI,KAAK,CAAC,CAC1B,GAAA5J,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,8BACbkJ,EAAOI,KAAK,QAMrB,GAAA5J,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACZqH,GAAY,OAAU,CACvB,GAAA3H,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,8BAAqB,sBAhCtC8B,EAASxC,EAAE,CAwCtB,OAIR,yCC1KO,SAASkL,GAAclN,CAAoD,MAqB1DiF,EAwMmCkI,EAYoBA,EA8C9DA,EAWgDA,EAMCA,EAIAA,EAiB9BA,EAiBnBA,EAjH0CA,EAqEMA,EAMCA,EAIAA,KA5SpC,CAAEC,SAAAA,CAAQ,CAAEC,QAAAA,CAAO,CAAEC,UAAAA,CAAS,CAAsB,CAApDtN,EACtB,CAAEuF,MAAAA,CAAK,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,IACZ,CAAC+H,EAAaC,EAAe,CAAGhN,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,GACzC,CAAC2M,EAAgBM,EAAkB,CAAGjN,CAAAA,EAAAA,EAAAA,QAAAA,EAA2B,MACjE,CAACkN,EAAaC,EAAe,CAAGnN,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IACzC,CAACoN,EAAWC,EAAa,CAAGrN,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IACrC,CAACsN,EAAUC,EAAY,CAAGvN,CAAAA,EAAAA,EAAAA,QAAAA,EAAyB,MACnD,CAACwN,EAAkBC,EAAoB,CAAGzN,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IACnD,CAAC0N,EAAYC,GAAc,CAAG3N,CAAAA,EAAAA,EAAAA,QAAAA,EAAyB,MAE7DuH,QAAQC,GAAG,CAAC,mBAAoBqF,GAChC,GAAM,CAAEpN,KAAMgF,EAAa,CAAEtE,QAASyN,EAAgB,CAAE,CAAGxN,CAAAA,EAAAA,EAAAA,EAAAA,EAASC,EAAAA,EAAcA,CAAE,CAClFC,UAAW,CACTC,KAAM,EACNC,MAAO,IACPC,QAAS,CAAC,CAAEI,YAAa,CAAEC,GAAI+L,EAAQrL,EAAE,CAAG,EAAE,EAEhDT,KAAM,CAAC8L,EAAQrL,EAAE,CACjBqM,aAAc,GAChB,GAEM9H,GAAgBtB,CAAAA,MAAAA,GAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,GAAetD,oBAAoB,GAAnCsD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAqCrD,KAAK,GAAI,EAAE,CAGhE0M,GAAiBpK,MAAMC,IAAI,CAAC,IAAIoK,IAAInB,EAAStJ,GAAG,CAAC0K,GAAOA,EAAIzI,QAAQ,EAAElE,MAAM,CAAC4M,WAC7E,CAAExO,KAAMiF,EAAU,CAAE,CAAGtE,CAAAA,EAAAA,EAAAA,EAAAA,EAAS8N,EAAAA,EAAiBA,CAAE,CACvD5N,UAAW,CAAE6N,IAAKL,EAAe,EACjC/M,KAAM+M,IAAAA,GAAe5K,MAAM,GAGvBkL,GAAgC,IAAIC,IAAI,CAAC3J,CAAAA,MAAAA,GAAAA,KAAAA,EAAAA,GAAY4J,UAAU,GAAI,EAAE,EAAEhL,GAAG,CAAC,GAAgB,CAACmF,EAAMjH,EAAE,CAAEiH,EAAM,GAE5G,CAAC8F,GAAS,CAAEpO,QAASqO,EAAW,CAAE,CAAC,CAAGtI,CAAAA,EAAAA,EAAAA,CAAAA,EAAYuI,EAAAA,EAAQA,CAAE,CAChErI,YAAa,IACXrB,EAAM,CACJsB,MAAO,mBACPjC,YAAa,aAAgCH,MAAA,CAAnBxE,EAAK8O,OAAO,CAACG,KAAK,CAAC,sBAC/C,GACA5B,GACF,EACAxG,QAAS,IACPvB,EAAM,CACJsB,MAAO,2BACPjC,YAAamC,EAAMC,OAAO,CAC1BjE,QAAS,aACX,EACF,CACF,GAEMoM,GAAiB,IAAI/B,EAAS,CAACgC,IAAI,CAAC,CAACC,EAAGC,IAC5C,IAAIC,KAAKF,EAAExJ,SAAS,EAAE2J,OAAO,GAAK,IAAID,KAAKD,EAAEzJ,SAAS,EAAE2J,OAAO,IAE3DC,GAAgBN,GAAeO,KAAK,CAAC,CAACnC,GACtCoC,GAAcR,GAAezL,MAAM,CAAG6J,EAEtCqC,GAAkB,IAClBhE,GAAUA,cAAAA,EAAOI,KAAK,GACxByB,EAAkB7B,GAClB+B,EAAe,IAEnB,EAMM5C,GAAgB,IACpBgD,EAAYS,GACZX,EAAa,GACf,EAEM7C,GAAgB,IAEpB+C,EAAY,CAAE,GAAGS,CAAG,CAAExM,GAAI,GAAIb,KAAM,GAAYsD,MAAA,CAAT+J,EAAIrN,IAAI,CAAC,UAAS,GACzD0M,EAAa,GACf,EAEM5C,GAAiB,IACrBkD,GAAcK,GACdP,EAAoB,GACtB,EAcM/C,GAAgB,IAIpBnD,QAAQC,GAAG,CAAC,YAAawG,EAC3B,SAEA,GAEI,GAAApM,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qBACZwB,MAAMC,IAAI,CAAC,CAAET,OAAQ,CAAE,GAAGI,GAAG,CAAC,CAACM,EAAGC,IACjC,GAAAjC,EAAAC,GAAA,EAACiC,EAAAA,CAAQA,CAAAA,CAAS5B,UAAU,eAAb2B,MAMnBkC,IAAAA,GAAc7C,MAAM,CAEpB,GAAAtB,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,kDAAyC,oCAO1D,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,mBACb,GAAAN,EAAAI,IAAA,EAACyB,EAAAA,CAAUA,CAAAA,CAACvB,UAAU,mBACpB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,iBAEb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,yEAEb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,8EACb,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,gDAAuC,4BAIxD6D,GAAczC,GAAG,CAAC,GACjB,GAAA1B,EAAAC,GAAA,EAACa,MAAAA,CAAsBR,UAAU,4DAC/B,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,+BAAuB8B,EAASrD,IAAI,GACnD,GAAAiB,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,kFACZ8B,EAASxC,EAAE,OAJRwC,EAASxC,EAAE,MAYxB2N,IACC,GAAAvN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,uCACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,2FACb,GAAAN,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,QACRoG,KAAK,KACL5E,QAxFO,KACrBiJ,EAAetL,GAAQ2N,KAAKlG,GAAG,CAACzH,EAAO,EAAGiN,GAAezL,MAAM,EACjE,EAuFgBhB,UAAU,uBAEV,GAAAN,EAAAC,GAAA,EAACyN,EAAAA,CAAWA,CAAAA,CAACpN,UAAU,gBAG1B6D,GAAczC,GAAG,CAAC,GACjB,GAAA1B,EAAAC,GAAA,EAACa,MAAAA,CAAsBR,UAAU,kDAAvB8B,EAASxC,EAAE,MAM1ByN,GAAc3L,GAAG,CAAC,QAcR8K,QAbT,GAAAxM,EAAAI,IAAA,EAACU,MAAAA,CAAiBR,UAAU,iCAE1B,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qFACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,6BACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mDACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,iEACZ8L,EAAIrN,IAAI,KAGb,GAAAiB,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,uEACZqN,CAAAA,EAAAA,EAAAA,EAAAA,EAAO,IAAIR,KAAKf,EAAI3I,SAAS,EAAG,4BAEnC,GAAAzD,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,iHACZkM,CAAAA,OAAAA,CAAAA,EAAAA,GAAUoB,GAAG,CAACxB,EAAIzI,QAAQ,IAA1B6I,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAA6BzN,IAAI,GAAIqN,EAAIzI,QAAQ,QAKxD,GAAA3D,EAAAC,GAAA,EAACuI,GAAaA,CACZlF,QAAS8I,EACT9M,UAAW6E,GACXuE,YAAa8E,GACb7E,cAAeA,GACfC,cAAeA,GACfC,eAAgBA,GAChBC,cAAeA,OAzBTsD,EAAIxM,EAAE,OA8BpB,GAAAI,EAAAC,GAAA,EAAC4N,EAAAA,CAASA,CAAAA,CAACC,YAAY,kBAGzB,GAAA9N,EAAAC,GAAA,EAAC8N,EAAAA,EAAKA,CAAAA,CAACjQ,KAAMwN,EAAanL,aAAcoL,WACtC,GAAAvL,EAAAI,IAAA,EAAC4N,EAAAA,EAAYA,CAAAA,CAAC1N,UAAU,yCACtB,GAAAN,EAAAC,GAAA,EAACgO,EAAAA,EAAWA,CAAAA,UACV,GAAAjO,EAAAC,GAAA,EAACiO,EAAAA,EAAUA,CAAAA,UAAC,0BAGbnD,GACC,GAAA/K,EAAAI,IAAA,EAAC+N,EAAAA,EAAIA,CAAAA,CAACC,aAAa,WAAW9N,UAAU,iBACtC,GAAAN,EAAAI,IAAA,EAACiO,EAAAA,EAAQA,CAAAA,CAAC/N,UAAU,oCAClB,GAAAN,EAAAC,GAAA,EAACqO,EAAAA,EAAWA,CAAAA,CAACpN,MAAM,oBAAW,aAC9B,GAAAlB,EAAAC,GAAA,EAACqO,EAAAA,EAAWA,CAAAA,CAACpN,MAAM,oBAAW,aAC9B,GAAAlB,EAAAC,GAAA,EAACqO,EAAAA,EAAWA,CAAAA,CAACpN,MAAM,qBAAY,cAC/B,GAAAlB,EAAAC,GAAA,EAACqO,EAAAA,EAAWA,CAAAA,CAACpN,MAAM,eAAM,gBAI3B,GAAAlB,EAAAI,IAAA,EAACmO,EAAAA,EAAWA,CAAAA,CAACrN,MAAM,WAAWZ,UAAU,sBAEtC,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,mCACb,GAAAN,EAAAI,IAAA,EAACoO,EAAAA,EAAIA,CAAAA,WACH,GAAAxO,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,gBACpB,GAAAN,EAAAC,GAAA,EAACyO,EAAAA,EAASA,CAAAA,CAACpO,UAAU,qDAA4C,YAEnE,GAAAN,EAAAC,GAAA,EAAC0O,EAAAA,EAAWA,CAAAA,UACV,GAAA3O,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,8BAAsByK,OAAAA,CAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAevB,MAAM,GAArBuB,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAuBF,OAAO,CAAC,KAA/BE,KAAAA,IAAAA,EAAAA,EAAqC,aAI9E,GAAA/K,EAAAI,IAAA,EAACoO,EAAAA,EAAIA,CAAAA,WACH,GAAAxO,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,gBACpB,GAAAN,EAAAI,IAAA,EAACsO,EAAAA,EAASA,CAAAA,CAACpO,UAAU,8EACnB,GAAAN,EAAAC,GAAA,EAAC4H,EAAAA,CAAKA,CAAAA,CAACvH,UAAU,YAAY,gBAIjC,GAAAN,EAAAC,GAAA,EAAC0O,EAAAA,EAAWA,CAAAA,UACV,GAAA3O,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,kCAA0BsO,CAAAA,EAAAA,GAAAA,CAAAA,EAAe,QAAC7D,CAAAA,EAAAA,EAAe8D,QAAQ,GAAvB9D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAyB+D,QAAQ,EAAG,KAAS,aAM5G,GAAA9O,EAAAI,IAAA,EAACoO,EAAAA,EAAIA,CAAAA,WACH,GAAAxO,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,gBACpB,GAAAN,EAAAC,GAAA,EAACyO,EAAAA,EAASA,CAAAA,CAACpO,UAAU,+BAAsB,+BAE7C,GAAAN,EAAAI,IAAA,EAACuO,EAAAA,EAAWA,CAAAA,CAACrO,UAAU,sBACrB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,yCAAgC,WAChD,GAAAN,EAAAI,IAAA,EAACiH,EAAAA,CAAKA,CAAAA,CACJ1G,QAASoK,cAAAA,EAAenB,KAAK,CAAmB,UAAYmB,WAAAA,EAAenB,KAAK,CAAgB,cAAgB,YAChHtJ,UAAU,oCAETyK,cAAAA,EAAenB,KAAK,EAAoB,GAAA5J,EAAAC,GAAA,EAAC8O,EAAAA,CAAWA,CAAAA,CAACzO,UAAU,YAC/DyK,WAAAA,EAAenB,KAAK,EAAiB,GAAA5J,EAAAC,GAAA,EAACgI,EAAAA,CAAOA,CAAAA,CAAC3H,UAAU,YACxDyK,cAAAA,EAAenB,KAAK,EAAoBmB,WAAAA,EAAenB,KAAK,EAAiB,GAAA5J,EAAAC,GAAA,EAAC+O,EAAAA,CAAWA,CAAAA,CAAC1O,UAAU,YACrG,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,sBAAcyK,EAAenB,KAAK,SAGtD,GAAA5J,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,yCAAgC,WAChD,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,6BAAqByK,EAAekE,MAAM,YAM/DlE,EAAepG,KAAK,EAAI,iBAAOoG,EAAepG,KAAK,EAAiBuK,OAAOC,IAAI,CAACpE,EAAepG,KAAK,EAAErD,MAAM,CAAG,GAC9G,GAAAtB,EAAAI,IAAA,EAACoO,EAAAA,EAAIA,CAAAA,CAAClO,UAAU,+BACd,GAAAN,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,gBACpB,GAAAN,EAAAI,IAAA,EAACsO,EAAAA,EAASA,CAAAA,CAACpO,UAAU,yEACnB,GAAAN,EAAAC,GAAA,EAACgI,EAAAA,CAAOA,CAAAA,CAAC3H,UAAU,YAAY,qBAInC,GAAAN,EAAAC,GAAA,EAAC0O,EAAAA,EAAWA,CAAAA,UACV,GAAA3O,EAAAC,GAAA,EAACmP,GAAAA,CAAWA,CAAAA,CAACC,KAAMC,KAAKC,SAAS,CAACxE,EAAepG,KAAK,CAAE,KAAM,UAMnEoG,CAAAA,OAAAA,CAAAA,EAAAA,EAAe8D,QAAQ,GAAvB9D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAyByE,MAAM,GAC9B,GAAAxP,EAAAI,IAAA,EAACoO,EAAAA,EAAIA,CAAAA,WACH,GAAAxO,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,gBACpB,GAAAN,EAAAI,IAAA,EAACsO,EAAAA,EAASA,CAAAA,CAACpO,UAAU,wDACnB,GAAAN,EAAAC,GAAA,EAACwP,EAAAA,CAAGA,CAAAA,CAACnP,UAAU,YAAY,mBAI/B,GAAAN,EAAAI,IAAA,EAACuO,EAAAA,EAAWA,CAAAA,CAACrO,UAAU,sBACrB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,yCAAgC,iBAChD,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,iCAAyByK,OAAAA,CAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAe8D,QAAQ,CAACW,MAAM,CAACE,WAAW,GAA1C3E,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAA4C4E,cAAc,KAA1D5E,KAAAA,IAAAA,EAAAA,EAAgE,WAE3G,GAAA/K,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mBACf,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,mCACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,8CAAqC,UACpD,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,iCAAyByK,OAAAA,CAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAe8D,QAAQ,CAACW,MAAM,CAACI,WAAW,GAA1C7E,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAA4C4E,cAAc,KAA1D5E,KAAAA,IAAAA,EAAAA,EAAgE,WAE1G,GAAA/K,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,8CAAqC,WACpD,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,iCAAyByK,OAAAA,CAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAe8D,QAAQ,CAACW,MAAM,CAACK,YAAY,GAA3C9E,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAA6C4E,cAAc,KAA3D5E,KAAAA,IAAAA,EAAAA,EAAiE,uBASrH,GAAA/K,EAAAC,GAAA,EAACsO,EAAAA,EAAWA,CAAAA,CAACrN,MAAM,WAAWZ,UAAU,qBACtC,GAAAN,EAAAC,GAAA,EAACuO,EAAAA,EAAIA,CAAAA,UACH,GAAAxO,EAAAC,GAAA,EAAC0O,EAAAA,EAAWA,CAAAA,CAACrO,UAAU,eAErB,GAAAN,EAAAC,GAAA,EAAC6P,GAAAA,EAAYA,CAAAA,CAACxP,UAAU,yEAEtB,GAAAN,EAAAC,GAAA,EAAC8P,GAAAA,EAAmBA,CAAAA,CAACzP,UAAU,qBAC7B,GAAAN,EAAAC,GAAA,EAAC+P,GAAAA,CAAeA,CAAAA,CACdC,SAAUlF,CAAAA,OAAAA,CAAAA,EAAAA,EAAe8D,QAAQ,GAAvB9D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAyBkF,QAAQ,GAAI,EAAE,CACjD1K,OAAQ,CACN2K,sBAAuB,OACvBC,0BAA2B,mEAC7B,EACAC,OAAQ,QACRC,YAAa,GACbC,YAAa,eASzB,GAAAtQ,EAAAC,GAAA,EAACsO,EAAAA,EAAWA,CAAAA,CAACrN,MAAM,YAAYZ,UAAU,qBACtCyK,CAAAA,OAAAA,CAAAA,EAAAA,EAAe8D,QAAQ,GAAvB9D,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAyBwF,gBAAgB,GAAIxF,EAAe8D,QAAQ,CAAC0B,gBAAgB,CAACjP,MAAM,CAAG,EAC9F,GAAAtB,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qBACZyK,EAAe8D,QAAQ,CAAC0B,gBAAgB,CAAC7O,GAAG,CAAC,QASA8H,EAAAA,QAR5C,GAAAxJ,EAAAI,IAAA,EAACoO,EAAAA,EAAIA,CAAAA,WACH,GAAAxO,EAAAI,IAAA,EAACqO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,iBACpB,GAAAN,EAAAC,GAAA,EAACyO,EAAAA,EAASA,CAAAA,CAACpO,UAAU,iCAAyBkJ,EAAOgH,kBAAkB,GACvE,GAAAxQ,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,wDAAgDkJ,EAAOiH,gBAAgB,MAEtF,GAAAzQ,EAAAI,IAAA,EAACuO,EAAAA,EAAWA,CAAAA,CAACrO,UAAU,sBACrB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,yCAAgC,WAChD,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,8BAAsBkJ,OAAAA,CAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAOA,MAAM,GAAbA,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAeqB,OAAO,CAAC,KAAvBrB,KAAAA,IAAAA,EAAAA,EAA6B,WAErE,GAAAxJ,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,6CAEX4O,OAAOC,IAAI,CAAC3F,EAAOkH,oBAAoB,EAAI,CAAC,GAAGhP,GAAG,CAAC,GACjD,GAAA1B,EAAAI,IAAA,EAACU,MAAAA,CAAcR,UAAU,0BACvB,GAAAN,EAAAI,IAAA,EAACkC,OAAAA,CAAKhC,UAAU,qDAA4CqQ,EAAI,OAChE,GAAA3Q,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,wDAAgDkJ,EAAOkH,oBAAoB,CAACC,EAAI,KAFrFA,WAbTnH,EAAO5J,EAAE,CAqBd,KAIV,GAAAI,EAAAC,GAAA,EAACuO,EAAAA,EAAIA,CAAAA,UACH,GAAAxO,EAAAC,GAAA,EAAC0O,EAAAA,EAAWA,CAAAA,CAACrO,UAAU,kDAAyC,2CAQtE,GAAAN,EAAAC,GAAA,EAACsO,EAAAA,EAAWA,CAAAA,CAACrN,MAAM,MAAMZ,UAAU,qBACjC,GAAAN,EAAAI,IAAA,EAACoO,EAAAA,EAAIA,CAAAA,WACH,GAAAxO,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,UACT,GAAAzO,EAAAC,GAAA,EAACyO,EAAAA,EAASA,CAAAA,CAACpO,UAAU,qBAAY,sBAEnC,GAAAN,EAAAC,GAAA,EAAC0O,EAAAA,EAAWA,CAAAA,UACT5D,EAAe8D,QAAQ,CACtB,GAAA7O,EAAAC,GAAA,EAACmP,GAAAA,CAAWA,CAAAA,CAACC,KAAMC,KAAKC,SAAS,CAACxE,EAAe8D,QAAQ,CAAE,KAAM,KAEjE,GAAA7O,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,yCAAgC,yCAU/D,GAAAN,EAAAC,GAAA,EAAC2C,EAAkBA,CACjBI,SAAU,wBAAmCX,MAAA,CAAX4I,EAAQrL,EAAE,EAC5CX,YAAagM,EAAQrL,EAAE,CACvB9B,KAAM0N,EACNrL,aAAc,IACZsL,EAAa3N,GACRA,GACH6N,EAAY,KAEhB,EACAzI,YAAawI,EACbzI,gBAAiBiI,IAGnB,GAAAlL,EAAAC,GAAA,EAAC2Q,EAAAA,EAAWA,CAAAA,CAAC9S,KAAM8N,EAAkBzL,aAAc0L,WACjD,GAAA7L,EAAAI,IAAA,EAACyQ,EAAAA,EAAkBA,CAAAA,WACjB,GAAA7Q,EAAAI,IAAA,EAAC0Q,EAAAA,EAAiBA,CAAAA,WAChB,GAAA9Q,EAAAC,GAAA,EAAC8Q,EAAAA,EAAgBA,CAAAA,UAAC,oBAClB,GAAA/Q,EAAAI,IAAA,EAAC4Q,EAAAA,EAAsBA,CAAAA,WAAC,0BACElF,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAY9H,aAAa,CAAC1C,MAAM,GAAI,EAAE,mBAAiBwK,MAAAA,EAAAA,KAAAA,EAAAA,EAAY/M,IAAI,CAAC,+GAIpG,GAAAiB,EAAAI,IAAA,EAAC6Q,EAAAA,EAAiBA,CAAAA,WAChB,GAAAjR,EAAAC,GAAA,EAACiR,EAAAA,EAAiBA,CAAAA,CAAC/O,QAAS,IAAM4J,GAAc,eAAO,WACvD,GAAA/L,EAAAI,IAAA,EAAC+Q,EAAAA,EAAiBA,CAAAA,CAAChP,QA7UL,KAClB2J,GACFa,GAAQ,CACNjO,UAAW,CACTkB,GAAIkM,EAAWlM,EAAE,CAErB,GAEFiM,EAAoB,IACpBE,GAAc,KAChB,EAmUuDpJ,SAAUiK,aACpDA,IAAe,GAAA5M,EAAAC,GAAA,EAACyH,EAAAA,CAAOA,CAAAA,CAACpH,UAAU,8BAA+B,yBAQhF,wCC7be,SAAS8Q,GAASxT,CAAsB,MAQVyT,EAA+BA,EACrCA,EA0DTC,EAMrB/L,EAA6BA,EA4BTA,EAA4BA,EAkBVA,EAA4BA,EAclEA,EAA4BA,KArIJ,CAAE3F,GAAAA,CAAE,CAAkB,CAAtBhC,EACzB,CAAEyT,KAAAA,CAAI,CAAE,CAAGE,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,CAAWA,EACjCjM,EAASgM,CAAAA,EAAAA,EAAAA,UAAAA,EAAWE,EAAAA,CAAaA,EAEjC,CAACC,EAAiBC,EAAmB,CAAGvT,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IACjD,CAAE+E,MAAAA,CAAK,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,IAGZwO,EAAiBP,EAAKQ,WAAW,EAAIR,CAAAA,OAAAA,CAAAA,EAAAA,EAAKS,IAAI,GAATT,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAWvK,KAAK,IAAK,QAAUuK,CAAAA,OAAAA,CAAAA,EAAAA,EAAKS,IAAI,GAATT,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAWvK,KAAK,IAAK,QACzFiL,EAAWV,EAAKQ,WAAW,EAAIR,CAAAA,OAAAA,CAAAA,EAAAA,EAAKS,IAAI,GAATT,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAWvK,KAAK,IAAK,QAEpD,CAAC6F,EAAQ,CAAGrI,CAAAA,EAAAA,EAAAA,CAAAA,EAAYuI,EAAAA,EAAQA,CAAE,CACtCrI,YAAa,IACXrB,EAAM,CACJsB,MAAO,mBACPjC,YAAa,aAAgCH,MAAA,CAAnBxE,EAAK8O,OAAO,CAACG,KAAK,CAAC,sBAC/C,EACF,EACApI,QAAS,IACPvB,EAAM,CACJsB,MAAO,2BACPjC,YAAamC,EAAMC,OAAO,CAC1BjE,QAAS,aACX,EACF,CACF,GAGM,CAAEpC,QAASyT,CAAc,CAAEnU,KAAMoU,CAAW,CAAE,CAAGzT,CAAAA,EAAAA,EAAAA,EAAAA,EAAS0T,EAAAA,EAAkBA,CAAE,CAClFxT,UAAW,CAAEkB,GA1BKA,CA0BW,EAC7BT,KAAM,CA3BYS,CA4BpB,GAGM,CAAErB,QAAS4T,CAAW,CAAEtU,KAAMyT,CAAQ,CAAEtI,QAASoJ,CAAW,CAAE,CAAG5T,CAAAA,EAAAA,EAAAA,EAAAA,EAAS6T,EAAAA,EAAaA,CAAE,CAC7F3T,UAAW,CACTC,KAAM,EACNC,MAAO,IACPC,QAAS,CAAC,CAAEI,YAAa,CAAEC,GAnCXU,CAmC2B,CAAE,EAAE,EAEjDT,KAAM,CArCYS,EAsClBqM,aAAc,GAChB,GAEA,GAAI,CAAC2F,EACH,MACE,GAAA5R,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qDACb,GAAAN,EAAAI,IAAA,EAACM,EAAAA,EAAKA,CAAAA,CAACC,QAAQ,wBACb,GAAAX,EAAAC,GAAA,EAACqS,EAAAA,CAAKA,CAAAA,CAAChS,UAAU,YACjB,GAAAN,EAAAC,GAAA,EAACW,EAAAA,CAAgBA,CAAAA,UAAC,sGAQ1B,GAAIoR,EACF,MACE,GAAAhS,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sDACb,GAAAN,EAAAC,GAAA,EAACiC,EAAAA,CAAQA,CAAAA,CAAC5B,UAAU,aACpB,GAAAN,EAAAC,GAAA,EAACiC,EAAAA,CAAQA,CAAAA,CAAC5B,UAAU,mBAK1B,IAAM2K,EAAmBgH,MAAAA,EAAAA,KAAAA,EAAAA,EAAaM,YAAY,CAC5CvH,EAAsBsG,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAUkB,mBAAmB,GAA7BlB,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAA+B9R,KAAK,GAAI,EAAE,CAEtE,MACE,GAAAQ,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,6CAGX,EAACiF,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAQkN,OAAO,GAAflN,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBmN,OAAO,GAAI,CAACnN,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAQkN,OAAO,GAAflN,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBoN,SAAS,IACxD,GAAA3S,EAAAI,IAAA,EAACM,EAAAA,EAAKA,CAAAA,CAACC,QAAQ,cAAcL,UAAU,iBACrC,GAAAN,EAAAC,GAAA,EAACqI,EAAAA,CAAaA,CAAAA,CAAChI,UAAU,YACzB,GAAAN,EAAAC,GAAA,EAACW,EAAAA,CAAgBA,CAAAA,UAAC,uJAQtB,GAAAZ,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sBAEb,GAAAN,EAAAI,IAAA,EAACoO,EAAAA,EAAIA,CAAAA,WACH,GAAAxO,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,iCACpB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,wCACb,GAAAN,EAAAC,GAAA,EAAC2S,EAAAA,CAAUA,CAAAA,CAACtS,UAAU,2BAExB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACyO,EAAAA,EAASA,CAAAA,UAAC,oBACX,GAAA1O,EAAAI,IAAA,EAACyS,EAAAA,EAAeA,CAAAA,WAAC,wGACuF,aAI5G,GAAA7S,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,mCACZyR,GAAYxM,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAQkN,OAAO,GAAflN,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBmN,OAAO,GAAInN,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAQkN,OAAO,GAAflN,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBoN,SAAS,GACjE,GAAA3S,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CAACqE,KAAK,KAAK5E,QAAS,IAAMwP,EAAmB,cAClD,GAAA3R,EAAAC,GAAA,EAAC6S,EAAAA,CAAIA,CAAAA,CAACxS,UAAU,iBAAiB,yBAO3C,GAAAN,EAAAC,GAAA,EAAC0O,EAAAA,EAAWA,CAAAA,CAACrO,UAAU,eACpB6R,EACC,GAAAnS,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qBACZwB,MAAMC,IAAI,CAAC,CAAET,OAAQ,CAAE,GAAGI,GAAG,CAAC,CAACM,EAAGC,IACjC,GAAAjC,EAAAC,GAAA,EAACiC,EAAAA,CAAQA,CAAAA,CAAS5B,UAAU,eAAb2B,MAGjB+I,IAAAA,EAAS1J,MAAM,CACjB,GAAAtB,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oDAA0C,qBACpCyR,GAAYxM,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAQkN,OAAO,GAAflN,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBmN,OAAO,GAAInN,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAQkN,OAAO,GAAflN,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBoN,SAAS,GAAI,yCAG3F,GAAA3S,EAAAC,GAAA,EAAC6K,GAAaA,CACZE,SAAUA,EACVC,QAASA,EACT8G,SAAUA,EACV7G,UAAWkH,SAOlB7M,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAQkN,OAAO,GAAflN,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBmN,OAAO,GAAInN,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAQkN,OAAO,GAAflN,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAiBoN,SAAS,GAAI3H,EAAS1J,MAAM,CAAG,GAC3E,GAAAtB,EAAAC,GAAA,EAACuO,EAAAA,EAAIA,CAAAA,CAAClO,UAAU,qBACd,GAAAN,EAAAI,IAAA,EAAC2S,GAAAA,EAAWA,CAAAA,WACV,GAAA/S,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,iCACpB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,wCACb,GAAAN,EAAAC,GAAA,EAAC+S,GAAAA,GAAcA,CAAAA,CAAC1S,UAAU,2BAE5B,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACyO,EAAAA,EAASA,CAAAA,UAAC,qBACX,GAAA1O,EAAAI,IAAA,EAACyS,EAAAA,EAAeA,CAAAA,WAAC,iCACgB,aAIrC,GAAA7S,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,sBACb,GAAAN,EAAAC,GAAA,EAACgT,GAAAA,EAAkBA,CAAAA,CAACC,QAAO,YACzB,GAAAlT,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CAAC/B,QAAQ,QAAQoG,KAAK,OAAOzG,UAAU,mBAC5C,GAAAN,EAAAC,GAAA,EAACkT,EAAAA,CAAcA,CAAAA,CAAC7S,UAAU,WAC1B,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,mBAAU,uBAMpC,GAAAN,EAAAC,GAAA,EAACmT,GAAAA,EAAkBA,CAAAA,UACjB,GAAApT,EAAAC,GAAA,EAACoT,GAAAA,CAAeA,CAAAA,CACdC,UAAU,YACVC,cAAe,QACMC,EAA2BA,EAAqCA,EAA4BA,EAA/G,MAAO,YAA4EA,MAAAA,CAAhEA,CAAAA,OAAAA,CAAAA,EAAAA,EAAI3V,IAAI,GAAR2V,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAUC,aAAa,WAAID,CAAAA,EAAAA,EAAI3V,IAAI,GAAR2V,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAUE,WAAW,EAAC,iBAAkErR,MAAA,CAAnDmR,CAAAA,OAAAA,CAAAA,EAAAA,EAAI3V,IAAI,GAAR2V,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAUG,cAAc,WAAIH,CAAAA,EAAAA,EAAI3V,IAAI,GAAR2V,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAU9J,YAAY,EACvI,EACAkK,SAAU,QACHJ,EAA2BA,EAKxBA,EACYA,EANhB,QAACA,CAAAA,EAAAA,EAAI3V,IAAI,GAAR2V,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAU9J,YAAY,GAAI,QAAC8J,CAAAA,EAAAA,EAAI3V,IAAI,GAAR2V,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAUE,WAAW,GAGrD/G,EAAQ,CACNjO,UAAW,CACTkB,GAAE,OAAE4T,CAAAA,EAAAA,EAAI3V,IAAI,GAAR2V,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAUE,WAAW,CACzB1P,cAAe,CAAS,OAARwP,CAAAA,EAAAA,EAAI3V,IAAI,GAAR2V,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAU9J,YAAY,CAAC,CAE3C,EACF,cAQZ,GAAA1J,EAAAC,GAAA,EAAC2C,EAAkBA,CACjBI,SAAU,yBAAqCX,MAAA,CArLjCzC,GAsLdX,YAtLcW,EAuLd9B,KAAM4T,EACNvR,aAAcwR,EACd1O,gBAAiB,KACfmP,GACF,MAIR,CC/LO,IAAMyB,GAAU,gBAER,SAASC,SAgBqBzC,EAA+BA,EACrCA,EAyJfxO,EAzKtB,IAAMkR,EAASC,CAAAA,EAAAA,EAAAA,SAAAA,IACTC,EAASC,CAAAA,EAAAA,EAAAA,SAAAA,IACT,CAAE7C,KAAAA,CAAI,CAAE,CAAGE,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,CAAWA,EACjC,CAAErO,MAAAA,CAAK,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,IACZ+Q,EAAYJ,EAAOnU,EAAE,CAErB,CAACb,EAAMqV,EAAQ,CAAGhW,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IAC3B,CAACoE,EAAa6R,EAAe,CAAGjW,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IACzC,CAACkB,EAAWgV,EAAa,CAAGlW,CAAAA,EAAAA,EAAAA,QAAAA,EAAmB,EAAE,EACjD,CAACmW,EAAoBC,EAAsB,CAAGpW,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IACvD,CAACqW,EAAiBC,EAAmB,CAAGtW,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IACjD,CAACuW,EAAkBC,EAAoB,CAAGxW,CAAAA,EAAAA,EAAAA,QAAAA,EAAwB,MAClE,CAACyW,EAAiBC,EAAmB,CAAG1W,CAAAA,EAAAA,EAAAA,QAAAA,EAA0B,MAGlEwT,EAAiBP,EAAKQ,WAAW,EAAIR,CAAAA,OAAAA,CAAAA,EAAAA,EAAKS,IAAI,GAATT,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAWvK,KAAK,IAAK,QAAUuK,CAAAA,OAAAA,CAAAA,EAAAA,EAAKS,IAAI,GAATT,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAWvK,KAAK,IAAK,QACzFiL,EAAWV,EAAKQ,WAAW,EAAIR,CAAAA,OAAAA,CAAAA,EAAAA,EAAKS,IAAI,GAATT,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAWvK,KAAK,IAAK,QAGpD,CAAEvI,QAASyT,EAAc,CAAEnU,KAAMoU,EAAW,CAAEjJ,QAAAA,EAAO,CAAE,CAAGxK,CAAAA,EAAAA,EAAAA,EAAAA,EAAS0T,EAAAA,EAAkBA,CAAE,CAC3FxT,UAAW,CAAEkB,GAAIuU,CAAU,EAC3BhV,KAAM,CAACgV,EACP3P,YAAa,IACP3G,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAM0U,YAAY,IACpB6B,EAAQvW,EAAK0U,YAAY,CAACxT,IAAI,EAC9BsV,EAAexW,EAAK0U,YAAY,CAAC/P,WAAW,EAAI,IAEpD,CACF,GAGM,CAAE3E,KAAMgF,EAAa,CAAEmG,QAAS+L,EAAgB,CAAE,CAAGvW,CAAAA,EAAAA,EAAAA,EAAAA,EAASC,EAAAA,EAAcA,CAAE,CAClFC,UAAW,CACTC,KAAM,EACNC,MAAO,IACPC,QAAS,CAAC,CAAEI,YAAa,CAAEC,GAAIiV,CAAU,CAAE,EAAE,CAEjD,GAEM,CAACa,GAAe,CAAEzW,QAAS0W,EAAQ,CAAE,CAAC,CAAG3Q,CAAAA,EAAAA,EAAAA,CAAAA,EAAY4Q,EAAAA,EAAeA,CAAE,CAC1E1Q,YAAa,KACXrB,EAAM,CACJsB,MAAO,mBACPjC,YAAa,6CACf,GACAwG,IACF,EACAtE,QAAS,IACPvB,EAAM,CACJsB,MAAO,4BACPjC,YAAamC,EAAMC,OAAO,CAC1BjE,QAAS,aACX,EACF,CACF,GAgCMwU,GAAuB,IAC3BP,EAAoB3P,EACtB,EAqBM,CAACmQ,GAAgB,CAAE7W,QAAS8W,EAAgB,CAAE,CAAC,CAAG/Q,CAAAA,EAAAA,EAAAA,CAAAA,EAAYgR,EAAAA,EAAgBA,CAAE,CACpF5Q,QAAS,IACPvB,EAAM,CACJsB,MAAO,6BACPjC,YAAamC,EAAMC,OAAO,CAC1BjE,QAAS,aACX,EACF,CACF,GA8BA,GAAI,CAACiR,EACH,MACE,GAAA5R,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qDACb,GAAAN,EAAAI,IAAA,EAACM,EAAAA,EAAKA,CAAAA,CAACC,QAAQ,wBACb,GAAAX,EAAAC,GAAA,EAACqS,EAAAA,CAAKA,CAAAA,CAAChS,UAAU,YACjB,GAAAN,EAAAC,GAAA,EAACW,EAAAA,CAAgBA,CAAAA,UAAC,sGAQ1B,GAAIoR,GACF,MACE,GAAAhS,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sDACb,GAAAN,EAAAC,GAAA,EAACiC,EAAAA,CAAQA,CAAAA,CAAC5B,UAAU,aACpB,GAAAN,EAAAC,GAAA,EAACiC,EAAAA,CAAQA,CAAAA,CAAC5B,UAAU,mBAK1B,IAAM6D,GAAgBtB,CAAAA,MAAAA,GAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,GAAetD,oBAAoB,GAAnCsD,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAqCrD,KAAK,GAAI,EAAE,CAEtE,MACE,GAAAQ,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,sDAEb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,qBACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qDACf,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,yGACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACb,GAAAN,EAAAC,GAAA,EAACyC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,QACRoG,KAAK,OACL5E,QAAS,IAAM8R,EAAOsB,IAAI,CAAC,mBAE3B,GAAAvV,EAAAC,GAAA,EAACuV,EAAAA,CAASA,CAAAA,CAAClV,UAAU,cAEvB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACb,GAAAN,EAAAC,GAAA,EAACwV,KAAAA,CAAGnV,UAAU,6CAAoC,kBAClD,GAAAN,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,iCAAwB,wDAKzC,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,sBACZyR,GACC,GAAA/R,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CAACP,QA1ID,KACjB,GAAI,CAACpD,EAAK2W,IAAI,GAAI,CAChBvS,EAAM,CACJsB,MAAO,mBACPjC,YAAa,oBACb7B,QAAS,aACX,GACA,MACF,CAEA,GAAIrB,EAAUgC,MAAM,CAAG,IAAK,CAC1B6B,EAAM,CACJsB,MAAO,mBACPjC,YAAa,+CACb7B,QAAS,aACX,GACA,MACF,CAEAqU,GAAc,CACZtW,UAAW,CACTkB,GAAIuU,EACJtW,KAAM,CACJkB,KAAMA,EAAK2W,IAAI,GACflT,YAAaA,EAAYkT,IAAI,IAAM,IACrC,CACF,CACF,EACF,EA8GyC/S,SAAUsS,aACpCA,GACC,GAAAjV,EAAAC,GAAA,EAACyH,EAAAA,CAAOA,CAAAA,CAACpH,UAAU,8BAEnB,GAAAN,EAAAC,GAAA,EAAC0V,EAAAA,CAAIA,CAAAA,CAACrV,UAAU,iBAChB,0BASZ,GAAAN,EAAAC,GAAA,EAACuO,EAAAA,EAAIA,CAAAA,CAAClO,UAAU,qBACd,GAAAN,EAAAI,IAAA,EAAC2S,GAAAA,EAAWA,CAAAA,WACV,GAAA/S,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,iCACpB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,wCACb,GAAAN,EAAAC,GAAA,EAAC2V,EAAAA,CAAQA,CAAAA,CAACtV,UAAU,2BAEtB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACyO,EAAAA,EAASA,CAAAA,UAAC,sBACX,GAAA1O,EAAAC,GAAA,EAAC4S,EAAAA,EAAeA,CAAAA,UAAC,0DAKrB,GAAA7S,EAAAC,GAAA,EAACgT,GAAAA,EAAkBA,CAAAA,CAACC,QAAO,YACzB,GAAAlT,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CAAC/B,QAAQ,QAAQoG,KAAK,OAAOzG,UAAU,mBAC5C,GAAAN,EAAAC,GAAA,EAACkT,EAAAA,CAAcA,CAAAA,CAAC7S,UAAU,WAC1B,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,mBAAU,qBAKlC,GAAAN,EAAAC,GAAA,EAACmT,GAAAA,EAAkBA,CAAAA,UACjB,GAAApT,EAAAI,IAAA,EAACuO,EAAAA,EAAWA,CAAAA,CAACrO,UAAU,2BACrB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,uBACb,GAAAN,EAAAC,GAAA,EAAC0B,EAAAA,CAAKA,CAAAA,CAACC,QAAQ,OAAOtB,UAAU,iCAAwB,WACxD,GAAAN,EAAAC,GAAA,EAACe,EAAAA,CAAKA,CAAAA,CACJpB,GAAG,OACHqB,YAAY,gBACZC,MAAOnC,EACPoC,SAAU,GAAOiT,EAAQhT,EAAEC,MAAM,CAACH,KAAK,EACvCyB,SAAU,CAACoP,OAGf,GAAA/R,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,uBACb,GAAAN,EAAAC,GAAA,EAAC0B,EAAAA,CAAKA,CAAAA,CAACC,QAAQ,cAActB,UAAU,iCAAwB,gBAC/D,GAAAN,EAAAC,GAAA,EAACkH,EAAAA,CAAQA,CAAAA,CACPvH,GAAG,cACHqB,YAAY,uCACZC,MAAOsB,EACPrB,SAAU,GAAOkT,EAAejT,EAAEC,MAAM,CAACH,KAAK,EAC9CyB,SAAU,CAACoP,EACX8D,KAAM,iBASlB,GAAA7V,EAAAC,GAAA,EAACuO,EAAAA,EAAIA,CAAAA,CAAClO,UAAU,qBACd,GAAAN,EAAAI,IAAA,EAAC2S,GAAAA,EAAWA,CAAAA,WACV,GAAA/S,EAAAC,GAAA,EAACwO,EAAAA,EAAUA,CAAAA,CAACnO,UAAU,iCACpB,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,8CACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,wCACb,GAAAN,EAAAC,GAAA,EAAC+S,GAAAA,GAAcA,CAAAA,CAAC1S,UAAU,2BAE5B,GAAAN,EAAAI,IAAA,EAACU,MAAAA,WACC,GAAAd,EAAAC,GAAA,EAACyO,EAAAA,EAASA,CAAAA,UAAC,eACX,GAAA1O,EAAAI,IAAA,EAACyS,EAAAA,EAAeA,CAAAA,WAAC,6CAC4B,IAC3C,GAAA7S,EAAAI,IAAA,EAACiH,EAAAA,CAAKA,CAAAA,CAAC1G,QAAQ,YAAYL,UAAU,iBAClC6D,GAAc7C,MAAM,CAAC,mBAK9B,GAAAtB,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,uBACZyR,GACC,GAAA/R,EAAAI,IAAA,EAAAJ,EAAAgK,QAAA,YACE,GAAAhK,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,UACRoG,KAAK,KACL5E,QAAS,IAAMuS,EAAmB,cAElC,GAAA1U,EAAAC,GAAA,EAAC6S,EAAAA,CAAIA,CAAAA,CAACxS,UAAU,iBAAiB,gBAGnC,GAAAN,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,YACRoG,KAAK,KACL5E,QAAS,IAAMqS,EAAsB,IACrC7R,SAAUrD,EAAUgC,MAAM,EAAI,cAE9B,GAAAtB,EAAAC,GAAA,EAAC6S,EAAAA,CAAIA,CAAAA,CAACxS,UAAU,iBAAiB,qBAKvC,GAAAN,EAAAC,GAAA,EAACgT,GAAAA,EAAkBA,CAAAA,CAACC,QAAO,YACzB,GAAAlT,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CAAC/B,QAAQ,QAAQoG,KAAK,OAAOzG,UAAU,mBAC5C,GAAAN,EAAAC,GAAA,EAACkT,EAAAA,CAAcA,CAAAA,CAAC7S,UAAU,WAC1B,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,mBAAU,wBAMpC,GAAAN,EAAAC,GAAA,EAACmT,GAAAA,EAAkBA,CAAAA,UACjB,GAAApT,EAAAC,GAAA,EAAC0O,EAAAA,EAAWA,CAAAA,CAACrO,UAAU,gBACpB6D,IAAAA,GAAc7C,MAAM,CACnB,GAAAtB,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,wEACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,+CACb,GAAAN,EAAAC,GAAA,EAAC2S,EAAAA,CAAUA,CAAAA,CAACtS,UAAU,2BAExB,GAAAN,EAAAC,GAAA,EAACiG,KAAAA,CAAG5F,UAAU,sCAA6B,sBAC3C,GAAAN,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,0CAAiC,mFAKhD,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,qBACZ6D,GAAczC,GAAG,CAAC,GACjB,GAAA1B,EAAAI,IAAA,EAACU,MAAAA,CAECR,UAAU,gLAEV,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,mBACb,GAAAN,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,oCACb,GAAAN,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAU,uCACb,GAAAN,EAAAC,GAAA,EAAC2V,EAAAA,CAAQA,CAAAA,CAACtV,UAAU,+BAEtB,GAAAN,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,yBAAiB8B,EAASrD,IAAI,MAE/CqD,EAASI,WAAW,EACnB,GAAAxC,EAAAC,GAAA,EAACkG,IAAAA,CAAE7F,UAAU,mDACV8B,EAASI,WAAW,MAI1BuP,GACC,GAAA/R,EAAAI,IAAA,EAACU,MAAAA,CAAIR,UAAU,4EACb,GAAAN,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,QACRoG,KAAK,KACL5E,QAAS,KACP2S,EAAmB1S,GACnBsS,EAAmB,GACrB,EACApU,UAAU,gCAEV,GAAAN,EAAAC,GAAA,EAAC6V,EAAAA,CAAKA,CAAAA,CAACxV,UAAU,qBAAqB,UAGxC,GAAAN,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CACL/B,QAAQ,QACRoG,KAAK,KACL5E,QAAS,IAAMgT,GAAqB/S,EAASxC,EAAE,EAC/CU,UAAU,2DAEV,GAAAN,EAAAC,GAAA,EAAC8V,EAAAA,CAACA,CAAAA,CAACzV,UAAU,qBAAqB,iBApCnC8B,EAASxC,EAAE,cAkDhC,GAAAI,EAAAC,GAAA,EAACmR,GAAQA,CAACxR,GAAIuU,IAGd,GAAAnU,EAAAC,GAAA,EAACtC,EAAsBA,CACrBG,KAAMyW,EACNxW,QAAS,IAAMyW,EAAsB,IACrCxW,SAtQqB,IAEzB,IAAMgY,EAAelU,MAAMC,IAAI,CAAC,IAAIoK,IAAI,IAAI7M,KAAc2W,EAAoB,GAE9E,GAAID,EAAa1U,MAAM,CAAG,IAAK,CAC7B6B,EAAM,CACJsB,MAAO,sBACPjC,YAAa,+CACb7B,QAAS,aACX,GACA,MACF,CAIA,IAAK,IAAMsE,KAFXU,QAAQC,GAAG,CAAC,eAAgBoQ,GAEHA,GACvBZ,GAAe,CACb1W,UAAW,CACTkB,GAAIqF,EACJpH,KAAM,CAAEoB,YAAakV,CAAU,CACjC,CACF,GAGFY,KACAP,EAAsB,GACxB,EA6OMvW,WAAYqB,IAGd,GAAAU,EAAAC,GAAA,EAACiW,EAAAA,CAAaA,CAAAA,CACZpY,KAAM2W,EACN1W,QAAS,IAAM2W,EAAmB,IAClCP,UAAWA,EACXgC,UAAW,KACTzB,EAAmB,IAEnBK,KACA/L,IACF,EACA5G,SAAUyS,IAIZ,GAAA7U,EAAAC,GAAA,EAAC2Q,EAAAA,EAAWA,CAAAA,CAAC9S,KAAM,CAAC,CAAC6W,EAAkBxU,aAAc,GAAU,CAACrC,GAAQ8W,EAAoB,eAC1F,GAAA5U,EAAAI,IAAA,EAACyQ,EAAAA,EAAkBA,CAAAA,WACjB,GAAA7Q,EAAAI,IAAA,EAAC0Q,EAAAA,EAAiBA,CAAAA,WAChB,GAAA9Q,EAAAC,GAAA,EAAC8Q,EAAAA,EAAgBA,CAAAA,UAAC,oCAClB,GAAA/Q,EAAAC,GAAA,EAAC+Q,EAAAA,EAAsBA,CAAAA,UAAC,gIAI1B,GAAAhR,EAAAI,IAAA,EAAC6Q,EAAAA,EAAiBA,CAAAA,WAChB,GAAAjR,EAAAC,GAAA,EAACiR,EAAAA,EAAiBA,CAAAA,UAAC,WACnB,GAAAlR,EAAAC,GAAA,EAACkR,EAAAA,EAAiBA,CAAAA,CAAChP,QA/TC,KACvBwS,GAELS,GAAe,CACb1W,UAAW,CACTkB,GAAI+U,EACJ9W,KAAM,CAAEoB,YAAa,IAAK,CAC5B,EACAuF,YAAa,KACXrB,EAAM,CACJsB,MAAO,oBACPjC,YAAa,oDACf,GACAuS,KACAH,EAAoB,KACtB,CACF,EACF,WA8S6D,qBAM/D,mKC5aO,IAAMwB,EAAW,OAAC,CAAE9V,UAAAA,CAAS,CAAE,GAAG+V,EAAsB,CAAAzY,QAC7D,GAAAoC,EAAAC,GAAA,EAACa,MAAAA,CACCR,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,0EACAtK,GAED,GAAG+V,CAAK,IAMAC,EAAiB,OAAC,CAC7BhW,UAAAA,CAAS,CACT,GAAG+V,EACiB,CAAAzY,QACpB,GAAAoC,EAAAC,GAAA,EAACa,MAAAA,CACCR,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,mEACAtK,GAED,GAAG+V,CAAK,IAgDAE,EAAkB,OAAC,CAC9BjW,UAAAA,CAAS,CACT,GAAG+V,EACkB,CAAAzY,QACrB,GAAAoC,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EAAG,0BAA2BtK,GAAa,GAAG+V,CAAK,IASxDG,EAAiB,OAAC,CAC7BC,QAAAA,CAAO,CACPxP,MAAAA,CAAK,CACLyP,KAAMC,CAAI,CACVC,SAAAA,CAAQ,CACRtW,UAAAA,CAAS,CACTyG,KAAAA,EAAO,IAAI,CACXpG,QAAAA,EAAU,OAAO,CACjB,GAAG0V,EACiB,CAAAzY,EACdiZ,EACJ,GAAA7W,EAAAI,IAAA,EAACsC,EAAAA,CAAMA,CAAAA,CACLpC,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,yDACAtK,GAEFyG,KAAMA,EACNX,KAAK,SACLzF,QAASA,EACR,GAAG0V,CAAK,WAERM,EAAO,GAAA3W,EAAAC,GAAA,EAAC0W,EAAAA,CAAKrW,UAAU,WAAcsW,EACtC,GAAA5W,EAAAC,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,mBAAW2G,GAASwP,cAIxC,EAEI,GAAAzW,EAAAC,GAAA,EAAC6W,EAAAA,EAAeA,CAAAA,UACd,GAAA9W,EAAAI,IAAA,EAAC2W,EAAAA,CAAOA,CAAAA,WACN,GAAA/W,EAAAC,GAAA,EAAC+W,EAAAA,EAAcA,CAAAA,CAAC9D,QAAO,YAAE2D,IACzB,GAAA7W,EAAAC,GAAA,EAACgX,EAAAA,EAAcA,CAAAA,UACb,GAAAjX,EAAAC,GAAA,EAACkG,IAAAA,UAAGsQ,WAOPI,CACT,EAIaK,EAAkB,OAAC,CAC9B5W,UAAAA,CAAS,CACT,GAAG+V,EACkB,CAAAzY,QACrB,GAAAoC,EAAAC,GAAA,EAACa,MAAAA,CAAIR,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EAAG,2BAA4BtK,GAAa,GAAG+V,CAAK,8BC/H/D,SAASc,EAAYvZ,CAM3B,KAN2B,CACxBwZ,KAAAA,CAAI,CACJC,YAAAA,CAAW,CAId,CAN2BzZ,EAOlB,CAAEuF,MAAAA,CAAK,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,IAElB,MACI,GAAApD,EAAAI,IAAA,EAACF,EAAAA,EAAMA,CAAAA,WACH,GAAAF,EAAAC,GAAA,EAACqX,EAAAA,EAAaA,CAAAA,CAACpE,QAAO,YAClB,GAAAlT,EAAAI,IAAA,EAACyW,SAAAA,CAAOvW,UAAU,8GACd,GAAAN,EAAAI,IAAA,EAACkC,OAAAA,CAAKhC,UAAU,kBACX8W,MAAAA,EAAAA,KAAAA,EAAAA,EAAM9J,KAAK,CAAC,EAAG+J,MAAAA,EAAAA,EAAe,KAC7BA,GAAeD,EAAK9V,MAAM,CAAG+V,EAAe,MAAQ,MAE1D,GAAArX,EAAAI,IAAA,EAACkC,OAAAA,CAAKhC,UAAU,qHACZ,GAAAN,EAAAC,GAAA,EAACsX,EAAAA,CAAQA,CAAAA,CAACjX,UAAU,YAAY,kCAK5C,GAAAN,EAAAC,GAAA,EAACI,EAAAA,EAAaA,CAAAA,CAACC,UAAU,4DACrB,GAAAN,EAAAI,IAAA,EAACgW,EAAQA,WACL,GAAApW,EAAAC,GAAA,EAACqW,EAAcA,UACX,GAAAtW,EAAAC,GAAA,EAACsW,EAAeA,UACZ,GAAAvW,EAAAC,GAAA,EAACuW,EAAcA,CAACE,KAAMc,EAAAA,CAAQA,CAAEvQ,MAAM,OAAOwP,QAAQ,oBAAoBtU,QAAS,UAC9E,MAAMsV,UAAUC,SAAS,CAACC,SAAS,CAACP,GACpCjU,EAAM,CAAEsB,MAAO,qBAAsB,EACzC,QAGR,GAAAzE,EAAAC,GAAA,EAACiX,EAAeA,UACZ,GAAAlX,EAAAC,GAAA,EAAC2X,EAAAA,CAAQA,CAAAA,UAAER,aAMnC,+HClDA,IAAM7V,EAAWsW,EAAAA,UAAgB,CAG/B,CAAAja,EAA0Bka,QAAzB,CAAExX,UAAAA,CAAS,CAAE,GAAG+V,EAAO,CAAAzY,QACxB,GAAAma,EAAA9X,GAAA,EAAC+X,EAAAA,EAAsB,EACrBF,IAAKA,EACLxX,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,iTACAtK,GAED,GAAG+V,CAAK,UAET,GAAA0B,EAAA9X,GAAA,EAAC+X,EAAAA,EAA2B,EAC1B1X,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EAAG,0DAEd,GAAAmN,EAAA9X,GAAA,EAACgY,EAAAA,CAAKA,CAAAA,CAAC3X,UAAU,gBAIvBiB,CAAAA,EAAS2W,WAAW,CAAGF,EAAAA,EAAsB,CAACE,WAAW,+FCzBlD,IAAM/N,EAAU,OAAC,CAAE7J,UAAAA,CAAS,CAAiC,CAAA1C,EAClE,MACE,GAAAma,EAAA3X,IAAA,EAAC+X,MAAAA,CACCC,cAAY,OACZtG,KAAK,SACLxR,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EAAG,sDAAuDtK,GACrE+X,QAAQ,cACRC,KAAK,OACLC,MAAM,uCAEN,GAAAR,EAAA9X,GAAA,EAACuY,OAAAA,CACCC,EAAE,+WACFnY,UAAU,4BAEZ,GAAAyX,EAAA9X,GAAA,EAACuY,OAAAA,CACCC,EAAE,glBACFnY,UAAU,mBAIlB,uPCdA,IAAMgG,EAASoS,EAAAA,EAAoB,CAEfA,EAAAA,EAAqB,CAEzC,IAAMjS,EAAciS,EAAAA,EAAqB,CAEnClS,EAAgBqR,EAAAA,UAAgB,CAGpC,CAAAja,EAAoCka,QAAnC,CAAExX,UAAAA,CAAS,CAAEsW,SAAAA,CAAQ,CAAE,GAAGP,EAAO,CAAAzY,QAClC,GAAAma,EAAA3X,IAAA,EAACsY,EAAAA,EAAuB,EACtBZ,IAAKA,EACLxX,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,kTACAtK,GAED,GAAG+V,CAAK,WAERO,EACD,GAAAmB,EAAA9X,GAAA,EAACyY,EAAAA,EAAoB,EAACxF,QAAO,YAC3B,GAAA6E,EAAA9X,GAAA,EAAC0Y,EAAAA,CAAWA,CAAAA,CAACrY,UAAU,4BAI7BkG,CAAAA,EAAc0R,WAAW,CAAGQ,EAAAA,EAAuB,CAACR,WAAW,CAE/D,IAAMU,EAAuBf,EAAAA,UAAgB,CAG3C,CAAAja,EAA0Bka,QAAzB,CAAExX,UAAAA,CAAS,CAAE,GAAG+V,EAAO,CAAAzY,QACxB,GAAAma,EAAA9X,GAAA,EAACyY,EAAAA,EAA8B,EAC7BZ,IAAKA,EACLxX,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,uDACAtK,GAED,GAAG+V,CAAK,UAET,GAAA0B,EAAA9X,GAAA,EAAC4Y,EAAAA,CAASA,CAAAA,CAACvY,UAAU,cAGzBsY,CAAAA,EAAqBV,WAAW,CAAGQ,EAAAA,EAA8B,CAACR,WAAW,CAE7E,IAAMY,EAAyBjB,EAAAA,UAAgB,CAG7C,CAAAja,EAA0Bka,QAAzB,CAAExX,UAAAA,CAAS,CAAE,GAAG+V,EAAO,CAAAzY,QACxB,GAAAma,EAAA9X,GAAA,EAACyY,EAAAA,EAAgC,EAC/BZ,IAAKA,EACLxX,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,uDACAtK,GAED,GAAG+V,CAAK,UAET,GAAA0B,EAAA9X,GAAA,EAAC0Y,EAAAA,CAAWA,CAAAA,CAACrY,UAAU,cAG3BwY,CAAAA,EAAuBZ,WAAW,CAChCQ,EAAAA,EAAgC,CAACR,WAAW,CAE9C,IAAMxR,EAAgBmR,EAAAA,UAAgB,CAGpC,CAAAja,EAAyDka,QAAxD,CAAExX,UAAAA,CAAS,CAAEsW,SAAAA,CAAQ,CAAEmC,SAAAA,EAAW,QAAQ,CAAE,GAAG1C,EAAO,CAAAzY,QACvD,GAAAma,EAAA9X,GAAA,EAACyY,EAAAA,EAAsB,WACrB,GAAAX,EAAA3X,IAAA,EAACsY,EAAAA,EAAuB,EACtBZ,IAAKA,EACLxX,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,scACAmO,WAAAA,GACE,kIACFzY,GAEFyY,SAAUA,EACT,GAAG1C,CAAK,WAET,GAAA0B,EAAA9X,GAAA,EAAC2Y,EAAAA,CAAAA,GACD,GAAAb,EAAA9X,GAAA,EAACyY,EAAAA,EAAwB,EACvBpY,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,MACAmO,WAAAA,GACE,oGAGHnC,IAEH,GAAAmB,EAAA9X,GAAA,EAAC6Y,EAAAA,CAAAA,SAIPpS,CAAAA,EAAcwR,WAAW,CAAGQ,EAAAA,EAAuB,CAACR,WAAW,CAY/Dc,EAVoBnB,UAAgB,CAGlC,CAAAja,EAA0Bka,QAAzB,CAAExX,UAAAA,CAAS,CAAE,GAAG+V,EAAO,CAAAzY,QACxB,GAAAma,EAAA9X,GAAA,EAACyY,EAAAA,EAAqB,EACpBZ,IAAKA,EACLxX,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EAAG,yCAA0CtK,GACvD,GAAG+V,CAAK,KAGD6B,WAAW,CAAGQ,EAAAA,EAAqB,CAACR,WAAW,CAE3D,IAAMtR,EAAaiR,EAAAA,UAAgB,CAGjC,CAAAja,EAAoCka,QAAnC,CAAExX,UAAAA,CAAS,CAAEsW,SAAAA,CAAQ,CAAE,GAAGP,EAAO,CAAAzY,QAClC,GAAAma,EAAA3X,IAAA,EAACsY,EAAAA,EAAoB,EACnBZ,IAAKA,EACLxX,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EACT,4NACAtK,GAED,GAAG+V,CAAK,WAET,GAAA0B,EAAA9X,GAAA,EAACqC,OAAAA,CAAKhC,UAAU,qEACd,GAAAyX,EAAA9X,GAAA,EAACyY,EAAAA,EAA6B,WAC5B,GAAAX,EAAA9X,GAAA,EAACgY,EAAAA,CAAKA,CAAAA,CAAC3X,UAAU,eAIrB,GAAAyX,EAAA9X,GAAA,EAACyY,EAAAA,EAAwB,WAAE9B,QAG/BhQ,CAAAA,EAAWsR,WAAW,CAAGQ,EAAAA,EAAoB,CAACR,WAAW,CAYzDe,EAVwBpB,UAAgB,CAGtC,CAAAja,EAA0Bka,QAAzB,CAAExX,UAAAA,CAAS,CAAE,GAAG+V,EAAO,CAAAzY,QACxB,GAAAma,EAAA9X,GAAA,EAACyY,EAAAA,EAAyB,EACxBZ,IAAKA,EACLxX,UAAWsK,CAAAA,EAAAA,EAAAA,EAAAA,EAAG,2BAA4BtK,GACzC,GAAG+V,CAAK,KAGG6B,WAAW,CAAGQ,EAAAA,EAAyB,CAACR,WAAW","sources":["webpack://_N_E/?c683","webpack://_N_E/./app/(application)/evals/[id]/components/test-case-selection-modal.tsx","webpack://_N_E/./app/(application)/evals/[id]/runs/components/create-eval-run-modal.tsx","webpack://_N_E/./app/(application)/evals/[id]/runs/components/eval-run-column.tsx","webpack://_N_E/./app/(application)/evals/[id]/runs/components/eval-runs-table.tsx","webpack://_N_E/./app/(application)/evals/[id]/runs/eval-runs.tsx","webpack://_N_E/./app/(application)/evals/[id]/page.tsx","webpack://_N_E/./components/ai-elements/artifact.tsx","webpack://_N_E/./components/custom/text-preview.tsx","webpack://_N_E/./components/ui/checkbox.tsx","webpack://_N_E/./components/ui/loading.tsx","webpack://_N_E/./components/ui/select.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/evals/[id]/page.tsx\");\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { Search } from \"lucide-react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { GET_TEST_CASES } from \"@/queries/queries\";\nimport { Label } from \"@/components/ui/label\"\nimport { Alert, AlertDescription } from \"@/components/ui/alert\"\n\ninterface TestCaseSelectionModalProps {\n open: boolean;\n onClose: () => void;\n onSelect: (testCaseIds: string[]) => void;\n excludeIds?: string[];\n}\n\nexport function TestCaseSelectionModal({\n open,\n onClose,\n onSelect,\n excludeIds = [],\n}: TestCaseSelectionModalProps) {\n const [search, setSearch] = useState(\"\");\n const [selectedIds, setSelectedIds] = useState<string[]>([]);\n\n const { loading, data } = useQuery(GET_TEST_CASES, {\n variables: {\n page: 1,\n limit: 100,\n filters: search ? [{ AND: [{ name: { contains: search } }, { eval_set_id: { eq: null } }] }] : [{ eval_set_id: { eq: null } }],\n },\n skip: !open,\n });\n\n useEffect(() => {\n if (!open) {\n setSelectedIds([]);\n setSearch(\"\");\n }\n }, [open]);\n\n const testCases = data?.test_casesPagination?.items || [];\n const availableTestCases = testCases.filter((tc: any) => !excludeIds.includes(tc.id));\n\n const handleToggle = (id: string) => {\n setSelectedIds(prev =>\n prev.includes(id)\n ? prev.filter(x => x !== id)\n : [...prev, id]\n );\n };\n\n const handleSelectAll = () => {\n if (selectedIds.length === availableTestCases.length) {\n setSelectedIds([]);\n } else {\n setSelectedIds(availableTestCases.map((tc: any) => tc.id));\n }\n };\n\n const handleSubmit = () => {\n onSelect(selectedIds);\n };\n\n return (\n <Dialog open={open} onOpenChange={onClose}>\n <DialogContent className=\"max-w-3xl max-h-[80vh] flex flex-col\">\n <DialogHeader>\n <DialogTitle>Add Test Cases</DialogTitle>\n <DialogDescription>\n Select test cases to add to this eval set. Already added test cases are hidden.\n </DialogDescription>\n <Alert variant=\"destructive\" className=\"mt-3\">\n <AlertDescription>\n <strong>Note:</strong> You can only add test cases that are not already in an eval set. Remove them from another eval set first if you want to add them to a new eval set.\n </AlertDescription>\n </Alert>\n </DialogHeader>\n\n <div className=\"space-y-4 flex-1 overflow-hidden flex flex-col\">\n {/* Search */}\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search test cases by name...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n {/* Select All */}\n {availableTestCases.length > 0 && (\n <div className=\"flex items-center gap-2 px-1\">\n <Checkbox\n id=\"select-all-test-cases\"\n checked={selectedIds.length === availableTestCases.length && availableTestCases.length > 0}\n onCheckedChange={handleSelectAll}\n />\n <Label htmlFor=\"select-all-test-cases\" className=\"text-sm text-muted-foreground\">\n Select all ({selectedIds.length} selected)\n </Label>\n </div>\n )}\n\n {/* Test Cases List */}\n <ScrollArea className=\"flex-1 border rounded-lg\">\n <div>\n {loading ? (\n Array.from({ length: 3 }).map((_, i) => (\n <Skeleton key={i} className=\"h-10 w-full\" />\n ))\n ) : availableTestCases.length === 0 ? (\n <div className=\"text-center py-12 text-muted-foreground mx-5\">\n {search ? \"No test cases found matching your search.\" : \"No test cases available to add.\"}\n </div>\n ) : (\n availableTestCases.map((testCase: any) => (\n <div\n key={testCase.id}\n onClick={() => {\n handleToggle(testCase.id)\n }}\n className=\"flex items-start gap-3 p-3 hover:bg-muted/50\"\n >\n <Checkbox\n checked={selectedIds.includes(testCase.id)}\n id={`select-test-case-${testCase.id}`}\n onCheckedChange={() => handleToggle(testCase.id)}\n />\n <Label htmlFor={`select-test-case-${testCase.id}`} className=\"text-sm text-muted-foreground flex flex-col\">\n <span>{testCase.name}</span>\n <small>{testCase.description}</small>\n </Label>\n </div>\n ))\n )}\n </div>\n </ScrollArea>\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n onClick={handleSubmit}\n disabled={selectedIds.length === 0}\n >\n Add {selectedIds.length} Test Case{selectedIds.length !== 1 ? 's' : ''}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport { Loader2 } from \"lucide-react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Label } from \"@/components/ui/label\";\nimport { Input } from \"@/components/ui/input\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { CREATE_EVAL_RUN, UPDATE_EVAL_RUN, GET_AGENTS, GET_EVAL_FUNCTIONS, GET_TEST_CASES } from \"@/queries/queries\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { Eval } from \"@/types/models/eval\";\nimport { EvalRun, ScoringMethod } from \"@/types/models/eval-run\";\n\ninterface CreateEvalRunModalProps {\n modalKey: string;\n eval_set_id: string;\n onCreateSuccess?: () => void;\n existingRun?: EvalRun | null;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\nexport function CreateEvalRunModal({\n modalKey,\n eval_set_id,\n onCreateSuccess,\n existingRun = null,\n open,\n onOpenChange,\n}: CreateEvalRunModalProps) {\n const { toast } = useToast();\n const isEditing = !!existingRun && !!existingRun.id;\n\n const [evalRun, setEvalRun] = useState<EvalRun>({\n id: \"\",\n name: \"\",\n rights_mode: \"private\",\n createdAt: \"\",\n updatedAt: \"\",\n eval_set_id,\n agent_id: \"\",\n eval_functions: [],\n scoring_method: \"average\",\n pass_threshold: 70,\n timeout_in_seconds: 300,\n test_case_ids: [],\n });\n\n // Reset form when existingRun changes\n useEffect(() => {\n if (existingRun) {\n setEvalRun(existingRun);\n } else {\n setEvalRun({\n id: \"\",\n name: \"\",\n rights_mode: \"private\",\n createdAt: \"\",\n updatedAt: \"\",\n eval_set_id,\n agent_id: \"\",\n eval_functions: [],\n scoring_method: \"average\",\n pass_threshold: 70,\n timeout_in_seconds: 300,\n test_case_ids: [],\n });\n }\n }, [existingRun, eval_set_id]);\n\n // Fetch agents\n const { data: agentsData } = useQuery(GET_AGENTS, {\n variables: { page: 1, limit: 100, filters: [] },\n skip: !eval_set_id,\n });\n\n const { data: evalFunctionsData } = useQuery(GET_EVAL_FUNCTIONS, {\n skip: !eval_set_id,\n });\n\n // Fetch test cases\n const { data: testCasesData } = useQuery(GET_TEST_CASES, {\n variables: {\n page: 1,\n limit: 500,\n filters: [{ eval_set_id: { eq: eval_set_id } }]\n },\n skip: !eval_set_id,\n });\n\n const testCasesList = testCasesData?.test_casesPagination?.items || [];\n\n const [createEvalRun, { loading: createLoading }] = useMutation(CREATE_EVAL_RUN, {\n onCompleted: () => {\n toast({\n title: \"Eval run created\",\n description: \"The eval run has been created successfully. You can now run it.\",\n });\n if (onCreateSuccess) {\n onCreateSuccess();\n }\n onOpenChange(false);\n },\n onError: (error) => {\n toast({\n title: \"Failed to create eval run\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const [updateEvalRun, { loading: updateLoading }] = useMutation(UPDATE_EVAL_RUN, {\n onCompleted: () => {\n toast({\n title: \"Eval run updated\",\n description: \"The eval run has been updated successfully.\",\n });\n if (onCreateSuccess) {\n onCreateSuccess();\n }\n onOpenChange(false);\n },\n onError: (error) => {\n toast({\n title: \"Failed to update eval run\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const loading = createLoading || updateLoading;\n\n const handleToggleTestCase = (testCaseId: string) => {\n setEvalRun(prev => ({\n ...prev,\n test_case_ids: prev.test_case_ids.includes(testCaseId)\n ? prev.test_case_ids.filter(id => id !== testCaseId)\n : [...prev.test_case_ids, testCaseId]\n }))\n };\n\n const handleToggleAllTestCases = () => {\n setEvalRun(prev => ({\n ...prev,\n test_case_ids: prev.test_case_ids.length === testCasesList.length\n ? []\n : testCasesList.map((tc: any) => tc.id)\n }))\n };\n\n const handleToggleEvalFunction = (evalFunction: { id: string; name: string }) => {\n setEvalRun(prev => ({\n ...prev,\n eval_functions: prev.eval_functions.some(ef => ef.id === evalFunction.id)\n ? prev.eval_functions.filter(ef => ef.id !== evalFunction.id)\n : [...prev.eval_functions, { ...evalFunction, config: {} }]\n }))\n };\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n\n console.log(\"[EXULU] Eval run\", evalRun);\n\n if (!evalRun.name) {\n toast({\n title: \"Validation error\",\n description: \"Please enter a name for this eval run.\",\n variant: \"destructive\",\n });\n return;\n }\n\n if (!evalRun.agent_id) {\n toast({\n title: \"Validation error\",\n description: \"Please select an agent.\",\n variant: \"destructive\",\n });\n return;\n }\n\n if (evalRun.test_case_ids.length === 0) {\n toast({\n title: \"Validation error\",\n description: \"Please select at least one test case.\",\n variant: \"destructive\",\n });\n return;\n }\n\n if (evalRun.eval_functions.length === 0) {\n toast({\n title: \"Validation error\",\n description: \"Please select at least one eval function.\",\n variant: \"destructive\",\n });\n return;\n }\n\n const data = {\n name: evalRun.name,\n eval_set_id,\n agent_id: evalRun.agent_id,\n test_case_ids: evalRun.test_case_ids,\n eval_functions: evalRun.eval_functions,\n scoring_method: evalRun.scoring_method.toUpperCase() as ScoringMethod,\n pass_threshold: evalRun.pass_threshold,\n timeout_in_seconds: evalRun.timeout_in_seconds,\n rights_mode: evalRun.rights_mode,\n RBAC: {\n users: evalRun.RBAC?.users,\n roles: evalRun.RBAC?.roles,\n projects: evalRun.RBAC?.projects,\n },\n };\n\n if (isEditing) {\n updateEvalRun({\n variables: {\n id: evalRun.id,\n data,\n },\n });\n } else {\n createEvalRun({\n variables: {\n data,\n },\n });\n\n }\n };\n\n return (\n <Dialog key={modalKey} open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-4xl h-[90vh] flex flex-col\">\n <DialogHeader>\n <DialogTitle>{isEditing ? \"Edit Eval Run\" : \"Create Eval Run\"}</DialogTitle>\n <DialogDescription>\n {isEditing ? \"Update the configuration for this eval run.\" : \"Configure a new evaluation run for this eval set.\"}\n </DialogDescription>\n </DialogHeader>\n <form onSubmit={handleSubmit} className=\"flex-1 flex flex-col min-h-0\">\n <ScrollArea className=\"flex-1 -mx-6 px-6\">\n <div className=\"space-y-6 pb-4\">\n {/* Name Input */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <div>\n <h3 className=\"font-semibold text-sm\">Name</h3>\n <p className=\"text-xs text-muted-foreground\">Give this eval run a descriptive name</p>\n </div>\n </div>\n <Input\n type=\"text\"\n placeholder=\"e.g., GPT-4 baseline evaluation\"\n value={evalRun.name}\n onChange={(e) => setEvalRun(prev => ({ ...prev, name: e.target.value }))}\n className=\"h-11\"\n />\n </div>\n <Separator />\n {/* Agent Selection */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <div>\n <h3 className=\"font-semibold text-sm\">Agent</h3>\n <p className=\"text-xs text-muted-foreground\">Choose which agent to evaluate</p>\n </div>\n </div>\n <Select value={evalRun.agent_id} onValueChange={(value: string) => setEvalRun(prev => ({ ...prev, agent_id: value }))}>\n <SelectTrigger className=\"h-11\">\n <SelectValue placeholder=\"Select an agent...\" />\n </SelectTrigger>\n <SelectContent>\n {agentsData?.agentsPagination?.items?.map((agent: any) => (\n <SelectItem key={agent.id} value={agent.id}>\n {agent.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <Separator />\n {/* Eval Functions Selection */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div>\n <h3 className=\"font-semibold text-sm\">Eval Functions</h3>\n <p className=\"text-xs text-muted-foreground\">\n {evalRun.eval_functions.length} of {evalFunctionsData?.evals?.items?.length || 0} selected\n </p>\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation();\n if (evalRun.eval_functions.length === evalFunctionsData?.evals?.items?.length) {\n setEvalRun(prev => ({\n ...prev,\n eval_functions: []\n }));\n } else {\n setEvalRun(prev => ({\n ...prev,\n eval_functions: evalFunctionsData?.evals?.items?.map((e: Eval) => ({ id: e.id, name: e.name, config: {} })) || []\n }));\n }\n }}\n >\n {evalRun.eval_functions.length === evalFunctionsData?.evals?.items?.length ? \"Deselect All\" : \"Select All\"}\n </Button>\n </div>\n <div className=\"border rounded-lg bg-card\">\n <div className=\"p-3 space-y-2\">\n {evalFunctionsData?.evals?.items?.map((_eval: Eval) => (\n <label\n key={_eval.id}\n htmlFor={`eval-${_eval.id}`}\n className=\"flex items-start gap-3 p-3 rounded-md hover:bg-accent transition-colors cursor-pointer border border-transparent hover:border-border\"\n >\n <Checkbox\n id={`eval-${_eval.id}`}\n checked={evalRun.eval_functions.some(ef => ef.id === _eval.id)}\n onCheckedChange={() => handleToggleEvalFunction({ id: _eval.id, name: _eval.name })}\n className=\"mt-0.5\"\n />\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-sm\">{_eval.name}</span>\n </div>\n {_eval.description && (\n <p className=\"text-xs text-muted-foreground mt-1 line-clamp-2\">\n {_eval.description}\n </p>\n )}\n {_eval.config && _eval.config.length > 0 && evalRun.eval_functions.some(ef => ef.id === _eval.id) && (\n <div className=\"mt-3 space-y-3 pt-3 border-t\">\n <p className=\"text-xs font-medium text-muted-foreground\">Configuration</p>\n {_eval.config.map((config: any) => (\n <div key={config.name} className=\"space-y-1.5\">\n <Label htmlFor={`${_eval.id}-${config.name}`} className=\"text-xs font-medium\">\n {config.name}\n </Label>\n <Textarea\n id={`${_eval.id}-${config.name}`}\n placeholder={config.description}\n value={evalRun.eval_functions.find(ef => ef.id === _eval.id)?.config?.[config.name] || ''}\n onChange={(e) => {\n e.stopPropagation();\n setEvalRun(prev => ({ ...prev, eval_functions: prev.eval_functions.map(ef => ef.id === _eval.id ? { ...ef, config: { ...ef.config, [config.name]: e.target.value } } : ef) }));\n }}\n onClick={(e) => e.stopPropagation()}\n className=\"min-h-[80px] text-xs resize-none\"\n />\n {config.description && (\n <p className=\"text-xs text-muted-foreground leading-relaxed\">\n {config.description}\n </p>\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n </label>\n ))}\n </div>\n </div>\n </div>\n\n <Separator />\n\n {/* Test Cases Selection */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div>\n <h3 className=\"font-semibold text-sm\">Test Cases</h3>\n <p className=\"text-xs text-muted-foreground\">\n {evalRun.test_case_ids.length} of {testCasesList.length} selected\n </p>\n </div>\n </div>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation();\n handleToggleAllTestCases();\n }}\n >\n {evalRun.test_case_ids.length === testCasesList.length ? \"Deselect All\" : \"Select All\"}\n </Button>\n </div>\n <div className=\"border rounded-lg bg-card\">\n <ScrollArea className=\"h-[250px]\">\n <div className=\"p-3 space-y-2\">\n {testCasesList.map((testCase: any) => (\n <label\n key={testCase.id}\n htmlFor={`test-case-${testCase.id}`}\n className=\"flex items-start gap-3 p-3 rounded-md hover:bg-accent transition-colors cursor-pointer border border-transparent hover:border-border\"\n >\n <Checkbox\n id={`test-case-${testCase.id}`}\n checked={evalRun.test_case_ids.includes(testCase.id)}\n onCheckedChange={() => handleToggleTestCase(testCase.id)}\n className=\"mt-0.5\"\n />\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-medium text-sm\">{testCase.name}</span>\n <Badge variant=\"secondary\" className=\"text-[10px] shrink-0\">\n {testCase.inputs?.length || 0} msgs\n </Badge>\n </div>\n {testCase.description && (\n <p className=\"text-xs text-muted-foreground mt-1 line-clamp-2\">\n {testCase.description}\n </p>\n )}\n </div>\n </label>\n ))}\n </div>\n </ScrollArea>\n </div>\n </div>\n <Separator />\n {/* Scoring Configuration */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <div>\n <h3 className=\"font-semibold text-sm\">Scoring</h3>\n <p className=\"text-xs text-muted-foreground\">Configure how scores are calculated</p>\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4 p-4 border rounded-lg bg-muted/30\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"scoringMethod\" className=\"text-xs font-semibold\">Scoring Method</Label>\n <Select\n value={evalRun.scoring_method}\n onValueChange={(value: any) => setEvalRun(prev => ({ ...prev, scoring_method: value as ScoringMethod }))}>\n <SelectTrigger id=\"scoringMethod\" className=\"h-10\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"median\">Median</SelectItem>\n <SelectItem value=\"average\">Average</SelectItem>\n <SelectItem value=\"sum\">Sum</SelectItem>\n </SelectContent>\n </Select>\n <p className=\"text-xs text-muted-foreground leading-relaxed\">\n How to combine multiple eval function scores\n </p>\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"passThreshold\" className=\"text-xs font-semibold\">Pass Threshold</Label>\n <Input\n id=\"passThreshold\"\n type=\"number\"\n min=\"0\"\n max=\"100\"\n value={evalRun.pass_threshold}\n onChange={(e) => setEvalRun(prev => ({ ...prev, pass_threshold: Number(e.target.value) }))}\n className=\"h-10\"\n />\n <p className=\"text-xs text-muted-foreground leading-relaxed\">\n Minimum score (0-100) to pass\n </p>\n </div>\n <div className=\"space-y-2\">\n <Label htmlFor=\"timeoutInSeconds\" className=\"text-xs font-semibold\">Timeout (seconds)</Label>\n <Input\n id=\"timeoutInSeconds\"\n type=\"number\"\n min=\"1\"\n value={evalRun.timeout_in_seconds}\n onChange={(e) => setEvalRun(prev => ({ ...prev, timeout_in_seconds: Number(e.target.value) }))}\n className=\"h-10\"\n />\n <p className=\"text-xs text-muted-foreground leading-relaxed\">\n Max time per test case execution\n </p>\n </div>\n </div>\n </div>\n </div>\n </ScrollArea>\n <Separator className=\"my-4\" />\n <DialogFooter className=\"shrink-0\">\n <Button\n type=\"submit\"\n disabled={loading || !evalRun.name || !evalRun.agent_id || evalRun.test_case_ids.length === 0 || evalRun.eval_functions.length === 0}\n className=\"w-full h-11\">\n {loading && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n {isEditing ? \"Update Eval Run\" : \"Create Eval Run\"}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog >\n );\n}","\"use client\";\n\nimport { NetworkStatus, useQuery } from \"@apollo/client\";\nimport { GET_JOB_RESULTS } from \"@/queries/queries\";\nimport { JobResult } from \"@/types/models/job-result\";\nimport { EvalRun } from \"@/types/models/eval-run\";\nimport { TestCase } from \"@/types/models/test-case\";\nimport { Clock, XCircle, Pause, AlertTriangle, Loader2, MoreVertical, Edit, Play, Square, Copy, RefreshCcw } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Loading } from \"@/components/ui/loading\";\n\ninterface EvalRunColumnProps {\n evalRun: EvalRun;\n testCases: TestCase[];\n onCellClick: (result: JobResult | null) => void;\n handleEditRun: (run: EvalRun) => void;\n handleCopyRun: (run: EvalRun) => void;\n handleStartRun: (run: EvalRun) => void;\n handleStopRun: (run: EvalRun) => void;\n}\n\nconst statusIcons = {\n waiting: <Clock className=\"h-3 w-3\" />,\n active: <Loader2 className=\"h-3 w-3 animate-spin\" />,\n completed: null,\n failed: <XCircle className=\"h-3 w-3\" />,\n delayed: <Clock className=\"h-3 w-3\" />,\n paused: <Pause className=\"h-3 w-3\" />,\n stuck: <AlertTriangle className=\"h-3 w-3\" />,\n};\n\nconst statusColors = {\n waiting: \"text-yellow-600 bg-yellow-50 border-yellow-200\",\n active: \"text-blue-600 bg-blue-50 border-blue-200\",\n completed: \"\",\n failed: \"text-red-600 bg-red-50 border-red-200\",\n delayed: \"text-orange-600 bg-orange-50 border-orange-200\",\n paused: \"text-gray-600 bg-gray-50 border-gray-200\",\n stuck: \"text-red-600 bg-red-50 border-red-200\",\n};\n\nexport function EvalRunColumn({ evalRun, testCases, onCellClick, handleEditRun, handleCopyRun, handleStartRun, handleStopRun }: EvalRunColumnProps) {\n\n const { data: jobResultsData, loading: loadingJobResults, refetch: refetchJobResults, networkStatus: jobsNetworkStatus } = useQuery(GET_JOB_RESULTS, {\n variables: {\n page: 1,\n limit: 500,\n filters: [{ label: { contains: \"eval-run-\" + evalRun.id } }],\n },\n skip: !evalRun.id\n });\n\n const jobResults = jobResultsData?.job_resultsPagination?.items || [];\n\n const getCellData = (test_case_id: string): JobResult | null => {\n const result = jobResults.find((jr: JobResult) =>\n jr.label?.includes(test_case_id) && jr.label?.includes(evalRun.id)\n );\n\n if (result === null || result === undefined) return null;\n\n return result;\n };\n\n const getCellColor = (result: JobResult | null): string => {\n console.log(\"[EXULU] result\", result?.result);\n if (!result || result.state !== \"completed\" || result.result === undefined) {\n return \"\";\n }\n\n const score = result.result;\n const threshold = evalRun.pass_threshold;\n\n if (score >= threshold) {\n return \"text-green-500\";\n } else if (score >= threshold - 20) {\n return \"text-orange-500\";\n } else {\n return \"text-red-500\";\n }\n };\n\n return (\n <>\n <div className=\"flex-shrink-0\">\n <div\n className=\"p-3 text-center border-r bg-muted/20 h-[60px] flex items-center justify-center border-b border-r\">\n <span className=\"text-xs text-muted-foreground space-x-2 flex items-center justify-center\">\n {/* Refetch action */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={\n loadingJobResults ||\n jobsNetworkStatus === NetworkStatus.refetch ||\n jobsNetworkStatus === NetworkStatus.fetchMore ||\n jobsNetworkStatus === NetworkStatus.loading\n }\n onClick={() => {\n refetchJobResults()\n }}>\n {\n loadingJobResults && <Loading />\n }\n <RefreshCcw className=\"h-3 w-3\" />\n </Button>\n {/* Copy, edit, start buttons */}\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n handleCopyRun(evalRun)\n }}>\n <Copy className=\"h-3 w-3\" />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n handleEditRun(evalRun)\n }}>\n <Edit className=\"h-3 w-3\" />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n handleStartRun(evalRun)\n }}>\n <Play className=\"h-3 w-3\" />\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n handleStopRun(evalRun)\n }}>\n <Square className=\"h-3 w-3\" />\n </Button>\n\n </span>\n </div>\n </div>\n <div className=\"flex-shrink-0\">\n {testCases.map((testCase) => {\n const isIncluded = evalRun.test_case_ids.includes(testCase.id);\n const result = getCellData(testCase.id);\n\n if (!isIncluded) {\n return (\n <div\n key={testCase.id}\n className=\"p-3 text-center border-r bg-muted/20 h-[60px] flex items-center justify-center border-b border-r\"\n >\n <span className=\"text-xs text-muted-foreground\">—</span>\n </div>\n );\n }\n\n const cellColor = getCellColor(result);\n const statusColor = result?.state ? statusColors[result.state] : \"bg-transparent\";\n\n return (\n <div\n key={testCase.id}\n className=\"p-3 text-center border-b border-r h-[60px] flex items-center justify-center\"\n >\n <div\n onClick={() => onCellClick(result)}\n className={cn(\n \"w-full h-full min-h-[48px] rounded transition-colors flex items-center justify-center gap-2\",\n cellColor || statusColor || \"border-gray-200 bg-gray-50\",\n result?.state === \"completed\" && \"cursor-pointer hover:opacity-80\",\n (!result || result.state !== \"completed\") && \"cursor-default\"\n )}\n >\n {loadingJobResults ? (\n <Loader2 className=\"h-3 w-3 animate-spin\" />\n ) : result ? (\n <>\n {result.state === \"completed\" && result.result !== undefined ? (\n <span className=\"font-semibold text-sm hover:underline\">\n {result.result.toFixed(1)}\n </span>\n ) : (\n <div className=\"flex items-center gap-2\">\n {statusIcons[result.state]}\n <span className=\"text-xs capitalize\">\n {result.state}\n </span>\n </div>\n )}\n </>\n ) : (\n <div className=\"flex items-center gap-2\">\n {statusIcons[\"waiting\"]}\n <span className=\"text-xs capitalize\">\n Not started\n </span>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { ScrollArea, ScrollBar } from \"@/components/ui/scroll-area\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from \"@/components/ui/sheet\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Loader2, ChevronLeft, Clock, Zap, CheckCircle, XCircle, AlertCircle } from \"lucide-react\";\nimport { format } from \"date-fns\";\nimport { EvalRun } from \"@/types/models/eval-run\";\nimport { GET_TEST_CASES, RUN_EVAL, GET_AGENTS_BY_IDS } from \"@/queries/queries\";\nimport { JobResult } from \"@/types/models/job-result\";\nimport { EvalSet } from \"@/types/models/eval-set\";\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { CreateEvalRunModal } from \"./create-eval-run-modal\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { EvalRunColumn } from \"./eval-run-column\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { CodePreview } from \"@/components/custom/code-preview\";\nimport { formatDuration } from \"@/lib/utils\";\nimport { Conversation, ConversationContent } from \"@/components/ai-elements/conversation\";\nimport { MessageRenderer } from \"@/components/message-renderer\";\nimport { type Agent } from \"@/types/models/agent\";\n\ninterface EvalRunsTableProps {\n evalRuns: EvalRun[];\n evalSet: EvalSet;\n canWrite: boolean;\n onRefetch: () => void;\n}\n\nexport function EvalRunsTable({ evalRuns, evalSet, onRefetch }: EvalRunsTableProps) {\n const { toast } = useToast();\n const [visibleRuns, setVisibleRuns] = useState(5);\n const [selectedResult, setSelectedResult] = useState<JobResult | null>(null);\n const [isSheetOpen, setIsSheetOpen] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n const [modalRun, setModalRun] = useState<EvalRun | null>(null);\n const [startConfirmOpen, setStartConfirmOpen] = useState(false);\n const [runToStart, setRunToStart] = useState<EvalRun | null>(null);\n\n console.log(\"[EXULU] Eval set\", evalSet);\n const { data: testCasesData, loading: loadingTestCases } = useQuery(GET_TEST_CASES, {\n variables: {\n page: 1,\n limit: 500,\n filters: [{ eval_set_id: { eq: evalSet.id } }],\n },\n skip: !evalSet.id,\n pollInterval: 10000, // Poll every 10 seconds to update test case statuses\n });\n\n const testCasesList = testCasesData?.test_casesPagination?.items || [];\n\n // Fetch agents for all eval runs\n const uniqueAgentIds = Array.from(new Set(evalRuns.map(run => run.agent_id).filter(Boolean)));\n const { data: agentsData } = useQuery(GET_AGENTS_BY_IDS, {\n variables: { ids: uniqueAgentIds },\n skip: uniqueAgentIds.length === 0,\n });\n\n const agentsMap: Map<string, Agent> = new Map((agentsData?.agentByIds || []).map((agent: any) => [agent.id, agent]));\n\n const [runEval, { loading: runningEval }] = useMutation(RUN_EVAL, {\n onCompleted: (data) => {\n toast({\n title: \"Eval run started\",\n description: `Scheduled ${data.runEval.count} test cases to run.`,\n });\n onRefetch();\n },\n onError: (error) => {\n toast({\n title: \"Failed to start eval run\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const sortedEvalRuns = [...evalRuns].sort((a, b) =>\n new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime()\n );\n const displayedRuns = sortedEvalRuns.slice(-visibleRuns);\n const hasMoreRuns = sortedEvalRuns.length > visibleRuns;\n\n const handleCellClick = (result: JobResult | null) => {\n if (result && result.state === \"completed\") {\n setSelectedResult(result);\n setIsSheetOpen(true);\n }\n };\n\n const handleLoadMore = () => {\n setVisibleRuns(prev => Math.min(prev + 5, sortedEvalRuns.length));\n };\n\n const handleEditRun = (run: EvalRun) => {\n setModalRun(run);\n setModalOpen(true);\n };\n\n const handleCopyRun = (run: EvalRun) => {\n // Remove the ID so it creates a new run instead of updating\n setModalRun({ ...run, id: \"\", name: `${run.name} (Copy)` });\n setModalOpen(true);\n };\n\n const handleStartRun = (run: EvalRun) => {\n setRunToStart(run);\n setStartConfirmOpen(true);\n };\n\n const confirmStartRun = () => {\n if (runToStart) {\n runEval({\n variables: {\n id: runToStart.id,\n },\n });\n }\n setStartConfirmOpen(false);\n setRunToStart(null);\n };\n\n const handleStopRun = (run: EvalRun) => {\n // TODO: Implement stop functionality\n // - Add a Graphql mutation \"stopEval\"\n // - The mutation finds all jobs with the eval_run_id and status delayed | waiting | paused | stuck and deletes them\n console.log(\"Stop run:\", run);\n };\n\n if (loadingTestCases) {\n return (\n <div className=\"space-y-2\">\n {Array.from({ length: 5 }).map((_, i) => (\n <Skeleton key={i} className=\"h-12 w-full\" />\n ))}\n </div>\n );\n }\n\n if (testCasesList.length === 0) {\n return (\n <div className=\"text-center py-8 text-muted-foreground\">\n No test cases in this eval set.\n </div>\n );\n }\n\n return (\n <div className=\"w-full\">\n <ScrollArea className=\"w-full\">\n <div className=\"flex\">\n {/* Test Cases Column (Sticky) */}\n <div className=\"sticky left-0 z-10 bg-background flex-shrink-0 min-w-[200px]\">\n {/* Header */}\n <div className=\"p-3 border-r border-b text-left font-medium text-sm h-[120px] flex\">\n <span className=\"text-xs text-muted-foreground m-auto\">Test Case \\ Eval Run</span>\n </div>\n\n {/* Rows */}\n {testCasesList.map((testCase: any) => (\n <div key={testCase.id} className=\"p-3 border-b border-r h-[60px] flex items-center\">\n <div>\n <div className=\"font-medium text-sm\">{testCase.name}</div>\n <div className=\"text-xs text-muted-foreground mt-1 line-clamp-1 truncate max-w-[100px]\">\n {testCase.id}\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Load More Button Column */}\n {hasMoreRuns && (\n <div className=\"flex-shrink-0 min-w-[60px]\">\n <div className=\"text-center border-b border-r p-2 min-h-[48px] flex items-center justify-center\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleLoadMore}\n className=\"h-8 w-8 p-0\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n </div>\n {testCasesList.map((testCase: any) => (\n <div key={testCase.id} className=\"p-3 border-b border-r bg-muted/20 min-h-[72px]\" />\n ))}\n </div>\n )}\n\n {/* Eval Run Columns */}\n {displayedRuns.map((run) => (\n <div key={run.id} className=\"flex-1 min-w-[100px]\">\n {/* Column Header */}\n <div className=\"px-2 py-1.5 text-center font-medium text-sm border-r bg-muted/30 h-[60px]\">\n <div className=\"space-y-0.5 mt-2\">\n <div className=\"flex items-center justify-between gap-1\">\n <div className=\"flex-1 text-xs font-semibold text-foreground truncate\">\n {run.name}\n </div>\n </div>\n <div className=\"text-[10px] text-muted-foreground font-normal leading-tight\">\n {format(new Date(run.createdAt), \"MMM d, yyyy · HH:mm\")}\n </div>\n <div className=\"text-[10px] text-muted-foreground font-normal leading-tight truncate max-w-[100px] text-center m-auto\">\n {agentsMap.get(run.agent_id)?.name || run.agent_id}\n </div>\n </div>\n </div>\n {/* Column Data */}\n <EvalRunColumn\n evalRun={run}\n testCases={testCasesList}\n onCellClick={handleCellClick}\n handleEditRun={handleEditRun}\n handleCopyRun={handleCopyRun}\n handleStartRun={handleStartRun}\n handleStopRun={handleStopRun}\n />\n </div>\n ))}\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n\n <Sheet open={isSheetOpen} onOpenChange={setIsSheetOpen}>\n <SheetContent className=\"sm:max-w-2xl overflow-y-auto\">\n <SheetHeader>\n <SheetTitle>Test Result Details</SheetTitle>\n </SheetHeader>\n\n {selectedResult && (\n <Tabs defaultValue=\"overview\" className=\"mt-6\">\n <TabsList className=\"grid w-full grid-cols-4\">\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"messages\">Messages</TabsTrigger>\n <TabsTrigger value=\"functions\">Functions</TabsTrigger>\n <TabsTrigger value=\"raw\">Raw Data</TabsTrigger>\n </TabsList>\n\n {/* Overview Tab */}\n <TabsContent value=\"overview\" className=\"space-y-4\">\n {/* Key Metrics Cards */}\n <div className=\"grid grid-cols-2 gap-4\">\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium text-muted-foreground\">Score</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-3xl font-bold\">{selectedResult.result?.toFixed(1) ?? 'N/A'}</div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium text-muted-foreground flex items-center gap-2\">\n <Clock className=\"h-4 w-4\" />\n Duration\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-semibold\">{formatDuration((selectedResult.metadata?.duration / 1000) || 0)}</div>\n </CardContent>\n </Card>\n </div>\n\n {/* Status and Job ID */}\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium\">Status & Job Information</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Status</span>\n <Badge\n variant={selectedResult.state === 'completed' ? 'default' : selectedResult.state === 'failed' ? 'destructive' : 'secondary'}\n className=\"flex items-center gap-1\"\n >\n {selectedResult.state === 'completed' && <CheckCircle className=\"h-3 w-3\" />}\n {selectedResult.state === 'failed' && <XCircle className=\"h-3 w-3\" />}\n {selectedResult.state !== 'completed' && selectedResult.state !== 'failed' && <AlertCircle className=\"h-3 w-3\" />}\n <span className=\"capitalize\">{selectedResult.state}</span>\n </Badge>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Job ID</span>\n <span className=\"text-sm font-mono\">{selectedResult.job_id}</span>\n </div>\n </CardContent>\n </Card>\n\n {/* Error Display */}\n {selectedResult.error && typeof selectedResult.error === 'object' && Object.keys(selectedResult.error).length > 0 && (\n <Card className=\"border-destructive\">\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium text-destructive flex items-center gap-2\">\n <XCircle className=\"h-4 w-4\" />\n Error Details\n </CardTitle>\n </CardHeader>\n <CardContent>\n <CodePreview code={JSON.stringify(selectedResult.error, null, 2)} />\n </CardContent>\n </Card>\n )}\n\n {/* Token Usage */}\n {selectedResult.metadata?.tokens && (\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <Zap className=\"h-4 w-4\" />\n Token Usage\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Total Tokens</span>\n <span className=\"text-lg font-semibold\">{selectedResult.metadata.tokens.totalTokens?.toLocaleString() ?? 'N/A'}</span>\n </div>\n <div className=\"h-px bg-border\" />\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <div className=\"text-xs text-muted-foreground mb-1\">Input</div>\n <div className=\"text-base font-medium\">{selectedResult.metadata.tokens.inputTokens?.toLocaleString() ?? 'N/A'}</div>\n </div>\n <div>\n <div className=\"text-xs text-muted-foreground mb-1\">Output</div>\n <div className=\"text-base font-medium\">{selectedResult.metadata.tokens.outputTokens?.toLocaleString() ?? 'N/A'}</div>\n </div>\n </div>\n </CardContent>\n </Card>\n )}\n </TabsContent>\n\n {/* Messages Tab */}\n <TabsContent value=\"messages\" className=\"space-y-4\">\n <Card>\n <CardContent className=\"p-0\">\n {/* @ts-ignore */}\n <Conversation className=\"max-h-[600px] overflow-y-auto border-0 rounded-lg bg-muted/30\">\n {/* @ts-ignore */}\n <ConversationContent className=\"px-6 py-4\">\n <MessageRenderer\n messages={selectedResult.metadata?.messages || []}\n config={{\n marginTopFirstMessage: 'mt-0',\n customAssistantClassnames: 'bg-secondary/50 rounded-lg px-3 py-1 border-l-2 border-primary/30'\n }}\n status={\"ready\"}\n showActions={false}\n writeAccess={false}\n />\n </ConversationContent>\n </Conversation>\n </CardContent>\n </Card>\n </TabsContent>\n\n {/* Eval Functions Tab */}\n <TabsContent value=\"functions\" className=\"space-y-4\">\n {selectedResult.metadata?.function_results && selectedResult.metadata.function_results.length > 0 ? (\n <div className=\"space-y-3\">\n {selectedResult.metadata.function_results.map((result: any) => (\n <Card key={result.id}>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base font-medium\">{result.eval_function_name}</CardTitle>\n <p className=\"text-xs text-muted-foreground font-mono mt-1\">{result.eval_function_id}</p>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground\">Result</span>\n <span className=\"text-2xl font-bold\">{result.result?.toFixed(2) ?? 'N/A'}</span>\n </div>\n <div className=\"flex items-center justify-between\">\n {\n Object.keys(result.eval_function_config || {}).map((key: string) => (\n <div key={key} className=\"flex flex-col\">\n <span className=\"text-sm text-muted-foreground capitalize\">{key}:</span>\n <p className=\"text-xs text-muted-foreground font-mono mt-1\">{result.eval_function_config[key]}</p>\n </div>\n ))\n }\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n ) : (\n <Card>\n <CardContent className=\"py-8 text-center text-muted-foreground\">\n No eval function results available\n </CardContent>\n </Card>\n )}\n </TabsContent>\n\n {/* Raw Data Tab */}\n <TabsContent value=\"raw\" className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Metadata (JSON)</CardTitle>\n </CardHeader>\n <CardContent>\n {selectedResult.metadata ? (\n <CodePreview code={JSON.stringify(selectedResult.metadata, null, 2)} />\n ) : (\n <div className=\"text-sm text-muted-foreground\">No metadata available</div>\n )}\n </CardContent>\n </Card>\n </TabsContent>\n </Tabs>\n )}\n </SheetContent>\n </Sheet>\n\n <CreateEvalRunModal\n modalKey={`eval-run-modal-table-${evalSet.id}`}\n eval_set_id={evalSet.id}\n open={modalOpen}\n onOpenChange={(open) => {\n setModalOpen(open);\n if (!open) {\n setModalRun(null);\n }\n }}\n existingRun={modalRun}\n onCreateSuccess={onRefetch}\n />\n\n <AlertDialog open={startConfirmOpen} onOpenChange={setStartConfirmOpen}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Start Eval Run?</AlertDialogTitle>\n <AlertDialogDescription>\n This will schedule all {runToStart?.test_case_ids.length || 0} test cases in \"{runToStart?.name}\" to be run.\n The eval run will execute each test case against the configured agent and eval functions.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel onClick={() => setRunToStart(null)}>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={confirmStartRun} disabled={runningEval}>\n {runningEval && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n Start Run\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </div>\n );\n}\n","\"use client\";\n\nimport { useContext, useState } from \"react\";\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { ConfigContext } from \"@/components/config-context\";\nimport { Brain, Plus, AlertTriangle, ListChecks, RefreshCcw, Loader2, ChevronsUpDown } from \"lucide-react\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { GET_EVAL_SET_BY_ID, GET_EVAL_RUNS, RUN_EVAL } from \"@/queries/queries\";\nimport { CreateEvalRunModal } from \"./components/create-eval-run-modal\";\nimport { EvalRunsTable } from \"./components/eval-runs-table\";\nimport { QueueManagement } from \"./components/queue-management\";\nimport { EvalSet } from \"@/types/models/eval-set\";\nimport { EvalRun } from \"@/types/models/eval-run\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { QueueJob } from \"@/types/models/job\";\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@radix-ui/react-collapsible\";\nimport { ListBulletIcon } from \"@radix-ui/react-icons\";\n\nexport default function EvalRuns({ id }: { id: string }) {\n const { user } = useContext(UserContext);\n const config = useContext(ConfigContext);\n const eval_set_id = id;\n const [createModalOpen, setCreateModalOpen] = useState(false);\n const { toast } = useToast();\n\n // Check if user has evals access\n const hasEvalsAccess = user.super_admin || user.role?.evals === \"read\" || user.role?.evals === \"write\";\n const canWrite = user.super_admin || user.role?.evals === \"write\";\n\n const [runEval] = useMutation(RUN_EVAL, {\n onCompleted: (data) => {\n toast({\n title: \"Eval run started\",\n description: `Scheduled ${data.runEval.count} test cases to run.`,\n });\n },\n onError: (error) => {\n toast({\n title: \"Failed to start eval run\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n // Fetch eval set\n const { loading: loadingEvalSet, data: evalSetData } = useQuery(GET_EVAL_SET_BY_ID, {\n variables: { id: eval_set_id },\n skip: !eval_set_id,\n });\n\n // Fetch eval runs\n const { loading: loadingRuns, data: runsData, refetch: refetchRuns } = useQuery(GET_EVAL_RUNS, {\n variables: {\n page: 1,\n limit: 100,\n filters: [{ eval_set_id: { eq: eval_set_id } }],\n },\n skip: !eval_set_id,\n pollInterval: 10000, // Poll every 10 seconds to update job statuses\n });\n\n if (!hasEvalsAccess) {\n return (\n <div className=\"flex h-full flex-1 flex-col space-y-8 p-8\">\n <Alert variant=\"destructive\">\n <Brain className=\"h-4 w-4\" />\n <AlertDescription>\n You don't have permission to access Eval Runs. Contact your administrator to request access.\n </AlertDescription>\n </Alert>\n </div>\n );\n }\n\n if (loadingEvalSet) {\n return (\n <div className=\"flex h-full flex-1 flex-col space-y-8 p-8\">\n <Skeleton className=\"h-8 w-64\" />\n <Skeleton className=\"h-64 w-full\" />\n </div>\n );\n }\n\n const evalSet: EvalSet = evalSetData?.eval_setById;\n const evalRuns: EvalRun[] = runsData?.eval_runsPagination?.items || [];\n\n return (\n <div className=\"flex h-full flex-1 flex-col pb-8\">\n\n {/* Workers Warning */}\n {(!config?.workers?.enabled || !config?.workers?.redisHost) && (\n <Alert variant=\"destructive\" className=\"mb-6\">\n <AlertTriangle className=\"h-4 w-4\" />\n <AlertDescription>\n Workers are not enabled. You can view existing eval runs but cannot create or run new evaluations.\n Configure Redis to enable running eval runs.\n </AlertDescription>\n </Alert>\n )}\n\n {/* Main Content */}\n <div className=\"space-y-6\">\n {/* Eval Runs Matrix */}\n <Card>\n <CardHeader className=\"border-b bg-accent/50\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg bg-primary/10\">\n <ListChecks className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n <CardTitle>Evaluation runs</CardTitle>\n <CardDescription>\n Matrix view of test case scores across eval runs. Click on a completed cell to view detailed results.{\" \"}\n </CardDescription>\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n {canWrite && config?.workers?.enabled && config?.workers?.redisHost && (\n <Button size=\"sm\" onClick={() => setCreateModalOpen(true)}>\n <Plus className=\"mr-2 h-3 w-3\" />\n New Eval Run\n </Button>\n )}\n </div>\n </div>\n </CardHeader>\n <CardContent className=\"p-0\">\n {loadingRuns ? (\n <div className=\"space-y-2\">\n {Array.from({ length: 3 }).map((_, i) => (\n <Skeleton key={i} className=\"h-16 w-full\" />\n ))}\n </div>\n ) : evalRuns.length === 0 ? (\n <div className=\"text-center py-12 text-muted-foreground\">\n No eval runs yet. {canWrite && config?.workers?.enabled && config?.workers?.redisHost && \"Click 'New Eval Run' to create one.\"}\n </div>\n ) : (\n <EvalRunsTable\n evalRuns={evalRuns}\n evalSet={evalSet}\n canWrite={canWrite}\n onRefetch={refetchRuns}\n />\n )}\n </CardContent>\n </Card>\n\n {/* Queue Management */}\n {config?.workers?.enabled && config?.workers?.redisHost && evalRuns.length > 0 && (\n <Card className=\"shadow-lg\">\n <Collapsible>\n <CardHeader className=\"border-b bg-accent/50\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg bg-primary/10\">\n <ListBulletIcon className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n <CardTitle>Queue management</CardTitle>\n <CardDescription>\n Manage the queue of eval runs.{\" \"}\n </CardDescription>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <CollapsibleTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n <ChevronsUpDown className=\"size-4\" />\n <span className=\"sr-only\">Toggle</span>\n </Button>\n </CollapsibleTrigger>\n </div>\n </div>\n </CardHeader>\n <CollapsibleContent>\n <QueueManagement\n queueName=\"eval_runs\"\n nameGenerator={(job) => {\n return `Eval Run ${job.data?.eval_run_name || job.data?.eval_run_id} - Test Case ${job.data?.test_case_name || job.data?.test_case_id}`;\n }}\n retryJob={(job: QueueJob) => {\n if (!job.data?.test_case_id || !job.data?.eval_run_id) {\n return;\n }\n runEval({\n variables: {\n id: job.data?.eval_run_id,\n test_case_ids: [job.data?.test_case_id]\n }\n });\n }}\n />\n </CollapsibleContent>\n </Collapsible>\n </Card>\n )}\n </div>\n\n <CreateEvalRunModal\n modalKey={`create-eval-run-modal-${eval_set_id}`}\n eval_set_id={eval_set_id}\n open={createModalOpen}\n onOpenChange={setCreateModalOpen}\n onCreateSuccess={() => {\n refetchRuns();\n }}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { useContext, useState } from \"react\";\nimport { useParams, useRouter } from \"next/navigation\";\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { Brain, ArrowLeft, Plus, Save, Loader2, Play, FileText, ListChecks, Sparkles, Edit2, X, ChevronsUpDown } from \"lucide-react\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from \"@/components/ui/alert-dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { GET_EVAL_SET_BY_ID, UPDATE_EVAL_SET, GET_TEST_CASES, UPDATE_TEST_CASE } from \"@/queries/queries\";\nimport { TestCaseSelectionModal } from \"./components/test-case-selection-modal\";\nimport { TestCaseModal } from \"../cases/components/test-case-modal\";\nimport { TestCase } from \"@/types/models/test-case\";\nimport EvalRuns from \"./runs/eval-runs\";\nimport { ListBulletIcon } from \"@radix-ui/react-icons\";\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"@radix-ui/react-collapsible\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function EvalSetEditorPage() {\n const params = useParams();\n const router = useRouter();\n const { user } = useContext(UserContext);\n const { toast } = useToast();\n const evalSetId = params.id as string;\n\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [testCases, setTestCases] = useState<string[]>([]);\n const [showSelectionModal, setShowSelectionModal] = useState(false);\n const [showCreateModal, setShowCreateModal] = useState(false);\n const [testCaseToRemove, setTestCaseToRemove] = useState<string | null>(null);\n const [editingTestCase, setEditingTestCase] = useState<TestCase | null>(null);\n\n // Check if user has evals access\n const hasEvalsAccess = user.super_admin || user.role?.evals === \"read\" || user.role?.evals === \"write\";\n const canWrite = user.super_admin || user.role?.evals === \"write\";\n\n // Fetch eval set\n const { loading: loadingEvalSet, data: evalSetData, refetch } = useQuery(GET_EVAL_SET_BY_ID, {\n variables: { id: evalSetId },\n skip: !evalSetId,\n onCompleted: (data) => {\n if (data?.eval_setById) {\n setName(data.eval_setById.name);\n setDescription(data.eval_setById.description || \"\");\n }\n },\n });\n\n // Fetch test cases details\n const { data: testCasesData, refetch: refetchTestCases } = useQuery(GET_TEST_CASES, {\n variables: {\n page: 1,\n limit: 500,\n filters: [{ eval_set_id: { eq: evalSetId } }],\n }\n });\n\n const [updateEvalSet, { loading: updating }] = useMutation(UPDATE_EVAL_SET, {\n onCompleted: () => {\n toast({\n title: \"Eval set updated\",\n description: \"The eval set has been successfully updated.\",\n });\n refetch();\n },\n onError: (error) => {\n toast({\n title: \"Failed to update eval set\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const handleSave = () => {\n if (!name.trim()) {\n toast({\n title: \"Validation error\",\n description: \"Name is required.\",\n variant: \"destructive\",\n });\n return;\n }\n\n if (testCases.length > 500) {\n toast({\n title: \"Validation error\",\n description: \"Maximum 500 test cases allowed per eval set.\",\n variant: \"destructive\",\n });\n return;\n }\n\n updateEvalSet({\n variables: {\n id: evalSetId,\n data: {\n name: name.trim(),\n description: description.trim() || null,\n },\n },\n });\n };\n\n const handleRemoveTestCase = (testCaseId: string) => {\n setTestCaseToRemove(testCaseId);\n };\n\n const confirmRemoveTestCase = () => {\n if (!testCaseToRemove) return;\n\n updateTestCase({\n variables: {\n id: testCaseToRemove,\n data: { eval_set_id: null },\n },\n onCompleted: () => {\n toast({\n title: \"Test case removed\",\n description: \"The test case has been removed from this eval set.\",\n });\n refetchTestCases();\n setTestCaseToRemove(null);\n },\n });\n };\n\n const [updateTestCase, { loading: updatingTestCase }] = useMutation(UPDATE_TEST_CASE, {\n onError: (error) => {\n toast({\n title: \"Failed to update test case\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const handleAddTestCases = (selectedTestCaseIds: string[]) => {\n // Add new test cases, avoiding duplicates\n const newTestCases = Array.from(new Set([...testCases, ...selectedTestCaseIds]));\n\n if (newTestCases.length > 500) {\n toast({\n title: \"Too many test cases\",\n description: \"Maximum 500 test cases allowed per eval set.\",\n variant: \"destructive\",\n });\n return;\n }\n\n console.log(\"newTestCases\", newTestCases);\n\n for (const testCaseId of newTestCases) {\n updateTestCase({\n variables: {\n id: testCaseId,\n data: { eval_set_id: evalSetId },\n },\n });\n }\n\n refetchTestCases();\n setShowSelectionModal(false);\n };\n\n if (!hasEvalsAccess) {\n return (\n <div className=\"flex h-full flex-1 flex-col space-y-8 p-8\">\n <Alert variant=\"destructive\">\n <Brain className=\"h-4 w-4\" />\n <AlertDescription>\n You don't have permission to access Eval Sets. Contact your administrator to request access.\n </AlertDescription>\n </Alert>\n </div>\n );\n }\n\n if (loadingEvalSet) {\n return (\n <div className=\"flex h-full flex-1 flex-col space-y-8 p-8\">\n <Skeleton className=\"h-8 w-64\" />\n <Skeleton className=\"h-64 w-full\" />\n </div>\n );\n }\n\n const testCasesList = testCasesData?.test_casesPagination?.items || [];\n\n return (\n <div className=\"flex h-full flex-1 flex-col space-y-8 p-8\">\n {/* Header with gradient accent */}\n <div className=\"relative\">\n <div className=\"absolute inset-0 bg-primary/5 rounded-lg blur-xl\" />\n <div className=\"relative flex items-center justify-between p-6 border rounded-lg bg-card/50 backdrop-blur-sm\">\n <div className=\"flex items-center gap-4\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => router.push(\"/evals\")}\n >\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div className=\"flex items-center gap-3\">\n <h2 className=\"text-2xl font-bold tracking-tight\">Edit Eval Set</h2>\n <p className=\"text-muted-foreground\">\n Configure test cases for this evaluation set.\n </p>\n </div>\n </div>\n <div className=\"flex gap-2\">\n {canWrite && (\n <Button onClick={handleSave} disabled={updating}>\n {updating ? (\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n ) : (\n <Save className=\"mr-2 h-4 w-4\" />\n )}\n Save Changes\n </Button>\n )}\n </div>\n </div>\n </div>\n\n {/* Basic Info */}\n <Card className=\"shadow-lg\">\n <Collapsible>\n <CardHeader className=\"border-b bg-accent/50\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg bg-primary/10\">\n <FileText className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n <CardTitle>Basic Information</CardTitle>\n <CardDescription>\n Edit the name and description of this eval set.\n </CardDescription>\n </div>\n </div>\n <CollapsibleTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n <ChevronsUpDown className=\"size-4\" />\n <span className=\"sr-only\">Toggle</span>\n </Button>\n </CollapsibleTrigger>\n </div>\n </CardHeader>\n <CollapsibleContent>\n <CardContent className=\"space-y-4 pt-6\">\n <div className=\"grid gap-2\">\n <Label htmlFor=\"name\" className=\"text-sm font-semibold\">Name *</Label>\n <Input\n id=\"name\"\n placeholder=\"Eval set name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n disabled={!canWrite}\n />\n </div>\n <div className=\"grid gap-2\">\n <Label htmlFor=\"description\" className=\"text-sm font-semibold\">Description</Label>\n <Textarea\n id=\"description\"\n placeholder=\"Describe what this eval set tests...\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n disabled={!canWrite}\n rows={3}\n />\n </div>\n </CardContent>\n </CollapsibleContent>\n </Collapsible>\n </Card>\n\n {/* Test Cases */}\n <Card className=\"shadow-lg\">\n <Collapsible>\n <CardHeader className=\"border-b bg-accent/50\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-lg bg-primary/10\">\n <ListBulletIcon className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n <CardTitle>Test Cases</CardTitle>\n <CardDescription>\n Add up to 500 test cases to this eval set.{\" \"}\n <Badge variant=\"secondary\" className=\"ml-1\">\n {testCasesList.length}/500\n </Badge>\n </CardDescription>\n </div>\n </div>\n <div className=\"flex gap-2\">\n {canWrite && (\n <>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => setShowCreateModal(true)}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n Create New\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => setShowSelectionModal(true)}\n disabled={testCases.length >= 500}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n Add Existing\n </Button>\n </>\n )}\n <CollapsibleTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8\">\n <ChevronsUpDown className=\"size-4\" />\n <span className=\"sr-only\">Toggle</span>\n </Button>\n </CollapsibleTrigger>\n </div>\n </div>\n </CardHeader>\n <CollapsibleContent>\n <CardContent className=\"pt-6\">\n {testCasesList.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <div className=\"p-4 rounded-full bg-primary/10 mb-4\">\n <ListChecks className=\"h-8 w-8 text-primary\" />\n </div>\n <h3 className=\"text-lg font-semibold mb-2\">No test cases yet</h3>\n <p className=\"text-muted-foreground max-w-sm\">\n Click \"Create New\" or \"Add Existing\" to start building your evaluation set.\n </p>\n </div>\n ) : (\n <div className=\"space-y-3\">\n {testCasesList.map((testCase: any) => (\n <div\n key={testCase.id}\n className=\"group relative flex items-center justify-between p-4 border rounded-lg transition-all hover:shadow-md hover:border-primary/50 hover:scale-[1.01] hover:bg-accent/30\"\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"p-1.5 rounded bg-primary/10\">\n <FileText className=\"h-3.5 w-3.5 text-primary\" />\n </div>\n <span className=\"font-semibold\">{testCase.name}</span>\n </div>\n {testCase.description && (\n <p className=\"text-sm text-muted-foreground mt-2 ml-8\">\n {testCase.description}\n </p>\n )}\n </div>\n {canWrite && (\n <div className=\"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n setEditingTestCase(testCase);\n setShowCreateModal(true);\n }}\n className=\"hover:bg-primary/10\"\n >\n <Edit2 className=\"mr-1 h-3.5 w-3.5\" />\n Edit\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleRemoveTestCase(testCase.id)}\n className=\"hover:bg-destructive/10 hover:text-destructive\"\n >\n <X className=\"mr-1 h-3.5 w-3.5\" />\n Remove\n </Button>\n </div>\n )}\n </div>\n ))}\n </div>\n )}\n </CardContent>\n </CollapsibleContent>\n </Collapsible>\n </Card>\n\n <EvalRuns id={evalSetId} />\n\n {/* Modals */}\n <TestCaseSelectionModal\n open={showSelectionModal}\n onClose={() => setShowSelectionModal(false)}\n onSelect={handleAddTestCases}\n excludeIds={testCases}\n />\n\n <TestCaseModal\n open={showCreateModal}\n onClose={() => setShowCreateModal(false)}\n evalSetId={evalSetId}\n onSuccess={() => {\n setShowCreateModal(false);\n // Refetch to get the new test case in the list\n refetchTestCases();\n refetch();\n }}\n testCase={editingTestCase}\n />\n\n {/* Remove Test Case Confirmation Dialog */}\n <AlertDialog open={!!testCaseToRemove} onOpenChange={(open) => !open && setTestCaseToRemove(null)}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Remove test case from eval set?</AlertDialogTitle>\n <AlertDialogDescription>\n This will remove the test case from this eval set. The test case itself will not be deleted and can be added back later.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={confirmRemoveTestCase}>Remove</AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </div >\n );\n}\n","\"use client\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { type LucideIcon, XIcon } from \"lucide-react\";\nimport type { ComponentProps, HTMLAttributes } from \"react\";\n\nexport type ArtifactProps = HTMLAttributes<HTMLDivElement>;\n\nexport const Artifact = ({ className, ...props }: ArtifactProps) => (\n <div\n className={cn(\n \"flex flex-col overflow-hidden rounded-lg border bg-background shadow-sm\",\n className\n )}\n {...props}\n />\n);\n\nexport type ArtifactHeaderProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactHeader = ({\n className,\n ...props\n}: ArtifactHeaderProps) => (\n <div\n className={cn(\n \"flex items-center justify-between border-b bg-muted/50 px-4 py-3\",\n className\n )}\n {...props}\n />\n);\n\nexport type ArtifactCloseProps = ComponentProps<typeof Button>;\n\nexport const ArtifactClose = ({\n className,\n children,\n size = \"sm\",\n variant = \"ghost\",\n ...props\n}: ArtifactCloseProps) => (\n <Button\n className={cn(\n \"size-8 p-0 text-muted-foreground hover:text-foreground\",\n className\n )}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {children ?? <XIcon className=\"size-4\" />}\n <span className=\"sr-only\">Close</span>\n </Button>\n);\n\nexport type ArtifactTitleProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport const ArtifactTitle = ({ className, ...props }: ArtifactTitleProps) => (\n <p\n className={cn(\"font-medium text-foreground text-sm\", className)}\n {...props}\n />\n);\n\nexport type ArtifactDescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport const ArtifactDescription = ({\n className,\n ...props\n}: ArtifactDescriptionProps) => (\n <p className={cn(\"text-muted-foreground text-sm\", className)} {...props} />\n);\n\nexport type ArtifactActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactActions = ({\n className,\n ...props\n}: ArtifactActionsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props} />\n);\n\nexport type ArtifactActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n icon?: LucideIcon;\n};\n\nexport const ArtifactAction = ({\n tooltip,\n label,\n icon: Icon,\n children,\n className,\n size = \"sm\",\n variant = \"ghost\",\n ...props\n}: ArtifactActionProps) => {\n const button = (\n <Button\n className={cn(\n \"size-8 p-0 text-muted-foreground hover:text-foreground\",\n className\n )}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {Icon ? <Icon className=\"size-4\" /> : children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n\nexport type ArtifactContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactContent = ({\n className,\n ...props\n}: ArtifactContentProps) => (\n <div className={cn(\"flex-1 overflow-auto p-4\", className)} {...props} />\n);\n","import * as React from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogTrigger,\n} from \"@/components/ui/dialog\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { Response } from '@/components/ai-elements/response';\n\nimport {\n Artifact,\n ArtifactAction,\n ArtifactActions,\n ArtifactContent,\n ArtifactHeader,\n} from '@/components/ai-elements/artifact';\nimport { CopyIcon, InfoIcon } from \"lucide-react\";\n\nexport function TextPreview({\n text,\n sliceLength\n}: {\n text: string;\n sliceLength?: number;\n}) {\n const { toast } = useToast();\n\n return (\n <Dialog>\n <DialogTrigger asChild>\n <button className=\"cursor-pointer text-sm text-left w-full hover:bg-accent/50 transition-colors rounded-md p-2 group\">\n <span className=\"block\">\n {text?.slice(0, sliceLength ?? 200)}\n {(sliceLength && text.length > sliceLength) ? \"...\" : \"\"}\n </span>\n <span className=\"flex items-center gap-1 text-xs text-muted-foreground mt-1 group-hover:text-foreground transition-colors\">\n <InfoIcon className=\"w-3 h-3\" />\n Click to view full text\n </span>\n </button>\n </DialogTrigger>\n <DialogContent className=\"sm:max-w-[800px] max-h-[500px] overflow-y-scroll\">\n <Artifact>\n <ArtifactHeader>\n <ArtifactActions>\n <ArtifactAction icon={CopyIcon} label=\"Copy\" tooltip=\"Copy to clipboard\" onClick={async () => {\n await navigator.clipboard.writeText(text);\n toast({ title: \"Copied to clipboard\" });\n }} />\n </ArtifactActions>\n </ArtifactHeader>\n <ArtifactContent>\n <Response>{text}</Response>\n </ArtifactContent>\n </Artifact>\n </DialogContent>\n </Dialog>\n );\n}\n","\"use client\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"size-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import { cn } from \"@/lib/utils\";\n\nexport const Loading = ({ className }: { className?: null | string }) => {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"status\"\n className={cn(\"inline w-4 h-4 text-white animate-spin fill-inherit\", className)}\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n className=\"fill-inherit opacity-20\"\n ></path>\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n className=\"fill-inherit\"\n ></path>\n </svg>\n );\n};\n","\"use client\";\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n"],"names":["Promise","resolve","then","__webpack_require__","bind","TestCaseSelectionModal","param","data","open","onClose","onSelect","excludeIds","search","setSearch","useState","selectedIds","setSelectedIds","loading","useQuery","GET_TEST_CASES","variables","page","limit","filters","AND","name","contains","eval_set_id","eq","skip","useEffect","availableTestCases","testCases","test_casesPagination","items","filter","includes","tc","id","handleToggle","prev","x","jsx_runtime","jsx","Dialog","onOpenChange","jsxs","DialogContent","className","DialogHeader","DialogTitle","DialogDescription","Alert","variant","AlertDescription","strong","div","Search","Input","placeholder","value","onChange","e","target","length","Checkbox","checked","onCheckedChange","map","Label","htmlFor","ScrollArea","Array","from","_","i","Skeleton","onClick","testCase","concat","span","small","description","DialogFooter","Button","disabled","CreateEvalRunModal","testCasesData","agentsData","evalFunctionsData","modalKey","onCreateSuccess","existingRun","toast","useToast","isEditing","evalRun","setEvalRun","rights_mode","createdAt","updatedAt","agent_id","eval_functions","scoring_method","pass_threshold","timeout_in_seconds","test_case_ids","GET_AGENTS","GET_EVAL_FUNCTIONS","testCasesList","createEvalRun","createLoading","useMutation","CREATE_EVAL_RUN","onCompleted","title","onError","error","message","updateEvalRun","updateLoading","UPDATE_EVAL_RUN","handleToggleTestCase","testCaseId","handleToggleAllTestCases","handleToggleEvalFunction","some","ef","evalFunction","config","form","onSubmit","preventDefault","console","log","toUpperCase","RBAC","users","roles","projects","h3","p","type","Separator","Select","onValueChange","SelectTrigger","SelectValue","SelectContent","agentsPagination","SelectItem","agent","evals","size","stopPropagation","label","_eval","Textarea","find","Badge","inputs","min","max","Number","Loader2","statusIcons","waiting","Clock","active","completed","failed","XCircle","delayed","paused","Pause","stuck","AlertTriangle","statusColors","EvalRunColumn","jobResultsData","onCellClick","handleEditRun","handleCopyRun","handleStartRun","handleStopRun","loadingJobResults","refetch","refetchJobResults","networkStatus","jobsNetworkStatus","GET_JOB_RESULTS","jobResults","job_resultsPagination","getCellData","result","jr","test_case_id","getCellColor","state","undefined","score","threshold","Fragment","NetworkStatus","fetchMore","Loading","RefreshCcw","Copy","Edit","Play","Square","isIncluded","cellColor","statusColor","cn","toFixed","EvalRunsTable","selectedResult","evalRuns","evalSet","onRefetch","visibleRuns","setVisibleRuns","setSelectedResult","isSheetOpen","setIsSheetOpen","modalOpen","setModalOpen","modalRun","setModalRun","startConfirmOpen","setStartConfirmOpen","runToStart","setRunToStart","loadingTestCases","pollInterval","uniqueAgentIds","Set","run","Boolean","GET_AGENTS_BY_IDS","ids","agentsMap","Map","agentByIds","runEval","runningEval","RUN_EVAL","count","sortedEvalRuns","sort","a","b","Date","getTime","displayedRuns","slice","hasMoreRuns","handleCellClick","Math","ChevronLeft","format","get","ScrollBar","orientation","Sheet","SheetContent","SheetHeader","SheetTitle","Tabs","defaultValue","TabsList","TabsTrigger","TabsContent","Card","CardHeader","CardTitle","CardContent","formatDuration","metadata","duration","CheckCircle","AlertCircle","job_id","Object","keys","CodePreview","code","JSON","stringify","tokens","Zap","totalTokens","toLocaleString","inputTokens","outputTokens","Conversation","ConversationContent","MessageRenderer","messages","marginTopFirstMessage","customAssistantClassnames","status","showActions","writeAccess","function_results","eval_function_name","eval_function_id","eval_function_config","key","AlertDialog","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction","EvalRuns","user","runsData","useContext","UserContext","ConfigContext","createModalOpen","setCreateModalOpen","hasEvalsAccess","super_admin","role","canWrite","loadingEvalSet","evalSetData","GET_EVAL_SET_BY_ID","loadingRuns","refetchRuns","GET_EVAL_RUNS","Brain","eval_setById","eval_runsPagination","workers","enabled","redisHost","ListChecks","CardDescription","Plus","Collapsible","ListBulletIcon","CollapsibleTrigger","asChild","ChevronsUpDown","CollapsibleContent","QueueManagement","queueName","nameGenerator","job","eval_run_name","eval_run_id","test_case_name","retryJob","dynamic","EvalSetEditorPage","params","useParams","router","useRouter","evalSetId","setName","setDescription","setTestCases","showSelectionModal","setShowSelectionModal","showCreateModal","setShowCreateModal","testCaseToRemove","setTestCaseToRemove","editingTestCase","setEditingTestCase","refetchTestCases","updateEvalSet","updating","UPDATE_EVAL_SET","handleRemoveTestCase","updateTestCase","updatingTestCase","UPDATE_TEST_CASE","push","ArrowLeft","h2","trim","Save","FileText","rows","Edit2","X","newTestCases","selectedTestCaseIds","TestCaseModal","onSuccess","Artifact","props","ArtifactHeader","ArtifactActions","ArtifactAction","tooltip","icon","Icon","children","button","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","ArtifactContent","TextPreview","text","sliceLength","DialogTrigger","InfoIcon","CopyIcon","navigator","clipboard","writeText","Response","React","ref","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","CheckboxPrimitive","Check","displayName","svg","aria-hidden","viewBox","fill","xmlns","path","d","SelectPrimitive","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","position","SelectLabel","SelectSeparator"],"sourceRoot":""}
|