promptfoo 0.121.4 → 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 (346) hide show
  1. package/dist/src/{ListApp-DQkFNqE9.js → ListApp-BRUsT43Y.js} +1 -1
  2. package/dist/src/{accounts-Dy17bs4D.cjs → accounts-BIFntVWB.cjs} +4 -4
  3. package/dist/src/{accounts-F9d_5sMC.js → accounts-CLJHCDDb.js} +6 -6
  4. package/dist/src/{accounts-DhMYUUbu.js → accounts-CaLNYnf7.js} +4 -4
  5. package/dist/src/{accounts-DdJ2pHMI.js → accounts-bnyHT7Ju.js} +5 -5
  6. package/dist/src/{agentic-utils-w68v6_Dz.js → agentic-utils-B5krlibj.js} +3 -3
  7. package/dist/src/{agentic-utils-P172hM8B.js → agentic-utils-Ba67xmgs.js} +2 -2
  8. package/dist/src/{agentic-utils-qFlm6zes.js → agentic-utils-BclbiXiq.js} +3 -3
  9. package/dist/src/{agentic-utils-BpX5b23w.cjs → agentic-utils-D2x0wGhB.cjs} +2 -2
  10. package/dist/src/{agents-CgaMXvLM.js → agents-BGqaTDnr.js} +5 -5
  11. package/dist/src/{agents-8FDnTriG.js → agents-BV9yFpXX.js} +5 -5
  12. package/dist/src/{agents-aYPQLf8W.js → agents-BYdMl1UE.js} +4 -4
  13. package/dist/src/{agents-pQeBEXMm.js → agents-DhxWMCtH.js} +5 -5
  14. package/dist/src/{agents-D7-HGxUj.cjs → agents-DiWmQYH9.cjs} +4 -4
  15. package/dist/src/{agents-BahDpe5G.cjs → agents-WULPVjbH.cjs} +4 -4
  16. package/dist/src/{agents-DJ35I3Nt.js → agents-emVcx3yh.js} +5 -5
  17. package/dist/src/{agents-C-R_jfzI.js → agents-n6vPqV3i.js} +4 -4
  18. package/dist/src/{aimlapi-BCq3MHeL.js → aimlapi-BxqK9HF_.js} +7 -7
  19. package/dist/src/{aimlapi-qcK4OT55.cjs → aimlapi-BzLjZI_m.cjs} +6 -6
  20. package/dist/src/{aimlapi-BD6J9oKt.js → aimlapi-DR4pgeiC.js} +6 -6
  21. package/dist/src/{aimlapi-sgYnkE54.js → aimlapi-uPGp0Zdo.js} +7 -7
  22. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
  23. package/dist/src/app/assets/Report-vjzrbgce.js +1 -0
  24. package/dist/src/app/assets/index-B3NQ8HTd.js +385 -0
  25. package/dist/src/app/assets/{index-BXGkeMwh.css → index-Cli2yAXv.css} +1 -1
  26. package/dist/src/app/index.html +27 -2
  27. package/dist/src/{audio-DcVKoInv.js → audio-BvpTOArF.js} +4 -4
  28. package/dist/src/{audio-BQtNuYBj.cjs → audio-C0vDeS0j.cjs} +3 -3
  29. package/dist/src/{audio-B7izf48x.js → audio-CScmnmEB.js} +4 -4
  30. package/dist/src/{audio-COrn8rM6.js → audio-Da8U9IS5.js} +3 -3
  31. package/dist/src/{base-fZ9wgg50.js → base-BOMaNEes.js} +3 -3
  32. package/dist/src/{base-PYJvBE1i.js → base-BTux96b1.js} +2 -2
  33. package/dist/src/{base-D-670DX8.cjs → base-Tw6uhH8K.cjs} +2 -2
  34. package/dist/src/{base-yrI1Yal4.js → base-dYsl2hmL.js} +3 -3
  35. package/dist/src/{blobs-D2FAd1Q5.cjs → blobs-B95F_7vE.cjs} +2 -2
  36. package/dist/src/{blobs-C-F78Kfn.js → blobs-BW4U31ue.js} +2 -2
  37. package/dist/src/{blobs-BCZavS8s.js → blobs-D_gg8nbm.js} +3 -3
  38. package/dist/src/{blobs-BQWqnnvL.js → blobs-DjLby-uP.js} +3 -3
  39. package/dist/src/{cache-mb7c8hbp.js → cache-BI5BY7ey.js} +4 -4
  40. package/dist/src/{cache-DbLsVWB2.cjs → cache-BRkhlH3k.cjs} +1 -1
  41. package/dist/src/cache-BlC6aeJ0.js +3 -0
  42. package/dist/src/{cache-D5NZmMiT.js → cache-Bzttsk0X.js} +2 -2
  43. package/dist/src/{cache-C4Xb-hNb.js → cache-Cr-qWIbP.js} +3 -3
  44. package/dist/src/{cache-BIyPcp5v.cjs → cache-DGg-yTZG.cjs} +2 -2
  45. package/dist/src/{chat-Dr3DUQ0D.js → chat-BLOdH60v.js} +12 -12
  46. package/dist/src/{chat-BfPaS15_.js → chat-Cx_LkwvZ.js} +12 -12
  47. package/dist/src/{chat-mW0ORo8G.js → chat-D9nudO9b.js} +4 -4
  48. package/dist/src/{chat-I9izLm49.js → chat-DChSH_Es.js} +12 -12
  49. package/dist/src/{chat-MKxMnZJZ.js → chat-DG2LkwLq.js} +2 -2
  50. package/dist/src/{chat-BPXSW8Bv.cjs → chat-DH97tVV9.cjs} +2 -2
  51. package/dist/src/{chat-0bwXjVP0.js → chat-aMQZw6R7.js} +4 -4
  52. package/dist/src/{chat-CclRbxGf.cjs → chat-vYqqv1gP.cjs} +11 -11
  53. package/dist/src/{chatkit-zUIVoDos.js → chatkit-B8X34dQc.js} +4 -4
  54. package/dist/src/{chatkit-Cv6AhukM.js → chatkit-BXu42Qwt.js} +3 -3
  55. package/dist/src/{chatkit-CJnHRRMM.js → chatkit-CbMRoeYw.js} +4 -4
  56. package/dist/src/{chatkit-BoWoSgXl.cjs → chatkit-D44VyUyB.cjs} +3 -3
  57. package/dist/src/{claude-agent-sdk-CPJo3dBQ.cjs → claude-agent-sdk-BRq0bbIK.cjs} +8 -8
  58. package/dist/src/{claude-agent-sdk-BQNuLaAK.js → claude-agent-sdk-BjriSVRZ.js} +7 -7
  59. package/dist/src/{claude-agent-sdk-Dtq_L-Sc.js → claude-agent-sdk-BzNZeZ0N.js} +7 -7
  60. package/dist/src/{claude-agent-sdk-nfAIcxNf.js → claude-agent-sdk-DYv_AJ8u.js} +7 -7
  61. package/dist/src/cloud-CoD5OacT.js +3 -0
  62. package/dist/src/{cloud-DQZ5sVjW.js → cloud-Da0bofJd.js} +3 -3
  63. package/dist/src/{cloudflare-ai-BIB567w6.js → cloudflare-ai-CXC4b1EU.js} +4 -4
  64. package/dist/src/{cloudflare-ai-DlKr0rY7.js → cloudflare-ai-CyBoIs1Q.js} +6 -6
  65. package/dist/src/{cloudflare-ai-DGLte7Py.js → cloudflare-ai-DGOwgexC.js} +6 -6
  66. package/dist/src/{cloudflare-ai-Dl3N9OVD.cjs → cloudflare-ai-DJv5qnyb.cjs} +4 -4
  67. package/dist/src/{cloudflare-gateway-BDZrYydE.js → cloudflare-gateway-1sAoOyft.js} +5 -5
  68. package/dist/src/{cloudflare-gateway-CiIZHU0Q.js → cloudflare-gateway-D-dnkzCF.js} +5 -5
  69. package/dist/src/{cloudflare-gateway-BYDp495F.cjs → cloudflare-gateway-DKVjkDav.cjs} +3 -3
  70. package/dist/src/{cloudflare-gateway-DI1HNP5F.js → cloudflare-gateway-TJkVrZlB.js} +3 -3
  71. package/dist/src/codex-app-server-CCLjqCh9.js +1915 -0
  72. package/dist/src/codex-app-server-CCe0TiDc.js +1915 -0
  73. package/dist/src/codex-app-server-CPW1LFwh.js +1916 -0
  74. package/dist/src/codex-app-server-VMRnjZ68.cjs +1920 -0
  75. package/dist/src/codex-sdk-1jm_qPHf.js +3 -0
  76. package/dist/src/{codex-sdk-C2_M2pl_.cjs → codex-sdk-Bd8UbO9q.cjs} +5 -5
  77. package/dist/src/{codex-sdk-CpqiOqDO.js → codex-sdk-BgEFQ70r.js} +6 -6
  78. package/dist/src/{codex-sdk-Rtky3M4I.js → codex-sdk-Bzb_TqX9.js} +6 -6
  79. package/dist/src/{codex-sdk-CWEnH70W.cjs → codex-sdk-Danroptg.cjs} +1 -1
  80. package/dist/src/{codex-sdk-CErXn7qh.js → codex-sdk-DfvDTN33.js} +5 -5
  81. package/dist/src/{cometapi-CtJ-mS8R.js → cometapi-B5ImDlSm.js} +8 -8
  82. package/dist/src/{cometapi-UVOryo4W.cjs → cometapi-BgAkuYCw.cjs} +7 -7
  83. package/dist/src/{cometapi-BUlt_ELa.js → cometapi-CC7hWxmX.js} +8 -8
  84. package/dist/src/{cometapi-DT-jlVCB.js → cometapi-CCbpHkuF.js} +7 -7
  85. package/dist/src/{completion-x0a_c2y1.js → completion-2iuYVxwi.js} +6 -6
  86. package/dist/src/{completion-Dnxn7E-j.js → completion-CrD6MQ93.js} +5 -5
  87. package/dist/src/{completion-BozdoXba.cjs → completion-DtQ72Bm3.cjs} +5 -5
  88. package/dist/src/{completion-HUe8wDhZ.js → completion-Vq_ad618.js} +6 -6
  89. package/dist/src/{createHash-ChI45QR1.js → createHash-DPpsZgFF.js} +1 -1
  90. package/dist/src/{createHash-CwDVU5xr.js → createHash-Un4Q_huE.js} +1 -1
  91. package/dist/src/{createHash-B7KvgoOD.cjs → createHash-VvBIc-AW.cjs} +1 -1
  92. package/dist/src/{docker-DCgsveLD.js → docker--3qzPa-6.js} +6 -6
  93. package/dist/src/{docker-DS4_Osau.cjs → docker-D3AY-5F5.cjs} +5 -5
  94. package/dist/src/{docker-CQmlA2NU.js → docker-DCsCDvwM.js} +6 -6
  95. package/dist/src/{docker-ClnmCf1Z.js → docker-Dorv4_Dg.js} +5 -5
  96. package/dist/src/{embedding-I45KG3o7.cjs → embedding-BXhN5lCH.cjs} +5 -5
  97. package/dist/src/{embedding-nFbumxcv.js → embedding-ChS1ivFS.js} +5 -5
  98. package/dist/src/{embedding-D3xTseo7.js → embedding-DNRvZwRN.js} +6 -6
  99. package/dist/src/{embedding-DD9wa3ae.js → embedding-D_bI4NDq.js} +6 -6
  100. package/dist/src/{errors-Cw810C93.js → errors-DFHe4L-n.js} +1 -1
  101. package/dist/src/{esm-Dh4dOLlt.js → esm-B6whoAcf.js} +2 -2
  102. package/dist/src/{esm-C7PnfdF8.js → esm-BRkfNsYs.js} +1 -1
  103. package/dist/src/{esm-tVgYPY-f.js → esm-BX8fwlAO.js} +2 -2
  104. package/dist/src/{esm-CtEPLdAj.cjs → esm-B_rGuPTo.cjs} +1 -1
  105. package/dist/src/{eval-CzJFfFO9.js → eval-BQPLBJbw.js} +1 -1
  106. package/dist/src/{eval-u4UVafl6.js → eval-DJ_4A-tr.js} +14 -14
  107. package/dist/src/evalResult-BBJAHAtw.cjs +2 -0
  108. package/dist/src/evalResult-BBK58h2B.js +3 -0
  109. package/dist/src/{evalResult-KZqXl4XP.cjs → evalResult-Cx-8OWkb.cjs} +28 -10
  110. package/dist/src/{evalResult-D3hVYFis.js → evalResult-D6P5I5il.js} +29 -11
  111. package/dist/src/{evalResult-Bgm9ZH31.js → evalResult-pSvGWFMo.js} +29 -11
  112. package/dist/src/{evaluator-IvuDYSvQ.js → evaluator-D-UIbbYq.js} +845 -98
  113. package/dist/src/evaluator-DgLKaZk8.js +3 -0
  114. package/dist/src/{extractor-Dk6bRWkv.js → extractor-BM3jRERL.js} +5 -5
  115. package/dist/src/{extractor-WVPOrH43.cjs → extractor-Dxr2J_wK.cjs} +5 -5
  116. package/dist/src/{extractor-DNSeBVOJ.js → extractor-DxyiFhPk.js} +6 -6
  117. package/dist/src/{extractor-CAfTSraf.js → extractor-YlZbUMsL.js} +6 -6
  118. package/dist/src/fetch-8viavNv8.js +3 -0
  119. package/dist/src/{fetch-BEWnXrrG.js → fetch-B6ch2nU2.js} +9 -20
  120. package/dist/src/{fetch-Di00EQrc.js → fetch-D9xxyC1p.js} +221 -232
  121. package/dist/src/{fetch-CJU5ELPa.cjs → fetch-NuqXW1Xb.cjs} +221 -244
  122. package/dist/src/{fetch-B0Z3Oe4k.js → fetch-Y5qX_kST.js} +8 -19
  123. package/dist/src/{fileExtensions-BArZuxsI.js → fileExtensions-8CjoL7vB.js} +1 -1
  124. package/dist/src/{fileExtensions-DnqA1y9x.js → fileExtensions-BGh-W-HT.js} +1 -1
  125. package/dist/src/{fileExtensions-bYh77CN8.cjs → fileExtensions-D9h-8Wxg.cjs} +1 -1
  126. package/dist/src/{fileExtensions-AWa2ZML4.js → fileExtensions-DysCsxNG.js} +1 -1
  127. package/dist/src/{formatDuration-DZzPsexs.js → formatDuration-Ch4A7G3o.js} +1 -1
  128. package/dist/src/{genaiTracer-yRuxj9-L.cjs → genaiTracer-BokHC-MW.cjs} +1 -1
  129. package/dist/src/{genaiTracer-DWdZ28hY.js → genaiTracer-C3ZPQU60.js} +1 -1
  130. package/dist/src/{genaiTracer-XnrcgDCe.js → genaiTracer-CFny3gOy.js} +1 -1
  131. package/dist/src/{genaiTracer-COYDi-tC.js → genaiTracer-DxODqT9e.js} +1 -1
  132. package/dist/src/{graders-Zy3x0zqX.js → graders-BoUqsCEm.js} +1303 -2044
  133. package/dist/src/{graders--zknU_uk.cjs → graders-Bw1wk_21.cjs} +1553 -2240
  134. package/dist/src/graders-C84JI-m5.js +2 -0
  135. package/dist/src/graders-CBbd0K0Q.cjs +2 -0
  136. package/dist/src/graders-CbQqpHSN.js +3 -0
  137. package/dist/src/{graders-eIHhRqoC.js → graders-CgPn32yp.js} +1300 -2041
  138. package/dist/src/{graders-pvbReLLn.js → graders-CwrbifOo.js} +747 -1488
  139. package/dist/src/graders-DS42d3ZG.js +2 -0
  140. package/dist/src/{image-9302QVqR.js → image-BeWaInPF.js} +3 -3
  141. package/dist/src/{image-DVz2RiMF.js → image-BmilRNqO.js} +7 -7
  142. package/dist/src/{image-x6KqLQl4.cjs → image-CxJoa3aW.cjs} +6 -6
  143. package/dist/src/{image-De2FBmYV.cjs → image-D10dNAav.cjs} +3 -3
  144. package/dist/src/{image-dnoUgPrC.js → image-Dr_3I3nK.js} +4 -4
  145. package/dist/src/{image-B5Mv-Z3h.js → image-DsGRlkh7.js} +7 -7
  146. package/dist/src/{image-qUpPvmNZ.js → image-a_SGUobh.js} +6 -6
  147. package/dist/src/{image-u7-rKnYU.js → image-qjO6FWPs.js} +4 -4
  148. package/dist/src/index.cjs +1052 -296
  149. package/dist/src/index.d.cts +124 -13
  150. package/dist/src/index.d.ts +125 -14
  151. package/dist/src/index.js +1018 -262
  152. package/dist/src/{interactiveCheck-CLERUB0c.js → interactiveCheck-CCICw2cy.js} +2 -2
  153. package/dist/src/{invariant-BtWWVVhl.js → invariant-B2Rf6avk.js} +1 -1
  154. package/dist/src/{invariant-vgHWClmd.js → invariant-DIYf9sP1.js} +1 -1
  155. package/dist/src/{knowledgeBase-RhFPGWDc.js → knowledgeBase-BBETc5-S.js} +6 -6
  156. package/dist/src/{knowledgeBase-Bpoe_nLu.cjs → knowledgeBase-C8qOo26M.cjs} +5 -5
  157. package/dist/src/{knowledgeBase-lm9RXSAm.js → knowledgeBase-CzAi2rUI.js} +6 -6
  158. package/dist/src/{knowledgeBase-Dgc7CBWF.js → knowledgeBase-Dr3Kib7F.js} +5 -5
  159. package/dist/src/{litellm-C2kqjxqp.js → litellm-BLSiANhk.js} +5 -5
  160. package/dist/src/{litellm-CoyI4IAl.cjs → litellm-CaUmV7Mk.cjs} +4 -4
  161. package/dist/src/{litellm-p37R1dzQ.js → litellm-DQGo_juI.js} +4 -4
  162. package/dist/src/{litellm-DRjpcSa7.js → litellm-DRc4qWfc.js} +5 -5
  163. package/dist/src/{logger-DksKw1Qc.js → logger-BbY6ypFL.js} +2 -2
  164. package/dist/src/{logger-B88EkIn6.js → logger-KD8JjCRJ.js} +2 -2
  165. package/dist/src/{luma-ray-KgTCXrZC.js → luma-ray-B-tNZzqW.js} +6 -6
  166. package/dist/src/{luma-ray-B863CmuZ.js → luma-ray-CtS3OlGq.js} +5 -5
  167. package/dist/src/{luma-ray-BTTLtqQ8.js → luma-ray-PJJgUjOc.js} +6 -6
  168. package/dist/src/{luma-ray-BxVKaW2a.cjs → luma-ray-if-Ml4R9.cjs} +5 -5
  169. package/dist/src/main.js +242 -198
  170. package/dist/src/{messages-zWbkLLHz.js → messages-B9dSjrNf.js} +264 -16
  171. package/dist/src/{messages-811uVVW5.cjs → messages-BnsVHUnm.cjs} +266 -15
  172. package/dist/src/{messages-MYTQ2TWp.js → messages-CI69Lasb.js} +264 -16
  173. package/dist/src/{messages-BTQz42fn.js → messages-CewuNcNS.js} +264 -16
  174. package/dist/src/{meteor-Co1VQ1u5.cjs → meteor-BBGcGeCa.cjs} +1 -1
  175. package/dist/src/{meteor-DuAFv6gF.js → meteor-BKTM-7KS.js} +1 -1
  176. package/dist/src/{meteor-DHdzY1Ss.js → meteor-CeGo0Lu2.js} +2 -2
  177. package/dist/src/{meteor-CU5UAE-H.js → meteor-Wc_aUVvu.js} +2 -2
  178. package/dist/src/{modelslab-wu9yi5GE.js → modelslab-BCLOtfek.js} +7 -7
  179. package/dist/src/{modelslab-Dk1JAtVo.cjs → modelslab-BkapYJhh.cjs} +6 -6
  180. package/dist/src/{modelslab-DIq-6y7x.js → modelslab-D73OnKSx.js} +6 -6
  181. package/dist/src/{modelslab-D0erNWKe.js → modelslab-zpz9JcK0.js} +7 -7
  182. package/dist/src/{nova-reel-CCFRfeRb.js → nova-reel-B8F_TK5w.js} +6 -6
  183. package/dist/src/{nova-reel-DQrm74ng.js → nova-reel-Bx0NFV2f.js} +5 -5
  184. package/dist/src/{nova-reel-gr11WG7f.js → nova-reel-CNGJTLtG.js} +6 -6
  185. package/dist/src/{nova-reel-CrLXVKQf.cjs → nova-reel-DkT7tnoB.cjs} +5 -5
  186. package/dist/src/{nova-sonic-BYdp-QLs.js → nova-sonic-BaXRN1cr.js} +4 -4
  187. package/dist/src/{nova-sonic-TDgrlTk7.js → nova-sonic-BeTRaFOh.js} +4 -4
  188. package/dist/src/{nova-sonic-B_ZXcUJB.js → nova-sonic-CL7Zqv0G.js} +3 -3
  189. package/dist/src/{nova-sonic-i5tUvXKn.cjs → nova-sonic-YT426juD.cjs} +3 -3
  190. package/dist/src/{openai-DhVEmgeZ.js → openai-BMHD2Huo.js} +2 -2
  191. package/dist/src/{openai-Qsvz25mV.js → openai-BT-JvDse.js} +2 -2
  192. package/dist/src/{openai-URNyItar.cjs → openai-Cy1XLs0c.cjs} +1 -1
  193. package/dist/src/{openai-iYtrXzOX.js → openai-D4fxGvRx.js} +1 -1
  194. package/dist/src/{openclaw-CwzlQSQX.js → openclaw-Bq7RVR3k.js} +7 -6
  195. package/dist/src/{openclaw-CLWrW03k.js → openclaw-DA8U4DsD.js} +8 -7
  196. package/dist/src/{openclaw-CnQ363Wi.js → openclaw-DObVgpjC.js} +8 -7
  197. package/dist/src/{openclaw-wX9rtfke.cjs → openclaw-DUBZP3GL.cjs} +8 -7
  198. package/dist/src/{opencode-sdk-BUu5Nevv.js → opencode-sdk-BB40Wir1.js} +4 -4
  199. package/dist/src/{opencode-sdk-GI2KaAXq.js → opencode-sdk-BM1UAIv1.js} +3 -3
  200. package/dist/src/{opencode-sdk-BZ2idgYA.cjs → opencode-sdk-CeqiOcOU.cjs} +4 -4
  201. package/dist/src/{opencode-sdk-BxD8vXp_.js → opencode-sdk-ChdK7F7z.js} +4 -4
  202. package/dist/src/{otlpReceiver-DmVulbhC.js → otlpReceiver-C6thJRXi.js} +4 -4
  203. package/dist/src/{otlpReceiver-B2z58l4e.js → otlpReceiver-CcdIikOu.js} +3 -3
  204. package/dist/src/{otlpReceiver-BfcVq2Nq.cjs → otlpReceiver-DNSQj6bf.cjs} +3 -3
  205. package/dist/src/{otlpReceiver-BntK801g.js → otlpReceiver-UYMQx3sy.js} +4 -4
  206. package/dist/src/{providerRegistry-CPQ_CmVO.js → providerRegistry-1gB5vtzQ.js} +2 -2
  207. package/dist/src/{providerRegistry-CQMdTmHP.cjs → providerRegistry-BESeALrr.cjs} +1 -1
  208. package/dist/src/{providerRegistry-Bvh8mv85.js → providerRegistry-DoACwqhD.js} +1 -1
  209. package/dist/src/{providerRegistry-CWoPjKFZ.js → providerRegistry-PMsleEzs.js} +2 -2
  210. package/dist/src/{providers-Bp4S-FvO.js → providers-BuyzKt7C.js} +1 -1
  211. package/dist/src/{providers-DV3ax9e_.cjs → providers-C7lNVBjX.cjs} +1 -1
  212. package/dist/src/{providers-u9Enmfok.js → providers-CCE2COJi2.js} +1 -1
  213. package/dist/src/{providers-DruaQfwu.js → providers-CJh7iriU.js} +18103 -17952
  214. package/dist/src/{providers-iUt5fbAN.js → providers-Ctcc592x.js} +1 -1
  215. package/dist/src/{providers-Domz_llv.js → providers-DRrerKra.js} +432 -281
  216. package/dist/src/{providers-BV_KMZje.js → providers-DT-GtF2t.js} +19094 -18943
  217. package/dist/src/{providers-1eKkXBKp.cjs → providers-eDShy16E.cjs} +17946 -17795
  218. package/dist/src/{pythonUtils-Cldx7huE.js → pythonUtils-C4tltmIn.js} +3 -3
  219. package/dist/src/{pythonUtils-tAJvvpS-.cjs → pythonUtils-CoLaCwNY.cjs} +3 -3
  220. package/dist/src/{pythonUtils-C2UQ30Rz.js → pythonUtils-DMO68Jg7.js} +3 -3
  221. package/dist/src/{pythonUtils-CnndUbW-.js → pythonUtils-DNqbnRdx.js} +3 -3
  222. package/dist/src/{quiverai-DR0SnIQV.js → quiverai-BSS9a7wV.js} +3 -3
  223. package/dist/src/{quiverai-CtWi6x_g.js → quiverai-Bk1KrvL6.js} +4 -4
  224. package/dist/src/{quiverai-DFotyafY.cjs → quiverai-Bpx6MZ7T.cjs} +3 -3
  225. package/dist/src/{quiverai-aPPvXOgn.js → quiverai-CPKhWgaT.js} +4 -4
  226. package/dist/src/{render-DHIZ6_k8.js → render-7uNJ2V14.js} +2 -2
  227. package/dist/src/{render-CH-62LbA.js → render-DlscvAUJ.js} +1 -1
  228. package/dist/src/{render-CMEpfLaO.js → render-eui5p5mL.js} +2 -2
  229. package/dist/src/{render-CgVDrJmM.js → render-nj-UaPdn.js} +2 -2
  230. package/dist/src/{render-DfQSFxGE.cjs → render-tG6ir9_g.cjs} +1 -1
  231. package/dist/src/{responses--OsX2aYW.js → responses-1ztiVYsx.js} +49 -15
  232. package/dist/src/{responses-DL9m8CyY.js → responses-B8haB-mD.js} +49 -15
  233. package/dist/src/{responses-C-flexAY.js → responses-BiaBguAu.js} +49 -15
  234. package/dist/src/{responses-Bi9vBuW_.cjs → responses-CF-ayauu.cjs} +48 -14
  235. package/dist/src/rubyUtils-4hjGxvju.js +3 -0
  236. package/dist/src/{rubyUtils-DVLeA2jg.js → rubyUtils-BI0p46eZ.js} +3 -3
  237. package/dist/src/{rubyUtils-DsGrTx8R.js → rubyUtils-CIQFnVz4.js} +3 -3
  238. package/dist/src/rubyUtils-CO-tuszQ.cjs +2 -0
  239. package/dist/src/{rubyUtils-CYSQEG4a.js → rubyUtils-DGnoCYL2.js} +3 -3
  240. package/dist/src/{rubyUtils-B6eljPuh.cjs → rubyUtils-DoifqkiA.cjs} +4 -3
  241. package/dist/src/{sagemaker-BveBvuxm.js → sagemaker-BDLeW29y.js} +12 -12
  242. package/dist/src/{sagemaker-D67yzMzs.js → sagemaker-C5T60MKf.js} +13 -13
  243. package/dist/src/{sagemaker-BVkaG2-l.js → sagemaker-ClS_NB07.js} +13 -13
  244. package/dist/src/{sagemaker-XnfhheQv.cjs → sagemaker-ljtY12VM.cjs} +12 -12
  245. package/dist/src/{scanner-1DqWi1Ej.js → scanner-nOCWNIXa.js} +7 -7
  246. package/dist/src/server/index.js +1067 -265
  247. package/dist/src/{server-Dx2TyCH2.cjs → server-BEECpeGG.cjs} +5 -5
  248. package/dist/src/{server-BNYztJkh.js → server-ByiF3qlg.js} +9 -8
  249. package/dist/src/{server-BSB45Nt9.js → server-ByxbqAcQ.js} +8 -7
  250. package/dist/src/{server-DaA2eR26.cjs → server-C0XKRNB_.cjs} +1 -1
  251. package/dist/src/server-C_15p79-.js +3 -0
  252. package/dist/src/{server-D6Il2Sob.js → server-gyd6d4Hc.js} +5 -5
  253. package/dist/src/{signal-CE5G3a7x.js → signal-DTtUuU3l.js} +3 -3
  254. package/dist/src/{slack-acRb0IqQ.js → slack-4zZX1OKP.js} +1 -1
  255. package/dist/src/{slack-1Rhq0EoV.cjs → slack-BLlsDpfG.cjs} +1 -1
  256. package/dist/src/{slack-D5Wpy8LM.js → slack-BPYLQLgb.js} +2 -2
  257. package/dist/src/{slack-DDUe-5MC.js → slack-Bamy_7te.js} +2 -2
  258. package/dist/src/{store-DAAyxcy6.cjs → store-2K0kDi80.cjs} +2 -2
  259. package/dist/src/{store-Dn9HUkdW.js → store-2OXm_eBY.js} +3 -3
  260. package/dist/src/store-BELqNwvz.js +3 -0
  261. package/dist/src/{store-M0b1WfYb.js → store-BPkzEyFM.js} +2 -2
  262. package/dist/src/{store-CYEy5J2D.js → store-CPh25336.js} +3 -3
  263. package/dist/src/store-uQZ4AjPe.cjs +2 -0
  264. package/dist/src/{tables-CsWou1Bx.js → tables-BMSOS2Gg.js} +3 -3
  265. package/dist/src/{tables-DUfh1F7Z.cjs → tables-CXbaZ9y1.cjs} +2 -2
  266. package/dist/src/{tables-C4CH3zRr.js → tables-NlvH23ky.js} +3 -3
  267. package/dist/src/{tables-DQ4WU5tX.js → tables-WgdUZ8Ck.js} +2 -2
  268. package/dist/src/{telemetry-dbaJ0E98.js → telemetry--iqaGyaS.js} +5 -4
  269. package/dist/src/{telemetry-Dsw_faFj.cjs → telemetry-CEQxGnMZ.cjs} +7 -6
  270. package/dist/src/{telemetry-Dvqxv3YC.js → telemetry-CgdVGV8N.js} +4 -3
  271. package/dist/src/{telemetry-CQPez_Jp.js → telemetry-DWdGHvEf.js} +5 -4
  272. package/dist/src/telemetry-DjNoC_n3.cjs +2 -0
  273. package/dist/src/telemetry-ZdPZc0fm.js +3 -0
  274. package/dist/src/{text-BVi-cLPJ.cjs → text-BiNME7QG.cjs} +1 -1
  275. package/dist/src/{text-KvuD2Iko.js → text-D4lz-Jg_.js} +1 -1
  276. package/dist/src/{text-DHxdyQqT.js → text-DDQP0tuQ.js} +1 -1
  277. package/dist/src/{text-CZr46tp_.js → text-NWvfMfkF.js} +1 -1
  278. package/dist/src/{tokenUsageUtils-CXrvO-wA.js → tokenUsageUtils-2wIvAhB3.js} +1 -1
  279. package/dist/src/{tokenUsageUtils-C-bmyHoE.js → tokenUsageUtils-4c780gFd.js} +1 -1
  280. package/dist/src/tokenUsageUtils-BjVkdk18.js +142 -0
  281. package/dist/src/{tokenUsageUtils-Bb7DkZPz.cjs → tokenUsageUtils-C9odhsbW.cjs} +1 -1
  282. package/dist/src/{transcription-DuWDupG7.js → transcription-84t4ALo2.js} +5 -5
  283. package/dist/src/{transcription-CJspiD2c.js → transcription-Bm2emLmJ.js} +6 -6
  284. package/dist/src/{transcription-BvjmiYB1.cjs → transcription-CZ4LG5hQ.cjs} +5 -5
  285. package/dist/src/{transcription-V2HaAmy2.js → transcription-D7Q0vJsh.js} +6 -6
  286. package/dist/src/{transform-zDhMmzwX.js → transform-B-b6Cq-q.js} +5 -5
  287. package/dist/src/transform-BQt0BeAW.js +3 -0
  288. package/dist/src/{transform-DgKlRr73.cjs → transform-Bq5oqC0s.cjs} +1 -1
  289. package/dist/src/{transform-CUnzlsbn.cjs → transform-C9izGX54.cjs} +4 -4
  290. package/dist/src/{transform-DYX1_Xnh.js → transform-CwbAZ84V.js} +5 -5
  291. package/dist/src/{transform-CTeuTR3S.cjs → transform-Dg4LcO1Y.cjs} +6 -6
  292. package/dist/src/{transform-CG0ehZNG.js → transform-DtooZqYY.js} +6 -6
  293. package/dist/src/{transform-UN5UGu8U.js → transform-DzCF-wqV.js} +5 -5
  294. package/dist/src/{transform-lQrDE1BQ.js → transform-_DpNB4qp.js} +5 -5
  295. package/dist/src/{transform-Bbg6A8Jk.js → transform-eGiUAv86.js} +4 -4
  296. package/dist/src/{transformersAvailability-Cju9mHgR.cjs → transformersAvailability-B22swDxr.cjs} +1 -1
  297. package/dist/src/{transformersAvailability-CcHusyhw.js → transformersAvailability-lvCCvuPT.js} +1 -1
  298. package/dist/src/{transformersAvailability-DLlROWhg.js → transformersAvailability-rJGPccjr.js} +1 -1
  299. package/dist/src/{types-Bgh5SOn6.js → types-BDjGOq4E.js} +4 -2
  300. package/dist/src/{types-Dm9JM6Vb.js → types-BVH9hjgW.js} +4 -2
  301. package/dist/src/{types-CeaeaZdP.cjs → types-CgG2rKiW.cjs} +151 -149
  302. package/dist/src/{types-BGQDAP8i.js → types-DNRZVOue.js} +152 -150
  303. package/dist/src/{util-C8e5uydV.js → util-3pBZZb_H.js} +142 -17
  304. package/dist/src/{util-CN3SrLT4.cjs → util-A5_ZsQUn.cjs} +65 -43
  305. package/dist/src/{util-D3q0WQ-0.js → util-B9CNhyac.js} +66 -44
  306. package/dist/src/{util-DxWpWjhc.js → util-BQOCAHQC.js} +700 -575
  307. package/dist/src/{util-BYvQUPp7.js → util-BVXcTwXu.js} +3 -3
  308. package/dist/src/{util-D9TisOyk.js → util-BlFVL0UF.js} +65 -43
  309. package/dist/src/{util-C9J8ahRn.js → util-C-kmRosx.js} +66 -44
  310. package/dist/src/{util-DvU2Pw8c.js → util-DFPeFkiV.js} +3 -3
  311. package/dist/src/{util-DDs-7g6-.js → util-DN0-b81k.js} +3 -3
  312. package/dist/src/{util-olYL5C6N.cjs → util-Dpmm_dAI.cjs} +3 -3
  313. package/dist/src/{util-oGMLA7vc.js → util-Dub0f_ej.js} +700 -575
  314. package/dist/src/{util-Bxn8emtE.cjs → util-DvpHnLt0.cjs} +718 -570
  315. package/dist/src/{utils-DJfvjyMj.js → utils-BUMN8orw.js} +3 -3
  316. package/dist/src/{utils-B05gLxER.cjs → utils-DkVeShIB.cjs} +2 -2
  317. package/dist/src/{utils-BLJKfv0y.js → utils-kt7lv30R.js} +3 -3
  318. package/dist/src/{utils-hXtCYanr.js → utils-o8S5huU2.js} +2 -2
  319. package/dist/src/version-0frU0UTr.js +16 -0
  320. package/dist/src/version-CbpiUINz.js +17 -0
  321. package/dist/src/version-CbuBKu2U.js +16 -0
  322. package/dist/src/version-D9zu9FWB.cjs +27 -0
  323. package/dist/tsconfig.tsbuildinfo +1 -1
  324. package/package.json +22 -20
  325. package/dist/src/app/assets/Report-CQYFezYu.js +0 -1
  326. package/dist/src/app/assets/index-BzJt18Jz.js +0 -385
  327. package/dist/src/cache-Cr9oLMUa.js +0 -3
  328. package/dist/src/cloud-Hphvo8kr.js +0 -3
  329. package/dist/src/codex-sdk-BAmYE7qy.js +0 -3
  330. package/dist/src/evalResult-D8MT9p0s.js +0 -3
  331. package/dist/src/evalResult-Dvc-iucu.cjs +0 -2
  332. package/dist/src/evaluator-CVessDWe.js +0 -3
  333. package/dist/src/fetch-C7bGKDlQ.js +0 -3
  334. package/dist/src/graders-BOAzQEUe.cjs +0 -2
  335. package/dist/src/graders-D4BTsZdG2.js +0 -3
  336. package/dist/src/graders-DOJK1XpV.js +0 -2
  337. package/dist/src/graders-NAv9LcBn.js +0 -2
  338. package/dist/src/rubyUtils-D1L2d3jb.js +0 -3
  339. package/dist/src/rubyUtils-DUbq4tff.cjs +0 -2
  340. package/dist/src/server-DCtHUqlp.js +0 -3
  341. package/dist/src/store-CWOSz6D_.cjs +0 -2
  342. package/dist/src/store-DCDBhv7B.js +0 -3
  343. package/dist/src/telemetry-C1IqxcdW.js +0 -3
  344. package/dist/src/telemetry-C4ZEa_es.cjs +0 -2
  345. package/dist/src/transform-M6ITAESf.js +0 -3
  346. /package/dist/src/{evalResult-DElBuddX.js → evalResult-spPqh1G_.js} +0 -0
@@ -1,38 +1,39 @@
1
- import { C as getEnvFloat, S as getEnvBool, T as getEnvString, _ as isValidJson, a as logger, c as REDACTED, f as sanitizeObject, k as state, l as isSecretField, m as extractFirstJsonObject, p as sanitizeUrl, u as looksLikeSecret, w as getEnvInt, x as getConfigDirectoryPath, y as safeJsonStringify } from "./logger-B88EkIn6.js";
2
- import { C as toTitleCase, E as CLOUD_PROVIDER_PREFIX, I as VERSION, S as parseChatPrompt, T as transformTools, _ as isOpenAIToolArray, b as openaiToolChoiceToBedrock, d as sleep, f as parseRateLimitHeaders, g as calculateCost, h as REQUEST_TIMEOUT_MS$1, m as LONG_RUNNING_MODEL_TIMEOUT_MS, n as fetchWithRetries, o as cloudConfig, p as parseRetryAfter, r as fetchWithTimeout, t as fetchWithProxy, v as isOpenAIToolChoice, w as transformToolChoice, x as openaiToolsToBedrock } from "./fetch-B0Z3Oe4k.js";
3
- import { t as invariant } from "./invariant-vgHWClmd.js";
4
- import { c as isLoggedIntoCloud, o as getUserEmail } from "./accounts-DdJ2pHMI.js";
5
- import { a as safeJoin, i as resolvePackageEntryPoint, n as getWrapperDir, o as safeResolve, r as importModule } from "./esm-Dh4dOLlt.js";
6
- import { n as withGenAISpan } from "./genaiTracer-COYDi-tC.js";
7
- import { a as getNunjucksEngine, i as extractVariablesFromTemplates, n as renderVarsInObject, r as extractVariablesFromTemplate, t as renderEnvOnlyInObject } from "./render-DHIZ6_k8.js";
8
- import { t as providerRegistry } from "./providerRegistry-CPQ_CmVO.js";
9
- import { c as getRemoteGenerationUrl, d as neverGenerateRemote, f as neverGenerateRemoteForRegularEvals, l as getRemoteGenerationUrlForUnaligned, p as shouldGenerateRemote, r as checkServerFeatureSupport } from "./server-BSB45Nt9.js";
10
- import { a as evalResultsTable, h as getDb } from "./tables-CsWou1Bx.js";
11
- import { D as DATASET_PLUGINS, N as isCustomStrategy, R as pluginDescriptions, T as AGENTIC_STRATEGIES, g as ProviderOptionsSchema, k as MULTI_TURN_STRATEGIES, m as isProviderOptions, p as isApiProvider, st as STRATEGY_EXEMPT_PLUGINS, w as isUuid } from "./types-Bgh5SOn6.js";
12
- import { a as isVideoFile, i as isJavascriptFile, n as isAudioFile, r as isImageFile } from "./fileExtensions-BArZuxsI.js";
13
- import { n as sha256 } from "./createHash-CwDVU5xr.js";
14
- import { t as getTraceStore } from "./store-Dn9HUkdW.js";
15
- import { a as isCacheEnabled, i as getCache, l as isTransientConnectionError, r as fetchWithCache } from "./cache-C4Xb-hNb.js";
16
- import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage, r as accumulateTokenUsage } from "./tokenUsageUtils-C-bmyHoE.js";
17
- import { i as storeBlob } from "./blobs-BCZavS8s.js";
18
- import { n as isBlobStorageEnabled, r as shouldAttemptRemoteBlobUpload, t as extractAndStoreBinaryData } from "./extractor-CAfTSraf.js";
19
- import { n as telemetry } from "./telemetry-dbaJ0E98.js";
20
- import { i as validatePythonPath, n as getEnvInt$1, r as runPython, t as getConfiguredPythonPath } from "./pythonUtils-Cldx7huE.js";
21
- import { C as getResolvedRelativePath, D as maybeLoadResponseFormatFromExternalFile, E as maybeLoadFromExternalFileWithVars, M as loadFunction, N as parseFileUrl, O as maybeLoadToolsFromExternalFile, T as maybeLoadFromExternalFile, k as parsePathOrGlob, w as maybeLoadConfigFromExternalFile } from "./util-C8e5uydV.js";
22
- import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-BfPaS15_.js";
23
- import { C as resolveProjectId, S as loadCredentials, T as toDataUri, _ as GoogleAuthManager, a as calculateGoogleCost, b as getGoogleClient, c as geminiFormatAndSystemInstructions, d as mergeParts, f as normalizeSafetySettings, g as CHAT_MODELS, i as transformMCPToolsToOpenAi, j as TOKEN_REFRESH_BUFFER_MS, l as getCandidate, m as parseConfigSystemInstruction, o as createAuthCacheDiscriminator, p as normalizeTools, r as transformMCPToolsToGoogle, s as formatCandidateContents, u as getGoogleAccessToken, v as determineGoogleVertexMode, y as getGoogleApiKey } from "./transform-lQrDE1BQ.js";
24
- import { n as AnthropicGenericProvider, t as AnthropicMessagesProvider } from "./messages-MYTQ2TWp.js";
25
- import { a as outputFromMessage, i as getTokenUsage$2, n as calculateAnthropicCost, o as parseMessages, t as ANTHROPIC_MODELS } from "./util-BYvQUPp7.js";
26
- import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-C-flexAY.js";
27
- import { t as OpenAiGenericProvider } from "./openai-DhVEmgeZ.js";
28
- import { a as calculateOpenAICost, c as getTokenUsage$3, o as failApiCall, r as OPENAI_REALTIME_MODELS, s as formatOpenAiError } from "./util-D3q0WQ-0.js";
29
- import { t as OpenAiEmbeddingProvider } from "./embedding-DD9wa3ae.js";
30
- import { i as getProcessShim, n as transform, t as TransformInputType } from "./transform-DYX1_Xnh.js";
31
- import { n as escapeRegExp, t as ellipsize } from "./text-CZr46tp_.js";
32
- import { a as novaParseMessages, i as novaOutputFromMessage, t as AwsBedrockGenericProvider } from "./base-yrI1Yal4.js";
33
- import { i as formatOutput, n as buildStructuredImageOutputs, r as callOpenAiImageApi, t as OpenAiImageProvider } from "./image-B5Mv-Z3h.js";
34
- import { t as OpenAiCompletionProvider } from "./completion-HUe8wDhZ.js";
35
- import { n as runRuby } from "./rubyUtils-CYSQEG4a.js";
1
+ import { C as getEnvFloat, S as getEnvBool, T as getEnvString, _ as isValidJson, a as logger, c as REDACTED, f as sanitizeObject, k as state, l as isSecretField, m as extractFirstJsonObject, p as sanitizeUrl, u as looksLikeSecret, w as getEnvInt, x as getConfigDirectoryPath, y as safeJsonStringify } from "./logger-KD8JjCRJ.js";
2
+ import { C as toTitleCase, E as CLOUD_PROVIDER_PREFIX, S as parseChatPrompt, T as transformTools, _ as isOpenAIToolArray, b as openaiToolChoiceToBedrock, d as sleep, f as parseRateLimitHeaders, g as calculateCost, h as REQUEST_TIMEOUT_MS$1, m as LONG_RUNNING_MODEL_TIMEOUT_MS, n as fetchWithRetries, o as cloudConfig, p as parseRetryAfter, r as fetchWithTimeout, t as fetchWithProxy, v as isOpenAIToolChoice, w as transformToolChoice, x as openaiToolsToBedrock } from "./fetch-Y5qX_kST.js";
3
+ import { n as VERSION } from "./version-0frU0UTr.js";
4
+ import { t as invariant } from "./invariant-DIYf9sP1.js";
5
+ import { c as isLoggedIntoCloud, o as getUserEmail } from "./accounts-bnyHT7Ju.js";
6
+ import { a as safeJoin, i as resolvePackageEntryPoint, n as getWrapperDir, o as safeResolve, r as importModule } from "./esm-B6whoAcf.js";
7
+ import { n as withGenAISpan } from "./genaiTracer-DxODqT9e.js";
8
+ import { a as getNunjucksEngine, i as extractVariablesFromTemplates, n as renderVarsInObject, r as extractVariablesFromTemplate, t as renderEnvOnlyInObject } from "./render-7uNJ2V14.js";
9
+ import { t as providerRegistry } from "./providerRegistry-1gB5vtzQ.js";
10
+ import { c as getRemoteGenerationUrl, d as neverGenerateRemote, f as neverGenerateRemoteForRegularEvals, l as getRemoteGenerationUrlForUnaligned, p as shouldGenerateRemote, r as checkServerFeatureSupport } from "./server-ByxbqAcQ.js";
11
+ import { a as evalResultsTable, h as getDb } from "./tables-BMSOS2Gg.js";
12
+ import { D as DATASET_PLUGINS, N as isCustomStrategy, R as pluginDescriptions, T as AGENTIC_STRATEGIES, g as ProviderOptionsSchema, k as MULTI_TURN_STRATEGIES, m as isProviderOptions, p as isApiProvider, st as STRATEGY_EXEMPT_PLUGINS, w as isUuid } from "./types-BDjGOq4E.js";
13
+ import { a as isVideoFile, i as isJavascriptFile, n as isAudioFile, r as isImageFile } from "./fileExtensions-BGh-W-HT.js";
14
+ import { n as sha256 } from "./createHash-4gFQpDDv.js";
15
+ import { t as getTraceStore } from "./store-2OXm_eBY.js";
16
+ import { a as isCacheEnabled, i as getCache, l as isTransientConnectionError, r as fetchWithCache } from "./cache-Cr-qWIbP.js";
17
+ import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage, r as accumulateTokenUsage } from "./tokenUsageUtils-BjVkdk18.js";
18
+ import { i as storeBlob } from "./blobs-D_gg8nbm.js";
19
+ import { n as isBlobStorageEnabled, r as shouldAttemptRemoteBlobUpload, t as extractAndStoreBinaryData } from "./extractor-YlZbUMsL.js";
20
+ import { n as telemetry } from "./telemetry--iqaGyaS.js";
21
+ import { i as validatePythonPath, n as getEnvInt$1, r as runPython, t as getConfiguredPythonPath } from "./pythonUtils-C4tltmIn.js";
22
+ import { A as maybeLoadFromExternalFileWithVars, C as loadProviderConfigsFromFile, D as getResolvedRelativePath, I as loadFunction, L as parseFileUrl, M as maybeLoadToolsFromExternalFile, N as parsePathOrGlob, O as maybeLoadConfigFromExternalFile, S as isProviderConfigFileReference, T as readProviderConfigFile, j as maybeLoadResponseFormatFromExternalFile, k as maybeLoadFromExternalFile, w as normalizeProviderRef } from "./util-3pBZZb_H.js";
23
+ import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-DChSH_Es.js";
24
+ import { C as resolveProjectId, S as loadCredentials, T as toDataUri, _ as GoogleAuthManager, a as calculateGoogleCost, b as getGoogleClient, c as geminiFormatAndSystemInstructions, d as mergeParts, f as normalizeSafetySettings, g as CHAT_MODELS, i as transformMCPToolsToOpenAi, j as TOKEN_REFRESH_BUFFER_MS, l as getCandidate, m as parseConfigSystemInstruction, o as createAuthCacheDiscriminator, p as normalizeTools, r as transformMCPToolsToGoogle, s as formatCandidateContents, u as getGoogleAccessToken, v as determineGoogleVertexMode, y as getGoogleApiKey } from "./transform-DtooZqYY.js";
25
+ import { n as AnthropicGenericProvider, t as AnthropicMessagesProvider } from "./messages-CewuNcNS.js";
26
+ import { a as outputFromMessage, i as getTokenUsage$2, n as calculateAnthropicCost, o as parseMessages, t as ANTHROPIC_MODELS } from "./util-DFPeFkiV.js";
27
+ import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-1ztiVYsx.js";
28
+ import { t as OpenAiGenericProvider } from "./openai-BMHD2Huo.js";
29
+ import { a as calculateOpenAICost, c as getTokenUsage$3, o as failApiCall, r as OPENAI_REALTIME_MODELS, s as formatOpenAiError } from "./util-B9CNhyac.js";
30
+ import { t as OpenAiEmbeddingProvider } from "./embedding-D_bI4NDq.js";
31
+ import { i as getProcessShim, n as transform, t as TransformInputType } from "./transform-CwbAZ84V.js";
32
+ import { n as escapeRegExp, t as ellipsize } from "./text-NWvfMfkF.js";
33
+ import { a as novaParseMessages, i as novaOutputFromMessage, t as AwsBedrockGenericProvider } from "./base-dYsl2hmL.js";
34
+ import { i as formatOutput, n as buildStructuredImageOutputs, r as callOpenAiImageApi, t as OpenAiImageProvider } from "./image-DsGRlkh7.js";
35
+ import { t as OpenAiCompletionProvider } from "./completion-Vq_ad618.js";
36
+ import { n as runRuby } from "./rubyUtils-DGnoCYL2.js";
36
37
  import * as fs$2 from "fs";
37
38
  import fs, { promises } from "fs";
38
39
  import * as path$1 from "path";
@@ -2811,7 +2812,7 @@ var AIStudioChatProvider = class extends GoogleGenericProvider {
2811
2812
  headers,
2812
2813
  body: JSON.stringify(body),
2813
2814
  ...authDiscriminator && { _authHash: authDiscriminator }
2814
- }, REQUEST_TIMEOUT_MS$1, "json", context?.bustCache ?? context?.debug));
2815
+ }, REQUEST_TIMEOUT_MS$1, "json", shouldBustCache(context)));
2815
2816
  } catch (err) {
2816
2817
  return { error: `API call error: ${String(err)}` };
2817
2818
  }
@@ -5269,8 +5270,6 @@ var TokenUsageTracker = class TokenUsageTracker {
5269
5270
  const ATTACKER_MODEL = "gpt-5.4-2026-03-05";
5270
5271
  const ATTACKER_MODEL_SMALL = "gpt-5.4-mini-2026-03-17";
5271
5272
  const TEMPERATURE = getEnvFloat("PROMPTFOO_JAILBREAK_TEMPERATURE") ? getEnvFloat("PROMPTFOO_JAILBREAK_TEMPERATURE") : .7;
5272
- //#endregion
5273
- //#region src/redteam/providers/shared.ts
5274
5273
  async function loadRedteamProvider({ provider, jsonOnly = false, preferSmallModel = false, purpose = "redteam" } = {}) {
5275
5274
  let ret;
5276
5275
  const redteamProvider = provider || state.config?.redteam?.provider;
@@ -5279,7 +5278,7 @@ async function loadRedteamProvider({ provider, jsonOnly = false, preferSmallMode
5279
5278
  ret = redteamProvider;
5280
5279
  } else if (typeof redteamProvider === "string" || isProviderOptions(redteamProvider)) {
5281
5280
  logger.debug(`Loading ${purpose} provider`, { provider: redteamProvider });
5282
- ret = (await (await import("./providers-Bp4S-FvO.js")).loadApiProviders([redteamProvider]))[0];
5281
+ ret = (await (await import("./providers-BuyzKt7C.js")).loadApiProviders([redteamProvider]))[0];
5283
5282
  } else {
5284
5283
  const defaultModel = preferSmallModel ? ATTACKER_MODEL_SMALL : ATTACKER_MODEL;
5285
5284
  logger.debug(`Using default ${purpose} provider: ${defaultModel}`);
@@ -5583,7 +5582,7 @@ async function tryUnblocking({ messages, lastResponse, goal, purpose }) {
5583
5582
  logger.debug("[Unblocking] Disabled by default (set PROMPTFOO_ENABLE_UNBLOCKING=true to enable)");
5584
5583
  return { success: false };
5585
5584
  }
5586
- const { checkServerFeatureSupport } = await import("./server-BSB45Nt9.js").then((n) => n.o);
5585
+ const { checkServerFeatureSupport } = await import("./server-ByxbqAcQ.js").then((n) => n.o);
5587
5586
  if (!await checkServerFeatureSupport("blocking-question-analysis", "2025-06-16T14:49:11-07:00")) {
5588
5587
  logger.debug("[Unblocking] Server does not support unblocking, skipping gracefully");
5589
5588
  return { success: false };
@@ -5633,6 +5632,9 @@ async function tryUnblocking({ messages, lastResponse, goal, purpose }) {
5633
5632
  return { success: false };
5634
5633
  }
5635
5634
  }
5635
+ function isSingleAssertion(assertToUse) {
5636
+ return Boolean(assertToUse && assertToUse.type !== "assert-set");
5637
+ }
5636
5638
  /**
5637
5639
  * Builds the assertion object for storedGraderResult with the rubric value.
5638
5640
  * This ensures the grading template is preserved for display in the UI.
@@ -5642,11 +5644,15 @@ function buildGraderResultAssertion(gradeAssertion, assertToUse, rubric) {
5642
5644
  ...gradeAssertion,
5643
5645
  value: rubric
5644
5646
  };
5645
- if (assertToUse && "type" in assertToUse && assertToUse.type !== "assert-set") return {
5647
+ if (isSingleAssertion(assertToUse)) return {
5646
5648
  ...assertToUse,
5647
5649
  value: rubric
5648
5650
  };
5649
5651
  }
5652
+ function getGraderAssertionValue(assertToUse) {
5653
+ if (!isSingleAssertion(assertToUse)) return;
5654
+ return assertToUse.value;
5655
+ }
5650
5656
  //#endregion
5651
5657
  //#region src/redteam/providers/agentic/memoryPoisoning.ts
5652
5658
  var MemoryPoisoningProvider = class {
@@ -10658,7 +10664,7 @@ var CrescendoProvider = class {
10658
10664
  });
10659
10665
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
10660
10666
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
10661
- const { getGraderById } = await import("./graders-DOJK1XpV.js");
10667
+ const { getGraderById } = await import("./graders-DS42d3ZG.js");
10662
10668
  let graderPassed;
10663
10669
  const additionalRubric = getGoalRubric(this.userGoal);
10664
10670
  while (roundNum < this.maxTurns) try {
@@ -10809,7 +10815,7 @@ var CrescendoProvider = class {
10809
10815
  conversationHistory: conversationHistoryForGrading,
10810
10816
  conversationTranscript: formatRedteamHistoryAsTranscript(conversationHistoryForGrading)
10811
10817
  };
10812
- const { grade, rubric } = await grader.getResult(attackPrompt, lastResponse.output, test, provider, "value" in assertToUse ? assertToUse.value : void 0, additionalRubric, void 0, gradingContext);
10818
+ const { grade, rubric } = await grader.getResult(attackPrompt, lastResponse.output, test, provider, getGraderAssertionValue(assertToUse), additionalRubric, void 0, gradingContext);
10813
10819
  graderPassed = grade.pass;
10814
10820
  storedGraderResult = {
10815
10821
  ...grade,
@@ -11353,7 +11359,7 @@ var CustomProvider = class {
11353
11359
  let lastTransformResult;
11354
11360
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
11355
11361
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
11356
- const { getGraderById } = await import("./graders-DOJK1XpV.js");
11362
+ const { getGraderById } = await import("./graders-DS42d3ZG.js");
11357
11363
  let graderPassed;
11358
11364
  let storedGraderResult;
11359
11365
  const additionalRubric = getGoalRubric(this.userGoal);
@@ -11469,7 +11475,7 @@ var CustomProvider = class {
11469
11475
  if (test && assertToUse) {
11470
11476
  const grader = getGraderById(assertToUse.type);
11471
11477
  if (grader) {
11472
- const { grade, rubric } = await grader.getResult(attackPrompt, lastResponse.output, test, provider, "value" in assertToUse ? assertToUse.value : void 0, additionalRubric);
11478
+ const { grade, rubric } = await grader.getResult(attackPrompt, lastResponse.output, test, provider, getGraderAssertionValue(assertToUse), additionalRubric);
11473
11479
  graderPassed = grade.pass;
11474
11480
  storedGraderResult = {
11475
11481
  ...grade,
@@ -11854,7 +11860,7 @@ var GoatProvider = class {
11854
11860
  let assertToUse;
11855
11861
  let graderPassed;
11856
11862
  let storedGraderResult;
11857
- const { getGraderById } = await import("./graders-DOJK1XpV.js");
11863
+ const { getGraderById } = await import("./graders-DS42d3ZG.js");
11858
11864
  let test;
11859
11865
  if (context?.test) {
11860
11866
  test = context?.test;
@@ -12173,7 +12179,7 @@ var GoatProvider = class {
12173
12179
  traceContext: targetResponse.traceContext,
12174
12180
  traceSummary: gradingTraceSummary
12175
12181
  };
12176
- const { grade, rubric } = await grader.getResult(attackerMessage.content, finalOutput, test, targetProvider, "value" in assertToUse ? assertToUse.value : void 0, additionalRubric, void 0, gradingContext);
12182
+ const { grade, rubric } = await grader.getResult(attackerMessage.content, finalOutput, test, targetProvider, getGraderAssertionValue(assertToUse), additionalRubric, void 0, gradingContext);
12177
12183
  graderPassed = grade.pass;
12178
12184
  storedGraderResult = {
12179
12185
  ...grade,
@@ -12322,7 +12328,7 @@ var HydraProvider = class {
12322
12328
  let lastTransformResult;
12323
12329
  let lastTransformDisplayVars;
12324
12330
  let lastFinalAttackPrompt;
12325
- const { getGraderById } = await import("./graders-DOJK1XpV.js");
12331
+ const { getGraderById } = await import("./graders-DS42d3ZG.js");
12326
12332
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
12327
12333
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
12328
12334
  let previousTraceSummary;
@@ -12635,7 +12641,7 @@ var HydraProvider = class {
12635
12641
  exfilRecords: []
12636
12642
  });
12637
12643
  }
12638
- const { grade, rubric } = await grader.getResult(nextMessage, targetResponse.output, test, targetProvider, "value" in assertToUse ? assertToUse.value : void 0, void 0, void 0, gradingContext);
12644
+ const { grade, rubric } = await grader.getResult(nextMessage, targetResponse.output, test, targetProvider, getGraderAssertionValue(assertToUse), void 0, void 0, gradingContext);
12639
12645
  graderResult = grade;
12640
12646
  storedGraderResult = {
12641
12647
  ...grade,
@@ -13170,7 +13176,7 @@ async function runRedteamConversation$2({ context, filters, injectVar, numIterat
13170
13176
  if (sessionId) sessionIds.push(sessionId);
13171
13177
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
13172
13178
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
13173
- const { getGraderById } = await import("./graders-DOJK1XpV.js");
13179
+ const { getGraderById } = await import("./graders-DS42d3ZG.js");
13174
13180
  if (test && assertToUse) {
13175
13181
  const grader = getGraderById(assertToUse.type);
13176
13182
  if (grader) {
@@ -13223,7 +13229,7 @@ async function runRedteamConversation$2({ context, filters, injectVar, numIterat
13223
13229
  traceContext,
13224
13230
  traceSummary: graderTraceSummary
13225
13231
  };
13226
- const { grade, rubric } = await grader.getResult(newInjectVar, targetResponse.output, iterationTest, gradingProvider, "value" in assertToUse ? assertToUse.value : void 0, additionalRubric, void 0, gradingContext);
13232
+ const { grade, rubric } = await grader.getResult(newInjectVar, targetResponse.output, iterationTest, gradingProvider, getGraderAssertionValue(assertToUse), additionalRubric, void 0, gradingContext);
13227
13233
  storedGraderResult = {
13228
13234
  ...grade,
13229
13235
  assertion: buildGraderResultAssertion(grade.assertion, assertToUse, rubric)
@@ -13997,7 +14003,7 @@ async function runMetaAgentRedteam({ context, filters, injectVar, numIterations,
13997
14003
  previousTraceSummary = attackTraceSummary;
13998
14004
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
13999
14005
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
14000
- const { getGraderById } = await import("./graders-DOJK1XpV.js");
14006
+ const { getGraderById } = await import("./graders-DS42d3ZG.js");
14001
14007
  if (test && assertToUse) {
14002
14008
  const grader = getGraderById(assertToUse.type);
14003
14009
  if (grader) {
@@ -14043,7 +14049,7 @@ async function runMetaAgentRedteam({ context, filters, injectVar, numIterations,
14043
14049
  exfilRecords: []
14044
14050
  });
14045
14051
  }
14046
- const { grade, rubric } = await grader.getResult(attackPrompt, targetResponse.output, iterationTest, gradingProvider, "value" in assertToUse ? assertToUse.value : void 0, additionalRubric, void 0, gradingContext);
14052
+ const { grade, rubric } = await grader.getResult(attackPrompt, targetResponse.output, iterationTest, gradingProvider, getGraderAssertionValue(assertToUse), additionalRubric, void 0, gradingContext);
14047
14053
  graderResult = {
14048
14054
  ...grade,
14049
14055
  assertion: buildGraderResultAssertion(grade.assertion, assertToUse, rubric)
@@ -14567,7 +14573,7 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
14567
14573
  noImprovementCount++;
14568
14574
  if (noImprovementCount % 5 === 0) logger.debug(`[Depth ${depth}, Attempt ${attempts}] No improvement for ${noImprovementCount} consecutive iterations. Max score: ${maxScore}`);
14569
14575
  }
14570
- const { getGraderById } = await import("./graders-DOJK1XpV.js");
14576
+ const { getGraderById } = await import("./graders-DS42d3ZG.js");
14571
14577
  let graderPassed;
14572
14578
  let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
14573
14579
  if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
@@ -14610,7 +14616,7 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
14610
14616
  exfilRecords: []
14611
14617
  };
14612
14618
  }
14613
- const { grade, rubric } = await grader.getResult(newInjectVar, targetResponse.output, iterationTest, gradingProvider, "value" in assertToUse ? assertToUse.value : void 0, additionalRubric, void 0, gradingContext);
14619
+ const { grade, rubric } = await grader.getResult(newInjectVar, targetResponse.output, iterationTest, gradingProvider, getGraderAssertionValue(assertToUse), additionalRubric, void 0, gradingContext);
14614
14620
  storedGraderResult = {
14615
14621
  ...grade,
14616
14622
  assertion: buildGraderResultAssertion(grade.assertion, assertToUse, rubric)
@@ -15155,6 +15161,59 @@ var RedteamMischievousUserProvider = class extends SimulatedUser {
15155
15161
  }
15156
15162
  };
15157
15163
  //#endregion
15164
+ //#region src/providers/abliteration.ts
15165
+ const ABLITERATION_API_BASE_URL = "https://api.abliteration.ai/v1";
15166
+ const ABLITERATION_API_BASE_URL_ENV_VAR = "ABLIT_API_BASE_URL";
15167
+ function normalizeApiBaseUrl(apiBaseUrl) {
15168
+ const trimmedApiBaseUrl = apiBaseUrl?.trim();
15169
+ return trimmedApiBaseUrl ? trimmedApiBaseUrl : void 0;
15170
+ }
15171
+ var AbliterationProvider = class extends OpenAiChatCompletionProvider {
15172
+ constructor(modelName, providerOptions = {}) {
15173
+ super(modelName, {
15174
+ ...providerOptions,
15175
+ config: {
15176
+ ...providerOptions.config,
15177
+ apiBaseUrl: normalizeApiBaseUrl(providerOptions.config?.apiBaseUrl) ?? normalizeApiBaseUrl(providerOptions.env?.ABLIT_API_BASE_URL) ?? normalizeApiBaseUrl(getEnvString(ABLITERATION_API_BASE_URL_ENV_VAR)) ?? ABLITERATION_API_BASE_URL,
15178
+ apiKeyEnvar: providerOptions.config?.apiKeyEnvar ?? "ABLIT_KEY",
15179
+ showThinking: providerOptions.config?.showThinking ?? false
15180
+ }
15181
+ });
15182
+ }
15183
+ getApiKey() {
15184
+ const apiKeyEnvar = this.config.apiKeyEnvar;
15185
+ return this.config.apiKey || (apiKeyEnvar ? this.env?.[apiKeyEnvar] || getEnvString(apiKeyEnvar) : void 0);
15186
+ }
15187
+ getOrganization() {}
15188
+ id() {
15189
+ return `abliteration:${this.modelName}`;
15190
+ }
15191
+ toString() {
15192
+ return `[Abliteration Provider ${this.modelName}]`;
15193
+ }
15194
+ toJSON() {
15195
+ return {
15196
+ provider: "abliteration",
15197
+ model: this.modelName,
15198
+ config: {
15199
+ ...this.config,
15200
+ apiKey: void 0
15201
+ }
15202
+ };
15203
+ }
15204
+ };
15205
+ function createAbliterationProvider(providerPath, options = {}) {
15206
+ const splits = providerPath.split(":");
15207
+ const modelName = splits[1] === "chat" ? splits.slice(2).join(":") : splits.slice(1).join(":");
15208
+ if (!modelName) throw new Error("Abliteration provider requires a model name. Use format: abliteration:<model_name> or abliteration:chat:<model_name>");
15209
+ const providerOptions = options.config || {};
15210
+ return new AbliterationProvider(modelName, {
15211
+ ...providerOptions,
15212
+ id: options.id ?? providerOptions.id,
15213
+ env: providerOptions.env ?? options.env
15214
+ });
15215
+ }
15216
+ //#endregion
15158
15217
  //#region src/providers/ai21.ts
15159
15218
  const AI21_CHAT_MODELS = [{
15160
15219
  id: "jamba-1.5-mini",
@@ -17070,16 +17129,15 @@ function convertToolsToConverseFormat(tools) {
17070
17129
  * Convert tool choice to Converse API format.
17071
17130
  * Supports OpenAI tool choice format and native Bedrock format.
17072
17131
  */
17132
+ function isNamedConverseToolChoice(toolChoice) {
17133
+ if (!toolChoice || typeof toolChoice !== "object" || !("tool" in toolChoice)) return false;
17134
+ const tool = toolChoice.tool;
17135
+ return Boolean(tool && typeof tool === "object" && typeof tool.name === "string");
17136
+ }
17073
17137
  function convertToolChoiceToConverseFormat(toolChoice) {
17074
17138
  if (isOpenAIToolChoice(toolChoice)) return openaiToolChoiceToBedrock(toolChoice);
17075
17139
  if (toolChoice === "any") return { any: {} };
17076
- if (toolChoice && typeof toolChoice === "object") {
17077
- const tool = toolChoice.tool;
17078
- if (tool && typeof tool === "object") {
17079
- const name = tool.name;
17080
- if (typeof name === "string") return { tool: { name } };
17081
- }
17082
- }
17140
+ if (isNamedConverseToolChoice(toolChoice)) return { tool: { name: toolChoice.tool.name } };
17083
17141
  return { auto: {} };
17084
17142
  }
17085
17143
  /**
@@ -28993,7 +29051,112 @@ async function processConfigFileReferences(config, basePath = "") {
28993
29051
  return config;
28994
29052
  }
28995
29053
  //#endregion
29054
+ //#region src/providers/scriptContext.ts
29055
+ /**
29056
+ * Keys on `CallApiContextParams` that cannot be sent to a subprocess script
29057
+ * provider (Python, Ruby, etc.) because they are either non-serializable or
29058
+ * contain circular references (e.g., Timeout handles inside `logger`,
29059
+ * functions inside `filters`, or `ApiProvider` instances with methods).
29060
+ *
29061
+ * This list is the single source of truth for script-provider sanitization;
29062
+ * adding a new non-serializable field to `CallApiContextParams` requires only
29063
+ * a single update here so every script provider stays in lockstep.
29064
+ */
29065
+ const NON_SERIALIZABLE_CONTEXT_KEYS = [
29066
+ "getCache",
29067
+ "logger",
29068
+ "filters",
29069
+ "originalProvider"
29070
+ ];
29071
+ /**
29072
+ * Returns a shallow-cloned copy of `context` with non-serializable keys
29073
+ * removed. The caller's `context` is never mutated so wrappers that reuse
29074
+ * the same object across turns (e.g., redteam multi-turn strategies) are
29075
+ * safe. Logs the stripped keys at debug level for traceability when script
29076
+ * authors are investigating "missing filters/logger in my script" reports.
29077
+ *
29078
+ * @param providerLabel - Label used in debug logs (e.g., `"PythonProvider"`).
29079
+ * @param context - Caller-owned context, possibly `undefined`.
29080
+ * @returns A sanitized clone, or `undefined` if `context` was `undefined`.
29081
+ */
29082
+ function sanitizeScriptContext(providerLabel, context) {
29083
+ if (!context) return;
29084
+ const sanitizedContext = { ...context };
29085
+ const stripped = [];
29086
+ for (const key of NON_SERIALIZABLE_CONTEXT_KEYS) if (key in sanitizedContext) {
29087
+ stripped.push(key);
29088
+ delete sanitizedContext[key];
29089
+ }
29090
+ if (stripped.length > 0) logger.debug(`${providerLabel} sanitized context: stripped non-serializable keys [${stripped.join(", ")}]`);
29091
+ return sanitizedContext;
29092
+ }
29093
+ //#endregion
28996
29094
  //#region src/providers/pythonCompletion.ts
29095
+ function buildPythonScriptArgs(apiType, prompt, optionsWithProcessedConfig, sanitizedContext) {
29096
+ return apiType === "call_api" ? [
29097
+ prompt,
29098
+ optionsWithProcessedConfig,
29099
+ sanitizedContext
29100
+ ] : [prompt, optionsWithProcessedConfig];
29101
+ }
29102
+ function hasPythonResultProperty(result, propertyName) {
29103
+ return Boolean(result) && typeof result === "object" && Object.prototype.hasOwnProperty.call(result, propertyName);
29104
+ }
29105
+ function applyCachedCallApiMetadata(apiType, parsedResult) {
29106
+ if (apiType !== "call_api" || typeof parsedResult !== "object" || parsedResult === null) return parsedResult;
29107
+ logger.debug(`PythonProvider setting cached=true for cached ${apiType} result`);
29108
+ parsedResult.cached = true;
29109
+ if (parsedResult.tokenUsage) {
29110
+ const total = parsedResult.tokenUsage.total || 0;
29111
+ parsedResult.tokenUsage = {
29112
+ cached: total,
29113
+ total,
29114
+ numRequests: parsedResult.tokenUsage.numRequests ?? 1
29115
+ };
29116
+ logger.debug(`Updated token usage for cached result: ${JSON.stringify(parsedResult.tokenUsage)}`);
29117
+ }
29118
+ return parsedResult;
29119
+ }
29120
+ function applyFreshCallApiMetadata(apiType, result) {
29121
+ if (apiType !== "call_api" || typeof result !== "object" || result === null) return result;
29122
+ logger.debug(`PythonProvider explicitly setting cached=false for fresh result`);
29123
+ result.cached = false;
29124
+ if (result.tokenUsage && !result.tokenUsage.numRequests) {
29125
+ result.tokenUsage.numRequests = 1;
29126
+ logger.debug(`Added numRequests to fresh result token usage: ${JSON.stringify(result.tokenUsage)}`);
29127
+ }
29128
+ return result;
29129
+ }
29130
+ function hasPythonResultError(result) {
29131
+ return hasPythonResultProperty(result, "error") && result.error !== null && result.error !== void 0 && result.error !== "";
29132
+ }
29133
+ function validateCallApiResult(functionName, result) {
29134
+ const resultType = result === null ? "null" : typeof result;
29135
+ const resultKeys = result && typeof result === "object" ? Object.keys(result).join(",") : "none";
29136
+ logger.debug(`Python provider result structure: ${resultType}, keys: ${resultKeys}`);
29137
+ if (hasPythonResultProperty(result, "output")) logger.debug(`Python provider output type: ${typeof result.output}, isArray: ${Array.isArray(result.output)}`);
29138
+ if (!hasPythonResultProperty(result, "output") && !hasPythonResultProperty(result, "error")) throw new Error(`The Python script \`${functionName}\` function must return a dict with an own \`output\` string/object or \`error\` string (inherited prototype properties are rejected), instead got: ${JSON.stringify(result)}`);
29139
+ }
29140
+ function validateEmbeddingResult(functionName, result) {
29141
+ if (!hasPythonResultProperty(result, "embedding") && !hasPythonResultProperty(result, "error")) throw new Error(`The Python script \`${functionName}\` function must return a dict with an own \`embedding\` array or \`error\` string (inherited prototype properties are rejected), instead got ${JSON.stringify(result)}`);
29142
+ }
29143
+ function validateClassificationResult(functionName, result) {
29144
+ if (!hasPythonResultProperty(result, "classification") && !hasPythonResultProperty(result, "error")) throw new Error(`The Python script \`${functionName}\` function must return a dict with an own \`classification\` object or \`error\` string (inherited prototype properties are rejected), instead of ${JSON.stringify(result)}`);
29145
+ }
29146
+ function validatePythonScriptResult(apiType, functionName, result) {
29147
+ switch (apiType) {
29148
+ case "call_api":
29149
+ validateCallApiResult(functionName, result);
29150
+ return;
29151
+ case "call_embedding_api":
29152
+ validateEmbeddingResult(functionName, result);
29153
+ return;
29154
+ case "call_classification_api":
29155
+ validateClassificationResult(functionName, result);
29156
+ return;
29157
+ default: throw new Error(`Unsupported apiType: ${apiType}`);
29158
+ }
29159
+ }
28997
29160
  var PythonProvider = class {
28998
29161
  config;
28999
29162
  scriptPath;
@@ -29103,72 +29266,26 @@ var PythonProvider = class {
29103
29266
  logger.debug(`Returning cached ${apiType} result for script ${absPath}`);
29104
29267
  const parsedResult = JSON.parse(cachedResult);
29105
29268
  logger.debug(`PythonProvider parsed cached result type: ${typeof parsedResult}, keys: ${Object.keys(parsedResult).join(",")}`);
29106
- if (apiType === "call_api" && typeof parsedResult === "object" && parsedResult !== null) {
29107
- logger.debug(`PythonProvider setting cached=true for cached ${apiType} result`);
29108
- parsedResult.cached = true;
29109
- if (parsedResult.tokenUsage) {
29110
- const total = parsedResult.tokenUsage.total || 0;
29111
- parsedResult.tokenUsage = {
29112
- cached: total,
29113
- total,
29114
- numRequests: parsedResult.tokenUsage.numRequests ?? 1
29115
- };
29116
- logger.debug(`Updated token usage for cached result: ${JSON.stringify(parsedResult.tokenUsage)}`);
29117
- }
29118
- }
29119
- return parsedResult;
29269
+ return applyCachedCallApiMetadata(apiType, parsedResult);
29120
29270
  } else {
29121
- const sanitizedContext = context ? { ...context } : void 0;
29122
- if (sanitizedContext) {
29123
- delete sanitizedContext.getCache;
29124
- delete sanitizedContext.logger;
29125
- delete sanitizedContext.filters;
29126
- delete sanitizedContext.originalProvider;
29127
- }
29128
- const optionsWithProcessedConfig = {
29271
+ const sanitizedContext = sanitizeScriptContext("PythonProvider", context);
29272
+ const args = buildPythonScriptArgs(apiType, prompt, {
29129
29273
  ...this.options,
29130
29274
  config: {
29131
29275
  ...this.options?.config,
29132
29276
  ...this.config
29133
29277
  }
29134
- };
29135
- const args = apiType === "call_api" ? [
29136
- prompt,
29137
- optionsWithProcessedConfig,
29138
- sanitizedContext
29139
- ] : [prompt, optionsWithProcessedConfig];
29278
+ }, sanitizedContext);
29140
29279
  logger.debug(`Executing python script ${absPath} via worker pool with args: ${safeJsonStringify(args)}`);
29141
29280
  const functionName = this.functionName || apiType;
29142
- let result;
29143
- result = await this.pool.execute(functionName, args);
29144
- switch (apiType) {
29145
- case "call_api":
29146
- logger.debug(`Python provider result structure: ${result ? typeof result : "undefined"}, keys: ${result ? Object.keys(result).join(",") : "none"}`);
29147
- if (result && "output" in result) logger.debug(`Python provider output type: ${typeof result.output}, isArray: ${Array.isArray(result.output)}`);
29148
- if (!result || typeof result !== "object" || !("output" in result) && !("error" in result)) throw new Error(`The Python script \`${functionName}\` function must return a dict with an \`output\` string/object or \`error\` string, instead got: ${JSON.stringify(result)}`);
29149
- break;
29150
- case "call_embedding_api":
29151
- if (!result || typeof result !== "object" || !("embedding" in result) && !("error" in result)) throw new Error(`The Python script \`${functionName}\` function must return a dict with an \`embedding\` array or \`error\` string, instead got ${JSON.stringify(result)}`);
29152
- break;
29153
- case "call_classification_api":
29154
- if (!result || typeof result !== "object" || !("classification" in result) && !("error" in result)) throw new Error(`The Python script \`${functionName}\` function must return a dict with a \`classification\` object or \`error\` string, instead of ${JSON.stringify(result)}`);
29155
- break;
29156
- default: throw new Error(`Unsupported apiType: ${apiType}`);
29157
- }
29158
- const hasError = "error" in result && result.error !== null && result.error !== void 0 && result.error !== "";
29281
+ const result = await this.pool.execute(functionName, args);
29282
+ validatePythonScriptResult(apiType, functionName, result);
29283
+ const hasError = hasPythonResultError(result);
29159
29284
  if (isCacheEnabled() && !hasError) {
29160
29285
  logger.debug(`PythonProvider caching result: ${cacheKey}`);
29161
29286
  await cache.set(cacheKey, JSON.stringify(result));
29162
29287
  } else logger.debug(`PythonProvider not caching result: ${isCacheEnabled() ? hasError ? "has error" : "unknown reason" : "cache disabled"}`);
29163
- if (apiType === "call_api") {
29164
- logger.debug(`PythonProvider explicitly setting cached=false for fresh result`);
29165
- result.cached = false;
29166
- if (result.tokenUsage && !result.tokenUsage.numRequests) {
29167
- result.tokenUsage.numRequests = 1;
29168
- logger.debug(`Added numRequests to fresh result token usage: ${JSON.stringify(result.tokenUsage)}`);
29169
- }
29170
- }
29171
- return result;
29288
+ return applyFreshCallApiMetadata(apiType, result);
29172
29289
  }
29173
29290
  }
29174
29291
  async callApi(prompt, context) {
@@ -29455,6 +29572,67 @@ var ReplicateImageProvider = class extends ReplicateProvider {
29455
29572
  };
29456
29573
  //#endregion
29457
29574
  //#region src/providers/rubyCompletion.ts
29575
+ function buildRubyScriptArgs(apiType, prompt, optionsWithProcessedConfig, sanitizedContext) {
29576
+ return apiType === "call_api" ? [
29577
+ prompt,
29578
+ optionsWithProcessedConfig,
29579
+ sanitizedContext
29580
+ ] : [prompt, optionsWithProcessedConfig];
29581
+ }
29582
+ function hasRubyResultProperty(result, propertyName) {
29583
+ return Boolean(result) && typeof result === "object" && Object.prototype.hasOwnProperty.call(result, propertyName);
29584
+ }
29585
+ function applyCachedRubyCallApiMetadata(apiType, parsedResult) {
29586
+ if (apiType !== "call_api" || typeof parsedResult !== "object" || parsedResult === null) return parsedResult;
29587
+ logger.debug(`RubyProvider setting cached=true for cached ${apiType} result`);
29588
+ parsedResult.cached = true;
29589
+ if (parsedResult.tokenUsage) {
29590
+ const total = parsedResult.tokenUsage.total || 0;
29591
+ parsedResult.tokenUsage = {
29592
+ cached: total,
29593
+ total,
29594
+ numRequests: parsedResult.tokenUsage.numRequests ?? 1
29595
+ };
29596
+ logger.debug(`Updated token usage for cached result: ${JSON.stringify(parsedResult.tokenUsage)}`);
29597
+ }
29598
+ return parsedResult;
29599
+ }
29600
+ function applyFreshRubyCallApiMetadata(apiType, result) {
29601
+ if (apiType !== "call_api" || typeof result !== "object" || result === null) return result;
29602
+ logger.debug(`RubyProvider explicitly setting cached=false for fresh result`);
29603
+ result.cached = false;
29604
+ return result;
29605
+ }
29606
+ function hasRubyResultError(result) {
29607
+ return hasRubyResultProperty(result, "error") && result.error !== null && result.error !== void 0 && result.error !== "";
29608
+ }
29609
+ function validateRubyCallApiResult(functionName, result) {
29610
+ const resultType = result === null ? "null" : typeof result;
29611
+ const resultKeys = result && typeof result === "object" ? Object.keys(result).join(",") : "none";
29612
+ logger.debug(`Ruby provider result structure: ${resultType}, keys: ${resultKeys}`);
29613
+ if (hasRubyResultProperty(result, "output")) logger.debug(`Ruby provider output type: ${typeof result.output}, isArray: ${Array.isArray(result.output)}`);
29614
+ if (!hasRubyResultProperty(result, "output") && !hasRubyResultProperty(result, "error")) throw new Error(`The Ruby script \`${functionName}\` function must return a hash with an own \`output\` string/object or \`error\` string (inherited prototype properties are rejected), instead got: ${JSON.stringify(result)}`);
29615
+ }
29616
+ function validateRubyEmbeddingResult(functionName, result) {
29617
+ if (!hasRubyResultProperty(result, "embedding") && !hasRubyResultProperty(result, "error")) throw new Error(`The Ruby script \`${functionName}\` function must return a hash with an own \`embedding\` array or \`error\` string (inherited prototype properties are rejected), instead got ${JSON.stringify(result)}`);
29618
+ }
29619
+ function validateRubyClassificationResult(functionName, result) {
29620
+ if (!hasRubyResultProperty(result, "classification") && !hasRubyResultProperty(result, "error")) throw new Error(`The Ruby script \`${functionName}\` function must return a hash with an own \`classification\` object or \`error\` string (inherited prototype properties are rejected), instead of ${JSON.stringify(result)}`);
29621
+ }
29622
+ function validateRubyScriptResult(apiType, functionName, result) {
29623
+ switch (apiType) {
29624
+ case "call_api":
29625
+ validateRubyCallApiResult(functionName, result);
29626
+ return;
29627
+ case "call_embedding_api":
29628
+ validateRubyEmbeddingResult(functionName, result);
29629
+ return;
29630
+ case "call_classification_api":
29631
+ validateRubyClassificationResult(functionName, result);
29632
+ return;
29633
+ default: throw new Error(`Unsupported apiType: ${apiType}`);
29634
+ }
29635
+ }
29458
29636
  /**
29459
29637
  * Ruby provider for executing custom Ruby scripts as API providers.
29460
29638
  * Supports text generation, embeddings, and classification tasks.
@@ -29529,70 +29707,26 @@ var RubyProvider = class {
29529
29707
  logger.debug(`Returning cached ${apiType} result for script ${absPath}`);
29530
29708
  const parsedResult = JSON.parse(cachedResult);
29531
29709
  logger.debug(`RubyProvider parsed cached result type: ${typeof parsedResult}, keys: ${Object.keys(parsedResult).join(",")}`);
29532
- if (apiType === "call_api" && typeof parsedResult === "object" && parsedResult !== null) {
29533
- logger.debug(`RubyProvider setting cached=true for cached ${apiType} result`);
29534
- parsedResult.cached = true;
29535
- if (parsedResult.tokenUsage) {
29536
- const total = parsedResult.tokenUsage.total || 0;
29537
- parsedResult.tokenUsage = {
29538
- cached: total,
29539
- total,
29540
- numRequests: parsedResult.tokenUsage.numRequests ?? 1
29541
- };
29542
- logger.debug(`Updated token usage for cached result: ${JSON.stringify(parsedResult.tokenUsage)}`);
29543
- }
29544
- }
29545
- return parsedResult;
29710
+ return applyCachedRubyCallApiMetadata(apiType, parsedResult);
29546
29711
  } else {
29547
- const sanitizedContext = context ? { ...context } : void 0;
29548
- if (sanitizedContext) {
29549
- delete sanitizedContext.getCache;
29550
- delete sanitizedContext.logger;
29551
- delete sanitizedContext.filters;
29552
- delete sanitizedContext.originalProvider;
29553
- }
29554
- const optionsWithProcessedConfig = {
29712
+ const sanitizedContext = sanitizeScriptContext("RubyProvider", context);
29713
+ const args = buildRubyScriptArgs(apiType, prompt, {
29555
29714
  ...this.options,
29556
29715
  config: {
29557
29716
  ...this.options?.config,
29558
29717
  ...this.config
29559
29718
  }
29560
- };
29561
- const args = apiType === "call_api" ? [
29562
- prompt,
29563
- optionsWithProcessedConfig,
29564
- sanitizedContext
29565
- ] : [prompt, optionsWithProcessedConfig];
29719
+ }, sanitizedContext);
29566
29720
  logger.debug(`Running ruby script ${absPath} with scriptPath ${this.scriptPath} and args: ${safeJsonStringify(args)}`);
29567
29721
  const functionName = this.functionName || apiType;
29568
- let result;
29569
- switch (apiType) {
29570
- case "call_api":
29571
- result = await runRuby(absPath, functionName, args, { rubyExecutable: this.config.rubyExecutable });
29572
- logger.debug(`Ruby provider result structure: ${result ? typeof result : "undefined"}, keys: ${result && typeof result === "object" ? Object.keys(result).join(",") : "none"}`);
29573
- if (result && typeof result === "object" && "output" in result) logger.debug(`Ruby provider output type: ${typeof result.output}, isArray: ${Array.isArray(result.output)}`);
29574
- if (!result || typeof result !== "object" || !("output" in result) && !("error" in result)) throw new Error(`The Ruby script \`${functionName}\` function must return a hash with an \`output\` string/object or \`error\` string, instead got: ${JSON.stringify(result)}`);
29575
- break;
29576
- case "call_embedding_api":
29577
- result = await runRuby(absPath, functionName, args, { rubyExecutable: this.config.rubyExecutable });
29578
- if (!result || typeof result !== "object" || !("embedding" in result) && !("error" in result)) throw new Error(`The Ruby script \`${functionName}\` function must return a hash with an \`embedding\` array or \`error\` string, instead got ${JSON.stringify(result)}`);
29579
- break;
29580
- case "call_classification_api":
29581
- result = await runRuby(absPath, functionName, args, { rubyExecutable: this.config.rubyExecutable });
29582
- if (!result || typeof result !== "object" || !("classification" in result) && !("error" in result)) throw new Error(`The Ruby script \`${functionName}\` function must return a hash with a \`classification\` object or \`error\` string, instead of ${JSON.stringify(result)}`);
29583
- break;
29584
- default: throw new Error(`Unsupported apiType: ${apiType}`);
29585
- }
29586
- const hasError = "error" in result && result.error !== null && result.error !== void 0 && result.error !== "";
29722
+ const result = await runRuby(absPath, functionName, args, { rubyExecutable: this.config.rubyExecutable });
29723
+ validateRubyScriptResult(apiType, functionName, result);
29724
+ const hasError = hasRubyResultError(result);
29587
29725
  if (isCacheEnabled() && !hasError) {
29588
29726
  logger.debug(`RubyProvider caching result: ${cacheKey}`);
29589
29727
  await cache.set(cacheKey, JSON.stringify(result));
29590
29728
  } else logger.debug(`RubyProvider not caching result: ${isCacheEnabled() ? hasError ? "has error" : "unknown reason" : "cache disabled"}`);
29591
- if (apiType === "call_api") {
29592
- logger.debug(`RubyProvider explicitly setting cached=false for fresh result`);
29593
- result.cached = false;
29594
- }
29595
- return result;
29729
+ return applyFreshRubyCallApiMetadata(apiType, result);
29596
29730
  }
29597
29731
  }
29598
29732
  /**
@@ -29728,7 +29862,7 @@ var ScriptCompletionProvider = class {
29728
29862
  const result = { output: standardOutput };
29729
29863
  if (fileHashes.length > 0 && isCacheEnabled()) await (await getCache()).set(cacheKey, JSON.stringify(result));
29730
29864
  resolve(result);
29731
- });
29865
+ }).stdin?.end();
29732
29866
  });
29733
29867
  }
29734
29868
  };
@@ -32549,6 +32683,15 @@ const providerMap = [
32549
32683
  createScriptBasedProviderFactory("golang", "go", GolangProvider),
32550
32684
  createScriptBasedProviderFactory("python", "py", PythonProvider),
32551
32685
  createScriptBasedProviderFactory("ruby", "rb", RubyProvider),
32686
+ {
32687
+ test: (providerPath) => providerPath.startsWith("abliteration:"),
32688
+ create: async (providerPath, providerOptions, context) => {
32689
+ return createAbliterationProvider(providerPath, {
32690
+ config: providerOptions,
32691
+ env: context.env
32692
+ });
32693
+ }
32694
+ },
32552
32695
  {
32553
32696
  test: (providerPath) => providerPath === "agentic:memory-poisoning",
32554
32697
  create: async (_providerPath, providerOptions, _context) => {
@@ -32575,7 +32718,7 @@ const providerMap = [
32575
32718
  {
32576
32719
  test: (providerPath) => providerPath.startsWith("opencode:") || providerPath === "opencode",
32577
32720
  create: async (providerPath, providerOptions, context) => {
32578
- const { OpenCodeSDKProvider } = await import("./opencode-sdk-BUu5Nevv.js");
32721
+ const { OpenCodeSDKProvider } = await import("./opencode-sdk-BB40Wir1.js");
32579
32722
  return new OpenCodeSDKProvider({
32580
32723
  ...providerOptions,
32581
32724
  id: providerPath,
@@ -32587,14 +32730,14 @@ const providerMap = [
32587
32730
  {
32588
32731
  test: (providerPath) => providerPath.startsWith("openclaw:") || providerPath === "openclaw",
32589
32732
  create: async (providerPath, providerOptions, context) => {
32590
- const { createOpenClawProvider } = await import("./openclaw-CnQ363Wi.js");
32733
+ const { createOpenClawProvider } = await import("./openclaw-Bq7RVR3k.js");
32591
32734
  return createOpenClawProvider(providerPath, providerOptions, context.env);
32592
32735
  }
32593
32736
  },
32594
32737
  {
32595
32738
  test: (providerPath) => providerPath.startsWith("anthropic:claude-agent-sdk") || providerPath.startsWith("anthropic:claude-code"),
32596
32739
  create: async (_providerPath, providerOptions, _context) => {
32597
- const { ClaudeCodeSDKProvider } = await import("./claude-agent-sdk-Dtq_L-Sc.js");
32740
+ const { ClaudeCodeSDKProvider } = await import("./claude-agent-sdk-BzNZeZ0N.js");
32598
32741
  return new ClaudeCodeSDKProvider({ ...providerOptions });
32599
32742
  }
32600
32743
  },
@@ -32650,25 +32793,25 @@ const providerMap = [
32650
32793
  const modelName = splits.slice(2).join(":");
32651
32794
  if (modelType === "converse") return new AwsBedrockConverseProvider(modelName, providerOptions);
32652
32795
  if (modelType === "nova-sonic" || modelType.includes("amazon.nova-sonic")) {
32653
- const { NovaSonicProvider } = await import("./nova-sonic-TDgrlTk7.js");
32796
+ const { NovaSonicProvider } = await import("./nova-sonic-BeTRaFOh.js");
32654
32797
  return new NovaSonicProvider("amazon.nova-sonic-v1:0", providerOptions);
32655
32798
  }
32656
32799
  if (modelType.includes("luma.ray") || modelName.includes("luma.ray")) {
32657
- const { LumaRayVideoProvider } = await import("./luma-ray-KgTCXrZC.js");
32800
+ const { LumaRayVideoProvider } = await import("./luma-ray-B-tNZzqW.js");
32658
32801
  return new LumaRayVideoProvider(modelName.includes("luma.ray") ? modelName : splits.slice(1).join(":") || "luma.ray-v2:0", providerOptions);
32659
32802
  }
32660
32803
  if (modelType.includes("amazon.nova-reel") || modelType === "video" && (modelName.includes("amazon.nova-reel") || modelName === "")) {
32661
- const { NovaReelVideoProvider } = await import("./nova-reel-gr11WG7f.js");
32804
+ const { NovaReelVideoProvider } = await import("./nova-reel-CNGJTLtG.js");
32662
32805
  return new NovaReelVideoProvider(modelName || "amazon.nova-reel-v1:1", providerOptions);
32663
32806
  }
32664
32807
  if (modelType === "agents") {
32665
- const { AwsBedrockAgentsProvider } = await import("./agents-CgaMXvLM.js");
32808
+ const { AwsBedrockAgentsProvider } = await import("./agents-BGqaTDnr.js");
32666
32809
  return new AwsBedrockAgentsProvider(modelName, providerOptions);
32667
32810
  }
32668
32811
  if (modelType === "completion") return new AwsBedrockCompletionProvider(modelName, providerOptions);
32669
32812
  if (modelType === "embeddings" || modelType === "embedding") return new AwsBedrockEmbeddingProvider(modelName, providerOptions);
32670
32813
  if (modelType === "kb" || modelType === "knowledge-base") {
32671
- const { AwsBedrockKnowledgeBaseProvider } = await import("./knowledgeBase-RhFPGWDc.js");
32814
+ const { AwsBedrockKnowledgeBaseProvider } = await import("./knowledgeBase-BBETc5-S.js");
32672
32815
  return new AwsBedrockKnowledgeBaseProvider(modelName, providerOptions);
32673
32816
  }
32674
32817
  return new AwsBedrockCompletionProvider(splits.slice(1).join(":"), providerOptions);
@@ -32678,7 +32821,7 @@ const providerMap = [
32678
32821
  test: (providerPath) => providerPath.startsWith("bedrock-agent:"),
32679
32822
  create: async (providerPath, providerOptions, _context) => {
32680
32823
  const agentId = providerPath.substring(14);
32681
- const { AwsBedrockAgentsProvider } = await import("./agents-CgaMXvLM.js");
32824
+ const { AwsBedrockAgentsProvider } = await import("./agents-BGqaTDnr.js");
32682
32825
  return new AwsBedrockAgentsProvider(agentId, providerOptions);
32683
32826
  }
32684
32827
  },
@@ -32688,7 +32831,7 @@ const providerMap = [
32688
32831
  const splits = providerPath.split(":");
32689
32832
  const modelType = splits[1];
32690
32833
  const endpointName = splits.slice(2).join(":");
32691
- const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await import("./sagemaker-BVkaG2-l.js");
32834
+ const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await import("./sagemaker-ClS_NB07.js");
32692
32835
  if (modelType === "embedding" || modelType === "embeddings") return new SageMakerEmbeddingProvider(endpointName || modelType, providerOptions);
32693
32836
  if (splits.length === 2) return new SageMakerCompletionProvider(modelType, providerOptions);
32694
32837
  if (endpointName.includes("jumpstart") || modelType === "jumpstart") return new SageMakerCompletionProvider(endpointName, {
@@ -32729,7 +32872,7 @@ const providerMap = [
32729
32872
  {
32730
32873
  test: (providerPath) => providerPath.startsWith("cloudflare-ai:"),
32731
32874
  create: async (providerPath, providerOptions, context) => {
32732
- const { createCloudflareAiProvider } = await import("./cloudflare-ai-DGLte7Py.js");
32875
+ const { createCloudflareAiProvider } = await import("./cloudflare-ai-DGOwgexC.js");
32733
32876
  return createCloudflareAiProvider(providerPath, {
32734
32877
  ...providerOptions,
32735
32878
  env: context.env
@@ -32739,7 +32882,7 @@ const providerMap = [
32739
32882
  {
32740
32883
  test: (providerPath) => providerPath.startsWith("cloudflare-gateway:"),
32741
32884
  create: async (providerPath, providerOptions, context) => {
32742
- const { createCloudflareGatewayProvider } = await import("./cloudflare-gateway-CiIZHU0Q.js");
32885
+ const { createCloudflareGatewayProvider } = await import("./cloudflare-gateway-D-dnkzCF.js");
32743
32886
  return createCloudflareGatewayProvider(providerPath, {
32744
32887
  ...providerOptions,
32745
32888
  env: context.env
@@ -32891,27 +33034,27 @@ const providerMap = [
32891
33034
  create: async (providerPath, providerOptions, context) => {
32892
33035
  const modelType = providerPath.split(":")[1];
32893
33036
  if (modelType === "image") {
32894
- const { createHyperbolicImageProvider } = await import("./image-u7-rKnYU.js");
33037
+ const { createHyperbolicImageProvider } = await import("./image-qjO6FWPs.js");
32895
33038
  return createHyperbolicImageProvider(providerPath, {
32896
33039
  ...providerOptions,
32897
33040
  env: context.env
32898
33041
  });
32899
33042
  }
32900
33043
  if (modelType === "audio") {
32901
- const { createHyperbolicAudioProvider } = await import("./audio-DcVKoInv.js");
33044
+ const { createHyperbolicAudioProvider } = await import("./audio-BvpTOArF.js");
32902
33045
  return createHyperbolicAudioProvider(providerPath, {
32903
33046
  ...providerOptions,
32904
33047
  env: context.env
32905
33048
  });
32906
33049
  }
32907
- const { createHyperbolicProvider } = await import("./chat-0bwXjVP0.js");
33050
+ const { createHyperbolicProvider } = await import("./chat-aMQZw6R7.js");
32908
33051
  return createHyperbolicProvider(providerPath, providerOptions);
32909
33052
  }
32910
33053
  },
32911
33054
  {
32912
33055
  test: (providerPath) => providerPath.startsWith("litellm:"),
32913
33056
  create: async (providerPath, providerOptions, context) => {
32914
- const { createLiteLLMProvider } = await import("./litellm-DRjpcSa7.js");
33057
+ const { createLiteLLMProvider } = await import("./litellm-DRc4qWfc.js");
32915
33058
  return createLiteLLMProvider(providerPath, {
32916
33059
  config: providerOptions,
32917
33060
  env: context.env
@@ -32967,8 +33110,25 @@ const providerMap = [
32967
33110
  const modelType = splits[1];
32968
33111
  const modelName = splits.slice(2).join(":");
32969
33112
  const configuredModel = getConfiguredOpenAiModel(providerOptions);
33113
+ if (modelType === "codex-app-server" || modelType === "codex-desktop") {
33114
+ const { OpenAICodexAppServerProvider } = await import("./codex-app-server-CCLjqCh9.js");
33115
+ const codexModel = modelName || configuredModel;
33116
+ const codexProviderId = providerOptions.id ?? providerPath;
33117
+ return new OpenAICodexAppServerProvider({
33118
+ ...providerOptions,
33119
+ id: codexProviderId,
33120
+ config: codexModel ? {
33121
+ ...providerOptions.config,
33122
+ model: codexModel
33123
+ } : providerOptions.config,
33124
+ env: {
33125
+ ...context.env,
33126
+ ...providerOptions.env
33127
+ }
33128
+ });
33129
+ }
32970
33130
  if (modelType === "codex-sdk" || modelType === "codex") {
32971
- const { OpenAICodexSDKProvider } = await import("./codex-sdk-Rtky3M4I.js").then((n) => n.n);
33131
+ const { OpenAICodexSDKProvider } = await import("./codex-sdk-Bzb_TqX9.js").then((n) => n.n);
32972
33132
  const codexModel = modelName || configuredModel;
32973
33133
  const codexProviderId = providerOptions.id ?? providerPath;
32974
33134
  return new OpenAICodexSDKProvider({
@@ -32988,7 +33148,7 @@ const providerMap = [
32988
33148
  if (modelType === "realtime") return new OpenAiRealtimeProvider(modelName || configuredModel || "gpt-4o-realtime-preview-2024-12-17", providerOptions);
32989
33149
  if (modelType === "responses") return new OpenAiResponsesProvider(modelName || configuredModel || "gpt-4.1-2025-04-14", providerOptions);
32990
33150
  if (modelType === "transcription") {
32991
- const { OpenAiTranscriptionProvider } = await import("./transcription-V2HaAmy2.js");
33151
+ const { OpenAiTranscriptionProvider } = await import("./transcription-D7Q0vJsh.js");
32992
33152
  return new OpenAiTranscriptionProvider(modelName || configuredModel || "gpt-4o-transcribe-diarize", providerOptions);
32993
33153
  }
32994
33154
  if (OpenAiChatCompletionProvider.OPENAI_CHAT_MODEL_NAMES.includes(modelType)) return new OpenAiChatCompletionProvider(modelType, providerOptions);
@@ -32996,11 +33156,11 @@ const providerMap = [
32996
33156
  if (OpenAiRealtimeProvider.OPENAI_REALTIME_MODEL_NAMES.includes(modelType)) return new OpenAiRealtimeProvider(modelType, providerOptions);
32997
33157
  if (OpenAiResponsesProvider.OPENAI_RESPONSES_MODEL_NAMES.includes(modelType)) return new OpenAiResponsesProvider(modelType, providerOptions);
32998
33158
  if (modelType === "agents") {
32999
- const { OpenAiAgentsProvider } = await import("./agents-DJ35I3Nt.js");
33159
+ const { OpenAiAgentsProvider } = await import("./agents-emVcx3yh.js");
33000
33160
  return new OpenAiAgentsProvider(modelName || "default-agent", providerOptions);
33001
33161
  }
33002
33162
  if (modelType === "chatkit") {
33003
- const { OpenAiChatKitProvider } = await import("./chatkit-CJnHRRMM.js");
33163
+ const { OpenAiChatKitProvider } = await import("./chatkit-CbMRoeYw.js");
33004
33164
  return new OpenAiChatKitProvider(modelName || "", providerOptions);
33005
33165
  }
33006
33166
  if (modelType === "assistant") return new OpenAiAssistantProvider(modelName, providerOptions);
@@ -33043,7 +33203,7 @@ const providerMap = [
33043
33203
  {
33044
33204
  test: (providerPath) => providerPath.startsWith("quiverai:"),
33045
33205
  create: async (providerPath, providerOptions, context) => {
33046
- const { createQuiverAiProvider } = await import("./quiverai-CtWi6x_g.js");
33206
+ const { createQuiverAiProvider } = await import("./quiverai-Bk1KrvL6.js");
33047
33207
  return createQuiverAiProvider(providerPath, providerOptions, context.env);
33048
33208
  }
33049
33209
  },
@@ -33061,7 +33221,7 @@ const providerMap = [
33061
33221
  {
33062
33222
  test: (providerPath) => providerPath.startsWith("modelslab:"),
33063
33223
  create: async (providerPath, providerOptions, context) => {
33064
- const { ModelsLabImageProvider } = await import("./modelslab-D0erNWKe.js");
33224
+ const { ModelsLabImageProvider } = await import("./modelslab-zpz9JcK0.js");
33065
33225
  const splits = providerPath.split(":");
33066
33226
  const modelType = splits[1];
33067
33227
  const modelName = splits.slice(2).join(":");
@@ -33105,7 +33265,7 @@ const providerMap = [
33105
33265
  {
33106
33266
  test: (providerPath) => providerPath.startsWith("aimlapi:"),
33107
33267
  create: async (providerPath, providerOptions, context) => {
33108
- const { createAimlApiProvider } = await import("./aimlapi-sgYnkE54.js");
33268
+ const { createAimlApiProvider } = await import("./aimlapi-uPGp0Zdo.js");
33109
33269
  return createAimlApiProvider(providerPath, {
33110
33270
  ...providerOptions,
33111
33271
  env: context.env
@@ -33115,7 +33275,7 @@ const providerMap = [
33115
33275
  {
33116
33276
  test: (providerPath) => providerPath.startsWith("cometapi:"),
33117
33277
  create: async (providerPath, providerOptions, context) => {
33118
- const { createCometApiProvider } = await import("./cometapi-BUlt_ELa.js");
33278
+ const { createCometApiProvider } = await import("./cometapi-CC7hWxmX.js");
33119
33279
  return createCometApiProvider(providerPath, {
33120
33280
  ...providerOptions,
33121
33281
  env: context.env
@@ -33125,7 +33285,7 @@ const providerMap = [
33125
33285
  {
33126
33286
  test: (providerPath) => providerPath.startsWith("docker:"),
33127
33287
  create: async (providerPath, providerOptions, context) => {
33128
- const { createDockerProvider } = await import("./docker-DCgsveLD.js");
33288
+ const { createDockerProvider } = await import("./docker--3qzPa-6.js");
33129
33289
  return createDockerProvider(providerPath, {
33130
33290
  ...providerOptions,
33131
33291
  env: context.env
@@ -33402,7 +33562,7 @@ const providerMap = [
33402
33562
  {
33403
33563
  test: (providerPath) => providerPath.startsWith("transformers:") || providerPath.startsWith("transformers.js:"),
33404
33564
  create: async (providerPath, providerOptions, _context) => {
33405
- const { validateTransformersDependency } = await import("./transformersAvailability-CcHusyhw.js");
33565
+ const { validateTransformersDependency } = await import("./transformersAvailability-lvCCvuPT.js");
33406
33566
  await validateTransformersDependency();
33407
33567
  const splits = providerPath.split(":");
33408
33568
  if (splits.length < 3) throw new Error(`Invalid Transformers.js provider path: ${providerPath}. Format: transformers:<task>:<model>
@@ -33422,7 +33582,7 @@ Example: transformers:feature-extraction:Xenova/all-MiniLM-L6-v2`);
33422
33582
  test: (providerPath) => providerPath === "slack" || providerPath.startsWith("slack:"),
33423
33583
  create: async (providerPath, providerOptions, _context) => {
33424
33584
  try {
33425
- const { SlackProvider } = await import("./slack-DDUe-5MC.js");
33585
+ const { SlackProvider } = await import("./slack-Bamy_7te.js");
33426
33586
  if (providerPath === "slack") return new SlackProvider(providerOptions);
33427
33587
  const splits = providerPath.split(":");
33428
33588
  if (splits.length < 2) throw new Error("Invalid Slack provider path. Use slack:<channel_id> or slack:channel:<channel_id>");
@@ -33461,6 +33621,17 @@ Example: transformers:feature-extraction:Xenova/all-MiniLM-L6-v2`);
33461
33621
  ];
33462
33622
  //#endregion
33463
33623
  //#region src/providers/index.ts
33624
+ function describeInvalidProvider(provider) {
33625
+ try {
33626
+ return (safeJsonStringify(sanitizeObject(provider, {
33627
+ context: "invalid provider config",
33628
+ throwOnError: true
33629
+ })) ?? Object.prototype.toString.call(provider)).slice(0, 200);
33630
+ } catch (err) {
33631
+ logger.debug("Failed to sanitize invalid provider for error message", { error: err });
33632
+ return Object.prototype.toString.call(provider);
33633
+ }
33634
+ }
33464
33635
  async function loadApiProvider(providerPath, context = {}) {
33465
33636
  const { options = {}, basePath, env } = context;
33466
33637
  const mergedEnv = env || options.env ? {
@@ -33507,17 +33678,19 @@ async function loadApiProvider(providerPath, context = {}) {
33507
33678
  };
33508
33679
  return loadApiProvider(cloudProvider.id, mergedContext);
33509
33680
  }
33510
- if (renderedProviderPath.startsWith("file://") && (renderedProviderPath.endsWith(".yaml") || renderedProviderPath.endsWith(".yml") || renderedProviderPath.endsWith(".json"))) {
33511
- const filePath = renderedProviderPath.slice(7);
33512
- const modulePath = path.isAbsolute(filePath) ? filePath : path.join(basePath || process.cwd(), filePath);
33513
- const fileContent = maybeLoadConfigFromExternalFile(yaml.load(fs.readFileSync(modulePath, "utf8")));
33514
- invariant(fileContent, `Provider config ${filePath} is undefined`);
33515
- if (Array.isArray(fileContent)) throw new Error(`Multiple providers found in ${filePath}. Use loadApiProviders instead of loadApiProvider.`);
33516
- invariant(fileContent.id, `Provider config ${filePath} must have an id`);
33517
- logger.info(`Loaded provider ${fileContent.id} from ${filePath}`);
33518
- const mergedFileEnv = fileContent.env || env ? {
33681
+ if (isProviderConfigFileReference(renderedProviderPath)) {
33682
+ const { configs, relativePath, wasArray } = readProviderConfigFile(renderedProviderPath, basePath);
33683
+ const fileContent = configs[0];
33684
+ invariant(fileContent, `Provider config file ${relativePath} contains no providers`);
33685
+ if (wasArray) throw new Error(`Multiple providers found in ${relativePath}. Use loadApiProviders instead of loadApiProvider.`);
33686
+ invariant(fileContent.id, `Provider config ${relativePath} must have an id`);
33687
+ logger.info("Loaded provider from config file", {
33688
+ providerConfigPath: relativePath,
33689
+ providerId: fileContent.id
33690
+ });
33691
+ const mergedFileEnv = fileContent.env || mergedEnv ? {
33519
33692
  ...fileContent.env,
33520
- ...env
33693
+ ...mergedEnv
33521
33694
  } : void 0;
33522
33695
  return loadApiProvider(fileContent.id, {
33523
33696
  basePath,
@@ -33532,7 +33705,7 @@ async function loadApiProvider(providerPath, context = {}) {
33532
33705
  ret.transform = options.transform;
33533
33706
  ret.delay = options.delay;
33534
33707
  ret.inputs = options.inputs;
33535
- ret.label ||= renderEnvOnlyInObject(String(options.label || ""), mergedEnv);
33708
+ ret.label ||= renderEnvOnlyInObject(options.label || "", mergedEnv);
33536
33709
  return ret;
33537
33710
  }
33538
33711
  const errorMessage = dedent`
@@ -33547,46 +33720,31 @@ async function loadApiProvider(providerPath, context = {}) {
33547
33720
  throw new Error(errorMessage);
33548
33721
  }
33549
33722
  /**
33550
- * Helper function to resolve provider from various formats (string, object, function)
33551
- * Uses providerMap for optimization and falls back to loadApiProvider with proper context
33723
+ * Helper function to resolve provider from various formats (string, object, function).
33724
+ * Checks the resolved provider cache first and falls back to loadApiProvider for uncached providers.
33552
33725
  */
33553
- async function resolveProvider(provider, providerMap, context = {}) {
33726
+ async function resolveProvider(provider, resolvedProviders, context = {}) {
33554
33727
  if (provider == null) throw new Error("Provider cannot be null or undefined");
33555
33728
  if (typeof provider === "string") {
33556
- if (providerMap[provider]) return providerMap[provider];
33729
+ if (resolvedProviders[provider]) return resolvedProviders[provider];
33557
33730
  const loadOptions = {};
33558
33731
  if (context.env) loadOptions.env = context.env;
33559
33732
  if (context.basePath) loadOptions.basePath = context.basePath;
33560
33733
  return await loadApiProvider(provider, loadOptions);
33561
33734
  } else if (typeof provider === "object") {
33562
- const casted = provider;
33563
- invariant(casted.id, "Provider object must have an id");
33564
- const loadOptions = { options: casted };
33735
+ const descriptor = normalizeProviderRef(provider);
33736
+ invariant(descriptor.kind === "options" || descriptor.kind === "map", `Provider object must have an 'id' field or be a ProviderOptionsMap (e.g. { "openai:responses:gpt-5.4": { config: ... } }). Got: ${describeInvalidProvider(provider)}`);
33737
+ const loadOptions = { options: descriptor.loadOptions };
33565
33738
  if (context.env) loadOptions.env = context.env;
33566
33739
  if (context.basePath) loadOptions.basePath = context.basePath;
33567
- return await loadApiProvider(casted.id, loadOptions);
33568
- } else if (typeof provider === "function") return {
33569
- id: () => provider.label ?? "custom-function",
33570
- callApi: provider
33571
- };
33572
- else throw new Error("Invalid provider type");
33573
- }
33574
- /**
33575
- * Helper function to load provider configs from a file path without instantiating them.
33576
- * Returns the raw ProviderOptions with all fields (including `prompts`) intact.
33577
- */
33578
- function loadProviderConfigsFromFile(filePath, basePath) {
33579
- const relativePath = filePath.slice(7);
33580
- const modulePath = path.isAbsolute(relativePath) ? relativePath : path.join(basePath || process.cwd(), relativePath);
33581
- const fileContent = maybeLoadConfigFromExternalFile(yaml.load(fs.readFileSync(modulePath, "utf8")));
33582
- invariant(fileContent, `Provider config ${relativePath} is undefined`);
33583
- return [fileContent].flat();
33584
- }
33585
- /**
33586
- * Checks if a string is a file:// reference to a YAML/JSON config file.
33587
- */
33588
- function isFileReference(str) {
33589
- return str.startsWith("file://") && (str.endsWith(".yaml") || str.endsWith(".yml") || str.endsWith(".json"));
33740
+ return await loadApiProvider(descriptor.loadProviderPath, loadOptions);
33741
+ } else if (typeof provider === "function") {
33742
+ const descriptor = normalizeProviderRef(provider);
33743
+ return {
33744
+ id: () => descriptor.id,
33745
+ callApi: provider
33746
+ };
33747
+ } else throw new Error("Invalid provider type");
33590
33748
  }
33591
33749
  /**
33592
33750
  * Resolves raw provider configurations, loading file:// references.
@@ -33601,16 +33759,18 @@ function isFileReference(str) {
33601
33759
  function resolveProviderConfigs(providerPaths, options = {}) {
33602
33760
  const { basePath } = options;
33603
33761
  if (typeof providerPaths === "string") {
33604
- if (isFileReference(providerPaths)) return loadProviderConfigsFromFile(providerPaths, basePath);
33762
+ if (isProviderConfigFileReference(providerPaths)) return loadProviderConfigsFromFile(providerPaths, basePath);
33605
33763
  return providerPaths;
33606
33764
  }
33607
33765
  if (typeof providerPaths === "function") return providerPaths;
33608
33766
  if (!Array.isArray(providerPaths)) return providerPaths;
33609
33767
  const results = [];
33610
- for (const provider of providerPaths) if (typeof provider === "string") if (isFileReference(provider)) results.push(...loadProviderConfigsFromFile(provider, basePath));
33611
- else results.push(provider);
33612
- else if (typeof provider === "function") results.push(provider);
33613
- else results.push(provider);
33768
+ for (const provider of providerPaths) {
33769
+ const descriptor = normalizeProviderRef(provider);
33770
+ if (descriptor.kind === "file") results.push(...loadProviderConfigsFromFile(descriptor.loadProviderPath, basePath));
33771
+ else if (descriptor.kind === "named") results.push(descriptor.loadProviderPath);
33772
+ else results.push(provider);
33773
+ }
33614
33774
  return results;
33615
33775
  }
33616
33776
  /**
@@ -33637,7 +33797,7 @@ async function loadApiProviders(providerPaths, options = {}) {
33637
33797
  ...options.env
33638
33798
  };
33639
33799
  if (typeof providerPaths === "string") {
33640
- if (providerPaths.startsWith("file://") && (providerPaths.endsWith(".yaml") || providerPaths.endsWith(".yml") || providerPaths.endsWith(".json"))) return loadProvidersFromFile(providerPaths, {
33800
+ if (isProviderConfigFileReference(providerPaths)) return loadProvidersFromFile(providerPaths, {
33641
33801
  basePath,
33642
33802
  env
33643
33803
  });
@@ -33650,45 +33810,35 @@ async function loadApiProviders(providerPaths, options = {}) {
33650
33810
  callApi: providerPaths
33651
33811
  }];
33652
33812
  else if (Array.isArray(providerPaths)) return (await Promise.all(providerPaths.map(async (provider, idx) => {
33653
- if (typeof provider === "string") {
33654
- if (provider.startsWith("file://") && (provider.endsWith(".yaml") || provider.endsWith(".yml") || provider.endsWith(".json"))) return loadProvidersFromFile(provider, {
33813
+ const descriptor = normalizeProviderRef(provider, { index: idx });
33814
+ switch (descriptor.kind) {
33815
+ case "file": return loadProvidersFromFile(descriptor.loadProviderPath, {
33655
33816
  basePath,
33656
33817
  env
33657
33818
  });
33658
- return [await loadApiProvider(provider, {
33819
+ case "named": return [await loadApiProvider(descriptor.loadProviderPath, {
33820
+ basePath,
33821
+ env
33822
+ })];
33823
+ case "function": return [{
33824
+ id: () => descriptor.id,
33825
+ callApi: provider
33826
+ }];
33827
+ case "options":
33828
+ case "map": return [await loadApiProvider(descriptor.loadProviderPath, {
33829
+ options: descriptor.loadOptions,
33659
33830
  basePath,
33660
33831
  env
33661
33832
  })];
33833
+ case "unknown": throw new Error(`Invalid provider at index ${idx}: expected a provider id string, ProviderOptions with an 'id' field, or a ProviderOptionsMap (e.g. { "openai:responses:gpt-5.4": { config: ... } }). Got: ${describeInvalidProvider(provider)}`);
33834
+ default: throw new Error(`Unhandled provider kind: ${descriptor.kind}`);
33662
33835
  }
33663
- if (typeof provider === "function") return [{
33664
- id: () => provider.label ?? `custom-function-${idx}`,
33665
- callApi: provider
33666
- }];
33667
- if (provider.id) return [await loadApiProvider(provider.id, {
33668
- options: provider,
33669
- basePath,
33670
- env
33671
- })];
33672
- const id = Object.keys(provider)[0];
33673
- const providerObject = provider[id];
33674
- return [await loadApiProvider(id, {
33675
- options: {
33676
- ...providerObject,
33677
- id: providerObject.id || id
33678
- },
33679
- basePath,
33680
- env
33681
- })];
33682
33836
  }))).flat();
33683
33837
  throw new Error("Invalid providers list");
33684
33838
  }
33685
33839
  /**
33686
- * Given a `providerPaths` object, resolves a list of provider IDs. Mimics the waterfall behavior
33687
- * of `loadApiProviders` to ensure consistent behavior given the shape of the `providerPaths`
33688
- * object.
33689
- *
33690
- * @param providerPaths - The list of providers to get the IDs of.
33691
- * @returns The IDs of the providers in the providerPaths list.
33840
+ * Reads a provider config file and returns the IDs of all providers defined in it.
33841
+ * Requires every provider entry to have an `id` field.
33692
33842
  */
33693
33843
  function getProviderIdsFromFile(providerPath) {
33694
33844
  const configs = loadProviderConfigsFromFile(providerPath, state.basePath || process.cwd());
@@ -33698,24 +33848,25 @@ function getProviderIdsFromFile(providerPath) {
33698
33848
  return config.id;
33699
33849
  });
33700
33850
  }
33851
+ /**
33852
+ * Extracts provider IDs from a provider paths configuration without instantiating providers.
33853
+ * Handles strings, functions, and arrays of mixed provider types.
33854
+ * For file:// references, reads the config file to extract IDs.
33855
+ */
33701
33856
  function getProviderIds(providerPaths) {
33702
33857
  if (typeof providerPaths === "string") {
33703
- if (isFileReference(providerPaths)) return getProviderIdsFromFile(providerPaths);
33858
+ if (isProviderConfigFileReference(providerPaths)) return getProviderIdsFromFile(providerPaths);
33704
33859
  return [providerPaths];
33705
33860
  } else if (typeof providerPaths === "function") return ["custom-function"];
33706
33861
  else if (Array.isArray(providerPaths)) return providerPaths.flatMap((provider, idx) => {
33707
- if (typeof provider === "string") {
33708
- if (isFileReference(provider)) return getProviderIdsFromFile(provider);
33709
- return provider;
33710
- }
33711
- if (typeof provider === "function") return provider.label || `custom-function-${idx}`;
33712
- if (provider.id) return provider.id;
33713
- const id = Object.keys(provider)[0];
33714
- return provider[id].id || id;
33862
+ const descriptor = normalizeProviderRef(provider, { index: idx });
33863
+ if (descriptor.kind === "file") return getProviderIdsFromFile(descriptor.loadProviderPath);
33864
+ if (descriptor.kind === "unknown") throw new Error(`Invalid provider at index ${idx}: expected a provider id string, ProviderOptions with an 'id' field, or a ProviderOptionsMap. Got: ${describeInvalidProvider(provider)}`);
33865
+ return descriptor.id;
33715
33866
  });
33716
33867
  throw new Error("Invalid providers list");
33717
33868
  }
33718
33869
  //#endregion
33719
33870
  export { AIStudioChatProvider as $, removePrefix as A, isRateLimitWrapped as B, extractInputVarsFromPrompt as C, getShortPluginId as D, getSessionId as E, loadFromPackage as F, throwIfTargetPromptExceedsMaxChars as G, MAX_CHARS_PER_MESSAGE_MODIFIER_KEY as H, redteamProviderManager as I, MistralChatCompletionProvider as J, REDTEAM_MEMORY_POISONING_PLUGIN_ID as K, TokenUsageTracker as L, renderPrompt as M, runExtensionHook as N, isBasicRefusal as O, isPackagePath as P, VertexChatProvider as Q, createRateLimitRegistry as R, extractGoalFromPrompt as S, extractVariablesFromJson as T, getGeneratedPromptOverLimit as U, PromptfooHarmfulCompletionProvider as V, getMaxCharsPerMessageModifierValue as W, DefaultEmbeddingProvider as X, MistralEmbeddingProvider as Y, DefaultGradingProvider as Z, mediaExists as _, resolveProviderConfigs as a, AzureModerationProvider as at, checkExfilTracking as b, MCPProvider as c, checkCloudPermissions as ct, createTransformResponse$1 as d, getOrgContext as dt, DefaultGradingJsonProvider as et, GoogleLiveProvider as f, getPluginSeverityOverridesFromCloud as ft, getMediaStorage as g, validateStrategies as h, resolveTeamId as ht, resolveProvider as i, DefaultSynthesizeProvider as it, collectFileMetadata as j, isEmptyResponse as k, HttpProvider as l, getCloudDatabaseId as lt, loadStrategy as m, isCloudProvider as mt, loadApiProvider as n, DefaultLlmRubricProvider as nt, getFileHashes as o, AzureEmbeddingProvider as ot, Strategies as p, getPoliciesFromCloud as pt, OpenAiModerationProvider as q, loadApiProviders as r, DefaultSuggestionsProvider as rt, parseScriptParts as s, AzureChatCompletionProvider as st, getProviderIds as t, DefaultGradingProvider$1 as tt, createTransformRequest as u, getEvalConfigFromCloud as ut, retrieveMedia as v, extractPromptFromTags as w, extractAllPromptsFromTags as x, pluginMatchesStrategyTargets as y, createProviderRateLimitOptions as z };
33720
33871
 
33721
- //# sourceMappingURL=providers-Domz_llv.js.map
33872
+ //# sourceMappingURL=providers-DRrerKra.js.map