@exulu/frontend 1.7.0 → 1.9.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 +124 -127
- 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.js +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.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 +7 -7
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +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 +4 -4
- 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.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +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.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +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.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.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.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/1025.js +1 -0
- package/dist/.next/server/chunks/1051.js +2 -2
- package/dist/.next/server/chunks/2270.js +12 -48
- package/dist/.next/server/chunks/3434.js +1 -1
- package/dist/.next/server/chunks/3503.js +1 -0
- package/dist/.next/server/chunks/3575.js +1 -1
- package/dist/.next/server/chunks/5084.js +1 -0
- package/dist/.next/server/chunks/5192.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -0
- package/dist/.next/server/chunks/5600.js +1 -1
- package/dist/.next/server/chunks/5974.js +1 -0
- package/dist/.next/server/chunks/6590.js +1 -1
- package/dist/.next/server/chunks/7471.js +1 -1
- package/dist/.next/server/chunks/8286.js +1 -1
- package/dist/.next/server/chunks/{3679.js → 9874.js} +5 -5
- 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-939396dad2f8f1e0.js +2 -0
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +1 -0
- package/dist/.next/static/chunks/{4811-316807e25b634f9f.js → 192-72d6868cd891ccc6.js} +8 -8
- package/dist/.next/static/chunks/192-72d6868cd891ccc6.js.map +1 -0
- package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js +2 -0
- package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js.map +1 -0
- package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js +2 -0
- package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.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/552-39155a93c527ec6d.js +2 -0
- package/dist/.next/static/chunks/552-39155a93c527ec6d.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/6367-59655a85d75e19be.js +2 -0
- package/dist/.next/static/chunks/6367-59655a85d75e19be.js.map +1 -0
- package/dist/.next/static/chunks/6373-601400fab8a3bb55.js +2 -0
- package/dist/.next/static/chunks/6373-601400fab8a3bb55.js.map +1 -0
- package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js +2 -0
- package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js.map +1 -0
- package/dist/.next/static/chunks/{6805-792cc8008b165c07.js → 8293-0e69d89d2dac7111.js} +10 -10
- package/dist/.next/static/chunks/8293-0e69d89d2dac7111.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/9953-95900a236271a222.js +2 -0
- package/dist/.next/static/chunks/9953-95900a236271a222.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js +2 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-7edb1c7c850f982c.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-7edb1c7c850f982c.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-8d2b3995cacfd832.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js → page-827f50c6d1f150d0.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js.map → page-827f50c6d1f150d0.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js +2 -0
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js +2 -0
- package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/workflows/{page-47dedb88cec600d5.js → page-e38f9456120dab69.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +1 -0
- package/dist/.next/static/css/6f8c5212af8ef284.css +4 -0
- package/dist/.next/static/css/6f8c5212af8ef284.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/2948.js +0 -1
- package/dist/.next/server/chunks/38.js +0 -1
- package/dist/.next/server/chunks/6623.js +0 -1
- package/dist/.next/server/chunks/7958.js +0 -1
- package/dist/.next/server/chunks/8050.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/4811-316807e25b634f9f.js.map +0 -1
- package/dist/.next/static/chunks/5282-68f9880f1f951f44.js +0 -2
- package/dist/.next/static/chunks/5282-68f9880f1f951f44.js.map +0 -1
- package/dist/.next/static/chunks/6367-59cef3c74213925b.js +0 -2
- package/dist/.next/static/chunks/6367-59cef3c74213925b.js.map +0 -1
- package/dist/.next/static/chunks/6373-7908bd5269f95aa3.js +0 -2
- package/dist/.next/static/chunks/6373-7908bd5269f95aa3.js.map +0 -1
- package/dist/.next/static/chunks/6805-792cc8008b165c07.js.map +0 -1
- package/dist/.next/static/chunks/7856-9fa733bdd6429ba8.js.map +0 -1
- package/dist/.next/static/chunks/8030-c1b6be46253076cb.js +0 -2
- package/dist/.next/static/chunks/8030-c1b6be46253076cb.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/9621-f81c4d7c0ecf5a67.js +0 -2
- package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js.map +0 -1
- package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js +0 -2
- package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-29794b9c33d2bf7e.js +0 -2
- 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 +0 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-0b2d9832e5a023e7.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js +0 -2
- package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-47dedb88cec600d5.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 → ls-syPkq9-MWp-VWWDEZJ}/_buildManifest.js +0 -0
- /package/dist/.next/static/{J23NmkaMjAJYnE0jX_kO0 → ls-syPkq9-MWp-VWWDEZJ}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6208],{95094:function(e,s,l){Promise.resolve().then(l.bind(l,52489))},52489:function(e,s,l){"use strict";l.r(s),l.d(s,{default:function(){return M},dynamic:function(){return A}});var t=l(57437),a=l(2265),n=l(20653),i=l(94508),c=l(62869),r=l(84190);function d(e){let{column:s,title:l,className:a}=e;return s.getCanSort()?(0,t.jsx)("div",{className:(0,i.cn)("flex items-center space-x-2",a),children:(0,t.jsxs)(r.h_,{modal:!1,children:[(0,t.jsx)(r.$F,{asChild:!0,children:(0,t.jsxs)(c.z,{variant:"ghost",size:"sm",className:"-ml-3 h-8 data-[state=open]:bg-accent",children:[(0,t.jsx)("span",{children:l}),"desc"===s.getIsSorted()?(0,t.jsx)(n.veu,{className:"ml-2 h-4 w-4"}):"asc"===s.getIsSorted()?(0,t.jsx)(n.Hf3,{className:"ml-2 h-4 w-4"}):(0,t.jsx)(n.jnn,{className:"ml-2 h-4 w-4"})]})}),(0,t.jsxs)(r.AW,{align:"start",children:[(0,t.jsxs)(r.Xi,{onClick:()=>s.toggleSorting(!1),children:[(0,t.jsx)(n.Hf3,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Asc"]}),(0,t.jsxs)(r.Xi,{onClick:()=>s.toggleSorting(!0),children:[(0,t.jsx)(n.veu,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Desc"]}),(0,t.jsx)(r.VD,{}),(0,t.jsxs)(r.Xi,{onClick:()=>s.toggleVisibility(!1),children:[(0,t.jsx)(n.L52,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Hide"]})]})]})}):(0,t.jsx)("div",{className:(0,i.cn)(a),children:l})}var o=l(12199),u=l(45675),x=l(18930),h=l(27689),m=l(77992),j=l(37099);function g(e){var s;let{row:l,user:i,edit:d}=e,{toast:g}=(0,m.pm)(),[p,v]=(0,a.useState)(!1),f=l.original,N=i.super_admin||(null===(s=i.role)||void 0===s?void 0:s.evals)==="write",[C,{loading:w}]=(0,o.D)(h.lW,{onCompleted:()=>{g({title:"Test case deleted",description:"The test case has been successfully deleted."}),v(!1),window.location.reload()},onError:e=>{g({title:"Failed to delete test case",description:e.message,variant:"destructive"})}});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.h_,{modal:!1,children:[(0,t.jsx)(r.$F,{asChild:!0,children:(0,t.jsxs)(c.z,{variant:"ghost",className:"flex h-8 w-8 p-0 data-[state=open]:bg-muted",onClick:e=>e.stopPropagation(),children:[(0,t.jsx)(n.nWS,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Open menu"})]})}),(0,t.jsxs)(r.AW,{align:"end",className:"w-[160px]",children:[(0,t.jsxs)(r.Xi,{onClick:e=>{e.stopPropagation(),d()},children:[(0,t.jsx)(u.Z,{className:"mr-2 h-4 w-4"}),"Edit"]}),N&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.VD,{}),(0,t.jsxs)(r.Xi,{onClick:e=>{e.stopPropagation(),v(!0)},className:"text-destructive",children:[(0,t.jsx)(x.Z,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]})]}),(0,t.jsx)(j.aR,{open:p,onOpenChange:v,children:(0,t.jsxs)(j._T,{onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)(j.fY,{children:[(0,t.jsx)(j.f$,{children:"Are you sure?"}),(0,t.jsxs)(j.yT,{children:['This will permanently delete the test case "',f.name,'". This action cannot be undone.']})]}),(0,t.jsxs)(j.xo,{children:[(0,t.jsx)(j.le,{children:"Cancel"}),(0,t.jsx)(j.OL,{onClick:e=>{e.stopPropagation(),C({variables:{id:f.id}})},disabled:w,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:w?"Deleting...":"Delete"})]})]})})]})}var p=l(35974),v=l(7598);let f=(e,s)=>[{accessorKey:"name",header:e=>{let{column:s}=e;return(0,t.jsx)(d,{column:s,title:"Name"})},cell:e=>{let{row:s}=e;return(0,t.jsx)("div",{className:"flex space-x-2",children:(0,t.jsx)("span",{className:"max-w-[400px] truncate font-medium",children:s.getValue("name")})})}},{accessorKey:"description",header:e=>{let{column:s}=e;return(0,t.jsx)(d,{column:s,title:"Description"})},cell:e=>{let{row:s}=e,l=s.getValue("description");return(0,t.jsx)("div",{className:"flex space-x-2",children:(0,t.jsx)("span",{className:"max-w-[500px] truncate text-muted-foreground",children:l||"—"})})}},{accessorKey:"inputs",header:e=>{let{column:s}=e;return(0,t.jsx)(d,{column:s,title:"Messages"})},cell:e=>{let{row:s}=e,l=s.getValue("inputs");return(0,t.jsxs)(p.C,{variant:"secondary",children:[(null==l?void 0:l.length)||0," messages"]})}},{accessorKey:"updatedAt",header:e=>{let{column:s}=e;return(0,t.jsx)(d,{column:s,title:"Updated"})},cell:e=>{let{row:s}=e,l=s.getValue("updatedAt");return(0,t.jsx)("div",{className:"flex w-[100px] items-center",children:(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:(0,v.Q)(new Date(l),{addSuffix:!0})})})}},{id:"actions",cell:l=>{let{row:a}=l;return(0,t.jsx)(g,{row:a,user:e,edit:()=>{s(a.original)}})}}];var N=l(7211),C=l(71594),w=l(24525),y=l(99397);function b(e){let{table:s}=e;return(0,t.jsxs)(r.h_,{modal:!1,children:[(0,t.jsx)(r.$F,{asChild:!0,children:(0,t.jsxs)(c.z,{variant:"outline",size:"sm",className:"ml-auto hidden h-8 lg:flex",children:[(0,t.jsx)(n.hsZ,{className:"mr-2 h-4 w-4"}),"View"]})}),(0,t.jsxs)(r.AW,{align:"end",className:"w-[150px]",children:[(0,t.jsx)(r.Ju,{children:"Toggle columns"}),(0,t.jsx)(r.VD,{}),s.getAllColumns().filter(e=>void 0!==e.accessorFn&&e.getCanHide()).map(e=>(0,t.jsx)(r.bO,{className:"capitalize",checked:e.getIsVisible(),onCheckedChange:s=>e.toggleVisibility(!!s),children:(0,t.jsx)("span",{className:"w-[200px] truncate",children:e.id})},e.id))]})]})}var S=l(95186),k=l(93022),F=l(73578),P=l(82534);function V(e){var s,l,i,r,d,u;let{columns:x,testCase:j}=e,{toast:g}=(0,m.pm)(),[p,v]=a.useState({}),[f,V]=a.useState({}),[_,z]=a.useState([]),[D,R]=(0,a.useState)([]),[T,A]=(0,a.useState)(1),[M,E]=a.useState([]),[G,I]=(0,a.useState)(!1),[O,X]=(0,a.useState)(j||null);a.useEffect(()=>{j?(X(j),I(!0)):(I(!1),X(null))},[j]);let{loading:Z,error:W,data:H,refetch:K}=(0,N.aM)(h.RV,{fetchPolicy:"no-cache",nextFetchPolicy:"network-only",variables:{page:T,limit:10,filters:D},pollInterval:3e4}),[$]=(0,o.D)(h.lW,{onCompleted:()=>{g({title:"Test case deleted",description:"The test case has been successfully deleted."}),K()},onError:e=>{g({title:"Failed to delete test case",description:e.message,variant:"destructive"})}}),L=null==H?void 0:null===(s=H.test_casesPagination)||void 0===s?void 0:s.pageInfo,q=(null==H?void 0:null===(l=H.test_casesPagination)||void 0===l?void 0:l.items)||[],J=(0,C.b7)({data:q,columns:x,state:{sorting:M,columnVisibility:f,rowSelection:p,columnFilters:_},enableRowSelection:!0,onRowSelectionChange:v,onSortingChange:E,onColumnFiltersChange:z,onColumnVisibilityChange:V,getCoreRowModel:(0,w.sC)(),getFilteredRowModel:(0,w.vL)(),getPaginationRowModel:(0,w.G_)(),getSortedRowModel:(0,w.tj)(),getFacetedRowModel:(0,w.o6)(),getFacetedUniqueValues:(0,w.JG)()});a.useEffect(()=>{var e;let s=null===(e=J.getColumn("name"))||void 0===e?void 0:e.getFilterValue();s?R([{name:{contains:s}}]):R([])},[null===(i=J.getColumn("name"))||void 0===i?void 0:i.getFilterValue()]);let U=e=>{e?(X(e),I(!0)):(I(!1),X(null))},Y=()=>{I(!1),X(null)};return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("div",{className:"flex flex-1 items-center space-x-2",children:(0,t.jsx)(S.I,{placeholder:"Filter by name...",value:null!==(u=null===(r=J.getColumn("name"))||void 0===r?void 0:r.getFilterValue())&&void 0!==u?u:"",onChange:e=>{var s;return null===(s=J.getColumn("name"))||void 0===s?void 0:s.setFilterValue(e.target.value)},className:"h-8 w-[150px] lg:w-[250px]"})}),(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(b,{table:J}),(0,t.jsxs)(c.z,{variant:"default",size:"sm",className:"ml-auto h-8",onClick:()=>I(!0),children:[(0,t.jsx)(y.Z,{className:"mr-2 h-4 w-4"}),"New Test Case"]})]})]}),(0,t.jsx)("div",{className:"rounded-md border",children:(0,t.jsxs)(F.iA,{children:[(0,t.jsx)(F.xD,{children:J.getHeaderGroups().map(e=>(0,t.jsx)(F.SC,{children:e.headers.map(e=>(0,t.jsx)(F.ss,{children:e.isPlaceholder?null:(0,C.ie)(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,t.jsx)(F.RM,{children:Z?Array.from({length:5}).map((e,s)=>(0,t.jsx)(F.SC,{children:x.map((e,s)=>(0,t.jsx)(F.pj,{children:(0,t.jsx)(k.O,{className:"h-6 w-full"})},s))},s)):(null===(d=J.getRowModel().rows)||void 0===d?void 0:d.length)?J.getRowModel().rows.map(e=>(0,t.jsx)(F.SC,{"data-state":e.getIsSelected()&&"selected",className:"cursor-pointer",onClick:()=>{U(e.original)},children:e.getVisibleCells().map(e=>(0,t.jsx)(F.pj,{children:(0,C.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,t.jsx)(F.SC,{children:(0,t.jsx)(F.pj,{colSpan:x.length,className:"h-24 text-center",children:"No test cases found."})})})]})}),(0,t.jsxs)("div",{className:"flex items-center justify-between px-2",children:[(0,t.jsx)("div",{className:"flex-1 text-sm text-muted-foreground",children:L&&(0,t.jsxs)(t.Fragment,{children:["Page ",L.currentPage," of ",L.pageCount," (",L.itemCount," total)"]})}),(0,t.jsx)("div",{className:"flex items-center space-x-6 lg:space-x-8",children:(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsxs)(c.z,{variant:"outline",className:"hidden h-8 w-8 p-0 lg:flex",onClick:()=>A(1),disabled:!(null==L?void 0:L.hasPreviousPage),children:[(0,t.jsx)("span",{className:"sr-only",children:"Go to first page"}),(0,t.jsx)(n.kRt,{className:"h-4 w-4"})]}),(0,t.jsxs)(c.z,{variant:"outline",className:"h-8 w-8 p-0",onClick:()=>A(T-1),disabled:!(null==L?void 0:L.hasPreviousPage),children:[(0,t.jsx)("span",{className:"sr-only",children:"Go to previous page"}),(0,t.jsx)(n.wyc,{className:"h-4 w-4"})]}),(0,t.jsxs)(c.z,{variant:"outline",className:"h-8 w-8 p-0",onClick:()=>A(T+1),disabled:!(null==L?void 0:L.hasNextPage),children:[(0,t.jsx)("span",{className:"sr-only",children:"Go to next page"}),(0,t.jsx)(n.XCv,{className:"h-4 w-4"})]}),(0,t.jsxs)(c.z,{variant:"outline",className:"hidden h-8 w-8 p-0 lg:flex",onClick:()=>A((null==L?void 0:L.pageCount)||1),disabled:!(null==L?void 0:L.hasNextPage),children:[(0,t.jsx)("span",{className:"sr-only",children:"Go to last page"}),(0,t.jsx)(n.yr4,{className:"h-4 w-4"})]})]})})]}),(0,t.jsx)(P.F,{open:G,onClose:Y,onSuccess:()=>{K(),Y()},testCase:O})]})}var _=l(13832),z=l(64972),D=l(32660),R=l(65613),T=l(99376);let A="force-dynamic";function M(){var e,s;let{user:l}=(0,a.useContext)(_.S),[n,i]=(0,a.useState)(null),r=f(l,e=>{i(e)}),d=(0,T.useRouter)();return l.super_admin||(null===(e=l.role)||void 0===e?void 0:e.evals)==="read"||(null===(s=l.role)||void 0===s?void 0:s.evals)==="write"?(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{className:"hidden h-full flex-1 flex-col space-y-8 p-8 md:flex",children:[(0,t.jsx)("div",{className:"flex items-center justify-between space-y-2",children:(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(c.z,{variant:"ghost",size:"icon",onClick:()=>d.push("/evals"),children:(0,t.jsx)(D.Z,{className:"h-4 w-4"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-2xl font-bold tracking-tight",children:"Test Cases"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"Create and manage test cases for evaluating agent performance."})]})]})}),(0,t.jsx)(V,{columns:r,testCase:n||void 0})]})}):(0,t.jsx)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:(0,t.jsxs)(R.bZ,{variant:"destructive",children:[(0,t.jsx)(z.Z,{className:"h-4 w-4"}),(0,t.jsx)(R.X,{children:"You don't have permission to access Test Cases. Contact your administrator to request access."})]})})}}},function(e){e.O(0,[6840,329,8310,3954,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,605,4567,1206,5338,3825,5110,1713,1425,4811,1594,3145,9621,6373,3832,3750,1685,2971,2117,1744],function(){return e(e.s=95094)}),_N_E=e.O()}]);
|
|
2
|
-
//# sourceMappingURL=page-
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6208],{95094:function(e,s,l){Promise.resolve().then(l.bind(l,52489))},52489:function(e,s,l){"use strict";l.r(s),l.d(s,{default:function(){return M},dynamic:function(){return A}});var t=l(57437),a=l(2265),n=l(20653),i=l(94508),c=l(62869),r=l(84190);function d(e){let{column:s,title:l,className:a}=e;return s.getCanSort()?(0,t.jsx)("div",{className:(0,i.cn)("flex items-center space-x-2",a),children:(0,t.jsxs)(r.h_,{modal:!1,children:[(0,t.jsx)(r.$F,{asChild:!0,children:(0,t.jsxs)(c.z,{variant:"ghost",size:"sm",className:"-ml-3 h-8 data-[state=open]:bg-accent",children:[(0,t.jsx)("span",{children:l}),"desc"===s.getIsSorted()?(0,t.jsx)(n.veu,{className:"ml-2 h-4 w-4"}):"asc"===s.getIsSorted()?(0,t.jsx)(n.Hf3,{className:"ml-2 h-4 w-4"}):(0,t.jsx)(n.jnn,{className:"ml-2 h-4 w-4"})]})}),(0,t.jsxs)(r.AW,{align:"start",children:[(0,t.jsxs)(r.Xi,{onClick:()=>s.toggleSorting(!1),children:[(0,t.jsx)(n.Hf3,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Asc"]}),(0,t.jsxs)(r.Xi,{onClick:()=>s.toggleSorting(!0),children:[(0,t.jsx)(n.veu,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Desc"]}),(0,t.jsx)(r.VD,{}),(0,t.jsxs)(r.Xi,{onClick:()=>s.toggleVisibility(!1),children:[(0,t.jsx)(n.L52,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Hide"]})]})]})}):(0,t.jsx)("div",{className:(0,i.cn)(a),children:l})}var o=l(12199),u=l(45675),x=l(18930),h=l(27689),m=l(77992),j=l(37099);function g(e){var s;let{row:l,user:i,edit:d}=e,{toast:g}=(0,m.pm)(),[p,v]=(0,a.useState)(!1),f=l.original,N=i.super_admin||(null===(s=i.role)||void 0===s?void 0:s.evals)==="write",[C,{loading:w}]=(0,o.D)(h.lW,{onCompleted:()=>{g({title:"Test case deleted",description:"The test case has been successfully deleted."}),v(!1),window.location.reload()},onError:e=>{g({title:"Failed to delete test case",description:e.message,variant:"destructive"})}});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.h_,{modal:!1,children:[(0,t.jsx)(r.$F,{asChild:!0,children:(0,t.jsxs)(c.z,{variant:"ghost",className:"flex h-8 w-8 p-0 data-[state=open]:bg-muted",onClick:e=>e.stopPropagation(),children:[(0,t.jsx)(n.nWS,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Open menu"})]})}),(0,t.jsxs)(r.AW,{align:"end",className:"w-[160px]",children:[(0,t.jsxs)(r.Xi,{onClick:e=>{e.stopPropagation(),d()},children:[(0,t.jsx)(u.Z,{className:"mr-2 h-4 w-4"}),"Edit"]}),N&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.VD,{}),(0,t.jsxs)(r.Xi,{onClick:e=>{e.stopPropagation(),v(!0)},className:"text-destructive",children:[(0,t.jsx)(x.Z,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]})]}),(0,t.jsx)(j.aR,{open:p,onOpenChange:v,children:(0,t.jsxs)(j._T,{onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)(j.fY,{children:[(0,t.jsx)(j.f$,{children:"Are you sure?"}),(0,t.jsxs)(j.yT,{children:['This will permanently delete the test case "',f.name,'". This action cannot be undone.']})]}),(0,t.jsxs)(j.xo,{children:[(0,t.jsx)(j.le,{children:"Cancel"}),(0,t.jsx)(j.OL,{onClick:e=>{e.stopPropagation(),C({variables:{id:f.id}})},disabled:w,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:w?"Deleting...":"Delete"})]})]})})]})}var p=l(35974),v=l(7598);let f=(e,s)=>[{accessorKey:"name",header:e=>{let{column:s}=e;return(0,t.jsx)(d,{column:s,title:"Name"})},cell:e=>{let{row:s}=e;return(0,t.jsx)("div",{className:"flex space-x-2",children:(0,t.jsx)("span",{className:"max-w-[400px] truncate font-medium",children:s.getValue("name")})})}},{accessorKey:"description",header:e=>{let{column:s}=e;return(0,t.jsx)(d,{column:s,title:"Description"})},cell:e=>{let{row:s}=e,l=s.getValue("description");return(0,t.jsx)("div",{className:"flex space-x-2",children:(0,t.jsx)("span",{className:"max-w-[500px] truncate text-muted-foreground",children:l||"—"})})}},{accessorKey:"inputs",header:e=>{let{column:s}=e;return(0,t.jsx)(d,{column:s,title:"Messages"})},cell:e=>{let{row:s}=e,l=s.getValue("inputs");return(0,t.jsxs)(p.C,{variant:"secondary",children:[(null==l?void 0:l.length)||0," messages"]})}},{accessorKey:"updatedAt",header:e=>{let{column:s}=e;return(0,t.jsx)(d,{column:s,title:"Updated"})},cell:e=>{let{row:s}=e,l=s.getValue("updatedAt");return(0,t.jsx)("div",{className:"flex w-[100px] items-center",children:(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:(0,v.Q)(new Date(l),{addSuffix:!0})})})}},{id:"actions",cell:l=>{let{row:a}=l;return(0,t.jsx)(g,{row:a,user:e,edit:()=>{s(a.original)}})}}];var N=l(7211),C=l(71594),w=l(24525),y=l(99397);function b(e){let{table:s}=e;return(0,t.jsxs)(r.h_,{modal:!1,children:[(0,t.jsx)(r.$F,{asChild:!0,children:(0,t.jsxs)(c.z,{variant:"outline",size:"sm",className:"ml-auto hidden h-8 lg:flex",children:[(0,t.jsx)(n.hsZ,{className:"mr-2 h-4 w-4"}),"View"]})}),(0,t.jsxs)(r.AW,{align:"end",className:"w-[150px]",children:[(0,t.jsx)(r.Ju,{children:"Toggle columns"}),(0,t.jsx)(r.VD,{}),s.getAllColumns().filter(e=>void 0!==e.accessorFn&&e.getCanHide()).map(e=>(0,t.jsx)(r.bO,{className:"capitalize",checked:e.getIsVisible(),onCheckedChange:s=>e.toggleVisibility(!!s),children:(0,t.jsx)("span",{className:"w-[200px] truncate",children:e.id})},e.id))]})]})}var S=l(95186),k=l(93022),F=l(73578),P=l(82534);function V(e){var s,l,i,r,d,u;let{columns:x,testCase:j}=e,{toast:g}=(0,m.pm)(),[p,v]=a.useState({}),[f,V]=a.useState({}),[_,z]=a.useState([]),[D,R]=(0,a.useState)([]),[T,A]=(0,a.useState)(1),[M,E]=a.useState([]),[G,I]=(0,a.useState)(!1),[O,X]=(0,a.useState)(j||null);a.useEffect(()=>{j?(X(j),I(!0)):(I(!1),X(null))},[j]);let{loading:Z,error:W,data:H,refetch:K}=(0,N.aM)(h.RV,{fetchPolicy:"no-cache",nextFetchPolicy:"network-only",variables:{page:T,limit:10,filters:D},pollInterval:3e4}),[$]=(0,o.D)(h.lW,{onCompleted:()=>{g({title:"Test case deleted",description:"The test case has been successfully deleted."}),K()},onError:e=>{g({title:"Failed to delete test case",description:e.message,variant:"destructive"})}}),L=null==H?void 0:null===(s=H.test_casesPagination)||void 0===s?void 0:s.pageInfo,q=(null==H?void 0:null===(l=H.test_casesPagination)||void 0===l?void 0:l.items)||[],J=(0,C.b7)({data:q,columns:x,state:{sorting:M,columnVisibility:f,rowSelection:p,columnFilters:_},enableRowSelection:!0,onRowSelectionChange:v,onSortingChange:E,onColumnFiltersChange:z,onColumnVisibilityChange:V,getCoreRowModel:(0,w.sC)(),getFilteredRowModel:(0,w.vL)(),getPaginationRowModel:(0,w.G_)(),getSortedRowModel:(0,w.tj)(),getFacetedRowModel:(0,w.o6)(),getFacetedUniqueValues:(0,w.JG)()});a.useEffect(()=>{var e;let s=null===(e=J.getColumn("name"))||void 0===e?void 0:e.getFilterValue();s?R([{name:{contains:s}}]):R([])},[null===(i=J.getColumn("name"))||void 0===i?void 0:i.getFilterValue()]);let U=e=>{e?(X(e),I(!0)):(I(!1),X(null))},Y=()=>{I(!1),X(null)};return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("div",{className:"flex flex-1 items-center space-x-2",children:(0,t.jsx)(S.I,{placeholder:"Filter by name...",value:null!==(u=null===(r=J.getColumn("name"))||void 0===r?void 0:r.getFilterValue())&&void 0!==u?u:"",onChange:e=>{var s;return null===(s=J.getColumn("name"))||void 0===s?void 0:s.setFilterValue(e.target.value)},className:"h-8 w-[150px] lg:w-[250px]"})}),(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(b,{table:J}),(0,t.jsxs)(c.z,{variant:"default",size:"sm",className:"ml-auto h-8",onClick:()=>I(!0),children:[(0,t.jsx)(y.Z,{className:"mr-2 h-4 w-4"}),"New Test Case"]})]})]}),(0,t.jsx)("div",{className:"rounded-md border",children:(0,t.jsxs)(F.iA,{children:[(0,t.jsx)(F.xD,{children:J.getHeaderGroups().map(e=>(0,t.jsx)(F.SC,{children:e.headers.map(e=>(0,t.jsx)(F.ss,{children:e.isPlaceholder?null:(0,C.ie)(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,t.jsx)(F.RM,{children:Z?Array.from({length:5}).map((e,s)=>(0,t.jsx)(F.SC,{children:x.map((e,s)=>(0,t.jsx)(F.pj,{children:(0,t.jsx)(k.O,{className:"h-6 w-full"})},s))},s)):(null===(d=J.getRowModel().rows)||void 0===d?void 0:d.length)?J.getRowModel().rows.map(e=>(0,t.jsx)(F.SC,{"data-state":e.getIsSelected()&&"selected",className:"cursor-pointer",onClick:()=>{U(e.original)},children:e.getVisibleCells().map(e=>(0,t.jsx)(F.pj,{children:(0,C.ie)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,t.jsx)(F.SC,{children:(0,t.jsx)(F.pj,{colSpan:x.length,className:"h-24 text-center",children:"No test cases found."})})})]})}),(0,t.jsxs)("div",{className:"flex items-center justify-between px-2",children:[(0,t.jsx)("div",{className:"flex-1 text-sm text-muted-foreground",children:L&&(0,t.jsxs)(t.Fragment,{children:["Page ",L.currentPage," of ",L.pageCount," (",L.itemCount," total)"]})}),(0,t.jsx)("div",{className:"flex items-center space-x-6 lg:space-x-8",children:(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsxs)(c.z,{variant:"outline",className:"hidden h-8 w-8 p-0 lg:flex",onClick:()=>A(1),disabled:!(null==L?void 0:L.hasPreviousPage),children:[(0,t.jsx)("span",{className:"sr-only",children:"Go to first page"}),(0,t.jsx)(n.kRt,{className:"h-4 w-4"})]}),(0,t.jsxs)(c.z,{variant:"outline",className:"h-8 w-8 p-0",onClick:()=>A(T-1),disabled:!(null==L?void 0:L.hasPreviousPage),children:[(0,t.jsx)("span",{className:"sr-only",children:"Go to previous page"}),(0,t.jsx)(n.wyc,{className:"h-4 w-4"})]}),(0,t.jsxs)(c.z,{variant:"outline",className:"h-8 w-8 p-0",onClick:()=>A(T+1),disabled:!(null==L?void 0:L.hasNextPage),children:[(0,t.jsx)("span",{className:"sr-only",children:"Go to next page"}),(0,t.jsx)(n.XCv,{className:"h-4 w-4"})]}),(0,t.jsxs)(c.z,{variant:"outline",className:"hidden h-8 w-8 p-0 lg:flex",onClick:()=>A((null==L?void 0:L.pageCount)||1),disabled:!(null==L?void 0:L.hasNextPage),children:[(0,t.jsx)("span",{className:"sr-only",children:"Go to last page"}),(0,t.jsx)(n.yr4,{className:"h-4 w-4"})]})]})})]}),(0,t.jsx)(P.F,{open:G,onClose:Y,onSuccess:()=>{K(),Y()},testCase:O})]})}var _=l(13832),z=l(64972),D=l(32660),R=l(65613),T=l(99376);let A="force-dynamic";function M(){var e,s;let{user:l}=(0,a.useContext)(_.S),[n,i]=(0,a.useState)(null),r=f(l,e=>{i(e)}),d=(0,T.useRouter)();return l.super_admin||(null===(e=l.role)||void 0===e?void 0:e.evals)==="read"||(null===(s=l.role)||void 0===s?void 0:s.evals)==="write"?(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{className:"hidden h-full flex-1 flex-col space-y-8 p-8 md:flex",children:[(0,t.jsx)("div",{className:"flex items-center justify-between space-y-2",children:(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(c.z,{variant:"ghost",size:"icon",onClick:()=>d.push("/evals"),children:(0,t.jsx)(D.Z,{className:"h-4 w-4"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{className:"text-2xl font-bold tracking-tight",children:"Test Cases"}),(0,t.jsx)("p",{className:"text-muted-foreground",children:"Create and manage test cases for evaluating agent performance."})]})]})}),(0,t.jsx)(V,{columns:r,testCase:n||void 0})]})}):(0,t.jsx)("div",{className:"flex h-full flex-1 flex-col space-y-8 p-8",children:(0,t.jsxs)(R.bZ,{variant:"destructive",children:[(0,t.jsx)(z.Z,{className:"h-4 w-4"}),(0,t.jsx)(R.X,{children:"You don't have permission to access Test Cases. Contact your administrator to request access."})]})})}}},function(e){e.O(0,[6840,329,8310,3954,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,605,4567,1206,5338,3825,5110,1425,1594,1713,192,3145,552,6373,3832,3750,1685,2971,2117,1744],function(){return e(e.s=95094)}),_N_E=e.O()}]);
|
|
2
|
+
//# sourceMappingURL=page-827f50c6d1f150d0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/evals/cases/page-a39fef7444581565.js","mappings":"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","sources":["webpack://_N_E/?1e6c","webpack://_N_E/./app/(application)/evals/cases/components/data-table-column-header.tsx","webpack://_N_E/./app/(application)/evals/cases/components/data-table-row-actions.tsx","webpack://_N_E/./app/(application)/evals/cases/components/columns.tsx","webpack://_N_E/./app/(application)/evals/cases/components/data-table-view-options.tsx","webpack://_N_E/./app/(application)/evals/cases/components/data-table.tsx","webpack://_N_E/./app/(application)/evals/cases/page.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/evals/cases/page.tsx\");\n","\"use client\";\n\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n CaretSortIcon,\n EyeNoneIcon,\n} from \"@radix-ui/react-icons\";\nimport { Column } from \"@tanstack/react-table\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\n\ninterface DataTableColumnHeaderProps<TData, TValue>\n extends React.HTMLAttributes<HTMLDivElement> {\n column: Column<TData, TValue>;\n title: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\n >\n <span>{title}</span>\n {column.getIsSorted() === \"desc\" ? (\n <ArrowDownIcon className=\"ml-2 h-4 w-4\" />\n ) : column.getIsSorted() === \"asc\" ? (\n <ArrowUpIcon className=\"ml-2 h-4 w-4\" />\n ) : (\n <CaretSortIcon className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem onClick={() => column.toggleSorting(false)}>\n <ArrowUpIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => column.toggleSorting(true)}>\n <ArrowDownIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Desc\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={() => column.toggleVisibility(false)}>\n <EyeNoneIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Hide\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport { DotsHorizontalIcon } from \"@radix-ui/react-icons\";\nimport { Row } from \"@tanstack/react-table\";\nimport { useMutation } from \"@apollo/client\";\nimport { Pencil, Trash2 } from \"lucide-react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { DELETE_TEST_CASE } from \"@/queries/queries\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { User, UserWithRole } from \"@EXULU_SHARED/models/user\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { useState } from \"react\";\n\ninterface DataTableRowActionsProps<TData> {\n row: Row<TData>;\n user: UserWithRole;\n edit: () => void;\n}\n\nexport function DataTableRowActions<TData>({\n row,\n user,\n edit\n}: DataTableRowActionsProps<TData>) {\n const { toast } = useToast();\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const testCase = row.original as any;\n\n const canWrite = user.super_admin || user.role?.evals === \"write\";\n\n const [deleteTestCase, { loading: deleteLoading }] = useMutation(DELETE_TEST_CASE, {\n onCompleted: () => {\n toast({\n title: \"Test case deleted\",\n description: \"The test case has been successfully deleted.\",\n });\n setShowDeleteDialog(false);\n window.location.reload();\n },\n onError: (error) => {\n toast({\n title: \"Failed to delete test case\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const handleDelete = (e: React.MouseEvent) => {\n e.stopPropagation();\n deleteTestCase({\n variables: {\n id: testCase.id,\n },\n });\n };\n\n return (\n <>\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n className=\"flex h-8 w-8 p-0 data-[state=open]:bg-muted\"\n onClick={(e) => e.stopPropagation()}\n >\n <DotsHorizontalIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[160px]\">\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation();\n edit()\n // Edit is handled by the row click in data-table.tsx\n }}\n >\n <Pencil className=\"mr-2 h-4 w-4\" />\n Edit\n </DropdownMenuItem>\n {canWrite && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation();\n setShowDeleteDialog(true);\n }}\n className=\"text-destructive\"\n >\n <Trash2 className=\"mr-2 h-4 w-4\" />\n Delete\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n\n <AlertDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>\n <AlertDialogContent onClick={(e) => e.stopPropagation()}>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete the test case \"{testCase.name}\".\n This action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={handleDelete}\n disabled={deleteLoading}\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n >\n {deleteLoading ? \"Deleting...\" : \"Delete\"}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","\"use client\";\n\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableColumnHeader } from \"./data-table-column-header\";\nimport { DataTableRowActions } from \"./data-table-row-actions\";\nimport { TestCase } from \"@/types/models/test-case\";\nimport { UserWithRole } from \"@EXULU_SHARED/models/user\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { formatDistanceToNow } from \"date-fns\";\n\nexport const createColumns = (user: UserWithRole, edit: (test: TestCase) => void): ColumnDef<TestCase>[] => [\n {\n accessorKey: \"name\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Name\" />\n ),\n cell: ({ row }) => {\n return (\n <div className=\"flex space-x-2\">\n <span className=\"max-w-[400px] truncate font-medium\">\n {row.getValue(\"name\")}\n </span>\n </div>\n );\n },\n },\n {\n accessorKey: \"description\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Description\" />\n ),\n cell: ({ row }) => {\n const description = row.getValue(\"description\") as string;\n return (\n <div className=\"flex space-x-2\">\n <span className=\"max-w-[500px] truncate text-muted-foreground\">\n {description || \"—\"}\n </span>\n </div>\n );\n },\n },\n {\n accessorKey: \"inputs\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Messages\" />\n ),\n cell: ({ row }) => {\n const inputs = row.getValue(\"inputs\") as any[];\n return (\n <Badge variant=\"secondary\">\n {inputs?.length || 0} messages\n </Badge>\n );\n },\n },\n /* {\n accessorKey: \"expected_tools\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Expected Tools\" />\n ),\n cell: ({ row }) => {\n const tools = row.getValue(\"expected_tools\") as string[];\n if (!tools || tools.length === 0) return <span className=\"text-muted-foreground\">—</span>;\n return (\n <Badge variant=\"outline\">\n {tools.length} tools\n </Badge>\n );\n },\n },\n {\n accessorKey: \"expected_knowledge_sources\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Expected Contexts\" />\n ),\n cell: ({ row }) => {\n const contexts = row.getValue(\"expected_knowledge_sources\") as string[];\n if (!contexts || contexts.length === 0) return <span className=\"text-muted-foreground\">—</span>;\n return (\n <Badge variant=\"outline\">\n {contexts.length} contexts\n </Badge>\n );\n },\n },\n {\n accessorKey: \"expected_agent_tools\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Expected Agents\" />\n ),\n cell: ({ row }) => {\n const agents = row.getValue(\"expected_agent_tools\") as string[];\n if (!agents || agents.length === 0) return <span className=\"text-muted-foreground\">—</span>;\n return (\n <Badge variant=\"outline\">\n {agents.length} agents\n </Badge>\n );\n },\n }, */\n {\n accessorKey: \"updatedAt\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Updated\" />\n ),\n cell: ({ row }) => {\n const date = row.getValue(\"updatedAt\") as string;\n return (\n <div className=\"flex w-[100px] items-center\">\n <span className=\"text-sm text-muted-foreground\">\n {formatDistanceToNow(new Date(date), { addSuffix: true })}\n </span>\n </div>\n );\n },\n },\n {\n id: \"actions\",\n cell: ({ row }) => <DataTableRowActions row={row} user={user} edit={() => {\n const testCase = row.original as TestCase;\n edit(testCase);\n }} />,\n },\n];\n","\"use client\";\n\nimport { MixerHorizontalIcon } from \"@radix-ui/react-icons\";\nimport { Table } from \"@tanstack/react-table\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\n\ninterface DataTableViewOptionsProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTableViewOptions<TData>({\n table,\n}: DataTableViewOptionsProps<TData>) {\n return (\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"ml-auto hidden h-8 lg:flex\"\n >\n <MixerHorizontalIcon className=\"mr-2 h-4 w-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[150px]\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter(\n (column) =>\n typeof column.accessorFn !== \"undefined\" && column.getCanHide(),\n )\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n <span className=\"w-[200px] truncate\">{column.id}</span>\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","\"use client\";\n\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n} from \"@radix-ui/react-icons\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n useReactTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport { Plus } from \"lucide-react\";\nimport { useState } from \"react\";\nimport * as React from \"react\";\nimport {\n GET_TEST_CASES,\n DELETE_TEST_CASE,\n} from \"@/queries/queries\";\nimport { DataTableViewOptions } from \"./data-table-view-options\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { FilterOperator } from \"@/components/custom/recent-jobs\";\nimport { TestCaseModal } from \"./test-case-modal\";\nimport { TestCase } from \"@/types/models/test-case\";\n\nexport type TestCaseFilters = {\n name?: FilterOperator;\n createdAt?: FilterOperator;\n updatedAt?: FilterOperator;\n};\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n testCase?: TestCase;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n testCase,\n}: DataTableProps<TData, TValue>) {\n const { toast } = useToast();\n const [rowSelection, setRowSelection] = React.useState({});\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n [],\n );\n\n const [filters, setFilters] = useState<TestCaseFilters[]>([]);\n const [page, setPage] = useState(1);\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [showModal, setShowModal] = useState(false);\n const [editingTestCase, setEditingTestCase] = useState<TestCase | null>(testCase || null);\n\n React.useEffect(() => {\n if (testCase) {\n setEditingTestCase(testCase);\n setShowModal(true);\n } else {\n setShowModal(false);\n setEditingTestCase(null);\n }\n }, [testCase]);\n\n const { loading, error, data, refetch } = useQuery(GET_TEST_CASES, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: page,\n limit: 10,\n filters: filters,\n },\n pollInterval: 30000,\n });\n\n const [deleteTestCase] = useMutation(DELETE_TEST_CASE, {\n onCompleted: () => {\n toast({\n title: \"Test case deleted\",\n description: \"The test case has been successfully deleted.\",\n });\n refetch();\n },\n onError: (error) => {\n toast({\n title: \"Failed to delete test case\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const pageInfo = data?.test_casesPagination?.pageInfo;\n const testCases = data?.test_casesPagination?.items || [];\n\n const table = useReactTable({\n data: testCases as TData[],\n columns,\n state: {\n sorting,\n columnVisibility,\n rowSelection,\n columnFilters,\n },\n enableRowSelection: true,\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n });\n\n React.useEffect(() => {\n const nameFilter = table.getColumn(\"name\")?.getFilterValue() as string;\n if (nameFilter) {\n setFilters([{ name: { contains: nameFilter } }]);\n } else {\n setFilters([]);\n }\n }, [table.getColumn(\"name\")?.getFilterValue()]);\n\n const handleEdit = (testCase: TestCase) => {\n if (testCase) {\n setEditingTestCase(testCase);\n setShowModal(true);\n } else {\n setShowModal(false);\n setEditingTestCase(null);\n }\n };\n\n const handleCloseModal = () => {\n setShowModal(false);\n setEditingTestCase(null);\n };\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-1 items-center space-x-2\">\n <Input\n placeholder=\"Filter by name...\"\n value={(table.getColumn(\"name\")?.getFilterValue() as string) ?? \"\"}\n onChange={(event) =>\n table.getColumn(\"name\")?.setFilterValue(event.target.value)\n }\n className=\"h-8 w-[150px] lg:w-[250px]\"\n />\n </div>\n <div className=\"flex items-center space-x-2\">\n <DataTableViewOptions table={table} />\n <Button\n variant=\"default\"\n size=\"sm\"\n className=\"ml-auto h-8\"\n onClick={() => setShowModal(true)}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n New Test Case\n </Button>\n </div>\n </div>\n\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {loading ? (\n Array.from({ length: 5 }).map((_, i) => (\n <TableRow key={i}>\n {columns.map((_, j) => (\n <TableCell key={j}>\n <Skeleton className=\"h-6 w-full\" />\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n className=\"cursor-pointer\"\n onClick={() => {\n const testCase = row.original as TestCase;\n handleEdit(testCase);\n }}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n No test cases found.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n <div className=\"flex items-center justify-between px-2\">\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {pageInfo && (\n <>\n Page {pageInfo.currentPage} of {pageInfo.pageCount} ({pageInfo.itemCount} total)\n </>\n )}\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => setPage(1)}\n disabled={!pageInfo?.hasPreviousPage}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setPage(page - 1)}\n disabled={!pageInfo?.hasPreviousPage}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setPage(page + 1)}\n disabled={!pageInfo?.hasNextPage}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => setPage(pageInfo?.pageCount || 1)}\n disabled={!pageInfo?.hasNextPage}\n >\n <span className=\"sr-only\">Go to last page</span>\n <DoubleArrowRightIcon className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n\n <TestCaseModal\n open={showModal}\n onClose={handleCloseModal}\n onSuccess={() => {\n refetch();\n handleCloseModal();\n }}\n testCase={editingTestCase}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { useContext, useState } from \"react\";\nimport { createColumns } from \"./components/columns\";\nimport { DataTable } from \"./components/data-table\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { ArrowLeft, Brain } from \"lucide-react\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { Button } from \"@/components/ui/button\";\nimport { useRouter } from \"next/navigation\";\nimport { TestCase } from \"@/types/models/test-case\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function TestCasesPage() {\n\n const { user } = useContext(UserContext);\n const [editingTestCase, setEditingTestCase] = useState<TestCase | null>(null);\n const columns = createColumns(user, (testCase) => {\n setEditingTestCase(testCase);\n });\n const router = useRouter();\n\n // Check if user has evals access\n const hasEvalsAccess = user.super_admin || user.role?.evals === \"read\" || user.role?.evals === \"write\";\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 Test Cases. Contact your administrator to request access.\n </AlertDescription>\n </Alert>\n </div>\n );\n }\n\n return (\n <>\n <div className=\"hidden h-full flex-1 flex-col space-y-8 p-8 md:flex\">\n <div className=\"flex items-center justify-between space-y-2\">\n <div className=\"flex items-center gap-4\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => router.push(\"/evals\")}>\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <h2 className=\"text-2xl font-bold tracking-tight\">Test Cases</h2>\n <p className=\"text-muted-foreground\">\n Create and manage test cases for evaluating agent performance.\n </p>\n </div>\n </div>\n </div>\n <DataTable columns={columns} testCase={editingTestCase || undefined} />\n </div>\n </>\n );\n}\n"],"names":["Promise","resolve","then","__webpack_require__","bind","DataTableColumnHeader","param","column","title","className","getCanSort","jsx_runtime","jsx","div","cn","jsxs","DropdownMenu","modal","DropdownMenuTrigger","asChild","Button","variant","size","span","getIsSorted","ArrowDownIcon","ArrowUpIcon","CaretSortIcon","DropdownMenuContent","align","DropdownMenuItem","onClick","toggleSorting","DropdownMenuSeparator","toggleVisibility","EyeNoneIcon","DataTableRowActions","user","row","edit","toast","useToast","showDeleteDialog","setShowDeleteDialog","useState","testCase","original","canWrite","super_admin","role","evals","deleteTestCase","loading","deleteLoading","useMutation","DELETE_TEST_CASE","onCompleted","description","window","location","reload","onError","error","message","Fragment","e","stopPropagation","DotsHorizontalIcon","Pencil","Trash2","AlertDialog","open","onOpenChange","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","name","AlertDialogFooter","AlertDialogCancel","AlertDialogAction","variables","id","disabled","createColumns","accessorKey","header","cell","getValue","inputs","Badge","length","date","formatDistanceToNow","Date","addSuffix","DataTableViewOptions","table","MixerHorizontalIcon","DropdownMenuLabel","getAllColumns","filter","accessorFn","getCanHide","map","DropdownMenuCheckboxItem","checked","getIsVisible","onCheckedChange","value","DataTable","data","columns","rowSelection","setRowSelection","React","columnVisibility","setColumnVisibility","columnFilters","setColumnFilters","filters","setFilters","page","setPage","sorting","setSorting","showModal","setShowModal","editingTestCase","setEditingTestCase","refetch","useQuery","GET_TEST_CASES","fetchPolicy","nextFetchPolicy","limit","pollInterval","pageInfo","test_casesPagination","testCases","items","useReactTable","state","enableRowSelection","onRowSelectionChange","onSortingChange","onColumnFiltersChange","onColumnVisibilityChange","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","nameFilter","getColumn","getFilterValue","contains","handleEdit","handleCloseModal","Input","placeholder","onChange","setFilterValue","event","target","Plus","Table","TableHeader","getHeaderGroups","TableRow","headerGroup","headers","TableHead","isPlaceholder","flexRender","columnDef","getContext","TableBody","Array","from","_","i","j","TableCell","Skeleton","getRowModel","rows","data-state","getIsSelected","getVisibleCells","colSpan","currentPage","pageCount","itemCount","hasPreviousPage","DoubleArrowLeftIcon","ChevronLeftIcon","hasNextPage","ChevronRightIcon","DoubleArrowRightIcon","TestCaseModal","onClose","onSuccess","dynamic","TestCasesPage","useContext","UserContext","router","useRouter","push","ArrowLeft","h2","p","undefined","Alert","Brain","AlertDescription"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js","mappings":"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","sources":["webpack://_N_E/?1e6c","webpack://_N_E/./app/(application)/evals/cases/components/data-table-column-header.tsx","webpack://_N_E/./app/(application)/evals/cases/components/data-table-row-actions.tsx","webpack://_N_E/./app/(application)/evals/cases/components/columns.tsx","webpack://_N_E/./app/(application)/evals/cases/components/data-table-view-options.tsx","webpack://_N_E/./app/(application)/evals/cases/components/data-table.tsx","webpack://_N_E/./app/(application)/evals/cases/page.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/evals/cases/page.tsx\");\n","\"use client\";\n\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n CaretSortIcon,\n EyeNoneIcon,\n} from \"@radix-ui/react-icons\";\nimport { Column } from \"@tanstack/react-table\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\n\ninterface DataTableColumnHeaderProps<TData, TValue>\n extends React.HTMLAttributes<HTMLDivElement> {\n column: Column<TData, TValue>;\n title: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\n >\n <span>{title}</span>\n {column.getIsSorted() === \"desc\" ? (\n <ArrowDownIcon className=\"ml-2 h-4 w-4\" />\n ) : column.getIsSorted() === \"asc\" ? (\n <ArrowUpIcon className=\"ml-2 h-4 w-4\" />\n ) : (\n <CaretSortIcon className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem onClick={() => column.toggleSorting(false)}>\n <ArrowUpIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => column.toggleSorting(true)}>\n <ArrowDownIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Desc\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={() => column.toggleVisibility(false)}>\n <EyeNoneIcon className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Hide\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport { DotsHorizontalIcon } from \"@radix-ui/react-icons\";\nimport { Row } from \"@tanstack/react-table\";\nimport { useMutation } from \"@apollo/client\";\nimport { Pencil, Trash2 } from \"lucide-react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { DELETE_TEST_CASE } from \"@/queries/queries\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { User, UserWithRole } from \"@EXULU_SHARED/models/user\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { useState } from \"react\";\n\ninterface DataTableRowActionsProps<TData> {\n row: Row<TData>;\n user: UserWithRole;\n edit: () => void;\n}\n\nexport function DataTableRowActions<TData>({\n row,\n user,\n edit\n}: DataTableRowActionsProps<TData>) {\n const { toast } = useToast();\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const testCase = row.original as any;\n\n const canWrite = user.super_admin || user.role?.evals === \"write\";\n\n const [deleteTestCase, { loading: deleteLoading }] = useMutation(DELETE_TEST_CASE, {\n onCompleted: () => {\n toast({\n title: \"Test case deleted\",\n description: \"The test case has been successfully deleted.\",\n });\n setShowDeleteDialog(false);\n window.location.reload();\n },\n onError: (error) => {\n toast({\n title: \"Failed to delete test case\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const handleDelete = (e: React.MouseEvent) => {\n e.stopPropagation();\n deleteTestCase({\n variables: {\n id: testCase.id,\n },\n });\n };\n\n return (\n <>\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n className=\"flex h-8 w-8 p-0 data-[state=open]:bg-muted\"\n onClick={(e) => e.stopPropagation()}\n >\n <DotsHorizontalIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[160px]\">\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation();\n edit()\n // Edit is handled by the row click in data-table.tsx\n }}\n >\n <Pencil className=\"mr-2 h-4 w-4\" />\n Edit\n </DropdownMenuItem>\n {canWrite && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation();\n setShowDeleteDialog(true);\n }}\n className=\"text-destructive\"\n >\n <Trash2 className=\"mr-2 h-4 w-4\" />\n Delete\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n\n <AlertDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>\n <AlertDialogContent onClick={(e) => e.stopPropagation()}>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete the test case \"{testCase.name}\".\n This action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={handleDelete}\n disabled={deleteLoading}\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n >\n {deleteLoading ? \"Deleting...\" : \"Delete\"}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","\"use client\";\n\nimport { ColumnDef } from \"@tanstack/react-table\";\nimport { DataTableColumnHeader } from \"./data-table-column-header\";\nimport { DataTableRowActions } from \"./data-table-row-actions\";\nimport { TestCase } from \"@/types/models/test-case\";\nimport { UserWithRole } from \"@EXULU_SHARED/models/user\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { formatDistanceToNow } from \"date-fns\";\n\nexport const createColumns = (user: UserWithRole, edit: (test: TestCase) => void): ColumnDef<TestCase>[] => [\n {\n accessorKey: \"name\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Name\" />\n ),\n cell: ({ row }) => {\n return (\n <div className=\"flex space-x-2\">\n <span className=\"max-w-[400px] truncate font-medium\">\n {row.getValue(\"name\")}\n </span>\n </div>\n );\n },\n },\n {\n accessorKey: \"description\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Description\" />\n ),\n cell: ({ row }) => {\n const description = row.getValue(\"description\") as string;\n return (\n <div className=\"flex space-x-2\">\n <span className=\"max-w-[500px] truncate text-muted-foreground\">\n {description || \"—\"}\n </span>\n </div>\n );\n },\n },\n {\n accessorKey: \"inputs\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Messages\" />\n ),\n cell: ({ row }) => {\n const inputs = row.getValue(\"inputs\") as any[];\n return (\n <Badge variant=\"secondary\">\n {inputs?.length || 0} messages\n </Badge>\n );\n },\n },\n /* {\n accessorKey: \"expected_tools\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Expected Tools\" />\n ),\n cell: ({ row }) => {\n const tools = row.getValue(\"expected_tools\") as string[];\n if (!tools || tools.length === 0) return <span className=\"text-muted-foreground\">—</span>;\n return (\n <Badge variant=\"outline\">\n {tools.length} tools\n </Badge>\n );\n },\n },\n {\n accessorKey: \"expected_knowledge_sources\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Expected Contexts\" />\n ),\n cell: ({ row }) => {\n const contexts = row.getValue(\"expected_knowledge_sources\") as string[];\n if (!contexts || contexts.length === 0) return <span className=\"text-muted-foreground\">—</span>;\n return (\n <Badge variant=\"outline\">\n {contexts.length} contexts\n </Badge>\n );\n },\n },\n {\n accessorKey: \"expected_agent_tools\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Expected Agents\" />\n ),\n cell: ({ row }) => {\n const agents = row.getValue(\"expected_agent_tools\") as string[];\n if (!agents || agents.length === 0) return <span className=\"text-muted-foreground\">—</span>;\n return (\n <Badge variant=\"outline\">\n {agents.length} agents\n </Badge>\n );\n },\n }, */\n {\n accessorKey: \"updatedAt\",\n header: ({ column }) => (\n <DataTableColumnHeader column={column} title=\"Updated\" />\n ),\n cell: ({ row }) => {\n const date = row.getValue(\"updatedAt\") as string;\n return (\n <div className=\"flex w-[100px] items-center\">\n <span className=\"text-sm text-muted-foreground\">\n {formatDistanceToNow(new Date(date), { addSuffix: true })}\n </span>\n </div>\n );\n },\n },\n {\n id: \"actions\",\n cell: ({ row }) => <DataTableRowActions row={row} user={user} edit={() => {\n const testCase = row.original as TestCase;\n edit(testCase);\n }} />,\n },\n];\n","\"use client\";\n\nimport { MixerHorizontalIcon } from \"@radix-ui/react-icons\";\nimport { Table } from \"@tanstack/react-table\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\n\ninterface DataTableViewOptionsProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTableViewOptions<TData>({\n table,\n}: DataTableViewOptionsProps<TData>) {\n return (\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"ml-auto hidden h-8 lg:flex\"\n >\n <MixerHorizontalIcon className=\"mr-2 h-4 w-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[150px]\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter(\n (column) =>\n typeof column.accessorFn !== \"undefined\" && column.getCanHide(),\n )\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n <span className=\"w-[200px] truncate\">{column.id}</span>\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","\"use client\";\n\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n} from \"@radix-ui/react-icons\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n useReactTable,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport { Plus } from \"lucide-react\";\nimport { useState } from \"react\";\nimport * as React from \"react\";\nimport {\n GET_TEST_CASES,\n DELETE_TEST_CASE,\n} from \"@/queries/queries\";\nimport { DataTableViewOptions } from \"./data-table-view-options\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\";\nimport { useToast } from \"@/components/ui/use-toast\";\nimport { FilterOperator } from \"@/components/custom/recent-jobs\";\nimport { TestCaseModal } from \"./test-case-modal\";\nimport { TestCase } from \"@/types/models/test-case\";\n\nexport type TestCaseFilters = {\n name?: FilterOperator;\n createdAt?: FilterOperator;\n updatedAt?: FilterOperator;\n};\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n testCase?: TestCase;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n testCase,\n}: DataTableProps<TData, TValue>) {\n const { toast } = useToast();\n const [rowSelection, setRowSelection] = React.useState({});\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n [],\n );\n\n const [filters, setFilters] = useState<TestCaseFilters[]>([]);\n const [page, setPage] = useState(1);\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [showModal, setShowModal] = useState(false);\n const [editingTestCase, setEditingTestCase] = useState<TestCase | null>(testCase || null);\n\n React.useEffect(() => {\n if (testCase) {\n setEditingTestCase(testCase);\n setShowModal(true);\n } else {\n setShowModal(false);\n setEditingTestCase(null);\n }\n }, [testCase]);\n\n const { loading, error, data, refetch } = useQuery(GET_TEST_CASES, {\n fetchPolicy: \"no-cache\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: page,\n limit: 10,\n filters: filters,\n },\n pollInterval: 30000,\n });\n\n const [deleteTestCase] = useMutation(DELETE_TEST_CASE, {\n onCompleted: () => {\n toast({\n title: \"Test case deleted\",\n description: \"The test case has been successfully deleted.\",\n });\n refetch();\n },\n onError: (error) => {\n toast({\n title: \"Failed to delete test case\",\n description: error.message,\n variant: \"destructive\",\n });\n },\n });\n\n const pageInfo = data?.test_casesPagination?.pageInfo;\n const testCases = data?.test_casesPagination?.items || [];\n\n const table = useReactTable({\n data: testCases as TData[],\n columns,\n state: {\n sorting,\n columnVisibility,\n rowSelection,\n columnFilters,\n },\n enableRowSelection: true,\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n });\n\n React.useEffect(() => {\n const nameFilter = table.getColumn(\"name\")?.getFilterValue() as string;\n if (nameFilter) {\n setFilters([{ name: { contains: nameFilter } }]);\n } else {\n setFilters([]);\n }\n }, [table.getColumn(\"name\")?.getFilterValue()]);\n\n const handleEdit = (testCase: TestCase) => {\n if (testCase) {\n setEditingTestCase(testCase);\n setShowModal(true);\n } else {\n setShowModal(false);\n setEditingTestCase(null);\n }\n };\n\n const handleCloseModal = () => {\n setShowModal(false);\n setEditingTestCase(null);\n };\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex flex-1 items-center space-x-2\">\n <Input\n placeholder=\"Filter by name...\"\n value={(table.getColumn(\"name\")?.getFilterValue() as string) ?? \"\"}\n onChange={(event) =>\n table.getColumn(\"name\")?.setFilterValue(event.target.value)\n }\n className=\"h-8 w-[150px] lg:w-[250px]\"\n />\n </div>\n <div className=\"flex items-center space-x-2\">\n <DataTableViewOptions table={table} />\n <Button\n variant=\"default\"\n size=\"sm\"\n className=\"ml-auto h-8\"\n onClick={() => setShowModal(true)}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n New Test Case\n </Button>\n </div>\n </div>\n\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {loading ? (\n Array.from({ length: 5 }).map((_, i) => (\n <TableRow key={i}>\n {columns.map((_, j) => (\n <TableCell key={j}>\n <Skeleton className=\"h-6 w-full\" />\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n className=\"cursor-pointer\"\n onClick={() => {\n const testCase = row.original as TestCase;\n handleEdit(testCase);\n }}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n No test cases found.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n <div className=\"flex items-center justify-between px-2\">\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {pageInfo && (\n <>\n Page {pageInfo.currentPage} of {pageInfo.pageCount} ({pageInfo.itemCount} total)\n </>\n )}\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => setPage(1)}\n disabled={!pageInfo?.hasPreviousPage}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setPage(page - 1)}\n disabled={!pageInfo?.hasPreviousPage}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setPage(page + 1)}\n disabled={!pageInfo?.hasNextPage}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => setPage(pageInfo?.pageCount || 1)}\n disabled={!pageInfo?.hasNextPage}\n >\n <span className=\"sr-only\">Go to last page</span>\n <DoubleArrowRightIcon className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n\n <TestCaseModal\n open={showModal}\n onClose={handleCloseModal}\n onSuccess={() => {\n refetch();\n handleCloseModal();\n }}\n testCase={editingTestCase}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { useContext, useState } from \"react\";\nimport { createColumns } from \"./components/columns\";\nimport { DataTable } from \"./components/data-table\";\nimport { UserContext } from \"@/app/(application)/authenticated\";\nimport { ArrowLeft, Brain } from \"lucide-react\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { Button } from \"@/components/ui/button\";\nimport { useRouter } from \"next/navigation\";\nimport { TestCase } from \"@/types/models/test-case\";\n\nexport const dynamic = \"force-dynamic\";\n\nexport default function TestCasesPage() {\n\n const { user } = useContext(UserContext);\n const [editingTestCase, setEditingTestCase] = useState<TestCase | null>(null);\n const columns = createColumns(user, (testCase) => {\n setEditingTestCase(testCase);\n });\n const router = useRouter();\n\n // Check if user has evals access\n const hasEvalsAccess = user.super_admin || user.role?.evals === \"read\" || user.role?.evals === \"write\";\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 Test Cases. Contact your administrator to request access.\n </AlertDescription>\n </Alert>\n </div>\n );\n }\n\n return (\n <>\n <div className=\"hidden h-full flex-1 flex-col space-y-8 p-8 md:flex\">\n <div className=\"flex items-center justify-between space-y-2\">\n <div className=\"flex items-center gap-4\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => router.push(\"/evals\")}>\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <h2 className=\"text-2xl font-bold tracking-tight\">Test Cases</h2>\n <p className=\"text-muted-foreground\">\n Create and manage test cases for evaluating agent performance.\n </p>\n </div>\n </div>\n </div>\n <DataTable columns={columns} testCase={editingTestCase || undefined} />\n </div>\n </>\n );\n}\n"],"names":["Promise","resolve","then","__webpack_require__","bind","DataTableColumnHeader","param","column","title","className","getCanSort","jsx_runtime","jsx","div","cn","jsxs","DropdownMenu","modal","DropdownMenuTrigger","asChild","Button","variant","size","span","getIsSorted","ArrowDownIcon","ArrowUpIcon","CaretSortIcon","DropdownMenuContent","align","DropdownMenuItem","onClick","toggleSorting","DropdownMenuSeparator","toggleVisibility","EyeNoneIcon","DataTableRowActions","user","row","edit","toast","useToast","showDeleteDialog","setShowDeleteDialog","useState","testCase","original","canWrite","super_admin","role","evals","deleteTestCase","loading","deleteLoading","useMutation","DELETE_TEST_CASE","onCompleted","description","window","location","reload","onError","error","message","Fragment","e","stopPropagation","DotsHorizontalIcon","Pencil","Trash2","AlertDialog","open","onOpenChange","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","name","AlertDialogFooter","AlertDialogCancel","AlertDialogAction","variables","id","disabled","createColumns","accessorKey","header","cell","getValue","inputs","Badge","length","date","formatDistanceToNow","Date","addSuffix","DataTableViewOptions","table","MixerHorizontalIcon","DropdownMenuLabel","getAllColumns","filter","accessorFn","getCanHide","map","DropdownMenuCheckboxItem","checked","getIsVisible","onCheckedChange","value","DataTable","data","columns","rowSelection","setRowSelection","React","columnVisibility","setColumnVisibility","columnFilters","setColumnFilters","filters","setFilters","page","setPage","sorting","setSorting","showModal","setShowModal","editingTestCase","setEditingTestCase","refetch","useQuery","GET_TEST_CASES","fetchPolicy","nextFetchPolicy","limit","pollInterval","pageInfo","test_casesPagination","testCases","items","useReactTable","state","enableRowSelection","onRowSelectionChange","onSortingChange","onColumnFiltersChange","onColumnVisibilityChange","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","nameFilter","getColumn","getFilterValue","contains","handleEdit","handleCloseModal","Input","placeholder","onChange","setFilterValue","event","target","Plus","Table","TableHeader","getHeaderGroups","TableRow","headerGroup","headers","TableHead","isPlaceholder","flexRender","columnDef","getContext","TableBody","Array","from","_","i","j","TableCell","Skeleton","getRowModel","rows","data-state","getIsSelected","getVisibleCells","colSpan","currentPage","pageCount","itemCount","hasPreviousPage","DoubleArrowLeftIcon","ChevronLeftIcon","hasNextPage","ChevronRightIcon","DoubleArrowRightIcon","TestCaseModal","onClose","onSuccess","dynamic","TestCasesPage","useContext","UserContext","router","useRouter","push","ArrowLeft","h2","p","undefined","Alert","Brain","AlertDescription"],"sourceRoot":""}
|
package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[806],{62839:function(e,s,t){Promise.resolve().then(t.bind(t,32538))},32538:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return $}});var i=t(57437),a=t(2265),r=t(99376),n=t(12199),l=t(7211),c=t(63251),d=t(27689),o=t(62869),u=t(95186),m=t(26815),h=t(76818),x=t(66070),p=t(35974),j=t(26110),v=t(19060),f=t(39763);let g=(0,f.Z)("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]),y=(0,f.Z)("Files",[["path",{d:"M15.5 2H8.6c-.4 0-.8.2-1.1.5-.3.3-.5.7-.5 1.1v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1V6.5L15.5 2z",key:"cennsq"}],["path",{d:"M3 7.6v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8",key:"ms809a"}],["path",{d:"M15 2v5h5",key:"qq6kwv"}]]);var N=t(53417),w=t(88906),b=t(45675),k=t(99397);let C=(0,f.Z)("PackageMinus",[["path",{d:"M16 16h6",key:"100bgy"}],["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}]]);var S=t(18930),Z=t(63639),_=t(73247),M=t(82222),A=t(8014),P=t(93022),E=t(77992),I=t(10492),D=t(87393),O=t(13832),z=t(27648),T=t(81103),R=t(36399);let B=(0,f.Z)("PlusSquare",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]);var V=t(23518);let L=e=>{var s;let{onConfirm:t}=e,{data:r,loading:n,error:l}=(0,R.t)(),[c,d]=(0,a.useState)(void 0),[u,m]=(0,a.useState)(!1);return(0,i.jsxs)(j.Vq,{open:u,onOpenChange:e=>{m(e),d(void 0)},children:[(0,i.jsx)(j.hg,{asChild:!0,children:(0,i.jsxs)(o.z,{className:"w-full",variant:"outline",children:[(0,i.jsx)(B,{className:"h-4 w-4 mr-2"}),"Select items from knowledge sources to add to the project, or upload files."]})}),(0,i.jsxs)(j.cZ,{className:"sm:max-w-[900px]",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Item selection"}),(0,i.jsx)(j.Be,{children:"Browse through contexts and select items."})]}),!c&&(0,i.jsxs)(V.mY,{className:"rounded-lg border shadow-md md:min-w-[450px]",children:[(0,i.jsx)(V.sZ,{placeholder:"Type a command or search..."}),(0,i.jsxs)(V.e8,{children:[(0,i.jsx)(V.rb,{children:"No results found."}),(0,i.jsx)(V.fu,{heading:"Contexts",children:null==r?void 0:null===(s=r.contexts)||void 0===s?void 0:s.items.map(e=>(0,i.jsx)(V.di,{onSelect:()=>{d(e)},children:e.name},e.id))})]})]}),c&&(0,i.jsx)(F,{context:c,onConfirm:e=>{console.log("item",e),t([{item:e,context:c}]),m(!1)}})]})]})},F=e=>{var s,t,r,n,c;let{context:o,onConfirm:u}=e,[m,h]=(0,a.useState)(void 0),{loading:x,data:p,refetch:j,previousData:v,error:f}=(0,l.aM)((0,d.P3)(o.id,[]),{fetchPolicy:"no-cache",nextFetchPolicy:"network-only",skip:!o.id,variables:{context:o.id,page:1,limit:10,sort:{field:"updatedAt",direction:"DESC"},filters:{archived:{ne:!0},...m?{name:{contains:"".concat(m)}}:{}}}});return(0,i.jsxs)(V.mY,{className:"rounded-lg border shadow-md md:min-w-[450px]",children:[(0,i.jsx)(V.sZ,{onValueChange:e=>h(e),placeholder:"Type a command or search..."}),(0,i.jsx)(V.e8,{children:(0,i.jsxs)(V.fu,{heading:"Items",children:[!v&&x&&(0,i.jsx)(V.di,{children:(0,i.jsx)(I.g,{})},"loading"),!x&&!(null==p?void 0:null===(t=p[o.id+d.Md])||void 0===t?void 0:null===(s=t.items)||void 0===s?void 0:s.length)&&(0,i.jsx)(V.rb,{children:"No items found."}),null===(c=p||v)||void 0===c?void 0:null===(n=c[o.id+d.Md])||void 0===n?void 0:null===(r=n.items)||void 0===r?void 0:r.map(e=>(0,i.jsx)(V.di,{onSelect:()=>{u(e)},children:e.name},e.id))]})})]})};var q=t(6374);function Y(e){var s,t,f,R,B,V;let{project:F}=e,[Y,X]=(0,a.useState)(!1),[W,$]=(0,a.useState)(!1),[H,K]=(0,a.useState)(!1),[G,J]=(0,a.useState)(""),[Q,ee]=(0,a.useState)("overview"),{user:es}=(0,a.useContext)(O.S),et=(0,r.useRouter)(),[ei,ea]=(0,a.useState)({deleteItems:!1,deleteSessions:!1}),[er,en]=(0,a.useState)({name:F.name||"",description:F.description||"",custom_instructions:F.custom_instructions||""}),{toast:el}=(0,E.pm)(),[ec,ed]=(0,a.useState)({rights_mode:F.rights_mode,users:null===(s=F.RBAC)||void 0===s?void 0:s.users,roles:null===(t=F.RBAC)||void 0===t?void 0:t.roles}),[eo,eu]=(0,a.useState)(F.project_items||[]),[em,{loading:eh}]=(0,n.D)(d.b2),[ex]=(0,n.D)(d.Yr),[ep,ej]=(0,a.useState)(!1),{data:ev,loading:ef,refetch:eg}=(0,l.aM)(d.GJ,{variables:{page:1,limit:50,filters:[{project:{eq:F.id}}]}}),{data:ey,loading:eN}=(0,l.aM)(d.ym,{variables:{page:1,limit:100,filters:[],sort:{field:"updatedAt",direction:"DESC"}}}),ew=(0,c.x)(),[eb,{loading:ek}]=(0,n.D)(d.fB),[eC,{loading:eS}]=(0,n.D)(d.MU),[eZ,{loading:e_}]=(0,n.D)(d.S9),eM=(null==ev?void 0:null===(f=ev.agent_sessionsPagination)||void 0===f?void 0:f.items)||[],eA=(null==ey?void 0:null===(R=ey.agentsPagination)||void 0===R?void 0:R.items)||[],eP=a.useMemo(()=>G?eA.filter(e=>e.name.toLowerCase().includes(G.toLowerCase())):eA,[eA,G]),eE=async()=>{if(!er.name.trim()){el({title:"Validation Error",description:"Project name is required.",variant:"destructive"});return}try{await em({variables:{id:F.id,input:{name:er.name.trim(),description:er.description.trim()||null,custom_instructions:er.custom_instructions.trim()||null}}}),el({title:"Success",description:"Project updated successfully!"}),X(!1)}catch(e){console.error("Error updating project:",e),el({title:"Error",description:e.message||"Failed to update project. Please try again.",variant:"destructive"})}},eI=async e=>{try{var s,t,i;let a=await eb({variables:{title:"New session with ".concat(e.name),agent:e.id,project:F.id,rights_mode:"private"}}),r=null===(i=a.data)||void 0===i?void 0:null===(t=i.agent_sessionsCreateOne)||void 0===t?void 0:null===(s=t.item)||void 0===s?void 0:s.id;r&&(el({title:"Success",description:"Session created successfully! Sessions started in a project are accessible for viewing by project members."}),K(!1),J(""),et.push("/chat/".concat(e.id,"/").concat(r)))}catch(e){console.error("Error creating session:",e),el({title:"Error",description:e.message||"Failed to create session. Please try again.",variant:"destructive"})}},eD=async()=>{try{ej(!0),ei.deleteItems&&await Promise.all(eo.map(async e=>{var s,t;let i=e.split("/")[0],a=e.split("/")[1];if(!i||!a)return;let{data:r}=await ew.mutate({mutation:(0,d.mN)(i,[]),variables:{id:a}});if(null===(s=r["".concat(i,"_itemsRemoveOneById")])||void 0===s?void 0:s.s3key)try{await q.QZ.delete(null===(t=r["".concat(i,"_itemsRemoveOneById")])||void 0===t?void 0:t.s3key)}catch(e){console.error("[EXULU] Error deleting file from s3 storage:",e)}})),await Promise.all(eM.map(async e=>{ei.deleteSessions?await eZ({variables:{id:e.id}}):await eC({variables:{id:e.id,project:null}})})),await ex({variables:{id:F.id}}),el({title:"Success",description:'Project "'.concat(F.name,'" has been deleted successfully.')}),$(!1),ej(!1),et.push("/projects")}catch(e){ej(!1),console.error("Error deleting project:",e),el({title:"Error",description:e.message||"Failed to delete project. Please try again.",variant:"destructive"})}};return(0,i.jsxs)("div",{className:"flex-1 p-6 mt-20",children:[(0,i.jsx)("div",{className:"max-w-5xl mx-auto space-y-6",children:(0,i.jsxs)("div",{className:"flex gap-6 h-full",children:[(0,i.jsxs)("div",{className:"w-80 space-y-4",children:[(0,i.jsx)(x.Zb,{children:(0,i.jsx)(x.aY,{className:"p-4",children:(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("h3",{className:"font-semibold text-lg",children:F.name}),(0,i.jsx)("p",{className:"text-muted-foreground text-sm leading-relaxed",children:F.description||"No description provided."})]})})}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsxs)(o.z,{variant:"overview"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("overview"),children:[(0,i.jsx)(g,{className:"h-4 w-4 mr-2"}),"Project information"]}),(0,i.jsxs)(o.z,{variant:"context"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("context"),children:[(0,i.jsx)(y,{className:"h-4 w-4 mr-2"}),"Project files"]}),(0,i.jsxs)(o.z,{variant:"sessions"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("sessions"),children:[(0,i.jsx)(N.Z,{className:"h-4 w-4 mr-2"}),"Project sessions"]}),(0,i.jsxs)(o.z,{variant:"access"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("access"),children:[(0,i.jsx)(w.Z,{className:"h-4 w-4 mr-2"}),"Access control"]}),(0,i.jsxs)(o.z,{variant:"settings"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("settings"),children:[(0,i.jsx)(g,{className:"h-4 w-4 mr-2"}),"Project settings"]})]})]}),(0,i.jsxs)("div",{className:"flex-1",children:["overview"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project Information"}),(0,i.jsx)(x.SZ,{children:"Basic information about this project"})]}),(0,i.jsxs)(x.aY,{className:"space-y-4",children:[(0,i.jsx)("div",{className:"grid gap-4",children:(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"name",children:"Project Name"}),Y?(0,i.jsx)(u.I,{id:"name",value:er.name,onChange:e=>en({...er,name:e.target.value})}):(0,i.jsx)("p",{className:"text-sm",children:F.name})]})}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"description",children:"Description"}),Y?(0,i.jsx)(h.g,{id:"description",value:er.description,onChange:e=>en({...er,description:e.target.value}),rows:3}):(0,i.jsx)("p",{className:"text-sm",children:F.description||"No description provided"})]}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"instructions",children:"Custom Instructions"}),Y?(0,i.jsx)(h.g,{id:"instructions",value:er.custom_instructions,onChange:e=>en({...er,custom_instructions:e.target.value}),rows:4,placeholder:"Enter custom instructions for sessions in this project..."}):(0,i.jsx)("p",{className:"text-sm",children:F.custom_instructions||"No custom instructions set"})]})]}),(0,i.jsx)(x.eW,{children:(0,i.jsx)("div",{className:"flex items-center justify-between",children:(0,i.jsx)("div",{className:"flex gap-2",children:Y?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.z,{variant:"outline",onClick:()=>{F&&en({name:F.name||"",description:F.description||"",custom_instructions:F.custom_instructions||""}),X(!1)},children:"Cancel"}),(0,i.jsxs)(o.z,{onClick:eE,children:[(0,i.jsx)("span",{children:"Save changes"}),eh&&(0,i.jsx)(I.g,{className:"mr-2"})]})]}):(0,i.jsxs)(o.z,{variant:"outline",onClick:()=>X(!0),children:[(0,i.jsx)(b.Z,{className:"h-4 w-4 mr-2"}),"Edit"]})})})})]})}),"context"===Q&&(0,i.jsx)("div",{className:"space-y-6 w-full",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project context items"}),(0,i.jsx)(x.SZ,{children:"Items that provide context for sessions in this project (max 15 items). Note that different agents may have different file types supported."})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsx)(L,{onConfirm:e=>{let s=[...eo,...e.map(e=>"".concat(e.context.id,"/").concat(e.item.id))];console.log("update",s),eu(s),em({variables:{id:F.id,input:{project_items:s}}})}}),(0,i.jsx)("div",{className:"space-y-2",children:(0,i.jsxs)("div",{className:"space-y-2",children:[(null==eo?void 0:eo.length)===0&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(y,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"No items added to the project context yet."})]}),(0,i.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-2 gap-3",children:null==eo?void 0:eo.map(e=>(0,i.jsx)(U,{gid:e,onRemove:e=>{let s=eo.filter(s=>s!==e);eu(s),em({variables:{id:F.id,input:{project_items:s}}})}},e))})]})})]})})]})}),"sessions"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project sessions"}),(0,i.jsx)(x.SZ,{children:"Sessions associated with this project"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)(o.z,{onClick:()=>{K(!0)},className:"w-full",variant:"outline",children:[(0,i.jsx)(k.Z,{className:"h-4 w-4 mr-2"}),"Start new session"]}),(0,i.jsx)("div",{className:"space-y-2",children:eM.map(e=>{let s=(0,D.I)(e,es);return(0,i.jsxs)("div",{className:"flex items-center justify-between p-3 border rounded-lg",children:[(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)(N.Z,{className:"h-4 w-4"}),(0,i.jsx)("div",{children:(0,i.jsx)(z.default,{href:"/chat/".concat(e.agent,"/").concat(e.id),children:(0,i.jsx)("p",{className:"font-medium max-w-[80%] truncate",children:e.title})})})]}),(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsxs)(T.u,{children:[(0,i.jsx)(T.aJ,{asChild:!0,children:(0,i.jsx)(o.z,{disabled:!s||eS,variant:"ghost",size:"sm",onClick:()=>{eS||(eC({variables:{id:e.id,project:null}}),eg())},children:(0,i.jsx)(C,{className:"h-4 w-4"})})}),(0,i.jsx)(T._v,{children:(0,i.jsx)("p",{children:"Remove session from project."})})]}),(0,i.jsxs)(T.u,{children:[(0,i.jsx)(T.aJ,{asChild:!0,children:(0,i.jsx)(o.z,{disabled:!s||e_,variant:"ghost",size:"sm",onClick:()=>{e_||(eZ({variables:{id:e.id}}),eg())},children:(0,i.jsx)(S.Z,{className:"h-4 w-4"})})}),(0,i.jsx)(T._v,{children:(0,i.jsx)("p",{children:"Delete session completely."})})]})]})]},e.id)})}),0===eM.length&&!ef&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(N.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"No sessions found"})]}),ef&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(N.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"Loading sessions..."})]})]})})]})}),"access"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Access Control"}),(0,i.jsx)(x.SZ,{children:"Control who can access this project"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsx)(A.P,{allowedModes:["private","users","roles"],initialRightsMode:F.rights_mode||"private",initialUsers:null===(B=F.RBAC)||void 0===B?void 0:B.users,initialRoles:null===(V=F.RBAC)||void 0===V?void 0:V.roles,onChange:(e,s,t)=>{ed({rights_mode:e,users:s,roles:t})}})}),(0,i.jsx)(x.eW,{children:(0,i.jsxs)(o.z,{onClick:()=>{em({variables:{id:F.id,input:{rights_mode:ec.rights_mode,RBAC:{users:ec.users,roles:ec.roles}}}})},children:[(0,i.jsx)("span",{children:"Save access rights"}),eh&&(0,i.jsx)(I.g,{className:"ml-2"})]})})]})}),"settings"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Danger Zone"}),(0,i.jsx)(x.SZ,{children:"Permanently delete this project and all associated data"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"flex items-start gap-3 p-4 border border-destructive/20 rounded-lg bg-destructive/5",children:[(0,i.jsx)(Z.Z,{className:"h-5 w-5 text-destructive mt-0.5"}),(0,i.jsxs)("div",{className:"flex-1",children:[(0,i.jsx)("h4",{className:"font-medium text-destructive",children:"Delete Project"}),(0,i.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:"This action cannot be undone. This will permanently delete the project and optionally remove all associated context files and sessions."})]})]}),(0,i.jsxs)(j.Vq,{open:W,onOpenChange:$,children:[(0,i.jsx)(j.hg,{asChild:!0,children:(0,i.jsxs)(o.z,{variant:"destructive",children:[(0,i.jsx)(S.Z,{className:"h-4 w-4 mr-2"}),"Delete Project"]})}),(0,i.jsxs)(j.cZ,{className:"sm:max-w-md",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Delete Project"}),(0,i.jsxs)(j.Be,{children:['Are you sure you want to delete "',F.name,'"? This action cannot be undone.']})]}),(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,i.jsx)(v.X,{id:"delete-items",checked:ei.deleteItems,onCheckedChange:e=>ea(s=>({...s,deleteItems:e}))}),(0,i.jsxs)("label",{htmlFor:"delete-items",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:["Also delete all context items (",null==eo?void 0:eo.length," items)"]})]}),(0,i.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,i.jsx)(v.X,{id:"delete-sessions",checked:ei.deleteSessions,onCheckedChange:e=>ea(s=>({...s,deleteSessions:e}))}),(0,i.jsxs)("label",{htmlFor:"delete-sessions",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:["Also delete all sessions (",eM.length," sessions)"]})]}),(ei.deleteItems||ei.deleteSessions)&&(0,i.jsxs)("div",{className:"flex items-start gap-2 p-3 border border-amber-200 rounded-lg bg-amber-50",children:[(0,i.jsx)(Z.Z,{className:"h-4 w-4 text-amber-600 mt-0.5"}),(0,i.jsx)("p",{className:"text-sm text-amber-800",children:ei.deleteItems&&ei.deleteSessions?"All context items and sessions will be permanently deleted.":ei.deleteItems?"All context items will be permanently deleted.":"All sessions will be permanently deleted."})]})]}),(0,i.jsxs)(j.cN,{className:"sm:justify-start",children:[(0,i.jsx)(o.z,{variant:"outline",onClick:()=>$(!1),children:"Cancel"}),(0,i.jsxs)(o.z,{disabled:ep,variant:"destructive",onClick:eD,children:[ep?(0,i.jsx)(I.g,{className:"mr-2 w-4 h-4"}):(0,i.jsx)(S.Z,{className:"h-4 w-4 mr-2"}),"Delete Project"]})]})]})]})]})})]})})]})]})}),(0,i.jsx)(j.Vq,{open:H,onOpenChange:K,children:(0,i.jsxs)(j.cZ,{className:"sm:max-w-4xl",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Select an Agent"}),(0,i.jsx)(j.Be,{children:"Choose an agent to start a new chat session. Sessions started in a project are accessible for viewing by project members."})]}),(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"relative",children:[(0,i.jsx)(_.Z,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,i.jsx)(u.I,{placeholder:"Search agents...",value:G,onChange:e=>J(e.target.value),className:"pl-10"})]}),(0,i.jsx)("div",{className:"max-h-96 overflow-y-auto",children:eN?(0,i.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[...Array(6)].map((e,s)=>(0,i.jsx)("div",{className:"p-4 border rounded-lg",children:(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)(P.O,{className:"h-12 w-12 rounded-full"}),(0,i.jsxs)("div",{className:"space-y-2 flex-1",children:[(0,i.jsx)(P.O,{className:"h-4 w-3/4"}),(0,i.jsx)(P.O,{className:"h-3 w-1/2"})]})]})},s))}):eP.length>0?(0,i.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:eP.map(e=>(0,i.jsx)("div",{className:"p-4 border rounded-lg hover:border-primary cursor-pointer transition-colors",onClick:()=>eI(e),children:(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)("div",{className:"h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center",children:e.image?(0,i.jsx)("img",{src:e.image,alt:e.name,className:"h-12 w-12 rounded-full object-cover"}):(0,i.jsx)(M.Z,{className:"h-6 w-6"})}),(0,i.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,i.jsx)("p",{className:"font-medium truncate",children:e.name}),(0,i.jsx)("p",{className:"text-sm text-muted-foreground truncate",children:e.description||"".concat(e.type," agent")}),(0,i.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,i.jsx)(p.C,{variant:e.active?"default":"secondary",className:"text-xs",children:e.active?"Active":"Inactive"}),(0,i.jsx)(p.C,{variant:"outline",className:"text-xs",children:e.type})]})]})]})},e.id))}):(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(M.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:G?"No agents found matching your search":"No agents available"})]})})]}),(0,i.jsx)(j.cN,{children:(0,i.jsx)(o.z,{variant:"outline",onClick:()=>K(!1),children:"Cancel"})})]})})]})}function U(e){var s;let{gid:t,onRemove:a}=e,r=t.split("/")[0],n=t.split("/")[1];if(!r||!n)return null;let{data:c,loading:u}=(0,l.aM)((0,d.A1)(r,[]),{variables:{id:n}});if(u)return(0,i.jsx)(x.Zb,{className:"group relative overflow-hidden",children:(0,i.jsxs)(x.aY,{className:"p-4",children:[(0,i.jsx)(P.O,{className:"h-4 w-3/4 mb-2"}),(0,i.jsx)(P.O,{className:"h-3 w-full"}),(0,i.jsx)(P.O,{className:"h-3 w-2/3 mt-1"})]})});let m=null==c?void 0:c[r+"_itemsById"];return m?(0,i.jsx)(x.Zb,{className:"group relative overflow-hidden hover:shadow-md transition-all duration-200 hover:border-primary/50",children:(0,i.jsxs)(x.aY,{className:"p-4",children:[(0,i.jsx)("div",{className:"flex items-start justify-between mb-3",children:(0,i.jsx)(o.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 opacity-0 group-hover:opacity-100 transition-opacity",onClick:e=>{e.stopPropagation(),a(t)},children:(0,i.jsx)(S.Z,{className:"h-4 w-4 text-destructive"})})}),(0,i.jsx)("div",{className:"mb-2",children:(0,i.jsx)("h4",{className:"font-medium text-sm line-clamp-2 min-h-[2.5rem]",children:m.name||"Untitled"})}),m.description&&(0,i.jsx)("p",{className:"text-xs text-muted-foreground line-clamp-2 mb-3 min-h-[2.5rem]",children:m.description}),(0,i.jsxs)("div",{className:"space-y-2 pt-2 border-t",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[(0,i.jsx)("span",{className:"truncate",children:r.replace(/_/g," ")}),m.updatedAt&&(0,i.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:(s=m.updatedAt)?new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):null})]}),m.textlength&&(0,i.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,i.jsxs)("span",{children:[m.textlength.toLocaleString()," chars"]}),m.chunks&&m.chunks.length>0&&(0,i.jsxs)("span",{className:"text-xs",children:["• ",m.chunks.length," chunks"]})]})]})]})}):null}var X=t(65613),W=t(20653);function $(){let e=(0,r.useParams)(),s=null==e?void 0:e.project,{data:t,loading:a,error:n}=(0,l.aM)(d.jL,{variables:{id:s}});return a?(0,i.jsx)("div",{children:(0,i.jsx)(P.O,{className:"w-full h-full"})}):n?(0,i.jsxs)(X.bZ,{variant:"destructive",children:[(0,i.jsx)(W.LPM,{className:"size-4"}),(0,i.jsx)(X.Cd,{children:"Error"}),(0,i.jsx)(X.X,{children:"Error loading project."})]}):(null==t?void 0:t.projectById)?(0,i.jsx)(Y,{project:t.projectById}):(0,i.jsxs)(X.bZ,{variant:"destructive",children:[(0,i.jsx)(W.LPM,{className:"size-4"}),(0,i.jsx)(X.Cd,{children:"Error"}),(0,i.jsx)(X.X,{children:"Project not found."})]})}},65613:function(e,s,t){"use strict";t.d(s,{Cd:function(){return d},X:function(){return o},bZ:function(){return c}});var i=t(57437),a=t(90535),r=t(2265),n=t(94508);let l=(0,a.j)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",info:"border-info/50 text-info dark:border-info [&>svg]:text-info"}},defaultVariants:{variant:"default"}}),c=r.forwardRef((e,s)=>{let{className:t,variant:a,...r}=e;return(0,i.jsx)("div",{ref:s,role:"alert",className:(0,n.cn)(l({variant:a}),t),...r})});c.displayName="Alert";let d=r.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,i.jsx)("h5",{ref:s,className:(0,n.cn)("mb-1 font-medium leading-none tracking-tight",t),...a})});d.displayName="AlertTitle";let o=r.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,i.jsx)("div",{ref:s,className:(0,n.cn)("text-sm [&_p]:leading-relaxed",t),...a})});o.displayName="AlertDescription"},19060:function(e,s,t){"use strict";t.d(s,{X:function(){return c}});var i=t(57437),a=t(9270),r=t(30401),n=t(2265),l=t(94508);let c=n.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,i.jsx)(a.fC,{ref:s,className:(0,l.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",t),...n,children:(0,i.jsx)(a.z$,{className:(0,l.cn)("flex items-center justify-center text-current"),children:(0,i.jsx)(r.Z,{className:"size-4"})})})});c.displayName=a.fC.displayName},10492:function(e,s,t){"use strict";t.d(s,{g:function(){return r}});var i=t(57437),a=t(94508);let r=e=>{let{className:s}=e;return(0,i.jsxs)("svg",{"aria-hidden":"true",role:"status",className:(0,a.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,i.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,i.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"})]})}},77992:function(e,s,t){"use strict";t.d(s,{Am:function(){return u},pm:function(){return m}});var i=t(2265);let a=0,r=new Map,n=e=>{if(r.has(e))return;let s=setTimeout(()=>{r.delete(e),o({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,s)},l=(e,s)=>{switch(s.type){case"ADD_TOAST":return{...e,toasts:[s.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===s.toast.id?{...e,...s.toast}:e)};case"DISMISS_TOAST":{let{toastId:t}=s;return t?n(t):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===t||void 0===t?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===s.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==s.toastId)}}},c=[],d={toasts:[]};function o(e){d=l(d,e),c.forEach(e=>{e(d)})}function u(e){let{...s}=e,t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),i=()=>o({type:"DISMISS_TOAST",toastId:t});return o({type:"ADD_TOAST",toast:{...s,id:t,open:!0,onOpenChange:e=>{e||i()}}}),{id:t,dismiss:i,update:e=>o({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function m(){let[e,s]=i.useState(d);return i.useEffect(()=>(c.push(s),()=>{let e=c.indexOf(s);e>-1&&c.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>o({type:"DISMISS_TOAST",toastId:e})}}},36399:function(e,s,t){"use strict";t.d(s,{t:function(){return r}});var i=t(27689),a=t(7211);let r=()=>(0,a.aM)(i.uw,{variables:{limit:20}})},87393:function(e,s,t){"use strict";t.d(s,{I:function(){return i}});let i=(e,s)=>{var t,i,a,r,n,l;let c="private"===e.rights_mode,d="public"===e.rights_mode,o="users"===e.rights_mode,u="roles"===e.rights_mode,m=s.super_admin,h=e.created_by===s.id.toString(),x=!1;return c&&h&&(x=!0),d&&(x=!0),o&&(x=(null===(a=e.RBAC)||void 0===a?void 0:null===(i=a.users)||void 0===i?void 0:null===(t=i.find(e=>e.id===s.id))||void 0===t?void 0:t.rights)==="write"),u&&(x=(null===(l=e.RBAC)||void 0===l?void 0:null===(n=l.roles)||void 0===n?void 0:null===(r=n.find(e=>{var t;return e.id===(null===(t=s.role)||void 0===t?void 0:t.id)}))||void 0===r?void 0:r.rights)==="write"),m&&(x=!0),x}},63639:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("AlertTriangle",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"c3ski4"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},24156:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("ChevronsUpDown",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]])},29202:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},66337:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},53417:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},45675:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Pencil",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},99397:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},88906:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Shield",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}]])},9270:function(e,s,t){"use strict";t.d(s,{fC:function(){return N},z$:function(){return b}});var i=t(2265),a=t(98575),r=t(73966),n=t(6741),l=t(80886),c=t(6718),d=t(90420),o=t(71599),u=t(66840),m=t(57437),h="Checkbox",[x,p]=(0,r.b)(h),[j,v]=x(h);function f(e){let{__scopeCheckbox:s,checked:t,children:a,defaultChecked:r,disabled:n,form:c,name:d,onCheckedChange:o,required:u,value:x="on",internal_do_not_use_render:p}=e,[v,f]=(0,l.T)({prop:t,defaultProp:null!=r&&r,onChange:o,caller:h}),[g,y]=i.useState(null),[N,w]=i.useState(null),b=i.useRef(!1),k=!g||!!c||!!g.closest("form"),C={checked:v,disabled:n,setChecked:f,control:g,setControl:y,name:d,form:c,value:x,hasConsumerStoppedPropagationRef:b,required:u,defaultChecked:!S(r)&&r,isFormControl:k,bubbleInput:N,setBubbleInput:w};return(0,m.jsx)(j,{scope:s,...C,children:"function"==typeof p?p(C):a})}var g="CheckboxTrigger",y=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,onKeyDown:r,onClick:l,...c}=e,{control:d,value:o,disabled:h,checked:x,required:p,setControl:j,setChecked:f,hasConsumerStoppedPropagationRef:y,isFormControl:N,bubbleInput:w}=v(g,t),b=(0,a.e)(s,j),k=i.useRef(x);return i.useEffect(()=>{let e=null==d?void 0:d.form;if(e){let s=()=>f(k.current);return e.addEventListener("reset",s),()=>e.removeEventListener("reset",s)}},[d,f]),(0,m.jsx)(u.WV.button,{type:"button",role:"checkbox","aria-checked":S(x)?"mixed":x,"aria-required":p,"data-state":Z(x),"data-disabled":h?"":void 0,disabled:h,value:o,...c,ref:b,onKeyDown:(0,n.M)(r,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,n.M)(l,e=>{f(e=>!!S(e)||!e),w&&N&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())})})});y.displayName=g;var N=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,name:i,checked:a,defaultChecked:r,required:n,disabled:l,value:c,onCheckedChange:d,form:o,...u}=e;return(0,m.jsx)(f,{__scopeCheckbox:t,checked:a,defaultChecked:r,disabled:l,required:n,onCheckedChange:d,name:i,form:o,value:c,internal_do_not_use_render:e=>{let{isFormControl:i}=e;return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(y,{...u,ref:s,__scopeCheckbox:t}),i&&(0,m.jsx)(C,{__scopeCheckbox:t})]})}})});N.displayName=h;var w="CheckboxIndicator",b=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,forceMount:i,...a}=e,r=v(w,t);return(0,m.jsx)(o.z,{present:i||S(r.checked)||!0===r.checked,children:(0,m.jsx)(u.WV.span,{"data-state":Z(r.checked),"data-disabled":r.disabled?"":void 0,...a,ref:s,style:{pointerEvents:"none",...e.style}})})});b.displayName=w;var k="CheckboxBubbleInput",C=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,...r}=e,{control:n,hasConsumerStoppedPropagationRef:l,checked:o,defaultChecked:h,required:x,disabled:p,name:j,value:f,form:g,bubbleInput:y,setBubbleInput:N}=v(k,t),w=(0,a.e)(s,N),b=(0,c.D)(o),C=(0,d.t)(n);i.useEffect(()=>{if(!y)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,s=!l.current;if(b!==o&&e){let t=new Event("click",{bubbles:s});y.indeterminate=S(o),e.call(y,!S(o)&&o),y.dispatchEvent(t)}},[y,b,o,l]);let Z=i.useRef(!S(o)&&o);return(0,m.jsx)(u.WV.input,{type:"checkbox","aria-hidden":!0,defaultChecked:null!=h?h:Z.current,required:x,disabled:p,name:j,value:f,form:g,...r,tabIndex:-1,ref:w,style:{...r.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function S(e){return"indeterminate"===e}function Z(e){return S(e)?"indeterminate":e?"checked":"unchecked"}C.displayName=k},6394:function(e,s,t){"use strict";t.d(s,{f:function(){return l}});var i=t(2265),a=t(66840),r=t(57437),n=i.forwardRef((e,s)=>(0,r.jsx)(a.WV.label,{...e,ref:s,onMouseDown:s=>{var t;s.target.closest("button, input, select, textarea")||(null===(t=e.onMouseDown)||void 0===t||t.call(e,s),!s.defaultPrevented&&s.detail>1&&s.preventDefault())}}));n.displayName="Label";var l=n}},function(e){e.O(0,[8310,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,605,4567,1206,5338,1785,5110,3171,6373,3832,8030,2971,2117,1744],function(){return e(e.s=62839)}),_N_E=e.O()}]);
|
|
2
|
+
//# sourceMappingURL=page-f04fd5291a1ef7b1.js.map
|