promptfoo 0.120.24 → 0.120.26

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 (304) hide show
  1. package/README.md +35 -22
  2. package/dist/src/{ListApp-55OAHww3.js → ListApp-D3DG0F8h.js} +1 -1
  3. package/dist/src/{accounts-BwVGYllP.cjs → accounts-BzEY8H3v.cjs} +5 -5
  4. package/dist/src/{accounts-BOlMHrvn.js → accounts-DHHiXsy6.js} +6 -6
  5. package/dist/src/{accounts-DxR9x_En.js → accounts-R3gfCR_g.js} +5 -5
  6. package/dist/src/{agentic-utils-t9-1raty.js → agentic-utils-D6_gzOUF.js} +3 -3
  7. package/dist/src/{agents-DMpQ860j.cjs → agents-C7BiinFI.cjs} +7 -7
  8. package/dist/src/{agents-9Z7pO8yx.js → agents-Cao4i7AX.js} +8 -8
  9. package/dist/src/{agents-DjExVR3v.js → agents-Cnph5GLD.js} +2 -2
  10. package/dist/src/{agents-CI0Ad69d.cjs → agents-CwM7re15.cjs} +5 -5
  11. package/dist/src/{agents-BwI-Tm5m.js → agents-DETIQHqF.js} +7 -7
  12. package/dist/src/{agents-CRAmwjo-.js → agents-DYIT-hQy.js} +6 -6
  13. package/dist/src/{agents-BbIpDhgp.js → agents-GiUianme.js} +5 -5
  14. package/dist/src/{agents-yL5DzIKY.js → agents-v4cW_ZgC.js} +2 -2
  15. package/dist/src/{aimlapi-xHHqwNg8.js → aimlapi-CMJpKK-B.js} +13 -13
  16. package/dist/src/{aimlapi-BM9P45Bp.js → aimlapi-DMF6v_vb.js} +15 -15
  17. package/dist/src/{aimlapi-DKo7IxJg.cjs → aimlapi-DoGLcQW_.cjs} +14 -14
  18. package/dist/src/{aimlapi-ivzDkqbs.js → aimlapi-DtSf1ykJ.js} +2 -2
  19. package/dist/src/app/assets/index-BOgkICuY.css +1 -0
  20. package/dist/src/app/assets/index-CSgqn_Vd.js +428 -0
  21. package/dist/src/app/assets/{vendor-charts-DnwydkkY.js → vendor-charts-CYyo8R8v.js} +1 -1
  22. package/dist/src/app/assets/{vendor-markdown-DjKAU15k.js → vendor-markdown-DSmzq4Jh.js} +1 -1
  23. package/dist/src/app/assets/vendor-react-AtKqiNEf.js +4 -0
  24. package/dist/src/app/assets/{vendor-syntax-Dc86c4Bu.js → vendor-syntax-D06x6TQF.js} +1 -1
  25. package/dist/src/app/index.html +6 -6
  26. package/dist/src/app/tsconfig.app.tsbuildinfo +1 -1
  27. package/dist/src/{audio-B3QGL6Nl.cjs → audio-BWjyvHn9.cjs} +4 -4
  28. package/dist/src/{audio-C-1oBiVZ.js → audio-BrJBFN2b.js} +4 -4
  29. package/dist/src/{audio-DnfDVjhL.js → audio-DUH4q0Xq.js} +5 -5
  30. package/dist/src/{audio-DQWHfAr8.js → audio-U580w8jM.js} +2 -2
  31. package/dist/src/{base-DHam07ip.js → base-BaXmtXYp.js} +3 -3
  32. package/dist/src/{base-BjsgxJp9.js → base-Dtp8b4_N.js} +3 -3
  33. package/dist/src/{base-Bso8ccGu.cjs → base-f71xxWai.cjs} +3 -3
  34. package/dist/src/{blobs-DOdc-E8L.cjs → blobs-673H0jCl.cjs} +3 -3
  35. package/dist/src/{blobs-Dcm272OH.js → blobs-C9J2mVgo.js} +3 -3
  36. package/dist/src/{blobs-MlVQyoSc.js → blobs-kt8v3UyH.js} +3 -3
  37. package/dist/src/{cache-KNsTJLKP.cjs → cache-7xULbvt3.cjs} +35 -8
  38. package/dist/src/{cache-BMl3AIo5.js → cache-BLLayYEN.js} +24 -9
  39. package/dist/src/{cache-B0ptF7sO.js → cache-BUPcq0Ad.js} +3 -3
  40. package/dist/src/cache-CVfRb-HD.cjs +6 -0
  41. package/dist/src/{cache-DPztwHxt.js → cache-O4EuX2JV.js} +4 -4
  42. package/dist/src/{cache-DHm8Pc8l.js → cache-mIszOnuz.js} +5 -22
  43. package/dist/src/{chat-DOQIJx7O.cjs → chat-C4zqjObh.cjs} +10 -10
  44. package/dist/src/{chat-DDGU7Tik.js → chat-C8Ei4f87.js} +9 -9
  45. package/dist/src/{chat-BnzIuoTQ.js → chat-CgyGj2hC.js} +12 -12
  46. package/dist/src/{chat-BRMJOuCv.js → chat-Cpz3O-Xl.js} +14 -14
  47. package/dist/src/{chat-CVOyOBYk.js → chat-DIywASPG.js} +11 -11
  48. package/dist/src/{chat-CrnXMbvh.cjs → chat-Fl6TZJRS.cjs} +13 -13
  49. package/dist/src/{chat-D8GcWK9l.js → chat-XPN9YHhr.js} +2 -2
  50. package/dist/src/{chatkit-IWIuhxFE.js → chatkit-DEls11hE.js} +4 -4
  51. package/dist/src/{chatkit-DlOZ-eNb.js → chatkit-DIrJX8xk.js} +4 -4
  52. package/dist/src/{chatkit-CcktkleS.js → chatkit-Dpxrq4eD.js} +2 -2
  53. package/dist/src/{chatkit-yeVtURUi.cjs → chatkit-e25Ziu17.cjs} +4 -4
  54. package/dist/src/{claude-agent-sdk-BiMgSH9g.js → claude-agent-sdk-6-xTaLwM.js} +48 -19
  55. package/dist/src/{claude-agent-sdk-Yj9Hq0cH.cjs → claude-agent-sdk-BzxF6NIJ.cjs} +48 -19
  56. package/dist/src/{claude-agent-sdk-rVqlUIJl.js → claude-agent-sdk-CmkTnKGH.js} +49 -20
  57. package/dist/src/{claude-agent-sdk-yid1kGsL.js → claude-agent-sdk-rXCBLK_o.js} +40 -11
  58. package/dist/src/{cloud-ByJVRSQI.js → cloud-BMbRVJFw.js} +3 -3
  59. package/dist/src/cloud-CZ4hytdm.js +5 -0
  60. package/dist/src/{cloudflare-ai-DmJZcvVx.cjs → cloudflare-ai-BAQ0u_dg.cjs} +14 -14
  61. package/dist/src/{cloudflare-ai-CWKYPCCF.js → cloudflare-ai-CUg4BTcj.js} +13 -13
  62. package/dist/src/{cloudflare-ai-goDJ5bwr.js → cloudflare-ai-CobxMTR4.js} +15 -15
  63. package/dist/src/{cloudflare-ai-CdKv38f6.js → cloudflare-ai-Z9X219gp.js} +2 -2
  64. package/dist/src/{cloudflare-gateway-BW8hcdB0.cjs → cloudflare-gateway-C0sgfr_z.cjs} +15 -15
  65. package/dist/src/{cloudflare-gateway-CDCOS1Os.js → cloudflare-gateway-D2_yi-Fh.js} +16 -16
  66. package/dist/src/{cloudflare-gateway-Dz_HCMGY.js → cloudflare-gateway-Djf3F3_H.js} +2 -2
  67. package/dist/src/{cloudflare-gateway-gzmTsXcd.js → cloudflare-gateway-_itGuXry.js} +14 -14
  68. package/dist/src/{codex-sdk-BlvhxMr0.js → codex-sdk-BASDNkIl.js} +90 -34
  69. package/dist/src/{codex-sdk-BC5qbCjh.js → codex-sdk-dSnGdgIp.js} +92 -36
  70. package/dist/src/{codex-sdk-CBpm53B8.js → codex-sdk-ibXwdglL.js} +91 -35
  71. package/dist/src/{codex-sdk-Cf5_CQch.cjs → codex-sdk-wTEpMM_X.cjs} +92 -36
  72. package/dist/src/{cometapi-DoaO5SLq.js → cometapi-B01btbfb.js} +16 -16
  73. package/dist/src/{cometapi-BUKGSUCw.js → cometapi-ChAaRjg5.js} +14 -14
  74. package/dist/src/{cometapi-C6BSw9k3.js → cometapi-DHUAH6nK.js} +2 -2
  75. package/dist/src/{cometapi-B3TzpkNI.cjs → cometapi-JbvOJSCO.cjs} +15 -15
  76. package/dist/src/{completion-BLe7SUA4.js → completion-BBJ6zmG3.js} +6 -6
  77. package/dist/src/{completion-1RAiLcwi.js → completion-D9_MDlnd.js} +6 -6
  78. package/dist/src/{completion-D6BTVt6e.cjs → completion-DDyL3Cb2.cjs} +6 -6
  79. package/dist/src/{docker-CkOzlD1W.js → docker-BuButc4D.js} +15 -15
  80. package/dist/src/{docker-BWsSX8Pn.cjs → docker-Ckw-j7Rr.cjs} +14 -14
  81. package/dist/src/{docker-CMf5SGLq.js → docker-JAAubMw3.js} +13 -13
  82. package/dist/src/{docker-C0AzMsuf.js → docker-vnOg96gi.js} +2 -2
  83. package/dist/src/errors-DnGCbnx8.js +36 -0
  84. package/dist/src/{esm-gWVPXn3r.cjs → esm-BQkx5roy.cjs} +2 -2
  85. package/dist/src/{esm-Lh6czAFT.js → esm-CYhseqj4.js} +2 -2
  86. package/dist/src/{esm-D40XsWlR.js → esm-rDtG_2rg.js} +2 -2
  87. package/dist/src/eval-CKHWqG9f.js +16 -0
  88. package/dist/src/{eval-WaSg64w3.js → eval-CYrbG57o.js} +106 -29
  89. package/dist/src/{evalResult-CGrGU_cG.js → evalResult-6JaUIStC.js} +7 -7
  90. package/dist/src/{evalResult-C_UM63nn.js → evalResult-COsVttMA.js} +7 -7
  91. package/dist/src/evalResult-CxTP-LMm.cjs +11 -0
  92. package/dist/src/evalResult-CzLURDcP.js +13 -0
  93. package/dist/src/{evalResult-BU4huold.cjs → evalResult-DlRfu_Rq.cjs} +7 -7
  94. package/dist/src/evalResult-DyttNQ_G.js +11 -0
  95. package/dist/src/evaluator-0PvfeBYh.js +38 -0
  96. package/dist/src/{evaluator-gmF3Vddp.js → evaluator-3EJCMTs0.js} +75 -49
  97. package/dist/src/{extractor-D-RM2m6A.cjs → extractor-DbhlYEeo.cjs} +23 -6
  98. package/dist/src/{extractor-Da8IxCeS.js → extractor-Hs7la_19.js} +23 -6
  99. package/dist/src/{extractor-BA90EtLq.js → extractor-LSYjrhK0.js} +23 -6
  100. package/dist/src/{fetch-BIfcW-Fd.js → fetch-18MuNu9i.js} +21 -7
  101. package/dist/src/{fetch-CW9GabAi.js → fetch-Bi0o-fdp.js} +2 -2
  102. package/dist/src/fetch-CMptBDVg.cjs +4 -0
  103. package/dist/src/fetch-DAZkv3gV.js +6 -0
  104. package/dist/src/{fetch-Mb7SbeM-.js → fetch-SRsE6Ctl.js} +21 -7
  105. package/dist/src/{fetch-MvWxCS5U.cjs → fetch-ZMn_oemb.cjs} +21 -7
  106. package/dist/src/{fileExtensions-CzcPkiKZ.js → fileExtensions-BpuMmaFL.js} +1 -1
  107. package/dist/src/{formatDuration-CCiZ-wBY.js → formatDuration-Doo0xq-z.js} +1 -1
  108. package/dist/src/{genaiTracer-BQ8AmajD.cjs → genaiTracer-CQlpZkrp.cjs} +2 -2
  109. package/dist/src/{genaiTracer-foKtbVa2.js → genaiTracer-CqNnnXrE.js} +1 -1
  110. package/dist/src/graders-BCytzXrb.js +34 -0
  111. package/dist/src/{graders-CwtelA9k.js → graders-BaMCwIKp.js} +212 -91
  112. package/dist/src/graders-CGZQShfJ.cjs +33 -0
  113. package/dist/src/{graders-2dabIkXs.cjs → graders-DzUUnUjC.cjs} +212 -91
  114. package/dist/src/{graders-BscQ6O1Q.js → graders-QsALpIdy.js} +211 -90
  115. package/dist/src/graders-spkuVC-E.js +36 -0
  116. package/dist/src/{image-Dv0o-Ab7.js → image-BXt_7u0v.js} +4 -4
  117. package/dist/src/{image-B6TV9l0v.js → image-BiEVdpdP.js} +7 -7
  118. package/dist/src/{image-DS9hlgSc.cjs → image-C3BjJUAU.cjs} +7 -7
  119. package/dist/src/{image-_jKUeeh9.js → image-COCWy5dX.js} +2 -2
  120. package/dist/src/{image-DqElR73O.cjs → image-D10zEe1f.cjs} +4 -4
  121. package/dist/src/{image-BVEVjrwl.js → image-DB4sHxdJ.js} +5 -5
  122. package/dist/src/{image-C1i3NoZo.js → image-mhAGP07h.js} +7 -7
  123. package/dist/src/index.cjs +305 -112
  124. package/dist/src/index.d.cts +137 -3
  125. package/dist/src/index.d.ts +137 -3
  126. package/dist/src/index.js +304 -111
  127. package/dist/src/{interactiveCheck-CjK2R4rB.js → interactiveCheck-DU-MAhp5.js} +2 -2
  128. package/dist/src/{knowledgeBase-K5fJN2kC.cjs → knowledgeBase-Bnb00xKs.cjs} +8 -8
  129. package/dist/src/{knowledgeBase-D-xthvn0.js → knowledgeBase-CMvMlLZR.js} +9 -9
  130. package/dist/src/{knowledgeBase-DJZHeJqg.js → knowledgeBase-DotRBzUE.js} +2 -2
  131. package/dist/src/{knowledgeBase-BSs2ldSR.js → knowledgeBase-XJQ0Qyez.js} +8 -8
  132. package/dist/src/{litellm-kPhaZkzz.js → litellm-BECdjOTx.js} +3 -3
  133. package/dist/src/{litellm-uRLukY7s.cjs → litellm-BrnZhMcL.cjs} +15 -15
  134. package/dist/src/{litellm-DH_rVIOd.js → litellm-CHrRmPAe.js} +16 -16
  135. package/dist/src/{litellm-DoXGHlpD.js → litellm-CrLJrPIm.js} +14 -14
  136. package/dist/src/{logger-CMp-NS-e.cjs → logger-BdZ-IqBc.cjs} +5 -2
  137. package/dist/src/{logger-Bzi5o47S.js → logger-BotXmWKW.js} +5 -2
  138. package/dist/src/{logger-q5I8CByj.js → logger-w8Ozp0Td.js} +5 -2
  139. package/dist/src/{luma-ray-B3GiVpuq.js → luma-ray-BOeX-h0M.js} +10 -10
  140. package/dist/src/{luma-ray-CPISsLu-.js → luma-ray-C-w6EsJm.js} +2 -2
  141. package/dist/src/{luma-ray-BrWrKIIB.cjs → luma-ray-C0RkI3lt.cjs} +10 -10
  142. package/dist/src/{luma-ray-gyI_GEy2.js → luma-ray-DgKLS0BF.js} +11 -11
  143. package/dist/src/main.js +3260 -2537
  144. package/dist/src/{messages-CJgEjRQF.js → messages-CDZYGNlS.js} +13 -10
  145. package/dist/src/{messages-BMkwrfmt.js → messages-D61tPFQo.js} +14 -11
  146. package/dist/src/{messages-B5HsO_dM.cjs → messages-DXV3Qh8_.cjs} +14 -11
  147. package/dist/src/{meteor-CBciquOS.js → meteor-Dj8cTkU_.js} +1 -1
  148. package/dist/src/{meteor-0cLf9TIn.js → meteor-P2rUE-Uz.js} +1 -1
  149. package/dist/src/{meteor-BQ6Ws9k2.js → meteor-SLNTgmXm.js} +2 -2
  150. package/dist/src/{meteor-DRuEfzuQ.cjs → meteor-odmwVbyG.cjs} +1 -1
  151. package/dist/src/{nova-reel-B5SOonY2.js → nova-reel-Bk5npr2q.js} +11 -11
  152. package/dist/src/{nova-reel-CT9ZuhJ3.js → nova-reel-C2LFfVTf.js} +2 -2
  153. package/dist/src/{nova-reel-ByTx85ed.cjs → nova-reel-D9FXq3Mt.cjs} +10 -10
  154. package/dist/src/{nova-reel-ChM7WaHR.js → nova-reel-DtCjbD5O.js} +10 -10
  155. package/dist/src/{nova-sonic-D4M3kKYu.js → nova-sonic-BXRfQyF-.js} +8 -8
  156. package/dist/src/{nova-sonic-C-H3eDvL.cjs → nova-sonic-BoRSY_U6.cjs} +7 -7
  157. package/dist/src/{nova-sonic-DgifpOKF.js → nova-sonic-CgaWLDM1.js} +7 -7
  158. package/dist/src/{nova-sonic-BqP59oOu.js → nova-sonic-D_qERM-K.js} +2 -2
  159. package/dist/src/{openai-BjpdxIOG.cjs → openai-Bigwjgo1.cjs} +2 -2
  160. package/dist/src/{openai-Cv9pEKxp.js → openai-CT5fwbve.js} +2 -2
  161. package/dist/src/{openai-CitF-gEN.js → openai-Dz3surb_.js} +2 -2
  162. package/dist/src/openclaw-B6XY2kUf.js +526 -0
  163. package/dist/src/openclaw-CpPrXwf6.js +524 -0
  164. package/dist/src/openclaw-DDSfq5fp.cjs +528 -0
  165. package/dist/src/openclaw-dHLcXUWZ.js +511 -0
  166. package/dist/src/{opencode-sdk-Dakn4QMp.js → opencode-sdk-CImWVqy9.js} +7 -7
  167. package/dist/src/{opencode-sdk-BcLvVMV-.js → opencode-sdk-CuCztr4P.js} +6 -6
  168. package/dist/src/{opencode-sdk-z7KKOCdB.js → opencode-sdk-DhcfRbBH.js} +3 -3
  169. package/dist/src/{opencode-sdk-Cqszt4br.cjs → opencode-sdk-mqF-Oj3f.cjs} +6 -6
  170. package/dist/src/{otlpReceiver-BvmMgacx.cjs → otlpReceiver-B6Xo4KZM.cjs} +6 -6
  171. package/dist/src/{otlpReceiver-DRNetlJH.js → otlpReceiver-BO0rbDzh.js} +6 -6
  172. package/dist/src/{otlpReceiver-Bhj_vnzl.js → otlpReceiver-Dg817agV.js} +6 -6
  173. package/dist/src/{otlpReceiver-Cpnk-Hjf.js → otlpReceiver-DmRb0NBj.js} +2 -2
  174. package/dist/src/{providerRegistry-D32Lt9vp.js → providerRegistry-Xf0qdqGQ.js} +2 -2
  175. package/dist/src/{providerRegistry-HGQd2MF6.cjs → providerRegistry-lc7a7utN.cjs} +2 -2
  176. package/dist/src/{providerRegistry-BdKWcUa8.js → providerRegistry-wCWd7sKQ.js} +2 -2
  177. package/dist/src/providers-BMZZmPBJ.cjs +32 -0
  178. package/dist/src/{providers-BWoVY_Wz.cjs → providers-BNKVY53V.cjs} +294 -782
  179. package/dist/src/{providers-Co_FGgH8.js → providers-BiNq_Iyc.js} +281 -769
  180. package/dist/src/{providers-CUCHJCHD.js → providers-BlEhY5mi.js} +286 -779
  181. package/dist/src/providers-CQQrNaJk.js +32 -0
  182. package/dist/src/providers-Ck8HyrC-.js +34 -0
  183. package/dist/src/{pythonUtils-rOCm9w_5.cjs → pythonUtils-DZ6EbdY4.cjs} +3 -3
  184. package/dist/src/{pythonUtils-B9JA-gsC.js → pythonUtils-r1uBuA0n.js} +3 -3
  185. package/dist/src/{pythonUtils-eNq6Wsfr.js → pythonUtils-vMlk9Qp5.js} +3 -3
  186. package/dist/src/{quiverai-BpWtOEQZ.cjs → quiverai-BNfIwKCO.cjs} +13 -13
  187. package/dist/src/{quiverai-Cj-PUa3p.js → quiverai-BQigKdIH.js} +14 -14
  188. package/dist/src/{quiverai-BN8OVvDE.js → quiverai-Bfy2WnE2.js} +12 -12
  189. package/dist/src/{quiverai-D5MSsd2c.js → quiverai-CedIP0PJ.js} +2 -2
  190. package/dist/src/{render-D2710HbA.js → render-CAZvKKkB.js} +4 -4
  191. package/dist/src/responses-DLLjADw5.js +653 -0
  192. package/dist/src/responses-TsdODUpm.js +654 -0
  193. package/dist/src/responses-zOtKtnY_.cjs +671 -0
  194. package/dist/src/{rubyUtils-Dn6MGcsk.js → rubyUtils-BtjlqyXt.js} +3 -3
  195. package/dist/src/{rubyUtils-LBsk3zIm.js → rubyUtils-Cs35SDYa.js} +3 -3
  196. package/dist/src/rubyUtils-D7--T12C.js +6 -0
  197. package/dist/src/{rubyUtils-rnCVDgH-.cjs → rubyUtils-DCVaJ3mc.cjs} +3 -3
  198. package/dist/src/rubyUtils-DRRiMFV2.js +5 -0
  199. package/dist/src/rubyUtils-vb8OYFC-.cjs +5 -0
  200. package/dist/src/{sagemaker-C8MeZIkH.js → sagemaker-BcgLu0U4.js} +18 -18
  201. package/dist/src/{sagemaker-4ukMNSN0.js → sagemaker-CLdUAv5z.js} +17 -17
  202. package/dist/src/{sagemaker-DyVHy2BW.js → sagemaker-Du4LIR97.js} +2 -2
  203. package/dist/src/{sagemaker-DB3Eojau.cjs → sagemaker-DwNnEVYt.cjs} +17 -17
  204. package/dist/src/{scanner-C28XVEq2.js → scanner-Dyw21Wg_.js} +12 -12
  205. package/dist/src/server/index.js +1818 -605
  206. package/dist/src/server-BUbS0Qfh.js +6 -0
  207. package/dist/src/{server-BF3HkMhe.js → server-CbMTRQkg.js} +8 -6
  208. package/dist/src/{server-CSbLW-UI.cjs → server-CgUQ25qW.cjs} +8 -6
  209. package/dist/src/{server-mycZbUH8.js → server-DWmZLfCy.js} +10 -7
  210. package/dist/src/server-XpGXFHkS.cjs +6 -0
  211. package/dist/src/server-gfOx5Zrk.js +8 -0
  212. package/dist/src/{signal-DM_SPNmi.js → signal-Bl32q42d.js} +3 -3
  213. package/dist/src/{slack-Ed1yyt_j.js → slack-BfdBx2tO.js} +2 -2
  214. package/dist/src/{slack-D1F9Y7CH.cjs → slack-BtMkB6xP.cjs} +2 -2
  215. package/dist/src/{slack-DkAF58Tr.js → slack-DPqj42Ts.js} +2 -2
  216. package/dist/src/{slack-BK312SXM.js → slack-OZYxoVON.js} +2 -2
  217. package/dist/src/{store-CT_e5OZX.js → store-2ocbYY9D.js} +3 -3
  218. package/dist/src/store-5u2yriTV.js +7 -0
  219. package/dist/src/{store-BpumNYCl.cjs → store-BqwfFEyF.cjs} +3 -3
  220. package/dist/src/{store-BFLqwuc_.js → store-D4gdn9ih.js} +3 -3
  221. package/dist/src/store-D_lq_8oQ.js +6 -0
  222. package/dist/src/store-m5KT6Ly7.cjs +6 -0
  223. package/dist/src/{tables-Dansasnu.cjs → tables-B9E1kRp-.cjs} +3 -3
  224. package/dist/src/{tables-BjaApSAB.js → tables-C7TT2XVn.js} +3 -3
  225. package/dist/src/{tables-Dwexr5Z6.js → tables-D-NSwNIb.js} +3 -3
  226. package/dist/src/telemetry-5RHFoCJh.js +6 -0
  227. package/dist/src/{telemetry-MVkZQxt9.js → telemetry-BXyVqyAg.js} +5 -4
  228. package/dist/src/{telemetry-DFDFKdnr.cjs → telemetry-D0_yFdtU.cjs} +5 -4
  229. package/dist/src/{telemetry-Ds5Nn81l.js → telemetry-DZ_7PaVq.js} +5 -4
  230. package/dist/src/telemetry-Do8wMnA-.js +8 -0
  231. package/dist/src/telemetry-LojxPoFq.cjs +6 -0
  232. package/dist/src/{text-PYISqVm1.cjs → text-DF2hMKdg.cjs} +1 -1
  233. package/dist/src/{text-DuYSUYPB.js → text-DgMr_tiM.js} +1 -1
  234. package/dist/src/{text-Dx0GJOCN.js → text-Dm78AVGG.js} +1 -1
  235. package/dist/src/{tokenUsageUtils-BtZd3sP7.cjs → tokenUsageUtils-CXhxVj72.cjs} +9 -4
  236. package/dist/src/{tokenUsageUtils-DoinwgKF.js → tokenUsageUtils-DmZSD2eU.js} +9 -4
  237. package/dist/src/{tokenUsageUtils-cFdLMERB.js → tokenUsageUtils-FZd5O_4A.js} +9 -4
  238. package/dist/src/{transcription-Cp19m_Mt.js → transcription-C-M81iDA.js} +2 -2
  239. package/dist/src/{transcription-CLRpAg07.js → transcription-CYuY5sFO.js} +10 -10
  240. package/dist/src/{transcription-D8ifIKOv.js → transcription-Ch7S-LWw.js} +11 -11
  241. package/dist/src/{transcription-CXXFEVM_.cjs → transcription-FNIz3YOe.cjs} +10 -10
  242. package/dist/src/transform-8eGmaH-7.js +7 -0
  243. package/dist/src/transform-BRVvWaG4.cjs +6 -0
  244. package/dist/src/{transform-Bn-lgBE2.js → transform-CoP2bJ7P.js} +44 -5
  245. package/dist/src/{transform-BFPYuBaW.js → transform-CqTFr7KR.js} +5 -5
  246. package/dist/src/{transform-DvQWeBSR.js → transform-D8dILpfZ.js} +4 -4
  247. package/dist/src/{transform-BUrxadlA.js → transform-DMaxQwDx.js} +44 -5
  248. package/dist/src/transform-GybT0X0u.js +8 -0
  249. package/dist/src/{transform-DshYLyBq.cjs → transform-Kd6u-oNm.cjs} +4 -4
  250. package/dist/src/{transform-Bw1IstDE.cjs → transform-ivxEY4f7.cjs} +55 -4
  251. package/dist/src/{transformersAvailability-BaoWHpu1.cjs → transformersAvailability-Bkep3ka7.cjs} +1 -1
  252. package/dist/src/{transformersAvailability-Dhh45n5P.js → transformersAvailability-DEU2naS1.js} +1 -1
  253. package/dist/src/{transformersAvailability-DtpwoeFC.js → transformersAvailability-DkAWaK5B.js} +1 -1
  254. package/dist/src/{transformersAvailability-O2YaCv9Z.js → transformersAvailability-DwmezkVe.js} +1 -1
  255. package/dist/src/{types-B-XUqfNs.cjs → types-BIfttHrT.cjs} +22 -2
  256. package/dist/src/{types-BsU_PxR3.js → types-DMVjYLpx.js} +16 -2
  257. package/dist/src/{types-CgrxBFgm.js → types-t52w-XsS.js} +19 -3
  258. package/dist/src/{util-M2MoNCUR.js → util-BSh4a_Q8.js} +7 -7
  259. package/dist/src/{util-DTJWKLkl.cjs → util-C08Kns6-.cjs} +18 -4
  260. package/dist/src/{util-DHBpsbZE.js → util-CUEt0Vum.js} +18 -4
  261. package/dist/src/{util-Bnw6EyZN.js → util-Cl0zfT3V.js} +18 -4
  262. package/dist/src/{util-C7A-PlKK.cjs → util-DUYOvxAy.cjs} +6 -6
  263. package/dist/src/{util-WYC3rB_p.js → util-DiCePfDu.js} +6 -6
  264. package/dist/src/{util-CV99ps44.cjs → util-DkFTvieG.cjs} +17 -5
  265. package/dist/src/{util-CfepsNVK.js → util-mJ58qbbw.js} +17 -5
  266. package/dist/src/{util-BZaMVBMq.js → util-vjscpUzy.js} +17 -5
  267. package/dist/src/{utils-BryuD3vq.js → utils-CVzb4YiI.js} +3 -3
  268. package/dist/src/{utils-Dezi3MBH.cjs → utils-DFaZa6Rf.cjs} +3 -3
  269. package/dist/src/{utils-GiyI2K4P.js → utils-JaY9veb5.js} +3 -3
  270. package/dist/tsconfig.tsbuildinfo +1 -1
  271. package/package.json +75 -77
  272. package/dist/src/app/assets/index-07dbAcWK.js +0 -427
  273. package/dist/src/app/assets/index-DnEcCQgk.css +0 -1
  274. package/dist/src/app/assets/vendor-react-DHoaNLma.js +0 -4
  275. package/dist/src/cache-BujOdYlc.cjs +0 -6
  276. package/dist/src/cloud-BHYz0XkH.js +0 -5
  277. package/dist/src/eval-0IFf8hON.js +0 -16
  278. package/dist/src/evalResult-BCCv6FXj.js +0 -13
  279. package/dist/src/evalResult-C8iVgVvr.js +0 -11
  280. package/dist/src/evalResult-CqFeWKYx.cjs +0 -11
  281. package/dist/src/evaluator-DwS5NAEj.js +0 -37
  282. package/dist/src/fetch-BH9KSaUC.cjs +0 -4
  283. package/dist/src/fetch-BL6kqunF.js +0 -6
  284. package/dist/src/graders-BK3LuhJ8.cjs +0 -32
  285. package/dist/src/graders-Bpjtip-E.js +0 -35
  286. package/dist/src/graders-KIf6Uej3.js +0 -33
  287. package/dist/src/providers-41mSodR_.js +0 -31
  288. package/dist/src/providers-CiZCpIxz.cjs +0 -31
  289. package/dist/src/providers-G531909f.js +0 -33
  290. package/dist/src/rubyUtils-BLd6EE1u.cjs +0 -5
  291. package/dist/src/rubyUtils-CVELPvUH.js +0 -6
  292. package/dist/src/rubyUtils-_t9Gmf7U.js +0 -5
  293. package/dist/src/server-Bc4T4XDt.cjs +0 -6
  294. package/dist/src/server-CMyxJ7ct.js +0 -6
  295. package/dist/src/server-D9FuxNYE.js +0 -8
  296. package/dist/src/store-CrMinjmN.cjs +0 -6
  297. package/dist/src/store-EaWZOoxz.js +0 -7
  298. package/dist/src/store-KXWnHB15.js +0 -6
  299. package/dist/src/telemetry-BXD2mCyr.cjs +0 -6
  300. package/dist/src/telemetry-CYiBm56v.js +0 -8
  301. package/dist/src/telemetry-lICYKIMB.js +0 -6
  302. package/dist/src/transform-DZI2t8-9.js +0 -8
  303. package/dist/src/transform-DZUV3qpO.js +0 -7
  304. package/dist/src/transform-XcotjzZX.cjs +0 -6
@@ -1,8 +1,8 @@
1
- const require_logger = require('./logger-CMp-NS-e.cjs');
2
- const require_fetch = require('./fetch-MvWxCS5U.cjs');
3
- const require_cache = require('./cache-KNsTJLKP.cjs');
4
- const require_openai = require('./openai-BjpdxIOG.cjs');
5
- const require_util = require('./util-DTJWKLkl.cjs');
1
+ const require_logger = require('./logger-BdZ-IqBc.cjs');
2
+ const require_fetch = require('./fetch-ZMn_oemb.cjs');
3
+ const require_cache = require('./cache-7xULbvt3.cjs');
4
+ const require_openai = require('./openai-Bigwjgo1.cjs');
5
+ const require_util = require('./util-C08Kns6-.cjs');
6
6
 
7
7
  //#region src/providers/openai/embedding.ts
8
8
  var OpenAiEmbeddingProvider = class extends require_openai.OpenAiGenericProvider {
@@ -130,4 +130,4 @@ Object.defineProperty(exports, 'OpenAiEmbeddingProvider', {
130
130
  return OpenAiEmbeddingProvider;
131
131
  }
132
132
  });
133
- //# sourceMappingURL=completion-D6BTVt6e.cjs.map
133
+ //# sourceMappingURL=completion-DDyL3Cb2.cjs.map
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import "./chunk-DHDDz29n.js";
3
- import { C as getEnvString, o as logger_default } from "./logger-Bzi5o47S.js";
4
- import "./fetch-Mb7SbeM-.js";
5
- import "./cloud-ByJVRSQI.js";
6
- import "./types-CgrxBFgm.js";
7
- import { a as fetchWithCache } from "./cache-DHm8Pc8l.js";
8
- import "./util-M2MoNCUR.js";
9
- import "./esm-Lh6czAFT.js";
10
- import "./pythonUtils-B9JA-gsC.js";
11
- import "./genaiTracer-foKtbVa2.js";
12
- import { t as OpenAiChatCompletionProvider } from "./chat-CVOyOBYk.js";
13
- import "./transform-Bn-lgBE2.js";
14
- import "./openai-Cv9pEKxp.js";
15
- import "./util-DHBpsbZE.js";
16
- import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-BLe7SUA4.js";
3
+ import { C as getEnvString, o as logger_default } from "./logger-BotXmWKW.js";
4
+ import "./fetch-SRsE6Ctl.js";
5
+ import "./cloud-BMbRVJFw.js";
6
+ import "./types-t52w-XsS.js";
7
+ import { a as fetchWithCache } from "./cache-mIszOnuz.js";
8
+ import "./util-BSh4a_Q8.js";
9
+ import "./esm-CYhseqj4.js";
10
+ import "./pythonUtils-r1uBuA0n.js";
11
+ import "./genaiTracer-CqNnnXrE.js";
12
+ import { t as OpenAiChatCompletionProvider } from "./chat-DIywASPG.js";
13
+ import "./transform-CoP2bJ7P.js";
14
+ import "./openai-CT5fwbve.js";
15
+ import "./util-CUEt0Vum.js";
16
+ import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-BBJ6zmG3.js";
17
17
 
18
18
  //#region src/providers/docker.ts
19
19
  async function fetchLocalModels(apiBaseUrl) {
@@ -90,4 +90,4 @@ var DMREmbeddingProvider = class extends OpenAiEmbeddingProvider {
90
90
 
91
91
  //#endregion
92
92
  export { createDockerProvider };
93
- //# sourceMappingURL=docker-CkOzlD1W.js.map
93
+ //# sourceMappingURL=docker-BuButc4D.js.map
@@ -1,16 +1,16 @@
1
- const require_logger = require('./logger-CMp-NS-e.cjs');
2
- require('./esm-gWVPXn3r.cjs');
3
- require('./pythonUtils-rOCm9w_5.cjs');
4
- require('./types-B-XUqfNs.cjs');
5
- require('./util-C7A-PlKK.cjs');
6
- require('./fetch-MvWxCS5U.cjs');
7
- const require_cache = require('./cache-KNsTJLKP.cjs');
8
- require('./genaiTracer-BQ8AmajD.cjs');
9
- const require_chat = require('./chat-DOQIJx7O.cjs');
10
- require('./transform-Bw1IstDE.cjs');
11
- require('./openai-BjpdxIOG.cjs');
12
- require('./util-DTJWKLkl.cjs');
13
- const require_completion = require('./completion-D6BTVt6e.cjs');
1
+ const require_logger = require('./logger-BdZ-IqBc.cjs');
2
+ require('./esm-BQkx5roy.cjs');
3
+ require('./pythonUtils-DZ6EbdY4.cjs');
4
+ require('./types-BIfttHrT.cjs');
5
+ require('./util-DUYOvxAy.cjs');
6
+ require('./fetch-ZMn_oemb.cjs');
7
+ const require_cache = require('./cache-7xULbvt3.cjs');
8
+ require('./genaiTracer-CQlpZkrp.cjs');
9
+ const require_chat = require('./chat-C4zqjObh.cjs');
10
+ require('./transform-ivxEY4f7.cjs');
11
+ require('./openai-Bigwjgo1.cjs');
12
+ require('./util-C08Kns6-.cjs');
13
+ const require_completion = require('./completion-DDyL3Cb2.cjs');
14
14
 
15
15
  //#region src/providers/docker.ts
16
16
  async function fetchLocalModels(apiBaseUrl) {
@@ -87,4 +87,4 @@ var DMREmbeddingProvider = class extends require_completion.OpenAiEmbeddingProvi
87
87
 
88
88
  //#endregion
89
89
  exports.createDockerProvider = createDockerProvider;
90
- //# sourceMappingURL=docker-BWsSX8Pn.cjs.map
90
+ //# sourceMappingURL=docker-Ckw-j7Rr.cjs.map
@@ -1,17 +1,17 @@
1
1
  import "./chunk-FhC4c-0y.js";
2
- import { b as getEnvString, i as logger_default } from "./logger-q5I8CByj.js";
3
- import "./esm-D40XsWlR.js";
4
- import "./pythonUtils-eNq6Wsfr.js";
5
- import "./types-BsU_PxR3.js";
6
- import "./util-WYC3rB_p.js";
7
- import "./fetch-BIfcW-Fd.js";
8
- import { a as fetchWithCache } from "./cache-BMl3AIo5.js";
2
+ import { b as getEnvString, i as logger_default } from "./logger-w8Ozp0Td.js";
3
+ import "./esm-rDtG_2rg.js";
4
+ import "./pythonUtils-vMlk9Qp5.js";
5
+ import "./types-DMVjYLpx.js";
6
+ import "./util-DiCePfDu.js";
7
+ import "./fetch-18MuNu9i.js";
8
+ import { a as fetchWithCache } from "./cache-BLLayYEN.js";
9
9
  import "./genaiTracer-Ce19n68P.js";
10
- import { t as OpenAiChatCompletionProvider } from "./chat-DDGU7Tik.js";
11
- import "./transform-BUrxadlA.js";
12
- import "./openai-CitF-gEN.js";
13
- import "./util-Bnw6EyZN.js";
14
- import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-1RAiLcwi.js";
10
+ import { t as OpenAiChatCompletionProvider } from "./chat-C8Ei4f87.js";
11
+ import "./transform-DMaxQwDx.js";
12
+ import "./openai-Dz3surb_.js";
13
+ import "./util-Cl0zfT3V.js";
14
+ import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-D9_MDlnd.js";
15
15
 
16
16
  //#region src/providers/docker.ts
17
17
  async function fetchLocalModels(apiBaseUrl) {
@@ -88,4 +88,4 @@ var DMREmbeddingProvider = class extends OpenAiEmbeddingProvider {
88
88
 
89
89
  //#endregion
90
90
  export { createDockerProvider };
91
- //# sourceMappingURL=docker-CMf5SGLq.js.map
91
+ //# sourceMappingURL=docker-JAAubMw3.js.map
@@ -1,4 +1,4 @@
1
- import { A as logger_default, P as getEnvString, c as OpenAiChatCompletionProvider, g as fetchWithCache, n as OpenAiCompletionProvider, s as OpenAiEmbeddingProvider } from "./server/index.js";
1
+ import { I as getEnvString, _ as fetchWithCache, c as OpenAiEmbeddingProvider, j as logger_default, l as OpenAiChatCompletionProvider, n as OpenAiCompletionProvider } from "./server/index.js";
2
2
 
3
3
  //#region src/providers/docker.ts
4
4
  async function fetchLocalModels(apiBaseUrl) {
@@ -75,4 +75,4 @@ var DMREmbeddingProvider = class extends OpenAiEmbeddingProvider {
75
75
 
76
76
  //#endregion
77
77
  export { createDockerProvider };
78
- //# sourceMappingURL=docker-C0AzMsuf.js.map
78
+ //# sourceMappingURL=docker-vnOg96gi.js.map
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ //#region src/util/fetch/errors.ts
3
+ /**
4
+ * Non-transient HTTP status codes that indicate the target is unavailable or misconfigured.
5
+ * These errors will not resolve on retry and should abort the scan immediately.
6
+ *
7
+ * - 401: Unauthorized - authentication required or invalid credentials
8
+ * - 403: Forbidden - valid credentials but access denied
9
+ * - 404: Not Found - target endpoint doesn't exist
10
+ * - 501: Not Implemented - server doesn't support the request method
11
+ *
12
+ * Excluded: 500 (often transient — server crashes, DB timeouts, deployment rollouts,
13
+ * or input-dependent bugs where one prompt triggers it but the next doesn't),
14
+ * 502/503/504 (typically transient gateway issues).
15
+ */
16
+ const NON_TRANSIENT_HTTP_STATUSES = [
17
+ 401,
18
+ 403,
19
+ 404,
20
+ 501
21
+ ];
22
+ function isNonTransientHttpStatus(status) {
23
+ return NON_TRANSIENT_HTTP_STATUSES.includes(status);
24
+ }
25
+ function isTransientConnectionError(error) {
26
+ if (!error) return false;
27
+ const code = error.code;
28
+ if (code === "ECONNRESET" || code === "EPIPE") return true;
29
+ const message = (error.message ?? "").toLowerCase();
30
+ if (message.includes("eproto") && (message.includes("wrong version number") || message.includes("self signed") || message.includes("unable to verify") || message.includes("unknown ca") || message.includes("cert"))) return false;
31
+ return message.includes("bad record mac") || message.includes("eproto") || message.includes("econnreset") || message.includes("socket hang up");
32
+ }
33
+
34
+ //#endregion
35
+ export { isNonTransientHttpStatus as n, isTransientConnectionError as r, NON_TRANSIENT_HTTP_STATUSES as t };
36
+ //# sourceMappingURL=errors-DnGCbnx8.js.map
@@ -1,4 +1,4 @@
1
- const require_logger = require('./logger-CMp-NS-e.cjs');
1
+ const require_logger = require('./logger-BdZ-IqBc.cjs');
2
2
  let path = require("path");
3
3
  path = require_logger.__toESM(path);
4
4
  let node_fs = require("node:fs");
@@ -408,4 +408,4 @@ Object.defineProperty(exports, 'safeResolve', {
408
408
  return safeResolve;
409
409
  }
410
410
  });
411
- //# sourceMappingURL=esm-gWVPXn3r.cjs.map
411
+ //# sourceMappingURL=esm-BQkx5roy.cjs.map
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { o as logger_default } from "./logger-Bzi5o47S.js";
2
+ import { o as logger_default } from "./logger-BotXmWKW.js";
3
3
  import { createRequire } from "node:module";
4
4
  import { fileURLToPath, pathToFileURL } from "node:url";
5
5
  import fs from "node:fs";
@@ -380,4 +380,4 @@ function loadCjsModule(modulePath) {
380
380
 
381
381
  //#endregion
382
382
  export { safeJoin as a, resolvePackageEntryPoint as i, getWrapperDir as n, safeResolve as o, importModule as r, getDirectory as t };
383
- //# sourceMappingURL=esm-Lh6czAFT.js.map
383
+ //# sourceMappingURL=esm-CYhseqj4.js.map
@@ -1,4 +1,4 @@
1
- import { i as logger_default } from "./logger-q5I8CByj.js";
1
+ import { i as logger_default } from "./logger-w8Ozp0Td.js";
2
2
  import { createRequire } from "node:module";
3
3
  import path from "path";
4
4
  import path$1 from "node:path";
@@ -379,4 +379,4 @@ function loadCjsModule(modulePath) {
379
379
 
380
380
  //#endregion
381
381
  export { safeJoin as a, resolvePackageEntryPoint as i, getWrapperDir as n, safeResolve as o, importModule as r, getDirectory as t };
382
- //# sourceMappingURL=esm-D40XsWlR.js.map
382
+ //# sourceMappingURL=esm-rDtG_2rg.js.map
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ import "./logger-BotXmWKW.js";
3
+ import "./fetch-SRsE6Ctl.js";
4
+ import "./accounts-DHHiXsy6.js";
5
+ import "./cloud-BMbRVJFw.js";
6
+ import "./types-t52w-XsS.js";
7
+ import "./utils-JaY9veb5.js";
8
+ import "./extractor-LSYjrhK0.js";
9
+ import "./blobs-kt8v3UyH.js";
10
+ import "./tables-C7TT2XVn.js";
11
+ import "./store-D4gdn9ih.js";
12
+ import "./signal-Bl32q42d.js";
13
+ import { a as createEvalId, i as combineFilterConditions, n as EvalQueries, o as escapeJsonPathKey, r as buildSafeJsonPath, s as getEvalSummaries, t as Eval } from "./eval-CYrbG57o.js";
14
+ import "./evalResult-6JaUIStC.js";
15
+
16
+ export { Eval as default };
@@ -1,16 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import { b as getEnvBool, o as logger_default } from "./logger-Bzi5o47S.js";
3
- import { I as HUMAN_ASSERTION_TYPE, T as DEFAULT_QUERY_LIMIT, c as getCurrentTimestamp } from "./fetch-Mb7SbeM-.js";
2
+ import { b as getEnvBool, o as logger_default } from "./logger-BotXmWKW.js";
3
+ import { I as HUMAN_ASSERTION_TYPE, T as DEFAULT_QUERY_LIMIT, c as getCurrentTimestamp } from "./fetch-SRsE6Ctl.js";
4
4
  import { t as invariant } from "./invariant-DT20jrBd.js";
5
- import { o as getUserEmail } from "./accounts-BOlMHrvn.js";
6
- import { U as riskCategorySeverityMap, ct as PLUGIN_CATEGORIES, s as ResultFailureReason } from "./types-CgrxBFgm.js";
7
- import { t as hashPrompt } from "./utils-GiyI2K4P.js";
8
- import { a as sha256, i as randomSequence } from "./extractor-BA90EtLq.js";
9
- import { a as createEmptyTokenUsage, r as accumulateTokenUsage } from "./tokenUsageUtils-DoinwgKF.js";
10
- import { a as evalResultsTable, c as evalsToPromptsTable, d as promptsTable, g as getDb, i as datasetsTable, l as evalsToTagsTable, o as evalsTable, p as tagsTable, s as evalsToDatasetsTable } from "./tables-BjaApSAB.js";
11
- import { n as getTraceStore } from "./store-BFLqwuc_.js";
12
- import { i as getActualPrompt, r as updateSignalFile } from "./signal-DM_SPNmi.js";
13
- import { t as EvalResult } from "./evalResult-CGrGU_cG.js";
5
+ import { o as getUserEmail } from "./accounts-DHHiXsy6.js";
6
+ import { U as riskCategorySeverityMap, ct as PLUGIN_CATEGORIES, s as ResultFailureReason } from "./types-t52w-XsS.js";
7
+ import { n as isNonTransientHttpStatus, t as NON_TRANSIENT_HTTP_STATUSES } from "./errors-DnGCbnx8.js";
8
+ import { t as hashPrompt } from "./utils-JaY9veb5.js";
9
+ import { a as sha256, i as randomSequence } from "./extractor-LSYjrhK0.js";
10
+ import { a as createEmptyTokenUsage, r as accumulateTokenUsage } from "./tokenUsageUtils-DmZSD2eU.js";
11
+ import { a as evalResultsTable, c as evalsToPromptsTable, d as promptsTable, g as getDb, i as datasetsTable, l as evalsToTagsTable, o as evalsTable, p as tagsTable, s as evalsToDatasetsTable } from "./tables-C7TT2XVn.js";
12
+ import { n as getTraceStore } from "./store-D4gdn9ih.js";
13
+ import { i as getActualPrompt, r as updateSignalFile } from "./signal-Bl32q42d.js";
14
+ import { t as EvalResult } from "./evalResult-6JaUIStC.js";
14
15
  import { and, desc, eq, sql } from "drizzle-orm";
15
16
 
16
17
  //#region src/redteam/metrics.ts
@@ -341,10 +342,17 @@ function convertResultsToTable(eval_) {
341
342
  if (keyToUpdate) result.vars[keyToUpdate] = actualPrompt;
342
343
  }
343
344
  }
344
- if (result.metadata?.sessionId && !result.vars?.sessionId) {
345
- result.vars = result.vars || {};
346
- result.vars.sessionId = result.metadata.sessionId;
347
- varsForHeader.add("sessionId");
345
+ if (!result.vars?.sessionId) {
346
+ const metadataSessionIds = result.metadata?.sessionIds;
347
+ if (Array.isArray(metadataSessionIds) && metadataSessionIds.length > 0) {
348
+ result.vars = result.vars || {};
349
+ result.vars.sessionId = metadataSessionIds.filter((id) => id != null && id !== "").map(String).join("\n");
350
+ varsForHeader.add("sessionId");
351
+ } else if (result.metadata?.sessionId) {
352
+ result.vars = result.vars || {};
353
+ result.vars.sessionId = result.metadata.sessionId;
354
+ varsForHeader.add("sessionId");
355
+ }
348
356
  }
349
357
  const transformDisplayVars = result.response?.metadata?.transformDisplayVars;
350
358
  if (transformDisplayVars) {
@@ -400,7 +408,12 @@ function convertResultsToTable(eval_) {
400
408
  model: result.response.video.model,
401
409
  aspectRatio: result.response.video.aspectRatio,
402
410
  resolution: result.response.video.resolution
403
- } : void 0
411
+ } : void 0,
412
+ images: result.response?.images?.map((img) => ({
413
+ data: img.data,
414
+ blobRef: img.blobRef,
415
+ mimeType: img.mimeType
416
+ }))
404
417
  };
405
418
  invariant(result.promptId, "Prompt ID is required");
406
419
  row.testIdx = result.testIdx;
@@ -466,7 +479,12 @@ function convertEvalResultToTableCell(result) {
466
479
  model: result.response.video.model,
467
480
  aspectRatio: result.response.video.aspectRatio,
468
481
  resolution: result.response.video.resolution
469
- } : void 0
482
+ } : void 0,
483
+ images: result.response?.images?.map((img) => ({
484
+ data: img.data,
485
+ blobRef: img.blobRef,
486
+ mimeType: img.mimeType
487
+ }))
470
488
  };
471
489
  }
472
490
  function convertTestResultsToTableRow(results, varsForHeader) {
@@ -475,10 +493,13 @@ function convertTestResultsToTableRow(results, varsForHeader) {
475
493
  outputs: [],
476
494
  vars: Object.values(varsForHeader).map((varName) => {
477
495
  if (varName === "sessionId") {
478
- const sessionId = results[0].testCase.vars?.sessionId;
479
- const varValue = sessionId == null || sessionId === "" ? results[0].metadata?.sessionId ?? "" : sessionId;
480
- if (typeof varValue === "string") return varValue;
481
- return JSON.stringify(varValue);
496
+ const sessionIdFromVars = results[0].testCase.vars?.sessionId;
497
+ if (sessionIdFromVars != null && sessionIdFromVars !== "") return typeof sessionIdFromVars === "string" ? sessionIdFromVars : JSON.stringify(sessionIdFromVars);
498
+ const metadataSessionIds = results[0].metadata?.sessionIds;
499
+ if (Array.isArray(metadataSessionIds) && metadataSessionIds.length > 0) return metadataSessionIds.filter((id) => id != null && id !== "").map(String).join("\n");
500
+ const metadataSessionId = results[0].metadata?.sessionId;
501
+ if (metadataSessionId != null) return typeof metadataSessionId === "string" ? metadataSessionId : JSON.stringify(metadataSessionId);
502
+ return "";
482
503
  }
483
504
  const varValue = results[0].testCase.vars?.[varName] ?? "";
484
505
  if (typeof varValue === "string") return varValue;
@@ -758,7 +779,13 @@ var Eval = class Eval {
758
779
  _resultsLoaded = false;
759
780
  runtimeOptions;
760
781
  _shared = false;
782
+ /** Total wall-clock duration. For redteam evals: generationDurationMs + evaluationDurationMs.
783
+ * For non-redteam evals: equals evaluationDurationMs (generation phase is N/A). */
761
784
  durationMs;
785
+ /** Time spent generating adversarial test cases (redteam only). */
786
+ generationDurationMs;
787
+ /** Time spent running the evaluation phase. */
788
+ evaluationDurationMs;
762
789
  /**
763
790
  * The shareable URL for this evaluation, if it has been shared.
764
791
  * Set by the evaluate() function when sharing is enabled.
@@ -777,8 +804,11 @@ var Eval = class Eval {
777
804
  const eval_ = evalData[0];
778
805
  const datasetId = datasetResults[0]?.datasetId;
779
806
  const resultsObj = eval_.results;
780
- const rawDurationMs = resultsObj && "durationMs" in resultsObj ? resultsObj.durationMs : void 0;
781
- const durationMs = typeof rawDurationMs === "number" && Number.isFinite(rawDurationMs) && rawDurationMs >= 0 ? rawDurationMs : void 0;
807
+ const validateDuration = (raw) => typeof raw === "number" && Number.isFinite(raw) && raw >= 0 ? raw : void 0;
808
+ const rawDurationMs = validateDuration(resultsObj?.["durationMs"]);
809
+ const generationDurationMs = validateDuration(resultsObj?.["generationDurationMs"]);
810
+ const evaluationDurationMs = validateDuration(resultsObj?.["evaluationDurationMs"]);
811
+ const durationMs = rawDurationMs ?? (generationDurationMs != null || evaluationDurationMs != null ? (generationDurationMs ?? 0) + (evaluationDurationMs ?? 0) : void 0);
782
812
  const evalInstance = new Eval(eval_.config, {
783
813
  id: eval_.id,
784
814
  createdAt: new Date(eval_.createdAt),
@@ -789,7 +819,9 @@ var Eval = class Eval {
789
819
  persisted: true,
790
820
  vars: eval_.vars || [],
791
821
  runtimeOptions: eval_.runtimeOptions ?? void 0,
792
- durationMs
822
+ durationMs,
823
+ generationDurationMs,
824
+ evaluationDurationMs
793
825
  });
794
826
  if (eval_.results && "table" in eval_.results) evalInstance.oldResults = eval_.results;
795
827
  if (!eval_.vars || eval_.vars.length === 0) {
@@ -914,6 +946,8 @@ var Eval = class Eval {
914
946
  this.vars = opts?.vars || [];
915
947
  this.runtimeOptions = opts?.runtimeOptions;
916
948
  this.durationMs = opts?.durationMs;
949
+ this.generationDurationMs = opts?.generationDurationMs;
950
+ this.evaluationDurationMs = opts?.evaluationDurationMs;
917
951
  }
918
952
  version() {
919
953
  /**
@@ -944,7 +978,13 @@ var Eval = class Eval {
944
978
  if (this.useOldResults()) {
945
979
  invariant(this.oldResults, "Old results not found");
946
980
  updateObj.results = this.oldResults;
947
- } else if (this.durationMs !== void 0) updateObj.results = { durationMs: this.durationMs };
981
+ } else if (this.durationMs !== void 0 || this.generationDurationMs !== void 0 || this.evaluationDurationMs !== void 0) {
982
+ let expr = sql`CASE WHEN json_valid(${evalsTable.results}) AND json_type(${evalsTable.results}) = 'object' THEN ${evalsTable.results} ELSE '{}' END`;
983
+ if (this.durationMs !== void 0) expr = sql`json_set(${expr}, '$.durationMs', ${this.durationMs})`;
984
+ if (this.generationDurationMs !== void 0) expr = sql`json_set(${expr}, '$.generationDurationMs', ${this.generationDurationMs})`;
985
+ if (this.evaluationDurationMs !== void 0) expr = sql`json_set(${expr}, '$.evaluationDurationMs', ${this.evaluationDurationMs})`;
986
+ updateObj.results = expr;
987
+ }
948
988
  db.update(evalsTable).set(updateObj).where(eq(evalsTable.id, this.id)).run();
949
989
  this.persisted = true;
950
990
  }
@@ -954,8 +994,17 @@ var Eval = class Eval {
954
994
  addVar(varName) {
955
995
  this.vars.push(varName);
956
996
  }
997
+ /** Sets the evaluation phase duration and recomputes the total. Called by the evaluator. */
957
998
  setDurationMs(durationMs) {
958
- this.durationMs = durationMs;
999
+ if (!Number.isFinite(durationMs) || durationMs < 0) return;
1000
+ this.evaluationDurationMs = durationMs;
1001
+ this.durationMs = (this.generationDurationMs ?? 0) + durationMs;
1002
+ }
1003
+ /** Sets the generation phase duration and recomputes the total. Called by doRedteamRun. */
1004
+ setGenerationDurationMs(durationMs) {
1005
+ if (!Number.isFinite(durationMs) || durationMs < 0) return;
1006
+ this.generationDurationMs = durationMs;
1007
+ this.durationMs = durationMs + (this.evaluationDurationMs ?? 0);
959
1008
  }
960
1009
  getPrompts() {
961
1010
  if (this.useOldResults()) {
@@ -993,6 +1042,27 @@ var Eval = class Eval {
993
1042
  async getTotalResultRowCount() {
994
1043
  return getTotalResultRowCount(this.id);
995
1044
  }
1045
+ /**
1046
+ * Find a non-transient HTTP error status from evaluation results.
1047
+ * Returns the first non-transient status (401, 403, 404, 500, 501) found, or undefined.
1048
+ *
1049
+ * For persisted evals: Uses efficient O(1) database query with LIMIT 1.
1050
+ * For non-persisted evals: Falls back to scanning in-memory results.
1051
+ */
1052
+ async findTargetErrorStatus() {
1053
+ const scanInMemory = () => {
1054
+ for (const result of this.results) {
1055
+ const status = result.response?.metadata?.http?.status;
1056
+ if (typeof status === "number" && isNonTransientHttpStatus(status)) return status;
1057
+ }
1058
+ };
1059
+ if (!this.persisted) return scanInMemory();
1060
+ try {
1061
+ return getDb().select({ httpStatus: sql`CAST(json_extract(${evalResultsTable.response}, '$.metadata.http.status') AS INTEGER)` }).from(evalResultsTable).where(and(eq(evalResultsTable.evalId, this.id), sql`json_extract(${evalResultsTable.response}, '$.metadata.http.status') IN (${sql.join(NON_TRANSIENT_HTTP_STATUSES.map((s) => sql`${s}`), sql`, `)})`)).limit(1).get()?.httpStatus ?? void 0;
1062
+ } catch {
1063
+ return scanInMemory();
1064
+ }
1065
+ }
996
1066
  async fetchResultsByTestIdx(testIdx) {
997
1067
  return await EvalResult.findManyByEvalId(this.id, { testIdx });
998
1068
  }
@@ -1215,7 +1285,12 @@ var Eval = class Eval {
1215
1285
  };
1216
1286
  }
1217
1287
  const allResults = await EvalResult.findManyByEvalIdAndTestIndices(this.id, testIndices);
1218
- if (allResults.some((result) => result.metadata?.sessionId && !result.testCase?.vars?.sessionId) && !vars.includes("sessionId")) {
1288
+ if (allResults.some((result) => {
1289
+ const hasSessionIds = Array.isArray(result.metadata?.sessionIds) && result.metadata.sessionIds.length > 0;
1290
+ const hasSessionId = Boolean(result.metadata?.sessionId);
1291
+ const notInVars = !result.testCase?.vars?.sessionId;
1292
+ return (hasSessionIds || hasSessionId) && notInVars;
1293
+ }) && !vars.includes("sessionId")) {
1219
1294
  vars.push("sessionId");
1220
1295
  vars.sort();
1221
1296
  }
@@ -1276,7 +1351,9 @@ var Eval = class Eval {
1276
1351
  failures: 0,
1277
1352
  errors: 0,
1278
1353
  tokenUsage: createEmptyTokenUsage(),
1279
- durationMs: this.durationMs
1354
+ durationMs: this.durationMs,
1355
+ generationDurationMs: this.generationDurationMs,
1356
+ evaluationDurationMs: this.evaluationDurationMs
1280
1357
  };
1281
1358
  for (const prompt of this.prompts) {
1282
1359
  stats.successes += prompt.metrics?.testPassCount ?? 0;
@@ -1549,4 +1626,4 @@ async function getEvalSummaries(datasetId, type, includeProviders = false) {
1549
1626
 
1550
1627
  //#endregion
1551
1628
  export { createEvalId as a, combineFilterConditions as i, EvalQueries as n, escapeJsonPathKey as o, buildSafeJsonPath as r, getEvalSummaries as s, Eval as t };
1552
- //# sourceMappingURL=eval-WaSg64w3.js.map
1629
+ //# sourceMappingURL=eval-CYrbG57o.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { b as getEnvBool, g as safeJsonStringify, o as logger_default } from "./logger-Bzi5o47S.js";
3
- import { c as getCurrentTimestamp } from "./fetch-Mb7SbeM-.js";
4
- import { f as isResultFailureReason, m as isProviderOptions, p as isApiProvider, s as ResultFailureReason } from "./types-CgrxBFgm.js";
5
- import { t as hashPrompt } from "./utils-GiyI2K4P.js";
6
- import { n as isBlobStorageEnabled, t as extractAndStoreBinaryData } from "./extractor-BA90EtLq.js";
7
- import { a as evalResultsTable, g as getDb } from "./tables-BjaApSAB.js";
2
+ import { b as getEnvBool, g as safeJsonStringify, o as logger_default } from "./logger-BotXmWKW.js";
3
+ import { c as getCurrentTimestamp } from "./fetch-SRsE6Ctl.js";
4
+ import { f as isResultFailureReason, m as isProviderOptions, p as isApiProvider, s as ResultFailureReason } from "./types-t52w-XsS.js";
5
+ import { t as hashPrompt } from "./utils-JaY9veb5.js";
6
+ import { n as isBlobStorageEnabled, t as extractAndStoreBinaryData } from "./extractor-LSYjrhK0.js";
7
+ import { a as evalResultsTable, g as getDb } from "./tables-C7TT2XVn.js";
8
8
  import { and, eq, gte, inArray, lt, ne } from "drizzle-orm";
9
9
 
10
10
  //#region src/models/evalResult.ts
@@ -289,4 +289,4 @@ var EvalResult = class EvalResult {
289
289
 
290
290
  //#endregion
291
291
  export { sanitizeProvider as n, EvalResult as t };
292
- //# sourceMappingURL=evalResult-CGrGU_cG.js.map
292
+ //# sourceMappingURL=evalResult-6JaUIStC.js.map
@@ -1,9 +1,9 @@
1
- import { _ as getEnvBool, i as logger_default, m as safeJsonStringify } from "./logger-q5I8CByj.js";
2
- import { A as isApiProvider, g as ResultFailureReason, j as isProviderOptions, k as isResultFailureReason } from "./types-BsU_PxR3.js";
3
- import { f as getCurrentTimestamp } from "./fetch-BIfcW-Fd.js";
4
- import { t as hashPrompt } from "./utils-BryuD3vq.js";
5
- import { n as isBlobStorageEnabled, t as extractAndStoreBinaryData } from "./extractor-Da8IxCeS.js";
6
- import { i as evalResultsTable, p as getDb } from "./tables-Dwexr5Z6.js";
1
+ import { _ as getEnvBool, i as logger_default, m as safeJsonStringify } from "./logger-w8Ozp0Td.js";
2
+ import { A as isApiProvider, g as ResultFailureReason, j as isProviderOptions, k as isResultFailureReason } from "./types-DMVjYLpx.js";
3
+ import { f as getCurrentTimestamp } from "./fetch-18MuNu9i.js";
4
+ import { t as hashPrompt } from "./utils-CVzb4YiI.js";
5
+ import { n as isBlobStorageEnabled, t as extractAndStoreBinaryData } from "./extractor-Hs7la_19.js";
6
+ import { i as evalResultsTable, p as getDb } from "./tables-D-NSwNIb.js";
7
7
  import { and, eq, gte, inArray, lt, ne } from "drizzle-orm";
8
8
 
9
9
  //#region src/models/evalResult.ts
@@ -288,4 +288,4 @@ var EvalResult = class EvalResult {
288
288
 
289
289
  //#endregion
290
290
  export { sanitizeProvider as n, EvalResult as t };
291
- //# sourceMappingURL=evalResult-C_UM63nn.js.map
291
+ //# sourceMappingURL=evalResult-COsVttMA.js.map
@@ -0,0 +1,11 @@
1
+ require('./logger-BdZ-IqBc.cjs');
2
+ require('./types-BIfttHrT.cjs');
3
+ require('./fetch-ZMn_oemb.cjs');
4
+ require('./utils-DFaZa6Rf.cjs');
5
+ require('./extractor-DbhlYEeo.cjs');
6
+ require('./accounts-BzEY8H3v.cjs');
7
+ require('./blobs-673H0jCl.cjs');
8
+ require('./tables-B9E1kRp-.cjs');
9
+ const require_evalResult = require('./evalResult-DlRfu_Rq.cjs');
10
+
11
+ exports.default = require_evalResult.EvalResult;
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import "./logger-BotXmWKW.js";
3
+ import "./fetch-SRsE6Ctl.js";
4
+ import "./accounts-DHHiXsy6.js";
5
+ import "./cloud-BMbRVJFw.js";
6
+ import "./types-t52w-XsS.js";
7
+ import "./utils-JaY9veb5.js";
8
+ import "./extractor-LSYjrhK0.js";
9
+ import "./blobs-kt8v3UyH.js";
10
+ import "./tables-C7TT2XVn.js";
11
+ import { n as sanitizeProvider, t as EvalResult } from "./evalResult-6JaUIStC.js";
12
+
13
+ export { EvalResult as default };
@@ -1,9 +1,9 @@
1
- const require_logger = require('./logger-CMp-NS-e.cjs');
2
- const require_types = require('./types-B-XUqfNs.cjs');
3
- const require_fetch = require('./fetch-MvWxCS5U.cjs');
4
- const require_utils = require('./utils-Dezi3MBH.cjs');
5
- const require_extractor = require('./extractor-D-RM2m6A.cjs');
6
- const require_tables = require('./tables-Dansasnu.cjs');
1
+ const require_logger = require('./logger-BdZ-IqBc.cjs');
2
+ const require_types = require('./types-BIfttHrT.cjs');
3
+ const require_fetch = require('./fetch-ZMn_oemb.cjs');
4
+ const require_utils = require('./utils-DFaZa6Rf.cjs');
5
+ const require_extractor = require('./extractor-DbhlYEeo.cjs');
6
+ const require_tables = require('./tables-B9E1kRp-.cjs');
7
7
  let drizzle_orm = require("drizzle-orm");
8
8
 
9
9
  //#region src/models/evalResult.ts
@@ -299,4 +299,4 @@ Object.defineProperty(exports, 'sanitizeProvider', {
299
299
  return sanitizeProvider;
300
300
  }
301
301
  });
302
- //# sourceMappingURL=evalResult-BU4huold.cjs.map
302
+ //# sourceMappingURL=evalResult-DlRfu_Rq.cjs.map
@@ -0,0 +1,11 @@
1
+ import "./logger-w8Ozp0Td.js";
2
+ import "./types-DMVjYLpx.js";
3
+ import "./fetch-18MuNu9i.js";
4
+ import "./utils-CVzb4YiI.js";
5
+ import "./extractor-Hs7la_19.js";
6
+ import "./accounts-R3gfCR_g.js";
7
+ import "./blobs-C9J2mVgo.js";
8
+ import "./tables-D-NSwNIb.js";
9
+ import { n as sanitizeProvider, t as EvalResult } from "./evalResult-COsVttMA.js";
10
+
11
+ export { EvalResult as default };
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ import "./chunk-DHDDz29n.js";
3
+ import "./logger-BotXmWKW.js";
4
+ import "./fetch-SRsE6Ctl.js";
5
+ import "./accounts-DHHiXsy6.js";
6
+ import "./cloud-BMbRVJFw.js";
7
+ import "./telemetry-BXyVqyAg.js";
8
+ import "./types-t52w-XsS.js";
9
+ import "./server-DWmZLfCy.js";
10
+ import "./providers-BlEhY5mi.js";
11
+ import "./cache-mIszOnuz.js";
12
+ import "./util-BSh4a_Q8.js";
13
+ import "./esm-CYhseqj4.js";
14
+ import "./pythonUtils-r1uBuA0n.js";
15
+ import "./transform-CqTFr7KR.js";
16
+ import "./graders-BaMCwIKp.js";
17
+ import "./utils-JaY9veb5.js";
18
+ import "./extractor-LSYjrhK0.js";
19
+ import "./genaiTracer-CqNnnXrE.js";
20
+ import "./chat-DIywASPG.js";
21
+ import "./transform-CoP2bJ7P.js";
22
+ import "./messages-D61tPFQo.js";
23
+ import "./util-vjscpUzy.js";
24
+ import "./responses-TsdODUpm.js";
25
+ import "./openai-CT5fwbve.js";
26
+ import "./util-CUEt0Vum.js";
27
+ import "./completion-BBJ6zmG3.js";
28
+ import "./blobs-kt8v3UyH.js";
29
+ import "./tables-C7TT2XVn.js";
30
+ import "./store-D4gdn9ih.js";
31
+ import "./base-BaXmtXYp.js";
32
+ import "./image-mhAGP07h.js";
33
+ import "./providerRegistry-Xf0qdqGQ.js";
34
+ import "./rubyUtils-BtjlqyXt.js";
35
+ import { a as runEval, i as isAllowedPrompt, n as formatVarsForDisplay, r as generateVarCombinations, t as evaluate } from "./evaluator-3EJCMTs0.js";
36
+ import "./signal-Bl32q42d.js";
37
+
38
+ export { evaluate };