promptfoo 0.121.4 → 0.121.7

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 (497) hide show
  1. package/dist/src/{ListApp-DQkFNqE9.js → ListApp-DLmM02JS.js} +1 -1
  2. package/dist/src/{accounts-DhMYUUbu.js → accounts-Ca7WIoPY.js} +12 -7
  3. package/dist/src/{accounts-F9d_5sMC.js → accounts-CjFnOPmb.js} +14 -9
  4. package/dist/src/{accounts-Dy17bs4D.cjs → accounts-CmWzeD2d.cjs} +16 -10
  5. package/dist/src/{accounts-DdJ2pHMI.js → accounts-DanM1wq_.js} +13 -8
  6. package/dist/src/{agentic-utils-qFlm6zes.js → agentic-utils-CJ0j3fBi.js} +3 -3
  7. package/dist/src/{agentic-utils-w68v6_Dz.js → agentic-utils-DDEGRV9v.js} +3 -3
  8. package/dist/src/{agentic-utils-BpX5b23w.cjs → agentic-utils-DvPWSUpb.cjs} +8 -7
  9. package/dist/src/{agentic-utils-P172hM8B.js → agentic-utils-TxUEMPYS.js} +2 -2
  10. package/dist/src/{agents-BahDpe5G.cjs → agents-B4sRuXg3.cjs} +7 -6
  11. package/dist/src/{agents-pQeBEXMm.js → agents-B8q7h_ek.js} +5 -5
  12. package/dist/src/{agents-CgaMXvLM.js → agents-CBgJvRkB.js} +21 -10
  13. package/dist/src/{agents-C-R_jfzI.js → agents-CYn2n3QP.js} +4 -4
  14. package/dist/src/{agents-8FDnTriG.js → agents-D-vDNFx4.js} +21 -10
  15. package/dist/src/{agents-aYPQLf8W.js → agents-LrHuQqr1.js} +20 -9
  16. package/dist/src/{agents-DJ35I3Nt.js → agents-QGg76OF-.js} +5 -5
  17. package/dist/src/{agents-D7-HGxUj.cjs → agents-eHZ9nlgA.cjs} +21 -10
  18. package/dist/src/{aimlapi-sgYnkE54.js → aimlapi-CJEbQ0o6.js} +7 -7
  19. package/dist/src/{aimlapi-BD6J9oKt.js → aimlapi-D5HXzZ0s.js} +6 -6
  20. package/dist/src/{aimlapi-qcK4OT55.cjs → aimlapi-T6HGNxNe.cjs} +7 -7
  21. package/dist/src/{aimlapi-BCq3MHeL.js → aimlapi-eYv3a_DK.js} +7 -7
  22. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
  23. package/dist/src/app/assets/Report-BNHJKN35.js +1 -0
  24. package/dist/src/app/assets/index-BnT6P6sF.js +388 -0
  25. package/dist/src/app/assets/index-yhM8y1PP.css +1 -0
  26. package/dist/src/app/assets/{scroll-timeline-D9IT_e8Z.js → scroll-timeline-RpeTwOvs.js} +1 -1
  27. package/dist/src/app/assets/sync-5gq6fmG4.js +4 -0
  28. package/dist/src/app/assets/vendor-charts-BL9OMNU7.js +36 -0
  29. package/dist/src/app/assets/{vendor-markdown-Ch00wnNI.js → vendor-markdown-BYsQqn7Z.js} +10 -10
  30. package/dist/src/app/assets/{vendor-react-CVvmk1UB.js → vendor-react-CqWgVW6T.js} +2 -2
  31. package/dist/src/app/assets/{vendor-utils-BnEYbx2Q.js → vendor-utils-BHPO71pu.js} +1 -1
  32. package/dist/src/app/index.html +31 -6
  33. package/dist/src/{audio-COrn8rM6.js → audio-BqnRvcWG.js} +3 -3
  34. package/dist/src/{audio-DcVKoInv.js → audio-CPMtV1yR.js} +4 -4
  35. package/dist/src/{audio-B7izf48x.js → audio-DyiebVB3.js} +4 -4
  36. package/dist/src/{audio-BQtNuYBj.cjs → audio-FnxbEnSE.cjs} +4 -4
  37. package/dist/src/authoritativeMarkupInjection-BZIywVjG.js +74 -0
  38. package/dist/src/authoritativeMarkupInjection-DyAXAsSr.js +75 -0
  39. package/dist/src/authoritativeMarkupInjection-F2gBw0lN.cjs +74 -0
  40. package/dist/src/authoritativeMarkupInjection-QEQmFS83.js +74 -0
  41. package/dist/src/{base-PYJvBE1i.js → base-CKLo890h.js} +4 -3
  42. package/dist/src/{base-fZ9wgg50.js → base-Co80MMCi.js} +5 -4
  43. package/dist/src/{base-D-670DX8.cjs → base-DGJW48uz.cjs} +5 -4
  44. package/dist/src/{base-yrI1Yal4.js → base-E9I8zXjz.js} +5 -4
  45. package/dist/src/bestOfN-B3wNzjSB.js +137 -0
  46. package/dist/src/bestOfN-BBsO41z4.js +136 -0
  47. package/dist/src/bestOfN-CAwmg5UL.cjs +140 -0
  48. package/dist/src/bestOfN-_kTi8Bxe.js +136 -0
  49. package/dist/src/{blobs-D2FAd1Q5.cjs → blobs-B0977K1O.cjs} +7 -6
  50. package/dist/src/{blobs-BCZavS8s.js → blobs-CeFdPn_T.js} +3 -3
  51. package/dist/src/{blobs-BQWqnnvL.js → blobs-DODuTK-a.js} +3 -3
  52. package/dist/src/{blobs-C-F78Kfn.js → blobs-Dwef1Ao1.js} +2 -2
  53. package/dist/src/{cache-BIyPcp5v.cjs → cache-CPGUA4Yl.cjs} +135 -25
  54. package/dist/src/cache-Cf7b4pWE.js +3 -0
  55. package/dist/src/{cache-D5NZmMiT.js → cache-DIXbtkNO.js} +125 -10
  56. package/dist/src/{cache-mb7c8hbp.js → cache-DpPWrkTE.js} +128 -12
  57. package/dist/src/{cache-C4Xb-hNb.js → cache-roFAE0cI.js} +126 -11
  58. package/dist/src/{chat-I9izLm49.js → chat-CUCorGiL.js} +12 -12
  59. package/dist/src/{chat-BPXSW8Bv.cjs → chat-DG1wG4w0.cjs} +6 -6
  60. package/dist/src/{chat-BfPaS15_.js → chat-Dabu84Br.js} +12 -12
  61. package/dist/src/{chat-Dr3DUQ0D.js → chat-DqUFcWI0.js} +12 -12
  62. package/dist/src/{chat-CclRbxGf.cjs → chat-DxTDQ83C.cjs} +14 -13
  63. package/dist/src/{chat-MKxMnZJZ.js → chat-GmlolEwo.js} +4 -4
  64. package/dist/src/{chat-0bwXjVP0.js → chat-TP8Qifkh.js} +6 -6
  65. package/dist/src/{chat-mW0ORo8G.js → chat-iwaM5UTQ.js} +6 -6
  66. package/dist/src/{chatkit-zUIVoDos.js → chatkit-B6DWi70Q.js} +4 -4
  67. package/dist/src/{chatkit-BoWoSgXl.cjs → chatkit-BYveR48_.cjs} +6 -5
  68. package/dist/src/{chatkit-Cv6AhukM.js → chatkit-fARZwEfV.js} +3 -3
  69. package/dist/src/{chatkit-CJnHRRMM.js → chatkit-lb6FK02w.js} +4 -4
  70. package/dist/src/{claude-agent-sdk-Dtq_L-Sc.js → claude-agent-sdk-BQNp_y-F.js} +212 -67
  71. package/dist/src/{claude-agent-sdk-BQNuLaAK.js → claude-agent-sdk-D5Jl0SDh.js} +212 -67
  72. package/dist/src/{claude-agent-sdk-CPJo3dBQ.cjs → claude-agent-sdk-DH416NBD.cjs} +218 -72
  73. package/dist/src/{claude-agent-sdk-nfAIcxNf.js → claude-agent-sdk-x1XJ1-pU.js} +212 -67
  74. package/dist/src/{cloud-DQZ5sVjW.js → cloud-D3DiFqH6.js} +3 -3
  75. package/dist/src/cloud-p96PA4MH.js +3 -0
  76. package/dist/src/{cloudflare-ai-BIB567w6.js → cloudflare-ai-B6NVI3ax.js} +4 -4
  77. package/dist/src/{cloudflare-ai-Dl3N9OVD.cjs → cloudflare-ai-CEAW-xQa.cjs} +6 -6
  78. package/dist/src/{cloudflare-ai-DlKr0rY7.js → cloudflare-ai-RFSojyXG.js} +6 -6
  79. package/dist/src/{cloudflare-ai-DGLte7Py.js → cloudflare-ai-r4tbYmWU.js} +6 -6
  80. package/dist/src/{cloudflare-gateway-CiIZHU0Q.js → cloudflare-gateway-BCkLouto.js} +5 -5
  81. package/dist/src/{cloudflare-gateway-DI1HNP5F.js → cloudflare-gateway-BaZ4insB.js} +3 -3
  82. package/dist/src/{cloudflare-gateway-BDZrYydE.js → cloudflare-gateway-CF-Vb-2Z.js} +5 -5
  83. package/dist/src/{cloudflare-gateway-BYDp495F.cjs → cloudflare-gateway-TJMLBj6I.cjs} +5 -5
  84. package/dist/src/codex-app-server-B8KHEiF4.js +1915 -0
  85. package/dist/src/codex-app-server-CnrLBCeA.cjs +1921 -0
  86. package/dist/src/codex-app-server-DIXZ230V.js +1915 -0
  87. package/dist/src/codex-app-server-Dd22dC_N.js +1916 -0
  88. package/dist/src/{codex-sdk-CpqiOqDO.js → codex-sdk-B6Wah8Pa.js} +6 -6
  89. package/dist/src/codex-sdk-BGjVAk23.js +3 -0
  90. package/dist/src/{codex-sdk-C2_M2pl_.cjs → codex-sdk-CFF6gUyi.cjs} +18 -10
  91. package/dist/src/{codex-sdk-Rtky3M4I.js → codex-sdk-CmQABzV3.js} +6 -6
  92. package/dist/src/{codex-sdk-CErXn7qh.js → codex-sdk-D2d54RL8.js} +5 -5
  93. package/dist/src/{cometapi-CtJ-mS8R.js → cometapi-Bu9B8NUY.js} +8 -8
  94. package/dist/src/{cometapi-DT-jlVCB.js → cometapi-CtzNCHKu.js} +7 -7
  95. package/dist/src/{cometapi-UVOryo4W.cjs → cometapi-DHCDlQUI.cjs} +8 -8
  96. package/dist/src/{cometapi-BUlt_ELa.js → cometapi-OBILPLlu.js} +8 -8
  97. package/dist/src/{completion-HUe8wDhZ.js → completion-CO2e1_62.js} +6 -6
  98. package/dist/src/{completion-BozdoXba.cjs → completion-CSYfl2cd.cjs} +6 -6
  99. package/dist/src/{completion-x0a_c2y1.js → completion-DZNxcyfG.js} +6 -6
  100. package/dist/src/{completion-Dnxn7E-j.js → completion-sNvCLTAP.js} +5 -5
  101. package/dist/src/constants-BjJV0cRr.js +6 -0
  102. package/dist/src/constants-DH5XYLKZ.js +7 -0
  103. package/dist/src/constants-DZGEFLsu.js +6 -0
  104. package/dist/src/constants-a2kYssQk.cjs +11 -0
  105. package/dist/src/{createHash-4gFQpDDv.js → createHash-BtbSX3mj.js} +1 -1
  106. package/dist/src/{createHash-CwDVU5xr.js → createHash-CGVzWdjj.js} +1 -1
  107. package/dist/src/{createHash-B7KvgoOD.cjs → createHash-CSiqnK5P.cjs} +2 -2
  108. package/dist/src/{createHash-ChI45QR1.js → createHash-CgRvs4Fn.js} +1 -1
  109. package/dist/src/crescendo-BXEJK_bi.cjs +704 -0
  110. package/dist/src/crescendo-CU_Y2i-m.js +702 -0
  111. package/dist/src/crescendo-J1Xx4_zb.js +703 -0
  112. package/dist/src/crescendo-QiaSLW0d.js +701 -0
  113. package/dist/src/custom-BJfP00Bh.js +619 -0
  114. package/dist/src/custom-CZVn-1-r.js +620 -0
  115. package/dist/src/custom-Cqia7M0D.cjs +621 -0
  116. package/dist/src/custom-notggYVl.js +618 -0
  117. package/dist/src/{docker-DCgsveLD.js → docker-4D1eL6Gq.js} +6 -6
  118. package/dist/src/{docker-ClnmCf1Z.js → docker-BBv1WUDu.js} +5 -5
  119. package/dist/src/{docker-DS4_Osau.cjs → docker-D06JUoe2.cjs} +6 -6
  120. package/dist/src/{docker-CQmlA2NU.js → docker-DdJQBxK9.js} +6 -6
  121. package/dist/src/{embedding-D3xTseo7.js → embedding--UZVe4_7.js} +6 -6
  122. package/dist/src/{embedding-I45KG3o7.cjs → embedding-BbrwopfX.cjs} +6 -6
  123. package/dist/src/{embedding-nFbumxcv.js → embedding-Bi3rxrZF.js} +5 -5
  124. package/dist/src/{embedding-DD9wa3ae.js → embedding-C251p1-8.js} +6 -6
  125. package/dist/src/{errors-Cw810C93.js → errors-9PcUL8BC.js} +1 -1
  126. package/dist/src/{esm-Dh4dOLlt.js → esm-B6whoAcf.js} +2 -2
  127. package/dist/src/{esm-CtEPLdAj.cjs → esm-BIKakvNa.cjs} +8 -7
  128. package/dist/src/{esm-C7PnfdF8.js → esm-BTK1W7lG.js} +1 -1
  129. package/dist/src/{esm-tVgYPY-f.js → esm-Bexx2PFc.js} +2 -2
  130. package/dist/src/{eval-u4UVafl6.js → eval-0VRANImH.js} +21 -21
  131. package/dist/src/{eval-CzJFfFO9.js → eval-DscR5iOM.js} +1 -1
  132. package/dist/src/{evalResult-Bgm9ZH31.js → evalResult-2RRJvFyB.js} +41 -16
  133. package/dist/src/{evalResult-KZqXl4XP.cjs → evalResult-CvtS8h8u.cjs} +51 -15
  134. package/dist/src/evalResult-DqzsS6_W.js +3 -0
  135. package/dist/src/{evalResult-D3hVYFis.js → evalResult-eUkJv9Ko.js} +40 -15
  136. package/dist/src/evaluator-DNdJF1Gv.js +3 -0
  137. package/dist/src/{evaluator-IvuDYSvQ.js → evaluator-DRoiYB2q.js} +1060 -187
  138. package/dist/src/evaluatorHelpers-BsYP_muT.js +511 -0
  139. package/dist/src/evaluatorHelpers-CRqTvSux.cjs +537 -0
  140. package/dist/src/evaluatorHelpers-DuqFFfq7.js +510 -0
  141. package/dist/src/{extractor-CAfTSraf.js → extractor-BR7XAzAL.js} +6 -6
  142. package/dist/src/{extractor-WVPOrH43.cjs → extractor-BdxEtt3J.cjs} +6 -6
  143. package/dist/src/{extractor-DNSeBVOJ.js → extractor-CIW3iN-b.js} +6 -6
  144. package/dist/src/{extractor-Dk6bRWkv.js → extractor-CxRtnaHl.js} +5 -5
  145. package/dist/src/{fetch-B0Z3Oe4k.js → fetch-BufrQtvR.js} +93 -40
  146. package/dist/src/{fetch-BEWnXrrG.js → fetch-DXUnXkVU.js} +89 -40
  147. package/dist/src/{fetch-CJU5ELPa.cjs → fetch-Dw4XZHjj.cjs} +330 -270
  148. package/dist/src/{fetch-Di00EQrc.js → fetch-It34O8Ur.js} +305 -252
  149. package/dist/src/fetch-_YgGd2qv.js +3 -0
  150. package/dist/src/{fileExtensions-bYh77CN8.cjs → fileExtensions-BhdwzYaD.cjs} +24 -1
  151. package/dist/src/{fileExtensions-DnqA1y9x.js → fileExtensions-CXRfY3Ss.js} +12 -2
  152. package/dist/src/{fileExtensions-AWa2ZML4.js → fileExtensions-D4GCJ67J.js} +12 -2
  153. package/dist/src/{formatDuration-DZzPsexs.js → formatDuration-CMVNrYvE.js} +1 -1
  154. package/dist/src/{genaiTracer-yRuxj9-L.cjs → genaiTracer-14nugQQx.cjs} +14 -2
  155. package/dist/src/{genaiTracer-DWdZ28hY.js → genaiTracer-BPVvltoW.js} +2 -2
  156. package/dist/src/{genaiTracer-XnrcgDCe.js → genaiTracer-D18lYzhB.js} +2 -2
  157. package/dist/src/{genaiTracer-COYDi-tC.js → genaiTracer-jJKYsnjc.js} +2 -2
  158. package/dist/src/goat-Ckd3q3AY.js +467 -0
  159. package/dist/src/goat-Qgurm-NP.js +466 -0
  160. package/dist/src/goat-ghadEDdy.js +465 -0
  161. package/dist/src/goat-una6pZGP.cjs +469 -0
  162. package/dist/src/graders-BDT7dif6.js +3 -0
  163. package/dist/src/{graders-eIHhRqoC.js → graders-BGP99PdK.js} +2416 -2224
  164. package/dist/src/{graders-Zy3x0zqX.js → graders-BX0f2tvS.js} +2423 -2226
  165. package/dist/src/{graders-pvbReLLn.js → graders-C0nXU_ZP.js} +1806 -1609
  166. package/dist/src/{graders--zknU_uk.cjs → graders-ClrU2fnd.cjs} +2219 -1949
  167. package/dist/src/hydra-BSNZZm2M.js +543 -0
  168. package/dist/src/hydra-BxdG4nkg.js +541 -0
  169. package/dist/src/hydra-DE4xWwyc.js +542 -0
  170. package/dist/src/hydra-DrJttnvw.cjs +542 -0
  171. package/dist/src/image-B4oBtu6J.js +443 -0
  172. package/dist/src/{image-dnoUgPrC.js → image-BN-hjLL9.js} +4 -4
  173. package/dist/src/{image-9302QVqR.js → image-B_fPIwdg.js} +3 -3
  174. package/dist/src/image-BvUAW344.js +442 -0
  175. package/dist/src/image-Cvjwx1uY.js +442 -0
  176. package/dist/src/{image-De2FBmYV.cjs → image-DfVCGPbI.cjs} +4 -4
  177. package/dist/src/{image-u7-rKnYU.js → image-QzmydkiG.js} +4 -4
  178. package/dist/src/image-X0oY4350.cjs +465 -0
  179. package/dist/src/index.cjs +1689 -558
  180. package/dist/src/index.d.cts +3270 -1624
  181. package/dist/src/index.d.ts +3270 -1624
  182. package/dist/src/index.js +1553 -438
  183. package/dist/src/indirectWebPwn-02ZIghCS.js +259 -0
  184. package/dist/src/indirectWebPwn-BJ22AbQa.cjs +397 -0
  185. package/dist/src/indirectWebPwn-CbjUG0rh.js +385 -0
  186. package/dist/src/indirectWebPwn-CfQJt3gk.cjs +260 -0
  187. package/dist/src/indirectWebPwn-DBQhOjoD.js +260 -0
  188. package/dist/src/indirectWebPwn-OsXnKejv.js +259 -0
  189. package/dist/src/indirectWebPwn-tNx9OZ35.js +385 -0
  190. package/dist/src/indirectWebPwn-uyWdHx04.js +386 -0
  191. package/dist/src/inputVariables-B0qUChbV.js +467 -0
  192. package/dist/src/inputVariables-DUGMb9Ka.js +464 -0
  193. package/dist/src/inputVariables-DXFdi7AI.js +468 -0
  194. package/dist/src/inputVariables-Dq9W-Z3a.cjs +475 -0
  195. package/dist/src/{interactiveCheck-CLERUB0c.js → interactiveCheck-C4QlIuoR.js} +2 -2
  196. package/dist/src/{invariant-BtWWVVhl.js → invariant-B2Rf6avk.js} +1 -1
  197. package/dist/src/{invariant-vgHWClmd.js → invariant-DIYf9sP1.js} +1 -1
  198. package/dist/src/{invariant-kfQ8Bu82.cjs → invariant-QtnLD03y.cjs} +1 -1
  199. package/dist/src/iterative-CpU6i2As.js +490 -0
  200. package/dist/src/iterative-DJQEQpG3.js +491 -0
  201. package/dist/src/iterative-DQBuWM-j.cjs +493 -0
  202. package/dist/src/iterative-FTS4Bz67.js +492 -0
  203. package/dist/src/iterativeImage-BUABMVOA.js +413 -0
  204. package/dist/src/iterativeImage-ByFWkxax.cjs +415 -0
  205. package/dist/src/iterativeImage-BzUapOUi.js +414 -0
  206. package/dist/src/iterativeImage-Doz8mgxF.js +413 -0
  207. package/dist/src/iterativeMeta-B3YiAOc8.js +386 -0
  208. package/dist/src/iterativeMeta-C7APE_P1.js +385 -0
  209. package/dist/src/iterativeMeta-CSS8M6Ds.cjs +385 -0
  210. package/dist/src/iterativeMeta-DgoQ7bLh.js +384 -0
  211. package/dist/src/iterativeTree-B5zxBBSW.js +769 -0
  212. package/dist/src/iterativeTree-CNyIk0Yn.js +768 -0
  213. package/dist/src/iterativeTree-CPMF10ve.cjs +771 -0
  214. package/dist/src/iterativeTree-DvZ7GBwt.js +770 -0
  215. package/dist/src/{knowledgeBase-Dgc7CBWF.js → knowledgeBase-BadkINlJ.js} +24 -10
  216. package/dist/src/{knowledgeBase-RhFPGWDc.js → knowledgeBase-Bi_8sV-H.js} +25 -11
  217. package/dist/src/{knowledgeBase-lm9RXSAm.js → knowledgeBase-CkMljjdg.js} +25 -11
  218. package/dist/src/{knowledgeBase-Bpoe_nLu.cjs → knowledgeBase-DUh34xba.cjs} +25 -11
  219. package/dist/src/{litellm-DRjpcSa7.js → litellm-BKBo0jpC.js} +5 -5
  220. package/dist/src/{litellm-C2kqjxqp.js → litellm-BXyn5kZK.js} +5 -5
  221. package/dist/src/{litellm-p37R1dzQ.js → litellm-CNcfbCfa.js} +4 -4
  222. package/dist/src/{litellm-CoyI4IAl.cjs → litellm-CtAr7bKG.cjs} +5 -5
  223. package/dist/src/{logger-DksKw1Qc.js → logger-BbY6ypFL.js} +2 -2
  224. package/dist/src/{logger-B88EkIn6.js → logger-KD8JjCRJ.js} +2 -2
  225. package/dist/src/{logger-COuQb2xB.cjs → logger-cfNpzI4o.cjs} +13 -55
  226. package/dist/src/{luma-ray-KgTCXrZC.js → luma-ray-BMX1iEB6.js} +5 -5
  227. package/dist/src/{luma-ray-B863CmuZ.js → luma-ray-CR5TSpp4.js} +5 -5
  228. package/dist/src/{luma-ray-BxVKaW2a.cjs → luma-ray-D3FUc2K3.cjs} +9 -8
  229. package/dist/src/{luma-ray-BTTLtqQ8.js → luma-ray-OEMmS1RB.js} +6 -6
  230. package/dist/src/main.js +909 -369
  231. package/dist/src/memoryPoisoning-CM83NWYl.js +107 -0
  232. package/dist/src/memoryPoisoning-D8h9gXJF.js +106 -0
  233. package/dist/src/memoryPoisoning-Dp-btinn.cjs +106 -0
  234. package/dist/src/memoryPoisoning-cLuCoTuJ.js +106 -0
  235. package/dist/src/{messages-BTQz42fn.js → messages-BabO-cX8.js} +273 -17
  236. package/dist/src/{messages-811uVVW5.cjs → messages-DBPir0TQ.cjs} +278 -18
  237. package/dist/src/{messages-zWbkLLHz.js → messages-DGUlSNU7.js} +273 -17
  238. package/dist/src/{messages-MYTQ2TWp.js → messages-vsE_-Lv0.js} +273 -17
  239. package/dist/src/{meteor-DHdzY1Ss.js → meteor--TZYICTI.js} +2 -2
  240. package/dist/src/{meteor-Co1VQ1u5.cjs → meteor-CR226f7Z.cjs} +2 -2
  241. package/dist/src/{meteor-CU5UAE-H.js → meteor-Cl_yd7rJ.js} +2 -2
  242. package/dist/src/{meteor-DuAFv6gF.js → meteor-Dce-_zGQ.js} +1 -1
  243. package/dist/src/mischievousUser-0l8GD7Dp.js +46 -0
  244. package/dist/src/mischievousUser-BUOP9W5r.js +46 -0
  245. package/dist/src/mischievousUser-frFYKxu6.js +47 -0
  246. package/dist/src/mischievousUser-olGgHIVR.cjs +46 -0
  247. package/dist/src/{modelslab-Dk1JAtVo.cjs → modelslab-CNV5bMSk.cjs} +7 -7
  248. package/dist/src/{modelslab-D0erNWKe.js → modelslab-Cogmu4mG.js} +6 -6
  249. package/dist/src/{modelslab-DIq-6y7x.js → modelslab-Dzst7VTU.js} +6 -6
  250. package/dist/src/{modelslab-wu9yi5GE.js → modelslab-EyDczZ5A.js} +7 -7
  251. package/dist/src/{nova-reel-CCFRfeRb.js → nova-reel-BGPNBOMS.js} +6 -6
  252. package/dist/src/{nova-reel-DQrm74ng.js → nova-reel-B_5NKFu1.js} +5 -5
  253. package/dist/src/{nova-reel-gr11WG7f.js → nova-reel-C4eUJGse.js} +5 -5
  254. package/dist/src/{nova-reel-CrLXVKQf.cjs → nova-reel-CjJRxI1X.cjs} +9 -8
  255. package/dist/src/{nova-sonic-BYdp-QLs.js → nova-sonic-BNGmgfFz.js} +4 -4
  256. package/dist/src/{nova-sonic-TDgrlTk7.js → nova-sonic-ChPlh5na.js} +4 -4
  257. package/dist/src/{nova-sonic-B_ZXcUJB.js → nova-sonic-CrV0iaY_.js} +3 -3
  258. package/dist/src/{nova-sonic-i5tUvXKn.cjs → nova-sonic-DuOG9Aun.cjs} +5 -4
  259. package/dist/src/{openai-DhVEmgeZ.js → openai-BMHD2Huo.js} +2 -2
  260. package/dist/src/{openai-URNyItar.cjs → openai-C3uXv8wS.cjs} +2 -2
  261. package/dist/src/{openai-Qsvz25mV.js → openai-CJrsh9n4.js} +2 -2
  262. package/dist/src/{openai-iYtrXzOX.js → openai-zgwBb4Ff.js} +1 -1
  263. package/dist/src/{openclaw-CnQ363Wi.js → openclaw-BIHlu_36.js} +10 -8
  264. package/dist/src/{openclaw-CwzlQSQX.js → openclaw-CF7fMido.js} +9 -7
  265. package/dist/src/{openclaw-wX9rtfke.cjs → openclaw-Dphc01BY.cjs} +18 -15
  266. package/dist/src/{openclaw-CLWrW03k.js → openclaw-zIJAsz3P.js} +10 -8
  267. package/dist/src/{opencode-sdk-BUu5Nevv.js → opencode-sdk-B3vlPLsp.js} +40 -5
  268. package/dist/src/{opencode-sdk-BxD8vXp_.js → opencode-sdk-D05JSgMQ.js} +40 -5
  269. package/dist/src/{opencode-sdk-BZ2idgYA.cjs → opencode-sdk-DoY6GbWw.cjs} +46 -10
  270. package/dist/src/{opencode-sdk-GI2KaAXq.js → opencode-sdk-sRKYHGoI.js} +39 -4
  271. package/dist/src/{otlpReceiver-BntK801g.js → otlpReceiver--gTpSagc.js} +120 -4
  272. package/dist/src/{otlpReceiver-DmVulbhC.js → otlpReceiver-B2eaKC8C.js} +120 -4
  273. package/dist/src/{otlpReceiver-B2z58l4e.js → otlpReceiver-BXjcRqAM.js} +119 -3
  274. package/dist/src/{otlpReceiver-BfcVq2Nq.cjs → otlpReceiver-CvJdBGSc.cjs} +125 -7
  275. package/dist/src/packageParser--MWTSrPW.js +36 -0
  276. package/dist/src/packageParser-CgE-ziRo.js +35 -0
  277. package/dist/src/packageParser-QoCS1FMl.cjs +54 -0
  278. package/dist/src/packageParser-hwwSGnAZ.js +35 -0
  279. package/dist/src/processShim-BBxt7LKO.js +95 -0
  280. package/dist/src/processShim-BcGzU8fY.js +94 -0
  281. package/dist/src/processShim-C_z3aRvF.js +94 -0
  282. package/dist/src/processShim-DSY9BV2T.cjs +98 -0
  283. package/dist/src/promptLength-0qIHyhA5.js +71 -0
  284. package/dist/src/promptLength-4X-Wd8PG.js +72 -0
  285. package/dist/src/promptLength-B9nZEfO6.js +71 -0
  286. package/dist/src/promptLength-BbBbDHNj.cjs +94 -0
  287. package/dist/src/promptfoo-BDrfT30-.js +180 -0
  288. package/dist/src/promptfoo-Cm4hiy1Y.js +180 -0
  289. package/dist/src/promptfoo-Rjp-MeBb.js +181 -0
  290. package/dist/src/promptfoo-b-baRMj-.cjs +205 -0
  291. package/dist/src/prompts-BYMtqPCw.js +259 -0
  292. package/dist/src/prompts-C-bqE1Yp.js +260 -0
  293. package/dist/src/prompts-Cp_Qx5Ml.js +270 -0
  294. package/dist/src/prompts-DHhQsANy.js +259 -0
  295. package/dist/src/prompts-D_QpZ2Dm.js +271 -0
  296. package/dist/src/prompts-hNvWBD3z.cjs +284 -0
  297. package/dist/src/prompts-huDVH2CI.js +270 -0
  298. package/dist/src/prompts-p78Hul5i.cjs +289 -0
  299. package/dist/src/{providerRegistry-CPQ_CmVO.js → providerRegistry-1gB5vtzQ.js} +2 -2
  300. package/dist/src/{providerRegistry-CQMdTmHP.cjs → providerRegistry-CZO_w7ue.cjs} +2 -2
  301. package/dist/src/{providerRegistry-Bvh8mv85.js → providerRegistry-DHcFiVWX.js} +1 -1
  302. package/dist/src/{providerRegistry-CWoPjKFZ.js → providerRegistry-ReCd0sFa.js} +2 -2
  303. package/dist/src/{providers-BV_KMZje.js → providers-B9KzWxAX.js} +10558 -21587
  304. package/dist/src/{providers-DruaQfwu.js → providers-BCCz6_IX.js} +1228 -12196
  305. package/dist/src/{providers-1eKkXBKp.cjs → providers-BDVVIQM6.cjs} +10649 -21843
  306. package/dist/src/{providers-iUt5fbAN.js → providers-BYAn82cf.js} +1 -1
  307. package/dist/src/{providers-Domz_llv.js → providers-DVYRZP4E.js} +10589 -21570
  308. package/dist/src/{pythonUtils-Cldx7huE.js → pythonUtils-CLCgQ9tt.js} +3 -3
  309. package/dist/src/{pythonUtils-CnndUbW-.js → pythonUtils-CgYxeSmO.js} +3 -3
  310. package/dist/src/{pythonUtils-tAJvvpS-.cjs → pythonUtils-Cokhluq3.cjs} +8 -7
  311. package/dist/src/{pythonUtils-C2UQ30Rz.js → pythonUtils-D0BYebvX.js} +3 -3
  312. package/dist/src/{quiverai-DFotyafY.cjs → quiverai-BAp6iTZD.cjs} +4 -4
  313. package/dist/src/{quiverai-aPPvXOgn.js → quiverai-BvIhI_0l.js} +4 -4
  314. package/dist/src/{quiverai-DR0SnIQV.js → quiverai-CdTWPe-A.js} +3 -3
  315. package/dist/src/{quiverai-CtWi6x_g.js → quiverai-Cv7rJKDz.js} +4 -4
  316. package/dist/src/registry-BUJrgjwv.js +124 -0
  317. package/dist/src/registry-DXm1t_x0.js +125 -0
  318. package/dist/src/registry-Dp5EqoXc.js +124 -0
  319. package/dist/src/registry-KCVF1CFC.cjs +124 -0
  320. package/dist/src/{server-D6Il2Sob.js → remoteGeneration-B1_XsKXU.js} +16 -108
  321. package/dist/src/{server-BSB45Nt9.js → remoteGeneration-COpWcmWd.js} +15 -146
  322. package/dist/src/{server-Dx2TyCH2.cjs → remoteGeneration-DS9N3pgB.cjs} +30 -119
  323. package/dist/src/remoteGeneration-DsaSwmG2.js +217 -0
  324. package/dist/src/render-BNTrbmBw.cjs +384 -0
  325. package/dist/src/render-CSP99NLm.js +348 -0
  326. package/dist/src/render-DFfDeYUK.js +347 -0
  327. package/dist/src/{render-CgVDrJmM.js → render-DznWrxGO.js} +2 -2
  328. package/dist/src/render-_6ur1fhE.js +347 -0
  329. package/dist/src/resourceAttributes-D1jP3kL5.js +17 -0
  330. package/dist/src/resourceAttributes-DQbBB--2.js +16 -0
  331. package/dist/src/resourceAttributes-ephgOvdR.cjs +27 -0
  332. package/dist/src/resourceAttributes-v6-I67fn.js +16 -0
  333. package/dist/src/{responses-Bi9vBuW_.cjs → responses-1UFFF9N_.cjs} +51 -16
  334. package/dist/src/{responses-DL9m8CyY.js → responses-B3W2JvOQ.js} +49 -15
  335. package/dist/src/{responses--OsX2aYW.js → responses-B6ktc3Ra.js} +49 -15
  336. package/dist/src/{responses-C-flexAY.js → responses-URRzV8qE.js} +49 -15
  337. package/dist/src/rolldown-runtime-D_mwlA32.cjs +43 -0
  338. package/dist/src/rubyUtils-BYVlQ94c.js +3 -0
  339. package/dist/src/{rubyUtils-DsGrTx8R.js → rubyUtils-CXlFM2rR.js} +3 -3
  340. package/dist/src/{rubyUtils-DVLeA2jg.js → rubyUtils-CnlW8AYb.js} +3 -3
  341. package/dist/src/{rubyUtils-B6eljPuh.cjs → rubyUtils-CqUWBZAt.cjs} +18 -27
  342. package/dist/src/{rubyUtils-CYSQEG4a.js → rubyUtils-DdGojpfv.js} +3 -3
  343. package/dist/src/runtimeTransform-BJOpL9Yc.js +142 -0
  344. package/dist/src/runtimeTransform-Dgh_D7DU.js +143 -0
  345. package/dist/src/runtimeTransform-DigbjU1r.js +142 -0
  346. package/dist/src/runtimeTransform-ON3YYILw.cjs +147 -0
  347. package/dist/src/{sagemaker-BVkaG2-l.js → sagemaker-CujrzP1a.js} +62 -51
  348. package/dist/src/{sagemaker-XnfhheQv.cjs → sagemaker-DzffAqo_.cjs} +65 -53
  349. package/dist/src/{sagemaker-D67yzMzs.js → sagemaker-vhtSV7JI.js} +62 -51
  350. package/dist/src/{sagemaker-BveBvuxm.js → sagemaker-yr1QKeBs.js} +61 -50
  351. package/dist/src/{scanner-1DqWi1Ej.js → scanner-DS0109SS.js} +7 -7
  352. package/dist/src/server/index.js +5105 -605
  353. package/dist/src/server-B8rqV126.cjs +126 -0
  354. package/dist/src/server-BaLytskk.js +3 -0
  355. package/dist/src/server-CMJD10J4.js +107 -0
  356. package/dist/src/server-Ddp8GNMp.js +146 -0
  357. package/dist/src/server-DhMHosWj.js +182 -0
  358. package/dist/src/shared-7pmVZLNO.js +1334 -0
  359. package/dist/src/shared-9WHQ1oNE.js +1335 -0
  360. package/dist/src/{fileExtensions-BArZuxsI.js → shared-BoG7qLMv.js} +12 -2
  361. package/dist/src/shared-D6IjElRI.js +1334 -0
  362. package/dist/src/shared-WkgnDkcg.cjs +1436 -0
  363. package/dist/src/{signal-CE5G3a7x.js → signal-CSurUUyV.js} +3 -3
  364. package/dist/src/simulatedUser-C9aQObBI.js +222 -0
  365. package/dist/src/simulatedUser-Cu601Dd4.cjs +227 -0
  366. package/dist/src/simulatedUser-U_qAHnuB.js +222 -0
  367. package/dist/src/simulatedUser-p3tACcmw.js +223 -0
  368. package/dist/src/{slack-DDUe-5MC.js → slack-Bapo-7_8.js} +2 -2
  369. package/dist/src/{slack-1Rhq0EoV.cjs → slack-DMC1QVEg.cjs} +3 -2
  370. package/dist/src/{slack-D5Wpy8LM.js → slack-DTEFhrMn.js} +2 -2
  371. package/dist/src/{slack-acRb0IqQ.js → slack-k-_CP84Q.js} +1 -1
  372. package/dist/src/storage-BU4qcnOb.js +875 -0
  373. package/dist/src/storage-CA-v9V2v.cjs +911 -0
  374. package/dist/src/storage-CD-GWAdx.js +822 -0
  375. package/dist/src/storage-QdU-SmvD.js +834 -0
  376. package/dist/src/{store-DAAyxcy6.cjs → store-B2NDDooM.cjs} +60 -24
  377. package/dist/src/{store-CYEy5J2D.js → store-DKd5592Q.js} +51 -20
  378. package/dist/src/{store-M0b1WfYb.js → store-HpopRVzl.js} +50 -19
  379. package/dist/src/store-IbiRIF3k.js +3 -0
  380. package/dist/src/strategies-7CS3Alao.cjs +2360 -0
  381. package/dist/src/strategies-CiSeroPH.js +2331 -0
  382. package/dist/src/strategies-DRJjGTIY.js +2333 -0
  383. package/dist/src/{tables-DQ4WU5tX.js → tables-CRSXQ2Ke.js} +2 -2
  384. package/dist/src/{tables-CsWou1Bx.js → tables-CxjU7bBd.js} +3 -3
  385. package/dist/src/{tables-DUfh1F7Z.cjs → tables-DBIJU0WE.cjs} +6 -5
  386. package/dist/src/{tables-C4CH3zRr.js → tables-DafUHOeh.js} +3 -3
  387. package/dist/src/{telemetry-CQPez_Jp.js → telemetry-00ezXr_t.js} +5 -4
  388. package/dist/src/telemetry-ByPqDcKC.js +3 -0
  389. package/dist/src/{telemetry-Dsw_faFj.cjs → telemetry-CJ7FnCsc.cjs} +18 -11
  390. package/dist/src/{telemetry-dbaJ0E98.js → telemetry-DmXYcJNV.js} +5 -4
  391. package/dist/src/{telemetry-Dvqxv3YC.js → telemetry-DwX9XUN5.js} +4 -3
  392. package/dist/src/{text-KvuD2Iko.js → text-Db-Wt2u2.js} +1 -1
  393. package/dist/src/{text-DHxdyQqT.js → text-DwYK5EBn.js} +1 -1
  394. package/dist/src/{text-BVi-cLPJ.cjs → text-nywWsRBM.cjs} +1 -1
  395. package/dist/src/{tokenUsageUtils-C-bmyHoE.js → tokenUsageUtils-BjVkdk18.js} +1 -1
  396. package/dist/src/{tokenUsageUtils-CXrvO-wA.js → tokenUsageUtils-CDet74yk.js} +1 -1
  397. package/dist/src/tokenUsageUtils-CmnQ0G2m.js +142 -0
  398. package/dist/src/{tokenUsageUtils-Bb7DkZPz.cjs → tokenUsageUtils-_B-P8IAi.cjs} +1 -1
  399. package/dist/src/toolAttributes-BAjwcBf0.cjs +103 -0
  400. package/dist/src/toolAttributes-COVgDrBG.js +87 -0
  401. package/dist/src/toolAttributes-DJ9ZEKXD.js +86 -0
  402. package/dist/src/tracingOptions-BnwKCkSB.js +221 -0
  403. package/dist/src/tracingOptions-Chi74lOD.js +219 -0
  404. package/dist/src/tracingOptions-DrbSFaKy.cjs +249 -0
  405. package/dist/src/tracingOptions-ji2OuXbT.js +220 -0
  406. package/dist/src/{transcription-DuWDupG7.js → transcription-B8uIgCYX.js} +5 -5
  407. package/dist/src/{transcription-CJspiD2c.js → transcription-CfU5loSq.js} +6 -6
  408. package/dist/src/{transcription-V2HaAmy2.js → transcription-Dkd22_4K.js} +6 -6
  409. package/dist/src/{transcription-BvjmiYB1.cjs → transcription-mzuf18Mq.cjs} +9 -8
  410. package/dist/src/{transform-lQrDE1BQ.js → transform-BIMynQsA.js} +9 -9
  411. package/dist/src/transform-BnSTnFlp.js +187 -0
  412. package/dist/src/transform-BnSXWmU_2.cjs +221 -0
  413. package/dist/src/transform-CGt7Kt3y2.js +186 -0
  414. package/dist/src/transform-CrPGTsij.js +186 -0
  415. package/dist/src/{transform-CTeuTR3S.cjs → transform-DhNkAUs8.cjs} +13 -12
  416. package/dist/src/{transform-CG0ehZNG.js → transform-DmvYBRll.js} +9 -9
  417. package/dist/src/{transform-zDhMmzwX.js → transform-EtD4jAWi.js} +9 -9
  418. package/dist/src/{transformersAvailability-CcHusyhw.js → transformersAvailability-0ThtPved.js} +1 -1
  419. package/dist/src/transformersAvailability-BYydDE5U.js +35 -0
  420. package/dist/src/{transformersAvailability-DLlROWhg.js → transformersAvailability-BvyU9vDD.js} +1 -1
  421. package/dist/src/{transformersAvailability-Cju9mHgR.cjs → transformersAvailability-BytPvKUW.cjs} +1 -1
  422. package/dist/src/{types-Dm9JM6Vb.js → types-BFevViUY.js} +115 -19
  423. package/dist/src/{types-Bgh5SOn6.js → types-BJQBBPTP.js} +115 -19
  424. package/dist/src/{types-CeaeaZdP.cjs → types-CxJvaY2S.cjs} +357 -172
  425. package/dist/src/{types-BGQDAP8i.js → types-D6glLbdF.js} +271 -170
  426. package/dist/src/{util-BYvQUPp7.js → util--WMgw7wM.js} +28 -8
  427. package/dist/src/{util-C9J8ahRn.js → util-5WnCSb0h.js} +72 -48
  428. package/dist/src/{util-CN3SrLT4.cjs → util-BSIuSLVK.cjs} +74 -49
  429. package/dist/src/{util-C8e5uydV.js → util-Bx677_k2.js} +154 -147
  430. package/dist/src/util-CN8om2rz.cjs +386 -0
  431. package/dist/src/{util-DDs-7g6-.js → util-CoQWM76y.js} +28 -8
  432. package/dist/src/util-DNl96nNs.js +327 -0
  433. package/dist/src/{util-DxWpWjhc.js → util-DURocbYR.js} +667 -507
  434. package/dist/src/util-Df8YMvS1.js +327 -0
  435. package/dist/src/{util-DvU2Pw8c.js → util-DiQ3QvBB.js} +28 -8
  436. package/dist/src/{util-oGMLA7vc.js → util-I-Rf-KaD.js} +862 -577
  437. package/dist/src/{util-olYL5C6N.cjs → util-IYzs5Y04.cjs} +33 -7
  438. package/dist/src/{util-D9TisOyk.js → util-LKTmNsMQ.js} +71 -47
  439. package/dist/src/{util-Bxn8emtE.cjs → util-SPsvFONY.cjs} +738 -582
  440. package/dist/src/{util-D3q0WQ-0.js → util-efByNxcr.js} +72 -48
  441. package/dist/src/util-kDURhgJW.js +328 -0
  442. package/dist/src/{utils-DJfvjyMj.js → utils-B0lzitHZ.js} +3 -3
  443. package/dist/src/{utils-BLJKfv0y.js → utils-BFOh20Gb.js} +3 -3
  444. package/dist/src/{utils-hXtCYanr.js → utils-BGY69tk_.js} +2 -2
  445. package/dist/src/{utils-B05gLxER.cjs → utils-Ve6kuJsa.cjs} +3 -3
  446. package/dist/src/version-BK20a4sw.js +16 -0
  447. package/dist/src/version-BWCSaByA.cjs +27 -0
  448. package/dist/src/version-eRkNuGv8.js +17 -0
  449. package/dist/src/version-lpHV_53E.js +16 -0
  450. package/dist/tsconfig.tsbuildinfo +1 -1
  451. package/package.json +56 -28
  452. package/dist/src/app/assets/Report-CQYFezYu.js +0 -1
  453. package/dist/src/app/assets/index-BXGkeMwh.css +0 -1
  454. package/dist/src/app/assets/index-BzJt18Jz.js +0 -385
  455. package/dist/src/app/assets/sync-IjzpWrOE.js +0 -4
  456. package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +0 -36
  457. package/dist/src/cache-Cr9oLMUa.js +0 -3
  458. package/dist/src/cache-DbLsVWB2.cjs +0 -3
  459. package/dist/src/cloud-Hphvo8kr.js +0 -3
  460. package/dist/src/codex-sdk-BAmYE7qy.js +0 -3
  461. package/dist/src/codex-sdk-CWEnH70W.cjs +0 -2
  462. package/dist/src/evalResult-D8MT9p0s.js +0 -3
  463. package/dist/src/evalResult-DElBuddX.js +0 -2
  464. package/dist/src/evalResult-Dvc-iucu.cjs +0 -2
  465. package/dist/src/evaluator-CVessDWe.js +0 -3
  466. package/dist/src/fetch-C7bGKDlQ.js +0 -3
  467. package/dist/src/graders-BOAzQEUe.cjs +0 -2
  468. package/dist/src/graders-D4BTsZdG2.js +0 -3
  469. package/dist/src/graders-DOJK1XpV.js +0 -2
  470. package/dist/src/graders-NAv9LcBn.js +0 -2
  471. package/dist/src/image-B5Mv-Z3h.js +0 -257
  472. package/dist/src/image-DVz2RiMF.js +0 -258
  473. package/dist/src/image-qUpPvmNZ.js +0 -257
  474. package/dist/src/image-x6KqLQl4.cjs +0 -280
  475. package/dist/src/providers-Bp4S-FvO.js +0 -2
  476. package/dist/src/providers-DV3ax9e_.cjs +0 -3
  477. package/dist/src/providers-u9Enmfok.js +0 -2
  478. package/dist/src/render-CH-62LbA.js +0 -135
  479. package/dist/src/render-CMEpfLaO.js +0 -136
  480. package/dist/src/render-DHIZ6_k8.js +0 -135
  481. package/dist/src/render-DfQSFxGE.cjs +0 -165
  482. package/dist/src/rubyUtils-D1L2d3jb.js +0 -3
  483. package/dist/src/rubyUtils-DUbq4tff.cjs +0 -2
  484. package/dist/src/server-BNYztJkh.js +0 -385
  485. package/dist/src/server-DCtHUqlp.js +0 -3
  486. package/dist/src/server-DaA2eR26.cjs +0 -2
  487. package/dist/src/store-CWOSz6D_.cjs +0 -2
  488. package/dist/src/store-DCDBhv7B.js +0 -3
  489. package/dist/src/store-Dn9HUkdW.js +0 -240
  490. package/dist/src/telemetry-C1IqxcdW.js +0 -3
  491. package/dist/src/telemetry-C4ZEa_es.cjs +0 -2
  492. package/dist/src/transform-Bbg6A8Jk.js +0 -216
  493. package/dist/src/transform-CUnzlsbn.cjs +0 -228
  494. package/dist/src/transform-DYX1_Xnh.js +0 -216
  495. package/dist/src/transform-DgKlRr73.cjs +0 -2
  496. package/dist/src/transform-M6ITAESf.js +0 -3
  497. package/dist/src/transform-UN5UGu8U.js +0 -213
@@ -1,3 +1,14 @@
1
+ require("./rolldown-runtime-D_mwlA32.cjs");
2
+ let zod = require("zod");
3
+ //#region src/validators/shared.ts
4
+ const NunjucksFilterMapSchema = zod.z.record(zod.z.string(), zod.z.custom((v) => typeof v === "function"));
5
+ /**
6
+ * Zod schema accepting a string or a function.
7
+ * Used for transform fields that accept inline JS expressions, file:// references,
8
+ * or direct functions when using the Node.js package.
9
+ */
10
+ const StringOrFunctionSchema = zod.z.union([zod.z.string(), zod.z.custom((val) => typeof val === "function", { message: "Transform must be a string expression, file:// path, or a function (Node.js package)" })]);
11
+ //#endregion
1
12
  //#region src/util/fileExtensions.ts
2
13
  /**
3
14
  * Array of supported JavaScript and TypeScript file extensions
@@ -86,6 +97,18 @@ Object.defineProperty(exports, "JAVASCRIPT_EXTENSIONS", {
86
97
  return JAVASCRIPT_EXTENSIONS;
87
98
  }
88
99
  });
100
+ Object.defineProperty(exports, "NunjucksFilterMapSchema", {
101
+ enumerable: true,
102
+ get: function() {
103
+ return NunjucksFilterMapSchema;
104
+ }
105
+ });
106
+ Object.defineProperty(exports, "StringOrFunctionSchema", {
107
+ enumerable: true,
108
+ get: function() {
109
+ return StringOrFunctionSchema;
110
+ }
111
+ });
89
112
  Object.defineProperty(exports, "isAudioFile", {
90
113
  enumerable: true,
91
114
  get: function() {
@@ -111,4 +134,4 @@ Object.defineProperty(exports, "isVideoFile", {
111
134
  }
112
135
  });
113
136
 
114
- //# sourceMappingURL=fileExtensions-bYh77CN8.cjs.map
137
+ //# sourceMappingURL=fileExtensions-BhdwzYaD.cjs.map
@@ -1,3 +1,13 @@
1
+ import { z } from "zod";
2
+ //#region src/validators/shared.ts
3
+ const NunjucksFilterMapSchema = z.record(z.string(), z.custom((v) => typeof v === "function"));
4
+ /**
5
+ * Zod schema accepting a string or a function.
6
+ * Used for transform fields that accept inline JS expressions, file:// references,
7
+ * or direct functions when using the Node.js package.
8
+ */
9
+ const StringOrFunctionSchema = z.union([z.string(), z.custom((val) => typeof val === "function", { message: "Transform must be a string expression, file:// path, or a function (Node.js package)" })]);
10
+ //#endregion
1
11
  //#region src/util/fileExtensions.ts
2
12
  /**
3
13
  * Array of supported JavaScript and TypeScript file extensions
@@ -80,6 +90,6 @@ function isAudioFile(filePath) {
80
90
  return audioExtensions.includes(fileExtension);
81
91
  }
82
92
  //#endregion
83
- export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
93
+ export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, NunjucksFilterMapSchema as o, isImageFile as r, StringOrFunctionSchema as s, JAVASCRIPT_EXTENSIONS as t };
84
94
 
85
- //# sourceMappingURL=fileExtensions-DnqA1y9x.js.map
95
+ //# sourceMappingURL=fileExtensions-CXRfY3Ss.js.map
@@ -1,4 +1,14 @@
1
1
  #!/usr/bin/env node
2
+ import { z } from "zod";
3
+ //#region src/validators/shared.ts
4
+ const NunjucksFilterMapSchema = z.record(z.string(), z.custom((v) => typeof v === "function"));
5
+ /**
6
+ * Zod schema accepting a string or a function.
7
+ * Used for transform fields that accept inline JS expressions, file:// references,
8
+ * or direct functions when using the Node.js package.
9
+ */
10
+ const StringOrFunctionSchema = z.union([z.string(), z.custom((val) => typeof val === "function", { message: "Transform must be a string expression, file:// path, or a function (Node.js package)" })]);
11
+ //#endregion
2
12
  //#region src/util/fileExtensions.ts
3
13
  /**
4
14
  * Array of supported JavaScript and TypeScript file extensions
@@ -81,6 +91,6 @@ function isAudioFile(filePath) {
81
91
  return audioExtensions.includes(fileExtension);
82
92
  }
83
93
  //#endregion
84
- export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
94
+ export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, NunjucksFilterMapSchema as o, isImageFile as r, StringOrFunctionSchema as s, JAVASCRIPT_EXTENSIONS as t };
85
95
 
86
- //# sourceMappingURL=fileExtensions-AWa2ZML4.js.map
96
+ //# sourceMappingURL=fileExtensions-D4GCJ67J.js.map
@@ -20,4 +20,4 @@ function formatDuration(seconds) {
20
20
  //#endregion
21
21
  export { formatDuration as t };
22
22
 
23
- //# sourceMappingURL=formatDuration-DZzPsexs.js.map
23
+ //# sourceMappingURL=formatDuration-CMVNrYvE.js.map
@@ -1,4 +1,4 @@
1
- require("./logger-COuQb2xB.cjs");
1
+ require("./rolldown-runtime-D_mwlA32.cjs");
2
2
  let _opentelemetry_api = require("@opentelemetry/api");
3
3
  //#region src/tracing/genaiTracer.ts
4
4
  const TRACER_NAME = "promptfoo.providers";
@@ -256,12 +256,24 @@ function getTraceparent() {
256
256
  return `00-${ctx.traceId}-${ctx.spanId}-${traceFlags}`;
257
257
  }
258
258
  //#endregion
259
+ Object.defineProperty(exports, "getGenAITracer", {
260
+ enumerable: true,
261
+ get: function() {
262
+ return getGenAITracer;
263
+ }
264
+ });
259
265
  Object.defineProperty(exports, "getTraceparent", {
260
266
  enumerable: true,
261
267
  get: function() {
262
268
  return getTraceparent;
263
269
  }
264
270
  });
271
+ Object.defineProperty(exports, "sanitizeBody", {
272
+ enumerable: true,
273
+ get: function() {
274
+ return sanitizeBody;
275
+ }
276
+ });
265
277
  Object.defineProperty(exports, "withGenAISpan", {
266
278
  enumerable: true,
267
279
  get: function() {
@@ -269,4 +281,4 @@ Object.defineProperty(exports, "withGenAISpan", {
269
281
  }
270
282
  });
271
283
 
272
- //# sourceMappingURL=genaiTracer-yRuxj9-L.cjs.map
284
+ //# sourceMappingURL=genaiTracer-14nugQQx.cjs.map
@@ -256,6 +256,6 @@ function getTraceparent() {
256
256
  return `00-${ctx.traceId}-${ctx.spanId}-${traceFlags}`;
257
257
  }
258
258
  //#endregion
259
- export { withGenAISpan as n, getTraceparent as t };
259
+ export { withGenAISpan as i, getTraceparent as n, sanitizeBody as r, getGenAITracer as t };
260
260
 
261
- //# sourceMappingURL=genaiTracer-DWdZ28hY.js.map
261
+ //# sourceMappingURL=genaiTracer-BPVvltoW.js.map
@@ -255,6 +255,6 @@ function getTraceparent() {
255
255
  return `00-${ctx.traceId}-${ctx.spanId}-${traceFlags}`;
256
256
  }
257
257
  //#endregion
258
- export { withGenAISpan as n, getTraceparent as t };
258
+ export { withGenAISpan as i, getTraceparent as n, sanitizeBody as r, getGenAITracer as t };
259
259
 
260
- //# sourceMappingURL=genaiTracer-XnrcgDCe.js.map
260
+ //# sourceMappingURL=genaiTracer-D18lYzhB.js.map
@@ -255,6 +255,6 @@ function getTraceparent() {
255
255
  return `00-${ctx.traceId}-${ctx.spanId}-${traceFlags}`;
256
256
  }
257
257
  //#endregion
258
- export { withGenAISpan as n, getTraceparent as t };
258
+ export { withGenAISpan as i, getTraceparent as n, sanitizeBody as r, getGenAITracer as t };
259
259
 
260
- //# sourceMappingURL=genaiTracer-COYDi-tC.js.map
260
+ //# sourceMappingURL=genaiTracer-jJKYsnjc.js.map
@@ -0,0 +1,467 @@
1
+ #!/usr/bin/env node
2
+ import { s as logger, x as safeJsonStringify } from "./logger-BbY6ypFL.js";
3
+ import { f as sleep, n as fetchWithProxy } from "./fetch-DXUnXkVU.js";
4
+ import { n as VERSION } from "./version-eRkNuGv8.js";
5
+ import { t as invariant } from "./invariant-B2Rf6avk.js";
6
+ import { c as isLoggedIntoCloud, o as getUserEmail } from "./accounts-CjFnOPmb.js";
7
+ import { o as getNunjucksEngine } from "./render-CSP99NLm.js";
8
+ import { r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-B1_XsKXU.js";
9
+ import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-CDet74yk.js";
10
+ import { r as materializeInputVariablesWithMetadata } from "./inputVariables-DXFdi7AI.js";
11
+ import { a as extractPromptFromTags, o as getSessionId, r as extractInputVarsFromPrompt } from "./util-kDURhgJW.js";
12
+ import { o as getGraderAssertionValue, p as tryUnblocking, s as getLastMessageContent, t as buildGraderResultAssertion } from "./shared-9WHQ1oNE.js";
13
+ import { i as throwIfTargetPromptExceedsMaxChars } from "./promptLength-4X-Wd8PG.js";
14
+ import { n as checkExfilTracking } from "./indirectWebPwn-uyWdHx04.js";
15
+ import { n as renderPrompt } from "./evaluatorHelpers-BsYP_muT.js";
16
+ import { t as Strategies } from "./strategies-DRJjGTIY.js";
17
+ import { a as fetchTraceContext, i as extractTraceIdFromTraceparent, n as formatTraceForMetadata, r as formatTraceSummary, t as resolveTracingOptions } from "./tracingOptions-BnwKCkSB.js";
18
+ import { t as applyRuntimeTransforms } from "./runtimeTransform-Dgh_D7DU.js";
19
+ import { i as getGoalRubric } from "./prompts-C-bqE1Yp.js";
20
+ import chalk from "chalk";
21
+ import dedent from "dedent";
22
+ //#region src/redteam/providers/goat.ts
23
+ var GoatProvider = class {
24
+ config;
25
+ nunjucks;
26
+ perTurnLayers;
27
+ successfulAttacks = [];
28
+ id() {
29
+ return "promptfoo:redteam:goat";
30
+ }
31
+ constructor(options = {}) {
32
+ if (neverGenerateRemote()) throw new Error(`GOAT strategy requires remote grading to be enabled`);
33
+ invariant(typeof options.injectVar === "string", "Expected injectVar to be set");
34
+ let maxTurns = options.maxTurns ?? 5;
35
+ if (!isLoggedIntoCloud()) maxTurns = Math.min(maxTurns, 10);
36
+ this.config = {
37
+ maxTurns,
38
+ ...options.maxCharsPerMessage ? { maxCharsPerMessage: options.maxCharsPerMessage } : {},
39
+ injectVar: options.injectVar,
40
+ stateful: options.stateful ?? false,
41
+ excludeTargetOutputFromAgenticAttackGeneration: options.excludeTargetOutputFromAgenticAttackGeneration ?? false,
42
+ continueAfterSuccess: options.continueAfterSuccess ?? false,
43
+ tracing: options.tracing,
44
+ _perTurnLayers: options._perTurnLayers,
45
+ inputs: options.inputs
46
+ };
47
+ this.perTurnLayers = options._perTurnLayers ?? [];
48
+ this.nunjucks = getNunjucksEngine();
49
+ logger.debug("[GOAT] Constructor options", {
50
+ injectVar: options.injectVar,
51
+ maxTurns: options.maxTurns,
52
+ maxCharsPerMessage: options.maxCharsPerMessage,
53
+ stateful: options.stateful,
54
+ continueAfterSuccess: options.continueAfterSuccess,
55
+ perTurnLayers: this.perTurnLayers.map((l) => typeof l === "string" ? l : l.id),
56
+ inputs: options.inputs
57
+ });
58
+ }
59
+ async callApi(_prompt, context, options) {
60
+ this.successfulAttacks = [];
61
+ const tracingOptions = resolveTracingOptions({
62
+ strategyId: "goat",
63
+ test: context?.test,
64
+ config: this.config
65
+ });
66
+ const shouldFetchTrace = tracingOptions.enabled && (tracingOptions.includeInAttack || tracingOptions.includeInGrading);
67
+ const traceSnapshots = [];
68
+ let response = void 0;
69
+ logger.debug("[GOAT] callApi context", { context });
70
+ invariant(context?.originalProvider, "Expected originalProvider to be set");
71
+ invariant(context?.vars, "Expected vars to be set");
72
+ const targetProvider = context?.originalProvider;
73
+ invariant(targetProvider, "Expected originalProvider to be set");
74
+ const maxCharsPerMessage = this.config.maxCharsPerMessage ?? (context?.test?.metadata?.strategyConfig)?.maxCharsPerMessage ?? (context?.test?.metadata?.pluginConfig)?.maxCharsPerMessage;
75
+ const messages = [];
76
+ const totalTokenUsage = createEmptyTokenUsage();
77
+ const redteamHistory = [];
78
+ let lastTargetResponse = void 0;
79
+ let lastTransformDisplayVars;
80
+ let lastFinalAttackPrompt;
81
+ let assertToUse;
82
+ let graderPassed;
83
+ let storedGraderResult;
84
+ const { getGraderById } = await import("./graders-BDT7dif6.js");
85
+ let test;
86
+ if (context?.test) {
87
+ test = context?.test;
88
+ assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test?.metadata?.pluginId));
89
+ if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
90
+ }
91
+ let previousAttackerMessage = "";
92
+ let previousTargetOutput = "";
93
+ let previousTraceSummary;
94
+ const additionalRubric = getGoalRubric(context?.test?.metadata?.goal || context?.vars[this.config.injectVar]);
95
+ let stopReason = "Max turns reached";
96
+ for (let turn = 0; turn < this.config.maxTurns; turn++) try {
97
+ if (turn > 0 && previousTargetOutput) {
98
+ const unblockingResult = await tryUnblocking({
99
+ messages,
100
+ lastResponse: previousTargetOutput,
101
+ goal: context?.test?.metadata?.goal || context?.vars[this.config.injectVar],
102
+ purpose: context?.test?.metadata?.purpose
103
+ });
104
+ if (unblockingResult.success && unblockingResult.unblockingPrompt) {
105
+ logger.debug(`[GOAT] Sending unblocking response: ${unblockingResult.unblockingPrompt}`);
106
+ messages.push({
107
+ role: "user",
108
+ content: unblockingResult.unblockingPrompt
109
+ });
110
+ let unblockingTargetPrompt = this.config.stateful ? unblockingResult.unblockingPrompt : JSON.stringify(messages);
111
+ if (this.perTurnLayers.length > 0) {
112
+ const transformResult = await applyRuntimeTransforms(unblockingResult.unblockingPrompt, this.config.injectVar, this.perTurnLayers, Strategies, {
113
+ evaluationId: context?.evaluationId,
114
+ testCaseId: context?.test?.metadata?.testCaseId,
115
+ purpose: context?.test?.metadata?.purpose,
116
+ goal: context?.test?.metadata?.goal
117
+ });
118
+ if (transformResult.error) {
119
+ logger.warn("[GOAT] Transform failed for unblocking prompt", { error: transformResult.error });
120
+ continue;
121
+ }
122
+ unblockingTargetPrompt = transformResult.prompt;
123
+ }
124
+ throwIfTargetPromptExceedsMaxChars(unblockingTargetPrompt, maxCharsPerMessage);
125
+ const unblockingResponse = await targetProvider.callApi(unblockingTargetPrompt, context, options);
126
+ if (!unblockingResponse.cached && targetProvider.delay && targetProvider.delay > 0) {
127
+ logger.debug(`Sleeping for ${targetProvider.delay}ms`);
128
+ await sleep(targetProvider.delay);
129
+ }
130
+ accumulateResponseTokenUsage(totalTokenUsage, unblockingResponse);
131
+ const unblockingOutput = typeof unblockingResponse.output === "string" ? unblockingResponse.output : safeJsonStringify(unblockingResponse.output);
132
+ if (unblockingOutput) messages.push({
133
+ role: "assistant",
134
+ content: unblockingOutput
135
+ });
136
+ if (unblockingResponse.error) logger.error(`[GOAT] Target returned an error: ${unblockingResponse.error}`);
137
+ }
138
+ }
139
+ let body;
140
+ let failureReason;
141
+ if (this.config.excludeTargetOutputFromAgenticAttackGeneration && turn > 0) {
142
+ body = JSON.stringify({
143
+ goal: context?.test?.metadata?.goal || context?.vars[this.config.injectVar],
144
+ targetOutput: previousTargetOutput,
145
+ attackAttempt: previousAttackerMessage,
146
+ task: "extract-goat-failure",
147
+ modifiers: context?.test?.metadata?.modifiers,
148
+ traceSummary: previousTraceSummary
149
+ });
150
+ logger.debug(`[GOAT] Sending request to ${getRemoteGenerationUrl()}: ${body}`);
151
+ response = await fetchWithProxy(getRemoteGenerationUrl(), {
152
+ body,
153
+ headers: { "Content-Type": "application/json" },
154
+ method: "POST"
155
+ }, options?.abortSignal);
156
+ const data = await response.json();
157
+ if (!data.message) {
158
+ logger.info("[GOAT] Invalid message from GOAT, skipping turn", { data });
159
+ continue;
160
+ }
161
+ failureReason = data.message;
162
+ logger.debug(`[GOAT] Previous attack attempt failure reason: ${failureReason}`);
163
+ }
164
+ body = JSON.stringify({
165
+ goal: context?.test?.metadata?.goal || context?.vars[this.config.injectVar],
166
+ i: turn,
167
+ messages: this.config.excludeTargetOutputFromAgenticAttackGeneration ? messages.filter((m) => m.role !== "assistant") : messages,
168
+ prompt: context?.prompt?.raw,
169
+ task: "goat",
170
+ version: VERSION,
171
+ email: getUserEmail(),
172
+ excludeTargetOutputFromAgenticAttackGeneration: this.config.excludeTargetOutputFromAgenticAttackGeneration,
173
+ failureReason,
174
+ purpose: context?.test?.metadata?.purpose,
175
+ modifiers: context?.test?.metadata?.modifiers,
176
+ traceSummary: previousTraceSummary,
177
+ inputs: this.config.inputs
178
+ });
179
+ logger.debug(`[GOAT] Sending request to ${getRemoteGenerationUrl()}: ${body}`);
180
+ response = await fetchWithProxy(getRemoteGenerationUrl(), {
181
+ body,
182
+ headers: { "Content-Type": "application/json" },
183
+ method: "POST"
184
+ }, options?.abortSignal);
185
+ const data = await response.json();
186
+ if (typeof data?.message !== "object" || !data.message?.content || !data.message?.role) {
187
+ logger.info("[GOAT] Invalid message from GOAT, skipping turn", { data });
188
+ continue;
189
+ }
190
+ const attackerMessage = data.message;
191
+ previousAttackerMessage = attackerMessage?.content;
192
+ let processedMessage = attackerMessage.content;
193
+ const extractedPrompt = extractPromptFromTags(attackerMessage.content);
194
+ if (extractedPrompt) processedMessage = extractedPrompt;
195
+ const currentInputVars = extractInputVarsFromPrompt(processedMessage, this.config.inputs);
196
+ const currentRenderInputVars = (currentInputVars && this.config.inputs ? await materializeInputVariablesWithMetadata(currentInputVars, this.config.inputs, {
197
+ materializationIndex: turn,
198
+ pluginId: "goat"
199
+ }) : void 0)?.vars ?? currentInputVars;
200
+ if (currentInputVars && this.config.inputs) try {
201
+ const parsed = JSON.parse(processedMessage);
202
+ if (typeof parsed.prompt === "string") processedMessage = parsed.prompt;
203
+ } catch {}
204
+ const attackerVars = {
205
+ [this.config.injectVar]: processedMessage,
206
+ ...currentRenderInputVars || {}
207
+ };
208
+ const targetVars = {
209
+ ...context.vars,
210
+ ...attackerVars
211
+ };
212
+ const renderedAttackerPrompt = await renderPrompt(context.prompt, targetVars, context.filters, targetProvider, Object.keys(attackerVars));
213
+ messages.push({
214
+ role: attackerMessage.role,
215
+ content: renderedAttackerPrompt
216
+ });
217
+ logger.debug(dedent`
218
+ ${chalk.bold.green(`GOAT turn ${turn} history:`)}
219
+ ${chalk.cyan(JSON.stringify(messages, null, 2))}
220
+ `);
221
+ const latestMessageContent = messages[messages.length - 1].content;
222
+ let targetPrompt = this.config.stateful ? latestMessageContent : JSON.stringify(messages);
223
+ logger.debug(`GOAT turn ${turn} target prompt: ${renderedAttackerPrompt}`);
224
+ let lastTransformResult;
225
+ if (this.perTurnLayers.length > 0) {
226
+ logger.debug("[GOAT] Applying per-turn transforms", {
227
+ turn,
228
+ layers: this.perTurnLayers.map((l) => typeof l === "string" ? l : l.id)
229
+ });
230
+ lastTransformResult = await applyRuntimeTransforms(latestMessageContent, this.config.injectVar, this.perTurnLayers, Strategies, {
231
+ evaluationId: context?.evaluationId,
232
+ testCaseId: context?.test?.metadata?.testCaseId,
233
+ purpose: context?.test?.metadata?.purpose,
234
+ goal: context?.test?.metadata?.goal
235
+ });
236
+ if (lastTransformResult.error) {
237
+ logger.warn("[GOAT] Transform failed, skipping turn", {
238
+ turn,
239
+ error: lastTransformResult.error
240
+ });
241
+ continue;
242
+ }
243
+ if (lastTransformResult.audio || lastTransformResult.image) {
244
+ const historyWithoutCurrentTurn = messages.slice(0, -1);
245
+ const hybridPayload = {
246
+ _promptfoo_audio_hybrid: true,
247
+ history: historyWithoutCurrentTurn,
248
+ currentTurn: {
249
+ role: "user",
250
+ transcript: latestMessageContent,
251
+ ...lastTransformResult.audio && { audio: lastTransformResult.audio },
252
+ ...lastTransformResult.image && { image: lastTransformResult.image }
253
+ }
254
+ };
255
+ targetPrompt = JSON.stringify(hybridPayload);
256
+ logger.debug("[GOAT] Using hybrid format (history + audio/image current turn)", {
257
+ turn,
258
+ historyLength: historyWithoutCurrentTurn.length,
259
+ hasAudio: !!lastTransformResult.audio,
260
+ hasImage: !!lastTransformResult.image
261
+ });
262
+ } else targetPrompt = lastTransformResult.prompt;
263
+ logger.debug("[GOAT] Per-turn transforms applied", {
264
+ turn,
265
+ hasAudio: !!lastTransformResult.audio,
266
+ hasImage: !!lastTransformResult.image
267
+ });
268
+ if (lastTransformResult.displayVars) lastTransformDisplayVars = lastTransformResult.displayVars;
269
+ lastFinalAttackPrompt = lastTransformResult.prompt;
270
+ }
271
+ const iterationStart = Date.now();
272
+ throwIfTargetPromptExceedsMaxChars(targetPrompt, maxCharsPerMessage);
273
+ const targetContext = context ? {
274
+ ...context,
275
+ vars: {
276
+ ...targetVars,
277
+ [this.config.injectVar]: targetPrompt
278
+ }
279
+ } : context;
280
+ const targetResponse = await targetProvider.callApi(targetPrompt, targetContext, options);
281
+ if (!targetResponse.cached && targetProvider.delay && targetProvider.delay > 0) {
282
+ logger.debug(`Sleeping for ${targetProvider.delay}ms`);
283
+ await sleep(targetProvider.delay);
284
+ }
285
+ accumulateResponseTokenUsage(totalTokenUsage, targetResponse);
286
+ logger.debug(`GOAT turn ${turn} target response`, { response: targetResponse });
287
+ let traceContext = null;
288
+ let computedTraceSummary;
289
+ if (shouldFetchTrace) {
290
+ const traceparent = context?.traceparent ?? void 0;
291
+ const traceId = traceparent ? extractTraceIdFromTraceparent(traceparent) : null;
292
+ if (traceId) {
293
+ traceContext = await fetchTraceContext(traceId, {
294
+ earliestStartTime: iterationStart,
295
+ includeInternalSpans: tracingOptions.includeInternalSpans,
296
+ maxSpans: tracingOptions.maxSpans,
297
+ maxDepth: tracingOptions.maxDepth,
298
+ maxRetries: tracingOptions.maxRetries,
299
+ retryDelayMs: tracingOptions.retryDelayMs,
300
+ spanFilter: tracingOptions.spanFilter,
301
+ sanitizeAttributes: tracingOptions.sanitizeAttributes
302
+ });
303
+ if (traceContext) {
304
+ targetResponse.traceContext = traceContext;
305
+ traceSnapshots.push(traceContext);
306
+ if (tracingOptions.includeInAttack || tracingOptions.includeInGrading) {
307
+ computedTraceSummary = formatTraceSummary(traceContext);
308
+ targetResponse.traceSummary = computedTraceSummary;
309
+ }
310
+ }
311
+ }
312
+ }
313
+ if (targetResponse.sessionId) {
314
+ context = context ?? {
315
+ vars: {},
316
+ prompt: {
317
+ raw: "",
318
+ label: "target"
319
+ }
320
+ };
321
+ context.vars.sessionId = targetResponse.sessionId;
322
+ }
323
+ if (targetResponse.conversationEnded) {
324
+ logger.info("[GOAT] Target ended conversation", {
325
+ turn,
326
+ reason: targetResponse.conversationEndReason
327
+ });
328
+ const endedOutput = typeof targetResponse.output === "string" ? targetResponse.output : safeJsonStringify(targetResponse.output);
329
+ if (endedOutput) {
330
+ messages.push({
331
+ role: "assistant",
332
+ content: endedOutput
333
+ });
334
+ redteamHistory.push({
335
+ prompt: attackerMessage.content,
336
+ promptAudio: lastTransformResult?.audio,
337
+ promptImage: lastTransformResult?.image,
338
+ output: endedOutput,
339
+ outputAudio: targetResponse.audio?.data && targetResponse.audio?.format ? {
340
+ data: targetResponse.audio.data,
341
+ format: targetResponse.audio.format
342
+ } : void 0,
343
+ inputVars: currentRenderInputVars
344
+ });
345
+ }
346
+ lastTargetResponse = targetResponse;
347
+ stopReason = "Target ended conversation";
348
+ break;
349
+ }
350
+ if (targetResponse.error) throw new Error(`[GOAT] Target returned an error: ${targetResponse.error}`);
351
+ invariant(targetResponse.output, `[GOAT] Expected target response output to be set, but got: ${safeJsonStringify(targetResponse)}`);
352
+ const stringifiedOutput = typeof targetResponse.output === "string" ? targetResponse.output : safeJsonStringify(targetResponse.output);
353
+ const finalOutput = stringifiedOutput;
354
+ const finalResponse = targetResponse;
355
+ if (!stringifiedOutput) {
356
+ logger.debug("[GOAT] Target response output is not a string or JSON", { response: targetResponse });
357
+ continue;
358
+ }
359
+ messages.push({
360
+ role: "assistant",
361
+ content: stringifiedOutput
362
+ });
363
+ redteamHistory.push({
364
+ prompt: attackerMessage.content,
365
+ promptAudio: lastTransformResult?.audio,
366
+ promptImage: lastTransformResult?.image,
367
+ output: stringifiedOutput,
368
+ outputAudio: targetResponse.audio?.data && targetResponse.audio?.format ? {
369
+ data: targetResponse.audio.data,
370
+ format: targetResponse.audio.format
371
+ } : void 0,
372
+ inputVars: currentRenderInputVars
373
+ });
374
+ const attackTraceSummary = tracingOptions.includeInAttack ? computedTraceSummary : void 0;
375
+ const gradingTraceSummary = tracingOptions.includeInGrading ? computedTraceSummary : void 0;
376
+ previousTraceSummary = attackTraceSummary;
377
+ previousTargetOutput = stringifiedOutput;
378
+ lastTargetResponse = finalResponse;
379
+ const grader = assertToUse ? getGraderById(assertToUse.type) : void 0;
380
+ if (test && assertToUse && grader && finalOutput) {
381
+ let gradingContext;
382
+ if (finalResponse.metadata?.wasExfiltrated === void 0) {
383
+ const webPageUuid = test.metadata?.webPageUuid;
384
+ if (webPageUuid) {
385
+ const evalId = context?.evaluationId ?? test.metadata?.evaluationId;
386
+ logger.debug("[GOAT] Fetching exfil tracking from server API", {
387
+ webPageUuid,
388
+ evalId
389
+ });
390
+ const exfilData = await checkExfilTracking(webPageUuid, evalId);
391
+ if (exfilData) gradingContext = {
392
+ ...tracingOptions.includeInGrading ? {
393
+ traceContext: targetResponse.traceContext,
394
+ traceSummary: gradingTraceSummary
395
+ } : {},
396
+ wasExfiltrated: exfilData.wasExfiltrated,
397
+ exfilCount: exfilData.exfilCount,
398
+ exfilRecords: exfilData.exfilRecords
399
+ };
400
+ }
401
+ } else {
402
+ logger.debug("[GOAT] Using exfil data from provider response metadata");
403
+ gradingContext = {
404
+ ...tracingOptions.includeInGrading ? {
405
+ traceContext: targetResponse.traceContext,
406
+ traceSummary: gradingTraceSummary
407
+ } : {},
408
+ wasExfiltrated: Boolean(finalResponse.metadata.wasExfiltrated),
409
+ exfilCount: Number(finalResponse.metadata.exfilCount) || 0,
410
+ exfilRecords: []
411
+ };
412
+ }
413
+ if (!gradingContext && tracingOptions.includeInGrading) gradingContext = {
414
+ traceContext: targetResponse.traceContext,
415
+ traceSummary: gradingTraceSummary
416
+ };
417
+ const { grade, rubric } = await grader.getResult(attackerMessage.content, finalOutput, test, targetProvider, getGraderAssertionValue(assertToUse), additionalRubric, void 0, gradingContext);
418
+ graderPassed = grade.pass;
419
+ storedGraderResult = {
420
+ ...grade,
421
+ assertion: buildGraderResultAssertion(grade.assertion, assertToUse, rubric)
422
+ };
423
+ }
424
+ if (graderPassed === false) {
425
+ this.successfulAttacks.push({
426
+ turn,
427
+ prompt: attackerMessage.content,
428
+ response: stringifiedOutput,
429
+ traceSummary: attackTraceSummary
430
+ });
431
+ if (this.config.continueAfterSuccess) {} else {
432
+ stopReason = "Grader failed";
433
+ break;
434
+ }
435
+ }
436
+ } catch (error) {
437
+ if (error instanceof Error && error.name === "AbortError") {
438
+ logger.debug("[GOAT] Operation aborted");
439
+ throw error;
440
+ }
441
+ logger.error(`[GOAT] An error occurred in GOAT turn ${turn}. The test will continue to the next turn in the conversation.`, { error: error.message || error });
442
+ }
443
+ const finalPrompt = getLastMessageContent(messages, "user") || "";
444
+ return {
445
+ output: getLastMessageContent(messages, "assistant") || "",
446
+ prompt: finalPrompt,
447
+ metadata: {
448
+ redteamFinalPrompt: lastFinalAttackPrompt || finalPrompt,
449
+ messages,
450
+ stopReason,
451
+ redteamHistory,
452
+ successfulAttacks: this.successfulAttacks,
453
+ totalSuccessfulAttacks: this.successfulAttacks.length,
454
+ storedGraderResult,
455
+ traceSnapshots: traceSnapshots.length > 0 ? traceSnapshots.map((snapshot) => formatTraceForMetadata(snapshot)) : void 0,
456
+ sessionId: getSessionId(lastTargetResponse, context),
457
+ ...lastTransformDisplayVars && { transformDisplayVars: lastTransformDisplayVars }
458
+ },
459
+ tokenUsage: totalTokenUsage,
460
+ guardrails: lastTargetResponse?.guardrails
461
+ };
462
+ }
463
+ };
464
+ //#endregion
465
+ export { GoatProvider as default };
466
+
467
+ //# sourceMappingURL=goat-Ckd3q3AY.js.map