promptfoo 0.121.4 → 0.121.7
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-DQkFNqE9.js → ListApp-DLmM02JS.js} +1 -1
- package/dist/src/{accounts-DhMYUUbu.js → accounts-Ca7WIoPY.js} +12 -7
- package/dist/src/{accounts-F9d_5sMC.js → accounts-CjFnOPmb.js} +14 -9
- package/dist/src/{accounts-Dy17bs4D.cjs → accounts-CmWzeD2d.cjs} +16 -10
- package/dist/src/{accounts-DdJ2pHMI.js → accounts-DanM1wq_.js} +13 -8
- package/dist/src/{agentic-utils-qFlm6zes.js → agentic-utils-CJ0j3fBi.js} +3 -3
- package/dist/src/{agentic-utils-w68v6_Dz.js → agentic-utils-DDEGRV9v.js} +3 -3
- package/dist/src/{agentic-utils-BpX5b23w.cjs → agentic-utils-DvPWSUpb.cjs} +8 -7
- package/dist/src/{agentic-utils-P172hM8B.js → agentic-utils-TxUEMPYS.js} +2 -2
- package/dist/src/{agents-BahDpe5G.cjs → agents-B4sRuXg3.cjs} +7 -6
- package/dist/src/{agents-pQeBEXMm.js → agents-B8q7h_ek.js} +5 -5
- package/dist/src/{agents-CgaMXvLM.js → agents-CBgJvRkB.js} +21 -10
- package/dist/src/{agents-C-R_jfzI.js → agents-CYn2n3QP.js} +4 -4
- package/dist/src/{agents-8FDnTriG.js → agents-D-vDNFx4.js} +21 -10
- package/dist/src/{agents-aYPQLf8W.js → agents-LrHuQqr1.js} +20 -9
- package/dist/src/{agents-DJ35I3Nt.js → agents-QGg76OF-.js} +5 -5
- package/dist/src/{agents-D7-HGxUj.cjs → agents-eHZ9nlgA.cjs} +21 -10
- package/dist/src/{aimlapi-sgYnkE54.js → aimlapi-CJEbQ0o6.js} +7 -7
- package/dist/src/{aimlapi-BD6J9oKt.js → aimlapi-D5HXzZ0s.js} +6 -6
- package/dist/src/{aimlapi-qcK4OT55.cjs → aimlapi-T6HGNxNe.cjs} +7 -7
- package/dist/src/{aimlapi-BCq3MHeL.js → aimlapi-eYv3a_DK.js} +7 -7
- package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
- package/dist/src/app/assets/Report-BNHJKN35.js +1 -0
- package/dist/src/app/assets/index-BnT6P6sF.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 +31 -6
- package/dist/src/{audio-COrn8rM6.js → audio-BqnRvcWG.js} +3 -3
- package/dist/src/{audio-DcVKoInv.js → audio-CPMtV1yR.js} +4 -4
- package/dist/src/{audio-B7izf48x.js → audio-DyiebVB3.js} +4 -4
- package/dist/src/{audio-BQtNuYBj.cjs → audio-FnxbEnSE.cjs} +4 -4
- package/dist/src/authoritativeMarkupInjection-BZIywVjG.js +74 -0
- package/dist/src/authoritativeMarkupInjection-DyAXAsSr.js +75 -0
- package/dist/src/authoritativeMarkupInjection-F2gBw0lN.cjs +74 -0
- package/dist/src/authoritativeMarkupInjection-QEQmFS83.js +74 -0
- package/dist/src/{base-PYJvBE1i.js → base-CKLo890h.js} +4 -3
- package/dist/src/{base-fZ9wgg50.js → base-Co80MMCi.js} +5 -4
- package/dist/src/{base-D-670DX8.cjs → base-DGJW48uz.cjs} +5 -4
- package/dist/src/{base-yrI1Yal4.js → base-E9I8zXjz.js} +5 -4
- package/dist/src/bestOfN-B3wNzjSB.js +137 -0
- package/dist/src/bestOfN-BBsO41z4.js +136 -0
- package/dist/src/bestOfN-CAwmg5UL.cjs +140 -0
- package/dist/src/bestOfN-_kTi8Bxe.js +136 -0
- package/dist/src/{blobs-D2FAd1Q5.cjs → blobs-B0977K1O.cjs} +7 -6
- package/dist/src/{blobs-BCZavS8s.js → blobs-CeFdPn_T.js} +3 -3
- package/dist/src/{blobs-BQWqnnvL.js → blobs-DODuTK-a.js} +3 -3
- package/dist/src/{blobs-C-F78Kfn.js → blobs-Dwef1Ao1.js} +2 -2
- package/dist/src/{cache-BIyPcp5v.cjs → cache-CPGUA4Yl.cjs} +135 -25
- package/dist/src/cache-Cf7b4pWE.js +3 -0
- package/dist/src/{cache-D5NZmMiT.js → cache-DIXbtkNO.js} +125 -10
- package/dist/src/{cache-mb7c8hbp.js → cache-DpPWrkTE.js} +128 -12
- package/dist/src/{cache-C4Xb-hNb.js → cache-roFAE0cI.js} +126 -11
- package/dist/src/{chat-I9izLm49.js → chat-CUCorGiL.js} +12 -12
- package/dist/src/{chat-BPXSW8Bv.cjs → chat-DG1wG4w0.cjs} +6 -6
- package/dist/src/{chat-BfPaS15_.js → chat-Dabu84Br.js} +12 -12
- package/dist/src/{chat-Dr3DUQ0D.js → chat-DqUFcWI0.js} +12 -12
- package/dist/src/{chat-CclRbxGf.cjs → chat-DxTDQ83C.cjs} +14 -13
- package/dist/src/{chat-MKxMnZJZ.js → chat-GmlolEwo.js} +4 -4
- package/dist/src/{chat-0bwXjVP0.js → chat-TP8Qifkh.js} +6 -6
- package/dist/src/{chat-mW0ORo8G.js → chat-iwaM5UTQ.js} +6 -6
- package/dist/src/{chatkit-zUIVoDos.js → chatkit-B6DWi70Q.js} +4 -4
- package/dist/src/{chatkit-BoWoSgXl.cjs → chatkit-BYveR48_.cjs} +6 -5
- package/dist/src/{chatkit-Cv6AhukM.js → chatkit-fARZwEfV.js} +3 -3
- package/dist/src/{chatkit-CJnHRRMM.js → chatkit-lb6FK02w.js} +4 -4
- package/dist/src/{claude-agent-sdk-Dtq_L-Sc.js → claude-agent-sdk-BQNp_y-F.js} +212 -67
- package/dist/src/{claude-agent-sdk-BQNuLaAK.js → claude-agent-sdk-D5Jl0SDh.js} +212 -67
- package/dist/src/{claude-agent-sdk-CPJo3dBQ.cjs → claude-agent-sdk-DH416NBD.cjs} +218 -72
- package/dist/src/{claude-agent-sdk-nfAIcxNf.js → claude-agent-sdk-x1XJ1-pU.js} +212 -67
- package/dist/src/{cloud-DQZ5sVjW.js → cloud-D3DiFqH6.js} +3 -3
- package/dist/src/cloud-p96PA4MH.js +3 -0
- package/dist/src/{cloudflare-ai-BIB567w6.js → cloudflare-ai-B6NVI3ax.js} +4 -4
- package/dist/src/{cloudflare-ai-Dl3N9OVD.cjs → cloudflare-ai-CEAW-xQa.cjs} +6 -6
- package/dist/src/{cloudflare-ai-DlKr0rY7.js → cloudflare-ai-RFSojyXG.js} +6 -6
- package/dist/src/{cloudflare-ai-DGLte7Py.js → cloudflare-ai-r4tbYmWU.js} +6 -6
- package/dist/src/{cloudflare-gateway-CiIZHU0Q.js → cloudflare-gateway-BCkLouto.js} +5 -5
- package/dist/src/{cloudflare-gateway-DI1HNP5F.js → cloudflare-gateway-BaZ4insB.js} +3 -3
- package/dist/src/{cloudflare-gateway-BDZrYydE.js → cloudflare-gateway-CF-Vb-2Z.js} +5 -5
- package/dist/src/{cloudflare-gateway-BYDp495F.cjs → cloudflare-gateway-TJMLBj6I.cjs} +5 -5
- package/dist/src/codex-app-server-B8KHEiF4.js +1915 -0
- package/dist/src/codex-app-server-CnrLBCeA.cjs +1921 -0
- package/dist/src/codex-app-server-DIXZ230V.js +1915 -0
- package/dist/src/codex-app-server-Dd22dC_N.js +1916 -0
- package/dist/src/{codex-sdk-CpqiOqDO.js → codex-sdk-B6Wah8Pa.js} +6 -6
- package/dist/src/codex-sdk-BGjVAk23.js +3 -0
- package/dist/src/{codex-sdk-C2_M2pl_.cjs → codex-sdk-CFF6gUyi.cjs} +18 -10
- package/dist/src/{codex-sdk-Rtky3M4I.js → codex-sdk-CmQABzV3.js} +6 -6
- package/dist/src/{codex-sdk-CErXn7qh.js → codex-sdk-D2d54RL8.js} +5 -5
- package/dist/src/{cometapi-CtJ-mS8R.js → cometapi-Bu9B8NUY.js} +8 -8
- package/dist/src/{cometapi-DT-jlVCB.js → cometapi-CtzNCHKu.js} +7 -7
- package/dist/src/{cometapi-UVOryo4W.cjs → cometapi-DHCDlQUI.cjs} +8 -8
- package/dist/src/{cometapi-BUlt_ELa.js → cometapi-OBILPLlu.js} +8 -8
- package/dist/src/{completion-HUe8wDhZ.js → completion-CO2e1_62.js} +6 -6
- package/dist/src/{completion-BozdoXba.cjs → completion-CSYfl2cd.cjs} +6 -6
- package/dist/src/{completion-x0a_c2y1.js → completion-DZNxcyfG.js} +6 -6
- package/dist/src/{completion-Dnxn7E-j.js → completion-sNvCLTAP.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-CwDVU5xr.js → createHash-CGVzWdjj.js} +1 -1
- package/dist/src/{createHash-B7KvgoOD.cjs → createHash-CSiqnK5P.cjs} +2 -2
- package/dist/src/{createHash-ChI45QR1.js → createHash-CgRvs4Fn.js} +1 -1
- package/dist/src/crescendo-BXEJK_bi.cjs +704 -0
- package/dist/src/crescendo-CU_Y2i-m.js +702 -0
- package/dist/src/crescendo-J1Xx4_zb.js +703 -0
- package/dist/src/crescendo-QiaSLW0d.js +701 -0
- package/dist/src/custom-BJfP00Bh.js +619 -0
- package/dist/src/custom-CZVn-1-r.js +620 -0
- package/dist/src/custom-Cqia7M0D.cjs +621 -0
- package/dist/src/custom-notggYVl.js +618 -0
- package/dist/src/{docker-DCgsveLD.js → docker-4D1eL6Gq.js} +6 -6
- package/dist/src/{docker-ClnmCf1Z.js → docker-BBv1WUDu.js} +5 -5
- package/dist/src/{docker-DS4_Osau.cjs → docker-D06JUoe2.cjs} +6 -6
- package/dist/src/{docker-CQmlA2NU.js → docker-DdJQBxK9.js} +6 -6
- package/dist/src/{embedding-D3xTseo7.js → embedding--UZVe4_7.js} +6 -6
- package/dist/src/{embedding-I45KG3o7.cjs → embedding-BbrwopfX.cjs} +6 -6
- package/dist/src/{embedding-nFbumxcv.js → embedding-Bi3rxrZF.js} +5 -5
- package/dist/src/{embedding-DD9wa3ae.js → embedding-C251p1-8.js} +6 -6
- package/dist/src/{errors-Cw810C93.js → errors-9PcUL8BC.js} +1 -1
- package/dist/src/{esm-Dh4dOLlt.js → esm-B6whoAcf.js} +2 -2
- package/dist/src/{esm-CtEPLdAj.cjs → esm-BIKakvNa.cjs} +8 -7
- package/dist/src/{esm-C7PnfdF8.js → esm-BTK1W7lG.js} +1 -1
- package/dist/src/{esm-tVgYPY-f.js → esm-Bexx2PFc.js} +2 -2
- package/dist/src/{eval-u4UVafl6.js → eval-0VRANImH.js} +21 -21
- package/dist/src/{eval-CzJFfFO9.js → eval-DscR5iOM.js} +1 -1
- package/dist/src/{evalResult-Bgm9ZH31.js → evalResult-2RRJvFyB.js} +41 -16
- package/dist/src/{evalResult-KZqXl4XP.cjs → evalResult-CvtS8h8u.cjs} +51 -15
- package/dist/src/evalResult-DqzsS6_W.js +3 -0
- package/dist/src/{evalResult-D3hVYFis.js → evalResult-eUkJv9Ko.js} +40 -15
- package/dist/src/evaluator-DNdJF1Gv.js +3 -0
- package/dist/src/{evaluator-IvuDYSvQ.js → evaluator-DRoiYB2q.js} +1060 -187
- package/dist/src/evaluatorHelpers-BsYP_muT.js +511 -0
- package/dist/src/evaluatorHelpers-CRqTvSux.cjs +537 -0
- package/dist/src/evaluatorHelpers-DuqFFfq7.js +510 -0
- package/dist/src/{extractor-CAfTSraf.js → extractor-BR7XAzAL.js} +6 -6
- package/dist/src/{extractor-WVPOrH43.cjs → extractor-BdxEtt3J.cjs} +6 -6
- package/dist/src/{extractor-DNSeBVOJ.js → extractor-CIW3iN-b.js} +6 -6
- package/dist/src/{extractor-Dk6bRWkv.js → extractor-CxRtnaHl.js} +5 -5
- package/dist/src/{fetch-B0Z3Oe4k.js → fetch-BufrQtvR.js} +93 -40
- package/dist/src/{fetch-BEWnXrrG.js → fetch-DXUnXkVU.js} +89 -40
- package/dist/src/{fetch-CJU5ELPa.cjs → fetch-Dw4XZHjj.cjs} +330 -270
- package/dist/src/{fetch-Di00EQrc.js → fetch-It34O8Ur.js} +305 -252
- package/dist/src/fetch-_YgGd2qv.js +3 -0
- package/dist/src/{fileExtensions-bYh77CN8.cjs → fileExtensions-BhdwzYaD.cjs} +24 -1
- package/dist/src/{fileExtensions-DnqA1y9x.js → fileExtensions-CXRfY3Ss.js} +12 -2
- package/dist/src/{fileExtensions-AWa2ZML4.js → fileExtensions-D4GCJ67J.js} +12 -2
- package/dist/src/{formatDuration-DZzPsexs.js → formatDuration-CMVNrYvE.js} +1 -1
- package/dist/src/{genaiTracer-yRuxj9-L.cjs → genaiTracer-14nugQQx.cjs} +14 -2
- package/dist/src/{genaiTracer-DWdZ28hY.js → genaiTracer-BPVvltoW.js} +2 -2
- package/dist/src/{genaiTracer-XnrcgDCe.js → genaiTracer-D18lYzhB.js} +2 -2
- package/dist/src/{genaiTracer-COYDi-tC.js → genaiTracer-jJKYsnjc.js} +2 -2
- package/dist/src/goat-Ckd3q3AY.js +467 -0
- package/dist/src/goat-Qgurm-NP.js +466 -0
- package/dist/src/goat-ghadEDdy.js +465 -0
- package/dist/src/goat-una6pZGP.cjs +469 -0
- package/dist/src/graders-BDT7dif6.js +3 -0
- package/dist/src/{graders-eIHhRqoC.js → graders-BGP99PdK.js} +2416 -2224
- package/dist/src/{graders-Zy3x0zqX.js → graders-BX0f2tvS.js} +2423 -2226
- package/dist/src/{graders-pvbReLLn.js → graders-C0nXU_ZP.js} +1806 -1609
- package/dist/src/{graders--zknU_uk.cjs → graders-ClrU2fnd.cjs} +2219 -1949
- package/dist/src/hydra-BSNZZm2M.js +543 -0
- package/dist/src/hydra-BxdG4nkg.js +541 -0
- package/dist/src/hydra-DE4xWwyc.js +542 -0
- package/dist/src/hydra-DrJttnvw.cjs +542 -0
- package/dist/src/image-B4oBtu6J.js +443 -0
- package/dist/src/{image-dnoUgPrC.js → image-BN-hjLL9.js} +4 -4
- package/dist/src/{image-9302QVqR.js → image-B_fPIwdg.js} +3 -3
- package/dist/src/image-BvUAW344.js +442 -0
- package/dist/src/image-Cvjwx1uY.js +442 -0
- package/dist/src/{image-De2FBmYV.cjs → image-DfVCGPbI.cjs} +4 -4
- package/dist/src/{image-u7-rKnYU.js → image-QzmydkiG.js} +4 -4
- package/dist/src/image-X0oY4350.cjs +465 -0
- package/dist/src/index.cjs +1689 -558
- package/dist/src/index.d.cts +3270 -1624
- package/dist/src/index.d.ts +3270 -1624
- package/dist/src/index.js +1553 -438
- package/dist/src/indirectWebPwn-02ZIghCS.js +259 -0
- package/dist/src/indirectWebPwn-BJ22AbQa.cjs +397 -0
- package/dist/src/indirectWebPwn-CbjUG0rh.js +385 -0
- package/dist/src/indirectWebPwn-CfQJt3gk.cjs +260 -0
- package/dist/src/indirectWebPwn-DBQhOjoD.js +260 -0
- package/dist/src/indirectWebPwn-OsXnKejv.js +259 -0
- package/dist/src/indirectWebPwn-tNx9OZ35.js +385 -0
- package/dist/src/indirectWebPwn-uyWdHx04.js +386 -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-CLERUB0c.js → interactiveCheck-C4QlIuoR.js} +2 -2
- package/dist/src/{invariant-BtWWVVhl.js → invariant-B2Rf6avk.js} +1 -1
- package/dist/src/{invariant-vgHWClmd.js → invariant-DIYf9sP1.js} +1 -1
- package/dist/src/{invariant-kfQ8Bu82.cjs → invariant-QtnLD03y.cjs} +1 -1
- package/dist/src/iterative-CpU6i2As.js +490 -0
- package/dist/src/iterative-DJQEQpG3.js +491 -0
- package/dist/src/iterative-DQBuWM-j.cjs +493 -0
- package/dist/src/iterative-FTS4Bz67.js +492 -0
- package/dist/src/iterativeImage-BUABMVOA.js +413 -0
- package/dist/src/iterativeImage-ByFWkxax.cjs +415 -0
- package/dist/src/iterativeImage-BzUapOUi.js +414 -0
- package/dist/src/iterativeImage-Doz8mgxF.js +413 -0
- package/dist/src/iterativeMeta-B3YiAOc8.js +386 -0
- package/dist/src/iterativeMeta-C7APE_P1.js +385 -0
- package/dist/src/iterativeMeta-CSS8M6Ds.cjs +385 -0
- package/dist/src/iterativeMeta-DgoQ7bLh.js +384 -0
- package/dist/src/iterativeTree-B5zxBBSW.js +769 -0
- package/dist/src/iterativeTree-CNyIk0Yn.js +768 -0
- package/dist/src/iterativeTree-CPMF10ve.cjs +771 -0
- package/dist/src/iterativeTree-DvZ7GBwt.js +770 -0
- package/dist/src/{knowledgeBase-Dgc7CBWF.js → knowledgeBase-BadkINlJ.js} +24 -10
- package/dist/src/{knowledgeBase-RhFPGWDc.js → knowledgeBase-Bi_8sV-H.js} +25 -11
- package/dist/src/{knowledgeBase-lm9RXSAm.js → knowledgeBase-CkMljjdg.js} +25 -11
- package/dist/src/{knowledgeBase-Bpoe_nLu.cjs → knowledgeBase-DUh34xba.cjs} +25 -11
- package/dist/src/{litellm-DRjpcSa7.js → litellm-BKBo0jpC.js} +5 -5
- package/dist/src/{litellm-C2kqjxqp.js → litellm-BXyn5kZK.js} +5 -5
- package/dist/src/{litellm-p37R1dzQ.js → litellm-CNcfbCfa.js} +4 -4
- package/dist/src/{litellm-CoyI4IAl.cjs → litellm-CtAr7bKG.cjs} +5 -5
- package/dist/src/{logger-DksKw1Qc.js → logger-BbY6ypFL.js} +2 -2
- package/dist/src/{logger-B88EkIn6.js → logger-KD8JjCRJ.js} +2 -2
- package/dist/src/{logger-COuQb2xB.cjs → logger-cfNpzI4o.cjs} +13 -55
- package/dist/src/{luma-ray-KgTCXrZC.js → luma-ray-BMX1iEB6.js} +5 -5
- package/dist/src/{luma-ray-B863CmuZ.js → luma-ray-CR5TSpp4.js} +5 -5
- package/dist/src/{luma-ray-BxVKaW2a.cjs → luma-ray-D3FUc2K3.cjs} +9 -8
- package/dist/src/{luma-ray-BTTLtqQ8.js → luma-ray-OEMmS1RB.js} +6 -6
- package/dist/src/main.js +909 -369
- package/dist/src/memoryPoisoning-CM83NWYl.js +107 -0
- package/dist/src/memoryPoisoning-D8h9gXJF.js +106 -0
- package/dist/src/memoryPoisoning-Dp-btinn.cjs +106 -0
- package/dist/src/memoryPoisoning-cLuCoTuJ.js +106 -0
- package/dist/src/{messages-BTQz42fn.js → messages-BabO-cX8.js} +273 -17
- package/dist/src/{messages-811uVVW5.cjs → messages-DBPir0TQ.cjs} +278 -18
- package/dist/src/{messages-zWbkLLHz.js → messages-DGUlSNU7.js} +273 -17
- package/dist/src/{messages-MYTQ2TWp.js → messages-vsE_-Lv0.js} +273 -17
- package/dist/src/{meteor-DHdzY1Ss.js → meteor--TZYICTI.js} +2 -2
- package/dist/src/{meteor-Co1VQ1u5.cjs → meteor-CR226f7Z.cjs} +2 -2
- package/dist/src/{meteor-CU5UAE-H.js → meteor-Cl_yd7rJ.js} +2 -2
- package/dist/src/{meteor-DuAFv6gF.js → meteor-Dce-_zGQ.js} +1 -1
- package/dist/src/mischievousUser-0l8GD7Dp.js +46 -0
- package/dist/src/mischievousUser-BUOP9W5r.js +46 -0
- package/dist/src/mischievousUser-frFYKxu6.js +47 -0
- package/dist/src/mischievousUser-olGgHIVR.cjs +46 -0
- package/dist/src/{modelslab-Dk1JAtVo.cjs → modelslab-CNV5bMSk.cjs} +7 -7
- package/dist/src/{modelslab-D0erNWKe.js → modelslab-Cogmu4mG.js} +6 -6
- package/dist/src/{modelslab-DIq-6y7x.js → modelslab-Dzst7VTU.js} +6 -6
- package/dist/src/{modelslab-wu9yi5GE.js → modelslab-EyDczZ5A.js} +7 -7
- package/dist/src/{nova-reel-CCFRfeRb.js → nova-reel-BGPNBOMS.js} +6 -6
- package/dist/src/{nova-reel-DQrm74ng.js → nova-reel-B_5NKFu1.js} +5 -5
- package/dist/src/{nova-reel-gr11WG7f.js → nova-reel-C4eUJGse.js} +5 -5
- package/dist/src/{nova-reel-CrLXVKQf.cjs → nova-reel-CjJRxI1X.cjs} +9 -8
- package/dist/src/{nova-sonic-BYdp-QLs.js → nova-sonic-BNGmgfFz.js} +4 -4
- package/dist/src/{nova-sonic-TDgrlTk7.js → nova-sonic-ChPlh5na.js} +4 -4
- package/dist/src/{nova-sonic-B_ZXcUJB.js → nova-sonic-CrV0iaY_.js} +3 -3
- package/dist/src/{nova-sonic-i5tUvXKn.cjs → nova-sonic-DuOG9Aun.cjs} +5 -4
- package/dist/src/{openai-DhVEmgeZ.js → openai-BMHD2Huo.js} +2 -2
- package/dist/src/{openai-URNyItar.cjs → openai-C3uXv8wS.cjs} +2 -2
- package/dist/src/{openai-Qsvz25mV.js → openai-CJrsh9n4.js} +2 -2
- package/dist/src/{openai-iYtrXzOX.js → openai-zgwBb4Ff.js} +1 -1
- package/dist/src/{openclaw-CnQ363Wi.js → openclaw-BIHlu_36.js} +10 -8
- package/dist/src/{openclaw-CwzlQSQX.js → openclaw-CF7fMido.js} +9 -7
- package/dist/src/{openclaw-wX9rtfke.cjs → openclaw-Dphc01BY.cjs} +18 -15
- package/dist/src/{openclaw-CLWrW03k.js → openclaw-zIJAsz3P.js} +10 -8
- package/dist/src/{opencode-sdk-BUu5Nevv.js → opencode-sdk-B3vlPLsp.js} +40 -5
- package/dist/src/{opencode-sdk-BxD8vXp_.js → opencode-sdk-D05JSgMQ.js} +40 -5
- package/dist/src/{opencode-sdk-BZ2idgYA.cjs → opencode-sdk-DoY6GbWw.cjs} +46 -10
- package/dist/src/{opencode-sdk-GI2KaAXq.js → opencode-sdk-sRKYHGoI.js} +39 -4
- package/dist/src/{otlpReceiver-BntK801g.js → otlpReceiver--gTpSagc.js} +120 -4
- package/dist/src/{otlpReceiver-DmVulbhC.js → otlpReceiver-B2eaKC8C.js} +120 -4
- package/dist/src/{otlpReceiver-B2z58l4e.js → otlpReceiver-BXjcRqAM.js} +119 -3
- package/dist/src/{otlpReceiver-BfcVq2Nq.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-BDrfT30-.js +180 -0
- package/dist/src/promptfoo-Cm4hiy1Y.js +180 -0
- package/dist/src/promptfoo-Rjp-MeBb.js +181 -0
- package/dist/src/promptfoo-b-baRMj-.cjs +205 -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-CPQ_CmVO.js → providerRegistry-1gB5vtzQ.js} +2 -2
- package/dist/src/{providerRegistry-CQMdTmHP.cjs → providerRegistry-CZO_w7ue.cjs} +2 -2
- package/dist/src/{providerRegistry-Bvh8mv85.js → providerRegistry-DHcFiVWX.js} +1 -1
- package/dist/src/{providerRegistry-CWoPjKFZ.js → providerRegistry-ReCd0sFa.js} +2 -2
- package/dist/src/{providers-BV_KMZje.js → providers-B9KzWxAX.js} +10558 -21587
- package/dist/src/{providers-DruaQfwu.js → providers-BCCz6_IX.js} +1228 -12196
- package/dist/src/{providers-1eKkXBKp.cjs → providers-BDVVIQM6.cjs} +10649 -21843
- package/dist/src/{providers-iUt5fbAN.js → providers-BYAn82cf.js} +1 -1
- package/dist/src/{providers-Domz_llv.js → providers-DVYRZP4E.js} +10589 -21570
- package/dist/src/{pythonUtils-Cldx7huE.js → pythonUtils-CLCgQ9tt.js} +3 -3
- package/dist/src/{pythonUtils-CnndUbW-.js → pythonUtils-CgYxeSmO.js} +3 -3
- package/dist/src/{pythonUtils-tAJvvpS-.cjs → pythonUtils-Cokhluq3.cjs} +8 -7
- package/dist/src/{pythonUtils-C2UQ30Rz.js → pythonUtils-D0BYebvX.js} +3 -3
- package/dist/src/{quiverai-DFotyafY.cjs → quiverai-BAp6iTZD.cjs} +4 -4
- package/dist/src/{quiverai-aPPvXOgn.js → quiverai-BvIhI_0l.js} +4 -4
- package/dist/src/{quiverai-DR0SnIQV.js → quiverai-CdTWPe-A.js} +3 -3
- package/dist/src/{quiverai-CtWi6x_g.js → quiverai-Cv7rJKDz.js} +4 -4
- package/dist/src/registry-BUJrgjwv.js +124 -0
- package/dist/src/registry-DXm1t_x0.js +125 -0
- package/dist/src/registry-Dp5EqoXc.js +124 -0
- package/dist/src/registry-KCVF1CFC.cjs +124 -0
- package/dist/src/{server-D6Il2Sob.js → remoteGeneration-B1_XsKXU.js} +16 -108
- package/dist/src/{server-BSB45Nt9.js → remoteGeneration-COpWcmWd.js} +15 -146
- package/dist/src/{server-Dx2TyCH2.cjs → remoteGeneration-DS9N3pgB.cjs} +30 -119
- package/dist/src/remoteGeneration-DsaSwmG2.js +217 -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-CgVDrJmM.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-Bi9vBuW_.cjs → responses-1UFFF9N_.cjs} +51 -16
- package/dist/src/{responses-DL9m8CyY.js → responses-B3W2JvOQ.js} +49 -15
- package/dist/src/{responses--OsX2aYW.js → responses-B6ktc3Ra.js} +49 -15
- package/dist/src/{responses-C-flexAY.js → responses-URRzV8qE.js} +49 -15
- package/dist/src/rolldown-runtime-D_mwlA32.cjs +43 -0
- package/dist/src/rubyUtils-BYVlQ94c.js +3 -0
- package/dist/src/{rubyUtils-DsGrTx8R.js → rubyUtils-CXlFM2rR.js} +3 -3
- package/dist/src/{rubyUtils-DVLeA2jg.js → rubyUtils-CnlW8AYb.js} +3 -3
- package/dist/src/{rubyUtils-B6eljPuh.cjs → rubyUtils-CqUWBZAt.cjs} +18 -27
- package/dist/src/{rubyUtils-CYSQEG4a.js → rubyUtils-DdGojpfv.js} +3 -3
- 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-BVkaG2-l.js → sagemaker-CujrzP1a.js} +62 -51
- package/dist/src/{sagemaker-XnfhheQv.cjs → sagemaker-DzffAqo_.cjs} +65 -53
- package/dist/src/{sagemaker-D67yzMzs.js → sagemaker-vhtSV7JI.js} +62 -51
- package/dist/src/{sagemaker-BveBvuxm.js → sagemaker-yr1QKeBs.js} +61 -50
- package/dist/src/{scanner-1DqWi1Ej.js → scanner-DS0109SS.js} +7 -7
- package/dist/src/server/index.js +5105 -605
- package/dist/src/server-B8rqV126.cjs +126 -0
- package/dist/src/server-BaLytskk.js +3 -0
- package/dist/src/server-CMJD10J4.js +107 -0
- package/dist/src/server-Ddp8GNMp.js +146 -0
- package/dist/src/server-DhMHosWj.js +182 -0
- package/dist/src/shared-7pmVZLNO.js +1334 -0
- package/dist/src/shared-9WHQ1oNE.js +1335 -0
- package/dist/src/{fileExtensions-BArZuxsI.js → shared-BoG7qLMv.js} +12 -2
- package/dist/src/shared-D6IjElRI.js +1334 -0
- package/dist/src/shared-WkgnDkcg.cjs +1436 -0
- package/dist/src/{signal-CE5G3a7x.js → signal-CSurUUyV.js} +3 -3
- package/dist/src/simulatedUser-C9aQObBI.js +222 -0
- package/dist/src/simulatedUser-Cu601Dd4.cjs +227 -0
- package/dist/src/simulatedUser-U_qAHnuB.js +222 -0
- package/dist/src/simulatedUser-p3tACcmw.js +223 -0
- package/dist/src/{slack-DDUe-5MC.js → slack-Bapo-7_8.js} +2 -2
- package/dist/src/{slack-1Rhq0EoV.cjs → slack-DMC1QVEg.cjs} +3 -2
- package/dist/src/{slack-D5Wpy8LM.js → slack-DTEFhrMn.js} +2 -2
- package/dist/src/{slack-acRb0IqQ.js → slack-k-_CP84Q.js} +1 -1
- package/dist/src/storage-BU4qcnOb.js +875 -0
- package/dist/src/storage-CA-v9V2v.cjs +911 -0
- package/dist/src/storage-CD-GWAdx.js +822 -0
- package/dist/src/storage-QdU-SmvD.js +834 -0
- package/dist/src/{store-DAAyxcy6.cjs → store-B2NDDooM.cjs} +60 -24
- package/dist/src/{store-CYEy5J2D.js → store-DKd5592Q.js} +51 -20
- package/dist/src/{store-M0b1WfYb.js → store-HpopRVzl.js} +50 -19
- package/dist/src/store-IbiRIF3k.js +3 -0
- package/dist/src/strategies-7CS3Alao.cjs +2360 -0
- package/dist/src/strategies-CiSeroPH.js +2331 -0
- package/dist/src/strategies-DRJjGTIY.js +2333 -0
- package/dist/src/{tables-DQ4WU5tX.js → tables-CRSXQ2Ke.js} +2 -2
- package/dist/src/{tables-CsWou1Bx.js → tables-CxjU7bBd.js} +3 -3
- package/dist/src/{tables-DUfh1F7Z.cjs → tables-DBIJU0WE.cjs} +6 -5
- package/dist/src/{tables-C4CH3zRr.js → tables-DafUHOeh.js} +3 -3
- package/dist/src/{telemetry-CQPez_Jp.js → telemetry-00ezXr_t.js} +5 -4
- package/dist/src/telemetry-ByPqDcKC.js +3 -0
- package/dist/src/{telemetry-Dsw_faFj.cjs → telemetry-CJ7FnCsc.cjs} +18 -11
- package/dist/src/{telemetry-dbaJ0E98.js → telemetry-DmXYcJNV.js} +5 -4
- package/dist/src/{telemetry-Dvqxv3YC.js → telemetry-DwX9XUN5.js} +4 -3
- package/dist/src/{text-KvuD2Iko.js → text-Db-Wt2u2.js} +1 -1
- package/dist/src/{text-DHxdyQqT.js → text-DwYK5EBn.js} +1 -1
- package/dist/src/{text-BVi-cLPJ.cjs → text-nywWsRBM.cjs} +1 -1
- package/dist/src/{tokenUsageUtils-C-bmyHoE.js → tokenUsageUtils-BjVkdk18.js} +1 -1
- package/dist/src/{tokenUsageUtils-CXrvO-wA.js → tokenUsageUtils-CDet74yk.js} +1 -1
- package/dist/src/tokenUsageUtils-CmnQ0G2m.js +142 -0
- package/dist/src/{tokenUsageUtils-Bb7DkZPz.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-BnwKCkSB.js +221 -0
- package/dist/src/tracingOptions-Chi74lOD.js +219 -0
- package/dist/src/tracingOptions-DrbSFaKy.cjs +249 -0
- package/dist/src/tracingOptions-ji2OuXbT.js +220 -0
- package/dist/src/{transcription-DuWDupG7.js → transcription-B8uIgCYX.js} +5 -5
- package/dist/src/{transcription-CJspiD2c.js → transcription-CfU5loSq.js} +6 -6
- package/dist/src/{transcription-V2HaAmy2.js → transcription-Dkd22_4K.js} +6 -6
- package/dist/src/{transcription-BvjmiYB1.cjs → transcription-mzuf18Mq.cjs} +9 -8
- package/dist/src/{transform-lQrDE1BQ.js → transform-BIMynQsA.js} +9 -9
- package/dist/src/transform-BnSTnFlp.js +187 -0
- package/dist/src/transform-BnSXWmU_2.cjs +221 -0
- package/dist/src/transform-CGt7Kt3y2.js +186 -0
- package/dist/src/transform-CrPGTsij.js +186 -0
- package/dist/src/{transform-CTeuTR3S.cjs → transform-DhNkAUs8.cjs} +13 -12
- package/dist/src/{transform-CG0ehZNG.js → transform-DmvYBRll.js} +9 -9
- package/dist/src/{transform-zDhMmzwX.js → transform-EtD4jAWi.js} +9 -9
- package/dist/src/{transformersAvailability-CcHusyhw.js → transformersAvailability-0ThtPved.js} +1 -1
- package/dist/src/transformersAvailability-BYydDE5U.js +35 -0
- package/dist/src/{transformersAvailability-DLlROWhg.js → transformersAvailability-BvyU9vDD.js} +1 -1
- package/dist/src/{transformersAvailability-Cju9mHgR.cjs → transformersAvailability-BytPvKUW.cjs} +1 -1
- package/dist/src/{types-Dm9JM6Vb.js → types-BFevViUY.js} +115 -19
- package/dist/src/{types-Bgh5SOn6.js → types-BJQBBPTP.js} +115 -19
- package/dist/src/{types-CeaeaZdP.cjs → types-CxJvaY2S.cjs} +357 -172
- package/dist/src/{types-BGQDAP8i.js → types-D6glLbdF.js} +271 -170
- package/dist/src/{util-BYvQUPp7.js → util--WMgw7wM.js} +28 -8
- package/dist/src/{util-C9J8ahRn.js → util-5WnCSb0h.js} +72 -48
- package/dist/src/{util-CN3SrLT4.cjs → util-BSIuSLVK.cjs} +74 -49
- package/dist/src/{util-C8e5uydV.js → util-Bx677_k2.js} +154 -147
- package/dist/src/util-CN8om2rz.cjs +386 -0
- package/dist/src/{util-DDs-7g6-.js → util-CoQWM76y.js} +28 -8
- package/dist/src/util-DNl96nNs.js +327 -0
- package/dist/src/{util-DxWpWjhc.js → util-DURocbYR.js} +667 -507
- package/dist/src/util-Df8YMvS1.js +327 -0
- package/dist/src/{util-DvU2Pw8c.js → util-DiQ3QvBB.js} +28 -8
- package/dist/src/{util-oGMLA7vc.js → util-I-Rf-KaD.js} +862 -577
- package/dist/src/{util-olYL5C6N.cjs → util-IYzs5Y04.cjs} +33 -7
- package/dist/src/{util-D9TisOyk.js → util-LKTmNsMQ.js} +71 -47
- package/dist/src/{util-Bxn8emtE.cjs → util-SPsvFONY.cjs} +738 -582
- package/dist/src/{util-D3q0WQ-0.js → util-efByNxcr.js} +72 -48
- package/dist/src/util-kDURhgJW.js +328 -0
- package/dist/src/{utils-DJfvjyMj.js → utils-B0lzitHZ.js} +3 -3
- package/dist/src/{utils-BLJKfv0y.js → utils-BFOh20Gb.js} +3 -3
- package/dist/src/{utils-hXtCYanr.js → utils-BGY69tk_.js} +2 -2
- package/dist/src/{utils-B05gLxER.cjs → utils-Ve6kuJsa.cjs} +3 -3
- package/dist/src/version-BK20a4sw.js +16 -0
- package/dist/src/version-BWCSaByA.cjs +27 -0
- package/dist/src/version-eRkNuGv8.js +17 -0
- package/dist/src/version-lpHV_53E.js +16 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +56 -28
- package/dist/src/app/assets/Report-CQYFezYu.js +0 -1
- package/dist/src/app/assets/index-BXGkeMwh.css +0 -1
- package/dist/src/app/assets/index-BzJt18Jz.js +0 -385
- 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-Cr9oLMUa.js +0 -3
- package/dist/src/cache-DbLsVWB2.cjs +0 -3
- package/dist/src/cloud-Hphvo8kr.js +0 -3
- package/dist/src/codex-sdk-BAmYE7qy.js +0 -3
- package/dist/src/codex-sdk-CWEnH70W.cjs +0 -2
- package/dist/src/evalResult-D8MT9p0s.js +0 -3
- package/dist/src/evalResult-DElBuddX.js +0 -2
- package/dist/src/evalResult-Dvc-iucu.cjs +0 -2
- package/dist/src/evaluator-CVessDWe.js +0 -3
- package/dist/src/fetch-C7bGKDlQ.js +0 -3
- package/dist/src/graders-BOAzQEUe.cjs +0 -2
- package/dist/src/graders-D4BTsZdG2.js +0 -3
- package/dist/src/graders-DOJK1XpV.js +0 -2
- package/dist/src/graders-NAv9LcBn.js +0 -2
- package/dist/src/image-B5Mv-Z3h.js +0 -257
- package/dist/src/image-DVz2RiMF.js +0 -258
- package/dist/src/image-qUpPvmNZ.js +0 -257
- package/dist/src/image-x6KqLQl4.cjs +0 -280
- package/dist/src/providers-Bp4S-FvO.js +0 -2
- package/dist/src/providers-DV3ax9e_.cjs +0 -3
- package/dist/src/providers-u9Enmfok.js +0 -2
- package/dist/src/render-CH-62LbA.js +0 -135
- package/dist/src/render-CMEpfLaO.js +0 -136
- package/dist/src/render-DHIZ6_k8.js +0 -135
- package/dist/src/render-DfQSFxGE.cjs +0 -165
- package/dist/src/rubyUtils-D1L2d3jb.js +0 -3
- package/dist/src/rubyUtils-DUbq4tff.cjs +0 -2
- package/dist/src/server-BNYztJkh.js +0 -385
- package/dist/src/server-DCtHUqlp.js +0 -3
- package/dist/src/server-DaA2eR26.cjs +0 -2
- package/dist/src/store-CWOSz6D_.cjs +0 -2
- package/dist/src/store-DCDBhv7B.js +0 -3
- package/dist/src/store-Dn9HUkdW.js +0 -240
- package/dist/src/telemetry-C1IqxcdW.js +0 -3
- package/dist/src/telemetry-C4ZEa_es.cjs +0 -2
- package/dist/src/transform-Bbg6A8Jk.js +0 -216
- package/dist/src/transform-CUnzlsbn.cjs +0 -228
- package/dist/src/transform-DYX1_Xnh.js +0 -216
- package/dist/src/transform-DgKlRr73.cjs +0 -2
- package/dist/src/transform-M6ITAESf.js +0 -3
- package/dist/src/transform-UN5UGu8U.js +0 -213
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import { S as getEnvBool, a as logger, k as state } from "./logger-KD8JjCRJ.js";
|
|
2
|
+
import nunjucks from "nunjucks";
|
|
3
|
+
//#region src/util/templates.ts
|
|
4
|
+
function isNunjucksAstNode(value) {
|
|
5
|
+
return Boolean(value && typeof value === "object" && typeof value.typename === "string");
|
|
6
|
+
}
|
|
7
|
+
function getNunjucksParser() {
|
|
8
|
+
return nunjucks.parser;
|
|
9
|
+
}
|
|
10
|
+
function parseNunjucksTemplate(template) {
|
|
11
|
+
const parser = getNunjucksParser();
|
|
12
|
+
if (!parser || typeof parser.parse !== "function") {
|
|
13
|
+
logger.debug("[templates] nunjucks.parser.parse is not available; falling back to conservative detection");
|
|
14
|
+
return { ok: false };
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
return {
|
|
18
|
+
ok: true,
|
|
19
|
+
ast: parser.parse(template)
|
|
20
|
+
};
|
|
21
|
+
} catch (err) {
|
|
22
|
+
logger.debug("[templates] nunjucks parse failed; falling back to conservative detection", { error: err instanceof Error ? err.message : String(err) });
|
|
23
|
+
return { ok: false };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function isNonReferenceSymbol(parent) {
|
|
27
|
+
if (!parent) return false;
|
|
28
|
+
return parent.node.typename === "Pair" && parent.field === "key" || parent.node.typename === "Filter" && parent.field === "name" || parent.node.typename === "Is" && parent.field === "right" || parent.node.typename === "Set" && parent.field === "targets" || isForLikeNode(parent.node) && parent.field === "name" || parent.node.typename === "Macro" && parent.field === "name" || parent.node.typename === "Import" && parent.field === "target" || parent.node.typename === "FromImport" && parent.field === "names";
|
|
29
|
+
}
|
|
30
|
+
function getSymbolName(node) {
|
|
31
|
+
return isNunjucksAstNode(node) && node.typename === "Symbol" && typeof node.value === "string" ? node.value : void 0;
|
|
32
|
+
}
|
|
33
|
+
function collectBindingNames(node) {
|
|
34
|
+
if (Array.isArray(node)) return node.flatMap((item) => collectBindingNames(item));
|
|
35
|
+
const symbolName = getSymbolName(node);
|
|
36
|
+
if (symbolName) return [symbolName];
|
|
37
|
+
if (!isNunjucksAstNode(node) || !Array.isArray(node.children)) return [];
|
|
38
|
+
return node.children.flatMap((child) => collectBindingNames(child));
|
|
39
|
+
}
|
|
40
|
+
function addBindingNames(scope, node) {
|
|
41
|
+
const nextScope = new Set(scope);
|
|
42
|
+
for (const name of collectBindingNames(node)) nextScope.add(name);
|
|
43
|
+
return nextScope;
|
|
44
|
+
}
|
|
45
|
+
function addNamesToScope(scope, names) {
|
|
46
|
+
const nextScope = new Set(scope);
|
|
47
|
+
for (const name of names) nextScope.add(name);
|
|
48
|
+
return nextScope;
|
|
49
|
+
}
|
|
50
|
+
function collectFromImportBindingNames(namesNode) {
|
|
51
|
+
if (!isNunjucksAstNode(namesNode) || !Array.isArray(namesNode.children)) return [];
|
|
52
|
+
const names = [];
|
|
53
|
+
for (const child of namesNode.children) {
|
|
54
|
+
const plainImportName = getSymbolName(child);
|
|
55
|
+
if (plainImportName) {
|
|
56
|
+
names.push(plainImportName);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (isNunjucksAstNode(child) && child.typename === "Pair") {
|
|
60
|
+
const aliasName = getSymbolName(child.value);
|
|
61
|
+
if (aliasName) names.push(aliasName);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return names;
|
|
65
|
+
}
|
|
66
|
+
function astNodeListReferencesVariable(nodes, variableName, parent, boundSymbols) {
|
|
67
|
+
let scope = new Set(boundSymbols);
|
|
68
|
+
for (const item of nodes) {
|
|
69
|
+
if (!isNunjucksAstNode(item)) continue;
|
|
70
|
+
if (astReferencesVariable(item, variableName, parent, scope)) return true;
|
|
71
|
+
if (item.typename === "Set") scope = addBindingNames(scope, item.targets);
|
|
72
|
+
else if (item.typename === "Macro") scope = addBindingNames(scope, item.name);
|
|
73
|
+
else if (item.typename === "Import") scope = addBindingNames(scope, item.target);
|
|
74
|
+
else if (item.typename === "FromImport") scope = addNamesToScope(scope, collectFromImportBindingNames(item.names));
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
function astChildReferencesVariable(node, field, variableName, boundSymbols) {
|
|
79
|
+
const child = node[field];
|
|
80
|
+
if (Array.isArray(child)) return child.some((item) => isNunjucksAstNode(item) && astReferencesVariable(item, variableName, {
|
|
81
|
+
field,
|
|
82
|
+
node
|
|
83
|
+
}, boundSymbols));
|
|
84
|
+
return isNunjucksAstNode(child) && astReferencesVariable(child, variableName, {
|
|
85
|
+
field,
|
|
86
|
+
node
|
|
87
|
+
}, boundSymbols);
|
|
88
|
+
}
|
|
89
|
+
function isForLikeNode(node) {
|
|
90
|
+
return node.typename === "For" || node.typename === "AsyncEach" || node.typename === "AsyncAll";
|
|
91
|
+
}
|
|
92
|
+
function forLikeNodeReferencesVariable(node, variableName, boundSymbols) {
|
|
93
|
+
const loopScope = addBindingNames(boundSymbols, node.name);
|
|
94
|
+
return astChildReferencesVariable(node, "arr", variableName, boundSymbols) || astChildReferencesVariable(node, "body", variableName, loopScope) || astChildReferencesVariable(node, "else_", variableName, boundSymbols);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Walk a Nunjucks macro/caller signature left-to-right. Positional args and
|
|
98
|
+
* earlier keyword defaults are visible to later defaults, but the current
|
|
99
|
+
* keyword is not bound until its own default value has been evaluated.
|
|
100
|
+
*/
|
|
101
|
+
function analyzeSignatureArgs(argsNode, variableName, boundSymbols) {
|
|
102
|
+
const paramNames = [];
|
|
103
|
+
if (!isNunjucksAstNode(argsNode) || !Array.isArray(argsNode.children)) return {
|
|
104
|
+
paramNames,
|
|
105
|
+
referencesVariable: false
|
|
106
|
+
};
|
|
107
|
+
const defaultScope = new Set(boundSymbols);
|
|
108
|
+
for (const child of argsNode.children) {
|
|
109
|
+
if (!isNunjucksAstNode(child)) continue;
|
|
110
|
+
const positionalParamName = getSymbolName(child);
|
|
111
|
+
if (positionalParamName) {
|
|
112
|
+
paramNames.push(positionalParamName);
|
|
113
|
+
defaultScope.add(positionalParamName);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (child.typename === "KeywordArgs" && Array.isArray(child.children)) {
|
|
117
|
+
for (const pair of child.children) {
|
|
118
|
+
const keywordParamName = isNunjucksAstNode(pair) && pair.typename === "Pair" ? getSymbolName(pair.key) : void 0;
|
|
119
|
+
if (isNunjucksAstNode(pair) && pair.typename === "Pair" && astChildReferencesVariable(pair, "value", variableName, defaultScope)) return {
|
|
120
|
+
paramNames,
|
|
121
|
+
referencesVariable: true
|
|
122
|
+
};
|
|
123
|
+
if (keywordParamName) {
|
|
124
|
+
paramNames.push(keywordParamName);
|
|
125
|
+
defaultScope.add(keywordParamName);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (astReferencesVariable(child, variableName, {
|
|
131
|
+
field: "children",
|
|
132
|
+
node: argsNode
|
|
133
|
+
}, defaultScope)) return {
|
|
134
|
+
paramNames,
|
|
135
|
+
referencesVariable: true
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
paramNames,
|
|
140
|
+
referencesVariable: false
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function macroNodeReferencesVariable(node, variableName, boundSymbols) {
|
|
144
|
+
const { paramNames, referencesVariable } = analyzeSignatureArgs(node.args, variableName, boundSymbols);
|
|
145
|
+
if (referencesVariable) return true;
|
|
146
|
+
const macroScope = addNamesToScope(boundSymbols, paramNames);
|
|
147
|
+
const macroName = getSymbolName(node.name);
|
|
148
|
+
if (macroName) macroScope.add(macroName);
|
|
149
|
+
return astChildReferencesVariable(node, "body", variableName, macroScope);
|
|
150
|
+
}
|
|
151
|
+
function isNodeReferencesVariable(node, variableName, boundSymbols) {
|
|
152
|
+
if (astChildReferencesVariable(node, "left", variableName, boundSymbols)) return true;
|
|
153
|
+
const right = node.right;
|
|
154
|
+
if (!isNunjucksAstNode(right)) return false;
|
|
155
|
+
if (right.typename === "FunCall") return astChildReferencesVariable(right, "args", variableName, boundSymbols);
|
|
156
|
+
return right.typename !== "Symbol" && astReferencesVariable(right, variableName, {
|
|
157
|
+
field: "right",
|
|
158
|
+
node
|
|
159
|
+
}, boundSymbols);
|
|
160
|
+
}
|
|
161
|
+
function setNodeReferencesVariable(node, variableName, boundSymbols) {
|
|
162
|
+
return astChildReferencesVariable(node, "value", variableName, boundSymbols) || astChildReferencesVariable(node, "body", variableName, boundSymbols);
|
|
163
|
+
}
|
|
164
|
+
function fromImportNodeReferencesVariable(node, variableName, boundSymbols) {
|
|
165
|
+
return astChildReferencesVariable(node, "template", variableName, boundSymbols);
|
|
166
|
+
}
|
|
167
|
+
function blockNodeReferencesVariable(node, variableName, boundSymbols) {
|
|
168
|
+
return astChildReferencesVariable(node, "body", variableName, boundSymbols);
|
|
169
|
+
}
|
|
170
|
+
function callerNodeReferencesVariable(node, variableName, boundSymbols) {
|
|
171
|
+
const { paramNames, referencesVariable } = analyzeSignatureArgs(node.args, variableName, boundSymbols);
|
|
172
|
+
if (referencesVariable) return true;
|
|
173
|
+
return astChildReferencesVariable(node, "body", variableName, addNamesToScope(boundSymbols, paramNames));
|
|
174
|
+
}
|
|
175
|
+
function astFieldsReferenceVariable(node, variableName, boundSymbols) {
|
|
176
|
+
return (node.fields ?? []).some((field) => astChildReferencesVariable(node, field, variableName, boundSymbols));
|
|
177
|
+
}
|
|
178
|
+
function astReferencesVariable(node, variableName, parent, boundSymbols = /* @__PURE__ */ new Set()) {
|
|
179
|
+
if (node.typename === "Symbol" && node.value === variableName) return !boundSymbols.has(variableName) && !isNonReferenceSymbol(parent);
|
|
180
|
+
if ((node.typename === "Root" || node.typename === "NodeList") && Array.isArray(node.children)) return astNodeListReferencesVariable(node.children, variableName, {
|
|
181
|
+
field: "children",
|
|
182
|
+
node
|
|
183
|
+
}, boundSymbols);
|
|
184
|
+
if (isForLikeNode(node)) return forLikeNodeReferencesVariable(node, variableName, boundSymbols);
|
|
185
|
+
if (node.typename === "Macro") return macroNodeReferencesVariable(node, variableName, boundSymbols);
|
|
186
|
+
if (node.typename === "Is") return isNodeReferencesVariable(node, variableName, boundSymbols);
|
|
187
|
+
if (node.typename === "Set") return setNodeReferencesVariable(node, variableName, boundSymbols);
|
|
188
|
+
if (node.typename === "FromImport") return fromImportNodeReferencesVariable(node, variableName, boundSymbols);
|
|
189
|
+
if (node.typename === "Block") return blockNodeReferencesVariable(node, variableName, boundSymbols);
|
|
190
|
+
if (node.typename === "Caller") return callerNodeReferencesVariable(node, variableName, boundSymbols);
|
|
191
|
+
return astFieldsReferenceVariable(node, variableName, boundSymbols);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get a Nunjucks engine instance with optional filters and configuration.
|
|
195
|
+
* @param filters - Optional map of custom Nunjucks filters.
|
|
196
|
+
* @param throwOnUndefined - Whether to throw an error on undefined variables.
|
|
197
|
+
* @param isGrader - Whether this engine is being used in a grader context.
|
|
198
|
+
* Nunjucks is always enabled in grader mode.
|
|
199
|
+
* @returns A configured Nunjucks environment.
|
|
200
|
+
*/
|
|
201
|
+
function getNunjucksEngine(filters, throwOnUndefined = false, isGrader = false) {
|
|
202
|
+
if (!isGrader && getEnvBool("PROMPTFOO_DISABLE_TEMPLATING")) return { renderString: (template) => template };
|
|
203
|
+
const env = nunjucks.configure({
|
|
204
|
+
autoescape: false,
|
|
205
|
+
throwOnUndefined
|
|
206
|
+
});
|
|
207
|
+
const envGlobals = {
|
|
208
|
+
...getEnvBool("PROMPTFOO_DISABLE_TEMPLATE_ENV_VARS", getEnvBool("PROMPTFOO_SELF_HOSTED", false)) ? {} : process.env,
|
|
209
|
+
...state.config?.env
|
|
210
|
+
};
|
|
211
|
+
env.addGlobal("env", envGlobals);
|
|
212
|
+
env.addFilter("load", function(str) {
|
|
213
|
+
return JSON.parse(str);
|
|
214
|
+
});
|
|
215
|
+
if (filters) for (const [name, filter] of Object.entries(filters)) env.addFilter(name, filter);
|
|
216
|
+
return env;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Parse Nunjucks template to extract variables.
|
|
220
|
+
* @param template - The Nunjucks template string.
|
|
221
|
+
* @returns An array of variables used in the template.
|
|
222
|
+
*/
|
|
223
|
+
function extractVariablesFromTemplate(template) {
|
|
224
|
+
const variableSet = /* @__PURE__ */ new Set();
|
|
225
|
+
const regex = /\{\{[\s]*([^{}\s|]+)[\s]*(?:\|[^}]+)?\}\}|\{%[\s]*(?:if|for)[\s]+([^{}\s]+)[\s]*.*?%\}/g;
|
|
226
|
+
template = template.replace(/\{#[\s\S]*?#\}/g, "");
|
|
227
|
+
let match;
|
|
228
|
+
while ((match = regex.exec(template)) !== null) {
|
|
229
|
+
const variable = match[1] || match[2];
|
|
230
|
+
if (variable) variableSet.add(variable);
|
|
231
|
+
}
|
|
232
|
+
const forLoopRegex = /\{%[\s]*for[\s]+(\w+)[\s]+in[\s]+(\w+)[\s]*%\}/g;
|
|
233
|
+
while ((match = forLoopRegex.exec(template)) !== null) {
|
|
234
|
+
variableSet.delete(match[1]);
|
|
235
|
+
variableSet.add(match[2]);
|
|
236
|
+
}
|
|
237
|
+
return Array.from(variableSet);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Extract variables from multiple Nunjucks templates.
|
|
241
|
+
* @param templates - An array of Nunjucks template strings.
|
|
242
|
+
* @returns An array of variables used in the templates.
|
|
243
|
+
*/
|
|
244
|
+
function extractVariablesFromTemplates(templates) {
|
|
245
|
+
const variableSet = /* @__PURE__ */ new Set();
|
|
246
|
+
for (const template of templates) extractVariablesFromTemplate(template).forEach((variable) => variableSet.add(variable));
|
|
247
|
+
return Array.from(variableSet);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Classify whether a template references `variableName` as a real Nunjucks
|
|
251
|
+
* expression symbol, and surface whether the template parsed successfully.
|
|
252
|
+
*
|
|
253
|
+
* Callers that cache results should avoid caching when `parsed` is `false`,
|
|
254
|
+
* otherwise a transient parse failure would poison the cache for the lifetime
|
|
255
|
+
* of the process.
|
|
256
|
+
*/
|
|
257
|
+
function analyzeTemplateReference(template, variableName) {
|
|
258
|
+
if (!variableName || !template.includes(variableName)) return {
|
|
259
|
+
referenced: false,
|
|
260
|
+
parsed: true
|
|
261
|
+
};
|
|
262
|
+
const parseResult = parseNunjucksTemplate(template);
|
|
263
|
+
if (!parseResult.ok) return {
|
|
264
|
+
referenced: true,
|
|
265
|
+
parsed: false
|
|
266
|
+
};
|
|
267
|
+
return {
|
|
268
|
+
referenced: astReferencesVariable(parseResult.ast, variableName),
|
|
269
|
+
parsed: true
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
//#endregion
|
|
273
|
+
//#region src/util/render.ts
|
|
274
|
+
/**
|
|
275
|
+
* Renders ONLY environment variable templates in an object, leaving all other templates untouched.
|
|
276
|
+
* This allows env vars to be resolved at provider load time while preserving runtime var templates.
|
|
277
|
+
*
|
|
278
|
+
* Supports full Nunjucks syntax for env vars including filters and expressions:
|
|
279
|
+
* - {{ env.VAR_NAME }}
|
|
280
|
+
* - {{ env['VAR-NAME'] }}
|
|
281
|
+
* - {{ env["VAR-NAME"] }}
|
|
282
|
+
* - {{ env.VAR | default('fallback') }}
|
|
283
|
+
* - {{ env.VAR | upper }}
|
|
284
|
+
*
|
|
285
|
+
* Preserves non-env templates for runtime rendering:
|
|
286
|
+
* - {{ vars.x }} - preserved as literal
|
|
287
|
+
* - {{ prompt }} - preserved as literal
|
|
288
|
+
*
|
|
289
|
+
* Implementation: Uses regex to find env templates, delegates to Nunjucks for rendering.
|
|
290
|
+
* This ensures full Nunjucks feature support while preserving non-env templates.
|
|
291
|
+
*
|
|
292
|
+
* @param obj - The object to process
|
|
293
|
+
* @param envOverrides - Optional env vars to merge with (or replace) the base env
|
|
294
|
+
* @param replaceBase - If true, envOverrides replaces the base env entirely instead of merging
|
|
295
|
+
* @returns The object with only env templates rendered
|
|
296
|
+
*/
|
|
297
|
+
function renderEnvOnlyInObject(obj, envOverrides, replaceBase) {
|
|
298
|
+
if (getEnvBool("PROMPTFOO_DISABLE_TEMPLATING")) return obj;
|
|
299
|
+
if (typeof obj === "string") {
|
|
300
|
+
const nunjucks = getNunjucksEngine();
|
|
301
|
+
const baseEnvGlobals = nunjucks.getGlobal("env");
|
|
302
|
+
const envGlobals = replaceBase ? envOverrides ?? {} : envOverrides ? {
|
|
303
|
+
...baseEnvGlobals,
|
|
304
|
+
...envOverrides
|
|
305
|
+
} : baseEnvGlobals;
|
|
306
|
+
return obj.replace(/\{\{(?:[^}]|\}(?!\}))*\}\}/g, (match) => {
|
|
307
|
+
if (!match.match(/\benv\.|env\[/)) return match;
|
|
308
|
+
const varMatch = match.match(/env\.(\w+)|env\[['"]([^'"]+)['"]\]/);
|
|
309
|
+
const varName = varMatch?.[1] || varMatch?.[2];
|
|
310
|
+
if (match.includes("|") || varName && varName in envGlobals && envGlobals[varName] !== void 0) try {
|
|
311
|
+
return nunjucks.renderString(match, { env: envGlobals });
|
|
312
|
+
} catch (error) {
|
|
313
|
+
logger.debug(`Failed to render env template "${match}": ${error instanceof Error ? error.message : String(error)}`);
|
|
314
|
+
return match;
|
|
315
|
+
}
|
|
316
|
+
return match;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
if (Array.isArray(obj)) return obj.map((item) => renderEnvOnlyInObject(item, envOverrides, replaceBase));
|
|
320
|
+
if (typeof obj === "object" && obj !== null) {
|
|
321
|
+
const result = {};
|
|
322
|
+
for (const key in obj) {
|
|
323
|
+
if (key === "_conversation") {
|
|
324
|
+
result[key] = obj[key];
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
result[key] = renderEnvOnlyInObject(obj[key], envOverrides, replaceBase);
|
|
328
|
+
}
|
|
329
|
+
return result;
|
|
330
|
+
}
|
|
331
|
+
return obj;
|
|
332
|
+
}
|
|
333
|
+
function renderVarsInObject(obj, vars) {
|
|
334
|
+
if (!vars || getEnvBool("PROMPTFOO_DISABLE_TEMPLATING")) return obj;
|
|
335
|
+
if (typeof obj === "string") return getNunjucksEngine().renderString(obj, vars);
|
|
336
|
+
if (Array.isArray(obj)) return obj.map((item) => renderVarsInObject(item, vars));
|
|
337
|
+
if (typeof obj === "object" && obj !== null) {
|
|
338
|
+
const result = {};
|
|
339
|
+
for (const key in obj) result[key] = renderVarsInObject(obj[key], vars);
|
|
340
|
+
return result;
|
|
341
|
+
} else if (typeof obj === "function") return renderVarsInObject(obj({ vars }));
|
|
342
|
+
return obj;
|
|
343
|
+
}
|
|
344
|
+
//#endregion
|
|
345
|
+
export { extractVariablesFromTemplates as a, extractVariablesFromTemplate as i, renderVarsInObject as n, getNunjucksEngine as o, analyzeTemplateReference as r, renderEnvOnlyInObject as t };
|
|
346
|
+
|
|
347
|
+
//# sourceMappingURL=render-_6ur1fhE.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
//#region src/tracing/resourceAttributes.ts
|
|
3
|
+
/**
|
|
4
|
+
* Shared resource-attribute keys used to link SDK-emitted OTEL logs back to
|
|
5
|
+
* the evaluation trace. The claude-agent-sdk provider sets these via
|
|
6
|
+
* `OTEL_RESOURCE_ATTRIBUTES` on the subprocess env, and the OTLP /v1/logs
|
|
7
|
+
* receiver reads them to resolve the log record's parent span.
|
|
8
|
+
*
|
|
9
|
+
* Both producer and consumer must agree; keep these constants as the single
|
|
10
|
+
* source of truth.
|
|
11
|
+
*/
|
|
12
|
+
const PROMPTFOO_RESOURCE_ATTR_TRACE_ID = "promptfoo.trace_id";
|
|
13
|
+
const PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID = "promptfoo.parent_span_id";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { PROMPTFOO_RESOURCE_ATTR_TRACE_ID as n, PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID as t };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=resourceAttributes-D1jP3kL5.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/tracing/resourceAttributes.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared resource-attribute keys used to link SDK-emitted OTEL logs back to
|
|
4
|
+
* the evaluation trace. The claude-agent-sdk provider sets these via
|
|
5
|
+
* `OTEL_RESOURCE_ATTRIBUTES` on the subprocess env, and the OTLP /v1/logs
|
|
6
|
+
* receiver reads them to resolve the log record's parent span.
|
|
7
|
+
*
|
|
8
|
+
* Both producer and consumer must agree; keep these constants as the single
|
|
9
|
+
* source of truth.
|
|
10
|
+
*/
|
|
11
|
+
const PROMPTFOO_RESOURCE_ATTR_TRACE_ID = "promptfoo.trace_id";
|
|
12
|
+
const PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID = "promptfoo.parent_span_id";
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PROMPTFOO_RESOURCE_ATTR_TRACE_ID as n, PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID as t };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=resourceAttributes-DQbBB--2.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/tracing/resourceAttributes.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared resource-attribute keys used to link SDK-emitted OTEL logs back to
|
|
4
|
+
* the evaluation trace. The claude-agent-sdk provider sets these via
|
|
5
|
+
* `OTEL_RESOURCE_ATTRIBUTES` on the subprocess env, and the OTLP /v1/logs
|
|
6
|
+
* receiver reads them to resolve the log record's parent span.
|
|
7
|
+
*
|
|
8
|
+
* Both producer and consumer must agree; keep these constants as the single
|
|
9
|
+
* source of truth.
|
|
10
|
+
*/
|
|
11
|
+
const PROMPTFOO_RESOURCE_ATTR_TRACE_ID = "promptfoo.trace_id";
|
|
12
|
+
const PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID = "promptfoo.parent_span_id";
|
|
13
|
+
//#endregion
|
|
14
|
+
Object.defineProperty(exports, "PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function() {
|
|
17
|
+
return PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "PROMPTFOO_RESOURCE_ATTR_TRACE_ID", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function() {
|
|
23
|
+
return PROMPTFOO_RESOURCE_ATTR_TRACE_ID;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=resourceAttributes-ephgOvdR.cjs.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/tracing/resourceAttributes.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared resource-attribute keys used to link SDK-emitted OTEL logs back to
|
|
4
|
+
* the evaluation trace. The claude-agent-sdk provider sets these via
|
|
5
|
+
* `OTEL_RESOURCE_ATTRIBUTES` on the subprocess env, and the OTLP /v1/logs
|
|
6
|
+
* receiver reads them to resolve the log record's parent span.
|
|
7
|
+
*
|
|
8
|
+
* Both producer and consumer must agree; keep these constants as the single
|
|
9
|
+
* source of truth.
|
|
10
|
+
*/
|
|
11
|
+
const PROMPTFOO_RESOURCE_ATTR_TRACE_ID = "promptfoo.trace_id";
|
|
12
|
+
const PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID = "promptfoo.parent_span_id";
|
|
13
|
+
//#endregion
|
|
14
|
+
export { PROMPTFOO_RESOURCE_ATTR_TRACE_ID as n, PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID as t };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=resourceAttributes-v6-I67fn.js.map
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
1
|
+
const require_rolldown_runtime = require("./rolldown-runtime-D_mwlA32.cjs");
|
|
2
|
+
const require_logger = require("./logger-cfNpzI4o.cjs");
|
|
3
|
+
const require_fetch = require("./fetch-Dw4XZHjj.cjs");
|
|
4
|
+
const require_fileExtensions = require("./fileExtensions-BhdwzYaD.cjs");
|
|
5
|
+
const require_esm = require("./esm-BIKakvNa.cjs");
|
|
6
|
+
const require_render = require("./render-BNTrbmBw.cjs");
|
|
7
|
+
const require_util = require("./util-SPsvFONY.cjs");
|
|
8
|
+
const require_cache = require("./cache-CPGUA4Yl.cjs");
|
|
9
|
+
const require_openai = require("./openai-C3uXv8wS.cjs");
|
|
10
|
+
const require_util$1 = require("./util-BSIuSLVK.cjs");
|
|
10
11
|
let path = require("path");
|
|
11
|
-
path =
|
|
12
|
+
path = require_rolldown_runtime.__toESM(path, 1);
|
|
12
13
|
//#region src/providers/functionCallbackUtils.ts
|
|
13
14
|
/**
|
|
14
15
|
* Handles function callback execution for AI providers.
|
|
@@ -453,7 +454,9 @@ var OpenAiResponsesProvider = class extends require_openai.OpenAiGenericProvider
|
|
|
453
454
|
"gpt-5.4-pro-2026-03-05",
|
|
454
455
|
"gpt-audio",
|
|
455
456
|
"gpt-audio-2025-08-28",
|
|
457
|
+
"gpt-audio-1.5",
|
|
456
458
|
"gpt-audio-mini",
|
|
459
|
+
"gpt-audio-mini-2025-12-15",
|
|
457
460
|
"gpt-audio-mini-2025-10-06",
|
|
458
461
|
"computer-use-preview",
|
|
459
462
|
"computer-use-preview-2025-03-11",
|
|
@@ -500,6 +503,30 @@ var OpenAiResponsesProvider = class extends require_openai.OpenAiGenericProvider
|
|
|
500
503
|
supportsTemperature() {
|
|
501
504
|
return !this.isReasoningModel();
|
|
502
505
|
}
|
|
506
|
+
isAzureOpenAiEndpoint(value) {
|
|
507
|
+
if (!value) return false;
|
|
508
|
+
const endpoint = /^[a-z][a-z0-9+.-]*:\/\//i.test(value) ? value : `https://${value}`;
|
|
509
|
+
try {
|
|
510
|
+
const hostname = new URL(endpoint).hostname.toLowerCase();
|
|
511
|
+
return hostname === "openai.azure.com" || hostname.endsWith(".openai.azure.com");
|
|
512
|
+
} catch {
|
|
513
|
+
return false;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
getDeploymentCapabilities(config) {
|
|
517
|
+
const hasAzureCustomDeploymentHost = [
|
|
518
|
+
config.apiHost,
|
|
519
|
+
config.apiBaseUrl,
|
|
520
|
+
this.getApiUrl()
|
|
521
|
+
].some((endpoint) => this.isAzureOpenAiEndpoint(endpoint));
|
|
522
|
+
const isAzureResponsesDeploymentWithReasoningConfig = hasAzureCustomDeploymentHost && (config.reasoning !== void 0 || config.reasoning_effort !== void 0);
|
|
523
|
+
const isAzureResponsesDeploymentWithVerbosityConfig = hasAzureCustomDeploymentHost && config.verbosity !== void 0;
|
|
524
|
+
return {
|
|
525
|
+
isAzureResponsesDeploymentWithReasoningConfig,
|
|
526
|
+
isReasoningModel: this.isReasoningModel() || isAzureResponsesDeploymentWithReasoningConfig,
|
|
527
|
+
isGPT5Model: this.isGPT5Model() || isAzureResponsesDeploymentWithVerbosityConfig
|
|
528
|
+
};
|
|
529
|
+
}
|
|
503
530
|
async getOpenAiBody(prompt, context, _callApiOptions) {
|
|
504
531
|
const config = {
|
|
505
532
|
...this.config,
|
|
@@ -513,13 +540,17 @@ var OpenAiResponsesProvider = class extends require_openai.OpenAiGenericProvider
|
|
|
513
540
|
} catch {
|
|
514
541
|
input = prompt;
|
|
515
542
|
}
|
|
516
|
-
const isReasoningModel = this.
|
|
543
|
+
const { isAzureResponsesDeploymentWithReasoningConfig, isReasoningModel, isGPT5Model } = this.getDeploymentCapabilities(config);
|
|
517
544
|
const maxOutputTokensDefault = config.omitDefaults ? require_logger.getEnvString("OPENAI_MAX_TOKENS") === void 0 ? void 0 : require_logger.getEnvInt("OPENAI_MAX_TOKENS") : require_logger.getEnvInt("OPENAI_MAX_TOKENS", 1024);
|
|
518
545
|
const reasoningMaxOutputTokensDefault = require_logger.getEnvInt("OPENAI_MAX_COMPLETION_TOKENS") ?? require_logger.getEnvInt("OPENAI_MAX_TOKENS");
|
|
519
546
|
const maxOutputTokens = config.max_output_tokens ?? (isReasoningModel ? reasoningMaxOutputTokensDefault : maxOutputTokensDefault);
|
|
547
|
+
const renderedReasoning = require_render.renderVarsInObject(config.reasoning, context?.vars);
|
|
548
|
+
const renderedReasoningEffort = isReasoningModel ? require_render.renderVarsInObject(config.reasoning_effort, context?.vars) : void 0;
|
|
549
|
+
const effectiveReasoningEffort = renderedReasoning?.effort ?? renderedReasoningEffort;
|
|
550
|
+
const hasAzureReasoningEffort = isAzureResponsesDeploymentWithReasoningConfig && effectiveReasoningEffort !== void 0 && effectiveReasoningEffort !== "none";
|
|
520
551
|
const temperatureDefault = config.omitDefaults ? require_logger.getEnvString("OPENAI_TEMPERATURE") === void 0 ? void 0 : require_logger.getEnvFloat("OPENAI_TEMPERATURE") : require_logger.getEnvFloat("OPENAI_TEMPERATURE", 0);
|
|
521
|
-
const temperature = this.supportsTemperature() ? config.temperature ?? temperatureDefault : void 0;
|
|
522
|
-
const reasoningEffort = isReasoningModel ?
|
|
552
|
+
const temperature = this.supportsTemperature() && !hasAzureReasoningEffort ? config.temperature ?? temperatureDefault : void 0;
|
|
553
|
+
const reasoningEffort = isReasoningModel ? effectiveReasoningEffort : void 0;
|
|
523
554
|
const instructions = config.instructions;
|
|
524
555
|
const responseFormat = require_util.maybeLoadResponseFormatFromExternalFile(config.response_format, context?.vars);
|
|
525
556
|
let textFormat;
|
|
@@ -534,7 +565,7 @@ var OpenAiResponsesProvider = class extends require_openai.OpenAiGenericProvider
|
|
|
534
565
|
} };
|
|
535
566
|
} else textFormat = { format: { type: "text" } };
|
|
536
567
|
else textFormat = { format: { type: "text" } };
|
|
537
|
-
if (
|
|
568
|
+
if (isGPT5Model && config.verbosity) textFormat = {
|
|
538
569
|
...textFormat,
|
|
539
570
|
verbosity: config.verbosity
|
|
540
571
|
};
|
|
@@ -562,7 +593,11 @@ var OpenAiResponsesProvider = class extends require_openai.OpenAiGenericProvider
|
|
|
562
593
|
...config.user ? { user: config.user } : {},
|
|
563
594
|
...config.passthrough || {}
|
|
564
595
|
};
|
|
565
|
-
if (
|
|
596
|
+
if (renderedReasoning && isReasoningModel) body.reasoning = {
|
|
597
|
+
...body.reasoning,
|
|
598
|
+
...renderedReasoning
|
|
599
|
+
};
|
|
600
|
+
if ("max_tokens" in body) delete body.max_tokens;
|
|
566
601
|
if ("max_tokens" in body) delete body.max_tokens;
|
|
567
602
|
return {
|
|
568
603
|
body,
|
|
@@ -684,4 +719,4 @@ Object.defineProperty(exports, "ResponsesProcessor", {
|
|
|
684
719
|
}
|
|
685
720
|
});
|
|
686
721
|
|
|
687
|
-
//# sourceMappingURL=responses-
|
|
722
|
+
//# sourceMappingURL=responses-1UFFF9N_.cjs.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { D as getEnvInt, E as getEnvFloat, N as state, O as getEnvString, s as logger } from "./logger-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { t as OpenAiGenericProvider } from "./openai-
|
|
10
|
-
import { a as calculateOpenAICost, c as getTokenUsage$1, s as formatOpenAiError } from "./util-
|
|
2
|
+
import { D as getEnvInt, E as getEnvFloat, N as state, O as getEnvString, s as logger } from "./logger-BbY6ypFL.js";
|
|
3
|
+
import { _ as REQUEST_TIMEOUT_MS, g as LONG_RUNNING_MODEL_TIMEOUT_MS } from "./fetch-DXUnXkVU.js";
|
|
4
|
+
import { i as isJavascriptFile } from "./fileExtensions-D4GCJ67J.js";
|
|
5
|
+
import { r as importModule } from "./esm-Bexx2PFc.js";
|
|
6
|
+
import { n as renderVarsInObject } from "./render-CSP99NLm.js";
|
|
7
|
+
import { a as fetchWithCache } from "./cache-DpPWrkTE.js";
|
|
8
|
+
import { F as maybeLoadToolsFromExternalFile, P as maybeLoadResponseFormatFromExternalFile } from "./util-DURocbYR.js";
|
|
9
|
+
import { t as OpenAiGenericProvider } from "./openai-CJrsh9n4.js";
|
|
10
|
+
import { a as calculateOpenAICost, c as getTokenUsage$1, s as formatOpenAiError } from "./util-5WnCSb0h.js";
|
|
11
11
|
import path from "path";
|
|
12
12
|
//#region src/providers/functionCallbackUtils.ts
|
|
13
13
|
/**
|
|
@@ -453,7 +453,9 @@ var OpenAiResponsesProvider = class extends OpenAiGenericProvider {
|
|
|
453
453
|
"gpt-5.4-pro-2026-03-05",
|
|
454
454
|
"gpt-audio",
|
|
455
455
|
"gpt-audio-2025-08-28",
|
|
456
|
+
"gpt-audio-1.5",
|
|
456
457
|
"gpt-audio-mini",
|
|
458
|
+
"gpt-audio-mini-2025-12-15",
|
|
457
459
|
"gpt-audio-mini-2025-10-06",
|
|
458
460
|
"computer-use-preview",
|
|
459
461
|
"computer-use-preview-2025-03-11",
|
|
@@ -500,6 +502,30 @@ var OpenAiResponsesProvider = class extends OpenAiGenericProvider {
|
|
|
500
502
|
supportsTemperature() {
|
|
501
503
|
return !this.isReasoningModel();
|
|
502
504
|
}
|
|
505
|
+
isAzureOpenAiEndpoint(value) {
|
|
506
|
+
if (!value) return false;
|
|
507
|
+
const endpoint = /^[a-z][a-z0-9+.-]*:\/\//i.test(value) ? value : `https://${value}`;
|
|
508
|
+
try {
|
|
509
|
+
const hostname = new URL(endpoint).hostname.toLowerCase();
|
|
510
|
+
return hostname === "openai.azure.com" || hostname.endsWith(".openai.azure.com");
|
|
511
|
+
} catch {
|
|
512
|
+
return false;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
getDeploymentCapabilities(config) {
|
|
516
|
+
const hasAzureCustomDeploymentHost = [
|
|
517
|
+
config.apiHost,
|
|
518
|
+
config.apiBaseUrl,
|
|
519
|
+
this.getApiUrl()
|
|
520
|
+
].some((endpoint) => this.isAzureOpenAiEndpoint(endpoint));
|
|
521
|
+
const isAzureResponsesDeploymentWithReasoningConfig = hasAzureCustomDeploymentHost && (config.reasoning !== void 0 || config.reasoning_effort !== void 0);
|
|
522
|
+
const isAzureResponsesDeploymentWithVerbosityConfig = hasAzureCustomDeploymentHost && config.verbosity !== void 0;
|
|
523
|
+
return {
|
|
524
|
+
isAzureResponsesDeploymentWithReasoningConfig,
|
|
525
|
+
isReasoningModel: this.isReasoningModel() || isAzureResponsesDeploymentWithReasoningConfig,
|
|
526
|
+
isGPT5Model: this.isGPT5Model() || isAzureResponsesDeploymentWithVerbosityConfig
|
|
527
|
+
};
|
|
528
|
+
}
|
|
503
529
|
async getOpenAiBody(prompt, context, _callApiOptions) {
|
|
504
530
|
const config = {
|
|
505
531
|
...this.config,
|
|
@@ -513,13 +539,17 @@ var OpenAiResponsesProvider = class extends OpenAiGenericProvider {
|
|
|
513
539
|
} catch {
|
|
514
540
|
input = prompt;
|
|
515
541
|
}
|
|
516
|
-
const isReasoningModel = this.
|
|
542
|
+
const { isAzureResponsesDeploymentWithReasoningConfig, isReasoningModel, isGPT5Model } = this.getDeploymentCapabilities(config);
|
|
517
543
|
const maxOutputTokensDefault = config.omitDefaults ? getEnvString("OPENAI_MAX_TOKENS") === void 0 ? void 0 : getEnvInt("OPENAI_MAX_TOKENS") : getEnvInt("OPENAI_MAX_TOKENS", 1024);
|
|
518
544
|
const reasoningMaxOutputTokensDefault = getEnvInt("OPENAI_MAX_COMPLETION_TOKENS") ?? getEnvInt("OPENAI_MAX_TOKENS");
|
|
519
545
|
const maxOutputTokens = config.max_output_tokens ?? (isReasoningModel ? reasoningMaxOutputTokensDefault : maxOutputTokensDefault);
|
|
546
|
+
const renderedReasoning = renderVarsInObject(config.reasoning, context?.vars);
|
|
547
|
+
const renderedReasoningEffort = isReasoningModel ? renderVarsInObject(config.reasoning_effort, context?.vars) : void 0;
|
|
548
|
+
const effectiveReasoningEffort = renderedReasoning?.effort ?? renderedReasoningEffort;
|
|
549
|
+
const hasAzureReasoningEffort = isAzureResponsesDeploymentWithReasoningConfig && effectiveReasoningEffort !== void 0 && effectiveReasoningEffort !== "none";
|
|
520
550
|
const temperatureDefault = config.omitDefaults ? getEnvString("OPENAI_TEMPERATURE") === void 0 ? void 0 : getEnvFloat("OPENAI_TEMPERATURE") : getEnvFloat("OPENAI_TEMPERATURE", 0);
|
|
521
|
-
const temperature = this.supportsTemperature() ? config.temperature ?? temperatureDefault : void 0;
|
|
522
|
-
const reasoningEffort = isReasoningModel ?
|
|
551
|
+
const temperature = this.supportsTemperature() && !hasAzureReasoningEffort ? config.temperature ?? temperatureDefault : void 0;
|
|
552
|
+
const reasoningEffort = isReasoningModel ? effectiveReasoningEffort : void 0;
|
|
523
553
|
const instructions = config.instructions;
|
|
524
554
|
const responseFormat = maybeLoadResponseFormatFromExternalFile(config.response_format, context?.vars);
|
|
525
555
|
let textFormat;
|
|
@@ -534,7 +564,7 @@ var OpenAiResponsesProvider = class extends OpenAiGenericProvider {
|
|
|
534
564
|
} };
|
|
535
565
|
} else textFormat = { format: { type: "text" } };
|
|
536
566
|
else textFormat = { format: { type: "text" } };
|
|
537
|
-
if (
|
|
567
|
+
if (isGPT5Model && config.verbosity) textFormat = {
|
|
538
568
|
...textFormat,
|
|
539
569
|
verbosity: config.verbosity
|
|
540
570
|
};
|
|
@@ -562,7 +592,11 @@ var OpenAiResponsesProvider = class extends OpenAiGenericProvider {
|
|
|
562
592
|
...config.user ? { user: config.user } : {},
|
|
563
593
|
...config.passthrough || {}
|
|
564
594
|
};
|
|
565
|
-
if (
|
|
595
|
+
if (renderedReasoning && isReasoningModel) body.reasoning = {
|
|
596
|
+
...body.reasoning,
|
|
597
|
+
...renderedReasoning
|
|
598
|
+
};
|
|
599
|
+
if ("max_tokens" in body) delete body.max_tokens;
|
|
566
600
|
if ("max_tokens" in body) delete body.max_tokens;
|
|
567
601
|
return {
|
|
568
602
|
body,
|
|
@@ -667,4 +701,4 @@ var OpenAiResponsesProvider = class extends OpenAiGenericProvider {
|
|
|
667
701
|
//#endregion
|
|
668
702
|
export { ResponsesProcessor as n, FunctionCallbackHandler as r, OpenAiResponsesProvider as t };
|
|
669
703
|
|
|
670
|
-
//# sourceMappingURL=responses-
|
|
704
|
+
//# sourceMappingURL=responses-B3W2JvOQ.js.map
|