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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { T as getEnvString, a as logger, k as state, t as getLogLevel } from "./logger-Ct2S6Yx-.js";
|
|
2
|
-
import { r as importModule } from "./esm-
|
|
3
|
-
import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-
|
|
2
|
+
import { r as importModule } from "./esm-BTK1W7lG.js";
|
|
3
|
+
import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-TxUEMPYS.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import fs from "fs";
|
|
6
6
|
import path from "path";
|
|
@@ -57,6 +57,38 @@ function getSessionPath(sessionId) {
|
|
|
57
57
|
sessionID: sessionId
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Convert the user-facing object-shaped permission config into the
|
|
62
|
+
* rule-array shape required by the v2 `session.create.permission` API.
|
|
63
|
+
*
|
|
64
|
+
* - `{ bash: 'allow' }` → `[{ permission: 'bash', pattern: '*', action: 'allow' }]`
|
|
65
|
+
* - `{ bash: { 'git *': 'allow', '*': 'ask' } }` → two rules with the
|
|
66
|
+
* corresponding glob pattern preserved per entry.
|
|
67
|
+
*
|
|
68
|
+
* Returns `undefined` when the config has no usable entries so callers can
|
|
69
|
+
* omit the field entirely.
|
|
70
|
+
*/
|
|
71
|
+
function convertPermissionConfigToRuleset(config) {
|
|
72
|
+
if (!config) return;
|
|
73
|
+
const rules = [];
|
|
74
|
+
for (const [tool, value] of Object.entries(config)) {
|
|
75
|
+
if (value === void 0) continue;
|
|
76
|
+
if (typeof value === "string") {
|
|
77
|
+
rules.push({
|
|
78
|
+
permission: tool,
|
|
79
|
+
pattern: "*",
|
|
80
|
+
action: value
|
|
81
|
+
});
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (value && typeof value === "object") for (const [pattern, action] of Object.entries(value)) rules.push({
|
|
85
|
+
permission: tool,
|
|
86
|
+
pattern,
|
|
87
|
+
action
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return rules.length > 0 ? rules : void 0;
|
|
91
|
+
}
|
|
60
92
|
function tryParseJson(value) {
|
|
61
93
|
try {
|
|
62
94
|
return JSON.stringify(JSON.parse(value));
|
|
@@ -432,7 +464,10 @@ var OpenCodeSDKProvider = class {
|
|
|
432
464
|
buildCreateSessionParameters(config, sessionQuery) {
|
|
433
465
|
if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
|
|
434
466
|
const createBody = { title: `promptfoo-${Date.now()}` };
|
|
435
|
-
if (config.permission && this.opencodeModule.apiVersion === "v2")
|
|
467
|
+
if (config.permission && this.opencodeModule.apiVersion === "v2") {
|
|
468
|
+
const ruleset = convertPermissionConfigToRuleset(config.permission);
|
|
469
|
+
if (ruleset) createBody.permission = ruleset;
|
|
470
|
+
}
|
|
436
471
|
if (this.opencodeModule.apiVersion === "v2") return {
|
|
437
472
|
...sessionQuery,
|
|
438
473
|
...createBody
|
|
@@ -555,4 +590,4 @@ var OpenCodeSDKProvider = class {
|
|
|
555
590
|
//#endregion
|
|
556
591
|
export { OpenCodeSDKProvider };
|
|
557
592
|
|
|
558
|
-
//# sourceMappingURL=opencode-sdk-
|
|
593
|
+
//# sourceMappingURL=opencode-sdk-sRKYHGoI.js.map
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { s as logger } from "./logger-
|
|
3
|
-
import { t as getDirectory } from "./esm-
|
|
4
|
-
import { n as getTraceStore } from "./store-
|
|
2
|
+
import { s as logger } from "./logger-BbY6ypFL.js";
|
|
3
|
+
import { t as getDirectory } from "./esm-Bexx2PFc.js";
|
|
4
|
+
import { n as getTraceStore } from "./store-DKd5592Q.js";
|
|
5
|
+
import { n as PROMPTFOO_RESOURCE_ATTR_TRACE_ID, t as PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID } from "./resourceAttributes-D1jP3kL5.js";
|
|
5
6
|
import path from "path";
|
|
7
|
+
import crypto from "node:crypto";
|
|
6
8
|
import express from "express";
|
|
7
9
|
import protobuf from "protobufjs";
|
|
8
10
|
//#region src/tracing/protobuf.ts
|
|
@@ -83,6 +85,33 @@ async function decodeExportTraceServiceRequest(data) {
|
|
|
83
85
|
}
|
|
84
86
|
//#endregion
|
|
85
87
|
//#region src/tracing/otlpReceiver.ts
|
|
88
|
+
const LOG_EVENT_NAME_DENYLIST = new Set(["claude_code.tracing"]);
|
|
89
|
+
const LOG_SPAN_DURATION_MS = 1;
|
|
90
|
+
const MAX_BODY_AS_NAME_LENGTH = 128;
|
|
91
|
+
const SEVERITY_NUMBER_ERROR = 17;
|
|
92
|
+
const MAX_LOG_BODY_ATTR_LENGTH = 8192;
|
|
93
|
+
function truncateLogBody(value) {
|
|
94
|
+
if (typeof value !== "string") return value;
|
|
95
|
+
if (value.length <= MAX_LOG_BODY_ATTR_LENGTH) return value;
|
|
96
|
+
return `${value.slice(0, MAX_LOG_BODY_ATTR_LENGTH - 15)}... [truncated]`;
|
|
97
|
+
}
|
|
98
|
+
const BASE64_ZERO_SPAN_ID = /^A{11,12}=?$/;
|
|
99
|
+
function isZeroSpanId(id) {
|
|
100
|
+
return /^0+$/.test(id) || BASE64_ZERO_SPAN_ID.test(id);
|
|
101
|
+
}
|
|
102
|
+
function randomSpanId() {
|
|
103
|
+
return crypto.randomBytes(8).toString("hex");
|
|
104
|
+
}
|
|
105
|
+
function getStringAttribute(attributes, key) {
|
|
106
|
+
const value = attributes[key];
|
|
107
|
+
return typeof value === "string" ? value : void 0;
|
|
108
|
+
}
|
|
109
|
+
function resolveLogSpanName(attributes, bodyValue) {
|
|
110
|
+
const eventName = attributes["event.name"] ?? attributes["claude_code.event.name"];
|
|
111
|
+
if (typeof eventName === "string" && eventName.length > 0) return eventName;
|
|
112
|
+
if (typeof bodyValue === "string" && bodyValue.length > 0 && bodyValue.length <= MAX_BODY_AS_NAME_LENGTH) return bodyValue;
|
|
113
|
+
return "otel.log";
|
|
114
|
+
}
|
|
86
115
|
const SPAN_KIND_MAP = {
|
|
87
116
|
0: "unspecified",
|
|
88
117
|
1: "internal",
|
|
@@ -141,6 +170,21 @@ var OTLPReceiver = class {
|
|
|
141
170
|
limit: "10mb",
|
|
142
171
|
type: (req) => this.acceptFormats.includes("protobuf") && getRequestFormat(req.headers["content-type"]) === "protobuf"
|
|
143
172
|
}));
|
|
173
|
+
this.app.use("/v1/logs", (req, res, next) => {
|
|
174
|
+
if (req.method !== "POST") {
|
|
175
|
+
next();
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (getRequestFormat(req.headers["content-type"]) !== "json") {
|
|
179
|
+
res.status(415).json({ error: "Only application/json is supported for /v1/logs" });
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
next();
|
|
183
|
+
});
|
|
184
|
+
this.app.use("/v1/logs", express.json({
|
|
185
|
+
limit: "10mb",
|
|
186
|
+
type: (req) => getRequestFormat(req.headers["content-type"]) === "json"
|
|
187
|
+
}));
|
|
144
188
|
logger.debug("[OtlpReceiver] Middleware configured for accepted OTLP formats");
|
|
145
189
|
}
|
|
146
190
|
setupRoutes() {
|
|
@@ -164,6 +208,17 @@ var OTLPReceiver = class {
|
|
|
164
208
|
this.handleProcessingError(error, res);
|
|
165
209
|
}
|
|
166
210
|
});
|
|
211
|
+
this.app.post("/v1/logs", async (req, res) => {
|
|
212
|
+
logger.debug("[OtlpReceiver] Received logs request");
|
|
213
|
+
try {
|
|
214
|
+
const traces = this.parseOTLPLogsJSONRequest(req.body);
|
|
215
|
+
logger.debug(`[OtlpReceiver] Parsed ${traces.length} logs into span records`);
|
|
216
|
+
if (traces.length > 0) await this.persistTraces(this.groupTraces(traces));
|
|
217
|
+
res.status(200).json({ partialSuccess: {} });
|
|
218
|
+
} catch (error) {
|
|
219
|
+
this.handleProcessingError(error, res);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
167
222
|
this.app.get("/health", (_req, res) => {
|
|
168
223
|
logger.debug("[OtlpReceiver] Health check requested");
|
|
169
224
|
res.status(200).json({ status: "ok" });
|
|
@@ -295,6 +350,67 @@ var OTLPReceiver = class {
|
|
|
295
350
|
}
|
|
296
351
|
return traces;
|
|
297
352
|
}
|
|
353
|
+
parseOTLPLogsJSONRequest(body) {
|
|
354
|
+
const traces = [];
|
|
355
|
+
const resourceLogs = body?.resourceLogs ?? [];
|
|
356
|
+
logger.debug(`[OtlpReceiver] Parsing logs request with ${resourceLogs.length} resource logs`);
|
|
357
|
+
for (const resourceLog of resourceLogs) {
|
|
358
|
+
const resourceAttributes = this.parseAttributes(resourceLog.resource?.attributes);
|
|
359
|
+
for (const scopeLog of resourceLog.scopeLogs ?? []) for (const log of scopeLog.logRecords ?? []) try {
|
|
360
|
+
const parsed = this.logRecordToParsedTrace(log, scopeLog, resourceAttributes);
|
|
361
|
+
if (parsed) traces.push(parsed);
|
|
362
|
+
} catch (err) {
|
|
363
|
+
logger.warn(`[OtlpReceiver] Skipping malformed log record in scope ${scopeLog.scope?.name ?? "(unknown)"}: ${err}`);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return traces;
|
|
367
|
+
}
|
|
368
|
+
logRecordToParsedTrace(log, scopeLog, resourceAttributes) {
|
|
369
|
+
const rawTraceId = log.traceId ?? getStringAttribute(resourceAttributes, "promptfoo.trace_id");
|
|
370
|
+
if (!rawTraceId) {
|
|
371
|
+
logger.debug(`[OtlpReceiver] Dropping log: no traceId and no ${PROMPTFOO_RESOURCE_ATTR_TRACE_ID} resource attribute (scope=${scopeLog.scope?.name ?? "unknown"}). Ensure TRACEPARENT is propagated or OTEL_RESOURCE_ATTRIBUTES is set by the provider.`);
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
const traceId = this.convertId(rawTraceId, 32);
|
|
375
|
+
if (traceId.length !== 32 || !/^[0-9a-f]+$/.test(traceId)) {
|
|
376
|
+
logger.debug(`[OtlpReceiver] Dropping log: invalid trace_id shape '${rawTraceId}'`);
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
const attributes = {
|
|
380
|
+
...resourceAttributes,
|
|
381
|
+
...this.parseAttributes(log.attributes),
|
|
382
|
+
"otel.scope.name": scopeLog.scope?.name,
|
|
383
|
+
"otel.scope.version": scopeLog.scope?.version,
|
|
384
|
+
"otel.log.severity_number": log.severityNumber,
|
|
385
|
+
"otel.log.severity_text": log.severityText
|
|
386
|
+
};
|
|
387
|
+
const bodyValue = log.body ? this.parseAttributeValue(log.body) : void 0;
|
|
388
|
+
const name = resolveLogSpanName(attributes, bodyValue);
|
|
389
|
+
if (LOG_EVENT_NAME_DENYLIST.has(name)) {
|
|
390
|
+
logger.debug(`[OtlpReceiver] Dropping log: event '${name}' is in the denylist`);
|
|
391
|
+
return null;
|
|
392
|
+
}
|
|
393
|
+
if (bodyValue !== void 0) attributes["otel.log.body"] = truncateLogBody(bodyValue);
|
|
394
|
+
const timeNano = log.timeUnixNano ?? log.observedTimeUnixNano;
|
|
395
|
+
const startTime = timeNano ? Number(timeNano) / 1e6 : Date.now();
|
|
396
|
+
const endTime = startTime + LOG_SPAN_DURATION_MS;
|
|
397
|
+
const rawParentSpanId = !!log.spanId && !isZeroSpanId(log.spanId) ? log.spanId : getStringAttribute(resourceAttributes, PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID);
|
|
398
|
+
const parentSpanId = rawParentSpanId ? this.convertId(rawParentSpanId, 16) : void 0;
|
|
399
|
+
const severityIsError = typeof log.severityNumber === "number" && log.severityNumber >= SEVERITY_NUMBER_ERROR;
|
|
400
|
+
return {
|
|
401
|
+
traceId,
|
|
402
|
+
span: {
|
|
403
|
+
spanId: randomSpanId(),
|
|
404
|
+
parentSpanId,
|
|
405
|
+
name,
|
|
406
|
+
startTime,
|
|
407
|
+
endTime,
|
|
408
|
+
attributes,
|
|
409
|
+
statusCode: 1,
|
|
410
|
+
statusMessage: severityIsError ? log.severityText : void 0
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
}
|
|
298
414
|
async parseOTLPProtobufRequest(body) {
|
|
299
415
|
const decoded = await decodeExportTraceServiceRequest(body);
|
|
300
416
|
logger.debug(`[OtlpReceiver] Parsing protobuf request with ${decoded.resourceSpans?.length || 0} resource spans`);
|
|
@@ -463,4 +579,4 @@ async function stopOTLPReceiver() {
|
|
|
463
579
|
//#endregion
|
|
464
580
|
export { startOTLPReceiver, stopOTLPReceiver };
|
|
465
581
|
|
|
466
|
-
//# sourceMappingURL=otlpReceiver
|
|
582
|
+
//# sourceMappingURL=otlpReceiver--gTpSagc.js.map
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { a as logger } from "./logger-
|
|
2
|
-
import { t as getDirectory } from "./esm-
|
|
3
|
-
import {
|
|
1
|
+
import { a as logger } from "./logger-KD8JjCRJ.js";
|
|
2
|
+
import { t as getDirectory } from "./esm-B6whoAcf.js";
|
|
3
|
+
import { i as getTraceStore } from "./server/index.js";
|
|
4
|
+
import { n as PROMPTFOO_RESOURCE_ATTR_TRACE_ID, t as PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID } from "./resourceAttributes-DQbBB--2.js";
|
|
4
5
|
import path from "path";
|
|
5
6
|
import express from "express";
|
|
7
|
+
import crypto from "node:crypto";
|
|
6
8
|
import protobuf from "protobufjs";
|
|
7
9
|
//#region src/tracing/protobuf.ts
|
|
8
10
|
/**
|
|
@@ -82,6 +84,33 @@ async function decodeExportTraceServiceRequest(data) {
|
|
|
82
84
|
}
|
|
83
85
|
//#endregion
|
|
84
86
|
//#region src/tracing/otlpReceiver.ts
|
|
87
|
+
const LOG_EVENT_NAME_DENYLIST = new Set(["claude_code.tracing"]);
|
|
88
|
+
const LOG_SPAN_DURATION_MS = 1;
|
|
89
|
+
const MAX_BODY_AS_NAME_LENGTH = 128;
|
|
90
|
+
const SEVERITY_NUMBER_ERROR = 17;
|
|
91
|
+
const MAX_LOG_BODY_ATTR_LENGTH = 8192;
|
|
92
|
+
function truncateLogBody(value) {
|
|
93
|
+
if (typeof value !== "string") return value;
|
|
94
|
+
if (value.length <= MAX_LOG_BODY_ATTR_LENGTH) return value;
|
|
95
|
+
return `${value.slice(0, MAX_LOG_BODY_ATTR_LENGTH - 15)}... [truncated]`;
|
|
96
|
+
}
|
|
97
|
+
const BASE64_ZERO_SPAN_ID = /^A{11,12}=?$/;
|
|
98
|
+
function isZeroSpanId(id) {
|
|
99
|
+
return /^0+$/.test(id) || BASE64_ZERO_SPAN_ID.test(id);
|
|
100
|
+
}
|
|
101
|
+
function randomSpanId() {
|
|
102
|
+
return crypto.randomBytes(8).toString("hex");
|
|
103
|
+
}
|
|
104
|
+
function getStringAttribute(attributes, key) {
|
|
105
|
+
const value = attributes[key];
|
|
106
|
+
return typeof value === "string" ? value : void 0;
|
|
107
|
+
}
|
|
108
|
+
function resolveLogSpanName(attributes, bodyValue) {
|
|
109
|
+
const eventName = attributes["event.name"] ?? attributes["claude_code.event.name"];
|
|
110
|
+
if (typeof eventName === "string" && eventName.length > 0) return eventName;
|
|
111
|
+
if (typeof bodyValue === "string" && bodyValue.length > 0 && bodyValue.length <= MAX_BODY_AS_NAME_LENGTH) return bodyValue;
|
|
112
|
+
return "otel.log";
|
|
113
|
+
}
|
|
85
114
|
const SPAN_KIND_MAP = {
|
|
86
115
|
0: "unspecified",
|
|
87
116
|
1: "internal",
|
|
@@ -140,6 +169,21 @@ var OTLPReceiver = class {
|
|
|
140
169
|
limit: "10mb",
|
|
141
170
|
type: (req) => this.acceptFormats.includes("protobuf") && getRequestFormat(req.headers["content-type"]) === "protobuf"
|
|
142
171
|
}));
|
|
172
|
+
this.app.use("/v1/logs", (req, res, next) => {
|
|
173
|
+
if (req.method !== "POST") {
|
|
174
|
+
next();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (getRequestFormat(req.headers["content-type"]) !== "json") {
|
|
178
|
+
res.status(415).json({ error: "Only application/json is supported for /v1/logs" });
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
next();
|
|
182
|
+
});
|
|
183
|
+
this.app.use("/v1/logs", express.json({
|
|
184
|
+
limit: "10mb",
|
|
185
|
+
type: (req) => getRequestFormat(req.headers["content-type"]) === "json"
|
|
186
|
+
}));
|
|
143
187
|
logger.debug("[OtlpReceiver] Middleware configured for accepted OTLP formats");
|
|
144
188
|
}
|
|
145
189
|
setupRoutes() {
|
|
@@ -163,6 +207,17 @@ var OTLPReceiver = class {
|
|
|
163
207
|
this.handleProcessingError(error, res);
|
|
164
208
|
}
|
|
165
209
|
});
|
|
210
|
+
this.app.post("/v1/logs", async (req, res) => {
|
|
211
|
+
logger.debug("[OtlpReceiver] Received logs request");
|
|
212
|
+
try {
|
|
213
|
+
const traces = this.parseOTLPLogsJSONRequest(req.body);
|
|
214
|
+
logger.debug(`[OtlpReceiver] Parsed ${traces.length} logs into span records`);
|
|
215
|
+
if (traces.length > 0) await this.persistTraces(this.groupTraces(traces));
|
|
216
|
+
res.status(200).json({ partialSuccess: {} });
|
|
217
|
+
} catch (error) {
|
|
218
|
+
this.handleProcessingError(error, res);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
166
221
|
this.app.get("/health", (_req, res) => {
|
|
167
222
|
logger.debug("[OtlpReceiver] Health check requested");
|
|
168
223
|
res.status(200).json({ status: "ok" });
|
|
@@ -294,6 +349,67 @@ var OTLPReceiver = class {
|
|
|
294
349
|
}
|
|
295
350
|
return traces;
|
|
296
351
|
}
|
|
352
|
+
parseOTLPLogsJSONRequest(body) {
|
|
353
|
+
const traces = [];
|
|
354
|
+
const resourceLogs = body?.resourceLogs ?? [];
|
|
355
|
+
logger.debug(`[OtlpReceiver] Parsing logs request with ${resourceLogs.length} resource logs`);
|
|
356
|
+
for (const resourceLog of resourceLogs) {
|
|
357
|
+
const resourceAttributes = this.parseAttributes(resourceLog.resource?.attributes);
|
|
358
|
+
for (const scopeLog of resourceLog.scopeLogs ?? []) for (const log of scopeLog.logRecords ?? []) try {
|
|
359
|
+
const parsed = this.logRecordToParsedTrace(log, scopeLog, resourceAttributes);
|
|
360
|
+
if (parsed) traces.push(parsed);
|
|
361
|
+
} catch (err) {
|
|
362
|
+
logger.warn(`[OtlpReceiver] Skipping malformed log record in scope ${scopeLog.scope?.name ?? "(unknown)"}: ${err}`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return traces;
|
|
366
|
+
}
|
|
367
|
+
logRecordToParsedTrace(log, scopeLog, resourceAttributes) {
|
|
368
|
+
const rawTraceId = log.traceId ?? getStringAttribute(resourceAttributes, "promptfoo.trace_id");
|
|
369
|
+
if (!rawTraceId) {
|
|
370
|
+
logger.debug(`[OtlpReceiver] Dropping log: no traceId and no ${PROMPTFOO_RESOURCE_ATTR_TRACE_ID} resource attribute (scope=${scopeLog.scope?.name ?? "unknown"}). Ensure TRACEPARENT is propagated or OTEL_RESOURCE_ATTRIBUTES is set by the provider.`);
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
const traceId = this.convertId(rawTraceId, 32);
|
|
374
|
+
if (traceId.length !== 32 || !/^[0-9a-f]+$/.test(traceId)) {
|
|
375
|
+
logger.debug(`[OtlpReceiver] Dropping log: invalid trace_id shape '${rawTraceId}'`);
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
const attributes = {
|
|
379
|
+
...resourceAttributes,
|
|
380
|
+
...this.parseAttributes(log.attributes),
|
|
381
|
+
"otel.scope.name": scopeLog.scope?.name,
|
|
382
|
+
"otel.scope.version": scopeLog.scope?.version,
|
|
383
|
+
"otel.log.severity_number": log.severityNumber,
|
|
384
|
+
"otel.log.severity_text": log.severityText
|
|
385
|
+
};
|
|
386
|
+
const bodyValue = log.body ? this.parseAttributeValue(log.body) : void 0;
|
|
387
|
+
const name = resolveLogSpanName(attributes, bodyValue);
|
|
388
|
+
if (LOG_EVENT_NAME_DENYLIST.has(name)) {
|
|
389
|
+
logger.debug(`[OtlpReceiver] Dropping log: event '${name}' is in the denylist`);
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
if (bodyValue !== void 0) attributes["otel.log.body"] = truncateLogBody(bodyValue);
|
|
393
|
+
const timeNano = log.timeUnixNano ?? log.observedTimeUnixNano;
|
|
394
|
+
const startTime = timeNano ? Number(timeNano) / 1e6 : Date.now();
|
|
395
|
+
const endTime = startTime + LOG_SPAN_DURATION_MS;
|
|
396
|
+
const rawParentSpanId = !!log.spanId && !isZeroSpanId(log.spanId) ? log.spanId : getStringAttribute(resourceAttributes, PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID);
|
|
397
|
+
const parentSpanId = rawParentSpanId ? this.convertId(rawParentSpanId, 16) : void 0;
|
|
398
|
+
const severityIsError = typeof log.severityNumber === "number" && log.severityNumber >= SEVERITY_NUMBER_ERROR;
|
|
399
|
+
return {
|
|
400
|
+
traceId,
|
|
401
|
+
span: {
|
|
402
|
+
spanId: randomSpanId(),
|
|
403
|
+
parentSpanId,
|
|
404
|
+
name,
|
|
405
|
+
startTime,
|
|
406
|
+
endTime,
|
|
407
|
+
attributes,
|
|
408
|
+
statusCode: 1,
|
|
409
|
+
statusMessage: severityIsError ? log.severityText : void 0
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
}
|
|
297
413
|
async parseOTLPProtobufRequest(body) {
|
|
298
414
|
const decoded = await decodeExportTraceServiceRequest(body);
|
|
299
415
|
logger.debug(`[OtlpReceiver] Parsing protobuf request with ${decoded.resourceSpans?.length || 0} resource spans`);
|
|
@@ -462,4 +578,4 @@ async function stopOTLPReceiver() {
|
|
|
462
578
|
//#endregion
|
|
463
579
|
export { startOTLPReceiver, stopOTLPReceiver };
|
|
464
580
|
|
|
465
|
-
//# sourceMappingURL=otlpReceiver-
|
|
581
|
+
//# sourceMappingURL=otlpReceiver-B2eaKC8C.js.map
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { a as logger } from "./logger-Ct2S6Yx-.js";
|
|
2
|
-
import { t as getDirectory } from "./esm-
|
|
3
|
-
import { t as getTraceStore } from "./store-
|
|
2
|
+
import { t as getDirectory } from "./esm-BTK1W7lG.js";
|
|
3
|
+
import { t as getTraceStore } from "./store-HpopRVzl.js";
|
|
4
|
+
import { n as PROMPTFOO_RESOURCE_ATTR_TRACE_ID, t as PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID } from "./resourceAttributes-v6-I67fn.js";
|
|
4
5
|
import path from "path";
|
|
6
|
+
import crypto from "node:crypto";
|
|
5
7
|
import express from "express";
|
|
6
8
|
import protobuf from "protobufjs";
|
|
7
9
|
//#region src/tracing/protobuf.ts
|
|
@@ -82,6 +84,33 @@ async function decodeExportTraceServiceRequest(data) {
|
|
|
82
84
|
}
|
|
83
85
|
//#endregion
|
|
84
86
|
//#region src/tracing/otlpReceiver.ts
|
|
87
|
+
const LOG_EVENT_NAME_DENYLIST = new Set(["claude_code.tracing"]);
|
|
88
|
+
const LOG_SPAN_DURATION_MS = 1;
|
|
89
|
+
const MAX_BODY_AS_NAME_LENGTH = 128;
|
|
90
|
+
const SEVERITY_NUMBER_ERROR = 17;
|
|
91
|
+
const MAX_LOG_BODY_ATTR_LENGTH = 8192;
|
|
92
|
+
function truncateLogBody(value) {
|
|
93
|
+
if (typeof value !== "string") return value;
|
|
94
|
+
if (value.length <= MAX_LOG_BODY_ATTR_LENGTH) return value;
|
|
95
|
+
return `${value.slice(0, MAX_LOG_BODY_ATTR_LENGTH - 15)}... [truncated]`;
|
|
96
|
+
}
|
|
97
|
+
const BASE64_ZERO_SPAN_ID = /^A{11,12}=?$/;
|
|
98
|
+
function isZeroSpanId(id) {
|
|
99
|
+
return /^0+$/.test(id) || BASE64_ZERO_SPAN_ID.test(id);
|
|
100
|
+
}
|
|
101
|
+
function randomSpanId() {
|
|
102
|
+
return crypto.randomBytes(8).toString("hex");
|
|
103
|
+
}
|
|
104
|
+
function getStringAttribute(attributes, key) {
|
|
105
|
+
const value = attributes[key];
|
|
106
|
+
return typeof value === "string" ? value : void 0;
|
|
107
|
+
}
|
|
108
|
+
function resolveLogSpanName(attributes, bodyValue) {
|
|
109
|
+
const eventName = attributes["event.name"] ?? attributes["claude_code.event.name"];
|
|
110
|
+
if (typeof eventName === "string" && eventName.length > 0) return eventName;
|
|
111
|
+
if (typeof bodyValue === "string" && bodyValue.length > 0 && bodyValue.length <= MAX_BODY_AS_NAME_LENGTH) return bodyValue;
|
|
112
|
+
return "otel.log";
|
|
113
|
+
}
|
|
85
114
|
const SPAN_KIND_MAP = {
|
|
86
115
|
0: "unspecified",
|
|
87
116
|
1: "internal",
|
|
@@ -140,6 +169,21 @@ var OTLPReceiver = class {
|
|
|
140
169
|
limit: "10mb",
|
|
141
170
|
type: (req) => this.acceptFormats.includes("protobuf") && getRequestFormat(req.headers["content-type"]) === "protobuf"
|
|
142
171
|
}));
|
|
172
|
+
this.app.use("/v1/logs", (req, res, next) => {
|
|
173
|
+
if (req.method !== "POST") {
|
|
174
|
+
next();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (getRequestFormat(req.headers["content-type"]) !== "json") {
|
|
178
|
+
res.status(415).json({ error: "Only application/json is supported for /v1/logs" });
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
next();
|
|
182
|
+
});
|
|
183
|
+
this.app.use("/v1/logs", express.json({
|
|
184
|
+
limit: "10mb",
|
|
185
|
+
type: (req) => getRequestFormat(req.headers["content-type"]) === "json"
|
|
186
|
+
}));
|
|
143
187
|
logger.debug("[OtlpReceiver] Middleware configured for accepted OTLP formats");
|
|
144
188
|
}
|
|
145
189
|
setupRoutes() {
|
|
@@ -163,6 +207,17 @@ var OTLPReceiver = class {
|
|
|
163
207
|
this.handleProcessingError(error, res);
|
|
164
208
|
}
|
|
165
209
|
});
|
|
210
|
+
this.app.post("/v1/logs", async (req, res) => {
|
|
211
|
+
logger.debug("[OtlpReceiver] Received logs request");
|
|
212
|
+
try {
|
|
213
|
+
const traces = this.parseOTLPLogsJSONRequest(req.body);
|
|
214
|
+
logger.debug(`[OtlpReceiver] Parsed ${traces.length} logs into span records`);
|
|
215
|
+
if (traces.length > 0) await this.persistTraces(this.groupTraces(traces));
|
|
216
|
+
res.status(200).json({ partialSuccess: {} });
|
|
217
|
+
} catch (error) {
|
|
218
|
+
this.handleProcessingError(error, res);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
166
221
|
this.app.get("/health", (_req, res) => {
|
|
167
222
|
logger.debug("[OtlpReceiver] Health check requested");
|
|
168
223
|
res.status(200).json({ status: "ok" });
|
|
@@ -294,6 +349,67 @@ var OTLPReceiver = class {
|
|
|
294
349
|
}
|
|
295
350
|
return traces;
|
|
296
351
|
}
|
|
352
|
+
parseOTLPLogsJSONRequest(body) {
|
|
353
|
+
const traces = [];
|
|
354
|
+
const resourceLogs = body?.resourceLogs ?? [];
|
|
355
|
+
logger.debug(`[OtlpReceiver] Parsing logs request with ${resourceLogs.length} resource logs`);
|
|
356
|
+
for (const resourceLog of resourceLogs) {
|
|
357
|
+
const resourceAttributes = this.parseAttributes(resourceLog.resource?.attributes);
|
|
358
|
+
for (const scopeLog of resourceLog.scopeLogs ?? []) for (const log of scopeLog.logRecords ?? []) try {
|
|
359
|
+
const parsed = this.logRecordToParsedTrace(log, scopeLog, resourceAttributes);
|
|
360
|
+
if (parsed) traces.push(parsed);
|
|
361
|
+
} catch (err) {
|
|
362
|
+
logger.warn(`[OtlpReceiver] Skipping malformed log record in scope ${scopeLog.scope?.name ?? "(unknown)"}: ${err}`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return traces;
|
|
366
|
+
}
|
|
367
|
+
logRecordToParsedTrace(log, scopeLog, resourceAttributes) {
|
|
368
|
+
const rawTraceId = log.traceId ?? getStringAttribute(resourceAttributes, "promptfoo.trace_id");
|
|
369
|
+
if (!rawTraceId) {
|
|
370
|
+
logger.debug(`[OtlpReceiver] Dropping log: no traceId and no ${PROMPTFOO_RESOURCE_ATTR_TRACE_ID} resource attribute (scope=${scopeLog.scope?.name ?? "unknown"}). Ensure TRACEPARENT is propagated or OTEL_RESOURCE_ATTRIBUTES is set by the provider.`);
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
const traceId = this.convertId(rawTraceId, 32);
|
|
374
|
+
if (traceId.length !== 32 || !/^[0-9a-f]+$/.test(traceId)) {
|
|
375
|
+
logger.debug(`[OtlpReceiver] Dropping log: invalid trace_id shape '${rawTraceId}'`);
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
const attributes = {
|
|
379
|
+
...resourceAttributes,
|
|
380
|
+
...this.parseAttributes(log.attributes),
|
|
381
|
+
"otel.scope.name": scopeLog.scope?.name,
|
|
382
|
+
"otel.scope.version": scopeLog.scope?.version,
|
|
383
|
+
"otel.log.severity_number": log.severityNumber,
|
|
384
|
+
"otel.log.severity_text": log.severityText
|
|
385
|
+
};
|
|
386
|
+
const bodyValue = log.body ? this.parseAttributeValue(log.body) : void 0;
|
|
387
|
+
const name = resolveLogSpanName(attributes, bodyValue);
|
|
388
|
+
if (LOG_EVENT_NAME_DENYLIST.has(name)) {
|
|
389
|
+
logger.debug(`[OtlpReceiver] Dropping log: event '${name}' is in the denylist`);
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
if (bodyValue !== void 0) attributes["otel.log.body"] = truncateLogBody(bodyValue);
|
|
393
|
+
const timeNano = log.timeUnixNano ?? log.observedTimeUnixNano;
|
|
394
|
+
const startTime = timeNano ? Number(timeNano) / 1e6 : Date.now();
|
|
395
|
+
const endTime = startTime + LOG_SPAN_DURATION_MS;
|
|
396
|
+
const rawParentSpanId = !!log.spanId && !isZeroSpanId(log.spanId) ? log.spanId : getStringAttribute(resourceAttributes, PROMPTFOO_RESOURCE_ATTR_PARENT_SPAN_ID);
|
|
397
|
+
const parentSpanId = rawParentSpanId ? this.convertId(rawParentSpanId, 16) : void 0;
|
|
398
|
+
const severityIsError = typeof log.severityNumber === "number" && log.severityNumber >= SEVERITY_NUMBER_ERROR;
|
|
399
|
+
return {
|
|
400
|
+
traceId,
|
|
401
|
+
span: {
|
|
402
|
+
spanId: randomSpanId(),
|
|
403
|
+
parentSpanId,
|
|
404
|
+
name,
|
|
405
|
+
startTime,
|
|
406
|
+
endTime,
|
|
407
|
+
attributes,
|
|
408
|
+
statusCode: 1,
|
|
409
|
+
statusMessage: severityIsError ? log.severityText : void 0
|
|
410
|
+
}
|
|
411
|
+
};
|
|
412
|
+
}
|
|
297
413
|
async parseOTLPProtobufRequest(body) {
|
|
298
414
|
const decoded = await decodeExportTraceServiceRequest(body);
|
|
299
415
|
logger.debug(`[OtlpReceiver] Parsing protobuf request with ${decoded.resourceSpans?.length || 0} resource spans`);
|
|
@@ -462,4 +578,4 @@ async function stopOTLPReceiver() {
|
|
|
462
578
|
//#endregion
|
|
463
579
|
export { startOTLPReceiver, stopOTLPReceiver };
|
|
464
580
|
|
|
465
|
-
//# sourceMappingURL=otlpReceiver-
|
|
581
|
+
//# sourceMappingURL=otlpReceiver-BXjcRqAM.js.map
|