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.
- package/dist/src/{accounts-D4iTShVh.js → accounts-BGs8AMhG.js} +4 -4
- package/dist/src/{accounts-ECb2xAYn.js → accounts-BjCiVnil.js} +4 -4
- package/dist/src/{accounts-DbmMSaOW.js → accounts-C06-4dXo.js} +5 -5
- package/dist/src/{accounts-5Sf1PCNo.cjs → accounts-C6NiTdum.cjs} +4 -4
- package/dist/src/{agentic-utils-DxzgjGfK.js → agentic-utils-B5IO5YR-.js} +2 -2
- package/dist/src/{agentic-utils-eGLKHNlT.cjs → agentic-utils-BDKz7KHx.cjs} +2 -2
- package/dist/src/{agentic-utils-CLrqlGZc.js → agentic-utils-Bj9P7suD.js} +2 -2
- package/dist/src/{agentic-utils-jiE8RROB.js → agentic-utils-kgc1YTAx.js} +2 -2
- package/dist/src/{agents-CI9ETpr0.js → agents-BMcjQUHA.js} +2 -2
- package/dist/src/{agents-B0gmhYyj.js → agents-CyHaf9xC.js} +2 -2
- package/dist/src/{agents-Dl4uviKE.cjs → agents-DOhrSQhK.cjs} +4 -4
- package/dist/src/{agents-CK9Kxnix.js → agents-DT1nSZix.js} +4 -4
- package/dist/src/{agents-6d6pdEFT.js → agents-DgakfoxG.js} +4 -4
- package/dist/src/{agents-C5zoy2ZS.js → agents-VKHVNG4J.js} +2 -2
- package/dist/src/{agents-Br5HYLBT.cjs → agents-zYAXB2ja.cjs} +2 -2
- package/dist/src/{agents-CvL6W9kz.js → agents-zzIht0lm.js} +4 -4
- package/dist/src/{aimlapi-DGCN4rpi.cjs → aimlapi-Bv6rnE4W.cjs} +6 -6
- package/dist/src/{aimlapi-BonWl7zl.js → aimlapi-C05Ca41Z.js} +6 -6
- package/dist/src/{aimlapi-NJzALFkC.js → aimlapi-CLaCvZn8.js} +6 -6
- package/dist/src/{aimlapi-UwsBeqRG.js → aimlapi-DW7KNdkd.js} +6 -6
- package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
- package/dist/src/app/assets/Report-BgwGPDAJ.js +1 -0
- package/dist/src/app/assets/index-CBwcpPdR.js +413 -0
- package/dist/src/app/assets/index-ZYpt1xFX.css +1 -0
- package/dist/src/app/index.html +2 -2
- package/dist/src/{audio-yUZrS0JJ.js → audio-Cd92j4tr.js} +3 -3
- package/dist/src/{audio-9N6nZqw9.js → audio-De3snmla.js} +3 -3
- package/dist/src/{audio-DBqadfGk.js → audio-Dh44iWq7.js} +3 -3
- package/dist/src/{audio-BR4j1oG1.cjs → audio-MqvGQVvP.cjs} +3 -3
- package/dist/src/{authoritativeMarkupInjection-2C63bFKe.cjs → authoritativeMarkupInjection-BAuWkXwn.cjs} +5 -5
- package/dist/src/{authoritativeMarkupInjection-B2MJXBR1.js → authoritativeMarkupInjection-CDCg-jRQ.js} +4 -4
- package/dist/src/{authoritativeMarkupInjection-CE4HOCHa.js → authoritativeMarkupInjection-COd4q9Hp.js} +5 -5
- package/dist/src/{authoritativeMarkupInjection-DrBqZVP1.js → authoritativeMarkupInjection-D5oKM43M.js} +5 -5
- package/dist/src/{base-tmVReihS.js → base-B8G9Ob46.js} +2 -2
- package/dist/src/{base-6Aaed910.js → base-CzDq5YwX.js} +2 -2
- package/dist/src/{base-S8I8vPVY.js → base-DqNtZTrF.js} +2 -2
- package/dist/src/{base-BS60m8JA.cjs → base-OeMKpFIB.cjs} +2 -2
- package/dist/src/{bestOfN-BkH9d3Lr.js → bestOfN-B89i9zc7.js} +6 -6
- package/dist/src/{bestOfN-C1_WFZFb.js → bestOfN-BEfIajMY.js} +5 -5
- package/dist/src/{bestOfN-DfRpoheE.js → bestOfN-Czr-c62W.js} +6 -6
- package/dist/src/{bestOfN-b6uHssUC.cjs → bestOfN-QWGyCB5j.cjs} +6 -6
- package/dist/src/{billing-DwpSQ_4i.js → billing-BhghtFas.js} +2 -2
- package/dist/src/{billing-CAB1s36q.js → billing-BkQJKKdm.js} +2 -2
- package/dist/src/{billing-Dn9Gm2tN.cjs → billing-Co_1rjfG.cjs} +2 -2
- package/dist/src/{billing-DimGp80i.js → billing-MY86Oqwg.js} +2 -2
- package/dist/src/{blobs-7T2OXYkC.js → blobs-B8d9jKvz.js} +2 -2
- package/dist/src/{blobs-CqhgM_fa.js → blobs-BTzPmpq-.js} +2 -2
- package/dist/src/{blobs-DQ6pIlJQ.cjs → blobs-BcpoigIU.cjs} +7 -1
- package/dist/src/{blobs-Dxfq3woN.js → blobs-DQ4bXN5O.js} +2 -2
- package/dist/src/{cache-DgKlV56y.js → cache-BEZBHFxd.js} +2 -2
- package/dist/src/cache-Cqg9f4d4.js +3 -0
- package/dist/src/{cache-CmidsPv2.js → cache-D2MfIrzr.js} +3 -3
- package/dist/src/{cache-B-fzj_aE.cjs → cache-DWEZYdJG.cjs} +2 -2
- package/dist/src/{cache-Z4cklSHj.js → cache-WT_2CYA-.js} +2 -2
- package/dist/src/{chat-uLo5fkVu.js → chat-C9yx5XD4.js} +2 -2
- package/dist/src/{chat-VVJW_GJC.js → chat-CuPbIKVa.js} +2 -2
- package/dist/src/{chat-BWdNGktf.js → chat-DBG4VxM7.js} +7 -7
- package/dist/src/{chat-CrOCT2BA.js → chat-Dwfr4jHi.js} +2 -2
- package/dist/src/{chat-BE0BP7oZ.js → chat-FNWhaysj.js} +7 -7
- package/dist/src/{chat-CvN2w9fY.js → chat-PfM8xgFA.js} +7 -7
- package/dist/src/{chat-CpFzezkO.cjs → chat-XVIowajy.cjs} +7 -7
- package/dist/src/{chat-DAkk46Lf.cjs → chat-sZgq1_-v.cjs} +2 -2
- package/dist/src/{claude-agent-sdk-CocknPbL.js → claude-agent-sdk-B0AZ38ny.js} +4 -4
- package/dist/src/{claude-agent-sdk-BH0L9H8Y.js → claude-agent-sdk-BfYAjuTk.js} +4 -4
- package/dist/src/{claude-agent-sdk-DxyDxejT.cjs → claude-agent-sdk-CklMerFa.cjs} +4 -4
- package/dist/src/{claude-agent-sdk-Bh0MH9Z9.js → claude-agent-sdk-DTFpCefB.js} +4 -4
- package/dist/src/cloud-BNr2N1RY.js +3 -0
- package/dist/src/{cloud-DJB9yPQB.js → cloud-DKKGeJBV.js} +2 -2
- package/dist/src/{cloudflare-ai-DeUFFMJE.cjs → cloudflare-ai-C7pMPgpc.cjs} +4 -4
- package/dist/src/{cloudflare-ai-Bg1wwMId.js → cloudflare-ai-Cqz_3WD2.js} +4 -4
- package/dist/src/{cloudflare-ai-CpbxtQGT.js → cloudflare-ai-CuUCQanF.js} +4 -4
- package/dist/src/{cloudflare-ai-B2Sjijq0.js → cloudflare-ai-lAgV52qE.js} +4 -4
- package/dist/src/{cloudflare-gateway-DKsO0VKU.js → cloudflare-gateway-8T5x83eI.js} +3 -3
- package/dist/src/{cloudflare-gateway-CvQV6nA1.js → cloudflare-gateway-Bq7SdErk.js} +3 -3
- package/dist/src/{cloudflare-gateway-BwdJezUO.js → cloudflare-gateway-moRfeZJJ.js} +3 -3
- package/dist/src/{cloudflare-gateway-cBHiORfX.cjs → cloudflare-gateway-peUrx9oi.cjs} +3 -3
- package/dist/src/{codex-app-server-BHVKRhkY.js → codex-app-server-BvPHEwJg.js} +5 -5
- package/dist/src/{codex-app-server-CojV6u3_.js → codex-app-server-DBTBsZ1t.js} +5 -5
- package/dist/src/{codex-app-server-B471dabg.cjs → codex-app-server-Dwl3iupA.cjs} +5 -5
- package/dist/src/{codex-app-server-DF2PMuc1.js → codex-app-server-t-QoeeGd.js} +5 -5
- package/dist/src/{codex-sdk-Bj4uY6sS.js → codex-sdk-C4FTldKU.js} +4 -4
- package/dist/src/{codex-sdk-D4JF0nj6.js → codex-sdk-C4aieKza.js} +4 -4
- package/dist/src/codex-sdk-CTD1qSKx.js +3 -0
- package/dist/src/{codex-sdk-aezPvTAB.js → codex-sdk-CnSzlhih.js} +4 -4
- package/dist/src/{codex-sdk-C9c-416d.cjs → codex-sdk-bWIQVOBL.cjs} +4 -4
- package/dist/src/{cometapi-CgaDmO4i.js → cometapi-B0mQIIzf.js} +7 -7
- package/dist/src/{cometapi-BlBmHq7-.js → cometapi-CFrYNMs5.js} +7 -7
- package/dist/src/{cometapi-mtyRjerU.js → cometapi-CMnFU1wL.js} +7 -7
- package/dist/src/{cometapi-D8sWSnb1.cjs → cometapi-D2thnPaL.cjs} +7 -7
- package/dist/src/{completion-RkFAOVSF.js → completion-B0yVZF3v.js} +5 -5
- package/dist/src/{completion-CHnFmpnp.js → completion-Dz36rtPd.js} +5 -5
- package/dist/src/{completion-Di0-4tYi.cjs → completion-Ny3XQpqx.cjs} +5 -5
- package/dist/src/{completion-Bd8G9VHW.js → completion-sMpCTaBm.js} +5 -5
- package/dist/src/{crescendo-C8YuBd9K.js → crescendo-BpVWWleP.js} +11 -11
- package/dist/src/{crescendo-TWgp7uGp.cjs → crescendo-CqQhmeC0.cjs} +13 -13
- package/dist/src/{crescendo-BgGio6G0.js → crescendo-JAvyVRKK.js} +13 -13
- package/dist/src/{crescendo-BQ2VI9FD.js → crescendo-RfCMSIM-.js} +13 -13
- package/dist/src/{custom-D0p5pikf.cjs → custom-B_fKUq6j.cjs} +11 -11
- package/dist/src/{custom-DsSELzzx.js → custom-Bm6Tu-ji.js} +11 -11
- package/dist/src/{custom-CFnjgHKp.js → custom-LxkvkOvG.js} +9 -9
- package/dist/src/{custom-CSaH4Qj9.js → custom-jLsK8Wf9.js} +11 -11
- package/dist/src/{docker-ByT3LmHN.js → docker-B60virtZ.js} +5 -5
- package/dist/src/{docker-BRA5ruGU.cjs → docker-D_f3qyDE.cjs} +5 -5
- package/dist/src/{docker-CVY-oMv4.js → docker-DogRc30z.js} +5 -5
- package/dist/src/{docker-DIxhfwlx.js → docker-wwQ1pPGy.js} +5 -5
- package/dist/src/{embedding-BpX-WENP.js → embedding-BMe9ZgQF.js} +5 -5
- package/dist/src/{embedding-B_0mJpXs.cjs → embedding-ClHIOEld.cjs} +5 -5
- package/dist/src/{embedding-LplgjBJ0.js → embedding-Dy2o5RFQ.js} +5 -5
- package/dist/src/{embedding-CCbgRo4z.js → embedding-HXOpA992.js} +5 -5
- package/dist/src/{eval-BXF3bRvV.js → eval-BLgDYWPd.js} +4 -4
- package/dist/src/{eval-BcM9YiOW.js → eval-DbGugzR8.js} +1 -1
- package/dist/src/evalResult-B6Jpy3kJ.js +3 -0
- package/dist/src/{evalResult-C8MROHS8.js → evalResult-BWE17Tqm.js} +3 -3
- package/dist/src/{evalResult-CIxAdUVQ.cjs → evalResult-DDohNAHL.cjs} +3 -3
- package/dist/src/{evalResult-DaACTv0f.js → evalResult-DOh0QQix.js} +3 -3
- package/dist/src/evaluator-CTl-lKuh.js +3 -0
- package/dist/src/{evaluator-C_gCkBe3.js → evaluator-DbOsHSRe.js} +212 -21
- package/dist/src/{evaluatorHelpers-BVvi8tWH.cjs → evaluatorHelpers-CaaC50RB.cjs} +4 -4
- package/dist/src/{evaluatorHelpers-C6-aKnJe.js → evaluatorHelpers-CoLW5rKU.js} +4 -4
- package/dist/src/{evaluatorHelpers-RQo-m90b.js → evaluatorHelpers-DTtYkrGO.js} +4 -4
- package/dist/src/{extractor-B1hELWwJ.js → extractor-BIqe0lMN.js} +70 -12
- package/dist/src/{extractor-_E41W0Fl.cjs → extractor-CUVurbDW.cjs} +71 -12
- package/dist/src/{extractor-DV6WBfAi.js → extractor-DOhjGS0m.js} +70 -12
- package/dist/src/{extractor-ItsKh8lH.js → extractor-h1HS9f6y.js} +70 -12
- package/dist/src/{fetch-BBa1Lxgp.js → fetch-B1Rb0VdL.js} +3 -3
- package/dist/src/{fetch-BtdsABrj.js → fetch-BErWGTUY.js} +2 -2
- package/dist/src/{fetch-CFIU30wy.js → fetch-BNUDixbE.js} +2 -2
- package/dist/src/{fetch-OePjzUmA.cjs → fetch-C7yU9CNr.cjs} +2 -2
- package/dist/src/fetch-DVj4dF4V.js +3 -0
- package/dist/src/{goat-kpeOOE-K.js → goat-BnB1zGir.js} +13 -13
- package/dist/src/{goat-Coh2te0S.cjs → goat-C1RkjWv1.cjs} +13 -13
- package/dist/src/{goat-BCFeW4zk.js → goat-CNpA_tT8.js} +11 -11
- package/dist/src/{goat-Dr2YGfiG.js → goat-ZRARvAD5.js} +13 -13
- package/dist/src/graders-CA3QVnK3.js +3 -0
- package/dist/src/{graders-BrLOEmxX.js → graders-CO5drf0x.js} +17 -17
- package/dist/src/{graders-DEz7EeRy.js → graders-CpUlNVnh.js} +17 -17
- package/dist/src/{graders-CY4Ft8A9.js → graders-Z5qzvpuI.js} +17 -17
- package/dist/src/{graders-CCrX0NG3.cjs → graders-t_K-nZ_X.cjs} +17 -17
- package/dist/src/{hydra-C90CylNi.js → hydra-BMb0WtZA.js} +13 -13
- package/dist/src/{hydra-dOBPmWHt.js → hydra-BXmf4FCK.js} +11 -11
- package/dist/src/{hydra-Cq_3qKz_.js → hydra-C5_Vuh-m.js} +13 -13
- package/dist/src/{hydra-B524i6K6.cjs → hydra-c1_7vPsg.cjs} +13 -13
- package/dist/src/{image-DBnzfeuJ.cjs → image-BhHFD4Vb.cjs} +3 -3
- package/dist/src/{image-CvhTr1GY.cjs → image-CYFea400.cjs} +5 -5
- package/dist/src/{image-CHJ-KjNE.js → image-CgkOODNn.js} +5 -5
- package/dist/src/{image-_-h6GCQ7.js → image-DGQkq3aK.js} +5 -5
- package/dist/src/{image-CkF1ruDX.js → image-DWveOfTz.js} +3 -3
- package/dist/src/{image-BmVZRCkS.js → image-DfF12xzt.js} +5 -5
- package/dist/src/{image-B6P9JAV2.js → image-DkSUFfLd.js} +3 -3
- package/dist/src/{image-CD22vXth.js → image-nYwdqnax.js} +3 -3
- package/dist/src/index.cjs +218 -26
- package/dist/src/index.js +216 -26
- package/dist/src/{indirectWebPwn-BgIfQ2ON.js → indirectWebPwn-BajQ_evT.js} +5 -5
- package/dist/src/{indirectWebPwn-A16xYmav.js → indirectWebPwn-BbFMiv79.js} +4 -4
- package/dist/src/{indirectWebPwn-BRhR4Dk9.js → indirectWebPwn-BnrxhAAL.js} +4 -4
- package/dist/src/{indirectWebPwn-Bfp-t224.cjs → indirectWebPwn-BqOgtzny.cjs} +5 -5
- package/dist/src/{indirectWebPwn-8G6tgDBW.js → indirectWebPwn-C6_BaxjA.js} +5 -5
- package/dist/src/{indirectWebPwn-BWGexuih.js → indirectWebPwn-C779yDi6.js} +4 -4
- package/dist/src/{indirectWebPwn-DcKDbCn_.cjs → indirectWebPwn-CDo9rC06.cjs} +4 -4
- package/dist/src/{indirectWebPwn-CZ2kTy4r.js → indirectWebPwn-k8D0JacN.js} +5 -5
- package/dist/src/{iterative-BIHF31Io.js → iterative-BzKNkXHn.js} +13 -13
- package/dist/src/{iterative-XRfxQ0i8.cjs → iterative-CD3I_Rwq.cjs} +13 -13
- package/dist/src/{iterative-CZPHLUKZ.js → iterative-DL8iDwrE.js} +13 -13
- package/dist/src/{iterative-DZkNlFE-.js → iterative-DyEoFedI.js} +11 -11
- package/dist/src/{iterativeImage-BFRM8Jdx.js → iterativeImage-B7qV6kzP.js} +4 -4
- package/dist/src/{iterativeImage-DJtVKlFX.cjs → iterativeImage-BaOAhF-S.cjs} +5 -5
- package/dist/src/{iterativeImage-7WjhjpHE.js → iterativeImage-D85THuYb.js} +5 -5
- package/dist/src/{iterativeImage-CbRn9_MH.js → iterativeImage-noXhuElt.js} +5 -5
- package/dist/src/{iterativeMeta-2gyieWbU.js → iterativeMeta-BHNJgPy0.js} +12 -12
- package/dist/src/{iterativeMeta-dkFD9UKg.cjs → iterativeMeta-BQrhQ-iJ.cjs} +12 -12
- package/dist/src/{iterativeMeta-Bh2AQq8Y.js → iterativeMeta-CAN36NIN.js} +12 -12
- package/dist/src/{iterativeMeta-CmMnD77T.js → iterativeMeta-CnPYPYH0.js} +10 -10
- package/dist/src/{iterativeTree-DuIk7wjS.js → iterativeTree-B7116aK-.js} +10 -10
- package/dist/src/{iterativeTree-bjH__9en.js → iterativeTree-DdXSpkqE.js} +12 -12
- package/dist/src/{iterativeTree-DSNss1kE.js → iterativeTree-cKlxQWhi.js} +12 -12
- package/dist/src/{iterativeTree-DoE-8nC3.cjs → iterativeTree-u2hKQ51y.cjs} +12 -12
- package/dist/src/{knowledgeBase-kyTJpbr0.js → knowledgeBase-D9xW79dS.js} +4 -4
- package/dist/src/{knowledgeBase-CQasebQt.js → knowledgeBase-DfwVbdwp.js} +4 -4
- package/dist/src/{knowledgeBase-DebHrXhD.cjs → knowledgeBase-DhT8uaMH.cjs} +4 -4
- package/dist/src/{knowledgeBase-mzMh6UZt.js → knowledgeBase-DlH6NRlX.js} +4 -4
- package/dist/src/{litellm-wSD4Q6-H.cjs → litellm-BA2Fti7H.cjs} +4 -4
- package/dist/src/{litellm-BJFH4uKd.js → litellm-CHybAu4l.js} +4 -4
- package/dist/src/{litellm-A2eV_lM0.js → litellm-Cn_zDWeA.js} +4 -4
- package/dist/src/{litellm-CeJEe_jQ.js → litellm-CnqX4jfm.js} +4 -4
- package/dist/src/{luma-ray-DpuaR6Wa.js → luma-ray-C_AWu7K6.js} +4 -4
- package/dist/src/{luma-ray-B0GNCw6S.js → luma-ray-CbFOvJZw.js} +4 -4
- package/dist/src/{luma-ray-qBfU-mGO.cjs → luma-ray-D7hDEZaC.cjs} +4 -4
- package/dist/src/{luma-ray-CM6bvN4t.js → luma-ray-RQAhTNvK.js} +4 -4
- package/dist/src/main.js +27 -27
- package/dist/src/{memoryPoisoning-9mIgiE3F.cjs → memoryPoisoning-A8N_cbrW.cjs} +5 -5
- package/dist/src/{memoryPoisoning-BYBQ1Ns5.js → memoryPoisoning-BGe4fuFU.js} +5 -5
- package/dist/src/{memoryPoisoning-SvtQxFjF.js → memoryPoisoning-DDfIRZnk.js} +5 -5
- package/dist/src/{memoryPoisoning-D4iqi_nT.js → memoryPoisoning-DtJ5vYZW.js} +5 -5
- package/dist/src/{messages-BofXErqC.js → messages-BH83TS-n.js} +7 -7
- package/dist/src/{messages-DxzhBs74.js → messages-aXox3d04.js} +7 -7
- package/dist/src/{messages-CHZtL-k0.cjs → messages-qapmFqOQ.cjs} +7 -7
- package/dist/src/{messages-BKTseD_x.js → messages-yVMPGJ4n.js} +7 -7
- package/dist/src/{mischievousUser-D23wQ8f0.js → mischievousUser-BPDyepmu.js} +5 -5
- package/dist/src/{mischievousUser-DX1gGvUB.js → mischievousUser-D1mbddId.js} +5 -5
- package/dist/src/{mischievousUser-ECTv-u4g.cjs → mischievousUser-DHYVKotH.cjs} +5 -5
- package/dist/src/{mischievousUser-B5oT1xjM.js → mischievousUser-D_8tmPfA.js} +5 -5
- package/dist/src/{modelslab-D5vwtIYR.js → modelslab-BwywPRoU.js} +5 -5
- package/dist/src/{modelslab-DE9CfYYT.js → modelslab-Cc6fn99l.js} +5 -5
- package/dist/src/{modelslab-CVkeR8mC.cjs → modelslab-D2F3FtnI.cjs} +5 -5
- package/dist/src/{modelslab-BU_qCK1m.js → modelslab-D_izTsvD.js} +5 -5
- package/dist/src/{nova-reel-BSM7U8Bp.js → nova-reel-B1Jg1XBk.js} +4 -4
- package/dist/src/{nova-reel-BKAkU37Y.js → nova-reel-CZeHbWUe.js} +4 -4
- package/dist/src/{nova-reel-BvWH15rr.cjs → nova-reel-CcWrhmGJ.cjs} +4 -4
- package/dist/src/{nova-reel-D2tla7dy.js → nova-reel-DFrk1Ey2.js} +4 -4
- package/dist/src/{nova-sonic-DU7_krhB.js → nova-sonic-4wwR0tZJ.js} +2 -2
- package/dist/src/{nova-sonic-C7CNjG9n.cjs → nova-sonic-BqRQ9CWO.cjs} +2 -2
- package/dist/src/{nova-sonic-BQkU8weK.js → nova-sonic-D-IJHou2.js} +2 -2
- package/dist/src/{nova-sonic-B8PB4mU2.js → nova-sonic-DJUXNWUJ.js} +2 -2
- package/dist/src/{openclaw-CLNjF8ox.js → openclaw-5U8yiy9P.js} +5 -5
- package/dist/src/{openclaw-laZmy-8p.cjs → openclaw-B0vjRb3y.cjs} +5 -5
- package/dist/src/{openclaw-Gl2a1gR3.js → openclaw-C8xQtncQ.js} +5 -5
- package/dist/src/{openclaw-D5yEpk1f.js → openclaw-CqZoWsh0.js} +5 -5
- package/dist/src/{opencode-sdk-CGPqE4m0.js → opencode-sdk-B2qz1kCI.js} +2 -2
- package/dist/src/{opencode-sdk-5XXP3gNb.js → opencode-sdk-BGO1zuPF.js} +2 -2
- package/dist/src/{opencode-sdk-C7mIxApB.cjs → opencode-sdk-Bk9G3WGQ.cjs} +2 -2
- package/dist/src/{opencode-sdk-E1fh3vlz.js → opencode-sdk-NhbhYcsR.js} +2 -2
- package/dist/src/{promptfoo-C4g2Lx9t.js → promptfoo-CkDcgxiW.js} +4 -4
- package/dist/src/{promptfoo-DdsPYNm7.js → promptfoo-De6vQq9F.js} +4 -4
- package/dist/src/{promptfoo-x112UyE1.js → promptfoo-DhGR7OQn.js} +4 -4
- package/dist/src/{promptfoo-B9KuhWM0.cjs → promptfoo-Dtw3i6YK.cjs} +4 -4
- package/dist/src/{providers-xrARCHcC.js → providers-BIgLuX4Z.js} +1 -1
- package/dist/src/{providers-BZ-QJYop.cjs → providers-CCRHPNv1.cjs} +50 -49
- package/dist/src/{providers-DdNIebwz.js → providers-am7xTa5w.js} +51 -50
- package/dist/src/{providers-BnjFZtaq.js → providers-gntyGa2T.js} +50 -49
- package/dist/src/{providers-D_OinWvd.js → providers-j-ulWCzy.js} +50 -49
- package/dist/src/quiverai-CHV12wRE.js +324 -0
- package/dist/src/quiverai-CNSyaZhh.js +325 -0
- package/dist/src/quiverai-CNfaxZ3K.cjs +324 -0
- package/dist/src/quiverai-CzROwhTy.js +324 -0
- package/dist/src/{registry-C57trbNM.js → registry-B0pFfEzq.js} +14 -14
- package/dist/src/{registry-Bnb9O892.cjs → registry-BH1mZ37j.cjs} +14 -14
- package/dist/src/{registry-CmhcDYtj.js → registry-Bvfyz9Xt.js} +14 -14
- package/dist/src/{registry-DhaGoOuz.js → registry-Dzut7txg.js} +14 -14
- package/dist/src/{remoteGeneration-BlwssRVS.js → remoteGeneration-CW6zHjQx.js} +4 -4
- package/dist/src/{remoteGeneration--4NPfyL-.js → remoteGeneration-DuxbIn94.js} +4 -4
- package/dist/src/{remoteGeneration-B0K7iojS.cjs → remoteGeneration-oSmtgmBY.cjs} +4 -4
- package/dist/src/{remoteGeneration-DiAuGk9s.js → remoteGeneration-wvnQpzN1.js} +4 -4
- package/dist/src/{responses-C57h4gaW.js → responses-CI7uikKQ.js} +6 -6
- package/dist/src/{responses-B9ygvEC-.cjs → responses-DRLyW4Lj.cjs} +6 -6
- package/dist/src/{responses-CXKL6TPn.js → responses-DxFUQTN2.js} +6 -6
- package/dist/src/{responses-CTfu1ToN.js → responses-JNrMb3zS.js} +6 -6
- package/dist/src/{sagemaker-DHdeSsnJ.js → sagemaker-5AwedTwq.js} +9 -9
- package/dist/src/{sagemaker-CHL8TZFs.js → sagemaker-B5yQiSKh.js} +9 -9
- package/dist/src/{sagemaker-DdVGF_UD.cjs → sagemaker-C3aoiFup.cjs} +9 -9
- package/dist/src/{sagemaker-DUjuHnmj.js → sagemaker-XmAlwYoN.js} +9 -9
- package/dist/src/{scanner-BdoS5ILQ.js → scanner-BdEduFjO.js} +5 -5
- package/dist/src/server/index.js +214 -24
- package/dist/src/{server-B8UpdwtX.cjs → server-B3QXCltR.cjs} +3 -3
- package/dist/src/{server-DaonK4kI.js → server-Ctq0NOMp.js} +3 -3
- package/dist/src/{server-Ds_P02x6.js → server-D0pdY_yM.js} +4 -4
- package/dist/src/{server-CYxCnoVw.js → server-DMCug-jv.js} +4 -4
- package/dist/src/server-Ty5m26Vh.js +3 -0
- package/dist/src/{shared-BavzGCp0.js → shared-C-G3NQ1-.js} +7 -7
- package/dist/src/{shared-D_0FXjLS.js → shared-CnrYC0Dk.js} +7 -7
- package/dist/src/{shared-DY3IzJlT.cjs → shared-D3PxrdDh.cjs} +7 -7
- package/dist/src/{shared-B3IkjkNV.js → shared-DHDR-oS4.js} +7 -7
- package/dist/src/{simulatedUser-CokouWJT.js → simulatedUser-AhNbPm55.js} +5 -5
- package/dist/src/{simulatedUser-DNiOb7YE.js → simulatedUser-DV977ZD0.js} +5 -5
- package/dist/src/{simulatedUser-BJabLGod.js → simulatedUser-Dq8cpKLQ.js} +5 -5
- package/dist/src/{simulatedUser-CPDlAc1R.cjs → simulatedUser-tAjEGnxH.cjs} +5 -5
- package/dist/src/{storage-CH8WC1r3.cjs → storage-C8WR4y77.cjs} +3 -3
- package/dist/src/{storage-D_qaZpfe.js → storage-CK2YYGUg.js} +3 -3
- package/dist/src/{storage-CLyYkZk-.js → storage-Nc_eXGrV.js} +4 -4
- package/dist/src/{storage-3dpIy6f2.js → storage-P9MrA5xv.js} +3 -3
- package/dist/src/{strategies-2Q_uZxBs.cjs → strategies-B6Y6G9UV.cjs} +8 -8
- package/dist/src/{strategies-DVDC487a.js → strategies-CaefFyHy.js} +9 -9
- package/dist/src/{strategies-BuIPOuYL.js → strategies-DE3UN_VH.js} +8 -8
- package/dist/src/telemetry-Bbd-BlA7.js +3 -0
- package/dist/src/{telemetry-Bh3HJU7r.js → telemetry-C7v0I4YX.js} +3 -3
- package/dist/src/{telemetry-B-NTbvDj.js → telemetry-CTYOje0d.js} +3 -3
- package/dist/src/{telemetry-3fTnWcSU.js → telemetry-CvJEPKK6.js} +3 -3
- package/dist/src/{telemetry-Be4rklbJ.cjs → telemetry-hDovhwWp.cjs} +3 -3
- package/dist/src/{tracingOptions-CYCHrrQQ.cjs → tracingOptions-DGai7e5l.cjs} +2 -2
- package/dist/src/{tracingOptions-CLKNUvF4.js → tracingOptions-DL2vOmYS.js} +2 -2
- package/dist/src/{tracingOptions-CZpFCwyr.js → tracingOptions-e_c5TlHv.js} +2 -2
- package/dist/src/{tracingOptions-Bi477wlC.js → tracingOptions-xCBDF3nM.js} +2 -2
- package/dist/src/{transcription-CtLhhmYq.js → transcription-BCasJfFB.js} +4 -4
- package/dist/src/{transcription-BB9i78R3.js → transcription-BLOD9lN7.js} +4 -4
- package/dist/src/{transcription-BRd477OO.js → transcription-BOjp5wlV.js} +4 -4
- package/dist/src/{transcription-O3Nc-kEc.cjs → transcription-G6JwbB2P.cjs} +4 -4
- package/dist/src/{transform-D9nfyIts.cjs → transform-B92noEAU.cjs} +13 -3
- package/dist/src/{transform-DmSzMsCP.js → transform-CD9wrP31.js} +8 -4
- package/dist/src/{transform-CUPglRUI.js → transform-D7-gzzhD.js} +8 -4
- package/dist/src/{transform-CLzSt5fi.js → transform-D8kXC-nB.js} +8 -4
- package/dist/src/{util-CnqjxsAd.js → util-BTAyQmdN.js} +2 -2
- package/dist/src/{util-Bg-aMimr.js → util-BbMJxgff.js} +3 -3
- package/dist/src/{util-mVC_YCag.cjs → util-C62dCLH_.cjs} +3 -3
- package/dist/src/{util-16aq4oHW.js → util-CD4LxH5h.js} +4 -4
- package/dist/src/{util-CRYfgRHi.js → util-CHCKTSi5.js} +3 -3
- package/dist/src/{util-BIYgspDB.js → util-CKQ_tuWG.js} +4 -4
- package/dist/src/{util-Bptzcit_.js → util-CVI1oD-n.js} +3 -3
- package/dist/src/{util-DHG9r5sC.js → util-CcW4TZSn.js} +2 -2
- package/dist/src/{util-DJLHqGS5.js → util-Ci_vm5u1.js} +2 -2
- package/dist/src/{util-D9xyoiGG.js → util-CkLsVF3e.js} +3 -3
- package/dist/src/{util-BsKq95ai.js → util-CqfcdA-f.js} +3 -3
- package/dist/src/{util-tsZfE0-_.js → util-CubC5Tyt.js} +3 -3
- package/dist/src/{util-BHfVEhSs.cjs → util-cAY5C8xI.cjs} +3 -3
- package/dist/src/{util-DEMRW89M2.cjs → util-jOGJmpWE2.cjs} +4 -4
- package/dist/src/{util-CpS555tc2.js → util-s0NU5XTE2.js} +4 -4
- package/dist/src/{util-DJFl6JZF.cjs → util-tFLdovkA.cjs} +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/app/assets/Report-Cx3cN9Nt.js +0 -1
- package/dist/src/app/assets/index-D44ihjH5.css +0 -1
- package/dist/src/app/assets/index-DzyLrNWM.js +0 -413
- package/dist/src/cache-D_D5rsiE.js +0 -3
- package/dist/src/cloud-BmVZ8W_3.js +0 -3
- package/dist/src/codex-sdk-BTI9Fvnt.js +0 -3
- package/dist/src/evalResult-uL1BStGk.js +0 -3
- package/dist/src/evaluator-C2YPxWQP.js +0 -3
- package/dist/src/fetch-DAe6a2ih.js +0 -3
- package/dist/src/graders-BZe_w0E4.js +0 -3
- package/dist/src/quiverai-B8a5RqGP.js +0 -213
- package/dist/src/quiverai-BoHFg1Vw.js +0 -214
- package/dist/src/quiverai-DYyzyVTF.cjs +0 -213
- package/dist/src/quiverai-ktAnwSBA.js +0 -213
- package/dist/src/server-DY7p-P4-.js +0 -3
- 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-
|
|
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-
|
|
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-
|
|
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-
|
|
15
|
-
import { n as calculateOpenAIUsageCost } from "./billing-
|
|
16
|
-
import { a as getCloudDatabaseId, d as isCloudProvider, m as validateLinkedTargetId, r as storeMedia, t as getMediaStorage, u as getProviderFromCloud } from "./storage-
|
|
17
|
-
import { i as normalizeFinishReason, n as MCPClient, r as FINISH_REASON_MAP, t as OpenAiChatCompletionProvider } from "./chat-
|
|
18
|
-
import { C as getGoogleApiKey, D as resolveProjectId, E as loadCredentials,
|
|
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-
|
|
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-
|
|
23
|
-
import { a as isClaudeOpus47Model, i as getTokenUsage$3, n as calculateAnthropicCost, o as outputFromMessage, s as parseMessages, t as ANTHROPIC_MODELS } from "./util-
|
|
24
|
-
import { n as ResponsesProcessor, r as FunctionCallbackHandler, t as OpenAiResponsesProvider } from "./responses-
|
|
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-
|
|
27
|
-
import { a as novaOutputFromMessage, n as createBedrockCacheKeyHash, o as novaParseMessages, t as AwsBedrockGenericProvider } from "./base-
|
|
28
|
-
import { r as storeBlob } from "./blobs-
|
|
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-
|
|
31
|
-
import { t as OpenAiCompletionProvider } from "./completion-
|
|
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-
|
|
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
|
|
10671
|
-
if (contents[contentIndex].parts.length
|
|
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(
|
|
15022
|
+
async callApi(prompt, context, _options) {
|
|
15023
15023
|
try {
|
|
15024
15024
|
await this.initializationPromise;
|
|
15025
15025
|
let toolCallData;
|
|
15026
15026
|
try {
|
|
15027
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|