promptfoo 0.120.27 → 0.121.2

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 (355) hide show
  1. package/README.md +1 -1
  2. package/dist/src/{ListApp-8WOe2nT6.js → ListApp-Du7YVwj5.js} +2 -4
  3. package/dist/src/accounts-B0pgC1oV.js +206 -0
  4. package/dist/src/{accounts-DVINui-2.js → accounts-Bm2D8Db9.js} +39 -34
  5. package/dist/src/{accounts-CPDRAMND.js → accounts-CiBLOnA7.js} +38 -33
  6. package/dist/src/{accounts-Fl2J3_Fu.cjs → accounts-gtkH-5KX.cjs} +77 -78
  7. package/dist/src/{agentic-utils-D922n6mm.js → agentic-utils-DS1g3GLF.js} +9 -10
  8. package/dist/src/{agents-BcsN_BgB.js → agents-9qiOy0ho.js} +16 -12
  9. package/dist/src/{agents-BXLmVsxR.js → agents-CBr9A01V.js} +37 -37
  10. package/dist/src/{agents-pMfppv9Z.js → agents-CmvBq8LV.js} +16 -18
  11. package/dist/src/{agents-hqgSV-3o.js → agents-D__IdAlg.js} +39 -40
  12. package/dist/src/{agents-BO2n8Z0d.cjs → agents-DbRtpYxR.cjs} +37 -40
  13. package/dist/src/{agents-BdUTAwi-.js → agents-DgF2zDag.js} +37 -42
  14. package/dist/src/{agents-DgJf2-ez.cjs → agents-Di9DKPzn.cjs} +16 -17
  15. package/dist/src/{agents-DNvSH78i.js → agents-cLXA8a_8.js} +17 -19
  16. package/dist/src/{aimlapi-DtgPI0nE.js → aimlapi-B4rcnZgv.js} +15 -17
  17. package/dist/src/{aimlapi-BE_Tg9Fl.cjs → aimlapi-BvlNH0gr.cjs} +15 -16
  18. package/dist/src/{aimlapi-DOib86oE.js → aimlapi-CnkC2HqE.js} +16 -18
  19. package/dist/src/{aimlapi-DTPACCB1.js → aimlapi-DHJU_kcV.js} +15 -4
  20. package/dist/src/app/assets/index-4LKxG2CG.js +439 -0
  21. package/dist/src/app/assets/{index-NCn4eVBv.css → index-C3zcsZFQ.css} +1 -1
  22. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +36 -0
  23. package/dist/src/app/index.html +3 -3
  24. package/dist/src/app/tsconfig.app.tsbuildinfo +1 -1
  25. package/dist/src/{audio-BnRUGAm_.js → audio-Bkv46et0.js} +6 -5
  26. package/dist/src/{audio-Cwo68yZS.cjs → audio-CGMyULza.cjs} +6 -7
  27. package/dist/src/{audio-MSRki4JU.js → audio-ClI_AFre.js} +6 -8
  28. package/dist/src/{audio-BRYU0BFo.js → audio-Dz3z7s3J.js} +7 -9
  29. package/dist/src/{base-pGVmXNl4.cjs → base-CGrhspbK.cjs} +36 -38
  30. package/dist/src/{base-h961VXYk.js → base-CpjcHe4e.js} +11 -13
  31. package/dist/src/base-DLKtKMFh.js +193 -0
  32. package/dist/src/{base-XB2tDJrB.js → base-Dy1V8--Z.js} +11 -13
  33. package/dist/src/blobs-BDbfYdrJ.js +236 -0
  34. package/dist/src/{blobs-CR5C4Ihh.js → blobs-CBO20krR.js} +9 -12
  35. package/dist/src/{blobs-BM_e6hCa.js → blobs-CMHN0Qcz.js} +9 -12
  36. package/dist/src/{blobs-B-KQAFhX.cjs → blobs-D23XLin-.cjs} +34 -37
  37. package/dist/src/{cache-jsiwsAJv.js → cache-BVeDlD87.js} +132 -117
  38. package/dist/src/{cache-CIpsoBZR.js → cache-C4Nxf52C.js} +132 -118
  39. package/dist/src/cache-CeUpFm3M.cjs +5 -0
  40. package/dist/src/{cache-BTVYfbka.cjs → cache-Dh5WtQps.cjs} +182 -168
  41. package/dist/src/cache-i1P6crbO.js +756 -0
  42. package/dist/src/cache-n-RCJ-hL.js +6 -0
  43. package/dist/src/{chat-BcPjZXIp.js → chat-BiKyneZl.js} +45 -46
  44. package/dist/src/{chat-D31K7C4u.cjs → chat-C1Qst7jL.cjs} +20 -21
  45. package/dist/src/{chat-B84t99NW.js → chat-C2jrdPMx.js} +20 -9
  46. package/dist/src/{chat-BE44YOc6.cjs → chat-CgF-J-Jj.cjs} +65 -66
  47. package/dist/src/{chat-DwWifjxi.js → chat-CzkrVDfz.js} +20 -22
  48. package/dist/src/chat-DJIw17u0.js +766 -0
  49. package/dist/src/{chat-CcUCysjU.js → chat-DqxYYtWA.js} +45 -46
  50. package/dist/src/{chat-DZM2GUHO.js → chat-qmatte1u.js} +21 -23
  51. package/dist/src/{chatkit-D67HS_0b.js → chatkit-65VXf5SR.js} +58 -58
  52. package/dist/src/{chatkit-DAB_qfzI.js → chatkit-Be-Q-a9F.js} +58 -60
  53. package/dist/src/{chatkit-Biqb_wsD.js → chatkit-BxFvW8KY.js} +58 -60
  54. package/dist/src/{chatkit-PGG4ZYIn.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
  55. package/dist/src/chunk-DEq-mXcV.js +15 -0
  56. package/dist/src/chunk-DRamLcfz.js +16 -0
  57. package/dist/src/{claude-agent-sdk-SVM6AdBu.js → claude-agent-sdk-Apiy0iaz.js} +31 -31
  58. package/dist/src/{claude-agent-sdk-C-IOTPfo.js → claude-agent-sdk-D2bJee9S.js} +31 -29
  59. package/dist/src/{claude-agent-sdk-C9SiaQub.cjs → claude-agent-sdk-D9Z5Pr9X.cjs} +31 -28
  60. package/dist/src/{claude-agent-sdk-CiluSyW1.js → claude-agent-sdk-DfCoW0E6.js} +33 -20
  61. package/dist/src/cloud-BBh91EUK.js +4 -0
  62. package/dist/src/{cloud-CZ-q9Ier.js → cloud-C0dlstV_.js} +7 -9
  63. package/dist/src/{cloudflare-ai-BahKHyhh.js → cloudflare-ai-8TDxHR0x.js} +16 -18
  64. package/dist/src/{cloudflare-ai-v_qZD6_q.js → cloudflare-ai-BxAGvfju.js} +17 -19
  65. package/dist/src/{cloudflare-ai-Dfahv5SY.cjs → cloudflare-ai-CknbZ5LJ.cjs} +16 -17
  66. package/dist/src/{cloudflare-ai-Dxyt50Nl.js → cloudflare-ai-g7PB6VHR.js} +16 -4
  67. package/dist/src/{cloudflare-gateway-Bi_FpOFy.js → cloudflare-gateway-B9HWA5wf.js} +23 -23
  68. package/dist/src/{cloudflare-gateway-BPWoZIzJ.cjs → cloudflare-gateway-BSnDmHYo.cjs} +21 -22
  69. package/dist/src/{cloudflare-gateway-C0guUNwk.js → cloudflare-gateway-CKDb4dJ8.js} +26 -14
  70. package/dist/src/{cloudflare-gateway-btS7h1OZ.js → cloudflare-gateway-CP9QEWYS.js} +21 -25
  71. package/dist/src/{codex-sdk-DSxAnbfT.js → codex-sdk-C6UMlxwV.js} +28 -29
  72. package/dist/src/{codex-sdk-IYVi9fuM.js → codex-sdk-DUwKWezN.js} +28 -27
  73. package/dist/src/{codex-sdk-DulY0ZRq.js → codex-sdk-GGAw0qbD.js} +28 -29
  74. package/dist/src/{codex-sdk-DFKMtAyf.cjs → codex-sdk-fAO0c3yA.cjs} +28 -29
  75. package/dist/src/{cometapi-DzrR3SR_.js → cometapi-BL9yvj_f.js} +16 -4
  76. package/dist/src/{cometapi-DIO64tf4.cjs → cometapi-C4xSqeID.cjs} +21 -22
  77. package/dist/src/{cometapi-C9EEpJzT.js → cometapi-CUQq3H_a.js} +21 -24
  78. package/dist/src/{cometapi-DkNBMk0G.js → cometapi-DFNiKmSz.js} +17 -19
  79. package/dist/src/{completion-CG29bfKX.js → completion-5MzrpJxT.js} +11 -13
  80. package/dist/src/{completion-CCRT4kX1.cjs → completion-CM6oK8PS.cjs} +21 -23
  81. package/dist/src/{completion-Bgf1VJoq.js → completion-DZ083F31.js} +11 -13
  82. package/dist/src/completion-qRoZAYRB.js +120 -0
  83. package/dist/src/{createHash-Dw_iLu31.js → createHash-CTQmL3G2.js} +2 -3
  84. package/dist/src/{createHash-CYQy4YeL.cjs → createHash-CfZSc0b4.cjs} +13 -14
  85. package/dist/src/{createHash-CJcfskIZ.js → createHash-Da8fMwqB.js} +2 -3
  86. package/dist/src/createHash-DmPQkvBh.js +15 -0
  87. package/dist/src/{docker-D-ayp2FW.js → docker-Bb5dcxr8.js} +18 -20
  88. package/dist/src/{docker-B81N0t4e.js → docker-BvfL2BrW.js} +19 -21
  89. package/dist/src/{docker-DNcLR4Ig.cjs → docker-DcF2pRrj.cjs} +18 -19
  90. package/dist/src/{docker-egERKxCF.js → docker-ExVyLp0S.js} +18 -7
  91. package/dist/src/entrypoint.js +2 -3
  92. package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
  93. package/dist/src/{esm-B9dPm_BF.js → esm-C03C-mv3.js} +17 -20
  94. package/dist/src/{esm-D2pZ87fL.js → esm-CaIwzWR5.js} +18 -21
  95. package/dist/src/esm-Cd1AjG1D.js +379 -0
  96. package/dist/src/{esm-Ct-Joyue.cjs → esm-CnNt7sI4.cjs} +47 -49
  97. package/dist/src/eval-B3r2CVXr.js +15 -0
  98. package/dist/src/{eval-C-Nr6wX_.js → eval-Dg2nG4v2.js} +47 -54
  99. package/dist/src/evalResult-5xwYnECe.js +12 -0
  100. package/dist/src/evalResult-71lY93Kj.cjs +10 -0
  101. package/dist/src/{evalResult-DXMWJ3sx.js → evalResult-BBRNtX4I.js} +10 -11
  102. package/dist/src/{evalResult-4BzI2tmj.js → evalResult-BDMqrapS.js} +16 -12
  103. package/dist/src/evalResult-Dx5P5cIv.js +10 -0
  104. package/dist/src/{evalResult-CX8wQecI.cjs → evalResult-fuaI8HkH.cjs} +20 -21
  105. package/dist/src/{evaluator-8aGyV12L.js → evaluator-BhoWwp5b.js} +211 -235
  106. package/dist/src/evaluator-Jx6bRZV6.js +36 -0
  107. package/dist/src/{extractor-V5x_m1i0.js → extractor-C0EVHewb.js} +22 -24
  108. package/dist/src/extractor-D25qpmGX.js +374 -0
  109. package/dist/src/{extractor-CD5yKL-G.js → extractor-DReVID0K.js} +22 -24
  110. package/dist/src/{extractor-C031XmTA.cjs → extractor-pYLLi3wS.cjs} +37 -39
  111. package/dist/src/{fetch-BmbD-v1L.cjs → fetch-BPkYtG8K.cjs} +244 -277
  112. package/dist/src/fetch-BxNb_Lp3.js +5 -0
  113. package/dist/src/{fetch-D3OHf-lV.js → fetch-Cwxnd8zz.js} +36 -44
  114. package/dist/src/{fetch-CXZI9RRr.js → fetch-Dxpd4_sr.js} +23 -35
  115. package/dist/src/fetch-HaqdX7U1.js +780 -0
  116. package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
  117. package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
  118. package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
  119. package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
  120. package/dist/src/{formatDuration-CdevI3An.js → formatDuration-DgBVMN65.js} +2 -2
  121. package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
  122. package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
  123. package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
  124. package/dist/src/{genaiTracer-Dres3qrN.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
  125. package/dist/src/{graders--1y2u9HO.js → graders-BTeBGqjJ.js} +349 -397
  126. package/dist/src/graders-B_pgMLS2.js +34 -0
  127. package/dist/src/{graders-DTeBrzWp.js → graders-Bj_Odv7c.js} +349 -397
  128. package/dist/src/graders-DErokPDO.cjs +32 -0
  129. package/dist/src/graders-DP7KFFo-.js +13466 -0
  130. package/dist/src/graders-DR_uNe54.js +32 -0
  131. package/dist/src/{graders-DohM2dir.cjs → graders-DU49_J8Y.cjs} +684 -732
  132. package/dist/src/graders-w3176Wz-.js +32 -0
  133. package/dist/src/{image-B0U4Hqll.js → image-B02ogr_b.js} +7 -9
  134. package/dist/src/{image-DmE-niFE.js → image-B0h9VEMc.js} +6 -5
  135. package/dist/src/{image-CuKHuccK.cjs → image-BLmROtN3.cjs} +29 -30
  136. package/dist/src/{image-DNEIf_aI.js → image-Bb4vWQLM.js} +6 -8
  137. package/dist/src/{image-DpKl2F15.cjs → image-C1madmKh.cjs} +6 -7
  138. package/dist/src/{image-C3wHC9_h.js → image-CHfWvljl.js} +9 -10
  139. package/dist/src/{image-O1u4bCFg.js → image-DS-o-0ph.js} +9 -10
  140. package/dist/src/image-Dpxa1Jt6.js +257 -0
  141. package/dist/src/index.cjs +615 -695
  142. package/dist/src/index.d.cts +271 -7
  143. package/dist/src/index.d.ts +271 -3
  144. package/dist/src/index.js +580 -664
  145. package/dist/src/{interactiveCheck-Bxj1Swex.js → interactiveCheck-BgLZUIt3.js} +7 -8
  146. package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
  147. package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
  148. package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
  149. package/dist/src/invariant-vgHWClmd.js +25 -0
  150. package/dist/src/{knowledgeBase-CEzQobWX.js → knowledgeBase-B3OoKIej.js} +14 -9
  151. package/dist/src/{knowledgeBase-Be_zyW4L.js → knowledgeBase-CYTLHOt1.js} +16 -16
  152. package/dist/src/{knowledgeBase-BZ41IFwq.js → knowledgeBase-D33Ty2l6.js} +14 -18
  153. package/dist/src/{knowledgeBase-D-5BMXlr.cjs → knowledgeBase-DOO_BM9b.cjs} +14 -15
  154. package/dist/src/{litellm-DnbRJ2if.js → litellm-AaeZcZQF.js} +18 -19
  155. package/dist/src/{litellm-hUSNM_M2.cjs → litellm-I_hbp_dc.cjs} +17 -17
  156. package/dist/src/{litellm-CRDqPhNI.js → litellm-NbjknEh6.js} +17 -18
  157. package/dist/src/{litellm-9vR8zpfU.js → litellm-TrljxD9G.js} +17 -5
  158. package/dist/src/{logger-CG1uZPbQ.js → logger-CT3IKMKA.js} +10 -29
  159. package/dist/src/{logger-B7sBeGa0.cjs → logger-Cp1GPUjj.cjs} +152 -180
  160. package/dist/src/logger-DLcq4dWf.js +713 -0
  161. package/dist/src/{logger-LSBxlt7a.js → logger-KkObSCzq.js} +13 -31
  162. package/dist/src/{luma-ray-4blv9iZ2.js → luma-ray-BS2_tY8L.js} +22 -21
  163. package/dist/src/{luma-ray-drvgdpP9.js → luma-ray-DDsjcgZZ.js} +20 -13
  164. package/dist/src/{luma-ray-Hm3d6VJE.cjs → luma-ray-Due0n7di.cjs} +20 -21
  165. package/dist/src/{luma-ray-B2__8lYH.js → luma-ray-f6I2fft-.js} +20 -23
  166. package/dist/src/main.js +1170 -1321
  167. package/dist/src/{messages-Uee41Mj5.js → messages-BS17jdMx.js} +22 -24
  168. package/dist/src/{messages-XhiwCbi4.cjs → messages-Bs1kC7P4.cjs} +32 -34
  169. package/dist/src/{messages-CGPPidQr.js → messages-D0lx5qK7.js} +22 -24
  170. package/dist/src/messages-ZJk778GH.js +240 -0
  171. package/dist/src/{meteor-BYykdXrV.js → meteor-44VjEACX.js} +3 -4
  172. package/dist/src/{meteor-CsopaHrH.js → meteor-D-SotUw9.js} +3 -4
  173. package/dist/src/{meteor-e-E-2vVl.cjs → meteor-DLZZ3osF.cjs} +3 -4
  174. package/dist/src/{meteor-C8lGP6P4.js → meteor-DUiCJRC-.js} +3 -4
  175. package/dist/src/{modelslab-yKz-ZNB4.js → modelslab-Bmni6skY.js} +17 -10
  176. package/dist/src/{modelslab-E9gO-bYd.js → modelslab-Bx9IrZfS.js} +18 -20
  177. package/dist/src/{modelslab-lUVW0cmB.cjs → modelslab-CoUX6Jc_.cjs} +17 -18
  178. package/dist/src/{modelslab-ClBkr8_9.js → modelslab-DRb74SP4.js} +17 -19
  179. package/dist/src/{nova-reel-Dk8jNpId.js → nova-reel-BfPq-0Yk.js} +20 -13
  180. package/dist/src/{nova-reel-D8CuO6QH.cjs → nova-reel-C_QM18Xn.cjs} +20 -21
  181. package/dist/src/{nova-reel-u2eF2Cxm.js → nova-reel-D_W1tjMH.js} +22 -21
  182. package/dist/src/{nova-reel-P9bwvtYX.js → nova-reel-bgjxilYW.js} +20 -23
  183. package/dist/src/{nova-sonic-CK2rAiKi.js → nova-sonic-CFb5GYhg.js} +30 -26
  184. package/dist/src/{nova-sonic-BaqWlkds.js → nova-sonic-DIGQNR07.js} +30 -31
  185. package/dist/src/{nova-sonic-yZapPLv7.js → nova-sonic-De1HW5fD.js} +31 -32
  186. package/dist/src/{nova-sonic-Ds1C-dpm.cjs → nova-sonic-zfcljeRp.cjs} +30 -31
  187. package/dist/src/{openai-DUFopMrH.cjs → openai-Cuif0GEt.cjs} +8 -9
  188. package/dist/src/{openai-PblZ3jUE.js → openai-DElQ-fPX.js} +3 -4
  189. package/dist/src/{openai-CcN1B8Sb.js → openai-DhbB7eWK.js} +3 -4
  190. package/dist/src/openai-j-sE2O7r.js +44 -0
  191. package/dist/src/{openclaw-B6qqDr_u.cjs → openclaw-CSugPYAr.cjs} +188 -130
  192. package/dist/src/{openclaw-A-3_loM7.js → openclaw-DiSz3I5L.js} +180 -109
  193. package/dist/src/{openclaw-a3lylB-V.js → openclaw-DuvJKEW5.js} +178 -124
  194. package/dist/src/{openclaw-COn6QzDi.js → openclaw-tiVYRtr-.js} +178 -122
  195. package/dist/src/opencode-sdk-0j6rTWNb.js +562 -0
  196. package/dist/src/opencode-sdk-B3CWY9h_.js +560 -0
  197. package/dist/src/opencode-sdk-BL764Jdi.cjs +564 -0
  198. package/dist/src/opencode-sdk-C2y6UkP2.js +560 -0
  199. package/dist/src/{otlpReceiver-oyf5wLGC.js → otlpReceiver-C99PPb48.js} +53 -51
  200. package/dist/src/{otlpReceiver-lXsYVbpj.cjs → otlpReceiver-CGq6LspY.cjs} +53 -55
  201. package/dist/src/{otlpReceiver-94URx7UW.js → otlpReceiver-CdNBdbsk.js} +53 -55
  202. package/dist/src/{otlpReceiver-BmmTiMjA.js → otlpReceiver-D89fR-rC.js} +53 -55
  203. package/dist/src/{providerRegistry-Cq_JK_CJ.js → providerRegistry-B0RUOLI_.js} +7 -8
  204. package/dist/src/{providerRegistry-DSSHjMKf.js → providerRegistry-CD8MEar9.js} +7 -8
  205. package/dist/src/{providerRegistry-CvHEVJad.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
  206. package/dist/src/providerRegistry-DM8rZYol.js +45 -0
  207. package/dist/src/providers-B7V0njNs.js +32 -0
  208. package/dist/src/providers-BEwbhv0X.js +30 -0
  209. package/dist/src/{providers-Iil64vk9.js → providers-BlqUifFg.js} +1543 -1676
  210. package/dist/src/providers-CH3C7zf7.js +30 -0
  211. package/dist/src/{providers-DHbjzW2e.cjs → providers-CgKOSgTR.cjs} +1896 -2029
  212. package/dist/src/providers-D8lF1sqW.js +33246 -0
  213. package/dist/src/{providers-BnFpbY_s.js → providers-Dk_6ocUX.js} +1536 -1669
  214. package/dist/src/providers-zyB6k_38.cjs +31 -0
  215. package/dist/src/{pythonUtils-CcT5LH1M.js → pythonUtils-C3py6GC1.js} +18 -19
  216. package/dist/src/{pythonUtils-DBbuI3QJ.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
  217. package/dist/src/{pythonUtils-hZ8LeQLv.js → pythonUtils-D5nxkQ0P.js} +18 -19
  218. package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
  219. package/dist/src/{quiverai-BuI0tE39.js → quiverai-BbOUOn2L.js} +8 -7
  220. package/dist/src/{quiverai-DCGSZt4U.js → quiverai-CIaELU_m.js} +8 -10
  221. package/dist/src/{quiverai-DiMVJQDz.cjs → quiverai-PdShCPox.cjs} +8 -9
  222. package/dist/src/{quiverai-fQNkExW4.js → quiverai-uH-dcTIr.js} +9 -11
  223. package/dist/src/{render-Dj1smHEb.js → render-Drod8m7K.js} +4 -5
  224. package/dist/src/responses-CB2jwoAr.js +660 -0
  225. package/dist/src/{responses-ghR3IOfy.cjs → responses-D8SBTL64.cjs} +39 -42
  226. package/dist/src/{responses-DOAFFENS.js → responses-DIR9Ud3j.js} +24 -27
  227. package/dist/src/{responses-CxzoQoBe.js → responses-WNGNYe3K.js} +24 -27
  228. package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
  229. package/dist/src/{rubyUtils-CwbGmgYN.js → rubyUtils-BUVePouc.js} +27 -20
  230. package/dist/src/rubyUtils-BcuGX77l.js +222 -0
  231. package/dist/src/{rubyUtils-DudlFZed.js → rubyUtils-Boc4HZzX.js} +18 -19
  232. package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
  233. package/dist/src/{rubyUtils-C8MhKGHb.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
  234. package/dist/src/{sagemaker-gmskuyre.js → sagemaker-CNBxx5CJ.js} +75 -70
  235. package/dist/src/{sagemaker-CcxhlOAR.js → sagemaker-CemTFp2h.js} +75 -79
  236. package/dist/src/{sagemaker-77zbJ2Q2.cjs → sagemaker-Cl28mZU2.cjs} +75 -76
  237. package/dist/src/{sagemaker-DuM71dVU.js → sagemaker-YSyBXQQh.js} +77 -77
  238. package/dist/src/{scanner-DJYiSXQj.js → scanner-BsBlNXNn.js} +100 -121
  239. package/dist/src/server/index.js +5520 -67427
  240. package/dist/src/{server-B5v33lvE.cjs → server-C_7Ax-hA.cjs} +57 -67
  241. package/dist/src/{server-BJ4m4f1D.js → server-CqzrVGpF.js} +26 -29
  242. package/dist/src/server-CuxBbeSY.js +229 -0
  243. package/dist/src/server-DA4Cyrrq.js +7 -0
  244. package/dist/src/server-Dulb-4-K.cjs +5 -0
  245. package/dist/src/{server-RV_i_YX5.js → server-VWgWb00X.js} +19 -24
  246. package/dist/src/{signal-BW33JuId.js → signal-4U3mfRvL.js} +9 -11
  247. package/dist/src/{slack-DEURelTy.cjs → slack-BmVAVGaK.cjs} +7 -8
  248. package/dist/src/{slack-BQYeW9L3.js → slack-DCUPTzS2.js} +8 -8
  249. package/dist/src/{slack-BB6yuZzp.js → slack-DOdy_kyv.js} +7 -8
  250. package/dist/src/{slack-2pRrhhgJ.js → slack-DXMKtA-f.js} +7 -9
  251. package/dist/src/store-CXGFv4aR.js +228 -0
  252. package/dist/src/store-CXS-Q_91.js +6 -0
  253. package/dist/src/{store-D7CgQzAR.cjs → store-DLlFCC4h.cjs} +44 -45
  254. package/dist/src/{store-DJNsD1iC.js → store-DXilxTl-.js} +40 -36
  255. package/dist/src/{store-s3SftUwF.js → store-Dim__MDd.js} +34 -35
  256. package/dist/src/store-eYkaKMwq.cjs +5 -0
  257. package/dist/src/{tables-DfTsNN7X.js → tables-6YKwjN9-.js} +19 -21
  258. package/dist/src/tables-DLJPUdUE.js +288 -0
  259. package/dist/src/{tables-BKTmd6u7.cjs → tables-DPi7wKeM.cjs} +89 -91
  260. package/dist/src/{tables-DMegD0Xf.js → tables-gftXzE9I.js} +21 -23
  261. package/dist/src/telemetry-BpMfhthR.cjs +5 -0
  262. package/dist/src/{telemetry--WAdAfVi.js → telemetry-CMrFgtPB.js} +11 -13
  263. package/dist/src/telemetry-Cps3mIU-.js +171 -0
  264. package/dist/src/{telemetry-DQgVBCAb.cjs → telemetry-DaX14Chu.cjs} +21 -24
  265. package/dist/src/{telemetry-BedSm-bZ.js → telemetry-Dthj_BbD.js} +17 -14
  266. package/dist/src/telemetry-Dw38hanS.js +7 -0
  267. package/dist/src/{text-oiSbwSOI.js → text-B_UCRPp2.js} +2 -2
  268. package/dist/src/{text-oKzCBnK6.cjs → text-CW1cyrwj.cjs} +12 -13
  269. package/dist/src/{text-B_IrO4GZ.js → text-Db-Wt2u2.js} +2 -2
  270. package/dist/src/text-TIv0QYnd.js +22 -0
  271. package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
  272. package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
  273. package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
  274. package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
  275. package/dist/src/{transcription-mYS9vd5v.js → transcription-BNYURcXg.js} +14 -7
  276. package/dist/src/{transcription-X2-B4vkX.js → transcription-B_OdaHp7.js} +14 -16
  277. package/dist/src/{transcription-BO1AHegO.cjs → transcription-NLVG9MT1.cjs} +14 -15
  278. package/dist/src/{transcription-lzBLiTFJ.js → transcription-s6A-bNrZ.js} +15 -17
  279. package/dist/src/{transform-B1Hi5lWS.cjs → transform-CzK1Q0zl.cjs} +24 -26
  280. package/dist/src/{transform-DeGlxb0D.js → transform-D5HsjduX.js} +39 -47
  281. package/dist/src/{transform-CYDILYDe.js → transform-DECvGmzp.js} +15 -13
  282. package/dist/src/transform-DTGDnAzW.js +6 -0
  283. package/dist/src/{transform-BEgStbHK.js → transform-DilY9wbS.js} +10 -12
  284. package/dist/src/{transform-D5PjiWiZ.cjs → transform-DuHvhZpj.cjs} +179 -187
  285. package/dist/src/transform-aa6tmVpZ.js +216 -0
  286. package/dist/src/transform-m3qNw4KP.cjs +5 -0
  287. package/dist/src/transform-uAytVuyX.js +1506 -0
  288. package/dist/src/{transform-Dfl89yi4.js → transform-vNucnNr0.js} +39 -47
  289. package/dist/src/{transformersAvailability-SZnTS3pJ.js → transformersAvailability-CEVM2GNQ.js} +2 -2
  290. package/dist/src/{transformersAvailability-D-glmEy7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
  291. package/dist/src/{transformersAvailability-CjeFXhuJ.js → transformersAvailability-D6c6ROpT.js} +2 -2
  292. package/dist/src/{types-DWNf48sT.cjs → types-C_7nyzr1.cjs} +538 -574
  293. package/dist/src/{types-CXQduE9o.js → types-Cbd8uOMq.js} +68 -100
  294. package/dist/src/types-CzW2QFyi.js +3288 -0
  295. package/dist/src/{types-C5hEkb-x.js → types-DmyIJ-sR.js} +63 -99
  296. package/dist/src/{util-CoQjmE3u.js → util-B3xGByQh.js} +4 -5
  297. package/dist/src/{util-aLhtl3fe.cjs → util-B9vlHIIh.cjs} +208 -223
  298. package/dist/src/{util-Du96oyYS.js → util-BHGHw5G1.js} +4 -5
  299. package/dist/src/{util-DQ984syk.js → util-BRYkYPTd.js} +36 -51
  300. package/dist/src/{util-D9eLdGfa.js → util-BV4XUC0n.js} +5 -6
  301. package/dist/src/util-Bv6uGDfH.js +293 -0
  302. package/dist/src/{util-1wWM599Z.cjs → util-BzMcevZc.cjs} +50 -51
  303. package/dist/src/{util-_h4pVqrz.js → util-C1CeHl-P.js} +36 -51
  304. package/dist/src/{util-Bm_-UMD_.js → util-CMy69ZgQ.js} +5 -6
  305. package/dist/src/{util-CyUdMzV0.cjs → util-DGNOS1db.cjs} +34 -35
  306. package/dist/src/util-Dnmk2mBQ.js +599 -0
  307. package/dist/src/util-ZzmqNPlg.js +1426 -0
  308. package/dist/src/{utils-BjLy-Q72.cjs → utils-Cz9qXqII.cjs} +29 -32
  309. package/dist/src/{utils-CFMn2yHW.js → utils-XiOAgly5.js} +4 -7
  310. package/dist/src/utils-dLokC-eR.js +94 -0
  311. package/dist/src/{utils-DvWMzuMx.js → utils-f2-Moju7.js} +4 -7
  312. package/dist/tsconfig.tsbuildinfo +1 -1
  313. package/package.json +38 -38
  314. package/dist/src/app/assets/index-B2D0bCSI.js +0 -439
  315. package/dist/src/app/assets/vendor-charts-CCl15Imd.js +0 -36
  316. package/dist/src/cache-ChPcurj7.js +0 -6
  317. package/dist/src/cache-VVu_W-yg.js +0 -8
  318. package/dist/src/cache-YLNCFEM2.cjs +0 -6
  319. package/dist/src/chunk-DHDDz29n.js +0 -22
  320. package/dist/src/chunk-FhC4c-0y.js +0 -21
  321. package/dist/src/cloud-BndfXy4H.js +0 -5
  322. package/dist/src/eval-BhHvMY82.js +0 -17
  323. package/dist/src/evalResult-Dq2gFNQY.js +0 -12
  324. package/dist/src/evalResult-nmcP5VKH.cjs +0 -12
  325. package/dist/src/evalResult-trqZjVYh.js +0 -14
  326. package/dist/src/evaluator-CnfPstzT.js +0 -39
  327. package/dist/src/fetch-IDPDue6F.cjs +0 -4
  328. package/dist/src/fetch-hKJ-It8q.js +0 -6
  329. package/dist/src/fetch-ouKnrWK-.js +0 -4
  330. package/dist/src/graders-CQn7WUsd.cjs +0 -34
  331. package/dist/src/graders-DC6QAbpW.js +0 -35
  332. package/dist/src/graders-DUWz3Y7j.js +0 -37
  333. package/dist/src/opencode-sdk-4bL9n-Gk.js +0 -382
  334. package/dist/src/opencode-sdk-BfC2zWcR.js +0 -376
  335. package/dist/src/opencode-sdk-DMJyuwMg.js +0 -380
  336. package/dist/src/opencode-sdk-Da-9adza.cjs +0 -383
  337. package/dist/src/providers-CsXB2Ix-.js +0 -35
  338. package/dist/src/providers-DO8ltjLC.js +0 -33
  339. package/dist/src/providers-Dtq-xnXd.cjs +0 -33
  340. package/dist/src/rubyUtils-BUbcND2f.js +0 -6
  341. package/dist/src/rubyUtils-Cr55X_KE.js +0 -5
  342. package/dist/src/rubyUtils-DlIiqoYo.cjs +0 -5
  343. package/dist/src/server-C2eQH4Gu.js +0 -6
  344. package/dist/src/server-CXWycu7H.cjs +0 -6
  345. package/dist/src/server-Q6OGlxxT.js +0 -8
  346. package/dist/src/store-B3EDO9Q3.js +0 -7
  347. package/dist/src/store-Dl9F8aw5.js +0 -6
  348. package/dist/src/store-SnrGrlt9.cjs +0 -6
  349. package/dist/src/telemetry-BGhiPZtl.js +0 -8
  350. package/dist/src/telemetry-CFfiYan6.cjs +0 -6
  351. package/dist/src/telemetry-DHzEduxX.js +0 -6
  352. package/dist/src/transform-C1x1ZlMQ.cjs +0 -6
  353. package/dist/src/transform-DYHjFmQu.js +0 -8
  354. package/dist/src/transform-rmwJT5JQ.js +0 -7
  355. package/dist/src/transformersAvailability-eJooj0gX.js +0 -35
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import "./logger-KkObSCzq.js";
3
+ import { n as fetchWithProxy } from "./fetch-Dxpd4_sr.js";
4
+ import "./cloud-C0dlstV_.js";
5
+ export { fetchWithProxy };
@@ -1,5 +1,6 @@
1
- import { _ as getEnvBool, b as getEnvString, c as sanitizeUrl, g as getConfigDirectoryPath, i as logger_default, r as logRequestResponse, w as cliState_default, y as getEnvInt } from "./logger-CG1uZPbQ.js";
2
- import { t as invariant } from "./invariant-1pAf2CD1.js";
1
+ import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
+ import { _ as getEnvBool, b as getEnvString, c as sanitizeUrl, g as getConfigDirectoryPath, i as logger, r as logRequestResponse, w as state, y as getEnvInt } from "./logger-CT3IKMKA.js";
3
+ import { t as invariant } from "./invariant-Ddh24eXh.js";
3
4
  import * as fs$1 from "fs";
4
5
  import * as path$1 from "path";
5
6
  import path from "path";
@@ -9,7 +10,6 @@ import * as fsPromises from "fs/promises";
9
10
  import { getProxyForUrl } from "proxy-from-env";
10
11
  import { Agent, ProxyAgent } from "undici";
11
12
  import { gzip } from "zlib";
12
-
13
13
  //#region src/providers/constants.ts
14
14
  const FILE_METADATA_KEY = "_promptfooFileMetadata";
15
15
  /**
@@ -17,28 +17,21 @@ const FILE_METADATA_KEY = "_promptfooFileMetadata";
17
17
  * Used to distinguish human ratings from automated assertions.
18
18
  */
19
19
  const HUMAN_ASSERTION_TYPE = "human";
20
-
21
20
  //#endregion
22
21
  //#region src/version.ts
23
22
  /**
24
23
  * Application version from package.json.
25
24
  * Injected at build time, or read from npm environment in development.
26
25
  */
27
- const VERSION = "0.120.27";
26
+ const VERSION = "0.121.2";
28
27
  /**
29
28
  * PostHog analytics key.
30
29
  * Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
31
30
  * Empty string in development/test.
32
31
  */
33
32
  const POSTHOG_KEY = "phc_E5n5uHnDo2eREJL1uqX1cIlbkoRby4yFWt3V94HqRRg";
34
-
35
- //#endregion
36
- //#region src/constants.ts
37
- const DEFAULT_QUERY_LIMIT = 100;
38
- const DEFAULT_MAX_CONCURRENCY = 4;
39
- const DEFAULT_API_BASE_URL = "https://api.promptfoo.app";
40
33
  function getShareApiBaseUrl() {
41
- return getEnvString("PROMPTFOO_REMOTE_API_BASE_URL") || DEFAULT_API_BASE_URL;
34
+ return getEnvString("PROMPTFOO_REMOTE_API_BASE_URL") || "https://api.promptfoo.app";
42
35
  }
43
36
  function getDefaultShareViewBaseUrl() {
44
37
  return getEnvString("PROMPTFOO_SHARING_APP_BASE_URL", `https://promptfoo.app`);
@@ -51,7 +44,6 @@ const CLOUD_PROVIDER_PREFIX = "promptfoo://provider/";
51
44
  const CONSENT_ENDPOINT = "https://api.promptfoo.dev/consent";
52
45
  const EVENTS_ENDPOINT = "https://a.promptfoo.app";
53
46
  const R_ENDPOINT = "https://r.promptfoo.app/";
54
-
55
47
  //#endregion
56
48
  //#region src/providers/shared.ts
57
49
  /**
@@ -290,14 +282,12 @@ function transformTools(tools, format) {
290
282
  default: return tools;
291
283
  }
292
284
  }
293
-
294
285
  //#endregion
295
286
  //#region src/util/time.ts
296
287
  function getCurrentTimestamp() {
297
288
  return Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
298
289
  }
299
290
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
300
-
301
291
  //#endregion
302
292
  //#region src/globalConfig/globalConfig.ts
303
293
  /**
@@ -338,11 +328,7 @@ function writeGlobalConfigPartial(partialConfig) {
338
328
  });
339
329
  writeGlobalConfig(updatedConfig);
340
330
  }
341
-
342
- //#endregion
343
- //#region src/globalConfig/cloud.ts
344
- const CLOUD_API_HOST = "https://api.promptfoo.app";
345
- const API_HOST = getEnvString("API_HOST", CLOUD_API_HOST);
331
+ const API_HOST = getEnvString("API_HOST", "https://api.promptfoo.app");
346
332
  const SHARING_CUTOFF_DATE = /* @__PURE__ */ new Date("2026-03-09T00:00:00Z");
347
333
  var CloudConfig = class {
348
334
  config;
@@ -431,11 +417,11 @@ var CloudConfig = class {
431
417
  }
432
418
  async validateAndSetApiToken(token, apiHost) {
433
419
  try {
434
- const { fetchWithProxy } = await import("./fetch-ouKnrWK-.js");
420
+ const { fetchWithProxy } = await Promise.resolve().then(() => fetch_exports);
435
421
  const response = await fetchWithProxy(`${apiHost}/api/v1/users/me`, { headers: { Authorization: `Bearer ${token}` } });
436
422
  if (!response.ok) {
437
423
  const errorMessage = await response.text();
438
- logger_default.error(`[Cloud] Failed to validate API token: ${errorMessage}. HTTP Status: ${response.status} - ${response.statusText}.`);
424
+ logger.error(`[Cloud] Failed to validate API token: ${errorMessage}. HTTP Status: ${response.status} - ${response.statusText}.`);
439
425
  throw new Error("Failed to validate API token: " + response.statusText);
440
426
  }
441
427
  const { user, organization, app, hasActiveLicense } = await response.json();
@@ -456,8 +442,8 @@ var CloudConfig = class {
456
442
  } catch (err) {
457
443
  const error = err;
458
444
  const errorMessage = error instanceof Error ? error.message : String(error);
459
- logger_default.error(`[Cloud] Failed to validate API token with host ${apiHost}: ${errorMessage}`);
460
- if (error.cause) logger_default.error(`Cause: ${error.cause}`);
445
+ logger.error(`[Cloud] Failed to validate API token with host ${apiHost}: ${errorMessage}`);
446
+ if (error.cause) logger.error(`Cause: ${error.cause}`);
461
447
  throw error;
462
448
  }
463
449
  }
@@ -504,7 +490,6 @@ var CloudConfig = class {
504
490
  }
505
491
  };
506
492
  const cloudConfig = new CloudConfig();
507
-
508
493
  //#endregion
509
494
  //#region src/util/fetch/monkeyPatchFetch.ts
510
495
  const gzipAsync = promisify(gzip);
@@ -531,9 +516,9 @@ async function monkeyPatchFetch(url, options) {
531
516
  "Content-Encoding": "gzip"
532
517
  };
533
518
  } catch (e) {
534
- logger_default.warn(`Failed to compress request body: ${e}`);
519
+ logger.warn(`Failed to compress request body: ${e}`);
535
520
  }
536
- if (typeof url === "string" && url.startsWith(CLOUD_API_HOST) || url instanceof URL && url.host === CLOUD_API_HOST.replace(/^https?:\/\//, "")) {
521
+ if (typeof url === "string" && url.startsWith("https://api.promptfoo.app") || url instanceof URL && url.host === "https://api.promptfoo.app".replace(/^https?:\/\//, "")) {
537
522
  const token = cloudConfig.getApiKey();
538
523
  opts.headers = {
539
524
  ...opts.headers || {},
@@ -558,17 +543,24 @@ async function monkeyPatchFetch(url, options) {
558
543
  response: null
559
544
  });
560
545
  if (isConnectionError(e)) {
561
- logger_default.debug(`Connection error, please check your network connectivity to the host: ${url} ${process.env.HTTP_PROXY || process.env.HTTPS_PROXY ? `or Proxy: ${process.env.HTTP_PROXY || process.env.HTTPS_PROXY}` : ""}`);
546
+ logger.debug(`Connection error, please check your network connectivity to the host: ${url} ${process.env.HTTP_PROXY || process.env.HTTPS_PROXY ? `or Proxy: ${process.env.HTTP_PROXY || process.env.HTTPS_PROXY}` : ""}`);
562
547
  throw e;
563
548
  }
564
- logger_default.debug(`Error in fetch: ${JSON.stringify(e, Object.getOwnPropertyNames(e), 2)} ${e instanceof Error ? e.stack : ""}`);
549
+ logger.debug(`Error in fetch: ${JSON.stringify(e, Object.getOwnPropertyNames(e), 2)} ${e instanceof Error ? e.stack : ""}`);
565
550
  }
566
551
  throw e;
567
552
  }
568
553
  }
569
-
570
554
  //#endregion
571
555
  //#region src/util/fetch/index.ts
556
+ var fetch_exports = /* @__PURE__ */ __exportAll({
557
+ fetchWithProxy: () => fetchWithProxy,
558
+ fetchWithRetries: () => fetchWithRetries,
559
+ fetchWithTimeout: () => fetchWithTimeout,
560
+ handleRateLimit: () => handleRateLimit,
561
+ isRateLimited: () => isRateLimited,
562
+ isTransientError: () => isTransientError
563
+ });
572
564
  let cachedAgent = null;
573
565
  let cachedAgentConcurrency;
574
566
  let cachedProxyAgents = /* @__PURE__ */ new Map();
@@ -584,7 +576,7 @@ function getConnectionPoolSize() {
584
576
  const parsed = parseInt(envConnections, 10);
585
577
  if (!isNaN(parsed)) return parsed;
586
578
  }
587
- return cliState_default.maxConcurrency || DEFAULT_MAX_CONCURRENCY;
579
+ return state.maxConcurrency || 4;
588
580
  }
589
581
  function getOrCreateAgent(tlsOptions) {
590
582
  const concurrency = getConnectionPoolSize();
@@ -638,7 +630,7 @@ async function fetchWithProxy(url, options = {}, abortSignal) {
638
630
  if (typeof url === "string") try {
639
631
  const parsedUrl = new URL(url);
640
632
  if (parsedUrl.username || parsedUrl.password) {
641
- if (finalOptions.headers && "Authorization" in finalOptions.headers) logger_default.warn("Both URL credentials and Authorization header present - URL credentials will be ignored");
633
+ if (finalOptions.headers && "Authorization" in finalOptions.headers) logger.warn("Both URL credentials and Authorization header present - URL credentials will be ignored");
642
634
  else {
643
635
  const username = parsedUrl.username || "";
644
636
  const password = parsedUrl.password || "";
@@ -654,20 +646,20 @@ async function fetchWithProxy(url, options = {}, abortSignal) {
654
646
  finalUrlString = finalUrl.toString();
655
647
  }
656
648
  } catch (e) {
657
- logger_default.debug(`URL parsing failed in fetchWithProxy: ${e}`);
649
+ logger.debug(`URL parsing failed in fetchWithProxy: ${e}`);
658
650
  }
659
651
  const tlsOptions = { rejectUnauthorized: !getEnvBool("PROMPTFOO_INSECURE_SSL", true) };
660
652
  const caCertPath = getEnvString("PROMPTFOO_CA_CERT_PATH");
661
653
  if (caCertPath) try {
662
- const resolvedPath = path.resolve(cliState_default.basePath || "", caCertPath);
654
+ const resolvedPath = path.resolve(state.basePath || "", caCertPath);
663
655
  tlsOptions.ca = await fsPromises.readFile(resolvedPath, "utf8");
664
- logger_default.debug(`Using custom CA certificate from ${resolvedPath}`);
656
+ logger.debug(`Using custom CA certificate from ${resolvedPath}`);
665
657
  } catch (e) {
666
- logger_default.warn(`Failed to read CA certificate from ${caCertPath}: ${e}`);
658
+ logger.warn(`Failed to read CA certificate from ${caCertPath}: ${e}`);
667
659
  }
668
660
  const proxyUrl = finalUrlString ? getProxyForUrl(finalUrlString) : "";
669
661
  if (!finalOptions.dispatcher) if (proxyUrl) {
670
- logger_default.debug(`Using proxy: ${sanitizeUrl(proxyUrl)}`);
662
+ logger.debug(`Using proxy: ${sanitizeUrl(proxyUrl)}`);
671
663
  finalOptions.dispatcher = getOrCreateProxyAgent(proxyUrl, tlsOptions);
672
664
  } else finalOptions.dispatcher = getOrCreateAgent(tlsOptions);
673
665
  const maxTransientRetries = options.disableTransientRetries ? 0 : 3;
@@ -675,7 +667,7 @@ async function fetchWithProxy(url, options = {}, abortSignal) {
675
667
  const response = await monkeyPatchFetch(finalUrl, finalOptions);
676
668
  if (!options.disableTransientRetries && isTransientError(response) && attempt < maxTransientRetries) {
677
669
  const backoffMs = Math.pow(2, attempt) * 1e3;
678
- logger_default.debug(`Transient error (${response.status} ${response.statusText}), retry ${attempt + 1}/${maxTransientRetries} after ${backoffMs}ms`);
670
+ logger.debug(`Transient error (${response.status} ${response.statusText}), retry ${attempt + 1}/${maxTransientRetries} after ${backoffMs}ms`);
679
671
  await sleep(backoffMs);
680
672
  continue;
681
673
  }
@@ -725,7 +717,7 @@ async function handleRateLimit(response) {
725
717
  const now = /* @__PURE__ */ new Date();
726
718
  waitTime = Math.max(resetTime.getTime() - now.getTime() + 1e3, 0);
727
719
  } else if (retryAfter) waitTime = Number.parseInt(retryAfter) * 1e3;
728
- logger_default.debug(`Rate limited, waiting ${waitTime}ms before retry`);
720
+ logger.debug(`Rate limited, waiting ${waitTime}ms before retry`);
729
721
  await sleep(waitTime);
730
722
  }
731
723
  /**
@@ -757,7 +749,7 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
757
749
  }, timeout);
758
750
  if (getEnvBool("PROMPTFOO_RETRY_5XX") && response.status >= 500 && response.status < 600) throw new Error(`Internal Server Error: ${response.status} ${response.statusText}`);
759
751
  if (response && isRateLimited(response)) {
760
- logger_default.debug(`Rate limited on URL ${url}: ${response.status} ${response.statusText}, attempt ${i + 1}/${maxRetries + 1}, waiting before retry...`);
752
+ logger.debug(`Rate limited on URL ${url}: ${response.status} ${response.statusText}, attempt ${i + 1}/${maxRetries + 1}, waiting before retry...`);
761
753
  lastErrorMessage = `Rate limited: ${response.status} ${response.statusText}`;
762
754
  await handleRateLimit(response);
763
755
  continue;
@@ -772,14 +764,14 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
772
764
  if (typedError.cause) errorMessage += ` (Cause: ${typedError.cause})`;
773
765
  if (typedError.code) errorMessage += ` (Code: ${typedError.code})`;
774
766
  } else errorMessage = String(error);
775
- logger_default.debug(`Request to ${url} failed (attempt #${i + 1}), retrying: ${errorMessage}`);
767
+ logger.debug(`Request to ${url} failed (attempt #${i + 1}), retrying: ${errorMessage}`);
776
768
  if (i < maxRetries) await sleep(Math.pow(2, i) * (backoff + 1e3 * Math.random()));
777
769
  lastErrorMessage = errorMessage;
778
770
  }
779
771
  }
780
772
  throw new Error(`Request failed after ${maxRetries} retries: ${lastErrorMessage}`);
781
773
  }
782
-
783
774
  //#endregion
784
- export { EVENTS_ENDPOINT as A, toTitleCase as C, CONSENT_ENDPOINT as D, CLOUD_PROVIDER_PREFIX as E, getShareViewBaseUrl as F, POSTHOG_KEY as I, VERSION as L, TERMINAL_MAX_WIDTH as M, getDefaultShareViewBaseUrl as N, DEFAULT_MAX_CONCURRENCY as O, getShareApiBaseUrl as P, FILE_METADATA_KEY as R, parseChatPrompt as S, transformTools as T, isOpenAIToolArray as _, isRateLimited as a, openaiToolChoiceToBedrock as b, cloudConfig as c, writeGlobalConfigPartial as d, getCurrentTimestamp as f, calculateCost as g, REQUEST_TIMEOUT_MS as h, handleRateLimit as i, R_ENDPOINT as j, DEFAULT_QUERY_LIMIT as k, readGlobalConfig as l, LONG_RUNNING_MODEL_TIMEOUT_MS as m, fetchWithRetries as n, isTransientError as o, sleep as p, fetchWithTimeout as r, CloudConfig as s, fetchWithProxy as t, writeGlobalConfig as u, isOpenAIToolChoice as v, transformToolChoice as w, openaiToolsToBedrock as x, isPromptfooSampleTarget as y, HUMAN_ASSERTION_TYPE as z };
785
- //# sourceMappingURL=fetch-D3OHf-lV.js.map
775
+ export { getShareApiBaseUrl as A, transformTools as C, R_ENDPOINT as D, EVENTS_ENDPOINT as E, HUMAN_ASSERTION_TYPE as F, POSTHOG_KEY as M, VERSION as N, TERMINAL_MAX_WIDTH as O, FILE_METADATA_KEY as P, transformToolChoice as S, CONSENT_ENDPOINT as T, isPromptfooSampleTarget as _, CloudConfig as a, parseChatPrompt as b, writeGlobalConfig as c, sleep as d, LONG_RUNNING_MODEL_TIMEOUT_MS as f, isOpenAIToolChoice as g, isOpenAIToolArray as h, fetch_exports as i, getShareViewBaseUrl as j, getDefaultShareViewBaseUrl as k, writeGlobalConfigPartial as l, calculateCost as m, fetchWithRetries as n, cloudConfig as o, REQUEST_TIMEOUT_MS as p, fetchWithTimeout as r, readGlobalConfig as s, fetchWithProxy as t, getCurrentTimestamp as u, openaiToolChoiceToBedrock as v, CLOUD_PROVIDER_PREFIX as w, toTitleCase as x, openaiToolsToBedrock as y };
776
+
777
+ //# sourceMappingURL=fetch-Cwxnd8zz.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvString, O as cliState_default, S as getEnvInt, a as logRequestResponse, b as getEnvBool, o as logger_default, u as sanitizeUrl } from "./logger-LSBxlt7a.js";
3
- import { t as invariant } from "./invariant-DT20jrBd.js";
4
- import { a as cloudConfig, n as CLOUD_API_HOST } from "./cloud-CZ-q9Ier.js";
2
+ import { C as getEnvString, O as state, S as getEnvInt, a as logRequestResponse, b as getEnvBool, o as logger, u as sanitizeUrl } from "./logger-KkObSCzq.js";
3
+ import { t as invariant } from "./invariant-BtWWVVhl.js";
4
+ import { a as cloudConfig } from "./cloud-C0dlstV_.js";
5
5
  import { Agent, ProxyAgent } from "undici";
6
6
  import path from "path";
7
7
  import yaml from "js-yaml";
@@ -9,7 +9,6 @@ import * as fsPromises from "fs/promises";
9
9
  import { getProxyForUrl } from "proxy-from-env";
10
10
  import { promisify } from "util";
11
11
  import { gzip } from "zlib";
12
-
13
12
  //#region src/providers/constants.ts
14
13
  const FILE_METADATA_KEY = "_promptfooFileMetadata";
15
14
  /**
@@ -17,28 +16,21 @@ const FILE_METADATA_KEY = "_promptfooFileMetadata";
17
16
  * Used to distinguish human ratings from automated assertions.
18
17
  */
19
18
  const HUMAN_ASSERTION_TYPE = "human";
20
-
21
19
  //#endregion
22
20
  //#region src/version.ts
23
21
  /**
24
22
  * Application version from package.json.
25
23
  * Injected at build time, or read from npm environment in development.
26
24
  */
27
- const VERSION = "0.120.27";
25
+ const VERSION = "0.121.2";
28
26
  /**
29
27
  * PostHog analytics key.
30
28
  * Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
31
29
  * Empty string in development/test.
32
30
  */
33
31
  const POSTHOG_KEY = "phc_E5n5uHnDo2eREJL1uqX1cIlbkoRby4yFWt3V94HqRRg";
34
-
35
- //#endregion
36
- //#region src/constants.ts
37
- const DEFAULT_QUERY_LIMIT = 100;
38
- const DEFAULT_MAX_CONCURRENCY = 4;
39
- const DEFAULT_API_BASE_URL = "https://api.promptfoo.app";
40
32
  function getShareApiBaseUrl() {
41
- return getEnvString("PROMPTFOO_REMOTE_API_BASE_URL") || DEFAULT_API_BASE_URL;
33
+ return getEnvString("PROMPTFOO_REMOTE_API_BASE_URL") || "https://api.promptfoo.app";
42
34
  }
43
35
  function getDefaultShareViewBaseUrl() {
44
36
  return getEnvString("PROMPTFOO_SHARING_APP_BASE_URL", `https://promptfoo.app`);
@@ -54,7 +46,6 @@ const CLOUD_PROVIDER_PREFIX = "promptfoo://provider/";
54
46
  const CONSENT_ENDPOINT = "https://api.promptfoo.dev/consent";
55
47
  const EVENTS_ENDPOINT = "https://a.promptfoo.app";
56
48
  const R_ENDPOINT = "https://r.promptfoo.app/";
57
-
58
49
  //#endregion
59
50
  //#region src/providers/shared.ts
60
51
  /**
@@ -293,7 +284,6 @@ function transformTools(tools, format) {
293
284
  default: return tools;
294
285
  }
295
286
  }
296
-
297
287
  //#endregion
298
288
  //#region src/util/time.ts
299
289
  function getCurrentTimestamp() {
@@ -318,7 +308,6 @@ async function sleepWithAbort(ms, signal) {
318
308
  signal.addEventListener("abort", onAbort, { once: true });
319
309
  });
320
310
  }
321
-
322
311
  //#endregion
323
312
  //#region src/util/fetch/monkeyPatchFetch.ts
324
313
  const gzipAsync = promisify(gzip);
@@ -345,9 +334,9 @@ async function monkeyPatchFetch(url, options) {
345
334
  "Content-Encoding": "gzip"
346
335
  };
347
336
  } catch (e) {
348
- logger_default.warn(`Failed to compress request body: ${e}`);
337
+ logger.warn(`Failed to compress request body: ${e}`);
349
338
  }
350
- if (typeof url === "string" && url.startsWith(CLOUD_API_HOST) || url instanceof URL && url.host === CLOUD_API_HOST.replace(/^https?:\/\//, "")) {
339
+ if (typeof url === "string" && url.startsWith("https://api.promptfoo.app") || url instanceof URL && url.host === "https://api.promptfoo.app".replace(/^https?:\/\//, "")) {
351
340
  const token = cloudConfig.getApiKey();
352
341
  opts.headers = {
353
342
  ...opts.headers || {},
@@ -372,15 +361,14 @@ async function monkeyPatchFetch(url, options) {
372
361
  response: null
373
362
  });
374
363
  if (isConnectionError(e)) {
375
- logger_default.debug(`Connection error, please check your network connectivity to the host: ${url} ${process.env.HTTP_PROXY || process.env.HTTPS_PROXY ? `or Proxy: ${process.env.HTTP_PROXY || process.env.HTTPS_PROXY}` : ""}`);
364
+ logger.debug(`Connection error, please check your network connectivity to the host: ${url} ${process.env.HTTP_PROXY || process.env.HTTPS_PROXY ? `or Proxy: ${process.env.HTTP_PROXY || process.env.HTTPS_PROXY}` : ""}`);
376
365
  throw e;
377
366
  }
378
- logger_default.debug(`Error in fetch: ${JSON.stringify(e, Object.getOwnPropertyNames(e), 2)} ${e instanceof Error ? e.stack : ""}`);
367
+ logger.debug(`Error in fetch: ${JSON.stringify(e, Object.getOwnPropertyNames(e), 2)} ${e instanceof Error ? e.stack : ""}`);
379
368
  }
380
369
  throw e;
381
370
  }
382
371
  }
383
-
384
372
  //#endregion
385
373
  //#region src/util/fetch/index.ts
386
374
  let cachedAgent = null;
@@ -398,7 +386,7 @@ function getConnectionPoolSize() {
398
386
  const parsed = parseInt(envConnections, 10);
399
387
  if (!isNaN(parsed)) return parsed;
400
388
  }
401
- return cliState_default.maxConcurrency || DEFAULT_MAX_CONCURRENCY;
389
+ return state.maxConcurrency || 4;
402
390
  }
403
391
  /**
404
392
  * Clear cached agents so the next request creates fresh ones.
@@ -463,7 +451,7 @@ async function fetchWithProxy(url, options = {}, abortSignal) {
463
451
  if (typeof url === "string") try {
464
452
  const parsedUrl = new URL(url);
465
453
  if (parsedUrl.username || parsedUrl.password) {
466
- if (finalOptions.headers && "Authorization" in finalOptions.headers) logger_default.warn("Both URL credentials and Authorization header present - URL credentials will be ignored");
454
+ if (finalOptions.headers && "Authorization" in finalOptions.headers) logger.warn("Both URL credentials and Authorization header present - URL credentials will be ignored");
467
455
  else {
468
456
  const username = parsedUrl.username || "";
469
457
  const password = parsedUrl.password || "";
@@ -479,20 +467,20 @@ async function fetchWithProxy(url, options = {}, abortSignal) {
479
467
  finalUrlString = finalUrl.toString();
480
468
  }
481
469
  } catch (e) {
482
- logger_default.debug(`URL parsing failed in fetchWithProxy: ${e}`);
470
+ logger.debug(`URL parsing failed in fetchWithProxy: ${e}`);
483
471
  }
484
472
  const tlsOptions = { rejectUnauthorized: !getEnvBool("PROMPTFOO_INSECURE_SSL", true) };
485
473
  const caCertPath = getEnvString("PROMPTFOO_CA_CERT_PATH");
486
474
  if (caCertPath) try {
487
- const resolvedPath = path.resolve(cliState_default.basePath || "", caCertPath);
475
+ const resolvedPath = path.resolve(state.basePath || "", caCertPath);
488
476
  tlsOptions.ca = await fsPromises.readFile(resolvedPath, "utf8");
489
- logger_default.debug(`Using custom CA certificate from ${resolvedPath}`);
477
+ logger.debug(`Using custom CA certificate from ${resolvedPath}`);
490
478
  } catch (e) {
491
- logger_default.warn(`Failed to read CA certificate from ${caCertPath}: ${e}`);
479
+ logger.warn(`Failed to read CA certificate from ${caCertPath}: ${e}`);
492
480
  }
493
481
  const proxyUrl = finalUrlString ? getProxyForUrl(finalUrlString) : "";
494
482
  if (!finalOptions.dispatcher) if (proxyUrl) {
495
- logger_default.debug(`Using proxy: ${sanitizeUrl(proxyUrl)}`);
483
+ logger.debug(`Using proxy: ${sanitizeUrl(proxyUrl)}`);
496
484
  finalOptions.dispatcher = getOrCreateProxyAgent(proxyUrl, tlsOptions);
497
485
  } else finalOptions.dispatcher = getOrCreateAgent(tlsOptions);
498
486
  const maxTransientRetries = options.disableTransientRetries ? 0 : 3;
@@ -500,7 +488,7 @@ async function fetchWithProxy(url, options = {}, abortSignal) {
500
488
  const response = await monkeyPatchFetch(finalUrl, finalOptions);
501
489
  if (!options.disableTransientRetries && isTransientError(response) && attempt < maxTransientRetries) {
502
490
  const backoffMs = Math.pow(2, attempt) * 1e3;
503
- logger_default.debug(`Transient error (${response.status} ${response.statusText}), retry ${attempt + 1}/${maxTransientRetries} after ${backoffMs}ms`);
491
+ logger.debug(`Transient error (${response.status} ${response.statusText}), retry ${attempt + 1}/${maxTransientRetries} after ${backoffMs}ms`);
504
492
  await sleep(backoffMs);
505
493
  continue;
506
494
  }
@@ -550,7 +538,7 @@ async function handleRateLimit(response) {
550
538
  const now = /* @__PURE__ */ new Date();
551
539
  waitTime = Math.max(resetTime.getTime() - now.getTime() + 1e3, 0);
552
540
  } else if (retryAfter) waitTime = Number.parseInt(retryAfter) * 1e3;
553
- logger_default.debug(`Rate limited, waiting ${waitTime}ms before retry`);
541
+ logger.debug(`Rate limited, waiting ${waitTime}ms before retry`);
554
542
  await sleep(waitTime);
555
543
  }
556
544
  /**
@@ -582,7 +570,7 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
582
570
  }, timeout);
583
571
  if (getEnvBool("PROMPTFOO_RETRY_5XX") && response.status >= 500 && response.status < 600) throw new Error(`Internal Server Error: ${response.status} ${response.statusText}`);
584
572
  if (response && isRateLimited(response)) {
585
- logger_default.debug(`Rate limited on URL ${url}: ${response.status} ${response.statusText}, attempt ${i + 1}/${maxRetries + 1}, waiting before retry...`);
573
+ logger.debug(`Rate limited on URL ${url}: ${response.status} ${response.statusText}, attempt ${i + 1}/${maxRetries + 1}, waiting before retry...`);
586
574
  lastErrorMessage = `Rate limited: ${response.status} ${response.statusText}`;
587
575
  await handleRateLimit(response);
588
576
  continue;
@@ -597,14 +585,14 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
597
585
  if (typedError.cause) errorMessage += ` (Cause: ${typedError.cause})`;
598
586
  if (typedError.code) errorMessage += ` (Code: ${typedError.code})`;
599
587
  } else errorMessage = String(error);
600
- logger_default.debug(`Request to ${url} failed (attempt #${i + 1}), retrying: ${errorMessage}`);
588
+ logger.debug(`Request to ${url} failed (attempt #${i + 1}), retrying: ${errorMessage}`);
601
589
  if (i < maxRetries) await sleep(Math.pow(2, i) * (backoff + 1e3 * Math.random()));
602
590
  lastErrorMessage = errorMessage;
603
591
  }
604
592
  }
605
593
  throw new Error(`Request failed after ${maxRetries} retries: ${lastErrorMessage}`);
606
594
  }
607
-
608
595
  //#endregion
609
- export { getDefaultPort as A, CLOUD_PROVIDER_PREFIX as C, EVENTS_ENDPOINT as D, DEFAULT_QUERY_LIMIT as E, VERSION as F, FILE_METADATA_KEY as I, HUMAN_ASSERTION_TYPE as L, getShareApiBaseUrl as M, getShareViewBaseUrl as N, R_ENDPOINT as O, POSTHOG_KEY as P, transformTools as S, DEFAULT_MAX_CONCURRENCY as T, openaiToolChoiceToBedrock as _, handleRateLimit as a, toTitleCase as b, getCurrentTimestamp as c, LONG_RUNNING_MODEL_TIMEOUT_MS as d, REQUEST_TIMEOUT_MS as f, isPromptfooSampleTarget as g, isOpenAIToolChoice as h, fetchWithTimeout as i, getDefaultShareViewBaseUrl as j, TERMINAL_MAX_WIDTH as k, sleep as l, isOpenAIToolArray as m, fetchWithProxy as n, isRateLimited as o, calculateCost as p, fetchWithRetries as r, isTransientError as s, clearAgentCache as t, sleepWithAbort as u, openaiToolsToBedrock as v, CONSENT_ENDPOINT as w, transformToolChoice as x, parseChatPrompt as y };
610
- //# sourceMappingURL=fetch-CXZI9RRr.js.map
596
+ export { getShareApiBaseUrl as A, CLOUD_PROVIDER_PREFIX as C, TERMINAL_MAX_WIDTH as D, R_ENDPOINT as E, HUMAN_ASSERTION_TYPE as F, POSTHOG_KEY as M, VERSION as N, getDefaultPort as O, FILE_METADATA_KEY as P, transformTools as S, EVENTS_ENDPOINT as T, openaiToolChoiceToBedrock as _, handleRateLimit as a, toTitleCase as b, getCurrentTimestamp as c, LONG_RUNNING_MODEL_TIMEOUT_MS as d, REQUEST_TIMEOUT_MS as f, isPromptfooSampleTarget as g, isOpenAIToolChoice as h, fetchWithTimeout as i, getShareViewBaseUrl as j, getDefaultShareViewBaseUrl as k, sleep as l, isOpenAIToolArray as m, fetchWithProxy as n, isRateLimited as o, calculateCost as p, fetchWithRetries as r, isTransientError as s, clearAgentCache as t, sleepWithAbort as u, openaiToolsToBedrock as v, CONSENT_ENDPOINT as w, transformToolChoice as x, parseChatPrompt as y };
597
+
598
+ //# sourceMappingURL=fetch-Dxpd4_sr.js.map