promptfoo 0.121.5 → 0.121.8
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/{ListApp-BRUsT43Y.js → ListApp-DLmM02JS.js} +1 -1
- package/dist/src/{accounts-BIFntVWB.cjs → accounts-BVz5gHLK.cjs} +16 -10
- package/dist/src/{accounts-bnyHT7Ju.js → accounts-BWjqwsrf.js} +12 -7
- package/dist/src/{accounts-CLJHCDDb.js → accounts-D6IBfEE0.js} +13 -8
- package/dist/src/{accounts-CaLNYnf7.js → accounts-DAv_0iE7.js} +12 -7
- package/dist/src/{agentic-utils-B5krlibj.js → agentic-utils-BJKAkz2e.js} +2 -2
- package/dist/src/{agentic-utils-D2x0wGhB.cjs → agentic-utils-C-A92xhn.cjs} +8 -7
- package/dist/src/{agentic-utils-Ba67xmgs.js → agentic-utils-DmoS_S4B.js} +2 -2
- package/dist/src/{agentic-utils-BclbiXiq.js → agentic-utils-GdToujHu.js} +2 -2
- package/dist/src/{agents-BGqaTDnr.js → agents-2C8NN6I1.js} +20 -9
- package/dist/src/{agents-n6vPqV3i.js → agents-BMAiSR2o.js} +4 -4
- package/dist/src/{agents-BYdMl1UE.js → agents-C-PGaxwj.js} +20 -9
- package/dist/src/{agents-BV9yFpXX.js → agents-C98cz5pl.js} +20 -9
- package/dist/src/{agents-WULPVjbH.cjs → agents-DB8Ub2Ld.cjs} +7 -6
- package/dist/src/{agents-DhxWMCtH.js → agents-Dwshy2H8.js} +4 -4
- package/dist/src/{agents-emVcx3yh.js → agents-mlKjx-cK.js} +2 -2
- package/dist/src/{agents-DiWmQYH9.cjs → agents-n2ej-c4H.cjs} +21 -10
- package/dist/src/{aimlapi-DR4pgeiC.js → aimlapi-Bi-laUlp.js} +6 -6
- package/dist/src/{aimlapi-BzLjZI_m.cjs → aimlapi-D0OFV4Vj.cjs} +7 -7
- package/dist/src/{aimlapi-BxqK9HF_.js → aimlapi-WyUK0wYy.js} +6 -6
- package/dist/src/{aimlapi-uPGp0Zdo.js → aimlapi-v-63ZjEI.js} +6 -6
- package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
- package/dist/src/app/assets/Report-sCXUfaWo.js +1 -0
- package/dist/src/app/assets/index-BopgkZEh.js +388 -0
- package/dist/src/app/assets/index-yhM8y1PP.css +1 -0
- package/dist/src/app/assets/{scroll-timeline-D9IT_e8Z.js → scroll-timeline-RpeTwOvs.js} +1 -1
- package/dist/src/app/assets/sync-5gq6fmG4.js +4 -0
- package/dist/src/app/assets/vendor-charts-BL9OMNU7.js +36 -0
- package/dist/src/app/assets/{vendor-markdown-Ch00wnNI.js → vendor-markdown-BYsQqn7Z.js} +10 -10
- package/dist/src/app/assets/{vendor-react-CVvmk1UB.js → vendor-react-CqWgVW6T.js} +2 -2
- package/dist/src/app/assets/{vendor-utils-BnEYbx2Q.js → vendor-utils-BHPO71pu.js} +1 -1
- package/dist/src/app/index.html +6 -6
- package/dist/src/{audio-CScmnmEB.js → audio-DnEIHWZR.js} +3 -3
- package/dist/src/{audio-Da8U9IS5.js → audio-heR0mu0n.js} +3 -3
- package/dist/src/{audio-BvpTOArF.js → audio-wafFO1wn.js} +3 -3
- package/dist/src/{audio-C0vDeS0j.cjs → audio-x44tsxIo.cjs} +4 -4
- package/dist/src/authoritativeMarkupInjection-2G3Be6oL.cjs +74 -0
- package/dist/src/authoritativeMarkupInjection-81PPynHR.js +75 -0
- package/dist/src/authoritativeMarkupInjection-D9O70HPi.js +74 -0
- package/dist/src/authoritativeMarkupInjection-PxSf3Rh8.js +74 -0
- package/dist/src/{base-dYsl2hmL.js → base-0Gzzue9Z.js} +4 -3
- package/dist/src/{base-BOMaNEes.js → base-Bp4c52YZ.js} +4 -3
- package/dist/src/{base-BTux96b1.js → base-BuNn-YBX.js} +4 -3
- package/dist/src/{base-Tw6uhH8K.cjs → base-BzdS8tod.cjs} +5 -4
- package/dist/src/bestOfN-BHiOjeaq.js +136 -0
- package/dist/src/bestOfN-CdkNPPbX.js +136 -0
- package/dist/src/bestOfN-ClUSOhN0.js +137 -0
- package/dist/src/bestOfN-DWwXEg1h.cjs +140 -0
- package/dist/src/{blobs-B95F_7vE.cjs → blobs-B0977K1O.cjs} +7 -6
- package/dist/src/{blobs-D_gg8nbm.js → blobs-CeFdPn_T.js} +2 -2
- package/dist/src/{blobs-DjLby-uP.js → blobs-DODuTK-a.js} +2 -2
- package/dist/src/{blobs-BW4U31ue.js → blobs-Dwef1Ao1.js} +2 -2
- package/dist/src/cache-BKYi3kAA.js +3 -0
- package/dist/src/{cache-BI5BY7ey.js → cache-BR77mdIR.js} +127 -11
- package/dist/src/{cache-Cr-qWIbP.js → cache-CrioYnaa.js} +125 -10
- package/dist/src/{cache-Bzttsk0X.js → cache-DdriHsNX.js} +125 -10
- package/dist/src/{cache-DGg-yTZG.cjs → cache-h5MWOBZI.cjs} +135 -25
- package/dist/src/{chat-Cx_LkwvZ.js → chat-BBEnnpQk.js} +11 -11
- package/dist/src/{chat-DChSH_Es.js → chat-BSos6PvZ.js} +9 -9
- package/dist/src/{chat-aMQZw6R7.js → chat-Bnt7ieO0.js} +4 -4
- package/dist/src/{chat-vYqqv1gP.cjs → chat-DSyYuTYT.cjs} +14 -13
- package/dist/src/{chat-BLOdH60v.js → chat-DTdf-J5Q.js} +11 -11
- package/dist/src/{chat-DH97tVV9.cjs → chat-Dq3DomYU.cjs} +6 -6
- package/dist/src/{chat-DG2LkwLq.js → chat-g5QLeLOo.js} +4 -4
- package/dist/src/{chat-D9nudO9b.js → chat-mTTuUAYb.js} +4 -4
- package/dist/src/{chatkit-B8X34dQc.js → chatkit-B6DWi70Q.js} +3 -3
- package/dist/src/{chatkit-D44VyUyB.cjs → chatkit-BYveR48_.cjs} +6 -5
- package/dist/src/{chatkit-BXu42Qwt.js → chatkit-fARZwEfV.js} +3 -3
- package/dist/src/{chatkit-CbMRoeYw.js → chatkit-lb6FK02w.js} +1 -1
- package/dist/src/{claude-agent-sdk-DYv_AJ8u.js → claude-agent-sdk-BGUac_kS.js} +213 -66
- package/dist/src/{claude-agent-sdk-BjriSVRZ.js → claude-agent-sdk-BP__YGfK.js} +213 -66
- package/dist/src/{claude-agent-sdk-BzNZeZ0N.js → claude-agent-sdk-Ddgx5BIQ.js} +212 -65
- package/dist/src/{claude-agent-sdk-BRq0bbIK.cjs → claude-agent-sdk-n2XcEclh.cjs} +219 -71
- package/dist/src/cloud-DiWbUiVP.js +3 -0
- package/dist/src/{cloud-Da0bofJd.js → cloud-DqF5N1aJ.js} +2 -2
- package/dist/src/{cloudflare-ai-CXC4b1EU.js → cloudflare-ai-BGamMotN.js} +4 -4
- package/dist/src/{cloudflare-ai-DGOwgexC.js → cloudflare-ai-BwW8W-w7.js} +4 -4
- package/dist/src/{cloudflare-ai-DJv5qnyb.cjs → cloudflare-ai-DCRGnsyL.cjs} +6 -6
- package/dist/src/{cloudflare-ai-CyBoIs1Q.js → cloudflare-ai-sD26nP6V.js} +4 -4
- package/dist/src/{cloudflare-gateway-TJkVrZlB.js → cloudflare-gateway-2lnOT4qM.js} +3 -3
- package/dist/src/{cloudflare-gateway-D-dnkzCF.js → cloudflare-gateway-B1-8KNCt.js} +3 -3
- package/dist/src/{cloudflare-gateway-DKVjkDav.cjs → cloudflare-gateway-CCC1DFrC.cjs} +5 -5
- package/dist/src/{cloudflare-gateway-1sAoOyft.js → cloudflare-gateway-DOghiU6r.js} +3 -3
- package/dist/src/{codex-app-server-CCLjqCh9.js → codex-app-server-BWeWamEb.js} +19 -4
- package/dist/src/{codex-app-server-CCe0TiDc.js → codex-app-server-DyQB1P0p.js} +20 -5
- package/dist/src/{codex-app-server-VMRnjZ68.cjs → codex-app-server-R9u_G7W9.cjs} +27 -11
- package/dist/src/{codex-app-server-CPW1LFwh.js → codex-app-server-ZQRJSJjU.js} +20 -5
- package/dist/src/{codex-sdk-Bzb_TqX9.js → codex-sdk-B62H0fe7.js} +16 -5
- package/dist/src/{codex-sdk-Bd8UbO9q.cjs → codex-sdk-BRPUvJG8.cjs} +31 -12
- package/dist/src/{codex-sdk-BgEFQ70r.js → codex-sdk-Dio1zJBS.js} +18 -7
- package/dist/src/codex-sdk-DxukZs_K.js +3 -0
- package/dist/src/{codex-sdk-DfvDTN33.js → codex-sdk-iEmW1eS2.js} +18 -7
- package/dist/src/{cometapi-B5ImDlSm.js → cometapi--hh7dESS.js} +7 -7
- package/dist/src/{cometapi-CC7hWxmX.js → cometapi-C7yWNGqt.js} +7 -7
- package/dist/src/{cometapi-CCbpHkuF.js → cometapi-CSIi16a0.js} +7 -7
- package/dist/src/{cometapi-BgAkuYCw.cjs → cometapi-sZgBZtbU.cjs} +8 -8
- package/dist/src/{completion-DtQ72Bm3.cjs → completion-CWtqdn3z.cjs} +6 -6
- package/dist/src/{completion-Vq_ad618.js → completion-DT8cxo9T.js} +4 -4
- package/dist/src/{completion-2iuYVxwi.js → completion-DUScduXp.js} +5 -5
- package/dist/src/{completion-CrD6MQ93.js → completion-D_2IOAoS.js} +5 -5
- package/dist/src/constants-BjJV0cRr.js +6 -0
- package/dist/src/constants-DH5XYLKZ.js +7 -0
- package/dist/src/constants-DZGEFLsu.js +6 -0
- package/dist/src/constants-a2kYssQk.cjs +11 -0
- package/dist/src/{createHash-4gFQpDDv.js → createHash-BtbSX3mj.js} +1 -1
- package/dist/src/{createHash-Un4Q_huE.js → createHash-CGVzWdjj.js} +1 -1
- package/dist/src/{createHash-VvBIc-AW.cjs → createHash-CSiqnK5P.cjs} +2 -2
- package/dist/src/{createHash-DPpsZgFF.js → createHash-CgRvs4Fn.js} +1 -1
- package/dist/src/crescendo-B41TwUHM.js +722 -0
- package/dist/src/crescendo-Bfic7KC4.js +724 -0
- package/dist/src/crescendo-DXFB7rHP.cjs +725 -0
- package/dist/src/crescendo-DvvYxMLA.js +723 -0
- package/dist/src/custom-BdzuqFTN.js +619 -0
- package/dist/src/custom-Cf5Q6r-P.js +618 -0
- package/dist/src/custom-DLgufezC.js +620 -0
- package/dist/src/custom-LEXHCRe3.cjs +621 -0
- package/dist/src/{docker--3qzPa-6.js → docker-BOSO_6hK.js} +5 -5
- package/dist/src/{docker-D3AY-5F5.cjs → docker-D0h2vFrc.cjs} +6 -6
- package/dist/src/{docker-DCsCDvwM.js → docker-D2TWGyTP.js} +5 -5
- package/dist/src/{docker-Dorv4_Dg.js → docker-Vj_4_cPg.js} +5 -5
- package/dist/src/{embedding-BXhN5lCH.cjs → embedding-BQIApR18.cjs} +6 -6
- package/dist/src/{embedding-ChS1ivFS.js → embedding-CStK0TV6.js} +5 -5
- package/dist/src/{embedding-DNRvZwRN.js → embedding-CU78FMnw.js} +5 -5
- package/dist/src/{embedding-D_bI4NDq.js → embedding-CV8lmCnU.js} +4 -4
- package/dist/src/{errors-DFHe4L-n.js → errors-9PcUL8BC.js} +1 -1
- package/dist/src/{esm-B_rGuPTo.cjs → esm-BIKakvNa.cjs} +8 -7
- package/dist/src/{esm-BRkfNsYs.js → esm-BTK1W7lG.js} +1 -1
- package/dist/src/{esm-BX8fwlAO.js → esm-Bexx2PFc.js} +1 -1
- package/dist/src/{eval-DJ_4A-tr.js → eval-B3BaNBbO.js} +19 -19
- package/dist/src/{eval-BQPLBJbw.js → eval-DfR9885C.js} +1 -1
- package/dist/src/evalResult-BtZSUgQv.js +3 -0
- package/dist/src/{evalResult-D6P5I5il.js → evalResult-CcSqNl_Y.js} +17 -10
- package/dist/src/{evalResult-Cx-8OWkb.cjs → evalResult-DHXs-9TL.cjs} +29 -11
- package/dist/src/{evalResult-pSvGWFMo.js → evalResult-PGqEbasb.js} +18 -11
- package/dist/src/evaluator-B9LGbKI8.js +3 -0
- package/dist/src/{evaluator-D-UIbbYq.js → evaluator-n_dEb00o.js} +258 -132
- package/dist/src/evaluatorHelpers-CrRObe2z.js +510 -0
- package/dist/src/evaluatorHelpers-D06I9WFL.cjs +537 -0
- package/dist/src/evaluatorHelpers-D1_kwvyp.js +511 -0
- package/dist/src/{extractor-DxyiFhPk.js → extractor-BVkZtk4R.js} +5 -5
- package/dist/src/{extractor-BM3jRERL.js → extractor-D3Fv_Tdh.js} +5 -5
- package/dist/src/{extractor-YlZbUMsL.js → extractor-Jp53vs-6.js} +5 -5
- package/dist/src/{extractor-Dxr2J_wK.cjs → extractor-bV_NOoaz.cjs} +6 -6
- package/dist/src/{fetch-Y5qX_kST.js → fetch-BSSAcMxf.js} +90 -26
- package/dist/src/fetch-BodQTrMU.js +3 -0
- package/dist/src/{fetch-NuqXW1Xb.cjs → fetch-Cfm4EuOB.cjs} +115 -32
- package/dist/src/{fetch-B6ch2nU2.js → fetch-Cpf1U1nO.js} +86 -26
- package/dist/src/{fetch-D9xxyC1p.js → fetch-Doks14zQ.js} +90 -26
- package/dist/src/{fileExtensions-D9h-8Wxg.cjs → fileExtensions-BhdwzYaD.cjs} +24 -1
- package/dist/src/{fileExtensions-BGh-W-HT.js → fileExtensions-CXRfY3Ss.js} +12 -2
- package/dist/src/{fileExtensions-DysCsxNG.js → fileExtensions-D4GCJ67J.js} +12 -2
- package/dist/src/{formatDuration-Ch4A7G3o.js → formatDuration-CMVNrYvE.js} +1 -1
- package/dist/src/{genaiTracer-BokHC-MW.cjs → genaiTracer-14nugQQx.cjs} +14 -2
- package/dist/src/{genaiTracer-C3ZPQU60.js → genaiTracer-BPVvltoW.js} +2 -2
- package/dist/src/{genaiTracer-DxODqT9e.js → genaiTracer-D18lYzhB.js} +2 -2
- package/dist/src/{genaiTracer-CFny3gOy.js → genaiTracer-jJKYsnjc.js} +2 -2
- package/dist/src/goat-Ba7Gznzq.js +467 -0
- package/dist/src/goat-CJngS-WU.js +468 -0
- package/dist/src/goat-CwsbfQeu.js +466 -0
- package/dist/src/goat-DOMbozoX.cjs +470 -0
- package/dist/src/graders-B3D7kCcD.js +3 -0
- package/dist/src/{graders-CgPn32yp.js → graders-BQt1BaQe.js} +1019 -86
- package/dist/src/{graders-Bw1wk_21.cjs → graders-CBQ2s6gz.cjs} +1087 -130
- package/dist/src/{graders-CwrbifOo.js → graders-DaRU98zs.js} +1022 -84
- package/dist/src/{graders-BoUqsCEm.js → graders-KXzjnIim.js} +1024 -86
- package/dist/src/hydra-BU6GjYoQ.js +560 -0
- package/dist/src/hydra-BmXHxlyl.js +559 -0
- package/dist/src/hydra-CR0KyYDb.js +561 -0
- package/dist/src/hydra-RO9jBks7.cjs +560 -0
- package/dist/src/{image-BeWaInPF.js → image-BBmZdKO3.js} +3 -3
- package/dist/src/{image-qjO6FWPs.js → image-B_PFG7IG.js} +3 -3
- package/dist/src/image-BtODOZjh.js +442 -0
- package/dist/src/image-CYuNJIqd.js +442 -0
- package/dist/src/{image-D10dNAav.cjs → image-E00WFZkq.cjs} +4 -4
- package/dist/src/image-HK2Cfqb1.cjs +465 -0
- package/dist/src/{image-Dr_3I3nK.js → image-LGj8dTcr.js} +3 -3
- package/dist/src/image-YMKejC0r.js +443 -0
- package/dist/src/index.cjs +711 -339
- package/dist/src/index.d.cts +3159 -1611
- package/dist/src/index.d.ts +3158 -1610
- package/dist/src/index.js +605 -249
- package/dist/src/indirectWebPwn-B80dLlFC.js +260 -0
- package/dist/src/indirectWebPwn-BMTXXznx.js +386 -0
- package/dist/src/indirectWebPwn-BZFPV7Q9.js +385 -0
- package/dist/src/indirectWebPwn-BaEQEOIO.cjs +260 -0
- package/dist/src/indirectWebPwn-BzpyMnFS.js +259 -0
- package/dist/src/indirectWebPwn-CiWB-vVH.js +385 -0
- package/dist/src/indirectWebPwn-D7NA9Nsv.cjs +397 -0
- package/dist/src/indirectWebPwn-o_bEFMjP.js +259 -0
- package/dist/src/inputVariables-B0qUChbV.js +467 -0
- package/dist/src/inputVariables-DUGMb9Ka.js +464 -0
- package/dist/src/inputVariables-DXFdi7AI.js +468 -0
- package/dist/src/inputVariables-Dq9W-Z3a.cjs +475 -0
- package/dist/src/{interactiveCheck-CCICw2cy.js → interactiveCheck-C4QlIuoR.js} +1 -1
- package/dist/src/{invariant-kfQ8Bu82.cjs → invariant-QtnLD03y.cjs} +1 -1
- package/dist/src/iterative-B-l0syBV.js +501 -0
- package/dist/src/iterative-BACUeCCz.cjs +503 -0
- package/dist/src/iterative-CVwoExo8.js +502 -0
- package/dist/src/iterative-QDrGSyss.js +500 -0
- package/dist/src/iterativeImage-BQg2OwA6.js +413 -0
- package/dist/src/iterativeImage-Bwn0fM75.js +413 -0
- package/dist/src/iterativeImage-CcgVyASo.cjs +415 -0
- package/dist/src/iterativeImage-D_UbQXg4.js +414 -0
- package/dist/src/iterativeMeta-CIu-CHRS.js +405 -0
- package/dist/src/iterativeMeta-CN8CNjFA.js +406 -0
- package/dist/src/iterativeMeta-DN6BTjpq.js +404 -0
- package/dist/src/iterativeMeta-DlqY3BsS.cjs +405 -0
- package/dist/src/iterativeTree-CJ8a8G9T.js +820 -0
- package/dist/src/iterativeTree-DcuFXnjL.js +819 -0
- package/dist/src/iterativeTree-FrDDYAN0.js +818 -0
- package/dist/src/iterativeTree-LOgAi0nU.cjs +821 -0
- package/dist/src/{knowledgeBase-C8qOo26M.cjs → knowledgeBase-CdbcGBZF.cjs} +25 -11
- package/dist/src/{knowledgeBase-BBETc5-S.js → knowledgeBase-CjOXp6Lr.js} +23 -9
- package/dist/src/{knowledgeBase-Dr3Kib7F.js → knowledgeBase-DxAq4n4z.js} +24 -10
- package/dist/src/{knowledgeBase-CzAi2rUI.js → knowledgeBase-o_wTLzrt.js} +24 -10
- package/dist/src/{litellm-DRc4qWfc.js → litellm-B2gHwya_.js} +4 -4
- package/dist/src/{litellm-CaUmV7Mk.cjs → litellm-CPpdlO7n.cjs} +5 -5
- package/dist/src/{litellm-BLSiANhk.js → litellm-CYfgxLrM.js} +4 -4
- package/dist/src/{litellm-DQGo_juI.js → litellm-ojWBKU3C.js} +4 -4
- package/dist/src/{logger-COuQb2xB.cjs → logger-cfNpzI4o.cjs} +13 -55
- package/dist/src/{luma-ray-if-Ml4R9.cjs → luma-ray-BCCO9XXG.cjs} +9 -8
- package/dist/src/{luma-ray-B-tNZzqW.js → luma-ray-BPrdihAb.js} +5 -5
- package/dist/src/{luma-ray-CtS3OlGq.js → luma-ray-DP5N79lB.js} +5 -5
- package/dist/src/{luma-ray-PJJgUjOc.js → luma-ray-DTDyoAlM.js} +5 -5
- package/dist/src/main.js +727 -234
- package/dist/src/memoryPoisoning-B6N3us35.cjs +106 -0
- package/dist/src/memoryPoisoning-Bc_BK_k2.js +106 -0
- package/dist/src/memoryPoisoning-D375zwSX.js +107 -0
- package/dist/src/memoryPoisoning-DJA0YjJT.js +106 -0
- package/dist/src/{messages-CewuNcNS.js → messages-Bg29Nbit.js} +17 -9
- package/dist/src/{messages-BnsVHUnm.cjs → messages-BrZEnHsV.cjs} +24 -15
- package/dist/src/{messages-CI69Lasb.js → messages-CBulRaud.js} +18 -10
- package/dist/src/{messages-B9dSjrNf.js → messages-K9A8RxBM.js} +18 -10
- package/dist/src/{meteor-CeGo0Lu2.js → meteor--TZYICTI.js} +1 -1
- package/dist/src/{meteor-BBGcGeCa.cjs → meteor-CR226f7Z.cjs} +2 -2
- package/dist/src/{meteor-Wc_aUVvu.js → meteor-Cl_yd7rJ.js} +1 -1
- package/dist/src/{meteor-BKTM-7KS.js → meteor-Dce-_zGQ.js} +1 -1
- package/dist/src/mischievousUser-BDLwSGN0.js +46 -0
- package/dist/src/mischievousUser-Blx-OtT3.js +47 -0
- package/dist/src/mischievousUser-CHuTTvBg.js +46 -0
- package/dist/src/mischievousUser-CSUrH3fq.cjs +46 -0
- package/dist/src/{modelslab-zpz9JcK0.js → modelslab-BjEk7yCP.js} +6 -6
- package/dist/src/{modelslab-BCLOtfek.js → modelslab-CBCrdIBc.js} +6 -6
- package/dist/src/{modelslab-D73OnKSx.js → modelslab-CrGpXuhv.js} +6 -6
- package/dist/src/{modelslab-BkapYJhh.cjs → modelslab-Cvh0klQx.cjs} +7 -7
- package/dist/src/{nova-reel-B8F_TK5w.js → nova-reel-CUDDZcSA.js} +5 -5
- package/dist/src/{nova-reel-Bx0NFV2f.js → nova-reel-CyDESu5J.js} +5 -5
- package/dist/src/{nova-reel-DkT7tnoB.cjs → nova-reel-DH_Ksu6X.cjs} +9 -8
- package/dist/src/{nova-reel-CNGJTLtG.js → nova-reel-YQAqUYJY.js} +5 -5
- package/dist/src/{nova-sonic-BeTRaFOh.js → nova-sonic-BVFFB7JZ.js} +2 -2
- package/dist/src/{nova-sonic-YT426juD.cjs → nova-sonic-Bg3cxMMu.cjs} +5 -4
- package/dist/src/{nova-sonic-CL7Zqv0G.js → nova-sonic-BhmnRGyh.js} +3 -3
- package/dist/src/{nova-sonic-BaXRN1cr.js → nova-sonic-DxmK95c1.js} +3 -3
- package/dist/src/{openai-Cy1XLs0c.cjs → openai-C3uXv8wS.cjs} +2 -2
- package/dist/src/{openai-BT-JvDse.js → openai-CJrsh9n4.js} +1 -1
- package/dist/src/{openai-D4fxGvRx.js → openai-zgwBb4Ff.js} +1 -1
- package/dist/src/{openclaw-DUBZP3GL.cjs → openclaw-CHQaZi_-.cjs} +17 -15
- package/dist/src/{openclaw-DA8U4DsD.js → openclaw-CWOm2eOr.js} +9 -8
- package/dist/src/{openclaw-DObVgpjC.js → openclaw-Cdk9JKfY.js} +9 -8
- package/dist/src/{openclaw-Bq7RVR3k.js → openclaw-DhF8rUpI.js} +9 -8
- package/dist/src/{opencode-sdk-BB40Wir1.js → opencode-sdk-BRjiPV-g.js} +38 -3
- package/dist/src/{opencode-sdk-CeqiOcOU.cjs → opencode-sdk-CPFMw0ed.cjs} +45 -9
- package/dist/src/{opencode-sdk-BM1UAIv1.js → opencode-sdk-CaSOCsBA.js} +39 -4
- package/dist/src/{opencode-sdk-ChdK7F7z.js → opencode-sdk-CqkyG8De.js} +39 -4
- package/dist/src/{otlpReceiver-UYMQx3sy.js → otlpReceiver--gTpSagc.js} +119 -3
- package/dist/src/{otlpReceiver-C6thJRXi.js → otlpReceiver-B2eaKC8C.js} +118 -2
- package/dist/src/{otlpReceiver-CcdIikOu.js → otlpReceiver-BXjcRqAM.js} +119 -3
- package/dist/src/{otlpReceiver-DNSQj6bf.cjs → otlpReceiver-CvJdBGSc.cjs} +125 -7
- package/dist/src/packageParser--MWTSrPW.js +36 -0
- package/dist/src/packageParser-CgE-ziRo.js +35 -0
- package/dist/src/packageParser-QoCS1FMl.cjs +54 -0
- package/dist/src/packageParser-hwwSGnAZ.js +35 -0
- package/dist/src/processShim-BBxt7LKO.js +95 -0
- package/dist/src/processShim-BcGzU8fY.js +94 -0
- package/dist/src/processShim-C_z3aRvF.js +94 -0
- package/dist/src/processShim-DSY9BV2T.cjs +98 -0
- package/dist/src/promptLength-0qIHyhA5.js +71 -0
- package/dist/src/promptLength-4X-Wd8PG.js +72 -0
- package/dist/src/promptLength-B9nZEfO6.js +71 -0
- package/dist/src/promptLength-BbBbDHNj.cjs +94 -0
- package/dist/src/promptfoo-BU4_0J85.js +238 -0
- package/dist/src/promptfoo-CReYAtfb.js +237 -0
- package/dist/src/promptfoo-ClChwT74.cjs +292 -0
- package/dist/src/promptfoo-CqEpj6Sr.js +237 -0
- package/dist/src/prompts-BYMtqPCw.js +259 -0
- package/dist/src/prompts-C-bqE1Yp.js +260 -0
- package/dist/src/prompts-Cp_Qx5Ml.js +270 -0
- package/dist/src/prompts-DHhQsANy.js +259 -0
- package/dist/src/prompts-D_QpZ2Dm.js +271 -0
- package/dist/src/prompts-hNvWBD3z.cjs +284 -0
- package/dist/src/prompts-huDVH2CI.js +270 -0
- package/dist/src/prompts-p78Hul5i.cjs +289 -0
- package/dist/src/{providerRegistry-BESeALrr.cjs → providerRegistry-CZO_w7ue.cjs} +2 -2
- package/dist/src/{providerRegistry-DoACwqhD.js → providerRegistry-DHcFiVWX.js} +1 -1
- package/dist/src/{providerRegistry-PMsleEzs.js → providerRegistry-ReCd0sFa.js} +1 -1
- package/dist/src/{providers-DT-GtF2t.js → providers-B7TyByfj.js} +789 -11925
- package/dist/src/{providers-CJh7iriU.js → providers-BGc7tDtQ.js} +796 -11872
- package/dist/src/{providers-Ctcc592x.js → providers-CSOp-bCm.js} +1 -1
- package/dist/src/{providers-eDShy16E.cjs → providers-V6RBuieY.cjs} +837 -12138
- package/dist/src/{providers-DRrerKra.js → providers-iH3Sw1yo.js} +851 -11938
- package/dist/src/{pythonUtils-C4tltmIn.js → pythonUtils-CLCgQ9tt.js} +1 -1
- package/dist/src/{pythonUtils-DNqbnRdx.js → pythonUtils-CgYxeSmO.js} +2 -2
- package/dist/src/{pythonUtils-CoLaCwNY.cjs → pythonUtils-Cokhluq3.cjs} +7 -6
- package/dist/src/{pythonUtils-DMO68Jg7.js → pythonUtils-D0BYebvX.js} +2 -2
- package/dist/src/{quiverai-CPKhWgaT.js → quiverai-58BtRRet.js} +3 -3
- package/dist/src/{quiverai-Bk1KrvL6.js → quiverai-C1dYu5MW.js} +3 -3
- package/dist/src/{quiverai-BSS9a7wV.js → quiverai-CNMIpZQg.js} +3 -3
- package/dist/src/{quiverai-Bpx6MZ7T.cjs → quiverai-fmSfU43k.cjs} +4 -4
- package/dist/src/registry-6Jw6ebor.cjs +124 -0
- package/dist/src/registry-BTGk2ZkB.js +124 -0
- package/dist/src/registry-BTNqmP5o.js +125 -0
- package/dist/src/registry-NGnOG2xa.js +124 -0
- package/dist/src/{server-gyd6d4Hc.js → remoteGeneration--D6WjzUm.js} +15 -108
- package/dist/src/{server-BEECpeGG.cjs → remoteGeneration-BpIYlb_O.cjs} +30 -119
- package/dist/src/{server-ByxbqAcQ.js → remoteGeneration-CJC3E0aW.js} +15 -147
- package/dist/src/remoteGeneration-D6UjE2JT.js +218 -0
- package/dist/src/render-BNTrbmBw.cjs +384 -0
- package/dist/src/render-CSP99NLm.js +348 -0
- package/dist/src/render-DFfDeYUK.js +347 -0
- package/dist/src/{render-nj-UaPdn.js → render-DznWrxGO.js} +2 -2
- package/dist/src/render-_6ur1fhE.js +347 -0
- package/dist/src/resourceAttributes-D1jP3kL5.js +17 -0
- package/dist/src/resourceAttributes-DQbBB--2.js +16 -0
- package/dist/src/resourceAttributes-ephgOvdR.cjs +27 -0
- package/dist/src/resourceAttributes-v6-I67fn.js +16 -0
- package/dist/src/{responses-1ztiVYsx.js → responses-5Gf5HNOi.js} +11 -7
- package/dist/src/{responses-BiaBguAu.js → responses-BVi7xIdv.js} +13 -9
- package/dist/src/{responses-CF-ayauu.cjs → responses-CUARGrhY.cjs} +16 -11
- package/dist/src/{responses-B8haB-mD.js → responses-CrmWv6iz.js} +13 -9
- package/dist/src/rolldown-runtime-D_mwlA32.cjs +43 -0
- package/dist/src/rubyUtils-BYVlQ94c.js +3 -0
- package/dist/src/{rubyUtils-CIQFnVz4.js → rubyUtils-CXlFM2rR.js} +2 -2
- package/dist/src/{rubyUtils-BI0p46eZ.js → rubyUtils-CnlW8AYb.js} +2 -2
- package/dist/src/{rubyUtils-DoifqkiA.cjs → rubyUtils-CqUWBZAt.cjs} +16 -26
- package/dist/src/{rubyUtils-DGnoCYL2.js → rubyUtils-DdGojpfv.js} +1 -1
- package/dist/src/runtimeTransform-BJOpL9Yc.js +142 -0
- package/dist/src/runtimeTransform-Dgh_D7DU.js +143 -0
- package/dist/src/runtimeTransform-DigbjU1r.js +142 -0
- package/dist/src/runtimeTransform-ON3YYILw.cjs +147 -0
- package/dist/src/{sagemaker-ljtY12VM.cjs → sagemaker-BeVTKfrv.cjs} +65 -53
- package/dist/src/{sagemaker-BDLeW29y.js → sagemaker-BwbV5U7_.js} +61 -50
- package/dist/src/{sagemaker-C5T60MKf.js → sagemaker-ClAZ6Qwc.js} +61 -50
- package/dist/src/{sagemaker-ClS_NB07.js → sagemaker-DY2qrOpq.js} +61 -50
- package/dist/src/{scanner-nOCWNIXa.js → scanner-BS-iFIp3.js} +6 -6
- package/dist/src/server/index.js +4115 -420
- package/dist/src/server-BHOEL8p8.cjs +126 -0
- package/dist/src/server-CbiJppij.js +107 -0
- package/dist/src/server-D18AAlAc.js +3 -0
- package/dist/src/server-DLYjSFm2.js +182 -0
- package/dist/src/server-JQYD_Nws.js +146 -0
- package/dist/src/{fileExtensions-8CjoL7vB.js → shared-BoG7qLMv.js} +12 -2
- package/dist/src/shared-CRq0gGVf.js +1334 -0
- package/dist/src/shared-CSIGeGLl.js +1334 -0
- package/dist/src/shared-DNvim54U.js +1335 -0
- package/dist/src/shared-aHWko3P1.cjs +1436 -0
- package/dist/src/{signal-DTtUuU3l.js → signal-CSurUUyV.js} +2 -2
- package/dist/src/simulatedUser-C7sOFSF6.js +222 -0
- package/dist/src/simulatedUser-DH_7RzEQ.js +222 -0
- package/dist/src/simulatedUser-lgMMmniD.js +223 -0
- package/dist/src/simulatedUser-mnCUS9Bm.cjs +227 -0
- package/dist/src/{slack-Bamy_7te.js → slack-Bapo-7_8.js} +1 -1
- package/dist/src/{slack-BLlsDpfG.cjs → slack-DMC1QVEg.cjs} +3 -2
- package/dist/src/{slack-BPYLQLgb.js → slack-DTEFhrMn.js} +1 -1
- package/dist/src/{slack-4zZX1OKP.js → slack-k-_CP84Q.js} +1 -1
- package/dist/src/storage-95htjpLs.js +834 -0
- package/dist/src/storage-A4WnAeN3.cjs +911 -0
- package/dist/src/storage-B2Ql_oq4.js +822 -0
- package/dist/src/storage-EKVWZBNY.js +875 -0
- package/dist/src/{store-2K0kDi80.cjs → store-B2NDDooM.cjs} +60 -24
- package/dist/src/{store-CPh25336.js → store-DKd5592Q.js} +50 -19
- package/dist/src/{store-BPkzEyFM.js → store-HpopRVzl.js} +50 -19
- package/dist/src/store-IbiRIF3k.js +3 -0
- package/dist/src/strategies-CBI1brSy.js +2333 -0
- package/dist/src/strategies-CCcnEbFO.cjs +2360 -0
- package/dist/src/strategies-CD1gHeeQ.js +2331 -0
- package/dist/src/{tables-WgdUZ8Ck.js → tables-CRSXQ2Ke.js} +2 -2
- package/dist/src/{tables-BMSOS2Gg.js → tables-CxjU7bBd.js} +2 -2
- package/dist/src/{tables-CXbaZ9y1.cjs → tables-DBIJU0WE.cjs} +6 -5
- package/dist/src/{tables-NlvH23ky.js → tables-DafUHOeh.js} +2 -2
- package/dist/src/telemetry-BUm_krVX.js +3 -0
- package/dist/src/{telemetry--iqaGyaS.js → telemetry-BbpmrenM.js} +4 -4
- package/dist/src/{telemetry-CgdVGV8N.js → telemetry-C4bX-6Sr.js} +4 -4
- package/dist/src/{telemetry-CEQxGnMZ.cjs → telemetry-C_ImlCOk.cjs} +15 -9
- package/dist/src/{telemetry-DWdGHvEf.js → telemetry-DOE567Wj.js} +4 -4
- package/dist/src/{text-DDQP0tuQ.js → text-CZr46tp_.js} +1 -1
- package/dist/src/{text-D4lz-Jg_.js → text-Db-Wt2u2.js} +1 -1
- package/dist/src/{text-NWvfMfkF.js → text-DwYK5EBn.js} +1 -1
- package/dist/src/{text-BiNME7QG.cjs → text-nywWsRBM.cjs} +1 -1
- package/dist/src/{tokenUsageUtils-2wIvAhB3.js → tokenUsageUtils-CDet74yk.js} +1 -1
- package/dist/src/{tokenUsageUtils-4c780gFd.js → tokenUsageUtils-CmnQ0G2m.js} +1 -1
- package/dist/src/{tokenUsageUtils-C9odhsbW.cjs → tokenUsageUtils-_B-P8IAi.cjs} +1 -1
- package/dist/src/toolAttributes-BAjwcBf0.cjs +103 -0
- package/dist/src/toolAttributes-COVgDrBG.js +87 -0
- package/dist/src/toolAttributes-DJ9ZEKXD.js +86 -0
- package/dist/src/tracingOptions-BOP1FsRt.js +220 -0
- package/dist/src/tracingOptions-BvmDa_jH.js +219 -0
- package/dist/src/tracingOptions-DFBoE8O0.cjs +249 -0
- package/dist/src/tracingOptions-xhjOg2b1.js +221 -0
- package/dist/src/{transcription-D7Q0vJsh.js → transcription-BOXDoehT.js} +4 -4
- package/dist/src/{transcription-Bm2emLmJ.js → transcription-CpVdKc4P.js} +5 -5
- package/dist/src/{transcription-CZ4LG5hQ.cjs → transcription-D8kkPXg_.cjs} +9 -8
- package/dist/src/{transcription-84t4ALo2.js → transcription-Z94eV9LR.js} +5 -5
- package/dist/src/transform-BnSTnFlp.js +187 -0
- package/dist/src/transform-BnSXWmU_2.cjs +221 -0
- package/dist/src/{transform-DtooZqYY.js → transform-BufxPIQL.js} +8 -8
- package/dist/src/transform-CGt7Kt3y2.js +186 -0
- package/dist/src/transform-CrPGTsij.js +186 -0
- package/dist/src/{transform-Dg4LcO1Y.cjs → transform-DJkt81VY.cjs} +12 -11
- package/dist/src/{transform-B-b6Cq-q.js → transform-DtTfiGoh.js} +8 -8
- package/dist/src/{transform-_DpNB4qp.js → transform-Wp6s_5QE.js} +8 -8
- package/dist/src/{transformersAvailability-lvCCvuPT.js → transformersAvailability-0ThtPved.js} +1 -1
- package/dist/src/transformersAvailability-BYydDE5U.js +35 -0
- package/dist/src/{transformersAvailability-rJGPccjr.js → transformersAvailability-BvyU9vDD.js} +1 -1
- package/dist/src/{transformersAvailability-B22swDxr.cjs → transformersAvailability-BytPvKUW.cjs} +1 -1
- package/dist/src/{types-BVH9hjgW.js → types-BFevViUY.js} +113 -19
- package/dist/src/{types-BDjGOq4E.js → types-BJQBBPTP.js} +113 -19
- package/dist/src/{types-CgG2rKiW.cjs → types-CxJvaY2S.cjs} +211 -28
- package/dist/src/{types-DNRZVOue.js → types-D6glLbdF.js} +125 -26
- package/dist/src/{util-Dpmm_dAI.cjs → util-BHCAeuXx.cjs} +33 -7
- package/dist/src/{util-DFPeFkiV.js → util-CMrHV35u.js} +28 -8
- package/dist/src/{util-DvpHnLt0.cjs → util-COnzevXE.cjs} +29 -21
- package/dist/src/{util-BlFVL0UF.js → util-CYev3d-r.js} +22 -7
- package/dist/src/util-DGqkTb2-.js +327 -0
- package/dist/src/util-DNtUsus_.cjs +386 -0
- package/dist/src/{util-Dub0f_ej.js → util-DRfqa4xz.js} +17 -10
- package/dist/src/{util-BVXcTwXu.js → util-DTq3jq2z.js} +28 -8
- package/dist/src/{util-C-kmRosx.js → util-DeY58psG.js} +22 -7
- package/dist/src/util-DpV6KT5i.js +327 -0
- package/dist/src/{util-3pBZZb_H.js → util-DwNJzqOV.js} +45 -10
- package/dist/src/util-ETfU_sS9.js +328 -0
- package/dist/src/{util-A5_ZsQUn.cjs → util-NYQvo1C7.cjs} +25 -9
- package/dist/src/{util-DN0-b81k.js → util-X4KQgyVD.js} +28 -8
- package/dist/src/{util-BQOCAHQC.js → util-jZRrXe1P.js} +46 -11
- package/dist/src/{util-B9CNhyac.js → util-o2Qg5rZv.js} +22 -7
- package/dist/src/{utils-BUMN8orw.js → utils-B0lzitHZ.js} +2 -2
- package/dist/src/{utils-kt7lv30R.js → utils-BFOh20Gb.js} +2 -2
- package/dist/src/{utils-o8S5huU2.js → utils-BGY69tk_.js} +2 -2
- package/dist/src/{utils-DkVeShIB.cjs → utils-Ve6kuJsa.cjs} +3 -3
- package/dist/src/{version-CbuBKu2U.js → version-CHR-EFec.js} +2 -2
- package/dist/src/{version-CbpiUINz.js → version-F0YDgb7J.js} +2 -2
- package/dist/src/{version-D9zu9FWB.cjs → version-VzUqOBZk.cjs} +2 -2
- package/dist/src/{version-0frU0UTr.js → version-qVEN5qCm.js} +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +49 -23
- package/dist/src/app/assets/Report-vjzrbgce.js +0 -1
- package/dist/src/app/assets/index-B3NQ8HTd.js +0 -385
- package/dist/src/app/assets/index-Cli2yAXv.css +0 -1
- package/dist/src/app/assets/sync-IjzpWrOE.js +0 -4
- package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +0 -36
- package/dist/src/cache-BRkhlH3k.cjs +0 -3
- package/dist/src/cache-BlC6aeJ0.js +0 -3
- package/dist/src/cloud-CoD5OacT.js +0 -3
- package/dist/src/codex-sdk-1jm_qPHf.js +0 -3
- package/dist/src/codex-sdk-Danroptg.cjs +0 -2
- package/dist/src/evalResult-BBJAHAtw.cjs +0 -2
- package/dist/src/evalResult-BBK58h2B.js +0 -3
- package/dist/src/evalResult-spPqh1G_.js +0 -2
- package/dist/src/evaluator-DgLKaZk8.js +0 -3
- package/dist/src/fetch-8viavNv8.js +0 -3
- package/dist/src/graders-C84JI-m5.js +0 -2
- package/dist/src/graders-CBbd0K0Q.cjs +0 -2
- package/dist/src/graders-CbQqpHSN.js +0 -3
- package/dist/src/graders-DS42d3ZG.js +0 -2
- package/dist/src/image-BmilRNqO.js +0 -258
- package/dist/src/image-CxJoa3aW.cjs +0 -280
- package/dist/src/image-DsGRlkh7.js +0 -257
- package/dist/src/image-a_SGUobh.js +0 -257
- package/dist/src/providers-BuyzKt7C.js +0 -2
- package/dist/src/providers-C7lNVBjX.cjs +0 -3
- package/dist/src/providers-CCE2COJi2.js +0 -2
- package/dist/src/render-7uNJ2V14.js +0 -135
- package/dist/src/render-DlscvAUJ.js +0 -135
- package/dist/src/render-eui5p5mL.js +0 -136
- package/dist/src/render-tG6ir9_g.cjs +0 -165
- package/dist/src/rubyUtils-4hjGxvju.js +0 -3
- package/dist/src/rubyUtils-CO-tuszQ.cjs +0 -2
- package/dist/src/server-ByiF3qlg.js +0 -386
- package/dist/src/server-C0XKRNB_.cjs +0 -2
- package/dist/src/server-C_15p79-.js +0 -3
- package/dist/src/store-2OXm_eBY.js +0 -240
- package/dist/src/store-BELqNwvz.js +0 -3
- package/dist/src/store-uQZ4AjPe.cjs +0 -2
- package/dist/src/telemetry-DjNoC_n3.cjs +0 -2
- package/dist/src/telemetry-ZdPZc0fm.js +0 -3
- package/dist/src/transform-BQt0BeAW.js +0 -3
- package/dist/src/transform-Bq5oqC0s.cjs +0 -2
- package/dist/src/transform-C9izGX54.cjs +0 -228
- package/dist/src/transform-CwbAZ84V.js +0 -216
- package/dist/src/transform-DzCF-wqV.js +0 -213
- package/dist/src/transform-eGiUAv86.js +0 -216
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
1
|
+
const require_rolldown_runtime = require("./rolldown-runtime-D_mwlA32.cjs");
|
|
2
|
+
const require_logger = require("./logger-cfNpzI4o.cjs");
|
|
3
|
+
const require_esm = require("./esm-BIKakvNa.cjs");
|
|
3
4
|
let fs = require("fs");
|
|
4
|
-
fs =
|
|
5
|
+
fs = require_rolldown_runtime.__toESM(fs, 1);
|
|
5
6
|
let path = require("path");
|
|
6
|
-
path =
|
|
7
|
+
path = require_rolldown_runtime.__toESM(path, 1);
|
|
7
8
|
let os = require("os");
|
|
8
|
-
os =
|
|
9
|
+
os = require_rolldown_runtime.__toESM(os, 1);
|
|
9
10
|
let util = require("util");
|
|
10
11
|
let child_process = require("child_process");
|
|
11
12
|
//#region src/ruby/rubyUtils.ts
|
|
13
|
+
var rubyUtils_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
14
|
+
getSysExecutable: () => getSysExecutable,
|
|
15
|
+
runRuby: () => runRuby,
|
|
16
|
+
state: () => state,
|
|
17
|
+
tryPath: () => tryPath,
|
|
18
|
+
validateRubyPath: () => validateRubyPath
|
|
19
|
+
});
|
|
12
20
|
const execFileAsync = (0, util.promisify)(child_process.execFile);
|
|
13
21
|
/**
|
|
14
22
|
* Global state for Ruby executable path caching.
|
|
@@ -212,10 +220,10 @@ async function runRuby(scriptPath, method, args, options = {}) {
|
|
|
212
220
|
}
|
|
213
221
|
}
|
|
214
222
|
//#endregion
|
|
215
|
-
Object.defineProperty(exports, "
|
|
223
|
+
Object.defineProperty(exports, "rubyUtils_exports", {
|
|
216
224
|
enumerable: true,
|
|
217
225
|
get: function() {
|
|
218
|
-
return
|
|
226
|
+
return rubyUtils_exports;
|
|
219
227
|
}
|
|
220
228
|
});
|
|
221
229
|
Object.defineProperty(exports, "runRuby", {
|
|
@@ -224,23 +232,5 @@ Object.defineProperty(exports, "runRuby", {
|
|
|
224
232
|
return runRuby;
|
|
225
233
|
}
|
|
226
234
|
});
|
|
227
|
-
Object.defineProperty(exports, "state", {
|
|
228
|
-
enumerable: true,
|
|
229
|
-
get: function() {
|
|
230
|
-
return state;
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
Object.defineProperty(exports, "tryPath", {
|
|
234
|
-
enumerable: true,
|
|
235
|
-
get: function() {
|
|
236
|
-
return tryPath;
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
Object.defineProperty(exports, "validateRubyPath", {
|
|
240
|
-
enumerable: true,
|
|
241
|
-
get: function() {
|
|
242
|
-
return validateRubyPath;
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
235
|
|
|
246
|
-
//# sourceMappingURL=rubyUtils-
|
|
236
|
+
//# sourceMappingURL=rubyUtils-CqUWBZAt.cjs.map
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { a as logger } from "./logger-KD8JjCRJ.js";
|
|
2
|
+
//#region src/redteam/shared/runtimeTransform.ts
|
|
3
|
+
/**
|
|
4
|
+
* Runtime transform utility for applying strategy transforms per-turn.
|
|
5
|
+
*
|
|
6
|
+
* This module enables multi-turn attack providers (Hydra, Crescendo, etc.)
|
|
7
|
+
* to apply layer transforms (audio, base64, etc.) to each turn's prompt
|
|
8
|
+
* before sending to the target.
|
|
9
|
+
*
|
|
10
|
+
* It reuses existing strategy implementations, avoiding code duplication.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Applies strategy transforms to a prompt at runtime (per-turn).
|
|
14
|
+
* This is used by multi-turn attack providers to transform each turn's
|
|
15
|
+
* output before sending to the target.
|
|
16
|
+
*
|
|
17
|
+
* @param prompt - The text prompt to transform
|
|
18
|
+
* @param injectVar - The variable name used for injection (e.g., 'query')
|
|
19
|
+
* @param layerConfigs - Array of layer configurations to apply in order
|
|
20
|
+
* @param strategies - The loaded strategies array (to avoid circular imports)
|
|
21
|
+
* @param context - Optional context metadata to pass to layer strategies
|
|
22
|
+
* @returns TransformResult with transformed prompt and audio metadata
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // In Hydra provider:
|
|
27
|
+
* const result = await applyRuntimeTransforms(
|
|
28
|
+
* attackPrompt,
|
|
29
|
+
* 'query',
|
|
30
|
+
* ['audio', 'base64'],
|
|
31
|
+
* Strategies,
|
|
32
|
+
* { evaluationId: context?.evaluationId, purpose: context?.test?.metadata?.purpose }
|
|
33
|
+
* );
|
|
34
|
+
* // result.prompt = transformed, result.audio = { data, format } if audio
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
async function applyRuntimeTransforms(prompt, injectVar, layerConfigs, strategies, context) {
|
|
38
|
+
const originalPrompt = prompt;
|
|
39
|
+
if (!layerConfigs?.length) return {
|
|
40
|
+
prompt,
|
|
41
|
+
originalPrompt
|
|
42
|
+
};
|
|
43
|
+
logger.debug(`[RuntimeTransform] Applying ${layerConfigs.length} transforms to prompt`, {
|
|
44
|
+
hasContext: !!context,
|
|
45
|
+
hasEvaluationId: !!context?.evaluationId,
|
|
46
|
+
hasPurpose: !!context?.purpose
|
|
47
|
+
});
|
|
48
|
+
let testCase = {
|
|
49
|
+
vars: { [injectVar]: prompt },
|
|
50
|
+
assert: [],
|
|
51
|
+
metadata: {
|
|
52
|
+
pluginId: "runtime-transform",
|
|
53
|
+
evaluationId: context?.evaluationId,
|
|
54
|
+
testCaseId: context?.testCaseId,
|
|
55
|
+
purpose: context?.purpose,
|
|
56
|
+
goal: context?.goal
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
let audioApplied = false;
|
|
60
|
+
let imageApplied = false;
|
|
61
|
+
for (const layer of layerConfigs) {
|
|
62
|
+
const layerId = typeof layer === "string" ? layer : layer.id;
|
|
63
|
+
const layerConfig = typeof layer === "string" ? {} : layer.config || {};
|
|
64
|
+
const strategy = strategies.find((s) => s.id === layerId);
|
|
65
|
+
if (!strategy) {
|
|
66
|
+
logger.warn(`[RuntimeTransform] Unknown layer strategy: ${layerId}, skipping`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
logger.debug(`[RuntimeTransform] Applying layer: ${layerId}`);
|
|
70
|
+
if (layerId === "audio") audioApplied = true;
|
|
71
|
+
else if (layerId === "image") imageApplied = true;
|
|
72
|
+
try {
|
|
73
|
+
const transformed = (await strategy.action([testCase], injectVar, layerConfig))[0];
|
|
74
|
+
if (transformed) testCase = {
|
|
75
|
+
...transformed,
|
|
76
|
+
metadata: {
|
|
77
|
+
...testCase.metadata,
|
|
78
|
+
...transformed.metadata,
|
|
79
|
+
pluginId: testCase.metadata.pluginId
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
else logger.warn(`[RuntimeTransform] Layer ${layerId} returned no test cases`);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
const errorMsg = `Transform ${layerId} failed: ${error.message || "Unknown error"}`;
|
|
85
|
+
logger.error(`[RuntimeTransform] ${errorMsg}`, { error });
|
|
86
|
+
return {
|
|
87
|
+
prompt: originalPrompt,
|
|
88
|
+
originalPrompt,
|
|
89
|
+
error: errorMsg
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const transformedPrompt = String(testCase.vars?.[injectVar] ?? prompt);
|
|
94
|
+
logger.debug(`[RuntimeTransform] Transform complete`, {
|
|
95
|
+
originalLength: prompt.length,
|
|
96
|
+
resultLength: transformedPrompt.length,
|
|
97
|
+
layersApplied: layerConfigs.length,
|
|
98
|
+
audioApplied,
|
|
99
|
+
imageApplied
|
|
100
|
+
});
|
|
101
|
+
const displayVars = {};
|
|
102
|
+
if (testCase.vars) {
|
|
103
|
+
for (const [key, value] of Object.entries(testCase.vars)) if (key !== injectVar && typeof value === "string") displayVars[key] = value;
|
|
104
|
+
}
|
|
105
|
+
const result = {
|
|
106
|
+
prompt: transformedPrompt,
|
|
107
|
+
originalPrompt,
|
|
108
|
+
...Object.keys(displayVars).length > 0 && { displayVars },
|
|
109
|
+
metadata: testCase.metadata
|
|
110
|
+
};
|
|
111
|
+
const audioStorageKey = testCase.metadata?.audioStorageKey;
|
|
112
|
+
const imageStorageKey = testCase.metadata?.imageStorageKey;
|
|
113
|
+
if (audioApplied && transformedPrompt !== originalPrompt) {
|
|
114
|
+
const dataUrlMatch = transformedPrompt.match(/^data:audio\/([^;]+);base64,(.+)$/);
|
|
115
|
+
if (dataUrlMatch) result.audio = {
|
|
116
|
+
data: dataUrlMatch[2],
|
|
117
|
+
format: dataUrlMatch[1]
|
|
118
|
+
};
|
|
119
|
+
else result.audio = {
|
|
120
|
+
data: transformedPrompt,
|
|
121
|
+
format: "mp3"
|
|
122
|
+
};
|
|
123
|
+
if (audioStorageKey) logger.debug(`[RuntimeTransform] Audio stored to: ${audioStorageKey} (will be sanitized before DB save)`);
|
|
124
|
+
}
|
|
125
|
+
if (imageApplied && transformedPrompt !== originalPrompt) {
|
|
126
|
+
const dataUrlMatch = transformedPrompt.match(/^data:image\/([^;]+);base64,(.+)$/);
|
|
127
|
+
if (dataUrlMatch) result.image = {
|
|
128
|
+
data: dataUrlMatch[2],
|
|
129
|
+
format: dataUrlMatch[1]
|
|
130
|
+
};
|
|
131
|
+
else result.image = {
|
|
132
|
+
data: transformedPrompt,
|
|
133
|
+
format: "png"
|
|
134
|
+
};
|
|
135
|
+
if (imageStorageKey) logger.debug(`[RuntimeTransform] Image stored to: ${imageStorageKey} (will be sanitized before DB save)`);
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
//#endregion
|
|
140
|
+
export { applyRuntimeTransforms as t };
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=runtimeTransform-BJOpL9Yc.js.map
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { s as logger } from "./logger-BbY6ypFL.js";
|
|
3
|
+
//#region src/redteam/shared/runtimeTransform.ts
|
|
4
|
+
/**
|
|
5
|
+
* Runtime transform utility for applying strategy transforms per-turn.
|
|
6
|
+
*
|
|
7
|
+
* This module enables multi-turn attack providers (Hydra, Crescendo, etc.)
|
|
8
|
+
* to apply layer transforms (audio, base64, etc.) to each turn's prompt
|
|
9
|
+
* before sending to the target.
|
|
10
|
+
*
|
|
11
|
+
* It reuses existing strategy implementations, avoiding code duplication.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Applies strategy transforms to a prompt at runtime (per-turn).
|
|
15
|
+
* This is used by multi-turn attack providers to transform each turn's
|
|
16
|
+
* output before sending to the target.
|
|
17
|
+
*
|
|
18
|
+
* @param prompt - The text prompt to transform
|
|
19
|
+
* @param injectVar - The variable name used for injection (e.g., 'query')
|
|
20
|
+
* @param layerConfigs - Array of layer configurations to apply in order
|
|
21
|
+
* @param strategies - The loaded strategies array (to avoid circular imports)
|
|
22
|
+
* @param context - Optional context metadata to pass to layer strategies
|
|
23
|
+
* @returns TransformResult with transformed prompt and audio metadata
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // In Hydra provider:
|
|
28
|
+
* const result = await applyRuntimeTransforms(
|
|
29
|
+
* attackPrompt,
|
|
30
|
+
* 'query',
|
|
31
|
+
* ['audio', 'base64'],
|
|
32
|
+
* Strategies,
|
|
33
|
+
* { evaluationId: context?.evaluationId, purpose: context?.test?.metadata?.purpose }
|
|
34
|
+
* );
|
|
35
|
+
* // result.prompt = transformed, result.audio = { data, format } if audio
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
async function applyRuntimeTransforms(prompt, injectVar, layerConfigs, strategies, context) {
|
|
39
|
+
const originalPrompt = prompt;
|
|
40
|
+
if (!layerConfigs?.length) return {
|
|
41
|
+
prompt,
|
|
42
|
+
originalPrompt
|
|
43
|
+
};
|
|
44
|
+
logger.debug(`[RuntimeTransform] Applying ${layerConfigs.length} transforms to prompt`, {
|
|
45
|
+
hasContext: !!context,
|
|
46
|
+
hasEvaluationId: !!context?.evaluationId,
|
|
47
|
+
hasPurpose: !!context?.purpose
|
|
48
|
+
});
|
|
49
|
+
let testCase = {
|
|
50
|
+
vars: { [injectVar]: prompt },
|
|
51
|
+
assert: [],
|
|
52
|
+
metadata: {
|
|
53
|
+
pluginId: "runtime-transform",
|
|
54
|
+
evaluationId: context?.evaluationId,
|
|
55
|
+
testCaseId: context?.testCaseId,
|
|
56
|
+
purpose: context?.purpose,
|
|
57
|
+
goal: context?.goal
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
let audioApplied = false;
|
|
61
|
+
let imageApplied = false;
|
|
62
|
+
for (const layer of layerConfigs) {
|
|
63
|
+
const layerId = typeof layer === "string" ? layer : layer.id;
|
|
64
|
+
const layerConfig = typeof layer === "string" ? {} : layer.config || {};
|
|
65
|
+
const strategy = strategies.find((s) => s.id === layerId);
|
|
66
|
+
if (!strategy) {
|
|
67
|
+
logger.warn(`[RuntimeTransform] Unknown layer strategy: ${layerId}, skipping`);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
logger.debug(`[RuntimeTransform] Applying layer: ${layerId}`);
|
|
71
|
+
if (layerId === "audio") audioApplied = true;
|
|
72
|
+
else if (layerId === "image") imageApplied = true;
|
|
73
|
+
try {
|
|
74
|
+
const transformed = (await strategy.action([testCase], injectVar, layerConfig))[0];
|
|
75
|
+
if (transformed) testCase = {
|
|
76
|
+
...transformed,
|
|
77
|
+
metadata: {
|
|
78
|
+
...testCase.metadata,
|
|
79
|
+
...transformed.metadata,
|
|
80
|
+
pluginId: testCase.metadata.pluginId
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
else logger.warn(`[RuntimeTransform] Layer ${layerId} returned no test cases`);
|
|
84
|
+
} catch (error) {
|
|
85
|
+
const errorMsg = `Transform ${layerId} failed: ${error.message || "Unknown error"}`;
|
|
86
|
+
logger.error(`[RuntimeTransform] ${errorMsg}`, { error });
|
|
87
|
+
return {
|
|
88
|
+
prompt: originalPrompt,
|
|
89
|
+
originalPrompt,
|
|
90
|
+
error: errorMsg
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const transformedPrompt = String(testCase.vars?.[injectVar] ?? prompt);
|
|
95
|
+
logger.debug(`[RuntimeTransform] Transform complete`, {
|
|
96
|
+
originalLength: prompt.length,
|
|
97
|
+
resultLength: transformedPrompt.length,
|
|
98
|
+
layersApplied: layerConfigs.length,
|
|
99
|
+
audioApplied,
|
|
100
|
+
imageApplied
|
|
101
|
+
});
|
|
102
|
+
const displayVars = {};
|
|
103
|
+
if (testCase.vars) {
|
|
104
|
+
for (const [key, value] of Object.entries(testCase.vars)) if (key !== injectVar && typeof value === "string") displayVars[key] = value;
|
|
105
|
+
}
|
|
106
|
+
const result = {
|
|
107
|
+
prompt: transformedPrompt,
|
|
108
|
+
originalPrompt,
|
|
109
|
+
...Object.keys(displayVars).length > 0 && { displayVars },
|
|
110
|
+
metadata: testCase.metadata
|
|
111
|
+
};
|
|
112
|
+
const audioStorageKey = testCase.metadata?.audioStorageKey;
|
|
113
|
+
const imageStorageKey = testCase.metadata?.imageStorageKey;
|
|
114
|
+
if (audioApplied && transformedPrompt !== originalPrompt) {
|
|
115
|
+
const dataUrlMatch = transformedPrompt.match(/^data:audio\/([^;]+);base64,(.+)$/);
|
|
116
|
+
if (dataUrlMatch) result.audio = {
|
|
117
|
+
data: dataUrlMatch[2],
|
|
118
|
+
format: dataUrlMatch[1]
|
|
119
|
+
};
|
|
120
|
+
else result.audio = {
|
|
121
|
+
data: transformedPrompt,
|
|
122
|
+
format: "mp3"
|
|
123
|
+
};
|
|
124
|
+
if (audioStorageKey) logger.debug(`[RuntimeTransform] Audio stored to: ${audioStorageKey} (will be sanitized before DB save)`);
|
|
125
|
+
}
|
|
126
|
+
if (imageApplied && transformedPrompt !== originalPrompt) {
|
|
127
|
+
const dataUrlMatch = transformedPrompt.match(/^data:image\/([^;]+);base64,(.+)$/);
|
|
128
|
+
if (dataUrlMatch) result.image = {
|
|
129
|
+
data: dataUrlMatch[2],
|
|
130
|
+
format: dataUrlMatch[1]
|
|
131
|
+
};
|
|
132
|
+
else result.image = {
|
|
133
|
+
data: transformedPrompt,
|
|
134
|
+
format: "png"
|
|
135
|
+
};
|
|
136
|
+
if (imageStorageKey) logger.debug(`[RuntimeTransform] Image stored to: ${imageStorageKey} (will be sanitized before DB save)`);
|
|
137
|
+
}
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
//#endregion
|
|
141
|
+
export { applyRuntimeTransforms as t };
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=runtimeTransform-Dgh_D7DU.js.map
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { a as logger } from "./logger-Ct2S6Yx-.js";
|
|
2
|
+
//#region src/redteam/shared/runtimeTransform.ts
|
|
3
|
+
/**
|
|
4
|
+
* Runtime transform utility for applying strategy transforms per-turn.
|
|
5
|
+
*
|
|
6
|
+
* This module enables multi-turn attack providers (Hydra, Crescendo, etc.)
|
|
7
|
+
* to apply layer transforms (audio, base64, etc.) to each turn's prompt
|
|
8
|
+
* before sending to the target.
|
|
9
|
+
*
|
|
10
|
+
* It reuses existing strategy implementations, avoiding code duplication.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Applies strategy transforms to a prompt at runtime (per-turn).
|
|
14
|
+
* This is used by multi-turn attack providers to transform each turn's
|
|
15
|
+
* output before sending to the target.
|
|
16
|
+
*
|
|
17
|
+
* @param prompt - The text prompt to transform
|
|
18
|
+
* @param injectVar - The variable name used for injection (e.g., 'query')
|
|
19
|
+
* @param layerConfigs - Array of layer configurations to apply in order
|
|
20
|
+
* @param strategies - The loaded strategies array (to avoid circular imports)
|
|
21
|
+
* @param context - Optional context metadata to pass to layer strategies
|
|
22
|
+
* @returns TransformResult with transformed prompt and audio metadata
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // In Hydra provider:
|
|
27
|
+
* const result = await applyRuntimeTransforms(
|
|
28
|
+
* attackPrompt,
|
|
29
|
+
* 'query',
|
|
30
|
+
* ['audio', 'base64'],
|
|
31
|
+
* Strategies,
|
|
32
|
+
* { evaluationId: context?.evaluationId, purpose: context?.test?.metadata?.purpose }
|
|
33
|
+
* );
|
|
34
|
+
* // result.prompt = transformed, result.audio = { data, format } if audio
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
async function applyRuntimeTransforms(prompt, injectVar, layerConfigs, strategies, context) {
|
|
38
|
+
const originalPrompt = prompt;
|
|
39
|
+
if (!layerConfigs?.length) return {
|
|
40
|
+
prompt,
|
|
41
|
+
originalPrompt
|
|
42
|
+
};
|
|
43
|
+
logger.debug(`[RuntimeTransform] Applying ${layerConfigs.length} transforms to prompt`, {
|
|
44
|
+
hasContext: !!context,
|
|
45
|
+
hasEvaluationId: !!context?.evaluationId,
|
|
46
|
+
hasPurpose: !!context?.purpose
|
|
47
|
+
});
|
|
48
|
+
let testCase = {
|
|
49
|
+
vars: { [injectVar]: prompt },
|
|
50
|
+
assert: [],
|
|
51
|
+
metadata: {
|
|
52
|
+
pluginId: "runtime-transform",
|
|
53
|
+
evaluationId: context?.evaluationId,
|
|
54
|
+
testCaseId: context?.testCaseId,
|
|
55
|
+
purpose: context?.purpose,
|
|
56
|
+
goal: context?.goal
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
let audioApplied = false;
|
|
60
|
+
let imageApplied = false;
|
|
61
|
+
for (const layer of layerConfigs) {
|
|
62
|
+
const layerId = typeof layer === "string" ? layer : layer.id;
|
|
63
|
+
const layerConfig = typeof layer === "string" ? {} : layer.config || {};
|
|
64
|
+
const strategy = strategies.find((s) => s.id === layerId);
|
|
65
|
+
if (!strategy) {
|
|
66
|
+
logger.warn(`[RuntimeTransform] Unknown layer strategy: ${layerId}, skipping`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
logger.debug(`[RuntimeTransform] Applying layer: ${layerId}`);
|
|
70
|
+
if (layerId === "audio") audioApplied = true;
|
|
71
|
+
else if (layerId === "image") imageApplied = true;
|
|
72
|
+
try {
|
|
73
|
+
const transformed = (await strategy.action([testCase], injectVar, layerConfig))[0];
|
|
74
|
+
if (transformed) testCase = {
|
|
75
|
+
...transformed,
|
|
76
|
+
metadata: {
|
|
77
|
+
...testCase.metadata,
|
|
78
|
+
...transformed.metadata,
|
|
79
|
+
pluginId: testCase.metadata.pluginId
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
else logger.warn(`[RuntimeTransform] Layer ${layerId} returned no test cases`);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
const errorMsg = `Transform ${layerId} failed: ${error.message || "Unknown error"}`;
|
|
85
|
+
logger.error(`[RuntimeTransform] ${errorMsg}`, { error });
|
|
86
|
+
return {
|
|
87
|
+
prompt: originalPrompt,
|
|
88
|
+
originalPrompt,
|
|
89
|
+
error: errorMsg
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const transformedPrompt = String(testCase.vars?.[injectVar] ?? prompt);
|
|
94
|
+
logger.debug(`[RuntimeTransform] Transform complete`, {
|
|
95
|
+
originalLength: prompt.length,
|
|
96
|
+
resultLength: transformedPrompt.length,
|
|
97
|
+
layersApplied: layerConfigs.length,
|
|
98
|
+
audioApplied,
|
|
99
|
+
imageApplied
|
|
100
|
+
});
|
|
101
|
+
const displayVars = {};
|
|
102
|
+
if (testCase.vars) {
|
|
103
|
+
for (const [key, value] of Object.entries(testCase.vars)) if (key !== injectVar && typeof value === "string") displayVars[key] = value;
|
|
104
|
+
}
|
|
105
|
+
const result = {
|
|
106
|
+
prompt: transformedPrompt,
|
|
107
|
+
originalPrompt,
|
|
108
|
+
...Object.keys(displayVars).length > 0 && { displayVars },
|
|
109
|
+
metadata: testCase.metadata
|
|
110
|
+
};
|
|
111
|
+
const audioStorageKey = testCase.metadata?.audioStorageKey;
|
|
112
|
+
const imageStorageKey = testCase.metadata?.imageStorageKey;
|
|
113
|
+
if (audioApplied && transformedPrompt !== originalPrompt) {
|
|
114
|
+
const dataUrlMatch = transformedPrompt.match(/^data:audio\/([^;]+);base64,(.+)$/);
|
|
115
|
+
if (dataUrlMatch) result.audio = {
|
|
116
|
+
data: dataUrlMatch[2],
|
|
117
|
+
format: dataUrlMatch[1]
|
|
118
|
+
};
|
|
119
|
+
else result.audio = {
|
|
120
|
+
data: transformedPrompt,
|
|
121
|
+
format: "mp3"
|
|
122
|
+
};
|
|
123
|
+
if (audioStorageKey) logger.debug(`[RuntimeTransform] Audio stored to: ${audioStorageKey} (will be sanitized before DB save)`);
|
|
124
|
+
}
|
|
125
|
+
if (imageApplied && transformedPrompt !== originalPrompt) {
|
|
126
|
+
const dataUrlMatch = transformedPrompt.match(/^data:image\/([^;]+);base64,(.+)$/);
|
|
127
|
+
if (dataUrlMatch) result.image = {
|
|
128
|
+
data: dataUrlMatch[2],
|
|
129
|
+
format: dataUrlMatch[1]
|
|
130
|
+
};
|
|
131
|
+
else result.image = {
|
|
132
|
+
data: transformedPrompt,
|
|
133
|
+
format: "png"
|
|
134
|
+
};
|
|
135
|
+
if (imageStorageKey) logger.debug(`[RuntimeTransform] Image stored to: ${imageStorageKey} (will be sanitized before DB save)`);
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
//#endregion
|
|
140
|
+
export { applyRuntimeTransforms as t };
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=runtimeTransform-DigbjU1r.js.map
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
const require_logger = require("./logger-cfNpzI4o.cjs");
|
|
2
|
+
//#region src/redteam/shared/runtimeTransform.ts
|
|
3
|
+
/**
|
|
4
|
+
* Runtime transform utility for applying strategy transforms per-turn.
|
|
5
|
+
*
|
|
6
|
+
* This module enables multi-turn attack providers (Hydra, Crescendo, etc.)
|
|
7
|
+
* to apply layer transforms (audio, base64, etc.) to each turn's prompt
|
|
8
|
+
* before sending to the target.
|
|
9
|
+
*
|
|
10
|
+
* It reuses existing strategy implementations, avoiding code duplication.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Applies strategy transforms to a prompt at runtime (per-turn).
|
|
14
|
+
* This is used by multi-turn attack providers to transform each turn's
|
|
15
|
+
* output before sending to the target.
|
|
16
|
+
*
|
|
17
|
+
* @param prompt - The text prompt to transform
|
|
18
|
+
* @param injectVar - The variable name used for injection (e.g., 'query')
|
|
19
|
+
* @param layerConfigs - Array of layer configurations to apply in order
|
|
20
|
+
* @param strategies - The loaded strategies array (to avoid circular imports)
|
|
21
|
+
* @param context - Optional context metadata to pass to layer strategies
|
|
22
|
+
* @returns TransformResult with transformed prompt and audio metadata
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // In Hydra provider:
|
|
27
|
+
* const result = await applyRuntimeTransforms(
|
|
28
|
+
* attackPrompt,
|
|
29
|
+
* 'query',
|
|
30
|
+
* ['audio', 'base64'],
|
|
31
|
+
* Strategies,
|
|
32
|
+
* { evaluationId: context?.evaluationId, purpose: context?.test?.metadata?.purpose }
|
|
33
|
+
* );
|
|
34
|
+
* // result.prompt = transformed, result.audio = { data, format } if audio
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
async function applyRuntimeTransforms(prompt, injectVar, layerConfigs, strategies, context) {
|
|
38
|
+
const originalPrompt = prompt;
|
|
39
|
+
if (!layerConfigs?.length) return {
|
|
40
|
+
prompt,
|
|
41
|
+
originalPrompt
|
|
42
|
+
};
|
|
43
|
+
require_logger.logger.debug(`[RuntimeTransform] Applying ${layerConfigs.length} transforms to prompt`, {
|
|
44
|
+
hasContext: !!context,
|
|
45
|
+
hasEvaluationId: !!context?.evaluationId,
|
|
46
|
+
hasPurpose: !!context?.purpose
|
|
47
|
+
});
|
|
48
|
+
let testCase = {
|
|
49
|
+
vars: { [injectVar]: prompt },
|
|
50
|
+
assert: [],
|
|
51
|
+
metadata: {
|
|
52
|
+
pluginId: "runtime-transform",
|
|
53
|
+
evaluationId: context?.evaluationId,
|
|
54
|
+
testCaseId: context?.testCaseId,
|
|
55
|
+
purpose: context?.purpose,
|
|
56
|
+
goal: context?.goal
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
let audioApplied = false;
|
|
60
|
+
let imageApplied = false;
|
|
61
|
+
for (const layer of layerConfigs) {
|
|
62
|
+
const layerId = typeof layer === "string" ? layer : layer.id;
|
|
63
|
+
const layerConfig = typeof layer === "string" ? {} : layer.config || {};
|
|
64
|
+
const strategy = strategies.find((s) => s.id === layerId);
|
|
65
|
+
if (!strategy) {
|
|
66
|
+
require_logger.logger.warn(`[RuntimeTransform] Unknown layer strategy: ${layerId}, skipping`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
require_logger.logger.debug(`[RuntimeTransform] Applying layer: ${layerId}`);
|
|
70
|
+
if (layerId === "audio") audioApplied = true;
|
|
71
|
+
else if (layerId === "image") imageApplied = true;
|
|
72
|
+
try {
|
|
73
|
+
const transformed = (await strategy.action([testCase], injectVar, layerConfig))[0];
|
|
74
|
+
if (transformed) testCase = {
|
|
75
|
+
...transformed,
|
|
76
|
+
metadata: {
|
|
77
|
+
...testCase.metadata,
|
|
78
|
+
...transformed.metadata,
|
|
79
|
+
pluginId: testCase.metadata.pluginId
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
else require_logger.logger.warn(`[RuntimeTransform] Layer ${layerId} returned no test cases`);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
const errorMsg = `Transform ${layerId} failed: ${error.message || "Unknown error"}`;
|
|
85
|
+
require_logger.logger.error(`[RuntimeTransform] ${errorMsg}`, { error });
|
|
86
|
+
return {
|
|
87
|
+
prompt: originalPrompt,
|
|
88
|
+
originalPrompt,
|
|
89
|
+
error: errorMsg
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const transformedPrompt = String(testCase.vars?.[injectVar] ?? prompt);
|
|
94
|
+
require_logger.logger.debug(`[RuntimeTransform] Transform complete`, {
|
|
95
|
+
originalLength: prompt.length,
|
|
96
|
+
resultLength: transformedPrompt.length,
|
|
97
|
+
layersApplied: layerConfigs.length,
|
|
98
|
+
audioApplied,
|
|
99
|
+
imageApplied
|
|
100
|
+
});
|
|
101
|
+
const displayVars = {};
|
|
102
|
+
if (testCase.vars) {
|
|
103
|
+
for (const [key, value] of Object.entries(testCase.vars)) if (key !== injectVar && typeof value === "string") displayVars[key] = value;
|
|
104
|
+
}
|
|
105
|
+
const result = {
|
|
106
|
+
prompt: transformedPrompt,
|
|
107
|
+
originalPrompt,
|
|
108
|
+
...Object.keys(displayVars).length > 0 && { displayVars },
|
|
109
|
+
metadata: testCase.metadata
|
|
110
|
+
};
|
|
111
|
+
const audioStorageKey = testCase.metadata?.audioStorageKey;
|
|
112
|
+
const imageStorageKey = testCase.metadata?.imageStorageKey;
|
|
113
|
+
if (audioApplied && transformedPrompt !== originalPrompt) {
|
|
114
|
+
const dataUrlMatch = transformedPrompt.match(/^data:audio\/([^;]+);base64,(.+)$/);
|
|
115
|
+
if (dataUrlMatch) result.audio = {
|
|
116
|
+
data: dataUrlMatch[2],
|
|
117
|
+
format: dataUrlMatch[1]
|
|
118
|
+
};
|
|
119
|
+
else result.audio = {
|
|
120
|
+
data: transformedPrompt,
|
|
121
|
+
format: "mp3"
|
|
122
|
+
};
|
|
123
|
+
if (audioStorageKey) require_logger.logger.debug(`[RuntimeTransform] Audio stored to: ${audioStorageKey} (will be sanitized before DB save)`);
|
|
124
|
+
}
|
|
125
|
+
if (imageApplied && transformedPrompt !== originalPrompt) {
|
|
126
|
+
const dataUrlMatch = transformedPrompt.match(/^data:image\/([^;]+);base64,(.+)$/);
|
|
127
|
+
if (dataUrlMatch) result.image = {
|
|
128
|
+
data: dataUrlMatch[2],
|
|
129
|
+
format: dataUrlMatch[1]
|
|
130
|
+
};
|
|
131
|
+
else result.image = {
|
|
132
|
+
data: transformedPrompt,
|
|
133
|
+
format: "png"
|
|
134
|
+
};
|
|
135
|
+
if (imageStorageKey) require_logger.logger.debug(`[RuntimeTransform] Image stored to: ${imageStorageKey} (will be sanitized before DB save)`);
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
//#endregion
|
|
140
|
+
Object.defineProperty(exports, "applyRuntimeTransforms", {
|
|
141
|
+
enumerable: true,
|
|
142
|
+
get: function() {
|
|
143
|
+
return applyRuntimeTransforms;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
//# sourceMappingURL=runtimeTransform-ON3YYILw.cjs.map
|