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,220 @@
|
|
|
1
|
+
import { a as logger, k as state } from "./logger-Ct2S6Yx-.js";
|
|
2
|
+
import { l as sleep } from "./fetch-It34O8Ur.js";
|
|
3
|
+
import { t as getTraceStore } from "./store-HpopRVzl.js";
|
|
4
|
+
import { r as getToolNameFromAttributes } from "./toolAttributes-DJ9ZEKXD.js";
|
|
5
|
+
//#region src/tracing/traceContext.ts
|
|
6
|
+
const DEFAULT_MAX_RETRIES = 3;
|
|
7
|
+
const DEFAULT_RETRY_DELAY_MS = 500;
|
|
8
|
+
const SPAN_KIND_MAP = {
|
|
9
|
+
0: "unspecified",
|
|
10
|
+
1: "internal",
|
|
11
|
+
2: "server",
|
|
12
|
+
3: "client",
|
|
13
|
+
4: "producer",
|
|
14
|
+
5: "consumer"
|
|
15
|
+
};
|
|
16
|
+
function resolveSpanKind(span) {
|
|
17
|
+
const attributes = span.attributes || {};
|
|
18
|
+
const attributeKind = attributes["span.kind"] || attributes["otel.span.kind"] || attributes["spanKind"] || attributes["kind"];
|
|
19
|
+
if (attributeKind) return `${attributeKind}`.toLowerCase();
|
|
20
|
+
const numericKind = attributes["otel.span.kind_code"];
|
|
21
|
+
if (typeof numericKind === "number" && numericKind in SPAN_KIND_MAP) return SPAN_KIND_MAP[numericKind];
|
|
22
|
+
return "unspecified";
|
|
23
|
+
}
|
|
24
|
+
function mapStatusCode(span) {
|
|
25
|
+
switch (span.statusCode) {
|
|
26
|
+
case 1: return "ok";
|
|
27
|
+
case 2: return "error";
|
|
28
|
+
default: return "unset";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function buildSpanTree(spans) {
|
|
32
|
+
const depthMap = /* @__PURE__ */ new Map();
|
|
33
|
+
const spansById = new Map(spans.map((span) => [span.spanId, span]));
|
|
34
|
+
const computeDepth = (span) => {
|
|
35
|
+
if (depthMap.has(span.spanId)) return depthMap.get(span.spanId);
|
|
36
|
+
if (!span.parentSpanId || !spansById.has(span.parentSpanId)) {
|
|
37
|
+
depthMap.set(span.spanId, 0);
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
const depth = computeDepth(spansById.get(span.parentSpanId)) + 1;
|
|
41
|
+
depthMap.set(span.spanId, depth);
|
|
42
|
+
return depth;
|
|
43
|
+
};
|
|
44
|
+
spans.forEach((span) => computeDepth(span));
|
|
45
|
+
return depthMap;
|
|
46
|
+
}
|
|
47
|
+
function createTraceSpans(spans) {
|
|
48
|
+
const depthMap = buildSpanTree(spans);
|
|
49
|
+
return spans.map((span) => {
|
|
50
|
+
const endTime = span.endTime ?? span.startTime;
|
|
51
|
+
const durationMs = Math.max(0, endTime - span.startTime);
|
|
52
|
+
return {
|
|
53
|
+
spanId: span.spanId,
|
|
54
|
+
parentSpanId: span.parentSpanId,
|
|
55
|
+
name: span.name,
|
|
56
|
+
kind: resolveSpanKind(span),
|
|
57
|
+
startTime: span.startTime,
|
|
58
|
+
endTime: span.endTime,
|
|
59
|
+
durationMs,
|
|
60
|
+
attributes: span.attributes || {},
|
|
61
|
+
status: {
|
|
62
|
+
code: mapStatusCode(span),
|
|
63
|
+
message: span.statusMessage
|
|
64
|
+
},
|
|
65
|
+
depth: depthMap.get(span.spanId) ?? 0,
|
|
66
|
+
events: []
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function deriveInsights(traceSpans) {
|
|
71
|
+
if (traceSpans.length === 0) return [];
|
|
72
|
+
const insights = [];
|
|
73
|
+
traceSpans.filter((span) => span.status.code === "error").forEach((span) => {
|
|
74
|
+
const statusMessage = span.status.message ? `: ${span.status.message}` : "";
|
|
75
|
+
insights.push(`Error span "${span.name}" (${span.spanId.slice(0, 8)})${statusMessage}`);
|
|
76
|
+
});
|
|
77
|
+
traceSpans.map((span) => ({
|
|
78
|
+
span,
|
|
79
|
+
toolName: getToolNameFromAttributes(span.attributes)
|
|
80
|
+
})).filter((entry) => entry.toolName).forEach(({ span, toolName }) => {
|
|
81
|
+
insights.push(`Tool call ${toolName} via "${span.name}" (duration ${span.durationMs ?? 0}ms)`);
|
|
82
|
+
});
|
|
83
|
+
traceSpans.filter((span) => span.attributes["guardrail.name"] || span.attributes["guardrails.decision"]).forEach((span) => {
|
|
84
|
+
const decision = span.attributes["guardrails.decision"] ?? span.attributes["guardrail.decision"];
|
|
85
|
+
insights.push(`Guardrail ${span.attributes["guardrail.name"] ?? span.name} decision: ${decision ?? "unknown"}`);
|
|
86
|
+
});
|
|
87
|
+
return insights.slice(0, 20);
|
|
88
|
+
}
|
|
89
|
+
function extractTraceIdFromTraceparent(traceparent) {
|
|
90
|
+
if (!traceparent) return null;
|
|
91
|
+
const parts = traceparent.split("-");
|
|
92
|
+
if (parts.length < 2) return null;
|
|
93
|
+
return parts[1];
|
|
94
|
+
}
|
|
95
|
+
async function fetchTraceContext(traceId, options = {}) {
|
|
96
|
+
const { includeInternalSpans = true, sanitizeAttributes = true, maxRetries = DEFAULT_MAX_RETRIES, retryDelayMs = DEFAULT_RETRY_DELAY_MS, ...spanOptions } = options;
|
|
97
|
+
const traceStore = getTraceStore();
|
|
98
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) try {
|
|
99
|
+
const spans = await traceStore.getSpans(traceId, {
|
|
100
|
+
includeInternalSpans,
|
|
101
|
+
sanitizeAttributes,
|
|
102
|
+
...spanOptions
|
|
103
|
+
});
|
|
104
|
+
if (spans.length === 0) {
|
|
105
|
+
if (attempt === maxRetries) {
|
|
106
|
+
logger.debug(`[TraceContext] No spans found for trace ${traceId} after ${attempt + 1} attempts`);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
logger.debug(`[TraceContext] No spans yet for trace ${traceId}, retrying in ${retryDelayMs}ms (attempt ${attempt + 1}/${maxRetries})`);
|
|
110
|
+
await sleep(retryDelayMs);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const traceSpans = createTraceSpans(spans);
|
|
114
|
+
const insights = deriveInsights(traceSpans);
|
|
115
|
+
const context = {
|
|
116
|
+
traceId,
|
|
117
|
+
spans: traceSpans,
|
|
118
|
+
insights,
|
|
119
|
+
fetchedAt: Date.now()
|
|
120
|
+
};
|
|
121
|
+
logger.debug(`[TraceContext] Resolved ${traceSpans.length} spans for trace ${traceId} with ${insights.length} insights`);
|
|
122
|
+
return context;
|
|
123
|
+
} catch (error) {
|
|
124
|
+
logger.error(`[TraceContext] Failed to fetch spans for trace ${traceId}: ${error}`);
|
|
125
|
+
if (attempt === maxRetries) return null;
|
|
126
|
+
await sleep(retryDelayMs);
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
//#region src/redteam/providers/traceFormatting.ts
|
|
132
|
+
const DEFAULT_MAX_SPANS = 10;
|
|
133
|
+
function formatDuration(durationMs) {
|
|
134
|
+
if (!durationMs || Number.isNaN(durationMs)) return "0ms";
|
|
135
|
+
if (durationMs < 1e3) return `${Math.round(durationMs)}ms`;
|
|
136
|
+
if (durationMs < 6e4) return `${(durationMs / 1e3).toFixed(1)}s`;
|
|
137
|
+
return `${(durationMs / 6e4).toFixed(1)}m`;
|
|
138
|
+
}
|
|
139
|
+
function formatSpan(span) {
|
|
140
|
+
const parts = [];
|
|
141
|
+
const duration = formatDuration(span.durationMs);
|
|
142
|
+
parts.push(`[${duration}] ${span.name}${span.kind && span.kind !== "unspecified" ? ` (${span.kind})` : ""}`);
|
|
143
|
+
const tool = getToolNameFromAttributes(span.attributes);
|
|
144
|
+
if (tool) parts.push(`tool=${tool}`);
|
|
145
|
+
const model = span.attributes["model"] || span.attributes["llm.model"];
|
|
146
|
+
if (model) parts.push(`model=${model}`);
|
|
147
|
+
if (span.status.code === "error") parts.push(`ERROR: ${span.status.message ?? "Unknown error"}`);
|
|
148
|
+
return parts.join(" | ");
|
|
149
|
+
}
|
|
150
|
+
function formatTraceSummary(trace, options = {}) {
|
|
151
|
+
if (!trace || trace.spans.length === 0) return "No trace spans recorded during this iteration.";
|
|
152
|
+
const maxSpans = options.maxSpans ?? DEFAULT_MAX_SPANS;
|
|
153
|
+
const spans = trace.spans.slice(0, maxSpans);
|
|
154
|
+
return [
|
|
155
|
+
`Trace ${trace.traceId.slice(0, 8)} • ${trace.spans.length} span${trace.spans.length === 1 ? "" : "s"}`,
|
|
156
|
+
"",
|
|
157
|
+
"Execution Flow:",
|
|
158
|
+
spans.map((span, index) => `${index + 1}. ${formatSpan(span)}`).join("\n"),
|
|
159
|
+
"",
|
|
160
|
+
"Key Observations:",
|
|
161
|
+
trace.insights.length > 0 ? trace.insights.map((i) => `• ${i}`).join("\n") : "None"
|
|
162
|
+
].join("\n");
|
|
163
|
+
}
|
|
164
|
+
function formatTraceForMetadata(trace) {
|
|
165
|
+
return {
|
|
166
|
+
traceId: trace.traceId,
|
|
167
|
+
fetchedAt: trace.fetchedAt,
|
|
168
|
+
spanCount: trace.spans.length,
|
|
169
|
+
insights: trace.insights
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
//#endregion
|
|
173
|
+
//#region src/redteam/providers/tracingOptions.ts
|
|
174
|
+
const DEFAULT_TRACING_OPTIONS = {
|
|
175
|
+
enabled: false,
|
|
176
|
+
includeInAttack: true,
|
|
177
|
+
includeInGrading: true,
|
|
178
|
+
includeInternalSpans: false,
|
|
179
|
+
maxSpans: 50,
|
|
180
|
+
maxDepth: 5,
|
|
181
|
+
maxRetries: 3,
|
|
182
|
+
retryDelayMs: 500,
|
|
183
|
+
spanFilter: void 0,
|
|
184
|
+
sanitizeAttributes: true
|
|
185
|
+
};
|
|
186
|
+
function mergeTracingConfig(...configs) {
|
|
187
|
+
return configs.reduce((acc, config) => config ? {
|
|
188
|
+
...acc,
|
|
189
|
+
...config
|
|
190
|
+
} : acc, {});
|
|
191
|
+
}
|
|
192
|
+
function normalizeTracingOptions(config) {
|
|
193
|
+
const merged = {
|
|
194
|
+
...DEFAULT_TRACING_OPTIONS,
|
|
195
|
+
...config
|
|
196
|
+
};
|
|
197
|
+
return {
|
|
198
|
+
enabled: Boolean(merged.enabled),
|
|
199
|
+
includeInAttack: merged.includeInAttack ?? DEFAULT_TRACING_OPTIONS.includeInAttack ?? true,
|
|
200
|
+
includeInGrading: merged.includeInGrading ?? DEFAULT_TRACING_OPTIONS.includeInGrading ?? true,
|
|
201
|
+
includeInternalSpans: merged.includeInternalSpans ?? DEFAULT_TRACING_OPTIONS.includeInternalSpans ?? false,
|
|
202
|
+
maxSpans: merged.maxSpans ?? DEFAULT_TRACING_OPTIONS.maxSpans,
|
|
203
|
+
maxDepth: merged.maxDepth ?? DEFAULT_TRACING_OPTIONS.maxDepth,
|
|
204
|
+
maxRetries: merged.maxRetries ?? DEFAULT_TRACING_OPTIONS.maxRetries,
|
|
205
|
+
retryDelayMs: merged.retryDelayMs ?? DEFAULT_TRACING_OPTIONS.retryDelayMs,
|
|
206
|
+
spanFilter: merged.spanFilter,
|
|
207
|
+
sanitizeAttributes: merged.sanitizeAttributes ?? DEFAULT_TRACING_OPTIONS.sanitizeAttributes
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function resolveTracingOptions({ strategyId, test, config }) {
|
|
211
|
+
const globalConfig = state.config?.redteam?.tracing ?? void 0;
|
|
212
|
+
const testConfig = test?.metadata?.tracing ?? void 0;
|
|
213
|
+
const metadataStrategyConfig = (test?.metadata?.strategyConfig)?.tracing;
|
|
214
|
+
const providerStrategyConfig = config?.tracing ?? void 0;
|
|
215
|
+
return normalizeTracingOptions(mergeTracingConfig(globalConfig, testConfig, metadataStrategyConfig, providerStrategyConfig, strategyId && globalConfig?.strategies ? globalConfig.strategies[strategyId] : void 0, strategyId && testConfig?.strategies ? testConfig.strategies[strategyId] : void 0, strategyId && metadataStrategyConfig?.strategies ? metadataStrategyConfig.strategies[strategyId] : void 0, strategyId && providerStrategyConfig?.strategies ? providerStrategyConfig.strategies[strategyId] : void 0));
|
|
216
|
+
}
|
|
217
|
+
//#endregion
|
|
218
|
+
export { fetchTraceContext as a, extractTraceIdFromTraceparent as i, formatTraceForMetadata as n, formatTraceSummary as r, resolveTracingOptions as t };
|
|
219
|
+
|
|
220
|
+
//# sourceMappingURL=tracingOptions-ji2OuXbT.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as logger } from "./logger-Ct2S6Yx-.js";
|
|
2
|
-
import {
|
|
3
|
-
import { r as fetchWithCache } from "./cache-
|
|
4
|
-
import { t as OpenAiGenericProvider } from "./openai-
|
|
5
|
-
import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-
|
|
2
|
+
import { p as REQUEST_TIMEOUT_MS } from "./fetch-It34O8Ur.js";
|
|
3
|
+
import { r as fetchWithCache } from "./cache-DIXbtkNO.js";
|
|
4
|
+
import { t as OpenAiGenericProvider } from "./openai-zgwBb4Ff.js";
|
|
5
|
+
import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-LKTmNsMQ.js";
|
|
6
6
|
import fs from "fs";
|
|
7
7
|
import path from "path";
|
|
8
8
|
//#region src/providers/openai/transcription.ts
|
|
@@ -119,4 +119,4 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends Open
|
|
|
119
119
|
//#endregion
|
|
120
120
|
export { OpenAiTranscriptionProvider };
|
|
121
121
|
|
|
122
|
-
//# sourceMappingURL=transcription-
|
|
122
|
+
//# sourceMappingURL=transcription-B8uIgCYX.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { s as logger } from "./logger-
|
|
3
|
-
import {
|
|
4
|
-
import { a as fetchWithCache } from "./cache-
|
|
5
|
-
import { t as OpenAiGenericProvider } from "./openai-
|
|
6
|
-
import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-
|
|
2
|
+
import { s as logger } from "./logger-BbY6ypFL.js";
|
|
3
|
+
import { _ as REQUEST_TIMEOUT_MS } from "./fetch-DXUnXkVU.js";
|
|
4
|
+
import { a as fetchWithCache } from "./cache-DpPWrkTE.js";
|
|
5
|
+
import { t as OpenAiGenericProvider } from "./openai-CJrsh9n4.js";
|
|
6
|
+
import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-5WnCSb0h.js";
|
|
7
7
|
import fs from "fs";
|
|
8
8
|
import path from "path";
|
|
9
9
|
//#region src/providers/openai/transcription.ts
|
|
@@ -120,4 +120,4 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends Open
|
|
|
120
120
|
//#endregion
|
|
121
121
|
export { OpenAiTranscriptionProvider };
|
|
122
122
|
|
|
123
|
-
//# sourceMappingURL=transcription-
|
|
123
|
+
//# sourceMappingURL=transcription-CfU5loSq.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as logger } from "./logger-
|
|
2
|
-
import {
|
|
3
|
-
import { r as fetchWithCache } from "./cache-
|
|
4
|
-
import { t as OpenAiGenericProvider } from "./openai-
|
|
5
|
-
import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-
|
|
1
|
+
import { a as logger } from "./logger-KD8JjCRJ.js";
|
|
2
|
+
import { v as REQUEST_TIMEOUT_MS } from "./fetch-BufrQtvR.js";
|
|
3
|
+
import { r as fetchWithCache } from "./cache-roFAE0cI.js";
|
|
4
|
+
import { t as OpenAiGenericProvider } from "./openai-BMHD2Huo.js";
|
|
5
|
+
import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-efByNxcr.js";
|
|
6
6
|
import fs from "fs";
|
|
7
7
|
import path from "path";
|
|
8
8
|
//#region src/providers/openai/transcription.ts
|
|
@@ -119,4 +119,4 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends Open
|
|
|
119
119
|
//#endregion
|
|
120
120
|
export { OpenAiTranscriptionProvider };
|
|
121
121
|
|
|
122
|
-
//# sourceMappingURL=transcription-
|
|
122
|
+
//# sourceMappingURL=transcription-Dkd22_4K.js.map
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
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_cache = require("./cache-CPGUA4Yl.cjs");
|
|
5
|
+
const require_openai = require("./openai-C3uXv8wS.cjs");
|
|
6
|
+
const require_util = require("./util-BSIuSLVK.cjs");
|
|
6
7
|
let fs = require("fs");
|
|
7
|
-
fs =
|
|
8
|
+
fs = require_rolldown_runtime.__toESM(fs, 1);
|
|
8
9
|
let path = require("path");
|
|
9
|
-
path =
|
|
10
|
+
path = require_rolldown_runtime.__toESM(path, 1);
|
|
10
11
|
//#region src/providers/openai/transcription.ts
|
|
11
12
|
var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends require_openai.OpenAiGenericProvider {
|
|
12
13
|
static OPENAI_TRANSCRIPTION_MODEL_NAMES = require_util.OPENAI_TRANSCRIPTION_MODELS.map((model) => model.id);
|
|
@@ -121,4 +122,4 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends requ
|
|
|
121
122
|
//#endregion
|
|
122
123
|
exports.OpenAiTranscriptionProvider = OpenAiTranscriptionProvider;
|
|
123
124
|
|
|
124
|
-
//# sourceMappingURL=transcription-
|
|
125
|
+
//# sourceMappingURL=transcription-mzuf18Mq.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { T as getEnvString, a as logger, g as getAjv } from "./logger-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { T as getEnvString, a as logger, g as getAjv } from "./logger-KD8JjCRJ.js";
|
|
2
|
+
import { T as parseChatPrompt, t as fetchWithProxy, y as calculateCost } from "./fetch-BufrQtvR.js";
|
|
3
|
+
import { n as renderVarsInObject, o as getNunjucksEngine } from "./render-_6ur1fhE.js";
|
|
4
|
+
import { j as maybeLoadFromExternalFile } from "./util-I-Rf-KaD.js";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import crypto from "crypto";
|
|
7
7
|
import Clone from "rfdc";
|
|
@@ -912,13 +912,13 @@ function calculateGoogleCost(modelName, config, promptTokens, completionTokens,
|
|
|
912
912
|
const model = GOOGLE_MODELS.find((m) => m.id === modelName);
|
|
913
913
|
if (promptTokens != null && completionTokens != null) {
|
|
914
914
|
if (model?.tieredCost && promptTokens > model.tieredCost.threshold) {
|
|
915
|
-
const inputCost = config.cost ?? model.tieredCost.above.input;
|
|
916
|
-
const outputCost = config.cost ?? model.tieredCost.above.output;
|
|
915
|
+
const inputCost = config.inputCost ?? config.cost ?? model.tieredCost.above.input;
|
|
916
|
+
const outputCost = config.outputCost ?? config.cost ?? model.tieredCost.above.output;
|
|
917
917
|
return inputCost * promptTokens + outputCost * completionTokens;
|
|
918
918
|
}
|
|
919
919
|
if (isVertexMode && model?.vertexCost) {
|
|
920
|
-
const inputCost = config.cost ?? model.vertexCost.input;
|
|
921
|
-
const outputCost = config.cost ?? model.vertexCost.output;
|
|
920
|
+
const inputCost = config.inputCost ?? config.cost ?? model.vertexCost.input;
|
|
921
|
+
const outputCost = config.outputCost ?? config.cost ?? model.vertexCost.output;
|
|
922
922
|
return inputCost * promptTokens + outputCost * completionTokens;
|
|
923
923
|
}
|
|
924
924
|
}
|
|
@@ -1507,4 +1507,4 @@ async function transformMCPServerConfigToClaudeCode(config) {
|
|
|
1507
1507
|
//#endregion
|
|
1508
1508
|
export { renderAuthVars as A, resolveProjectId as C, getAuthHeaders as D, applyQueryParams as E, getAuthQueryParams as O, loadCredentials as S, toDataUri as T, GoogleAuthManager as _, calculateGoogleCost as a, getGoogleClient as b, geminiFormatAndSystemInstructions as c, mergeParts as d, normalizeSafetySettings as f, CHAT_MODELS as g, validateFunctionCall as h, transformMCPToolsToOpenAi as i, TOKEN_REFRESH_BUFFER_MS as j, getOAuthTokenWithExpiry as k, getCandidate as l, parseConfigSystemInstruction as m, transformMCPToolsToAnthropic as n, createAuthCacheDiscriminator as o, normalizeTools as p, transformMCPToolsToGoogle as r, formatCandidateContents as s, transformMCPConfigToClaudeCode as t, getGoogleAccessToken as u, determineGoogleVertexMode as v, parseDataUrl as w, hasGoogleDefaultCredentials as x, getGoogleApiKey as y };
|
|
1509
1509
|
|
|
1510
|
-
//# sourceMappingURL=transform-
|
|
1510
|
+
//# sourceMappingURL=transform-BIMynQsA.js.map
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { N as state, s as logger } from "./logger-BbY6ypFL.js";
|
|
3
|
+
import { i as isJavascriptFile } from "./fileExtensions-D4GCJ67J.js";
|
|
4
|
+
import { a as safeJoin, r as importModule } from "./esm-Bexx2PFc.js";
|
|
5
|
+
import { r as runPython } from "./pythonUtils-CgYxeSmO.js";
|
|
6
|
+
import { t as getProcessShim } from "./processShim-BBxt7LKO.js";
|
|
7
|
+
//#region src/util/transform.ts
|
|
8
|
+
const INLINE_FUNCTION_LABEL = "[inline function]";
|
|
9
|
+
const INLINE_STRING_LABEL = "[inline transform]";
|
|
10
|
+
const FILE_TRANSFORM_LABEL = "[file transform]";
|
|
11
|
+
/** Error labels truncate inline string transforms past this length so they stay readable in logs. */
|
|
12
|
+
const INLINE_STRING_LABEL_MAX_LENGTH = 80;
|
|
13
|
+
/**
|
|
14
|
+
* Every config field that accepts a `StringOrFunctionSchema`. Shared between the
|
|
15
|
+
* runtime sanitizer in `src/index.ts` (which replaces function values with
|
|
16
|
+
* markers before persistence) and `scripts/generateJsonSchema.ts` (which rewrites
|
|
17
|
+
* these fields to string-only in the generated JSON schema).
|
|
18
|
+
*/
|
|
19
|
+
const TRANSFORM_KEYS = [
|
|
20
|
+
"transform",
|
|
21
|
+
"transformVars",
|
|
22
|
+
"contextTransform",
|
|
23
|
+
"postprocess"
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Unwraps `transform()`'s `Transform failed (label): ...` wrapper and returns
|
|
27
|
+
* the underlying message. Callers that add their own label wrapper (e.g.
|
|
28
|
+
* `contextUtils.resolveContext`, SageMaker's error response) use this to avoid
|
|
29
|
+
* stuttering two labels in the user-facing message.
|
|
30
|
+
*/
|
|
31
|
+
function getTransformErrorMessage(error) {
|
|
32
|
+
const cause = error?.cause;
|
|
33
|
+
const raw = error instanceof Error && cause instanceof Error ? cause : error;
|
|
34
|
+
return raw instanceof Error ? raw.message : String(raw);
|
|
35
|
+
}
|
|
36
|
+
const TransformInputType = {
|
|
37
|
+
OUTPUT: "output",
|
|
38
|
+
VARS: "vars"
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Parses a file path string to extract the file path and function name.
|
|
42
|
+
* Handles Windows drive letters (e.g., C:\path\to\file.js:functionName).
|
|
43
|
+
* @param filePath - The file path string, potentially including a function name.
|
|
44
|
+
* @returns A tuple containing the file path and function name (if present).
|
|
45
|
+
*/
|
|
46
|
+
function parseFilePathAndFunctionName(filePath) {
|
|
47
|
+
const lastColonIndex = filePath.lastIndexOf(":");
|
|
48
|
+
if (lastColonIndex > 1) return [filePath.slice(0, lastColonIndex), filePath.slice(lastColonIndex + 1)];
|
|
49
|
+
return [filePath, void 0];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Retrieves a JavaScript transform function from a file.
|
|
53
|
+
* @param filePath - The path to the JavaScript file.
|
|
54
|
+
* @param functionName - Optional name of the function to retrieve.
|
|
55
|
+
* @returns A Promise resolving to the requested function.
|
|
56
|
+
* @throws Error if the file doesn't export a valid function.
|
|
57
|
+
*/
|
|
58
|
+
async function getJavascriptTransformFunction(filePath, functionName) {
|
|
59
|
+
const requiredModule = await importModule(filePath);
|
|
60
|
+
if (functionName && Object.prototype.hasOwnProperty.call(requiredModule, functionName) && typeof requiredModule[functionName] === "function") return requiredModule[functionName];
|
|
61
|
+
else if (typeof requiredModule === "function") return requiredModule;
|
|
62
|
+
else if (requiredModule.default && typeof requiredModule.default === "function") return requiredModule.default;
|
|
63
|
+
throw new Error(`Transform ${filePath} must export a function, have a default export as a function, or export the specified function "${functionName}"`);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Creates a function that runs a Python transform function.
|
|
67
|
+
* @param filePath - The path to the Python file.
|
|
68
|
+
* @param functionName - The name of the function to run (defaults to 'get_transform').
|
|
69
|
+
* @returns A function that executes the Python transform.
|
|
70
|
+
*/
|
|
71
|
+
function getPythonTransformFunction(filePath, functionName = "get_transform") {
|
|
72
|
+
return async (output, context) => {
|
|
73
|
+
return runPython(filePath, functionName, [output, context]);
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Retrieves a transform function from a file, supporting both JavaScript and Python.
|
|
78
|
+
* @param filePath - The path to the file, including the 'file://' prefix.
|
|
79
|
+
* @returns A Promise resolving to the requested function.
|
|
80
|
+
* @throws Error if the file format is unsupported.
|
|
81
|
+
*/
|
|
82
|
+
async function getFileTransformFunction(filePath) {
|
|
83
|
+
const [actualFilePath, functionName] = parseFilePathAndFunctionName(filePath.slice(7));
|
|
84
|
+
const fullPath = safeJoin(state.basePath || "", actualFilePath);
|
|
85
|
+
if (isJavascriptFile(fullPath)) return getJavascriptTransformFunction(fullPath, functionName);
|
|
86
|
+
else if (fullPath.endsWith(".py")) return getPythonTransformFunction(fullPath, functionName);
|
|
87
|
+
throw new Error(`Unsupported transform file format: file://${actualFilePath}`);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Creates a function from inline JavaScript code.
|
|
91
|
+
* @param code - The JavaScript code to convert into a function.
|
|
92
|
+
* @returns A Function created from the provided code.
|
|
93
|
+
*
|
|
94
|
+
* The function receives three parameters:
|
|
95
|
+
* - The input (output or vars depending on inputType)
|
|
96
|
+
* - A context object
|
|
97
|
+
* - A process object with mainModule.require shimmed for backwards compatibility
|
|
98
|
+
*
|
|
99
|
+
* To use require in inline transforms, use: process.mainModule.require('module-name')
|
|
100
|
+
* Or assign it to a variable: const require = process.mainModule.require;
|
|
101
|
+
*/
|
|
102
|
+
function getInlineTransformFunction(code, inputType) {
|
|
103
|
+
return new Function(inputType, "context", "process", code.includes("\n") ? code : `return ${code}`);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Determines and retrieves the appropriate transform function based on the input.
|
|
107
|
+
* @param codeOrFilepath - Either inline code or a file path starting with 'file://'.
|
|
108
|
+
* @returns A Promise resolving to the appropriate transform function.
|
|
109
|
+
*/
|
|
110
|
+
async function getTransformFunction(codeOrFilepath, inputType) {
|
|
111
|
+
if (codeOrFilepath.startsWith("file://")) try {
|
|
112
|
+
return await getFileTransformFunction(codeOrFilepath);
|
|
113
|
+
} catch (error) {
|
|
114
|
+
logger.error("Error loading transform function from file", {
|
|
115
|
+
error,
|
|
116
|
+
message: error instanceof Error ? error.message : String(error),
|
|
117
|
+
transform: getTransformLabel(codeOrFilepath)
|
|
118
|
+
});
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
else try {
|
|
122
|
+
return getInlineTransformFunction(codeOrFilepath, inputType);
|
|
123
|
+
} catch (error) {
|
|
124
|
+
logger.error("Error creating inline transform function", {
|
|
125
|
+
error,
|
|
126
|
+
message: error instanceof Error ? error.message : String(error),
|
|
127
|
+
transform: getTransformLabel(codeOrFilepath)
|
|
128
|
+
});
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Returns a human-readable label for a transform value, suitable for error messages.
|
|
134
|
+
*
|
|
135
|
+
* Inline string transforms are shown verbatim (single-line, truncated to
|
|
136
|
+
* {@link INLINE_STRING_LABEL_MAX_LENGTH}) so users can see which expression failed.
|
|
137
|
+
* Inline functions are shown by name only — their source is never rendered, to avoid
|
|
138
|
+
* leaking implementation details via `Function.toString()` into logs and persisted errors.
|
|
139
|
+
*/
|
|
140
|
+
function getTransformLabel(t) {
|
|
141
|
+
if (t == null) return INLINE_STRING_LABEL;
|
|
142
|
+
if (typeof t === "function") return t.name ? `${INLINE_FUNCTION_LABEL}: ${t.name}` : INLINE_FUNCTION_LABEL;
|
|
143
|
+
if (t.startsWith("file://")) return FILE_TRANSFORM_LABEL;
|
|
144
|
+
const singleLine = t.replace(/\s+/g, " ").trim();
|
|
145
|
+
return `${INLINE_STRING_LABEL}: ${singleLine.length > INLINE_STRING_LABEL_MAX_LENGTH ? `${singleLine.slice(0, INLINE_STRING_LABEL_MAX_LENGTH - 1)}…` : singleLine}`;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Transforms the output using a specified function, inline code, or file reference.
|
|
149
|
+
*
|
|
150
|
+
* @param codeOrFilepathOrFn - A TransformFunction, inline JavaScript code, or a file path
|
|
151
|
+
* starting with 'file://'. File paths can include a function name
|
|
152
|
+
* (e.g., 'file://transform.js:myFunction'). Python files default to 'get_transform'.
|
|
153
|
+
* @param transformInput - The input to transform. Can be a string, object, or undefined.
|
|
154
|
+
* @param context - Context object passed to the transform function (vars, prompt, metadata).
|
|
155
|
+
* @param validateReturn - If true (default), throws when the transform returns null/undefined.
|
|
156
|
+
* @param inputType - Whether the first parameter is named 'output' or 'vars' in inline code.
|
|
157
|
+
* @returns A promise that resolves to the transformed output.
|
|
158
|
+
* @throws When the transform is unloadable, throws, or (with `validateReturn`) returns null/undefined.
|
|
159
|
+
*/
|
|
160
|
+
async function transform(codeOrFilepathOrFn, transformInput, context, validateReturn = true, inputType = TransformInputType.OUTPUT) {
|
|
161
|
+
const isDirectFunction = typeof codeOrFilepathOrFn === "function";
|
|
162
|
+
const transformFn = isDirectFunction ? codeOrFilepathOrFn : await getTransformFunction(codeOrFilepathOrFn, inputType);
|
|
163
|
+
let ret;
|
|
164
|
+
try {
|
|
165
|
+
ret = isDirectFunction ? await Promise.resolve(transformFn(transformInput, context)) : await Promise.resolve(transformFn(transformInput, context, getProcessShim()));
|
|
166
|
+
} catch (error) {
|
|
167
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
168
|
+
const label = getTransformLabel(codeOrFilepathOrFn);
|
|
169
|
+
logger.error("Error in transform function", {
|
|
170
|
+
error,
|
|
171
|
+
message,
|
|
172
|
+
transform: label
|
|
173
|
+
});
|
|
174
|
+
if (error instanceof Error) {
|
|
175
|
+
const wrapped = /* @__PURE__ */ new Error(`Transform failed (${label}): ${message}`);
|
|
176
|
+
wrapped.cause = error;
|
|
177
|
+
throw wrapped;
|
|
178
|
+
}
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
181
|
+
if (validateReturn && (ret === null || ret === void 0)) throw new Error(`Transform function did not return a value\n\n${getTransformLabel(codeOrFilepathOrFn)}`);
|
|
182
|
+
return ret;
|
|
183
|
+
}
|
|
184
|
+
//#endregion
|
|
185
|
+
export { getTransformLabel as a, getTransformErrorMessage as i, TRANSFORM_KEYS as n, transform as o, TransformInputType as r, INLINE_FUNCTION_LABEL as t };
|
|
186
|
+
|
|
187
|
+
//# sourceMappingURL=transform-BnSTnFlp.js.map
|