promptfoo 0.121.3 → 0.121.5

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 (394) hide show
  1. package/README.md +1 -1
  2. package/dist/src/{ListApp-Du7YVwj5.js → ListApp-BRUsT43Y.js} +1 -1
  3. package/dist/src/{accounts-BPyfpSeU.cjs → accounts-BIFntVWB.cjs} +5 -5
  4. package/dist/src/{accounts-CFLK3mnD.js → accounts-CLJHCDDb.js} +6 -6
  5. package/dist/src/{accounts-B2XmGjty.js → accounts-CaLNYnf7.js} +5 -5
  6. package/dist/src/{accounts-Xatc0RYb.js → accounts-bnyHT7Ju.js} +5 -5
  7. package/dist/src/{agentic-utils-36epdqwB.js → agentic-utils-B5krlibj.js} +3 -3
  8. package/dist/src/{agentic-utils-DIYAAYE7.js → agentic-utils-Ba67xmgs.js} +3 -3
  9. package/dist/src/{agentic-utils-D8yXo5Lm.js → agentic-utils-BclbiXiq.js} +4 -4
  10. package/dist/src/{agentic-utils-DAVsChuB.cjs → agentic-utils-D2x0wGhB.cjs} +3 -3
  11. package/dist/src/{agents-CLQ-P15P.js → agents-BGqaTDnr.js} +5 -7
  12. package/dist/src/{agents-wg3ohknq.js → agents-BV9yFpXX.js} +6 -7
  13. package/dist/src/{agents-CgBniSlI.js → agents-BYdMl1UE.js} +5 -9
  14. package/dist/src/{agents-Bqgfdokm.js → agents-DhxWMCtH.js} +35 -14
  15. package/dist/src/{agents-BBWxKSM0.cjs → agents-DiWmQYH9.cjs} +5 -7
  16. package/dist/src/{agents-CAYbM7qD.cjs → agents-WULPVjbH.cjs} +34 -12
  17. package/dist/src/{agents-DSSTV4bv.js → agents-emVcx3yh.js} +35 -13
  18. package/dist/src/{agents-BBVJCIYr.js → agents-n6vPqV3i.js} +35 -13
  19. package/dist/src/{aimlapi-BwGC1TtS.js → aimlapi-BxqK9HF_.js} +8 -14
  20. package/dist/src/{aimlapi-Bv8Fmc-b.cjs → aimlapi-BzLjZI_m.cjs} +8 -15
  21. package/dist/src/{aimlapi-MgSLdvy7.js → aimlapi-DR4pgeiC.js} +7 -14
  22. package/dist/src/{aimlapi-DaC3qZ-o.js → aimlapi-uPGp0Zdo.js} +7 -16
  23. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -0
  24. package/dist/src/app/assets/Report-vjzrbgce.js +1 -0
  25. package/dist/src/app/assets/index-B3NQ8HTd.js +385 -0
  26. package/dist/src/app/assets/index-Cli2yAXv.css +1 -0
  27. package/dist/src/app/assets/rolldown-runtime-COnpUsM8.js +1 -0
  28. package/dist/src/app/assets/scroll-timeline-D9IT_e8Z.js +1 -0
  29. package/dist/src/app/assets/sync-IjzpWrOE.js +4 -0
  30. package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +36 -0
  31. package/dist/src/app/assets/vendor-markdown-Ch00wnNI.js +29 -0
  32. package/dist/src/app/assets/vendor-react-CVvmk1UB.js +9 -0
  33. package/dist/src/app/assets/vendor-utils-BnEYbx2Q.js +37 -0
  34. package/dist/src/app/index.html +32 -7
  35. package/dist/src/{audio-Bn44pQxv.js → audio-BvpTOArF.js} +4 -4
  36. package/dist/src/{audio-DVFjQ67_.cjs → audio-C0vDeS0j.cjs} +4 -4
  37. package/dist/src/{audio-DjU9GswO.js → audio-CScmnmEB.js} +4 -5
  38. package/dist/src/{audio-DDA5WHdx.js → audio-Da8U9IS5.js} +4 -4
  39. package/dist/src/{base-CKjwebIH.js → base-BOMaNEes.js} +3 -3
  40. package/dist/src/{base-CqzQ4K8j.js → base-BTux96b1.js} +3 -3
  41. package/dist/src/{base-BboXIF_0.cjs → base-Tw6uhH8K.cjs} +3 -3
  42. package/dist/src/{base-Cz2ZC_iA.js → base-dYsl2hmL.js} +3 -3
  43. package/dist/src/{blobs-C6j0bvFz.cjs → blobs-B95F_7vE.cjs} +3 -3
  44. package/dist/src/{blobs-DXTl6J3H.js → blobs-BW4U31ue.js} +3 -3
  45. package/dist/src/{blobs-BUWmKWzo.js → blobs-D_gg8nbm.js} +4 -4
  46. package/dist/src/{blobs-B1JriOyi.js → blobs-DjLby-uP.js} +4 -4
  47. package/dist/src/cache-BI5BY7ey.js +280 -0
  48. package/dist/src/cache-BRkhlH3k.cjs +3 -0
  49. package/dist/src/cache-BlC6aeJ0.js +3 -0
  50. package/dist/src/cache-Bzttsk0X.js +310 -0
  51. package/dist/src/cache-Cr-qWIbP.js +310 -0
  52. package/dist/src/cache-DGg-yTZG.cjs +376 -0
  53. package/dist/src/{chat-BEwdgGEg.js → chat-BLOdH60v.js} +63 -37
  54. package/dist/src/{chat-B0iaWhoh.js → chat-Cx_LkwvZ.js} +63 -37
  55. package/dist/src/{chat-DK1U-eZ-.js → chat-D9nudO9b.js} +5 -14
  56. package/dist/src/{chat-pxmiVpWe.js → chat-DChSH_Es.js} +63 -37
  57. package/dist/src/{chat-B-52XYI1.js → chat-DG2LkwLq.js} +3 -13
  58. package/dist/src/{chat-BtIKkLKx.cjs → chat-DH97tVV9.cjs} +3 -13
  59. package/dist/src/{chat-BE0qTA8e.js → chat-aMQZw6R7.js} +4 -16
  60. package/dist/src/{chat-CM8qWR3_.cjs → chat-vYqqv1gP.cjs} +64 -38
  61. package/dist/src/{chatkit-_8eJqKcD.js → chatkit-B8X34dQc.js} +4 -4
  62. package/dist/src/{chatkit-BYGQlHlV.js → chatkit-BXu42Qwt.js} +4 -4
  63. package/dist/src/{chatkit-a2D6mY6s.js → chatkit-CbMRoeYw.js} +4 -4
  64. package/dist/src/{chatkit-Cx174XI3.cjs → chatkit-D44VyUyB.cjs} +4 -4
  65. package/dist/src/{claude-agent-sdk-8ddRp1L2.cjs → claude-agent-sdk-BRq0bbIK.cjs} +23 -18
  66. package/dist/src/{claude-agent-sdk-CMjh4LFH.js → claude-agent-sdk-BjriSVRZ.js} +20 -15
  67. package/dist/src/{claude-agent-sdk-HgbFioFw.js → claude-agent-sdk-BzNZeZ0N.js} +20 -15
  68. package/dist/src/{claude-agent-sdk-Bq5EArsX.js → claude-agent-sdk-DYv_AJ8u.js} +21 -17
  69. package/dist/src/cloud-CoD5OacT.js +3 -0
  70. package/dist/src/{cloud-z8KZpUoa.js → cloud-Da0bofJd.js} +25 -13
  71. package/dist/src/{cloudflare-ai-Bbp26N0L.js → cloudflare-ai-CXC4b1EU.js} +5 -14
  72. package/dist/src/{cloudflare-ai-BGyXlpXJ.js → cloudflare-ai-CyBoIs1Q.js} +7 -15
  73. package/dist/src/{cloudflare-ai-DdKP9TKT.js → cloudflare-ai-DGOwgexC.js} +6 -17
  74. package/dist/src/{cloudflare-ai-C62x6MQG.cjs → cloudflare-ai-DJv5qnyb.cjs} +6 -15
  75. package/dist/src/{cloudflare-gateway-DXhtXDRb.js → cloudflare-gateway-1sAoOyft.js} +6 -16
  76. package/dist/src/{cloudflare-gateway-D-e9i1Sn.js → cloudflare-gateway-D-dnkzCF.js} +5 -18
  77. package/dist/src/{cloudflare-gateway-Dx36ftqF.cjs → cloudflare-gateway-DKVjkDav.cjs} +4 -15
  78. package/dist/src/{cloudflare-gateway-BwAaUgeW.js → cloudflare-gateway-TJkVrZlB.js} +4 -15
  79. package/dist/src/codex-app-server-CCLjqCh9.js +1915 -0
  80. package/dist/src/codex-app-server-CCe0TiDc.js +1915 -0
  81. package/dist/src/codex-app-server-CPW1LFwh.js +1916 -0
  82. package/dist/src/codex-app-server-VMRnjZ68.cjs +1920 -0
  83. package/dist/src/codex-sdk-1jm_qPHf.js +3 -0
  84. package/dist/src/codex-sdk-Bd8UbO9q.cjs +1172 -0
  85. package/dist/src/codex-sdk-BgEFQ70r.js +1164 -0
  86. package/dist/src/codex-sdk-Bzb_TqX9.js +1165 -0
  87. package/dist/src/codex-sdk-Danroptg.cjs +2 -0
  88. package/dist/src/codex-sdk-DfvDTN33.js +1165 -0
  89. package/dist/src/{cometapi-BDyV-NNm.js → cometapi-B5ImDlSm.js} +9 -15
  90. package/dist/src/{cometapi-C3hOlM7-.cjs → cometapi-BgAkuYCw.cjs} +9 -16
  91. package/dist/src/{cometapi-hhL4TAh3.js → cometapi-CC7hWxmX.js} +8 -15
  92. package/dist/src/{cometapi-sp7sJpBD.js → cometapi-CCbpHkuF.js} +8 -17
  93. package/dist/src/{completion-DoYy49ti.js → completion-2iuYVxwi.js} +8 -57
  94. package/dist/src/{completion-BCimtq-h.js → completion-CrD6MQ93.js} +8 -57
  95. package/dist/src/{completion-DlXUhj5c.cjs → completion-DtQ72Bm3.cjs} +7 -62
  96. package/dist/src/{completion-DCjv7RZ3.js → completion-Vq_ad618.js} +8 -57
  97. package/dist/src/{createHash-CTQmL3G2.js → createHash-4gFQpDDv.js} +3 -3
  98. package/dist/src/{createHash-Da8fMwqB.js → createHash-DPpsZgFF.js} +3 -3
  99. package/dist/src/{createHash-DmPQkvBh.js → createHash-Un4Q_huE.js} +3 -3
  100. package/dist/src/{createHash-BYwImsYv.cjs → createHash-VvBIc-AW.cjs} +4 -4
  101. package/dist/src/{docker-CxCkwMzc.js → docker--3qzPa-6.js} +6 -14
  102. package/dist/src/{docker-Cqj2-QVi.cjs → docker-D3AY-5F5.cjs} +7 -15
  103. package/dist/src/{docker-FeBni2dw.js → docker-DCsCDvwM.js} +7 -14
  104. package/dist/src/{docker-DpguQj-w.js → docker-Dorv4_Dg.js} +6 -16
  105. package/dist/src/embedding-BXhN5lCH.cjs +63 -0
  106. package/dist/src/embedding-ChS1ivFS.js +58 -0
  107. package/dist/src/embedding-DNRvZwRN.js +59 -0
  108. package/dist/src/embedding-D_bI4NDq.js +58 -0
  109. package/dist/src/entrypoint.js +69 -6
  110. package/dist/src/{errors-P6ll7XSJ.js → errors-DFHe4L-n.js} +1 -1
  111. package/dist/src/{esm-SUNIX1x3.js → esm-B6whoAcf.js} +15 -6
  112. package/dist/src/{esm-CKWP3u_P.js → esm-BRkfNsYs.js} +16 -7
  113. package/dist/src/{esm-7UIl0pPM.js → esm-BX8fwlAO.js} +27 -18
  114. package/dist/src/{esm-CipptfDu.cjs → esm-B_rGuPTo.cjs} +15 -6
  115. package/dist/src/eval-BQPLBJbw.js +3 -0
  116. package/dist/src/{eval-BTqTn7lb.js → eval-DJ_4A-tr.js} +50 -21
  117. package/dist/src/evalResult-BBJAHAtw.cjs +2 -0
  118. package/dist/src/evalResult-BBK58h2B.js +3 -0
  119. package/dist/src/{evalResult-DpARzUCb.cjs → evalResult-Cx-8OWkb.cjs} +29 -11
  120. package/dist/src/{evalResult-DUDShQrm.js → evalResult-D6P5I5il.js} +29 -11
  121. package/dist/src/{evalResult-BkIhRdTe.js → evalResult-pSvGWFMo.js} +29 -11
  122. package/dist/src/evalResult-spPqh1G_.js +2 -0
  123. package/dist/src/{evaluator-BcvOGaam.js → evaluator-D-UIbbYq.js} +3975 -2152
  124. package/dist/src/evaluator-DgLKaZk8.js +3 -0
  125. package/dist/src/{extractor-D_wd8jxt.js → extractor-BM3jRERL.js} +6 -6
  126. package/dist/src/{extractor-DG3sSfXE.cjs → extractor-Dxr2J_wK.cjs} +6 -6
  127. package/dist/src/{extractor-CAZ2G3Kh.js → extractor-DxyiFhPk.js} +6 -6
  128. package/dist/src/{extractor-C8XwivI9.js → extractor-YlZbUMsL.js} +6 -6
  129. package/dist/src/fetch-8viavNv8.js +3 -0
  130. package/dist/src/{fetch-DoVRJZhJ.js → fetch-B6ch2nU2.js} +199 -60
  131. package/dist/src/{fetch-CVAtKnI3.js → fetch-D9xxyC1p.js} +404 -252
  132. package/dist/src/{fetch-BnR9wSnm.cjs → fetch-NuqXW1Xb.cjs} +415 -263
  133. package/dist/src/{fetch-BiYv2BZc.js → fetch-Y5qX_kST.js} +222 -70
  134. package/dist/src/{fileExtensions-LcDYkU4v.js → fileExtensions-8CjoL7vB.js} +1 -1
  135. package/dist/src/{fileExtensions-DnqA1y9x.js → fileExtensions-BGh-W-HT.js} +1 -1
  136. package/dist/src/{fileExtensions-bYh77CN8.cjs → fileExtensions-D9h-8Wxg.cjs} +1 -1
  137. package/dist/src/{fileExtensions-Ds-foDzt.js → fileExtensions-DysCsxNG.js} +1 -1
  138. package/dist/src/{formatDuration-DgBVMN65.js → formatDuration-Ch4A7G3o.js} +1 -1
  139. package/dist/src/{genaiTracer-BfxrvSUb.cjs → genaiTracer-BokHC-MW.cjs} +7 -3
  140. package/dist/src/{genaiTracer-C1rxGO8Q.js → genaiTracer-C3ZPQU60.js} +6 -2
  141. package/dist/src/{genaiTracer-70Z8BIuV.js → genaiTracer-CFny3gOy.js} +6 -2
  142. package/dist/src/{genaiTracer-D3fD9dNV.js → genaiTracer-DxODqT9e.js} +6 -2
  143. package/dist/src/golang/wrapper.go +1 -1
  144. package/dist/src/{graders-DG7mhg-b.js → graders-BoUqsCEm.js} +7402 -5699
  145. package/dist/src/{graders-BElhu9ZY.cjs → graders-Bw1wk_21.cjs} +5220 -3437
  146. package/dist/src/graders-C84JI-m5.js +2 -0
  147. package/dist/src/graders-CBbd0K0Q.cjs +2 -0
  148. package/dist/src/graders-CbQqpHSN.js +3 -0
  149. package/dist/src/{graders-RjHF8VfG.js → graders-CgPn32yp.js} +7400 -5697
  150. package/dist/src/{graders-BXAJ0sbS.js → graders-CwrbifOo.js} +6136 -4433
  151. package/dist/src/graders-DS42d3ZG.js +2 -0
  152. package/dist/src/{image-6WQXK8m8.js → image-BeWaInPF.js} +4 -4
  153. package/dist/src/{image-PoF6DN3x.js → image-BmilRNqO.js} +8 -8
  154. package/dist/src/{image--F58eEIn.cjs → image-CxJoa3aW.cjs} +8 -8
  155. package/dist/src/{image-fza3zuKs.cjs → image-D10dNAav.cjs} +4 -4
  156. package/dist/src/{image-DO0RYnjH.js → image-Dr_3I3nK.js} +4 -5
  157. package/dist/src/{image-B8b6f36E.js → image-DsGRlkh7.js} +8 -8
  158. package/dist/src/{image-CoxZp9PZ.js → image-a_SGUobh.js} +8 -8
  159. package/dist/src/{image-xNbw5ph2.js → image-qjO6FWPs.js} +4 -4
  160. package/dist/src/index.cjs +4835 -2582
  161. package/dist/src/index.d.cts +2782 -31
  162. package/dist/src/index.d.ts +2783 -32
  163. package/dist/src/index.js +4817 -2564
  164. package/dist/src/{interactiveCheck-BnMYOjMu.js → interactiveCheck-CCICw2cy.js} +2 -2
  165. package/dist/src/{invariant-BtWWVVhl.js → invariant-B2Rf6avk.js} +1 -1
  166. package/dist/src/{invariant-vgHWClmd.js → invariant-DIYf9sP1.js} +1 -1
  167. package/dist/src/{knowledgeBase-Bi7CmDbx.js → knowledgeBase-BBETc5-S.js} +6 -8
  168. package/dist/src/{knowledgeBase-DqrLX8fy.cjs → knowledgeBase-C8qOo26M.cjs} +6 -8
  169. package/dist/src/{knowledgeBase-DFRXPZl_.js → knowledgeBase-CzAi2rUI.js} +7 -8
  170. package/dist/src/{knowledgeBase-Ce3ofVan.js → knowledgeBase-Dr3Kib7F.js} +6 -10
  171. package/dist/src/{litellm-CKiAxnoM.js → litellm-BLSiANhk.js} +6 -14
  172. package/dist/src/{litellm-CnHI69aj.cjs → litellm-CaUmV7Mk.cjs} +6 -15
  173. package/dist/src/{litellm-Tc294Jhj.js → litellm-DQGo_juI.js} +5 -14
  174. package/dist/src/{litellm-Bo2gQXpo.js → litellm-DRc4qWfc.js} +5 -16
  175. package/dist/src/{logger-BcJBzSSA.js → logger-BbY6ypFL.js} +41 -12
  176. package/dist/src/{logger-D5iKBpu_.cjs → logger-COuQb2xB.cjs} +51 -10
  177. package/dist/src/{logger-DO8_zM18.js → logger-Ct2S6Yx-.js} +40 -11
  178. package/dist/src/{logger-BnkjG2jt.js → logger-KD8JjCRJ.js} +41 -12
  179. package/dist/src/{luma-ray-C9q8rdQe.js → luma-ray-B-tNZzqW.js} +6 -10
  180. package/dist/src/{luma-ray-DP0QA9qn.js → luma-ray-CtS3OlGq.js} +6 -10
  181. package/dist/src/{luma-ray-0ehMPt5N.js → luma-ray-PJJgUjOc.js} +6 -11
  182. package/dist/src/{luma-ray-m9Ku2meV.cjs → luma-ray-if-Ml4R9.cjs} +6 -10
  183. package/dist/src/main.d.ts +1 -26
  184. package/dist/src/main.js +1188 -679
  185. package/dist/src/messages-B9dSjrNf.js +544 -0
  186. package/dist/src/messages-BnsVHUnm.cjs +558 -0
  187. package/dist/src/messages-CI69Lasb.js +543 -0
  188. package/dist/src/messages-CewuNcNS.js +543 -0
  189. package/dist/src/{meteor-DLZZ3osF.cjs → meteor-BBGcGeCa.cjs} +1 -1
  190. package/dist/src/{meteor-DUiCJRC-.js → meteor-BKTM-7KS.js} +1 -1
  191. package/dist/src/{meteor-44VjEACX.js → meteor-CeGo0Lu2.js} +2 -2
  192. package/dist/src/{meteor-D-SotUw9.js → meteor-Wc_aUVvu.js} +2 -2
  193. package/dist/src/{modelslab-B5J-ZM5c.js → modelslab-BCLOtfek.js} +8 -10
  194. package/dist/src/{modelslab-IQbNg-r7.cjs → modelslab-BkapYJhh.cjs} +7 -10
  195. package/dist/src/{modelslab-BTOT8FUO.js → modelslab-D73OnKSx.js} +7 -10
  196. package/dist/src/{modelslab-BI458moT.js → modelslab-zpz9JcK0.js} +7 -12
  197. package/dist/src/{nova-reel-BZ9y-Y5s.js → nova-reel-B8F_TK5w.js} +7 -10
  198. package/dist/src/{nova-reel-Xw1SXLpg.js → nova-reel-Bx0NFV2f.js} +6 -10
  199. package/dist/src/{nova-reel-DEeQlnOJ.js → nova-reel-CNGJTLtG.js} +6 -12
  200. package/dist/src/{nova-reel-CE5etkv9.cjs → nova-reel-DkT7tnoB.cjs} +6 -10
  201. package/dist/src/{nova-sonic-Ogqf-csn.js → nova-sonic-BaXRN1cr.js} +5 -7
  202. package/dist/src/{nova-sonic-DXTLpi-r.js → nova-sonic-BeTRaFOh.js} +4 -7
  203. package/dist/src/{nova-sonic-DWswpN1E.js → nova-sonic-CL7Zqv0G.js} +4 -9
  204. package/dist/src/{nova-sonic-N0yCm0vb.cjs → nova-sonic-YT426juD.cjs} +4 -7
  205. package/dist/src/{openai-BcB5KlTk.js → openai-BMHD2Huo.js} +6 -3
  206. package/dist/src/{openai-BMcwgD5C.js → openai-BT-JvDse.js} +6 -3
  207. package/dist/src/{openai-CoxGAQwn.cjs → openai-Cy1XLs0c.cjs} +6 -3
  208. package/dist/src/{openai-D6wITiVn.js → openai-D4fxGvRx.js} +6 -3
  209. package/dist/src/openclaw-Bq7RVR3k.js +1200 -0
  210. package/dist/src/openclaw-DA8U4DsD.js +1201 -0
  211. package/dist/src/openclaw-DObVgpjC.js +1200 -0
  212. package/dist/src/openclaw-DUBZP3GL.cjs +1206 -0
  213. package/dist/src/{opencode-sdk-CHCs7dEb.js → opencode-sdk-BB40Wir1.js} +6 -8
  214. package/dist/src/{opencode-sdk-DDxj4QqH.js → opencode-sdk-BM1UAIv1.js} +6 -8
  215. package/dist/src/{opencode-sdk-WWJhnbKr.cjs → opencode-sdk-CeqiOcOU.cjs} +7 -9
  216. package/dist/src/{opencode-sdk-C71Z0ehR.js → opencode-sdk-ChdK7F7z.js} +6 -9
  217. package/dist/src/{otlpReceiver-CZL48YfC.js → otlpReceiver-C6thJRXi.js} +154 -98
  218. package/dist/src/{otlpReceiver-C9KlUtxh.js → otlpReceiver-CcdIikOu.js} +154 -98
  219. package/dist/src/{otlpReceiver-DHKqJlsz.cjs → otlpReceiver-DNSQj6bf.cjs} +154 -98
  220. package/dist/src/{otlpReceiver-CavGAA6k.js → otlpReceiver-UYMQx3sy.js} +154 -98
  221. package/dist/src/{providerRegistry-BkzVH5Ba.js → providerRegistry-1gB5vtzQ.js} +2 -2
  222. package/dist/src/{providerRegistry-BTDgfV5h.cjs → providerRegistry-BESeALrr.cjs} +2 -2
  223. package/dist/src/{providerRegistry-CUWki5mQ.js → providerRegistry-DoACwqhD.js} +2 -2
  224. package/dist/src/{providerRegistry-B9lh-_tx.js → providerRegistry-PMsleEzs.js} +2 -2
  225. package/dist/src/providers-BuyzKt7C.js +2 -0
  226. package/dist/src/providers-C7lNVBjX.cjs +3 -0
  227. package/dist/src/providers-CCE2COJi2.js +2 -0
  228. package/dist/src/{providers-Cn73d5sr.js → providers-CJh7iriU.js} +17180 -16823
  229. package/dist/src/providers-Ctcc592x.js +3 -0
  230. package/dist/src/{providers-DvddrgxL.js → providers-DRrerKra.js} +1052 -695
  231. package/dist/src/{providers-Ch6Mr0gn.js → providers-DT-GtF2t.js} +16716 -16359
  232. package/dist/src/{providers-CScd1wN6.cjs → providers-eDShy16E.cjs} +19893 -19506
  233. package/dist/src/python/persistent_wrapper.py +0 -5
  234. package/dist/src/{pythonUtils-Cpo0Ez1p.js → pythonUtils-C4tltmIn.js} +4 -4
  235. package/dist/src/{pythonUtils-dAVigVK-.cjs → pythonUtils-CoLaCwNY.cjs} +4 -4
  236. package/dist/src/{pythonUtils-Bzwbgpbg.js → pythonUtils-DMO68Jg7.js} +3 -3
  237. package/dist/src/{pythonUtils-wIqk7zAf.js → pythonUtils-DNqbnRdx.js} +3 -3
  238. package/dist/src/{quiverai-BeofbLVc.js → quiverai-BSS9a7wV.js} +4 -4
  239. package/dist/src/{quiverai-DVSEqJiq.js → quiverai-Bk1KrvL6.js} +4 -4
  240. package/dist/src/{quiverai-CcUhPIBg.cjs → quiverai-Bpx6MZ7T.cjs} +4 -4
  241. package/dist/src/{quiverai-CCQn73lq.js → quiverai-CPKhWgaT.js} +4 -5
  242. package/dist/src/render-7uNJ2V14.js +135 -0
  243. package/dist/src/render-DlscvAUJ.js +135 -0
  244. package/dist/src/render-eui5p5mL.js +136 -0
  245. package/dist/src/{render-BHl6QVq9.js → render-nj-UaPdn.js} +2 -3
  246. package/dist/src/render-tG6ir9_g.cjs +165 -0
  247. package/dist/src/{responses-CgNyTPsY.js → responses-1ztiVYsx.js} +56 -17
  248. package/dist/src/{responses-BKP_WYis.js → responses-B8haB-mD.js} +56 -17
  249. package/dist/src/{responses-CQb1Tj69.js → responses-BiaBguAu.js} +56 -17
  250. package/dist/src/{responses-mo0KQDbu.cjs → responses-CF-ayauu.cjs} +56 -17
  251. package/dist/src/rubyUtils-4hjGxvju.js +3 -0
  252. package/dist/src/{rubyUtils-DECSbsfY.js → rubyUtils-BI0p46eZ.js} +3 -3
  253. package/dist/src/{rubyUtils-CiVfln3g.js → rubyUtils-CIQFnVz4.js} +3 -3
  254. package/dist/src/rubyUtils-CO-tuszQ.cjs +2 -0
  255. package/dist/src/{rubyUtils-PgU-gHmx.js → rubyUtils-DGnoCYL2.js} +4 -4
  256. package/dist/src/{rubyUtils-CGeUtCfW.cjs → rubyUtils-DoifqkiA.cjs} +5 -4
  257. package/dist/src/{sagemaker-CqeASYE5.js → sagemaker-BDLeW29y.js} +14 -18
  258. package/dist/src/{sagemaker-MUbD5V3v.js → sagemaker-C5T60MKf.js} +14 -19
  259. package/dist/src/{sagemaker-CVv8W7so.js → sagemaker-ClS_NB07.js} +14 -18
  260. package/dist/src/{sagemaker-jiw1wQa-.cjs → sagemaker-ljtY12VM.cjs} +14 -18
  261. package/dist/src/{scanner-DVDeUz1r.js → scanner-nOCWNIXa.js} +130 -35
  262. package/dist/src/server/golang/wrapper.go +1 -1
  263. package/dist/src/server/index.js +4829 -2529
  264. package/dist/src/server/python/persistent_wrapper.py +0 -5
  265. package/dist/src/{server-BtoCXeXI.cjs → server-BEECpeGG.cjs} +140 -6
  266. package/dist/src/{server-DZ9MtCn0.js → server-ByiF3qlg.js} +129 -9
  267. package/dist/src/{server-Cns05F1j.js → server-ByxbqAcQ.js} +128 -8
  268. package/dist/src/server-C0XKRNB_.cjs +2 -0
  269. package/dist/src/server-C_15p79-.js +3 -0
  270. package/dist/src/{server-CP9qKM40.js → server-gyd6d4Hc.js} +126 -7
  271. package/dist/src/{signal-C3ZTsUgi.js → signal-DTtUuU3l.js} +3 -3
  272. package/dist/src/{slack-DCEV-vWP.js → slack-4zZX1OKP.js} +2 -2
  273. package/dist/src/{slack-94iG3T0s.cjs → slack-BLlsDpfG.cjs} +2 -2
  274. package/dist/src/{slack-BR0HtO3K.js → slack-BPYLQLgb.js} +2 -2
  275. package/dist/src/{slack-2sdpGzbt.js → slack-Bamy_7te.js} +2 -2
  276. package/dist/src/{store-CLyU7AtI.cjs → store-2K0kDi80.cjs} +3 -3
  277. package/dist/src/{store-VB0GP46K.js → store-2OXm_eBY.js} +3 -3
  278. package/dist/src/store-BELqNwvz.js +3 -0
  279. package/dist/src/{store-Cj258DgL.js → store-BPkzEyFM.js} +3 -3
  280. package/dist/src/{store-P8OKm19S.js → store-CPh25336.js} +3 -3
  281. package/dist/src/store-uQZ4AjPe.cjs +2 -0
  282. package/dist/src/{tables-BEIFz2tM.js → tables-BMSOS2Gg.js} +3 -3
  283. package/dist/src/{tables-BdZQEpRz.cjs → tables-CXbaZ9y1.cjs} +3 -3
  284. package/dist/src/{tables-DmzvLbeZ.js → tables-NlvH23ky.js} +3 -3
  285. package/dist/src/{tables-kC7R5kiK.js → tables-WgdUZ8Ck.js} +3 -3
  286. package/dist/src/{telemetry-DPXLd7UE.js → telemetry--iqaGyaS.js} +5 -4
  287. package/dist/src/{telemetry-re627Lre.cjs → telemetry-CEQxGnMZ.cjs} +8 -7
  288. package/dist/src/{telemetry-BugWqKiu.js → telemetry-CgdVGV8N.js} +5 -4
  289. package/dist/src/{telemetry-BnH5VJAU.js → telemetry-DWdGHvEf.js} +5 -4
  290. package/dist/src/telemetry-DjNoC_n3.cjs +2 -0
  291. package/dist/src/telemetry-ZdPZc0fm.js +3 -0
  292. package/dist/src/{text-CW1cyrwj.cjs → text-BiNME7QG.cjs} +1 -1
  293. package/dist/src/{text-Db-Wt2u2.js → text-D4lz-Jg_.js} +1 -1
  294. package/dist/src/{text-TIv0QYnd.js → text-DDQP0tuQ.js} +1 -1
  295. package/dist/src/{text-B_UCRPp2.js → text-NWvfMfkF.js} +1 -1
  296. package/dist/src/{tokenUsageUtils-DflFMjS0.js → tokenUsageUtils-2wIvAhB3.js} +7 -3
  297. package/dist/src/{tokenUsageUtils-BDGe-iyI.js → tokenUsageUtils-4c780gFd.js} +7 -3
  298. package/dist/src/{tokenUsageUtils-NYT-WKS6.js → tokenUsageUtils-BjVkdk18.js} +7 -3
  299. package/dist/src/{tokenUsageUtils-bVa1ga6f.cjs → tokenUsageUtils-C9odhsbW.cjs} +7 -3
  300. package/dist/src/{transcription-CaMivnjG.js → transcription-84t4ALo2.js} +7 -11
  301. package/dist/src/{transcription-Hb3VnC4M.js → transcription-Bm2emLmJ.js} +8 -11
  302. package/dist/src/{transcription-BvtsrzRG.cjs → transcription-CZ4LG5hQ.cjs} +9 -13
  303. package/dist/src/{transcription-DOMMTu01.js → transcription-D7Q0vJsh.js} +7 -13
  304. package/dist/src/{transform-DrleutM3.js → transform-B-b6Cq-q.js} +8 -6
  305. package/dist/src/transform-BQt0BeAW.js +3 -0
  306. package/dist/src/transform-Bq5oqC0s.cjs +2 -0
  307. package/dist/src/{transform-ZrG2dvlo.cjs → transform-C9izGX54.cjs} +5 -5
  308. package/dist/src/{transform-BzK09Q_9.js → transform-CwbAZ84V.js} +5 -5
  309. package/dist/src/{transform-0BwoBsvO.cjs → transform-Dg4LcO1Y.cjs} +18 -10
  310. package/dist/src/{transform-B2-jIv68.js → transform-DtooZqYY.js} +8 -6
  311. package/dist/src/{transform-ljLYHEPh.js → transform-DzCF-wqV.js} +5 -5
  312. package/dist/src/{transform-DyDAwEpE.js → transform-_DpNB4qp.js} +9 -7
  313. package/dist/src/{transform-BqPkNPYm.js → transform-eGiUAv86.js} +5 -5
  314. package/dist/src/{transformersAvailability-DKoRtQLy.cjs → transformersAvailability-B22swDxr.cjs} +1 -1
  315. package/dist/src/{transformersAvailability-BGkzavwb.js → transformersAvailability-lvCCvuPT.js} +1 -1
  316. package/dist/src/{transformersAvailability-D6c6ROpT.js → transformersAvailability-rJGPccjr.js} +1 -1
  317. package/dist/src/{types-Cd3ygw8W.js → types-BDjGOq4E.js} +354 -24
  318. package/dist/src/{types-CIhFeUC4.js → types-BVH9hjgW.js} +364 -23
  319. package/dist/src/{types-D8cGDZbL.cjs → types-CgG2rKiW.cjs} +534 -167
  320. package/dist/src/{types-q8GXGF65.js → types-DNRZVOue.js} +498 -167
  321. package/dist/src/{util-BLvy9qfE.js → util-3pBZZb_H.js} +151 -149
  322. package/dist/src/{util-CFj4YKIn.cjs → util-A5_ZsQUn.cjs} +66 -44
  323. package/dist/src/{util-BtoGs5Cb.js → util-B9CNhyac.js} +66 -44
  324. package/dist/src/{util-Bm3E9jpK.js → util-BQOCAHQC.js} +692 -690
  325. package/dist/src/{util-vNmDL5DT.js → util-BVXcTwXu.js} +138 -36
  326. package/dist/src/{util-CgDCK4KI.js → util-BlFVL0UF.js} +66 -44
  327. package/dist/src/{util-DM2rTn_6.js → util-C-kmRosx.js} +66 -44
  328. package/dist/src/{util-DbVG-yZU.js → util-DFPeFkiV.js} +138 -36
  329. package/dist/src/{util-DMFeUvLz.js → util-DN0-b81k.js} +138 -36
  330. package/dist/src/{util--9u9UVCt.cjs → util-Dpmm_dAI.cjs} +143 -35
  331. package/dist/src/{util-CMMkIxfU.js → util-Dub0f_ej.js} +693 -691
  332. package/dist/src/{util-CuLo2pMR.cjs → util-DvpHnLt0.cjs} +714 -719
  333. package/dist/src/{utils-DOjD4dTC.js → utils-BUMN8orw.js} +6 -4
  334. package/dist/src/{utils-DKw8mrgr.cjs → utils-DkVeShIB.cjs} +6 -4
  335. package/dist/src/{utils-DEuL4VNB.js → utils-kt7lv30R.js} +6 -4
  336. package/dist/src/{utils-CFxO9KGo.js → utils-o8S5huU2.js} +6 -4
  337. package/dist/src/version-0frU0UTr.js +16 -0
  338. package/dist/src/version-CbpiUINz.js +17 -0
  339. package/dist/src/version-CbuBKu2U.js +16 -0
  340. package/dist/src/version-D9zu9FWB.cjs +27 -0
  341. package/dist/tsconfig.tsbuildinfo +1 -1
  342. package/package.json +57 -46
  343. package/dist/src/app/assets/index-B6l9CVVb.js +0 -439
  344. package/dist/src/app/assets/index-DyZ0Ep37.css +0 -1
  345. package/dist/src/app/assets/scroll-timeline-BdJZVXlz.js +0 -1
  346. package/dist/src/app/assets/sync-CStkzc6u.js +0 -4
  347. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +0 -36
  348. package/dist/src/app/assets/vendor-markdown-Bz7N-ca6.js +0 -29
  349. package/dist/src/app/assets/vendor-react-AtKqiNEf.js +0 -4
  350. package/dist/src/app/assets/vendor-syntax-D06x6TQF.js +0 -2
  351. package/dist/src/app/assets/vendor-utils-BvMHZmO7.js +0 -37
  352. package/dist/src/cache-C5yFZ4gC.cjs +0 -816
  353. package/dist/src/cache-CaT5tPgo.js +0 -756
  354. package/dist/src/cache-CyCanoMu.js +0 -6
  355. package/dist/src/cache-DSqR6ezl.js +0 -726
  356. package/dist/src/cache-Df_QFDNu.cjs +0 -5
  357. package/dist/src/cache-HP0NP4k3.js +0 -756
  358. package/dist/src/cloud-DE3t1-ZI.js +0 -4
  359. package/dist/src/codex-sdk-BQEw16R_.js +0 -834
  360. package/dist/src/codex-sdk-C_07GuVS.js +0 -834
  361. package/dist/src/codex-sdk-DE5G18dx.js +0 -835
  362. package/dist/src/codex-sdk-ZLKfDjqP.cjs +0 -838
  363. package/dist/src/eval-7aEqoMs3.js +0 -15
  364. package/dist/src/evalResult-CYNHkk5A.js +0 -12
  365. package/dist/src/evalResult-CuvJeNiM.js +0 -10
  366. package/dist/src/evalResult-tGdilrWt.cjs +0 -10
  367. package/dist/src/evaluator-BBUqRhz1.js +0 -36
  368. package/dist/src/fetch-UWU706qb.js +0 -5
  369. package/dist/src/graders-BxfEguVY.js +0 -32
  370. package/dist/src/graders-CzVMbEnv.js +0 -34
  371. package/dist/src/graders-DjCXfj0l.cjs +0 -32
  372. package/dist/src/graders-kHzIWOKu.js +0 -32
  373. package/dist/src/messages-DJNo37Ko.js +0 -246
  374. package/dist/src/messages-Dy9QecMs.js +0 -245
  375. package/dist/src/messages-HJsyEh4o.cjs +0 -257
  376. package/dist/src/messages-biC_ex-p.js +0 -245
  377. package/dist/src/openclaw-0Sv7AK3O.js +0 -580
  378. package/dist/src/openclaw-CXxbKgDH.cjs +0 -586
  379. package/dist/src/openclaw-D1FSCps-.js +0 -580
  380. package/dist/src/openclaw-D2ENvu7a.js +0 -582
  381. package/dist/src/providers-BSLEaIQG.js +0 -32
  382. package/dist/src/providers-D-FnDg8k.cjs +0 -31
  383. package/dist/src/providers-DEYiFVAo.js +0 -30
  384. package/dist/src/providers-sS2WI8YD.js +0 -30
  385. package/dist/src/rubyUtils-B1HXG4ej.cjs +0 -4
  386. package/dist/src/rubyUtils-Rt6pKA96.js +0 -5
  387. package/dist/src/server-B0Xh1Gx-.js +0 -7
  388. package/dist/src/server-DJTKu9IR.cjs +0 -5
  389. package/dist/src/store-C5u6MgC8.js +0 -6
  390. package/dist/src/store-CNHk-De4.cjs +0 -5
  391. package/dist/src/telemetry-Yig0Tino.js +0 -7
  392. package/dist/src/telemetry-p8Pwqm1i.cjs +0 -5
  393. package/dist/src/transform-ChNIpHz7.js +0 -6
  394. package/dist/src/transform-PtQ6rAE3.cjs +0 -5
@@ -66,11 +66,6 @@ def _init_tracing():
66
66
  _tracer = trace.get_tracer("promptfoo.python.provider")
67
67
  _tracing_enabled = True
68
68
 
69
- print(
70
- f"[PythonProvider] OpenTelemetry tracing enabled, endpoint: {endpoint}",
71
- file=sys.stderr,
72
- flush=True,
73
- )
74
69
  except ImportError:
75
70
  print(
76
71
  "[PythonProvider] OpenTelemetry packages not installed, tracing disabled. "
@@ -1,11 +1,133 @@
1
- const require_logger = require("./logger-D5iKBpu_.cjs");
2
- const require_fetch = require("./fetch-BnR9wSnm.cjs");
3
- const require_accounts = require("./accounts-BPyfpSeU.cjs");
1
+ const require_logger = require("./logger-COuQb2xB.cjs");
2
+ const require_fetch = require("./fetch-NuqXW1Xb.cjs");
3
+ const require_accounts = require("./accounts-BIFntVWB.cjs");
4
+ const require_esm = require("./esm-B_rGuPTo.cjs");
5
+ const require_codex_sdk = require("./codex-sdk-Bd8UbO9q.cjs");
6
+ let fs = require("fs");
7
+ fs = require_logger.__toESM(fs);
8
+ let path = require("path");
9
+ path = require_logger.__toESM(path);
4
10
  let chalk = require("chalk");
5
11
  chalk = require_logger.__toESM(chalk);
12
+ let os = require("os");
13
+ os = require_logger.__toESM(os);
6
14
  require("opener");
7
15
  let readline = require("readline");
8
16
  readline = require_logger.__toESM(readline);
17
+ //#region src/providers/openai/codexDefaults.ts
18
+ const CODEX_AUTH_FILENAME = "auth.json";
19
+ const CODEX_SDK_PACKAGE_NAME = "@openai/codex-sdk";
20
+ let codexDefaultWorkingDir;
21
+ const CODEX_GRADING_OUTPUT_SCHEMA = {
22
+ type: "object",
23
+ properties: {
24
+ pass: { type: "boolean" },
25
+ score: { type: "number" },
26
+ reason: { type: "string" }
27
+ },
28
+ required: [
29
+ "pass",
30
+ "score",
31
+ "reason"
32
+ ],
33
+ additionalProperties: false
34
+ };
35
+ const codexDefaultProvidersByCacheKey = /* @__PURE__ */ new Map();
36
+ const codexSdkAvailabilityByBaseDir = /* @__PURE__ */ new Map();
37
+ function getCodexEnvString(env, key) {
38
+ return env?.[key] || require_logger.getEnvString(key);
39
+ }
40
+ function getCodexHome(env) {
41
+ const homeDir = os.default.homedir?.();
42
+ const defaultHome = typeof homeDir === "string" && homeDir ? path.default.join(homeDir, ".codex") : void 0;
43
+ const codexHome = getCodexEnvString(env, "CODEX_HOME") || defaultHome || ".codex";
44
+ return path.default.resolve(codexHome);
45
+ }
46
+ function getTempDirectory() {
47
+ const tempDir = os.default.tmpdir?.();
48
+ return typeof tempDir === "string" && tempDir ? tempDir : process.cwd();
49
+ }
50
+ function getCodexDefaultWorkingDir() {
51
+ if (!codexDefaultWorkingDir) codexDefaultWorkingDir = fs.default.mkdtempSync(path.default.join(getTempDirectory(), "promptfoo-codex-default-"));
52
+ return codexDefaultWorkingDir;
53
+ }
54
+ function hasCodexAuthFile(env) {
55
+ try {
56
+ const stats = fs.default.statSync(path.default.join(getCodexHome(env), CODEX_AUTH_FILENAME));
57
+ return stats.isFile() && stats.size > 0;
58
+ } catch {
59
+ return false;
60
+ }
61
+ }
62
+ function hasCodexSdkPackage(baseDir) {
63
+ const cached = codexSdkAvailabilityByBaseDir.get(baseDir);
64
+ if (cached !== void 0) return cached;
65
+ const hasPackage = require_esm.resolvePackageEntryPoint(CODEX_SDK_PACKAGE_NAME, baseDir) !== null;
66
+ codexSdkAvailabilityByBaseDir.set(baseDir, hasPackage);
67
+ return hasPackage;
68
+ }
69
+ function canLoadCodexSdkPackage() {
70
+ return [process.cwd(), require_esm.getDirectory()].some((baseDir) => hasCodexSdkPackage(baseDir));
71
+ }
72
+ function hasCodexDefaultCredentials(env) {
73
+ return (Boolean(getCodexEnvString(env, "CODEX_API_KEY")) || hasCodexAuthFile(env)) && canLoadCodexSdkPackage();
74
+ }
75
+ function getCodexDefaultProviderConfig(env, config, defaultWorkingDir = getCodexDefaultWorkingDir()) {
76
+ const codexHome = getCodexEnvString(env, "CODEX_HOME");
77
+ const workingDir = config?.working_dir || defaultWorkingDir;
78
+ fs.default.mkdirSync(workingDir, { recursive: true });
79
+ const cliEnv = {
80
+ ...codexHome ? { CODEX_HOME: path.default.resolve(codexHome) } : {},
81
+ ...config?.cli_env
82
+ };
83
+ return {
84
+ approval_policy: "never",
85
+ sandbox_mode: "read-only",
86
+ skip_git_repo_check: true,
87
+ working_dir: workingDir,
88
+ ...config,
89
+ ...Object.keys(cliEnv).length > 0 ? { cli_env: cliEnv } : {}
90
+ };
91
+ }
92
+ function getCodexDefaultProvidersCacheKey(env) {
93
+ return JSON.stringify({
94
+ CODEX_HOME: getCodexEnvString(env, "CODEX_HOME"),
95
+ hasCodexApiKey: Boolean(getCodexEnvString(env, "CODEX_API_KEY")),
96
+ hasOpenAiApiKey: Boolean(getCodexEnvString(env, "OPENAI_API_KEY"))
97
+ });
98
+ }
99
+ function getCodexDefaultProviders(env) {
100
+ const cacheKey = getCodexDefaultProvidersCacheKey(env);
101
+ const cachedProviders = codexDefaultProvidersByCacheKey.get(cacheKey);
102
+ if (cachedProviders) return cachedProviders;
103
+ const defaultWorkingDir = getCodexDefaultWorkingDir();
104
+ const gradingProvider = new require_codex_sdk.OpenAICodexSDKProvider({
105
+ config: getCodexDefaultProviderConfig(env, void 0, defaultWorkingDir),
106
+ env
107
+ });
108
+ const gradingJsonProvider = new require_codex_sdk.OpenAICodexSDKProvider({
109
+ config: getCodexDefaultProviderConfig(env, { output_schema: CODEX_GRADING_OUTPUT_SCHEMA }, defaultWorkingDir),
110
+ env
111
+ });
112
+ const providers = {
113
+ gradingJsonProvider,
114
+ gradingProvider,
115
+ llmRubricProvider: gradingJsonProvider,
116
+ suggestionsProvider: gradingProvider,
117
+ synthesizeProvider: gradingProvider,
118
+ webSearchProvider: new require_codex_sdk.OpenAICodexSDKProvider({
119
+ config: getCodexDefaultProviderConfig(env, {
120
+ network_access_enabled: true,
121
+ output_schema: CODEX_GRADING_OUTPUT_SCHEMA,
122
+ web_search_mode: "live"
123
+ }, defaultWorkingDir),
124
+ env
125
+ })
126
+ };
127
+ codexDefaultProvidersByCacheKey.set(cacheKey, providers);
128
+ return providers;
129
+ }
130
+ //#endregion
9
131
  //#region src/redteam/remoteGeneration.ts
10
132
  /**
11
133
  * Gets the remote generation API endpoint URL.
@@ -72,10 +194,10 @@ function getRemoteVersionUrl() {
72
194
  * Determines if remote generation should be used based on configuration.
73
195
  * @returns true if remote generation should be used
74
196
  */
75
- function shouldGenerateRemote() {
197
+ function shouldGenerateRemote(options) {
76
198
  if (neverGenerateRemote()) return false;
77
199
  if (require_accounts.isLoggedIntoCloud()) return true;
78
- return !require_logger.getEnvString("OPENAI_API_KEY") || (require_logger.state.remote ?? false);
200
+ return !(Boolean(require_logger.getEnvString("OPENAI_API_KEY")) || options?.canUseCodexDefaultProvider && !options?.requireEmbeddingProvider && hasCodexDefaultCredentials()) || (require_logger.state.remote ?? false);
79
201
  }
80
202
  /**
81
203
  * Gets the URL for unaligned model inference (harmful content generation).
@@ -195,6 +317,12 @@ Object.defineProperty(exports, "checkServerFeatureSupport", {
195
317
  return checkServerFeatureSupport;
196
318
  }
197
319
  });
320
+ Object.defineProperty(exports, "getCodexDefaultProviders", {
321
+ enumerable: true,
322
+ get: function() {
323
+ return getCodexDefaultProviders;
324
+ }
325
+ });
198
326
  Object.defineProperty(exports, "getRemoteGenerationUrl", {
199
327
  enumerable: true,
200
328
  get: function() {
@@ -213,6 +341,12 @@ Object.defineProperty(exports, "getRemoteHealthUrl", {
213
341
  return getRemoteHealthUrl;
214
342
  }
215
343
  });
344
+ Object.defineProperty(exports, "hasCodexDefaultCredentials", {
345
+ enumerable: true,
346
+ get: function() {
347
+ return hasCodexDefaultCredentials;
348
+ }
349
+ });
216
350
  Object.defineProperty(exports, "neverGenerateRemote", {
217
351
  enumerable: true,
218
352
  get: function() {
@@ -238,4 +372,4 @@ Object.defineProperty(exports, "shouldGenerateRemote", {
238
372
  }
239
373
  });
240
374
 
241
- //# sourceMappingURL=server-BtoCXeXI.cjs.map
375
+ //# sourceMappingURL=server-BEECpeGG.cjs.map
@@ -1,11 +1,131 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvBool, E as getEnvString, j as state, s as logger } from "./logger-BcJBzSSA.js";
3
- import { O as getDefaultPort, n as fetchWithProxy } from "./fetch-DoVRJZhJ.js";
4
- import { c as isLoggedIntoCloud } from "./accounts-CFLK3mnD.js";
5
- import { r as CloudConfig } from "./cloud-z8KZpUoa.js";
2
+ import { N as state, O as getEnvString, T as getEnvBool, s as logger } from "./logger-BbY6ypFL.js";
3
+ import { A as getDefaultPort, n as fetchWithProxy } from "./fetch-B6ch2nU2.js";
4
+ import "./version-CbpiUINz.js";
5
+ import { c as isLoggedIntoCloud } from "./accounts-CLJHCDDb.js";
6
+ import { r as CloudConfig } from "./cloud-Da0bofJd.js";
7
+ import { i as resolvePackageEntryPoint, t as getDirectory } from "./esm-BX8fwlAO.js";
8
+ import { t as OpenAICodexSDKProvider } from "./codex-sdk-BgEFQ70r.js";
6
9
  import chalk from "chalk";
10
+ import fs from "fs";
11
+ import path from "path";
12
+ import os from "os";
7
13
  import opener from "opener";
8
14
  import readline from "readline";
15
+ //#region src/providers/openai/codexDefaults.ts
16
+ const CODEX_AUTH_FILENAME = "auth.json";
17
+ const CODEX_SDK_PACKAGE_NAME = "@openai/codex-sdk";
18
+ let codexDefaultWorkingDir;
19
+ const CODEX_GRADING_OUTPUT_SCHEMA = {
20
+ type: "object",
21
+ properties: {
22
+ pass: { type: "boolean" },
23
+ score: { type: "number" },
24
+ reason: { type: "string" }
25
+ },
26
+ required: [
27
+ "pass",
28
+ "score",
29
+ "reason"
30
+ ],
31
+ additionalProperties: false
32
+ };
33
+ const codexDefaultProvidersByCacheKey = /* @__PURE__ */ new Map();
34
+ const codexSdkAvailabilityByBaseDir = /* @__PURE__ */ new Map();
35
+ function getCodexEnvString(env, key) {
36
+ return env?.[key] || getEnvString(key);
37
+ }
38
+ function getCodexHome(env) {
39
+ const homeDir = os.homedir?.();
40
+ const defaultHome = typeof homeDir === "string" && homeDir ? path.join(homeDir, ".codex") : void 0;
41
+ const codexHome = getCodexEnvString(env, "CODEX_HOME") || defaultHome || ".codex";
42
+ return path.resolve(codexHome);
43
+ }
44
+ function getTempDirectory() {
45
+ const tempDir = os.tmpdir?.();
46
+ return typeof tempDir === "string" && tempDir ? tempDir : process.cwd();
47
+ }
48
+ function getCodexDefaultWorkingDir() {
49
+ if (!codexDefaultWorkingDir) codexDefaultWorkingDir = fs.mkdtempSync(path.join(getTempDirectory(), "promptfoo-codex-default-"));
50
+ return codexDefaultWorkingDir;
51
+ }
52
+ function hasCodexAuthFile(env) {
53
+ try {
54
+ const stats = fs.statSync(path.join(getCodexHome(env), CODEX_AUTH_FILENAME));
55
+ return stats.isFile() && stats.size > 0;
56
+ } catch {
57
+ return false;
58
+ }
59
+ }
60
+ function hasCodexSdkPackage(baseDir) {
61
+ const cached = codexSdkAvailabilityByBaseDir.get(baseDir);
62
+ if (cached !== void 0) return cached;
63
+ const hasPackage = resolvePackageEntryPoint(CODEX_SDK_PACKAGE_NAME, baseDir) !== null;
64
+ codexSdkAvailabilityByBaseDir.set(baseDir, hasPackage);
65
+ return hasPackage;
66
+ }
67
+ function canLoadCodexSdkPackage() {
68
+ return [process.cwd(), getDirectory()].some((baseDir) => hasCodexSdkPackage(baseDir));
69
+ }
70
+ function hasCodexDefaultCredentials(env) {
71
+ return (Boolean(getCodexEnvString(env, "CODEX_API_KEY")) || hasCodexAuthFile(env)) && canLoadCodexSdkPackage();
72
+ }
73
+ function getCodexDefaultProviderConfig(env, config, defaultWorkingDir = getCodexDefaultWorkingDir()) {
74
+ const codexHome = getCodexEnvString(env, "CODEX_HOME");
75
+ const workingDir = config?.working_dir || defaultWorkingDir;
76
+ fs.mkdirSync(workingDir, { recursive: true });
77
+ const cliEnv = {
78
+ ...codexHome ? { CODEX_HOME: path.resolve(codexHome) } : {},
79
+ ...config?.cli_env
80
+ };
81
+ return {
82
+ approval_policy: "never",
83
+ sandbox_mode: "read-only",
84
+ skip_git_repo_check: true,
85
+ working_dir: workingDir,
86
+ ...config,
87
+ ...Object.keys(cliEnv).length > 0 ? { cli_env: cliEnv } : {}
88
+ };
89
+ }
90
+ function getCodexDefaultProvidersCacheKey(env) {
91
+ return JSON.stringify({
92
+ CODEX_HOME: getCodexEnvString(env, "CODEX_HOME"),
93
+ hasCodexApiKey: Boolean(getCodexEnvString(env, "CODEX_API_KEY")),
94
+ hasOpenAiApiKey: Boolean(getCodexEnvString(env, "OPENAI_API_KEY"))
95
+ });
96
+ }
97
+ function getCodexDefaultProviders(env) {
98
+ const cacheKey = getCodexDefaultProvidersCacheKey(env);
99
+ const cachedProviders = codexDefaultProvidersByCacheKey.get(cacheKey);
100
+ if (cachedProviders) return cachedProviders;
101
+ const defaultWorkingDir = getCodexDefaultWorkingDir();
102
+ const gradingProvider = new OpenAICodexSDKProvider({
103
+ config: getCodexDefaultProviderConfig(env, void 0, defaultWorkingDir),
104
+ env
105
+ });
106
+ const gradingJsonProvider = new OpenAICodexSDKProvider({
107
+ config: getCodexDefaultProviderConfig(env, { output_schema: CODEX_GRADING_OUTPUT_SCHEMA }, defaultWorkingDir),
108
+ env
109
+ });
110
+ const providers = {
111
+ gradingJsonProvider,
112
+ gradingProvider,
113
+ llmRubricProvider: gradingJsonProvider,
114
+ suggestionsProvider: gradingProvider,
115
+ synthesizeProvider: gradingProvider,
116
+ webSearchProvider: new OpenAICodexSDKProvider({
117
+ config: getCodexDefaultProviderConfig(env, {
118
+ network_access_enabled: true,
119
+ output_schema: CODEX_GRADING_OUTPUT_SCHEMA,
120
+ web_search_mode: "live"
121
+ }, defaultWorkingDir),
122
+ env
123
+ })
124
+ };
125
+ codexDefaultProvidersByCacheKey.set(cacheKey, providers);
126
+ return providers;
127
+ }
128
+ //#endregion
9
129
  //#region src/redteam/remoteGeneration.ts
10
130
  /**
11
131
  * Gets the remote generation API endpoint URL.
@@ -72,10 +192,10 @@ function getRemoteVersionUrl() {
72
192
  * Determines if remote generation should be used based on configuration.
73
193
  * @returns true if remote generation should be used
74
194
  */
75
- function shouldGenerateRemote() {
195
+ function shouldGenerateRemote(options) {
76
196
  if (neverGenerateRemote()) return false;
77
197
  if (isLoggedIntoCloud()) return true;
78
- return !getEnvString("OPENAI_API_KEY") || (state.remote ?? false);
198
+ return !(Boolean(getEnvString("OPENAI_API_KEY")) || options?.canUseCodexDefaultProvider && !options?.requireEmbeddingProvider && hasCodexDefaultCredentials()) || (state.remote ?? false);
79
199
  }
80
200
  /**
81
201
  * Gets the URL for unaligned model inference (harmful content generation).
@@ -193,7 +313,7 @@ async function checkServerRunning(port = getDefaultPort()) {
193
313
  logger.debug(`Checking for existing server on port ${port}...`);
194
314
  try {
195
315
  const data = await (await fetchWithProxy(`http://localhost:${port}/health`, { headers: { "x-promptfoo-silent": "true" } })).json();
196
- return data.status === "OK" && data.version === "0.121.3";
316
+ return data.status === "OK" && data.version === "0.121.5";
197
317
  } catch (err) {
198
318
  logger.debug(`No existing server found - this is expected on first startup. ${String(err)}`);
199
319
  return false;
@@ -261,6 +381,6 @@ async function openAuthBrowser(authUrl, welcomeUrl, browserBehavior) {
261
381
  } else await doOpen();
262
382
  }
263
383
  //#endregion
264
- export { openAuthBrowser as a, promptYesNo as c, getRemoteHealthUrl as d, neverGenerateRemote as f, checkServerRunning as i, getRemoteGenerationUrl as l, shouldGenerateRemote as m, BrowserBehaviorNames as n, openBrowser as o, neverGenerateRemoteForRegularEvals as p, checkServerFeatureSupport as r, promptUser as s, BrowserBehavior as t, getRemoteGenerationUrlForUnaligned as u };
384
+ export { openAuthBrowser as a, promptYesNo as c, getRemoteHealthUrl as d, neverGenerateRemote as f, hasCodexDefaultCredentials as g, getCodexDefaultProviders as h, checkServerRunning as i, getRemoteGenerationUrl as l, shouldGenerateRemote as m, BrowserBehaviorNames as n, openBrowser as o, neverGenerateRemoteForRegularEvals as p, checkServerFeatureSupport as r, promptUser as s, BrowserBehavior as t, getRemoteGenerationUrlForUnaligned as u };
265
385
 
266
- //# sourceMappingURL=server-DZ9MtCn0.js.map
386
+ //# sourceMappingURL=server-ByiF3qlg.js.map
@@ -1,10 +1,130 @@
1
1
  import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
- import { C as getEnvString, D as state, a as logger, b as getEnvBool } from "./logger-BnkjG2jt.js";
3
- import { a as CloudConfig, k as getDefaultPort, t as fetchWithProxy } from "./fetch-BiYv2BZc.js";
4
- import { c as isLoggedIntoCloud } from "./accounts-Xatc0RYb.js";
2
+ import { S as getEnvBool, T as getEnvString, a as logger, k as state } from "./logger-KD8JjCRJ.js";
3
+ import { a as CloudConfig, j as getDefaultPort, t as fetchWithProxy } from "./fetch-Y5qX_kST.js";
4
+ import "./version-0frU0UTr.js";
5
+ import { c as isLoggedIntoCloud } from "./accounts-bnyHT7Ju.js";
6
+ import { i as resolvePackageEntryPoint, t as getDirectory } from "./esm-B6whoAcf.js";
7
+ import { t as OpenAICodexSDKProvider } from "./codex-sdk-Bzb_TqX9.js";
8
+ import fs from "fs";
9
+ import path from "path";
5
10
  import "chalk";
11
+ import os from "os";
6
12
  import opener from "opener";
7
13
  import readline from "readline";
14
+ //#region src/providers/openai/codexDefaults.ts
15
+ const CODEX_AUTH_FILENAME = "auth.json";
16
+ const CODEX_SDK_PACKAGE_NAME = "@openai/codex-sdk";
17
+ let codexDefaultWorkingDir;
18
+ const CODEX_GRADING_OUTPUT_SCHEMA = {
19
+ type: "object",
20
+ properties: {
21
+ pass: { type: "boolean" },
22
+ score: { type: "number" },
23
+ reason: { type: "string" }
24
+ },
25
+ required: [
26
+ "pass",
27
+ "score",
28
+ "reason"
29
+ ],
30
+ additionalProperties: false
31
+ };
32
+ const codexDefaultProvidersByCacheKey = /* @__PURE__ */ new Map();
33
+ const codexSdkAvailabilityByBaseDir = /* @__PURE__ */ new Map();
34
+ function getCodexEnvString(env, key) {
35
+ return env?.[key] || getEnvString(key);
36
+ }
37
+ function getCodexHome(env) {
38
+ const homeDir = os.homedir?.();
39
+ const defaultHome = typeof homeDir === "string" && homeDir ? path.join(homeDir, ".codex") : void 0;
40
+ const codexHome = getCodexEnvString(env, "CODEX_HOME") || defaultHome || ".codex";
41
+ return path.resolve(codexHome);
42
+ }
43
+ function getTempDirectory() {
44
+ const tempDir = os.tmpdir?.();
45
+ return typeof tempDir === "string" && tempDir ? tempDir : process.cwd();
46
+ }
47
+ function getCodexDefaultWorkingDir() {
48
+ if (!codexDefaultWorkingDir) codexDefaultWorkingDir = fs.mkdtempSync(path.join(getTempDirectory(), "promptfoo-codex-default-"));
49
+ return codexDefaultWorkingDir;
50
+ }
51
+ function hasCodexAuthFile(env) {
52
+ try {
53
+ const stats = fs.statSync(path.join(getCodexHome(env), CODEX_AUTH_FILENAME));
54
+ return stats.isFile() && stats.size > 0;
55
+ } catch {
56
+ return false;
57
+ }
58
+ }
59
+ function hasCodexSdkPackage(baseDir) {
60
+ const cached = codexSdkAvailabilityByBaseDir.get(baseDir);
61
+ if (cached !== void 0) return cached;
62
+ const hasPackage = resolvePackageEntryPoint(CODEX_SDK_PACKAGE_NAME, baseDir) !== null;
63
+ codexSdkAvailabilityByBaseDir.set(baseDir, hasPackage);
64
+ return hasPackage;
65
+ }
66
+ function canLoadCodexSdkPackage() {
67
+ return [process.cwd(), getDirectory()].some((baseDir) => hasCodexSdkPackage(baseDir));
68
+ }
69
+ function hasCodexDefaultCredentials(env) {
70
+ return (Boolean(getCodexEnvString(env, "CODEX_API_KEY")) || hasCodexAuthFile(env)) && canLoadCodexSdkPackage();
71
+ }
72
+ function getCodexDefaultProviderConfig(env, config, defaultWorkingDir = getCodexDefaultWorkingDir()) {
73
+ const codexHome = getCodexEnvString(env, "CODEX_HOME");
74
+ const workingDir = config?.working_dir || defaultWorkingDir;
75
+ fs.mkdirSync(workingDir, { recursive: true });
76
+ const cliEnv = {
77
+ ...codexHome ? { CODEX_HOME: path.resolve(codexHome) } : {},
78
+ ...config?.cli_env
79
+ };
80
+ return {
81
+ approval_policy: "never",
82
+ sandbox_mode: "read-only",
83
+ skip_git_repo_check: true,
84
+ working_dir: workingDir,
85
+ ...config,
86
+ ...Object.keys(cliEnv).length > 0 ? { cli_env: cliEnv } : {}
87
+ };
88
+ }
89
+ function getCodexDefaultProvidersCacheKey(env) {
90
+ return JSON.stringify({
91
+ CODEX_HOME: getCodexEnvString(env, "CODEX_HOME"),
92
+ hasCodexApiKey: Boolean(getCodexEnvString(env, "CODEX_API_KEY")),
93
+ hasOpenAiApiKey: Boolean(getCodexEnvString(env, "OPENAI_API_KEY"))
94
+ });
95
+ }
96
+ function getCodexDefaultProviders(env) {
97
+ const cacheKey = getCodexDefaultProvidersCacheKey(env);
98
+ const cachedProviders = codexDefaultProvidersByCacheKey.get(cacheKey);
99
+ if (cachedProviders) return cachedProviders;
100
+ const defaultWorkingDir = getCodexDefaultWorkingDir();
101
+ const gradingProvider = new OpenAICodexSDKProvider({
102
+ config: getCodexDefaultProviderConfig(env, void 0, defaultWorkingDir),
103
+ env
104
+ });
105
+ const gradingJsonProvider = new OpenAICodexSDKProvider({
106
+ config: getCodexDefaultProviderConfig(env, { output_schema: CODEX_GRADING_OUTPUT_SCHEMA }, defaultWorkingDir),
107
+ env
108
+ });
109
+ const providers = {
110
+ gradingJsonProvider,
111
+ gradingProvider,
112
+ llmRubricProvider: gradingJsonProvider,
113
+ suggestionsProvider: gradingProvider,
114
+ synthesizeProvider: gradingProvider,
115
+ webSearchProvider: new OpenAICodexSDKProvider({
116
+ config: getCodexDefaultProviderConfig(env, {
117
+ network_access_enabled: true,
118
+ output_schema: CODEX_GRADING_OUTPUT_SCHEMA,
119
+ web_search_mode: "live"
120
+ }, defaultWorkingDir),
121
+ env
122
+ })
123
+ };
124
+ codexDefaultProvidersByCacheKey.set(cacheKey, providers);
125
+ return providers;
126
+ }
127
+ //#endregion
8
128
  //#region src/redteam/remoteGeneration.ts
9
129
  /**
10
130
  * Gets the remote generation API endpoint URL.
@@ -71,10 +191,10 @@ function getRemoteVersionUrl() {
71
191
  * Determines if remote generation should be used based on configuration.
72
192
  * @returns true if remote generation should be used
73
193
  */
74
- function shouldGenerateRemote() {
194
+ function shouldGenerateRemote(options) {
75
195
  if (neverGenerateRemote()) return false;
76
196
  if (isLoggedIntoCloud()) return true;
77
- return !getEnvString("OPENAI_API_KEY") || (state.remote ?? false);
197
+ return !(Boolean(getEnvString("OPENAI_API_KEY")) || options?.canUseCodexDefaultProvider && !options?.requireEmbeddingProvider && hasCodexDefaultCredentials()) || (state.remote ?? false);
78
198
  }
79
199
  /**
80
200
  * Gets the URL for unaligned model inference (harmful content generation).
@@ -199,7 +319,7 @@ async function checkServerRunning(port = getDefaultPort()) {
199
319
  logger.debug(`Checking for existing server on port ${port}...`);
200
320
  try {
201
321
  const data = await (await fetchWithProxy(`http://localhost:${port}/health`, { headers: { "x-promptfoo-silent": "true" } })).json();
202
- return data.status === "OK" && data.version === "0.121.3";
322
+ return data.status === "OK" && data.version === "0.121.5";
203
323
  } catch (err) {
204
324
  logger.debug(`No existing server found - this is expected on first startup. ${String(err)}`);
205
325
  return false;
@@ -224,6 +344,6 @@ async function openBrowser(browserBehavior, port = getDefaultPort()) {
224
344
  } else if (browserBehavior !== BrowserBehavior.SKIP) await doOpen();
225
345
  }
226
346
  //#endregion
227
- export { openBrowser as a, getRemoteGenerationUrl as c, neverGenerateRemote as d, neverGenerateRemoteForRegularEvals as f, checkServerRunning as i, getRemoteGenerationUrlForUnaligned as l, BrowserBehaviorNames as n, server_exports as o, shouldGenerateRemote as p, checkServerFeatureSupport as r, promptYesNo as s, BrowserBehavior as t, getRemoteHealthUrl as u };
347
+ export { openBrowser as a, getRemoteGenerationUrl as c, neverGenerateRemote as d, neverGenerateRemoteForRegularEvals as f, hasCodexDefaultCredentials as h, checkServerRunning as i, getRemoteGenerationUrlForUnaligned as l, getCodexDefaultProviders as m, BrowserBehaviorNames as n, server_exports as o, shouldGenerateRemote as p, checkServerFeatureSupport as r, promptYesNo as s, BrowserBehavior as t, getRemoteHealthUrl as u };
228
348
 
229
- //# sourceMappingURL=server-Cns05F1j.js.map
349
+ //# sourceMappingURL=server-ByxbqAcQ.js.map
@@ -0,0 +1,2 @@
1
+ const require_server = require("./server-BEECpeGG.cjs");
2
+ exports.checkServerFeatureSupport = require_server.checkServerFeatureSupport;
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { r as checkServerFeatureSupport } from "./server-ByiF3qlg.js";
3
+ export { checkServerFeatureSupport };