promptfoo 0.120.27 → 0.121.2
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/README.md +1 -1
- package/dist/src/{ListApp-8WOe2nT6.js → ListApp-Du7YVwj5.js} +2 -4
- package/dist/src/accounts-B0pgC1oV.js +206 -0
- package/dist/src/{accounts-DVINui-2.js → accounts-Bm2D8Db9.js} +39 -34
- package/dist/src/{accounts-CPDRAMND.js → accounts-CiBLOnA7.js} +38 -33
- package/dist/src/{accounts-Fl2J3_Fu.cjs → accounts-gtkH-5KX.cjs} +77 -78
- package/dist/src/{agentic-utils-D922n6mm.js → agentic-utils-DS1g3GLF.js} +9 -10
- package/dist/src/{agents-BcsN_BgB.js → agents-9qiOy0ho.js} +16 -12
- package/dist/src/{agents-BXLmVsxR.js → agents-CBr9A01V.js} +37 -37
- package/dist/src/{agents-pMfppv9Z.js → agents-CmvBq8LV.js} +16 -18
- package/dist/src/{agents-hqgSV-3o.js → agents-D__IdAlg.js} +39 -40
- package/dist/src/{agents-BO2n8Z0d.cjs → agents-DbRtpYxR.cjs} +37 -40
- package/dist/src/{agents-BdUTAwi-.js → agents-DgF2zDag.js} +37 -42
- package/dist/src/{agents-DgJf2-ez.cjs → agents-Di9DKPzn.cjs} +16 -17
- package/dist/src/{agents-DNvSH78i.js → agents-cLXA8a_8.js} +17 -19
- package/dist/src/{aimlapi-DtgPI0nE.js → aimlapi-B4rcnZgv.js} +15 -17
- package/dist/src/{aimlapi-BE_Tg9Fl.cjs → aimlapi-BvlNH0gr.cjs} +15 -16
- package/dist/src/{aimlapi-DOib86oE.js → aimlapi-CnkC2HqE.js} +16 -18
- package/dist/src/{aimlapi-DTPACCB1.js → aimlapi-DHJU_kcV.js} +15 -4
- package/dist/src/app/assets/index-4LKxG2CG.js +439 -0
- package/dist/src/app/assets/{index-NCn4eVBv.css → index-C3zcsZFQ.css} +1 -1
- package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +36 -0
- package/dist/src/app/index.html +3 -3
- package/dist/src/app/tsconfig.app.tsbuildinfo +1 -1
- package/dist/src/{audio-BnRUGAm_.js → audio-Bkv46et0.js} +6 -5
- package/dist/src/{audio-Cwo68yZS.cjs → audio-CGMyULza.cjs} +6 -7
- package/dist/src/{audio-MSRki4JU.js → audio-ClI_AFre.js} +6 -8
- package/dist/src/{audio-BRYU0BFo.js → audio-Dz3z7s3J.js} +7 -9
- package/dist/src/{base-pGVmXNl4.cjs → base-CGrhspbK.cjs} +36 -38
- package/dist/src/{base-h961VXYk.js → base-CpjcHe4e.js} +11 -13
- package/dist/src/base-DLKtKMFh.js +193 -0
- package/dist/src/{base-XB2tDJrB.js → base-Dy1V8--Z.js} +11 -13
- package/dist/src/blobs-BDbfYdrJ.js +236 -0
- package/dist/src/{blobs-CR5C4Ihh.js → blobs-CBO20krR.js} +9 -12
- package/dist/src/{blobs-BM_e6hCa.js → blobs-CMHN0Qcz.js} +9 -12
- package/dist/src/{blobs-B-KQAFhX.cjs → blobs-D23XLin-.cjs} +34 -37
- package/dist/src/{cache-jsiwsAJv.js → cache-BVeDlD87.js} +132 -117
- package/dist/src/{cache-CIpsoBZR.js → cache-C4Nxf52C.js} +132 -118
- package/dist/src/cache-CeUpFm3M.cjs +5 -0
- package/dist/src/{cache-BTVYfbka.cjs → cache-Dh5WtQps.cjs} +182 -168
- package/dist/src/cache-i1P6crbO.js +756 -0
- package/dist/src/cache-n-RCJ-hL.js +6 -0
- package/dist/src/{chat-BcPjZXIp.js → chat-BiKyneZl.js} +45 -46
- package/dist/src/{chat-D31K7C4u.cjs → chat-C1Qst7jL.cjs} +20 -21
- package/dist/src/{chat-B84t99NW.js → chat-C2jrdPMx.js} +20 -9
- package/dist/src/{chat-BE44YOc6.cjs → chat-CgF-J-Jj.cjs} +65 -66
- package/dist/src/{chat-DwWifjxi.js → chat-CzkrVDfz.js} +20 -22
- package/dist/src/chat-DJIw17u0.js +766 -0
- package/dist/src/{chat-CcUCysjU.js → chat-DqxYYtWA.js} +45 -46
- package/dist/src/{chat-DZM2GUHO.js → chat-qmatte1u.js} +21 -23
- package/dist/src/{chatkit-D67HS_0b.js → chatkit-65VXf5SR.js} +58 -58
- package/dist/src/{chatkit-DAB_qfzI.js → chatkit-Be-Q-a9F.js} +58 -60
- package/dist/src/{chatkit-Biqb_wsD.js → chatkit-BxFvW8KY.js} +58 -60
- package/dist/src/{chatkit-PGG4ZYIn.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
- package/dist/src/chunk-DEq-mXcV.js +15 -0
- package/dist/src/chunk-DRamLcfz.js +16 -0
- package/dist/src/{claude-agent-sdk-SVM6AdBu.js → claude-agent-sdk-Apiy0iaz.js} +31 -31
- package/dist/src/{claude-agent-sdk-C-IOTPfo.js → claude-agent-sdk-D2bJee9S.js} +31 -29
- package/dist/src/{claude-agent-sdk-C9SiaQub.cjs → claude-agent-sdk-D9Z5Pr9X.cjs} +31 -28
- package/dist/src/{claude-agent-sdk-CiluSyW1.js → claude-agent-sdk-DfCoW0E6.js} +33 -20
- package/dist/src/cloud-BBh91EUK.js +4 -0
- package/dist/src/{cloud-CZ-q9Ier.js → cloud-C0dlstV_.js} +7 -9
- package/dist/src/{cloudflare-ai-BahKHyhh.js → cloudflare-ai-8TDxHR0x.js} +16 -18
- package/dist/src/{cloudflare-ai-v_qZD6_q.js → cloudflare-ai-BxAGvfju.js} +17 -19
- package/dist/src/{cloudflare-ai-Dfahv5SY.cjs → cloudflare-ai-CknbZ5LJ.cjs} +16 -17
- package/dist/src/{cloudflare-ai-Dxyt50Nl.js → cloudflare-ai-g7PB6VHR.js} +16 -4
- package/dist/src/{cloudflare-gateway-Bi_FpOFy.js → cloudflare-gateway-B9HWA5wf.js} +23 -23
- package/dist/src/{cloudflare-gateway-BPWoZIzJ.cjs → cloudflare-gateway-BSnDmHYo.cjs} +21 -22
- package/dist/src/{cloudflare-gateway-C0guUNwk.js → cloudflare-gateway-CKDb4dJ8.js} +26 -14
- package/dist/src/{cloudflare-gateway-btS7h1OZ.js → cloudflare-gateway-CP9QEWYS.js} +21 -25
- package/dist/src/{codex-sdk-DSxAnbfT.js → codex-sdk-C6UMlxwV.js} +28 -29
- package/dist/src/{codex-sdk-IYVi9fuM.js → codex-sdk-DUwKWezN.js} +28 -27
- package/dist/src/{codex-sdk-DulY0ZRq.js → codex-sdk-GGAw0qbD.js} +28 -29
- package/dist/src/{codex-sdk-DFKMtAyf.cjs → codex-sdk-fAO0c3yA.cjs} +28 -29
- package/dist/src/{cometapi-DzrR3SR_.js → cometapi-BL9yvj_f.js} +16 -4
- package/dist/src/{cometapi-DIO64tf4.cjs → cometapi-C4xSqeID.cjs} +21 -22
- package/dist/src/{cometapi-C9EEpJzT.js → cometapi-CUQq3H_a.js} +21 -24
- package/dist/src/{cometapi-DkNBMk0G.js → cometapi-DFNiKmSz.js} +17 -19
- package/dist/src/{completion-CG29bfKX.js → completion-5MzrpJxT.js} +11 -13
- package/dist/src/{completion-CCRT4kX1.cjs → completion-CM6oK8PS.cjs} +21 -23
- package/dist/src/{completion-Bgf1VJoq.js → completion-DZ083F31.js} +11 -13
- package/dist/src/completion-qRoZAYRB.js +120 -0
- package/dist/src/{createHash-Dw_iLu31.js → createHash-CTQmL3G2.js} +2 -3
- package/dist/src/{createHash-CYQy4YeL.cjs → createHash-CfZSc0b4.cjs} +13 -14
- package/dist/src/{createHash-CJcfskIZ.js → createHash-Da8fMwqB.js} +2 -3
- package/dist/src/createHash-DmPQkvBh.js +15 -0
- package/dist/src/{docker-D-ayp2FW.js → docker-Bb5dcxr8.js} +18 -20
- package/dist/src/{docker-B81N0t4e.js → docker-BvfL2BrW.js} +19 -21
- package/dist/src/{docker-DNcLR4Ig.cjs → docker-DcF2pRrj.cjs} +18 -19
- package/dist/src/{docker-egERKxCF.js → docker-ExVyLp0S.js} +18 -7
- package/dist/src/entrypoint.js +2 -3
- package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
- package/dist/src/{esm-B9dPm_BF.js → esm-C03C-mv3.js} +17 -20
- package/dist/src/{esm-D2pZ87fL.js → esm-CaIwzWR5.js} +18 -21
- package/dist/src/esm-Cd1AjG1D.js +379 -0
- package/dist/src/{esm-Ct-Joyue.cjs → esm-CnNt7sI4.cjs} +47 -49
- package/dist/src/eval-B3r2CVXr.js +15 -0
- package/dist/src/{eval-C-Nr6wX_.js → eval-Dg2nG4v2.js} +47 -54
- package/dist/src/evalResult-5xwYnECe.js +12 -0
- package/dist/src/evalResult-71lY93Kj.cjs +10 -0
- package/dist/src/{evalResult-DXMWJ3sx.js → evalResult-BBRNtX4I.js} +10 -11
- package/dist/src/{evalResult-4BzI2tmj.js → evalResult-BDMqrapS.js} +16 -12
- package/dist/src/evalResult-Dx5P5cIv.js +10 -0
- package/dist/src/{evalResult-CX8wQecI.cjs → evalResult-fuaI8HkH.cjs} +20 -21
- package/dist/src/{evaluator-8aGyV12L.js → evaluator-BhoWwp5b.js} +211 -235
- package/dist/src/evaluator-Jx6bRZV6.js +36 -0
- package/dist/src/{extractor-V5x_m1i0.js → extractor-C0EVHewb.js} +22 -24
- package/dist/src/extractor-D25qpmGX.js +374 -0
- package/dist/src/{extractor-CD5yKL-G.js → extractor-DReVID0K.js} +22 -24
- package/dist/src/{extractor-C031XmTA.cjs → extractor-pYLLi3wS.cjs} +37 -39
- package/dist/src/{fetch-BmbD-v1L.cjs → fetch-BPkYtG8K.cjs} +244 -277
- package/dist/src/fetch-BxNb_Lp3.js +5 -0
- package/dist/src/{fetch-D3OHf-lV.js → fetch-Cwxnd8zz.js} +36 -44
- package/dist/src/{fetch-CXZI9RRr.js → fetch-Dxpd4_sr.js} +23 -35
- package/dist/src/fetch-HaqdX7U1.js +780 -0
- package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
- package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
- package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
- package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
- package/dist/src/{formatDuration-CdevI3An.js → formatDuration-DgBVMN65.js} +2 -2
- package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
- package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
- package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
- package/dist/src/{genaiTracer-Dres3qrN.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
- package/dist/src/{graders--1y2u9HO.js → graders-BTeBGqjJ.js} +349 -397
- package/dist/src/graders-B_pgMLS2.js +34 -0
- package/dist/src/{graders-DTeBrzWp.js → graders-Bj_Odv7c.js} +349 -397
- package/dist/src/graders-DErokPDO.cjs +32 -0
- package/dist/src/graders-DP7KFFo-.js +13466 -0
- package/dist/src/graders-DR_uNe54.js +32 -0
- package/dist/src/{graders-DohM2dir.cjs → graders-DU49_J8Y.cjs} +684 -732
- package/dist/src/graders-w3176Wz-.js +32 -0
- package/dist/src/{image-B0U4Hqll.js → image-B02ogr_b.js} +7 -9
- package/dist/src/{image-DmE-niFE.js → image-B0h9VEMc.js} +6 -5
- package/dist/src/{image-CuKHuccK.cjs → image-BLmROtN3.cjs} +29 -30
- package/dist/src/{image-DNEIf_aI.js → image-Bb4vWQLM.js} +6 -8
- package/dist/src/{image-DpKl2F15.cjs → image-C1madmKh.cjs} +6 -7
- package/dist/src/{image-C3wHC9_h.js → image-CHfWvljl.js} +9 -10
- package/dist/src/{image-O1u4bCFg.js → image-DS-o-0ph.js} +9 -10
- package/dist/src/image-Dpxa1Jt6.js +257 -0
- package/dist/src/index.cjs +615 -695
- package/dist/src/index.d.cts +271 -7
- package/dist/src/index.d.ts +271 -3
- package/dist/src/index.js +580 -664
- package/dist/src/{interactiveCheck-Bxj1Swex.js → interactiveCheck-BgLZUIt3.js} +7 -8
- package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
- package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
- package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
- package/dist/src/invariant-vgHWClmd.js +25 -0
- package/dist/src/{knowledgeBase-CEzQobWX.js → knowledgeBase-B3OoKIej.js} +14 -9
- package/dist/src/{knowledgeBase-Be_zyW4L.js → knowledgeBase-CYTLHOt1.js} +16 -16
- package/dist/src/{knowledgeBase-BZ41IFwq.js → knowledgeBase-D33Ty2l6.js} +14 -18
- package/dist/src/{knowledgeBase-D-5BMXlr.cjs → knowledgeBase-DOO_BM9b.cjs} +14 -15
- package/dist/src/{litellm-DnbRJ2if.js → litellm-AaeZcZQF.js} +18 -19
- package/dist/src/{litellm-hUSNM_M2.cjs → litellm-I_hbp_dc.cjs} +17 -17
- package/dist/src/{litellm-CRDqPhNI.js → litellm-NbjknEh6.js} +17 -18
- package/dist/src/{litellm-9vR8zpfU.js → litellm-TrljxD9G.js} +17 -5
- package/dist/src/{logger-CG1uZPbQ.js → logger-CT3IKMKA.js} +10 -29
- package/dist/src/{logger-B7sBeGa0.cjs → logger-Cp1GPUjj.cjs} +152 -180
- package/dist/src/logger-DLcq4dWf.js +713 -0
- package/dist/src/{logger-LSBxlt7a.js → logger-KkObSCzq.js} +13 -31
- package/dist/src/{luma-ray-4blv9iZ2.js → luma-ray-BS2_tY8L.js} +22 -21
- package/dist/src/{luma-ray-drvgdpP9.js → luma-ray-DDsjcgZZ.js} +20 -13
- package/dist/src/{luma-ray-Hm3d6VJE.cjs → luma-ray-Due0n7di.cjs} +20 -21
- package/dist/src/{luma-ray-B2__8lYH.js → luma-ray-f6I2fft-.js} +20 -23
- package/dist/src/main.js +1170 -1321
- package/dist/src/{messages-Uee41Mj5.js → messages-BS17jdMx.js} +22 -24
- package/dist/src/{messages-XhiwCbi4.cjs → messages-Bs1kC7P4.cjs} +32 -34
- package/dist/src/{messages-CGPPidQr.js → messages-D0lx5qK7.js} +22 -24
- package/dist/src/messages-ZJk778GH.js +240 -0
- package/dist/src/{meteor-BYykdXrV.js → meteor-44VjEACX.js} +3 -4
- package/dist/src/{meteor-CsopaHrH.js → meteor-D-SotUw9.js} +3 -4
- package/dist/src/{meteor-e-E-2vVl.cjs → meteor-DLZZ3osF.cjs} +3 -4
- package/dist/src/{meteor-C8lGP6P4.js → meteor-DUiCJRC-.js} +3 -4
- package/dist/src/{modelslab-yKz-ZNB4.js → modelslab-Bmni6skY.js} +17 -10
- package/dist/src/{modelslab-E9gO-bYd.js → modelslab-Bx9IrZfS.js} +18 -20
- package/dist/src/{modelslab-lUVW0cmB.cjs → modelslab-CoUX6Jc_.cjs} +17 -18
- package/dist/src/{modelslab-ClBkr8_9.js → modelslab-DRb74SP4.js} +17 -19
- package/dist/src/{nova-reel-Dk8jNpId.js → nova-reel-BfPq-0Yk.js} +20 -13
- package/dist/src/{nova-reel-D8CuO6QH.cjs → nova-reel-C_QM18Xn.cjs} +20 -21
- package/dist/src/{nova-reel-u2eF2Cxm.js → nova-reel-D_W1tjMH.js} +22 -21
- package/dist/src/{nova-reel-P9bwvtYX.js → nova-reel-bgjxilYW.js} +20 -23
- package/dist/src/{nova-sonic-CK2rAiKi.js → nova-sonic-CFb5GYhg.js} +30 -26
- package/dist/src/{nova-sonic-BaqWlkds.js → nova-sonic-DIGQNR07.js} +30 -31
- package/dist/src/{nova-sonic-yZapPLv7.js → nova-sonic-De1HW5fD.js} +31 -32
- package/dist/src/{nova-sonic-Ds1C-dpm.cjs → nova-sonic-zfcljeRp.cjs} +30 -31
- package/dist/src/{openai-DUFopMrH.cjs → openai-Cuif0GEt.cjs} +8 -9
- package/dist/src/{openai-PblZ3jUE.js → openai-DElQ-fPX.js} +3 -4
- package/dist/src/{openai-CcN1B8Sb.js → openai-DhbB7eWK.js} +3 -4
- package/dist/src/openai-j-sE2O7r.js +44 -0
- package/dist/src/{openclaw-B6qqDr_u.cjs → openclaw-CSugPYAr.cjs} +188 -130
- package/dist/src/{openclaw-A-3_loM7.js → openclaw-DiSz3I5L.js} +180 -109
- package/dist/src/{openclaw-a3lylB-V.js → openclaw-DuvJKEW5.js} +178 -124
- package/dist/src/{openclaw-COn6QzDi.js → openclaw-tiVYRtr-.js} +178 -122
- package/dist/src/opencode-sdk-0j6rTWNb.js +562 -0
- package/dist/src/opencode-sdk-B3CWY9h_.js +560 -0
- package/dist/src/opencode-sdk-BL764Jdi.cjs +564 -0
- package/dist/src/opencode-sdk-C2y6UkP2.js +560 -0
- package/dist/src/{otlpReceiver-oyf5wLGC.js → otlpReceiver-C99PPb48.js} +53 -51
- package/dist/src/{otlpReceiver-lXsYVbpj.cjs → otlpReceiver-CGq6LspY.cjs} +53 -55
- package/dist/src/{otlpReceiver-94URx7UW.js → otlpReceiver-CdNBdbsk.js} +53 -55
- package/dist/src/{otlpReceiver-BmmTiMjA.js → otlpReceiver-D89fR-rC.js} +53 -55
- package/dist/src/{providerRegistry-Cq_JK_CJ.js → providerRegistry-B0RUOLI_.js} +7 -8
- package/dist/src/{providerRegistry-DSSHjMKf.js → providerRegistry-CD8MEar9.js} +7 -8
- package/dist/src/{providerRegistry-CvHEVJad.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
- package/dist/src/providerRegistry-DM8rZYol.js +45 -0
- package/dist/src/providers-B7V0njNs.js +32 -0
- package/dist/src/providers-BEwbhv0X.js +30 -0
- package/dist/src/{providers-Iil64vk9.js → providers-BlqUifFg.js} +1543 -1676
- package/dist/src/providers-CH3C7zf7.js +30 -0
- package/dist/src/{providers-DHbjzW2e.cjs → providers-CgKOSgTR.cjs} +1896 -2029
- package/dist/src/providers-D8lF1sqW.js +33246 -0
- package/dist/src/{providers-BnFpbY_s.js → providers-Dk_6ocUX.js} +1536 -1669
- package/dist/src/providers-zyB6k_38.cjs +31 -0
- package/dist/src/{pythonUtils-CcT5LH1M.js → pythonUtils-C3py6GC1.js} +18 -19
- package/dist/src/{pythonUtils-DBbuI3QJ.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
- package/dist/src/{pythonUtils-hZ8LeQLv.js → pythonUtils-D5nxkQ0P.js} +18 -19
- package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
- package/dist/src/{quiverai-BuI0tE39.js → quiverai-BbOUOn2L.js} +8 -7
- package/dist/src/{quiverai-DCGSZt4U.js → quiverai-CIaELU_m.js} +8 -10
- package/dist/src/{quiverai-DiMVJQDz.cjs → quiverai-PdShCPox.cjs} +8 -9
- package/dist/src/{quiverai-fQNkExW4.js → quiverai-uH-dcTIr.js} +9 -11
- package/dist/src/{render-Dj1smHEb.js → render-Drod8m7K.js} +4 -5
- package/dist/src/responses-CB2jwoAr.js +660 -0
- package/dist/src/{responses-ghR3IOfy.cjs → responses-D8SBTL64.cjs} +39 -42
- package/dist/src/{responses-DOAFFENS.js → responses-DIR9Ud3j.js} +24 -27
- package/dist/src/{responses-CxzoQoBe.js → responses-WNGNYe3K.js} +24 -27
- package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
- package/dist/src/{rubyUtils-CwbGmgYN.js → rubyUtils-BUVePouc.js} +27 -20
- package/dist/src/rubyUtils-BcuGX77l.js +222 -0
- package/dist/src/{rubyUtils-DudlFZed.js → rubyUtils-Boc4HZzX.js} +18 -19
- package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
- package/dist/src/{rubyUtils-C8MhKGHb.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
- package/dist/src/{sagemaker-gmskuyre.js → sagemaker-CNBxx5CJ.js} +75 -70
- package/dist/src/{sagemaker-CcxhlOAR.js → sagemaker-CemTFp2h.js} +75 -79
- package/dist/src/{sagemaker-77zbJ2Q2.cjs → sagemaker-Cl28mZU2.cjs} +75 -76
- package/dist/src/{sagemaker-DuM71dVU.js → sagemaker-YSyBXQQh.js} +77 -77
- package/dist/src/{scanner-DJYiSXQj.js → scanner-BsBlNXNn.js} +100 -121
- package/dist/src/server/index.js +5520 -67427
- package/dist/src/{server-B5v33lvE.cjs → server-C_7Ax-hA.cjs} +57 -67
- package/dist/src/{server-BJ4m4f1D.js → server-CqzrVGpF.js} +26 -29
- package/dist/src/server-CuxBbeSY.js +229 -0
- package/dist/src/server-DA4Cyrrq.js +7 -0
- package/dist/src/server-Dulb-4-K.cjs +5 -0
- package/dist/src/{server-RV_i_YX5.js → server-VWgWb00X.js} +19 -24
- package/dist/src/{signal-BW33JuId.js → signal-4U3mfRvL.js} +9 -11
- package/dist/src/{slack-DEURelTy.cjs → slack-BmVAVGaK.cjs} +7 -8
- package/dist/src/{slack-BQYeW9L3.js → slack-DCUPTzS2.js} +8 -8
- package/dist/src/{slack-BB6yuZzp.js → slack-DOdy_kyv.js} +7 -8
- package/dist/src/{slack-2pRrhhgJ.js → slack-DXMKtA-f.js} +7 -9
- package/dist/src/store-CXGFv4aR.js +228 -0
- package/dist/src/store-CXS-Q_91.js +6 -0
- package/dist/src/{store-D7CgQzAR.cjs → store-DLlFCC4h.cjs} +44 -45
- package/dist/src/{store-DJNsD1iC.js → store-DXilxTl-.js} +40 -36
- package/dist/src/{store-s3SftUwF.js → store-Dim__MDd.js} +34 -35
- package/dist/src/store-eYkaKMwq.cjs +5 -0
- package/dist/src/{tables-DfTsNN7X.js → tables-6YKwjN9-.js} +19 -21
- package/dist/src/tables-DLJPUdUE.js +288 -0
- package/dist/src/{tables-BKTmd6u7.cjs → tables-DPi7wKeM.cjs} +89 -91
- package/dist/src/{tables-DMegD0Xf.js → tables-gftXzE9I.js} +21 -23
- package/dist/src/telemetry-BpMfhthR.cjs +5 -0
- package/dist/src/{telemetry--WAdAfVi.js → telemetry-CMrFgtPB.js} +11 -13
- package/dist/src/telemetry-Cps3mIU-.js +171 -0
- package/dist/src/{telemetry-DQgVBCAb.cjs → telemetry-DaX14Chu.cjs} +21 -24
- package/dist/src/{telemetry-BedSm-bZ.js → telemetry-Dthj_BbD.js} +17 -14
- package/dist/src/telemetry-Dw38hanS.js +7 -0
- package/dist/src/{text-oiSbwSOI.js → text-B_UCRPp2.js} +2 -2
- package/dist/src/{text-oKzCBnK6.cjs → text-CW1cyrwj.cjs} +12 -13
- package/dist/src/{text-B_IrO4GZ.js → text-Db-Wt2u2.js} +2 -2
- package/dist/src/text-TIv0QYnd.js +22 -0
- package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
- package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
- package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
- package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
- package/dist/src/{transcription-mYS9vd5v.js → transcription-BNYURcXg.js} +14 -7
- package/dist/src/{transcription-X2-B4vkX.js → transcription-B_OdaHp7.js} +14 -16
- package/dist/src/{transcription-BO1AHegO.cjs → transcription-NLVG9MT1.cjs} +14 -15
- package/dist/src/{transcription-lzBLiTFJ.js → transcription-s6A-bNrZ.js} +15 -17
- package/dist/src/{transform-B1Hi5lWS.cjs → transform-CzK1Q0zl.cjs} +24 -26
- package/dist/src/{transform-DeGlxb0D.js → transform-D5HsjduX.js} +39 -47
- package/dist/src/{transform-CYDILYDe.js → transform-DECvGmzp.js} +15 -13
- package/dist/src/transform-DTGDnAzW.js +6 -0
- package/dist/src/{transform-BEgStbHK.js → transform-DilY9wbS.js} +10 -12
- package/dist/src/{transform-D5PjiWiZ.cjs → transform-DuHvhZpj.cjs} +179 -187
- package/dist/src/transform-aa6tmVpZ.js +216 -0
- package/dist/src/transform-m3qNw4KP.cjs +5 -0
- package/dist/src/transform-uAytVuyX.js +1506 -0
- package/dist/src/{transform-Dfl89yi4.js → transform-vNucnNr0.js} +39 -47
- package/dist/src/{transformersAvailability-SZnTS3pJ.js → transformersAvailability-CEVM2GNQ.js} +2 -2
- package/dist/src/{transformersAvailability-D-glmEy7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
- package/dist/src/{transformersAvailability-CjeFXhuJ.js → transformersAvailability-D6c6ROpT.js} +2 -2
- package/dist/src/{types-DWNf48sT.cjs → types-C_7nyzr1.cjs} +538 -574
- package/dist/src/{types-CXQduE9o.js → types-Cbd8uOMq.js} +68 -100
- package/dist/src/types-CzW2QFyi.js +3288 -0
- package/dist/src/{types-C5hEkb-x.js → types-DmyIJ-sR.js} +63 -99
- package/dist/src/{util-CoQjmE3u.js → util-B3xGByQh.js} +4 -5
- package/dist/src/{util-aLhtl3fe.cjs → util-B9vlHIIh.cjs} +208 -223
- package/dist/src/{util-Du96oyYS.js → util-BHGHw5G1.js} +4 -5
- package/dist/src/{util-DQ984syk.js → util-BRYkYPTd.js} +36 -51
- package/dist/src/{util-D9eLdGfa.js → util-BV4XUC0n.js} +5 -6
- package/dist/src/util-Bv6uGDfH.js +293 -0
- package/dist/src/{util-1wWM599Z.cjs → util-BzMcevZc.cjs} +50 -51
- package/dist/src/{util-_h4pVqrz.js → util-C1CeHl-P.js} +36 -51
- package/dist/src/{util-Bm_-UMD_.js → util-CMy69ZgQ.js} +5 -6
- package/dist/src/{util-CyUdMzV0.cjs → util-DGNOS1db.cjs} +34 -35
- package/dist/src/util-Dnmk2mBQ.js +599 -0
- package/dist/src/util-ZzmqNPlg.js +1426 -0
- package/dist/src/{utils-BjLy-Q72.cjs → utils-Cz9qXqII.cjs} +29 -32
- package/dist/src/{utils-CFMn2yHW.js → utils-XiOAgly5.js} +4 -7
- package/dist/src/utils-dLokC-eR.js +94 -0
- package/dist/src/{utils-DvWMzuMx.js → utils-f2-Moju7.js} +4 -7
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +38 -38
- package/dist/src/app/assets/index-B2D0bCSI.js +0 -439
- package/dist/src/app/assets/vendor-charts-CCl15Imd.js +0 -36
- package/dist/src/cache-ChPcurj7.js +0 -6
- package/dist/src/cache-VVu_W-yg.js +0 -8
- package/dist/src/cache-YLNCFEM2.cjs +0 -6
- package/dist/src/chunk-DHDDz29n.js +0 -22
- package/dist/src/chunk-FhC4c-0y.js +0 -21
- package/dist/src/cloud-BndfXy4H.js +0 -5
- package/dist/src/eval-BhHvMY82.js +0 -17
- package/dist/src/evalResult-Dq2gFNQY.js +0 -12
- package/dist/src/evalResult-nmcP5VKH.cjs +0 -12
- package/dist/src/evalResult-trqZjVYh.js +0 -14
- package/dist/src/evaluator-CnfPstzT.js +0 -39
- package/dist/src/fetch-IDPDue6F.cjs +0 -4
- package/dist/src/fetch-hKJ-It8q.js +0 -6
- package/dist/src/fetch-ouKnrWK-.js +0 -4
- package/dist/src/graders-CQn7WUsd.cjs +0 -34
- package/dist/src/graders-DC6QAbpW.js +0 -35
- package/dist/src/graders-DUWz3Y7j.js +0 -37
- package/dist/src/opencode-sdk-4bL9n-Gk.js +0 -382
- package/dist/src/opencode-sdk-BfC2zWcR.js +0 -376
- package/dist/src/opencode-sdk-DMJyuwMg.js +0 -380
- package/dist/src/opencode-sdk-Da-9adza.cjs +0 -383
- package/dist/src/providers-CsXB2Ix-.js +0 -35
- package/dist/src/providers-DO8ltjLC.js +0 -33
- package/dist/src/providers-Dtq-xnXd.cjs +0 -33
- package/dist/src/rubyUtils-BUbcND2f.js +0 -6
- package/dist/src/rubyUtils-Cr55X_KE.js +0 -5
- package/dist/src/rubyUtils-DlIiqoYo.cjs +0 -5
- package/dist/src/server-C2eQH4Gu.js +0 -6
- package/dist/src/server-CXWycu7H.cjs +0 -6
- package/dist/src/server-Q6OGlxxT.js +0 -8
- package/dist/src/store-B3EDO9Q3.js +0 -7
- package/dist/src/store-Dl9F8aw5.js +0 -6
- package/dist/src/store-SnrGrlt9.cjs +0 -6
- package/dist/src/telemetry-BGhiPZtl.js +0 -8
- package/dist/src/telemetry-CFfiYan6.cjs +0 -6
- package/dist/src/telemetry-DHzEduxX.js +0 -6
- package/dist/src/transform-C1x1ZlMQ.cjs +0 -6
- package/dist/src/transform-DYHjFmQu.js +0 -8
- package/dist/src/transform-rmwJT5JQ.js +0 -7
- package/dist/src/transformersAvailability-eJooj0gX.js +0 -35
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
1
|
+
import { t as __exportAll } from "./chunk-DEq-mXcV.js";
|
|
2
|
+
import { _ as getEnvBool, b as getEnvString, i as logger, w as state } from "./logger-CT3IKMKA.js";
|
|
3
|
+
import { a as CloudConfig, t as fetchWithProxy } from "./fetch-Cwxnd8zz.js";
|
|
4
|
+
import { o as isLoggedIntoCloud } from "./accounts-CiBLOnA7.js";
|
|
5
|
+
import "chalk";
|
|
5
6
|
import "opener";
|
|
6
7
|
import readline from "readline";
|
|
7
|
-
|
|
8
8
|
//#region src/redteam/remoteGeneration.ts
|
|
9
9
|
/**
|
|
10
10
|
* Gets the remote generation API endpoint URL.
|
|
@@ -74,7 +74,7 @@ function getRemoteVersionUrl() {
|
|
|
74
74
|
function shouldGenerateRemote() {
|
|
75
75
|
if (neverGenerateRemote()) return false;
|
|
76
76
|
if (isLoggedIntoCloud()) return true;
|
|
77
|
-
return !getEnvString("OPENAI_API_KEY") || (
|
|
77
|
+
return !getEnvString("OPENAI_API_KEY") || (state.remote ?? false);
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
80
|
* Gets the URL for unaligned model inference (harmful content generation).
|
|
@@ -88,7 +88,6 @@ function getRemoteGenerationUrlForUnaligned() {
|
|
|
88
88
|
if (cloudConfig.isEnabled()) return cloudConfig.getApiHost() + "/api/v1/task/harmful";
|
|
89
89
|
return "https://api.promptfoo.app/api/v1/task/harmful";
|
|
90
90
|
}
|
|
91
|
-
|
|
92
91
|
//#endregion
|
|
93
92
|
//#region src/util/readline.ts
|
|
94
93
|
/**
|
|
@@ -134,9 +133,12 @@ async function promptYesNo(question, defaultYes = false) {
|
|
|
134
133
|
if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
|
|
135
134
|
return answer.trim().toLowerCase().startsWith("y");
|
|
136
135
|
}
|
|
137
|
-
|
|
138
136
|
//#endregion
|
|
139
137
|
//#region src/util/server.ts
|
|
138
|
+
var server_exports = /* @__PURE__ */ __exportAll({
|
|
139
|
+
BrowserBehavior: () => BrowserBehavior,
|
|
140
|
+
checkServerFeatureSupport: () => checkServerFeatureSupport
|
|
141
|
+
});
|
|
140
142
|
const BrowserBehavior = {
|
|
141
143
|
ASK: 0,
|
|
142
144
|
OPEN: 1,
|
|
@@ -145,14 +147,7 @@ const BrowserBehavior = {
|
|
|
145
147
|
OPEN_TO_REDTEAM_CREATE: 4,
|
|
146
148
|
OPEN_TO_EVAL_SETUP: 5
|
|
147
149
|
};
|
|
148
|
-
|
|
149
|
-
[BrowserBehavior.ASK]: "ASK",
|
|
150
|
-
[BrowserBehavior.OPEN]: "OPEN",
|
|
151
|
-
[BrowserBehavior.SKIP]: "SKIP",
|
|
152
|
-
[BrowserBehavior.OPEN_TO_REPORT]: "OPEN_TO_REPORT",
|
|
153
|
-
[BrowserBehavior.OPEN_TO_REDTEAM_CREATE]: "OPEN_TO_REDTEAM_CREATE",
|
|
154
|
-
[BrowserBehavior.OPEN_TO_EVAL_SETUP]: "OPEN_TO_EVAL_SETUP"
|
|
155
|
-
};
|
|
150
|
+
BrowserBehavior.ASK, BrowserBehavior.OPEN, BrowserBehavior.SKIP, BrowserBehavior.OPEN_TO_REPORT, BrowserBehavior.OPEN_TO_REDTEAM_CREATE, BrowserBehavior.OPEN_TO_EVAL_SETUP;
|
|
156
151
|
const featureCache = /* @__PURE__ */ new Map();
|
|
157
152
|
/**
|
|
158
153
|
* Checks if a server supports a specific feature based on build date
|
|
@@ -165,7 +160,7 @@ async function checkServerFeatureSupport(featureName, requiredBuildDate) {
|
|
|
165
160
|
if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
|
|
166
161
|
let supported = false;
|
|
167
162
|
try {
|
|
168
|
-
|
|
163
|
+
logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
|
|
169
164
|
const versionUrl = getRemoteVersionUrl();
|
|
170
165
|
if (versionUrl) {
|
|
171
166
|
const data = await (await fetchWithProxy(versionUrl, {
|
|
@@ -174,23 +169,23 @@ async function checkServerFeatureSupport(featureName, requiredBuildDate) {
|
|
|
174
169
|
})).json();
|
|
175
170
|
if (data.buildDate) {
|
|
176
171
|
supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
|
|
177
|
-
|
|
172
|
+
logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
|
|
178
173
|
} else {
|
|
179
|
-
|
|
174
|
+
logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
|
|
180
175
|
supported = false;
|
|
181
176
|
}
|
|
182
177
|
} else {
|
|
183
|
-
|
|
178
|
+
logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
|
|
184
179
|
supported = true;
|
|
185
180
|
}
|
|
186
181
|
} catch (error) {
|
|
187
|
-
|
|
182
|
+
logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
|
|
188
183
|
supported = false;
|
|
189
184
|
}
|
|
190
185
|
featureCache.set(cacheKey, supported);
|
|
191
186
|
return supported;
|
|
192
187
|
}
|
|
193
|
-
|
|
194
188
|
//#endregion
|
|
195
|
-
export { getRemoteGenerationUrlForUnaligned as a, neverGenerateRemoteForRegularEvals as c, getRemoteGenerationUrl as i, shouldGenerateRemote as l,
|
|
196
|
-
|
|
189
|
+
export { getRemoteGenerationUrlForUnaligned as a, neverGenerateRemoteForRegularEvals as c, getRemoteGenerationUrl as i, shouldGenerateRemote as l, server_exports as n, getRemoteHealthUrl as o, promptYesNo as r, neverGenerateRemote as s, checkServerFeatureSupport as t };
|
|
190
|
+
|
|
191
|
+
//# sourceMappingURL=server-VWgWb00X.js.map
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { o as
|
|
3
|
-
import { _ as getDbSignalPath } from "./tables-
|
|
2
|
+
import { o as logger } from "./logger-KkObSCzq.js";
|
|
3
|
+
import { _ as getDbSignalPath } from "./tables-gftXzE9I.js";
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import debounce from "debounce";
|
|
6
|
-
|
|
7
6
|
//#region src/util/providerResponse.ts
|
|
8
7
|
/**
|
|
9
8
|
* Extracts the actual prompt from a ProviderResponse as a string.
|
|
@@ -45,7 +44,6 @@ function getActualPrompt(response, options = {}) {
|
|
|
45
44
|
function getActualPromptWithFallback(response, originalPrompt, options = {}) {
|
|
46
45
|
return getActualPrompt(response, options) || originalPrompt;
|
|
47
46
|
}
|
|
48
|
-
|
|
49
47
|
//#endregion
|
|
50
48
|
//#region src/database/signal.ts
|
|
51
49
|
/**
|
|
@@ -60,7 +58,7 @@ function updateSignalFile(evalId) {
|
|
|
60
58
|
const content = evalId ? `${evalId}:${now.toISOString()}` : now.toISOString();
|
|
61
59
|
fs.writeFileSync(filePath, content);
|
|
62
60
|
} catch (err) {
|
|
63
|
-
|
|
61
|
+
logger.warn(`Failed to write database signal file: ${err}`);
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
/**
|
|
@@ -87,7 +85,7 @@ function readSignalEvalId() {
|
|
|
87
85
|
function ensureSignalFile() {
|
|
88
86
|
const filePath = getDbSignalPath();
|
|
89
87
|
if (!fs.existsSync(filePath)) {
|
|
90
|
-
|
|
88
|
+
logger.debug(`Creating signal file at ${filePath}`);
|
|
91
89
|
fs.writeFileSync(filePath, (/* @__PURE__ */ new Date()).toISOString());
|
|
92
90
|
}
|
|
93
91
|
}
|
|
@@ -98,21 +96,21 @@ function ensureSignalFile() {
|
|
|
98
96
|
*/
|
|
99
97
|
function setupSignalWatcher(onChange) {
|
|
100
98
|
const filePath = getDbSignalPath();
|
|
101
|
-
|
|
99
|
+
logger.debug(`Setting up file watcher on ${filePath}`);
|
|
102
100
|
ensureSignalFile();
|
|
103
101
|
try {
|
|
104
102
|
const watcher = fs.watch(filePath);
|
|
105
103
|
watcher.on("change", debounce(onChange, 250));
|
|
106
104
|
watcher.on("error", (error) => {
|
|
107
|
-
|
|
105
|
+
logger.warn(`File watcher error: ${error}`);
|
|
108
106
|
});
|
|
109
107
|
return watcher;
|
|
110
108
|
} catch (error) {
|
|
111
|
-
|
|
109
|
+
logger.warn(`Failed to set up file watcher: ${error}`);
|
|
112
110
|
throw error;
|
|
113
111
|
}
|
|
114
112
|
}
|
|
115
|
-
|
|
116
113
|
//#endregion
|
|
117
114
|
export { getActualPromptWithFallback as a, getActualPrompt as i, setupSignalWatcher as n, updateSignalFile as r, readSignalEvalId as t };
|
|
118
|
-
|
|
115
|
+
|
|
116
|
+
//# sourceMappingURL=signal-4U3mfRvL.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
const require_logger = require(
|
|
1
|
+
const require_logger = require("./logger-Cp1GPUjj.cjs");
|
|
2
2
|
let _slack_web_api = require("@slack/web-api");
|
|
3
|
-
|
|
4
3
|
//#region src/providers/slack.ts
|
|
5
4
|
var SlackProvider = class {
|
|
6
5
|
client;
|
|
@@ -56,7 +55,7 @@ var SlackProvider = class {
|
|
|
56
55
|
metadata: responseMetadata
|
|
57
56
|
};
|
|
58
57
|
} catch (error) {
|
|
59
|
-
require_logger.
|
|
58
|
+
require_logger.logger.error(`Slack provider error: ${error}`);
|
|
60
59
|
if (error?.data?.error) {
|
|
61
60
|
const slackError = error.data.error;
|
|
62
61
|
switch (slackError) {
|
|
@@ -84,7 +83,7 @@ var SlackProvider = class {
|
|
|
84
83
|
}
|
|
85
84
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
86
85
|
} catch (error) {
|
|
87
|
-
require_logger.
|
|
86
|
+
require_logger.logger.error(`Error fetching Slack messages: ${error}`);
|
|
88
87
|
throw error;
|
|
89
88
|
}
|
|
90
89
|
throw new Error(`Timeout waiting for Slack response after ${timeout}ms`);
|
|
@@ -103,7 +102,7 @@ var SlackProvider = class {
|
|
|
103
102
|
}
|
|
104
103
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
105
104
|
} catch (error) {
|
|
106
|
-
require_logger.
|
|
105
|
+
require_logger.logger.error(`Error fetching Slack messages: ${error}`);
|
|
107
106
|
throw error;
|
|
108
107
|
}
|
|
109
108
|
throw new Error(`Timeout waiting for response from user ${userId} after ${timeout}ms`);
|
|
@@ -124,13 +123,13 @@ var SlackProvider = class {
|
|
|
124
123
|
});
|
|
125
124
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
126
125
|
} catch (error) {
|
|
127
|
-
require_logger.
|
|
126
|
+
require_logger.logger.error(`Error fetching Slack messages: ${error}`);
|
|
128
127
|
throw error;
|
|
129
128
|
}
|
|
130
129
|
return responses.join("\n\n");
|
|
131
130
|
}
|
|
132
131
|
};
|
|
133
|
-
|
|
134
132
|
//#endregion
|
|
135
133
|
exports.SlackProvider = SlackProvider;
|
|
136
|
-
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=slack-BmVAVGaK.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { o as logger } from "./logger-KkObSCzq.js";
|
|
2
3
|
import { WebClient } from "@slack/web-api";
|
|
3
|
-
|
|
4
4
|
//#region src/providers/slack.ts
|
|
5
5
|
var SlackProvider = class {
|
|
6
6
|
client;
|
|
@@ -56,7 +56,7 @@ var SlackProvider = class {
|
|
|
56
56
|
metadata: responseMetadata
|
|
57
57
|
};
|
|
58
58
|
} catch (error) {
|
|
59
|
-
|
|
59
|
+
logger.error(`Slack provider error: ${error}`);
|
|
60
60
|
if (error?.data?.error) {
|
|
61
61
|
const slackError = error.data.error;
|
|
62
62
|
switch (slackError) {
|
|
@@ -84,7 +84,7 @@ var SlackProvider = class {
|
|
|
84
84
|
}
|
|
85
85
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
86
86
|
} catch (error) {
|
|
87
|
-
|
|
87
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
88
88
|
throw error;
|
|
89
89
|
}
|
|
90
90
|
throw new Error(`Timeout waiting for Slack response after ${timeout}ms`);
|
|
@@ -103,7 +103,7 @@ var SlackProvider = class {
|
|
|
103
103
|
}
|
|
104
104
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
105
105
|
} catch (error) {
|
|
106
|
-
|
|
106
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
107
107
|
throw error;
|
|
108
108
|
}
|
|
109
109
|
throw new Error(`Timeout waiting for response from user ${userId} after ${timeout}ms`);
|
|
@@ -124,13 +124,13 @@ var SlackProvider = class {
|
|
|
124
124
|
});
|
|
125
125
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
126
126
|
} catch (error) {
|
|
127
|
-
|
|
127
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
128
128
|
throw error;
|
|
129
129
|
}
|
|
130
130
|
return responses.join("\n\n");
|
|
131
131
|
}
|
|
132
132
|
};
|
|
133
|
-
|
|
134
133
|
//#endregion
|
|
135
134
|
export { SlackProvider };
|
|
136
|
-
|
|
135
|
+
|
|
136
|
+
//# sourceMappingURL=slack-DCUPTzS2.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { i as
|
|
1
|
+
import { i as logger } from "./logger-CT3IKMKA.js";
|
|
2
2
|
import { WebClient } from "@slack/web-api";
|
|
3
|
-
|
|
4
3
|
//#region src/providers/slack.ts
|
|
5
4
|
var SlackProvider = class {
|
|
6
5
|
client;
|
|
@@ -56,7 +55,7 @@ var SlackProvider = class {
|
|
|
56
55
|
metadata: responseMetadata
|
|
57
56
|
};
|
|
58
57
|
} catch (error) {
|
|
59
|
-
|
|
58
|
+
logger.error(`Slack provider error: ${error}`);
|
|
60
59
|
if (error?.data?.error) {
|
|
61
60
|
const slackError = error.data.error;
|
|
62
61
|
switch (slackError) {
|
|
@@ -84,7 +83,7 @@ var SlackProvider = class {
|
|
|
84
83
|
}
|
|
85
84
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
86
85
|
} catch (error) {
|
|
87
|
-
|
|
86
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
88
87
|
throw error;
|
|
89
88
|
}
|
|
90
89
|
throw new Error(`Timeout waiting for Slack response after ${timeout}ms`);
|
|
@@ -103,7 +102,7 @@ var SlackProvider = class {
|
|
|
103
102
|
}
|
|
104
103
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
105
104
|
} catch (error) {
|
|
106
|
-
|
|
105
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
107
106
|
throw error;
|
|
108
107
|
}
|
|
109
108
|
throw new Error(`Timeout waiting for response from user ${userId} after ${timeout}ms`);
|
|
@@ -124,13 +123,13 @@ var SlackProvider = class {
|
|
|
124
123
|
});
|
|
125
124
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
126
125
|
} catch (error) {
|
|
127
|
-
|
|
126
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
128
127
|
throw error;
|
|
129
128
|
}
|
|
130
129
|
return responses.join("\n\n");
|
|
131
130
|
}
|
|
132
131
|
};
|
|
133
|
-
|
|
134
132
|
//#endregion
|
|
135
133
|
export { SlackProvider };
|
|
136
|
-
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=slack-DOdy_kyv.js.map
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { o as logger_default } from "./logger-LSBxlt7a.js";
|
|
1
|
+
import { i as logger } from "./logger-DLcq4dWf.js";
|
|
3
2
|
import { WebClient } from "@slack/web-api";
|
|
4
|
-
|
|
5
3
|
//#region src/providers/slack.ts
|
|
6
4
|
var SlackProvider = class {
|
|
7
5
|
client;
|
|
@@ -57,7 +55,7 @@ var SlackProvider = class {
|
|
|
57
55
|
metadata: responseMetadata
|
|
58
56
|
};
|
|
59
57
|
} catch (error) {
|
|
60
|
-
|
|
58
|
+
logger.error(`Slack provider error: ${error}`);
|
|
61
59
|
if (error?.data?.error) {
|
|
62
60
|
const slackError = error.data.error;
|
|
63
61
|
switch (slackError) {
|
|
@@ -85,7 +83,7 @@ var SlackProvider = class {
|
|
|
85
83
|
}
|
|
86
84
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
87
85
|
} catch (error) {
|
|
88
|
-
|
|
86
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
89
87
|
throw error;
|
|
90
88
|
}
|
|
91
89
|
throw new Error(`Timeout waiting for Slack response after ${timeout}ms`);
|
|
@@ -104,7 +102,7 @@ var SlackProvider = class {
|
|
|
104
102
|
}
|
|
105
103
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
106
104
|
} catch (error) {
|
|
107
|
-
|
|
105
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
108
106
|
throw error;
|
|
109
107
|
}
|
|
110
108
|
throw new Error(`Timeout waiting for response from user ${userId} after ${timeout}ms`);
|
|
@@ -125,13 +123,13 @@ var SlackProvider = class {
|
|
|
125
123
|
});
|
|
126
124
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
127
125
|
} catch (error) {
|
|
128
|
-
|
|
126
|
+
logger.error(`Error fetching Slack messages: ${error}`);
|
|
129
127
|
throw error;
|
|
130
128
|
}
|
|
131
129
|
return responses.join("\n\n");
|
|
132
130
|
}
|
|
133
131
|
};
|
|
134
|
-
|
|
135
132
|
//#endregion
|
|
136
133
|
export { SlackProvider };
|
|
137
|
-
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=slack-DXMKtA-f.js.map
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { t as __exportAll } from "./chunk-DEq-mXcV.js";
|
|
2
|
+
import { i as logger } from "./logger-DLcq4dWf.js";
|
|
3
|
+
import { f as spansTable, h as getDb, m as tracesTable } from "./tables-DLJPUdUE.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
|
+
...trace,
|
|
157
|
+
spans
|
|
158
|
+
};
|
|
159
|
+
} catch (error) {
|
|
160
|
+
logger.error(`[TraceStore] Failed to get trace: ${error}`);
|
|
161
|
+
throw error;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async deleteOldTraces(retentionDays) {
|
|
165
|
+
try {
|
|
166
|
+
logger.debug(`[TraceStore] Deleting traces older than ${retentionDays} days`);
|
|
167
|
+
const db = this.getDatabase();
|
|
168
|
+
const cutoffTime = Date.now() - retentionDays * 24 * 60 * 60 * 1e3;
|
|
169
|
+
await db.delete(tracesTable).where(lt(tracesTable.createdAt, cutoffTime));
|
|
170
|
+
logger.debug(`[TraceStore] Successfully deleted traces older than ${retentionDays} days`);
|
|
171
|
+
} catch (error) {
|
|
172
|
+
logger.error(`[TraceStore] Failed to delete old traces: ${error}`);
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async getSpans(traceId, options = {}) {
|
|
177
|
+
const { earliestStartTime, maxSpans, maxDepth, includeInternalSpans = true, spanFilter, sanitizeAttributes: shouldSanitize = true } = options;
|
|
178
|
+
try {
|
|
179
|
+
logger.debug(`[TraceStore] Fetching spans for trace ${traceId}`);
|
|
180
|
+
const rows = await this.getDatabase().select().from(spansTable).where(eq(spansTable.traceId, traceId)).orderBy(asc(spansTable.startTime));
|
|
181
|
+
const spanMap = /* @__PURE__ */ new Map();
|
|
182
|
+
const depthCache = /* @__PURE__ */ new Map();
|
|
183
|
+
for (const row of rows) {
|
|
184
|
+
if (earliestStartTime && row.startTime < earliestStartTime) continue;
|
|
185
|
+
const rawAttributes = row.attributes ?? {};
|
|
186
|
+
const spanData = {
|
|
187
|
+
spanId: row.spanId,
|
|
188
|
+
parentSpanId: row.parentSpanId ?? void 0,
|
|
189
|
+
name: row.name,
|
|
190
|
+
startTime: row.startTime,
|
|
191
|
+
endTime: row.endTime ?? void 0,
|
|
192
|
+
attributes: shouldSanitize ? sanitizeAttributes(rawAttributes) : rawAttributes,
|
|
193
|
+
statusCode: row.statusCode ?? void 0,
|
|
194
|
+
statusMessage: row.statusMessage ?? void 0
|
|
195
|
+
};
|
|
196
|
+
const spanKind = deriveSpanKind({
|
|
197
|
+
...spanData,
|
|
198
|
+
attributes: rawAttributes
|
|
199
|
+
});
|
|
200
|
+
if (!includeInternalSpans && spanKind === "internal") continue;
|
|
201
|
+
if (spanFilter && spanFilter.length > 0) {
|
|
202
|
+
if (!spanFilter.some((filterName) => spanData.name.toLowerCase().includes(filterName.toLowerCase()))) continue;
|
|
203
|
+
}
|
|
204
|
+
spanMap.set(spanData.spanId, spanData);
|
|
205
|
+
}
|
|
206
|
+
let spans = Array.from(spanMap.values());
|
|
207
|
+
if (maxDepth !== void 0) spans = spans.filter((span) => computeDepth(span, spanMap, depthCache) < maxDepth);
|
|
208
|
+
if (maxSpans !== void 0) spans = spans.slice(0, maxSpans);
|
|
209
|
+
logger.debug(`[TraceStore] Returning ${spans.length} spans for trace ${traceId}`);
|
|
210
|
+
return spans;
|
|
211
|
+
} catch (error) {
|
|
212
|
+
logger.error(`[TraceStore] Failed to fetch spans for trace ${traceId}: ${error}`);
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
let traceStore = null;
|
|
218
|
+
function getTraceStore() {
|
|
219
|
+
if (!traceStore) {
|
|
220
|
+
logger.debug("[TraceStore] Creating new TraceStore instance");
|
|
221
|
+
traceStore = new TraceStore();
|
|
222
|
+
}
|
|
223
|
+
return traceStore;
|
|
224
|
+
}
|
|
225
|
+
//#endregion
|
|
226
|
+
export { store_exports as n, getTraceStore as t };
|
|
227
|
+
|
|
228
|
+
//# sourceMappingURL=store-CXGFv4aR.js.map
|