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
@@ -2,36 +2,36 @@ import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
2
  import { A as state, E as getEnvString, S as getConfigDirectoryPath, T as getEnvInt, b as safeJsonStringify, d as looksLikeSecret, l as REDACTED, m as sanitizeUrl, o as logger, p as sanitizeObject, u as isSecretField, v as isValidJson, w as getEnvFloat } from "./logger-2ZstxKQf.js";
3
3
  import { t as invariant } from "./invariant-Ddh24eXh.js";
4
4
  import { Xt as isApiProvider } from "./types-HGDdIwQJ.js";
5
- import { A as transformTools, C as isOpenAIToolChoice, D as parseChatPrompt, E as openaiToolsToBedrock, M as cloudConfig, O as toTitleCase, S as isOpenAIToolArray, T as openaiToolChoiceToBedrock, b as calculateCost, c as HttpRateLimitError, d as formatRateLimitErrorMessage, g as sleep, k as transformToolChoice, r as fetchWithTimeout, t as fetchWithProxy, u as extractRateLimitErrorCode, x as getRequestTimeoutMs, y as LONG_RUNNING_MODEL_TIMEOUT_MS } from "./fetch-CFIU30wy.js";
5
+ import { A as transformTools, C as isOpenAIToolChoice, D as parseChatPrompt, E as openaiToolsToBedrock, M as cloudConfig, O as toTitleCase, S as isOpenAIToolArray, T as openaiToolChoiceToBedrock, b as calculateCost, c as HttpRateLimitError, d as formatRateLimitErrorMessage, g as sleep, k as transformToolChoice, r as fetchWithTimeout, t as fetchWithProxy, u as extractRateLimitErrorCode, x as getRequestTimeoutMs, y as LONG_RUNNING_MODEL_TIMEOUT_MS } from "./fetch-BNUDixbE.js";
6
6
  import { i as isJavascriptFile } from "./fileExtensions-CvD3YVfM.js";
7
7
  import { n as getWrapperDir, o as safeResolve, r as importModule } from "./esm-D78sHVp9.js";
8
8
  import { t as providerRegistry } from "./providerRegistry-iPgWBDoO.js";
9
9
  import { i as withGenAISpan } from "./genaiTracer-D18lYzhB.js";
10
- import { A as pathExists, B as getNunjucksEngine, C as getResolvedRelativePath, D as maybeLoadResponseFormatFromExternalFile, E as maybeLoadFromExternalFileWithVars, F as renderEnvOnlyInObject, I as renderVarsInObject, N as loadFunction, O as maybeLoadToolsFromExternalFile, P as parseFileUrl, T as maybeLoadFromExternalFile, b as normalizeProviderRef, k as parsePathOrGlob, v as isProviderConfigFileReference, w as maybeLoadConfigFromExternalFile, x as readProviderConfigFile, y as loadProviderConfigsFromFile } from "./util-CnqjxsAd.js";
10
+ import { A as pathExists, B as getNunjucksEngine, C as getResolvedRelativePath, D as maybeLoadResponseFormatFromExternalFile, E as maybeLoadFromExternalFileWithVars, F as renderEnvOnlyInObject, I as renderVarsInObject, N as loadFunction, O as maybeLoadToolsFromExternalFile, P as parseFileUrl, T as maybeLoadFromExternalFile, b as normalizeProviderRef, k as parsePathOrGlob, v as isProviderConfigFileReference, w as maybeLoadConfigFromExternalFile, x as readProviderConfigFile, y as loadProviderConfigsFromFile } from "./util-BTAyQmdN.js";
11
11
  import { n as sha256 } from "./createHash-CM2Vkqac.js";
12
- import { a as getScopedCacheKey, i as getCache, o as isCacheEnabled, r as fetchWithCache } from "./cache-DgKlV56y.js";
12
+ import { a as getScopedCacheKey, i as getCache, o as isCacheEnabled, r as fetchWithCache } from "./cache-BEZBHFxd.js";
13
13
  import { i as validatePythonPath, n as getEnvInt$1, r as runPython, t as getConfiguredPythonPath } from "./pythonUtils-E3AlITsZ.js";
14
- import { c as failApiCall, i as OPENAI_REALTIME_MODELS, l as formatOpenAiError, s as calculateOpenAICost, u as getTokenUsage$2 } from "./util-Bptzcit_.js";
15
- import { n as calculateOpenAIUsageCost } from "./billing-DimGp80i.js";
16
- import { a as getCloudDatabaseId, d as isCloudProvider, m as validateLinkedTargetId, r as storeMedia, t as getMediaStorage, u as getProviderFromCloud } from "./storage-3dpIy6f2.js";
17
- import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-BWdNGktf.js";
18
- import { C as getGoogleApiKey, D as resolveProjectId, E as loadCredentials, F as TOKEN_REFRESH_BUFFER_MS, S as determineGoogleVertexMode, _ as resolveGoogleToolConfig, a as calculateGoogleCost, b as CHAT_MODELS, c as geminiFormatAndSystemInstructions, d as mergeGoogleCompletionOptions, f as mergeParts, g as removeGoogleFunctionDeclarations, h as parseConfigSystemInstruction, i as transformMCPToolsToOpenAi, k as toDataUri, l as getCandidate, m as normalizeTools, o as createAuthCacheDiscriminator, p as normalizeSafetySettings, r as transformMCPToolsToGoogle, s as formatCandidateContents, u as getGoogleAccessToken, v as stripExecutableToolFileReferences, w as getGoogleClient, x as GoogleAuthManager } from "./transform-CUPglRUI.js";
14
+ import { c as failApiCall, i as OPENAI_REALTIME_MODELS, l as formatOpenAiError, s as calculateOpenAICost, u as getTokenUsage$2 } from "./util-CVI1oD-n.js";
15
+ import { n as calculateOpenAIUsageCost } from "./billing-BkQJKKdm.js";
16
+ import { a as getCloudDatabaseId, d as isCloudProvider, m as validateLinkedTargetId, r as storeMedia, t as getMediaStorage, u as getProviderFromCloud } from "./storage-P9MrA5xv.js";
17
+ import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-DBG4VxM7.js";
18
+ import { C as getGoogleApiKey, D as resolveProjectId, E as loadCredentials, I as TOKEN_REFRESH_BUFFER_MS, S as determineGoogleVertexMode, _ as resolveGoogleToolConfig, a as calculateGoogleCost, b as CHAT_MODELS, c as geminiFormatAndSystemInstructions, d as mergeGoogleCompletionOptions, f as mergeParts, g as removeGoogleFunctionDeclarations, h as parseConfigSystemInstruction, i as transformMCPToolsToOpenAi, k as toDataUri, l as getCandidate, m as normalizeTools, o as createAuthCacheDiscriminator, p as normalizeSafetySettings, r as transformMCPToolsToGoogle, s as formatCandidateContents, u as getGoogleAccessToken, v as stripExecutableToolFileReferences, w as getGoogleClient, x as GoogleAuthManager } from "./transform-D7-gzzhD.js";
19
19
  import { t as OpenAiGenericProvider } from "./openai-yIS_3Upl.js";
20
- import { t as OpenAiEmbeddingProvider } from "./embedding-BpX-WENP.js";
20
+ import { t as OpenAiEmbeddingProvider } from "./embedding-BMe9ZgQF.js";
21
21
  import { a as createEmptyTokenUsage, n as accumulateResponseTokenUsage } from "./tokenUsageUtils-CmnQ0G2m.js";
22
- import { n as AnthropicGenericProvider, r as hashAnthropicCacheValue, t as AnthropicMessagesProvider } from "./messages-BKTseD_x.js";
23
- import { a as isClaudeOpus47Model, i as getTokenUsage$3, n as calculateAnthropicCost, o as outputFromMessage, s as parseMessages, t as ANTHROPIC_MODELS } from "./util-Bg-aMimr.js";
24
- import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-C57h4gaW.js";
22
+ import { n as AnthropicGenericProvider, r as hashAnthropicCacheValue, t as AnthropicMessagesProvider } from "./messages-yVMPGJ4n.js";
23
+ import { a as isClaudeOpus47Model, i as getTokenUsage$3, n as calculateAnthropicCost, o as outputFromMessage, s as parseMessages, t as ANTHROPIC_MODELS } from "./util-CubC5Tyt.js";
24
+ import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-CI7uikKQ.js";
25
25
  import { t as ellipsize } from "./text-DwYK5EBn.js";
26
- import { t as telemetry } from "./telemetry-B-NTbvDj.js";
27
- import { a as novaOutputFromMessage, n as createBedrockCacheKeyHash, o as novaParseMessages, t as AwsBedrockGenericProvider } from "./base-6Aaed910.js";
28
- import { r as storeBlob } from "./blobs-7T2OXYkC.js";
26
+ import { t as telemetry } from "./telemetry-CTYOje0d.js";
27
+ import { a as novaOutputFromMessage, n as createBedrockCacheKeyHash, o as novaParseMessages, t as AwsBedrockGenericProvider } from "./base-CzDq5YwX.js";
28
+ import { r as storeBlob } from "./blobs-B8d9jKvz.js";
29
29
  import { t as getProcessShim } from "./processShim-BcGzU8fY.js";
30
- import { i as formatOutput, n as buildStructuredImageOutputs, r as callOpenAiImageApi, t as OpenAiImageProvider } from "./image-CHJ-KjNE.js";
31
- import { t as OpenAiCompletionProvider } from "./completion-CHnFmpnp.js";
30
+ import { i as formatOutput, n as buildStructuredImageOutputs, r as callOpenAiImageApi, t as OpenAiImageProvider } from "./image-CgkOODNn.js";
31
+ import { t as OpenAiCompletionProvider } from "./completion-Dz36rtPd.js";
32
32
  import { r as parsePackageProvider } from "./packageParser-D0SUUwqU.js";
33
33
  import { n as runRuby } from "./rubyUtils-Cdfy4U0C.js";
34
- import { t as SimulatedUser } from "./simulatedUser-DNiOb7YE.js";
34
+ import { t as SimulatedUser } from "./simulatedUser-DV977ZD0.js";
35
35
  import fs from "fs/promises";
36
36
  import path from "path";
37
37
  import yaml from "js-yaml";
@@ -10667,8 +10667,8 @@ var GoogleImageProvider = class {
10667
10667
  //#endregion
10668
10668
  //#region src/providers/google/live.ts
10669
10669
  const formatContentMessage = (contents, contentIndex, useRealtimeTextInput = false) => {
10670
- if (contents[contentIndex].role != "user") throw new Error("Can only take user role inputs.");
10671
- if (contents[contentIndex].parts.length != 1) throw new Error("Unexpected number of parts in user input.");
10670
+ if (contents[contentIndex].role !== "user") throw new Error("Can only take user role inputs.");
10671
+ if (contents[contentIndex].parts.length !== 1) throw new Error("Unexpected number of parts in user input.");
10672
10672
  const userMessage = contents[contentIndex].parts[0].text;
10673
10673
  if (useRealtimeTextInput) return { realtime_input: { text: userMessage } };
10674
10674
  return { client_content: {
@@ -15019,12 +15019,13 @@ var MCPProvider = class {
15019
15019
  console.log("MCP Provider initialized with tools:", tools.map((t) => t.name));
15020
15020
  }
15021
15021
  }
15022
- async callApi(_prompt, context, _options) {
15022
+ async callApi(prompt, context, _options) {
15023
15023
  try {
15024
15024
  await this.initializationPromise;
15025
15025
  let toolCallData;
15026
15026
  try {
15027
- toolCallData = JSON.parse(context?.vars.prompt);
15027
+ const rawToolCall = context?.vars?.prompt ?? prompt;
15028
+ toolCallData = JSON.parse(String(rawToolCall));
15028
15029
  } catch {
15029
15030
  return { error: "Invalid JSON in prompt. MCP provider expects a JSON payload with tool call information." };
15030
15031
  }
@@ -22686,7 +22687,7 @@ const providerMap = [
22686
22687
  {
22687
22688
  test: (providerPath) => providerPath.startsWith("opencode:") || providerPath === "opencode",
22688
22689
  create: async (providerPath, providerOptions, context) => {
22689
- const { OpenCodeSDKProvider } = await import("./opencode-sdk-CGPqE4m0.js");
22690
+ const { OpenCodeSDKProvider } = await import("./opencode-sdk-B2qz1kCI.js");
22690
22691
  return new OpenCodeSDKProvider({
22691
22692
  ...providerOptions,
22692
22693
  id: providerPath,
@@ -22698,14 +22699,14 @@ const providerMap = [
22698
22699
  {
22699
22700
  test: (providerPath) => providerPath.startsWith("openclaw:") || providerPath === "openclaw",
22700
22701
  create: async (providerPath, providerOptions, context) => {
22701
- const { createOpenClawProvider } = await import("./openclaw-Gl2a1gR3.js");
22702
+ const { createOpenClawProvider } = await import("./openclaw-C8xQtncQ.js");
22702
22703
  return createOpenClawProvider(providerPath, providerOptions, context.env);
22703
22704
  }
22704
22705
  },
22705
22706
  {
22706
22707
  test: (providerPath) => providerPath.startsWith("anthropic:claude-agent-sdk") || providerPath.startsWith("anthropic:claude-code"),
22707
22708
  create: async (_providerPath, providerOptions, _context) => {
22708
- const { ClaudeCodeSDKProvider } = await import("./claude-agent-sdk-BH0L9H8Y.js");
22709
+ const { ClaudeCodeSDKProvider } = await import("./claude-agent-sdk-BfYAjuTk.js");
22709
22710
  return new ClaudeCodeSDKProvider({ ...providerOptions });
22710
22711
  }
22711
22712
  },
@@ -22770,25 +22771,25 @@ const providerMap = [
22770
22771
  const modelName = splits.slice(2).join(":");
22771
22772
  if (modelType === "converse") return new AwsBedrockConverseProvider(modelName, providerOptions);
22772
22773
  if (modelType === "nova-sonic" || modelType.includes("amazon.nova-sonic")) {
22773
- const { NovaSonicProvider } = await import("./nova-sonic-BQkU8weK.js");
22774
+ const { NovaSonicProvider } = await import("./nova-sonic-D-IJHou2.js");
22774
22775
  return new NovaSonicProvider("amazon.nova-sonic-v1:0", providerOptions);
22775
22776
  }
22776
22777
  if (modelType.includes("luma.ray") || modelName.includes("luma.ray")) {
22777
- const { LumaRayVideoProvider } = await import("./luma-ray-CM6bvN4t.js");
22778
+ const { LumaRayVideoProvider } = await import("./luma-ray-RQAhTNvK.js");
22778
22779
  return new LumaRayVideoProvider(modelName.includes("luma.ray") ? modelName : splits.slice(1).join(":") || "luma.ray-v2:0", providerOptions);
22779
22780
  }
22780
22781
  if (modelType.includes("amazon.nova-reel") || modelType === "video" && (modelName.includes("amazon.nova-reel") || modelName === "")) {
22781
- const { NovaReelVideoProvider } = await import("./nova-reel-BKAkU37Y.js");
22782
+ const { NovaReelVideoProvider } = await import("./nova-reel-CZeHbWUe.js");
22782
22783
  return new NovaReelVideoProvider(modelName || "amazon.nova-reel-v1:1", providerOptions);
22783
22784
  }
22784
22785
  if (modelType === "agents") {
22785
- const { AwsBedrockAgentsProvider } = await import("./agents-6d6pdEFT.js");
22786
+ const { AwsBedrockAgentsProvider } = await import("./agents-DgakfoxG.js");
22786
22787
  return new AwsBedrockAgentsProvider(modelName, providerOptions);
22787
22788
  }
22788
22789
  if (modelType === "completion") return new AwsBedrockCompletionProvider(modelName, providerOptions);
22789
22790
  if (modelType === "embeddings" || modelType === "embedding") return new AwsBedrockEmbeddingProvider(modelName, providerOptions);
22790
22791
  if (modelType === "kb" || modelType === "knowledge-base") {
22791
- const { AwsBedrockKnowledgeBaseProvider } = await import("./knowledgeBase-kyTJpbr0.js");
22792
+ const { AwsBedrockKnowledgeBaseProvider } = await import("./knowledgeBase-D9xW79dS.js");
22792
22793
  return new AwsBedrockKnowledgeBaseProvider(modelName, providerOptions);
22793
22794
  }
22794
22795
  return new AwsBedrockCompletionProvider(splits.slice(1).join(":"), providerOptions);
@@ -22798,7 +22799,7 @@ const providerMap = [
22798
22799
  test: (providerPath) => providerPath.startsWith("bedrock-agent:"),
22799
22800
  create: async (providerPath, providerOptions, _context) => {
22800
22801
  const agentId = providerPath.substring(14);
22801
- const { AwsBedrockAgentsProvider } = await import("./agents-6d6pdEFT.js");
22802
+ const { AwsBedrockAgentsProvider } = await import("./agents-DgakfoxG.js");
22802
22803
  return new AwsBedrockAgentsProvider(agentId, providerOptions);
22803
22804
  }
22804
22805
  },
@@ -22808,7 +22809,7 @@ const providerMap = [
22808
22809
  const splits = providerPath.split(":");
22809
22810
  const modelType = splits[1];
22810
22811
  const endpointName = splits.slice(2).join(":");
22811
- const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await import("./sagemaker-DHdeSsnJ.js");
22812
+ const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await import("./sagemaker-5AwedTwq.js");
22812
22813
  if (modelType === "embedding" || modelType === "embeddings") return new SageMakerEmbeddingProvider(endpointName || modelType, providerOptions);
22813
22814
  if (splits.length === 2) return new SageMakerCompletionProvider(modelType, providerOptions);
22814
22815
  if (endpointName.includes("jumpstart") || modelType === "jumpstart") return new SageMakerCompletionProvider(endpointName, {
@@ -22849,7 +22850,7 @@ const providerMap = [
22849
22850
  {
22850
22851
  test: (providerPath) => providerPath.startsWith("cloudflare-ai:"),
22851
22852
  create: async (providerPath, providerOptions, context) => {
22852
- const { createCloudflareAiProvider } = await import("./cloudflare-ai-Bg1wwMId.js");
22853
+ const { createCloudflareAiProvider } = await import("./cloudflare-ai-Cqz_3WD2.js");
22853
22854
  return createCloudflareAiProvider(providerPath, {
22854
22855
  ...providerOptions,
22855
22856
  env: context.env
@@ -22859,7 +22860,7 @@ const providerMap = [
22859
22860
  {
22860
22861
  test: (providerPath) => providerPath.startsWith("cloudflare-gateway:"),
22861
22862
  create: async (providerPath, providerOptions, context) => {
22862
- const { createCloudflareGatewayProvider } = await import("./cloudflare-gateway-BwdJezUO.js");
22863
+ const { createCloudflareGatewayProvider } = await import("./cloudflare-gateway-moRfeZJJ.js");
22863
22864
  return createCloudflareGatewayProvider(providerPath, {
22864
22865
  ...providerOptions,
22865
22866
  env: context.env
@@ -23011,27 +23012,27 @@ const providerMap = [
23011
23012
  create: async (providerPath, providerOptions, context) => {
23012
23013
  const modelType = providerPath.split(":")[1];
23013
23014
  if (modelType === "image") {
23014
- const { createHyperbolicImageProvider } = await import("./image-CD22vXth.js");
23015
+ const { createHyperbolicImageProvider } = await import("./image-nYwdqnax.js");
23015
23016
  return createHyperbolicImageProvider(providerPath, {
23016
23017
  ...providerOptions,
23017
23018
  env: context.env
23018
23019
  });
23019
23020
  }
23020
23021
  if (modelType === "audio") {
23021
- const { createHyperbolicAudioProvider } = await import("./audio-9N6nZqw9.js");
23022
+ const { createHyperbolicAudioProvider } = await import("./audio-De3snmla.js");
23022
23023
  return createHyperbolicAudioProvider(providerPath, {
23023
23024
  ...providerOptions,
23024
23025
  env: context.env
23025
23026
  });
23026
23027
  }
23027
- const { createHyperbolicProvider } = await import("./chat-uLo5fkVu.js");
23028
+ const { createHyperbolicProvider } = await import("./chat-C9yx5XD4.js");
23028
23029
  return createHyperbolicProvider(providerPath, providerOptions);
23029
23030
  }
23030
23031
  },
23031
23032
  {
23032
23033
  test: (providerPath) => providerPath.startsWith("litellm:"),
23033
23034
  create: async (providerPath, providerOptions, context) => {
23034
- const { createLiteLLMProvider } = await import("./litellm-BJFH4uKd.js");
23035
+ const { createLiteLLMProvider } = await import("./litellm-CHybAu4l.js");
23035
23036
  return createLiteLLMProvider(providerPath, {
23036
23037
  config: providerOptions,
23037
23038
  env: context.env
@@ -23088,7 +23089,7 @@ const providerMap = [
23088
23089
  const modelName = splits.slice(2).join(":");
23089
23090
  const configuredModel = getConfiguredOpenAiModel(providerOptions);
23090
23091
  if (modelType === "codex-app-server" || modelType === "codex-desktop") {
23091
- const { OpenAICodexAppServerProvider } = await import("./codex-app-server-CojV6u3_.js");
23092
+ const { OpenAICodexAppServerProvider } = await import("./codex-app-server-DBTBsZ1t.js");
23092
23093
  const codexModel = modelName || configuredModel;
23093
23094
  const codexProviderId = providerOptions.id ?? providerPath;
23094
23095
  return new OpenAICodexAppServerProvider({
@@ -23105,7 +23106,7 @@ const providerMap = [
23105
23106
  });
23106
23107
  }
23107
23108
  if (modelType === "codex-sdk" || modelType === "codex") {
23108
- const { OpenAICodexSDKProvider } = await import("./codex-sdk-Bj4uY6sS.js").then((n) => n.n);
23109
+ const { OpenAICodexSDKProvider } = await import("./codex-sdk-C4FTldKU.js").then((n) => n.n);
23109
23110
  const codexModel = modelName || configuredModel;
23110
23111
  const codexProviderId = providerOptions.id ?? providerPath;
23111
23112
  return new OpenAICodexSDKProvider({
@@ -23125,7 +23126,7 @@ const providerMap = [
23125
23126
  if (modelType === "realtime") return new OpenAiRealtimeProvider(modelName || configuredModel || "gpt-4o-realtime-preview-2024-12-17", providerOptions);
23126
23127
  if (modelType === "responses") return new OpenAiResponsesProvider(modelName || configuredModel || "gpt-4.1-2025-04-14", providerOptions);
23127
23128
  if (modelType === "transcription") {
23128
- const { OpenAiTranscriptionProvider } = await import("./transcription-BRd477OO.js");
23129
+ const { OpenAiTranscriptionProvider } = await import("./transcription-BOjp5wlV.js");
23129
23130
  return new OpenAiTranscriptionProvider(modelName || configuredModel || "gpt-4o-transcribe-diarize", providerOptions);
23130
23131
  }
23131
23132
  if (OpenAiChatCompletionProvider.OPENAI_CHAT_MODEL_NAMES.includes(modelType)) return new OpenAiChatCompletionProvider(modelType, providerOptions);
@@ -23133,7 +23134,7 @@ const providerMap = [
23133
23134
  if (OpenAiRealtimeProvider.OPENAI_REALTIME_MODEL_NAMES.includes(modelType)) return new OpenAiRealtimeProvider(modelType, providerOptions);
23134
23135
  if (OpenAiResponsesProvider.OPENAI_RESPONSES_MODEL_NAMES.includes(modelType)) return new OpenAiResponsesProvider(modelType, providerOptions);
23135
23136
  if (modelType === "agents") {
23136
- const { OpenAiAgentsProvider } = await import("./agents-CI9ETpr0.js");
23137
+ const { OpenAiAgentsProvider } = await import("./agents-BMcjQUHA.js");
23137
23138
  return new OpenAiAgentsProvider(modelName || "default-agent", providerOptions);
23138
23139
  }
23139
23140
  if (modelType === "chatkit") {
@@ -23180,7 +23181,7 @@ const providerMap = [
23180
23181
  {
23181
23182
  test: (providerPath) => providerPath.startsWith("quiverai:"),
23182
23183
  create: async (providerPath, providerOptions, context) => {
23183
- const { createQuiverAiProvider } = await import("./quiverai-ktAnwSBA.js");
23184
+ const { createQuiverAiProvider } = await import("./quiverai-CzROwhTy.js");
23184
23185
  return createQuiverAiProvider(providerPath, providerOptions, context.env);
23185
23186
  }
23186
23187
  },
@@ -23198,7 +23199,7 @@ const providerMap = [
23198
23199
  {
23199
23200
  test: (providerPath) => providerPath.startsWith("modelslab:"),
23200
23201
  create: async (providerPath, providerOptions, context) => {
23201
- const { ModelsLabImageProvider } = await import("./modelslab-D5vwtIYR.js");
23202
+ const { ModelsLabImageProvider } = await import("./modelslab-BwywPRoU.js");
23202
23203
  const splits = providerPath.split(":");
23203
23204
  const modelType = splits[1];
23204
23205
  const modelName = splits.slice(2).join(":");
@@ -23242,7 +23243,7 @@ const providerMap = [
23242
23243
  {
23243
23244
  test: (providerPath) => providerPath.startsWith("aimlapi:"),
23244
23245
  create: async (providerPath, providerOptions, context) => {
23245
- const { createAimlApiProvider } = await import("./aimlapi-NJzALFkC.js");
23246
+ const { createAimlApiProvider } = await import("./aimlapi-CLaCvZn8.js");
23246
23247
  return createAimlApiProvider(providerPath, {
23247
23248
  ...providerOptions,
23248
23249
  env: context.env
@@ -23252,7 +23253,7 @@ const providerMap = [
23252
23253
  {
23253
23254
  test: (providerPath) => providerPath.startsWith("cometapi:"),
23254
23255
  create: async (providerPath, providerOptions, context) => {
23255
- const { createCometApiProvider } = await import("./cometapi-mtyRjerU.js");
23256
+ const { createCometApiProvider } = await import("./cometapi-CMnFU1wL.js");
23256
23257
  return createCometApiProvider(providerPath, {
23257
23258
  ...providerOptions,
23258
23259
  env: context.env
@@ -23262,7 +23263,7 @@ const providerMap = [
23262
23263
  {
23263
23264
  test: (providerPath) => providerPath.startsWith("docker:"),
23264
23265
  create: async (providerPath, providerOptions, context) => {
23265
- const { createDockerProvider } = await import("./docker-CVY-oMv4.js");
23266
+ const { createDockerProvider } = await import("./docker-DogRc30z.js");
23266
23267
  return createDockerProvider(providerPath, {
23267
23268
  ...providerOptions,
23268
23269
  env: context.env
@@ -23535,7 +23536,7 @@ function isRedteamProviderPath(providerPath) {
23535
23536
  const providerFamilies = [{
23536
23537
  canHandle: isRedteamProviderPath,
23537
23538
  factories: async () => {
23538
- const { redteamProviderFactories } = await import("./registry-C57trbNM.js");
23539
+ const { redteamProviderFactories } = await import("./registry-Bvfyz9Xt.js");
23539
23540
  return redteamProviderFactories;
23540
23541
  }
23541
23542
  }];
@@ -23815,4 +23816,4 @@ function getProviderIds(providerPaths) {
23815
23816
  //#endregion
23816
23817
  export { AzureChatCompletionProvider as C, AzureEmbeddingProvider as S, getGoogleVertexProviders as _, resolveProvider as a, getGoogleAiStudioProviders as b, createXAIProvider as c, OpenAiModerationProvider as d, MistralChatCompletionProvider as f, getGoogleVertexEmbeddingProvider as g, VertexChatProvider as h, providers_exports as i, getFileHashes as l, MCPProvider as m, loadApiProvider as n, resolveProviderConfigs as o, MistralEmbeddingProvider as p, loadApiProviders as r, XAIResponsesProvider as s, getProviderIds as t, parseScriptParts as u, GoogleLiveProvider as v, AzureModerationProvider as x, AIStudioChatProvider as y };
23817
23818
 
23818
- //# sourceMappingURL=providers-D_OinWvd.js.map
23819
+ //# sourceMappingURL=providers-j-ulWCzy.js.map
@@ -0,0 +1,324 @@
1
+ import { D as getEnvString, o as logger } from "./logger-Dz3siSzF.js";
2
+ import { E as getRequestTimeoutMs, t as fetchWithProxy } from "./fetch-BErWGTUY.js";
3
+ import { r as fetchWithCache } from "./cache-WT_2CYA-.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-CHV12wRE.js.map