promptfoo 0.120.27 → 0.121.1
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/README.md +1 -1
- package/dist/src/{ListApp-8WOe2nT6.js → ListApp-Du7YVwj5.js} +2 -4
- package/dist/src/accounts-BgNJDBE6.js +206 -0
- package/dist/src/{accounts-Fl2J3_Fu.cjs → accounts-Bx-x3bmW.cjs} +77 -78
- package/dist/src/{accounts-DVINui-2.js → accounts-CMqkzrVf.js} +39 -34
- package/dist/src/{accounts-CPDRAMND.js → accounts-xrUGFA6n.js} +38 -33
- package/dist/src/{agentic-utils-D922n6mm.js → agentic-utils-BKIN5PKu.js} +9 -10
- package/dist/src/{agents-BO2n8Z0d.cjs → agents-B0f4HICh.cjs} +37 -40
- package/dist/src/{agents-BXLmVsxR.js → agents-C-dDThPK.js} +37 -37
- package/dist/src/{agents-DgJf2-ez.cjs → agents-CErsqg5U.cjs} +16 -17
- package/dist/src/{agents-BcsN_BgB.js → agents-CVIn-Utx.js} +16 -12
- package/dist/src/{agents-hqgSV-3o.js → agents-CXknwsFX.js} +37 -40
- package/dist/src/{agents-pMfppv9Z.js → agents-DeH4Gu94.js} +18 -18
- package/dist/src/{agents-BdUTAwi-.js → agents-Dy2YpZpa.js} +38 -41
- package/dist/src/{agents-DNvSH78i.js → agents-aF4-T121.js} +16 -20
- package/dist/src/{aimlapi-DOib86oE.js → aimlapi-BAGZDo5G.js} +16 -18
- package/dist/src/{aimlapi-DtgPI0nE.js → aimlapi-BNfTBexL.js} +15 -17
- package/dist/src/{aimlapi-DTPACCB1.js → aimlapi-DHRKlBEA.js} +15 -4
- package/dist/src/{aimlapi-BE_Tg9Fl.cjs → aimlapi-tg0Gkcvr.cjs} +15 -16
- package/dist/src/app/assets/index-BFCZg7hQ.js +439 -0
- package/dist/src/app/index.html +1 -1
- package/dist/src/{audio-BRYU0BFo.js → audio-BRODU0UK.js} +7 -9
- package/dist/src/{audio-Cwo68yZS.cjs → audio-BWeaWovU.cjs} +6 -7
- package/dist/src/{audio-BnRUGAm_.js → audio-CHQ4r-RV.js} +6 -5
- package/dist/src/{audio-MSRki4JU.js → audio-tf_NBjlC.js} +6 -8
- package/dist/src/{base-h961VXYk.js → base-B0tcrnq_.js} +11 -13
- package/dist/src/{base-XB2tDJrB.js → base-B4QJRyFS.js} +11 -13
- package/dist/src/{base-pGVmXNl4.cjs → base-DBtwl2FR.cjs} +36 -38
- package/dist/src/base-fEDN28WM.js +193 -0
- package/dist/src/{blobs-BM_e6hCa.js → blobs-BAU-dXan.js} +9 -12
- package/dist/src/{blobs-CR5C4Ihh.js → blobs-Bpg5rH6i.js} +9 -12
- package/dist/src/{blobs-B-KQAFhX.cjs → blobs-DvS-O6be.cjs} +34 -37
- package/dist/src/blobs-qTYm-1PY.js +236 -0
- package/dist/src/{cache-CIpsoBZR.js → cache-8XhNqPKW.js} +64 -67
- package/dist/src/cache-Bbn1Nyrd.cjs +5 -0
- package/dist/src/cache-BwsMSda7.js +6 -0
- package/dist/src/{cache-jsiwsAJv.js → cache-CG0SlR1d.js} +64 -66
- package/dist/src/{cache-BTVYfbka.cjs → cache-COish3-W.cjs} +114 -117
- package/dist/src/cache-D3eqDYGU.js +739 -0
- package/dist/src/{chat-D31K7C4u.cjs → chat-2K608PeQ.cjs} +20 -21
- package/dist/src/chat-BKm79wib.js +764 -0
- package/dist/src/{chat-B84t99NW.js → chat-CM_kyI8B.js} +20 -9
- package/dist/src/{chat-BcPjZXIp.js → chat-CRWNNq73.js} +41 -44
- package/dist/src/{chat-CcUCysjU.js → chat-CznLWr_D.js} +41 -44
- package/dist/src/{chat-DwWifjxi.js → chat-DHMH-N64.js} +20 -22
- package/dist/src/{chat-BE44YOc6.cjs → chat-DaqekjFr.cjs} +61 -64
- package/dist/src/{chat-DZM2GUHO.js → chat-DxysjBvt.js} +21 -23
- package/dist/src/{chatkit-D67HS_0b.js → chatkit-65VXf5SR.js} +58 -58
- package/dist/src/{chatkit-DAB_qfzI.js → chatkit-Be-Q-a9F.js} +58 -60
- package/dist/src/{chatkit-Biqb_wsD.js → chatkit-BxFvW8KY.js} +58 -60
- package/dist/src/{chatkit-PGG4ZYIn.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
- package/dist/src/chunk-DEq-mXcV.js +15 -0
- package/dist/src/chunk-DRamLcfz.js +16 -0
- package/dist/src/{claude-agent-sdk-SVM6AdBu.js → claude-agent-sdk-BLTu0WBO.js} +31 -31
- package/dist/src/{claude-agent-sdk-C9SiaQub.cjs → claude-agent-sdk-CJH22shf.cjs} +31 -28
- package/dist/src/{claude-agent-sdk-C-IOTPfo.js → claude-agent-sdk-D6_k9FKA.js} +31 -29
- package/dist/src/{claude-agent-sdk-CiluSyW1.js → claude-agent-sdk-Dy5lT-Tx.js} +33 -20
- package/dist/src/{cloud-CZ-q9Ier.js → cloud-Bc9526yV.js} +7 -9
- package/dist/src/cloud-DmE0EwsY.js +4 -0
- package/dist/src/{cloudflare-ai-BahKHyhh.js → cloudflare-ai-C9r2sRhw.js} +16 -18
- package/dist/src/{cloudflare-ai-Dxyt50Nl.js → cloudflare-ai-CWWJCRim.js} +16 -4
- package/dist/src/{cloudflare-ai-Dfahv5SY.cjs → cloudflare-ai-ClWSdor4.cjs} +16 -17
- package/dist/src/{cloudflare-ai-v_qZD6_q.js → cloudflare-ai-ICsOuD-z.js} +17 -19
- package/dist/src/{cloudflare-gateway-BPWoZIzJ.cjs → cloudflare-gateway-C2_-KG5o.cjs} +21 -22
- package/dist/src/{cloudflare-gateway-Bi_FpOFy.js → cloudflare-gateway-D6O7AlYb.js} +23 -23
- package/dist/src/{cloudflare-gateway-btS7h1OZ.js → cloudflare-gateway-D6xFc5pa.js} +21 -25
- package/dist/src/{cloudflare-gateway-C0guUNwk.js → cloudflare-gateway-pXGHxJ47.js} +26 -14
- package/dist/src/{codex-sdk-DSxAnbfT.js → codex-sdk-C6UMlxwV.js} +28 -29
- package/dist/src/{codex-sdk-IYVi9fuM.js → codex-sdk-DUwKWezN.js} +28 -27
- package/dist/src/{codex-sdk-DulY0ZRq.js → codex-sdk-GGAw0qbD.js} +28 -29
- package/dist/src/{codex-sdk-DFKMtAyf.cjs → codex-sdk-fAO0c3yA.cjs} +28 -29
- package/dist/src/{cometapi-DkNBMk0G.js → cometapi-BasUi7-_.js} +17 -19
- package/dist/src/{cometapi-DzrR3SR_.js → cometapi-Bbjp5V4x.js} +16 -4
- package/dist/src/{cometapi-C9EEpJzT.js → cometapi-DkXrKi5z.js} +21 -24
- package/dist/src/{cometapi-DIO64tf4.cjs → cometapi-vY6aDZgo.cjs} +21 -22
- package/dist/src/{completion-CG29bfKX.js → completion-6Mx_iXxK.js} +11 -13
- package/dist/src/{completion-Bgf1VJoq.js → completion-C5rtR_9P.js} +11 -13
- package/dist/src/{completion-CCRT4kX1.cjs → completion-CDOouNzq.cjs} +21 -23
- package/dist/src/completion-C_P3ypkJ.js +120 -0
- package/dist/src/{createHash-Dw_iLu31.js → createHash-CTQmL3G2.js} +2 -3
- package/dist/src/{createHash-CYQy4YeL.cjs → createHash-CfZSc0b4.cjs} +13 -14
- package/dist/src/{createHash-CJcfskIZ.js → createHash-Da8fMwqB.js} +2 -3
- package/dist/src/createHash-DmPQkvBh.js +15 -0
- package/dist/src/{docker-D-ayp2FW.js → docker-5KcG-_86.js} +18 -20
- package/dist/src/{docker-DNcLR4Ig.cjs → docker-BwsKwxFs.cjs} +18 -19
- package/dist/src/{docker-egERKxCF.js → docker-CZnqU1XV.js} +18 -7
- package/dist/src/{docker-B81N0t4e.js → docker-DzxyDPIj.js} +19 -21
- package/dist/src/entrypoint.js +2 -3
- package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
- package/dist/src/{esm-B9dPm_BF.js → esm-C03C-mv3.js} +17 -20
- package/dist/src/{esm-D2pZ87fL.js → esm-CaIwzWR5.js} +18 -21
- package/dist/src/esm-Cd1AjG1D.js +379 -0
- package/dist/src/{esm-Ct-Joyue.cjs → esm-CnNt7sI4.cjs} +47 -49
- package/dist/src/eval-17JizQIv.js +15 -0
- package/dist/src/{eval-C-Nr6wX_.js → eval-DmFyWU7i.js} +47 -54
- package/dist/src/{evalResult-4BzI2tmj.js → evalResult-CDQiuUuf.js} +16 -12
- package/dist/src/{evalResult-DXMWJ3sx.js → evalResult-CTG2AHOS.js} +10 -11
- package/dist/src/evalResult-Cqj8pldJ.js +12 -0
- package/dist/src/{evalResult-CX8wQecI.cjs → evalResult-Dap2CekP.cjs} +20 -21
- package/dist/src/evalResult-DvcJAWJU.cjs +10 -0
- package/dist/src/evalResult-Hftn-S_i.js +10 -0
- package/dist/src/evaluator-B2CFNt-P.js +36 -0
- package/dist/src/{evaluator-8aGyV12L.js → evaluator-DPFRbFIL.js} +201 -229
- package/dist/src/{extractor-CD5yKL-G.js → extractor-CFG6bcWJ.js} +22 -24
- package/dist/src/{extractor-C031XmTA.cjs → extractor-DX36oYEv.cjs} +37 -39
- package/dist/src/{extractor-V5x_m1i0.js → extractor-M67RUtg6.js} +22 -24
- package/dist/src/extractor-YMU_Gvt8.js +374 -0
- package/dist/src/{fetch-D3OHf-lV.js → fetch-4M3YRaqL.js} +40 -45
- package/dist/src/fetch-60Gzydls.js +777 -0
- package/dist/src/{fetch-CXZI9RRr.js → fetch-BMv0O527.js} +23 -35
- package/dist/src/{fetch-BmbD-v1L.cjs → fetch-BxUk8odA.cjs} +244 -277
- package/dist/src/fetch-KV5kNASw.js +5 -0
- package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
- package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
- package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
- package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
- package/dist/src/{formatDuration-CdevI3An.js → formatDuration-DgBVMN65.js} +2 -2
- package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
- package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
- package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
- package/dist/src/{genaiTracer-Dres3qrN.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
- package/dist/src/graders-Bu0H9nXi.js +32 -0
- package/dist/src/{graders-DTeBrzWp.js → graders-CHO8EPM4.js} +349 -397
- package/dist/src/graders-Cfhkvx-e.js +34 -0
- package/dist/src/{graders--1y2u9HO.js → graders-CpdqD9PI.js} +349 -397
- package/dist/src/graders-DClJVpGP.cjs +32 -0
- package/dist/src/{graders-DohM2dir.cjs → graders-DOXycdlG.cjs} +684 -732
- package/dist/src/graders-DcnJsrMO.js +32 -0
- package/dist/src/graders-R9rYUM0d.js +13466 -0
- package/dist/src/{image-C3wHC9_h.js → image-BmEZqVmk.js} +9 -10
- package/dist/src/{image-O1u4bCFg.js → image-CBBVXWuT.js} +9 -10
- package/dist/src/{image-DpKl2F15.cjs → image-CDLQOcqT.cjs} +6 -7
- package/dist/src/{image-DmE-niFE.js → image-DJEvKveK.js} +6 -5
- package/dist/src/{image-CuKHuccK.cjs → image-DTedmQPg.cjs} +29 -30
- package/dist/src/{image-B0U4Hqll.js → image-gvmivTEe.js} +7 -9
- package/dist/src/image-pAX56tPG.js +257 -0
- package/dist/src/{image-DNEIf_aI.js → image-tL5hIOFh.js} +6 -8
- package/dist/src/index.cjs +605 -689
- package/dist/src/index.d.cts +11 -7
- package/dist/src/index.d.ts +11 -3
- package/dist/src/index.js +570 -658
- package/dist/src/{interactiveCheck-Bxj1Swex.js → interactiveCheck-BgLZUIt3.js} +7 -8
- package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
- package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
- package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
- package/dist/src/invariant-vgHWClmd.js +25 -0
- package/dist/src/{knowledgeBase-Be_zyW4L.js → knowledgeBase-CLJybhnF.js} +16 -16
- package/dist/src/{knowledgeBase-CEzQobWX.js → knowledgeBase-CoU-UQBg.js} +14 -9
- package/dist/src/{knowledgeBase-BZ41IFwq.js → knowledgeBase-DjWPVqSb.js} +14 -18
- package/dist/src/{knowledgeBase-D-5BMXlr.cjs → knowledgeBase-wkxuRFhA.cjs} +14 -15
- package/dist/src/{litellm-DnbRJ2if.js → litellm-B9Hysuri.js} +16 -18
- package/dist/src/{litellm-CRDqPhNI.js → litellm-CTfa0hqi.js} +15 -17
- package/dist/src/{litellm-hUSNM_M2.cjs → litellm-NYpQ8RQu.cjs} +15 -16
- package/dist/src/{litellm-9vR8zpfU.js → litellm-ePxtr9F1.js} +15 -4
- package/dist/src/{logger-CG1uZPbQ.js → logger-CT3IKMKA.js} +10 -29
- package/dist/src/{logger-B7sBeGa0.cjs → logger-Cp1GPUjj.cjs} +152 -180
- package/dist/src/logger-DLcq4dWf.js +713 -0
- package/dist/src/{logger-LSBxlt7a.js → logger-KkObSCzq.js} +13 -31
- package/dist/src/{luma-ray-Hm3d6VJE.cjs → luma-ray-B0GGNRc1.cjs} +20 -21
- package/dist/src/{luma-ray-drvgdpP9.js → luma-ray-BE2mOt6N.js} +20 -13
- package/dist/src/{luma-ray-4blv9iZ2.js → luma-ray-BW9IRGIc.js} +22 -21
- package/dist/src/{luma-ray-B2__8lYH.js → luma-ray-Cm1KZBhs.js} +20 -23
- package/dist/src/main.js +1170 -1321
- package/dist/src/{messages-XhiwCbi4.cjs → messages-1JrJs91T.cjs} +32 -34
- package/dist/src/{messages-CGPPidQr.js → messages-1x9atZmP.js} +22 -24
- package/dist/src/{messages-Uee41Mj5.js → messages-BLbWdsyt.js} +22 -24
- package/dist/src/messages-D8EA0oDc.js +240 -0
- package/dist/src/{meteor-BYykdXrV.js → meteor-44VjEACX.js} +3 -4
- package/dist/src/{meteor-CsopaHrH.js → meteor-D-SotUw9.js} +3 -4
- package/dist/src/{meteor-e-E-2vVl.cjs → meteor-DLZZ3osF.cjs} +3 -4
- package/dist/src/{meteor-C8lGP6P4.js → meteor-DUiCJRC-.js} +3 -4
- package/dist/src/{modelslab-yKz-ZNB4.js → modelslab-C1OLRmVX.js} +17 -10
- package/dist/src/{modelslab-E9gO-bYd.js → modelslab-CqXBy3U8.js} +18 -20
- package/dist/src/{modelslab-lUVW0cmB.cjs → modelslab-DcOSFwKh.cjs} +17 -18
- package/dist/src/{modelslab-ClBkr8_9.js → modelslab-X5-4LroM.js} +17 -19
- package/dist/src/{nova-reel-Dk8jNpId.js → nova-reel-BgS1ZWuK.js} +20 -13
- package/dist/src/{nova-reel-u2eF2Cxm.js → nova-reel-D2ZkOSyr.js} +22 -21
- package/dist/src/{nova-reel-D8CuO6QH.cjs → nova-reel-D9xfaMBs.cjs} +20 -21
- package/dist/src/{nova-reel-P9bwvtYX.js → nova-reel-DihqLeol.js} +20 -23
- package/dist/src/{nova-sonic-Ds1C-dpm.cjs → nova-sonic-DVu3mMIy.cjs} +30 -31
- package/dist/src/{nova-sonic-CK2rAiKi.js → nova-sonic-DezhVUYT.js} +30 -26
- package/dist/src/{nova-sonic-BaqWlkds.js → nova-sonic-P-CdUMlV.js} +30 -31
- package/dist/src/{nova-sonic-yZapPLv7.js → nova-sonic-Q3BOJeig.js} +31 -32
- package/dist/src/{openai-DUFopMrH.cjs → openai-Cuif0GEt.cjs} +8 -9
- package/dist/src/{openai-PblZ3jUE.js → openai-DElQ-fPX.js} +3 -4
- package/dist/src/{openai-CcN1B8Sb.js → openai-DhbB7eWK.js} +3 -4
- package/dist/src/openai-j-sE2O7r.js +44 -0
- package/dist/src/{openclaw-A-3_loM7.js → openclaw-BiSZPL7J.js} +20 -14
- package/dist/src/{openclaw-COn6QzDi.js → openclaw-Bv1DINsX.js} +20 -27
- package/dist/src/{openclaw-a3lylB-V.js → openclaw-D1D_ej1z.js} +21 -28
- package/dist/src/{openclaw-B6qqDr_u.cjs → openclaw-DAfWQn-o.cjs} +33 -39
- package/dist/src/opencode-sdk-C7m-wRfI.js +560 -0
- package/dist/src/opencode-sdk-CfaLN8PY.cjs +564 -0
- package/dist/src/opencode-sdk-D95s6SnR.js +562 -0
- package/dist/src/opencode-sdk-DxUPkLT7.js +560 -0
- package/dist/src/{otlpReceiver-oyf5wLGC.js → otlpReceiver--AIRW_S4.js} +53 -51
- package/dist/src/{otlpReceiver-BmmTiMjA.js → otlpReceiver-Bn5wGB1v.js} +53 -55
- package/dist/src/{otlpReceiver-lXsYVbpj.cjs → otlpReceiver-Diec4cln.cjs} +53 -55
- package/dist/src/{otlpReceiver-94URx7UW.js → otlpReceiver-g3ByGaXs.js} +53 -55
- package/dist/src/{providerRegistry-Cq_JK_CJ.js → providerRegistry-B0RUOLI_.js} +7 -8
- package/dist/src/{providerRegistry-DSSHjMKf.js → providerRegistry-CD8MEar9.js} +7 -8
- package/dist/src/{providerRegistry-CvHEVJad.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
- package/dist/src/providerRegistry-DM8rZYol.js +45 -0
- package/dist/src/providers-B3HvufyI.js +33246 -0
- package/dist/src/{providers-BnFpbY_s.js → providers-BKRJTjBz.js} +1536 -1669
- package/dist/src/providers-C1rOSHiR.js +32 -0
- package/dist/src/{providers-Iil64vk9.js → providers-CFLy1_ji.js} +1543 -1676
- package/dist/src/{providers-DHbjzW2e.cjs → providers-CFu-TZl-.cjs} +1896 -2029
- package/dist/src/providers-CxmDwEFf.cjs +31 -0
- package/dist/src/providers-Dodakqr0.js +30 -0
- package/dist/src/providers-GIQ2TcsA.js +30 -0
- package/dist/src/{pythonUtils-CcT5LH1M.js → pythonUtils-C3py6GC1.js} +18 -19
- package/dist/src/{pythonUtils-DBbuI3QJ.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
- package/dist/src/{pythonUtils-hZ8LeQLv.js → pythonUtils-D5nxkQ0P.js} +18 -19
- package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
- package/dist/src/{quiverai-BuI0tE39.js → quiverai-C2jVwbH1.js} +8 -7
- package/dist/src/{quiverai-DCGSZt4U.js → quiverai-CI6gYJVI.js} +8 -10
- package/dist/src/{quiverai-DiMVJQDz.cjs → quiverai-CLkWkyZc.cjs} +8 -9
- package/dist/src/{quiverai-fQNkExW4.js → quiverai-MHSxbmmZ.js} +9 -11
- package/dist/src/{render-Dj1smHEb.js → render-Drod8m7K.js} +4 -5
- package/dist/src/{responses-DOAFFENS.js → responses-BKqJmhhc.js} +22 -25
- package/dist/src/{responses-CxzoQoBe.js → responses-CGw0DCzh.js} +22 -25
- package/dist/src/responses-jxdehPkC.js +660 -0
- package/dist/src/{responses-ghR3IOfy.cjs → responses-tD4Bd4dc.cjs} +37 -40
- package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
- package/dist/src/{rubyUtils-CwbGmgYN.js → rubyUtils-BUVePouc.js} +27 -20
- package/dist/src/rubyUtils-BcuGX77l.js +222 -0
- package/dist/src/{rubyUtils-DudlFZed.js → rubyUtils-Boc4HZzX.js} +18 -19
- package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
- package/dist/src/{rubyUtils-C8MhKGHb.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
- package/dist/src/{sagemaker-gmskuyre.js → sagemaker-BK4Zb993.js} +75 -70
- package/dist/src/{sagemaker-DuM71dVU.js → sagemaker-BfiWTmvn.js} +77 -77
- package/dist/src/{sagemaker-77zbJ2Q2.cjs → sagemaker-CcQHM1jV.cjs} +75 -76
- package/dist/src/{sagemaker-CcxhlOAR.js → sagemaker-D2Q1c-sD.js} +75 -79
- package/dist/src/{scanner-DJYiSXQj.js → scanner-J8CA3LsV.js} +100 -121
- package/dist/src/server/index.js +5505 -67416
- package/dist/src/{server-B5v33lvE.cjs → server-B0PPuDw-.cjs} +57 -67
- package/dist/src/server-B1vi21hA.js +7 -0
- package/dist/src/{server-RV_i_YX5.js → server-BC7XJFgr.js} +19 -24
- package/dist/src/server-Cm9Kai_h.cjs +5 -0
- package/dist/src/{server-BJ4m4f1D.js → server-DbFphssR.js} +26 -29
- package/dist/src/server-OAs3nBRT.js +229 -0
- package/dist/src/{signal-BW33JuId.js → signal-BOTbd53Z.js} +9 -11
- package/dist/src/{slack-DEURelTy.cjs → slack-BmVAVGaK.cjs} +7 -8
- package/dist/src/{slack-BQYeW9L3.js → slack-DCUPTzS2.js} +8 -8
- package/dist/src/{slack-BB6yuZzp.js → slack-DOdy_kyv.js} +7 -8
- package/dist/src/{slack-2pRrhhgJ.js → slack-DXMKtA-f.js} +7 -9
- package/dist/src/store-BNmZ1KAz.cjs +5 -0
- package/dist/src/{store-D7CgQzAR.cjs → store-BSc-TF2w.cjs} +44 -45
- package/dist/src/store-BltJg2cd.js +6 -0
- package/dist/src/{store-s3SftUwF.js → store-D1tv90v3.js} +34 -35
- package/dist/src/{store-DJNsD1iC.js → store-DQLEjuEO.js} +40 -36
- package/dist/src/store-Ub2vaGJ1.js +228 -0
- package/dist/src/{tables-DfTsNN7X.js → tables-5EvT_Bwn.js} +19 -21
- package/dist/src/{tables-BKTmd6u7.cjs → tables-C7K-XKWp.cjs} +89 -91
- package/dist/src/{tables-DMegD0Xf.js → tables-D36WTqKX.js} +21 -23
- package/dist/src/tables-xKANLRBD.js +288 -0
- package/dist/src/telemetry-5BCRNBbe.cjs +5 -0
- package/dist/src/{telemetry-BedSm-bZ.js → telemetry-C15ziL8u.js} +17 -14
- package/dist/src/{telemetry--WAdAfVi.js → telemetry-C2YDkUQH.js} +11 -13
- package/dist/src/{telemetry-DQgVBCAb.cjs → telemetry-CbrnxHp_.cjs} +21 -24
- package/dist/src/telemetry-D4W5hboe.js +7 -0
- package/dist/src/telemetry-DMb2Mpfm.js +171 -0
- package/dist/src/{text-oiSbwSOI.js → text-B_UCRPp2.js} +2 -2
- package/dist/src/{text-oKzCBnK6.cjs → text-CW1cyrwj.cjs} +12 -13
- package/dist/src/{text-B_IrO4GZ.js → text-Db-Wt2u2.js} +2 -2
- package/dist/src/text-TIv0QYnd.js +22 -0
- package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
- package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
- package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
- package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
- package/dist/src/{transcription-BO1AHegO.cjs → transcription-CL78qbOU.cjs} +14 -15
- package/dist/src/{transcription-mYS9vd5v.js → transcription-DAtxHhAM.js} +14 -7
- package/dist/src/{transcription-X2-B4vkX.js → transcription-LNZTNUUL.js} +14 -16
- package/dist/src/{transcription-lzBLiTFJ.js → transcription-QHh3AH6Z.js} +15 -17
- package/dist/src/{transform-DeGlxb0D.js → transform-Cgi24fJ7.js} +39 -47
- package/dist/src/{transform-B1Hi5lWS.cjs → transform-CzK1Q0zl.cjs} +24 -26
- package/dist/src/{transform-CYDILYDe.js → transform-DECvGmzp.js} +15 -13
- package/dist/src/{transform-Dfl89yi4.js → transform-DGLazrMm.js} +39 -47
- package/dist/src/transform-DGxXocjk.js +1506 -0
- package/dist/src/{transform-D5PjiWiZ.cjs → transform-DOcQeLld.cjs} +179 -187
- package/dist/src/transform-DTGDnAzW.js +6 -0
- package/dist/src/{transform-BEgStbHK.js → transform-DilY9wbS.js} +10 -12
- package/dist/src/transform-aa6tmVpZ.js +216 -0
- package/dist/src/transform-m3qNw4KP.cjs +5 -0
- package/dist/src/{transformersAvailability-SZnTS3pJ.js → transformersAvailability-CEVM2GNQ.js} +2 -2
- package/dist/src/{transformersAvailability-D-glmEy7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
- package/dist/src/{transformersAvailability-CjeFXhuJ.js → transformersAvailability-D6c6ROpT.js} +2 -2
- package/dist/src/{types-CXQduE9o.js → types-CH3Ge2sE.js} +30 -90
- package/dist/src/{types-C5hEkb-x.js → types-CLKiCBW3.js} +25 -89
- package/dist/src/types-CN_TZ2GJ.js +3260 -0
- package/dist/src/{types-DWNf48sT.cjs → types-LJ0r3wbR.cjs} +500 -564
- package/dist/src/util-5cB-L7U3.js +1430 -0
- package/dist/src/util-6-GqIvzS.js +599 -0
- package/dist/src/{util-CoQjmE3u.js → util-B7T3SiBS.js} +4 -5
- package/dist/src/{util-D9eLdGfa.js → util-Betm42rL.js} +5 -6
- package/dist/src/{util-Bm_-UMD_.js → util-C-PPYSMq.js} +5 -6
- package/dist/src/{util-CyUdMzV0.cjs → util-CchiqXh_.cjs} +34 -35
- package/dist/src/{util-Du96oyYS.js → util-DaWTWKBK.js} +4 -5
- package/dist/src/{util-1wWM599Z.cjs → util-Db0a0AFH.cjs} +50 -51
- package/dist/src/{util-DQ984syk.js → util-Dlz_Wvgm.js} +37 -48
- package/dist/src/{util-_h4pVqrz.js → util-YT5HPZaS.js} +37 -48
- package/dist/src/{util-aLhtl3fe.cjs → util-Yz-1aEhW.cjs} +209 -220
- package/dist/src/util-ZZH-3QZz.js +293 -0
- package/dist/src/{utils-BjLy-Q72.cjs → utils-Cz9qXqII.cjs} +29 -32
- package/dist/src/{utils-CFMn2yHW.js → utils-XiOAgly5.js} +4 -7
- package/dist/src/utils-dLokC-eR.js +94 -0
- package/dist/src/{utils-DvWMzuMx.js → utils-f2-Moju7.js} +4 -7
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -30
- package/dist/src/app/assets/index-B2D0bCSI.js +0 -439
- package/dist/src/app/tsconfig.app.tsbuildinfo +0 -1
- package/dist/src/cache-ChPcurj7.js +0 -6
- package/dist/src/cache-VVu_W-yg.js +0 -8
- package/dist/src/cache-YLNCFEM2.cjs +0 -6
- package/dist/src/chunk-DHDDz29n.js +0 -22
- package/dist/src/chunk-FhC4c-0y.js +0 -21
- package/dist/src/cloud-BndfXy4H.js +0 -5
- package/dist/src/eval-BhHvMY82.js +0 -17
- package/dist/src/evalResult-Dq2gFNQY.js +0 -12
- package/dist/src/evalResult-nmcP5VKH.cjs +0 -12
- package/dist/src/evalResult-trqZjVYh.js +0 -14
- package/dist/src/evaluator-CnfPstzT.js +0 -39
- package/dist/src/fetch-IDPDue6F.cjs +0 -4
- package/dist/src/fetch-hKJ-It8q.js +0 -6
- package/dist/src/fetch-ouKnrWK-.js +0 -4
- package/dist/src/graders-CQn7WUsd.cjs +0 -34
- package/dist/src/graders-DC6QAbpW.js +0 -35
- package/dist/src/graders-DUWz3Y7j.js +0 -37
- package/dist/src/opencode-sdk-4bL9n-Gk.js +0 -382
- package/dist/src/opencode-sdk-BfC2zWcR.js +0 -376
- package/dist/src/opencode-sdk-DMJyuwMg.js +0 -380
- package/dist/src/opencode-sdk-Da-9adza.cjs +0 -383
- package/dist/src/providers-CsXB2Ix-.js +0 -35
- package/dist/src/providers-DO8ltjLC.js +0 -33
- package/dist/src/providers-Dtq-xnXd.cjs +0 -33
- package/dist/src/rubyUtils-BUbcND2f.js +0 -6
- package/dist/src/rubyUtils-Cr55X_KE.js +0 -5
- package/dist/src/rubyUtils-DlIiqoYo.cjs +0 -5
- package/dist/src/server-C2eQH4Gu.js +0 -6
- package/dist/src/server-CXWycu7H.cjs +0 -6
- package/dist/src/server-Q6OGlxxT.js +0 -8
- package/dist/src/store-B3EDO9Q3.js +0 -7
- package/dist/src/store-Dl9F8aw5.js +0 -6
- package/dist/src/store-SnrGrlt9.cjs +0 -6
- package/dist/src/telemetry-BGhiPZtl.js +0 -8
- package/dist/src/telemetry-CFfiYan6.cjs +0 -6
- package/dist/src/telemetry-DHzEduxX.js +0 -6
- package/dist/src/transform-C1x1ZlMQ.cjs +0 -6
- package/dist/src/transform-DYHjFmQu.js +0 -8
- package/dist/src/transform-rmwJT5JQ.js +0 -7
- package/dist/src/transformersAvailability-eJooj0gX.js +0 -35
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { b as getEnvBool, o as
|
|
3
|
-
import { c as isLoggedIntoCloud } from "./accounts-
|
|
4
|
-
import { a as cloudConfig } from "./cloud-
|
|
5
|
-
import {
|
|
6
|
-
|
|
2
|
+
import { b as getEnvBool, o as logger } from "./logger-KkObSCzq.js";
|
|
3
|
+
import { c as isLoggedIntoCloud } from "./accounts-CMqkzrVf.js";
|
|
4
|
+
import { a as cloudConfig } from "./cloud-Bc9526yV.js";
|
|
5
|
+
import { i as storeBlob, r as recordBlobReference } from "./blobs-BAU-dXan.js";
|
|
7
6
|
//#region src/blobs/remoteUpload.ts
|
|
8
7
|
function buildRemoteUrl() {
|
|
9
8
|
const baseUrl = cloudConfig.getApiHost();
|
|
@@ -12,7 +11,7 @@ function buildRemoteUrl() {
|
|
|
12
11
|
try {
|
|
13
12
|
return new URL("/api/blobs", baseUrl).toString();
|
|
14
13
|
} catch (error) {
|
|
15
|
-
|
|
14
|
+
logger.debug("[RemoteBlob] Invalid remote blob URL", {
|
|
16
15
|
error: error instanceof Error ? error.message : String(error),
|
|
17
16
|
baseUrl
|
|
18
17
|
});
|
|
@@ -27,7 +26,7 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
27
26
|
const apiKey = cloudConfig.getApiKey();
|
|
28
27
|
if (!url || !apiKey) return null;
|
|
29
28
|
try {
|
|
30
|
-
const { fetchWithProxy } = await import("./fetch-
|
|
29
|
+
const { fetchWithProxy } = await import("./fetch-KV5kNASw.js");
|
|
31
30
|
const response = await fetchWithProxy(url, {
|
|
32
31
|
method: "POST",
|
|
33
32
|
headers: {
|
|
@@ -41,12 +40,12 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
41
40
|
})
|
|
42
41
|
});
|
|
43
42
|
if (response.status === 404 || response.status === 400) {
|
|
44
|
-
|
|
43
|
+
logger.debug("[RemoteBlob] Remote blob upload unavailable", { status: response.status });
|
|
45
44
|
return null;
|
|
46
45
|
}
|
|
47
46
|
if (!response.ok) {
|
|
48
47
|
const text = await response.text();
|
|
49
|
-
|
|
48
|
+
logger.debug("[RemoteBlob] Failed to upload blob", {
|
|
50
49
|
status: response.status,
|
|
51
50
|
statusText: response.statusText,
|
|
52
51
|
body: text
|
|
@@ -55,16 +54,15 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
55
54
|
}
|
|
56
55
|
const data = await response.json();
|
|
57
56
|
if (!data?.ref?.hash) {
|
|
58
|
-
|
|
57
|
+
logger.debug("[RemoteBlob] Remote upload returned malformed response");
|
|
59
58
|
return null;
|
|
60
59
|
}
|
|
61
60
|
return data;
|
|
62
61
|
} catch (error) {
|
|
63
|
-
|
|
62
|
+
logger.debug("[RemoteBlob] Error uploading blob", { error: error instanceof Error ? error.message : String(error) });
|
|
64
63
|
return null;
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
|
-
|
|
68
66
|
//#endregion
|
|
69
67
|
//#region src/blobs/extractor.ts
|
|
70
68
|
const BLOB_URI_REGEX = /^promptfoo:\/\/blob\/([a-f0-9]{64})$/i;
|
|
@@ -82,13 +80,13 @@ function extractBase64(value) {
|
|
|
82
80
|
mimeType
|
|
83
81
|
};
|
|
84
82
|
} catch (error) {
|
|
85
|
-
|
|
83
|
+
logger.warn("[BlobExtractor] Failed to parse base64 data URL", { error });
|
|
86
84
|
return null;
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
87
|
function shouldExternalize(buffer) {
|
|
90
88
|
const size = buffer.length;
|
|
91
|
-
return size >=
|
|
89
|
+
return size >= 1024 && size <= 52428800;
|
|
92
90
|
}
|
|
93
91
|
function getKindFromMimeType(mimeType) {
|
|
94
92
|
return mimeType.startsWith("audio/") ? "audio" : "image";
|
|
@@ -114,7 +112,7 @@ function normalizeAudioMimeType(format) {
|
|
|
114
112
|
};
|
|
115
113
|
if (mimeMap[formatLower]) return mimeMap[formatLower];
|
|
116
114
|
if (!/^[a-z0-9_-]+$/i.test(formatLower)) {
|
|
117
|
-
|
|
115
|
+
logger.warn("[BlobExtractor] Invalid audio format, using default", { format });
|
|
118
116
|
return "audio/wav";
|
|
119
117
|
}
|
|
120
118
|
return `audio/${formatLower}`;
|
|
@@ -131,7 +129,7 @@ function parseBinary(base64OrDataUrl, defaultMimeType) {
|
|
|
131
129
|
mimeType: defaultMimeType
|
|
132
130
|
};
|
|
133
131
|
} catch (error) {
|
|
134
|
-
|
|
132
|
+
logger.warn("[BlobExtractor] Failed to parse base64 data", { error });
|
|
135
133
|
return null;
|
|
136
134
|
}
|
|
137
135
|
}
|
|
@@ -152,7 +150,7 @@ async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, k
|
|
|
152
150
|
location,
|
|
153
151
|
kind
|
|
154
152
|
}).catch((error) => {
|
|
155
|
-
|
|
153
|
+
logger.debug("[BlobExtractor] Cloud upload failed (non-fatal)", {
|
|
156
154
|
error: error instanceof Error ? error.message : String(error),
|
|
157
155
|
hash: ref.hash
|
|
158
156
|
});
|
|
@@ -236,7 +234,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
236
234
|
blobRef: stored
|
|
237
235
|
};
|
|
238
236
|
mutated = true;
|
|
239
|
-
|
|
237
|
+
logger.debug("[BlobExtractor] Stored audio blob", {
|
|
240
238
|
...context,
|
|
241
239
|
hash: stored.hash
|
|
242
240
|
});
|
|
@@ -247,7 +245,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
247
245
|
const stored = await maybeStore(img.data, img.mimeType || "image/png", blobContext, `response.images[${idx}].data`, "image");
|
|
248
246
|
if (stored) {
|
|
249
247
|
mutated = true;
|
|
250
|
-
|
|
248
|
+
logger.debug("[BlobExtractor] Stored image blob", {
|
|
251
249
|
...context,
|
|
252
250
|
hash: stored.hash
|
|
253
251
|
});
|
|
@@ -284,7 +282,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
284
282
|
if (stored) {
|
|
285
283
|
next.output = stored.uri;
|
|
286
284
|
mutated = true;
|
|
287
|
-
|
|
285
|
+
logger.debug("[BlobExtractor] Stored output blob", {
|
|
288
286
|
...context,
|
|
289
287
|
hash: stored.hash
|
|
290
288
|
});
|
|
@@ -303,7 +301,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
303
301
|
storedUris.push(stored.uri);
|
|
304
302
|
jsonMutated = true;
|
|
305
303
|
mutated = true;
|
|
306
|
-
|
|
304
|
+
logger.debug("[BlobExtractor] Stored image blob from b64_json", {
|
|
307
305
|
...context,
|
|
308
306
|
hash: stored.hash
|
|
309
307
|
});
|
|
@@ -321,7 +319,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
321
319
|
}
|
|
322
320
|
}
|
|
323
321
|
} catch (err) {
|
|
324
|
-
|
|
322
|
+
logger.debug("[BlobExtractor] Failed to parse base64 JSON output", {
|
|
325
323
|
error: err instanceof Error ? err.message : String(err),
|
|
326
324
|
location: "response.output"
|
|
327
325
|
});
|
|
@@ -371,7 +369,7 @@ async function recordExistingBlobReferences(value, context, location) {
|
|
|
371
369
|
}
|
|
372
370
|
if (value && typeof value === "object") for (const [key, child] of Object.entries(value)) await recordExistingBlobReferences(child, context, location ? `${location}.${key}` : key);
|
|
373
371
|
}
|
|
374
|
-
|
|
375
372
|
//#endregion
|
|
376
373
|
export { isBlobStorageEnabled as n, shouldAttemptRemoteBlobUpload as r, extractAndStoreBinaryData as t };
|
|
377
|
-
|
|
374
|
+
|
|
375
|
+
//# sourceMappingURL=extractor-CFG6bcWJ.js.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
const require_logger = require(
|
|
2
|
-
const require_fetch = require(
|
|
3
|
-
const require_accounts = require(
|
|
4
|
-
const require_blobs = require(
|
|
5
|
-
|
|
1
|
+
const require_logger = require("./logger-Cp1GPUjj.cjs");
|
|
2
|
+
const require_fetch = require("./fetch-BxUk8odA.cjs");
|
|
3
|
+
const require_accounts = require("./accounts-Bx-x3bmW.cjs");
|
|
4
|
+
const require_blobs = require("./blobs-DvS-O6be.cjs");
|
|
6
5
|
//#region src/blobs/remoteUpload.ts
|
|
7
6
|
function buildRemoteUrl() {
|
|
8
7
|
const baseUrl = require_fetch.cloudConfig.getApiHost();
|
|
@@ -11,7 +10,7 @@ function buildRemoteUrl() {
|
|
|
11
10
|
try {
|
|
12
11
|
return new URL("/api/blobs", baseUrl).toString();
|
|
13
12
|
} catch (error) {
|
|
14
|
-
require_logger.
|
|
13
|
+
require_logger.logger.debug("[RemoteBlob] Invalid remote blob URL", {
|
|
15
14
|
error: error instanceof Error ? error.message : String(error),
|
|
16
15
|
baseUrl
|
|
17
16
|
});
|
|
@@ -26,7 +25,7 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
26
25
|
const apiKey = require_fetch.cloudConfig.getApiKey();
|
|
27
26
|
if (!url || !apiKey) return null;
|
|
28
27
|
try {
|
|
29
|
-
const { fetchWithProxy } = await Promise.resolve().then(() => require("./fetch-
|
|
28
|
+
const { fetchWithProxy } = await Promise.resolve().then(() => require("./fetch-BxUk8odA.cjs")).then((n) => n.fetch_exports);
|
|
30
29
|
const response = await fetchWithProxy(url, {
|
|
31
30
|
method: "POST",
|
|
32
31
|
headers: {
|
|
@@ -40,12 +39,12 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
40
39
|
})
|
|
41
40
|
});
|
|
42
41
|
if (response.status === 404 || response.status === 400) {
|
|
43
|
-
require_logger.
|
|
42
|
+
require_logger.logger.debug("[RemoteBlob] Remote blob upload unavailable", { status: response.status });
|
|
44
43
|
return null;
|
|
45
44
|
}
|
|
46
45
|
if (!response.ok) {
|
|
47
46
|
const text = await response.text();
|
|
48
|
-
require_logger.
|
|
47
|
+
require_logger.logger.debug("[RemoteBlob] Failed to upload blob", {
|
|
49
48
|
status: response.status,
|
|
50
49
|
statusText: response.statusText,
|
|
51
50
|
body: text
|
|
@@ -54,16 +53,15 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
54
53
|
}
|
|
55
54
|
const data = await response.json();
|
|
56
55
|
if (!data?.ref?.hash) {
|
|
57
|
-
require_logger.
|
|
56
|
+
require_logger.logger.debug("[RemoteBlob] Remote upload returned malformed response");
|
|
58
57
|
return null;
|
|
59
58
|
}
|
|
60
59
|
return data;
|
|
61
60
|
} catch (error) {
|
|
62
|
-
require_logger.
|
|
61
|
+
require_logger.logger.debug("[RemoteBlob] Error uploading blob", { error: error instanceof Error ? error.message : String(error) });
|
|
63
62
|
return null;
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
|
-
|
|
67
65
|
//#endregion
|
|
68
66
|
//#region src/blobs/extractor.ts
|
|
69
67
|
const BLOB_URI_REGEX = /^promptfoo:\/\/blob\/([a-f0-9]{64})$/i;
|
|
@@ -81,13 +79,13 @@ function extractBase64(value) {
|
|
|
81
79
|
mimeType
|
|
82
80
|
};
|
|
83
81
|
} catch (error) {
|
|
84
|
-
require_logger.
|
|
82
|
+
require_logger.logger.warn("[BlobExtractor] Failed to parse base64 data URL", { error });
|
|
85
83
|
return null;
|
|
86
84
|
}
|
|
87
85
|
}
|
|
88
86
|
function shouldExternalize(buffer) {
|
|
89
87
|
const size = buffer.length;
|
|
90
|
-
return size >=
|
|
88
|
+
return size >= 1024 && size <= 52428800;
|
|
91
89
|
}
|
|
92
90
|
function getKindFromMimeType(mimeType) {
|
|
93
91
|
return mimeType.startsWith("audio/") ? "audio" : "image";
|
|
@@ -113,7 +111,7 @@ function normalizeAudioMimeType(format) {
|
|
|
113
111
|
};
|
|
114
112
|
if (mimeMap[formatLower]) return mimeMap[formatLower];
|
|
115
113
|
if (!/^[a-z0-9_-]+$/i.test(formatLower)) {
|
|
116
|
-
require_logger.
|
|
114
|
+
require_logger.logger.warn("[BlobExtractor] Invalid audio format, using default", { format });
|
|
117
115
|
return "audio/wav";
|
|
118
116
|
}
|
|
119
117
|
return `audio/${formatLower}`;
|
|
@@ -130,7 +128,7 @@ function parseBinary(base64OrDataUrl, defaultMimeType) {
|
|
|
130
128
|
mimeType: defaultMimeType
|
|
131
129
|
};
|
|
132
130
|
} catch (error) {
|
|
133
|
-
require_logger.
|
|
131
|
+
require_logger.logger.warn("[BlobExtractor] Failed to parse base64 data", { error });
|
|
134
132
|
return null;
|
|
135
133
|
}
|
|
136
134
|
}
|
|
@@ -151,7 +149,7 @@ async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, k
|
|
|
151
149
|
location,
|
|
152
150
|
kind
|
|
153
151
|
}).catch((error) => {
|
|
154
|
-
require_logger.
|
|
152
|
+
require_logger.logger.debug("[BlobExtractor] Cloud upload failed (non-fatal)", {
|
|
155
153
|
error: error instanceof Error ? error.message : String(error),
|
|
156
154
|
hash: ref.hash
|
|
157
155
|
});
|
|
@@ -235,7 +233,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
235
233
|
blobRef: stored
|
|
236
234
|
};
|
|
237
235
|
mutated = true;
|
|
238
|
-
require_logger.
|
|
236
|
+
require_logger.logger.debug("[BlobExtractor] Stored audio blob", {
|
|
239
237
|
...context,
|
|
240
238
|
hash: stored.hash
|
|
241
239
|
});
|
|
@@ -246,7 +244,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
246
244
|
const stored = await maybeStore(img.data, img.mimeType || "image/png", blobContext, `response.images[${idx}].data`, "image");
|
|
247
245
|
if (stored) {
|
|
248
246
|
mutated = true;
|
|
249
|
-
require_logger.
|
|
247
|
+
require_logger.logger.debug("[BlobExtractor] Stored image blob", {
|
|
250
248
|
...context,
|
|
251
249
|
hash: stored.hash
|
|
252
250
|
});
|
|
@@ -283,7 +281,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
283
281
|
if (stored) {
|
|
284
282
|
next.output = stored.uri;
|
|
285
283
|
mutated = true;
|
|
286
|
-
require_logger.
|
|
284
|
+
require_logger.logger.debug("[BlobExtractor] Stored output blob", {
|
|
287
285
|
...context,
|
|
288
286
|
hash: stored.hash
|
|
289
287
|
});
|
|
@@ -302,7 +300,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
302
300
|
storedUris.push(stored.uri);
|
|
303
301
|
jsonMutated = true;
|
|
304
302
|
mutated = true;
|
|
305
|
-
require_logger.
|
|
303
|
+
require_logger.logger.debug("[BlobExtractor] Stored image blob from b64_json", {
|
|
306
304
|
...context,
|
|
307
305
|
hash: stored.hash
|
|
308
306
|
});
|
|
@@ -320,7 +318,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
320
318
|
}
|
|
321
319
|
}
|
|
322
320
|
} catch (err) {
|
|
323
|
-
require_logger.
|
|
321
|
+
require_logger.logger.debug("[BlobExtractor] Failed to parse base64 JSON output", {
|
|
324
322
|
error: err instanceof Error ? err.message : String(err),
|
|
325
323
|
location: "response.output"
|
|
326
324
|
});
|
|
@@ -370,24 +368,24 @@ async function recordExistingBlobReferences(value, context, location) {
|
|
|
370
368
|
}
|
|
371
369
|
if (value && typeof value === "object") for (const [key, child] of Object.entries(value)) await recordExistingBlobReferences(child, context, location ? `${location}.${key}` : key);
|
|
372
370
|
}
|
|
373
|
-
|
|
374
371
|
//#endregion
|
|
375
|
-
Object.defineProperty(exports,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
372
|
+
Object.defineProperty(exports, "extractAndStoreBinaryData", {
|
|
373
|
+
enumerable: true,
|
|
374
|
+
get: function() {
|
|
375
|
+
return extractAndStoreBinaryData;
|
|
376
|
+
}
|
|
380
377
|
});
|
|
381
|
-
Object.defineProperty(exports,
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
378
|
+
Object.defineProperty(exports, "isBlobStorageEnabled", {
|
|
379
|
+
enumerable: true,
|
|
380
|
+
get: function() {
|
|
381
|
+
return isBlobStorageEnabled;
|
|
382
|
+
}
|
|
386
383
|
});
|
|
387
|
-
Object.defineProperty(exports,
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
384
|
+
Object.defineProperty(exports, "shouldAttemptRemoteBlobUpload", {
|
|
385
|
+
enumerable: true,
|
|
386
|
+
get: function() {
|
|
387
|
+
return shouldAttemptRemoteBlobUpload;
|
|
388
|
+
}
|
|
392
389
|
});
|
|
393
|
-
|
|
390
|
+
|
|
391
|
+
//# sourceMappingURL=extractor-DX36oYEv.cjs.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { _ as getEnvBool, i as
|
|
2
|
-
import {
|
|
3
|
-
import { o as isLoggedIntoCloud } from "./accounts-
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
import { _ as getEnvBool, i as logger } from "./logger-CT3IKMKA.js";
|
|
2
|
+
import { o as cloudConfig } from "./fetch-60Gzydls.js";
|
|
3
|
+
import { o as isLoggedIntoCloud } from "./accounts-xrUGFA6n.js";
|
|
4
|
+
import { n as recordBlobReference, r as storeBlob } from "./blobs-Bpg5rH6i.js";
|
|
6
5
|
//#region src/blobs/remoteUpload.ts
|
|
7
6
|
function buildRemoteUrl() {
|
|
8
7
|
const baseUrl = cloudConfig.getApiHost();
|
|
@@ -11,7 +10,7 @@ function buildRemoteUrl() {
|
|
|
11
10
|
try {
|
|
12
11
|
return new URL("/api/blobs", baseUrl).toString();
|
|
13
12
|
} catch (error) {
|
|
14
|
-
|
|
13
|
+
logger.debug("[RemoteBlob] Invalid remote blob URL", {
|
|
15
14
|
error: error instanceof Error ? error.message : String(error),
|
|
16
15
|
baseUrl
|
|
17
16
|
});
|
|
@@ -26,7 +25,7 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
26
25
|
const apiKey = cloudConfig.getApiKey();
|
|
27
26
|
if (!url || !apiKey) return null;
|
|
28
27
|
try {
|
|
29
|
-
const { fetchWithProxy } = await import("./fetch-
|
|
28
|
+
const { fetchWithProxy } = await import("./fetch-60Gzydls.js").then((n) => n.i);
|
|
30
29
|
const response = await fetchWithProxy(url, {
|
|
31
30
|
method: "POST",
|
|
32
31
|
headers: {
|
|
@@ -40,12 +39,12 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
40
39
|
})
|
|
41
40
|
});
|
|
42
41
|
if (response.status === 404 || response.status === 400) {
|
|
43
|
-
|
|
42
|
+
logger.debug("[RemoteBlob] Remote blob upload unavailable", { status: response.status });
|
|
44
43
|
return null;
|
|
45
44
|
}
|
|
46
45
|
if (!response.ok) {
|
|
47
46
|
const text = await response.text();
|
|
48
|
-
|
|
47
|
+
logger.debug("[RemoteBlob] Failed to upload blob", {
|
|
49
48
|
status: response.status,
|
|
50
49
|
statusText: response.statusText,
|
|
51
50
|
body: text
|
|
@@ -54,16 +53,15 @@ async function uploadBlobRemote(buffer, mimeType, context) {
|
|
|
54
53
|
}
|
|
55
54
|
const data = await response.json();
|
|
56
55
|
if (!data?.ref?.hash) {
|
|
57
|
-
|
|
56
|
+
logger.debug("[RemoteBlob] Remote upload returned malformed response");
|
|
58
57
|
return null;
|
|
59
58
|
}
|
|
60
59
|
return data;
|
|
61
60
|
} catch (error) {
|
|
62
|
-
|
|
61
|
+
logger.debug("[RemoteBlob] Error uploading blob", { error: error instanceof Error ? error.message : String(error) });
|
|
63
62
|
return null;
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
|
-
|
|
67
65
|
//#endregion
|
|
68
66
|
//#region src/blobs/extractor.ts
|
|
69
67
|
const BLOB_URI_REGEX = /^promptfoo:\/\/blob\/([a-f0-9]{64})$/i;
|
|
@@ -81,13 +79,13 @@ function extractBase64(value) {
|
|
|
81
79
|
mimeType
|
|
82
80
|
};
|
|
83
81
|
} catch (error) {
|
|
84
|
-
|
|
82
|
+
logger.warn("[BlobExtractor] Failed to parse base64 data URL", { error });
|
|
85
83
|
return null;
|
|
86
84
|
}
|
|
87
85
|
}
|
|
88
86
|
function shouldExternalize(buffer) {
|
|
89
87
|
const size = buffer.length;
|
|
90
|
-
return size >=
|
|
88
|
+
return size >= 1024 && size <= 52428800;
|
|
91
89
|
}
|
|
92
90
|
function getKindFromMimeType(mimeType) {
|
|
93
91
|
return mimeType.startsWith("audio/") ? "audio" : "image";
|
|
@@ -113,7 +111,7 @@ function normalizeAudioMimeType(format) {
|
|
|
113
111
|
};
|
|
114
112
|
if (mimeMap[formatLower]) return mimeMap[formatLower];
|
|
115
113
|
if (!/^[a-z0-9_-]+$/i.test(formatLower)) {
|
|
116
|
-
|
|
114
|
+
logger.warn("[BlobExtractor] Invalid audio format, using default", { format });
|
|
117
115
|
return "audio/wav";
|
|
118
116
|
}
|
|
119
117
|
return `audio/${formatLower}`;
|
|
@@ -130,7 +128,7 @@ function parseBinary(base64OrDataUrl, defaultMimeType) {
|
|
|
130
128
|
mimeType: defaultMimeType
|
|
131
129
|
};
|
|
132
130
|
} catch (error) {
|
|
133
|
-
|
|
131
|
+
logger.warn("[BlobExtractor] Failed to parse base64 data", { error });
|
|
134
132
|
return null;
|
|
135
133
|
}
|
|
136
134
|
}
|
|
@@ -151,7 +149,7 @@ async function maybeStore(base64OrDataUrl, defaultMimeType, context, location, k
|
|
|
151
149
|
location,
|
|
152
150
|
kind
|
|
153
151
|
}).catch((error) => {
|
|
154
|
-
|
|
152
|
+
logger.debug("[BlobExtractor] Cloud upload failed (non-fatal)", {
|
|
155
153
|
error: error instanceof Error ? error.message : String(error),
|
|
156
154
|
hash: ref.hash
|
|
157
155
|
});
|
|
@@ -235,7 +233,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
235
233
|
blobRef: stored
|
|
236
234
|
};
|
|
237
235
|
mutated = true;
|
|
238
|
-
|
|
236
|
+
logger.debug("[BlobExtractor] Stored audio blob", {
|
|
239
237
|
...context,
|
|
240
238
|
hash: stored.hash
|
|
241
239
|
});
|
|
@@ -246,7 +244,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
246
244
|
const stored = await maybeStore(img.data, img.mimeType || "image/png", blobContext, `response.images[${idx}].data`, "image");
|
|
247
245
|
if (stored) {
|
|
248
246
|
mutated = true;
|
|
249
|
-
|
|
247
|
+
logger.debug("[BlobExtractor] Stored image blob", {
|
|
250
248
|
...context,
|
|
251
249
|
hash: stored.hash
|
|
252
250
|
});
|
|
@@ -283,7 +281,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
283
281
|
if (stored) {
|
|
284
282
|
next.output = stored.uri;
|
|
285
283
|
mutated = true;
|
|
286
|
-
|
|
284
|
+
logger.debug("[BlobExtractor] Stored output blob", {
|
|
287
285
|
...context,
|
|
288
286
|
hash: stored.hash
|
|
289
287
|
});
|
|
@@ -302,7 +300,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
302
300
|
storedUris.push(stored.uri);
|
|
303
301
|
jsonMutated = true;
|
|
304
302
|
mutated = true;
|
|
305
|
-
|
|
303
|
+
logger.debug("[BlobExtractor] Stored image blob from b64_json", {
|
|
306
304
|
...context,
|
|
307
305
|
hash: stored.hash
|
|
308
306
|
});
|
|
@@ -320,7 +318,7 @@ async function extractAndStoreBinaryData(response, context) {
|
|
|
320
318
|
}
|
|
321
319
|
}
|
|
322
320
|
} catch (err) {
|
|
323
|
-
|
|
321
|
+
logger.debug("[BlobExtractor] Failed to parse base64 JSON output", {
|
|
324
322
|
error: err instanceof Error ? err.message : String(err),
|
|
325
323
|
location: "response.output"
|
|
326
324
|
});
|
|
@@ -370,7 +368,7 @@ async function recordExistingBlobReferences(value, context, location) {
|
|
|
370
368
|
}
|
|
371
369
|
if (value && typeof value === "object") for (const [key, child] of Object.entries(value)) await recordExistingBlobReferences(child, context, location ? `${location}.${key}` : key);
|
|
372
370
|
}
|
|
373
|
-
|
|
374
371
|
//#endregion
|
|
375
372
|
export { isBlobStorageEnabled as n, shouldAttemptRemoteBlobUpload as r, extractAndStoreBinaryData as t };
|
|
376
|
-
|
|
373
|
+
|
|
374
|
+
//# sourceMappingURL=extractor-M67RUtg6.js.map
|