promptfoo 0.121.5 → 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-BRUsT43Y.js → ListApp-DLmM02JS.js} +1 -1
- package/dist/src/{accounts-CaLNYnf7.js → accounts-Ca7WIoPY.js} +12 -7
- package/dist/src/{accounts-CLJHCDDb.js → accounts-CjFnOPmb.js} +13 -8
- package/dist/src/{accounts-BIFntVWB.cjs → accounts-CmWzeD2d.cjs} +16 -10
- package/dist/src/{accounts-bnyHT7Ju.js → accounts-DanM1wq_.js} +12 -7
- package/dist/src/{agentic-utils-BclbiXiq.js → agentic-utils-CJ0j3fBi.js} +2 -2
- package/dist/src/{agentic-utils-B5krlibj.js → agentic-utils-DDEGRV9v.js} +2 -2
- package/dist/src/{agentic-utils-D2x0wGhB.cjs → agentic-utils-DvPWSUpb.cjs} +8 -7
- package/dist/src/{agentic-utils-Ba67xmgs.js → agentic-utils-TxUEMPYS.js} +2 -2
- package/dist/src/{agents-WULPVjbH.cjs → agents-B4sRuXg3.cjs} +7 -6
- package/dist/src/{agents-DhxWMCtH.js → agents-B8q7h_ek.js} +4 -4
- package/dist/src/{agents-BGqaTDnr.js → agents-CBgJvRkB.js} +20 -9
- package/dist/src/{agents-n6vPqV3i.js → agents-CYn2n3QP.js} +4 -4
- package/dist/src/{agents-BV9yFpXX.js → agents-D-vDNFx4.js} +20 -9
- package/dist/src/{agents-BYdMl1UE.js → agents-LrHuQqr1.js} +20 -9
- package/dist/src/{agents-emVcx3yh.js → agents-QGg76OF-.js} +2 -2
- package/dist/src/{agents-DiWmQYH9.cjs → agents-eHZ9nlgA.cjs} +21 -10
- package/dist/src/{aimlapi-uPGp0Zdo.js → aimlapi-CJEbQ0o6.js} +6 -6
- package/dist/src/{aimlapi-DR4pgeiC.js → aimlapi-D5HXzZ0s.js} +6 -6
- package/dist/src/{aimlapi-BzLjZI_m.cjs → aimlapi-T6HGNxNe.cjs} +7 -7
- package/dist/src/{aimlapi-BxqK9HF_.js → aimlapi-eYv3a_DK.js} +6 -6
- 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 +6 -6
- package/dist/src/{audio-Da8U9IS5.js → audio-BqnRvcWG.js} +3 -3
- package/dist/src/{audio-BvpTOArF.js → audio-CPMtV1yR.js} +3 -3
- package/dist/src/{audio-CScmnmEB.js → audio-DyiebVB3.js} +3 -3
- package/dist/src/{audio-C0vDeS0j.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-BTux96b1.js → base-CKLo890h.js} +4 -3
- package/dist/src/{base-BOMaNEes.js → base-Co80MMCi.js} +4 -3
- package/dist/src/{base-Tw6uhH8K.cjs → base-DGJW48uz.cjs} +5 -4
- package/dist/src/{base-dYsl2hmL.js → base-E9I8zXjz.js} +4 -3
- 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-B95F_7vE.cjs → blobs-B0977K1O.cjs} +7 -6
- package/dist/src/{blobs-D_gg8nbm.js → blobs-CeFdPn_T.js} +2 -2
- package/dist/src/{blobs-DjLby-uP.js → blobs-DODuTK-a.js} +2 -2
- package/dist/src/{blobs-BW4U31ue.js → blobs-Dwef1Ao1.js} +2 -2
- package/dist/src/{cache-DGg-yTZG.cjs → cache-CPGUA4Yl.cjs} +135 -25
- package/dist/src/cache-Cf7b4pWE.js +3 -0
- package/dist/src/{cache-Bzttsk0X.js → cache-DIXbtkNO.js} +125 -10
- package/dist/src/{cache-BI5BY7ey.js → cache-DpPWrkTE.js} +127 -11
- package/dist/src/{cache-Cr-qWIbP.js → cache-roFAE0cI.js} +125 -10
- package/dist/src/{chat-DChSH_Es.js → chat-CUCorGiL.js} +9 -9
- package/dist/src/{chat-DH97tVV9.cjs → chat-DG1wG4w0.cjs} +6 -6
- package/dist/src/{chat-Cx_LkwvZ.js → chat-Dabu84Br.js} +11 -11
- package/dist/src/{chat-BLOdH60v.js → chat-DqUFcWI0.js} +11 -11
- package/dist/src/{chat-vYqqv1gP.cjs → chat-DxTDQ83C.cjs} +14 -13
- package/dist/src/{chat-DG2LkwLq.js → chat-GmlolEwo.js} +4 -4
- package/dist/src/{chat-aMQZw6R7.js → chat-TP8Qifkh.js} +4 -4
- package/dist/src/{chat-D9nudO9b.js → chat-iwaM5UTQ.js} +4 -4
- package/dist/src/{chatkit-B8X34dQc.js → chatkit-B6DWi70Q.js} +3 -3
- package/dist/src/{chatkit-D44VyUyB.cjs → chatkit-BYveR48_.cjs} +6 -5
- package/dist/src/{chatkit-BXu42Qwt.js → chatkit-fARZwEfV.js} +3 -3
- package/dist/src/{chatkit-CbMRoeYw.js → chatkit-lb6FK02w.js} +1 -1
- package/dist/src/{claude-agent-sdk-BzNZeZ0N.js → claude-agent-sdk-BQNp_y-F.js} +209 -64
- package/dist/src/{claude-agent-sdk-BjriSVRZ.js → claude-agent-sdk-D5Jl0SDh.js} +210 -65
- package/dist/src/{claude-agent-sdk-BRq0bbIK.cjs → claude-agent-sdk-DH416NBD.cjs} +216 -70
- package/dist/src/{claude-agent-sdk-DYv_AJ8u.js → claude-agent-sdk-x1XJ1-pU.js} +210 -65
- package/dist/src/{cloud-Da0bofJd.js → cloud-D3DiFqH6.js} +2 -2
- package/dist/src/cloud-p96PA4MH.js +3 -0
- package/dist/src/{cloudflare-ai-CXC4b1EU.js → cloudflare-ai-B6NVI3ax.js} +4 -4
- package/dist/src/{cloudflare-ai-DJv5qnyb.cjs → cloudflare-ai-CEAW-xQa.cjs} +6 -6
- package/dist/src/{cloudflare-ai-CyBoIs1Q.js → cloudflare-ai-RFSojyXG.js} +4 -4
- package/dist/src/{cloudflare-ai-DGOwgexC.js → cloudflare-ai-r4tbYmWU.js} +4 -4
- package/dist/src/{cloudflare-gateway-D-dnkzCF.js → cloudflare-gateway-BCkLouto.js} +3 -3
- package/dist/src/{cloudflare-gateway-TJkVrZlB.js → cloudflare-gateway-BaZ4insB.js} +3 -3
- package/dist/src/{cloudflare-gateway-1sAoOyft.js → cloudflare-gateway-CF-Vb-2Z.js} +3 -3
- package/dist/src/{cloudflare-gateway-DKVjkDav.cjs → cloudflare-gateway-TJMLBj6I.cjs} +5 -5
- package/dist/src/{codex-app-server-CCe0TiDc.js → codex-app-server-B8KHEiF4.js} +5 -5
- package/dist/src/{codex-app-server-VMRnjZ68.cjs → codex-app-server-CnrLBCeA.cjs} +12 -11
- package/dist/src/{codex-app-server-CCLjqCh9.js → codex-app-server-DIXZ230V.js} +4 -4
- package/dist/src/{codex-app-server-CPW1LFwh.js → codex-app-server-Dd22dC_N.js} +5 -5
- package/dist/src/{codex-sdk-BgEFQ70r.js → codex-sdk-B6Wah8Pa.js} +5 -5
- package/dist/src/codex-sdk-BGjVAk23.js +3 -0
- package/dist/src/{codex-sdk-Bd8UbO9q.cjs → codex-sdk-CFF6gUyi.cjs} +18 -10
- package/dist/src/{codex-sdk-Bzb_TqX9.js → codex-sdk-CmQABzV3.js} +3 -3
- package/dist/src/{codex-sdk-DfvDTN33.js → codex-sdk-D2d54RL8.js} +5 -5
- package/dist/src/{cometapi-B5ImDlSm.js → cometapi-Bu9B8NUY.js} +7 -7
- package/dist/src/{cometapi-CCbpHkuF.js → cometapi-CtzNCHKu.js} +7 -7
- package/dist/src/{cometapi-BgAkuYCw.cjs → cometapi-DHCDlQUI.cjs} +8 -8
- package/dist/src/{cometapi-CC7hWxmX.js → cometapi-OBILPLlu.js} +7 -7
- package/dist/src/{completion-Vq_ad618.js → completion-CO2e1_62.js} +4 -4
- package/dist/src/{completion-DtQ72Bm3.cjs → completion-CSYfl2cd.cjs} +6 -6
- package/dist/src/{completion-2iuYVxwi.js → completion-DZNxcyfG.js} +5 -5
- package/dist/src/{completion-CrD6MQ93.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-Un4Q_huE.js → createHash-CGVzWdjj.js} +1 -1
- package/dist/src/{createHash-VvBIc-AW.cjs → createHash-CSiqnK5P.cjs} +2 -2
- package/dist/src/{createHash-DPpsZgFF.js → createHash-CgRvs4Fn.js} +1 -1
- package/dist/src/crescendo-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--3qzPa-6.js → docker-4D1eL6Gq.js} +5 -5
- package/dist/src/{docker-Dorv4_Dg.js → docker-BBv1WUDu.js} +5 -5
- package/dist/src/{docker-D3AY-5F5.cjs → docker-D06JUoe2.cjs} +6 -6
- package/dist/src/{docker-DCsCDvwM.js → docker-DdJQBxK9.js} +5 -5
- package/dist/src/{embedding-DNRvZwRN.js → embedding--UZVe4_7.js} +5 -5
- package/dist/src/{embedding-BXhN5lCH.cjs → embedding-BbrwopfX.cjs} +6 -6
- package/dist/src/{embedding-ChS1ivFS.js → embedding-Bi3rxrZF.js} +5 -5
- package/dist/src/{embedding-D_bI4NDq.js → embedding-C251p1-8.js} +4 -4
- package/dist/src/{errors-DFHe4L-n.js → errors-9PcUL8BC.js} +1 -1
- package/dist/src/{esm-B_rGuPTo.cjs → esm-BIKakvNa.cjs} +8 -7
- package/dist/src/{esm-BRkfNsYs.js → esm-BTK1W7lG.js} +1 -1
- package/dist/src/{esm-BX8fwlAO.js → esm-Bexx2PFc.js} +1 -1
- package/dist/src/{eval-DJ_4A-tr.js → eval-0VRANImH.js} +19 -19
- package/dist/src/{eval-BQPLBJbw.js → eval-DscR5iOM.js} +1 -1
- package/dist/src/{evalResult-pSvGWFMo.js → evalResult-2RRJvFyB.js} +18 -11
- package/dist/src/{evalResult-Cx-8OWkb.cjs → evalResult-CvtS8h8u.cjs} +29 -11
- package/dist/src/evalResult-DqzsS6_W.js +3 -0
- package/dist/src/{evalResult-D6P5I5il.js → evalResult-eUkJv9Ko.js} +17 -10
- package/dist/src/evaluator-DNdJF1Gv.js +3 -0
- package/dist/src/{evaluator-D-UIbbYq.js → evaluator-DRoiYB2q.js} +258 -132
- 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-YlZbUMsL.js → extractor-BR7XAzAL.js} +5 -5
- package/dist/src/{extractor-Dxr2J_wK.cjs → extractor-BdxEtt3J.cjs} +6 -6
- package/dist/src/{extractor-DxyiFhPk.js → extractor-CIW3iN-b.js} +5 -5
- package/dist/src/{extractor-BM3jRERL.js → extractor-CxRtnaHl.js} +5 -5
- package/dist/src/{fetch-Y5qX_kST.js → fetch-BufrQtvR.js} +90 -26
- package/dist/src/{fetch-B6ch2nU2.js → fetch-DXUnXkVU.js} +86 -26
- package/dist/src/{fetch-NuqXW1Xb.cjs → fetch-Dw4XZHjj.cjs} +115 -32
- package/dist/src/{fetch-D9xxyC1p.js → fetch-It34O8Ur.js} +90 -26
- package/dist/src/fetch-_YgGd2qv.js +3 -0
- package/dist/src/{fileExtensions-D9h-8Wxg.cjs → fileExtensions-BhdwzYaD.cjs} +24 -1
- package/dist/src/{fileExtensions-BGh-W-HT.js → fileExtensions-CXRfY3Ss.js} +12 -2
- package/dist/src/{fileExtensions-DysCsxNG.js → fileExtensions-D4GCJ67J.js} +12 -2
- package/dist/src/{formatDuration-Ch4A7G3o.js → formatDuration-CMVNrYvE.js} +1 -1
- package/dist/src/{genaiTracer-BokHC-MW.cjs → genaiTracer-14nugQQx.cjs} +14 -2
- package/dist/src/{genaiTracer-C3ZPQU60.js → genaiTracer-BPVvltoW.js} +2 -2
- package/dist/src/{genaiTracer-DxODqT9e.js → genaiTracer-D18lYzhB.js} +2 -2
- package/dist/src/{genaiTracer-CFny3gOy.js → genaiTracer-jJKYsnjc.js} +2 -2
- package/dist/src/goat-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-CgPn32yp.js → graders-BGP99PdK.js} +1017 -84
- package/dist/src/{graders-BoUqsCEm.js → graders-BX0f2tvS.js} +1022 -84
- package/dist/src/{graders-CwrbifOo.js → graders-C0nXU_ZP.js} +1020 -82
- package/dist/src/{graders-Bw1wk_21.cjs → graders-ClrU2fnd.cjs} +1085 -128
- 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-Dr_3I3nK.js → image-BN-hjLL9.js} +3 -3
- package/dist/src/{image-BeWaInPF.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-D10dNAav.cjs → image-DfVCGPbI.cjs} +4 -4
- package/dist/src/{image-qjO6FWPs.js → image-QzmydkiG.js} +3 -3
- package/dist/src/image-X0oY4350.cjs +465 -0
- package/dist/src/index.cjs +688 -313
- package/dist/src/index.d.cts +3152 -1617
- package/dist/src/index.d.ts +3151 -1616
- package/dist/src/index.js +582 -223
- 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-CCICw2cy.js → interactiveCheck-C4QlIuoR.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-Dr3Kib7F.js → knowledgeBase-BadkINlJ.js} +24 -10
- package/dist/src/{knowledgeBase-BBETc5-S.js → knowledgeBase-Bi_8sV-H.js} +23 -9
- package/dist/src/{knowledgeBase-CzAi2rUI.js → knowledgeBase-CkMljjdg.js} +24 -10
- package/dist/src/{knowledgeBase-C8qOo26M.cjs → knowledgeBase-DUh34xba.cjs} +25 -11
- package/dist/src/{litellm-DRc4qWfc.js → litellm-BKBo0jpC.js} +4 -4
- package/dist/src/{litellm-BLSiANhk.js → litellm-BXyn5kZK.js} +4 -4
- package/dist/src/{litellm-DQGo_juI.js → litellm-CNcfbCfa.js} +4 -4
- package/dist/src/{litellm-CaUmV7Mk.cjs → litellm-CtAr7bKG.cjs} +5 -5
- package/dist/src/{logger-COuQb2xB.cjs → logger-cfNpzI4o.cjs} +13 -55
- package/dist/src/{luma-ray-B-tNZzqW.js → luma-ray-BMX1iEB6.js} +5 -5
- package/dist/src/{luma-ray-CtS3OlGq.js → luma-ray-CR5TSpp4.js} +5 -5
- package/dist/src/{luma-ray-if-Ml4R9.cjs → luma-ray-D3FUc2K3.cjs} +9 -8
- package/dist/src/{luma-ray-PJJgUjOc.js → luma-ray-OEMmS1RB.js} +5 -5
- package/dist/src/main.js +704 -208
- 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-CewuNcNS.js → messages-BabO-cX8.js} +17 -9
- package/dist/src/{messages-BnsVHUnm.cjs → messages-DBPir0TQ.cjs} +24 -15
- package/dist/src/{messages-B9dSjrNf.js → messages-DGUlSNU7.js} +18 -10
- package/dist/src/{messages-CI69Lasb.js → messages-vsE_-Lv0.js} +18 -10
- package/dist/src/{meteor-CeGo0Lu2.js → meteor--TZYICTI.js} +1 -1
- package/dist/src/{meteor-BBGcGeCa.cjs → meteor-CR226f7Z.cjs} +2 -2
- package/dist/src/{meteor-Wc_aUVvu.js → meteor-Cl_yd7rJ.js} +1 -1
- package/dist/src/{meteor-BKTM-7KS.js → meteor-Dce-_zGQ.js} +1 -1
- package/dist/src/mischievousUser-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-BkapYJhh.cjs → modelslab-CNV5bMSk.cjs} +7 -7
- package/dist/src/{modelslab-zpz9JcK0.js → modelslab-Cogmu4mG.js} +6 -6
- package/dist/src/{modelslab-D73OnKSx.js → modelslab-Dzst7VTU.js} +6 -6
- package/dist/src/{modelslab-BCLOtfek.js → modelslab-EyDczZ5A.js} +6 -6
- package/dist/src/{nova-reel-B8F_TK5w.js → nova-reel-BGPNBOMS.js} +5 -5
- package/dist/src/{nova-reel-Bx0NFV2f.js → nova-reel-B_5NKFu1.js} +5 -5
- package/dist/src/{nova-reel-CNGJTLtG.js → nova-reel-C4eUJGse.js} +5 -5
- package/dist/src/{nova-reel-DkT7tnoB.cjs → nova-reel-CjJRxI1X.cjs} +9 -8
- package/dist/src/{nova-sonic-BaXRN1cr.js → nova-sonic-BNGmgfFz.js} +3 -3
- package/dist/src/{nova-sonic-BeTRaFOh.js → nova-sonic-ChPlh5na.js} +2 -2
- package/dist/src/{nova-sonic-CL7Zqv0G.js → nova-sonic-CrV0iaY_.js} +3 -3
- package/dist/src/{nova-sonic-YT426juD.cjs → nova-sonic-DuOG9Aun.cjs} +5 -4
- package/dist/src/{openai-Cy1XLs0c.cjs → openai-C3uXv8wS.cjs} +2 -2
- package/dist/src/{openai-BT-JvDse.js → openai-CJrsh9n4.js} +1 -1
- package/dist/src/{openai-D4fxGvRx.js → openai-zgwBb4Ff.js} +1 -1
- package/dist/src/{openclaw-Bq7RVR3k.js → openclaw-BIHlu_36.js} +9 -8
- package/dist/src/{openclaw-DObVgpjC.js → openclaw-CF7fMido.js} +9 -8
- package/dist/src/{openclaw-DUBZP3GL.cjs → openclaw-Dphc01BY.cjs} +17 -15
- package/dist/src/{openclaw-DA8U4DsD.js → openclaw-zIJAsz3P.js} +9 -8
- package/dist/src/{opencode-sdk-BB40Wir1.js → opencode-sdk-B3vlPLsp.js} +38 -3
- package/dist/src/{opencode-sdk-ChdK7F7z.js → opencode-sdk-D05JSgMQ.js} +39 -4
- package/dist/src/{opencode-sdk-CeqiOcOU.cjs → opencode-sdk-DoY6GbWw.cjs} +45 -9
- package/dist/src/{opencode-sdk-BM1UAIv1.js → opencode-sdk-sRKYHGoI.js} +39 -4
- package/dist/src/{otlpReceiver-UYMQx3sy.js → otlpReceiver--gTpSagc.js} +119 -3
- package/dist/src/{otlpReceiver-C6thJRXi.js → otlpReceiver-B2eaKC8C.js} +118 -2
- package/dist/src/{otlpReceiver-CcdIikOu.js → otlpReceiver-BXjcRqAM.js} +119 -3
- package/dist/src/{otlpReceiver-DNSQj6bf.cjs → otlpReceiver-CvJdBGSc.cjs} +125 -7
- package/dist/src/packageParser--MWTSrPW.js +36 -0
- package/dist/src/packageParser-CgE-ziRo.js +35 -0
- package/dist/src/packageParser-QoCS1FMl.cjs +54 -0
- package/dist/src/packageParser-hwwSGnAZ.js +35 -0
- package/dist/src/processShim-BBxt7LKO.js +95 -0
- package/dist/src/processShim-BcGzU8fY.js +94 -0
- package/dist/src/processShim-C_z3aRvF.js +94 -0
- package/dist/src/processShim-DSY9BV2T.cjs +98 -0
- package/dist/src/promptLength-0qIHyhA5.js +71 -0
- package/dist/src/promptLength-4X-Wd8PG.js +72 -0
- package/dist/src/promptLength-B9nZEfO6.js +71 -0
- package/dist/src/promptLength-BbBbDHNj.cjs +94 -0
- package/dist/src/promptfoo-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-BESeALrr.cjs → providerRegistry-CZO_w7ue.cjs} +2 -2
- package/dist/src/{providerRegistry-DoACwqhD.js → providerRegistry-DHcFiVWX.js} +1 -1
- package/dist/src/{providerRegistry-PMsleEzs.js → providerRegistry-ReCd0sFa.js} +1 -1
- package/dist/src/{providers-DT-GtF2t.js → providers-B9KzWxAX.js} +739 -11919
- package/dist/src/{providers-DRrerKra.js → providers-BCCz6_IX.js} +813 -11944
- package/dist/src/{providers-eDShy16E.cjs → providers-BDVVIQM6.cjs} +787 -12132
- package/dist/src/{providers-Ctcc592x.js → providers-BYAn82cf.js} +1 -1
- package/dist/src/{providers-CJh7iriU.js → providers-DVYRZP4E.js} +746 -11866
- package/dist/src/{pythonUtils-C4tltmIn.js → pythonUtils-CLCgQ9tt.js} +1 -1
- package/dist/src/{pythonUtils-DNqbnRdx.js → pythonUtils-CgYxeSmO.js} +2 -2
- package/dist/src/{pythonUtils-CoLaCwNY.cjs → pythonUtils-Cokhluq3.cjs} +7 -6
- package/dist/src/{pythonUtils-DMO68Jg7.js → pythonUtils-D0BYebvX.js} +2 -2
- package/dist/src/{quiverai-Bpx6MZ7T.cjs → quiverai-BAp6iTZD.cjs} +4 -4
- package/dist/src/{quiverai-CPKhWgaT.js → quiverai-BvIhI_0l.js} +3 -3
- package/dist/src/{quiverai-BSS9a7wV.js → quiverai-CdTWPe-A.js} +3 -3
- package/dist/src/{quiverai-Bk1KrvL6.js → quiverai-Cv7rJKDz.js} +3 -3
- 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-ByxbqAcQ.js → remoteGeneration-B1_XsKXU.js} +16 -147
- package/dist/src/{server-gyd6d4Hc.js → remoteGeneration-COpWcmWd.js} +15 -108
- package/dist/src/{server-BEECpeGG.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-nj-UaPdn.js → render-DznWrxGO.js} +2 -2
- package/dist/src/render-_6ur1fhE.js +347 -0
- package/dist/src/resourceAttributes-D1jP3kL5.js +17 -0
- package/dist/src/resourceAttributes-DQbBB--2.js +16 -0
- package/dist/src/resourceAttributes-ephgOvdR.cjs +27 -0
- package/dist/src/resourceAttributes-v6-I67fn.js +16 -0
- package/dist/src/{responses-CF-ayauu.cjs → responses-1UFFF9N_.cjs} +12 -11
- package/dist/src/{responses-B8haB-mD.js → responses-B3W2JvOQ.js} +9 -9
- package/dist/src/{responses-1ztiVYsx.js → responses-B6ktc3Ra.js} +7 -7
- package/dist/src/{responses-BiaBguAu.js → responses-URRzV8qE.js} +9 -9
- package/dist/src/rolldown-runtime-D_mwlA32.cjs +43 -0
- package/dist/src/rubyUtils-BYVlQ94c.js +3 -0
- package/dist/src/{rubyUtils-CIQFnVz4.js → rubyUtils-CXlFM2rR.js} +2 -2
- package/dist/src/{rubyUtils-BI0p46eZ.js → rubyUtils-CnlW8AYb.js} +2 -2
- package/dist/src/{rubyUtils-DoifqkiA.cjs → rubyUtils-CqUWBZAt.cjs} +16 -26
- package/dist/src/{rubyUtils-DGnoCYL2.js → rubyUtils-DdGojpfv.js} +1 -1
- package/dist/src/runtimeTransform-BJOpL9Yc.js +142 -0
- package/dist/src/runtimeTransform-Dgh_D7DU.js +143 -0
- package/dist/src/runtimeTransform-DigbjU1r.js +142 -0
- package/dist/src/runtimeTransform-ON3YYILw.cjs +147 -0
- package/dist/src/{sagemaker-ClS_NB07.js → sagemaker-CujrzP1a.js} +61 -50
- package/dist/src/{sagemaker-ljtY12VM.cjs → sagemaker-DzffAqo_.cjs} +65 -53
- package/dist/src/{sagemaker-C5T60MKf.js → sagemaker-vhtSV7JI.js} +61 -50
- package/dist/src/{sagemaker-BDLeW29y.js → sagemaker-yr1QKeBs.js} +61 -50
- package/dist/src/{scanner-nOCWNIXa.js → scanner-DS0109SS.js} +6 -6
- package/dist/src/server/index.js +4147 -449
- 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-8CjoL7vB.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-DTtUuU3l.js → signal-CSurUUyV.js} +2 -2
- 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-Bamy_7te.js → slack-Bapo-7_8.js} +1 -1
- package/dist/src/{slack-BLlsDpfG.cjs → slack-DMC1QVEg.cjs} +3 -2
- package/dist/src/{slack-BPYLQLgb.js → slack-DTEFhrMn.js} +1 -1
- package/dist/src/{slack-4zZX1OKP.js → slack-k-_CP84Q.js} +1 -1
- package/dist/src/storage-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-2K0kDi80.cjs → store-B2NDDooM.cjs} +60 -24
- package/dist/src/{store-CPh25336.js → store-DKd5592Q.js} +50 -19
- package/dist/src/{store-BPkzEyFM.js → store-HpopRVzl.js} +50 -19
- package/dist/src/store-IbiRIF3k.js +3 -0
- package/dist/src/strategies-7CS3Alao.cjs +2360 -0
- package/dist/src/strategies-CiSeroPH.js +2331 -0
- package/dist/src/strategies-DRJjGTIY.js +2333 -0
- package/dist/src/{tables-WgdUZ8Ck.js → tables-CRSXQ2Ke.js} +2 -2
- package/dist/src/{tables-BMSOS2Gg.js → tables-CxjU7bBd.js} +2 -2
- package/dist/src/{tables-CXbaZ9y1.cjs → tables-DBIJU0WE.cjs} +6 -5
- package/dist/src/{tables-NlvH23ky.js → tables-DafUHOeh.js} +2 -2
- package/dist/src/{telemetry-DWdGHvEf.js → telemetry-00ezXr_t.js} +4 -4
- package/dist/src/telemetry-ByPqDcKC.js +3 -0
- package/dist/src/{telemetry-CEQxGnMZ.cjs → telemetry-CJ7FnCsc.cjs} +15 -9
- package/dist/src/{telemetry--iqaGyaS.js → telemetry-DmXYcJNV.js} +4 -4
- package/dist/src/{telemetry-CgdVGV8N.js → telemetry-DwX9XUN5.js} +4 -4
- package/dist/src/{text-DDQP0tuQ.js → text-CZr46tp_.js} +1 -1
- package/dist/src/{text-D4lz-Jg_.js → text-Db-Wt2u2.js} +1 -1
- package/dist/src/{text-NWvfMfkF.js → text-DwYK5EBn.js} +1 -1
- package/dist/src/{text-BiNME7QG.cjs → text-nywWsRBM.cjs} +1 -1
- package/dist/src/{tokenUsageUtils-2wIvAhB3.js → tokenUsageUtils-CDet74yk.js} +1 -1
- package/dist/src/{tokenUsageUtils-4c780gFd.js → tokenUsageUtils-CmnQ0G2m.js} +1 -1
- package/dist/src/{tokenUsageUtils-C9odhsbW.cjs → tokenUsageUtils-_B-P8IAi.cjs} +1 -1
- package/dist/src/toolAttributes-BAjwcBf0.cjs +103 -0
- package/dist/src/toolAttributes-COVgDrBG.js +87 -0
- package/dist/src/toolAttributes-DJ9ZEKXD.js +86 -0
- package/dist/src/tracingOptions-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-84t4ALo2.js → transcription-B8uIgCYX.js} +5 -5
- package/dist/src/{transcription-Bm2emLmJ.js → transcription-CfU5loSq.js} +5 -5
- package/dist/src/{transcription-D7Q0vJsh.js → transcription-Dkd22_4K.js} +4 -4
- package/dist/src/{transcription-CZ4LG5hQ.cjs → transcription-mzuf18Mq.cjs} +9 -8
- package/dist/src/{transform-DtooZqYY.js → transform-BIMynQsA.js} +8 -8
- 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-Dg4LcO1Y.cjs → transform-DhNkAUs8.cjs} +12 -11
- package/dist/src/{transform-_DpNB4qp.js → transform-DmvYBRll.js} +8 -8
- package/dist/src/{transform-B-b6Cq-q.js → transform-EtD4jAWi.js} +8 -8
- package/dist/src/{transformersAvailability-lvCCvuPT.js → transformersAvailability-0ThtPved.js} +1 -1
- package/dist/src/transformersAvailability-BYydDE5U.js +35 -0
- package/dist/src/{transformersAvailability-rJGPccjr.js → transformersAvailability-BvyU9vDD.js} +1 -1
- package/dist/src/{transformersAvailability-B22swDxr.cjs → transformersAvailability-BytPvKUW.cjs} +1 -1
- package/dist/src/{types-BVH9hjgW.js → types-BFevViUY.js} +113 -19
- package/dist/src/{types-BDjGOq4E.js → types-BJQBBPTP.js} +113 -19
- package/dist/src/{types-CgG2rKiW.cjs → types-CxJvaY2S.cjs} +211 -28
- package/dist/src/{types-DNRZVOue.js → types-D6glLbdF.js} +125 -26
- package/dist/src/{util-DFPeFkiV.js → util--WMgw7wM.js} +28 -8
- package/dist/src/{util-C-kmRosx.js → util-5WnCSb0h.js} +9 -7
- package/dist/src/{util-A5_ZsQUn.cjs → util-BSIuSLVK.cjs} +12 -9
- package/dist/src/{util-Dub0f_ej.js → util-Bx677_k2.js} +17 -10
- package/dist/src/util-CN8om2rz.cjs +386 -0
- package/dist/src/{util-DN0-b81k.js → util-CoQWM76y.js} +28 -8
- package/dist/src/util-DNl96nNs.js +327 -0
- package/dist/src/{util-BQOCAHQC.js → util-DURocbYR.js} +46 -11
- package/dist/src/util-Df8YMvS1.js +327 -0
- package/dist/src/{util-BVXcTwXu.js → util-DiQ3QvBB.js} +28 -8
- package/dist/src/{util-3pBZZb_H.js → util-I-Rf-KaD.js} +45 -10
- package/dist/src/{util-Dpmm_dAI.cjs → util-IYzs5Y04.cjs} +33 -7
- package/dist/src/{util-BlFVL0UF.js → util-LKTmNsMQ.js} +9 -7
- package/dist/src/{util-DvpHnLt0.cjs → util-SPsvFONY.cjs} +29 -21
- package/dist/src/{util-B9CNhyac.js → util-efByNxcr.js} +9 -7
- package/dist/src/util-kDURhgJW.js +328 -0
- package/dist/src/{utils-BUMN8orw.js → utils-B0lzitHZ.js} +2 -2
- package/dist/src/{utils-kt7lv30R.js → utils-BFOh20Gb.js} +2 -2
- package/dist/src/{utils-o8S5huU2.js → utils-BGY69tk_.js} +2 -2
- package/dist/src/{utils-DkVeShIB.cjs → utils-Ve6kuJsa.cjs} +3 -3
- package/dist/src/{version-CbuBKu2U.js → version-BK20a4sw.js} +2 -2
- package/dist/src/{version-D9zu9FWB.cjs → version-BWCSaByA.cjs} +2 -2
- package/dist/src/{version-CbpiUINz.js → version-eRkNuGv8.js} +2 -2
- package/dist/src/{version-0frU0UTr.js → version-lpHV_53E.js} +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +48 -22
- package/dist/src/app/assets/Report-vjzrbgce.js +0 -1
- package/dist/src/app/assets/index-B3NQ8HTd.js +0 -385
- package/dist/src/app/assets/index-Cli2yAXv.css +0 -1
- package/dist/src/app/assets/sync-IjzpWrOE.js +0 -4
- package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +0 -36
- package/dist/src/cache-BRkhlH3k.cjs +0 -3
- package/dist/src/cache-BlC6aeJ0.js +0 -3
- package/dist/src/cloud-CoD5OacT.js +0 -3
- package/dist/src/codex-sdk-1jm_qPHf.js +0 -3
- package/dist/src/codex-sdk-Danroptg.cjs +0 -2
- package/dist/src/evalResult-BBJAHAtw.cjs +0 -2
- package/dist/src/evalResult-BBK58h2B.js +0 -3
- package/dist/src/evalResult-spPqh1G_.js +0 -2
- package/dist/src/evaluator-DgLKaZk8.js +0 -3
- package/dist/src/fetch-8viavNv8.js +0 -3
- package/dist/src/graders-C84JI-m5.js +0 -2
- package/dist/src/graders-CBbd0K0Q.cjs +0 -2
- package/dist/src/graders-CbQqpHSN.js +0 -3
- package/dist/src/graders-DS42d3ZG.js +0 -2
- package/dist/src/image-BmilRNqO.js +0 -258
- package/dist/src/image-CxJoa3aW.cjs +0 -280
- package/dist/src/image-DsGRlkh7.js +0 -257
- package/dist/src/image-a_SGUobh.js +0 -257
- package/dist/src/providers-BuyzKt7C.js +0 -2
- package/dist/src/providers-C7lNVBjX.cjs +0 -3
- package/dist/src/providers-CCE2COJi2.js +0 -2
- package/dist/src/render-7uNJ2V14.js +0 -135
- package/dist/src/render-DlscvAUJ.js +0 -135
- package/dist/src/render-eui5p5mL.js +0 -136
- package/dist/src/render-tG6ir9_g.cjs +0 -165
- package/dist/src/rubyUtils-4hjGxvju.js +0 -3
- package/dist/src/rubyUtils-CO-tuszQ.cjs +0 -2
- package/dist/src/server-ByiF3qlg.js +0 -386
- package/dist/src/server-C0XKRNB_.cjs +0 -2
- package/dist/src/server-C_15p79-.js +0 -3
- package/dist/src/store-2OXm_eBY.js +0 -240
- package/dist/src/store-BELqNwvz.js +0 -3
- package/dist/src/store-uQZ4AjPe.cjs +0 -2
- package/dist/src/telemetry-DjNoC_n3.cjs +0 -2
- package/dist/src/telemetry-ZdPZc0fm.js +0 -3
- package/dist/src/transform-BQt0BeAW.js +0 -3
- package/dist/src/transform-Bq5oqC0s.cjs +0 -2
- package/dist/src/transform-C9izGX54.cjs +0 -228
- package/dist/src/transform-CwbAZ84V.js +0 -216
- package/dist/src/transform-DzCF-wqV.js +0 -213
- package/dist/src/transform-eGiUAv86.js +0 -216
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { N as state, O as getEnvString, T as getEnvBool, s as logger } from "./logger-BbY6ypFL.js";
|
|
3
|
-
import { A as getDefaultPort, n as fetchWithProxy } from "./fetch-B6ch2nU2.js";
|
|
4
|
-
import "./version-CbpiUINz.js";
|
|
5
|
-
import { c as isLoggedIntoCloud } from "./accounts-CLJHCDDb.js";
|
|
6
|
-
import { r as CloudConfig } from "./cloud-Da0bofJd.js";
|
|
7
|
-
import { i as resolvePackageEntryPoint, t as getDirectory } from "./esm-BX8fwlAO.js";
|
|
8
|
-
import { t as OpenAICodexSDKProvider } from "./codex-sdk-BgEFQ70r.js";
|
|
9
|
-
import chalk from "chalk";
|
|
10
|
-
import fs from "fs";
|
|
11
|
-
import path from "path";
|
|
12
|
-
import os from "os";
|
|
13
|
-
import opener from "opener";
|
|
14
|
-
import readline from "readline";
|
|
15
|
-
//#region src/providers/openai/codexDefaults.ts
|
|
16
|
-
const CODEX_AUTH_FILENAME = "auth.json";
|
|
17
|
-
const CODEX_SDK_PACKAGE_NAME = "@openai/codex-sdk";
|
|
18
|
-
let codexDefaultWorkingDir;
|
|
19
|
-
const CODEX_GRADING_OUTPUT_SCHEMA = {
|
|
20
|
-
type: "object",
|
|
21
|
-
properties: {
|
|
22
|
-
pass: { type: "boolean" },
|
|
23
|
-
score: { type: "number" },
|
|
24
|
-
reason: { type: "string" }
|
|
25
|
-
},
|
|
26
|
-
required: [
|
|
27
|
-
"pass",
|
|
28
|
-
"score",
|
|
29
|
-
"reason"
|
|
30
|
-
],
|
|
31
|
-
additionalProperties: false
|
|
32
|
-
};
|
|
33
|
-
const codexDefaultProvidersByCacheKey = /* @__PURE__ */ new Map();
|
|
34
|
-
const codexSdkAvailabilityByBaseDir = /* @__PURE__ */ new Map();
|
|
35
|
-
function getCodexEnvString(env, key) {
|
|
36
|
-
return env?.[key] || getEnvString(key);
|
|
37
|
-
}
|
|
38
|
-
function getCodexHome(env) {
|
|
39
|
-
const homeDir = os.homedir?.();
|
|
40
|
-
const defaultHome = typeof homeDir === "string" && homeDir ? path.join(homeDir, ".codex") : void 0;
|
|
41
|
-
const codexHome = getCodexEnvString(env, "CODEX_HOME") || defaultHome || ".codex";
|
|
42
|
-
return path.resolve(codexHome);
|
|
43
|
-
}
|
|
44
|
-
function getTempDirectory() {
|
|
45
|
-
const tempDir = os.tmpdir?.();
|
|
46
|
-
return typeof tempDir === "string" && tempDir ? tempDir : process.cwd();
|
|
47
|
-
}
|
|
48
|
-
function getCodexDefaultWorkingDir() {
|
|
49
|
-
if (!codexDefaultWorkingDir) codexDefaultWorkingDir = fs.mkdtempSync(path.join(getTempDirectory(), "promptfoo-codex-default-"));
|
|
50
|
-
return codexDefaultWorkingDir;
|
|
51
|
-
}
|
|
52
|
-
function hasCodexAuthFile(env) {
|
|
53
|
-
try {
|
|
54
|
-
const stats = fs.statSync(path.join(getCodexHome(env), CODEX_AUTH_FILENAME));
|
|
55
|
-
return stats.isFile() && stats.size > 0;
|
|
56
|
-
} catch {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
function hasCodexSdkPackage(baseDir) {
|
|
61
|
-
const cached = codexSdkAvailabilityByBaseDir.get(baseDir);
|
|
62
|
-
if (cached !== void 0) return cached;
|
|
63
|
-
const hasPackage = resolvePackageEntryPoint(CODEX_SDK_PACKAGE_NAME, baseDir) !== null;
|
|
64
|
-
codexSdkAvailabilityByBaseDir.set(baseDir, hasPackage);
|
|
65
|
-
return hasPackage;
|
|
66
|
-
}
|
|
67
|
-
function canLoadCodexSdkPackage() {
|
|
68
|
-
return [process.cwd(), getDirectory()].some((baseDir) => hasCodexSdkPackage(baseDir));
|
|
69
|
-
}
|
|
70
|
-
function hasCodexDefaultCredentials(env) {
|
|
71
|
-
return (Boolean(getCodexEnvString(env, "CODEX_API_KEY")) || hasCodexAuthFile(env)) && canLoadCodexSdkPackage();
|
|
72
|
-
}
|
|
73
|
-
function getCodexDefaultProviderConfig(env, config, defaultWorkingDir = getCodexDefaultWorkingDir()) {
|
|
74
|
-
const codexHome = getCodexEnvString(env, "CODEX_HOME");
|
|
75
|
-
const workingDir = config?.working_dir || defaultWorkingDir;
|
|
76
|
-
fs.mkdirSync(workingDir, { recursive: true });
|
|
77
|
-
const cliEnv = {
|
|
78
|
-
...codexHome ? { CODEX_HOME: path.resolve(codexHome) } : {},
|
|
79
|
-
...config?.cli_env
|
|
80
|
-
};
|
|
81
|
-
return {
|
|
82
|
-
approval_policy: "never",
|
|
83
|
-
sandbox_mode: "read-only",
|
|
84
|
-
skip_git_repo_check: true,
|
|
85
|
-
working_dir: workingDir,
|
|
86
|
-
...config,
|
|
87
|
-
...Object.keys(cliEnv).length > 0 ? { cli_env: cliEnv } : {}
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
function getCodexDefaultProvidersCacheKey(env) {
|
|
91
|
-
return JSON.stringify({
|
|
92
|
-
CODEX_HOME: getCodexEnvString(env, "CODEX_HOME"),
|
|
93
|
-
hasCodexApiKey: Boolean(getCodexEnvString(env, "CODEX_API_KEY")),
|
|
94
|
-
hasOpenAiApiKey: Boolean(getCodexEnvString(env, "OPENAI_API_KEY"))
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
function getCodexDefaultProviders(env) {
|
|
98
|
-
const cacheKey = getCodexDefaultProvidersCacheKey(env);
|
|
99
|
-
const cachedProviders = codexDefaultProvidersByCacheKey.get(cacheKey);
|
|
100
|
-
if (cachedProviders) return cachedProviders;
|
|
101
|
-
const defaultWorkingDir = getCodexDefaultWorkingDir();
|
|
102
|
-
const gradingProvider = new OpenAICodexSDKProvider({
|
|
103
|
-
config: getCodexDefaultProviderConfig(env, void 0, defaultWorkingDir),
|
|
104
|
-
env
|
|
105
|
-
});
|
|
106
|
-
const gradingJsonProvider = new OpenAICodexSDKProvider({
|
|
107
|
-
config: getCodexDefaultProviderConfig(env, { output_schema: CODEX_GRADING_OUTPUT_SCHEMA }, defaultWorkingDir),
|
|
108
|
-
env
|
|
109
|
-
});
|
|
110
|
-
const providers = {
|
|
111
|
-
gradingJsonProvider,
|
|
112
|
-
gradingProvider,
|
|
113
|
-
llmRubricProvider: gradingJsonProvider,
|
|
114
|
-
suggestionsProvider: gradingProvider,
|
|
115
|
-
synthesizeProvider: gradingProvider,
|
|
116
|
-
webSearchProvider: new OpenAICodexSDKProvider({
|
|
117
|
-
config: getCodexDefaultProviderConfig(env, {
|
|
118
|
-
network_access_enabled: true,
|
|
119
|
-
output_schema: CODEX_GRADING_OUTPUT_SCHEMA,
|
|
120
|
-
web_search_mode: "live"
|
|
121
|
-
}, defaultWorkingDir),
|
|
122
|
-
env
|
|
123
|
-
})
|
|
124
|
-
};
|
|
125
|
-
codexDefaultProvidersByCacheKey.set(cacheKey, providers);
|
|
126
|
-
return providers;
|
|
127
|
-
}
|
|
128
|
-
//#endregion
|
|
129
|
-
//#region src/redteam/remoteGeneration.ts
|
|
130
|
-
/**
|
|
131
|
-
* Gets the remote generation API endpoint URL.
|
|
132
|
-
* Prioritizes: env var > cloud config > default endpoint.
|
|
133
|
-
* @returns The remote generation URL
|
|
134
|
-
*/
|
|
135
|
-
function getRemoteGenerationUrl() {
|
|
136
|
-
const envUrl = getEnvString("PROMPTFOO_REMOTE_GENERATION_URL");
|
|
137
|
-
if (envUrl) return envUrl;
|
|
138
|
-
const cloudConfig = new CloudConfig();
|
|
139
|
-
if (cloudConfig.isEnabled()) return cloudConfig.getApiHost() + "/api/v1/task";
|
|
140
|
-
return "https://api.promptfoo.app/api/v1/task";
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Check if remote generation should never be used.
|
|
144
|
-
* Respects both the general and redteam-specific disable flags.
|
|
145
|
-
* @returns true if remote generation is disabled
|
|
146
|
-
*/
|
|
147
|
-
function neverGenerateRemote() {
|
|
148
|
-
if (getEnvBool("PROMPTFOO_DISABLE_REMOTE_GENERATION")) return true;
|
|
149
|
-
return getEnvBool("PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION");
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Check if remote generation should never be used for non-redteam features.
|
|
153
|
-
* This allows granular control: disable redteam remote generation while allowing
|
|
154
|
-
* regular SimulatedUser to use remote generation.
|
|
155
|
-
* @returns true if ALL remote generation is disabled
|
|
156
|
-
*/
|
|
157
|
-
function neverGenerateRemoteForRegularEvals() {
|
|
158
|
-
return getEnvBool("PROMPTFOO_DISABLE_REMOTE_GENERATION");
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Builds a remote URL with a substituted pathname, honoring env vars / cloud config.
|
|
162
|
-
*/
|
|
163
|
-
function buildRemoteUrl(pathname, fallback) {
|
|
164
|
-
if (neverGenerateRemote()) return null;
|
|
165
|
-
const envUrl = getEnvString("PROMPTFOO_REMOTE_GENERATION_URL");
|
|
166
|
-
if (envUrl) try {
|
|
167
|
-
const url = new URL(envUrl);
|
|
168
|
-
url.pathname = pathname;
|
|
169
|
-
return url.toString();
|
|
170
|
-
} catch {
|
|
171
|
-
return fallback;
|
|
172
|
-
}
|
|
173
|
-
const cloudConfig = new CloudConfig();
|
|
174
|
-
if (cloudConfig.isEnabled()) return `${cloudConfig.getApiHost()}${pathname}`;
|
|
175
|
-
return fallback;
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Gets the URL for checking remote API health based on configuration.
|
|
179
|
-
* @returns The health check URL, or null if remote generation is disabled.
|
|
180
|
-
*/
|
|
181
|
-
function getRemoteHealthUrl() {
|
|
182
|
-
return buildRemoteUrl("/health", "https://api.promptfoo.app/health");
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Gets the URL for checking remote API version based on configuration.
|
|
186
|
-
* @returns The version check URL, or null if remote generation is disabled.
|
|
187
|
-
*/
|
|
188
|
-
function getRemoteVersionUrl() {
|
|
189
|
-
return buildRemoteUrl("/version", "https://api.promptfoo.app/version");
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Determines if remote generation should be used based on configuration.
|
|
193
|
-
* @returns true if remote generation should be used
|
|
194
|
-
*/
|
|
195
|
-
function shouldGenerateRemote(options) {
|
|
196
|
-
if (neverGenerateRemote()) return false;
|
|
197
|
-
if (isLoggedIntoCloud()) return true;
|
|
198
|
-
return !(Boolean(getEnvString("OPENAI_API_KEY")) || options?.canUseCodexDefaultProvider && !options?.requireEmbeddingProvider && hasCodexDefaultCredentials()) || (state.remote ?? false);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Gets the URL for unaligned model inference (harmful content generation).
|
|
202
|
-
* Prioritizes: env var > cloud config > default endpoint.
|
|
203
|
-
* @returns The unaligned inference URL
|
|
204
|
-
*/
|
|
205
|
-
function getRemoteGenerationUrlForUnaligned() {
|
|
206
|
-
const envUrl = getEnvString("PROMPTFOO_UNALIGNED_INFERENCE_ENDPOINT");
|
|
207
|
-
if (envUrl) return envUrl;
|
|
208
|
-
const cloudConfig = new CloudConfig();
|
|
209
|
-
if (cloudConfig.isEnabled()) return cloudConfig.getApiHost() + "/api/v1/task/harmful";
|
|
210
|
-
return "https://api.promptfoo.app/api/v1/task/harmful";
|
|
211
|
-
}
|
|
212
|
-
//#endregion
|
|
213
|
-
//#region src/util/readline.ts
|
|
214
|
-
/**
|
|
215
|
-
* Factory function for creating readline interface.
|
|
216
|
-
* This abstraction makes it easier to mock in tests and prevents open handles.
|
|
217
|
-
*/
|
|
218
|
-
function createReadlineInterface() {
|
|
219
|
-
return readline.createInterface({
|
|
220
|
-
input: process.stdin,
|
|
221
|
-
output: process.stdout
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Prompts the user with a question and returns their answer.
|
|
226
|
-
* Automatically handles cleanup of the readline interface.
|
|
227
|
-
*/
|
|
228
|
-
async function promptUser(question) {
|
|
229
|
-
return new Promise((resolve, reject) => {
|
|
230
|
-
let rl = null;
|
|
231
|
-
try {
|
|
232
|
-
rl = createReadlineInterface();
|
|
233
|
-
rl.on("error", (err) => {
|
|
234
|
-
if (rl) rl.close();
|
|
235
|
-
reject(err);
|
|
236
|
-
});
|
|
237
|
-
rl.question(question, (answer) => {
|
|
238
|
-
if (rl) rl.close();
|
|
239
|
-
resolve(answer);
|
|
240
|
-
});
|
|
241
|
-
} catch (err) {
|
|
242
|
-
if (rl) rl.close();
|
|
243
|
-
reject(err);
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Prompts the user with a yes/no question and returns a boolean.
|
|
249
|
-
* @param question The question to ask
|
|
250
|
-
* @param defaultYes If true, empty response defaults to yes. If false, defaults to no.
|
|
251
|
-
*/
|
|
252
|
-
async function promptYesNo(question, defaultYes = false) {
|
|
253
|
-
const answer = await promptUser(`${question} ${defaultYes ? "(Y/n): " : "(y/N): "}`);
|
|
254
|
-
if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
|
|
255
|
-
return answer.trim().toLowerCase().startsWith("y");
|
|
256
|
-
}
|
|
257
|
-
//#endregion
|
|
258
|
-
//#region src/util/server.ts
|
|
259
|
-
const BrowserBehavior = {
|
|
260
|
-
ASK: 0,
|
|
261
|
-
OPEN: 1,
|
|
262
|
-
SKIP: 2,
|
|
263
|
-
OPEN_TO_REPORT: 3,
|
|
264
|
-
OPEN_TO_REDTEAM_CREATE: 4,
|
|
265
|
-
OPEN_TO_EVAL_SETUP: 5
|
|
266
|
-
};
|
|
267
|
-
const BrowserBehaviorNames = {
|
|
268
|
-
[BrowserBehavior.ASK]: "ASK",
|
|
269
|
-
[BrowserBehavior.OPEN]: "OPEN",
|
|
270
|
-
[BrowserBehavior.SKIP]: "SKIP",
|
|
271
|
-
[BrowserBehavior.OPEN_TO_REPORT]: "OPEN_TO_REPORT",
|
|
272
|
-
[BrowserBehavior.OPEN_TO_REDTEAM_CREATE]: "OPEN_TO_REDTEAM_CREATE",
|
|
273
|
-
[BrowserBehavior.OPEN_TO_EVAL_SETUP]: "OPEN_TO_EVAL_SETUP"
|
|
274
|
-
};
|
|
275
|
-
const featureCache = /* @__PURE__ */ new Map();
|
|
276
|
-
/**
|
|
277
|
-
* Checks if a server supports a specific feature based on build date
|
|
278
|
-
* @param featureName - Name of the feature (for caching and logging)
|
|
279
|
-
* @param requiredBuildDate - Minimum build date when feature was added (ISO string)
|
|
280
|
-
* @returns Promise<boolean> - true if server supports the feature
|
|
281
|
-
*/
|
|
282
|
-
async function checkServerFeatureSupport(featureName, requiredBuildDate) {
|
|
283
|
-
const cacheKey = `${featureName}`;
|
|
284
|
-
if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
|
|
285
|
-
let supported = false;
|
|
286
|
-
try {
|
|
287
|
-
logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
|
|
288
|
-
const versionUrl = getRemoteVersionUrl();
|
|
289
|
-
if (versionUrl) {
|
|
290
|
-
const data = await (await fetchWithProxy(versionUrl, {
|
|
291
|
-
method: "GET",
|
|
292
|
-
headers: { "Content-Type": "application/json" }
|
|
293
|
-
})).json();
|
|
294
|
-
if (data.buildDate) {
|
|
295
|
-
supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
|
|
296
|
-
logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
|
|
297
|
-
} else {
|
|
298
|
-
logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
|
|
299
|
-
supported = false;
|
|
300
|
-
}
|
|
301
|
-
} else {
|
|
302
|
-
logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
|
|
303
|
-
supported = true;
|
|
304
|
-
}
|
|
305
|
-
} catch (error) {
|
|
306
|
-
logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
|
|
307
|
-
supported = false;
|
|
308
|
-
}
|
|
309
|
-
featureCache.set(cacheKey, supported);
|
|
310
|
-
return supported;
|
|
311
|
-
}
|
|
312
|
-
async function checkServerRunning(port = getDefaultPort()) {
|
|
313
|
-
logger.debug(`Checking for existing server on port ${port}...`);
|
|
314
|
-
try {
|
|
315
|
-
const data = await (await fetchWithProxy(`http://localhost:${port}/health`, { headers: { "x-promptfoo-silent": "true" } })).json();
|
|
316
|
-
return data.status === "OK" && data.version === "0.121.5";
|
|
317
|
-
} catch (err) {
|
|
318
|
-
logger.debug(`No existing server found - this is expected on first startup. ${String(err)}`);
|
|
319
|
-
return false;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
async function openBrowser(browserBehavior, port = getDefaultPort()) {
|
|
323
|
-
const baseUrl = `http://localhost:${port}`;
|
|
324
|
-
let url = baseUrl;
|
|
325
|
-
if (browserBehavior === BrowserBehavior.OPEN_TO_REPORT) url = `${baseUrl}/report`;
|
|
326
|
-
else if (browserBehavior === BrowserBehavior.OPEN_TO_REDTEAM_CREATE) url = `${baseUrl}/redteam/setup`;
|
|
327
|
-
else if (browserBehavior === BrowserBehavior.OPEN_TO_EVAL_SETUP) url = `${baseUrl}/setup`;
|
|
328
|
-
const doOpen = async () => {
|
|
329
|
-
try {
|
|
330
|
-
logger.info("Press Ctrl+C to stop the server");
|
|
331
|
-
await opener(url);
|
|
332
|
-
} catch (err) {
|
|
333
|
-
logger.error(`Failed to open browser: ${String(err)}`);
|
|
334
|
-
}
|
|
335
|
-
};
|
|
336
|
-
if (browserBehavior === BrowserBehavior.ASK) {
|
|
337
|
-
if (await promptYesNo("Open URL in browser?", false)) await doOpen();
|
|
338
|
-
} else if (browserBehavior !== BrowserBehavior.SKIP) await doOpen();
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Opens authentication URLs in the browser with environment-aware behavior.
|
|
342
|
-
*
|
|
343
|
-
* @param authUrl - The login/signup URL to open in the browser
|
|
344
|
-
* @param welcomeUrl - The URL where users can get their API token after login
|
|
345
|
-
* @param browserBehavior - Controls how the browser opening is handled:
|
|
346
|
-
* - BrowserBehavior.ASK: Prompts user before opening (defaults to yes)
|
|
347
|
-
* - BrowserBehavior.OPEN: Opens browser automatically without prompting
|
|
348
|
-
* - BrowserBehavior.SKIP: Shows manual URLs without opening browser
|
|
349
|
-
* @returns Promise that resolves when the operation completes
|
|
350
|
-
*
|
|
351
|
-
* @example
|
|
352
|
-
* ```typescript
|
|
353
|
-
* // Prompt user to open login page
|
|
354
|
-
* await openAuthBrowser(
|
|
355
|
-
* 'https://promptfoo.app',
|
|
356
|
-
* 'https://promptfoo.app/welcome',
|
|
357
|
-
* BrowserBehavior.ASK
|
|
358
|
-
* );
|
|
359
|
-
* ```
|
|
360
|
-
*/
|
|
361
|
-
async function openAuthBrowser(authUrl, welcomeUrl, browserBehavior) {
|
|
362
|
-
const doOpen = async () => {
|
|
363
|
-
try {
|
|
364
|
-
logger.info(`Opening ${authUrl} in your browser...`);
|
|
365
|
-
await opener(authUrl);
|
|
366
|
-
logger.info(`After logging in, get your API token at ${chalk.green(welcomeUrl)}`);
|
|
367
|
-
} catch (err) {
|
|
368
|
-
logger.error(`Failed to open browser: ${String(err)}`);
|
|
369
|
-
logger.info(`Please visit: ${chalk.green(authUrl)}`);
|
|
370
|
-
logger.info(`After logging in, get your API token at ${chalk.green(welcomeUrl)}`);
|
|
371
|
-
}
|
|
372
|
-
};
|
|
373
|
-
if (browserBehavior === BrowserBehavior.ASK) if (await promptYesNo("Open login page in browser?", true)) await doOpen();
|
|
374
|
-
else {
|
|
375
|
-
logger.info(`Please visit: ${chalk.green(authUrl)}`);
|
|
376
|
-
logger.info(`After logging in, get your API token at ${chalk.green(welcomeUrl)}`);
|
|
377
|
-
}
|
|
378
|
-
else if (browserBehavior === BrowserBehavior.SKIP) {
|
|
379
|
-
logger.info(`Please visit: ${chalk.green(authUrl)}`);
|
|
380
|
-
logger.info(`After logging in, get your API token at ${chalk.green(welcomeUrl)}`);
|
|
381
|
-
} else await doOpen();
|
|
382
|
-
}
|
|
383
|
-
//#endregion
|
|
384
|
-
export { openAuthBrowser as a, promptYesNo as c, getRemoteHealthUrl as d, neverGenerateRemote as f, hasCodexDefaultCredentials as g, getCodexDefaultProviders as h, checkServerRunning as i, getRemoteGenerationUrl as l, shouldGenerateRemote as m, BrowserBehaviorNames as n, openBrowser as o, neverGenerateRemoteForRegularEvals as p, checkServerFeatureSupport as r, promptUser as s, BrowserBehavior as t, getRemoteGenerationUrlForUnaligned as u };
|
|
385
|
-
|
|
386
|
-
//# sourceMappingURL=server-ByiF3qlg.js.map
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
import { t as __exportAll } from "./chunk-DEq-mXcV.js";
|
|
2
|
-
import { a as logger } from "./logger-KD8JjCRJ.js";
|
|
3
|
-
import { f as spansTable, h as getDb, m as tracesTable } from "./tables-BMSOS2Gg.js";
|
|
4
|
-
import { asc, eq, lt } from "drizzle-orm";
|
|
5
|
-
//#region src/tracing/store.ts
|
|
6
|
-
var store_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
-
TraceStore: () => TraceStore,
|
|
8
|
-
getTraceStore: () => getTraceStore
|
|
9
|
-
});
|
|
10
|
-
const SENSITIVE_ATTRIBUTE_KEYS = [
|
|
11
|
-
"authorization",
|
|
12
|
-
"cookie",
|
|
13
|
-
"set-cookie",
|
|
14
|
-
"token",
|
|
15
|
-
"api_key",
|
|
16
|
-
"apikey",
|
|
17
|
-
"secret",
|
|
18
|
-
"password",
|
|
19
|
-
"passphrase"
|
|
20
|
-
];
|
|
21
|
-
function sanitizeAttributes(attributes) {
|
|
22
|
-
if (!attributes) return {};
|
|
23
|
-
const sanitizeValue = (value) => {
|
|
24
|
-
if (typeof value === "string") return value.length > 400 ? `${value.slice(0, 400)}…` : value;
|
|
25
|
-
if (Array.isArray(value)) return value.map(sanitizeValue);
|
|
26
|
-
if (value && typeof value === "object") return sanitizeAttributes(value);
|
|
27
|
-
return value;
|
|
28
|
-
};
|
|
29
|
-
const sanitized = {};
|
|
30
|
-
for (const [key, value] of Object.entries(attributes)) {
|
|
31
|
-
const lowerKey = key.toLowerCase();
|
|
32
|
-
if (SENSITIVE_ATTRIBUTE_KEYS.some((sensitiveKey) => lowerKey.includes(sensitiveKey))) {
|
|
33
|
-
sanitized[key] = "<redacted>";
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
sanitized[key] = sanitizeValue(value);
|
|
37
|
-
}
|
|
38
|
-
return sanitized;
|
|
39
|
-
}
|
|
40
|
-
function computeDepth(span, spanMap, depthCache) {
|
|
41
|
-
if (depthCache.has(span.spanId)) return depthCache.get(span.spanId);
|
|
42
|
-
if (!span.parentSpanId || !spanMap.has(span.parentSpanId)) {
|
|
43
|
-
depthCache.set(span.spanId, 0);
|
|
44
|
-
return 0;
|
|
45
|
-
}
|
|
46
|
-
const currentDepth = computeDepth(spanMap.get(span.parentSpanId), spanMap, depthCache) + 1;
|
|
47
|
-
depthCache.set(span.spanId, currentDepth);
|
|
48
|
-
return currentDepth;
|
|
49
|
-
}
|
|
50
|
-
function deriveSpanKind(span) {
|
|
51
|
-
const attributes = span.attributes || {};
|
|
52
|
-
const attributeKind = attributes["span.kind"] || attributes["otel.span.kind"] || attributes["spanKind"];
|
|
53
|
-
if (typeof attributeKind === "string") return attributeKind.toLowerCase();
|
|
54
|
-
return "internal";
|
|
55
|
-
}
|
|
56
|
-
var TraceStore = class {
|
|
57
|
-
db = null;
|
|
58
|
-
getDatabase() {
|
|
59
|
-
if (!this.db) {
|
|
60
|
-
logger.debug("[TraceStore] Initializing database connection");
|
|
61
|
-
this.db = getDb();
|
|
62
|
-
}
|
|
63
|
-
return this.db;
|
|
64
|
-
}
|
|
65
|
-
async createTrace(trace) {
|
|
66
|
-
try {
|
|
67
|
-
logger.debug(`[TraceStore] Creating trace ${trace.traceId} for evaluation ${trace.evaluationId}`);
|
|
68
|
-
await this.getDatabase().insert(tracesTable).values({
|
|
69
|
-
id: crypto.randomUUID(),
|
|
70
|
-
traceId: trace.traceId,
|
|
71
|
-
evaluationId: trace.evaluationId,
|
|
72
|
-
testCaseId: trace.testCaseId,
|
|
73
|
-
metadata: trace.metadata
|
|
74
|
-
}).onConflictDoNothing({ target: tracesTable.traceId });
|
|
75
|
-
logger.debug(`[TraceStore] Successfully created or found existing trace ${trace.traceId}`);
|
|
76
|
-
} catch (error) {
|
|
77
|
-
logger.error(`[TraceStore] Failed to create trace: ${error}`);
|
|
78
|
-
throw error;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
async addSpans(traceId, spans, options) {
|
|
82
|
-
try {
|
|
83
|
-
logger.debug(`[TraceStore] Adding ${spans.length} spans to trace ${traceId}`);
|
|
84
|
-
const db = this.getDatabase();
|
|
85
|
-
if (options?.skipTraceCheck) logger.debug(`[TraceStore] Skipping trace existence check for OTLP scenario`);
|
|
86
|
-
else {
|
|
87
|
-
logger.debug(`[TraceStore] Verifying trace ${traceId} exists`);
|
|
88
|
-
if ((await db.select().from(tracesTable).where(eq(tracesTable.traceId, traceId)).limit(1)).length === 0) {
|
|
89
|
-
logger.warn(`[TraceStore] Trace ${traceId} not found, skipping ${spans.length} spans. This may indicate spans arrived before trace was created.`);
|
|
90
|
-
return {
|
|
91
|
-
stored: false,
|
|
92
|
-
reason: `Trace ${traceId} not found`
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
logger.debug(`[TraceStore] Trace ${traceId} found, proceeding with span insertion`);
|
|
96
|
-
}
|
|
97
|
-
const spanRecords = spans.map((span) => {
|
|
98
|
-
logger.debug(`[TraceStore] Preparing span ${span.spanId} (${span.name}) for insertion`);
|
|
99
|
-
return {
|
|
100
|
-
id: crypto.randomUUID(),
|
|
101
|
-
traceId,
|
|
102
|
-
spanId: span.spanId,
|
|
103
|
-
parentSpanId: span.parentSpanId,
|
|
104
|
-
name: span.name,
|
|
105
|
-
startTime: span.startTime,
|
|
106
|
-
endTime: span.endTime,
|
|
107
|
-
attributes: span.attributes,
|
|
108
|
-
statusCode: span.statusCode,
|
|
109
|
-
statusMessage: span.statusMessage
|
|
110
|
-
};
|
|
111
|
-
});
|
|
112
|
-
await db.insert(spansTable).values(spanRecords);
|
|
113
|
-
logger.debug(`[TraceStore] Successfully added ${spans.length} spans to trace ${traceId}`);
|
|
114
|
-
return { stored: true };
|
|
115
|
-
} catch (error) {
|
|
116
|
-
logger.error(`[TraceStore] Failed to add spans: ${error}`);
|
|
117
|
-
throw error;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
async getTracesByEvaluation(evaluationId) {
|
|
121
|
-
try {
|
|
122
|
-
logger.debug(`[TraceStore] Fetching traces for evaluation ${evaluationId}`);
|
|
123
|
-
const db = this.getDatabase();
|
|
124
|
-
const traces = await db.select().from(tracesTable).where(eq(tracesTable.evaluationId, evaluationId));
|
|
125
|
-
logger.debug(`[TraceStore] Found ${traces.length} traces for evaluation ${evaluationId}`);
|
|
126
|
-
const tracesWithSpans = await Promise.all(traces.map(async (trace) => {
|
|
127
|
-
logger.debug(`[TraceStore] Fetching spans for trace ${trace.traceId}`);
|
|
128
|
-
const spans = await db.select().from(spansTable).where(eq(spansTable.traceId, trace.traceId));
|
|
129
|
-
logger.debug(`[TraceStore] Found ${spans.length} spans for trace ${trace.traceId}`);
|
|
130
|
-
return {
|
|
131
|
-
...trace,
|
|
132
|
-
spans
|
|
133
|
-
};
|
|
134
|
-
}));
|
|
135
|
-
logger.debug(`[TraceStore] Returning ${tracesWithSpans.length} traces with spans`);
|
|
136
|
-
return tracesWithSpans;
|
|
137
|
-
} catch (error) {
|
|
138
|
-
logger.error(`[TraceStore] Failed to get traces for evaluation: ${error}`);
|
|
139
|
-
throw error;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
async getTrace(traceId) {
|
|
143
|
-
try {
|
|
144
|
-
logger.debug(`[TraceStore] Fetching trace ${traceId}`);
|
|
145
|
-
const db = this.getDatabase();
|
|
146
|
-
const traces = await db.select().from(tracesTable).where(eq(tracesTable.traceId, traceId)).limit(1);
|
|
147
|
-
if (traces.length === 0) {
|
|
148
|
-
logger.debug(`[TraceStore] Trace ${traceId} not found`);
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
const trace = traces[0];
|
|
152
|
-
logger.debug(`[TraceStore] Found trace ${traceId}, fetching spans`);
|
|
153
|
-
const spans = await db.select().from(spansTable).where(eq(spansTable.traceId, traceId));
|
|
154
|
-
logger.debug(`[TraceStore] Found ${spans.length} spans for trace ${traceId}`);
|
|
155
|
-
return {
|
|
156
|
-
traceId: trace.traceId,
|
|
157
|
-
evaluationId: trace.evaluationId,
|
|
158
|
-
testCaseId: trace.testCaseId,
|
|
159
|
-
metadata: trace.metadata ?? void 0,
|
|
160
|
-
spans: spans.map((span) => ({
|
|
161
|
-
spanId: span.spanId,
|
|
162
|
-
parentSpanId: span.parentSpanId ?? void 0,
|
|
163
|
-
name: span.name,
|
|
164
|
-
startTime: span.startTime,
|
|
165
|
-
endTime: span.endTime ?? void 0,
|
|
166
|
-
attributes: span.attributes ?? void 0,
|
|
167
|
-
statusCode: span.statusCode ?? void 0,
|
|
168
|
-
statusMessage: span.statusMessage ?? void 0
|
|
169
|
-
}))
|
|
170
|
-
};
|
|
171
|
-
} catch (error) {
|
|
172
|
-
logger.error(`[TraceStore] Failed to get trace: ${error}`);
|
|
173
|
-
throw error;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
async deleteOldTraces(retentionDays) {
|
|
177
|
-
try {
|
|
178
|
-
logger.debug(`[TraceStore] Deleting traces older than ${retentionDays} days`);
|
|
179
|
-
const db = this.getDatabase();
|
|
180
|
-
const cutoffTime = Date.now() - retentionDays * 24 * 60 * 60 * 1e3;
|
|
181
|
-
await db.delete(tracesTable).where(lt(tracesTable.createdAt, cutoffTime));
|
|
182
|
-
logger.debug(`[TraceStore] Successfully deleted traces older than ${retentionDays} days`);
|
|
183
|
-
} catch (error) {
|
|
184
|
-
logger.error(`[TraceStore] Failed to delete old traces: ${error}`);
|
|
185
|
-
throw error;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
async getSpans(traceId, options = {}) {
|
|
189
|
-
const { earliestStartTime, maxSpans, maxDepth, includeInternalSpans = true, spanFilter, sanitizeAttributes: shouldSanitize = true } = options;
|
|
190
|
-
try {
|
|
191
|
-
logger.debug(`[TraceStore] Fetching spans for trace ${traceId}`);
|
|
192
|
-
const rows = await this.getDatabase().select().from(spansTable).where(eq(spansTable.traceId, traceId)).orderBy(asc(spansTable.startTime));
|
|
193
|
-
const spanMap = /* @__PURE__ */ new Map();
|
|
194
|
-
const depthCache = /* @__PURE__ */ new Map();
|
|
195
|
-
for (const row of rows) {
|
|
196
|
-
if (earliestStartTime && row.startTime < earliestStartTime) continue;
|
|
197
|
-
const rawAttributes = row.attributes ?? {};
|
|
198
|
-
const spanData = {
|
|
199
|
-
spanId: row.spanId,
|
|
200
|
-
parentSpanId: row.parentSpanId ?? void 0,
|
|
201
|
-
name: row.name,
|
|
202
|
-
startTime: row.startTime,
|
|
203
|
-
endTime: row.endTime ?? void 0,
|
|
204
|
-
attributes: shouldSanitize ? sanitizeAttributes(rawAttributes) : rawAttributes,
|
|
205
|
-
statusCode: row.statusCode ?? void 0,
|
|
206
|
-
statusMessage: row.statusMessage ?? void 0
|
|
207
|
-
};
|
|
208
|
-
const spanKind = deriveSpanKind({
|
|
209
|
-
...spanData,
|
|
210
|
-
attributes: rawAttributes
|
|
211
|
-
});
|
|
212
|
-
if (!includeInternalSpans && spanKind === "internal") continue;
|
|
213
|
-
if (spanFilter && spanFilter.length > 0) {
|
|
214
|
-
if (!spanFilter.some((filterName) => spanData.name.toLowerCase().includes(filterName.toLowerCase()))) continue;
|
|
215
|
-
}
|
|
216
|
-
spanMap.set(spanData.spanId, spanData);
|
|
217
|
-
}
|
|
218
|
-
let spans = Array.from(spanMap.values());
|
|
219
|
-
if (maxDepth !== void 0) spans = spans.filter((span) => computeDepth(span, spanMap, depthCache) < maxDepth);
|
|
220
|
-
if (maxSpans !== void 0) spans = spans.slice(0, maxSpans);
|
|
221
|
-
logger.debug(`[TraceStore] Returning ${spans.length} spans for trace ${traceId}`);
|
|
222
|
-
return spans;
|
|
223
|
-
} catch (error) {
|
|
224
|
-
logger.error(`[TraceStore] Failed to fetch spans for trace ${traceId}: ${error}`);
|
|
225
|
-
throw error;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
let traceStore = null;
|
|
230
|
-
function getTraceStore() {
|
|
231
|
-
if (!traceStore) {
|
|
232
|
-
logger.debug("[TraceStore] Creating new TraceStore instance");
|
|
233
|
-
traceStore = new TraceStore();
|
|
234
|
-
}
|
|
235
|
-
return traceStore;
|
|
236
|
-
}
|
|
237
|
-
//#endregion
|
|
238
|
-
export { store_exports as n, getTraceStore as t };
|
|
239
|
-
|
|
240
|
-
//# sourceMappingURL=store-2OXm_eBY.js.map
|