promptfoo 0.121.10 → 0.121.11

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 (323) hide show
  1. package/dist/src/{accounts-D4iTShVh.js → accounts-BGs8AMhG.js} +4 -4
  2. package/dist/src/{accounts-ECb2xAYn.js → accounts-BjCiVnil.js} +4 -4
  3. package/dist/src/{accounts-DbmMSaOW.js → accounts-C06-4dXo.js} +5 -5
  4. package/dist/src/{accounts-5Sf1PCNo.cjs → accounts-C6NiTdum.cjs} +4 -4
  5. package/dist/src/{agentic-utils-DxzgjGfK.js → agentic-utils-B5IO5YR-.js} +2 -2
  6. package/dist/src/{agentic-utils-eGLKHNlT.cjs → agentic-utils-BDKz7KHx.cjs} +2 -2
  7. package/dist/src/{agentic-utils-CLrqlGZc.js → agentic-utils-Bj9P7suD.js} +2 -2
  8. package/dist/src/{agentic-utils-jiE8RROB.js → agentic-utils-kgc1YTAx.js} +2 -2
  9. package/dist/src/{agents-CI9ETpr0.js → agents-BMcjQUHA.js} +2 -2
  10. package/dist/src/{agents-B0gmhYyj.js → agents-CyHaf9xC.js} +2 -2
  11. package/dist/src/{agents-Dl4uviKE.cjs → agents-DOhrSQhK.cjs} +4 -4
  12. package/dist/src/{agents-CK9Kxnix.js → agents-DT1nSZix.js} +4 -4
  13. package/dist/src/{agents-6d6pdEFT.js → agents-DgakfoxG.js} +4 -4
  14. package/dist/src/{agents-C5zoy2ZS.js → agents-VKHVNG4J.js} +2 -2
  15. package/dist/src/{agents-Br5HYLBT.cjs → agents-zYAXB2ja.cjs} +2 -2
  16. package/dist/src/{agents-CvL6W9kz.js → agents-zzIht0lm.js} +4 -4
  17. package/dist/src/{aimlapi-DGCN4rpi.cjs → aimlapi-Bv6rnE4W.cjs} +6 -6
  18. package/dist/src/{aimlapi-BonWl7zl.js → aimlapi-C05Ca41Z.js} +6 -6
  19. package/dist/src/{aimlapi-NJzALFkC.js → aimlapi-CLaCvZn8.js} +6 -6
  20. package/dist/src/{aimlapi-UwsBeqRG.js → aimlapi-DW7KNdkd.js} +6 -6
  21. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
  22. package/dist/src/app/assets/Report-BgwGPDAJ.js +1 -0
  23. package/dist/src/app/assets/index-CBwcpPdR.js +413 -0
  24. package/dist/src/app/assets/index-ZYpt1xFX.css +1 -0
  25. package/dist/src/app/index.html +2 -2
  26. package/dist/src/{audio-yUZrS0JJ.js → audio-Cd92j4tr.js} +3 -3
  27. package/dist/src/{audio-9N6nZqw9.js → audio-De3snmla.js} +3 -3
  28. package/dist/src/{audio-DBqadfGk.js → audio-Dh44iWq7.js} +3 -3
  29. package/dist/src/{audio-BR4j1oG1.cjs → audio-MqvGQVvP.cjs} +3 -3
  30. package/dist/src/{authoritativeMarkupInjection-2C63bFKe.cjs → authoritativeMarkupInjection-BAuWkXwn.cjs} +5 -5
  31. package/dist/src/{authoritativeMarkupInjection-B2MJXBR1.js → authoritativeMarkupInjection-CDCg-jRQ.js} +4 -4
  32. package/dist/src/{authoritativeMarkupInjection-CE4HOCHa.js → authoritativeMarkupInjection-COd4q9Hp.js} +5 -5
  33. package/dist/src/{authoritativeMarkupInjection-DrBqZVP1.js → authoritativeMarkupInjection-D5oKM43M.js} +5 -5
  34. package/dist/src/{base-tmVReihS.js → base-B8G9Ob46.js} +2 -2
  35. package/dist/src/{base-6Aaed910.js → base-CzDq5YwX.js} +2 -2
  36. package/dist/src/{base-S8I8vPVY.js → base-DqNtZTrF.js} +2 -2
  37. package/dist/src/{base-BS60m8JA.cjs → base-OeMKpFIB.cjs} +2 -2
  38. package/dist/src/{bestOfN-BkH9d3Lr.js → bestOfN-B89i9zc7.js} +6 -6
  39. package/dist/src/{bestOfN-C1_WFZFb.js → bestOfN-BEfIajMY.js} +5 -5
  40. package/dist/src/{bestOfN-DfRpoheE.js → bestOfN-Czr-c62W.js} +6 -6
  41. package/dist/src/{bestOfN-b6uHssUC.cjs → bestOfN-QWGyCB5j.cjs} +6 -6
  42. package/dist/src/{billing-DwpSQ_4i.js → billing-BhghtFas.js} +2 -2
  43. package/dist/src/{billing-CAB1s36q.js → billing-BkQJKKdm.js} +2 -2
  44. package/dist/src/{billing-Dn9Gm2tN.cjs → billing-Co_1rjfG.cjs} +2 -2
  45. package/dist/src/{billing-DimGp80i.js → billing-MY86Oqwg.js} +2 -2
  46. package/dist/src/{blobs-7T2OXYkC.js → blobs-B8d9jKvz.js} +2 -2
  47. package/dist/src/{blobs-CqhgM_fa.js → blobs-BTzPmpq-.js} +2 -2
  48. package/dist/src/{blobs-DQ6pIlJQ.cjs → blobs-BcpoigIU.cjs} +7 -1
  49. package/dist/src/{blobs-Dxfq3woN.js → blobs-DQ4bXN5O.js} +2 -2
  50. package/dist/src/{cache-DgKlV56y.js → cache-BEZBHFxd.js} +2 -2
  51. package/dist/src/cache-Cqg9f4d4.js +3 -0
  52. package/dist/src/{cache-CmidsPv2.js → cache-D2MfIrzr.js} +3 -3
  53. package/dist/src/{cache-B-fzj_aE.cjs → cache-DWEZYdJG.cjs} +2 -2
  54. package/dist/src/{cache-Z4cklSHj.js → cache-WT_2CYA-.js} +2 -2
  55. package/dist/src/{chat-uLo5fkVu.js → chat-C9yx5XD4.js} +2 -2
  56. package/dist/src/{chat-VVJW_GJC.js → chat-CuPbIKVa.js} +2 -2
  57. package/dist/src/{chat-BWdNGktf.js → chat-DBG4VxM7.js} +7 -7
  58. package/dist/src/{chat-CrOCT2BA.js → chat-Dwfr4jHi.js} +2 -2
  59. package/dist/src/{chat-BE0BP7oZ.js → chat-FNWhaysj.js} +7 -7
  60. package/dist/src/{chat-CvN2w9fY.js → chat-PfM8xgFA.js} +7 -7
  61. package/dist/src/{chat-CpFzezkO.cjs → chat-XVIowajy.cjs} +7 -7
  62. package/dist/src/{chat-DAkk46Lf.cjs → chat-sZgq1_-v.cjs} +2 -2
  63. package/dist/src/{claude-agent-sdk-CocknPbL.js → claude-agent-sdk-B0AZ38ny.js} +4 -4
  64. package/dist/src/{claude-agent-sdk-BH0L9H8Y.js → claude-agent-sdk-BfYAjuTk.js} +4 -4
  65. package/dist/src/{claude-agent-sdk-DxyDxejT.cjs → claude-agent-sdk-CklMerFa.cjs} +4 -4
  66. package/dist/src/{claude-agent-sdk-Bh0MH9Z9.js → claude-agent-sdk-DTFpCefB.js} +4 -4
  67. package/dist/src/cloud-BNr2N1RY.js +3 -0
  68. package/dist/src/{cloud-DJB9yPQB.js → cloud-DKKGeJBV.js} +2 -2
  69. package/dist/src/{cloudflare-ai-DeUFFMJE.cjs → cloudflare-ai-C7pMPgpc.cjs} +4 -4
  70. package/dist/src/{cloudflare-ai-Bg1wwMId.js → cloudflare-ai-Cqz_3WD2.js} +4 -4
  71. package/dist/src/{cloudflare-ai-CpbxtQGT.js → cloudflare-ai-CuUCQanF.js} +4 -4
  72. package/dist/src/{cloudflare-ai-B2Sjijq0.js → cloudflare-ai-lAgV52qE.js} +4 -4
  73. package/dist/src/{cloudflare-gateway-DKsO0VKU.js → cloudflare-gateway-8T5x83eI.js} +3 -3
  74. package/dist/src/{cloudflare-gateway-CvQV6nA1.js → cloudflare-gateway-Bq7SdErk.js} +3 -3
  75. package/dist/src/{cloudflare-gateway-BwdJezUO.js → cloudflare-gateway-moRfeZJJ.js} +3 -3
  76. package/dist/src/{cloudflare-gateway-cBHiORfX.cjs → cloudflare-gateway-peUrx9oi.cjs} +3 -3
  77. package/dist/src/{codex-app-server-BHVKRhkY.js → codex-app-server-BvPHEwJg.js} +5 -5
  78. package/dist/src/{codex-app-server-CojV6u3_.js → codex-app-server-DBTBsZ1t.js} +5 -5
  79. package/dist/src/{codex-app-server-B471dabg.cjs → codex-app-server-Dwl3iupA.cjs} +5 -5
  80. package/dist/src/{codex-app-server-DF2PMuc1.js → codex-app-server-t-QoeeGd.js} +5 -5
  81. package/dist/src/{codex-sdk-Bj4uY6sS.js → codex-sdk-C4FTldKU.js} +4 -4
  82. package/dist/src/{codex-sdk-D4JF0nj6.js → codex-sdk-C4aieKza.js} +4 -4
  83. package/dist/src/codex-sdk-CTD1qSKx.js +3 -0
  84. package/dist/src/{codex-sdk-aezPvTAB.js → codex-sdk-CnSzlhih.js} +4 -4
  85. package/dist/src/{codex-sdk-C9c-416d.cjs → codex-sdk-bWIQVOBL.cjs} +4 -4
  86. package/dist/src/{cometapi-CgaDmO4i.js → cometapi-B0mQIIzf.js} +7 -7
  87. package/dist/src/{cometapi-BlBmHq7-.js → cometapi-CFrYNMs5.js} +7 -7
  88. package/dist/src/{cometapi-mtyRjerU.js → cometapi-CMnFU1wL.js} +7 -7
  89. package/dist/src/{cometapi-D8sWSnb1.cjs → cometapi-D2thnPaL.cjs} +7 -7
  90. package/dist/src/{completion-RkFAOVSF.js → completion-B0yVZF3v.js} +5 -5
  91. package/dist/src/{completion-CHnFmpnp.js → completion-Dz36rtPd.js} +5 -5
  92. package/dist/src/{completion-Di0-4tYi.cjs → completion-Ny3XQpqx.cjs} +5 -5
  93. package/dist/src/{completion-Bd8G9VHW.js → completion-sMpCTaBm.js} +5 -5
  94. package/dist/src/{crescendo-C8YuBd9K.js → crescendo-BpVWWleP.js} +11 -11
  95. package/dist/src/{crescendo-TWgp7uGp.cjs → crescendo-CqQhmeC0.cjs} +13 -13
  96. package/dist/src/{crescendo-BgGio6G0.js → crescendo-JAvyVRKK.js} +13 -13
  97. package/dist/src/{crescendo-BQ2VI9FD.js → crescendo-RfCMSIM-.js} +13 -13
  98. package/dist/src/{custom-D0p5pikf.cjs → custom-B_fKUq6j.cjs} +11 -11
  99. package/dist/src/{custom-DsSELzzx.js → custom-Bm6Tu-ji.js} +11 -11
  100. package/dist/src/{custom-CFnjgHKp.js → custom-LxkvkOvG.js} +9 -9
  101. package/dist/src/{custom-CSaH4Qj9.js → custom-jLsK8Wf9.js} +11 -11
  102. package/dist/src/{docker-ByT3LmHN.js → docker-B60virtZ.js} +5 -5
  103. package/dist/src/{docker-BRA5ruGU.cjs → docker-D_f3qyDE.cjs} +5 -5
  104. package/dist/src/{docker-CVY-oMv4.js → docker-DogRc30z.js} +5 -5
  105. package/dist/src/{docker-DIxhfwlx.js → docker-wwQ1pPGy.js} +5 -5
  106. package/dist/src/{embedding-BpX-WENP.js → embedding-BMe9ZgQF.js} +5 -5
  107. package/dist/src/{embedding-B_0mJpXs.cjs → embedding-ClHIOEld.cjs} +5 -5
  108. package/dist/src/{embedding-LplgjBJ0.js → embedding-Dy2o5RFQ.js} +5 -5
  109. package/dist/src/{embedding-CCbgRo4z.js → embedding-HXOpA992.js} +5 -5
  110. package/dist/src/{eval-BXF3bRvV.js → eval-BLgDYWPd.js} +4 -4
  111. package/dist/src/{eval-BcM9YiOW.js → eval-DbGugzR8.js} +1 -1
  112. package/dist/src/evalResult-B6Jpy3kJ.js +3 -0
  113. package/dist/src/{evalResult-C8MROHS8.js → evalResult-BWE17Tqm.js} +3 -3
  114. package/dist/src/{evalResult-CIxAdUVQ.cjs → evalResult-DDohNAHL.cjs} +3 -3
  115. package/dist/src/{evalResult-DaACTv0f.js → evalResult-DOh0QQix.js} +3 -3
  116. package/dist/src/evaluator-CTl-lKuh.js +3 -0
  117. package/dist/src/{evaluator-C_gCkBe3.js → evaluator-DbOsHSRe.js} +212 -21
  118. package/dist/src/{evaluatorHelpers-BVvi8tWH.cjs → evaluatorHelpers-CaaC50RB.cjs} +4 -4
  119. package/dist/src/{evaluatorHelpers-C6-aKnJe.js → evaluatorHelpers-CoLW5rKU.js} +4 -4
  120. package/dist/src/{evaluatorHelpers-RQo-m90b.js → evaluatorHelpers-DTtYkrGO.js} +4 -4
  121. package/dist/src/{extractor-B1hELWwJ.js → extractor-BIqe0lMN.js} +70 -12
  122. package/dist/src/{extractor-_E41W0Fl.cjs → extractor-CUVurbDW.cjs} +71 -12
  123. package/dist/src/{extractor-DV6WBfAi.js → extractor-DOhjGS0m.js} +70 -12
  124. package/dist/src/{extractor-ItsKh8lH.js → extractor-h1HS9f6y.js} +70 -12
  125. package/dist/src/{fetch-BBa1Lxgp.js → fetch-B1Rb0VdL.js} +3 -3
  126. package/dist/src/{fetch-BtdsABrj.js → fetch-BErWGTUY.js} +2 -2
  127. package/dist/src/{fetch-CFIU30wy.js → fetch-BNUDixbE.js} +2 -2
  128. package/dist/src/{fetch-OePjzUmA.cjs → fetch-C7yU9CNr.cjs} +2 -2
  129. package/dist/src/fetch-DVj4dF4V.js +3 -0
  130. package/dist/src/{goat-kpeOOE-K.js → goat-BnB1zGir.js} +13 -13
  131. package/dist/src/{goat-Coh2te0S.cjs → goat-C1RkjWv1.cjs} +13 -13
  132. package/dist/src/{goat-BCFeW4zk.js → goat-CNpA_tT8.js} +11 -11
  133. package/dist/src/{goat-Dr2YGfiG.js → goat-ZRARvAD5.js} +13 -13
  134. package/dist/src/graders-CA3QVnK3.js +3 -0
  135. package/dist/src/{graders-BrLOEmxX.js → graders-CO5drf0x.js} +17 -17
  136. package/dist/src/{graders-DEz7EeRy.js → graders-CpUlNVnh.js} +17 -17
  137. package/dist/src/{graders-CY4Ft8A9.js → graders-Z5qzvpuI.js} +17 -17
  138. package/dist/src/{graders-CCrX0NG3.cjs → graders-t_K-nZ_X.cjs} +17 -17
  139. package/dist/src/{hydra-C90CylNi.js → hydra-BMb0WtZA.js} +13 -13
  140. package/dist/src/{hydra-dOBPmWHt.js → hydra-BXmf4FCK.js} +11 -11
  141. package/dist/src/{hydra-Cq_3qKz_.js → hydra-C5_Vuh-m.js} +13 -13
  142. package/dist/src/{hydra-B524i6K6.cjs → hydra-c1_7vPsg.cjs} +13 -13
  143. package/dist/src/{image-DBnzfeuJ.cjs → image-BhHFD4Vb.cjs} +3 -3
  144. package/dist/src/{image-CvhTr1GY.cjs → image-CYFea400.cjs} +5 -5
  145. package/dist/src/{image-CHJ-KjNE.js → image-CgkOODNn.js} +5 -5
  146. package/dist/src/{image-_-h6GCQ7.js → image-DGQkq3aK.js} +5 -5
  147. package/dist/src/{image-CkF1ruDX.js → image-DWveOfTz.js} +3 -3
  148. package/dist/src/{image-BmVZRCkS.js → image-DfF12xzt.js} +5 -5
  149. package/dist/src/{image-B6P9JAV2.js → image-DkSUFfLd.js} +3 -3
  150. package/dist/src/{image-CD22vXth.js → image-nYwdqnax.js} +3 -3
  151. package/dist/src/index.cjs +218 -26
  152. package/dist/src/index.js +216 -26
  153. package/dist/src/{indirectWebPwn-BgIfQ2ON.js → indirectWebPwn-BajQ_evT.js} +5 -5
  154. package/dist/src/{indirectWebPwn-A16xYmav.js → indirectWebPwn-BbFMiv79.js} +4 -4
  155. package/dist/src/{indirectWebPwn-BRhR4Dk9.js → indirectWebPwn-BnrxhAAL.js} +4 -4
  156. package/dist/src/{indirectWebPwn-Bfp-t224.cjs → indirectWebPwn-BqOgtzny.cjs} +5 -5
  157. package/dist/src/{indirectWebPwn-8G6tgDBW.js → indirectWebPwn-C6_BaxjA.js} +5 -5
  158. package/dist/src/{indirectWebPwn-BWGexuih.js → indirectWebPwn-C779yDi6.js} +4 -4
  159. package/dist/src/{indirectWebPwn-DcKDbCn_.cjs → indirectWebPwn-CDo9rC06.cjs} +4 -4
  160. package/dist/src/{indirectWebPwn-CZ2kTy4r.js → indirectWebPwn-k8D0JacN.js} +5 -5
  161. package/dist/src/{iterative-BIHF31Io.js → iterative-BzKNkXHn.js} +13 -13
  162. package/dist/src/{iterative-XRfxQ0i8.cjs → iterative-CD3I_Rwq.cjs} +13 -13
  163. package/dist/src/{iterative-CZPHLUKZ.js → iterative-DL8iDwrE.js} +13 -13
  164. package/dist/src/{iterative-DZkNlFE-.js → iterative-DyEoFedI.js} +11 -11
  165. package/dist/src/{iterativeImage-BFRM8Jdx.js → iterativeImage-B7qV6kzP.js} +4 -4
  166. package/dist/src/{iterativeImage-DJtVKlFX.cjs → iterativeImage-BaOAhF-S.cjs} +5 -5
  167. package/dist/src/{iterativeImage-7WjhjpHE.js → iterativeImage-D85THuYb.js} +5 -5
  168. package/dist/src/{iterativeImage-CbRn9_MH.js → iterativeImage-noXhuElt.js} +5 -5
  169. package/dist/src/{iterativeMeta-2gyieWbU.js → iterativeMeta-BHNJgPy0.js} +12 -12
  170. package/dist/src/{iterativeMeta-dkFD9UKg.cjs → iterativeMeta-BQrhQ-iJ.cjs} +12 -12
  171. package/dist/src/{iterativeMeta-Bh2AQq8Y.js → iterativeMeta-CAN36NIN.js} +12 -12
  172. package/dist/src/{iterativeMeta-CmMnD77T.js → iterativeMeta-CnPYPYH0.js} +10 -10
  173. package/dist/src/{iterativeTree-DuIk7wjS.js → iterativeTree-B7116aK-.js} +10 -10
  174. package/dist/src/{iterativeTree-bjH__9en.js → iterativeTree-DdXSpkqE.js} +12 -12
  175. package/dist/src/{iterativeTree-DSNss1kE.js → iterativeTree-cKlxQWhi.js} +12 -12
  176. package/dist/src/{iterativeTree-DoE-8nC3.cjs → iterativeTree-u2hKQ51y.cjs} +12 -12
  177. package/dist/src/{knowledgeBase-kyTJpbr0.js → knowledgeBase-D9xW79dS.js} +4 -4
  178. package/dist/src/{knowledgeBase-CQasebQt.js → knowledgeBase-DfwVbdwp.js} +4 -4
  179. package/dist/src/{knowledgeBase-DebHrXhD.cjs → knowledgeBase-DhT8uaMH.cjs} +4 -4
  180. package/dist/src/{knowledgeBase-mzMh6UZt.js → knowledgeBase-DlH6NRlX.js} +4 -4
  181. package/dist/src/{litellm-wSD4Q6-H.cjs → litellm-BA2Fti7H.cjs} +4 -4
  182. package/dist/src/{litellm-BJFH4uKd.js → litellm-CHybAu4l.js} +4 -4
  183. package/dist/src/{litellm-A2eV_lM0.js → litellm-Cn_zDWeA.js} +4 -4
  184. package/dist/src/{litellm-CeJEe_jQ.js → litellm-CnqX4jfm.js} +4 -4
  185. package/dist/src/{luma-ray-DpuaR6Wa.js → luma-ray-C_AWu7K6.js} +4 -4
  186. package/dist/src/{luma-ray-B0GNCw6S.js → luma-ray-CbFOvJZw.js} +4 -4
  187. package/dist/src/{luma-ray-qBfU-mGO.cjs → luma-ray-D7hDEZaC.cjs} +4 -4
  188. package/dist/src/{luma-ray-CM6bvN4t.js → luma-ray-RQAhTNvK.js} +4 -4
  189. package/dist/src/main.js +27 -27
  190. package/dist/src/{memoryPoisoning-9mIgiE3F.cjs → memoryPoisoning-A8N_cbrW.cjs} +5 -5
  191. package/dist/src/{memoryPoisoning-BYBQ1Ns5.js → memoryPoisoning-BGe4fuFU.js} +5 -5
  192. package/dist/src/{memoryPoisoning-SvtQxFjF.js → memoryPoisoning-DDfIRZnk.js} +5 -5
  193. package/dist/src/{memoryPoisoning-D4iqi_nT.js → memoryPoisoning-DtJ5vYZW.js} +5 -5
  194. package/dist/src/{messages-BofXErqC.js → messages-BH83TS-n.js} +7 -7
  195. package/dist/src/{messages-DxzhBs74.js → messages-aXox3d04.js} +7 -7
  196. package/dist/src/{messages-CHZtL-k0.cjs → messages-qapmFqOQ.cjs} +7 -7
  197. package/dist/src/{messages-BKTseD_x.js → messages-yVMPGJ4n.js} +7 -7
  198. package/dist/src/{mischievousUser-D23wQ8f0.js → mischievousUser-BPDyepmu.js} +5 -5
  199. package/dist/src/{mischievousUser-DX1gGvUB.js → mischievousUser-D1mbddId.js} +5 -5
  200. package/dist/src/{mischievousUser-ECTv-u4g.cjs → mischievousUser-DHYVKotH.cjs} +5 -5
  201. package/dist/src/{mischievousUser-B5oT1xjM.js → mischievousUser-D_8tmPfA.js} +5 -5
  202. package/dist/src/{modelslab-D5vwtIYR.js → modelslab-BwywPRoU.js} +5 -5
  203. package/dist/src/{modelslab-DE9CfYYT.js → modelslab-Cc6fn99l.js} +5 -5
  204. package/dist/src/{modelslab-CVkeR8mC.cjs → modelslab-D2F3FtnI.cjs} +5 -5
  205. package/dist/src/{modelslab-BU_qCK1m.js → modelslab-D_izTsvD.js} +5 -5
  206. package/dist/src/{nova-reel-BSM7U8Bp.js → nova-reel-B1Jg1XBk.js} +4 -4
  207. package/dist/src/{nova-reel-BKAkU37Y.js → nova-reel-CZeHbWUe.js} +4 -4
  208. package/dist/src/{nova-reel-BvWH15rr.cjs → nova-reel-CcWrhmGJ.cjs} +4 -4
  209. package/dist/src/{nova-reel-D2tla7dy.js → nova-reel-DFrk1Ey2.js} +4 -4
  210. package/dist/src/{nova-sonic-DU7_krhB.js → nova-sonic-4wwR0tZJ.js} +2 -2
  211. package/dist/src/{nova-sonic-C7CNjG9n.cjs → nova-sonic-BqRQ9CWO.cjs} +2 -2
  212. package/dist/src/{nova-sonic-BQkU8weK.js → nova-sonic-D-IJHou2.js} +2 -2
  213. package/dist/src/{nova-sonic-B8PB4mU2.js → nova-sonic-DJUXNWUJ.js} +2 -2
  214. package/dist/src/{openclaw-CLNjF8ox.js → openclaw-5U8yiy9P.js} +5 -5
  215. package/dist/src/{openclaw-laZmy-8p.cjs → openclaw-B0vjRb3y.cjs} +5 -5
  216. package/dist/src/{openclaw-Gl2a1gR3.js → openclaw-C8xQtncQ.js} +5 -5
  217. package/dist/src/{openclaw-D5yEpk1f.js → openclaw-CqZoWsh0.js} +5 -5
  218. package/dist/src/{opencode-sdk-CGPqE4m0.js → opencode-sdk-B2qz1kCI.js} +2 -2
  219. package/dist/src/{opencode-sdk-5XXP3gNb.js → opencode-sdk-BGO1zuPF.js} +2 -2
  220. package/dist/src/{opencode-sdk-C7mIxApB.cjs → opencode-sdk-Bk9G3WGQ.cjs} +2 -2
  221. package/dist/src/{opencode-sdk-E1fh3vlz.js → opencode-sdk-NhbhYcsR.js} +2 -2
  222. package/dist/src/{promptfoo-C4g2Lx9t.js → promptfoo-CkDcgxiW.js} +4 -4
  223. package/dist/src/{promptfoo-DdsPYNm7.js → promptfoo-De6vQq9F.js} +4 -4
  224. package/dist/src/{promptfoo-x112UyE1.js → promptfoo-DhGR7OQn.js} +4 -4
  225. package/dist/src/{promptfoo-B9KuhWM0.cjs → promptfoo-Dtw3i6YK.cjs} +4 -4
  226. package/dist/src/{providers-xrARCHcC.js → providers-BIgLuX4Z.js} +1 -1
  227. package/dist/src/{providers-BZ-QJYop.cjs → providers-CCRHPNv1.cjs} +50 -49
  228. package/dist/src/{providers-DdNIebwz.js → providers-am7xTa5w.js} +51 -50
  229. package/dist/src/{providers-BnjFZtaq.js → providers-gntyGa2T.js} +50 -49
  230. package/dist/src/{providers-D_OinWvd.js → providers-j-ulWCzy.js} +50 -49
  231. package/dist/src/quiverai-CHV12wRE.js +324 -0
  232. package/dist/src/quiverai-CNSyaZhh.js +325 -0
  233. package/dist/src/quiverai-CNfaxZ3K.cjs +324 -0
  234. package/dist/src/quiverai-CzROwhTy.js +324 -0
  235. package/dist/src/{registry-C57trbNM.js → registry-B0pFfEzq.js} +14 -14
  236. package/dist/src/{registry-Bnb9O892.cjs → registry-BH1mZ37j.cjs} +14 -14
  237. package/dist/src/{registry-CmhcDYtj.js → registry-Bvfyz9Xt.js} +14 -14
  238. package/dist/src/{registry-DhaGoOuz.js → registry-Dzut7txg.js} +14 -14
  239. package/dist/src/{remoteGeneration-BlwssRVS.js → remoteGeneration-CW6zHjQx.js} +4 -4
  240. package/dist/src/{remoteGeneration--4NPfyL-.js → remoteGeneration-DuxbIn94.js} +4 -4
  241. package/dist/src/{remoteGeneration-B0K7iojS.cjs → remoteGeneration-oSmtgmBY.cjs} +4 -4
  242. package/dist/src/{remoteGeneration-DiAuGk9s.js → remoteGeneration-wvnQpzN1.js} +4 -4
  243. package/dist/src/{responses-C57h4gaW.js → responses-CI7uikKQ.js} +6 -6
  244. package/dist/src/{responses-B9ygvEC-.cjs → responses-DRLyW4Lj.cjs} +6 -6
  245. package/dist/src/{responses-CXKL6TPn.js → responses-DxFUQTN2.js} +6 -6
  246. package/dist/src/{responses-CTfu1ToN.js → responses-JNrMb3zS.js} +6 -6
  247. package/dist/src/{sagemaker-DHdeSsnJ.js → sagemaker-5AwedTwq.js} +9 -9
  248. package/dist/src/{sagemaker-CHL8TZFs.js → sagemaker-B5yQiSKh.js} +9 -9
  249. package/dist/src/{sagemaker-DdVGF_UD.cjs → sagemaker-C3aoiFup.cjs} +9 -9
  250. package/dist/src/{sagemaker-DUjuHnmj.js → sagemaker-XmAlwYoN.js} +9 -9
  251. package/dist/src/{scanner-BdoS5ILQ.js → scanner-BdEduFjO.js} +5 -5
  252. package/dist/src/server/index.js +214 -24
  253. package/dist/src/{server-B8UpdwtX.cjs → server-B3QXCltR.cjs} +3 -3
  254. package/dist/src/{server-DaonK4kI.js → server-Ctq0NOMp.js} +3 -3
  255. package/dist/src/{server-Ds_P02x6.js → server-D0pdY_yM.js} +4 -4
  256. package/dist/src/{server-CYxCnoVw.js → server-DMCug-jv.js} +4 -4
  257. package/dist/src/server-Ty5m26Vh.js +3 -0
  258. package/dist/src/{shared-BavzGCp0.js → shared-C-G3NQ1-.js} +7 -7
  259. package/dist/src/{shared-D_0FXjLS.js → shared-CnrYC0Dk.js} +7 -7
  260. package/dist/src/{shared-DY3IzJlT.cjs → shared-D3PxrdDh.cjs} +7 -7
  261. package/dist/src/{shared-B3IkjkNV.js → shared-DHDR-oS4.js} +7 -7
  262. package/dist/src/{simulatedUser-CokouWJT.js → simulatedUser-AhNbPm55.js} +5 -5
  263. package/dist/src/{simulatedUser-DNiOb7YE.js → simulatedUser-DV977ZD0.js} +5 -5
  264. package/dist/src/{simulatedUser-BJabLGod.js → simulatedUser-Dq8cpKLQ.js} +5 -5
  265. package/dist/src/{simulatedUser-CPDlAc1R.cjs → simulatedUser-tAjEGnxH.cjs} +5 -5
  266. package/dist/src/{storage-CH8WC1r3.cjs → storage-C8WR4y77.cjs} +3 -3
  267. package/dist/src/{storage-D_qaZpfe.js → storage-CK2YYGUg.js} +3 -3
  268. package/dist/src/{storage-CLyYkZk-.js → storage-Nc_eXGrV.js} +4 -4
  269. package/dist/src/{storage-3dpIy6f2.js → storage-P9MrA5xv.js} +3 -3
  270. package/dist/src/{strategies-2Q_uZxBs.cjs → strategies-B6Y6G9UV.cjs} +8 -8
  271. package/dist/src/{strategies-DVDC487a.js → strategies-CaefFyHy.js} +9 -9
  272. package/dist/src/{strategies-BuIPOuYL.js → strategies-DE3UN_VH.js} +8 -8
  273. package/dist/src/telemetry-Bbd-BlA7.js +3 -0
  274. package/dist/src/{telemetry-Bh3HJU7r.js → telemetry-C7v0I4YX.js} +3 -3
  275. package/dist/src/{telemetry-B-NTbvDj.js → telemetry-CTYOje0d.js} +3 -3
  276. package/dist/src/{telemetry-3fTnWcSU.js → telemetry-CvJEPKK6.js} +3 -3
  277. package/dist/src/{telemetry-Be4rklbJ.cjs → telemetry-hDovhwWp.cjs} +3 -3
  278. package/dist/src/{tracingOptions-CYCHrrQQ.cjs → tracingOptions-DGai7e5l.cjs} +2 -2
  279. package/dist/src/{tracingOptions-CLKNUvF4.js → tracingOptions-DL2vOmYS.js} +2 -2
  280. package/dist/src/{tracingOptions-CZpFCwyr.js → tracingOptions-e_c5TlHv.js} +2 -2
  281. package/dist/src/{tracingOptions-Bi477wlC.js → tracingOptions-xCBDF3nM.js} +2 -2
  282. package/dist/src/{transcription-CtLhhmYq.js → transcription-BCasJfFB.js} +4 -4
  283. package/dist/src/{transcription-BB9i78R3.js → transcription-BLOD9lN7.js} +4 -4
  284. package/dist/src/{transcription-BRd477OO.js → transcription-BOjp5wlV.js} +4 -4
  285. package/dist/src/{transcription-O3Nc-kEc.cjs → transcription-G6JwbB2P.cjs} +4 -4
  286. package/dist/src/{transform-D9nfyIts.cjs → transform-B92noEAU.cjs} +13 -3
  287. package/dist/src/{transform-DmSzMsCP.js → transform-CD9wrP31.js} +8 -4
  288. package/dist/src/{transform-CUPglRUI.js → transform-D7-gzzhD.js} +8 -4
  289. package/dist/src/{transform-CLzSt5fi.js → transform-D8kXC-nB.js} +8 -4
  290. package/dist/src/{util-CnqjxsAd.js → util-BTAyQmdN.js} +2 -2
  291. package/dist/src/{util-Bg-aMimr.js → util-BbMJxgff.js} +3 -3
  292. package/dist/src/{util-mVC_YCag.cjs → util-C62dCLH_.cjs} +3 -3
  293. package/dist/src/{util-16aq4oHW.js → util-CD4LxH5h.js} +4 -4
  294. package/dist/src/{util-CRYfgRHi.js → util-CHCKTSi5.js} +3 -3
  295. package/dist/src/{util-BIYgspDB.js → util-CKQ_tuWG.js} +4 -4
  296. package/dist/src/{util-Bptzcit_.js → util-CVI1oD-n.js} +3 -3
  297. package/dist/src/{util-DHG9r5sC.js → util-CcW4TZSn.js} +2 -2
  298. package/dist/src/{util-DJLHqGS5.js → util-Ci_vm5u1.js} +2 -2
  299. package/dist/src/{util-D9xyoiGG.js → util-CkLsVF3e.js} +3 -3
  300. package/dist/src/{util-BsKq95ai.js → util-CqfcdA-f.js} +3 -3
  301. package/dist/src/{util-tsZfE0-_.js → util-CubC5Tyt.js} +3 -3
  302. package/dist/src/{util-BHfVEhSs.cjs → util-cAY5C8xI.cjs} +3 -3
  303. package/dist/src/{util-DEMRW89M2.cjs → util-jOGJmpWE2.cjs} +4 -4
  304. package/dist/src/{util-CpS555tc2.js → util-s0NU5XTE2.js} +4 -4
  305. package/dist/src/{util-DJFl6JZF.cjs → util-tFLdovkA.cjs} +2 -2
  306. package/dist/tsconfig.tsbuildinfo +1 -1
  307. package/package.json +1 -1
  308. package/dist/src/app/assets/Report-Cx3cN9Nt.js +0 -1
  309. package/dist/src/app/assets/index-D44ihjH5.css +0 -1
  310. package/dist/src/app/assets/index-DzyLrNWM.js +0 -413
  311. package/dist/src/cache-D_D5rsiE.js +0 -3
  312. package/dist/src/cloud-BmVZ8W_3.js +0 -3
  313. package/dist/src/codex-sdk-BTI9Fvnt.js +0 -3
  314. package/dist/src/evalResult-uL1BStGk.js +0 -3
  315. package/dist/src/evaluator-C2YPxWQP.js +0 -3
  316. package/dist/src/fetch-DAe6a2ih.js +0 -3
  317. package/dist/src/graders-BZe_w0E4.js +0 -3
  318. package/dist/src/quiverai-B8a5RqGP.js +0 -213
  319. package/dist/src/quiverai-BoHFg1Vw.js +0 -214
  320. package/dist/src/quiverai-DYyzyVTF.cjs +0 -213
  321. package/dist/src/quiverai-ktAnwSBA.js +0 -213
  322. package/dist/src/server-DY7p-P4-.js +0 -3
  323. package/dist/src/telemetry-BOwRcACl.js +0 -3
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { E as getEnvBool, c as logger } from "./logger-DNHkR_3S.js";
3
- import { l as isLoggedIntoCloud } from "./accounts-DbmMSaOW.js";
4
- import { a as cloudConfig } from "./cloud-DJB9yPQB.js";
5
- import { i as storeBlob, r as recordBlobReference } from "./blobs-CqhgM_fa.js";
3
+ import { l as isLoggedIntoCloud } from "./accounts-C06-4dXo.js";
4
+ import { a as cloudConfig } from "./cloud-DKKGeJBV.js";
5
+ import { n as sha256 } from "./createHash-Ddi0OHLI.js";
6
+ import { i as storeBlob, o as BLOB_MIN_SIZE, r as recordBlobReference, s as BLOB_SCHEME } from "./blobs-BTzPmpq-.js";
7
+ import { XMLParser, XMLValidator } from "fast-xml-parser";
6
8
  //#region src/blobs/remoteUpload.ts
7
9
  function buildRemoteUploadTarget() {
8
10
  if (getEnvBool("PROMPTFOO_DISABLE_SHARING")) return null;
@@ -29,7 +31,7 @@ async function uploadBlobRemote(buffer, mimeType, context) {
29
31
  const target = buildRemoteUploadTarget();
30
32
  if (!target) return null;
31
33
  try {
32
- const { fetchWithProxy } = await import("./fetch-DAe6a2ih.js");
34
+ const { fetchWithProxy } = await import("./fetch-DVj4dF4V.js");
33
35
  const response = await fetchWithProxy(target.url, {
34
36
  method: "POST",
35
37
  headers: {
@@ -87,9 +89,9 @@ function extractBase64(value) {
87
89
  return null;
88
90
  }
89
91
  }
90
- function shouldExternalize(buffer) {
92
+ function shouldExternalize(buffer, minSizeBytes = BLOB_MIN_SIZE) {
91
93
  const size = buffer.length;
92
- return size >= 1024 && size <= 52428800;
94
+ return size >= minSizeBytes && size <= 52428800;
93
95
  }
94
96
  function getKindFromMimeType(mimeType) {
95
97
  return mimeType.startsWith("audio/") ? "audio" : "image";
@@ -136,9 +138,9 @@ function parseBinary(base64OrDataUrl, defaultMimeType) {
136
138
  return null;
137
139
  }
138
140
  }
139
- async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, kind) {
141
+ async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, kind, minSizeBytes = BLOB_MIN_SIZE) {
140
142
  const parsed = parseBinary(base64OrDataUrl, defaultMimeType);
141
- if (!parsed || !shouldExternalize(parsed.buffer)) return null;
143
+ if (!parsed || !shouldExternalize(parsed.buffer, minSizeBytes)) return null;
142
144
  if (!isBlobStorageEnabled()) return null;
143
145
  const mimeType = parsed.mimeType || "application/octet-stream";
144
146
  const { ref } = await storeBlob(parsed.buffer, mimeType, {
@@ -162,13 +164,13 @@ async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, k
162
164
  }
163
165
  function createStoreOnce(blobContext) {
164
166
  const cache = /* @__PURE__ */ new Map();
165
- return async (base64OrDataUrl, defaultMimeType, location, kind) => {
167
+ return async (base64OrDataUrl, defaultMimeType, location, kind, minSizeBytes) => {
166
168
  const parsed = parseBinary(base64OrDataUrl, defaultMimeType);
167
- if (!parsed || !shouldExternalize(parsed.buffer)) return null;
169
+ if (!parsed || !shouldExternalize(parsed.buffer, minSizeBytes)) return null;
168
170
  const cacheKey = `${kind}:${parsed.buffer.toString("base64")}`;
169
171
  const existing = cache.get(cacheKey);
170
172
  if (existing) return existing;
171
- const pendingStore = maybeStore(base64OrDataUrl, defaultMimeType, blobContext, location, kind);
173
+ const pendingStore = maybeStore(base64OrDataUrl, defaultMimeType, blobContext, location, kind, minSizeBytes);
172
174
  cache.set(cacheKey, pendingStore);
173
175
  try {
174
176
  const stored = await pendingStore;
@@ -180,6 +182,57 @@ function createStoreOnce(blobContext) {
180
182
  }
181
183
  };
182
184
  }
185
+ function getRawSvgOutputPreview(output) {
186
+ const trimmed = output.trim();
187
+ if (!trimmed.startsWith("<")) return null;
188
+ if (XMLValidator.validate(trimmed) !== true) return null;
189
+ try {
190
+ const parsed = new XMLParser({ ignoreAttributes: false }).parse(trimmed);
191
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed) || !("svg" in parsed)) return null;
192
+ } catch {
193
+ return null;
194
+ }
195
+ const buffer = Buffer.from(trimmed, "utf8");
196
+ return {
197
+ dataUrl: `data:image/svg+xml;base64,${buffer.toString("base64")}`,
198
+ uri: `${BLOB_SCHEME}${sha256(buffer)}`
199
+ };
200
+ }
201
+ function appendMetadataBlobUri(metadata, uri) {
202
+ const existingBlobUris = Array.isArray(metadata?.blobUris) ? metadata.blobUris.filter((value) => typeof value === "string") : [];
203
+ return {
204
+ ...metadata || {},
205
+ blobUris: [...new Set([...existingBlobUris, uri])]
206
+ };
207
+ }
208
+ async function storeRawSvgOutputPreview(output, metadata, storeOnce, context) {
209
+ if (typeof output !== "string") return {
210
+ metadata,
211
+ mutated: false
212
+ };
213
+ const preview = getRawSvgOutputPreview(output);
214
+ if (!preview) return {
215
+ metadata,
216
+ mutated: false
217
+ };
218
+ if ((Array.isArray(metadata?.blobUris) ? metadata.blobUris.filter((value) => typeof value === "string") : []).includes(preview.uri)) return {
219
+ metadata,
220
+ mutated: false
221
+ };
222
+ const stored = await storeOnce(preview.dataUrl, "image/svg+xml", "response.output", "image", 0);
223
+ if (!stored) return {
224
+ metadata,
225
+ mutated: false
226
+ };
227
+ logger.debug("[BlobExtractor] Stored raw SVG output blob", {
228
+ ...context,
229
+ hash: stored.hash
230
+ });
231
+ return {
232
+ metadata: appendMetadataBlobUri(metadata, stored.uri),
233
+ mutated: true
234
+ };
235
+ }
183
236
  async function externalizeDataUrls(value, storeOnce, location) {
184
237
  if (typeof value === "string") {
185
238
  if (!isDataUrl(value)) return {
@@ -313,6 +366,11 @@ async function extractAndStoreBinaryData(response, context) {
313
366
  }
314
367
  return img;
315
368
  }));
369
+ const rawSvgPreview = await storeRawSvgOutputPreview(response.output, next.metadata || response.metadata, storeOnce, context);
370
+ if (rawSvgPreview.mutated) {
371
+ next.metadata = rawSvgPreview.metadata;
372
+ mutated = true;
373
+ }
316
374
  const turns = response.turns;
317
375
  if (Array.isArray(turns)) next.turns = await Promise.all(turns.map(async (turn, idx) => {
318
376
  if (turn?.audio?.data && typeof turn.audio.data === "string") {
@@ -430,4 +488,4 @@ async function recordExistingBlobReferences(value, context, location) {
430
488
  //#endregion
431
489
  export { isBlobStorageEnabled as n, shouldAttemptRemoteBlobUpload as r, extractAndStoreBinaryData as t };
432
490
 
433
- //# sourceMappingURL=extractor-DV6WBfAi.js.map
491
+ //# sourceMappingURL=extractor-DOhjGS0m.js.map
@@ -1,7 +1,9 @@
1
1
  import { o as logger, w as getEnvBool } from "./logger-Dz3siSzF.js";
2
- import { l as cloudConfig } from "./fetch-BtdsABrj.js";
3
- import { l as isLoggedIntoCloud } from "./accounts-ECb2xAYn.js";
4
- import { i as storeBlob, r as recordBlobReference } from "./blobs-Dxfq3woN.js";
2
+ import { l as cloudConfig } from "./fetch-BErWGTUY.js";
3
+ import { l as isLoggedIntoCloud } from "./accounts-BjCiVnil.js";
4
+ import { n as sha256 } from "./createHash-BWWdtTvT.js";
5
+ import { i as storeBlob, o as BLOB_MIN_SIZE, r as recordBlobReference, s as BLOB_SCHEME } from "./blobs-DQ4bXN5O.js";
6
+ import { XMLParser, XMLValidator } from "fast-xml-parser";
5
7
  //#region src/blobs/remoteUpload.ts
6
8
  function buildRemoteUploadTarget() {
7
9
  if (getEnvBool("PROMPTFOO_DISABLE_SHARING")) return null;
@@ -28,7 +30,7 @@ async function uploadBlobRemote(buffer, mimeType, context) {
28
30
  const target = buildRemoteUploadTarget();
29
31
  if (!target) return null;
30
32
  try {
31
- const { fetchWithProxy } = await import("./fetch-BtdsABrj.js").then((n) => n.i);
33
+ const { fetchWithProxy } = await import("./fetch-BErWGTUY.js").then((n) => n.i);
32
34
  const response = await fetchWithProxy(target.url, {
33
35
  method: "POST",
34
36
  headers: {
@@ -86,9 +88,9 @@ function extractBase64(value) {
86
88
  return null;
87
89
  }
88
90
  }
89
- function shouldExternalize(buffer) {
91
+ function shouldExternalize(buffer, minSizeBytes = BLOB_MIN_SIZE) {
90
92
  const size = buffer.length;
91
- return size >= 1024 && size <= 52428800;
93
+ return size >= minSizeBytes && size <= 52428800;
92
94
  }
93
95
  function getKindFromMimeType(mimeType) {
94
96
  return mimeType.startsWith("audio/") ? "audio" : "image";
@@ -135,9 +137,9 @@ function parseBinary(base64OrDataUrl, defaultMimeType) {
135
137
  return null;
136
138
  }
137
139
  }
138
- async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, kind) {
140
+ async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, kind, minSizeBytes = BLOB_MIN_SIZE) {
139
141
  const parsed = parseBinary(base64OrDataUrl, defaultMimeType);
140
- if (!parsed || !shouldExternalize(parsed.buffer)) return null;
142
+ if (!parsed || !shouldExternalize(parsed.buffer, minSizeBytes)) return null;
141
143
  if (!isBlobStorageEnabled()) return null;
142
144
  const mimeType = parsed.mimeType || "application/octet-stream";
143
145
  const { ref } = await storeBlob(parsed.buffer, mimeType, {
@@ -161,13 +163,13 @@ async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, k
161
163
  }
162
164
  function createStoreOnce(blobContext) {
163
165
  const cache = /* @__PURE__ */ new Map();
164
- return async (base64OrDataUrl, defaultMimeType, location, kind) => {
166
+ return async (base64OrDataUrl, defaultMimeType, location, kind, minSizeBytes) => {
165
167
  const parsed = parseBinary(base64OrDataUrl, defaultMimeType);
166
- if (!parsed || !shouldExternalize(parsed.buffer)) return null;
168
+ if (!parsed || !shouldExternalize(parsed.buffer, minSizeBytes)) return null;
167
169
  const cacheKey = `${kind}:${parsed.buffer.toString("base64")}`;
168
170
  const existing = cache.get(cacheKey);
169
171
  if (existing) return existing;
170
- const pendingStore = maybeStore(base64OrDataUrl, defaultMimeType, blobContext, location, kind);
172
+ const pendingStore = maybeStore(base64OrDataUrl, defaultMimeType, blobContext, location, kind, minSizeBytes);
171
173
  cache.set(cacheKey, pendingStore);
172
174
  try {
173
175
  const stored = await pendingStore;
@@ -179,6 +181,57 @@ function createStoreOnce(blobContext) {
179
181
  }
180
182
  };
181
183
  }
184
+ function getRawSvgOutputPreview(output) {
185
+ const trimmed = output.trim();
186
+ if (!trimmed.startsWith("<")) return null;
187
+ if (XMLValidator.validate(trimmed) !== true) return null;
188
+ try {
189
+ const parsed = new XMLParser({ ignoreAttributes: false }).parse(trimmed);
190
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed) || !("svg" in parsed)) return null;
191
+ } catch {
192
+ return null;
193
+ }
194
+ const buffer = Buffer.from(trimmed, "utf8");
195
+ return {
196
+ dataUrl: `data:image/svg+xml;base64,${buffer.toString("base64")}`,
197
+ uri: `${BLOB_SCHEME}${sha256(buffer)}`
198
+ };
199
+ }
200
+ function appendMetadataBlobUri(metadata, uri) {
201
+ const existingBlobUris = Array.isArray(metadata?.blobUris) ? metadata.blobUris.filter((value) => typeof value === "string") : [];
202
+ return {
203
+ ...metadata || {},
204
+ blobUris: [...new Set([...existingBlobUris, uri])]
205
+ };
206
+ }
207
+ async function storeRawSvgOutputPreview(output, metadata, storeOnce, context) {
208
+ if (typeof output !== "string") return {
209
+ metadata,
210
+ mutated: false
211
+ };
212
+ const preview = getRawSvgOutputPreview(output);
213
+ if (!preview) return {
214
+ metadata,
215
+ mutated: false
216
+ };
217
+ if ((Array.isArray(metadata?.blobUris) ? metadata.blobUris.filter((value) => typeof value === "string") : []).includes(preview.uri)) return {
218
+ metadata,
219
+ mutated: false
220
+ };
221
+ const stored = await storeOnce(preview.dataUrl, "image/svg+xml", "response.output", "image", 0);
222
+ if (!stored) return {
223
+ metadata,
224
+ mutated: false
225
+ };
226
+ logger.debug("[BlobExtractor] Stored raw SVG output blob", {
227
+ ...context,
228
+ hash: stored.hash
229
+ });
230
+ return {
231
+ metadata: appendMetadataBlobUri(metadata, stored.uri),
232
+ mutated: true
233
+ };
234
+ }
182
235
  async function externalizeDataUrls(value, storeOnce, location) {
183
236
  if (typeof value === "string") {
184
237
  if (!isDataUrl(value)) return {
@@ -312,6 +365,11 @@ async function extractAndStoreBinaryData(response, context) {
312
365
  }
313
366
  return img;
314
367
  }));
368
+ const rawSvgPreview = await storeRawSvgOutputPreview(response.output, next.metadata || response.metadata, storeOnce, context);
369
+ if (rawSvgPreview.mutated) {
370
+ next.metadata = rawSvgPreview.metadata;
371
+ mutated = true;
372
+ }
315
373
  const turns = response.turns;
316
374
  if (Array.isArray(turns)) next.turns = await Promise.all(turns.map(async (turn, idx) => {
317
375
  if (turn?.audio?.data && typeof turn.audio.data === "string") {
@@ -429,4 +487,4 @@ async function recordExistingBlobReferences(value, context, location) {
429
487
  //#endregion
430
488
  export { isBlobStorageEnabled as n, shouldAttemptRemoteBlobUpload as r, extractAndStoreBinaryData as t };
431
489
 
432
- //# sourceMappingURL=extractor-ItsKh8lH.js.map
490
+ //# sourceMappingURL=extractor-h1HS9f6y.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { E as getEnvBool, O as getEnvInt, P as state, c as logger, g as sanitizeUrl, k as getEnvString, s as logRequestResponse } from "./logger-DNHkR_3S.js";
3
3
  import { t as invariant } from "./invariant-BtWWVVhl.js";
4
- import { a as cloudConfig, n as CLOUD_API_HOST } from "./cloud-DJB9yPQB.js";
4
+ import { a as cloudConfig, n as CLOUD_API_HOST } from "./cloud-DKKGeJBV.js";
5
5
  import { AsyncLocalStorage } from "node:async_hooks";
6
6
  import path from "path";
7
7
  import yaml from "js-yaml";
@@ -23,7 +23,7 @@ const HUMAN_ASSERTION_TYPE = "human";
23
23
  * Application version from package.json.
24
24
  * Injected at build time, or read from npm environment in development.
25
25
  */
26
- const VERSION = "0.121.10";
26
+ const VERSION = "0.121.11";
27
27
  /**
28
28
  * PostHog analytics key.
29
29
  * Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
@@ -1131,4 +1131,4 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
1131
1131
  //#endregion
1132
1132
  export { openaiToolChoiceToBedrock as A, TERMINAL_MAX_WIDTH as B, parseRetryAfter as C, isOpenAIToolArray as D, getRequestTimeoutMs as E, transformTools as F, POSTHOG_KEY as G, getDefaultShareViewBaseUrl as H, CLOUD_PROVIDER_PREFIX as I, HUMAN_ASSERTION_TYPE as J, VERSION as K, CONSENT_ENDPOINT as L, parseChatPrompt as M, toTitleCase as N, isOpenAIToolChoice as O, transformToolChoice as P, EVENTS_ENDPOINT as R, parseRateLimitHeaders as S, calculateCost as T, getShareApiBaseUrl as U, getDefaultPort as V, getShareViewBaseUrl as W, isNonTransientHttpStatus as _, fetchWithTimeout as a, sleep as b, isRateLimited as c, isPromptfooCloudApiHost as d, HttpRateLimitError as f, isHttpRateLimitError as g, formatRateLimitErrorMessage as h, fetchWithRetries as i, openaiToolsToBedrock as j, isPromptfooSampleTarget as k, isTransientError as l, extractRateLimitErrorCode as m, computeRateLimitWaitMs as n, getFetchWithProxyHeaders as o, NON_TRANSIENT_HTTP_STATUSES as p, FILE_METADATA_KEY as q, fetchWithProxy as r, handleRateLimit as s, clearAgentCache as t, withFetchRetryContext as u, isTransientConnectionError as v, LONG_RUNNING_MODEL_TIMEOUT_MS as w, sleepWithAbort as x, getCurrentTimestamp as y, R_ENDPOINT as z };
1133
1133
 
1134
- //# sourceMappingURL=fetch-BBa1Lxgp.js.map
1134
+ //# sourceMappingURL=fetch-B1Rb0VdL.js.map
@@ -24,7 +24,7 @@ const HUMAN_ASSERTION_TYPE = "human";
24
24
  * Application version from package.json.
25
25
  * Injected at build time, or read from npm environment in development.
26
26
  */
27
- const VERSION = "0.121.10";
27
+ const VERSION = "0.121.11";
28
28
  /**
29
29
  * PostHog analytics key.
30
30
  * Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
@@ -1331,4 +1331,4 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
1331
1331
  //#endregion
1332
1332
  export { openaiToolChoiceToBedrock as A, TERMINAL_MAX_WIDTH as B, parseRetryAfter as C, isOpenAIToolArray as D, getRequestTimeoutMs as E, transformTools as F, POSTHOG_KEY as G, getDefaultShareViewBaseUrl as H, CLOUD_PROVIDER_PREFIX as I, HUMAN_ASSERTION_TYPE as J, VERSION as K, CONSENT_ENDPOINT as L, parseChatPrompt as M, toTitleCase as N, isOpenAIToolChoice as O, transformToolChoice as P, EVENTS_ENDPOINT as R, parseRateLimitHeaders as S, calculateCost as T, getShareApiBaseUrl as U, getDefaultPort as V, getShareViewBaseUrl as W, isHttpRateLimitError as _, getFetchWithProxyHeaders as a, getCurrentTimestamp as b, CloudConfig as c, writeGlobalConfig as d, writeGlobalConfigPartial as f, formatRateLimitErrorMessage as g, extractRateLimitErrorCode as h, fetch_exports as i, openaiToolsToBedrock as j, isPromptfooSampleTarget as k, cloudConfig as l, NON_TRANSIENT_HTTP_STATUSES as m, fetchWithRetries as n, withFetchRetryContext as o, HttpRateLimitError as p, FILE_METADATA_KEY as q, fetchWithTimeout as r, isPromptfooCloudApiHost as s, fetchWithProxy as t, readGlobalConfig as u, isNonTransientHttpStatus as v, LONG_RUNNING_MODEL_TIMEOUT_MS as w, sleep as x, isTransientConnectionError as y, R_ENDPOINT as z };
1333
1333
 
1334
- //# sourceMappingURL=fetch-BtdsABrj.js.map
1334
+ //# sourceMappingURL=fetch-BErWGTUY.js.map
@@ -24,7 +24,7 @@ const HUMAN_ASSERTION_TYPE = "human";
24
24
  * Application version from package.json.
25
25
  * Injected at build time, or read from npm environment in development.
26
26
  */
27
- const VERSION = "0.121.10";
27
+ const VERSION = "0.121.11";
28
28
  /**
29
29
  * PostHog analytics key.
30
30
  * Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
@@ -1328,4 +1328,4 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
1328
1328
  //#endregion
1329
1329
  export { transformTools as A, TERMINAL_MAX_WIDTH as B, isOpenAIToolChoice as C, parseChatPrompt as D, openaiToolsToBedrock as E, writeGlobalConfigPartial as F, VERSION as G, getShareApiBaseUrl as H, CLOUD_PROVIDER_PREFIX as I, FILE_METADATA_KEY as K, CONSENT_ENDPOINT as L, cloudConfig as M, readGlobalConfig as N, toTitleCase as O, writeGlobalConfig as P, EVENTS_ENDPOINT as R, isOpenAIToolArray as S, openaiToolChoiceToBedrock as T, getShareViewBaseUrl as U, getDefaultShareViewBaseUrl as V, POSTHOG_KEY as W, parseRateLimitHeaders as _, getFetchWithProxyHeaders as a, calculateCost as b, HttpRateLimitError as c, formatRateLimitErrorMessage as d, isHttpRateLimitError as f, sleep as g, getCurrentTimestamp as h, fetch_exports as i, CloudConfig as j, transformToolChoice as k, NON_TRANSIENT_HTTP_STATUSES as l, isTransientConnectionError as m, fetchWithRetries as n, withFetchRetryContext as o, isNonTransientHttpStatus as p, HUMAN_ASSERTION_TYPE as q, fetchWithTimeout as r, isPromptfooCloudApiHost as s, fetchWithProxy as t, extractRateLimitErrorCode as u, parseRetryAfter as v, isPromptfooSampleTarget as w, getRequestTimeoutMs as x, LONG_RUNNING_MODEL_TIMEOUT_MS as y, R_ENDPOINT as z };
1330
1330
 
1331
- //# sourceMappingURL=fetch-CFIU30wy.js.map
1331
+ //# sourceMappingURL=fetch-BNUDixbE.js.map
@@ -27,7 +27,7 @@ const HUMAN_ASSERTION_TYPE = "human";
27
27
  * Application version from package.json.
28
28
  * Injected at build time, or read from npm environment in development.
29
29
  */
30
- const VERSION = "0.121.10";
30
+ const VERSION = "0.121.11";
31
31
  /**
32
32
  * PostHog analytics key.
33
33
  * Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
@@ -1612,4 +1612,4 @@ Object.defineProperty(exports, "writeGlobalConfigPartial", {
1612
1612
  }
1613
1613
  });
1614
1614
 
1615
- //# sourceMappingURL=fetch-OePjzUmA.cjs.map
1615
+ //# sourceMappingURL=fetch-C7yU9CNr.cjs.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { r as fetchWithProxy } from "./fetch-B1Rb0VdL.js";
3
+ export { fetchWithProxy };
@@ -1,18 +1,18 @@
1
1
  import { b as safeJsonStringify, o as logger } from "./logger-2ZstxKQf.js";
2
2
  import { t as invariant } from "./invariant-Ddh24eXh.js";
3
- import { G as VERSION, g as sleep, t as fetchWithProxy } from "./fetch-CFIU30wy.js";
4
- import { a as getUserEmail, s as isLoggedIntoCloud } from "./accounts-D4iTShVh.js";
5
- import { B as getNunjucksEngine } from "./util-CnqjxsAd.js";
6
- import { r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration--4NPfyL-.js";
3
+ import { G as VERSION, g as sleep, t as fetchWithProxy } from "./fetch-BNUDixbE.js";
4
+ import { a as getUserEmail, s as isLoggedIntoCloud } from "./accounts-BGs8AMhG.js";
5
+ import { B as getNunjucksEngine } from "./util-BTAyQmdN.js";
6
+ import { r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-DuxbIn94.js";
7
7
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-CmnQ0G2m.js";
8
- import { a as extractPromptFromTags, o as getSessionId, r as extractInputVarsFromPrompt } from "./util-CpS555tc2.js";
9
- import { a as assertRemoteMaterializationHandled, c as isRemoteMaterializationUpgradeError, s as buildRemoteMaterializedInputVariables } from "./promptfoo-x112UyE1.js";
10
- import { o as getGraderAssertionValue, p as tryUnblocking, s as getLastMessageContent, t as buildGraderResultAssertion } from "./shared-B3IkjkNV.js";
8
+ import { a as extractPromptFromTags, o as getSessionId, r as extractInputVarsFromPrompt } from "./util-s0NU5XTE2.js";
9
+ import { a as assertRemoteMaterializationHandled, c as isRemoteMaterializationUpgradeError, s as buildRemoteMaterializedInputVariables } from "./promptfoo-DhGR7OQn.js";
10
+ import { o as getGraderAssertionValue, p as tryUnblocking, s as getLastMessageContent, t as buildGraderResultAssertion } from "./shared-DHDR-oS4.js";
11
11
  import { i as throwIfTargetPromptExceedsMaxChars } from "./promptLength-DwFSv-C5.js";
12
- import { n as checkExfilTracking } from "./indirectWebPwn-BRhR4Dk9.js";
13
- import { n as renderPrompt } from "./evaluatorHelpers-RQo-m90b.js";
14
- import { t as Strategies } from "./strategies-BuIPOuYL.js";
15
- import { a as fetchTraceContext, i as extractTraceIdFromTraceparent, n as formatTraceForMetadata, r as formatTraceSummary, t as resolveTracingOptions } from "./tracingOptions-Bi477wlC.js";
12
+ import { n as checkExfilTracking } from "./indirectWebPwn-BnrxhAAL.js";
13
+ import { n as renderPrompt } from "./evaluatorHelpers-DTtYkrGO.js";
14
+ import { t as Strategies } from "./strategies-DE3UN_VH.js";
15
+ import { a as fetchTraceContext, i as extractTraceIdFromTraceparent, n as formatTraceForMetadata, r as formatTraceSummary, t as resolveTracingOptions } from "./tracingOptions-xCBDF3nM.js";
16
16
  import { t as applyRuntimeTransforms } from "./runtimeTransform-D0y6T_QV.js";
17
17
  import { i as getGoalRubric } from "./prompts-CuZuRe7J.js";
18
18
  import chalk from "chalk";
@@ -79,7 +79,7 @@ var GoatProvider = class {
79
79
  let assertToUse;
80
80
  let graderPassed;
81
81
  let storedGraderResult;
82
- const { getGraderById } = await import("./graders-CY4Ft8A9.js").then((n) => n.r);
82
+ const { getGraderById } = await import("./graders-Z5qzvpuI.js").then((n) => n.r);
83
83
  let test;
84
84
  if (context?.test) {
85
85
  test = context?.test;
@@ -463,4 +463,4 @@ var GoatProvider = class {
463
463
  //#endregion
464
464
  export { GoatProvider as default };
465
465
 
466
- //# sourceMappingURL=goat-kpeOOE-K.js.map
466
+ //# sourceMappingURL=goat-BnB1zGir.js.map
@@ -1,19 +1,19 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-D_mwlA32.cjs");
2
2
  const require_logger = require("./logger-DPITYeiW.cjs");
3
3
  const require_invariant = require("./invariant-QtnLD03y.cjs");
4
- const require_fetch = require("./fetch-OePjzUmA.cjs");
5
- const require_accounts = require("./accounts-5Sf1PCNo.cjs");
6
- const require_util = require("./util-DJFl6JZF.cjs");
7
- const require_remoteGeneration = require("./remoteGeneration-B0K7iojS.cjs");
4
+ const require_fetch = require("./fetch-C7yU9CNr.cjs");
5
+ const require_accounts = require("./accounts-C6NiTdum.cjs");
6
+ const require_util = require("./util-tFLdovkA.cjs");
7
+ const require_remoteGeneration = require("./remoteGeneration-oSmtgmBY.cjs");
8
8
  const require_tokenUsageUtils = require("./tokenUsageUtils-_B-P8IAi.cjs");
9
- const require_util$1 = require("./util-DEMRW89M2.cjs");
10
- const require_promptfoo = require("./promptfoo-B9KuhWM0.cjs");
11
- const require_shared = require("./shared-DY3IzJlT.cjs");
9
+ const require_util$1 = require("./util-jOGJmpWE2.cjs");
10
+ const require_promptfoo = require("./promptfoo-Dtw3i6YK.cjs");
11
+ const require_shared = require("./shared-D3PxrdDh.cjs");
12
12
  const require_promptLength = require("./promptLength-CIZ9JExv.cjs");
13
- const require_indirectWebPwn = require("./indirectWebPwn-DcKDbCn_.cjs");
14
- const require_evaluatorHelpers = require("./evaluatorHelpers-BVvi8tWH.cjs");
15
- const require_strategies = require("./strategies-2Q_uZxBs.cjs");
16
- const require_tracingOptions = require("./tracingOptions-CYCHrrQQ.cjs");
13
+ const require_indirectWebPwn = require("./indirectWebPwn-CDo9rC06.cjs");
14
+ const require_evaluatorHelpers = require("./evaluatorHelpers-CaaC50RB.cjs");
15
+ const require_strategies = require("./strategies-B6Y6G9UV.cjs");
16
+ const require_tracingOptions = require("./tracingOptions-DGai7e5l.cjs");
17
17
  const require_runtimeTransform = require("./runtimeTransform-BrI_mskc.cjs");
18
18
  const require_prompts = require("./prompts-CfS_cxI5.cjs");
19
19
  let chalk = require("chalk");
@@ -82,7 +82,7 @@ var GoatProvider = class {
82
82
  let assertToUse;
83
83
  let graderPassed;
84
84
  let storedGraderResult;
85
- const { getGraderById } = await Promise.resolve().then(() => require("./graders-CCrX0NG3.cjs")).then((n) => n.graders_exports);
85
+ const { getGraderById } = await Promise.resolve().then(() => require("./graders-t_K-nZ_X.cjs")).then((n) => n.graders_exports);
86
86
  let test;
87
87
  if (context?.test) {
88
88
  test = context?.test;
@@ -466,4 +466,4 @@ var GoatProvider = class {
466
466
  //#endregion
467
467
  exports.default = GoatProvider;
468
468
 
469
- //# sourceMappingURL=goat-Coh2te0S.cjs.map
469
+ //# sourceMappingURL=goat-C1RkjWv1.cjs.map
@@ -1,17 +1,17 @@
1
1
  import { b as safeJsonStringify, o as logger } from "./logger-Dz3siSzF.js";
2
- import { K as VERSION, t as fetchWithProxy, x as sleep } from "./fetch-BtdsABrj.js";
2
+ import { K as VERSION, t as fetchWithProxy, x as sleep } from "./fetch-BErWGTUY.js";
3
3
  import { t as invariant } from "./invariant-vgHWClmd.js";
4
- import { l as isLoggedIntoCloud, s as getUserEmail } from "./accounts-ECb2xAYn.js";
5
- import { K as getNunjucksEngine } from "./util-DJLHqGS5.js";
6
- import { r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-DiAuGk9s.js";
4
+ import { l as isLoggedIntoCloud, s as getUserEmail } from "./accounts-BjCiVnil.js";
5
+ import { K as getNunjucksEngine } from "./util-Ci_vm5u1.js";
6
+ import { r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-wvnQpzN1.js";
7
7
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-DFcAf2Fd.js";
8
- import { a as extractPromptFromTags, o as getSessionId, r as extractInputVarsFromPrompt } from "./util-BIYgspDB.js";
9
- import { a as assertRemoteMaterializationHandled, c as isRemoteMaterializationUpgradeError, s as buildRemoteMaterializedInputVariables } from "./promptfoo-C4g2Lx9t.js";
10
- import { o as getGraderAssertionValue, p as tryUnblocking, s as getLastMessageContent, t as buildGraderResultAssertion } from "./shared-D_0FXjLS.js";
8
+ import { a as extractPromptFromTags, o as getSessionId, r as extractInputVarsFromPrompt } from "./util-CKQ_tuWG.js";
9
+ import { a as assertRemoteMaterializationHandled, c as isRemoteMaterializationUpgradeError, s as buildRemoteMaterializedInputVariables } from "./promptfoo-CkDcgxiW.js";
10
+ import { o as getGraderAssertionValue, p as tryUnblocking, s as getLastMessageContent, t as buildGraderResultAssertion } from "./shared-CnrYC0Dk.js";
11
11
  import { i as throwIfTargetPromptExceedsMaxChars } from "./promptLength-Bx76P6F9.js";
12
- import { n as checkExfilTracking } from "./indirectWebPwn-BWGexuih.js";
12
+ import { n as checkExfilTracking } from "./indirectWebPwn-C779yDi6.js";
13
13
  import { n as renderPrompt, t as Strategies } from "./server/index.js";
14
- import { a as fetchTraceContext, i as extractTraceIdFromTraceparent, n as formatTraceForMetadata, r as formatTraceSummary, t as resolveTracingOptions } from "./tracingOptions-CLKNUvF4.js";
14
+ import { a as fetchTraceContext, i as extractTraceIdFromTraceparent, n as formatTraceForMetadata, r as formatTraceSummary, t as resolveTracingOptions } from "./tracingOptions-DL2vOmYS.js";
15
15
  import { t as applyRuntimeTransforms } from "./runtimeTransform-BbRV7Rrl.js";
16
16
  import { i as getGoalRubric } from "./prompts-k5KpuLAB.js";
17
17
  import chalk from "chalk";
@@ -78,7 +78,7 @@ var GoatProvider = class {
78
78
  let assertToUse;
79
79
  let graderPassed;
80
80
  let storedGraderResult;
81
- const { getGraderById } = await import("./graders-BrLOEmxX.js").then((n) => n.n);
81
+ const { getGraderById } = await import("./graders-CO5drf0x.js").then((n) => n.n);
82
82
  let test;
83
83
  if (context?.test) {
84
84
  test = context?.test;
@@ -462,4 +462,4 @@ var GoatProvider = class {
462
462
  //#endregion
463
463
  export { GoatProvider as default };
464
464
 
465
- //# sourceMappingURL=goat-BCFeW4zk.js.map
465
+ //# sourceMappingURL=goat-CNpA_tT8.js.map
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import { S as safeJsonStringify, c as logger } from "./logger-DNHkR_3S.js";
3
- import { K as VERSION, b as sleep, r as fetchWithProxy } from "./fetch-BBa1Lxgp.js";
3
+ import { K as VERSION, b as sleep, r as fetchWithProxy } from "./fetch-B1Rb0VdL.js";
4
4
  import { t as invariant } from "./invariant-BtWWVVhl.js";
5
- import { l as isLoggedIntoCloud, s as getUserEmail } from "./accounts-DbmMSaOW.js";
6
- import { Y as getNunjucksEngine } from "./util-DHG9r5sC.js";
7
- import { r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-BlwssRVS.js";
5
+ import { l as isLoggedIntoCloud, s as getUserEmail } from "./accounts-C06-4dXo.js";
6
+ import { Y as getNunjucksEngine } from "./util-CcW4TZSn.js";
7
+ import { r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-CW6zHjQx.js";
8
8
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-kXKUpxyr.js";
9
- import { a as extractPromptFromTags, o as getSessionId, r as extractInputVarsFromPrompt } from "./util-16aq4oHW.js";
10
- import { a as assertRemoteMaterializationHandled, c as isRemoteMaterializationUpgradeError, s as buildRemoteMaterializedInputVariables } from "./promptfoo-DdsPYNm7.js";
11
- import { o as getGraderAssertionValue, p as tryUnblocking, s as getLastMessageContent, t as buildGraderResultAssertion } from "./shared-BavzGCp0.js";
9
+ import { a as extractPromptFromTags, o as getSessionId, r as extractInputVarsFromPrompt } from "./util-CD4LxH5h.js";
10
+ import { a as assertRemoteMaterializationHandled, c as isRemoteMaterializationUpgradeError, s as buildRemoteMaterializedInputVariables } from "./promptfoo-De6vQq9F.js";
11
+ import { o as getGraderAssertionValue, p as tryUnblocking, s as getLastMessageContent, t as buildGraderResultAssertion } from "./shared-C-G3NQ1-.js";
12
12
  import { i as throwIfTargetPromptExceedsMaxChars } from "./promptLength-DYfhyE9j.js";
13
- import { n as checkExfilTracking } from "./indirectWebPwn-A16xYmav.js";
14
- import { n as renderPrompt } from "./evaluatorHelpers-C6-aKnJe.js";
15
- import { t as Strategies } from "./strategies-DVDC487a.js";
16
- import { a as fetchTraceContext, i as extractTraceIdFromTraceparent, n as formatTraceForMetadata, r as formatTraceSummary, t as resolveTracingOptions } from "./tracingOptions-CZpFCwyr.js";
13
+ import { n as checkExfilTracking } from "./indirectWebPwn-BbFMiv79.js";
14
+ import { n as renderPrompt } from "./evaluatorHelpers-CoLW5rKU.js";
15
+ import { t as Strategies } from "./strategies-CaefFyHy.js";
16
+ import { a as fetchTraceContext, i as extractTraceIdFromTraceparent, n as formatTraceForMetadata, r as formatTraceSummary, t as resolveTracingOptions } from "./tracingOptions-e_c5TlHv.js";
17
17
  import { t as applyRuntimeTransforms } from "./runtimeTransform-DjKoaR8A.js";
18
18
  import { i as getGoalRubric } from "./prompts-Co6vCI4z.js";
19
19
  import chalk from "chalk";
@@ -80,7 +80,7 @@ var GoatProvider = class {
80
80
  let assertToUse;
81
81
  let graderPassed;
82
82
  let storedGraderResult;
83
- const { getGraderById } = await import("./graders-BZe_w0E4.js");
83
+ const { getGraderById } = await import("./graders-CA3QVnK3.js");
84
84
  let test;
85
85
  if (context?.test) {
86
86
  test = context?.test;
@@ -464,4 +464,4 @@ var GoatProvider = class {
464
464
  //#endregion
465
465
  export { GoatProvider as default };
466
466
 
467
- //# sourceMappingURL=goat-Dr2YGfiG.js.map
467
+ //# sourceMappingURL=goat-ZRARvAD5.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { n as getGraderById } from "./graders-CpUlNVnh.js";
3
+ export { getGraderById };
@@ -1,31 +1,31 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B_-DWIq7.js";
2
2
  import { A as isCI, C as state, D as getEnvString, b as safeJsonStringify, g as extractJsonObjects, h as extractFirstJsonObject, o as logger, w as getEnvBool } from "./logger-Dz3siSzF.js";
3
- import { E as getRequestTimeoutMs, r as fetchWithTimeout, t as fetchWithProxy, x as sleep } from "./fetch-BtdsABrj.js";
3
+ import { E as getRequestTimeoutMs, r as fetchWithTimeout, t as fetchWithProxy, x as sleep } from "./fetch-BErWGTUY.js";
4
4
  import { t as invariant } from "./invariant-vgHWClmd.js";
5
- import { s as getUserEmail } from "./accounts-ECb2xAYn.js";
5
+ import { s as getUserEmail } from "./accounts-BjCiVnil.js";
6
6
  import { r as importModule } from "./esm-DGM47-P2.js";
7
- import { A as maybeLoadConfigFromExternalFile, B as parseFileUrl, F as parsePathOrGlob, K as getNunjucksEngine, O as getNunjucksEngineForFilePath, P as maybeLoadToolsFromExternalFile, W as extractVariablesFromTemplate, j as maybeLoadFromExternalFile } from "./util-DJLHqGS5.js";
7
+ import { A as maybeLoadConfigFromExternalFile, B as parseFileUrl, F as parsePathOrGlob, K as getNunjucksEngine, O as getNunjucksEngineForFilePath, P as maybeLoadToolsFromExternalFile, W as extractVariablesFromTemplate, j as maybeLoadFromExternalFile } from "./util-Ci_vm5u1.js";
8
8
  import { n as sha256 } from "./createHash-BWWdtTvT.js";
9
- import { i as getCache, o as isCacheEnabled, r as fetchWithCache } from "./cache-Z4cklSHj.js";
9
+ import { i as getCache, o as isCacheEnabled, r as fetchWithCache } from "./cache-WT_2CYA-.js";
10
10
  import { S as PolicyObjectSchema, T as isValidReusablePolicyId, _t as PromptSchema, gt as CODING_AGENT_PLUGIN_DISPLAY_NAMES, ht as CODING_AGENT_PLUGIN_DESCRIPTIONS, j as MULTI_TURN_STRATEGIES, mt as CODING_AGENT_PLUGINS, p as isApiProvider, xt as buildInputPromptDescription } from "./types-13A1ySQW.js";
11
11
  import { o as isJavascriptFile } from "./shared-DdmcneC5.js";
12
12
  import { r as runPython } from "./pythonUtils-lzvSenw7.js";
13
- import { d as hasCodexDefaultCredentials, l as shouldGenerateRemote, r as getRemoteGenerationUrl, u as getCodexDefaultProviders } from "./remoteGeneration-DiAuGk9s.js";
13
+ import { d as hasCodexDefaultCredentials, l as shouldGenerateRemote, r as getRemoteGenerationUrl, u as getCodexDefaultProviders } from "./remoteGeneration-wvnQpzN1.js";
14
14
  import { i as PROMPT_DELIMITER, n as maybeFilePath, r as normalizeInput } from "./utils-Dk9qWRdP.js";
15
15
  import { r as accumulateTokenUsage } from "./tokenUsageUtils-DFcAf2Fd.js";
16
- import { d as getPoliciesFromCloud } from "./storage-D_qaZpfe.js";
17
- import { t as OpenAiChatCompletionProvider } from "./chat-BE0BP7oZ.js";
18
- import { T as hasGoogleDefaultCredentials } from "./transform-CLzSt5fi.js";
19
- import { t as AnthropicMessagesProvider } from "./messages-DxzhBs74.js";
20
- import { t as OpenAiResponsesProvider } from "./responses-CTfu1ToN.js";
21
- import { C as getGoogleAiStudioProviders, E as AzureChatCompletionProvider, T as AzureEmbeddingProvider, _ as MistralChatCompletionProvider, b as getGoogleVertexEmbeddingProvider, c as parseScriptParts, g as OpenAiModerationProvider, h as createXAIProvider, m as XAIResponsesProvider, n as loadApiProvider, s as getFileHashes, v as MistralEmbeddingProvider, w as AzureModerationProvider, x as getGoogleVertexProviders } from "./providers-BnjFZtaq.js";
22
- import { t as OpenAiEmbeddingProvider } from "./embedding-LplgjBJ0.js";
16
+ import { d as getPoliciesFromCloud } from "./storage-CK2YYGUg.js";
17
+ import { t as OpenAiChatCompletionProvider } from "./chat-FNWhaysj.js";
18
+ import { P as isMcpToolNameFilter, T as hasGoogleDefaultCredentials } from "./transform-D8kXC-nB.js";
19
+ import { t as AnthropicMessagesProvider } from "./messages-aXox3d04.js";
20
+ import { t as OpenAiResponsesProvider } from "./responses-JNrMb3zS.js";
21
+ import { C as getGoogleAiStudioProviders, E as AzureChatCompletionProvider, T as AzureEmbeddingProvider, _ as MistralChatCompletionProvider, b as getGoogleVertexEmbeddingProvider, c as parseScriptParts, g as OpenAiModerationProvider, h as createXAIProvider, m as XAIResponsesProvider, n as loadApiProvider, s as getFileHashes, v as MistralEmbeddingProvider, w as AzureModerationProvider, x as getGoogleVertexProviders } from "./providers-gntyGa2T.js";
22
+ import { t as OpenAiEmbeddingProvider } from "./embedding-Dy2o5RFQ.js";
23
23
  import { r as materializeInputVariablesWithMetadata } from "./inputVariables-BqNKeMvJ.js";
24
- import { a as extractPromptFromTags, c as isBasicRefusal, i as extractMaterializedVariablesFromJsonWithMetadata, l as isEmptyResponse, n as extractGoalFromPrompt, r as extractInputVarsFromPrompt, s as getShortPluginId, t as extractAllPromptsFromTags, u as removePrefix } from "./util-BIYgspDB.js";
25
- import { _ as isRateLimitWrapped, f as redteamProviderManager, g as createProviderRateLimitOptions } from "./shared-D_0FXjLS.js";
24
+ import { a as extractPromptFromTags, c as isBasicRefusal, i as extractMaterializedVariablesFromJsonWithMetadata, l as isEmptyResponse, n as extractGoalFromPrompt, r as extractInputVarsFromPrompt, s as getShortPluginId, t as extractAllPromptsFromTags, u as removePrefix } from "./util-CKQ_tuWG.js";
25
+ import { _ as isRateLimitWrapped, f as redteamProviderManager, g as createProviderRateLimitOptions } from "./shared-CnrYC0Dk.js";
26
26
  import { n as getGeneratedPromptOverLimit, r as getMaxCharsPerMessageModifierValue, t as MAX_CHARS_PER_MESSAGE_MODIFIER_KEY } from "./promptLength-Bx76P6F9.js";
27
27
  import { t as REDTEAM_MEMORY_POISONING_PLUGIN_ID } from "./constants-BjJV0cRr.js";
28
- import { n as checkExfilTracking } from "./indirectWebPwn-BWGexuih.js";
28
+ import { n as checkExfilTracking } from "./indirectWebPwn-C779yDi6.js";
29
29
  import * as fs$2 from "fs";
30
30
  import fs from "fs";
31
31
  import path from "path";
@@ -2453,7 +2453,7 @@ var RedteamGraderBase = class {
2453
2453
  goal: test.metadata?.goal || prompt,
2454
2454
  prompt,
2455
2455
  entities: test.metadata?.entities ?? [],
2456
- tools: provider?.config?.tools ? await maybeLoadToolsFromExternalFile(provider.config.tools) : void 0,
2456
+ tools: provider?.config?.tools && !isMcpToolNameFilter(provider.config.tools) ? await maybeLoadToolsFromExternalFile(provider.config.tools) : void 0,
2457
2457
  testVars: test.vars ?? {},
2458
2458
  ...gradingContext || {},
2459
2459
  ...typeof renderedValue === "object" && renderedValue !== null ? renderedValue : {},
@@ -16205,4 +16205,4 @@ function getGraderById(id) {
16205
16205
  //#endregion
16206
16206
  export { CONTEXT_FAITHFULNESS_LONGFORM as $, DivergentRepetitionPlugin as A, matchesFactuality as B, getPiiLeakTestsForCategory as C, withProviderCallExecutionContext as Ct, HarmbenchPlugin as D, getDefaultProviders as Dt, ImitationPlugin as E, sampleArray as Et, AegisPlugin as F, doRemoteGrading as G, matchesLlmRubric as H, RedteamPluginBase as I, readProviderPromptMap as J, processPrompts as K, fetchHuggingFaceDataset as L, CrossSessionLeakPlugin as M, ContractPlugin as N, HallucinationPlugin as O, DEFAULT_ANTHROPIC_MODEL as Ot, BeavertailsPlugin as P, ANSWER_RELEVANCY_GENERATE as Q, isGraderFailure as R, PlinyPlugin as S, getProviderCallExecutionContext as St, IntentPlugin as T, retryWithDeduplication as Tt, matchesPiScore as U, matchesGEval as V, matchesTrajectoryGoalSuccess as W, SELECT_BEST_PROMPT as X, DEFAULT_WEB_SEARCH_PROMPT as Y, SUGGEST_PROMPTS_SYSTEM_MESSAGE as Z, PoliticsPlugin as _, loadFromJavaScriptFile as _t, UnverifiableClaimsPlugin as a, CONTEXT_RELEVANCE_BAD as at, isValidPolicyObject as b, getAndCheckProvider as bt, ToolDiscoveryPlugin as c, cosineSimilarity as ct, TeenSafetyDangerousContentPlugin as d, fail as dt, CONTEXT_FAITHFULNESS_NLI_STATEMENTS as et, TeenSafetyAgeRestrictedGoodsAndServicesPlugin as f, normalizeMatcherTokenUsage as ft, PromptExtractionPlugin as g, getFinalTest as gt, RbacPlugin as h, coerceString as ht, VLGuardPlugin as i, CONTEXT_RELEVANCE as it, DebugAccessPlugin as j, ExcessiveAgencyPlugin as k, TeenSafetyHarmfulBodyIdealsPlugin as l, dotProduct as lt, ShellInjectionPlugin as m, tryParse as mt, graders_exports as n, CONTEXT_RECALL_ATTRIBUTED_TOKEN as nt, UnsafeBenchPlugin as o, loadRubricPrompt as ot, SqlInjectionPlugin as p, splitIntoSentences as pt, readPrompts as q, VLSUPlugin as r, CONTEXT_RECALL_NOT_ATTRIBUTED_TOKEN as rt, ToxicChatPlugin as s, renderLlmRubricPrompt as st, getGraderById as t, CONTEXT_RECALL as tt, TeenSafetyDangerousRoleplayPlugin as u, euclideanDistance as ut, PolicyPlugin as v, processFileReference as vt, OverreliancePlugin as w, getCustomPolicies as wt, makeInlinePolicyIdSync as x, getGradingProvider as xt, determinePolicyTypeFromId as y, callProviderWithContext as yt, matchesClosedQa as z };
16207
16207
 
16208
- //# sourceMappingURL=graders-BrLOEmxX.js.map
16208
+ //# sourceMappingURL=graders-CO5drf0x.js.map