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,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as logger } from "./logger-DLcq4dWf.js";
|
|
2
|
+
import "./tables-DLJPUdUE.js";
|
|
3
|
+
import { t as getDirectory } from "./esm-CaIwzWR5.js";
|
|
4
|
+
import "./types-CzW2QFyi.js";
|
|
5
|
+
import { t as getTraceStore } from "./store-CXGFv4aR.js";
|
|
2
6
|
import path from "path";
|
|
3
7
|
import express from "express";
|
|
4
8
|
import protobuf from "protobufjs";
|
|
5
|
-
|
|
6
9
|
//#region src/tracing/protobuf.ts
|
|
7
10
|
/**
|
|
8
11
|
* OTLP Protobuf decoder for trace data
|
|
@@ -24,9 +27,9 @@ function getProtoDir() {
|
|
|
24
27
|
*/
|
|
25
28
|
async function loadProtoDefinitions() {
|
|
26
29
|
if (protoRoot) return protoRoot;
|
|
27
|
-
|
|
30
|
+
logger.debug("[Protobuf] Loading OTLP proto definitions");
|
|
28
31
|
const protoDir = getProtoDir();
|
|
29
|
-
|
|
32
|
+
logger.debug(`[Protobuf] Proto directory: ${protoDir}`);
|
|
30
33
|
try {
|
|
31
34
|
const root = new protobuf.Root();
|
|
32
35
|
root.resolvePath = (_origin, target) => {
|
|
@@ -34,10 +37,10 @@ async function loadProtoDefinitions() {
|
|
|
34
37
|
};
|
|
35
38
|
await root.load("opentelemetry/proto/collector/trace/v1/trace_service.proto");
|
|
36
39
|
protoRoot = root;
|
|
37
|
-
|
|
40
|
+
logger.debug("[Protobuf] Successfully loaded OTLP proto definitions");
|
|
38
41
|
return protoRoot;
|
|
39
42
|
} catch (error) {
|
|
40
|
-
|
|
43
|
+
logger.error(`[Protobuf] Failed to load proto definitions: ${error}`);
|
|
41
44
|
throw error;
|
|
42
45
|
}
|
|
43
46
|
}
|
|
@@ -72,14 +75,13 @@ async function decodeExportTraceServiceRequest(data) {
|
|
|
72
75
|
defaults: true,
|
|
73
76
|
arrays: true
|
|
74
77
|
});
|
|
75
|
-
|
|
78
|
+
logger.debug(`[Protobuf] Decoded ExportTraceServiceRequest with ${decoded.resourceSpans?.length || 0} resource spans`);
|
|
76
79
|
return decoded;
|
|
77
80
|
} catch (error) {
|
|
78
|
-
|
|
81
|
+
logger.error(`[Protobuf] Failed to decode ExportTraceServiceRequest: ${error}`);
|
|
79
82
|
throw new Error(`Invalid protobuf data: ${error instanceof Error ? error.message : error}`);
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
|
-
|
|
83
85
|
//#endregion
|
|
84
86
|
//#region src/tracing/otlpReceiver.ts
|
|
85
87
|
const SPAN_KIND_MAP = {
|
|
@@ -98,7 +100,7 @@ var OTLPReceiver = class {
|
|
|
98
100
|
constructor() {
|
|
99
101
|
this.app = express();
|
|
100
102
|
this.traceStore = getTraceStore();
|
|
101
|
-
|
|
103
|
+
logger.debug("[OtlpReceiver] Initializing OTLP receiver");
|
|
102
104
|
this.setupMiddleware();
|
|
103
105
|
this.setupRoutes();
|
|
104
106
|
}
|
|
@@ -111,14 +113,14 @@ var OTLPReceiver = class {
|
|
|
111
113
|
type: "application/x-protobuf",
|
|
112
114
|
limit: "10mb"
|
|
113
115
|
}));
|
|
114
|
-
|
|
116
|
+
logger.debug("[OtlpReceiver] Middleware configured for JSON and protobuf");
|
|
115
117
|
}
|
|
116
118
|
setupRoutes() {
|
|
117
119
|
this.app.post("/v1/traces", async (req, res) => {
|
|
118
120
|
const contentType = req.headers["content-type"] || "unknown";
|
|
119
121
|
const bodySize = req.body ? JSON.stringify(req.body).length : 0;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
logger.debug(`[OtlpReceiver] Received trace request: ${req.headers["content-type"]} with ${bodySize} bytes`);
|
|
123
|
+
logger.debug("[OtlpReceiver] Starting to process traces");
|
|
122
124
|
const isJson = contentType === "application/json";
|
|
123
125
|
const isProtobuf = contentType === "application/x-protobuf";
|
|
124
126
|
if (!isJson && !isProtobuf) {
|
|
@@ -128,15 +130,15 @@ var OTLPReceiver = class {
|
|
|
128
130
|
try {
|
|
129
131
|
let traces = [];
|
|
130
132
|
if (isJson) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
logger.debug("[OtlpReceiver] Parsing OTLP JSON request");
|
|
134
|
+
logger.debug(`[OtlpReceiver] Request body: ${JSON.stringify(req.body).substring(0, 500)}...`);
|
|
133
135
|
traces = this.parseOTLPJSONRequest(req.body);
|
|
134
136
|
} else if (isProtobuf) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
+
logger.debug("[OtlpReceiver] Parsing OTLP protobuf request");
|
|
138
|
+
logger.debug(`[OtlpReceiver] Request body size: ${req.body?.length || 0} bytes`);
|
|
137
139
|
traces = await this.parseOTLPProtobufRequest(req.body);
|
|
138
140
|
}
|
|
139
|
-
|
|
141
|
+
logger.debug(`[OtlpReceiver] Parsed ${traces.length} traces from request`);
|
|
140
142
|
const spansByTrace = /* @__PURE__ */ new Map();
|
|
141
143
|
const traceInfoById = /* @__PURE__ */ new Map();
|
|
142
144
|
for (const trace of traces) {
|
|
@@ -151,26 +153,26 @@ var OTLPReceiver = class {
|
|
|
151
153
|
}
|
|
152
154
|
spansByTrace.get(trace.traceId).push(trace.span);
|
|
153
155
|
}
|
|
154
|
-
|
|
156
|
+
logger.debug(`[OtlpReceiver] Grouped spans into ${spansByTrace.size} traces`);
|
|
155
157
|
for (const [traceId, info] of traceInfoById) try {
|
|
156
|
-
|
|
158
|
+
logger.debug(`[OtlpReceiver] Creating trace record for ${traceId}`);
|
|
157
159
|
await this.traceStore.createTrace({
|
|
158
160
|
traceId,
|
|
159
161
|
evaluationId: info.evaluationId || "",
|
|
160
162
|
testCaseId: info.testCaseId || ""
|
|
161
163
|
});
|
|
162
164
|
} catch (error) {
|
|
163
|
-
|
|
165
|
+
logger.debug(`[OtlpReceiver] Trace ${traceId} may already exist: ${error}`);
|
|
164
166
|
}
|
|
165
167
|
for (const [traceId, spans] of spansByTrace) {
|
|
166
|
-
|
|
168
|
+
logger.debug(`[OtlpReceiver] Storing ${spans.length} spans for trace ${traceId}`);
|
|
167
169
|
await this.traceStore.addSpans(traceId, spans, { skipTraceCheck: true });
|
|
168
170
|
}
|
|
169
171
|
res.status(200).json({ partialSuccess: {} });
|
|
170
|
-
|
|
172
|
+
logger.debug("[OtlpReceiver] Successfully processed traces");
|
|
171
173
|
} catch (error) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
+
logger.error(`[OtlpReceiver] Failed to process OTLP traces: ${error}`);
|
|
175
|
+
logger.error(`[OtlpReceiver] Error stack: ${error instanceof Error ? error.stack : "No stack"}`);
|
|
174
176
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
175
177
|
if (errorMessage.toLowerCase().includes("invalid protobuf")) {
|
|
176
178
|
res.status(400).json({ error: errorMessage });
|
|
@@ -180,7 +182,7 @@ var OTLPReceiver = class {
|
|
|
180
182
|
}
|
|
181
183
|
});
|
|
182
184
|
this.app.get("/health", (_req, res) => {
|
|
183
|
-
|
|
185
|
+
logger.debug("[OtlpReceiver] Health check requested");
|
|
184
186
|
res.status(200).json({ status: "ok" });
|
|
185
187
|
});
|
|
186
188
|
this.app.get("/v1/traces", (_req, res) => {
|
|
@@ -199,8 +201,8 @@ var OTLPReceiver = class {
|
|
|
199
201
|
});
|
|
200
202
|
});
|
|
201
203
|
this.app.use((error, _req, res, _next) => {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
+
logger.error(`[OtlpReceiver] Global error handler: ${error}`);
|
|
205
|
+
logger.error(`[OtlpReceiver] Error stack: ${error.stack}`);
|
|
204
206
|
if (error instanceof SyntaxError && "body" in error) {
|
|
205
207
|
res.status(400).json({ error: "Invalid JSON" });
|
|
206
208
|
return;
|
|
@@ -210,15 +212,15 @@ var OTLPReceiver = class {
|
|
|
210
212
|
}
|
|
211
213
|
parseOTLPJSONRequest(body) {
|
|
212
214
|
const traces = [];
|
|
213
|
-
|
|
215
|
+
logger.debug(`[OtlpReceiver] Parsing request with ${body.resourceSpans?.length || 0} resource spans`);
|
|
214
216
|
for (const resourceSpan of body.resourceSpans) {
|
|
215
217
|
const resourceAttributes = this.parseAttributes(resourceSpan.resource?.attributes);
|
|
216
|
-
|
|
218
|
+
logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes`);
|
|
217
219
|
for (const scopeSpan of resourceSpan.scopeSpans) for (const span of scopeSpan.spans) {
|
|
218
220
|
const traceId = this.convertId(span.traceId, 32);
|
|
219
221
|
const spanId = this.convertId(span.spanId, 16);
|
|
220
222
|
const parentSpanId = span.parentSpanId ? this.convertId(span.parentSpanId, 16) : void 0;
|
|
221
|
-
|
|
223
|
+
logger.debug(`[OtlpReceiver] Processing span: ${span.name} (${spanId}) in trace ${traceId}`);
|
|
222
224
|
const spanKindName = SPAN_KIND_MAP[span.kind] ?? "unspecified";
|
|
223
225
|
const attributes = {
|
|
224
226
|
...resourceAttributes,
|
|
@@ -248,15 +250,15 @@ var OTLPReceiver = class {
|
|
|
248
250
|
async parseOTLPProtobufRequest(body) {
|
|
249
251
|
const traces = [];
|
|
250
252
|
const decoded = await decodeExportTraceServiceRequest(body);
|
|
251
|
-
|
|
253
|
+
logger.debug(`[OtlpReceiver] Parsing protobuf request with ${decoded.resourceSpans?.length || 0} resource spans`);
|
|
252
254
|
for (const resourceSpan of decoded.resourceSpans || []) {
|
|
253
255
|
const resourceAttributes = this.parseDecodedAttributes(resourceSpan.resource?.attributes);
|
|
254
|
-
|
|
256
|
+
logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes from protobuf`);
|
|
255
257
|
for (const scopeSpan of resourceSpan.scopeSpans || []) for (const span of scopeSpan.spans || []) {
|
|
256
258
|
const traceId = bytesToHex(span.traceId, 32);
|
|
257
259
|
const spanId = bytesToHex(span.spanId, 16);
|
|
258
260
|
const parentSpanId = span.parentSpanId?.length ? bytesToHex(span.parentSpanId, 16) : void 0;
|
|
259
|
-
|
|
261
|
+
logger.debug(`[OtlpReceiver] Processing protobuf span: ${span.name} (${spanId}) in trace ${traceId}`);
|
|
260
262
|
const spanKindName = SPAN_KIND_MAP[span.kind ?? 0] ?? "unspecified";
|
|
261
263
|
const attributes = {
|
|
262
264
|
...resourceAttributes,
|
|
@@ -330,53 +332,53 @@ var OTLPReceiver = class {
|
|
|
330
332
|
}
|
|
331
333
|
}
|
|
332
334
|
convertId(id, expectedHexLength) {
|
|
333
|
-
|
|
335
|
+
logger.debug(`[OtlpReceiver] Converting ID: ${id} (length: ${id.length}, expected hex length: ${expectedHexLength})`);
|
|
334
336
|
if (id.length === expectedHexLength && /^[0-9a-f]+$/i.test(id)) {
|
|
335
|
-
|
|
337
|
+
logger.debug(`[OtlpReceiver] ID is already hex format`);
|
|
336
338
|
return id.toLowerCase();
|
|
337
339
|
}
|
|
338
340
|
try {
|
|
339
341
|
const buffer = Buffer.from(id, "base64");
|
|
340
342
|
const hex = buffer.toString("hex");
|
|
341
|
-
|
|
343
|
+
logger.debug(`[OtlpReceiver] Base64 decoded: ${id} -> ${hex} (${buffer.length} bytes)`);
|
|
342
344
|
const utf8String = buffer.toString("utf8");
|
|
343
345
|
if (utf8String.length === expectedHexLength && /^[0-9a-f]+$/i.test(utf8String)) {
|
|
344
|
-
|
|
346
|
+
logger.debug(`[OtlpReceiver] Detected hex string encoded as UTF-8: ${utf8String}`);
|
|
345
347
|
return utf8String.toLowerCase();
|
|
346
348
|
}
|
|
347
349
|
if (hex.length === expectedHexLength) return hex;
|
|
348
|
-
|
|
350
|
+
logger.warn(`[OtlpReceiver] Unexpected ID format: ${id} -> ${hex} (expected ${expectedHexLength} hex chars)`);
|
|
349
351
|
return id.toLowerCase();
|
|
350
352
|
} catch (error) {
|
|
351
|
-
|
|
353
|
+
logger.error(`[OtlpReceiver] Failed to convert ID: ${error}`);
|
|
352
354
|
return id.toLowerCase();
|
|
353
355
|
}
|
|
354
356
|
}
|
|
355
357
|
listen(port = 4318, host = "127.0.0.1") {
|
|
356
358
|
this.port = port;
|
|
357
|
-
|
|
359
|
+
logger.debug(`[OtlpReceiver] Starting receiver on ${host}:${port}`);
|
|
358
360
|
return new Promise((resolve, reject) => {
|
|
359
361
|
this.server = this.app.listen(port, host, () => {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
+
logger.info(`[OtlpReceiver] Listening on http://${host}:${port}`);
|
|
363
|
+
logger.debug("[OtlpReceiver] Receiver fully initialized and ready to accept traces");
|
|
362
364
|
resolve();
|
|
363
365
|
});
|
|
364
366
|
this.server.on("error", (error) => {
|
|
365
|
-
|
|
367
|
+
logger.error(`[OtlpReceiver] Failed to start: ${error}`);
|
|
366
368
|
reject(error);
|
|
367
369
|
});
|
|
368
370
|
});
|
|
369
371
|
}
|
|
370
372
|
stop() {
|
|
371
|
-
|
|
373
|
+
logger.debug("[OtlpReceiver] Stopping receiver");
|
|
372
374
|
return new Promise((resolve) => {
|
|
373
375
|
if (this.server) this.server.close(() => {
|
|
374
|
-
|
|
376
|
+
logger.info("[OtlpReceiver] Server stopped");
|
|
375
377
|
this.server = void 0;
|
|
376
378
|
resolve();
|
|
377
379
|
});
|
|
378
380
|
else {
|
|
379
|
-
|
|
381
|
+
logger.debug("[OtlpReceiver] No server to stop");
|
|
380
382
|
resolve();
|
|
381
383
|
}
|
|
382
384
|
});
|
|
@@ -391,17 +393,17 @@ function getOTLPReceiver() {
|
|
|
391
393
|
return otlpReceiver;
|
|
392
394
|
}
|
|
393
395
|
async function startOTLPReceiver(port, host) {
|
|
394
|
-
|
|
396
|
+
logger.debug("[OtlpReceiver] Starting receiver through startOTLPReceiver function");
|
|
395
397
|
await getOTLPReceiver().listen(port, host);
|
|
396
398
|
}
|
|
397
399
|
async function stopOTLPReceiver() {
|
|
398
|
-
|
|
400
|
+
logger.debug("[OtlpReceiver] Stopping receiver through stopOTLPReceiver function");
|
|
399
401
|
if (otlpReceiver) {
|
|
400
402
|
await otlpReceiver.stop();
|
|
401
403
|
otlpReceiver = null;
|
|
402
404
|
}
|
|
403
405
|
}
|
|
404
|
-
|
|
405
406
|
//#endregion
|
|
406
407
|
export { startOTLPReceiver, stopOTLPReceiver };
|
|
407
|
-
|
|
408
|
+
|
|
409
|
+
//# sourceMappingURL=otlpReceiver-C99PPb48.js.map
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
const require_logger = require(
|
|
2
|
-
const require_esm = require(
|
|
3
|
-
require(
|
|
4
|
-
require(
|
|
5
|
-
const require_store = require(
|
|
1
|
+
const require_logger = require("./logger-Cp1GPUjj.cjs");
|
|
2
|
+
const require_esm = require("./esm-CnNt7sI4.cjs");
|
|
3
|
+
require("./types-C_7nyzr1.cjs");
|
|
4
|
+
require("./tables-DPi7wKeM.cjs");
|
|
5
|
+
const require_store = require("./store-DLlFCC4h.cjs");
|
|
6
6
|
let path = require("path");
|
|
7
7
|
path = require_logger.__toESM(path);
|
|
8
8
|
let express = require("express");
|
|
9
9
|
express = require_logger.__toESM(express);
|
|
10
10
|
let protobufjs = require("protobufjs");
|
|
11
11
|
protobufjs = require_logger.__toESM(protobufjs);
|
|
12
|
-
|
|
13
12
|
//#region src/tracing/protobuf.ts
|
|
14
13
|
/**
|
|
15
14
|
* OTLP Protobuf decoder for trace data
|
|
@@ -31,9 +30,9 @@ function getProtoDir() {
|
|
|
31
30
|
*/
|
|
32
31
|
async function loadProtoDefinitions() {
|
|
33
32
|
if (protoRoot) return protoRoot;
|
|
34
|
-
require_logger.
|
|
33
|
+
require_logger.logger.debug("[Protobuf] Loading OTLP proto definitions");
|
|
35
34
|
const protoDir = getProtoDir();
|
|
36
|
-
require_logger.
|
|
35
|
+
require_logger.logger.debug(`[Protobuf] Proto directory: ${protoDir}`);
|
|
37
36
|
try {
|
|
38
37
|
const root = new protobufjs.default.Root();
|
|
39
38
|
root.resolvePath = (_origin, target) => {
|
|
@@ -41,10 +40,10 @@ async function loadProtoDefinitions() {
|
|
|
41
40
|
};
|
|
42
41
|
await root.load("opentelemetry/proto/collector/trace/v1/trace_service.proto");
|
|
43
42
|
protoRoot = root;
|
|
44
|
-
require_logger.
|
|
43
|
+
require_logger.logger.debug("[Protobuf] Successfully loaded OTLP proto definitions");
|
|
45
44
|
return protoRoot;
|
|
46
45
|
} catch (error) {
|
|
47
|
-
require_logger.
|
|
46
|
+
require_logger.logger.error(`[Protobuf] Failed to load proto definitions: ${error}`);
|
|
48
47
|
throw error;
|
|
49
48
|
}
|
|
50
49
|
}
|
|
@@ -79,14 +78,13 @@ async function decodeExportTraceServiceRequest(data) {
|
|
|
79
78
|
defaults: true,
|
|
80
79
|
arrays: true
|
|
81
80
|
});
|
|
82
|
-
require_logger.
|
|
81
|
+
require_logger.logger.debug(`[Protobuf] Decoded ExportTraceServiceRequest with ${decoded.resourceSpans?.length || 0} resource spans`);
|
|
83
82
|
return decoded;
|
|
84
83
|
} catch (error) {
|
|
85
|
-
require_logger.
|
|
84
|
+
require_logger.logger.error(`[Protobuf] Failed to decode ExportTraceServiceRequest: ${error}`);
|
|
86
85
|
throw new Error(`Invalid protobuf data: ${error instanceof Error ? error.message : error}`);
|
|
87
86
|
}
|
|
88
87
|
}
|
|
89
|
-
|
|
90
88
|
//#endregion
|
|
91
89
|
//#region src/tracing/otlpReceiver.ts
|
|
92
90
|
const SPAN_KIND_MAP = {
|
|
@@ -105,7 +103,7 @@ var OTLPReceiver = class {
|
|
|
105
103
|
constructor() {
|
|
106
104
|
this.app = (0, express.default)();
|
|
107
105
|
this.traceStore = require_store.getTraceStore();
|
|
108
|
-
require_logger.
|
|
106
|
+
require_logger.logger.debug("[OtlpReceiver] Initializing OTLP receiver");
|
|
109
107
|
this.setupMiddleware();
|
|
110
108
|
this.setupRoutes();
|
|
111
109
|
}
|
|
@@ -118,14 +116,14 @@ var OTLPReceiver = class {
|
|
|
118
116
|
type: "application/x-protobuf",
|
|
119
117
|
limit: "10mb"
|
|
120
118
|
}));
|
|
121
|
-
require_logger.
|
|
119
|
+
require_logger.logger.debug("[OtlpReceiver] Middleware configured for JSON and protobuf");
|
|
122
120
|
}
|
|
123
121
|
setupRoutes() {
|
|
124
122
|
this.app.post("/v1/traces", async (req, res) => {
|
|
125
123
|
const contentType = req.headers["content-type"] || "unknown";
|
|
126
124
|
const bodySize = req.body ? JSON.stringify(req.body).length : 0;
|
|
127
|
-
require_logger.
|
|
128
|
-
require_logger.
|
|
125
|
+
require_logger.logger.debug(`[OtlpReceiver] Received trace request: ${req.headers["content-type"]} with ${bodySize} bytes`);
|
|
126
|
+
require_logger.logger.debug("[OtlpReceiver] Starting to process traces");
|
|
129
127
|
const isJson = contentType === "application/json";
|
|
130
128
|
const isProtobuf = contentType === "application/x-protobuf";
|
|
131
129
|
if (!isJson && !isProtobuf) {
|
|
@@ -135,15 +133,15 @@ var OTLPReceiver = class {
|
|
|
135
133
|
try {
|
|
136
134
|
let traces = [];
|
|
137
135
|
if (isJson) {
|
|
138
|
-
require_logger.
|
|
139
|
-
require_logger.
|
|
136
|
+
require_logger.logger.debug("[OtlpReceiver] Parsing OTLP JSON request");
|
|
137
|
+
require_logger.logger.debug(`[OtlpReceiver] Request body: ${JSON.stringify(req.body).substring(0, 500)}...`);
|
|
140
138
|
traces = this.parseOTLPJSONRequest(req.body);
|
|
141
139
|
} else if (isProtobuf) {
|
|
142
|
-
require_logger.
|
|
143
|
-
require_logger.
|
|
140
|
+
require_logger.logger.debug("[OtlpReceiver] Parsing OTLP protobuf request");
|
|
141
|
+
require_logger.logger.debug(`[OtlpReceiver] Request body size: ${req.body?.length || 0} bytes`);
|
|
144
142
|
traces = await this.parseOTLPProtobufRequest(req.body);
|
|
145
143
|
}
|
|
146
|
-
require_logger.
|
|
144
|
+
require_logger.logger.debug(`[OtlpReceiver] Parsed ${traces.length} traces from request`);
|
|
147
145
|
const spansByTrace = /* @__PURE__ */ new Map();
|
|
148
146
|
const traceInfoById = /* @__PURE__ */ new Map();
|
|
149
147
|
for (const trace of traces) {
|
|
@@ -158,26 +156,26 @@ var OTLPReceiver = class {
|
|
|
158
156
|
}
|
|
159
157
|
spansByTrace.get(trace.traceId).push(trace.span);
|
|
160
158
|
}
|
|
161
|
-
require_logger.
|
|
159
|
+
require_logger.logger.debug(`[OtlpReceiver] Grouped spans into ${spansByTrace.size} traces`);
|
|
162
160
|
for (const [traceId, info] of traceInfoById) try {
|
|
163
|
-
require_logger.
|
|
161
|
+
require_logger.logger.debug(`[OtlpReceiver] Creating trace record for ${traceId}`);
|
|
164
162
|
await this.traceStore.createTrace({
|
|
165
163
|
traceId,
|
|
166
164
|
evaluationId: info.evaluationId || "",
|
|
167
165
|
testCaseId: info.testCaseId || ""
|
|
168
166
|
});
|
|
169
167
|
} catch (error) {
|
|
170
|
-
require_logger.
|
|
168
|
+
require_logger.logger.debug(`[OtlpReceiver] Trace ${traceId} may already exist: ${error}`);
|
|
171
169
|
}
|
|
172
170
|
for (const [traceId, spans] of spansByTrace) {
|
|
173
|
-
require_logger.
|
|
171
|
+
require_logger.logger.debug(`[OtlpReceiver] Storing ${spans.length} spans for trace ${traceId}`);
|
|
174
172
|
await this.traceStore.addSpans(traceId, spans, { skipTraceCheck: true });
|
|
175
173
|
}
|
|
176
174
|
res.status(200).json({ partialSuccess: {} });
|
|
177
|
-
require_logger.
|
|
175
|
+
require_logger.logger.debug("[OtlpReceiver] Successfully processed traces");
|
|
178
176
|
} catch (error) {
|
|
179
|
-
require_logger.
|
|
180
|
-
require_logger.
|
|
177
|
+
require_logger.logger.error(`[OtlpReceiver] Failed to process OTLP traces: ${error}`);
|
|
178
|
+
require_logger.logger.error(`[OtlpReceiver] Error stack: ${error instanceof Error ? error.stack : "No stack"}`);
|
|
181
179
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
182
180
|
if (errorMessage.toLowerCase().includes("invalid protobuf")) {
|
|
183
181
|
res.status(400).json({ error: errorMessage });
|
|
@@ -187,7 +185,7 @@ var OTLPReceiver = class {
|
|
|
187
185
|
}
|
|
188
186
|
});
|
|
189
187
|
this.app.get("/health", (_req, res) => {
|
|
190
|
-
require_logger.
|
|
188
|
+
require_logger.logger.debug("[OtlpReceiver] Health check requested");
|
|
191
189
|
res.status(200).json({ status: "ok" });
|
|
192
190
|
});
|
|
193
191
|
this.app.get("/v1/traces", (_req, res) => {
|
|
@@ -206,8 +204,8 @@ var OTLPReceiver = class {
|
|
|
206
204
|
});
|
|
207
205
|
});
|
|
208
206
|
this.app.use((error, _req, res, _next) => {
|
|
209
|
-
require_logger.
|
|
210
|
-
require_logger.
|
|
207
|
+
require_logger.logger.error(`[OtlpReceiver] Global error handler: ${error}`);
|
|
208
|
+
require_logger.logger.error(`[OtlpReceiver] Error stack: ${error.stack}`);
|
|
211
209
|
if (error instanceof SyntaxError && "body" in error) {
|
|
212
210
|
res.status(400).json({ error: "Invalid JSON" });
|
|
213
211
|
return;
|
|
@@ -217,15 +215,15 @@ var OTLPReceiver = class {
|
|
|
217
215
|
}
|
|
218
216
|
parseOTLPJSONRequest(body) {
|
|
219
217
|
const traces = [];
|
|
220
|
-
require_logger.
|
|
218
|
+
require_logger.logger.debug(`[OtlpReceiver] Parsing request with ${body.resourceSpans?.length || 0} resource spans`);
|
|
221
219
|
for (const resourceSpan of body.resourceSpans) {
|
|
222
220
|
const resourceAttributes = this.parseAttributes(resourceSpan.resource?.attributes);
|
|
223
|
-
require_logger.
|
|
221
|
+
require_logger.logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes`);
|
|
224
222
|
for (const scopeSpan of resourceSpan.scopeSpans) for (const span of scopeSpan.spans) {
|
|
225
223
|
const traceId = this.convertId(span.traceId, 32);
|
|
226
224
|
const spanId = this.convertId(span.spanId, 16);
|
|
227
225
|
const parentSpanId = span.parentSpanId ? this.convertId(span.parentSpanId, 16) : void 0;
|
|
228
|
-
require_logger.
|
|
226
|
+
require_logger.logger.debug(`[OtlpReceiver] Processing span: ${span.name} (${spanId}) in trace ${traceId}`);
|
|
229
227
|
const spanKindName = SPAN_KIND_MAP[span.kind] ?? "unspecified";
|
|
230
228
|
const attributes = {
|
|
231
229
|
...resourceAttributes,
|
|
@@ -255,15 +253,15 @@ var OTLPReceiver = class {
|
|
|
255
253
|
async parseOTLPProtobufRequest(body) {
|
|
256
254
|
const traces = [];
|
|
257
255
|
const decoded = await decodeExportTraceServiceRequest(body);
|
|
258
|
-
require_logger.
|
|
256
|
+
require_logger.logger.debug(`[OtlpReceiver] Parsing protobuf request with ${decoded.resourceSpans?.length || 0} resource spans`);
|
|
259
257
|
for (const resourceSpan of decoded.resourceSpans || []) {
|
|
260
258
|
const resourceAttributes = this.parseDecodedAttributes(resourceSpan.resource?.attributes);
|
|
261
|
-
require_logger.
|
|
259
|
+
require_logger.logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes from protobuf`);
|
|
262
260
|
for (const scopeSpan of resourceSpan.scopeSpans || []) for (const span of scopeSpan.spans || []) {
|
|
263
261
|
const traceId = bytesToHex(span.traceId, 32);
|
|
264
262
|
const spanId = bytesToHex(span.spanId, 16);
|
|
265
263
|
const parentSpanId = span.parentSpanId?.length ? bytesToHex(span.parentSpanId, 16) : void 0;
|
|
266
|
-
require_logger.
|
|
264
|
+
require_logger.logger.debug(`[OtlpReceiver] Processing protobuf span: ${span.name} (${spanId}) in trace ${traceId}`);
|
|
267
265
|
const spanKindName = SPAN_KIND_MAP[span.kind ?? 0] ?? "unspecified";
|
|
268
266
|
const attributes = {
|
|
269
267
|
...resourceAttributes,
|
|
@@ -337,53 +335,53 @@ var OTLPReceiver = class {
|
|
|
337
335
|
}
|
|
338
336
|
}
|
|
339
337
|
convertId(id, expectedHexLength) {
|
|
340
|
-
require_logger.
|
|
338
|
+
require_logger.logger.debug(`[OtlpReceiver] Converting ID: ${id} (length: ${id.length}, expected hex length: ${expectedHexLength})`);
|
|
341
339
|
if (id.length === expectedHexLength && /^[0-9a-f]+$/i.test(id)) {
|
|
342
|
-
require_logger.
|
|
340
|
+
require_logger.logger.debug(`[OtlpReceiver] ID is already hex format`);
|
|
343
341
|
return id.toLowerCase();
|
|
344
342
|
}
|
|
345
343
|
try {
|
|
346
344
|
const buffer = Buffer.from(id, "base64");
|
|
347
345
|
const hex = buffer.toString("hex");
|
|
348
|
-
require_logger.
|
|
346
|
+
require_logger.logger.debug(`[OtlpReceiver] Base64 decoded: ${id} -> ${hex} (${buffer.length} bytes)`);
|
|
349
347
|
const utf8String = buffer.toString("utf8");
|
|
350
348
|
if (utf8String.length === expectedHexLength && /^[0-9a-f]+$/i.test(utf8String)) {
|
|
351
|
-
require_logger.
|
|
349
|
+
require_logger.logger.debug(`[OtlpReceiver] Detected hex string encoded as UTF-8: ${utf8String}`);
|
|
352
350
|
return utf8String.toLowerCase();
|
|
353
351
|
}
|
|
354
352
|
if (hex.length === expectedHexLength) return hex;
|
|
355
|
-
require_logger.
|
|
353
|
+
require_logger.logger.warn(`[OtlpReceiver] Unexpected ID format: ${id} -> ${hex} (expected ${expectedHexLength} hex chars)`);
|
|
356
354
|
return id.toLowerCase();
|
|
357
355
|
} catch (error) {
|
|
358
|
-
require_logger.
|
|
356
|
+
require_logger.logger.error(`[OtlpReceiver] Failed to convert ID: ${error}`);
|
|
359
357
|
return id.toLowerCase();
|
|
360
358
|
}
|
|
361
359
|
}
|
|
362
360
|
listen(port = 4318, host = "127.0.0.1") {
|
|
363
361
|
this.port = port;
|
|
364
|
-
require_logger.
|
|
362
|
+
require_logger.logger.debug(`[OtlpReceiver] Starting receiver on ${host}:${port}`);
|
|
365
363
|
return new Promise((resolve, reject) => {
|
|
366
364
|
this.server = this.app.listen(port, host, () => {
|
|
367
|
-
require_logger.
|
|
368
|
-
require_logger.
|
|
365
|
+
require_logger.logger.info(`[OtlpReceiver] Listening on http://${host}:${port}`);
|
|
366
|
+
require_logger.logger.debug("[OtlpReceiver] Receiver fully initialized and ready to accept traces");
|
|
369
367
|
resolve();
|
|
370
368
|
});
|
|
371
369
|
this.server.on("error", (error) => {
|
|
372
|
-
require_logger.
|
|
370
|
+
require_logger.logger.error(`[OtlpReceiver] Failed to start: ${error}`);
|
|
373
371
|
reject(error);
|
|
374
372
|
});
|
|
375
373
|
});
|
|
376
374
|
}
|
|
377
375
|
stop() {
|
|
378
|
-
require_logger.
|
|
376
|
+
require_logger.logger.debug("[OtlpReceiver] Stopping receiver");
|
|
379
377
|
return new Promise((resolve) => {
|
|
380
378
|
if (this.server) this.server.close(() => {
|
|
381
|
-
require_logger.
|
|
379
|
+
require_logger.logger.info("[OtlpReceiver] Server stopped");
|
|
382
380
|
this.server = void 0;
|
|
383
381
|
resolve();
|
|
384
382
|
});
|
|
385
383
|
else {
|
|
386
|
-
require_logger.
|
|
384
|
+
require_logger.logger.debug("[OtlpReceiver] No server to stop");
|
|
387
385
|
resolve();
|
|
388
386
|
}
|
|
389
387
|
});
|
|
@@ -398,18 +396,18 @@ function getOTLPReceiver() {
|
|
|
398
396
|
return otlpReceiver;
|
|
399
397
|
}
|
|
400
398
|
async function startOTLPReceiver(port, host) {
|
|
401
|
-
require_logger.
|
|
399
|
+
require_logger.logger.debug("[OtlpReceiver] Starting receiver through startOTLPReceiver function");
|
|
402
400
|
await getOTLPReceiver().listen(port, host);
|
|
403
401
|
}
|
|
404
402
|
async function stopOTLPReceiver() {
|
|
405
|
-
require_logger.
|
|
403
|
+
require_logger.logger.debug("[OtlpReceiver] Stopping receiver through stopOTLPReceiver function");
|
|
406
404
|
if (otlpReceiver) {
|
|
407
405
|
await otlpReceiver.stop();
|
|
408
406
|
otlpReceiver = null;
|
|
409
407
|
}
|
|
410
408
|
}
|
|
411
|
-
|
|
412
409
|
//#endregion
|
|
413
410
|
exports.startOTLPReceiver = startOTLPReceiver;
|
|
414
411
|
exports.stopOTLPReceiver = stopOTLPReceiver;
|
|
415
|
-
|
|
412
|
+
|
|
413
|
+
//# sourceMappingURL=otlpReceiver-CGq6LspY.cjs.map
|