promptfoo 0.85.1 → 0.86.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/drizzle/0005_silky_millenium_guard.sql +2 -0
  2. package/dist/drizzle/meta/0005_snapshot.json +427 -0
  3. package/dist/drizzle/meta/_journal.json +7 -0
  4. package/dist/package.json +8 -2
  5. package/dist/src/commands/view.d.ts.map +1 -1
  6. package/dist/src/commands/view.js +2 -3
  7. package/dist/src/commands/view.js.map +1 -1
  8. package/dist/src/constants.d.ts +2 -2
  9. package/dist/src/constants.d.ts.map +1 -1
  10. package/dist/src/constants.js +5 -5
  11. package/dist/src/constants.js.map +1 -1
  12. package/dist/src/database/tables.d.ts.map +1 -1
  13. package/dist/src/database/tables.js +2 -1
  14. package/dist/src/database/tables.js.map +1 -1
  15. package/dist/src/feedback.d.ts.map +1 -1
  16. package/dist/src/feedback.js +1 -2
  17. package/dist/src/feedback.js.map +1 -1
  18. package/dist/src/fetch.d.ts.map +1 -1
  19. package/dist/src/fetch.js +14 -12
  20. package/dist/src/fetch.js.map +1 -1
  21. package/dist/src/redteam/constants.d.ts +5 -1
  22. package/dist/src/redteam/constants.d.ts.map +1 -1
  23. package/dist/src/redteam/constants.js +45 -1
  24. package/dist/src/redteam/constants.js.map +1 -1
  25. package/dist/src/redteam/plugins/base.d.ts.map +1 -1
  26. package/dist/src/redteam/plugins/base.js +12 -12
  27. package/dist/src/redteam/plugins/base.js.map +1 -1
  28. package/dist/src/redteam/util.d.ts +7 -0
  29. package/dist/src/redteam/util.d.ts.map +1 -1
  30. package/dist/src/redteam/util.js +8 -1
  31. package/dist/src/redteam/util.js.map +1 -1
  32. package/dist/src/server/index.d.ts +2 -0
  33. package/dist/src/server/index.d.ts.map +1 -0
  34. package/dist/src/server/index.js +6 -0
  35. package/dist/src/server/index.js.map +1 -0
  36. package/dist/src/server/server.d.ts +7 -0
  37. package/dist/src/server/server.d.ts.map +1 -0
  38. package/dist/src/{web → server}/server.js +15 -7
  39. package/dist/src/server/server.js.map +1 -0
  40. package/dist/src/share.js +2 -2
  41. package/dist/src/share.js.map +1 -1
  42. package/dist/src/web/nextui/404/index.html +1 -1
  43. package/dist/src/web/nextui/404.html +1 -1
  44. package/dist/src/web/nextui/_next/static/chunks/113-c691bf7d3a37d865.js +1 -0
  45. package/dist/src/web/nextui/_next/static/chunks/{178-fbe9007ed9d0d1f2.js → 167-744b9f585d2d97f7.js} +3 -3
  46. package/dist/src/web/nextui/_next/static/chunks/189-f9d565af9a2b91cb.js +1 -0
  47. package/dist/src/web/nextui/_next/static/chunks/{19-cbf79a2b4aeaad20.js → 285-1e2a6158b5f0e918.js} +4 -4
  48. package/dist/src/web/nextui/_next/static/chunks/417-cbf95fe2bc362650.js +2 -0
  49. package/dist/src/web/nextui/_next/static/chunks/461-77257ab6b1bb209d.js +1 -0
  50. package/dist/src/web/nextui/_next/static/chunks/646-62a1d1d5b397d18f.js +28 -0
  51. package/dist/src/web/nextui/_next/static/chunks/782-910eb0e09b818816.js +35 -0
  52. package/dist/src/web/nextui/_next/static/chunks/86-77b7a9056116d4d0.js +1 -0
  53. package/dist/src/web/nextui/_next/static/chunks/88-f3a7a858d5f4e9a0.js +17 -0
  54. package/dist/src/web/nextui/_next/static/chunks/906-70c43cd62b2efac1.js +97 -0
  55. package/dist/src/web/nextui/_next/static/chunks/{972-cbb6d905c3a19e41.js → 972-15d1ab608a24eebf.js} +1 -1
  56. package/dist/src/web/nextui/_next/static/chunks/app/auth/login/page-c1dbf0abc580796f.js +1 -0
  57. package/dist/src/web/nextui/_next/static/chunks/app/auth/signup/page-93b80ab19bdaf2cc.js +1 -0
  58. package/dist/src/web/nextui/_next/static/chunks/app/datasets/page-17e6d3f57945f88a.js +1 -0
  59. package/dist/src/web/nextui/_next/static/chunks/app/eval/[id]/{page-0d9a5166ca2448c5.js → page-1e54704d75f36e25.js} +1 -1
  60. package/dist/src/web/nextui/_next/static/chunks/app/eval/page-5295461188ef9b43.js +1 -0
  61. package/dist/src/web/nextui/_next/static/chunks/app/layout-2020c5f7a3d5d614.js +1 -0
  62. package/dist/src/web/nextui/_next/static/chunks/app/page-81e3b8fee37eaf67.js +1 -0
  63. package/dist/src/web/nextui/_next/static/chunks/app/progress/page-ac2f99c11e76f5a5.js +1 -0
  64. package/dist/src/web/nextui/_next/static/chunks/app/prompts/page-296c32f480e84a57.js +1 -0
  65. package/dist/src/web/nextui/_next/static/chunks/app/report/page-734a2a4a67b756c4.js +1 -0
  66. package/dist/src/web/nextui/_next/static/chunks/app/setup/page-35c95dd67114a045.js +1 -0
  67. package/dist/src/web/nextui/_next/static/chunks/main-6b1ff2291a752212.js +1 -0
  68. package/dist/src/web/nextui/_next/static/chunks/{webpack-2bde9ee952171572.js → webpack-452ae8c28379ed4c.js} +1 -1
  69. package/dist/src/web/nextui/_next/static/css/4d76d7cdd9492e1d.css +1 -0
  70. package/dist/src/web/nextui/auth/login/index.html +1 -1
  71. package/dist/src/web/nextui/auth/login/index.txt +5 -5
  72. package/dist/src/web/nextui/auth/signup/index.html +1 -1
  73. package/dist/src/web/nextui/auth/signup/index.txt +5 -5
  74. package/dist/src/web/nextui/datasets/index.html +1 -1
  75. package/dist/src/web/nextui/datasets/index.txt +5 -5
  76. package/dist/src/web/nextui/eval/index.html +1 -1
  77. package/dist/src/web/nextui/eval/index.txt +5 -5
  78. package/dist/src/web/nextui/index.html +1 -1
  79. package/dist/src/web/nextui/index.txt +4 -4
  80. package/dist/src/web/nextui/progress/index.html +1 -1
  81. package/dist/src/web/nextui/progress/index.txt +5 -5
  82. package/dist/src/web/nextui/prompts/index.html +1 -1
  83. package/dist/src/web/nextui/prompts/index.txt +5 -5
  84. package/dist/src/web/nextui/report/index.html +1 -1
  85. package/dist/src/web/nextui/report/index.txt +7 -7
  86. package/dist/src/web/nextui/setup/index.html +1 -1
  87. package/dist/src/web/nextui/setup/index.txt +6 -6
  88. package/dist/test/cache.test.js +1 -0
  89. package/dist/test/cache.test.js.map +1 -1
  90. package/dist/test/providers.test.js +28 -0
  91. package/dist/test/providers.test.js.map +1 -1
  92. package/dist/test/rateLimit.test.d.ts +2 -0
  93. package/dist/test/rateLimit.test.d.ts.map +1 -0
  94. package/dist/test/rateLimit.test.js +104 -0
  95. package/dist/test/rateLimit.test.js.map +1 -0
  96. package/dist/test/redteam/plugins/base.test.js +4 -0
  97. package/dist/test/redteam/plugins/base.test.js.map +1 -1
  98. package/package.json +8 -2
  99. package/dist/src/web/nextui/_next/static/chunks/148-1c1aa4563e769657.js +0 -97
  100. package/dist/src/web/nextui/_next/static/chunks/193-fbb29b23a7b3df82.js +0 -1
  101. package/dist/src/web/nextui/_next/static/chunks/258-4163a0bce35a4180.js +0 -1
  102. package/dist/src/web/nextui/_next/static/chunks/264-f97b27096cb02f29.js +0 -17
  103. package/dist/src/web/nextui/_next/static/chunks/276-b1a73ab92831c2f8.js +0 -1
  104. package/dist/src/web/nextui/_next/static/chunks/325-07eac9e397582e87.js +0 -8
  105. package/dist/src/web/nextui/_next/static/chunks/391-9f6f260597339469.js +0 -2
  106. package/dist/src/web/nextui/_next/static/chunks/415-f4cc6df99e1d251e.js +0 -1
  107. package/dist/src/web/nextui/_next/static/chunks/459-2e6701613d682903.js +0 -1
  108. package/dist/src/web/nextui/_next/static/chunks/65-d3958feb29430005.js +0 -1
  109. package/dist/src/web/nextui/_next/static/chunks/654-7ef84f69b226e6ab.js +0 -1
  110. package/dist/src/web/nextui/_next/static/chunks/734-d2ca9e7d051c494c.js +0 -28
  111. package/dist/src/web/nextui/_next/static/chunks/app/auth/login/page-252a14bf379f74d0.js +0 -1
  112. package/dist/src/web/nextui/_next/static/chunks/app/auth/signup/page-f98e3b4d3b58f5f5.js +0 -1
  113. package/dist/src/web/nextui/_next/static/chunks/app/datasets/page-1fa704bf80a58a79.js +0 -1
  114. package/dist/src/web/nextui/_next/static/chunks/app/eval/page-cf4a91cf1554224c.js +0 -1
  115. package/dist/src/web/nextui/_next/static/chunks/app/layout-d88590a8fcba3974.js +0 -1
  116. package/dist/src/web/nextui/_next/static/chunks/app/page-7e8faab5d212f727.js +0 -1
  117. package/dist/src/web/nextui/_next/static/chunks/app/progress/page-7d99e97219b86a6b.js +0 -1
  118. package/dist/src/web/nextui/_next/static/chunks/app/prompts/page-70ba6f08425e6551.js +0 -1
  119. package/dist/src/web/nextui/_next/static/chunks/app/report/page-56a1a67c5d6e0af8.js +0 -1
  120. package/dist/src/web/nextui/_next/static/chunks/app/setup/page-1966e3fc2c36f287.js +0 -1
  121. package/dist/src/web/nextui/_next/static/chunks/main-853e5508e37bbe4c.js +0 -1
  122. package/dist/src/web/nextui/_next/static/css/ed73533d059fd179.css +0 -1
  123. package/dist/src/web/nextui/api/config +0 -1
  124. package/dist/src/web/nextui/api/datasets +0 -1
  125. package/dist/src/web/nextui/api/progress +0 -1
  126. package/dist/src/web/nextui/api/prompts +0 -1
  127. package/dist/src/web/nextui/api/results +0 -1
  128. package/dist/src/web/server.d.ts +0 -7
  129. package/dist/src/web/server.d.ts.map +0 -1
  130. package/dist/src/web/server.js.map +0 -1
  131. /package/dist/src/web/nextui/_next/static/{B1WB5xk526w5umoO8Sy7u → esmgjQylizTs69qxSTyX7}/_buildManifest.js +0 -0
  132. /package/dist/src/web/nextui/_next/static/{B1WB5xk526w5umoO8Sy7u → esmgjQylizTs69qxSTyX7}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[86],{49532:function(e,t,n){"use strict";n.d(t,{t:function(){return l}});var s=n(82911);async function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{apiBaseUrl:n}=s.Z.getState();return fetch("".concat(n,"/api").concat(e),t)}},82086:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return ti}});var s=n(24004),l=n(14978),a=n(49532);let r=(0,l.createContext)(void 0),i=e=>{let{children:t}=e,[n,a]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{let e=e=>{"Shift"===e.key&&a(!0)},t=e=>{"Shift"===e.key&&a(!1)};return window.addEventListener("keydown",e),window.addEventListener("keyup",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t)}},[]),(0,s.jsx)(r.Provider,{value:n,children:t})};var o=n(18960),c=n(67070);let d=(0,l.createContext)(void 0),u=()=>{let e=(0,l.useContext)(d);if(!e)throw Error("useToast must be used within a ToastProvider");return e},h=e=>{let{children:t}=e,[n,a]=(0,l.useState)({message:"",severity:"info",open:!1}),r=()=>{a(e=>({...e,open:!1}))};return(0,s.jsxs)(d.Provider,{value:{showToast:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info";a({message:e,severity:t,open:!0})}},children:[t,(0,s.jsx)(o.Z,{open:n.open,autoHideDuration:6e3,onClose:r,children:(0,s.jsx)(c.Z,{onClose:r,severity:n.severity,children:n.message})})]})};var p=n(52428),m=n(82911),x=n(6882),v=n(12594),g=n(28891),j=n(10804),f=n(93179),y=n(47887),b=n(88270),Z=n(11116),w=n(46446),C=n(13391),k=n(98507),S=n(93295),N=n(72467),E=n(95198),I=n(49605),R=n(79245),D=n(49050),F=n(27760),P=n(47827),T=n(84081),M=n(81679),L=n(50819),O=n(8864),A=n(38212),U=n(33932),W=n(74309),z=n(90923),V=n(10654),B=n(13457),J=n(21975),H=n(78276),_=n(72303),Y=n(72053),K=n(94106),G=n(89394),q=n(42834),X=n(26337),$=n(91797),Q=n(29872),ee=n(73701),et=n(39279),en=n(30666),es=n(15795),el=n(66988),ea=n(98489),er=n(43226),ei=n(32162),eo=n.n(ei),ec=e=>{let{open:t,onClose:n,recentEvals:a,onRecentEvalSelected:r,title:i,description:o}=e,[c,d]=(0,l.useState)(""),[u,h]=(0,l.useState)(-1),p=l.useRef(null),m=l.useRef(null),x=()=>{n(),d(""),h(-1)},v=a.filter(e=>eo()(c.toLowerCase(),e.label.toLowerCase())||"string"==typeof e.description&&eo()(c.toLowerCase(),e.description.toLowerCase())),g=e=>{r(e),x()},j=l.useCallback(()=>{if(u>=0&&m.current){let e=m.current.querySelectorAll("tbody tr"),t=Math.min(u+3,e.length-1);e[t]&&e[t].scrollIntoView({behavior:"smooth",block:"nearest"})}},[u]);l.useEffect(()=>{j()},[j]),l.useEffect(()=>{t&&(h(0),setTimeout(()=>{var e;null===(e=p.current)||void 0===e||e.focus()},0))},[t]);let f=l.useId();return(0,s.jsxs)(G.Z,{open:t,onClose:x,maxWidth:"md",fullWidth:!0,children:[i?(0,s.jsx)($.Z,{children:i}):null,(0,s.jsxs)(X.Z,{children:[o?(0,s.jsx)(R.Z,{sx:{mb:4},children:o}):null,(0,s.jsxs)(R.Z,{sx:{width:"100%",mt:2},children:[(0,s.jsx)(J.Z,{fullWidth:!0,variant:"outlined",placeholder:"Search",value:c,onChange:e=>{d(e.target.value),h(0)},onKeyDown:e=>{if(e.stopPropagation(),t)switch(e.key){case"ArrowDown":e.preventDefault(),h(e=>Math.min(e+1,v.length-1));break;case"ArrowUp":e.preventDefault(),h(e=>Math.max(e-1,0));break;case"Enter":e.preventDefault(),u>=0&&u<v.length?g(v[u].evalId):v.length>0&&g(v[0].evalId);break;case"Escape":e.preventDefault(),x()}},sx:{mb:2},inputRef:p,id:"eval-selector-search-".concat(f)}),(0,s.jsx)(es.Z,{component:Q.Z,sx:{height:"600px",overflow:"auto"},ref:m,children:(0,s.jsxs)(ee.Z,{stickyHeader:!0,children:[(0,s.jsx)(el.Z,{children:(0,s.jsxs)(ea.Z,{children:[(0,s.jsx)(en.Z,{children:"Created"}),(0,s.jsx)(en.Z,{children:"Description"}),(0,s.jsx)(en.Z,{children:"# Tests"})]})}),(0,s.jsx)(et.Z,{children:v.length>0?v.map((e,t)=>(0,s.jsxs)(ea.Z,{hover:!0,onClick:()=>g(e.evalId),sx:{cursor:"pointer",backgroundColor:t===u?"rgba(255, 255, 0, 0.1)":"inherit"},children:[(0,s.jsx)(en.Z,{children:new Date(e.createdAt).toLocaleString()}),(0,s.jsx)(en.Z,{children:e.description||e.label}),(0,s.jsx)(en.Z,{children:e.numTests})]},e.evalId)):(0,s.jsx)(ea.Z,{children:(0,s.jsx)(en.Z,{colSpan:3,align:"center",sx:{py:4},children:(0,s.jsxs)(R.Z,{sx:{textAlign:"center",color:"text.secondary"},children:[(0,s.jsx)(R.Z,{sx:{fontSize:"3rem",mb:2},children:"\uD83D\uDD0D"}),(0,s.jsx)(er.Z,{variant:"h6",gutterBottom:!0,children:"No evaluations found"}),(0,s.jsx)(er.Z,{variant:"body2",children:"Try adjusting your search or create a new evaluation"})]})})})})]})})]})]}),(0,s.jsx)(q.Z,{children:(0,s.jsx)(D.Z,{onClick:x,children:"Cancel"})})]})},ed=n(37204),eu=n(94660),eh=n(74810);let ep={getItem:async e=>await (0,ed.U2)(e)||null,setItem:async(e,t)=>{await (0,ed.t8)(e,t)},removeItem:async e=>{await (0,ed.IV)(e)}},em=(0,eu.Ue)()((0,eh.tJ)((e,t)=>({evalId:null,setEvalId:t=>e(()=>({evalId:t})),author:null,setAuthor:t=>e(()=>({author:t})),table:null,setTable:t=>e(()=>({table:t})),config:null,setConfig:t=>e(()=>({config:t})),maxTextLength:250,setMaxTextLength:t=>e(()=>({maxTextLength:t})),wordBreak:"break-word",setWordBreak:t=>e(()=>({wordBreak:t})),showInferenceDetails:!0,setShowInferenceDetails:t=>e(()=>({showInferenceDetails:t})),renderMarkdown:!1,setRenderMarkdown:t=>e(()=>({renderMarkdown:t})),prettifyJson:!1,setPrettifyJson:t=>e(()=>({prettifyJson:t})),showPrompts:!1,setShowPrompts:t=>e(()=>({showPrompts:t})),showPassFail:!0,setShowPassFail:t=>e(()=>({showPassFail:t})),inComparisonMode:!1,setInComparisonMode:t=>e(()=>({inComparisonMode:t})),columnStates:{},setColumnState:(t,n)=>e(e=>({columnStates:{...e.columnStates,[t]:n}}))}),{name:"ResultsViewStorage",storage:(0,eh.FL)(()=>ep)}));var ex=function(e){let{initialEvals:t,onComparisonEvalSelected:n}=e,{evalId:r}=em(),[i,o]=(0,l.useState)(!1),[c,d]=(0,l.useState)(t),u=async()=>{try{let e=r||t[0].evalId,n=await (0,a.t)("/results/".concat(e),{cache:"no-store"}),s=await n.json(),l=s.data.datasetId;if(!l){console.error("No datasetId found for current eval "+e);return}let i=await (0,a.t)("/results?datasetId=".concat(l),{cache:"no-store"}),o=await i.json();d(o.data.filter(t=>t.evalId!==e))}catch(e){console.error("Error fetching recent evals:",e)}},h=()=>{o(!1)};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(H.Z,{title:"Combine this eval with another eval run",placement:"left",children:(0,s.jsxs)(W.Z,{onClick:()=>{u(),o(!0)},children:[(0,s.jsx)(O.Z,{children:(0,s.jsx)(K.Z,{fontSize:"small"})}),(0,s.jsx)(A.Z,{children:"Compare with another eval"})]})}),(0,s.jsx)(ec,{open:i,onClose:h,recentEvals:c,onRecentEvalSelected:e=>{n(e),h()},title:"Select an eval to compare",description:"Only evals with the same dataset can be compared."})]})},ev=n(54719),eg=n(52481),ej=n(7175),ef=n(52653);function ey(e){let{open:t,onClose:a}=e,{config:r}=em(),i=l.useRef(null),[o,c]=l.useState(!1),[d,u]=l.useState("");l.useEffect(()=>{t&&(async()=>{let{default:e}=await Promise.resolve().then(n.bind(n,34235));u(e.dump(r))})()},[t,r]);let h=()=>{c(!1),a()};return(0,s.jsxs)(G.Z,{open:t,onClose:h,"aria-labelledby":"config-dialog-title",maxWidth:"md",fullWidth:!0,children:[(0,s.jsx)($.Z,{id:"config-dialog-title",children:(0,s.jsxs)(R.Z,{display:"flex",justifyContent:"space-between",alignItems:"center",children:[(0,s.jsx)(er.Z,{variant:"h6",style:{flexGrow:1},children:"Config"}),(0,s.jsxs)(R.Z,{children:[(0,s.jsx)(H.Z,{title:"Copy to clipboard",children:(0,s.jsx)(ef.Z,{onClick:()=>{i.current&&(i.current.select(),document.execCommand("copy"),c(!0))},children:o?(0,s.jsx)(ev.Z,{}):(0,s.jsx)(ej.Z,{})})}),(0,s.jsx)(H.Z,{title:"Download .yaml",children:(0,s.jsx)(ef.Z,{onClick:()=>{let e=new Blob([d],{type:"text/yaml;charset=utf-8"}),t=URL.createObjectURL(e),n=document.createElement("a");n.href=t,n.download="config.yaml",document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},children:(0,s.jsx)(eg.Z,{})})})]})]})}),(0,s.jsx)(X.Z,{children:(0,s.jsx)(er.Z,{variant:"body1",component:"div",children:(0,s.jsx)("textarea",{ref:i,readOnly:!0,value:d,style:{width:"100%",minHeight:"400px",fontFamily:"monospace",border:"1px solid #ccc"}})})}),(0,s.jsx)(q.Z,{children:(0,s.jsx)(D.Z,{onClick:h,color:"primary",children:"Close"})})]})}var eb=n(54986),eZ=n(79715),ew=n(34235),eC=function(){let{table:e,config:t,evalId:n}=em(),[a,r]=l.useState(!1),i=(e,t)=>{let n=URL.createObjectURL(e),s=document.createElement("a");s.href=n,s.download=t,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(n)},o=()=>{r(!1)},c=()=>{let e=ew.default.dump(t),n=new Blob([e],{type:"text/yaml;charset=utf-8"});i(n,"promptfooconfig.yaml"),o()},d=()=>{if(!e){alert("No table data");return}let t=e.body.map((t,n)=>({chosen:t.outputs.filter(e=>e.pass).map(e=>e.text),rejected:t.outputs.filter(e=>!e.pass).map(e=>e.text),vars:t.test.vars,providers:e.head.prompts.map(e=>e.provider),prompts:e.head.prompts.map(e=>e.label||e.display||e.raw)})),s=new Blob([JSON.stringify(t,null,2)],{type:"application/json"});i(s,"".concat(n,"-dpo.json")),o()},u=()=>{if(!e){alert("No table data");return}let t=new Blob([JSON.stringify(e,null,2)],{type:"application/json"});i(t,"".concat(n,"-table.json")),o()},h=()=>{if(!e){alert("No table data");return}let t=[],s=[...e.head.vars,...e.head.prompts.map(e=>"[".concat(e.provider,"] ").concat(e.label))];t.push(s),e.body.forEach(e=>{let n=[...e.vars,...e.outputs.map(e=>{let{pass:t,text:n}=e;return(t?"[PASS] ":"[FAIL] ")+n})];t.push(n)});let l=(0,eZ.P)(t),a=new Blob([l],{type:"text/csv;charset=utf-8;"});i(a,"".concat(n,"-table.csv")),o()},p=()=>{if(!e){alert("No table data");return}let t=e.body.filter(e=>e.outputs.some(e=>null!==e.pass)).map(e=>({vars:{...e.test.vars,output:e.outputs[0].text.includes("---")?e.outputs[0].text.split("---\n")[1]:e.outputs[0].text},assert:[{type:"javascript",value:"".concat(e.outputs[0].pass?"":"!","JSON.parse(output).pass")}],metadata:e.test.metadata})),s=ew.default.dump(t),l=new Blob([s],{type:"application/x-yaml"});i(l,"".concat(n,"-human-eval-cases.yaml")),o()},m=l.useCallback(e=>{if("Escape"===e.key)o();else if(a&&!e.altKey&&!e.ctrlKey&&!e.metaKey)switch(e.key){case"1":c();break;case"2":h();break;case"3":u();break;case"4":d();break;case"5":p()}},[a]);return l.useEffect(()=>{let e=e=>{a&&m(e)};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[m,a]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(W.Z,{onClick:()=>{r(!0)},children:[(0,s.jsx)(O.Z,{children:(0,s.jsx)(eg.Z,{fontSize:"small"})}),(0,s.jsx)(A.Z,{children:"Download"})]}),(0,s.jsxs)(G.Z,{onClose:o,open:a,onKeyDown:m,children:[(0,s.jsx)($.Z,{children:"Download Options"}),(0,s.jsx)(X.Z,{children:(0,s.jsxs)(B.Z,{direction:"column",spacing:2,sx:{width:"100%"},children:[(0,s.jsx)(H.Z,{title:"Download the YAML configuration file",children:(0,s.jsx)(D.Z,{onClick:c,startIcon:(0,s.jsx)(eg.Z,{}),variant:"contained",color:"primary",fullWidth:!0,children:"Download YAML Config"})}),(0,s.jsx)(eb.Z,{}),(0,s.jsx)(er.Z,{variant:"subtitle1",children:"Table Data"}),(0,s.jsx)(H.Z,{title:"Download table data in CSV format",children:(0,s.jsx)(D.Z,{onClick:h,startIcon:(0,s.jsx)(eg.Z,{}),variant:"outlined",fullWidth:!0,children:"Download Table CSV"})}),(0,s.jsx)(H.Z,{title:"Download table data in JSON format",children:(0,s.jsx)(D.Z,{onClick:u,startIcon:(0,s.jsx)(eg.Z,{}),variant:"outlined",fullWidth:!0,children:"Download Table JSON"})}),(0,s.jsx)(eb.Z,{}),(0,s.jsx)(er.Z,{variant:"subtitle1",children:"Advanced Options"}),(0,s.jsx)(H.Z,{title:"Download Direct Preference Optimization JSON",children:(0,s.jsx)(D.Z,{onClick:d,startIcon:(0,s.jsx)(eg.Z,{}),variant:"outlined",color:"secondary",fullWidth:!0,children:"Download DPO JSON"})}),(0,s.jsx)(H.Z,{title:"Download Evaluation Test Cases in YAML format",children:(0,s.jsx)(D.Z,{onClick:p,startIcon:(0,s.jsx)(eg.Z,{}),variant:"outlined",color:"secondary",fullWidth:!0,children:"Download Human Eval Test YAML"})})]})})]})]})},ek=e=>{let{recentEvals:t,onRecentEvalSelected:n}=e,[a,r]=(0,l.useState)(!1),i=()=>{r(!0)};return l.useEffect(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&"k"===e.key&&(e.preventDefault(),i())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[]),(0,s.jsx)(ec,{title:"Open an Eval",open:a,onClose:()=>{r(!1)},recentEvals:t,onRecentEvalSelected:n})},eS=n(69179),eN=n(33533),eE=n(41101),eI=n(36001);let eR=["#fd7f6f","#7eb0d5","#b2e061","#bd7ebe","#ffb55a","#ffee65","#beb9db","#fdcce5","#8bd3c7"];function eD(e){let{table:t}=e,n=(0,l.useRef)(null),a=(0,l.useRef)(null);return(0,l.useEffect)(()=>{if(!n.current)return;a.current&&a.current.destroy();let e=t.body.flatMap(e=>e.outputs.map(e=>e.score)),s=Math.min(...e),l=(Math.ceil(Math.max(...e))-Math.floor(s))/10,r=Array.from({length:11},(e,t)=>Number.parseFloat((Math.floor(s)+t*l).toFixed(2))),i=t.head.prompts.map((e,n)=>{let s=t.body.flatMap(e=>e.outputs[n].score),a=r.map(e=>s.filter(t=>t>=e&&t<e+l).length);return{label:"Column ".concat(n+1),data:a,backgroundColor:eR[n%eR.length]}});a.current=new eI.kL(n.current,{type:"bar",data:{labels:r,datasets:i},options:{animation:!1,plugins:{title:{display:!0,text:"Score Distribution"},legend:{display:!1},tooltip:{callbacks:{title(e){let t=e[0].datasetIndex;return"Column ".concat(t+1)},label(e){let t=e.dataIndex,n=r[t],s=r[t+1];return s?"".concat(n," <= score < ").concat(s):"".concat(n," <= score")}}}}}})},[t]),(0,s.jsx)("canvas",{ref:n,style:{maxHeight:"300px"}})}function eF(e){let{table:t}=e,n=(0,l.useRef)(null),a=(0,l.useRef)(null);return(0,l.useEffect)(()=>{if(!n.current)return;a.current&&a.current.destroy();let e=t.head.prompts.map((e,n)=>{let s=t.body.flatMap(e=>e.outputs[n]),l=s.filter(e=>e.pass).length,a=l/s.length*100;return{label:"Column ".concat(n+1),data:[a],backgroundColor:eR[n%eR.length]}});a.current=new eI.kL(n.current,{type:"bar",data:{labels:["Pass Rate (%)"],datasets:e},options:{animation:!1,plugins:{title:{display:!0,text:"Pass rate"},legend:{display:!0}}}})},[t]),(0,s.jsx)("canvas",{ref:n,style:{maxHeight:"300px"}})}function eP(e){let{table:t}=e,n=(0,l.useRef)(null),a=(0,l.useRef)(null),[r,i]=(0,l.useState)(0),[o,c]=(0,l.useState)(1),[d,u]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{if(!n.current)return;a.current&&a.current.destroy();let e=t.body.flatMap(e=>e.outputs.map(e=>e.score)),s=Math.min(...e),l=Math.max(...e),i=t.body.map(e=>{let t=e.outputs[r].score,n=e.outputs[o].score;return{x:t,y:n,backgroundColor:n>t?"green":n<t?"red":"gray"}});a.current=new eI.kL(n.current,{type:"scatter",data:{datasets:[{data:i,backgroundColor:i.map(e=>e.backgroundColor)},{type:"line",data:[{x:s,y:s},{x:l,y:l}],borderColor:"gray",borderWidth:1,borderDash:[5,5],pointRadius:0}]},options:{animation:!1,plugins:{legend:{display:!1},tooltip:{callbacks:{label(e){let n=t.body[e.dataIndex],s=n.outputs[0].text,l=n.outputs[1].text;return s.length>30&&(s=s.substring(0,30)+"..."),l.length>30&&(l=l.substring(0,30)+"..."),"Output 1: ".concat(s,"\nOutput 2: ").concat(l)}}}},scales:{x:{title:{display:!0,text:"Prompt ".concat(r+1," Score")},ticks:{callback(e,t,n){let s=String(Math.round(100*Number(e)));return t===n.length-1&&(s+="%"),s}}},y:{title:{display:!0,text:"Prompt ".concat(o+1," Score")},ticks:{callback(e,t,n){let s=String(Math.round(100*Number(e)));return t===n.length-1&&(s+="%"),s}}}}}})},[t,r,o]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(G.Z,{open:d,onClose:()=>u(!1),children:[(0,s.jsx)($.Z,{children:"Compare prompt outputs"}),(0,s.jsxs)(X.Z,{children:[(0,s.jsx)(T.Z,{sx:{m:1,minWidth:120},children:(0,s.jsx)(V.Z,{value:r,onChange:e=>i(Number(e.target.value)),children:t.head.prompts.map((e,t)=>(0,s.jsxs)(W.Z,{value:t,children:["Prompt ",t+1]},t))})}),(0,s.jsx)(T.Z,{sx:{m:1,minWidth:120},children:(0,s.jsx)(V.Z,{value:o,onChange:e=>c(Number(e.target.value)),children:t.head.prompts.map((e,t)=>(0,s.jsxs)(W.Z,{value:t,children:["Prompt ",t+1]},t))})})]})]}),(0,s.jsx)("canvas",{ref:n,style:{maxHeight:"300px",cursor:"pointer"},onClick:()=>u(!0)})]})}function eT(e){let{table:t}=e,n=(0,l.useRef)(null),a=(0,l.useRef)(null);return(0,l.useEffect)(()=>{var e;if(!n.current)return;a.current&&a.current.destroy();let s=Object.keys((null===(e=t.head.prompts[0].metrics)||void 0===e?void 0:e.namedScores)||{}),l=t.head.prompts.map((e,n)=>{let l=s.map(n=>{var s;let l=(null===(s=e.metrics)||void 0===s?void 0:s.namedScores[n])||0,a=Math.max(...t.head.prompts.map(e=>{var t;return(null===(t=e.metrics)||void 0===t?void 0:t.namedScores[n])||0}));return l/a});return{label:"".concat(t.head.prompts[n].provider),data:l,backgroundColor:eR[n%eR.length]}});a.current=new eI.kL(n.current,{type:"bar",data:{labels:s,datasets:l},options:{scales:{x:{grid:{display:!1}},y:{ticks:{callback(e,t,n){let s=String(Math.round(100*Number(e)));return t===n.length-1&&(s+="%"),s}}}},plugins:{tooltip:{callbacks:{title:e=>e[0].dataset.label,label(e){let t=e.parsed.y;return"".concat(s[e.dataIndex],": ").concat((100*t).toFixed(2),"% pass rate")}}}}}})},[t]),(0,s.jsx)("canvas",{ref:n,style:{maxHeight:"300px"}})}eI.kL.register(eI.vn,eI.ST,eI.ho,eI.uw,eI.f$,eI.ZL,eI.jn,eI.od,eI.u,eI.wL);var eM=l.memo(function(e){var t;let{columnVisibility:n}=e,a=(0,eE.Z)();eI.kL.defaults.color="dark"===a.palette.mode?"#aaa":"#666";let[r,i]=(0,l.useState)(!0),{table:o}=em();if(!o||!r||o.head.prompts.length<2)return null;let c=o.body.flatMap(e=>e.outputs.map(e=>e.score)),d=new Set(c);return 1===d.size?null:(0,s.jsx)(eS.SV,{fallback:null,children:(0,s.jsxs)(Q.Z,{sx:{position:"relative",padding:3,mt:2},children:[(0,s.jsx)(ef.Z,{style:{position:"absolute",right:0,top:0},onClick:()=>i(!1),children:(0,s.jsx)(eN.Z,{})}),(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[(0,s.jsx)("div",{style:{width:"33%"},children:(0,s.jsx)(eF,{table:o})}),(0,s.jsx)("div",{style:{width:"33%"},children:d.size<=3&&Object.keys((null===(t=o.head.prompts[0].metrics)||void 0===t?void 0:t.namedScores)||{}).length>1?(0,s.jsx)(eT,{table:o}):(0,s.jsx)(eD,{table:o})}),(0,s.jsx)("div",{style:{width:"33%"},children:(0,s.jsx)(eP,{table:o})})]})]})})}),eL=n(7660),eO=n(3216),eA=n(5971);n(55974);var eU=e=>{let{lookup:t,metricTotals:n,onSearchTextChange:a}=e,[r,i]=l.useState(!1);if(!t||!Object.keys(t).length)return null;let o=Object.entries(t),c=r?o:o.slice(0,10);return(0,s.jsxs)("div",{className:"custom-metric-container",children:[c.map(e=>{let[t,l]=e;return t&&void 0!==l?(0,s.jsxs)("span",{onClick:()=>a&&a("metric=".concat(t,":")),className:a?"clickable":"",children:[t,":"," ",n&&n[t]?(0,s.jsxs)(s.Fragment,{children:[(l/n[t]*100).toFixed(2),"% (",l.toFixed(2),"/",n[t].toFixed(2),")"]}):l.toFixed(2)]},t):null}),o.length>10&&(0,s.jsx)("span",{className:"clickable",onClick:()=>i(!r),children:r?"Show less":"Show more..."})]})},eW=n(39329),ez=n(64748);function eV(e,t){return e.length<=t?e:e.slice(0,t)+"..."}function eB(e){let{gradingResults:t}=e,[n,a]=(0,l.useState)({});if(!t)return null;let r=e=>{a(t=>({...t,[e]:!t[e]}))};return(0,s.jsxs)(R.Z,{mt:2,children:[(0,s.jsx)(er.Z,{variant:"subtitle1",children:"Assertions"}),(0,s.jsx)(es.Z,{children:(0,s.jsxs)(ee.Z,{children:[(0,s.jsx)(el.Z,{children:(0,s.jsxs)(ea.Z,{children:[(0,s.jsx)(en.Z,{style:{fontWeight:"bold"},children:"Pass"}),(0,s.jsx)(en.Z,{style:{fontWeight:"bold"},children:"Score"}),(0,s.jsx)(en.Z,{style:{fontWeight:"bold"},children:"Type"}),(0,s.jsx)(en.Z,{style:{fontWeight:"bold"},children:"Value"}),(0,s.jsx)(en.Z,{style:{fontWeight:"bold"},children:"Reason"})]})}),(0,s.jsx)(et.Z,{children:t.map((e,t)=>{var l,a,i;if(!e)return null;let o=(null===(l=e.assertion)||void 0===l?void 0:l.value)?"object"==typeof e.assertion.value?JSON.stringify(e.assertion.value,null,2):String(e.assertion.value):"-",c=eV(o,300),d=n[t]||!1;return(0,s.jsxs)(ea.Z,{children:[(0,s.jsx)(en.Z,{children:e.pass?"✅":"❌"}),(0,s.jsx)(en.Z,{children:null===(a=e.score)||void 0===a?void 0:a.toFixed(2)}),(0,s.jsx)(en.Z,{children:(null===(i=e.assertion)||void 0===i?void 0:i.type)||""}),(0,s.jsx)(en.Z,{style:{whiteSpace:"pre-wrap",cursor:"pointer"},onClick:()=>r(t),children:d?o:c}),(0,s.jsx)(en.Z,{style:{whiteSpace:"pre-wrap"},children:e.reason})]},t)})})]})})]})}function eJ(e){let{open:t,onClose:n,prompt:a,provider:r,output:i,gradingResults:o,metadata:c}=e,[d,u]=(0,l.useState)(!1),[h,p]=(0,l.useState)({});(0,l.useEffect)(()=>{u(!1)},[a]);let m=async e=>{await navigator.clipboard.writeText(e),u(!0)},x=e=>{p(t=>({...t,[e]:!t[e]}))};return(0,s.jsxs)(G.Z,{open:t,onClose:n,fullWidth:!0,maxWidth:"lg",children:[(0,s.jsxs)($.Z,{children:["Details",r&&": ".concat(r)]}),(0,s.jsxs)(X.Z,{children:[(0,s.jsxs)(R.Z,{mb:2,children:[(0,s.jsx)(er.Z,{variant:"subtitle1",style:{marginBottom:"1rem"},children:"Prompt"}),(0,s.jsx)(ez.Z,{readOnly:!0,value:a,style:{width:"100%",padding:"0.75rem"},maxRows:20}),(0,s.jsx)(ef.Z,{onClick:()=>m(a),style:{position:"absolute",right:"10px",top:"10px"},children:d?(0,s.jsx)(ev.Z,{}):(0,s.jsx)(eW.Z,{})})]}),(null==c?void 0:c.redteamFinalPrompt)&&(0,s.jsxs)(R.Z,{my:2,children:[(0,s.jsx)(er.Z,{variant:"subtitle1",style:{marginBottom:"1rem",marginTop:"1rem"},children:"Modified User Input (Red Team)"}),(0,s.jsx)(ez.Z,{readOnly:!0,maxRows:20,value:c.redteamFinalPrompt,style:{width:"100%",padding:"0.75rem"}})]}),i&&(0,s.jsxs)(R.Z,{my:2,children:[(0,s.jsx)(er.Z,{variant:"subtitle1",style:{marginBottom:"1rem",marginTop:"1rem"},children:"Output"}),(0,s.jsx)(ez.Z,{readOnly:!0,maxRows:20,value:i,style:{width:"100%",padding:"0.75rem"}})]}),(0,s.jsx)(eB,{gradingResults:o}),c&&Object.keys(c).length>0&&(0,s.jsxs)(R.Z,{my:2,children:[(0,s.jsx)(er.Z,{variant:"subtitle1",style:{marginBottom:"1rem",marginTop:"1rem"},children:"Metadata"}),(0,s.jsx)(es.Z,{children:(0,s.jsxs)(ee.Z,{size:"small",children:[(0,s.jsx)(el.Z,{children:(0,s.jsxs)(ea.Z,{children:[(0,s.jsx)(en.Z,{children:(0,s.jsx)("strong",{children:"Key"})}),(0,s.jsx)(en.Z,{children:(0,s.jsx)("strong",{children:"Value"})})]})}),(0,s.jsx)(et.Z,{children:Object.entries(c).map(e=>{let[t,n]=e,l="string"==typeof n?n:JSON.stringify(n),a=eV(l,300),r=h[t]||!1;return(0,s.jsxs)(ea.Z,{children:[(0,s.jsx)(en.Z,{children:t}),(0,s.jsx)(en.Z,{style:{whiteSpace:"pre-wrap",cursor:"pointer"},onClick:()=>x(t),children:r?l:a})]},t)})})]})})]})]}),(0,s.jsx)(q.Z,{children:(0,s.jsx)(D.Z,{onClick:n,children:"Close"})})]})}var eH=n(89396),e_=n(64173),eY=function(){let e=(0,eE.Z)(),[t,n]=l.useState(!1),a=()=>{n(!1)};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{style:{textAlign:"center",marginTop:20,marginBottom:40},children:(0,s.jsx)(D.Z,{variant:"text",color:"primary",startIcon:(0,s.jsx)(eH.Z,{}),onClick:()=>{n(!0)},children:"Generate test cases"})}),(0,s.jsxs)(G.Z,{open:t,onClose:a,children:[(0,s.jsx)($.Z,{children:"Run on Command Line"}),(0,s.jsx)(X.Z,{children:(0,s.jsxs)(e_.Z,{children:[(0,s.jsx)("p",{children:"This feature is in beta. UI coming soon."}),(0,s.jsxs)("p",{children:["Run"," ",(0,s.jsx)(R.Z,{component:"code",sx:{backgroundColor:"dark"===e.palette.mode?"#424242":"#f0f0f0",padding:"2px 4px",borderRadius:"4px"},children:"promptfoo generate dataset"}),"to generate test cases on the command line."]})]})}),(0,s.jsx)(q.Z,{children:(0,s.jsx)(D.Z,{onClick:a,color:"primary",children:"Close"})})]})]})};function eK(e){return"string"==typeof e||"number"==typeof e?e.toString().length:Array.isArray(e)?e.reduce((e,t)=>e+eK(t),0):l.isValidElement(e)&&e.props.children?l.Children.toArray(e.props.children).reduce((e,t)=>e+eK(t),0):0}let eG=l.memo(function(e){let t,{text:n,maxLength:a}=e,[r,i]=l.useState(!0),o=()=>{i(!r)},c=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if("string"==typeof e||"number"==typeof e){let n=e.toString();return n.slice(0,a-t)}if(Array.isArray(e)){let n=[],s=t;for(let t of e){let e=eK(t);if(s+e>a){n.push(c(t,s));break}n.push(t),s+=e}return n}if(l.isValidElement(e)&&e.props.children){let n=eK(e.props.children);if(n>a-t)return l.cloneElement(e,{...e.props,children:c(e.props.children,t)})}return e};t=l.isValidElement(n)||"string"==typeof n?n:JSON.stringify(n);let d=r?c(t):t,u=eK(t)>a;return(0,s.jsxs)("div",{style:{cursor:u?"pointer":"normal"},onMouseDown:e=>{let t=e.clientX,n=e.clientY,s=e=>{let l=e.clientX,a=e.clientY;5>Math.abs(l-t)&&5>Math.abs(a-n)&&o(),document.removeEventListener("mouseup",s)};document.addEventListener("mouseup",s)},children:[d,r&&eK(t)>a&&(0,s.jsx)("span",{children:"..."})]})});var eq=n(45391),eX=n(40182),e$=n(38640),eQ=n.n(e$),e0=n(33352),e1=n(15014),e2=n(65101);n(16658);var e3=e=>{let{failReasons:t}=e,[n,a]=(0,l.useState)(0);return t.length<1?null:(0,s.jsxs)("div",{className:"fail-reason",children:[t.length>1&&(0,s.jsxs)("span",{className:"fail-reason-carousel-controls",children:[(0,s.jsx)(ef.Z,{onClick:()=>{a(e=>e>0?e-1:t.length-1)},children:(0,s.jsx)(e1.Z,{sx:{fontSize:12}})}),(0,s.jsxs)("span",{children:[n+1,"/",t.length]}),(0,s.jsx)(ef.Z,{onClick:()=>{a(e=>e<t.length-1?e+1:0)},children:(0,s.jsx)(e2.Z,{sx:{fontSize:12}})})]}),t[n].trim().split("\n").map((e,t)=>(0,s.jsxs)(l.Fragment,{children:[e,(0,s.jsx)("br",{})]},t))]})},e5=e=>{let{open:t,contextText:n,commentText:l,onClose:a,onSave:r,onChange:i}=e,o="dark"===(0,eE.Z)().palette.mode;return(0,s.jsxs)(G.Z,{open:t,onClose:a,fullWidth:!0,maxWidth:"sm",children:[(0,s.jsx)($.Z,{children:"Edit Comment"}),(0,s.jsxs)(X.Z,{children:[(0,s.jsx)(R.Z,{sx:{backgroundColor:o?"#1e1e1e":"#f0f0f0",padding:2,marginBottom:2},children:n}),(0,s.jsx)(J.Z,{autoFocus:!0,margin:"dense",type:"text",fullWidth:!0,multiline:!0,rows:4,value:l,onChange:e=>i(e.target.value)})]}),(0,s.jsxs)(q.Z,{children:[(0,s.jsx)(D.Z,{onClick:r,color:"primary",variant:"contained",children:"Save"}),(0,s.jsx)(D.Z,{onClick:a,color:"primary",children:"Cancel"})]})]})};let e4=()=>{let e=(0,l.useContext)(r);if(void 0===e)throw Error("useShiftKey must be used within a ShiftKeyProvider");return e};var e8=n(68192);let e7=l.memo(function(e){var t,n,a,r,i,o,c,d,u,h,p,m,x;let v,g,j,f,y,b,{output:Z,maxTextLength:w,rowIndex:C,promptIndex:k,onRating:S,firstOutput:N,showDiffs:E,searchText:I,showStats:R}=e,{renderMarkdown:D,prettifyJson:F,showPrompts:P,showPassFail:T}=em(),[M,L]=l.useState(!1),[O,A]=l.useState(!1),[U,W]=l.useState(null),z=e=>{W(e||null),A(!O)},[V,B]=l.useState(!1),[J,_]=l.useState((null===(t=Z.gradingResult)||void 0===t?void 0:t.comment)||""),Y=()=>{B(!0)},K="string"==typeof Z.text?Z.text:JSON.stringify(Z.text),G=[];if(!Z.pass&&K.includes("---")&&(G=((null===(h=Z.gradingResult)||void 0===h?void 0:h.componentResults)||[]).filter(e=>!!e&&!e.pass).map(e=>e.reason),K=K.split("---").slice(1).join("---")),E&&N){let e,t="string"==typeof N.text?N.text:JSON.stringify(N.text);t.includes("---")&&(t=t.split("---").slice(1).join("---"));try{JSON.parse(t),JSON.parse(K),e=(0,e8.CT)(t,K)}catch(n){e=t.includes(". ")&&K.includes(". ")?(0,e8.SY)(t,K):(0,e8.NV)(t,K)}v=(0,s.jsx)(s.Fragment,{children:e.map((e,t)=>e.added?(0,s.jsx)("ins",{children:e.value},t):e.removed?(0,s.jsx)("del",{children:e.value},t):(0,s.jsx)("span",{children:e.value},t))})}if(I)try{let e;let t=RegExp(I,"gi"),n=[];for(;null!==(e=t.exec(K));)n.push({start:e.index,end:t.lastIndex});v=(0,s.jsx)(s.Fragment,{children:n.length>0?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{children:K.substring(0,n[0].start)},"text-before"),n.map((e,t)=>(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"search-highlight",children:K.substring(e.start,e.end)},"match-"+t),(0,s.jsx)("span",{children:K.substring(e.end,n[t+1]?n[t+1].start:K.length)},"text-after-"+t)]}))]}):(0,s.jsx)("span",{children:K},"no-match")})}catch(e){console.error("Invalid regular expression:",e.message)}else if(D&&!E)v=(0,s.jsx)(eA.U,{remarkPlugins:[e0.Z],components:{img:e=>{let{src:t,alt:n}=e;return(0,s.jsx)("img",{loading:"lazy",src:t,alt:n,onClick:()=>z(t),style:{cursor:"pointer"}})}},children:K});else if(F)try{v=(0,s.jsx)("pre",{children:JSON.stringify(JSON.parse(K),null,2)})}catch(e){}let q=l.useCallback(e=>{var t;S(e,void 0,null===(t=Z.gradingResult)||void 0===t?void 0:t.comment)},[S,null===(n=Z.gradingResult)||void 0===n?void 0:n.comment]),X=l.useCallback(()=>{let e=prompt("Set test score (0.0 - 1.0):",String(Z.score));if(null!==e){let n=Number.parseFloat(e);if(!Number.isNaN(n)&&n>=0&&n<=1){var t;S(void 0,n,null===(t=Z.gradingResult)||void 0===t?void 0:t.comment)}else alert("Invalid score. Please enter a value between 0.0 and 1.0.")}},[S,Z.score,null===(a=Z.gradingResult)||void 0===a?void 0:a.comment]),[$,Q]=l.useState(!1),ee=l.useCallback(()=>{navigator.clipboard.writeText(Z.text),Q(!0)},[Z.text]);if(Z.latencyMs&&(j=(0,s.jsxs)("span",{children:[Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(Z.latencyMs)," ms"]})),null===(r=Z.tokenUsage)||void 0===r?void 0:r.completion){let e=Z.tokenUsage.completion/(Z.latencyMs/1e3);f=(0,s.jsx)("span",{children:Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(e)})}if(Z.cost&&(y=(0,s.jsxs)("span",{children:["$",Z.cost.toPrecision(2)]})),null===(i=Z.tokenUsage)||void 0===i?void 0:i.cached)g=(0,s.jsxs)("span",{children:[Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(Z.tokenUsage.cached)," ","(cached)"]});else if(null===(o=Z.tokenUsage)||void 0===o?void 0:o.total){let e=Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(null!==(p=Z.tokenUsage.prompt)&&void 0!==p?p:0),t=Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(null!==(m=Z.tokenUsage.completion)&&void 0!==m?m:0),n=Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(Z.tokenUsage.total);g=(0,s.jsx)(H.Z,{title:"".concat(e," prompt tokens + ").concat(t," completion tokens = ").concat(n," total"),children:(0,s.jsxs)("span",{children:[n,("0"!==e||"0"!==t)&&" (".concat(e,"+").concat(t,")")]})})}let et=(null===(c=Z.gradingResult)||void 0===c?void 0:c.comment)&&"!highlight"!==Z.gradingResult.comment?(0,s.jsx)("div",{className:"comment",onClick:Y,children:Z.gradingResult.comment}):null,en=R?(0,s.jsxs)("div",{className:"cell-detail",children:[g&&(0,s.jsxs)("div",{className:"stat-item",children:[(0,s.jsx)("strong",{children:"Tokens:"})," ",g]}),j&&(0,s.jsxs)("div",{className:"stat-item",children:[(0,s.jsx)("strong",{children:"Latency:"})," ",j]}),f&&(0,s.jsxs)("div",{className:"stat-item",children:[(0,s.jsx)("strong",{children:"Tokens/Sec:"})," ",f]}),y&&(0,s.jsxs)("div",{className:"stat-item",children:[(0,s.jsx)("strong",{children:"Cost:"})," ",y]})]}):null,es=e4(),el=(0,s.jsxs)("div",{className:"cell-actions",children:[es&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"action",onClick:ee,onMouseDown:e=>e.preventDefault(),children:(0,s.jsx)(H.Z,{title:"Copy output to clipboard",children:(0,s.jsx)("span",{children:$?"✅":"\uD83D\uDCCB"})})}),(0,s.jsx)("span",{className:"action",onClick:()=>{let e;J.startsWith("!highlight")?S(void 0,void 0,e=J.slice(10).trim()):S(void 0,void 0,e=("!highlight "+J).trim()),_(e)},onMouseDown:e=>e.preventDefault(),children:(0,s.jsx)(H.Z,{title:"Toggle test highlight",children:(0,s.jsx)("span",{children:"\uD83C\uDF1F"})})})]}),Z.prompt&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"action",onClick:()=>{L(!0)},children:(0,s.jsx)(H.Z,{title:"View output and test details",children:(0,s.jsx)("span",{children:"\uD83D\uDD0E"})})}),(0,s.jsx)(eJ,{open:M,onClose:()=>{L(!1)},prompt:Z.prompt,provider:Z.provider,gradingResults:null===(d=Z.gradingResult)||void 0===d?void 0:d.componentResults,output:K,metadata:Z.metadata})]}),(0,s.jsx)("span",{className:"action",onClick:()=>q(!0),children:(0,s.jsx)(H.Z,{title:"Mark test passed (score 1.0)",children:(0,s.jsx)("span",{children:"\uD83D\uDC4D"})})}),(0,s.jsx)("span",{className:"action",onClick:()=>q(!1),children:(0,s.jsx)(H.Z,{title:"Mark test failed (score 0.0)",children:(0,s.jsx)("span",{children:"\uD83D\uDC4E"})})}),(0,s.jsx)("span",{className:"action",onClick:X,children:(0,s.jsx)(H.Z,{title:"Set test score",children:(0,s.jsx)("span",{children:"\uD83D\uDD22"})})}),(0,s.jsx)("span",{className:"action",onClick:Y,children:(0,s.jsx)(H.Z,{title:"Edit comment",children:(0,s.jsx)("span",{children:"✏️"})})})]}),ea={};(null===(u=Z.gradingResult)||void 0===u?void 0:u.comment)==="!highlight"&&(ea.backgroundColor="#ffffeb");let er=0,ei=0,eo=Z.gradingResult;if(eo?eo.componentResults?eo.componentResults.forEach(e=>{(null==e?void 0:e.pass)?er++:ei++}):(er=eo.pass?1:0,ei=eo.pass?0:1):Z.pass?er=1:Z.pass||(ei=1),1===ei&&1===er)b=(0,s.jsxs)(s.Fragment,{children:["".concat(ei," FAIL")," ","".concat(er," PASS")]});else{let e="";ei>1||er>1&&ei>0?e="".concat(ei," FAIL"):1===ei&&(e="FAIL");let t="";er>1||ei>1&&er>0?t="".concat(er," PASS"):1===er&&0===ei&&(t="PASS");let n=e&&t?" ":"";b=(0,s.jsxs)(s.Fragment,{children:[e,n,t]})}let ec=null===(x=Z.score)||0===x||1===x?"":"(".concat(x.toFixed(2),")");return(0,s.jsxs)("div",{className:"cell",style:ea,children:[T&&(0,s.jsx)(s.Fragment,{children:Z.pass?(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("div",{className:"status pass",children:[(0,s.jsxs)("div",{className:"pill",children:[b,ec&&(0,s.jsxs)("span",{className:"score",children:[" ",ec]})]}),(0,s.jsx)(eU,{lookup:Z.namedScores})]})}):(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("div",{className:"status fail",children:[(0,s.jsxs)("div",{className:"pill",children:[b,ec&&(0,s.jsxs)("span",{className:"score",children:[" ",ec]})]}),(0,s.jsx)(eU,{lookup:Z.namedScores}),(0,s.jsx)("span",{className:"fail-reason",children:(0,s.jsx)(e3,{failReasons:G})})]})})}),P&&N.prompt&&(0,s.jsxs)("div",{className:"prompt",children:[(0,s.jsx)("span",{className:"pill",children:"Prompt"}),Z.prompt]}),(0,s.jsx)(eG,{text:v||K,maxLength:w}),et,en,el,O&&U&&(0,s.jsx)("div",{className:"lightbox",onClick:()=>z(),children:(0,s.jsx)("img",{src:U,alt:"Lightbox"})}),(0,s.jsx)(e5,{open:V,contextText:Z.text,commentText:J,onClose:()=>{B(!1)},onSave:()=>{S(void 0,void 0,J),B(!1)},onChange:_})]})});function e6(e){let{text:t,maxLength:n,expandedText:a,resourceId:r,className:i}=e,[o,c]=l.useState(!1);return(0,s.jsxs)("div",{className:"".concat(i||""),children:[(0,s.jsx)(eG,{text:t,maxLength:n}),a&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(H.Z,{title:"View prompt",children:(0,s.jsx)("span",{className:"action",onClick:()=>{c(!0)},children:"\uD83D\uDD0E"})}),(0,s.jsx)(eJ,{open:o,onClose:()=>{c(!1)},prompt:a}),r&&(0,s.jsx)(H.Z,{title:"View other evals and datasets for this prompt",children:(0,s.jsx)("span",{className:"action",children:(0,s.jsx)(eQ(),{href:"/prompts/?id=".concat(r),target:"_blank",children:(0,s.jsx)(eq.Z,{fontSize:"small"})})})})]})]})}n(93207);var e9=l.memo(function(e){let{maxTextLength:t,columnVisibility:n,wordBreak:r,filterMode:i,failureFilter:o,searchText:c,showStats:d,onFailureFilterToggle:h,onSearchTextChange:p}=e,{evalId:m,table:x,setTable:v,config:g,inComparisonMode:j}=em(),{showToast:y}=u();(0,f.Z)(x,"Table should be defined");let{head:b,body:Z}=x,w=l.useCallback(async(e,t,n,s,l)=>{var r,i;let o=[...Z],c={...o[e]},d=[...c.outputs],u=null!=n?n:d[t].pass,h=void 0===s?n?1:0:s||0;d[t].pass=u,d[t].score=h;let p=(null===(r=d[t].gradingResult)||void 0===r?void 0:r.componentResults)||[];if(void 0!==n){let e=p.findIndex(e=>{var t;return(null===(t=e.assertion)||void 0===t?void 0:t.type)==="human"}),t={pass:u,score:h,reason:"Manual result (overrides all other grading results)",comment:l,assertion:{type:"human"}};-1===e?p.push(t):p[e]=t}let x={...d[t].gradingResult||{},pass:u,score:h,reason:"Manual result (overrides all other grading results)",comment:l,assertion:(null===(i=d[t].gradingResult)||void 0===i?void 0:i.assertion)||null,componentResults:p};d[t].gradingResult=x,c.outputs=d,o[e]=c;let g={head:b,body:o};if(v(g),j)y("Ratings are not saved in comparison mode","warning");else try{let e=await (0,a.t)("/eval/".concat(m),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({table:g})});if(!e.ok)throw Error("Network response was not ok")}catch(e){console.error("Failed to update table:",e)}},[Z,b,v,m,j,y]),C=Object.keys(n).length>0,k=l.useMemo(()=>{try{return RegExp(c,"i")}catch(e){return console.error("Invalid regular expression:",e.message),null}},[c]),S=l.useMemo(()=>{try{return Z.map((e,t)=>({...e,outputs:e.outputs.map((e,n)=>({...e,originalRowIndex:t,originalPromptIndex:n}))})).filter(e=>{let t=!0;return"failures"===i?t=e.outputs.some((e,t)=>{let s="Prompt ".concat(t+1);return o[s]&&!e.pass&&(!C||n[s])}):"different"===i?t=!e.outputs.every(t=>t.text===e.outputs[0].text):"highlights"===i&&(console.log(e.outputs[0].text),t=e.outputs.some(e=>{var t,n;return null===(n=e.gradingResult)||void 0===n?void 0:null===(t=n.comment)||void 0===t?void 0:t.startsWith("!highlight")})),!!t&&(!c||!k||e.outputs.some(t=>{var n,s;let l=e.vars.map(e=>"var=".concat(e)).join(" "),a="".concat(t.text," ").concat(Object.keys(t.namedScores).map(e=>"metric=".concat(e,":").concat(t.namedScores[e])).join(" ")," ").concat((null===(n=t.gradingResult)||void 0===n?void 0:n.reason)||""," ").concat((null===(s=t.gradingResult)||void 0===s?void 0:s.comment)||""),r="".concat(l," ").concat(a);return k.test(r)}))})}catch(e){return console.error("Invalid regular expression:",e.message),Z}},[Z,o,i,c,n,C,k]),[N,E]=l.useState({pageIndex:0,pageSize:50});l.useEffect(()=>{E(e=>({...e,pageIndex:0}))},[o,i,c]);let I=l.useMemo(()=>b.prompts.map((e,t)=>Z.reduce((e,n)=>e+(n.outputs[t].pass?1:0),0)),[b.prompts,Z]),P=l.useMemo(()=>b.prompts.map((e,t)=>Z.reduce((e,n)=>{var s,l;return e+((null===(l=n.outputs[t].gradingResult)||void 0===l?void 0:null===(s=l.componentResults)||void 0===s?void 0:s.length)||0)},0)),[b.prompts,Z]),T=l.useMemo(()=>b.prompts.map((e,t)=>Z.reduce((e,n)=>{var s;let l=null===(s=n.outputs[t].gradingResult)||void 0===s?void 0:s.componentResults;return e+(l?l.filter(e=>null==e?void 0:e.pass).length:0)},0)),[b.prompts,Z]),M=l.useMemo(()=>I.reduce((e,t,n,s)=>t>s[e]?n:e,0),[I]),L=I[M],O=l.useMemo(()=>(0,eL.Cl)(),[]),{renderMarkdown:A}=em(),U=l.useMemo(()=>b.vars.length>0?[O.group({id:"vars",header:()=>(0,s.jsx)("span",{className:"font-bold",children:"Variables"}),columns:b.vars.map((e,n)=>O.accessor(e=>e.vars[n],{id:"Variable ".concat(n+1),header:()=>(0,s.jsx)(e6,{text:e,maxLength:t,className:"font-bold"}),cell:e=>{let n=e.getValue();return(0,s.jsx)("div",{className:"cell",children:A?(0,s.jsx)(eA.U,{remarkPlugins:[e0.Z],children:n}):(0,s.jsx)(eG,{text:n,maxLength:t})})},size:50}))})]:[],[O,b.vars,t,A]),z=l.useCallback((e,t)=>S[e].outputs[t],[S]),B=l.useCallback(e=>S[e].outputs[0],[S]),_=l.useMemo(()=>{let e={};return null==x||x.body.forEach(t=>{var n;null===(n=t.test.assert)||void 0===n||n.forEach(t=>{t.metric&&(e[t.metric]=(e[t.metric]||0)+1),"assert"in t&&Array.isArray(t.assert)&&t.assert.forEach(t=>{"metric"in t&&t.metric&&(e[t.metric]=(e[t.metric]||0)+1)})})}),e},[x]),Y=l.useMemo(()=>[O.group({id:"prompts",header:()=>(0,s.jsx)("span",{className:"font-bold",children:"Outputs"}),columns:b.prompts.map((e,n)=>O.accessor(e=>(function(e){if("string"==typeof e){let t=e.startsWith("[PASS]"),n=e;return e.startsWith("[PASS]")?n=n.slice(6):e.startsWith("[FAIL]")&&(n=n.slice(6)),{text:n,pass:t,score:t?1:0}}return e})(e.outputs[n]),{id:"Prompt ".concat(n+1),header:()=>{var l,a,r,c,u,m,x,v;let j=I[n]&&Z.length?(I[n]/Z.length*100).toFixed(2):"0.00",f=I[n]===L&&0!==L,y="Prompt ".concat(n+1),b=o[y]||!1,w=d?(0,s.jsxs)("div",{className:"prompt-detail",children:[P[n]?(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:"Asserts:"})," ",T[n],"/",P[n]," passed"]}):null,(null===(l=e.metrics)||void 0===l?void 0:l.totalLatencyMs)?(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:"Avg Latency:"})," ",Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(e.metrics.totalLatencyMs/Z.length)," ","ms"]}):null,(null===(r=e.metrics)||void 0===r?void 0:null===(a=r.tokenUsage)||void 0===a?void 0:a.total)?(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:"Avg Tokens:"})," ",Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(e.metrics.tokenUsage.total/Z.length)]}):null,(null===(c=e.metrics)||void 0===c?void 0:c.totalLatencyMs)&&(null===(m=e.metrics)||void 0===m?void 0:null===(u=m.tokenUsage)||void 0===u?void 0:u.completion)?(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:"Tokens/Sec:"})," ",Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(e.metrics.tokenUsage.completion/(e.metrics.totalLatencyMs/1e3))]}):null,(null===(x=e.metrics)||void 0===x?void 0:x.cost)?(0,s.jsxs)("div",{children:[(0,s.jsx)("strong",{children:"Cost:"})," $",e.metrics.cost.toPrecision(2)]}):null]}):null,C=Array.isArray(null==g?void 0:g.providers)?g.providers[n]:void 0,k=e.provider?e.provider.split(":"):[],S=(0,s.jsx)(H.Z,{title:C?(0,s.jsx)("pre",{children:ew.default.dump(C)}):"",children:k.length>1?(0,s.jsxs)(s.Fragment,{children:[k[0],":",(0,s.jsx)("strong",{children:k.slice(1).join(":")})]}):(0,s.jsx)("strong",{children:e.provider})});return(0,s.jsxs)("div",{className:"output-header",children:[(0,s.jsxs)("div",{className:"pills",children:[e.provider?(0,s.jsx)("div",{className:"provider",children:S}):null,(0,s.jsx)("div",{className:"summary",children:(0,s.jsxs)("div",{className:"highlight ".concat(f?"success":""),children:[(0,s.jsxs)("strong",{children:[j,"% passing"]})," (",I[n],"/",Z.length," cases)"]})}),(null===(v=e.metrics)||void 0===v?void 0:v.namedScores)&&Object.keys(e.metrics.namedScores).length>0?(0,s.jsx)(eU,{lookup:e.metrics.namedScores,metricTotals:_,onSearchTextChange:p}):null]}),(0,s.jsx)(e6,{className:"prompt-container",text:e.label||e.display||e.raw,expandedText:e.raw,maxLength:t,resourceId:e.id}),w,"failures"===i&&(0,s.jsx)(eX.Z,{sx:{"& .MuiFormControlLabel-label":{fontSize:"0.75rem"}},control:(0,s.jsx)(F.Z,{checked:b,onChange:e=>h(y,e.target.checked)}),label:"Show failures"})]})},cell:e=>{var l,a;let r=z(e.row.index,n);return(0,s.jsx)(e7,{output:r,maxTextLength:t,rowIndex:e.row.index,promptIndex:n,onRating:w.bind(null,null!==(l=r.originalRowIndex)&&void 0!==l?l:e.row.index,null!==(a=r.originalPromptIndex)&&void 0!==a?a:n),firstOutput:B(e.row.index),showDiffs:"different"===i,searchText:c,showStats:d})}}))})],[Z.length,null==g?void 0:g.providers,O,o,i,B,z,w,b.prompts,L,t,_,P,T,I,h,p,c,d]),K=l.useMemo(()=>{let e=Z.some(e=>e.description);return e?{accessorFn:e=>e.description||"",id:"description",header:()=>(0,s.jsx)("span",{className:"font-bold",children:"Description"}),cell:e=>(0,s.jsx)("div",{className:"cell",children:(0,s.jsx)(eG,{text:String(e.getValue()),maxLength:t})}),size:50}:null},[Z,t]),G=l.useMemo(()=>{let e=[];return K&&e.push(K),e.push(...U,...Y),e},[K,U,Y]),q=(0,eO.b7)({data:S,columns:G,columnResizeMode:"onChange",getCoreRowModel:(0,eL.sC)(),getPaginationRowModel:(0,eL.G_)(),state:{columnVisibility:n,pagination:N}});return(0,s.jsxs)("div",{children:[(0,s.jsxs)("table",{className:"results-table firefox-fix ".concat(t<=25?"compact":""),style:{wordBreak:r},children:[(0,s.jsx)("thead",{children:q.getHeaderGroups().map(e=>(0,s.jsx)("tr",{className:"header",children:e.headers.map(e=>(0,s.jsxs)("th",{colSpan:e.colSpan,style:{width:e.getSize()},children:[e.isPlaceholder?null:(0,eO.ie)(e.column.columnDef.header,e.getContext()),(0,s.jsx)("div",{onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),className:"resizer ".concat(e.column.getIsResizing()?"isResizing":"")})]},e.id))},e.id))}),(0,s.jsx)("tbody",{children:q.getRowModel().rows.map((e,t)=>{let n=!1;return(0,s.jsx)("tr",{children:e.getVisibleCells().map(e=>{let l=e.column.id.startsWith("Variable")||"description"===e.column.id,a=!l&&!n;return a&&(n=!0),(0,s.jsx)("td",{style:{width:e.column.getSize()},className:"".concat(l?"variable":""," ").concat(0!==t||l?"":"first-prompt-row"," ").concat(a?"first-prompt-col":""),children:(0,eO.ie)(e.column.columnDef.cell,e.getContext())},e.id)})},e.id)})})]}),q.getPageCount()>1&&(0,s.jsxs)(R.Z,{className:"pagination",mx:1,sx:{display:"flex",alignItems:"center",gap:2},children:[(0,s.jsx)(D.Z,{onClick:()=>{E(e=>({...e,pageIndex:Math.max(e.pageIndex-1,0)})),window.scrollTo(0,0)},disabled:0===q.getState().pagination.pageIndex,variant:"contained",children:"Previous"}),(0,s.jsxs)(er.Z,{component:"span",sx:{display:"flex",alignItems:"center",gap:1},children:["Page",(0,s.jsx)(J.Z,{size:"small",type:"number",value:q.getState().pagination.pageIndex+1,onChange:e=>{let t=e.target.value?Number(e.target.value)-1:0;E(e=>({...e,pageIndex:Math.min(Math.max(t,0),q.getPageCount()-1)}))},InputProps:{style:{width:"60px",textAlign:"center"}},variant:"outlined"}),(0,s.jsxs)("span",{children:["of ",q.getPageCount()]})]}),(0,s.jsx)(D.Z,{onClick:()=>{E(e=>({...e,pageIndex:Math.min(e.pageIndex+1,q.getPageCount()-1)})),window.scrollTo(0,0)},disabled:q.getState().pagination.pageIndex+1>=q.getPageCount(),variant:"contained",children:"Next"}),(0,s.jsxs)(er.Z,{component:"span",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,s.jsxs)(V.Z,{value:N.pageSize,onChange:e=>{E({pageIndex:0,pageSize:Number(e.target.value)}),window.scrollTo(0,0)},displayEmpty:!0,inputProps:{"aria-label":"Results per page"},size:"small",sx:{m:1,minWidth:80},children:[(0,s.jsx)(W.Z,{value:10,children:"10"}),(0,s.jsx)(W.Z,{value:50,children:"50"}),(0,s.jsx)(W.Z,{value:100,children:"100"}),(0,s.jsx)(W.Z,{value:500,children:"500"}),(0,s.jsx)(W.Z,{value:1e3,children:"1000"})]}),(0,s.jsx)("span",{children:"results per page"})]})]}),(0,s.jsx)(eY,{})]})}),te=n(4451),tt=e=>{let{open:t,onClose:n}=e,{maxTextLength:l,setMaxTextLength:a,wordBreak:r,setWordBreak:i,showInferenceDetails:o,setShowInferenceDetails:c,renderMarkdown:d,setRenderMarkdown:u,prettifyJson:h,setPrettifyJson:p,showPrompts:m,setShowPrompts:x,showPassFail:v,setShowPassFail:g}=em();return(0,s.jsxs)(G.Z,{open:t,onClose:n,fullWidth:!0,maxWidth:"sm",children:[(0,s.jsx)($.Z,{children:"Table View Settings"}),(0,s.jsxs)(X.Z,{children:[(0,s.jsx)(R.Z,{children:(0,s.jsx)(H.Z,{title:"Forcing line breaks makes it easier to adjust column widths to your liking",placement:"right",children:(0,s.jsx)(eX.Z,{control:(0,s.jsx)(F.Z,{checked:"break-all"===r,onChange:e=>i(e.target.checked?"break-all":"break-word")}),label:"Force line breaks"})})}),(0,s.jsx)(R.Z,{children:(0,s.jsx)(eX.Z,{control:(0,s.jsx)(F.Z,{checked:d,onChange:e=>u(e.target.checked)}),label:"Render model outputs as Markdown"})}),(0,s.jsx)(R.Z,{children:(0,s.jsx)(eX.Z,{control:(0,s.jsx)(F.Z,{checked:h,onChange:e=>p(e.target.checked)}),label:"Prettify JSON outputs"})}),(0,s.jsx)(R.Z,{children:(0,s.jsx)(H.Z,{title:"Show the final prompt that produced the output in each cell.",placement:"right",children:(0,s.jsx)(eX.Z,{control:(0,s.jsx)(F.Z,{checked:m,onChange:e=>x(e.target.checked)}),label:"Show full prompt in output cell"})})}),(0,s.jsx)(R.Z,{children:(0,s.jsx)(H.Z,{title:"Show pass/fail status for each output.",placement:"right",children:(0,s.jsx)(eX.Z,{control:(0,s.jsx)(F.Z,{checked:v,onChange:e=>g(e.target.checked)}),label:"Show pass/fail status"})})}),(0,s.jsx)(R.Z,{children:(0,s.jsx)(H.Z,{title:"Show detailed inference statistics such as latency, tokens used, cost, etc.",placement:"right",children:(0,s.jsx)(eX.Z,{control:(0,s.jsx)(F.Z,{checked:o,onChange:e=>c(e.target.checked)}),label:"Show inference details"})})}),(0,s.jsxs)(R.Z,{maxWidth:"sm",children:[(0,s.jsxs)(er.Z,{mt:2,children:["Max text length: ",l]}),(0,s.jsx)(te.ZP,{min:25,max:1e3,value:l,onChange:(e,t)=>a(t)})]})]}),(0,s.jsx)(q.Z,{children:(0,s.jsx)(D.Z,{onClick:n,children:"Close"})})]})},tn=e=>{let{open:t,onClose:n,shareUrl:a}=e,r=(0,l.useRef)(null),[i,o]=(0,l.useState)(!1),c=()=>{n(),o(!1)};return(0,s.jsxs)(G.Z,{open:t,onClose:c,PaperProps:{style:{minWidth:"min(660px, 100%)"}},children:[(0,s.jsx)($.Z,{children:"Your eval is ready to share"}),(0,s.jsxs)(X.Z,{children:[(0,s.jsx)(J.Z,{inputRef:r,value:a,fullWidth:!0,InputProps:{readOnly:!0,endAdornment:(0,s.jsx)(ef.Z,{onClick:()=>{r.current&&(r.current.select(),document.execCommand("copy"),o(!0))},children:i?(0,s.jsx)(ev.Z,{}):(0,s.jsx)(ej.Z,{})})}}),(0,s.jsx)(e_.Z,{sx:{fontSize:"0.75rem"},children:"Shared URLs are deleted after 2 weeks."})]}),(0,s.jsx)(q.Z,{children:(0,s.jsx)(D.Z,{onClick:c,color:"primary",children:"Close"})})]})};n(58022);let ts=(0,_.Z)(B.Z)(e=>{let{theme:t}=e;return{maxWidth:"100%",flexWrap:"wrap",[t.breakpoints.down("sm")]:{flexDirection:"column"}}});function tl(e){var t;let{recentEvals:n,onRecentEvalSelected:r,defaultEvalId:i}=e,c=(0,g.useRouter)(),d=(0,g.useSearchParams)(),{author:u,table:h,setTable:m,config:v,setConfig:j,maxTextLength:B,wordBreak:_,showInferenceDetails:K,evalId:G,setInComparisonMode:q,columnStates:X,setColumnState:$}=em(),{setStateFromConfig:Q}=(0,y.o)(),[ee,et]=l.useState((null==d?void 0:d.get("search"))||""),[en]=(0,Y.Nr)(ee,1e3),es=e=>{et(e)},[el,ea]=l.useState({}),er=l.useCallback((e,t)=>{ea(n=>({...n,[e]:t}))},[ea]);(0,f.Z)(h,"Table data must be loaded before rendering ResultsView");let{head:ei}=h,[eo,ed]=l.useState("all"),[eu,eh]=l.useState(!1),[ep,ev]=l.useState(""),[eg,ej]=l.useState(!1),[ef,eb]=l.useState(null),{apiShareBaseUrl:eZ}=(0,b.Z)(),ew=(0,b.Y)(),eS=G||i||"default",eN=async()=>{ej(!0);let e="";try{if(p.T){let t=await fetch("".concat(eZ,"/api/eval"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:{version:2,createdAt:new Date().toISOString(),results:{table:h},config:v}})}),{id:n}=await t.json();e="".concat(ew,"/eval/").concat(n)}else e="".concat(window.location.host,"/eval/?evalId=").concat(eS);ev(e),eh(!0)}catch(e){alert("Sorry, something went wrong.")}finally{ej(!1)}},eE=async e=>{eb(null);try{var t;let n=await (0,a.t)("/results/".concat(e),{cache:"no-store"}),s=await n.json(),l=s.data.results.table,r={head:{prompts:[...h.head.prompts.map(e=>({...e,label:"[".concat(G||i||"Eval A","] ").concat(e.label||"")})),...l.head.prompts.map(t=>({...t,label:"[".concat(e,"] ").concat(t.label||"")}))],vars:h.head.vars},body:h.body.map((e,t)=>{var n;return{...e,outputs:[...e.outputs,...(null===(n=l.body[t])||void 0===n?void 0:n.outputs)||[]]}})};m(r),j({...v,...s.data.config,description:'Combined: "'.concat((null==v?void 0:v.description)||"Eval A",'" and "').concat((null===(t=s.data.config)||void 0===t?void 0:t.description)||"Eval B",'"')}),q(!0)}catch(e){console.error("Error fetching comparison eval:",e),alert("Failed to load comparison eval. Please try again.")}},eI=l.useMemo(()=>h.body.some(e=>e.description),[h.body]),eR=ei.prompts.map((e,t)=>{let n=e.label||e.display||e.raw;return{value:"Prompt ".concat(t+1),label:"Prompt ".concat(t+1,": ").concat(n&&n.length>100?n.slice(0,100)+"...":n||""),group:"Prompts"}}),eD=l.useMemo(()=>[...eI?[{value:"description",label:"Description"}]:[],...ei.vars.map((e,t)=>({value:"Variable ".concat(t+1),label:"Var ".concat(t+1,": ").concat(ei.vars[t].length>100?ei.vars[t].slice(0,97)+"...":ei.vars[t]),group:"Variables"})),...eR],[ei.vars,eR,eI]),[eF,eP]=l.useState(!1),[eT,eL]=l.useState(!1),eO=l.useMemo(()=>[...eI?["description"]:[],...ei.vars.map((e,t)=>"Variable ".concat(t+1)),...ei.prompts.map((e,t)=>"Prompt ".concat(t+1))],[eI,ei.vars,ei.prompts]),eA=X[eS]||{selectedColumns:[],columnVisibility:{}},eU=l.useCallback(e=>{let t={};eO.forEach(n=>{t[n]=e.includes(n)}),$(eS,{selectedColumns:e,columnVisibility:t})},[eO,$,eS]);l.useEffect(()=>{0!==eA.selectedColumns.length&&eA.selectedColumns.every(e=>eO.includes(e))||eU(eO)},[eO,eA.selectedColumns,eU]);let eW=l.useCallback(e=>{let t=Array.isArray(e.target.value)?e.target.value:e.target.value.split(",");eU(t)},[eU]),ez=async()=>{(0,f.Z)(v,"Config must be loaded before clicking its description");let e=window.prompt("Enter new description:",v.description);if(null!==e&&e!==v.description){let t={...v,description:e};try{let e=await (0,a.t)("/api/eval/".concat(G),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:t})});if(!e.ok)throw Error("Network response was not ok");j(t)}catch(e){console.error("Failed to update table:",e)}}},eV=async()=>{if(window.confirm("Are you sure you want to delete this evaluation?"))try{let e=await (0,a.t)("/eval/".concat(G),{method:"DELETE"});if(!e.ok)throw Error("Network response was not ok");c.push("/")}catch(e){console.error("Failed to delete evaluation:",e),alert("Failed to delete evaluation")}},[eB,eJ]=l.useState(!1),[eH,e_]=l.useState(!1),eY=async()=>{G&&(await navigator.clipboard.writeText(G),eJ(!0),setTimeout(()=>{eJ(!1)},1e3))};return(0,s.jsxs)("div",{style:{marginLeft:"1rem",marginRight:"1rem"},children:[(0,s.jsxs)(ts,{direction:"row",mb:3,spacing:1,alignItems:"center",className:"eval-header",children:[(0,s.jsxs)(R.Z,{sx:{display:"flex",alignItems:"center",width:"100%",maxWidth:250},children:[(0,s.jsx)(J.Z,{variant:"outlined",size:"small",fullWidth:!0,value:(null==v?void 0:v.description)||G||"",InputProps:{readOnly:!0,startAdornment:(0,s.jsx)(M.Z,{position:"start",children:(0,s.jsx)(E.Z,{})}),endAdornment:(0,s.jsx)(M.Z,{position:"end",children:(0,s.jsx)(Z.Z,{})})},onClick:()=>e_(!0),placeholder:"Search or select an eval...",sx:{cursor:"pointer"}}),(0,s.jsx)(ec,{open:eH,onClose:()=>e_(!1),recentEvals:n,onRecentEvalSelected:r,title:"Select an Eval"})]}),(null==v?void 0:v.description)&&G&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(H.Z,{title:"Click to copy",children:(0,s.jsx)(P.Z,{size:"small",label:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("strong",{children:"ID:"})," ",G]}),sx:{opacity:.7,cursor:"pointer"},onClick:eY})}),(0,s.jsx)(o.Z,{open:eB,autoHideDuration:1e3,onClose:()=>eJ(!1),message:"Eval id copied to clipboard"})]}),(0,s.jsx)(H.Z,{title:u?"":"Set eval author with `promptfoo config set email`",children:(0,s.jsx)(P.Z,{size:"small",label:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("strong",{children:"Author:"})," ",u||"Unknown"]}),sx:{opacity:.7}})}),Object.keys((null==v?void 0:v.tags)||{}).map(e=>{var t;return(0,s.jsx)(P.Z,{size:"small",label:"".concat(e,": ").concat(null==v?void 0:null===(t=v.tags)||void 0===t?void 0:t[e]),sx:{opacity:.7}},e)})]}),(0,s.jsxs)(ts,{direction:"row",spacing:1,alignItems:"center",children:[(0,s.jsx)(R.Z,{children:(0,s.jsxs)(T.Z,{sx:{minWidth:200,maxWidth:350},size:"small",children:[(0,s.jsx)(L.Z,{id:"visible-columns-label",children:"Columns"}),(0,s.jsx)(V.Z,{labelId:"visible-columns-label",id:"visible-columns",multiple:!0,value:eA.selectedColumns,onChange:eW,input:(0,s.jsx)(z.Z,{label:"Visible columns"}),renderValue:e=>e.join(", "),children:eD.map(e=>(0,s.jsxs)(W.Z,{dense:!0,value:e.value,children:[(0,s.jsx)(F.Z,{checked:eA.selectedColumns.includes(e.value)}),(0,s.jsx)(A.Z,{primary:e.label})]},e.value))})]})}),(0,s.jsx)(R.Z,{children:(0,s.jsxs)(T.Z,{sx:{minWidth:180},size:"small",children:[(0,s.jsx)(L.Z,{id:"failure-filter-mode-label",children:"Display"}),(0,s.jsxs)(V.Z,{labelId:"filter-mode-label",id:"filter-mode",value:eo,onChange:e=>{let t=e.target.value;ed(t);let n={};ei.prompts.forEach((e,s)=>{n["Prompt ".concat(s+1)]="failures"===t}),ea(n)},label:"Filter",children:[(0,s.jsx)(W.Z,{value:"all",children:"Show all results"}),(0,s.jsx)(W.Z,{value:"failures",children:"Show failures only"}),(0,s.jsx)(W.Z,{value:"different",children:"Show different only"}),(0,s.jsx)(W.Z,{value:"highlights",children:"Show highlights only"})]})]})}),(0,s.jsx)(R.Z,{children:(0,s.jsx)(J.Z,{sx:{minWidth:180},size:"small",label:"Search",placeholder:"Text or regex",value:ee,onChange:e=>es(e.target.value)})}),(0,s.jsx)(R.Z,{flexGrow:1}),(0,s.jsx)(R.Z,{display:"flex",justifyContent:"flex-end",children:(0,s.jsxs)(ts,{direction:"row",spacing:2,children:[(0,s.jsx)(D.Z,{color:"primary",onClick:e=>{eb(e.currentTarget)},startIcon:(0,s.jsx)(Z.Z,{}),children:"Eval actions"}),v&&(0,s.jsxs)(U.Z,{id:"eval-actions-menu",anchorEl:ef,keepMounted:!0,open:!!ef,onClose:()=>{eb(null)},children:[(0,s.jsx)(H.Z,{title:"Edit the name of this eval",placement:"left",children:(0,s.jsxs)(W.Z,{onClick:ez,children:[(0,s.jsx)(O.Z,{children:(0,s.jsx)(C.Z,{fontSize:"small"})}),"Edit name"]})}),(0,s.jsx)(H.Z,{title:"Edit this eval in the web UI",placement:"left",children:(0,s.jsxs)(W.Z,{onClick:()=>{Q(v),c.push("/setup/")},children:[(0,s.jsx)(O.Z,{children:(0,s.jsx)(k.Z,{fontSize:"small"})}),"Edit and re-run"]})}),(0,s.jsx)(ex,{initialEvals:n,onComparisonEvalSelected:eE}),(0,s.jsx)(H.Z,{title:"View the configuration that defines this eval",placement:"left",children:(0,s.jsxs)(W.Z,{onClick:()=>eP(!0),children:[(0,s.jsx)(O.Z,{children:(0,s.jsx)(I.Z,{fontSize:"small"})}),"View YAML"]})}),(0,s.jsx)(eC,{}),(null==v?void 0:v.sharing)&&(0,s.jsx)(H.Z,{title:"Generate a unique URL that others can access",placement:"left",children:(0,s.jsxs)(W.Z,{onClick:eN,disabled:eg,children:[(0,s.jsx)(O.Z,{children:eg?(0,s.jsx)(x.Z,{size:16}):(0,s.jsx)(N.Z,{fontSize:"small"})}),"Share"]})}),(0,s.jsx)(H.Z,{title:"Delete this eval",placement:"left",children:(0,s.jsxs)(W.Z,{onClick:eV,children:[(0,s.jsx)(O.Z,{children:(0,s.jsx)(w.Z,{fontSize:"small"})}),"Delete"]})})]}),(0,s.jsx)(H.Z,{title:"Edit table view settings",placement:"bottom",children:(0,s.jsx)(D.Z,{color:"primary",onClick:()=>eL(!0),startIcon:(0,s.jsx)(S.Z,{}),children:"Table Settings"})}),((null==v?void 0:v.redteam)||(null==v?void 0:null===(t=v.metadata)||void 0===t?void 0:t.redteam))&&(0,s.jsx)(H.Z,{title:"View vulnerability scan report",placement:"bottom",children:(0,s.jsx)(D.Z,{color:"primary",variant:"contained",startIcon:(0,s.jsx)(I.Z,{}),onClick:()=>c.push("/report/?evalId=".concat(G||i)),children:"Vulnerability Report"})})]})})]}),(0,s.jsx)(eM,{columnVisibility:eA.columnVisibility}),(0,s.jsx)(e9,{maxTextLength:B,columnVisibility:eA.columnVisibility,wordBreak:_,showStats:K,filterMode:eo,failureFilter:el,searchText:en,onFailureFilterToggle:er,onSearchTextChange:es}),(0,s.jsx)(ey,{open:eF,onClose:()=>eP(!1)}),(0,s.jsx)(tn,{open:eu,onClose:()=>eh(!1),shareUrl:ep}),(0,s.jsx)(tt,{open:eT,onClose:()=>eL(!1)}),(0,s.jsx)(ek,{recentEvals:n,onRecentEvalSelected:r})]})}async function ta(){let e=(0,v.createClientComponentClient)(),{data:{user:t}}=await e.auth.getUser();(0,f.Z)(t,"User not logged in");let{data:n}=await e.from("EvaluationResult").select("id, createdAt").eq("user_id",t.id).order("createdAt",{ascending:!1}).limit(100);return n||[]}async function tr(e){let t=(0,v.createClientComponentClient)(),{data:n}=await t.from("EvaluationResult").select("*").eq("id",e).single();return n}function ti(e){var t;let{fetchId:n,preloadedData:r,recentEvals:o,defaultEvalId:c}=e,d=(0,g.useRouter)(),{apiBaseUrl:u}=(0,m.Z)(),{table:v,setTable:y,config:b,setConfig:Z,evalId:w,setEvalId:C,setAuthor:k,setInComparisonMode:S}=em(),[N,E]=l.useState(!1),[I,R]=l.useState(!1),[D,F]=l.useState(o||[]),P=async()=>{let e=await (0,a.t)("/results",{cache:"no-store"});if(!e.ok){R(!0);return}let t=await e.json();return F(t.data),t.data},T=l.useCallback(async e=>{let t=await (0,a.t)("/results/".concat(e),{cache:"no-store"}),n=await t.json();y(n.data.results.table),Z(n.data.config),k(n.data.author),C(e)},[y,Z,C,k]),M=async e=>{p.O?(E(!1),d.push("/eval/remote:".concat(encodeURIComponent(e)))):d.push("/eval/".concat(encodeURIComponent(e)))},[L,O]=l.useState(c||(null===(t=D[0])||void 0===t?void 0:t.evalId)),A=(0,g.useSearchParams)(),U=A?A.get("evalId"):null;return(l.useEffect(()=>{let e=U||n;if(e){console.log("Eval init: Fetching eval by id",{searchEvalId:U,fetchId:n});let t=async()=>{await T(e),E(!0),O(e),P()};t()}else if(r){var t;console.log("Eval init: Using preloaded data"),y(null===(t=r.data.results)||void 0===t?void 0:t.table),Z(r.data.config),k(r.data.author||null),E(!0)}else if(p.T){console.log("Eval init: Using local server websocket");let e=(0,j.io)(u||"");return e.on("init",e=>{console.log("Initialized socket connection",e),E(!0),y(null==e?void 0:e.results.table),Z(null==e?void 0:e.config),k((null==e?void 0:e.author)||null),P().then(e=>{if(e&&e.length>0){var t,n,s;O(null===(t=e[0])||void 0===t?void 0:t.evalId),C(null===(n=e[0])||void 0===n?void 0:n.evalId),console.log("setting default eval id",null===(s=e[0])||void 0===s?void 0:s.evalId)}})}),e.on("update",e=>{console.log("Received data update",e),y(e.results.table),Z(e.config),k(e.author||null),P().then(e=>{if(e&&e.length>0){var t;let n=null===(t=e[0])||void 0===t?void 0:t.evalId;n&&(O(n),C(n))}})}),()=>{e.disconnect()}}else if(p.O)console.log("Eval init: Using Supabase"),ta().then(e=>{F(e.map(e=>({evalId:e.id,datasetId:null,label:e.createdAt,createdAt:new Date(e.createdAt).getTime(),description:"None",numTests:-1}))),e.length>0&&tr(e[0].id).then(t=>{(0,f.Z)(t,"Eval not found");let n=t.results,s=t.config;O(e[0].id),y(n.table),Z(s),k(null),E(!0)})});else{console.log("Eval init: Fetching eval via recent");let e=async()=>{let e=await P();if(!e||!(e.length>0))return(0,s.jsx)("div",{className:"notice",children:"No evals yet. Share some evals to this server and they will appear here."});{let t=e[0].evalId,n=await (0,a.t)("/results/".concat(t)),s=await n.json();y(s.data.results.table),Z(s.data.config),k(s.data.author||null),E(!0),O(t),C(t)}};e()}S(!1)},[u,n,y,Z,k,C,T,r,O,U,S]),l.useEffect(()=>{document.title="".concat((null==b?void 0:b.description)||w||"Eval"," | promptfoo")},[b,w]),I)?(0,s.jsx)("div",{className:"notice",children:"404 Eval not found"}):N&&v?(0,s.jsx)(h,{children:(0,s.jsx)(i,{children:(0,s.jsx)(tl,{defaultEvalId:L,recentEvals:D,onRecentEvalSelected:M})})}):(0,s.jsxs)("div",{className:"notice",children:[(0,s.jsx)("div",{children:(0,s.jsx)(x.Z,{size:22})}),(0,s.jsx)("div",{children:"Waiting for eval data"})]})}n(94455)},52428:function(e,t,n){"use strict";n.d(t,{O:function(){return a},T:function(){return l}});var s=n(77580);let l=!s.env.NEXT_PUBLIC_HOSTED,a=!!s.env.NEXT_PUBLIC_PROMPTFOO_USE_SUPABASE},82911:function(e,t,n){"use strict";var s=n(94660),l=n(74810);let a=(0,s.Ue)()((0,l.tJ)(e=>({apiBaseUrl:"",setApiBaseUrl:t=>e({apiBaseUrl:t}),fetchingPromise:null,setFetchingPromise:t=>e({fetchingPromise:t})}),{name:"api-config-storage",partialize:e=>({apiBaseUrl:e.apiBaseUrl})}));t.Z=a},47887:function(e,t,n){"use strict";n.d(t,{o:function(){return a}});var s=n(94660),l=n(74810);let a=(0,s.Ue)()((0,l.tJ)((e,t)=>({env:{},testCases:[],description:"",providers:[],prompts:[],defaultTest:{},evaluateOptions:{},scenarios:[],setEnv:t=>e({env:t}),setTestCases:t=>e({testCases:t}),setDescription:t=>e({description:t}),setProviders:t=>e({providers:t}),setPrompts:t=>e({prompts:t}),setDefaultTest:t=>e({defaultTest:t}),setEvaluateOptions:t=>e({evaluateOptions:t}),setScenarios:t=>e({scenarios:t}),setStateFromConfig:t=>{let n={};t.description&&(n.description=t.description||""),t.tests&&(n.testCases=t.tests),t.providers&&(n.providers=t.providers),t.prompts&&("string"==typeof t.prompts?n.prompts=[t.prompts]:Array.isArray(t.prompts)?n.prompts=t.prompts.filter(e=>"string"==typeof e&&!e.endsWith(".txt")&&!e.endsWith(".json")&&!e.endsWith(".yaml")):console.warn("Invalid prompts config",t.prompts)),t.defaultTest&&(n.defaultTest=t.defaultTest),t.evaluateOptions&&(n.evaluateOptions=t.evaluateOptions),t.scenarios&&(n.scenarios=t.scenarios),e(n)},getTestSuite:()=>{let{description:e,testCases:n,providers:s,prompts:l,env:a,scenarios:r}=t();return{env:a,description:e,providers:s,prompts:l,tests:n,scenarios:r}}}),{name:"promptfoo",skipHydration:!0}))},88270:function(e,t,n){"use strict";n.d(t,{Y:function(){return r}});var s=n(94660),l=n(74810);let a=(0,s.Ue)()((0,l.tJ)(e=>({apiShareBaseUrl:"https://api.promptfoo.dev",setApiShareBaseUrl:t=>e({apiShareBaseUrl:t}),appShareBaseUrl:"https://app.promptfoo.dev",setAppShareBaseUrl:t=>e({appShareBaseUrl:t})}),{name:"share-config-storage"}));function r(){let{appShareBaseUrl:e}=a();return e||"".concat(window.location.protocol,"//").concat(window.location.host)}t.Z=a},55974:function(){},94455:function(){},16658:function(){},93207:function(){},58022:function(){}}]);
@@ -0,0 +1,17 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[88],{79245:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(79042),o=n(94312),i=n(14978),a=n(53468),s=n(70574),l=n(87947),f=n(43381),u=n(95270),c=n(24004);let p=["className","component"];var d=n(25097),m=n(30606),h=n(53469),v=n(26520);let g=(0,v.Z)("MuiBox",["root"]),y=(0,m.Z)(),b=function(e={}){let{themeId:t,defaultTheme:n,defaultClassName:d="MuiBox-root",generateClassName:m}=e,h=(0,s.default)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.Z),v=i.forwardRef(function(e,i){let s=(0,u.Z)(n),l=(0,f.Z)(e),{className:v,component:g="div"}=l,y=(0,o.Z)(l,p);return(0,c.jsx)(h,(0,r.Z)({as:g,ref:i,className:(0,a.Z)(v,m?m(d):d),theme:t&&s[t]||s},y))});return v}({themeId:h.Z,defaultTheme:y,defaultClassName:g.root,generateClassName:d.Z.generate});var w=b},65366:function(e,t,n){n.d(t,{Z:function(){return eI}});var r,o,i,a,s,l=n(79042),f=n(94312),u=n(81150),c=n(14978),p=n(95137),d=n(1091),m=n(96278);function h(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function v(e){var t=h(e).Element;return e instanceof t||e instanceof Element}function g(e){var t=h(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function y(e){if("undefined"==typeof ShadowRoot)return!1;var t=h(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var b=Math.max,w=Math.min,x=Math.round;function O(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function E(){return!/^((?!chrome|android).)*safari/i.test(O())}function S(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),o=1,i=1;t&&g(e)&&(o=e.offsetWidth>0&&x(r.width)/e.offsetWidth||1,i=e.offsetHeight>0&&x(r.height)/e.offsetHeight||1);var a=(v(e)?h(e):window).visualViewport,s=!E()&&n,l=(r.left+(s&&a?a.offsetLeft:0))/o,f=(r.top+(s&&a?a.offsetTop:0))/i,u=r.width/o,c=r.height/i;return{width:u,height:c,top:f,right:l+u,bottom:f+c,left:l,x:l,y:f}}function j(e){var t=h(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function P(e){return e?(e.nodeName||"").toLowerCase():null}function D(e){return((v(e)?e.ownerDocument:e.document)||window.document).documentElement}function Z(e){return S(D(e)).left+j(e).scrollLeft}function R(e){return h(e).getComputedStyle(e)}function A(e){var t=R(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function M(e){var t=S(e),n=e.offsetWidth,r=e.offsetHeight;return 1>=Math.abs(t.width-n)&&(n=t.width),1>=Math.abs(t.height-r)&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function k(e){return"html"===P(e)?e:e.assignedSlot||e.parentNode||(y(e)?e.host:null)||D(e)}function T(e,t){void 0===t&&(t=[]);var n,r=function e(t){return["html","body","#document"].indexOf(P(t))>=0?t.ownerDocument.body:g(t)&&A(t)?t:e(k(t))}(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),i=h(r),a=o?[i].concat(i.visualViewport||[],A(r)?r:[]):r,s=t.concat(a);return o?s:s.concat(T(k(a)))}function W(e){return g(e)&&"fixed"!==R(e).position?e.offsetParent:null}function H(e){for(var t=h(e),n=W(e);n&&["table","td","th"].indexOf(P(n))>=0&&"static"===R(n).position;)n=W(n);return n&&("html"===P(n)||"body"===P(n)&&"static"===R(n).position)?t:n||function(e){var t=/firefox/i.test(O());if(/Trident/i.test(O())&&g(e)&&"fixed"===R(e).position)return null;var n=k(e);for(y(n)&&(n=n.host);g(n)&&0>["html","body"].indexOf(P(n));){var r=R(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}var I="bottom",L="right",B="left",z="auto",C=["top",I,L,B],N="start",V="viewport",_="popper",q=C.reduce(function(e,t){return e.concat([t+"-"+N,t+"-end"])},[]),F=[].concat(C,[z]).reduce(function(e,t){return e.concat([t,t+"-"+N,t+"-end"])},[]),U=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"],J={placement:"bottom",modifiers:[],strategy:"absolute"};function X(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some(function(e){return!(e&&"function"==typeof e.getBoundingClientRect)})}var Y={passive:!0};function $(e){return e.split("-")[0]}function G(e){return e.split("-")[1]}function K(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Q(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?$(o):null,a=o?G(o):null,s=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(i){case"top":t={x:s,y:n.y-r.height};break;case I:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:l};break;case B:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var f=i?K(i):null;if(null!=f){var u="y"===f?"height":"width";switch(a){case N:t[f]=t[f]-(n[u]/2-r[u]/2);break;case"end":t[f]=t[f]+(n[u]/2-r[u]/2)}}return t}var ee={top:"auto",right:"auto",bottom:"auto",left:"auto"};function et(e){var t,n,r,o,i,a,s,l=e.popper,f=e.popperRect,u=e.placement,c=e.variation,p=e.offsets,d=e.position,m=e.gpuAcceleration,v=e.adaptive,g=e.roundOffsets,y=e.isFixed,b=p.x,w=void 0===b?0:b,O=p.y,E=void 0===O?0:O,S="function"==typeof g?g({x:w,y:E}):{x:w,y:E};w=S.x,E=S.y;var j=p.hasOwnProperty("x"),P=p.hasOwnProperty("y"),Z=B,A="top",M=window;if(v){var k=H(l),T="clientHeight",W="clientWidth";k===h(l)&&"static"!==R(k=D(l)).position&&"absolute"===d&&(T="scrollHeight",W="scrollWidth"),("top"===u||(u===B||u===L)&&"end"===c)&&(A=I,E-=(y&&k===M&&M.visualViewport?M.visualViewport.height:k[T])-f.height,E*=m?1:-1),(u===B||("top"===u||u===I)&&"end"===c)&&(Z=L,w-=(y&&k===M&&M.visualViewport?M.visualViewport.width:k[W])-f.width,w*=m?1:-1)}var z=Object.assign({position:d},v&&ee),C=!0===g?(t={x:w,y:E},n=h(l),r=t.x,o=t.y,{x:x(r*(i=n.devicePixelRatio||1))/i||0,y:x(o*i)/i||0}):{x:w,y:E};return(w=C.x,E=C.y,m)?Object.assign({},z,((s={})[A]=P?"0":"",s[Z]=j?"0":"",s.transform=1>=(M.devicePixelRatio||1)?"translate("+w+"px, "+E+"px)":"translate3d("+w+"px, "+E+"px, 0)",s)):Object.assign({},z,((a={})[A]=P?E+"px":"",a[Z]=j?w+"px":"",a.transform="",a))}var en={left:"right",right:"left",bottom:"top",top:"bottom"};function er(e){return e.replace(/left|right|bottom|top/g,function(e){return en[e]})}var eo={start:"end",end:"start"};function ei(e){return e.replace(/start|end/g,function(e){return eo[e]})}function ea(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&y(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function es(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function el(e,t,n){var r,o,i,a,s,l,f,u,c,p;return t===V?es(function(e,t){var n=h(e),r=D(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,l=0;if(o){i=o.width,a=o.height;var f=E();(f||!f&&"fixed"===t)&&(s=o.offsetLeft,l=o.offsetTop)}return{width:i,height:a,x:s+Z(e),y:l}}(e,n)):v(t)?((r=S(t,!1,"fixed"===n)).top=r.top+t.clientTop,r.left=r.left+t.clientLeft,r.bottom=r.top+t.clientHeight,r.right=r.left+t.clientWidth,r.width=t.clientWidth,r.height=t.clientHeight,r.x=r.left,r.y=r.top,r):es((o=D(e),a=D(o),s=j(o),l=null==(i=o.ownerDocument)?void 0:i.body,f=b(a.scrollWidth,a.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),u=b(a.scrollHeight,a.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),c=-s.scrollLeft+Z(o),p=-s.scrollTop,"rtl"===R(l||a).direction&&(c+=b(a.clientWidth,l?l.clientWidth:0)-f),{width:f,height:u,x:c,y:p}))}function ef(){return{top:0,right:0,bottom:0,left:0}}function eu(e){return Object.assign({},ef(),e)}function ec(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}function ep(e,t){void 0===t&&(t={});var n,r,o,i,a,s,l,f=t,u=f.placement,c=void 0===u?e.placement:u,p=f.strategy,d=void 0===p?e.strategy:p,m=f.boundary,h=f.rootBoundary,y=f.elementContext,x=void 0===y?_:y,O=f.altBoundary,E=f.padding,j=void 0===E?0:E,Z=eu("number"!=typeof j?j:ec(j,C)),A=e.rects.popper,M=e.elements[void 0!==O&&O?x===_?"reference":_:x],W=(n=v(M)?M:M.contextElement||D(e.elements.popper),s=(a=[].concat("clippingParents"===(r=void 0===m?"clippingParents":m)?(o=T(k(n)),v(i=["absolute","fixed"].indexOf(R(n).position)>=0&&g(n)?H(n):n)?o.filter(function(e){return v(e)&&ea(e,i)&&"body"!==P(e)}):[]):[].concat(r),[void 0===h?V:h]))[0],(l=a.reduce(function(e,t){var r=el(n,t,d);return e.top=b(r.top,e.top),e.right=w(r.right,e.right),e.bottom=w(r.bottom,e.bottom),e.left=b(r.left,e.left),e},el(n,s,d))).width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l),B=S(e.elements.reference),z=Q({reference:B,element:A,strategy:"absolute",placement:c}),N=es(Object.assign({},A,z)),q=x===_?N:B,F={top:W.top-q.top+Z.top,bottom:q.bottom-W.bottom+Z.bottom,left:W.left-q.left+Z.left,right:q.right-W.right+Z.right},U=e.modifiersData.offset;if(x===_&&U){var J=U[c];Object.keys(F).forEach(function(e){var t=[L,I].indexOf(e)>=0?1:-1,n=["top",I].indexOf(e)>=0?"y":"x";F[e]+=J[n]*t})}return F}function ed(e,t,n){return b(e,w(t,n))}function em(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function eh(e){return["top",L,I,B].some(function(t){return e[t]>=0})}var ev=(i=void 0===(o=(r={defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,i=void 0===o||o,a=r.resize,s=void 0===a||a,l=h(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&f.forEach(function(e){e.addEventListener("scroll",n.update,Y)}),s&&l.addEventListener("resize",n.update,Y),function(){i&&f.forEach(function(e){e.removeEventListener("scroll",n.update,Y)}),s&&l.removeEventListener("resize",n.update,Y)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=Q({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=n.adaptive,i=n.roundOffsets,a=void 0===i||i,s={placement:$(t.placement),variation:G(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:void 0===r||r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,et(Object.assign({},s,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:void 0===o||o,roundOffsets:a})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,et(Object.assign({},s,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:a})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];g(o)&&P(o)&&(Object.assign(o.style,n),Object.keys(r).forEach(function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]="",e},{});g(r)&&P(r)&&(Object.assign(r.style,i),Object.keys(o).forEach(function(e){r.removeAttribute(e)}))})}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=F.reduce(function(e,n){var r,o,a,s,l,f;return e[n]=(r=t.rects,a=[B,"top"].indexOf(o=$(n))>=0?-1:1,l=(s="function"==typeof i?i(Object.assign({},r,{placement:n})):i)[0],f=s[1],l=l||0,f=(f||0)*a,[B,L].indexOf(o)>=0?{x:f,y:l}:{x:l,y:f}),e},{}),s=a[t.placement],l=s.x,f=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=f),t.modifiersData[r]=a}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,l=n.fallbackPlacements,f=n.padding,u=n.boundary,c=n.rootBoundary,p=n.altBoundary,d=n.flipVariations,m=void 0===d||d,h=n.allowedAutoPlacements,v=t.options.placement,g=$(v)===v,y=l||(g||!m?[er(v)]:function(e){if($(e)===z)return[];var t=er(e);return[ei(e),t,ei(t)]}(v)),b=[v].concat(y).reduce(function(e,n){var r,o,i,a,s,l,p,d,v,g,y,b;return e.concat($(n)===z?(o=(r={placement:n,boundary:u,rootBoundary:c,padding:f,flipVariations:m,allowedAutoPlacements:h}).placement,i=r.boundary,a=r.rootBoundary,s=r.padding,l=r.flipVariations,d=void 0===(p=r.allowedAutoPlacements)?F:p,0===(y=(g=(v=G(o))?l?q:q.filter(function(e){return G(e)===v}):C).filter(function(e){return d.indexOf(e)>=0})).length&&(y=g),Object.keys(b=y.reduce(function(e,n){return e[n]=ep(t,{placement:n,boundary:i,rootBoundary:a,padding:s})[$(n)],e},{})).sort(function(e,t){return b[e]-b[t]})):n)},[]),w=t.rects.reference,x=t.rects.popper,O=new Map,E=!0,S=b[0],j=0;j<b.length;j++){var P=b[j],D=$(P),Z=G(P)===N,R=["top",I].indexOf(D)>=0,A=R?"width":"height",M=ep(t,{placement:P,boundary:u,rootBoundary:c,altBoundary:p,padding:f}),k=R?Z?L:B:Z?I:"top";w[A]>x[A]&&(k=er(k));var T=er(k),W=[];if(i&&W.push(M[D]<=0),s&&W.push(M[k]<=0,M[T]<=0),W.every(function(e){return e})){S=P,E=!1;break}O.set(P,W)}if(E)for(var H=m?3:1,V=function(e){var t=b.find(function(t){var n=O.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return S=t,"break"},_=H;_>0&&"break"!==V(_);_--);t.placement!==S&&(t.modifiersData[r]._skip=!0,t.placement=S,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,i=n.altAxis,a=n.boundary,s=n.rootBoundary,l=n.altBoundary,f=n.padding,u=n.tether,c=void 0===u||u,p=n.tetherOffset,d=void 0===p?0:p,m=ep(t,{boundary:a,rootBoundary:s,padding:f,altBoundary:l}),h=$(t.placement),v=G(t.placement),g=!v,y=K(h),x="x"===y?"y":"x",O=t.modifiersData.popperOffsets,E=t.rects.reference,S=t.rects.popper,j="function"==typeof d?d(Object.assign({},t.rects,{placement:t.placement})):d,P="number"==typeof j?{mainAxis:j,altAxis:j}:Object.assign({mainAxis:0,altAxis:0},j),D=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,Z={x:0,y:0};if(O){if(void 0===o||o){var R,A="y"===y?"top":B,k="y"===y?I:L,T="y"===y?"height":"width",W=O[y],z=W+m[A],C=W-m[k],V=c?-S[T]/2:0,_=v===N?E[T]:S[T],q=v===N?-S[T]:-E[T],F=t.elements.arrow,U=c&&F?M(F):{width:0,height:0},J=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:ef(),X=J[A],Y=J[k],Q=ed(0,E[T],U[T]),ee=g?E[T]/2-V-Q-X-P.mainAxis:_-Q-X-P.mainAxis,et=g?-E[T]/2+V+Q+Y+P.mainAxis:q+Q+Y+P.mainAxis,en=t.elements.arrow&&H(t.elements.arrow),er=en?"y"===y?en.clientTop||0:en.clientLeft||0:0,eo=null!=(R=null==D?void 0:D[y])?R:0,ei=W+ee-eo-er,ea=W+et-eo,es=ed(c?w(z,ei):z,W,c?b(C,ea):C);O[y]=es,Z[y]=es-W}if(void 0!==i&&i){var el,eu,ec="x"===y?"top":B,em="x"===y?I:L,eh=O[x],ev="y"===x?"height":"width",eg=eh+m[ec],ey=eh-m[em],eb=-1!==["top",B].indexOf(h),ew=null!=(eu=null==D?void 0:D[x])?eu:0,ex=eb?eg:eh-E[ev]-S[ev]-ew+P.altAxis,eO=eb?eh+E[ev]+S[ev]-ew-P.altAxis:ey,eE=c&&eb?(el=ed(ex,eh,eO))>eO?eO:el:ed(c?ex:eg,eh,c?eO:ey);O[x]=eE,Z[x]=eE-eh}t.modifiersData[r]=Z}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n,r=e.state,o=e.name,i=e.options,a=r.elements.arrow,s=r.modifiersData.popperOffsets,l=$(r.placement),f=K(l),u=[B,L].indexOf(l)>=0?"height":"width";if(a&&s){var c=eu("number"!=typeof(t="function"==typeof(t=i.padding)?t(Object.assign({},r.rects,{placement:r.placement})):t)?t:ec(t,C)),p=M(a),d="y"===f?"top":B,m="y"===f?I:L,h=r.rects.reference[u]+r.rects.reference[f]-s[f]-r.rects.popper[u],v=s[f]-r.rects.reference[f],g=H(a),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=c[d],w=y-p[u]-c[m],x=y/2-p[u]/2+(h/2-v/2),O=ed(b,x,w);r.modifiersData[o]=((n={})[f]=O,n.centerOffset=O-x,n)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&ea(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=ep(t,{elementContext:"reference"}),s=ep(t,{altBoundary:!0}),l=em(a,r),f=em(s,o,i),u=eh(l),c=eh(f);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:f,isReferenceHidden:u,hasPopperEscaped:c},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":c})}}]}).defaultModifiers)?[]:o,s=void 0===(a=r.defaultOptions)?J:a,function(e,t,n){void 0===n&&(n=s);var r,o={placement:"bottom",orderedModifiers:[],options:Object.assign({},J,s),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},a=[],l=!1,f={state:o,setOptions:function(n){var r,l,c,p,d,m="function"==typeof n?n(o.options):n;u(),o.options=Object.assign({},s,o.options,m),o.scrollParents={reference:v(e)?T(e):e.contextElement?T(e.contextElement):[],popper:T(t)};var h=(l=Object.keys(r=[].concat(i,o.options.modifiers).reduce(function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e},{})).map(function(e){return r[e]}),c=new Map,p=new Set,d=[],l.forEach(function(e){c.set(e.name,e)}),l.forEach(function(e){p.has(e.name)||function e(t){p.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!p.has(t)){var n=c.get(t);n&&e(n)}}),d.push(t)}(e)}),U.reduce(function(e,t){return e.concat(d.filter(function(e){return e.phase===t}))},[]));return o.orderedModifiers=h.filter(function(e){return e.enabled}),o.orderedModifiers.forEach(function(e){var t=e.name,n=e.options,r=e.effect;if("function"==typeof r){var i=r({state:o,name:t,instance:f,options:void 0===n?{}:n});a.push(i||function(){})}}),f.update()},forceUpdate:function(){if(!l){var e,t,n,r,i,a,s,u,c,p,d,m,v=o.elements,y=v.reference,b=v.popper;if(X(y,b)){o.rects={reference:(t=H(b),n="fixed"===o.options.strategy,r=g(t),u=g(t)&&(a=x((i=t.getBoundingClientRect()).width)/t.offsetWidth||1,s=x(i.height)/t.offsetHeight||1,1!==a||1!==s),c=D(t),p=S(y,u,n),d={scrollLeft:0,scrollTop:0},m={x:0,y:0},(r||!r&&!n)&&(("body"!==P(t)||A(c))&&(d=(e=t)!==h(e)&&g(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:j(e)),g(t)?(m=S(t,!0),m.x+=t.clientLeft,m.y+=t.clientTop):c&&(m.x=Z(c))),{x:p.left+d.scrollLeft-m.x,y:p.top+d.scrollTop-m.y,width:p.width,height:p.height}),popper:M(b)},o.reset=!1,o.placement=o.options.placement,o.orderedModifiers.forEach(function(e){return o.modifiersData[e.name]=Object.assign({},e.data)});for(var w=0;w<o.orderedModifiers.length;w++){if(!0===o.reset){o.reset=!1,w=-1;continue}var O=o.orderedModifiers[w],E=O.fn,R=O.options,k=void 0===R?{}:R,T=O.name;"function"==typeof E&&(o=E({state:o,options:k,name:T,instance:f})||o)}}}},update:function(){return r||(r=new Promise(function(e){Promise.resolve().then(function(){r=void 0,e(new Promise(function(e){f.forceUpdate(),e(o)}))})})),r},destroy:function(){u(),l=!0}};if(!X(e,t))return f;function u(){a.forEach(function(e){return e()}),a=[]}return f.setOptions(n).then(function(e){!l&&n.onFirstUpdate&&n.onFirstUpdate(e)}),f}),eg=n(95600),ey=n(73208),eb=n(89404),ew=n(26520),ex=n(25702);function eO(e){return(0,ex.ZP)("MuiPopper",e)}(0,ew.Z)("MuiPopper",["root"]);var eE=n(24004);let eS=["anchorEl","children","direction","disablePortal","modifiers","open","placement","popperOptions","popperRef","slotProps","slots","TransitionProps","ownerState"],ej=["anchorEl","children","container","direction","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition","slotProps","slots"];function eP(e){return"function"==typeof e?e():e}let eD=e=>{let{classes:t}=e;return(0,eg.Z)({root:["root"]},eO,t)},eZ={},eR=c.forwardRef(function(e,t){var n;let{anchorEl:r,children:o,direction:i,disablePortal:a,modifiers:s,open:u,placement:m,popperOptions:h,popperRef:v,slotProps:g={},slots:y={},TransitionProps:b}=e,w=(0,f.Z)(e,eS),x=c.useRef(null),O=(0,p.Z)(x,t),E=c.useRef(null),S=(0,p.Z)(E,v),j=c.useRef(S);(0,d.Z)(()=>{j.current=S},[S]),c.useImperativeHandle(v,()=>E.current,[]);let P=function(e,t){if("ltr"===t)return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}(m,i),[D,Z]=c.useState(P),[R,A]=c.useState(eP(r));c.useEffect(()=>{E.current&&E.current.forceUpdate()}),c.useEffect(()=>{r&&A(eP(r))},[r]),(0,d.Z)(()=>{if(!R||!u)return;let e=e=>{Z(e.placement)},t=[{name:"preventOverflow",options:{altBoundary:a}},{name:"flip",options:{altBoundary:a}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:t})=>{e(t)}}];null!=s&&(t=t.concat(s)),h&&null!=h.modifiers&&(t=t.concat(h.modifiers));let n=ev(R,x.current,(0,l.Z)({placement:P},h,{modifiers:t}));return j.current(n),()=>{n.destroy(),j.current(null)}},[R,a,s,u,h,P]);let M={placement:D};null!==b&&(M.TransitionProps=b);let k=eD(e),T=null!=(n=y.root)?n:"div",W=(0,ey.Z)({elementType:T,externalSlotProps:g.root,externalForwardedProps:w,additionalProps:{role:"tooltip",ref:O},ownerState:e,className:k.root});return(0,eE.jsx)(T,(0,l.Z)({},W,{children:"function"==typeof o?o(M):o}))}),eA=c.forwardRef(function(e,t){let n;let{anchorEl:r,children:o,container:i,direction:a="ltr",disablePortal:s=!1,keepMounted:u=!1,modifiers:p,open:d,placement:h="bottom",popperOptions:v=eZ,popperRef:g,style:y,transition:b=!1,slotProps:w={},slots:x={}}=e,O=(0,f.Z)(e,ej),[E,S]=c.useState(!0);if(!u&&!d&&(!b||E))return null;if(i)n=i;else if(r){let e=eP(r);n=e&&void 0!==e.nodeType?(0,m.Z)(e).body:(0,m.Z)(null).body}let j=!d&&u&&(!b||E)?"none":void 0;return(0,eE.jsx)(eb.Z,{disablePortal:s,container:n,children:(0,eE.jsx)(eR,(0,l.Z)({anchorEl:r,direction:a,disablePortal:s,modifiers:p,ref:t,open:b?!E:d,placement:h,popperOptions:v,popperRef:g,slotProps:w,slots:x},O,{style:(0,l.Z)({position:"fixed",top:0,left:0,display:j},y),TransitionProps:b?{in:d,onEnter:()=>{S(!1)},onExited:()=>{S(!0)}}:void 0,children:o}))})});var eM=n(35843),ek=n(19996);let eT=["anchorEl","component","components","componentsProps","container","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","transition","slots","slotProps"],eW=(0,eM.ZP)(eA,{name:"MuiPopper",slot:"Root",overridesResolver:(e,t)=>t.root})({}),eH=c.forwardRef(function(e,t){var n;let r=(0,u.Z)(),o=(0,ek.i)({props:e,name:"MuiPopper"}),{anchorEl:i,component:a,components:s,componentsProps:c,container:p,disablePortal:d,keepMounted:m,modifiers:h,open:v,placement:g,popperOptions:y,popperRef:b,transition:w,slots:x,slotProps:O}=o,E=(0,f.Z)(o,eT),S=null!=(n=null==x?void 0:x.root)?n:null==s?void 0:s.Root,j=(0,l.Z)({anchorEl:i,container:p,disablePortal:d,keepMounted:m,modifiers:h,open:v,placement:g,popperOptions:y,popperRef:b,transition:w},E);return(0,eE.jsx)(eW,(0,l.Z)({as:a,direction:null==r?void 0:r.direction,slots:{root:S},slotProps:null!=O?O:c},j,{ref:t}))});var eI=eH},62916:function(e,t,n){var r=n(33449);t.Z=r.Z},81150:function(e,t,n){t.Z=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r}(n(14978)),o=n(70574);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}t.Z=function(e=null){let t=r.useContext(o.ThemeContext);return t&&0!==Object.keys(t).length?t:e}},81853:function(e,t,n){/**
2
+ * @license React
3
+ * use-sync-external-store-shim.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var r=n(14978),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=r.useState,a=r.useEffect,s=r.useLayoutEffect,l=r.useDebugValue;function f(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!o(e,n)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),o=r[0].inst,u=r[1];return s(function(){o.value=n,o.getSnapshot=t,f(o)&&u({inst:o})},[e,n,t]),a(function(){return f(o)&&u({inst:o}),e(function(){f(o)&&u({inst:o})})},[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},78704:function(e,t,n){/**
10
+ * @license React
11
+ * use-sync-external-store-shim/with-selector.production.min.js
12
+ *
13
+ * Copyright (c) Facebook, Inc. and its affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var r=n(14978),o=n(26272),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=o.useSyncExternalStore,s=r.useRef,l=r.useEffect,f=r.useMemo,u=r.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,r,o){var c=s(null);if(null===c.current){var p={hasValue:!1,value:null};c.current=p}else p=c.current;c=f(function(){function e(e){if(!l){if(l=!0,a=e,e=r(e),void 0!==o&&p.hasValue){var t=p.value;if(o(t,e))return s=t}return s=e}if(t=s,i(a,e))return t;var n=r(e);return void 0!==o&&o(t,n)?t:(a=e,s=n)}var a,s,l=!1,f=void 0===n?null:n;return[function(){return e(t())},null===f?void 0:function(){return e(f())}]},[t,n,r,o]);var d=a(e,c[0],c[1]);return l(function(){p.hasValue=!0,p.value=d},[d]),u(d),d}},26272:function(e,t,n){e.exports=n(81853)},65401:function(e,t,n){e.exports=n(78704)},94660:function(e,t,n){n.d(t,{Ue:function(){return p}});let r=e=>{let t;let n=new Set,r=(e,r)=>{let o="function"==typeof e?e(t):e;if(!Object.is(o,t)){let e=t;t=(null!=r?r:"object"!=typeof o||null===o)?o:Object.assign({},t,o),n.forEach(n=>n(t,e))}},o=()=>t,i={setState:r,getState:o,getInitialState:()=>a,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},a=t=e(r,o,i);return i},o=e=>e?r(e):r;var i=n(14978),a=n(65401);let{useDebugValue:s}=i,{useSyncExternalStoreWithSelector:l}=a,f=!1,u=e=>e,c=e=>{"function"!=typeof e&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let t="function"==typeof e?o(e):e,n=(e,n)=>(function(e,t=u,n){n&&!f&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),f=!0);let r=l(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return s(r),r})(t,e,n);return Object.assign(n,t),n},p=e=>e?c(e):c},74810:function(e,t,n){function r(e,t){let n;try{n=e()}catch(e){return}return{getItem:e=>{var r;let o=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),i=null!=(r=n.getItem(e))?r:null;return i instanceof Promise?i.then(o):o(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,null==t?void 0:t.replacer)),removeItem:e=>n.removeItem(e)}}n.d(t,{FL:function(){return r},tJ:function(){return s}});let o=e=>t=>{try{let n=e(t);if(n instanceof Promise)return n;return{then:e=>o(e)(n),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>o(t)(e)}}},i=(e,t)=>(n,r,i)=>{let a,s,l={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},f=!1,u=new Set,c=new Set;try{a=l.getStorage()}catch(e){}if(!a)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${l.name}', the given storage is currently unavailable.`),n(...e)},r,i);let p=o(l.serialize),d=()=>{let e;let t=l.partialize({...r()}),n=p({state:t,version:l.version}).then(e=>a.setItem(l.name,e)).catch(t=>{e=t});if(e)throw e;return n},m=i.setState;i.setState=(e,t)=>{m(e,t),d()};let h=e((...e)=>{n(...e),d()},r,i),v=()=>{var e;if(!a)return;f=!1,u.forEach(e=>e(r()));let t=(null==(e=l.onRehydrateStorage)?void 0:e.call(l,r()))||void 0;return o(a.getItem.bind(a))(l.name).then(e=>{if(e)return l.deserialize(e)}).then(e=>{if(e){if("number"!=typeof e.version||e.version===l.version)return e.state;if(l.migrate)return l.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return n(s=l.merge(e,null!=(t=r())?t:h),!0),d()}).then(()=>{null==t||t(s,void 0),f=!0,c.forEach(e=>e(s))}).catch(e=>{null==t||t(void 0,e)})};return i.persist={setOptions:e=>{l={...l,...e},e.getStorage&&(a=e.getStorage())},clearStorage:()=>{null==a||a.removeItem(l.name)},getOptions:()=>l,rehydrate:()=>v(),hasHydrated:()=>f,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},v(),s||h},a=(e,t)=>(n,i,a)=>{let s,l={storage:r(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},f=!1,u=new Set,c=new Set,p=l.storage;if(!p)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${l.name}', the given storage is currently unavailable.`),n(...e)},i,a);let d=()=>{let e=l.partialize({...i()});return p.setItem(l.name,{state:e,version:l.version})},m=a.setState;a.setState=(e,t)=>{m(e,t),d()};let h=e((...e)=>{n(...e),d()},i,a);a.getInitialState=()=>h;let v=()=>{var e,t;if(!p)return;f=!1,u.forEach(e=>{var t;return e(null!=(t=i())?t:h)});let r=(null==(t=l.onRehydrateStorage)?void 0:t.call(l,null!=(e=i())?e:h))||void 0;return o(p.getItem.bind(p))(l.name).then(e=>{if(e){if("number"!=typeof e.version||e.version===l.version)return[!1,e.state];if(l.migrate)return[!0,l.migrate(e.state,e.version)];console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(e=>{var t;let[r,o]=e;if(n(s=l.merge(o,null!=(t=i())?t:h),!0),r)return d()}).then(()=>{null==r||r(s,void 0),s=i(),f=!0,c.forEach(e=>e(s))}).catch(e=>{null==r||r(void 0,e)})};return a.persist={setOptions:e=>{l={...l,...e},e.storage&&(p=e.storage)},clearStorage:()=>{null==p||p.removeItem(l.name)},getOptions:()=>l,rehydrate:()=>v(),hasHydrated:()=>f,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},l.skipHydration||v(),s||h},s=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?(console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),i(e,t)):a(e,t)}}]);