promptfoo 0.68.3 → 0.69.1

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 (285) hide show
  1. package/dist/drizzle/0002_tidy_juggernaut.sql +1 -0
  2. package/dist/drizzle/meta/0002_snapshot.json +244 -0
  3. package/dist/drizzle/meta/_journal.json +7 -0
  4. package/dist/package.json +18 -17
  5. package/dist/src/__mocks__/database.d.ts +0 -1
  6. package/dist/src/__mocks__/database.d.ts.map +1 -1
  7. package/dist/src/__mocks__/esm.js +2 -3
  8. package/dist/src/__mocks__/esm.js.map +1 -1
  9. package/dist/src/accounts.d.ts +2 -1
  10. package/dist/src/accounts.d.ts.map +1 -1
  11. package/dist/src/accounts.js +7 -4
  12. package/dist/src/accounts.js.map +1 -1
  13. package/dist/src/assertions/AssertionsResult.js +3 -3
  14. package/dist/src/assertions/AssertionsResult.js.map +1 -1
  15. package/dist/src/assertions/validateAssertions.js +2 -2
  16. package/dist/src/assertions/validateAssertions.js.map +1 -1
  17. package/dist/src/assertions.js +6 -6
  18. package/dist/src/assertions.js.map +1 -1
  19. package/dist/src/cache.d.ts.map +1 -1
  20. package/dist/src/cache.js +6 -7
  21. package/dist/src/cache.js.map +1 -1
  22. package/dist/src/commands/config.js +1 -2
  23. package/dist/src/commands/config.js.map +1 -1
  24. package/dist/src/commands/delete.js +1 -2
  25. package/dist/src/commands/delete.js.map +1 -1
  26. package/dist/src/commands/eval/filterFailingTests.js +1 -2
  27. package/dist/src/commands/eval/filterFailingTests.js.map +1 -1
  28. package/dist/src/commands/eval/filterProviders.d.ts +3 -0
  29. package/dist/src/commands/eval/filterProviders.d.ts.map +1 -0
  30. package/dist/src/commands/eval/filterProviders.js +15 -0
  31. package/dist/src/commands/eval/filterProviders.js.map +1 -0
  32. package/dist/src/commands/eval/filterTests.js +1 -2
  33. package/dist/src/commands/eval/filterTests.js.map +1 -1
  34. package/dist/src/commands/export.js +1 -2
  35. package/dist/src/commands/export.js.map +1 -1
  36. package/dist/src/commands/import.d.ts.map +1 -1
  37. package/dist/src/commands/import.js +2 -2
  38. package/dist/src/commands/import.js.map +1 -1
  39. package/dist/src/commands/list.js +1 -2
  40. package/dist/src/commands/list.js.map +1 -1
  41. package/dist/src/commands/show.js +3 -4
  42. package/dist/src/commands/show.js.map +1 -1
  43. package/dist/src/csv.js +2 -3
  44. package/dist/src/csv.js.map +1 -1
  45. package/dist/src/database.d.ts +12 -0
  46. package/dist/src/database.d.ts.map +1 -1
  47. package/dist/src/database.js +5 -4
  48. package/dist/src/database.js.map +1 -1
  49. package/dist/src/esm.js +2 -3
  50. package/dist/src/esm.js.map +1 -1
  51. package/dist/src/evaluator.d.ts.map +1 -1
  52. package/dist/src/evaluator.js +30 -17
  53. package/dist/src/evaluator.js.map +1 -1
  54. package/dist/src/feedback.js +2 -3
  55. package/dist/src/feedback.js.map +1 -1
  56. package/dist/src/fetch.d.ts +2 -3
  57. package/dist/src/fetch.d.ts.map +1 -1
  58. package/dist/src/fetch.js +7 -6
  59. package/dist/src/fetch.js.map +1 -1
  60. package/dist/src/globalConfig.js +5 -6
  61. package/dist/src/globalConfig.js.map +1 -1
  62. package/dist/src/googleSheets.js +4 -5
  63. package/dist/src/googleSheets.js.map +1 -1
  64. package/dist/src/index.js +2 -2
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/integrations/langfuse.js +1 -2
  67. package/dist/src/integrations/langfuse.js.map +1 -1
  68. package/dist/src/integrations/portkey.js +1 -2
  69. package/dist/src/integrations/portkey.js.map +1 -1
  70. package/dist/src/logger.js +3 -3
  71. package/dist/src/logger.js.map +1 -1
  72. package/dist/src/main.js +23 -1
  73. package/dist/src/main.js.map +1 -1
  74. package/dist/src/matchers.d.ts.map +1 -1
  75. package/dist/src/matchers.js +16 -15
  76. package/dist/src/matchers.js.map +1 -1
  77. package/dist/src/migrate.js +1 -2
  78. package/dist/src/migrate.js.map +1 -1
  79. package/dist/src/onboarding.js +2 -2
  80. package/dist/src/onboarding.js.map +1 -1
  81. package/dist/src/prompts/grading.d.ts +1 -0
  82. package/dist/src/prompts/grading.d.ts.map +1 -1
  83. package/dist/src/prompts/grading.js +21 -1
  84. package/dist/src/prompts/grading.js.map +1 -1
  85. package/dist/src/prompts/index.js +3 -4
  86. package/dist/src/prompts/index.js.map +1 -1
  87. package/dist/src/prompts/processors/javascript.d.ts +5 -1
  88. package/dist/src/prompts/processors/javascript.d.ts.map +1 -1
  89. package/dist/src/prompts/processors/javascript.js +15 -3
  90. package/dist/src/prompts/processors/javascript.js.map +1 -1
  91. package/dist/src/prompts/processors/json.js +1 -2
  92. package/dist/src/prompts/processors/json.js.map +1 -1
  93. package/dist/src/prompts/processors/jsonl.js +1 -2
  94. package/dist/src/prompts/processors/jsonl.js.map +1 -1
  95. package/dist/src/prompts/processors/python.d.ts +1 -1
  96. package/dist/src/prompts/processors/python.d.ts.map +1 -1
  97. package/dist/src/prompts/processors/python.js +24 -18
  98. package/dist/src/prompts/processors/python.js.map +1 -1
  99. package/dist/src/prompts/processors/string.js +1 -2
  100. package/dist/src/prompts/processors/string.js.map +1 -1
  101. package/dist/src/prompts/processors/text.js +1 -2
  102. package/dist/src/prompts/processors/text.js.map +1 -1
  103. package/dist/src/prompts/processors/yaml.js +1 -2
  104. package/dist/src/prompts/processors/yaml.js.map +1 -1
  105. package/dist/src/prompts/utils.js +2 -3
  106. package/dist/src/prompts/utils.js.map +1 -1
  107. package/dist/src/providers/anthropic.d.ts +5 -0
  108. package/dist/src/providers/anthropic.d.ts.map +1 -1
  109. package/dist/src/providers/anthropic.js +58 -4
  110. package/dist/src/providers/anthropic.js.map +1 -1
  111. package/dist/src/providers/azureopenaiUtil.js +1 -2
  112. package/dist/src/providers/azureopenaiUtil.js.map +1 -1
  113. package/dist/src/providers/bedrock.d.ts +3 -3
  114. package/dist/src/providers/bedrock.d.ts.map +1 -1
  115. package/dist/src/providers/bedrock.js +3 -3
  116. package/dist/src/providers/bedrock.js.map +1 -1
  117. package/dist/src/providers/defaults.d.ts +3 -0
  118. package/dist/src/providers/defaults.d.ts.map +1 -1
  119. package/dist/src/providers/defaults.js +2 -2
  120. package/dist/src/providers/defaults.js.map +1 -1
  121. package/dist/src/providers/openai.d.ts.map +1 -1
  122. package/dist/src/providers/openai.js +1 -0
  123. package/dist/src/providers/openai.js.map +1 -1
  124. package/dist/src/providers/openaiUtil.js +1 -2
  125. package/dist/src/providers/openaiUtil.js.map +1 -1
  126. package/dist/src/providers/pythonCompletion.d.ts.map +1 -1
  127. package/dist/src/providers/scriptCompletion.d.ts.map +1 -1
  128. package/dist/src/providers/shared.js +3 -3
  129. package/dist/src/providers/shared.js.map +1 -1
  130. package/dist/src/providers/vertexUtil.js +3 -4
  131. package/dist/src/providers/vertexUtil.js.map +1 -1
  132. package/dist/src/providers.d.ts.map +1 -1
  133. package/dist/src/providers.js +5 -7
  134. package/dist/src/providers.js.map +1 -1
  135. package/dist/src/python/wrapper.d.ts +1 -1
  136. package/dist/src/python/wrapper.d.ts.map +1 -1
  137. package/dist/src/python/wrapper.js +2 -3
  138. package/dist/src/python/wrapper.js.map +1 -1
  139. package/dist/src/python/wrapper.py +9 -10
  140. package/dist/src/redteam/getCompetitorTests.js +1 -2
  141. package/dist/src/redteam/getCompetitorTests.js.map +1 -1
  142. package/dist/src/redteam/getHallucinationTests.js +1 -2
  143. package/dist/src/redteam/getHallucinationTests.js.map +1 -1
  144. package/dist/src/redteam/getHarmfulTests.d.ts +16 -16
  145. package/dist/src/redteam/getHarmfulTests.d.ts.map +1 -1
  146. package/dist/src/redteam/getHarmfulTests.js +6 -6
  147. package/dist/src/redteam/getHarmfulTests.js.map +1 -1
  148. package/dist/src/redteam/getHijackingTests.js +1 -2
  149. package/dist/src/redteam/getHijackingTests.js.map +1 -1
  150. package/dist/src/redteam/getOverconfidenceTests.js +1 -2
  151. package/dist/src/redteam/getOverconfidenceTests.js.map +1 -1
  152. package/dist/src/redteam/getPiiTests.js +1 -2
  153. package/dist/src/redteam/getPiiTests.js.map +1 -1
  154. package/dist/src/redteam/getPoliticalStatementsTests.js +1 -2
  155. package/dist/src/redteam/getPoliticalStatementsTests.js.map +1 -1
  156. package/dist/src/redteam/getUnderconfidenceTests.js +2 -3
  157. package/dist/src/redteam/getUnderconfidenceTests.js.map +1 -1
  158. package/dist/src/redteam/getUnintendedContractTests.js +1 -2
  159. package/dist/src/redteam/getUnintendedContractTests.js.map +1 -1
  160. package/dist/src/redteam/index.d.ts.map +1 -1
  161. package/dist/src/redteam/index.js +28 -9
  162. package/dist/src/redteam/index.js.map +1 -1
  163. package/dist/src/redteam/iterative.d.ts.map +1 -1
  164. package/dist/src/redteam/iterative.js +15 -2
  165. package/dist/src/redteam/iterative.js.map +1 -1
  166. package/dist/src/share.d.ts.map +1 -1
  167. package/dist/src/share.js +4 -3
  168. package/dist/src/share.js.map +1 -1
  169. package/dist/src/suggestions.js +1 -2
  170. package/dist/src/suggestions.js.map +1 -1
  171. package/dist/src/table.js +2 -3
  172. package/dist/src/table.js.map +1 -1
  173. package/dist/src/testCases.js +6 -7
  174. package/dist/src/testCases.js.map +1 -1
  175. package/dist/src/types.d.ts +951 -137
  176. package/dist/src/types.d.ts.map +1 -1
  177. package/dist/src/types.js +196 -4
  178. package/dist/src/types.js.map +1 -1
  179. package/dist/src/updates.js +2 -3
  180. package/dist/src/updates.js.map +1 -1
  181. package/dist/src/util.d.ts.map +1 -1
  182. package/dist/src/util.js +67 -56
  183. package/dist/src/util.js.map +1 -1
  184. package/dist/src/web/nextui/404/index.html +1 -1
  185. package/dist/src/web/nextui/404.html +1 -1
  186. package/dist/src/web/nextui/_next/static/chunks/2-671ad31c05d2c976.js +1 -0
  187. package/dist/src/web/nextui/_next/static/chunks/{540-378a20144435cec6.js → 540-c94eb8fa0d9db136.js} +1 -1
  188. package/dist/src/web/nextui/_next/static/chunks/{166-157bfb431b68d949.js → 858-5d3a3678769b7e36.js} +1 -1
  189. package/dist/src/web/nextui/_next/static/chunks/{897-1955b232a2148365.js → 998-d370cd9f4473ff31.js} +4 -4
  190. package/dist/src/web/nextui/_next/static/chunks/app/eval/[id]/{page-0a71ecaf651124c2.js → page-3c5a944373865122.js} +1 -1
  191. package/dist/src/web/nextui/_next/static/chunks/app/eval/{page-bf3968ed106645c6.js → page-73e894c39cc191f1.js} +1 -1
  192. package/dist/src/web/nextui/_next/static/chunks/app/{layout-b7b366d291dbc9db.js → layout-2038906de6c19565.js} +1 -1
  193. package/dist/src/web/nextui/_next/static/chunks/app/progress/page-73442c531d579c51.js +1 -0
  194. package/dist/src/web/nextui/_next/static/chunks/app/prompts/page-50e27c24c9e255bd.js +1 -0
  195. package/dist/src/web/nextui/_next/static/chunks/app/setup/{page-71b3060b06865254.js → page-26cb5d2478fdbd34.js} +1 -1
  196. package/dist/src/web/nextui/_next/static/chunks/webpack-8a9bc9ee0defb756.js +1 -0
  197. package/dist/src/web/nextui/_next/static/css/106779eb64615639.css +1 -0
  198. package/dist/src/web/nextui/_next/static/css/35ab7ce8025438b0.css +1 -0
  199. package/dist/src/web/nextui/_next/static/css/94b771e23fc5d5f5.css +1 -0
  200. package/dist/src/web/nextui/_next/static/media/05a31a2ca4975f99-s.woff2 +0 -0
  201. package/dist/src/web/nextui/_next/static/media/513657b02c5c193f-s.woff2 +0 -0
  202. package/dist/src/web/nextui/_next/static/media/51ed15f9841b9f9d-s.woff2 +0 -0
  203. package/dist/src/web/nextui/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2 +0 -0
  204. package/dist/src/web/nextui/_next/static/media/d6b16ce4a6175f26-s.woff2 +0 -0
  205. package/dist/src/web/nextui/_next/static/media/ec159349637c90ad-s.woff2 +0 -0
  206. package/dist/src/web/nextui/_next/static/media/fd4db3eb5472fc27-s.woff2 +0 -0
  207. package/dist/src/web/nextui/auth/login/index.html +1 -1
  208. package/dist/src/web/nextui/auth/login/index.txt +10 -15
  209. package/dist/src/web/nextui/auth/signup/index.html +1 -1
  210. package/dist/src/web/nextui/auth/signup/index.txt +10 -15
  211. package/dist/src/web/nextui/datasets/index.html +1 -1
  212. package/dist/src/web/nextui/datasets/index.txt +10 -15
  213. package/dist/src/web/nextui/eval/index.html +1 -1
  214. package/dist/src/web/nextui/eval/index.txt +12 -17
  215. package/dist/src/web/nextui/index.html +1 -1
  216. package/dist/src/web/nextui/index.txt +11 -16
  217. package/dist/src/web/nextui/progress/index.html +1 -1
  218. package/dist/src/web/nextui/progress/index.txt +10 -15
  219. package/dist/src/web/nextui/prompts/index.html +1 -1
  220. package/dist/src/web/nextui/prompts/index.txt +10 -15
  221. package/dist/src/web/nextui/report/index.html +1 -1
  222. package/dist/src/web/nextui/report/index.txt +12 -17
  223. package/dist/src/web/nextui/setup/index.html +2 -2
  224. package/dist/src/web/nextui/setup/index.txt +12 -17
  225. package/dist/src/web/server.js +2 -2
  226. package/dist/src/web/server.js.map +1 -1
  227. package/package.json +18 -17
  228. package/dist/src/web/nextui/_next/static/chunks/2-d534f7b3af3e0505.js +0 -1
  229. package/dist/src/web/nextui/_next/static/chunks/app/progress/page-52079a97d0c2e2ea.js +0 -1
  230. package/dist/src/web/nextui/_next/static/chunks/app/prompts/page-7da4796409bc2636.js +0 -1
  231. package/dist/src/web/nextui/_next/static/chunks/webpack-ac7a3125017b92ed.js +0 -1
  232. package/dist/src/web/nextui/_next/static/css/036bf4af64e53e86.css +0 -1
  233. package/dist/src/web/nextui/_next/static/css/b76f1739b5a14901.css +0 -1
  234. package/dist/src/web/nextui/_next/static/css/e141e895af3747c6.css +0 -1
  235. package/dist/src/web/nextui/_next/static/media/03b685511c0eaac3-s.woff2 +0 -0
  236. package/dist/src/web/nextui/_next/static/media/04fe87c30c4f76ea-s.woff2 +0 -0
  237. package/dist/src/web/nextui/_next/static/media/0e4fe491bf84089c-s.p.woff2 +0 -0
  238. package/dist/src/web/nextui/_next/static/media/101c7b68f2d8b610-s.woff2 +0 -0
  239. package/dist/src/web/nextui/_next/static/media/13259ce60de2aa3e-s.woff2 +0 -0
  240. package/dist/src/web/nextui/_next/static/media/1c57ca6f5208a29b-s.woff2 +0 -0
  241. package/dist/src/web/nextui/_next/static/media/1e8103c5d17beb1d-s.woff2 +0 -0
  242. package/dist/src/web/nextui/_next/static/media/388fb79562c9fc54-s.woff2 +0 -0
  243. package/dist/src/web/nextui/_next/static/media/3a04115668d8070d-s.p.woff2 +0 -0
  244. package/dist/src/web/nextui/_next/static/media/3a18fc8da1cdcd01-s.p.woff2 +0 -0
  245. package/dist/src/web/nextui/_next/static/media/3dbd163d3bb09d47-s.woff2 +0 -0
  246. package/dist/src/web/nextui/_next/static/media/42d52f46a26971a3-s.woff2 +0 -0
  247. package/dist/src/web/nextui/_next/static/media/5647e4c23315a2d2-s.woff2 +0 -0
  248. package/dist/src/web/nextui/_next/static/media/5f4dfe83faee04f1-s.woff2 +0 -0
  249. package/dist/src/web/nextui/_next/static/media/627622453ef56b0d-s.p.woff2 +0 -0
  250. package/dist/src/web/nextui/_next/static/media/67e05ba3467b9f4d-s.woff2 +0 -0
  251. package/dist/src/web/nextui/_next/static/media/699512af39861afa-s.p.woff2 +0 -0
  252. package/dist/src/web/nextui/_next/static/media/79015435f1a55eef-s.woff2 +0 -0
  253. package/dist/src/web/nextui/_next/static/media/7be645d133f3ee22-s.woff2 +0 -0
  254. package/dist/src/web/nextui/_next/static/media/7c53f7419436e04b-s.woff2 +0 -0
  255. package/dist/src/web/nextui/_next/static/media/8fb72f69fba4e3d2-s.woff2 +0 -0
  256. package/dist/src/web/nextui/_next/static/media/912a9cfe43c928d9-s.woff2 +0 -0
  257. package/dist/src/web/nextui/_next/static/media/91a88e0c5dd21dfa-s.woff2 +0 -0
  258. package/dist/src/web/nextui/_next/static/media/934c4b7cb736f2a3-s.p.woff2 +0 -0
  259. package/dist/src/web/nextui/_next/static/media/9b67ab375515cd6f-s.woff2 +0 -0
  260. package/dist/src/web/nextui/_next/static/media/9cf7d128be063d32-s.woff2 +0 -0
  261. package/dist/src/web/nextui/_next/static/media/a3c201c07e8eb753-s.woff2 +0 -0
  262. package/dist/src/web/nextui/_next/static/media/a5b77b63ef20339c-s.woff2 +0 -0
  263. package/dist/src/web/nextui/_next/static/media/a6d330d7873e7320-s.woff2 +0 -0
  264. package/dist/src/web/nextui/_next/static/media/b6db722c6886c2cd-s.woff2 +0 -0
  265. package/dist/src/web/nextui/_next/static/media/baf12dd90520ae41-s.woff2 +0 -0
  266. package/dist/src/web/nextui/_next/static/media/bbdb6f0234009aba-s.woff2 +0 -0
  267. package/dist/src/web/nextui/_next/static/media/cff529cd86cc0276-s.woff2 +0 -0
  268. package/dist/src/web/nextui/_next/static/media/d117eea74e01de14-s.woff2 +0 -0
  269. package/dist/src/web/nextui/_next/static/media/daa8cca6b52a70fa-s.woff2 +0 -0
  270. package/dist/src/web/nextui/_next/static/media/dfa8b99978df7bbc-s.woff2 +0 -0
  271. package/dist/src/web/nextui/_next/static/media/e195dd2ded485df3-s.woff2 +0 -0
  272. package/dist/src/web/nextui/_next/static/media/e25729ca87cc7df9-s.woff2 +0 -0
  273. package/dist/src/web/nextui/_next/static/media/e35c7314ac518ddc-s.woff2 +0 -0
  274. package/dist/src/web/nextui/_next/static/media/eb52b768f62eeeb4-s.woff2 +0 -0
  275. package/dist/src/web/nextui/_next/static/media/ee7e17a7bdd8636b-s.woff2 +0 -0
  276. package/dist/src/web/nextui/_next/static/media/f06116e890b3dadb-s.woff2 +0 -0
  277. /package/dist/src/web/nextui/_next/static/{4W0Qng9llk0Tg-jZCYupr → 1r10QuQFZj3AAU-Bx1DRP}/_buildManifest.js +0 -0
  278. /package/dist/src/web/nextui/_next/static/{4W0Qng9llk0Tg-jZCYupr → 1r10QuQFZj3AAU-Bx1DRP}/_ssgManifest.js +0 -0
  279. /package/dist/src/web/nextui/_next/static/chunks/{215-7d83203d614bcd6a.js → 215-7bd08e1ce7028897.js} +0 -0
  280. /package/dist/src/web/nextui/_next/static/chunks/{322-92c9551f32057648.js → 322-ac32773931b7a8aa.js} +0 -0
  281. /package/dist/src/web/nextui/_next/static/chunks/{378-4b0cc74c685f98f9.js → 378-c23e2864527ac3a0.js} +0 -0
  282. /package/dist/src/web/nextui/_next/static/chunks/{770-577cd7d7d380b3ac.js → 770-28c6d673e9540d80.js} +0 -0
  283. /package/dist/src/web/nextui/_next/static/chunks/{873-8bd18cf80e6e64e1.js → 873-e1436a5f57769f17.js} +0 -0
  284. /package/dist/src/web/nextui/_next/static/chunks/{915-cd96102a51e75c9d.js → 915-b1361d86b62c2cfe.js} +0 -0
  285. /package/dist/src/web/nextui/_next/static/chunks/{995-c9a656a43545902a.js → 995-81cea2f3d08297f2.js} +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2],{49532:function(e,t,s){"use strict";let n,l;async function a(){if(n||(l||(l=fetch("/api/config").then(e=>e.json()).then(e=>n=e.apiBaseUrl)),await l),void 0===n)throw Error("API base URL is undefined");return n}s.d(t,{b:function(){return a}})},72002:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return e2}});var n=s(24004),l=s(14978),a=s(77580);let r=a.env.NEXT_PUBLIC_PROMPTFOO_REMOTE_API_BASE_URL||a.env.NEXT_PUBLIC_PROMPTFOO_BASE_URL||a.env.PROMPTFOO_REMOTE_API_BASE_URL||"https://api.promptfoo.dev",i=a.env.NEXT_PUBLIC_PROMPTFOO_BASE_URL||a.env.PROMPTFOO_REMOTE_APP_BASE_URL||"https://app.promptfoo.dev";a?.stdout?.columns&&a?.stdout?.columns>10&&a?.stdout?.columns;var o=s(49532);let c=(0,l.createContext)(void 0),d=e=>{let{children:t}=e,[s,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,n.jsx)(c.Provider,{value:s,children:t})};var u=s(52428),p=s(11615),h=s(12594),m=s(28891),x=s(74997),g=s(93179),j=s(47887),v=s(43205),f=s(5592),b=s(14931),y=s(75307),Z=s(17178),w=s(42610),C=s(68873),k=s(49567),S=s(40982),N=s(24362),R=s(39813),I=s(1852),P=s(57027),E=s(94941),F=s(36273),O=s(96976),T=s(8508),M=s(34304),D=s(32414),L=s(67339),A=s(65969),U=s(63147),W=s(14059),_=s(23223),z=s(26110),V=s(48931),B=s(99645),J=s(29794),H=s(22701),G=s(51956),X=s(82669),Y=s(77656),q=s(37204),$=s(79685),K=s(74595);let Q={getItem:async e=>await (0,q.U2)(e)||null,setItem:async(e,t)=>{await (0,q.t8)(e,t)},removeItem:async e=>{await (0,q.IV)(e)}},ee=(0,$.Ue)()((0,K.tJ)((e,t)=>({evalId:null,setEvalId:t=>e(()=>({evalId: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}))}),{name:"ResultsViewStorage",storage:(0,K.FL)(()=>Q)}));function et(e){let{open:t,onClose:a}=e,{config:r}=ee(),i=l.useRef(null),[o,c]=l.useState(!1),[d,u]=l.useState("");l.useEffect(()=>{t&&(async()=>{let{default:e}=await Promise.resolve().then(s.bind(s,34235));u(e.dump(r))})()},[t,r]);let p=()=>{c(!1),a()};return(0,n.jsxs)(J.Z,{open:t,onClose:p,"aria-labelledby":"config-dialog-title",maxWidth:"md",fullWidth:!0,children:[(0,n.jsx)(X.Z,{id:"config-dialog-title",children:(0,n.jsxs)(k.Z,{display:"flex",justifyContent:"space-between",alignItems:"center",children:[(0,n.jsx)(U.Z,{variant:"h6",style:{flexGrow:1},children:"Config"}),(0,n.jsxs)(k.Z,{children:[(0,n.jsx)(A.Z,{title:"Copy to clipboard",children:(0,n.jsx)(Y.Z,{onClick:()=>{i.current&&(i.current.select(),document.execCommand("copy"),c(!0))},children:o?(0,n.jsx)(z.Z,{}):(0,n.jsx)(B.Z,{})})}),(0,n.jsx)(A.Z,{title:"Download .yaml",children:(0,n.jsx)(Y.Z,{onClick:()=>{let e=new Blob([d],{type:"text/yaml;charset=utf-8"}),t=URL.createObjectURL(e),s=document.createElement("a");s.href=t,s.download="config.yaml",document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(t)},children:(0,n.jsx)(V.Z,{})})})]})]})}),(0,n.jsx)(G.Z,{children:(0,n.jsx)(U.Z,{variant:"body1",component:"div",children:(0,n.jsx)("textarea",{ref:i,readOnly:!0,value:d,style:{width:"100%",minHeight:"400px",fontFamily:"monospace",border:"1px solid #ccc"}})})}),(0,n.jsx)(H.Z,{children:(0,n.jsx)(S.Z,{onClick:p,color:"primary",children:"Close"})})]})}var es=s(79715),en=s(34235),el=function(){let{table:e,config:t,evalId:s}=ee(),[a,r]=l.useState(!1),i=(e,t)=>{let s=URL.createObjectURL(e),n=document.createElement("a");n.href=s,n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(s)},o=()=>{r(!1)};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(O.Z,{onClick:()=>{r(!0)},children:[(0,n.jsx)(P.Z,{children:(0,n.jsx)(V.Z,{fontSize:"small"})}),(0,n.jsx)(E.Z,{children:"Download"})]}),(0,n.jsx)(J.Z,{onClose:o,open:a,children:(0,n.jsx)(G.Z,{children:(0,n.jsxs)(D.Z,{direction:"column",spacing:2,sx:{width:"100%"},children:[(0,n.jsx)(S.Z,{onClick:()=>{let e=en.default.dump(t),s=new Blob([e],{type:"text/yaml;charset=utf-8"});i(s,"promptfooconfig.yaml"),o()},startIcon:(0,n.jsx)(V.Z,{}),fullWidth:!0,sx:{justifyContent:"flex-start"},children:"Download YAML Config"}),(0,n.jsx)(S.Z,{onClick:()=>{if(!e){alert("No table data");return}let t=[],n=[...e.head.vars,...e.head.prompts.map(e=>"[".concat(e.provider,"] ").concat(e.label))];t.push(n),e.body.forEach(e=>{let s=[...e.vars,...e.outputs.map(e=>{let{pass:t,text:s}=e;return(t?"[PASS] ":"[FAIL] ")+s})];t.push(s)});let l=(0,es.P)(t),a=new Blob([l],{type:"text/csv;charset=utf-8;"});i(a,"".concat(s,"-table.csv")),o()},startIcon:(0,n.jsx)(V.Z,{}),fullWidth:!0,sx:{justifyContent:"flex-start"},children:"Download Table CSV"}),(0,n.jsx)(S.Z,{onClick:()=>{if(!e){alert("No table data");return}let t=new Blob([JSON.stringify(e,null,2)],{type:"application/json"});i(t,"".concat(s,"-table.json")),o()},startIcon:(0,n.jsx)(V.Z,{}),fullWidth:!0,sx:{justifyContent:"flex-start"},children:"Download Table JSON"}),(0,n.jsx)(S.Z,{onClick:()=>{if(!e){alert("No table data");return}let t=e.body.map((t,s)=>({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)})),n=new Blob([JSON.stringify(t,null,2)],{type:"application/json"});i(n,"".concat(s,"-dpo.json")),o()},startIcon:(0,n.jsx)(V.Z,{}),fullWidth:!0,sx:{justifyContent:"flex-start"},children:"Download DPO JSON"})]})})})]})},ea=s(69179),er=s(92715),ei=s(37803),eo=s(92863),ec=s(36001);let ed=["#fd7f6f","#7eb0d5","#b2e061","#bd7ebe","#ffb55a","#ffee65","#beb9db","#fdcce5","#8bd3c7"];function eu(e){let{table:t}=e,s=(0,l.useRef)(null),a=(0,l.useRef)(null);return(0,l.useEffect)(()=>{if(!s.current)return;a.current&&a.current.destroy();let e=t.body.flatMap(e=>e.outputs.map(e=>e.score)),n=Math.min(...e),l=(Math.ceil(Math.max(...e))-Math.floor(n))/10,r=Array.from({length:11},(e,t)=>parseFloat((Math.floor(n)+t*l).toFixed(2))),i=t.head.prompts.map((e,s)=>{let n=t.body.flatMap(e=>e.outputs[s].score),a=r.map(e=>n.filter(t=>t>=e&&t<e+l).length);return{label:"Column ".concat(s+1),data:a,backgroundColor:ed[s%ed.length]}});a.current=new ec.kL(s.current,{type:"bar",data:{labels:r,datasets:i},options:{animation:!1,plugins:{title:{display:!0,text:"Score Distribution"},legend:{display:!1},tooltip:{callbacks:{title:function(e){let t=e[0].datasetIndex;return"Column ".concat(t+1)},label:function(e){let t=e.dataIndex,s=r[t],n=r[t+1];return n?"".concat(s," <= score < ").concat(n):"".concat(s," <= score")}}}}}})},[t]),(0,n.jsx)("canvas",{ref:s,style:{maxHeight:"300px"}})}function ep(e){let{table:t}=e,s=(0,l.useRef)(null),a=(0,l.useRef)(null);return(0,l.useEffect)(()=>{if(!s.current)return;a.current&&a.current.destroy();let e=t.head.prompts.map((e,s)=>{let n=t.body.flatMap(e=>e.outputs[s]),l=n.filter(e=>e.pass).length,a=l/n.length*100;return{label:"Column ".concat(s+1),data:[a],backgroundColor:ed[s%ed.length]}});a.current=new ec.kL(s.current,{type:"bar",data:{labels:["Pass Rate (%)"],datasets:e},options:{animation:!1,plugins:{title:{display:!0,text:"Pass rate"},legend:{display:!0}}}})},[t]),(0,n.jsx)("canvas",{ref:s,style:{maxHeight:"300px"}})}function eh(e){let{table:t}=e,s=(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(!s.current)return;a.current&&a.current.destroy();let e=t.body.flatMap(e=>e.outputs.map(e=>e.score)),n=Math.min(...e),l=Math.max(...e),i=t.body.map(e=>{let t=e.outputs[r].score,s=e.outputs[o].score;return{x:t,y:s,backgroundColor:s>t?"green":s<t?"red":"gray"}});a.current=new ec.kL(s.current,{type:"scatter",data:{datasets:[{data:i,backgroundColor:i.map(e=>e.backgroundColor)},{type:"line",data:[{x:n,y:n},{x:l,y:l}],borderColor:"gray",borderWidth:1,borderDash:[5,5],pointRadius:0}]},options:{animation:!1,plugins:{legend:{display:!1},tooltip:{callbacks:{label:function(e){let s=t.body[e.dataIndex],n=s.outputs[0].text,l=s.outputs[1].text;return n.length>30&&(n=n.substring(0,30)+"..."),l.length>30&&(l=l.substring(0,30)+"..."),"Output 1: ".concat(n,"\nOutput 2: ").concat(l)}}}},scales:{x:{title:{display:!0,text:"Prompt ".concat(r+1," Score")},ticks:{callback:function(e,t,s){let n=String(Math.round(100*Number(e)));return t===s.length-1&&(n+="%"),n}}},y:{title:{display:!0,text:"Prompt ".concat(o+1," Score")},ticks:{callback:function(e,t,s){let n=String(Math.round(100*Number(e)));return t===s.length-1&&(n+="%"),n}}}}}})},[t,r,o]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(J.Z,{open:d,onClose:()=>u(!1),children:[(0,n.jsx)(X.Z,{children:"Compare prompt outputs"}),(0,n.jsxs)(G.Z,{children:[(0,n.jsx)(R.Z,{sx:{m:1,minWidth:120},children:(0,n.jsx)(M.Z,{value:r,onChange:e=>i(Number(e.target.value)),children:t.head.prompts.map((e,t)=>(0,n.jsxs)(O.Z,{value:t,children:["Prompt ",t+1]},t))})}),(0,n.jsx)(R.Z,{sx:{m:1,minWidth:120},children:(0,n.jsx)(M.Z,{value:o,onChange:e=>c(Number(e.target.value)),children:t.head.prompts.map((e,t)=>(0,n.jsxs)(O.Z,{value:t,children:["Prompt ",t+1]},t))})})]})]}),(0,n.jsx)("canvas",{ref:s,style:{maxHeight:"300px",cursor:"pointer"},onClick:()=>u(!0)})]})}function em(e){let{table:t}=e,s=(0,l.useRef)(null),a=(0,l.useRef)(null);return(0,l.useEffect)(()=>{var e;if(!s.current)return;a.current&&a.current.destroy();let n=Object.keys((null===(e=t.head.prompts[0].metrics)||void 0===e?void 0:e.namedScores)||{}),l=t.head.prompts.map((e,s)=>{let l=n.map(s=>{var n;let l=(null===(n=e.metrics)||void 0===n?void 0:n.namedScores[s])||0,a=Math.max(...t.head.prompts.map(e=>{var t;return(null===(t=e.metrics)||void 0===t?void 0:t.namedScores[s])||0}));return l/a});return{label:"".concat(t.head.prompts[s].provider),data:l,backgroundColor:ed[s%ed.length]}});a.current=new ec.kL(s.current,{type:"bar",data:{labels:n,datasets:l},options:{scales:{x:{grid:{display:!1}},y:{ticks:{callback:function(e,t,s){let n=String(Math.round(100*Number(e)));return t===s.length-1&&(n+="%"),n}}}},plugins:{tooltip:{callbacks:{title:function(e){return e[0].dataset.label},label:function(e){let t=e.parsed.y;return"".concat(n[e.dataIndex],": ").concat((100*t).toFixed(2),"% pass rate")}}}}}})},[t]),(0,n.jsx)("canvas",{ref:s,style:{maxHeight:"300px"}})}ec.kL.register(ec.vn,ec.ST,ec.ho,ec.uw,ec.f$,ec.ZL,ec.jn,ec.od,ec.u,ec.wL);var ex=l.memo(function(e){var t;let{columnVisibility:s}=e,a=(0,eo.Z)();ec.kL.defaults.color="dark"===a.palette.mode?"#aaa":"#666";let[r,i]=(0,l.useState)(!0),{table:o}=ee();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,n.jsx)(ea.SV,{fallback:null,children:(0,n.jsxs)(ei.Z,{style:{position:"relative",padding:a.spacing(3)},children:[(0,n.jsx)(Y.Z,{style:{position:"absolute",right:0,top:0},onClick:()=>i(!1),children:(0,n.jsx)(er.Z,{})}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[(0,n.jsx)("div",{style:{width:"33%"},children:(0,n.jsx)(ep,{table:o})}),(0,n.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,n.jsx)(em,{table:o}):(0,n.jsx)(eu,{table:o})}),(0,n.jsx)("div",{style:{width:"33%"},children:(0,n.jsx)(eh,{table:o})})]})]})})}),eg=s(36128),ej=s(9317),ev=s(20286);s(55974);var ef=e=>{let{lookup:t,onSearchTextChange:s}=e;return t&&Object.keys(t).length?(0,n.jsx)("div",{className:"custom-metric-container",children:Object.entries(t).map(e=>{let[t,l]=e;return t&&void 0!==l?(0,n.jsxs)("span",{onClick:()=>s&&s("metric=".concat(t,":[^0]")),className:s?"clickable":"",children:[t,": ",l.toFixed(2)]},t):null})}):null},eb=s(35185),ey=s(65068),eZ=s(70417),ew=s(21303),eC=s(61451),ek=s(26485),eS=s(30021),eN=s(613);function eR(e){let{gradingResults:t}=e;return t?(0,n.jsxs)(k.Z,{mt:2,children:[(0,n.jsx)(U.Z,{variant:"subtitle1",children:"Assertions"}),(0,n.jsx)(eC.Z,{children:(0,n.jsxs)(ey.Z,{children:[(0,n.jsx)(ek.Z,{children:(0,n.jsxs)(eS.Z,{children:[(0,n.jsx)(ew.Z,{style:{fontWeight:"bold"},children:"Pass"}),(0,n.jsx)(ew.Z,{style:{fontWeight:"bold"},children:"Score"}),(0,n.jsx)(ew.Z,{style:{fontWeight:"bold"},children:"Type"}),(0,n.jsx)(ew.Z,{style:{fontWeight:"bold"},children:"Value"}),(0,n.jsx)(ew.Z,{style:{fontWeight:"bold"},children:"Reason"})]})}),(0,n.jsx)(eZ.Z,{children:t.map((e,t)=>{var s,l;return e?(0,n.jsxs)(eS.Z,{children:[(0,n.jsx)(ew.Z,{children:e.pass?"✅":"❌"}),(0,n.jsx)(ew.Z,{children:e.score.toFixed(2)}),(0,n.jsx)(ew.Z,{children:(null===(s=e.assertion)||void 0===s?void 0:s.type)||""}),(0,n.jsx)(ew.Z,{style:{whiteSpace:"pre-wrap"},children:(null===(l=e.assertion)||void 0===l?void 0:l.value)?String(e.assertion.value):"-"}),(0,n.jsx)(ew.Z,{style:{whiteSpace:"pre-wrap"},children:e.reason})]},t):null})})]})})]}):null}function eI(e){let{open:t,onClose:s,prompt:a,provider:r,output:i,gradingResults:o,metadata:c}=e,[d,u]=(0,l.useState)(!1);(0,l.useEffect)(()=>{u(!1)},[a]);let p=async e=>{await navigator.clipboard.writeText(e),u(!0)};return(0,n.jsxs)(J.Z,{open:t,onClose:s,fullWidth:!0,maxWidth:"lg",children:[(0,n.jsxs)(X.Z,{children:["Details",r&&": ".concat(r)]}),(0,n.jsxs)(G.Z,{children:[(0,n.jsxs)(k.Z,{mb:2,children:[(0,n.jsx)(U.Z,{variant:"subtitle1",style:{marginBottom:"1rem"},children:"Prompt"}),(0,n.jsx)(eN.u,{readOnly:!0,value:a,style:{width:"100%",padding:"0.75rem"},maxRows:20}),(0,n.jsx)(Y.Z,{onClick:()=>p(a),style:{position:"absolute",right:"10px",top:"10px"},children:d?(0,n.jsx)(z.Z,{}):(0,n.jsx)(eb.Z,{})})]}),(null==c?void 0:c.redteamFinalPrompt)&&(0,n.jsxs)(k.Z,{my:2,children:[(0,n.jsx)(U.Z,{variant:"subtitle1",style:{marginBottom:"1rem",marginTop:"1rem"},children:"Modified Prompt (Red Team)"}),(0,n.jsx)(eN.u,{readOnly:!0,maxRows:20,value:c.redteamFinalPrompt,style:{width:"100%",padding:"0.75rem"}})]}),i&&(0,n.jsxs)(k.Z,{my:2,children:[(0,n.jsx)(U.Z,{variant:"subtitle1",style:{marginBottom:"1rem",marginTop:"1rem"},children:"Output"}),(0,n.jsx)(eN.u,{readOnly:!0,maxRows:20,value:i,style:{width:"100%",padding:"0.75rem"}})]}),(0,n.jsx)(eR,{gradingResults:o})]}),(0,n.jsx)(H.Z,{children:(0,n.jsx)(S.Z,{onClick:s,children:"Close"})})]})}var eP=s(12431),eE=s(8541),eF=function(){let e=(0,eo.Z)(),[t,s]=l.useState(!1),a=()=>{s(!1)};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{textAlign:"center",marginTop:20,marginBottom:40},children:(0,n.jsx)(S.Z,{variant:"text",color:"primary",startIcon:(0,n.jsx)(eP.Z,{}),onClick:()=>{s(!0)},children:"Generate test cases"})}),(0,n.jsxs)(J.Z,{open:t,onClose:a,children:[(0,n.jsx)(X.Z,{children:"Run on Command Line"}),(0,n.jsx)(G.Z,{children:(0,n.jsxs)(eE.Z,{children:[(0,n.jsx)("p",{children:"This feature is in beta. UI coming soon."}),(0,n.jsxs)("p",{children:["Run"," ",(0,n.jsx)(k.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,n.jsx)(H.Z,{children:(0,n.jsx)(S.Z,{onClick:a,color:"primary",children:"Close"})})]})]})};function eO(e){return"string"==typeof e||"number"==typeof e?e.toString().length:Array.isArray(e)?e.reduce((e,t)=>e+eO(t),0):l.isValidElement(e)&&e.props.children?l.Children.toArray(e.props.children).reduce((e,t)=>e+eO(t),0):0}let eT=l.memo(function(e){let t,{text:s,maxLength:a}=e,[r,i]=l.useState(!0),o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if("string"==typeof e||"number"==typeof e){let s=e.toString();return s.slice(0,a-t)}if(Array.isArray(e)){let s=[],n=t;for(let t of e){let e=eO(t);if(n+e>a){s.push(o(t,n));break}s.push(t),n+=e}return s}if(l.isValidElement(e)&&e.props.children){let s=eO(e.props.children);if(s>a-t)return l.cloneElement(e,{...e.props,children:o(e.props.children,t)})}return e};t=l.isValidElement(s)||"string"==typeof s?s:JSON.stringify(s);let c=r?o(t):t,d=eO(t)>a;return(0,n.jsxs)("div",{style:{cursor:d?"pointer":"normal"},onClick:()=>{i(!r)},children:[c,r&&eO(t)>a&&(0,n.jsx)("span",{children:"..."})]})});var eM=s(59682),eD=s(62268),eL=s(38640),eA=s.n(eL),eU=s(33352),eW=s(73490),e_=s(24495);s(16658);var ez=e=>{let{failReasons:t}=e,[s,a]=(0,l.useState)(0);return t.length<1?null:(0,n.jsxs)("div",{className:"fail-reason",children:[t.length>1&&(0,n.jsxs)("span",{className:"fail-reason-carousel-controls",children:[(0,n.jsx)(Y.Z,{onClick:()=>{a(e=>e>0?e-1:t.length-1)},children:(0,n.jsx)(eW.Z,{sx:{fontSize:12}})}),(0,n.jsxs)("span",{children:[s+1,"/",t.length]}),(0,n.jsx)(Y.Z,{onClick:()=>{a(e=>e<t.length-1?e+1:0)},children:(0,n.jsx)(e_.Z,{sx:{fontSize:12}})})]}),t[s].trim().split("\n").map((e,t)=>(0,n.jsxs)(l.Fragment,{children:[e,(0,n.jsx)("br",{})]},t))]})},eV=e=>{let{open:t,contextText:s,commentText:l,onClose:a,onSave:r,onChange:i}=e;return(0,n.jsxs)(J.Z,{open:t,onClose:a,fullWidth:!0,maxWidth:"sm",children:[(0,n.jsx)(X.Z,{children:"Edit Comment"}),(0,n.jsxs)(G.Z,{children:[(0,n.jsx)(k.Z,{sx:{backgroundColor:"#f0f0f0",padding:2,marginBottom:2},children:s}),(0,n.jsx)(L.Z,{autoFocus:!0,margin:"dense",type:"text",fullWidth:!0,multiline:!0,rows:4,value:l,onChange:e=>i(e.target.value)})]}),(0,n.jsxs)(H.Z,{children:[(0,n.jsx)(S.Z,{onClick:r,color:"primary",variant:"contained",children:"Save"}),(0,n.jsx)(S.Z,{onClick:a,color:"primary",children:"Cancel"})]})]})};let eB=()=>{let e=(0,l.useContext)(c);if(void 0===e)throw Error("useShiftKey must be used within a ShiftKeyProvider");return e};var eJ=s(19116);let eH=l.memo(function(e){var t,s,a,r,i,o,c,d,u,p,h,m,x;let g,j,v,f,b,y,{output:Z,maxTextLength:w,rowIndex:C,promptIndex:k,onRating:S,firstOutput:N,showDiffs:R,searchText:I,showStats:P}=e,{renderMarkdown:E,prettifyJson:F,showPrompts:O,showPassFail:T}=ee(),[M,D]=l.useState(!1),[L,U]=l.useState(!1),[W,_]=l.useState(null),z=e=>{_(e||null),U(!L)},[V,B]=l.useState(!1),[J,H]=l.useState((null===(t=Z.gradingResult)||void 0===t?void 0:t.comment)||""),G=()=>{B(!0)},X="string"==typeof Z.text?Z.text:JSON.stringify(Z.text),Y=[];if(!Z.pass&&X.includes("---")&&(Y=((null===(p=Z.gradingResult)||void 0===p?void 0:p.componentResults)||[]).filter(e=>!!e&&!e.pass).map(e=>e.reason),X=X.split("---").slice(1).join("---")),R&&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(X),e=(0,eJ.CT)(t,X)}catch(s){e=t.includes(". ")&&X.includes(". ")?(0,eJ.SY)(t,X):(0,eJ.NV)(t,X)}g=(0,n.jsx)(n.Fragment,{children:e.map((e,t)=>e.added?(0,n.jsx)("ins",{children:e.value},t):e.removed?(0,n.jsx)("del",{children:e.value},t):(0,n.jsx)("span",{children:e.value},t))})}if(I)try{let e;let t=RegExp(I,"gi"),s=[];for(;null!==(e=t.exec(X));)s.push({start:e.index,end:t.lastIndex});g=(0,n.jsx)(n.Fragment,{children:s.length>0?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{children:X.substring(0,s[0].start)},"text-before"),s.map((e,t)=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"search-highlight",children:X.substring(e.start,e.end)},"match-"+t),(0,n.jsx)("span",{children:X.substring(e.end,s[t+1]?s[t+1].start:X.length)},"text-after-"+t)]}))]}):(0,n.jsx)("span",{children:X},"no-match")})}catch(e){console.error("Invalid regular expression:",e.message)}else if(E)g=(0,n.jsx)(ev.U,{remarkPlugins:[eU.Z],components:{img:e=>{let{src:t,alt:s}=e;return(0,n.jsx)("img",{loading:"lazy",src:t,alt:s,onClick:()=>z(t),style:{cursor:"pointer"}})}},children:X});else if(F)try{g=(0,n.jsx)("pre",{children:JSON.stringify(JSON.parse(X),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===(s=Z.gradingResult)||void 0===s?void 0:s.comment]),$=l.useCallback(()=>{let e=prompt("Set test score (0.0 - 1.0):",String(Z.score));if(null!==e){let s=parseFloat(e);if(!isNaN(s)&&s>=0&&s<=1){var t;S(void 0,s,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]),[K,Q]=l.useState(!1),et=l.useCallback(()=>{navigator.clipboard.writeText(Z.text),Q(!0)},[Z.text]);if(Z.latencyMs&&(v=(0,n.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,n.jsx)("span",{children:Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(e)})}if(Z.cost&&(b=(0,n.jsxs)("span",{children:["$",Z.cost.toPrecision(2)]})),null===(i=Z.tokenUsage)||void 0===i?void 0:i.cached)j=(0,n.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!==(h=Z.tokenUsage.prompt)&&void 0!==h?h:0),t=Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(null!==(m=Z.tokenUsage.completion)&&void 0!==m?m:0),s=Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(Z.tokenUsage.total);j=(0,n.jsx)(A.Z,{title:"".concat(e," prompt tokens + ").concat(t," completion tokens = ").concat(s," total"),children:(0,n.jsxs)("span",{children:[s,("0"!==e||"0"!==t)&&" (".concat(e,"+").concat(t,")")]})})}let es=(null===(c=Z.gradingResult)||void 0===c?void 0:c.comment)&&"!highlight"!==Z.gradingResult.comment?(0,n.jsx)("div",{className:"comment",onClick:G,children:Z.gradingResult.comment}):null,en=P?(0,n.jsxs)("div",{className:"cell-detail",children:[j&&(0,n.jsxs)("div",{className:"stat-item",children:[(0,n.jsx)("strong",{children:"Tokens:"})," ",j]}),v&&(0,n.jsxs)("div",{className:"stat-item",children:[(0,n.jsx)("strong",{children:"Latency:"})," ",v]}),f&&(0,n.jsxs)("div",{className:"stat-item",children:[(0,n.jsx)("strong",{children:"Tokens/Sec:"})," ",f]}),b&&(0,n.jsxs)("div",{className:"stat-item",children:[(0,n.jsx)("strong",{children:"Cost:"})," ",b]})]}):null,el=eB(),ea=(0,n.jsxs)("div",{className:"cell-actions",children:[el&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"action",onClick:et,onMouseDown:e=>e.preventDefault(),children:(0,n.jsx)(A.Z,{title:"Copy output to clipboard",children:(0,n.jsx)("span",{children:K?"✅":"\uD83D\uDCCB"})})}),(0,n.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()),H(e)},onMouseDown:e=>e.preventDefault(),children:(0,n.jsx)(A.Z,{title:"Toggle test highlight",children:(0,n.jsx)("span",{children:"\uD83C\uDF1F"})})})]}),Z.prompt&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"action",onClick:()=>{D(!0)},children:(0,n.jsx)(A.Z,{title:"View output and test details",children:(0,n.jsx)("span",{children:"\uD83D\uDD0E"})})}),(0,n.jsx)(eI,{open:M,onClose:()=>{D(!1)},prompt:Z.prompt,provider:Z.provider,gradingResults:null===(d=Z.gradingResult)||void 0===d?void 0:d.componentResults,output:X,metadata:Z.metadata})]}),(0,n.jsx)("span",{className:"action",onClick:()=>q(!0),children:(0,n.jsx)(A.Z,{title:"Mark test passed (score 1.0)",children:(0,n.jsx)("span",{children:"\uD83D\uDC4D"})})}),(0,n.jsx)("span",{className:"action",onClick:()=>q(!1),children:(0,n.jsx)(A.Z,{title:"Mark test failed (score 0.0)",children:(0,n.jsx)("span",{children:"\uD83D\uDC4E"})})}),(0,n.jsx)("span",{className:"action",onClick:$,children:(0,n.jsx)(A.Z,{title:"Set test score",children:(0,n.jsx)("span",{children:"\uD83D\uDD22"})})}),(0,n.jsx)("span",{className:"action",onClick:G,children:(0,n.jsx)(A.Z,{title:"Edit comment",children:(0,n.jsx)("span",{children:"✏️"})})})]}),er={};(null===(u=Z.gradingResult)||void 0===u?void 0:u.comment)==="!highlight"&&(er.backgroundColor="#ffffeb");let ei=0,eo=0,ec=Z.gradingResult;if(ec?ec.componentResults?ec.componentResults.forEach(e=>{(null==e?void 0:e.pass)?ei++:eo++}):(ei=ec.pass?1:0,eo=ec.pass?0:1):Z.pass?ei=1:Z.pass||(eo=1),1===eo&&1===ei)y=(0,n.jsxs)(n.Fragment,{children:["".concat(eo," FAIL")," ","".concat(ei," PASS")]});else{let e="";eo>1||ei>1&&eo>0?e="".concat(eo," FAIL"):1===eo&&(e="FAIL");let t="";ei>1||eo>1&&ei>0?t="".concat(ei," PASS"):1===ei&&0===eo&&(t="PASS");let s=e&&t?" ":"";y=(0,n.jsxs)(n.Fragment,{children:[e,s,t]})}let ed=null===(x=Z.score)||0===x||1===x?"":"(".concat(x.toFixed(2),")");return(0,n.jsxs)("div",{className:"cell",style:er,children:[T&&(0,n.jsx)(n.Fragment,{children:Z.pass?(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)("div",{className:"status pass",children:[(0,n.jsxs)("div",{className:"pill",children:[y,ed&&(0,n.jsxs)("span",{className:"score",children:[" ",ed]})]}),(0,n.jsx)(ef,{lookup:Z.namedScores})]})}):(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)("div",{className:"status fail",children:[(0,n.jsxs)("div",{className:"pill",children:[y,ed&&(0,n.jsxs)("span",{className:"score",children:[" ",ed]})]}),(0,n.jsx)(ef,{lookup:Z.namedScores}),(0,n.jsx)("span",{className:"fail-reason",children:(0,n.jsx)(ez,{failReasons:Y})})]})})}),O&&N.prompt&&(0,n.jsxs)("div",{className:"prompt",children:[(0,n.jsx)("span",{className:"pill",children:"Prompt"}),Z.prompt]}),(0,n.jsx)(eT,{text:g||X,maxLength:w}),es,en,ea,L&&W&&(0,n.jsx)("div",{className:"lightbox",onClick:()=>z(),children:(0,n.jsx)("img",{src:W,alt:"Lightbox"})}),(0,n.jsx)(eV,{open:V,contextText:Z.text,commentText:J,onClose:()=>{B(!1)},onSave:()=>{S(void 0,void 0,J),B(!1)},onChange:H})]})});function eG(e){let{text:t,maxLength:s,expandedText:a,resourceId:r,className:i}=e,[o,c]=l.useState(!1);return(0,n.jsxs)("div",{className:"".concat(i||""),children:[(0,n.jsx)(eT,{text:t,maxLength:s}),a&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(A.Z,{title:"View prompt",children:(0,n.jsx)("span",{className:"action",onClick:()=>{c(!0)},children:"\uD83D\uDD0E"})}),(0,n.jsx)(eI,{open:o,onClose:()=>{c(!1)},prompt:a}),r&&(0,n.jsx)(A.Z,{title:"View other evals and datasets for this prompt",children:(0,n.jsx)("span",{className:"action",children:(0,n.jsx)(eA(),{href:"/prompts/?id=".concat(r),target:"_blank",children:(0,n.jsx)(eM.Z,{fontSize:"small"})})})})]})]})}s(93207);var eX=l.memo(function(e){let{maxTextLength:t,columnVisibility:s,wordBreak:a,filterMode:r,failureFilter:i,searchText:c,showStats:d,onFailureFilterToggle:u,onSearchTextChange:p}=e,{evalId:h,table:m,setTable:x}=ee();(0,g.Z)(m,"Table should be defined");let{head:j,body:v}=m,f=l.useCallback(async(e,t,s,n,l)=>{var a,r;let i=[...v],c={...i[e]},d=[...c.outputs],u=null!=s?s:d[t].pass,p=void 0===n?s?1:0:n||0;d[t].pass=u,d[t].score=p;let m=(null===(a=d[t].gradingResult)||void 0===a?void 0:a.componentResults)||[];if(void 0!==s){let e=m.findIndex(e=>{var t;return(null===(t=e.assertion)||void 0===t?void 0:t.type)==="human"}),t={pass:u,score:p,reason:"Manual result (overrides all other grading results)",comment:l,assertion:{type:"human"}};-1!==e?m[e]=t:m.push(t)}let g={...d[t].gradingResult||{},pass:u,score:p,reason:"Manual result (overrides all other grading results)",comment:l,assertion:(null===(r=d[t].gradingResult)||void 0===r?void 0:r.assertion)||null,componentResults:m};d[t].gradingResult=g,c.outputs=d,i[e]=c;let f={head:j,body:i};x(f);try{let e=await fetch("".concat(await (0,o.b)(),"/api/eval/").concat(h),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({table:f})});if(!e.ok)throw Error("Network response was not ok")}catch(e){console.error("Failed to update table:",e)}},[v,j,x,h]),b=Object.keys(s).length>0,y=l.useMemo(()=>{try{return RegExp(c,"i")}catch(e){return console.error("Invalid regular expression:",e.message),null}},[c]),Z=l.useMemo(()=>{try{return v.map((e,t)=>({...e,outputs:e.outputs.map((e,s)=>({...e,originalRowIndex:t,originalPromptIndex:s}))})).filter(e=>{let t=!0;return"failures"===r?t=e.outputs.some((e,t)=>{let n="Prompt ".concat(t+1);return i[n]&&!e.pass&&(!b||s[n])}):"different"===r?t=!e.outputs.every(t=>t.text===e.outputs[0].text):"highlights"===r&&(console.log(e.outputs[0].text),t=e.outputs.some(e=>{var t,s;return null===(s=e.gradingResult)||void 0===s?void 0:null===(t=s.comment)||void 0===t?void 0:t.startsWith("!highlight")})),!!t&&(!c||!y||e.outputs.some(t=>{var s,n;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===(s=t.gradingResult)||void 0===s?void 0:s.reason)||""," ").concat((null===(n=t.gradingResult)||void 0===n?void 0:n.comment)||""),r="".concat(l," ").concat(a);return y.test(r)}))})}catch(e){return console.error("Invalid regular expression:",e.message),v}},[v,i,r,c,s,b,y]),[w,C]=l.useState({pageIndex:0,pageSize:50});l.useEffect(()=>{C(e=>({...e,pageIndex:0}))},[i,r,c]);let R=l.useMemo(()=>j.prompts.map((e,t)=>v.reduce((e,s)=>e+(s.outputs[t].pass?1:0),0)),[j.prompts,v]),I=l.useMemo(()=>j.prompts.map((e,t)=>v.reduce((e,s)=>{var n,l;return e+((null===(l=s.outputs[t].gradingResult)||void 0===l?void 0:null===(n=l.componentResults)||void 0===n?void 0:n.length)||0)},0)),[j.prompts,v]),P=l.useMemo(()=>j.prompts.map((e,t)=>v.reduce((e,s)=>{var n;let l=null===(n=s.outputs[t].gradingResult)||void 0===n?void 0:n.componentResults;return e+(l?l.filter(e=>null==e?void 0:e.pass).length:0)},0)),[j.prompts,v]),E=l.useMemo(()=>R.reduce((e,t,s,n)=>t>n[e]?s:e,0),[R]),F=R[E],T=l.useMemo(()=>(0,eg.Cl)(),[]),{renderMarkdown:D}=ee(),A=l.useMemo(()=>j.vars.length>0?[T.group({id:"vars",header:()=>(0,n.jsx)("span",{className:"font-bold",children:"Variables"}),columns:j.vars.map((e,s)=>T.accessor(e=>e.vars[s],{id:"Variable ".concat(s+1),header:()=>(0,n.jsx)(eG,{text:e,maxLength:t,className:"font-bold"}),cell:e=>{let s=e.getValue();return(0,n.jsx)("div",{className:"cell",children:D?(0,n.jsx)(ev.U,{remarkPlugins:[eU.Z],children:s}):(0,n.jsx)(eT,{text:s,maxLength:t})})},size:50}))})]:[],[T,j.vars,t,D]),W=l.useCallback((e,t)=>Z[e].outputs[t],[Z]),_=l.useCallback(e=>Z[e].outputs[0],[Z]),z=l.useMemo(()=>[T.group({id:"prompts",header:()=>(0,n.jsx)("span",{className:"font-bold",children:"Outputs"}),columns:j.prompts.map((e,s)=>T.accessor(e=>(function(e){if("string"==typeof e){let t=e.startsWith("[PASS]"),s=e;return e.startsWith("[PASS]")?s=s.slice(6):e.startsWith("[FAIL]")&&(s=s.slice(6)),{text:s,pass:t,score:t?1:0}}return e})(e.outputs[s]),{id:"Prompt ".concat(s+1),header:()=>{var l,a,o,c,h,m,x,g;let j=R[s]&&v.length?(R[s]/v.length*100).toFixed(2):"0.00",f=R[s]===F&&0!==F,b="Prompt ".concat(s+1),y=i[b]||!1,Z=d?(0,n.jsxs)("div",{className:"prompt-detail",children:[I[s]?(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{children:"Asserts:"})," ",P[s],"/",I[s]," passed"]}):null,(null===(l=e.metrics)||void 0===l?void 0:l.totalLatencyMs)?(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{children:"Avg Latency:"})," ",Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(e.metrics.totalLatencyMs/v.length)," ","ms"]}):null,(null===(o=e.metrics)||void 0===o?void 0:null===(a=o.tokenUsage)||void 0===a?void 0:a.total)?(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{children:"Avg Tokens:"})," ",Intl.NumberFormat(void 0,{maximumFractionDigits:0}).format(e.metrics.tokenUsage.total/v.length)]}):null,(null===(c=e.metrics)||void 0===c?void 0:c.totalLatencyMs)&&(null===(m=e.metrics)||void 0===m?void 0:null===(h=m.tokenUsage)||void 0===h?void 0:h.completion)?(0,n.jsxs)("div",{children:[(0,n.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,n.jsxs)("div",{children:[(0,n.jsx)("strong",{children:"Cost:"})," $",e.metrics.cost.toPrecision(2)]}):null]}):null,w=e.provider?e.provider.split(":"):[],C=w.length>1?(0,n.jsxs)(n.Fragment,{children:[w[0],":",(0,n.jsx)("strong",{children:w.slice(1).join(":")})]}):(0,n.jsx)("strong",{children:e.provider});return(0,n.jsxs)("div",{className:"output-header",children:[(0,n.jsxs)("div",{className:"pills",children:[e.provider?(0,n.jsx)("div",{className:"provider",children:C}):null,(0,n.jsx)("div",{className:"summary",children:(0,n.jsxs)("div",{className:"highlight ".concat(f?"success":""),children:[(0,n.jsxs)("strong",{children:[j,"% passing"]})," (",R[s],"/",v.length," cases)"]})}),(null===(g=e.metrics)||void 0===g?void 0:g.namedScores)&&Object.keys(e.metrics.namedScores).length>0?(0,n.jsx)(ef,{lookup:e.metrics.namedScores,onSearchTextChange:p}):null]}),(0,n.jsx)(eG,{className:"prompt-container",text:e.label||e.display||e.raw,expandedText:e.raw,maxLength:t,resourceId:e.id}),Z,"failures"===r&&(0,n.jsx)(eD.Z,{sx:{"& .MuiFormControlLabel-label":{fontSize:"0.75rem"}},control:(0,n.jsx)(N.Z,{checked:y,onChange:e=>u(b,e.target.checked)}),label:"Show failures"})]})},cell:e=>{var l,a;let i=W(e.row.index,s);return(0,n.jsx)(eH,{output:i,maxTextLength:t,rowIndex:e.row.index,promptIndex:s,onRating:f.bind(null,null!==(l=i.originalRowIndex)&&void 0!==l?l:e.row.index,null!==(a=i.originalPromptIndex)&&void 0!==a?a:s),firstOutput:_(e.row.index),showDiffs:"different"===r,searchText:c,showStats:d})}}))})],[T,j.prompts,R,v.length,F,i,d,I,P,t,u,r,c,W,_,f,p]),V=l.useMemo(()=>{let e=v.some(e=>e.description);return e?{accessorFn:e=>e.description||"",id:"description",header:()=>(0,n.jsx)("span",{className:"font-bold",children:"Description"}),cell:e=>(0,n.jsx)("div",{className:"cell",children:(0,n.jsx)(eT,{text:String(e.getValue()),maxLength:t})}),size:50}:null},[v,t]),B=l.useMemo(()=>{let e=[];return V&&e.push(V),e.push(...A,...z),e},[V,A,z]),J=(0,ej.b7)({data:Z,columns:B,columnResizeMode:"onChange",getCoreRowModel:(0,eg.sC)(),getPaginationRowModel:(0,eg.G_)(),state:{columnVisibility:s,pagination:w}});return(0,n.jsxs)("div",{children:[(0,n.jsxs)("table",{className:"results-table firefox-fix ".concat(t<=25?"compact":""),style:{wordBreak:a},children:[(0,n.jsx)("thead",{children:J.getHeaderGroups().map(e=>(0,n.jsx)("tr",{className:"header",children:e.headers.map(e=>(0,n.jsxs)("th",{colSpan:e.colSpan,style:{width:e.getSize()},children:[e.isPlaceholder?null:(0,ej.ie)(e.column.columnDef.header,e.getContext()),(0,n.jsx)("div",{onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),className:"resizer ".concat(e.column.getIsResizing()?"isResizing":"")})]},e.id))},e.id))}),(0,n.jsx)("tbody",{children:J.getRowModel().rows.map((e,t)=>{let s=!1;return(0,n.jsx)("tr",{children:e.getVisibleCells().map(e=>{let l=e.column.id.startsWith("Variable")||"description"===e.column.id,a=!l&&!s;return a&&(s=!0),(0,n.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,ej.ie)(e.column.columnDef.cell,e.getContext())},e.id)})},e.id)})})]}),J.getPageCount()>1&&(0,n.jsxs)(k.Z,{className:"pagination",sx:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(S.Z,{onClick:()=>{C(e=>({...e,pageIndex:Math.max(e.pageIndex-1,0)})),window.scrollTo(0,0)},disabled:0===J.getState().pagination.pageIndex,variant:"contained",children:"Previous"}),(0,n.jsxs)(U.Z,{component:"span",sx:{display:"flex",alignItems:"center",gap:1},children:["Page",(0,n.jsx)(L.Z,{size:"small",type:"number",value:J.getState().pagination.pageIndex+1,onChange:e=>{let t=e.target.value?Number(e.target.value)-1:0;C(e=>({...e,pageIndex:Math.min(Math.max(t,0),J.getPageCount()-1)}))},InputProps:{style:{width:"60px",textAlign:"center"}},variant:"outlined"}),(0,n.jsxs)("span",{children:["of ",J.getPageCount()]})]}),(0,n.jsx)(S.Z,{onClick:()=>{C(e=>({...e,pageIndex:Math.min(e.pageIndex+1,J.getPageCount()-1)})),window.scrollTo(0,0)},disabled:J.getState().pagination.pageIndex+1>=J.getPageCount(),variant:"contained",children:"Next"}),(0,n.jsxs)(U.Z,{component:"span",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsxs)(M.Z,{value:w.pageSize,onChange:e=>{C({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,n.jsx)(O.Z,{value:10,children:"10"}),(0,n.jsx)(O.Z,{value:50,children:"50"}),(0,n.jsx)(O.Z,{value:100,children:"100"}),(0,n.jsx)(O.Z,{value:500,children:"500"}),(0,n.jsx)(O.Z,{value:1e3,children:"1000"})]}),(0,n.jsx)("span",{children:"results per page"})]})]}),(0,n.jsx)(eF,{})]})}),eY=s(22695),eq=e=>{let{open:t,onClose:s}=e,{maxTextLength:l,setMaxTextLength:a,wordBreak:r,setWordBreak:i,showInferenceDetails:o,setShowInferenceDetails:c,renderMarkdown:d,setRenderMarkdown:u,prettifyJson:p,setPrettifyJson:h,showPrompts:m,setShowPrompts:x,showPassFail:g,setShowPassFail:j}=ee();return(0,n.jsxs)(J.Z,{open:t,onClose:s,fullWidth:!0,maxWidth:"sm",children:[(0,n.jsx)(X.Z,{children:"Table View Settings"}),(0,n.jsxs)(G.Z,{children:[(0,n.jsx)(k.Z,{children:(0,n.jsx)(A.Z,{title:"Forcing line breaks makes it easier to adjust column widths to your liking",placement:"right",children:(0,n.jsx)(eD.Z,{control:(0,n.jsx)(N.Z,{checked:"break-all"===r,onChange:e=>i(e.target.checked?"break-all":"break-word")}),label:"Force line breaks"})})}),(0,n.jsx)(k.Z,{children:(0,n.jsx)(eD.Z,{control:(0,n.jsx)(N.Z,{checked:d,onChange:e=>u(e.target.checked)}),label:"Render model outputs as Markdown"})}),(0,n.jsx)(k.Z,{children:(0,n.jsx)(eD.Z,{control:(0,n.jsx)(N.Z,{checked:p,onChange:e=>h(e.target.checked)}),label:"Prettify JSON outputs"})}),(0,n.jsx)(k.Z,{children:(0,n.jsx)(A.Z,{title:"Show the final prompt that produced the output in each cell.",placement:"right",children:(0,n.jsx)(eD.Z,{control:(0,n.jsx)(N.Z,{checked:m,onChange:e=>x(e.target.checked)}),label:"Show full prompt in output cell"})})}),(0,n.jsx)(k.Z,{children:(0,n.jsx)(A.Z,{title:"Show pass/fail status for each output.",placement:"right",children:(0,n.jsx)(eD.Z,{control:(0,n.jsx)(N.Z,{checked:g,onChange:e=>j(e.target.checked)}),label:"Show pass/fail status"})})}),(0,n.jsx)(k.Z,{children:(0,n.jsx)(A.Z,{title:"Show detailed inference statistics such as latency, tokens used, cost, etc.",placement:"right",children:(0,n.jsx)(eD.Z,{control:(0,n.jsx)(N.Z,{checked:o,onChange:e=>c(e.target.checked)}),label:"Show inference details"})})}),(0,n.jsxs)(k.Z,{maxWidth:"sm",children:[(0,n.jsxs)(U.Z,{mt:2,children:["Max text length: ",l]}),(0,n.jsx)(eY.ZP,{min:25,max:1e3,value:l,onChange:(e,t)=>a(t)})]})]}),(0,n.jsx)(H.Z,{children:(0,n.jsx)(S.Z,{onClick:s,children:"Close"})})]})},e$=e=>{let{open:t,onClose:s,shareUrl:a}=e,r=(0,l.useRef)(null),[i,o]=(0,l.useState)(!1),c=()=>{s(),o(!1)};return(0,n.jsxs)(J.Z,{open:t,onClose:c,PaperProps:{style:{minWidth:"min(660px, 100%)"}},children:[(0,n.jsx)(X.Z,{children:"Your eval is ready to share"}),(0,n.jsxs)(G.Z,{children:[(0,n.jsx)(L.Z,{inputRef:r,value:a,fullWidth:!0,InputProps:{readOnly:!0,endAdornment:(0,n.jsx)(Y.Z,{onClick:()=>{r.current&&(r.current.select(),document.execCommand("copy"),o(!0))},children:i?(0,n.jsx)(z.Z,{}):(0,n.jsx)(B.Z,{})})}}),(0,n.jsx)(eE.Z,{sx:{fontSize:"0.75rem"},children:"Shared URLs are deleted after 2 weeks."})]}),(0,n.jsx)(H.Z,{children:(0,n.jsx)(S.Z,{onClick:c,color:"primary",children:"Close"})})]})};s(58022);let eK=(0,W.Z)(D.Z)(e=>{let{theme:t}=e;return{maxWidth:"100%",flexWrap:"wrap",[t.breakpoints.down("sm")]:{flexDirection:"column"}}});function eQ(e){var t;let{recentEvals:s,onRecentEvalSelected:a,defaultEvalId:c}=e,d=(0,m.useRouter)(),u=(0,m.useSearchParams)(),{table:h,config:x,setConfig:D,maxTextLength:W,wordBreak:z,showInferenceDetails:V,evalId:B}=ee(),{setStateFromConfig:J}=(0,j.o)(),[H,G]=l.useState((null==u?void 0:u.get("search"))||""),[X]=(0,_.Nr)(H,1e3),Y=e=>{G(e)},[q,$]=l.useState({}),K=l.useCallback((e,t)=>{$(s=>({...s,[e]:t}))},[$]);(0,g.Z)(h,"Table data must be loaded before rendering ResultsView");let{head:Q}=h,[es,en]=l.useState("all"),[ea,er]=l.useState(!1),[ei,eo]=l.useState(""),[ec,ed]=l.useState(!1),eu=async()=>{ed(!0);try{let e=await fetch("".concat(r,"/api/eval"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:{version:2,createdAt:new Date().toISOString(),results:{table:h},config:x}})}),{id:t}=await e.json(),s="".concat(i,"/eval/").concat(t);eo(s),er(!0)}catch(e){alert("Sorry, something went wrong.")}finally{ed(!1)}},ep=l.useMemo(()=>[...Q.vars.map((e,t)=>({value:"Variable ".concat(t+1),label:"Var ".concat(t+1,": ").concat(Q.vars[t].length>100?Q.vars[t].slice(0,97)+"...":Q.vars[t]),group:"Variables"})),...Q.prompts.map((e,t)=>{let s=Q.prompts[t],n=s.label||s.display||s.raw;return{value:"Prompt ".concat(t+1),label:"Prompt ".concat(t+1,": ").concat(n.length>100?n.slice(0,97)+"...":n),group:"Prompts"}})],[Q.vars,Q.prompts]),[eh,em]=l.useState(!1),[eg,ej]=l.useState(!1),[ev,ef]=l.useState({}),[eb,ey]=l.useState(ep.map(e=>e.value)),eZ=async()=>{(0,g.Z)(x,"Config must be loaded before clicking its description");let e=window.prompt("Enter new description:",x.description);if(null!==e&&e!==x.description){let t={...x,description:e};try{let e=await fetch("".concat(await (0,o.b)(),"/api/eval/").concat(B),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:t})});if(!e.ok)throw Error("Network response was not ok");D(t)}catch(e){console.error("Failed to update table:",e)}}},ew=async()=>{if(window.confirm("Are you sure you want to delete this evaluation?"))try{let e=await fetch("".concat(await (0,o.b)(),"/api/eval/").concat(B),{method:"DELETE"});if(!e.ok)throw Error("Network response was not ok");d.push("/")}catch(e){console.error("Failed to delete evaluation:",e),alert("Failed to delete evaluation")}},[eC,ek]=l.useState(null);return(0,n.jsxs)("div",{style:{marginLeft:"1rem",marginRight:"1rem"},children:[(0,n.jsx)(k.Z,{mb:2,sx:{display:"flex",alignItems:"center"},children:(0,n.jsxs)(U.Z,{variant:"h5",sx:{flexGrow:1},children:[(0,n.jsx)("span",{className:"description",onClick:eZ,children:(null==x?void 0:x.description)||B})," ",(null==x?void 0:x.description)&&(0,n.jsx)("span",{className:"description-filepath",children:B})]})}),(0,n.jsx)(k.Z,{py:"md",children:(0,n.jsxs)(eK,{direction:"row",spacing:4,alignItems:"center",children:[(0,n.jsx)(k.Z,{children:s&&s.length>0&&(0,n.jsx)(R.Z,{sx:{m:1,minWidth:200},size:"small",children:(0,n.jsx)(C.Z,{size:"small",options:s,renderOption:(e,t)=>(0,l.createElement)("li",{...e,key:t.id},t.label),style:{width:350},renderInput:e=>(0,n.jsx)(L.Z,{...e,label:"Eval run",variant:"outlined"}),defaultValue:s.find(e=>e.id===c)||s[0],onChange:(e,t)=>{t&&t.id&&a(t.id)},disableClearable:!0})})}),(0,n.jsx)(k.Z,{children:(0,n.jsxs)(R.Z,{sx:{m:1,minWidth:200,maxWidth:350},size:"small",children:[(0,n.jsx)(I.Z,{id:"visible-columns-label",children:"Columns"}),(0,n.jsx)(M.Z,{labelId:"visible-columns-label",id:"visible-columns",multiple:!0,value:eb,onChange:e=>{let{target:{value:t}}=e;ey("string"==typeof t?t.split(","):t);let s=[...Q.vars.map((e,t)=>"Variable ".concat(t+1)),...Q.prompts.map((e,t)=>"Prompt ".concat(t+1))],n={};s.forEach(e=>{n[e]=("string"==typeof t?t.split(","):t).includes(e)}),ef(n)},input:(0,n.jsx)(T.Z,{label:"Visible columns"}),renderValue:e=>e.join(", "),children:ep.map(e=>(0,n.jsxs)(O.Z,{dense:!0,value:e.value,children:[(0,n.jsx)(N.Z,{checked:eb.indexOf(e.value)>-1}),(0,n.jsx)(E.Z,{primary:e.label})]},e.value))})]})}),(0,n.jsx)(k.Z,{children:(0,n.jsxs)(R.Z,{sx:{minWidth:180},size:"small",children:[(0,n.jsx)(I.Z,{id:"failure-filter-mode-label",children:"Display"}),(0,n.jsxs)(M.Z,{labelId:"filter-mode-label",id:"filter-mode",value:es,onChange:e=>{let t=e.target.value;en(t);let s={};Q.prompts.forEach((e,n)=>{s["Prompt ".concat(n+1)]="failures"===t}),$(s)},label:"Filter",children:[(0,n.jsx)(O.Z,{value:"all",children:"Show all results"}),(0,n.jsx)(O.Z,{value:"failures",children:"Show failures only"}),(0,n.jsx)(O.Z,{value:"different",children:"Show different only"}),(0,n.jsx)(O.Z,{value:"highlights",children:"Show highlights only"})]})]})}),(0,n.jsx)(k.Z,{children:(0,n.jsx)(L.Z,{sx:{minWidth:180},size:"small",label:"Search",placeholder:"Text or regex",value:H,onChange:e=>Y(e.target.value)})}),(0,n.jsx)(k.Z,{flexGrow:1}),(0,n.jsx)(k.Z,{display:"flex",justifyContent:"flex-end",children:(0,n.jsxs)(eK,{direction:"row",spacing:2,children:[(0,n.jsx)(S.Z,{color:"primary",onClick:e=>{ek(e.currentTarget)},startIcon:(0,n.jsx)(v.Z,{}),children:"Eval actions"}),x&&(0,n.jsxs)(F.Z,{id:"eval-actions-menu",anchorEl:eC,keepMounted:!0,open:!!eC,onClose:()=>{ek(null)},children:[(0,n.jsx)(A.Z,{title:"View the configuration that defines this eval",placement:"left",children:(0,n.jsxs)(O.Z,{onClick:()=>em(!0),children:[(0,n.jsx)(P.Z,{children:(0,n.jsx)(w.Z,{fontSize:"small"})}),"View YAML"]})}),(0,n.jsx)(A.Z,{title:"Edit this eval in the web UI",placement:"left",children:(0,n.jsxs)(O.Z,{onClick:()=>{J(x),d.push("/setup/")},children:[(0,n.jsx)(P.Z,{children:(0,n.jsx)(b.Z,{fontSize:"small"})}),"Edit Eval"]})}),(0,n.jsx)(el,{}),(null==x?void 0:x.sharing)&&(0,n.jsx)(A.Z,{title:"Generate a unique URL that others can access",placement:"left",children:(0,n.jsxs)(O.Z,{onClick:eu,disabled:ec,children:[(0,n.jsx)(P.Z,{children:ec?(0,n.jsx)(p.Z,{size:16}):(0,n.jsx)(Z.Z,{fontSize:"small"})}),"Share"]})}),(0,n.jsx)(A.Z,{title:"Delete this eval",placement:"left",children:(0,n.jsxs)(O.Z,{onClick:ew,children:[(0,n.jsx)(P.Z,{children:(0,n.jsx)(f.Z,{fontSize:"small"})}),"Delete"]})})]}),(0,n.jsx)(A.Z,{title:"Edit table view settings",placement:"bottom",children:(0,n.jsx)(S.Z,{color:"primary",onClick:()=>ej(!0),startIcon:(0,n.jsx)(y.Z,{}),children:"Table Settings"})}),(null==x?void 0:null===(t=x.metadata)||void 0===t?void 0:t.redteam)&&(0,n.jsx)(A.Z,{title:"View vulnerability scan report",placement:"bottom",children:(0,n.jsx)(S.Z,{color:"primary",startIcon:(0,n.jsx)(w.Z,{}),onClick:()=>d.push("/report/?evalId=".concat(B)),children:"Vulnerability Report"})})]})})]})}),(0,n.jsx)(ex,{columnVisibility:ev}),(0,n.jsx)(eX,{maxTextLength:W,columnVisibility:ev,wordBreak:z,showStats:V,filterMode:es,failureFilter:q,searchText:X,onFailureFilterToggle:K,onSearchTextChange:Y}),(0,n.jsx)(et,{open:eh,onClose:()=>em(!1)}),(0,n.jsx)(e$,{open:ea,onClose:()=>er(!1),shareUrl:ei}),(0,n.jsx)(eq,{open:eg,onClose:()=>ej(!1)})]})}async function e0(){let e=(0,h.createClientComponentClient)(),{data:{user:t}}=await e.auth.getUser();(0,g.Z)(t,"User not logged in");let{data:s,error:n}=await e.from("EvaluationResult").select("id, createdAt").eq("user_id",t.id).order("createdAt",{ascending:!1}).limit(100);return s||[]}async function e1(e){let t=(0,h.createClientComponentClient)(),{data:s,error:n}=await t.from("EvaluationResult").select("*").eq("id",e).single();return s}function e2(e){var t;let{fetchId:s,preloadedData:a,recentEvals:i,defaultEvalId:c}=e,h=(0,m.useRouter)(),{table:j,setTable:v,setConfig:f,setEvalId:b}=ee(),[y,Z]=l.useState(!1),[w,C]=l.useState(!1),[k,S]=l.useState(i||[]),N=async()=>{let e=await fetch("".concat(await (0,o.b)(),"/api/results"),{cache:"no-store"}),t=await e.json();return S(t.data),t.data},R=l.useCallback(async e=>{let t=await fetch("".concat(await (0,o.b)(),"/api/results/").concat(e),{cache:"no-store"}),s=await t.json();v(s.data.results.table),f(s.data.config),b(e)},[v,f,b]),I=async e=>{u.Ox?(Z(!1),h.push("/eval/remote:".concat(encodeURIComponent(e)))):h.push("/eval/?evalId=".concat(encodeURIComponent(e)))},[P,E]=l.useState(c||(null===(t=k[0])||void 0===t?void 0:t.id)),F=(0,m.useSearchParams)(),O=F?F.get("evalId"):null;return(l.useEffect(()=>{if(O){let e=async()=>{await R(O),Z(!0),E(O),N()};e()}else if(a){var e;v(null===(e=a.data.results)||void 0===e?void 0:e.table),f(a.data.config),Z(!0)}else if(s){let e=async()=>{var e;let t="".concat(r,"/api/eval/").concat(s);console.log("Fetching eval from remote server",t);let n=await fetch(t);if(!n.ok){C(!0);return}let l=await n.json();v(null===(e=l.data.results)||void 0===e?void 0:e.table),f(l.data.config),Z(!0)};e()}else if(u.T8)(0,o.b)().then(e=>{let t=(0,x.io)(e);return t.on("init",e=>{console.log("Initialized socket connection",e),Z(!0),v(null==e?void 0:e.results.table),f(null==e?void 0:e.config),N().then(e=>{var t,s;E(null===(t=e[0])||void 0===t?void 0:t.id),b(null===(s=e[0])||void 0===s?void 0:s.id)})}),t.on("update",e=>{console.log("Received data update",e),v(e.results.table),f(e.config),N().then(e=>{var t;let s=null===(t=e[0])||void 0===t?void 0:t.id;s&&(E(s),b(s))})}),()=>{t.disconnect()}});else if(u.Ox)e0().then(e=>{S(e.map(e=>({id:e.id,label:e.createdAt}))),e.length>0&&e1(e[0].id).then(t=>{(0,g.Z)(t,"Eval not found");let s=t.results,n=t.config;E(e[0].id),v(s.table),f(n),Z(!0)})});else{let e=async()=>{let e=await N();if(!(e.length>0))return(0,n.jsx)("div",{className:"notice",children:"No evals yet. Share some evals to this server and they will appear here."});{let t=await (0,o.b)(),s=e[0].id,n=await fetch("".concat(t,"/api/results/").concat(s)),l=await n.json();v(l.data.results.table),f(l.data.config),Z(!0),E(s),b(s)}};e()}},[s,v,f,b,R,a,E,O]),w)?(0,n.jsx)("div",{className:"notice",children:"404 Eval not found"}):y&&j?(0,n.jsx)(d,{children:(0,n.jsx)(eQ,{defaultEvalId:P,recentEvals:k,onRecentEvalSelected:I})}):(0,n.jsxs)("div",{className:"notice",children:[(0,n.jsx)("div",{children:(0,n.jsx)(p.Z,{size:22})}),(0,n.jsx)("div",{children:"Waiting for eval data"})]})}s(94455)},52428:function(e,t,s){"use strict";s.d(t,{Ox:function(){return a},T8:function(){return l},eA:function(){return r}});var n=s(77580);let l=!n.env.NEXT_PUBLIC_PROMPTFOO_BUILD_STANDALONE_SERVER,a=!!n.env.NEXT_PUBLIC_PROMPTFOO_USE_SUPABASE,r=""},47887:function(e,t,s){"use strict";s.d(t,{o:function(){return a}});var n=s(79685),l=s(74595);let a=(0,n.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 s={};t.description&&(s.description=t.description||""),t.tests&&(s.testCases=t.tests),t.providers&&(s.providers=t.providers),t.prompts&&("string"==typeof t.prompts?s.prompts=[t.prompts]:Array.isArray(t.prompts)?s.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&&(s.defaultTest=t.defaultTest),t.evaluateOptions&&(s.evaluateOptions=t.evaluateOptions),t.scenarios&&(s.scenarios=t.scenarios),e(s)},getTestSuite:()=>{let{description:e,testCases:s,providers:n,prompts:l,env:a,scenarios:r}=t();return{env:a,description:e,providers:n,prompts:l,tests:s,scenarios:r}}}),{name:"promptfoo",skipHydration:!0}))},55974:function(){},94455:function(){},16658:function(){},93207:function(){},58022:function(){}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[92],{48931:function(e,t,a){"use strict";var i=a(71851);t.Z=void 0;var r=i(a(99570)),n=a(24004);t.Z=(0,r.default)((0,n.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download")},96212:function(e,t,a){"use strict";a.d(t,{f:function(){return n}});var i=a(25800),r=a(46213);function n(e){return(0,r.ZP)("MuiListItemIcon",e)}let s=(0,i.Z)("MuiListItemIcon",["root","alignItemsFlexStart"]);t.Z=s},53975:function(e,t,a){"use strict";a.d(t,{L:function(){return n}});var i=a(25800),r=a(46213);function n(e){return(0,r.ZP)("MuiListItemText",e)}let s=(0,i.Z)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);t.Z=s},96976:function(e,t,a){"use strict";a.d(t,{Z:function(){return M}});var i=a(94312),r=a(79042),n=a(14978),s=a(53468),o=a(3982),l=a(13477),d=a(31608),c=a(11874),u=a(89020),p=a(11112),v=a(30151),m=a(16656),h=a(41776),x=a(25800);let Z=(0,x.Z)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]);var f=a(96212),g=a(53975),C=a(46213);function I(e){return(0,C.ZP)("MuiMenuItem",e)}let j=(0,x.Z)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]);var b=a(24004);let y=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],P=e=>{let{disabled:t,dense:a,divider:i,disableGutters:n,selected:s,classes:l}=e,d=(0,o.Z)({root:["root",a&&"dense",t&&"disabled",!n&&"gutters",i&&"divider",s&&"selected"]},I,l);return(0,r.Z)({},l,d)},w=(0,d.ZP)(v.Z,{shouldForwardProp:e=>(0,c.Z)(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:a}=e;return[t.root,a.dense&&t.dense,a.divider&&t.divider,!a.disableGutters&&t.gutters]}})(({theme:e,ownerState:t})=>(0,r.Z)({},e.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!t.disableGutters&&{paddingLeft:16,paddingRight:16},t.divider&&{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${j.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,l.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${j.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,l.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${j.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,l.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,l.Fq)(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${j.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${j.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${Z.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${Z.inset}`]:{marginLeft:52},[`& .${g.Z.root}`]:{marginTop:0,marginBottom:0},[`& .${g.Z.inset}`]:{paddingLeft:36},[`& .${f.Z.root}`]:{minWidth:36}},!t.dense&&{[e.breakpoints.up("sm")]:{minHeight:"auto"}},t.dense&&(0,r.Z)({minHeight:32,paddingTop:4,paddingBottom:4},e.typography.body2,{[`& .${f.Z.root} svg`]:{fontSize:"1.25rem"}}))),k=n.forwardRef(function(e,t){let a;let o=(0,u.Z)({props:e,name:"MuiMenuItem"}),{autoFocus:l=!1,component:d="li",dense:c=!1,divider:v=!1,disableGutters:x=!1,focusVisibleClassName:Z,role:f="menuitem",tabIndex:g,className:C}=o,I=(0,i.Z)(o,y),j=n.useContext(p.Z),k=n.useMemo(()=>({dense:c||j.dense||!1,disableGutters:x}),[j.dense,c,x]),M=n.useRef(null);(0,m.Z)(()=>{l&&M.current&&M.current.focus()},[l]);let F=(0,r.Z)({},o,{dense:k.dense,divider:v,disableGutters:x}),S=P(o),$=(0,h.Z)(M,t);return o.disabled||(a=void 0!==g?g:-1),(0,b.jsx)(p.Z.Provider,{value:k,children:(0,b.jsx)(w,(0,r.Z)({ref:$,role:f,tabIndex:a,component:d,focusVisibleClassName:(0,s.Z)(S.focusVisible,Z),className:(0,s.Z)(S.root,C)},I,{ownerState:F,classes:S}))})});var M=k},96199:function(e,t,a){Promise.resolve().then(a.bind(a,19259))},19259:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return I}});var i=a(24004),r=a(14978),n=a(48931),s=a(68873),o=a(49567),l=a(40982),d=a(36273),c=a(96976),u=a(30469),p=a(65068),v=a(70417),m=a(21303),h=a(26485),x=a(30021),Z=a(19708),f=a(67339),g=a(38640),C=a.n(g);function I(){let[e,t]=(0,r.useState)([]),[a,g]=(0,r.useState)(null),[I,j]=(0,r.useState)("asc"),[b,y]=(0,r.useState)(null),[P,w]=r.useState(1),[k,M]=(0,r.useState)({evalId:"",datasetId:"",provider:"",promptId:""}),F=!!b;(0,r.useEffect)(()=>{(async()=>{let e=await fetch("/api/progress"),a=await e.json();a&&a.data&&t(a.data)})()},[]);let S=e=>{let t=a===e&&"asc"===I;g(e),j(t?"desc":"asc")},$=e=>(null==e?void 0:e.testPassCount)!=null&&(null==e?void 0:e.testFailCount)!=null?(e.testPassCount/(e.testPassCount+e.testFailCount)*100).toFixed(2):"-",O=e=>{var t,a,i,r,n;let s=e.map(e=>{var s,o,l,d,c;return[null!==(t=e.evalId)&&void 0!==t?t:"",null!==(a=null===(s=e.datasetId)||void 0===s?void 0:s.slice(0,6))&&void 0!==a?a:"",null!==(i=e.provider)&&void 0!==i?i:"",(null!==(r=null===(o=e.promptId)||void 0===o?void 0:o.slice(0,6))&&void 0!==r?r:"")+" "+(null!==(n=e.raw)&&void 0!==n?n:""),$(e.metrics),(null===(l=e.metrics)||void 0===l?void 0:l.testPassCount)==null?"-":"".concat(e.metrics.testPassCount),(null===(d=e.metrics)||void 0===d?void 0:d.testFailCount)==null?"-":"".concat(e.metrics.testFailCount),(null===(c=e.metrics)||void 0===c?void 0:c.score)==null?"-":e.metrics.score.toFixed(2)]});return[["Eval","Dataset","Provider","Prompt","Pass Rate %","Pass Count","Fail Count","Raw score"]].concat(s).map(e=>e.map(e=>null!=e?e:"").join(",")).join("\n")},R=t=>{let a="json"===t?JSON.stringify(e):O(e),i=new Blob([a],{type:"text/".concat(t,";charset=utf-8;")}),r=document.createElement("a");r.href=URL.createObjectURL(i),r.download="cols_export.".concat(t),r.click(),URL.revokeObjectURL(r.href),y(null)},L=r.useMemo(()=>e.filter(e=>{var t,a,i,r;return(!k.evalId||(null===(t=e.evalId)||void 0===t?void 0:t.includes(k.evalId)))&&(!k.datasetId||(null===(a=e.datasetId)||void 0===a?void 0:a.startsWith(k.datasetId)))&&(!k.provider||(null===(i=e.provider)||void 0===i?void 0:i.includes(k.provider)))&&(!k.promptId||(null===(r=e.promptId)||void 0===r?void 0:r.startsWith(k.promptId)))}),[e,k]),D=r.useMemo(()=>L.sort((e,t)=>{if(!a)return 0;if("passRate"===a){let a=parseFloat($(e.metrics)),i=parseFloat($(t.metrics));return"asc"===I?a-i:i-a}if(a in e&&a in t){let i=e[a]||"",r=t[a]||"";return"asc"===I?i.toString().localeCompare(r.toString()):r.toString().localeCompare(i.toString())}return 0}),[L,a,I]),E=r.useMemo(()=>Array.from(new Set(e.map(e=>e.evalId))),[e]),V=r.useMemo(()=>Array.from(new Set(e.map(e=>e.datasetId))),[e]),N=r.useMemo(()=>Array.from(new Set(e.map(e=>e.provider))),[e]),z=r.useMemo(()=>Array.from(new Set(e.map(e=>e.promptId))),[e]);return(0,i.jsxs)(o.Z,{paddingX:2,children:[(0,i.jsxs)(o.Z,{display:"flex",justifyContent:"space-between",alignItems:"center",children:[(0,i.jsx)("h2",{children:"Progress summary"}),(0,i.jsxs)("div",{children:[(0,i.jsx)(l.Z,{id:"export-button","aria-controls":F?"export-menu":void 0,"aria-haspopup":"true","aria-expanded":F?"true":void 0,onClick:e=>{y(e.currentTarget)},startIcon:(0,i.jsx)(n.Z,{}),children:"Export"}),(0,i.jsxs)(d.Z,{id:"export-menu",anchorEl:b,open:F,onClose:()=>{y(null)},MenuListProps:{"aria-labelledby":"export-button"},children:[(0,i.jsx)(c.Z,{onClick:()=>R("csv"),children:"CSV"}),(0,i.jsx)(c.Z,{onClick:()=>R("json"),children:"JSON"})]})]})]}),(0,i.jsx)(o.Z,{children:"This page shows performance metrics for recent evals."}),(0,i.jsxs)(o.Z,{display:"flex",flexDirection:"row",gap:2,mt:2,children:[(0,i.jsx)(s.Z,{options:E,value:k.evalId,onChange:(e,t)=>{M({...k,evalId:t||""})},renderInput:e=>(0,i.jsx)(f.Z,{...e,label:"Eval ID",variant:"outlined",size:"small",fullWidth:!0}),sx:{width:220}}),(0,i.jsx)(s.Z,{options:V,value:k.datasetId,onChange:(e,t)=>{M({...k,datasetId:t||""})},renderInput:e=>(0,i.jsx)(f.Z,{...e,label:"Dataset ID",variant:"outlined",size:"small",fullWidth:!0}),sx:{width:220}}),(0,i.jsx)(s.Z,{options:N,value:k.provider,onChange:(e,t)=>{M({...k,provider:t||""})},renderInput:e=>(0,i.jsx)(f.Z,{...e,label:"Provider",variant:"outlined",size:"small",fullWidth:!0}),sx:{width:220}}),(0,i.jsx)(s.Z,{options:z,value:k.promptId,onChange:(e,t)=>{M({...k,promptId:t||""})},renderInput:e=>(0,i.jsx)(f.Z,{...e,label:"Prompt ID",variant:"outlined",size:"small",fullWidth:!0}),sx:{width:220}})]}),(0,i.jsxs)(p.Z,{children:[(0,i.jsx)(h.Z,{children:(0,i.jsxs)(x.Z,{children:[(0,i.jsx)(m.Z,{children:(0,i.jsx)(Z.Z,{active:"evalId"===a,direction:"evalId"===a?I:"asc",onClick:()=>S("evalId"),children:"Eval"})}),(0,i.jsx)(m.Z,{children:"Dataset"}),(0,i.jsx)(m.Z,{children:"Provider"}),(0,i.jsx)(m.Z,{children:"Prompt"}),(0,i.jsx)(m.Z,{children:(0,i.jsx)(Z.Z,{active:"passRate"===a,direction:"passRate"===a?I:"asc",onClick:()=>S("passRate"),children:"Pass Rate %"})}),(0,i.jsx)(m.Z,{children:(0,i.jsx)(Z.Z,{active:"testPassCount"===a,direction:"testPassCount"===a?I:"asc",onClick:()=>S("testPassCount"),children:"Pass Count"})}),(0,i.jsx)(m.Z,{children:(0,i.jsx)(Z.Z,{active:"testFailCount"===a,direction:"testFailCount"===a?I:"asc",onClick:()=>S("testFailCount"),children:"Fail Count"})}),(0,i.jsx)(m.Z,{children:(0,i.jsx)(Z.Z,{active:"score"===a,direction:"score"===a?I:"asc",onClick:()=>S("score"),children:"Raw score"})})]})}),(0,i.jsx)(v.Z,{children:D.slice((P-1)*25,25*P).map((e,t)=>{var a,r,n,s,o;return(0,i.jsxs)(x.Z,{hover:!0,onClick:()=>M({...k,evalId:e.evalId,datasetId:e.datasetId||"",promptId:e.promptId||"",provider:e.provider}),children:[(0,i.jsx)(m.Z,{children:(0,i.jsx)(C(),{href:"/eval?evalId=".concat(e.evalId),onClick:e=>e.stopPropagation(),children:e.evalId})}),(0,i.jsx)(m.Z,{children:(0,i.jsx)(C(),{href:"/datasets?id=".concat(e.datasetId),onClick:e=>e.stopPropagation(),children:null===(a=e.datasetId)||void 0===a?void 0:a.slice(0,6)})}),(0,i.jsx)(m.Z,{children:e.provider}),(0,i.jsxs)(m.Z,{children:[(0,i.jsxs)(C(),{href:"/prompts?id=".concat(e.promptId),onClick:e=>e.stopPropagation(),children:["[",null===(r=e.promptId)||void 0===r?void 0:r.slice(0,6),"]"]})," ",e.raw]}),(0,i.jsx)(m.Z,{children:$(e.metrics)}),(0,i.jsx)(m.Z,{children:(null===(n=e.metrics)||void 0===n?void 0:n.testPassCount)==null?"-":"".concat(e.metrics.testPassCount)}),(0,i.jsx)(m.Z,{children:(null===(s=e.metrics)||void 0===s?void 0:s.testFailCount)==null?"-":"".concat(e.metrics.testFailCount)}),(0,i.jsx)(m.Z,{children:(null===(o=e.metrics)||void 0===o?void 0:o.score)==null?"-":e.metrics.score.toFixed(2)})]},t)})})]}),Math.ceil(L.length/25)>1&&(0,i.jsx)(u.Z,{count:Math.ceil(D.length/25),page:P,onChange:(e,t)=>w(t),sx:{pt:2,pb:4,display:"flex",justifyContent:"center"}})]})}}},function(e){e.O(0,[540,640,215,620,770,304,339,378,873,322,470,730,744],function(){return e(e.s=96199)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[794],{34070:function(e,t,n){Promise.resolve().then(n.bind(n,73730))},49532:function(e,t,n){"use strict";let i,s;async function l(){if(i||(s||(s=fetch("/api/config").then(e=>e.json()).then(e=>i=e.apiBaseUrl)),await s),void 0===i)throw Error("API base URL is undefined");return i}n.d(t,{b:function(){return l}})},73730:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return I}});var i=n(24004),s=n(14978),l=n(49532),r=n(49567),c=n(30469),d=n(65068),a=n(70417),o=n(21303),h=n(26485),u=n(30021),x=n(19708),j=n(65969),Z=n(38640),v=n.n(Z),p=n(28891),f=n(40982),m=n(29794),w=n(22701),y=n(51956),C=n(82669),g=n(613),E=n(63147),k=e=>{var t;let{openDialog:n,handleClose:s,selectedPrompt:l}=e;return(0,i.jsxs)(m.Z,{open:n,onClose:s,fullWidth:!0,maxWidth:"lg",children:[(0,i.jsxs)(C.Z,{children:["Prompt ",l.id.slice(0,6)]}),(0,i.jsxs)(y.Z,{children:[(0,i.jsx)(E.Z,{variant:"h6",style:{marginTop:"1rem"},children:"Prompt"}),(0,i.jsx)(g.u,{readOnly:!0,value:null==l?void 0:null===(t=l.prompt)||void 0===t?void 0:t.raw,style:{width:"100%",padding:"0.75rem"},maxRows:50}),(0,i.jsx)(E.Z,{variant:"h6",style:{marginTop:"1rem"},children:"Used in..."}),(0,i.jsxs)(d.Z,{children:[(0,i.jsx)(h.Z,{children:(0,i.jsxs)(u.Z,{children:[(0,i.jsx)(o.Z,{children:"Eval ID"}),(0,i.jsx)(o.Z,{children:"Dataset ID"}),(0,i.jsx)(o.Z,{children:"Raw score"}),(0,i.jsx)(o.Z,{children:"Pass rate"}),(0,i.jsx)(o.Z,{children:"Pass count"}),(0,i.jsx)(o.Z,{children:"Fail count"})]})}),(0,i.jsx)(a.Z,{children:null==l?void 0:l.evals.sort((e,t)=>t.id.localeCompare(e.id)).map(e=>{var t,n,s,l,r,c;let d=null!==(l=null===(t=e.metrics)||void 0===t?void 0:t.testPassCount)&&void 0!==l?l:0,a=null!==(r=null===(n=e.metrics)||void 0===n?void 0:n.testFailCount)&&void 0!==r?r:0,h=d+a>0?(d/(d+a)*100).toFixed(2)+"%":"-";return(0,i.jsxs)(u.Z,{children:[(0,i.jsx)(o.Z,{children:(0,i.jsx)(v(),{href:"/eval/?evalId=".concat(e.id),children:e.id})}),(0,i.jsx)(o.Z,{children:(0,i.jsx)(v(),{href:"/datasets/?id=".concat(e.datasetId),children:e.datasetId.slice(0,6)})}),(0,i.jsx)(o.Z,{children:null!==(c=null===(s=e.metrics)||void 0===s?void 0:s.score.toFixed(2))&&void 0!==c?c:"-"}),(0,i.jsx)(o.Z,{children:h}),(0,i.jsx)(o.Z,{children:d}),(0,i.jsx)(o.Z,{children:a})]},"eval-".concat(e.id))})})]})]}),(0,i.jsx)(w.Z,{children:(0,i.jsx)(f.Z,{onClick:s,children:"Close"})})]})};function I(){let e=(0,p.useSearchParams)(),[t,n]=(0,s.useState)([]),[Z,f]=(0,s.useState)("date"),[m,w]=(0,s.useState)("desc"),[y,C]=(0,s.useState)(1),[g,E]=(0,s.useState)(10),[I,P]=(0,s.useState)(!1),[S,D]=(0,s.useState)(0),b=e=>{let t=Z===e&&"asc"===m?"desc":"asc";f(e),w(t)};(0,s.useEffect)(()=>{(async()=>{fetch("".concat(await (0,l.b)(),"/api/prompts")).then(e=>e.json()).then(e=>{let t=[...e.data].sort((e,t)=>null===Z?0:"asc"===m?e[Z]>t[Z]?1:-1:e[Z]<t[Z]?1:-1);n(t)})})()},[Z,m]);let _=e=>{P(!0),D(e)};return(0,s.useEffect)(()=>{let n=null==e?void 0:e.get("id");if(n){let e=t.findIndex(e=>e.id.startsWith(n));-1!==e&&_(e)}},[t,e]),(0,i.jsxs)(r.Z,{paddingX:2,children:[(0,i.jsxs)(d.Z,{children:[(0,i.jsx)(h.Z,{children:(0,i.jsxs)(u.Z,{children:[(0,i.jsx)(o.Z,{style:{width:"10%"},children:"ID"}),(0,i.jsx)(o.Z,{style:{width:"60%"},children:(0,i.jsx)(x.Z,{active:"raw"===Z,direction:"raw"===Z?m:"asc",onClick:()=>b("raw"),children:"Prompt"})}),(0,i.jsx)(o.Z,{style:{width:"20%"},children:(0,i.jsx)(j.Z,{title:"The date of the most recent eval for this prompt",children:(0,i.jsx)(x.Z,{active:"date"===Z,direction:"date"===Z?m:"asc",onClick:()=>b("date"),children:"Most recent eval"})})}),(0,i.jsx)(o.Z,{style:{width:"10%"},children:(0,i.jsx)(x.Z,{active:"count"===Z,direction:"count"===Z?m:"asc",onClick:()=>b("count"),children:"# Evals"})})]})}),(0,i.jsx)(a.Z,{children:t.slice((y-1)*g,y*g).map((e,t)=>(0,i.jsxs)(u.Z,{hover:!0,children:[(0,i.jsx)(o.Z,{style:{width:"10%"},children:e.id.slice(0,6)}),(0,i.jsx)(o.Z,{style:{width:"60%",whiteSpace:"pre-wrap",cursor:"pointer"},onClick:()=>_(t),children:e.prompt.raw.length>500?e.prompt.raw.slice(0,500)+"...":e.prompt.raw}),(0,i.jsx)(o.Z,{style:{width:"20%"},children:e.recentEvalDate?(0,i.jsx)(v(),{href:"/eval?evalId=".concat(e.recentEvalId),children:e.recentEvalDate}):"Unknown"}),(0,i.jsx)(o.Z,{style:{width:"10%"},children:e.count})]},t))})]}),Math.ceil(t.length/g)>1&&(0,i.jsx)(c.Z,{count:Math.ceil(t.length/g),page:y,onChange:(e,t)=>C(t)}),t[S]&&(0,i.jsx)(k,{openDialog:I,handleClose:()=>{P(!1)},selectedPrompt:t[S]})]})}}},function(e){e.O(0,[540,640,215,770,995,374,322,470,730,744],function(){return e(e.s=34070)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- !function(){"use strict";var e,t,n,r,o,u,i,c,f,a={},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}},r=!0;try{a[e].call(n.exports,n,n.exports,s),r=!1}finally{r&&delete l[e]}return n.exports}s.m=a,e=[],s.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],c=!0,f=0;f<n.length;f++)i>=o&&Object.keys(s.O).every(function(e){return s.O[e](n[f])})?n.splice(f--,1):(c=!1,o<i&&(i=o));if(c){e.splice(u--,1);var a=r();void 0!==a&&(t=a)}}return t},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);s.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},s.d(o,u),o},s.d=function(e,t){for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce(function(t,n){return s.f[n](e,t),t},[]))},s.u=function(e){return 631===e?"static/chunks/631-87fea556bbafe972.js":"static/chunks/"+e+"."+({407:"42b5daf65ab5dde9",887:"028187fb318c3e59"})[e]+".js"},s.miniCssF=function(e){return"static/css/"+({11:"e141e895af3747c6",185:"b76f1739b5a14901",413:"edcd6f0b6c902fde",420:"dab5d695b3657d59",421:"036bf4af64e53e86",466:"48d388184a2f4ce3",931:"8119d8bd13a8adab"})[e]+".css"},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",s.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,c,f=document.getElementsByTagName("script"),a=0;a<f.length;a++){var l=f[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(c=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack",o+n),i.src=s.tu(e)),r[e]=[t];var d=function(t,n){i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},s.tu=function(e){return s.tt().createScriptURL(e)},s.p="/_next/",i={272:0},s.f.j=function(e,t){var n=s.o(i,e)?i[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(272!=e){var r=new Promise(function(t,r){n=i[e]=[t,r]});t.push(n[2]=r);var o=s.p+s.u(e),u=Error();s.l(o,function(t){if(s.o(i,e)&&(0!==(n=i[e])&&(i[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}else i[e]=0}},s.O.j=function(e){return 0===i[e]},c=function(e,t){var n,r,o=t[0],u=t[1],c=t[2],f=0;if(o.some(function(e){return 0!==i[e]})){for(n in u)s.o(u,n)&&(s.m[n]=u[n]);if(c)var a=c(s)}for(e&&e(t);f<o.length;f++)r=o[f],s.o(i,r)&&i[r]&&i[r][0](),i[r]=0;return s.O(a)},(f=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),f.push=c.bind(null,f.push.bind(f))}();
@@ -1 +0,0 @@
1
- .custom-metric-container{display:inline-flex;flex-wrap:wrap;gap:.25rem;font-weight:400}.custom-metric-container>span{padding:.25rem .5rem;border-radius:4px;color:var(--text-color);border:1px solid var(--border-color);margin-right:.25rem}.custom-metric-container>span.clickable{cursor:pointer}.custom-metric-container>span.clickable:hover{border-color:var(--link-color)}.fail-reason-carousel-controls{float:right;color:var(--text-color);font-weight:400}pre{white-space:pre-wrap}.font-bold{font-weight:700}.divTable,table.results-table{border:1px solid var(--table-border-color);border-collapse:collapse;width:100%;margin:1rem 0;box-shadow:0 2px 4px rgba(0,0,0,.1)}.results-table ins{background-color:var(--insert-highlight-color);text-decoration:none}.results-table del{background-color:var(--delete-highlight-color);-webkit-text-decoration:strikethrough;text-decoration:strikethrough}.tr{display:flex}.results-table tr,.tr{width:-moz-fit-content;width:fit-content}.results-table tr:hover,.tr:hover{background-color:rgba(0,0,0,.02)}.results-table td,.results-table th,.td,.th{position:relative;box-shadow:inset 0 0 0 1px var(--border-color);vertical-align:top}.compact .td,.compact .th,.compact.results-table td,.compact.results-table th{padding:.5rem}.results-table td.variable,.results-table th.variable,.td.variable,.th.variable{background-color:var(--variable-background-color)}.variable .cell{max-height:100%;overflow-y:auto}.results-table tr.header{background-color:var(--header-background-color)}.results-table th,.th{padding:1rem;position:relative;vertical-align:bottom;text-align:left;white-space:pre-wrap;font-weight:400}.results-table th .action{cursor:pointer;margin-left:.5rem}.results-table th .action svg{vertical-align:middle}.results-table td,.results-table th{height:1px}@-moz-document url-prefix(){.results-table td,.results-table th{height:100%}}.firefox-fix{display:table;height:100%}.results-table tr .cell{display:flex;flex-direction:column;white-space:pre-wrap;height:100%;padding:1rem}.results-table tr .cell img{max-width:256px;max-height:256px;cursor:zoom-in}.results-table tr .cell .prompt{background-color:var(--variable-background-color);padding:1rem;font-family:Courier New,Courier,monospace;font-size:.8rem}.results-table tr .cell .prompt,.results-table tr .cell .prompt .pill{border:1px solid var(--border-color);border-radius:4px;margin-bottom:.5rem}.results-table tr .cell .prompt .pill{display:block;background-color:var(--neutral-background-color);padding:.25rem;width:-moz-fit-content;width:fit-content}.results-table tr .cell-actions{display:flex;gap:.5rem;visibility:hidden;position:absolute;top:1.25rem;right:.75rem;line-height:0;font-size:1.25rem}.results-table tr:hover .cell-actions{visibility:visible}.results-table tr .cell-detail{display:flex;flex-wrap:wrap;column-gap:.5rem;row-gap:.25rem;padding-top:1rem;margin-top:auto}.results-table tr .stat-item{font-weight:400;font-size:.75rem;color:#888}.results-table tr .cell-actions .action{cursor:pointer}.results-table tr .cell table{width:100%;border-collapse:collapse;margin:1rem 0}.results-table tr .cell table td,.results-table tr .cell table th{border:1px solid var(--border-color);padding:.5rem;text-align:left}.results-table tr .cell table th{background-color:var(--header-background-color);font-weight:700}.results-table tr .cell table tr:nth-child(2n){background-color:var(--row-background-color)}.results-table tr .cell table tr:hover{background-color:var(--hover-background-color)}.results-table th .output-header{display:flex;flex-direction:column;height:100%;align-items:flex-start}.results-table th .output-header .pills{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center;margin-bottom:.5rem}.results-table th .prompt-container{font-weight:700;margin-bottom:.5rem}.results-table th .prompt-container>*{display:inline}.results-table th .provider{display:inline-block;padding:.25rem .5rem;background-color:var(--neutral-background-color);border:1px solid var(--border-color);border-radius:4px;margin-right:.25rem}.results-table th .summary{font-weight:400}.results-table th .prompt-detail{display:flex;flex-wrap:wrap;column-gap:.5rem;row-gap:.25rem;font-size:.75rem;color:#888;margin-top:auto}.results-table th .summary .highlight{padding:.25rem .5rem;border-radius:4px;background-color:var(--fail-background-color);border:1px solid var(--border-color)}.results-table th .summary .highlight.success{background-color:var(--success-background-color);border:1px solid var(--pass-color)}.results-table .status{display:flex;flex-direction:column;gap:.25rem;font-weight:700;margin-bottom:.5rem}.results-table .status .pill{display:inline-block;padding:.25rem .5rem;border-radius:4px;margin-right:.25rem;align-self:flex-start}.results-table .pass .pill{background-color:var(--success-background-color);color:var(--pass-color);border:1px solid var(--pass-color)}.results-table .fail .pill{border:1px solid var(--fail-color)}.fail-reason,.results-table .fail{color:var(--fail-color)}.fail-reason{font-weight:700}.compact .fail-reason{display:inline}.results-table .fail .pill{background-color:var(--fail-background-color)}.results-table td .score{font-weight:400}.results-table .comment{margin-top:.5rem;padding:.25rem .5rem;border-radius:4px;background-color:var(--neutral-background-color);font-style:italic;cursor:pointer}.first-prompt-col{border-left:2px solid #888}.first-prompt-row{border-top:2px solid #888}.search-highlight{color:var(--search-text-color);background-color:var(--search-highlight-color)}.results-table tr .cell .lightbox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000}.results-table tr .cell .lightbox img{max-width:90%;max-height:90%;cursor:zoom-out}.resizer{position:absolute;right:0;top:0;height:100%;width:5px;cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;background:var(--text-color);opacity:.5}.resizer.isResizing{background:var(--text-color);opacity:1}@media (hover:hover){.resizer{opacity:0}:hover>.resizer{opacity:1}}.description{cursor:pointer;transition:background-color .3s ease}.description:hover{background-color:#f0f0f0}.description-filepath{color:#bbb;font-size:.75rem}body{background-color:var(--background-color);color:var(--text-color)}.error,.notice{display:flex;flex-direction:column;gap:1.5rem;justify-content:center;align-items:center;height:9rem}.error{font-size:1.5rem}
@@ -1 +0,0 @@
1
- .dark-mode-toggle{display:flex;background-color:transparent;border:none;color:var(--text-color);cursor:pointer;font-size:16px;padding:8px;transition:color .3s}.dark-mode-toggle:hover{color:var(--pass-color)}.logo{display:flex;font-family:monospace,monospace;font-size:.8rem;align-items:center;gap:8px;background-color:#f0f0f0;padding:0 2rem 0 0;border-radius:.5rem}[data-theme=dark] .logo{background-color:#333;border-color:#444}.logo img{width:25px;margin-top:2px}[data-theme=dark] .logo img{filter:invert(1)}.logo span{color:var(--text-color)}[data-theme=dark] .logo span{color:#f0f0f0}.nav{padding:.25rem 0 .25rem 1rem;gap:1rem;background-color:#eee;margin-bottom:1rem}[data-theme=dark] .nav{background-color:#333}.nav a{text-decoration:none;color:#000;align-self:center}.nav .active{font-weight:700}[data-theme=dark] .nav a{color:#f0f0f0}.nav .right-aligned{display:flex;align-items:center;gap:1rem;margin-left:auto;margin-right:.5rem}.nav a:hover{text-decoration:underline}[data-theme=dark] .nav a:hover{color:#ddd}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/e195dd2ded485df3-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/b6db722c6886c2cd-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/9b67ab375515cd6f-s.woff2) format("woff2");unicode-range:U+1f??}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/e35c7314ac518ddc-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/a3c201c07e8eb753-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/04fe87c30c4f76ea-s.woff2) format("woff2");unicode-range:U+0100-02af,U+0304,U+0308,U+0329,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:400;font-display:swap;src:url(/_next/static/media/3a04115668d8070d-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/13259ce60de2aa3e-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/79015435f1a55eef-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/388fb79562c9fc54-s.woff2) format("woff2");unicode-range:U+1f??}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/5f4dfe83faee04f1-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/67e05ba3467b9f4d-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/daa8cca6b52a70fa-s.woff2) format("woff2");unicode-range:U+0100-02af,U+0304,U+0308,U+0329,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:500;font-display:swap;src:url(/_next/static/media/3a18fc8da1cdcd01-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:700;font-display:swap;src:url(/_next/static/media/03b685511c0eaac3-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:700;font-display:swap;src:url(/_next/static/media/9cf7d128be063d32-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:700;font-display:swap;src:url(/_next/static/media/101c7b68f2d8b610-s.woff2) format("woff2");unicode-range:U+1f??}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:700;font-display:swap;src:url(/_next/static/media/1e8103c5d17beb1d-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:700;font-display:swap;src:url(/_next/static/media/91a88e0c5dd21dfa-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:700;font-display:swap;src:url(/_next/static/media/ee7e17a7bdd8636b-s.woff2) format("woff2");unicode-range:U+0100-02af,U+0304,U+0308,U+0329,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Roboto_c5054f;font-style:italic;font-weight:700;font-display:swap;src:url(/_next/static/media/699512af39861afa-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7c53f7419436e04b-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/1c57ca6f5208a29b-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/cff529cd86cc0276-s.woff2) format("woff2");unicode-range:U+1f??}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7be645d133f3ee22-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/5647e4c23315a2d2-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/3dbd163d3bb09d47-s.woff2) format("woff2");unicode-range:U+0100-02af,U+0304,U+0308,U+0329,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/934c4b7cb736f2a3-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/dfa8b99978df7bbc-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/42d52f46a26971a3-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a6d330d7873e7320-s.woff2) format("woff2");unicode-range:U+1f??}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a5b77b63ef20339c-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d117eea74e01de14-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/eb52b768f62eeeb4-s.woff2) format("woff2");unicode-range:U+0100-02af,U+0304,U+0308,U+0329,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/627622453ef56b0d-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e25729ca87cc7df9-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/912a9cfe43c928d9-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/baf12dd90520ae41-s.woff2) format("woff2");unicode-range:U+1f??}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/bbdb6f0234009aba-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/f06116e890b3dadb-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/8fb72f69fba4e3d2-s.woff2) format("woff2");unicode-range:U+0100-02af,U+0304,U+0308,U+0329,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Roboto_c5054f;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/0e4fe491bf84089c-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Roboto_Fallback_c5054f;src:local("Arial");ascent-override:92.67%;descent-override:24.39%;line-gap-override:0.00%;size-adjust:100.11%}.__className_c5054f{font-family:__Roboto_c5054f,__Roboto_Fallback_c5054f}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;--background-color:#fff;--text-color:#404040;--link-color:#2e6585;--border-color:#d3d3d3;--table-border-color:#d3d3d3;--pass-color:green;--fail-color:#ad0000;--success-background-color:#d1ffd7;--fail-background-color:#ffd1d1;--neutral-background-color:#eee;--variable-background-color:#f7f7f7;--header-background-color:#fffdf7;--insert-highlight-color:#d4fcbc;--delete-highlight-color:#fbb6c2;--prompt-highlight-color:linen;--textarea-background-color:#fff;--textarea-color:#404040;--search-highlight-color:#ff0;--search-text-color:inherit}[data-theme=dark]{--background-color:#1a1a1a;--text-color:#f0f0f0;--link-color:#6fcaff;--border-color:#444;--table-border-color:#444;--pass-color:#b1e9b3;--fail-color:#ee726a;--success-background-color:#216d2b;--fail-background-color:#6d2121;--neutral-background-color:#424242;--variable-background-color:#333;--header-background-color:#333;--insert-highlight-color:#4f8a34;--delete-highlight-color:#8a3434;--prompt-highlight-color:#67605a;--textarea-background-color:#2d2d2d;--textarea-color:#fff;--search-highlight-color:#ff0;--search-text-color:#404040}html{font-size:16px;background-color:var(--background-color);color:var(--text-color)}body{margin:0}a{color:var(--link-color);text-decoration:none}a:hover{text-decoration:underline}textarea{background-color:var(--textarea-background-color);color:var(--textarea-color);padding:.5em;border:1px solid var(--border-color);border-radius:.25em;resize:vertical}*{box-sizing:border-box}
@@ -1 +0,0 @@
1
- .custom-metric-container{display:inline-flex;flex-wrap:wrap;gap:.25rem;font-weight:400}.custom-metric-container>span{padding:.25rem .5rem;border-radius:4px;color:var(--text-color);border:1px solid var(--border-color);margin-right:.25rem}.custom-metric-container>span.clickable{cursor:pointer}.custom-metric-container>span.clickable:hover{border-color:var(--link-color)}.fail-reason-carousel-controls{float:right;color:var(--text-color);font-weight:400}pre{white-space:pre-wrap}.font-bold{font-weight:700}.divTable,table.results-table{border:1px solid var(--table-border-color);border-collapse:collapse;width:100%;margin:1rem 0;box-shadow:0 2px 4px rgba(0,0,0,.1)}.results-table ins{background-color:var(--insert-highlight-color);text-decoration:none}.results-table del{background-color:var(--delete-highlight-color);-webkit-text-decoration:strikethrough;text-decoration:strikethrough}.tr{display:flex}.results-table tr,.tr{width:-moz-fit-content;width:fit-content}.results-table tr:hover,.tr:hover{background-color:rgba(0,0,0,.02)}.results-table td,.results-table th,.td,.th{position:relative;box-shadow:inset 0 0 0 1px var(--border-color);vertical-align:top}.compact .td,.compact .th,.compact.results-table td,.compact.results-table th{padding:.5rem}.results-table td.variable,.results-table th.variable,.td.variable,.th.variable{background-color:var(--variable-background-color)}.variable .cell{max-height:100%;overflow-y:auto}.results-table tr.header{background-color:var(--header-background-color)}.results-table th,.th{padding:1rem;position:relative;vertical-align:bottom;text-align:left;white-space:pre-wrap;font-weight:400}.results-table th .action{cursor:pointer;margin-left:.5rem}.results-table th .action svg{vertical-align:middle}.results-table td,.results-table th{height:1px}@-moz-document url-prefix(){.results-table td,.results-table th{height:100%}}.firefox-fix{display:table;height:100%}.results-table tr .cell{display:flex;flex-direction:column;white-space:pre-wrap;height:100%;padding:1rem}.results-table tr .cell img{max-width:256px;max-height:256px;cursor:zoom-in}.results-table tr .cell .prompt{background-color:var(--variable-background-color);padding:1rem;font-family:Courier New,Courier,monospace;font-size:.8rem}.results-table tr .cell .prompt,.results-table tr .cell .prompt .pill{border:1px solid var(--border-color);border-radius:4px;margin-bottom:.5rem}.results-table tr .cell .prompt .pill{display:block;background-color:var(--neutral-background-color);padding:.25rem;width:-moz-fit-content;width:fit-content}.results-table tr .cell-actions{display:flex;gap:.5rem;visibility:hidden;position:absolute;top:1.25rem;right:.75rem;line-height:0;font-size:1.25rem}.results-table tr:hover .cell-actions{visibility:visible}.results-table tr .cell-detail{display:flex;flex-wrap:wrap;column-gap:.5rem;row-gap:.25rem;padding-top:1rem;margin-top:auto}.results-table tr .stat-item{font-weight:400;font-size:.75rem;color:#888}.results-table tr .cell-actions .action{cursor:pointer}.results-table tr .cell table{width:100%;border-collapse:collapse;margin:1rem 0}.results-table tr .cell table td,.results-table tr .cell table th{border:1px solid var(--border-color);padding:.5rem;text-align:left}.results-table tr .cell table th{background-color:var(--header-background-color);font-weight:700}.results-table tr .cell table tr:nth-child(2n){background-color:var(--row-background-color)}.results-table tr .cell table tr:hover{background-color:var(--hover-background-color)}.results-table th .output-header{display:flex;flex-direction:column;height:100%;align-items:flex-start}.results-table th .output-header .pills{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center;margin-bottom:.5rem}.results-table th .prompt-container{font-weight:700;margin-bottom:.5rem}.results-table th .prompt-container>*{display:inline}.results-table th .provider{display:inline-block;padding:.25rem .5rem;background-color:var(--neutral-background-color);border:1px solid var(--border-color);border-radius:4px;margin-right:.25rem}.results-table th .summary{font-weight:400}.results-table th .prompt-detail{display:flex;flex-wrap:wrap;column-gap:.5rem;row-gap:.25rem;font-size:.75rem;color:#888;margin-top:auto}.results-table th .summary .highlight{padding:.25rem .5rem;border-radius:4px;background-color:var(--fail-background-color);border:1px solid var(--border-color)}.results-table th .summary .highlight.success{background-color:var(--success-background-color);border:1px solid var(--pass-color)}.results-table .status{display:flex;flex-direction:column;gap:.25rem;font-weight:700;margin-bottom:.5rem}.results-table .status .pill{display:inline-block;padding:.25rem .5rem;border-radius:4px;margin-right:.25rem;align-self:flex-start}.results-table .pass .pill{background-color:var(--success-background-color);color:var(--pass-color);border:1px solid var(--pass-color)}.results-table .fail .pill{border:1px solid var(--fail-color)}.fail-reason,.results-table .fail{color:var(--fail-color)}.fail-reason{font-weight:700}.compact .fail-reason{display:inline}.results-table .fail .pill{background-color:var(--fail-background-color)}.results-table td .score{font-weight:400}.results-table .comment{margin-top:.5rem;padding:.25rem .5rem;border-radius:4px;background-color:var(--neutral-background-color);font-style:italic;cursor:pointer}.first-prompt-col{border-left:2px solid #888}.first-prompt-row{border-top:2px solid #888}.search-highlight{color:var(--search-text-color);background-color:var(--search-highlight-color)}.results-table tr .cell .lightbox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000}.results-table tr .cell .lightbox img{max-width:90%;max-height:90%;cursor:zoom-out}.resizer{position:absolute;right:0;top:0;height:100%;width:5px;cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;background:var(--text-color);opacity:.5}.resizer.isResizing{background:var(--text-color);opacity:1}@media (hover:hover){.resizer{opacity:0}:hover>.resizer{opacity:1}}.description{cursor:pointer;transition:background-color .3s ease}.description:hover{background-color:#f0f0f0}.description-filepath{color:#bbb;font-size:.75rem}body{background-color:var(--background-color);color:var(--text-color)}.notice{display:flex;flex-direction:column;gap:1.5rem;justify-content:center;align-items:center;height:9rem}