promptfoo 0.121.5 → 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 (490) hide show
  1. package/dist/src/{ListApp-BRUsT43Y.js → ListApp-DLmM02JS.js} +1 -1
  2. package/dist/src/{accounts-CaLNYnf7.js → accounts-Ca7WIoPY.js} +12 -7
  3. package/dist/src/{accounts-CLJHCDDb.js → accounts-CjFnOPmb.js} +13 -8
  4. package/dist/src/{accounts-BIFntVWB.cjs → accounts-CmWzeD2d.cjs} +16 -10
  5. package/dist/src/{accounts-bnyHT7Ju.js → accounts-DanM1wq_.js} +12 -7
  6. package/dist/src/{agentic-utils-BclbiXiq.js → agentic-utils-CJ0j3fBi.js} +2 -2
  7. package/dist/src/{agentic-utils-B5krlibj.js → agentic-utils-DDEGRV9v.js} +2 -2
  8. package/dist/src/{agentic-utils-D2x0wGhB.cjs → agentic-utils-DvPWSUpb.cjs} +8 -7
  9. package/dist/src/{agentic-utils-Ba67xmgs.js → agentic-utils-TxUEMPYS.js} +2 -2
  10. package/dist/src/{agents-WULPVjbH.cjs → agents-B4sRuXg3.cjs} +7 -6
  11. package/dist/src/{agents-DhxWMCtH.js → agents-B8q7h_ek.js} +4 -4
  12. package/dist/src/{agents-BGqaTDnr.js → agents-CBgJvRkB.js} +20 -9
  13. package/dist/src/{agents-n6vPqV3i.js → agents-CYn2n3QP.js} +4 -4
  14. package/dist/src/{agents-BV9yFpXX.js → agents-D-vDNFx4.js} +20 -9
  15. package/dist/src/{agents-BYdMl1UE.js → agents-LrHuQqr1.js} +20 -9
  16. package/dist/src/{agents-emVcx3yh.js → agents-QGg76OF-.js} +2 -2
  17. package/dist/src/{agents-DiWmQYH9.cjs → agents-eHZ9nlgA.cjs} +21 -10
  18. package/dist/src/{aimlapi-uPGp0Zdo.js → aimlapi-CJEbQ0o6.js} +6 -6
  19. package/dist/src/{aimlapi-DR4pgeiC.js → aimlapi-D5HXzZ0s.js} +6 -6
  20. package/dist/src/{aimlapi-BzLjZI_m.cjs → aimlapi-T6HGNxNe.cjs} +7 -7
  21. package/dist/src/{aimlapi-BxqK9HF_.js → aimlapi-eYv3a_DK.js} +6 -6
  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 +6 -6
  33. package/dist/src/{audio-Da8U9IS5.js → audio-BqnRvcWG.js} +3 -3
  34. package/dist/src/{audio-BvpTOArF.js → audio-CPMtV1yR.js} +3 -3
  35. package/dist/src/{audio-CScmnmEB.js → audio-DyiebVB3.js} +3 -3
  36. package/dist/src/{audio-C0vDeS0j.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-BTux96b1.js → base-CKLo890h.js} +4 -3
  42. package/dist/src/{base-BOMaNEes.js → base-Co80MMCi.js} +4 -3
  43. package/dist/src/{base-Tw6uhH8K.cjs → base-DGJW48uz.cjs} +5 -4
  44. package/dist/src/{base-dYsl2hmL.js → base-E9I8zXjz.js} +4 -3
  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-B95F_7vE.cjs → blobs-B0977K1O.cjs} +7 -6
  50. package/dist/src/{blobs-D_gg8nbm.js → blobs-CeFdPn_T.js} +2 -2
  51. package/dist/src/{blobs-DjLby-uP.js → blobs-DODuTK-a.js} +2 -2
  52. package/dist/src/{blobs-BW4U31ue.js → blobs-Dwef1Ao1.js} +2 -2
  53. package/dist/src/{cache-DGg-yTZG.cjs → cache-CPGUA4Yl.cjs} +135 -25
  54. package/dist/src/cache-Cf7b4pWE.js +3 -0
  55. package/dist/src/{cache-Bzttsk0X.js → cache-DIXbtkNO.js} +125 -10
  56. package/dist/src/{cache-BI5BY7ey.js → cache-DpPWrkTE.js} +127 -11
  57. package/dist/src/{cache-Cr-qWIbP.js → cache-roFAE0cI.js} +125 -10
  58. package/dist/src/{chat-DChSH_Es.js → chat-CUCorGiL.js} +9 -9
  59. package/dist/src/{chat-DH97tVV9.cjs → chat-DG1wG4w0.cjs} +6 -6
  60. package/dist/src/{chat-Cx_LkwvZ.js → chat-Dabu84Br.js} +11 -11
  61. package/dist/src/{chat-BLOdH60v.js → chat-DqUFcWI0.js} +11 -11
  62. package/dist/src/{chat-vYqqv1gP.cjs → chat-DxTDQ83C.cjs} +14 -13
  63. package/dist/src/{chat-DG2LkwLq.js → chat-GmlolEwo.js} +4 -4
  64. package/dist/src/{chat-aMQZw6R7.js → chat-TP8Qifkh.js} +4 -4
  65. package/dist/src/{chat-D9nudO9b.js → chat-iwaM5UTQ.js} +4 -4
  66. package/dist/src/{chatkit-B8X34dQc.js → chatkit-B6DWi70Q.js} +3 -3
  67. package/dist/src/{chatkit-D44VyUyB.cjs → chatkit-BYveR48_.cjs} +6 -5
  68. package/dist/src/{chatkit-BXu42Qwt.js → chatkit-fARZwEfV.js} +3 -3
  69. package/dist/src/{chatkit-CbMRoeYw.js → chatkit-lb6FK02w.js} +1 -1
  70. package/dist/src/{claude-agent-sdk-BzNZeZ0N.js → claude-agent-sdk-BQNp_y-F.js} +209 -64
  71. package/dist/src/{claude-agent-sdk-BjriSVRZ.js → claude-agent-sdk-D5Jl0SDh.js} +210 -65
  72. package/dist/src/{claude-agent-sdk-BRq0bbIK.cjs → claude-agent-sdk-DH416NBD.cjs} +216 -70
  73. package/dist/src/{claude-agent-sdk-DYv_AJ8u.js → claude-agent-sdk-x1XJ1-pU.js} +210 -65
  74. package/dist/src/{cloud-Da0bofJd.js → cloud-D3DiFqH6.js} +2 -2
  75. package/dist/src/cloud-p96PA4MH.js +3 -0
  76. package/dist/src/{cloudflare-ai-CXC4b1EU.js → cloudflare-ai-B6NVI3ax.js} +4 -4
  77. package/dist/src/{cloudflare-ai-DJv5qnyb.cjs → cloudflare-ai-CEAW-xQa.cjs} +6 -6
  78. package/dist/src/{cloudflare-ai-CyBoIs1Q.js → cloudflare-ai-RFSojyXG.js} +4 -4
  79. package/dist/src/{cloudflare-ai-DGOwgexC.js → cloudflare-ai-r4tbYmWU.js} +4 -4
  80. package/dist/src/{cloudflare-gateway-D-dnkzCF.js → cloudflare-gateway-BCkLouto.js} +3 -3
  81. package/dist/src/{cloudflare-gateway-TJkVrZlB.js → cloudflare-gateway-BaZ4insB.js} +3 -3
  82. package/dist/src/{cloudflare-gateway-1sAoOyft.js → cloudflare-gateway-CF-Vb-2Z.js} +3 -3
  83. package/dist/src/{cloudflare-gateway-DKVjkDav.cjs → cloudflare-gateway-TJMLBj6I.cjs} +5 -5
  84. package/dist/src/{codex-app-server-CCe0TiDc.js → codex-app-server-B8KHEiF4.js} +5 -5
  85. package/dist/src/{codex-app-server-VMRnjZ68.cjs → codex-app-server-CnrLBCeA.cjs} +12 -11
  86. package/dist/src/{codex-app-server-CCLjqCh9.js → codex-app-server-DIXZ230V.js} +4 -4
  87. package/dist/src/{codex-app-server-CPW1LFwh.js → codex-app-server-Dd22dC_N.js} +5 -5
  88. package/dist/src/{codex-sdk-BgEFQ70r.js → codex-sdk-B6Wah8Pa.js} +5 -5
  89. package/dist/src/codex-sdk-BGjVAk23.js +3 -0
  90. package/dist/src/{codex-sdk-Bd8UbO9q.cjs → codex-sdk-CFF6gUyi.cjs} +18 -10
  91. package/dist/src/{codex-sdk-Bzb_TqX9.js → codex-sdk-CmQABzV3.js} +3 -3
  92. package/dist/src/{codex-sdk-DfvDTN33.js → codex-sdk-D2d54RL8.js} +5 -5
  93. package/dist/src/{cometapi-B5ImDlSm.js → cometapi-Bu9B8NUY.js} +7 -7
  94. package/dist/src/{cometapi-CCbpHkuF.js → cometapi-CtzNCHKu.js} +7 -7
  95. package/dist/src/{cometapi-BgAkuYCw.cjs → cometapi-DHCDlQUI.cjs} +8 -8
  96. package/dist/src/{cometapi-CC7hWxmX.js → cometapi-OBILPLlu.js} +7 -7
  97. package/dist/src/{completion-Vq_ad618.js → completion-CO2e1_62.js} +4 -4
  98. package/dist/src/{completion-DtQ72Bm3.cjs → completion-CSYfl2cd.cjs} +6 -6
  99. package/dist/src/{completion-2iuYVxwi.js → completion-DZNxcyfG.js} +5 -5
  100. package/dist/src/{completion-CrD6MQ93.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-Un4Q_huE.js → createHash-CGVzWdjj.js} +1 -1
  107. package/dist/src/{createHash-VvBIc-AW.cjs → createHash-CSiqnK5P.cjs} +2 -2
  108. package/dist/src/{createHash-DPpsZgFF.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--3qzPa-6.js → docker-4D1eL6Gq.js} +5 -5
  118. package/dist/src/{docker-Dorv4_Dg.js → docker-BBv1WUDu.js} +5 -5
  119. package/dist/src/{docker-D3AY-5F5.cjs → docker-D06JUoe2.cjs} +6 -6
  120. package/dist/src/{docker-DCsCDvwM.js → docker-DdJQBxK9.js} +5 -5
  121. package/dist/src/{embedding-DNRvZwRN.js → embedding--UZVe4_7.js} +5 -5
  122. package/dist/src/{embedding-BXhN5lCH.cjs → embedding-BbrwopfX.cjs} +6 -6
  123. package/dist/src/{embedding-ChS1ivFS.js → embedding-Bi3rxrZF.js} +5 -5
  124. package/dist/src/{embedding-D_bI4NDq.js → embedding-C251p1-8.js} +4 -4
  125. package/dist/src/{errors-DFHe4L-n.js → errors-9PcUL8BC.js} +1 -1
  126. package/dist/src/{esm-B_rGuPTo.cjs → esm-BIKakvNa.cjs} +8 -7
  127. package/dist/src/{esm-BRkfNsYs.js → esm-BTK1W7lG.js} +1 -1
  128. package/dist/src/{esm-BX8fwlAO.js → esm-Bexx2PFc.js} +1 -1
  129. package/dist/src/{eval-DJ_4A-tr.js → eval-0VRANImH.js} +19 -19
  130. package/dist/src/{eval-BQPLBJbw.js → eval-DscR5iOM.js} +1 -1
  131. package/dist/src/{evalResult-pSvGWFMo.js → evalResult-2RRJvFyB.js} +18 -11
  132. package/dist/src/{evalResult-Cx-8OWkb.cjs → evalResult-CvtS8h8u.cjs} +29 -11
  133. package/dist/src/evalResult-DqzsS6_W.js +3 -0
  134. package/dist/src/{evalResult-D6P5I5il.js → evalResult-eUkJv9Ko.js} +17 -10
  135. package/dist/src/evaluator-DNdJF1Gv.js +3 -0
  136. package/dist/src/{evaluator-D-UIbbYq.js → evaluator-DRoiYB2q.js} +258 -132
  137. package/dist/src/evaluatorHelpers-BsYP_muT.js +511 -0
  138. package/dist/src/evaluatorHelpers-CRqTvSux.cjs +537 -0
  139. package/dist/src/evaluatorHelpers-DuqFFfq7.js +510 -0
  140. package/dist/src/{extractor-YlZbUMsL.js → extractor-BR7XAzAL.js} +5 -5
  141. package/dist/src/{extractor-Dxr2J_wK.cjs → extractor-BdxEtt3J.cjs} +6 -6
  142. package/dist/src/{extractor-DxyiFhPk.js → extractor-CIW3iN-b.js} +5 -5
  143. package/dist/src/{extractor-BM3jRERL.js → extractor-CxRtnaHl.js} +5 -5
  144. package/dist/src/{fetch-Y5qX_kST.js → fetch-BufrQtvR.js} +90 -26
  145. package/dist/src/{fetch-B6ch2nU2.js → fetch-DXUnXkVU.js} +86 -26
  146. package/dist/src/{fetch-NuqXW1Xb.cjs → fetch-Dw4XZHjj.cjs} +115 -32
  147. package/dist/src/{fetch-D9xxyC1p.js → fetch-It34O8Ur.js} +90 -26
  148. package/dist/src/fetch-_YgGd2qv.js +3 -0
  149. package/dist/src/{fileExtensions-D9h-8Wxg.cjs → fileExtensions-BhdwzYaD.cjs} +24 -1
  150. package/dist/src/{fileExtensions-BGh-W-HT.js → fileExtensions-CXRfY3Ss.js} +12 -2
  151. package/dist/src/{fileExtensions-DysCsxNG.js → fileExtensions-D4GCJ67J.js} +12 -2
  152. package/dist/src/{formatDuration-Ch4A7G3o.js → formatDuration-CMVNrYvE.js} +1 -1
  153. package/dist/src/{genaiTracer-BokHC-MW.cjs → genaiTracer-14nugQQx.cjs} +14 -2
  154. package/dist/src/{genaiTracer-C3ZPQU60.js → genaiTracer-BPVvltoW.js} +2 -2
  155. package/dist/src/{genaiTracer-DxODqT9e.js → genaiTracer-D18lYzhB.js} +2 -2
  156. package/dist/src/{genaiTracer-CFny3gOy.js → genaiTracer-jJKYsnjc.js} +2 -2
  157. package/dist/src/goat-Ckd3q3AY.js +467 -0
  158. package/dist/src/goat-Qgurm-NP.js +466 -0
  159. package/dist/src/goat-ghadEDdy.js +465 -0
  160. package/dist/src/goat-una6pZGP.cjs +469 -0
  161. package/dist/src/graders-BDT7dif6.js +3 -0
  162. package/dist/src/{graders-CgPn32yp.js → graders-BGP99PdK.js} +1017 -84
  163. package/dist/src/{graders-BoUqsCEm.js → graders-BX0f2tvS.js} +1022 -84
  164. package/dist/src/{graders-CwrbifOo.js → graders-C0nXU_ZP.js} +1020 -82
  165. package/dist/src/{graders-Bw1wk_21.cjs → graders-ClrU2fnd.cjs} +1085 -128
  166. package/dist/src/hydra-BSNZZm2M.js +543 -0
  167. package/dist/src/hydra-BxdG4nkg.js +541 -0
  168. package/dist/src/hydra-DE4xWwyc.js +542 -0
  169. package/dist/src/hydra-DrJttnvw.cjs +542 -0
  170. package/dist/src/image-B4oBtu6J.js +443 -0
  171. package/dist/src/{image-Dr_3I3nK.js → image-BN-hjLL9.js} +3 -3
  172. package/dist/src/{image-BeWaInPF.js → image-B_fPIwdg.js} +3 -3
  173. package/dist/src/image-BvUAW344.js +442 -0
  174. package/dist/src/image-Cvjwx1uY.js +442 -0
  175. package/dist/src/{image-D10dNAav.cjs → image-DfVCGPbI.cjs} +4 -4
  176. package/dist/src/{image-qjO6FWPs.js → image-QzmydkiG.js} +3 -3
  177. package/dist/src/image-X0oY4350.cjs +465 -0
  178. package/dist/src/index.cjs +688 -313
  179. package/dist/src/index.d.cts +3152 -1617
  180. package/dist/src/index.d.ts +3151 -1616
  181. package/dist/src/index.js +582 -223
  182. package/dist/src/indirectWebPwn-02ZIghCS.js +259 -0
  183. package/dist/src/indirectWebPwn-BJ22AbQa.cjs +397 -0
  184. package/dist/src/indirectWebPwn-CbjUG0rh.js +385 -0
  185. package/dist/src/indirectWebPwn-CfQJt3gk.cjs +260 -0
  186. package/dist/src/indirectWebPwn-DBQhOjoD.js +260 -0
  187. package/dist/src/indirectWebPwn-OsXnKejv.js +259 -0
  188. package/dist/src/indirectWebPwn-tNx9OZ35.js +385 -0
  189. package/dist/src/indirectWebPwn-uyWdHx04.js +386 -0
  190. package/dist/src/inputVariables-B0qUChbV.js +467 -0
  191. package/dist/src/inputVariables-DUGMb9Ka.js +464 -0
  192. package/dist/src/inputVariables-DXFdi7AI.js +468 -0
  193. package/dist/src/inputVariables-Dq9W-Z3a.cjs +475 -0
  194. package/dist/src/{interactiveCheck-CCICw2cy.js → interactiveCheck-C4QlIuoR.js} +1 -1
  195. package/dist/src/{invariant-kfQ8Bu82.cjs → invariant-QtnLD03y.cjs} +1 -1
  196. package/dist/src/iterative-CpU6i2As.js +490 -0
  197. package/dist/src/iterative-DJQEQpG3.js +491 -0
  198. package/dist/src/iterative-DQBuWM-j.cjs +493 -0
  199. package/dist/src/iterative-FTS4Bz67.js +492 -0
  200. package/dist/src/iterativeImage-BUABMVOA.js +413 -0
  201. package/dist/src/iterativeImage-ByFWkxax.cjs +415 -0
  202. package/dist/src/iterativeImage-BzUapOUi.js +414 -0
  203. package/dist/src/iterativeImage-Doz8mgxF.js +413 -0
  204. package/dist/src/iterativeMeta-B3YiAOc8.js +386 -0
  205. package/dist/src/iterativeMeta-C7APE_P1.js +385 -0
  206. package/dist/src/iterativeMeta-CSS8M6Ds.cjs +385 -0
  207. package/dist/src/iterativeMeta-DgoQ7bLh.js +384 -0
  208. package/dist/src/iterativeTree-B5zxBBSW.js +769 -0
  209. package/dist/src/iterativeTree-CNyIk0Yn.js +768 -0
  210. package/dist/src/iterativeTree-CPMF10ve.cjs +771 -0
  211. package/dist/src/iterativeTree-DvZ7GBwt.js +770 -0
  212. package/dist/src/{knowledgeBase-Dr3Kib7F.js → knowledgeBase-BadkINlJ.js} +24 -10
  213. package/dist/src/{knowledgeBase-BBETc5-S.js → knowledgeBase-Bi_8sV-H.js} +23 -9
  214. package/dist/src/{knowledgeBase-CzAi2rUI.js → knowledgeBase-CkMljjdg.js} +24 -10
  215. package/dist/src/{knowledgeBase-C8qOo26M.cjs → knowledgeBase-DUh34xba.cjs} +25 -11
  216. package/dist/src/{litellm-DRc4qWfc.js → litellm-BKBo0jpC.js} +4 -4
  217. package/dist/src/{litellm-BLSiANhk.js → litellm-BXyn5kZK.js} +4 -4
  218. package/dist/src/{litellm-DQGo_juI.js → litellm-CNcfbCfa.js} +4 -4
  219. package/dist/src/{litellm-CaUmV7Mk.cjs → litellm-CtAr7bKG.cjs} +5 -5
  220. package/dist/src/{logger-COuQb2xB.cjs → logger-cfNpzI4o.cjs} +13 -55
  221. package/dist/src/{luma-ray-B-tNZzqW.js → luma-ray-BMX1iEB6.js} +5 -5
  222. package/dist/src/{luma-ray-CtS3OlGq.js → luma-ray-CR5TSpp4.js} +5 -5
  223. package/dist/src/{luma-ray-if-Ml4R9.cjs → luma-ray-D3FUc2K3.cjs} +9 -8
  224. package/dist/src/{luma-ray-PJJgUjOc.js → luma-ray-OEMmS1RB.js} +5 -5
  225. package/dist/src/main.js +704 -208
  226. package/dist/src/memoryPoisoning-CM83NWYl.js +107 -0
  227. package/dist/src/memoryPoisoning-D8h9gXJF.js +106 -0
  228. package/dist/src/memoryPoisoning-Dp-btinn.cjs +106 -0
  229. package/dist/src/memoryPoisoning-cLuCoTuJ.js +106 -0
  230. package/dist/src/{messages-CewuNcNS.js → messages-BabO-cX8.js} +17 -9
  231. package/dist/src/{messages-BnsVHUnm.cjs → messages-DBPir0TQ.cjs} +24 -15
  232. package/dist/src/{messages-B9dSjrNf.js → messages-DGUlSNU7.js} +18 -10
  233. package/dist/src/{messages-CI69Lasb.js → messages-vsE_-Lv0.js} +18 -10
  234. package/dist/src/{meteor-CeGo0Lu2.js → meteor--TZYICTI.js} +1 -1
  235. package/dist/src/{meteor-BBGcGeCa.cjs → meteor-CR226f7Z.cjs} +2 -2
  236. package/dist/src/{meteor-Wc_aUVvu.js → meteor-Cl_yd7rJ.js} +1 -1
  237. package/dist/src/{meteor-BKTM-7KS.js → meteor-Dce-_zGQ.js} +1 -1
  238. package/dist/src/mischievousUser-0l8GD7Dp.js +46 -0
  239. package/dist/src/mischievousUser-BUOP9W5r.js +46 -0
  240. package/dist/src/mischievousUser-frFYKxu6.js +47 -0
  241. package/dist/src/mischievousUser-olGgHIVR.cjs +46 -0
  242. package/dist/src/{modelslab-BkapYJhh.cjs → modelslab-CNV5bMSk.cjs} +7 -7
  243. package/dist/src/{modelslab-zpz9JcK0.js → modelslab-Cogmu4mG.js} +6 -6
  244. package/dist/src/{modelslab-D73OnKSx.js → modelslab-Dzst7VTU.js} +6 -6
  245. package/dist/src/{modelslab-BCLOtfek.js → modelslab-EyDczZ5A.js} +6 -6
  246. package/dist/src/{nova-reel-B8F_TK5w.js → nova-reel-BGPNBOMS.js} +5 -5
  247. package/dist/src/{nova-reel-Bx0NFV2f.js → nova-reel-B_5NKFu1.js} +5 -5
  248. package/dist/src/{nova-reel-CNGJTLtG.js → nova-reel-C4eUJGse.js} +5 -5
  249. package/dist/src/{nova-reel-DkT7tnoB.cjs → nova-reel-CjJRxI1X.cjs} +9 -8
  250. package/dist/src/{nova-sonic-BaXRN1cr.js → nova-sonic-BNGmgfFz.js} +3 -3
  251. package/dist/src/{nova-sonic-BeTRaFOh.js → nova-sonic-ChPlh5na.js} +2 -2
  252. package/dist/src/{nova-sonic-CL7Zqv0G.js → nova-sonic-CrV0iaY_.js} +3 -3
  253. package/dist/src/{nova-sonic-YT426juD.cjs → nova-sonic-DuOG9Aun.cjs} +5 -4
  254. package/dist/src/{openai-Cy1XLs0c.cjs → openai-C3uXv8wS.cjs} +2 -2
  255. package/dist/src/{openai-BT-JvDse.js → openai-CJrsh9n4.js} +1 -1
  256. package/dist/src/{openai-D4fxGvRx.js → openai-zgwBb4Ff.js} +1 -1
  257. package/dist/src/{openclaw-Bq7RVR3k.js → openclaw-BIHlu_36.js} +9 -8
  258. package/dist/src/{openclaw-DObVgpjC.js → openclaw-CF7fMido.js} +9 -8
  259. package/dist/src/{openclaw-DUBZP3GL.cjs → openclaw-Dphc01BY.cjs} +17 -15
  260. package/dist/src/{openclaw-DA8U4DsD.js → openclaw-zIJAsz3P.js} +9 -8
  261. package/dist/src/{opencode-sdk-BB40Wir1.js → opencode-sdk-B3vlPLsp.js} +38 -3
  262. package/dist/src/{opencode-sdk-ChdK7F7z.js → opencode-sdk-D05JSgMQ.js} +39 -4
  263. package/dist/src/{opencode-sdk-CeqiOcOU.cjs → opencode-sdk-DoY6GbWw.cjs} +45 -9
  264. package/dist/src/{opencode-sdk-BM1UAIv1.js → opencode-sdk-sRKYHGoI.js} +39 -4
  265. package/dist/src/{otlpReceiver-UYMQx3sy.js → otlpReceiver--gTpSagc.js} +119 -3
  266. package/dist/src/{otlpReceiver-C6thJRXi.js → otlpReceiver-B2eaKC8C.js} +118 -2
  267. package/dist/src/{otlpReceiver-CcdIikOu.js → otlpReceiver-BXjcRqAM.js} +119 -3
  268. package/dist/src/{otlpReceiver-DNSQj6bf.cjs → otlpReceiver-CvJdBGSc.cjs} +125 -7
  269. package/dist/src/packageParser--MWTSrPW.js +36 -0
  270. package/dist/src/packageParser-CgE-ziRo.js +35 -0
  271. package/dist/src/packageParser-QoCS1FMl.cjs +54 -0
  272. package/dist/src/packageParser-hwwSGnAZ.js +35 -0
  273. package/dist/src/processShim-BBxt7LKO.js +95 -0
  274. package/dist/src/processShim-BcGzU8fY.js +94 -0
  275. package/dist/src/processShim-C_z3aRvF.js +94 -0
  276. package/dist/src/processShim-DSY9BV2T.cjs +98 -0
  277. package/dist/src/promptLength-0qIHyhA5.js +71 -0
  278. package/dist/src/promptLength-4X-Wd8PG.js +72 -0
  279. package/dist/src/promptLength-B9nZEfO6.js +71 -0
  280. package/dist/src/promptLength-BbBbDHNj.cjs +94 -0
  281. package/dist/src/promptfoo-BDrfT30-.js +180 -0
  282. package/dist/src/promptfoo-Cm4hiy1Y.js +180 -0
  283. package/dist/src/promptfoo-Rjp-MeBb.js +181 -0
  284. package/dist/src/promptfoo-b-baRMj-.cjs +205 -0
  285. package/dist/src/prompts-BYMtqPCw.js +259 -0
  286. package/dist/src/prompts-C-bqE1Yp.js +260 -0
  287. package/dist/src/prompts-Cp_Qx5Ml.js +270 -0
  288. package/dist/src/prompts-DHhQsANy.js +259 -0
  289. package/dist/src/prompts-D_QpZ2Dm.js +271 -0
  290. package/dist/src/prompts-hNvWBD3z.cjs +284 -0
  291. package/dist/src/prompts-huDVH2CI.js +270 -0
  292. package/dist/src/prompts-p78Hul5i.cjs +289 -0
  293. package/dist/src/{providerRegistry-BESeALrr.cjs → providerRegistry-CZO_w7ue.cjs} +2 -2
  294. package/dist/src/{providerRegistry-DoACwqhD.js → providerRegistry-DHcFiVWX.js} +1 -1
  295. package/dist/src/{providerRegistry-PMsleEzs.js → providerRegistry-ReCd0sFa.js} +1 -1
  296. package/dist/src/{providers-DT-GtF2t.js → providers-B9KzWxAX.js} +739 -11919
  297. package/dist/src/{providers-DRrerKra.js → providers-BCCz6_IX.js} +813 -11944
  298. package/dist/src/{providers-eDShy16E.cjs → providers-BDVVIQM6.cjs} +787 -12132
  299. package/dist/src/{providers-Ctcc592x.js → providers-BYAn82cf.js} +1 -1
  300. package/dist/src/{providers-CJh7iriU.js → providers-DVYRZP4E.js} +746 -11866
  301. package/dist/src/{pythonUtils-C4tltmIn.js → pythonUtils-CLCgQ9tt.js} +1 -1
  302. package/dist/src/{pythonUtils-DNqbnRdx.js → pythonUtils-CgYxeSmO.js} +2 -2
  303. package/dist/src/{pythonUtils-CoLaCwNY.cjs → pythonUtils-Cokhluq3.cjs} +7 -6
  304. package/dist/src/{pythonUtils-DMO68Jg7.js → pythonUtils-D0BYebvX.js} +2 -2
  305. package/dist/src/{quiverai-Bpx6MZ7T.cjs → quiverai-BAp6iTZD.cjs} +4 -4
  306. package/dist/src/{quiverai-CPKhWgaT.js → quiverai-BvIhI_0l.js} +3 -3
  307. package/dist/src/{quiverai-BSS9a7wV.js → quiverai-CdTWPe-A.js} +3 -3
  308. package/dist/src/{quiverai-Bk1KrvL6.js → quiverai-Cv7rJKDz.js} +3 -3
  309. package/dist/src/registry-BUJrgjwv.js +124 -0
  310. package/dist/src/registry-DXm1t_x0.js +125 -0
  311. package/dist/src/registry-Dp5EqoXc.js +124 -0
  312. package/dist/src/registry-KCVF1CFC.cjs +124 -0
  313. package/dist/src/{server-ByxbqAcQ.js → remoteGeneration-B1_XsKXU.js} +16 -147
  314. package/dist/src/{server-gyd6d4Hc.js → remoteGeneration-COpWcmWd.js} +15 -108
  315. package/dist/src/{server-BEECpeGG.cjs → remoteGeneration-DS9N3pgB.cjs} +30 -119
  316. package/dist/src/remoteGeneration-DsaSwmG2.js +217 -0
  317. package/dist/src/render-BNTrbmBw.cjs +384 -0
  318. package/dist/src/render-CSP99NLm.js +348 -0
  319. package/dist/src/render-DFfDeYUK.js +347 -0
  320. package/dist/src/{render-nj-UaPdn.js → render-DznWrxGO.js} +2 -2
  321. package/dist/src/render-_6ur1fhE.js +347 -0
  322. package/dist/src/resourceAttributes-D1jP3kL5.js +17 -0
  323. package/dist/src/resourceAttributes-DQbBB--2.js +16 -0
  324. package/dist/src/resourceAttributes-ephgOvdR.cjs +27 -0
  325. package/dist/src/resourceAttributes-v6-I67fn.js +16 -0
  326. package/dist/src/{responses-CF-ayauu.cjs → responses-1UFFF9N_.cjs} +12 -11
  327. package/dist/src/{responses-B8haB-mD.js → responses-B3W2JvOQ.js} +9 -9
  328. package/dist/src/{responses-1ztiVYsx.js → responses-B6ktc3Ra.js} +7 -7
  329. package/dist/src/{responses-BiaBguAu.js → responses-URRzV8qE.js} +9 -9
  330. package/dist/src/rolldown-runtime-D_mwlA32.cjs +43 -0
  331. package/dist/src/rubyUtils-BYVlQ94c.js +3 -0
  332. package/dist/src/{rubyUtils-CIQFnVz4.js → rubyUtils-CXlFM2rR.js} +2 -2
  333. package/dist/src/{rubyUtils-BI0p46eZ.js → rubyUtils-CnlW8AYb.js} +2 -2
  334. package/dist/src/{rubyUtils-DoifqkiA.cjs → rubyUtils-CqUWBZAt.cjs} +16 -26
  335. package/dist/src/{rubyUtils-DGnoCYL2.js → rubyUtils-DdGojpfv.js} +1 -1
  336. package/dist/src/runtimeTransform-BJOpL9Yc.js +142 -0
  337. package/dist/src/runtimeTransform-Dgh_D7DU.js +143 -0
  338. package/dist/src/runtimeTransform-DigbjU1r.js +142 -0
  339. package/dist/src/runtimeTransform-ON3YYILw.cjs +147 -0
  340. package/dist/src/{sagemaker-ClS_NB07.js → sagemaker-CujrzP1a.js} +61 -50
  341. package/dist/src/{sagemaker-ljtY12VM.cjs → sagemaker-DzffAqo_.cjs} +65 -53
  342. package/dist/src/{sagemaker-C5T60MKf.js → sagemaker-vhtSV7JI.js} +61 -50
  343. package/dist/src/{sagemaker-BDLeW29y.js → sagemaker-yr1QKeBs.js} +61 -50
  344. package/dist/src/{scanner-nOCWNIXa.js → scanner-DS0109SS.js} +6 -6
  345. package/dist/src/server/index.js +4147 -449
  346. package/dist/src/server-B8rqV126.cjs +126 -0
  347. package/dist/src/server-BaLytskk.js +3 -0
  348. package/dist/src/server-CMJD10J4.js +107 -0
  349. package/dist/src/server-Ddp8GNMp.js +146 -0
  350. package/dist/src/server-DhMHosWj.js +182 -0
  351. package/dist/src/shared-7pmVZLNO.js +1334 -0
  352. package/dist/src/shared-9WHQ1oNE.js +1335 -0
  353. package/dist/src/{fileExtensions-8CjoL7vB.js → shared-BoG7qLMv.js} +12 -2
  354. package/dist/src/shared-D6IjElRI.js +1334 -0
  355. package/dist/src/shared-WkgnDkcg.cjs +1436 -0
  356. package/dist/src/{signal-DTtUuU3l.js → signal-CSurUUyV.js} +2 -2
  357. package/dist/src/simulatedUser-C9aQObBI.js +222 -0
  358. package/dist/src/simulatedUser-Cu601Dd4.cjs +227 -0
  359. package/dist/src/simulatedUser-U_qAHnuB.js +222 -0
  360. package/dist/src/simulatedUser-p3tACcmw.js +223 -0
  361. package/dist/src/{slack-Bamy_7te.js → slack-Bapo-7_8.js} +1 -1
  362. package/dist/src/{slack-BLlsDpfG.cjs → slack-DMC1QVEg.cjs} +3 -2
  363. package/dist/src/{slack-BPYLQLgb.js → slack-DTEFhrMn.js} +1 -1
  364. package/dist/src/{slack-4zZX1OKP.js → slack-k-_CP84Q.js} +1 -1
  365. package/dist/src/storage-BU4qcnOb.js +875 -0
  366. package/dist/src/storage-CA-v9V2v.cjs +911 -0
  367. package/dist/src/storage-CD-GWAdx.js +822 -0
  368. package/dist/src/storage-QdU-SmvD.js +834 -0
  369. package/dist/src/{store-2K0kDi80.cjs → store-B2NDDooM.cjs} +60 -24
  370. package/dist/src/{store-CPh25336.js → store-DKd5592Q.js} +50 -19
  371. package/dist/src/{store-BPkzEyFM.js → store-HpopRVzl.js} +50 -19
  372. package/dist/src/store-IbiRIF3k.js +3 -0
  373. package/dist/src/strategies-7CS3Alao.cjs +2360 -0
  374. package/dist/src/strategies-CiSeroPH.js +2331 -0
  375. package/dist/src/strategies-DRJjGTIY.js +2333 -0
  376. package/dist/src/{tables-WgdUZ8Ck.js → tables-CRSXQ2Ke.js} +2 -2
  377. package/dist/src/{tables-BMSOS2Gg.js → tables-CxjU7bBd.js} +2 -2
  378. package/dist/src/{tables-CXbaZ9y1.cjs → tables-DBIJU0WE.cjs} +6 -5
  379. package/dist/src/{tables-NlvH23ky.js → tables-DafUHOeh.js} +2 -2
  380. package/dist/src/{telemetry-DWdGHvEf.js → telemetry-00ezXr_t.js} +4 -4
  381. package/dist/src/telemetry-ByPqDcKC.js +3 -0
  382. package/dist/src/{telemetry-CEQxGnMZ.cjs → telemetry-CJ7FnCsc.cjs} +15 -9
  383. package/dist/src/{telemetry--iqaGyaS.js → telemetry-DmXYcJNV.js} +4 -4
  384. package/dist/src/{telemetry-CgdVGV8N.js → telemetry-DwX9XUN5.js} +4 -4
  385. package/dist/src/{text-DDQP0tuQ.js → text-CZr46tp_.js} +1 -1
  386. package/dist/src/{text-D4lz-Jg_.js → text-Db-Wt2u2.js} +1 -1
  387. package/dist/src/{text-NWvfMfkF.js → text-DwYK5EBn.js} +1 -1
  388. package/dist/src/{text-BiNME7QG.cjs → text-nywWsRBM.cjs} +1 -1
  389. package/dist/src/{tokenUsageUtils-2wIvAhB3.js → tokenUsageUtils-CDet74yk.js} +1 -1
  390. package/dist/src/{tokenUsageUtils-4c780gFd.js → tokenUsageUtils-CmnQ0G2m.js} +1 -1
  391. package/dist/src/{tokenUsageUtils-C9odhsbW.cjs → tokenUsageUtils-_B-P8IAi.cjs} +1 -1
  392. package/dist/src/toolAttributes-BAjwcBf0.cjs +103 -0
  393. package/dist/src/toolAttributes-COVgDrBG.js +87 -0
  394. package/dist/src/toolAttributes-DJ9ZEKXD.js +86 -0
  395. package/dist/src/tracingOptions-BnwKCkSB.js +221 -0
  396. package/dist/src/tracingOptions-Chi74lOD.js +219 -0
  397. package/dist/src/tracingOptions-DrbSFaKy.cjs +249 -0
  398. package/dist/src/tracingOptions-ji2OuXbT.js +220 -0
  399. package/dist/src/{transcription-84t4ALo2.js → transcription-B8uIgCYX.js} +5 -5
  400. package/dist/src/{transcription-Bm2emLmJ.js → transcription-CfU5loSq.js} +5 -5
  401. package/dist/src/{transcription-D7Q0vJsh.js → transcription-Dkd22_4K.js} +4 -4
  402. package/dist/src/{transcription-CZ4LG5hQ.cjs → transcription-mzuf18Mq.cjs} +9 -8
  403. package/dist/src/{transform-DtooZqYY.js → transform-BIMynQsA.js} +8 -8
  404. package/dist/src/transform-BnSTnFlp.js +187 -0
  405. package/dist/src/transform-BnSXWmU_2.cjs +221 -0
  406. package/dist/src/transform-CGt7Kt3y2.js +186 -0
  407. package/dist/src/transform-CrPGTsij.js +186 -0
  408. package/dist/src/{transform-Dg4LcO1Y.cjs → transform-DhNkAUs8.cjs} +12 -11
  409. package/dist/src/{transform-_DpNB4qp.js → transform-DmvYBRll.js} +8 -8
  410. package/dist/src/{transform-B-b6Cq-q.js → transform-EtD4jAWi.js} +8 -8
  411. package/dist/src/{transformersAvailability-lvCCvuPT.js → transformersAvailability-0ThtPved.js} +1 -1
  412. package/dist/src/transformersAvailability-BYydDE5U.js +35 -0
  413. package/dist/src/{transformersAvailability-rJGPccjr.js → transformersAvailability-BvyU9vDD.js} +1 -1
  414. package/dist/src/{transformersAvailability-B22swDxr.cjs → transformersAvailability-BytPvKUW.cjs} +1 -1
  415. package/dist/src/{types-BVH9hjgW.js → types-BFevViUY.js} +113 -19
  416. package/dist/src/{types-BDjGOq4E.js → types-BJQBBPTP.js} +113 -19
  417. package/dist/src/{types-CgG2rKiW.cjs → types-CxJvaY2S.cjs} +211 -28
  418. package/dist/src/{types-DNRZVOue.js → types-D6glLbdF.js} +125 -26
  419. package/dist/src/{util-DFPeFkiV.js → util--WMgw7wM.js} +28 -8
  420. package/dist/src/{util-C-kmRosx.js → util-5WnCSb0h.js} +9 -7
  421. package/dist/src/{util-A5_ZsQUn.cjs → util-BSIuSLVK.cjs} +12 -9
  422. package/dist/src/{util-Dub0f_ej.js → util-Bx677_k2.js} +17 -10
  423. package/dist/src/util-CN8om2rz.cjs +386 -0
  424. package/dist/src/{util-DN0-b81k.js → util-CoQWM76y.js} +28 -8
  425. package/dist/src/util-DNl96nNs.js +327 -0
  426. package/dist/src/{util-BQOCAHQC.js → util-DURocbYR.js} +46 -11
  427. package/dist/src/util-Df8YMvS1.js +327 -0
  428. package/dist/src/{util-BVXcTwXu.js → util-DiQ3QvBB.js} +28 -8
  429. package/dist/src/{util-3pBZZb_H.js → util-I-Rf-KaD.js} +45 -10
  430. package/dist/src/{util-Dpmm_dAI.cjs → util-IYzs5Y04.cjs} +33 -7
  431. package/dist/src/{util-BlFVL0UF.js → util-LKTmNsMQ.js} +9 -7
  432. package/dist/src/{util-DvpHnLt0.cjs → util-SPsvFONY.cjs} +29 -21
  433. package/dist/src/{util-B9CNhyac.js → util-efByNxcr.js} +9 -7
  434. package/dist/src/util-kDURhgJW.js +328 -0
  435. package/dist/src/{utils-BUMN8orw.js → utils-B0lzitHZ.js} +2 -2
  436. package/dist/src/{utils-kt7lv30R.js → utils-BFOh20Gb.js} +2 -2
  437. package/dist/src/{utils-o8S5huU2.js → utils-BGY69tk_.js} +2 -2
  438. package/dist/src/{utils-DkVeShIB.cjs → utils-Ve6kuJsa.cjs} +3 -3
  439. package/dist/src/{version-CbuBKu2U.js → version-BK20a4sw.js} +2 -2
  440. package/dist/src/{version-D9zu9FWB.cjs → version-BWCSaByA.cjs} +2 -2
  441. package/dist/src/{version-CbpiUINz.js → version-eRkNuGv8.js} +2 -2
  442. package/dist/src/{version-0frU0UTr.js → version-lpHV_53E.js} +2 -2
  443. package/dist/tsconfig.tsbuildinfo +1 -1
  444. package/package.json +48 -22
  445. package/dist/src/app/assets/Report-vjzrbgce.js +0 -1
  446. package/dist/src/app/assets/index-B3NQ8HTd.js +0 -385
  447. package/dist/src/app/assets/index-Cli2yAXv.css +0 -1
  448. package/dist/src/app/assets/sync-IjzpWrOE.js +0 -4
  449. package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +0 -36
  450. package/dist/src/cache-BRkhlH3k.cjs +0 -3
  451. package/dist/src/cache-BlC6aeJ0.js +0 -3
  452. package/dist/src/cloud-CoD5OacT.js +0 -3
  453. package/dist/src/codex-sdk-1jm_qPHf.js +0 -3
  454. package/dist/src/codex-sdk-Danroptg.cjs +0 -2
  455. package/dist/src/evalResult-BBJAHAtw.cjs +0 -2
  456. package/dist/src/evalResult-BBK58h2B.js +0 -3
  457. package/dist/src/evalResult-spPqh1G_.js +0 -2
  458. package/dist/src/evaluator-DgLKaZk8.js +0 -3
  459. package/dist/src/fetch-8viavNv8.js +0 -3
  460. package/dist/src/graders-C84JI-m5.js +0 -2
  461. package/dist/src/graders-CBbd0K0Q.cjs +0 -2
  462. package/dist/src/graders-CbQqpHSN.js +0 -3
  463. package/dist/src/graders-DS42d3ZG.js +0 -2
  464. package/dist/src/image-BmilRNqO.js +0 -258
  465. package/dist/src/image-CxJoa3aW.cjs +0 -280
  466. package/dist/src/image-DsGRlkh7.js +0 -257
  467. package/dist/src/image-a_SGUobh.js +0 -257
  468. package/dist/src/providers-BuyzKt7C.js +0 -2
  469. package/dist/src/providers-C7lNVBjX.cjs +0 -3
  470. package/dist/src/providers-CCE2COJi2.js +0 -2
  471. package/dist/src/render-7uNJ2V14.js +0 -135
  472. package/dist/src/render-DlscvAUJ.js +0 -135
  473. package/dist/src/render-eui5p5mL.js +0 -136
  474. package/dist/src/render-tG6ir9_g.cjs +0 -165
  475. package/dist/src/rubyUtils-4hjGxvju.js +0 -3
  476. package/dist/src/rubyUtils-CO-tuszQ.cjs +0 -2
  477. package/dist/src/server-ByiF3qlg.js +0 -386
  478. package/dist/src/server-C0XKRNB_.cjs +0 -2
  479. package/dist/src/server-C_15p79-.js +0 -3
  480. package/dist/src/store-2OXm_eBY.js +0 -240
  481. package/dist/src/store-BELqNwvz.js +0 -3
  482. package/dist/src/store-uQZ4AjPe.cjs +0 -2
  483. package/dist/src/telemetry-DjNoC_n3.cjs +0 -2
  484. package/dist/src/telemetry-ZdPZc0fm.js +0 -3
  485. package/dist/src/transform-BQt0BeAW.js +0 -3
  486. package/dist/src/transform-Bq5oqC0s.cjs +0 -2
  487. package/dist/src/transform-C9izGX54.cjs +0 -228
  488. package/dist/src/transform-CwbAZ84V.js +0 -216
  489. package/dist/src/transform-DzCF-wqV.js +0 -213
  490. package/dist/src/transform-eGiUAv86.js +0 -216
@@ -0,0 +1,94 @@
1
+ const require_logger = require("./logger-cfNpzI4o.cjs");
2
+ //#region src/redteam/shared/promptLength.ts
3
+ const MAX_CHARS_PER_MESSAGE_MODIFIER_KEY = "maxCharsPerMessage";
4
+ function isRecord(value) {
5
+ return typeof value === "object" && value !== null;
6
+ }
7
+ function getMaxCharsPerMessage(limit) {
8
+ const maxCharsPerMessage = limit ?? require_logger.state.config?.redteam?.maxCharsPerMessage;
9
+ if (typeof maxCharsPerMessage !== "number" || !Number.isInteger(maxCharsPerMessage) || maxCharsPerMessage <= 0) return;
10
+ return maxCharsPerMessage;
11
+ }
12
+ function parseChatMessages(prompt) {
13
+ try {
14
+ const parsed = JSON.parse(prompt);
15
+ if (Array.isArray(parsed) && parsed.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string")) return parsed.map((message, index) => ({
16
+ content: message.content,
17
+ path: `[${index}].content`,
18
+ role: message.role
19
+ }));
20
+ if (isRecord(parsed) && parsed._promptfoo_audio_hybrid === true && (parsed.history === void 0 || Array.isArray(parsed.history)) && isRecord(parsed.currentTurn) && typeof parsed.currentTurn.role === "string" && typeof parsed.currentTurn.transcript === "string" && (parsed.history === void 0 || parsed.history.every((item) => isRecord(item) && typeof item.role === "string" && typeof item.content === "string"))) return [...(parsed.history ?? []).map((message, index) => ({
21
+ content: message.content,
22
+ path: `history[${index}].content`,
23
+ role: message.role
24
+ })), {
25
+ content: parsed.currentTurn.transcript,
26
+ path: "currentTurn.transcript",
27
+ role: parsed.currentTurn.role
28
+ }];
29
+ } catch {}
30
+ }
31
+ function getPromptLengthViolation(prompt, limit) {
32
+ const maxCharsPerMessage = getMaxCharsPerMessage(limit);
33
+ if (!maxCharsPerMessage) return;
34
+ const messages = parseChatMessages(prompt);
35
+ if (messages) {
36
+ const oversizedMessage = messages.find((message) => message.role === "user" && message.content.length > maxCharsPerMessage);
37
+ return oversizedMessage ? {
38
+ length: oversizedMessage.content.length,
39
+ limit: maxCharsPerMessage,
40
+ path: oversizedMessage.path
41
+ } : void 0;
42
+ }
43
+ if (prompt.length <= maxCharsPerMessage) return;
44
+ return {
45
+ length: prompt.length,
46
+ limit: maxCharsPerMessage,
47
+ path: "prompt"
48
+ };
49
+ }
50
+ function getMaxCharsPerMessageModifierValue(limit) {
51
+ const maxCharsPerMessage = getMaxCharsPerMessage(limit);
52
+ if (!maxCharsPerMessage) return;
53
+ return `Each generated user message must be ${maxCharsPerMessage} characters or fewer.`;
54
+ }
55
+ function getGeneratedPromptOverLimit(prompt, limit) {
56
+ const violation = getPromptLengthViolation(prompt, limit);
57
+ if (!violation) return;
58
+ return {
59
+ length: violation.length,
60
+ limit: violation.limit
61
+ };
62
+ }
63
+ function throwIfTargetPromptExceedsMaxChars(prompt, limit) {
64
+ const violation = getPromptLengthViolation(prompt, limit);
65
+ if (!violation) return;
66
+ throw new Error(`Target prompt message at ${violation.path} exceeds maxCharsPerMessage=${violation.limit}: ${violation.length} characters.`);
67
+ }
68
+ //#endregion
69
+ Object.defineProperty(exports, "MAX_CHARS_PER_MESSAGE_MODIFIER_KEY", {
70
+ enumerable: true,
71
+ get: function() {
72
+ return MAX_CHARS_PER_MESSAGE_MODIFIER_KEY;
73
+ }
74
+ });
75
+ Object.defineProperty(exports, "getGeneratedPromptOverLimit", {
76
+ enumerable: true,
77
+ get: function() {
78
+ return getGeneratedPromptOverLimit;
79
+ }
80
+ });
81
+ Object.defineProperty(exports, "getMaxCharsPerMessageModifierValue", {
82
+ enumerable: true,
83
+ get: function() {
84
+ return getMaxCharsPerMessageModifierValue;
85
+ }
86
+ });
87
+ Object.defineProperty(exports, "throwIfTargetPromptExceedsMaxChars", {
88
+ enumerable: true,
89
+ get: function() {
90
+ return throwIfTargetPromptExceedsMaxChars;
91
+ }
92
+ });
93
+
94
+ //# sourceMappingURL=promptLength-BbBbDHNj.cjs.map
@@ -0,0 +1,180 @@
1
+ import { a as logger } from "./logger-KD8JjCRJ.js";
2
+ import { n as fetchWithRetries, v as REQUEST_TIMEOUT_MS } from "./fetch-BufrQtvR.js";
3
+ import { n as VERSION } from "./version-BK20a4sw.js";
4
+ import { o as getUserEmail } from "./accounts-DanM1wq_.js";
5
+ import { c as neverGenerateRemoteForRegularEvals, i as getRemoteGenerationUrlForUnaligned, r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-COpWcmWd.js";
6
+ import dedent from "dedent";
7
+ //#region src/providers/promptfoo.ts
8
+ /**
9
+ * Provider for generating harmful/adversarial content using Promptfoo's unaligned models.
10
+ * Used by red team plugins to generate test cases for harmful content categories.
11
+ */
12
+ var PromptfooHarmfulCompletionProvider = class {
13
+ harmCategory;
14
+ n;
15
+ purpose;
16
+ config;
17
+ constructor(options) {
18
+ this.harmCategory = options.harmCategory;
19
+ this.n = options.n;
20
+ this.purpose = options.purpose;
21
+ this.config = options.config;
22
+ }
23
+ id() {
24
+ return `promptfoo:redteam:${this.harmCategory}`;
25
+ }
26
+ toString() {
27
+ return `[Promptfoo Harmful Completion Provider ${this.purpose} - ${this.harmCategory}]`;
28
+ }
29
+ async callApi(_prompt, _context, callApiOptions) {
30
+ if (neverGenerateRemote()) return { error: dedent`
31
+ Remote generation is disabled. Harmful content generation requires Promptfoo's unaligned models.
32
+
33
+ To enable:
34
+ - Remove PROMPTFOO_DISABLE_REMOTE_GENERATION (or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION)
35
+ - Or configure an alternative unaligned model provider
36
+
37
+ Learn more: https://www.promptfoo.dev/docs/red-team/configuration#remote-generation
38
+ ` };
39
+ const body = {
40
+ email: getUserEmail(),
41
+ harmCategory: this.harmCategory,
42
+ n: this.n,
43
+ purpose: this.purpose,
44
+ version: VERSION,
45
+ config: this.config
46
+ };
47
+ try {
48
+ logger.debug(`[HarmfulCompletionProvider] Calling generate harmful API (${getRemoteGenerationUrlForUnaligned()}) with body: ${JSON.stringify(body)}`);
49
+ const response = await fetchWithRetries(getRemoteGenerationUrlForUnaligned(), {
50
+ method: "POST",
51
+ headers: { "Content-Type": "application/json" },
52
+ body: JSON.stringify(body),
53
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
54
+ }, 58e4, 2);
55
+ if (!response.ok) throw new Error(`API call failed with status ${response.status}: ${await response.text()}`);
56
+ const data = await response.json();
57
+ return { output: (Array.isArray(data.output) ? data.output : [data.output]).filter((item) => typeof item === "string" && item.length > 0) };
58
+ } catch (err) {
59
+ if (err instanceof Error && err.name === "AbortError") throw err;
60
+ logger.info(`[HarmfulCompletionProvider] ${err}`);
61
+ return { error: `[HarmfulCompletionProvider] ${err}` };
62
+ }
63
+ }
64
+ };
65
+ /**
66
+ * Provider for red team adversarial strategies using Promptfoo's task-specific models.
67
+ * Supports multi-turn attack strategies like crescendo, goat, and iterative attacks.
68
+ */
69
+ var PromptfooChatCompletionProvider = class {
70
+ options;
71
+ constructor(options) {
72
+ this.options = options;
73
+ }
74
+ id() {
75
+ return this.options.id || "promptfoo:chatcompletion";
76
+ }
77
+ toString() {
78
+ return `[Promptfoo Chat Completion Provider]`;
79
+ }
80
+ async callApi(prompt, context, callApiOptions) {
81
+ if (neverGenerateRemote()) return { error: dedent`
82
+ Remote generation is disabled. This red team strategy requires Promptfoo's task-specific models.
83
+
84
+ To enable:
85
+ - Remove PROMPTFOO_DISABLE_REMOTE_GENERATION (or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION)
86
+ - Or provide OPENAI_API_KEY for local generation (may have lower quality)
87
+
88
+ Learn more: https://www.promptfoo.dev/docs/red-team/configuration#remote-generation
89
+ ` };
90
+ const body = {
91
+ jsonOnly: this.options.jsonOnly,
92
+ preferSmallModel: this.options.preferSmallModel,
93
+ prompt,
94
+ step: context?.prompt.label,
95
+ task: this.options.task,
96
+ email: getUserEmail(),
97
+ ...this.options.inputs && { inputs: this.options.inputs }
98
+ };
99
+ try {
100
+ const response = await fetchWithRetries(getRemoteGenerationUrl(), {
101
+ method: "POST",
102
+ headers: { "Content-Type": "application/json" },
103
+ body: JSON.stringify(body),
104
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
105
+ }, REQUEST_TIMEOUT_MS);
106
+ const data = await response.json();
107
+ if (!data.result) {
108
+ logger.debug(`Error from promptfoo completion provider. Status: ${response.status} ${response.statusText} ${JSON.stringify(data)} `);
109
+ return { error: "LLM did not return a result, likely refusal" };
110
+ }
111
+ return {
112
+ output: data.result,
113
+ tokenUsage: data.tokenUsage
114
+ };
115
+ } catch (err) {
116
+ if (err instanceof Error && err.name === "AbortError") throw err;
117
+ return { error: `API call error: ${String(err)}` };
118
+ }
119
+ }
120
+ };
121
+ const REDTEAM_SIMULATED_USER_TASK_ID = "mischievous-user-redteam";
122
+ /**
123
+ * Provider for simulating realistic user conversations using Promptfoo's conversation models.
124
+ * Supports both regular simulated users and adversarial red team users.
125
+ */
126
+ var PromptfooSimulatedUserProvider = class {
127
+ options;
128
+ taskId;
129
+ constructor(options = {}, taskId) {
130
+ this.options = options;
131
+ this.taskId = taskId;
132
+ }
133
+ id() {
134
+ return this.options.id || "promptfoo:agent";
135
+ }
136
+ toString() {
137
+ return "[Promptfoo Agent Provider]";
138
+ }
139
+ async callApi(prompt, _context, callApiOptions) {
140
+ const isRedteamTask = this.taskId === REDTEAM_SIMULATED_USER_TASK_ID;
141
+ if (isRedteamTask ? neverGenerateRemote() : neverGenerateRemoteForRegularEvals()) return { error: dedent`
142
+ Remote generation is disabled.
143
+
144
+ SimulatedUser requires Promptfoo's conversation simulation models.
145
+
146
+ To enable, remove ${isRedteamTask ? "PROMPTFOO_DISABLE_REMOTE_GENERATION or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION" : "PROMPTFOO_DISABLE_REMOTE_GENERATION"}
147
+
148
+ Learn more: ${isRedteamTask ? "https://www.promptfoo.dev/docs/red-team/configuration#remote-generation" : "https://www.promptfoo.dev/docs/providers/simulated-user#remote-generation"}
149
+ ` };
150
+ const messages = JSON.parse(prompt);
151
+ const body = {
152
+ task: this.taskId,
153
+ instructions: this.options.instructions,
154
+ history: messages,
155
+ email: getUserEmail(),
156
+ version: VERSION
157
+ };
158
+ try {
159
+ const response = await fetchWithRetries(getRemoteGenerationUrl(), {
160
+ method: "POST",
161
+ headers: { "Content-Type": "application/json" },
162
+ body: JSON.stringify(body),
163
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
164
+ }, REQUEST_TIMEOUT_MS);
165
+ if (!response.ok) throw new Error(`API call failed with status ${response.status}: ${await response.text()}`);
166
+ const data = await response.json();
167
+ return {
168
+ output: data.result,
169
+ tokenUsage: data.tokenUsage
170
+ };
171
+ } catch (err) {
172
+ if (err instanceof Error && err.name === "AbortError") throw err;
173
+ return { error: `API call error: ${String(err)}` };
174
+ }
175
+ }
176
+ };
177
+ //#endregion
178
+ export { REDTEAM_SIMULATED_USER_TASK_ID as i, PromptfooHarmfulCompletionProvider as n, PromptfooSimulatedUserProvider as r, PromptfooChatCompletionProvider as t };
179
+
180
+ //# sourceMappingURL=promptfoo-BDrfT30-.js.map
@@ -0,0 +1,180 @@
1
+ import { a as logger } from "./logger-Ct2S6Yx-.js";
2
+ import { n as fetchWithRetries, p as REQUEST_TIMEOUT_MS } from "./fetch-It34O8Ur.js";
3
+ import { n as VERSION } from "./version-lpHV_53E.js";
4
+ import { i as getUserEmail } from "./accounts-Ca7WIoPY.js";
5
+ import { c as neverGenerateRemoteForRegularEvals, i as getRemoteGenerationUrlForUnaligned, r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-DsaSwmG2.js";
6
+ import dedent from "dedent";
7
+ //#region src/providers/promptfoo.ts
8
+ /**
9
+ * Provider for generating harmful/adversarial content using Promptfoo's unaligned models.
10
+ * Used by red team plugins to generate test cases for harmful content categories.
11
+ */
12
+ var PromptfooHarmfulCompletionProvider = class {
13
+ harmCategory;
14
+ n;
15
+ purpose;
16
+ config;
17
+ constructor(options) {
18
+ this.harmCategory = options.harmCategory;
19
+ this.n = options.n;
20
+ this.purpose = options.purpose;
21
+ this.config = options.config;
22
+ }
23
+ id() {
24
+ return `promptfoo:redteam:${this.harmCategory}`;
25
+ }
26
+ toString() {
27
+ return `[Promptfoo Harmful Completion Provider ${this.purpose} - ${this.harmCategory}]`;
28
+ }
29
+ async callApi(_prompt, _context, callApiOptions) {
30
+ if (neverGenerateRemote()) return { error: dedent`
31
+ Remote generation is disabled. Harmful content generation requires Promptfoo's unaligned models.
32
+
33
+ To enable:
34
+ - Remove PROMPTFOO_DISABLE_REMOTE_GENERATION (or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION)
35
+ - Or configure an alternative unaligned model provider
36
+
37
+ Learn more: https://www.promptfoo.dev/docs/red-team/configuration#remote-generation
38
+ ` };
39
+ const body = {
40
+ email: getUserEmail(),
41
+ harmCategory: this.harmCategory,
42
+ n: this.n,
43
+ purpose: this.purpose,
44
+ version: VERSION,
45
+ config: this.config
46
+ };
47
+ try {
48
+ logger.debug(`[HarmfulCompletionProvider] Calling generate harmful API (${getRemoteGenerationUrlForUnaligned()}) with body: ${JSON.stringify(body)}`);
49
+ const response = await fetchWithRetries(getRemoteGenerationUrlForUnaligned(), {
50
+ method: "POST",
51
+ headers: { "Content-Type": "application/json" },
52
+ body: JSON.stringify(body),
53
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
54
+ }, 58e4, 2);
55
+ if (!response.ok) throw new Error(`API call failed with status ${response.status}: ${await response.text()}`);
56
+ const data = await response.json();
57
+ return { output: (Array.isArray(data.output) ? data.output : [data.output]).filter((item) => typeof item === "string" && item.length > 0) };
58
+ } catch (err) {
59
+ if (err instanceof Error && err.name === "AbortError") throw err;
60
+ logger.info(`[HarmfulCompletionProvider] ${err}`);
61
+ return { error: `[HarmfulCompletionProvider] ${err}` };
62
+ }
63
+ }
64
+ };
65
+ /**
66
+ * Provider for red team adversarial strategies using Promptfoo's task-specific models.
67
+ * Supports multi-turn attack strategies like crescendo, goat, and iterative attacks.
68
+ */
69
+ var PromptfooChatCompletionProvider = class {
70
+ options;
71
+ constructor(options) {
72
+ this.options = options;
73
+ }
74
+ id() {
75
+ return this.options.id || "promptfoo:chatcompletion";
76
+ }
77
+ toString() {
78
+ return `[Promptfoo Chat Completion Provider]`;
79
+ }
80
+ async callApi(prompt, context, callApiOptions) {
81
+ if (neverGenerateRemote()) return { error: dedent`
82
+ Remote generation is disabled. This red team strategy requires Promptfoo's task-specific models.
83
+
84
+ To enable:
85
+ - Remove PROMPTFOO_DISABLE_REMOTE_GENERATION (or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION)
86
+ - Or provide OPENAI_API_KEY for local generation (may have lower quality)
87
+
88
+ Learn more: https://www.promptfoo.dev/docs/red-team/configuration#remote-generation
89
+ ` };
90
+ const body = {
91
+ jsonOnly: this.options.jsonOnly,
92
+ preferSmallModel: this.options.preferSmallModel,
93
+ prompt,
94
+ step: context?.prompt.label,
95
+ task: this.options.task,
96
+ email: getUserEmail(),
97
+ ...this.options.inputs && { inputs: this.options.inputs }
98
+ };
99
+ try {
100
+ const response = await fetchWithRetries(getRemoteGenerationUrl(), {
101
+ method: "POST",
102
+ headers: { "Content-Type": "application/json" },
103
+ body: JSON.stringify(body),
104
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
105
+ }, REQUEST_TIMEOUT_MS);
106
+ const data = await response.json();
107
+ if (!data.result) {
108
+ logger.debug(`Error from promptfoo completion provider. Status: ${response.status} ${response.statusText} ${JSON.stringify(data)} `);
109
+ return { error: "LLM did not return a result, likely refusal" };
110
+ }
111
+ return {
112
+ output: data.result,
113
+ tokenUsage: data.tokenUsage
114
+ };
115
+ } catch (err) {
116
+ if (err instanceof Error && err.name === "AbortError") throw err;
117
+ return { error: `API call error: ${String(err)}` };
118
+ }
119
+ }
120
+ };
121
+ const REDTEAM_SIMULATED_USER_TASK_ID = "mischievous-user-redteam";
122
+ /**
123
+ * Provider for simulating realistic user conversations using Promptfoo's conversation models.
124
+ * Supports both regular simulated users and adversarial red team users.
125
+ */
126
+ var PromptfooSimulatedUserProvider = class {
127
+ options;
128
+ taskId;
129
+ constructor(options = {}, taskId) {
130
+ this.options = options;
131
+ this.taskId = taskId;
132
+ }
133
+ id() {
134
+ return this.options.id || "promptfoo:agent";
135
+ }
136
+ toString() {
137
+ return "[Promptfoo Agent Provider]";
138
+ }
139
+ async callApi(prompt, _context, callApiOptions) {
140
+ const isRedteamTask = this.taskId === REDTEAM_SIMULATED_USER_TASK_ID;
141
+ if (isRedteamTask ? neverGenerateRemote() : neverGenerateRemoteForRegularEvals()) return { error: dedent`
142
+ Remote generation is disabled.
143
+
144
+ SimulatedUser requires Promptfoo's conversation simulation models.
145
+
146
+ To enable, remove ${isRedteamTask ? "PROMPTFOO_DISABLE_REMOTE_GENERATION or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION" : "PROMPTFOO_DISABLE_REMOTE_GENERATION"}
147
+
148
+ Learn more: ${isRedteamTask ? "https://www.promptfoo.dev/docs/red-team/configuration#remote-generation" : "https://www.promptfoo.dev/docs/providers/simulated-user#remote-generation"}
149
+ ` };
150
+ const messages = JSON.parse(prompt);
151
+ const body = {
152
+ task: this.taskId,
153
+ instructions: this.options.instructions,
154
+ history: messages,
155
+ email: getUserEmail(),
156
+ version: VERSION
157
+ };
158
+ try {
159
+ const response = await fetchWithRetries(getRemoteGenerationUrl(), {
160
+ method: "POST",
161
+ headers: { "Content-Type": "application/json" },
162
+ body: JSON.stringify(body),
163
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
164
+ }, REQUEST_TIMEOUT_MS);
165
+ if (!response.ok) throw new Error(`API call failed with status ${response.status}: ${await response.text()}`);
166
+ const data = await response.json();
167
+ return {
168
+ output: data.result,
169
+ tokenUsage: data.tokenUsage
170
+ };
171
+ } catch (err) {
172
+ if (err instanceof Error && err.name === "AbortError") throw err;
173
+ return { error: `API call error: ${String(err)}` };
174
+ }
175
+ }
176
+ };
177
+ //#endregion
178
+ export { REDTEAM_SIMULATED_USER_TASK_ID as i, PromptfooHarmfulCompletionProvider as n, PromptfooSimulatedUserProvider as r, PromptfooChatCompletionProvider as t };
179
+
180
+ //# sourceMappingURL=promptfoo-Cm4hiy1Y.js.map
@@ -0,0 +1,181 @@
1
+ #!/usr/bin/env node
2
+ import { s as logger } from "./logger-BbY6ypFL.js";
3
+ import { _ as REQUEST_TIMEOUT_MS, r as fetchWithRetries } from "./fetch-DXUnXkVU.js";
4
+ import { n as VERSION } from "./version-eRkNuGv8.js";
5
+ import { o as getUserEmail } from "./accounts-CjFnOPmb.js";
6
+ import { c as neverGenerateRemoteForRegularEvals, i as getRemoteGenerationUrlForUnaligned, r as getRemoteGenerationUrl, s as neverGenerateRemote } from "./remoteGeneration-B1_XsKXU.js";
7
+ import dedent from "dedent";
8
+ //#region src/providers/promptfoo.ts
9
+ /**
10
+ * Provider for generating harmful/adversarial content using Promptfoo's unaligned models.
11
+ * Used by red team plugins to generate test cases for harmful content categories.
12
+ */
13
+ var PromptfooHarmfulCompletionProvider = class {
14
+ harmCategory;
15
+ n;
16
+ purpose;
17
+ config;
18
+ constructor(options) {
19
+ this.harmCategory = options.harmCategory;
20
+ this.n = options.n;
21
+ this.purpose = options.purpose;
22
+ this.config = options.config;
23
+ }
24
+ id() {
25
+ return `promptfoo:redteam:${this.harmCategory}`;
26
+ }
27
+ toString() {
28
+ return `[Promptfoo Harmful Completion Provider ${this.purpose} - ${this.harmCategory}]`;
29
+ }
30
+ async callApi(_prompt, _context, callApiOptions) {
31
+ if (neverGenerateRemote()) return { error: dedent`
32
+ Remote generation is disabled. Harmful content generation requires Promptfoo's unaligned models.
33
+
34
+ To enable:
35
+ - Remove PROMPTFOO_DISABLE_REMOTE_GENERATION (or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION)
36
+ - Or configure an alternative unaligned model provider
37
+
38
+ Learn more: https://www.promptfoo.dev/docs/red-team/configuration#remote-generation
39
+ ` };
40
+ const body = {
41
+ email: getUserEmail(),
42
+ harmCategory: this.harmCategory,
43
+ n: this.n,
44
+ purpose: this.purpose,
45
+ version: VERSION,
46
+ config: this.config
47
+ };
48
+ try {
49
+ logger.debug(`[HarmfulCompletionProvider] Calling generate harmful API (${getRemoteGenerationUrlForUnaligned()}) with body: ${JSON.stringify(body)}`);
50
+ const response = await fetchWithRetries(getRemoteGenerationUrlForUnaligned(), {
51
+ method: "POST",
52
+ headers: { "Content-Type": "application/json" },
53
+ body: JSON.stringify(body),
54
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
55
+ }, 58e4, 2);
56
+ if (!response.ok) throw new Error(`API call failed with status ${response.status}: ${await response.text()}`);
57
+ const data = await response.json();
58
+ return { output: (Array.isArray(data.output) ? data.output : [data.output]).filter((item) => typeof item === "string" && item.length > 0) };
59
+ } catch (err) {
60
+ if (err instanceof Error && err.name === "AbortError") throw err;
61
+ logger.info(`[HarmfulCompletionProvider] ${err}`);
62
+ return { error: `[HarmfulCompletionProvider] ${err}` };
63
+ }
64
+ }
65
+ };
66
+ /**
67
+ * Provider for red team adversarial strategies using Promptfoo's task-specific models.
68
+ * Supports multi-turn attack strategies like crescendo, goat, and iterative attacks.
69
+ */
70
+ var PromptfooChatCompletionProvider = class {
71
+ options;
72
+ constructor(options) {
73
+ this.options = options;
74
+ }
75
+ id() {
76
+ return this.options.id || "promptfoo:chatcompletion";
77
+ }
78
+ toString() {
79
+ return `[Promptfoo Chat Completion Provider]`;
80
+ }
81
+ async callApi(prompt, context, callApiOptions) {
82
+ if (neverGenerateRemote()) return { error: dedent`
83
+ Remote generation is disabled. This red team strategy requires Promptfoo's task-specific models.
84
+
85
+ To enable:
86
+ - Remove PROMPTFOO_DISABLE_REMOTE_GENERATION (or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION)
87
+ - Or provide OPENAI_API_KEY for local generation (may have lower quality)
88
+
89
+ Learn more: https://www.promptfoo.dev/docs/red-team/configuration#remote-generation
90
+ ` };
91
+ const body = {
92
+ jsonOnly: this.options.jsonOnly,
93
+ preferSmallModel: this.options.preferSmallModel,
94
+ prompt,
95
+ step: context?.prompt.label,
96
+ task: this.options.task,
97
+ email: getUserEmail(),
98
+ ...this.options.inputs && { inputs: this.options.inputs }
99
+ };
100
+ try {
101
+ const response = await fetchWithRetries(getRemoteGenerationUrl(), {
102
+ method: "POST",
103
+ headers: { "Content-Type": "application/json" },
104
+ body: JSON.stringify(body),
105
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
106
+ }, REQUEST_TIMEOUT_MS);
107
+ const data = await response.json();
108
+ if (!data.result) {
109
+ logger.debug(`Error from promptfoo completion provider. Status: ${response.status} ${response.statusText} ${JSON.stringify(data)} `);
110
+ return { error: "LLM did not return a result, likely refusal" };
111
+ }
112
+ return {
113
+ output: data.result,
114
+ tokenUsage: data.tokenUsage
115
+ };
116
+ } catch (err) {
117
+ if (err instanceof Error && err.name === "AbortError") throw err;
118
+ return { error: `API call error: ${String(err)}` };
119
+ }
120
+ }
121
+ };
122
+ const REDTEAM_SIMULATED_USER_TASK_ID = "mischievous-user-redteam";
123
+ /**
124
+ * Provider for simulating realistic user conversations using Promptfoo's conversation models.
125
+ * Supports both regular simulated users and adversarial red team users.
126
+ */
127
+ var PromptfooSimulatedUserProvider = class {
128
+ options;
129
+ taskId;
130
+ constructor(options = {}, taskId) {
131
+ this.options = options;
132
+ this.taskId = taskId;
133
+ }
134
+ id() {
135
+ return this.options.id || "promptfoo:agent";
136
+ }
137
+ toString() {
138
+ return "[Promptfoo Agent Provider]";
139
+ }
140
+ async callApi(prompt, _context, callApiOptions) {
141
+ const isRedteamTask = this.taskId === REDTEAM_SIMULATED_USER_TASK_ID;
142
+ if (isRedteamTask ? neverGenerateRemote() : neverGenerateRemoteForRegularEvals()) return { error: dedent`
143
+ Remote generation is disabled.
144
+
145
+ SimulatedUser requires Promptfoo's conversation simulation models.
146
+
147
+ To enable, remove ${isRedteamTask ? "PROMPTFOO_DISABLE_REMOTE_GENERATION or PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION" : "PROMPTFOO_DISABLE_REMOTE_GENERATION"}
148
+
149
+ Learn more: ${isRedteamTask ? "https://www.promptfoo.dev/docs/red-team/configuration#remote-generation" : "https://www.promptfoo.dev/docs/providers/simulated-user#remote-generation"}
150
+ ` };
151
+ const messages = JSON.parse(prompt);
152
+ const body = {
153
+ task: this.taskId,
154
+ instructions: this.options.instructions,
155
+ history: messages,
156
+ email: getUserEmail(),
157
+ version: VERSION
158
+ };
159
+ try {
160
+ const response = await fetchWithRetries(getRemoteGenerationUrl(), {
161
+ method: "POST",
162
+ headers: { "Content-Type": "application/json" },
163
+ body: JSON.stringify(body),
164
+ ...callApiOptions?.abortSignal && { signal: callApiOptions.abortSignal }
165
+ }, REQUEST_TIMEOUT_MS);
166
+ if (!response.ok) throw new Error(`API call failed with status ${response.status}: ${await response.text()}`);
167
+ const data = await response.json();
168
+ return {
169
+ output: data.result,
170
+ tokenUsage: data.tokenUsage
171
+ };
172
+ } catch (err) {
173
+ if (err instanceof Error && err.name === "AbortError") throw err;
174
+ return { error: `API call error: ${String(err)}` };
175
+ }
176
+ }
177
+ };
178
+ //#endregion
179
+ export { REDTEAM_SIMULATED_USER_TASK_ID as i, PromptfooHarmfulCompletionProvider as n, PromptfooSimulatedUserProvider as r, PromptfooChatCompletionProvider as t };
180
+
181
+ //# sourceMappingURL=promptfoo-Rjp-MeBb.js.map