promptfoo 0.121.10 → 0.121.11

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 (323) hide show
  1. package/dist/src/{accounts-D4iTShVh.js → accounts-BGs8AMhG.js} +4 -4
  2. package/dist/src/{accounts-ECb2xAYn.js → accounts-BjCiVnil.js} +4 -4
  3. package/dist/src/{accounts-DbmMSaOW.js → accounts-C06-4dXo.js} +5 -5
  4. package/dist/src/{accounts-5Sf1PCNo.cjs → accounts-C6NiTdum.cjs} +4 -4
  5. package/dist/src/{agentic-utils-DxzgjGfK.js → agentic-utils-B5IO5YR-.js} +2 -2
  6. package/dist/src/{agentic-utils-eGLKHNlT.cjs → agentic-utils-BDKz7KHx.cjs} +2 -2
  7. package/dist/src/{agentic-utils-CLrqlGZc.js → agentic-utils-Bj9P7suD.js} +2 -2
  8. package/dist/src/{agentic-utils-jiE8RROB.js → agentic-utils-kgc1YTAx.js} +2 -2
  9. package/dist/src/{agents-CI9ETpr0.js → agents-BMcjQUHA.js} +2 -2
  10. package/dist/src/{agents-B0gmhYyj.js → agents-CyHaf9xC.js} +2 -2
  11. package/dist/src/{agents-Dl4uviKE.cjs → agents-DOhrSQhK.cjs} +4 -4
  12. package/dist/src/{agents-CK9Kxnix.js → agents-DT1nSZix.js} +4 -4
  13. package/dist/src/{agents-6d6pdEFT.js → agents-DgakfoxG.js} +4 -4
  14. package/dist/src/{agents-C5zoy2ZS.js → agents-VKHVNG4J.js} +2 -2
  15. package/dist/src/{agents-Br5HYLBT.cjs → agents-zYAXB2ja.cjs} +2 -2
  16. package/dist/src/{agents-CvL6W9kz.js → agents-zzIht0lm.js} +4 -4
  17. package/dist/src/{aimlapi-DGCN4rpi.cjs → aimlapi-Bv6rnE4W.cjs} +6 -6
  18. package/dist/src/{aimlapi-BonWl7zl.js → aimlapi-C05Ca41Z.js} +6 -6
  19. package/dist/src/{aimlapi-NJzALFkC.js → aimlapi-CLaCvZn8.js} +6 -6
  20. package/dist/src/{aimlapi-UwsBeqRG.js → aimlapi-DW7KNdkd.js} +6 -6
  21. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
  22. package/dist/src/app/assets/Report-BgwGPDAJ.js +1 -0
  23. package/dist/src/app/assets/index-CBwcpPdR.js +413 -0
  24. package/dist/src/app/assets/index-ZYpt1xFX.css +1 -0
  25. package/dist/src/app/index.html +2 -2
  26. package/dist/src/{audio-yUZrS0JJ.js → audio-Cd92j4tr.js} +3 -3
  27. package/dist/src/{audio-9N6nZqw9.js → audio-De3snmla.js} +3 -3
  28. package/dist/src/{audio-DBqadfGk.js → audio-Dh44iWq7.js} +3 -3
  29. package/dist/src/{audio-BR4j1oG1.cjs → audio-MqvGQVvP.cjs} +3 -3
  30. package/dist/src/{authoritativeMarkupInjection-2C63bFKe.cjs → authoritativeMarkupInjection-BAuWkXwn.cjs} +5 -5
  31. package/dist/src/{authoritativeMarkupInjection-B2MJXBR1.js → authoritativeMarkupInjection-CDCg-jRQ.js} +4 -4
  32. package/dist/src/{authoritativeMarkupInjection-CE4HOCHa.js → authoritativeMarkupInjection-COd4q9Hp.js} +5 -5
  33. package/dist/src/{authoritativeMarkupInjection-DrBqZVP1.js → authoritativeMarkupInjection-D5oKM43M.js} +5 -5
  34. package/dist/src/{base-tmVReihS.js → base-B8G9Ob46.js} +2 -2
  35. package/dist/src/{base-6Aaed910.js → base-CzDq5YwX.js} +2 -2
  36. package/dist/src/{base-S8I8vPVY.js → base-DqNtZTrF.js} +2 -2
  37. package/dist/src/{base-BS60m8JA.cjs → base-OeMKpFIB.cjs} +2 -2
  38. package/dist/src/{bestOfN-BkH9d3Lr.js → bestOfN-B89i9zc7.js} +6 -6
  39. package/dist/src/{bestOfN-C1_WFZFb.js → bestOfN-BEfIajMY.js} +5 -5
  40. package/dist/src/{bestOfN-DfRpoheE.js → bestOfN-Czr-c62W.js} +6 -6
  41. package/dist/src/{bestOfN-b6uHssUC.cjs → bestOfN-QWGyCB5j.cjs} +6 -6
  42. package/dist/src/{billing-DwpSQ_4i.js → billing-BhghtFas.js} +2 -2
  43. package/dist/src/{billing-CAB1s36q.js → billing-BkQJKKdm.js} +2 -2
  44. package/dist/src/{billing-Dn9Gm2tN.cjs → billing-Co_1rjfG.cjs} +2 -2
  45. package/dist/src/{billing-DimGp80i.js → billing-MY86Oqwg.js} +2 -2
  46. package/dist/src/{blobs-7T2OXYkC.js → blobs-B8d9jKvz.js} +2 -2
  47. package/dist/src/{blobs-CqhgM_fa.js → blobs-BTzPmpq-.js} +2 -2
  48. package/dist/src/{blobs-DQ6pIlJQ.cjs → blobs-BcpoigIU.cjs} +7 -1
  49. package/dist/src/{blobs-Dxfq3woN.js → blobs-DQ4bXN5O.js} +2 -2
  50. package/dist/src/{cache-DgKlV56y.js → cache-BEZBHFxd.js} +2 -2
  51. package/dist/src/cache-Cqg9f4d4.js +3 -0
  52. package/dist/src/{cache-CmidsPv2.js → cache-D2MfIrzr.js} +3 -3
  53. package/dist/src/{cache-B-fzj_aE.cjs → cache-DWEZYdJG.cjs} +2 -2
  54. package/dist/src/{cache-Z4cklSHj.js → cache-WT_2CYA-.js} +2 -2
  55. package/dist/src/{chat-uLo5fkVu.js → chat-C9yx5XD4.js} +2 -2
  56. package/dist/src/{chat-VVJW_GJC.js → chat-CuPbIKVa.js} +2 -2
  57. package/dist/src/{chat-BWdNGktf.js → chat-DBG4VxM7.js} +7 -7
  58. package/dist/src/{chat-CrOCT2BA.js → chat-Dwfr4jHi.js} +2 -2
  59. package/dist/src/{chat-BE0BP7oZ.js → chat-FNWhaysj.js} +7 -7
  60. package/dist/src/{chat-CvN2w9fY.js → chat-PfM8xgFA.js} +7 -7
  61. package/dist/src/{chat-CpFzezkO.cjs → chat-XVIowajy.cjs} +7 -7
  62. package/dist/src/{chat-DAkk46Lf.cjs → chat-sZgq1_-v.cjs} +2 -2
  63. package/dist/src/{claude-agent-sdk-CocknPbL.js → claude-agent-sdk-B0AZ38ny.js} +4 -4
  64. package/dist/src/{claude-agent-sdk-BH0L9H8Y.js → claude-agent-sdk-BfYAjuTk.js} +4 -4
  65. package/dist/src/{claude-agent-sdk-DxyDxejT.cjs → claude-agent-sdk-CklMerFa.cjs} +4 -4
  66. package/dist/src/{claude-agent-sdk-Bh0MH9Z9.js → claude-agent-sdk-DTFpCefB.js} +4 -4
  67. package/dist/src/cloud-BNr2N1RY.js +3 -0
  68. package/dist/src/{cloud-DJB9yPQB.js → cloud-DKKGeJBV.js} +2 -2
  69. package/dist/src/{cloudflare-ai-DeUFFMJE.cjs → cloudflare-ai-C7pMPgpc.cjs} +4 -4
  70. package/dist/src/{cloudflare-ai-Bg1wwMId.js → cloudflare-ai-Cqz_3WD2.js} +4 -4
  71. package/dist/src/{cloudflare-ai-CpbxtQGT.js → cloudflare-ai-CuUCQanF.js} +4 -4
  72. package/dist/src/{cloudflare-ai-B2Sjijq0.js → cloudflare-ai-lAgV52qE.js} +4 -4
  73. package/dist/src/{cloudflare-gateway-DKsO0VKU.js → cloudflare-gateway-8T5x83eI.js} +3 -3
  74. package/dist/src/{cloudflare-gateway-CvQV6nA1.js → cloudflare-gateway-Bq7SdErk.js} +3 -3
  75. package/dist/src/{cloudflare-gateway-BwdJezUO.js → cloudflare-gateway-moRfeZJJ.js} +3 -3
  76. package/dist/src/{cloudflare-gateway-cBHiORfX.cjs → cloudflare-gateway-peUrx9oi.cjs} +3 -3
  77. package/dist/src/{codex-app-server-BHVKRhkY.js → codex-app-server-BvPHEwJg.js} +5 -5
  78. package/dist/src/{codex-app-server-CojV6u3_.js → codex-app-server-DBTBsZ1t.js} +5 -5
  79. package/dist/src/{codex-app-server-B471dabg.cjs → codex-app-server-Dwl3iupA.cjs} +5 -5
  80. package/dist/src/{codex-app-server-DF2PMuc1.js → codex-app-server-t-QoeeGd.js} +5 -5
  81. package/dist/src/{codex-sdk-Bj4uY6sS.js → codex-sdk-C4FTldKU.js} +4 -4
  82. package/dist/src/{codex-sdk-D4JF0nj6.js → codex-sdk-C4aieKza.js} +4 -4
  83. package/dist/src/codex-sdk-CTD1qSKx.js +3 -0
  84. package/dist/src/{codex-sdk-aezPvTAB.js → codex-sdk-CnSzlhih.js} +4 -4
  85. package/dist/src/{codex-sdk-C9c-416d.cjs → codex-sdk-bWIQVOBL.cjs} +4 -4
  86. package/dist/src/{cometapi-CgaDmO4i.js → cometapi-B0mQIIzf.js} +7 -7
  87. package/dist/src/{cometapi-BlBmHq7-.js → cometapi-CFrYNMs5.js} +7 -7
  88. package/dist/src/{cometapi-mtyRjerU.js → cometapi-CMnFU1wL.js} +7 -7
  89. package/dist/src/{cometapi-D8sWSnb1.cjs → cometapi-D2thnPaL.cjs} +7 -7
  90. package/dist/src/{completion-RkFAOVSF.js → completion-B0yVZF3v.js} +5 -5
  91. package/dist/src/{completion-CHnFmpnp.js → completion-Dz36rtPd.js} +5 -5
  92. package/dist/src/{completion-Di0-4tYi.cjs → completion-Ny3XQpqx.cjs} +5 -5
  93. package/dist/src/{completion-Bd8G9VHW.js → completion-sMpCTaBm.js} +5 -5
  94. package/dist/src/{crescendo-C8YuBd9K.js → crescendo-BpVWWleP.js} +11 -11
  95. package/dist/src/{crescendo-TWgp7uGp.cjs → crescendo-CqQhmeC0.cjs} +13 -13
  96. package/dist/src/{crescendo-BgGio6G0.js → crescendo-JAvyVRKK.js} +13 -13
  97. package/dist/src/{crescendo-BQ2VI9FD.js → crescendo-RfCMSIM-.js} +13 -13
  98. package/dist/src/{custom-D0p5pikf.cjs → custom-B_fKUq6j.cjs} +11 -11
  99. package/dist/src/{custom-DsSELzzx.js → custom-Bm6Tu-ji.js} +11 -11
  100. package/dist/src/{custom-CFnjgHKp.js → custom-LxkvkOvG.js} +9 -9
  101. package/dist/src/{custom-CSaH4Qj9.js → custom-jLsK8Wf9.js} +11 -11
  102. package/dist/src/{docker-ByT3LmHN.js → docker-B60virtZ.js} +5 -5
  103. package/dist/src/{docker-BRA5ruGU.cjs → docker-D_f3qyDE.cjs} +5 -5
  104. package/dist/src/{docker-CVY-oMv4.js → docker-DogRc30z.js} +5 -5
  105. package/dist/src/{docker-DIxhfwlx.js → docker-wwQ1pPGy.js} +5 -5
  106. package/dist/src/{embedding-BpX-WENP.js → embedding-BMe9ZgQF.js} +5 -5
  107. package/dist/src/{embedding-B_0mJpXs.cjs → embedding-ClHIOEld.cjs} +5 -5
  108. package/dist/src/{embedding-LplgjBJ0.js → embedding-Dy2o5RFQ.js} +5 -5
  109. package/dist/src/{embedding-CCbgRo4z.js → embedding-HXOpA992.js} +5 -5
  110. package/dist/src/{eval-BXF3bRvV.js → eval-BLgDYWPd.js} +4 -4
  111. package/dist/src/{eval-BcM9YiOW.js → eval-DbGugzR8.js} +1 -1
  112. package/dist/src/evalResult-B6Jpy3kJ.js +3 -0
  113. package/dist/src/{evalResult-C8MROHS8.js → evalResult-BWE17Tqm.js} +3 -3
  114. package/dist/src/{evalResult-CIxAdUVQ.cjs → evalResult-DDohNAHL.cjs} +3 -3
  115. package/dist/src/{evalResult-DaACTv0f.js → evalResult-DOh0QQix.js} +3 -3
  116. package/dist/src/evaluator-CTl-lKuh.js +3 -0
  117. package/dist/src/{evaluator-C_gCkBe3.js → evaluator-DbOsHSRe.js} +212 -21
  118. package/dist/src/{evaluatorHelpers-BVvi8tWH.cjs → evaluatorHelpers-CaaC50RB.cjs} +4 -4
  119. package/dist/src/{evaluatorHelpers-C6-aKnJe.js → evaluatorHelpers-CoLW5rKU.js} +4 -4
  120. package/dist/src/{evaluatorHelpers-RQo-m90b.js → evaluatorHelpers-DTtYkrGO.js} +4 -4
  121. package/dist/src/{extractor-B1hELWwJ.js → extractor-BIqe0lMN.js} +70 -12
  122. package/dist/src/{extractor-_E41W0Fl.cjs → extractor-CUVurbDW.cjs} +71 -12
  123. package/dist/src/{extractor-DV6WBfAi.js → extractor-DOhjGS0m.js} +70 -12
  124. package/dist/src/{extractor-ItsKh8lH.js → extractor-h1HS9f6y.js} +70 -12
  125. package/dist/src/{fetch-BBa1Lxgp.js → fetch-B1Rb0VdL.js} +3 -3
  126. package/dist/src/{fetch-BtdsABrj.js → fetch-BErWGTUY.js} +2 -2
  127. package/dist/src/{fetch-CFIU30wy.js → fetch-BNUDixbE.js} +2 -2
  128. package/dist/src/{fetch-OePjzUmA.cjs → fetch-C7yU9CNr.cjs} +2 -2
  129. package/dist/src/fetch-DVj4dF4V.js +3 -0
  130. package/dist/src/{goat-kpeOOE-K.js → goat-BnB1zGir.js} +13 -13
  131. package/dist/src/{goat-Coh2te0S.cjs → goat-C1RkjWv1.cjs} +13 -13
  132. package/dist/src/{goat-BCFeW4zk.js → goat-CNpA_tT8.js} +11 -11
  133. package/dist/src/{goat-Dr2YGfiG.js → goat-ZRARvAD5.js} +13 -13
  134. package/dist/src/graders-CA3QVnK3.js +3 -0
  135. package/dist/src/{graders-BrLOEmxX.js → graders-CO5drf0x.js} +17 -17
  136. package/dist/src/{graders-DEz7EeRy.js → graders-CpUlNVnh.js} +17 -17
  137. package/dist/src/{graders-CY4Ft8A9.js → graders-Z5qzvpuI.js} +17 -17
  138. package/dist/src/{graders-CCrX0NG3.cjs → graders-t_K-nZ_X.cjs} +17 -17
  139. package/dist/src/{hydra-C90CylNi.js → hydra-BMb0WtZA.js} +13 -13
  140. package/dist/src/{hydra-dOBPmWHt.js → hydra-BXmf4FCK.js} +11 -11
  141. package/dist/src/{hydra-Cq_3qKz_.js → hydra-C5_Vuh-m.js} +13 -13
  142. package/dist/src/{hydra-B524i6K6.cjs → hydra-c1_7vPsg.cjs} +13 -13
  143. package/dist/src/{image-DBnzfeuJ.cjs → image-BhHFD4Vb.cjs} +3 -3
  144. package/dist/src/{image-CvhTr1GY.cjs → image-CYFea400.cjs} +5 -5
  145. package/dist/src/{image-CHJ-KjNE.js → image-CgkOODNn.js} +5 -5
  146. package/dist/src/{image-_-h6GCQ7.js → image-DGQkq3aK.js} +5 -5
  147. package/dist/src/{image-CkF1ruDX.js → image-DWveOfTz.js} +3 -3
  148. package/dist/src/{image-BmVZRCkS.js → image-DfF12xzt.js} +5 -5
  149. package/dist/src/{image-B6P9JAV2.js → image-DkSUFfLd.js} +3 -3
  150. package/dist/src/{image-CD22vXth.js → image-nYwdqnax.js} +3 -3
  151. package/dist/src/index.cjs +218 -26
  152. package/dist/src/index.js +216 -26
  153. package/dist/src/{indirectWebPwn-BgIfQ2ON.js → indirectWebPwn-BajQ_evT.js} +5 -5
  154. package/dist/src/{indirectWebPwn-A16xYmav.js → indirectWebPwn-BbFMiv79.js} +4 -4
  155. package/dist/src/{indirectWebPwn-BRhR4Dk9.js → indirectWebPwn-BnrxhAAL.js} +4 -4
  156. package/dist/src/{indirectWebPwn-Bfp-t224.cjs → indirectWebPwn-BqOgtzny.cjs} +5 -5
  157. package/dist/src/{indirectWebPwn-8G6tgDBW.js → indirectWebPwn-C6_BaxjA.js} +5 -5
  158. package/dist/src/{indirectWebPwn-BWGexuih.js → indirectWebPwn-C779yDi6.js} +4 -4
  159. package/dist/src/{indirectWebPwn-DcKDbCn_.cjs → indirectWebPwn-CDo9rC06.cjs} +4 -4
  160. package/dist/src/{indirectWebPwn-CZ2kTy4r.js → indirectWebPwn-k8D0JacN.js} +5 -5
  161. package/dist/src/{iterative-BIHF31Io.js → iterative-BzKNkXHn.js} +13 -13
  162. package/dist/src/{iterative-XRfxQ0i8.cjs → iterative-CD3I_Rwq.cjs} +13 -13
  163. package/dist/src/{iterative-CZPHLUKZ.js → iterative-DL8iDwrE.js} +13 -13
  164. package/dist/src/{iterative-DZkNlFE-.js → iterative-DyEoFedI.js} +11 -11
  165. package/dist/src/{iterativeImage-BFRM8Jdx.js → iterativeImage-B7qV6kzP.js} +4 -4
  166. package/dist/src/{iterativeImage-DJtVKlFX.cjs → iterativeImage-BaOAhF-S.cjs} +5 -5
  167. package/dist/src/{iterativeImage-7WjhjpHE.js → iterativeImage-D85THuYb.js} +5 -5
  168. package/dist/src/{iterativeImage-CbRn9_MH.js → iterativeImage-noXhuElt.js} +5 -5
  169. package/dist/src/{iterativeMeta-2gyieWbU.js → iterativeMeta-BHNJgPy0.js} +12 -12
  170. package/dist/src/{iterativeMeta-dkFD9UKg.cjs → iterativeMeta-BQrhQ-iJ.cjs} +12 -12
  171. package/dist/src/{iterativeMeta-Bh2AQq8Y.js → iterativeMeta-CAN36NIN.js} +12 -12
  172. package/dist/src/{iterativeMeta-CmMnD77T.js → iterativeMeta-CnPYPYH0.js} +10 -10
  173. package/dist/src/{iterativeTree-DuIk7wjS.js → iterativeTree-B7116aK-.js} +10 -10
  174. package/dist/src/{iterativeTree-bjH__9en.js → iterativeTree-DdXSpkqE.js} +12 -12
  175. package/dist/src/{iterativeTree-DSNss1kE.js → iterativeTree-cKlxQWhi.js} +12 -12
  176. package/dist/src/{iterativeTree-DoE-8nC3.cjs → iterativeTree-u2hKQ51y.cjs} +12 -12
  177. package/dist/src/{knowledgeBase-kyTJpbr0.js → knowledgeBase-D9xW79dS.js} +4 -4
  178. package/dist/src/{knowledgeBase-CQasebQt.js → knowledgeBase-DfwVbdwp.js} +4 -4
  179. package/dist/src/{knowledgeBase-DebHrXhD.cjs → knowledgeBase-DhT8uaMH.cjs} +4 -4
  180. package/dist/src/{knowledgeBase-mzMh6UZt.js → knowledgeBase-DlH6NRlX.js} +4 -4
  181. package/dist/src/{litellm-wSD4Q6-H.cjs → litellm-BA2Fti7H.cjs} +4 -4
  182. package/dist/src/{litellm-BJFH4uKd.js → litellm-CHybAu4l.js} +4 -4
  183. package/dist/src/{litellm-A2eV_lM0.js → litellm-Cn_zDWeA.js} +4 -4
  184. package/dist/src/{litellm-CeJEe_jQ.js → litellm-CnqX4jfm.js} +4 -4
  185. package/dist/src/{luma-ray-DpuaR6Wa.js → luma-ray-C_AWu7K6.js} +4 -4
  186. package/dist/src/{luma-ray-B0GNCw6S.js → luma-ray-CbFOvJZw.js} +4 -4
  187. package/dist/src/{luma-ray-qBfU-mGO.cjs → luma-ray-D7hDEZaC.cjs} +4 -4
  188. package/dist/src/{luma-ray-CM6bvN4t.js → luma-ray-RQAhTNvK.js} +4 -4
  189. package/dist/src/main.js +27 -27
  190. package/dist/src/{memoryPoisoning-9mIgiE3F.cjs → memoryPoisoning-A8N_cbrW.cjs} +5 -5
  191. package/dist/src/{memoryPoisoning-BYBQ1Ns5.js → memoryPoisoning-BGe4fuFU.js} +5 -5
  192. package/dist/src/{memoryPoisoning-SvtQxFjF.js → memoryPoisoning-DDfIRZnk.js} +5 -5
  193. package/dist/src/{memoryPoisoning-D4iqi_nT.js → memoryPoisoning-DtJ5vYZW.js} +5 -5
  194. package/dist/src/{messages-BofXErqC.js → messages-BH83TS-n.js} +7 -7
  195. package/dist/src/{messages-DxzhBs74.js → messages-aXox3d04.js} +7 -7
  196. package/dist/src/{messages-CHZtL-k0.cjs → messages-qapmFqOQ.cjs} +7 -7
  197. package/dist/src/{messages-BKTseD_x.js → messages-yVMPGJ4n.js} +7 -7
  198. package/dist/src/{mischievousUser-D23wQ8f0.js → mischievousUser-BPDyepmu.js} +5 -5
  199. package/dist/src/{mischievousUser-DX1gGvUB.js → mischievousUser-D1mbddId.js} +5 -5
  200. package/dist/src/{mischievousUser-ECTv-u4g.cjs → mischievousUser-DHYVKotH.cjs} +5 -5
  201. package/dist/src/{mischievousUser-B5oT1xjM.js → mischievousUser-D_8tmPfA.js} +5 -5
  202. package/dist/src/{modelslab-D5vwtIYR.js → modelslab-BwywPRoU.js} +5 -5
  203. package/dist/src/{modelslab-DE9CfYYT.js → modelslab-Cc6fn99l.js} +5 -5
  204. package/dist/src/{modelslab-CVkeR8mC.cjs → modelslab-D2F3FtnI.cjs} +5 -5
  205. package/dist/src/{modelslab-BU_qCK1m.js → modelslab-D_izTsvD.js} +5 -5
  206. package/dist/src/{nova-reel-BSM7U8Bp.js → nova-reel-B1Jg1XBk.js} +4 -4
  207. package/dist/src/{nova-reel-BKAkU37Y.js → nova-reel-CZeHbWUe.js} +4 -4
  208. package/dist/src/{nova-reel-BvWH15rr.cjs → nova-reel-CcWrhmGJ.cjs} +4 -4
  209. package/dist/src/{nova-reel-D2tla7dy.js → nova-reel-DFrk1Ey2.js} +4 -4
  210. package/dist/src/{nova-sonic-DU7_krhB.js → nova-sonic-4wwR0tZJ.js} +2 -2
  211. package/dist/src/{nova-sonic-C7CNjG9n.cjs → nova-sonic-BqRQ9CWO.cjs} +2 -2
  212. package/dist/src/{nova-sonic-BQkU8weK.js → nova-sonic-D-IJHou2.js} +2 -2
  213. package/dist/src/{nova-sonic-B8PB4mU2.js → nova-sonic-DJUXNWUJ.js} +2 -2
  214. package/dist/src/{openclaw-CLNjF8ox.js → openclaw-5U8yiy9P.js} +5 -5
  215. package/dist/src/{openclaw-laZmy-8p.cjs → openclaw-B0vjRb3y.cjs} +5 -5
  216. package/dist/src/{openclaw-Gl2a1gR3.js → openclaw-C8xQtncQ.js} +5 -5
  217. package/dist/src/{openclaw-D5yEpk1f.js → openclaw-CqZoWsh0.js} +5 -5
  218. package/dist/src/{opencode-sdk-CGPqE4m0.js → opencode-sdk-B2qz1kCI.js} +2 -2
  219. package/dist/src/{opencode-sdk-5XXP3gNb.js → opencode-sdk-BGO1zuPF.js} +2 -2
  220. package/dist/src/{opencode-sdk-C7mIxApB.cjs → opencode-sdk-Bk9G3WGQ.cjs} +2 -2
  221. package/dist/src/{opencode-sdk-E1fh3vlz.js → opencode-sdk-NhbhYcsR.js} +2 -2
  222. package/dist/src/{promptfoo-C4g2Lx9t.js → promptfoo-CkDcgxiW.js} +4 -4
  223. package/dist/src/{promptfoo-DdsPYNm7.js → promptfoo-De6vQq9F.js} +4 -4
  224. package/dist/src/{promptfoo-x112UyE1.js → promptfoo-DhGR7OQn.js} +4 -4
  225. package/dist/src/{promptfoo-B9KuhWM0.cjs → promptfoo-Dtw3i6YK.cjs} +4 -4
  226. package/dist/src/{providers-xrARCHcC.js → providers-BIgLuX4Z.js} +1 -1
  227. package/dist/src/{providers-BZ-QJYop.cjs → providers-CCRHPNv1.cjs} +50 -49
  228. package/dist/src/{providers-DdNIebwz.js → providers-am7xTa5w.js} +51 -50
  229. package/dist/src/{providers-BnjFZtaq.js → providers-gntyGa2T.js} +50 -49
  230. package/dist/src/{providers-D_OinWvd.js → providers-j-ulWCzy.js} +50 -49
  231. package/dist/src/quiverai-CHV12wRE.js +324 -0
  232. package/dist/src/quiverai-CNSyaZhh.js +325 -0
  233. package/dist/src/quiverai-CNfaxZ3K.cjs +324 -0
  234. package/dist/src/quiverai-CzROwhTy.js +324 -0
  235. package/dist/src/{registry-C57trbNM.js → registry-B0pFfEzq.js} +14 -14
  236. package/dist/src/{registry-Bnb9O892.cjs → registry-BH1mZ37j.cjs} +14 -14
  237. package/dist/src/{registry-CmhcDYtj.js → registry-Bvfyz9Xt.js} +14 -14
  238. package/dist/src/{registry-DhaGoOuz.js → registry-Dzut7txg.js} +14 -14
  239. package/dist/src/{remoteGeneration-BlwssRVS.js → remoteGeneration-CW6zHjQx.js} +4 -4
  240. package/dist/src/{remoteGeneration--4NPfyL-.js → remoteGeneration-DuxbIn94.js} +4 -4
  241. package/dist/src/{remoteGeneration-B0K7iojS.cjs → remoteGeneration-oSmtgmBY.cjs} +4 -4
  242. package/dist/src/{remoteGeneration-DiAuGk9s.js → remoteGeneration-wvnQpzN1.js} +4 -4
  243. package/dist/src/{responses-C57h4gaW.js → responses-CI7uikKQ.js} +6 -6
  244. package/dist/src/{responses-B9ygvEC-.cjs → responses-DRLyW4Lj.cjs} +6 -6
  245. package/dist/src/{responses-CXKL6TPn.js → responses-DxFUQTN2.js} +6 -6
  246. package/dist/src/{responses-CTfu1ToN.js → responses-JNrMb3zS.js} +6 -6
  247. package/dist/src/{sagemaker-DHdeSsnJ.js → sagemaker-5AwedTwq.js} +9 -9
  248. package/dist/src/{sagemaker-CHL8TZFs.js → sagemaker-B5yQiSKh.js} +9 -9
  249. package/dist/src/{sagemaker-DdVGF_UD.cjs → sagemaker-C3aoiFup.cjs} +9 -9
  250. package/dist/src/{sagemaker-DUjuHnmj.js → sagemaker-XmAlwYoN.js} +9 -9
  251. package/dist/src/{scanner-BdoS5ILQ.js → scanner-BdEduFjO.js} +5 -5
  252. package/dist/src/server/index.js +214 -24
  253. package/dist/src/{server-B8UpdwtX.cjs → server-B3QXCltR.cjs} +3 -3
  254. package/dist/src/{server-DaonK4kI.js → server-Ctq0NOMp.js} +3 -3
  255. package/dist/src/{server-Ds_P02x6.js → server-D0pdY_yM.js} +4 -4
  256. package/dist/src/{server-CYxCnoVw.js → server-DMCug-jv.js} +4 -4
  257. package/dist/src/server-Ty5m26Vh.js +3 -0
  258. package/dist/src/{shared-BavzGCp0.js → shared-C-G3NQ1-.js} +7 -7
  259. package/dist/src/{shared-D_0FXjLS.js → shared-CnrYC0Dk.js} +7 -7
  260. package/dist/src/{shared-DY3IzJlT.cjs → shared-D3PxrdDh.cjs} +7 -7
  261. package/dist/src/{shared-B3IkjkNV.js → shared-DHDR-oS4.js} +7 -7
  262. package/dist/src/{simulatedUser-CokouWJT.js → simulatedUser-AhNbPm55.js} +5 -5
  263. package/dist/src/{simulatedUser-DNiOb7YE.js → simulatedUser-DV977ZD0.js} +5 -5
  264. package/dist/src/{simulatedUser-BJabLGod.js → simulatedUser-Dq8cpKLQ.js} +5 -5
  265. package/dist/src/{simulatedUser-CPDlAc1R.cjs → simulatedUser-tAjEGnxH.cjs} +5 -5
  266. package/dist/src/{storage-CH8WC1r3.cjs → storage-C8WR4y77.cjs} +3 -3
  267. package/dist/src/{storage-D_qaZpfe.js → storage-CK2YYGUg.js} +3 -3
  268. package/dist/src/{storage-CLyYkZk-.js → storage-Nc_eXGrV.js} +4 -4
  269. package/dist/src/{storage-3dpIy6f2.js → storage-P9MrA5xv.js} +3 -3
  270. package/dist/src/{strategies-2Q_uZxBs.cjs → strategies-B6Y6G9UV.cjs} +8 -8
  271. package/dist/src/{strategies-DVDC487a.js → strategies-CaefFyHy.js} +9 -9
  272. package/dist/src/{strategies-BuIPOuYL.js → strategies-DE3UN_VH.js} +8 -8
  273. package/dist/src/telemetry-Bbd-BlA7.js +3 -0
  274. package/dist/src/{telemetry-Bh3HJU7r.js → telemetry-C7v0I4YX.js} +3 -3
  275. package/dist/src/{telemetry-B-NTbvDj.js → telemetry-CTYOje0d.js} +3 -3
  276. package/dist/src/{telemetry-3fTnWcSU.js → telemetry-CvJEPKK6.js} +3 -3
  277. package/dist/src/{telemetry-Be4rklbJ.cjs → telemetry-hDovhwWp.cjs} +3 -3
  278. package/dist/src/{tracingOptions-CYCHrrQQ.cjs → tracingOptions-DGai7e5l.cjs} +2 -2
  279. package/dist/src/{tracingOptions-CLKNUvF4.js → tracingOptions-DL2vOmYS.js} +2 -2
  280. package/dist/src/{tracingOptions-CZpFCwyr.js → tracingOptions-e_c5TlHv.js} +2 -2
  281. package/dist/src/{tracingOptions-Bi477wlC.js → tracingOptions-xCBDF3nM.js} +2 -2
  282. package/dist/src/{transcription-CtLhhmYq.js → transcription-BCasJfFB.js} +4 -4
  283. package/dist/src/{transcription-BB9i78R3.js → transcription-BLOD9lN7.js} +4 -4
  284. package/dist/src/{transcription-BRd477OO.js → transcription-BOjp5wlV.js} +4 -4
  285. package/dist/src/{transcription-O3Nc-kEc.cjs → transcription-G6JwbB2P.cjs} +4 -4
  286. package/dist/src/{transform-D9nfyIts.cjs → transform-B92noEAU.cjs} +13 -3
  287. package/dist/src/{transform-DmSzMsCP.js → transform-CD9wrP31.js} +8 -4
  288. package/dist/src/{transform-CUPglRUI.js → transform-D7-gzzhD.js} +8 -4
  289. package/dist/src/{transform-CLzSt5fi.js → transform-D8kXC-nB.js} +8 -4
  290. package/dist/src/{util-CnqjxsAd.js → util-BTAyQmdN.js} +2 -2
  291. package/dist/src/{util-Bg-aMimr.js → util-BbMJxgff.js} +3 -3
  292. package/dist/src/{util-mVC_YCag.cjs → util-C62dCLH_.cjs} +3 -3
  293. package/dist/src/{util-16aq4oHW.js → util-CD4LxH5h.js} +4 -4
  294. package/dist/src/{util-CRYfgRHi.js → util-CHCKTSi5.js} +3 -3
  295. package/dist/src/{util-BIYgspDB.js → util-CKQ_tuWG.js} +4 -4
  296. package/dist/src/{util-Bptzcit_.js → util-CVI1oD-n.js} +3 -3
  297. package/dist/src/{util-DHG9r5sC.js → util-CcW4TZSn.js} +2 -2
  298. package/dist/src/{util-DJLHqGS5.js → util-Ci_vm5u1.js} +2 -2
  299. package/dist/src/{util-D9xyoiGG.js → util-CkLsVF3e.js} +3 -3
  300. package/dist/src/{util-BsKq95ai.js → util-CqfcdA-f.js} +3 -3
  301. package/dist/src/{util-tsZfE0-_.js → util-CubC5Tyt.js} +3 -3
  302. package/dist/src/{util-BHfVEhSs.cjs → util-cAY5C8xI.cjs} +3 -3
  303. package/dist/src/{util-DEMRW89M2.cjs → util-jOGJmpWE2.cjs} +4 -4
  304. package/dist/src/{util-CpS555tc2.js → util-s0NU5XTE2.js} +4 -4
  305. package/dist/src/{util-DJFl6JZF.cjs → util-tFLdovkA.cjs} +2 -2
  306. package/dist/tsconfig.tsbuildinfo +1 -1
  307. package/package.json +1 -1
  308. package/dist/src/app/assets/Report-Cx3cN9Nt.js +0 -1
  309. package/dist/src/app/assets/index-D44ihjH5.css +0 -1
  310. package/dist/src/app/assets/index-DzyLrNWM.js +0 -413
  311. package/dist/src/cache-D_D5rsiE.js +0 -3
  312. package/dist/src/cloud-BmVZ8W_3.js +0 -3
  313. package/dist/src/codex-sdk-BTI9Fvnt.js +0 -3
  314. package/dist/src/evalResult-uL1BStGk.js +0 -3
  315. package/dist/src/evaluator-C2YPxWQP.js +0 -3
  316. package/dist/src/fetch-DAe6a2ih.js +0 -3
  317. package/dist/src/graders-BZe_w0E4.js +0 -3
  318. package/dist/src/quiverai-B8a5RqGP.js +0 -213
  319. package/dist/src/quiverai-BoHFg1Vw.js +0 -214
  320. package/dist/src/quiverai-DYyzyVTF.cjs +0 -213
  321. package/dist/src/quiverai-ktAnwSBA.js +0 -213
  322. package/dist/src/server-DY7p-P4-.js +0 -3
  323. package/dist/src/telemetry-BOwRcACl.js +0 -3
@@ -0,0 +1,324 @@
1
+ import { E as getEnvString, o as logger } from "./logger-2ZstxKQf.js";
2
+ import { t as fetchWithProxy, x as getRequestTimeoutMs } from "./fetch-BNUDixbE.js";
3
+ import { r as fetchWithCache } from "./cache-BEZBHFxd.js";
4
+ //#region src/providers/quiverai.ts
5
+ const QUIVERAI_API_BASE_URL = "https://api.quiver.ai/v1";
6
+ const QUIVERAI_DEFAULT_MODEL = "arrow-1.1";
7
+ const SAMPLING_KEYS = [
8
+ "temperature",
9
+ "top_p",
10
+ "presence_penalty",
11
+ "max_output_tokens"
12
+ ];
13
+ const GENERATION_KEYS = ["instructions", "n"];
14
+ const VECTORIZE_KEYS = ["auto_crop", "target_size"];
15
+ const NON_RETRYABLE_429_CODES = new Set(["weekly_limit_exceeded"]);
16
+ const MAX_RETRY_AFTER_MS = 6e4;
17
+ const MAX_RETRIES = 3;
18
+ /**
19
+ * QuiverAI provider for SVG vector graphics.
20
+ *
21
+ * Supports two endpoints:
22
+ * - Text → SVG via `POST /v1/svgs/generations` (mode: 'generation', the default).
23
+ * - Image → SVG via `POST /v1/svgs/vectorizations` (mode: 'vectorize').
24
+ *
25
+ * Streams by default for faster time-to-first-token; set `stream: false`
26
+ * to enable on-disk response caching.
27
+ */
28
+ var QuiverAiProvider = class {
29
+ config;
30
+ modelName;
31
+ mode;
32
+ apiKey;
33
+ apiBaseUrl;
34
+ constructor(modelName, options = {}) {
35
+ const { config, id, env, mode = "generation" } = options;
36
+ this.modelName = modelName;
37
+ this.mode = mode;
38
+ this.apiKey = config?.apiKey || env?.QUIVERAI_API_KEY || getEnvString("QUIVERAI_API_KEY") || "";
39
+ this.apiBaseUrl = config?.apiBaseUrl || QUIVERAI_API_BASE_URL;
40
+ if (id) this.id = () => id;
41
+ this.config = config || {};
42
+ }
43
+ id() {
44
+ return this.mode === "vectorize" ? `quiverai:vectorize:${this.modelName}` : `quiverai:${this.modelName}`;
45
+ }
46
+ toString() {
47
+ return `[QuiverAI ${this.mode === "vectorize" ? "Vectorize " : ""}Provider ${this.modelName}]`;
48
+ }
49
+ getApiUrl() {
50
+ const path = this.mode === "vectorize" ? "/svgs/vectorizations" : "/svgs/generations";
51
+ return `${this.apiBaseUrl}${path}`;
52
+ }
53
+ getHeaders() {
54
+ return {
55
+ "Content-Type": "application/json",
56
+ Authorization: `Bearer ${this.apiKey}`
57
+ };
58
+ }
59
+ async callApi(prompt, context) {
60
+ if (!this.apiKey) return { error: "QuiverAI API key is not set. Set the QUIVERAI_API_KEY environment variable or add apiKey to the provider config. Get a key at https://app.quiver.ai/settings/api-keys" };
61
+ const config = {
62
+ ...this.config,
63
+ ...context?.prompt?.config
64
+ };
65
+ const useStream = config.stream !== false;
66
+ let body;
67
+ try {
68
+ body = this.buildRequestBody(prompt, config, useStream);
69
+ } catch (error) {
70
+ return { error: `${error.message}` };
71
+ }
72
+ try {
73
+ if (useStream) return await this.callApiStreaming(body);
74
+ return await this.callApiNonStreaming(body, context);
75
+ } catch (error) {
76
+ logger.error(`QuiverAI API call error: ${error}`);
77
+ return { error: `QuiverAI API call error: ${error}` };
78
+ }
79
+ }
80
+ buildRequestBody(prompt, config, useStream) {
81
+ const sampling = pickDefined(config, [...SAMPLING_KEYS]);
82
+ if (this.mode === "vectorize") {
83
+ const image = getConfiguredVectorizeImage(config.image) ?? parsePromptAsImage(prompt);
84
+ return {
85
+ model: this.modelName,
86
+ image,
87
+ stream: useStream,
88
+ ...sampling,
89
+ ...pickDefined(config, [...VECTORIZE_KEYS])
90
+ };
91
+ }
92
+ return {
93
+ model: this.modelName,
94
+ prompt,
95
+ stream: useStream,
96
+ ...sampling,
97
+ ...pickDefined(config, [...GENERATION_KEYS]),
98
+ ...config.references && { references: normalizeReferences(config.references) }
99
+ };
100
+ }
101
+ async callApiNonStreaming(body, context) {
102
+ const { data, cached, status, statusText } = await fetchWithCache(this.getApiUrl(), {
103
+ method: "POST",
104
+ headers: this.getHeaders(),
105
+ body: JSON.stringify(body)
106
+ }, getRequestTimeoutMs(), "json", context?.bustCache ?? context?.debug);
107
+ if (status < 200 || status >= 300) {
108
+ if (data && typeof data === "object" && "code" in data && "message" in data) return { error: formatError(data) };
109
+ return { error: `API error: ${status} ${statusText}\n${typeof data === "string" ? data : JSON.stringify(data)}` };
110
+ }
111
+ const response = data;
112
+ return {
113
+ cached,
114
+ output: extractSvgOutput(response),
115
+ tokenUsage: mapTokenUsage(response.usage, cached ? 0 : 1),
116
+ metadata: buildMetadata({
117
+ responseId: response.id,
118
+ credits: response.credits
119
+ })
120
+ };
121
+ }
122
+ async callApiStreaming(body) {
123
+ let lastResp;
124
+ for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
125
+ const controller = new AbortController();
126
+ const timeout = setTimeout(() => controller.abort(), getRequestTimeoutMs());
127
+ let reader;
128
+ try {
129
+ lastResp = await fetchWithProxy(this.getApiUrl(), {
130
+ method: "POST",
131
+ headers: this.getHeaders(),
132
+ body: JSON.stringify(body),
133
+ signal: controller.signal
134
+ });
135
+ if (lastResp.status === 429 && attempt < MAX_RETRIES && !await isNonRetryable429(lastResp)) {
136
+ const waitMs = getRetryAfterMs(lastResp.headers, attempt);
137
+ logger.debug(`QuiverAI: rate limited, retry ${attempt + 1}/${MAX_RETRIES} in ${waitMs}ms`);
138
+ await lastResp.body?.cancel();
139
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
140
+ continue;
141
+ }
142
+ if (!lastResp.ok) return await handleStreamingError(lastResp);
143
+ if (!lastResp.body) return { error: "QuiverAI streaming response has no body" };
144
+ reader = lastResp.body.getReader();
145
+ return await readSSEStream(reader);
146
+ } finally {
147
+ reader?.cancel().catch(() => {});
148
+ clearTimeout(timeout);
149
+ }
150
+ }
151
+ return handleStreamingError(lastResp);
152
+ }
153
+ };
154
+ async function isNonRetryable429(resp) {
155
+ try {
156
+ const data = await resp.clone().json();
157
+ return typeof data?.code === "string" && NON_RETRYABLE_429_CODES.has(data.code);
158
+ } catch {
159
+ return false;
160
+ }
161
+ }
162
+ async function handleStreamingError(resp) {
163
+ try {
164
+ return { error: formatError(await resp.json()) };
165
+ } catch {
166
+ return { error: `QuiverAI API error: HTTP ${resp.status}` };
167
+ }
168
+ }
169
+ async function readSSEStream(reader) {
170
+ const decoder = new TextDecoder();
171
+ let buffer = "";
172
+ const outputs = /* @__PURE__ */ new Map();
173
+ let totalCredits;
174
+ let lastUsage;
175
+ let responseId;
176
+ const ingest = (line) => {
177
+ const data = parseSSEData(line);
178
+ if (!data) return;
179
+ if (data.type === "content" && typeof data.svg === "string") {
180
+ const key = data.id ?? `${data.index ?? outputs.size}`;
181
+ outputs.set(key, {
182
+ index: data.index ?? outputs.size,
183
+ svg: data.svg,
184
+ credits: data.credits
185
+ });
186
+ if (typeof data.credits === "number") totalCredits = (totalCredits ?? 0) + data.credits;
187
+ if (!responseId && data.id) responseId = data.id;
188
+ }
189
+ if (data.usage) lastUsage = data.usage;
190
+ };
191
+ while (true) {
192
+ const { done, value } = await reader.read();
193
+ if (done) break;
194
+ buffer += decoder.decode(value, { stream: true });
195
+ const lines = buffer.split("\n");
196
+ buffer = lines.pop() || "";
197
+ for (const line of lines) ingest(line);
198
+ }
199
+ if (buffer.trim()) ingest(buffer);
200
+ if (outputs.size === 0) return { error: "QuiverAI streaming response contained no SVG content" };
201
+ const ordered = [...outputs.values()].sort((a, b) => a.index - b.index).map((o) => o.svg);
202
+ return {
203
+ output: ordered.length === 1 ? ordered[0] : ordered.join("\n\n"),
204
+ tokenUsage: mapTokenUsage(lastUsage, 1),
205
+ metadata: buildMetadata({
206
+ responseId,
207
+ credits: totalCredits
208
+ })
209
+ };
210
+ }
211
+ function pickDefined(obj, keys) {
212
+ return Object.fromEntries(keys.filter((k) => obj[k] != null).map((k) => [k, obj[k]]));
213
+ }
214
+ function formatError(err) {
215
+ const base = `${err.message} [${err.code}]`;
216
+ return err.request_id ? `${base} (request_id: ${err.request_id})` : base;
217
+ }
218
+ function mapTokenUsage(usage, numRequests) {
219
+ return {
220
+ total: usage?.total_tokens || 0,
221
+ prompt: usage?.input_tokens || 0,
222
+ completion: usage?.output_tokens || 0,
223
+ numRequests
224
+ };
225
+ }
226
+ function buildMetadata(parts) {
227
+ const meta = {};
228
+ if (parts.responseId) meta.responseId = parts.responseId;
229
+ if (typeof parts.credits === "number") meta.credits = parts.credits;
230
+ return Object.keys(meta).length ? meta : void 0;
231
+ }
232
+ function getRetryAfterMs(headers, attempt) {
233
+ const retryAfter = headers.get("retry-after");
234
+ if (retryAfter) {
235
+ const seconds = Number(retryAfter);
236
+ if (!Number.isNaN(seconds)) return Math.min(seconds * 1e3, MAX_RETRY_AFTER_MS);
237
+ const date = new Date(retryAfter);
238
+ if (!Number.isNaN(date.getTime())) return Math.min(Math.max(0, date.getTime() - Date.now()), MAX_RETRY_AFTER_MS);
239
+ }
240
+ return Math.pow(2, attempt) * 1e3;
241
+ }
242
+ function parseSSEData(line) {
243
+ if (!line.startsWith("data:")) return null;
244
+ const payload = line.slice(line.startsWith("data: ") ? 6 : 5).trim();
245
+ if (!payload || payload === "[DONE]") return null;
246
+ try {
247
+ return JSON.parse(payload);
248
+ } catch {
249
+ logger.debug(`QuiverAI: failed to parse SSE data: ${payload}`);
250
+ return null;
251
+ }
252
+ }
253
+ function extractSvgOutput(response) {
254
+ if (Array.isArray(response.data)) {
255
+ const svgs = response.data.map((item) => item.svg).filter(Boolean);
256
+ if (svgs.length === 1) return svgs[0];
257
+ if (svgs.length > 1) return svgs.join("\n\n");
258
+ }
259
+ return JSON.stringify(response);
260
+ }
261
+ function normalizeReferences(refs) {
262
+ return refs.map((ref) => typeof ref === "string" ? { url: ref } : ref);
263
+ }
264
+ const BASE64_DATA_URL_PATTERN = /^data:image\/[a-zA-Z0-9.+-]+(?:;[^,;]+)*;base64,(.+)$/i;
265
+ function normalizeImageReference(value) {
266
+ if (!value || typeof value !== "object" || Array.isArray(value)) return null;
267
+ const candidate = value;
268
+ if (typeof candidate.url === "string" && candidate.url.trim()) return { url: candidate.url };
269
+ if (typeof candidate.base64 === "string" && candidate.base64.trim()) return { base64: candidate.base64 };
270
+ return null;
271
+ }
272
+ function getConfiguredVectorizeImage(image) {
273
+ if (image === void 0) return;
274
+ const normalized = normalizeImageReference(image);
275
+ if (!normalized) throw new Error("QuiverAI vectorize `image` must contain a non-empty `url` or `base64` string.");
276
+ return normalized;
277
+ }
278
+ function parsePromptAsImage(prompt) {
279
+ const trimmed = prompt.trim();
280
+ if (!trimmed) throw new Error("QuiverAI vectorize requires an image: pass a URL or base64 string as the prompt, or set `image` in the provider config.");
281
+ const dataUrlMatch = BASE64_DATA_URL_PATTERN.exec(trimmed);
282
+ if (dataUrlMatch) return { base64: dataUrlMatch[1] };
283
+ if (/^data:image\//i.test(trimmed)) throw new Error("QuiverAI vectorize data URLs must be base64-encoded.");
284
+ if (/^https?:\/\//i.test(trimmed)) return { url: trimmed };
285
+ if (trimmed.startsWith("{")) {
286
+ let parsed;
287
+ try {
288
+ parsed = JSON.parse(trimmed);
289
+ } catch {
290
+ return { base64: trimmed };
291
+ }
292
+ if (parsed && typeof parsed === "object") {
293
+ const image = normalizeImageReference(parsed);
294
+ if (image) return image;
295
+ if ("image" in parsed) {
296
+ const nestedImage = normalizeImageReference(parsed.image);
297
+ if (nestedImage) return nestedImage;
298
+ throw new Error("QuiverAI vectorize nested `image` must contain a non-empty `url` or `base64` string.");
299
+ }
300
+ throw new Error("QuiverAI vectorize JSON image input must contain a non-empty `url` or `base64` string.");
301
+ }
302
+ }
303
+ return { base64: trimmed };
304
+ }
305
+ function createQuiverAiProvider(providerPath, providerOptions = {}, env) {
306
+ const splits = providerPath.split(":");
307
+ const modelType = splits[1];
308
+ let mode = "generation";
309
+ let modelStart = 1;
310
+ if (modelType === "vectorize") {
311
+ mode = "vectorize";
312
+ modelStart = 2;
313
+ } else if (modelType === "generate" || modelType === "chat") modelStart = 2;
314
+ return new QuiverAiProvider(splits.slice(modelStart).join(":") || QUIVERAI_DEFAULT_MODEL, {
315
+ config: providerOptions.config,
316
+ id: providerOptions.id,
317
+ env: providerOptions.env ?? env,
318
+ mode
319
+ });
320
+ }
321
+ //#endregion
322
+ export { createQuiverAiProvider };
323
+
324
+ //# sourceMappingURL=quiverai-CzROwhTy.js.map
@@ -29,91 +29,91 @@ const redteamProviderFactories = [
29
29
  {
30
30
  test: (providerPath) => providerPath === "agentic:memory-poisoning",
31
31
  create: async (_providerPath, providerOptions) => {
32
- const { MemoryPoisoningProvider } = await import("./memoryPoisoning-BYBQ1Ns5.js");
32
+ const { MemoryPoisoningProvider } = await import("./memoryPoisoning-DtJ5vYZW.js");
33
33
  return new MemoryPoisoningProvider(providerOptions);
34
34
  }
35
35
  },
36
36
  {
37
37
  test: (providerPath) => providerPath === "promptfoo:redteam:best-of-n",
38
38
  create: async (_providerPath, providerOptions) => {
39
- const { default: RedteamBestOfNProvider } = await import("./bestOfN-BkH9d3Lr.js");
39
+ const { default: RedteamBestOfNProvider } = await import("./bestOfN-BEfIajMY.js");
40
40
  return new RedteamBestOfNProvider(providerOptions.config);
41
41
  }
42
42
  },
43
43
  {
44
44
  test: (providerPath) => providerPath === "promptfoo:redteam:crescendo",
45
45
  create: async (_providerPath, providerOptions) => {
46
- const { CrescendoProvider } = await import("./crescendo-BgGio6G0.js");
46
+ const { CrescendoProvider } = await import("./crescendo-BpVWWleP.js");
47
47
  return new CrescendoProvider(providerOptions.config);
48
48
  }
49
49
  },
50
50
  {
51
51
  test: (providerPath) => providerPath === "promptfoo:redteam:custom" || providerPath.startsWith("promptfoo:redteam:custom:"),
52
52
  create: async (_providerPath, providerOptions) => {
53
- const { default: RedteamCustomProvider } = await import("./custom-DsSELzzx.js");
53
+ const { default: RedteamCustomProvider } = await import("./custom-LxkvkOvG.js");
54
54
  return new RedteamCustomProvider(providerOptions.config);
55
55
  }
56
56
  },
57
57
  {
58
58
  test: (providerPath) => providerPath === "promptfoo:redteam:goat",
59
59
  create: async (_providerPath, providerOptions) => {
60
- const { default: RedteamGoatProvider } = await import("./goat-kpeOOE-K.js");
60
+ const { default: RedteamGoatProvider } = await import("./goat-CNpA_tT8.js");
61
61
  return new RedteamGoatProvider(providerOptions.config);
62
62
  }
63
63
  },
64
64
  {
65
65
  test: (providerPath) => providerPath === "promptfoo:redteam:authoritative-markup-injection",
66
66
  create: async (_providerPath, providerOptions) => {
67
- const { default: RedteamAuthoritativeMarkupInjectionProvider } = await import("./authoritativeMarkupInjection-CE4HOCHa.js");
67
+ const { default: RedteamAuthoritativeMarkupInjectionProvider } = await import("./authoritativeMarkupInjection-CDCg-jRQ.js");
68
68
  return new RedteamAuthoritativeMarkupInjectionProvider(providerOptions.config);
69
69
  }
70
70
  },
71
71
  {
72
72
  test: (providerPath) => providerPath === "promptfoo:redteam:mischievous-user",
73
73
  create: async (_providerPath, providerOptions) => {
74
- const { default: RedteamMischievousUserProvider } = await import("./mischievousUser-DX1gGvUB.js");
74
+ const { default: RedteamMischievousUserProvider } = await import("./mischievousUser-BPDyepmu.js");
75
75
  return new RedteamMischievousUserProvider(providerOptions.config);
76
76
  }
77
77
  },
78
78
  {
79
79
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative",
80
80
  create: async (_providerPath, providerOptions) => {
81
- const { default: RedteamIterativeProvider } = await import("./iterative-BIHF31Io.js");
81
+ const { default: RedteamIterativeProvider } = await import("./iterative-DyEoFedI.js");
82
82
  return new RedteamIterativeProvider(providerOptions.config);
83
83
  }
84
84
  },
85
85
  {
86
86
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:image",
87
87
  create: async (_providerPath, providerOptions) => {
88
- const { default: RedteamImageIterativeProvider } = await import("./iterativeImage-CbRn9_MH.js");
88
+ const { default: RedteamImageIterativeProvider } = await import("./iterativeImage-B7qV6kzP.js");
89
89
  return new RedteamImageIterativeProvider(providerOptions.config);
90
90
  }
91
91
  },
92
92
  {
93
93
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:tree",
94
94
  create: async (_providerPath, providerOptions) => {
95
- const { default: RedteamIterativeTreeProvider } = await import("./iterativeTree-DSNss1kE.js");
95
+ const { default: RedteamIterativeTreeProvider } = await import("./iterativeTree-B7116aK-.js");
96
96
  return new RedteamIterativeTreeProvider(providerOptions.config);
97
97
  }
98
98
  },
99
99
  {
100
100
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:meta",
101
101
  create: async (_providerPath, providerOptions) => {
102
- const { default: RedteamIterativeMetaProvider } = await import("./iterativeMeta-2gyieWbU.js");
102
+ const { default: RedteamIterativeMetaProvider } = await import("./iterativeMeta-CnPYPYH0.js");
103
103
  return new RedteamIterativeMetaProvider(providerOptions.config);
104
104
  }
105
105
  },
106
106
  {
107
107
  test: (providerPath) => providerPath === "promptfoo:redteam:hydra",
108
108
  create: async (_providerPath, providerOptions) => {
109
- const { HydraProvider } = await import("./hydra-Cq_3qKz_.js");
109
+ const { HydraProvider } = await import("./hydra-BXmf4FCK.js");
110
110
  return new HydraProvider(providerOptions.config);
111
111
  }
112
112
  },
113
113
  {
114
114
  test: (providerPath) => providerPath === "promptfoo:redteam:indirect-web-pwn",
115
115
  create: async (_providerPath, providerOptions) => {
116
- const { default: RedteamIndirectWebPwnProvider } = await import("./indirectWebPwn-CZ2kTy4r.js");
116
+ const { default: RedteamIndirectWebPwnProvider } = await import("./indirectWebPwn-C6_BaxjA.js");
117
117
  return new RedteamIndirectWebPwnProvider(providerOptions.config);
118
118
  }
119
119
  }
@@ -121,4 +121,4 @@ const redteamProviderFactories = [
121
121
  //#endregion
122
122
  export { redteamProviderFactories };
123
123
 
124
- //# sourceMappingURL=registry-C57trbNM.js.map
124
+ //# sourceMappingURL=registry-B0pFfEzq.js.map
@@ -29,91 +29,91 @@ const redteamProviderFactories = [
29
29
  {
30
30
  test: (providerPath) => providerPath === "agentic:memory-poisoning",
31
31
  create: async (_providerPath, providerOptions) => {
32
- const { MemoryPoisoningProvider } = await Promise.resolve().then(() => require("./memoryPoisoning-9mIgiE3F.cjs"));
32
+ const { MemoryPoisoningProvider } = await Promise.resolve().then(() => require("./memoryPoisoning-A8N_cbrW.cjs"));
33
33
  return new MemoryPoisoningProvider(providerOptions);
34
34
  }
35
35
  },
36
36
  {
37
37
  test: (providerPath) => providerPath === "promptfoo:redteam:best-of-n",
38
38
  create: async (_providerPath, providerOptions) => {
39
- const { default: RedteamBestOfNProvider } = await Promise.resolve().then(() => require("./bestOfN-b6uHssUC.cjs"));
39
+ const { default: RedteamBestOfNProvider } = await Promise.resolve().then(() => require("./bestOfN-QWGyCB5j.cjs"));
40
40
  return new RedteamBestOfNProvider(providerOptions.config);
41
41
  }
42
42
  },
43
43
  {
44
44
  test: (providerPath) => providerPath === "promptfoo:redteam:crescendo",
45
45
  create: async (_providerPath, providerOptions) => {
46
- const { CrescendoProvider } = await Promise.resolve().then(() => require("./crescendo-TWgp7uGp.cjs"));
46
+ const { CrescendoProvider } = await Promise.resolve().then(() => require("./crescendo-CqQhmeC0.cjs"));
47
47
  return new CrescendoProvider(providerOptions.config);
48
48
  }
49
49
  },
50
50
  {
51
51
  test: (providerPath) => providerPath === "promptfoo:redteam:custom" || providerPath.startsWith("promptfoo:redteam:custom:"),
52
52
  create: async (_providerPath, providerOptions) => {
53
- const { default: RedteamCustomProvider } = await Promise.resolve().then(() => require("./custom-D0p5pikf.cjs"));
53
+ const { default: RedteamCustomProvider } = await Promise.resolve().then(() => require("./custom-B_fKUq6j.cjs"));
54
54
  return new RedteamCustomProvider(providerOptions.config);
55
55
  }
56
56
  },
57
57
  {
58
58
  test: (providerPath) => providerPath === "promptfoo:redteam:goat",
59
59
  create: async (_providerPath, providerOptions) => {
60
- const { default: RedteamGoatProvider } = await Promise.resolve().then(() => require("./goat-Coh2te0S.cjs"));
60
+ const { default: RedteamGoatProvider } = await Promise.resolve().then(() => require("./goat-C1RkjWv1.cjs"));
61
61
  return new RedteamGoatProvider(providerOptions.config);
62
62
  }
63
63
  },
64
64
  {
65
65
  test: (providerPath) => providerPath === "promptfoo:redteam:authoritative-markup-injection",
66
66
  create: async (_providerPath, providerOptions) => {
67
- const { default: RedteamAuthoritativeMarkupInjectionProvider } = await Promise.resolve().then(() => require("./authoritativeMarkupInjection-2C63bFKe.cjs"));
67
+ const { default: RedteamAuthoritativeMarkupInjectionProvider } = await Promise.resolve().then(() => require("./authoritativeMarkupInjection-BAuWkXwn.cjs"));
68
68
  return new RedteamAuthoritativeMarkupInjectionProvider(providerOptions.config);
69
69
  }
70
70
  },
71
71
  {
72
72
  test: (providerPath) => providerPath === "promptfoo:redteam:mischievous-user",
73
73
  create: async (_providerPath, providerOptions) => {
74
- const { default: RedteamMischievousUserProvider } = await Promise.resolve().then(() => require("./mischievousUser-ECTv-u4g.cjs"));
74
+ const { default: RedteamMischievousUserProvider } = await Promise.resolve().then(() => require("./mischievousUser-DHYVKotH.cjs"));
75
75
  return new RedteamMischievousUserProvider(providerOptions.config);
76
76
  }
77
77
  },
78
78
  {
79
79
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative",
80
80
  create: async (_providerPath, providerOptions) => {
81
- const { default: RedteamIterativeProvider } = await Promise.resolve().then(() => require("./iterative-XRfxQ0i8.cjs"));
81
+ const { default: RedteamIterativeProvider } = await Promise.resolve().then(() => require("./iterative-CD3I_Rwq.cjs"));
82
82
  return new RedteamIterativeProvider(providerOptions.config);
83
83
  }
84
84
  },
85
85
  {
86
86
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:image",
87
87
  create: async (_providerPath, providerOptions) => {
88
- const { default: RedteamImageIterativeProvider } = await Promise.resolve().then(() => require("./iterativeImage-DJtVKlFX.cjs"));
88
+ const { default: RedteamImageIterativeProvider } = await Promise.resolve().then(() => require("./iterativeImage-BaOAhF-S.cjs"));
89
89
  return new RedteamImageIterativeProvider(providerOptions.config);
90
90
  }
91
91
  },
92
92
  {
93
93
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:tree",
94
94
  create: async (_providerPath, providerOptions) => {
95
- const { default: RedteamIterativeTreeProvider } = await Promise.resolve().then(() => require("./iterativeTree-DoE-8nC3.cjs"));
95
+ const { default: RedteamIterativeTreeProvider } = await Promise.resolve().then(() => require("./iterativeTree-u2hKQ51y.cjs"));
96
96
  return new RedteamIterativeTreeProvider(providerOptions.config);
97
97
  }
98
98
  },
99
99
  {
100
100
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:meta",
101
101
  create: async (_providerPath, providerOptions) => {
102
- const { default: RedteamIterativeMetaProvider } = await Promise.resolve().then(() => require("./iterativeMeta-dkFD9UKg.cjs"));
102
+ const { default: RedteamIterativeMetaProvider } = await Promise.resolve().then(() => require("./iterativeMeta-BQrhQ-iJ.cjs"));
103
103
  return new RedteamIterativeMetaProvider(providerOptions.config);
104
104
  }
105
105
  },
106
106
  {
107
107
  test: (providerPath) => providerPath === "promptfoo:redteam:hydra",
108
108
  create: async (_providerPath, providerOptions) => {
109
- const { HydraProvider } = await Promise.resolve().then(() => require("./hydra-B524i6K6.cjs"));
109
+ const { HydraProvider } = await Promise.resolve().then(() => require("./hydra-c1_7vPsg.cjs"));
110
110
  return new HydraProvider(providerOptions.config);
111
111
  }
112
112
  },
113
113
  {
114
114
  test: (providerPath) => providerPath === "promptfoo:redteam:indirect-web-pwn",
115
115
  create: async (_providerPath, providerOptions) => {
116
- const { default: RedteamIndirectWebPwnProvider } = await Promise.resolve().then(() => require("./indirectWebPwn-Bfp-t224.cjs"));
116
+ const { default: RedteamIndirectWebPwnProvider } = await Promise.resolve().then(() => require("./indirectWebPwn-BqOgtzny.cjs"));
117
117
  return new RedteamIndirectWebPwnProvider(providerOptions.config);
118
118
  }
119
119
  }
@@ -121,4 +121,4 @@ const redteamProviderFactories = [
121
121
  //#endregion
122
122
  exports.redteamProviderFactories = redteamProviderFactories;
123
123
 
124
- //# sourceMappingURL=registry-Bnb9O892.cjs.map
124
+ //# sourceMappingURL=registry-BH1mZ37j.cjs.map
@@ -29,91 +29,91 @@ const redteamProviderFactories = [
29
29
  {
30
30
  test: (providerPath) => providerPath === "agentic:memory-poisoning",
31
31
  create: async (_providerPath, providerOptions) => {
32
- const { MemoryPoisoningProvider } = await import("./memoryPoisoning-D4iqi_nT.js");
32
+ const { MemoryPoisoningProvider } = await import("./memoryPoisoning-BGe4fuFU.js");
33
33
  return new MemoryPoisoningProvider(providerOptions);
34
34
  }
35
35
  },
36
36
  {
37
37
  test: (providerPath) => providerPath === "promptfoo:redteam:best-of-n",
38
38
  create: async (_providerPath, providerOptions) => {
39
- const { default: RedteamBestOfNProvider } = await import("./bestOfN-C1_WFZFb.js");
39
+ const { default: RedteamBestOfNProvider } = await import("./bestOfN-B89i9zc7.js");
40
40
  return new RedteamBestOfNProvider(providerOptions.config);
41
41
  }
42
42
  },
43
43
  {
44
44
  test: (providerPath) => providerPath === "promptfoo:redteam:crescendo",
45
45
  create: async (_providerPath, providerOptions) => {
46
- const { CrescendoProvider } = await import("./crescendo-C8YuBd9K.js");
46
+ const { CrescendoProvider } = await import("./crescendo-JAvyVRKK.js");
47
47
  return new CrescendoProvider(providerOptions.config);
48
48
  }
49
49
  },
50
50
  {
51
51
  test: (providerPath) => providerPath === "promptfoo:redteam:custom" || providerPath.startsWith("promptfoo:redteam:custom:"),
52
52
  create: async (_providerPath, providerOptions) => {
53
- const { default: RedteamCustomProvider } = await import("./custom-CFnjgHKp.js");
53
+ const { default: RedteamCustomProvider } = await import("./custom-Bm6Tu-ji.js");
54
54
  return new RedteamCustomProvider(providerOptions.config);
55
55
  }
56
56
  },
57
57
  {
58
58
  test: (providerPath) => providerPath === "promptfoo:redteam:goat",
59
59
  create: async (_providerPath, providerOptions) => {
60
- const { default: RedteamGoatProvider } = await import("./goat-BCFeW4zk.js");
60
+ const { default: RedteamGoatProvider } = await import("./goat-BnB1zGir.js");
61
61
  return new RedteamGoatProvider(providerOptions.config);
62
62
  }
63
63
  },
64
64
  {
65
65
  test: (providerPath) => providerPath === "promptfoo:redteam:authoritative-markup-injection",
66
66
  create: async (_providerPath, providerOptions) => {
67
- const { default: RedteamAuthoritativeMarkupInjectionProvider } = await import("./authoritativeMarkupInjection-B2MJXBR1.js");
67
+ const { default: RedteamAuthoritativeMarkupInjectionProvider } = await import("./authoritativeMarkupInjection-COd4q9Hp.js");
68
68
  return new RedteamAuthoritativeMarkupInjectionProvider(providerOptions.config);
69
69
  }
70
70
  },
71
71
  {
72
72
  test: (providerPath) => providerPath === "promptfoo:redteam:mischievous-user",
73
73
  create: async (_providerPath, providerOptions) => {
74
- const { default: RedteamMischievousUserProvider } = await import("./mischievousUser-D23wQ8f0.js");
74
+ const { default: RedteamMischievousUserProvider } = await import("./mischievousUser-D1mbddId.js");
75
75
  return new RedteamMischievousUserProvider(providerOptions.config);
76
76
  }
77
77
  },
78
78
  {
79
79
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative",
80
80
  create: async (_providerPath, providerOptions) => {
81
- const { default: RedteamIterativeProvider } = await import("./iterative-DZkNlFE-.js");
81
+ const { default: RedteamIterativeProvider } = await import("./iterative-BzKNkXHn.js");
82
82
  return new RedteamIterativeProvider(providerOptions.config);
83
83
  }
84
84
  },
85
85
  {
86
86
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:image",
87
87
  create: async (_providerPath, providerOptions) => {
88
- const { default: RedteamImageIterativeProvider } = await import("./iterativeImage-BFRM8Jdx.js");
88
+ const { default: RedteamImageIterativeProvider } = await import("./iterativeImage-noXhuElt.js");
89
89
  return new RedteamImageIterativeProvider(providerOptions.config);
90
90
  }
91
91
  },
92
92
  {
93
93
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:tree",
94
94
  create: async (_providerPath, providerOptions) => {
95
- const { default: RedteamIterativeTreeProvider } = await import("./iterativeTree-DuIk7wjS.js");
95
+ const { default: RedteamIterativeTreeProvider } = await import("./iterativeTree-cKlxQWhi.js");
96
96
  return new RedteamIterativeTreeProvider(providerOptions.config);
97
97
  }
98
98
  },
99
99
  {
100
100
  test: (providerPath) => providerPath === "promptfoo:redteam:iterative:meta",
101
101
  create: async (_providerPath, providerOptions) => {
102
- const { default: RedteamIterativeMetaProvider } = await import("./iterativeMeta-CmMnD77T.js");
102
+ const { default: RedteamIterativeMetaProvider } = await import("./iterativeMeta-BHNJgPy0.js");
103
103
  return new RedteamIterativeMetaProvider(providerOptions.config);
104
104
  }
105
105
  },
106
106
  {
107
107
  test: (providerPath) => providerPath === "promptfoo:redteam:hydra",
108
108
  create: async (_providerPath, providerOptions) => {
109
- const { HydraProvider } = await import("./hydra-dOBPmWHt.js");
109
+ const { HydraProvider } = await import("./hydra-C5_Vuh-m.js");
110
110
  return new HydraProvider(providerOptions.config);
111
111
  }
112
112
  },
113
113
  {
114
114
  test: (providerPath) => providerPath === "promptfoo:redteam:indirect-web-pwn",
115
115
  create: async (_providerPath, providerOptions) => {
116
- const { default: RedteamIndirectWebPwnProvider } = await import("./indirectWebPwn-8G6tgDBW.js");
116
+ const { default: RedteamIndirectWebPwnProvider } = await import("./indirectWebPwn-k8D0JacN.js");
117
117
  return new RedteamIndirectWebPwnProvider(providerOptions.config);
118
118
  }
119
119
  }
@@ -121,4 +121,4 @@ const redteamProviderFactories = [
121
121
  //#endregion
122
122
  export { redteamProviderFactories };
123
123
 
124
- //# sourceMappingURL=registry-CmhcDYtj.js.map
124
+ //# sourceMappingURL=registry-Bvfyz9Xt.js.map