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.
Files changed (355) hide show
  1. package/README.md +1 -1
  2. package/dist/src/{ListApp-8WOe2nT6.js → ListApp-Du7YVwj5.js} +2 -4
  3. package/dist/src/accounts-B0pgC1oV.js +206 -0
  4. package/dist/src/{accounts-DVINui-2.js → accounts-Bm2D8Db9.js} +39 -34
  5. package/dist/src/{accounts-CPDRAMND.js → accounts-CiBLOnA7.js} +38 -33
  6. package/dist/src/{accounts-Fl2J3_Fu.cjs → accounts-gtkH-5KX.cjs} +77 -78
  7. package/dist/src/{agentic-utils-D922n6mm.js → agentic-utils-DS1g3GLF.js} +9 -10
  8. package/dist/src/{agents-BcsN_BgB.js → agents-9qiOy0ho.js} +16 -12
  9. package/dist/src/{agents-BXLmVsxR.js → agents-CBr9A01V.js} +37 -37
  10. package/dist/src/{agents-pMfppv9Z.js → agents-CmvBq8LV.js} +16 -18
  11. package/dist/src/{agents-hqgSV-3o.js → agents-D__IdAlg.js} +39 -40
  12. package/dist/src/{agents-BO2n8Z0d.cjs → agents-DbRtpYxR.cjs} +37 -40
  13. package/dist/src/{agents-BdUTAwi-.js → agents-DgF2zDag.js} +37 -42
  14. package/dist/src/{agents-DgJf2-ez.cjs → agents-Di9DKPzn.cjs} +16 -17
  15. package/dist/src/{agents-DNvSH78i.js → agents-cLXA8a_8.js} +17 -19
  16. package/dist/src/{aimlapi-DtgPI0nE.js → aimlapi-B4rcnZgv.js} +15 -17
  17. package/dist/src/{aimlapi-BE_Tg9Fl.cjs → aimlapi-BvlNH0gr.cjs} +15 -16
  18. package/dist/src/{aimlapi-DOib86oE.js → aimlapi-CnkC2HqE.js} +16 -18
  19. package/dist/src/{aimlapi-DTPACCB1.js → aimlapi-DHJU_kcV.js} +15 -4
  20. package/dist/src/app/assets/index-4LKxG2CG.js +439 -0
  21. package/dist/src/app/assets/{index-NCn4eVBv.css → index-C3zcsZFQ.css} +1 -1
  22. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +36 -0
  23. package/dist/src/app/index.html +3 -3
  24. package/dist/src/app/tsconfig.app.tsbuildinfo +1 -1
  25. package/dist/src/{audio-BnRUGAm_.js → audio-Bkv46et0.js} +6 -5
  26. package/dist/src/{audio-Cwo68yZS.cjs → audio-CGMyULza.cjs} +6 -7
  27. package/dist/src/{audio-MSRki4JU.js → audio-ClI_AFre.js} +6 -8
  28. package/dist/src/{audio-BRYU0BFo.js → audio-Dz3z7s3J.js} +7 -9
  29. package/dist/src/{base-pGVmXNl4.cjs → base-CGrhspbK.cjs} +36 -38
  30. package/dist/src/{base-h961VXYk.js → base-CpjcHe4e.js} +11 -13
  31. package/dist/src/base-DLKtKMFh.js +193 -0
  32. package/dist/src/{base-XB2tDJrB.js → base-Dy1V8--Z.js} +11 -13
  33. package/dist/src/blobs-BDbfYdrJ.js +236 -0
  34. package/dist/src/{blobs-CR5C4Ihh.js → blobs-CBO20krR.js} +9 -12
  35. package/dist/src/{blobs-BM_e6hCa.js → blobs-CMHN0Qcz.js} +9 -12
  36. package/dist/src/{blobs-B-KQAFhX.cjs → blobs-D23XLin-.cjs} +34 -37
  37. package/dist/src/{cache-jsiwsAJv.js → cache-BVeDlD87.js} +132 -117
  38. package/dist/src/{cache-CIpsoBZR.js → cache-C4Nxf52C.js} +132 -118
  39. package/dist/src/cache-CeUpFm3M.cjs +5 -0
  40. package/dist/src/{cache-BTVYfbka.cjs → cache-Dh5WtQps.cjs} +182 -168
  41. package/dist/src/cache-i1P6crbO.js +756 -0
  42. package/dist/src/cache-n-RCJ-hL.js +6 -0
  43. package/dist/src/{chat-BcPjZXIp.js → chat-BiKyneZl.js} +45 -46
  44. package/dist/src/{chat-D31K7C4u.cjs → chat-C1Qst7jL.cjs} +20 -21
  45. package/dist/src/{chat-B84t99NW.js → chat-C2jrdPMx.js} +20 -9
  46. package/dist/src/{chat-BE44YOc6.cjs → chat-CgF-J-Jj.cjs} +65 -66
  47. package/dist/src/{chat-DwWifjxi.js → chat-CzkrVDfz.js} +20 -22
  48. package/dist/src/chat-DJIw17u0.js +766 -0
  49. package/dist/src/{chat-CcUCysjU.js → chat-DqxYYtWA.js} +45 -46
  50. package/dist/src/{chat-DZM2GUHO.js → chat-qmatte1u.js} +21 -23
  51. package/dist/src/{chatkit-D67HS_0b.js → chatkit-65VXf5SR.js} +58 -58
  52. package/dist/src/{chatkit-DAB_qfzI.js → chatkit-Be-Q-a9F.js} +58 -60
  53. package/dist/src/{chatkit-Biqb_wsD.js → chatkit-BxFvW8KY.js} +58 -60
  54. package/dist/src/{chatkit-PGG4ZYIn.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
  55. package/dist/src/chunk-DEq-mXcV.js +15 -0
  56. package/dist/src/chunk-DRamLcfz.js +16 -0
  57. package/dist/src/{claude-agent-sdk-SVM6AdBu.js → claude-agent-sdk-Apiy0iaz.js} +31 -31
  58. package/dist/src/{claude-agent-sdk-C-IOTPfo.js → claude-agent-sdk-D2bJee9S.js} +31 -29
  59. package/dist/src/{claude-agent-sdk-C9SiaQub.cjs → claude-agent-sdk-D9Z5Pr9X.cjs} +31 -28
  60. package/dist/src/{claude-agent-sdk-CiluSyW1.js → claude-agent-sdk-DfCoW0E6.js} +33 -20
  61. package/dist/src/cloud-BBh91EUK.js +4 -0
  62. package/dist/src/{cloud-CZ-q9Ier.js → cloud-C0dlstV_.js} +7 -9
  63. package/dist/src/{cloudflare-ai-BahKHyhh.js → cloudflare-ai-8TDxHR0x.js} +16 -18
  64. package/dist/src/{cloudflare-ai-v_qZD6_q.js → cloudflare-ai-BxAGvfju.js} +17 -19
  65. package/dist/src/{cloudflare-ai-Dfahv5SY.cjs → cloudflare-ai-CknbZ5LJ.cjs} +16 -17
  66. package/dist/src/{cloudflare-ai-Dxyt50Nl.js → cloudflare-ai-g7PB6VHR.js} +16 -4
  67. package/dist/src/{cloudflare-gateway-Bi_FpOFy.js → cloudflare-gateway-B9HWA5wf.js} +23 -23
  68. package/dist/src/{cloudflare-gateway-BPWoZIzJ.cjs → cloudflare-gateway-BSnDmHYo.cjs} +21 -22
  69. package/dist/src/{cloudflare-gateway-C0guUNwk.js → cloudflare-gateway-CKDb4dJ8.js} +26 -14
  70. package/dist/src/{cloudflare-gateway-btS7h1OZ.js → cloudflare-gateway-CP9QEWYS.js} +21 -25
  71. package/dist/src/{codex-sdk-DSxAnbfT.js → codex-sdk-C6UMlxwV.js} +28 -29
  72. package/dist/src/{codex-sdk-IYVi9fuM.js → codex-sdk-DUwKWezN.js} +28 -27
  73. package/dist/src/{codex-sdk-DulY0ZRq.js → codex-sdk-GGAw0qbD.js} +28 -29
  74. package/dist/src/{codex-sdk-DFKMtAyf.cjs → codex-sdk-fAO0c3yA.cjs} +28 -29
  75. package/dist/src/{cometapi-DzrR3SR_.js → cometapi-BL9yvj_f.js} +16 -4
  76. package/dist/src/{cometapi-DIO64tf4.cjs → cometapi-C4xSqeID.cjs} +21 -22
  77. package/dist/src/{cometapi-C9EEpJzT.js → cometapi-CUQq3H_a.js} +21 -24
  78. package/dist/src/{cometapi-DkNBMk0G.js → cometapi-DFNiKmSz.js} +17 -19
  79. package/dist/src/{completion-CG29bfKX.js → completion-5MzrpJxT.js} +11 -13
  80. package/dist/src/{completion-CCRT4kX1.cjs → completion-CM6oK8PS.cjs} +21 -23
  81. package/dist/src/{completion-Bgf1VJoq.js → completion-DZ083F31.js} +11 -13
  82. package/dist/src/completion-qRoZAYRB.js +120 -0
  83. package/dist/src/{createHash-Dw_iLu31.js → createHash-CTQmL3G2.js} +2 -3
  84. package/dist/src/{createHash-CYQy4YeL.cjs → createHash-CfZSc0b4.cjs} +13 -14
  85. package/dist/src/{createHash-CJcfskIZ.js → createHash-Da8fMwqB.js} +2 -3
  86. package/dist/src/createHash-DmPQkvBh.js +15 -0
  87. package/dist/src/{docker-D-ayp2FW.js → docker-Bb5dcxr8.js} +18 -20
  88. package/dist/src/{docker-B81N0t4e.js → docker-BvfL2BrW.js} +19 -21
  89. package/dist/src/{docker-DNcLR4Ig.cjs → docker-DcF2pRrj.cjs} +18 -19
  90. package/dist/src/{docker-egERKxCF.js → docker-ExVyLp0S.js} +18 -7
  91. package/dist/src/entrypoint.js +2 -3
  92. package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
  93. package/dist/src/{esm-B9dPm_BF.js → esm-C03C-mv3.js} +17 -20
  94. package/dist/src/{esm-D2pZ87fL.js → esm-CaIwzWR5.js} +18 -21
  95. package/dist/src/esm-Cd1AjG1D.js +379 -0
  96. package/dist/src/{esm-Ct-Joyue.cjs → esm-CnNt7sI4.cjs} +47 -49
  97. package/dist/src/eval-B3r2CVXr.js +15 -0
  98. package/dist/src/{eval-C-Nr6wX_.js → eval-Dg2nG4v2.js} +47 -54
  99. package/dist/src/evalResult-5xwYnECe.js +12 -0
  100. package/dist/src/evalResult-71lY93Kj.cjs +10 -0
  101. package/dist/src/{evalResult-DXMWJ3sx.js → evalResult-BBRNtX4I.js} +10 -11
  102. package/dist/src/{evalResult-4BzI2tmj.js → evalResult-BDMqrapS.js} +16 -12
  103. package/dist/src/evalResult-Dx5P5cIv.js +10 -0
  104. package/dist/src/{evalResult-CX8wQecI.cjs → evalResult-fuaI8HkH.cjs} +20 -21
  105. package/dist/src/{evaluator-8aGyV12L.js → evaluator-BhoWwp5b.js} +211 -235
  106. package/dist/src/evaluator-Jx6bRZV6.js +36 -0
  107. package/dist/src/{extractor-V5x_m1i0.js → extractor-C0EVHewb.js} +22 -24
  108. package/dist/src/extractor-D25qpmGX.js +374 -0
  109. package/dist/src/{extractor-CD5yKL-G.js → extractor-DReVID0K.js} +22 -24
  110. package/dist/src/{extractor-C031XmTA.cjs → extractor-pYLLi3wS.cjs} +37 -39
  111. package/dist/src/{fetch-BmbD-v1L.cjs → fetch-BPkYtG8K.cjs} +244 -277
  112. package/dist/src/fetch-BxNb_Lp3.js +5 -0
  113. package/dist/src/{fetch-D3OHf-lV.js → fetch-Cwxnd8zz.js} +36 -44
  114. package/dist/src/{fetch-CXZI9RRr.js → fetch-Dxpd4_sr.js} +23 -35
  115. package/dist/src/fetch-HaqdX7U1.js +780 -0
  116. package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
  117. package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
  118. package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
  119. package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
  120. package/dist/src/{formatDuration-CdevI3An.js → formatDuration-DgBVMN65.js} +2 -2
  121. package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
  122. package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
  123. package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
  124. package/dist/src/{genaiTracer-Dres3qrN.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
  125. package/dist/src/{graders--1y2u9HO.js → graders-BTeBGqjJ.js} +349 -397
  126. package/dist/src/graders-B_pgMLS2.js +34 -0
  127. package/dist/src/{graders-DTeBrzWp.js → graders-Bj_Odv7c.js} +349 -397
  128. package/dist/src/graders-DErokPDO.cjs +32 -0
  129. package/dist/src/graders-DP7KFFo-.js +13466 -0
  130. package/dist/src/graders-DR_uNe54.js +32 -0
  131. package/dist/src/{graders-DohM2dir.cjs → graders-DU49_J8Y.cjs} +684 -732
  132. package/dist/src/graders-w3176Wz-.js +32 -0
  133. package/dist/src/{image-B0U4Hqll.js → image-B02ogr_b.js} +7 -9
  134. package/dist/src/{image-DmE-niFE.js → image-B0h9VEMc.js} +6 -5
  135. package/dist/src/{image-CuKHuccK.cjs → image-BLmROtN3.cjs} +29 -30
  136. package/dist/src/{image-DNEIf_aI.js → image-Bb4vWQLM.js} +6 -8
  137. package/dist/src/{image-DpKl2F15.cjs → image-C1madmKh.cjs} +6 -7
  138. package/dist/src/{image-C3wHC9_h.js → image-CHfWvljl.js} +9 -10
  139. package/dist/src/{image-O1u4bCFg.js → image-DS-o-0ph.js} +9 -10
  140. package/dist/src/image-Dpxa1Jt6.js +257 -0
  141. package/dist/src/index.cjs +615 -695
  142. package/dist/src/index.d.cts +271 -7
  143. package/dist/src/index.d.ts +271 -3
  144. package/dist/src/index.js +580 -664
  145. package/dist/src/{interactiveCheck-Bxj1Swex.js → interactiveCheck-BgLZUIt3.js} +7 -8
  146. package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
  147. package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
  148. package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
  149. package/dist/src/invariant-vgHWClmd.js +25 -0
  150. package/dist/src/{knowledgeBase-CEzQobWX.js → knowledgeBase-B3OoKIej.js} +14 -9
  151. package/dist/src/{knowledgeBase-Be_zyW4L.js → knowledgeBase-CYTLHOt1.js} +16 -16
  152. package/dist/src/{knowledgeBase-BZ41IFwq.js → knowledgeBase-D33Ty2l6.js} +14 -18
  153. package/dist/src/{knowledgeBase-D-5BMXlr.cjs → knowledgeBase-DOO_BM9b.cjs} +14 -15
  154. package/dist/src/{litellm-DnbRJ2if.js → litellm-AaeZcZQF.js} +18 -19
  155. package/dist/src/{litellm-hUSNM_M2.cjs → litellm-I_hbp_dc.cjs} +17 -17
  156. package/dist/src/{litellm-CRDqPhNI.js → litellm-NbjknEh6.js} +17 -18
  157. package/dist/src/{litellm-9vR8zpfU.js → litellm-TrljxD9G.js} +17 -5
  158. package/dist/src/{logger-CG1uZPbQ.js → logger-CT3IKMKA.js} +10 -29
  159. package/dist/src/{logger-B7sBeGa0.cjs → logger-Cp1GPUjj.cjs} +152 -180
  160. package/dist/src/logger-DLcq4dWf.js +713 -0
  161. package/dist/src/{logger-LSBxlt7a.js → logger-KkObSCzq.js} +13 -31
  162. package/dist/src/{luma-ray-4blv9iZ2.js → luma-ray-BS2_tY8L.js} +22 -21
  163. package/dist/src/{luma-ray-drvgdpP9.js → luma-ray-DDsjcgZZ.js} +20 -13
  164. package/dist/src/{luma-ray-Hm3d6VJE.cjs → luma-ray-Due0n7di.cjs} +20 -21
  165. package/dist/src/{luma-ray-B2__8lYH.js → luma-ray-f6I2fft-.js} +20 -23
  166. package/dist/src/main.js +1170 -1321
  167. package/dist/src/{messages-Uee41Mj5.js → messages-BS17jdMx.js} +22 -24
  168. package/dist/src/{messages-XhiwCbi4.cjs → messages-Bs1kC7P4.cjs} +32 -34
  169. package/dist/src/{messages-CGPPidQr.js → messages-D0lx5qK7.js} +22 -24
  170. package/dist/src/messages-ZJk778GH.js +240 -0
  171. package/dist/src/{meteor-BYykdXrV.js → meteor-44VjEACX.js} +3 -4
  172. package/dist/src/{meteor-CsopaHrH.js → meteor-D-SotUw9.js} +3 -4
  173. package/dist/src/{meteor-e-E-2vVl.cjs → meteor-DLZZ3osF.cjs} +3 -4
  174. package/dist/src/{meteor-C8lGP6P4.js → meteor-DUiCJRC-.js} +3 -4
  175. package/dist/src/{modelslab-yKz-ZNB4.js → modelslab-Bmni6skY.js} +17 -10
  176. package/dist/src/{modelslab-E9gO-bYd.js → modelslab-Bx9IrZfS.js} +18 -20
  177. package/dist/src/{modelslab-lUVW0cmB.cjs → modelslab-CoUX6Jc_.cjs} +17 -18
  178. package/dist/src/{modelslab-ClBkr8_9.js → modelslab-DRb74SP4.js} +17 -19
  179. package/dist/src/{nova-reel-Dk8jNpId.js → nova-reel-BfPq-0Yk.js} +20 -13
  180. package/dist/src/{nova-reel-D8CuO6QH.cjs → nova-reel-C_QM18Xn.cjs} +20 -21
  181. package/dist/src/{nova-reel-u2eF2Cxm.js → nova-reel-D_W1tjMH.js} +22 -21
  182. package/dist/src/{nova-reel-P9bwvtYX.js → nova-reel-bgjxilYW.js} +20 -23
  183. package/dist/src/{nova-sonic-CK2rAiKi.js → nova-sonic-CFb5GYhg.js} +30 -26
  184. package/dist/src/{nova-sonic-BaqWlkds.js → nova-sonic-DIGQNR07.js} +30 -31
  185. package/dist/src/{nova-sonic-yZapPLv7.js → nova-sonic-De1HW5fD.js} +31 -32
  186. package/dist/src/{nova-sonic-Ds1C-dpm.cjs → nova-sonic-zfcljeRp.cjs} +30 -31
  187. package/dist/src/{openai-DUFopMrH.cjs → openai-Cuif0GEt.cjs} +8 -9
  188. package/dist/src/{openai-PblZ3jUE.js → openai-DElQ-fPX.js} +3 -4
  189. package/dist/src/{openai-CcN1B8Sb.js → openai-DhbB7eWK.js} +3 -4
  190. package/dist/src/openai-j-sE2O7r.js +44 -0
  191. package/dist/src/{openclaw-B6qqDr_u.cjs → openclaw-CSugPYAr.cjs} +188 -130
  192. package/dist/src/{openclaw-A-3_loM7.js → openclaw-DiSz3I5L.js} +180 -109
  193. package/dist/src/{openclaw-a3lylB-V.js → openclaw-DuvJKEW5.js} +178 -124
  194. package/dist/src/{openclaw-COn6QzDi.js → openclaw-tiVYRtr-.js} +178 -122
  195. package/dist/src/opencode-sdk-0j6rTWNb.js +562 -0
  196. package/dist/src/opencode-sdk-B3CWY9h_.js +560 -0
  197. package/dist/src/opencode-sdk-BL764Jdi.cjs +564 -0
  198. package/dist/src/opencode-sdk-C2y6UkP2.js +560 -0
  199. package/dist/src/{otlpReceiver-oyf5wLGC.js → otlpReceiver-C99PPb48.js} +53 -51
  200. package/dist/src/{otlpReceiver-lXsYVbpj.cjs → otlpReceiver-CGq6LspY.cjs} +53 -55
  201. package/dist/src/{otlpReceiver-94URx7UW.js → otlpReceiver-CdNBdbsk.js} +53 -55
  202. package/dist/src/{otlpReceiver-BmmTiMjA.js → otlpReceiver-D89fR-rC.js} +53 -55
  203. package/dist/src/{providerRegistry-Cq_JK_CJ.js → providerRegistry-B0RUOLI_.js} +7 -8
  204. package/dist/src/{providerRegistry-DSSHjMKf.js → providerRegistry-CD8MEar9.js} +7 -8
  205. package/dist/src/{providerRegistry-CvHEVJad.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
  206. package/dist/src/providerRegistry-DM8rZYol.js +45 -0
  207. package/dist/src/providers-B7V0njNs.js +32 -0
  208. package/dist/src/providers-BEwbhv0X.js +30 -0
  209. package/dist/src/{providers-Iil64vk9.js → providers-BlqUifFg.js} +1543 -1676
  210. package/dist/src/providers-CH3C7zf7.js +30 -0
  211. package/dist/src/{providers-DHbjzW2e.cjs → providers-CgKOSgTR.cjs} +1896 -2029
  212. package/dist/src/providers-D8lF1sqW.js +33246 -0
  213. package/dist/src/{providers-BnFpbY_s.js → providers-Dk_6ocUX.js} +1536 -1669
  214. package/dist/src/providers-zyB6k_38.cjs +31 -0
  215. package/dist/src/{pythonUtils-CcT5LH1M.js → pythonUtils-C3py6GC1.js} +18 -19
  216. package/dist/src/{pythonUtils-DBbuI3QJ.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
  217. package/dist/src/{pythonUtils-hZ8LeQLv.js → pythonUtils-D5nxkQ0P.js} +18 -19
  218. package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
  219. package/dist/src/{quiverai-BuI0tE39.js → quiverai-BbOUOn2L.js} +8 -7
  220. package/dist/src/{quiverai-DCGSZt4U.js → quiverai-CIaELU_m.js} +8 -10
  221. package/dist/src/{quiverai-DiMVJQDz.cjs → quiverai-PdShCPox.cjs} +8 -9
  222. package/dist/src/{quiverai-fQNkExW4.js → quiverai-uH-dcTIr.js} +9 -11
  223. package/dist/src/{render-Dj1smHEb.js → render-Drod8m7K.js} +4 -5
  224. package/dist/src/responses-CB2jwoAr.js +660 -0
  225. package/dist/src/{responses-ghR3IOfy.cjs → responses-D8SBTL64.cjs} +39 -42
  226. package/dist/src/{responses-DOAFFENS.js → responses-DIR9Ud3j.js} +24 -27
  227. package/dist/src/{responses-CxzoQoBe.js → responses-WNGNYe3K.js} +24 -27
  228. package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
  229. package/dist/src/{rubyUtils-CwbGmgYN.js → rubyUtils-BUVePouc.js} +27 -20
  230. package/dist/src/rubyUtils-BcuGX77l.js +222 -0
  231. package/dist/src/{rubyUtils-DudlFZed.js → rubyUtils-Boc4HZzX.js} +18 -19
  232. package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
  233. package/dist/src/{rubyUtils-C8MhKGHb.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
  234. package/dist/src/{sagemaker-gmskuyre.js → sagemaker-CNBxx5CJ.js} +75 -70
  235. package/dist/src/{sagemaker-CcxhlOAR.js → sagemaker-CemTFp2h.js} +75 -79
  236. package/dist/src/{sagemaker-77zbJ2Q2.cjs → sagemaker-Cl28mZU2.cjs} +75 -76
  237. package/dist/src/{sagemaker-DuM71dVU.js → sagemaker-YSyBXQQh.js} +77 -77
  238. package/dist/src/{scanner-DJYiSXQj.js → scanner-BsBlNXNn.js} +100 -121
  239. package/dist/src/server/index.js +5520 -67427
  240. package/dist/src/{server-B5v33lvE.cjs → server-C_7Ax-hA.cjs} +57 -67
  241. package/dist/src/{server-BJ4m4f1D.js → server-CqzrVGpF.js} +26 -29
  242. package/dist/src/server-CuxBbeSY.js +229 -0
  243. package/dist/src/server-DA4Cyrrq.js +7 -0
  244. package/dist/src/server-Dulb-4-K.cjs +5 -0
  245. package/dist/src/{server-RV_i_YX5.js → server-VWgWb00X.js} +19 -24
  246. package/dist/src/{signal-BW33JuId.js → signal-4U3mfRvL.js} +9 -11
  247. package/dist/src/{slack-DEURelTy.cjs → slack-BmVAVGaK.cjs} +7 -8
  248. package/dist/src/{slack-BQYeW9L3.js → slack-DCUPTzS2.js} +8 -8
  249. package/dist/src/{slack-BB6yuZzp.js → slack-DOdy_kyv.js} +7 -8
  250. package/dist/src/{slack-2pRrhhgJ.js → slack-DXMKtA-f.js} +7 -9
  251. package/dist/src/store-CXGFv4aR.js +228 -0
  252. package/dist/src/store-CXS-Q_91.js +6 -0
  253. package/dist/src/{store-D7CgQzAR.cjs → store-DLlFCC4h.cjs} +44 -45
  254. package/dist/src/{store-DJNsD1iC.js → store-DXilxTl-.js} +40 -36
  255. package/dist/src/{store-s3SftUwF.js → store-Dim__MDd.js} +34 -35
  256. package/dist/src/store-eYkaKMwq.cjs +5 -0
  257. package/dist/src/{tables-DfTsNN7X.js → tables-6YKwjN9-.js} +19 -21
  258. package/dist/src/tables-DLJPUdUE.js +288 -0
  259. package/dist/src/{tables-BKTmd6u7.cjs → tables-DPi7wKeM.cjs} +89 -91
  260. package/dist/src/{tables-DMegD0Xf.js → tables-gftXzE9I.js} +21 -23
  261. package/dist/src/telemetry-BpMfhthR.cjs +5 -0
  262. package/dist/src/{telemetry--WAdAfVi.js → telemetry-CMrFgtPB.js} +11 -13
  263. package/dist/src/telemetry-Cps3mIU-.js +171 -0
  264. package/dist/src/{telemetry-DQgVBCAb.cjs → telemetry-DaX14Chu.cjs} +21 -24
  265. package/dist/src/{telemetry-BedSm-bZ.js → telemetry-Dthj_BbD.js} +17 -14
  266. package/dist/src/telemetry-Dw38hanS.js +7 -0
  267. package/dist/src/{text-oiSbwSOI.js → text-B_UCRPp2.js} +2 -2
  268. package/dist/src/{text-oKzCBnK6.cjs → text-CW1cyrwj.cjs} +12 -13
  269. package/dist/src/{text-B_IrO4GZ.js → text-Db-Wt2u2.js} +2 -2
  270. package/dist/src/text-TIv0QYnd.js +22 -0
  271. package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
  272. package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
  273. package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
  274. package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
  275. package/dist/src/{transcription-mYS9vd5v.js → transcription-BNYURcXg.js} +14 -7
  276. package/dist/src/{transcription-X2-B4vkX.js → transcription-B_OdaHp7.js} +14 -16
  277. package/dist/src/{transcription-BO1AHegO.cjs → transcription-NLVG9MT1.cjs} +14 -15
  278. package/dist/src/{transcription-lzBLiTFJ.js → transcription-s6A-bNrZ.js} +15 -17
  279. package/dist/src/{transform-B1Hi5lWS.cjs → transform-CzK1Q0zl.cjs} +24 -26
  280. package/dist/src/{transform-DeGlxb0D.js → transform-D5HsjduX.js} +39 -47
  281. package/dist/src/{transform-CYDILYDe.js → transform-DECvGmzp.js} +15 -13
  282. package/dist/src/transform-DTGDnAzW.js +6 -0
  283. package/dist/src/{transform-BEgStbHK.js → transform-DilY9wbS.js} +10 -12
  284. package/dist/src/{transform-D5PjiWiZ.cjs → transform-DuHvhZpj.cjs} +179 -187
  285. package/dist/src/transform-aa6tmVpZ.js +216 -0
  286. package/dist/src/transform-m3qNw4KP.cjs +5 -0
  287. package/dist/src/transform-uAytVuyX.js +1506 -0
  288. package/dist/src/{transform-Dfl89yi4.js → transform-vNucnNr0.js} +39 -47
  289. package/dist/src/{transformersAvailability-SZnTS3pJ.js → transformersAvailability-CEVM2GNQ.js} +2 -2
  290. package/dist/src/{transformersAvailability-D-glmEy7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
  291. package/dist/src/{transformersAvailability-CjeFXhuJ.js → transformersAvailability-D6c6ROpT.js} +2 -2
  292. package/dist/src/{types-DWNf48sT.cjs → types-C_7nyzr1.cjs} +538 -574
  293. package/dist/src/{types-CXQduE9o.js → types-Cbd8uOMq.js} +68 -100
  294. package/dist/src/types-CzW2QFyi.js +3288 -0
  295. package/dist/src/{types-C5hEkb-x.js → types-DmyIJ-sR.js} +63 -99
  296. package/dist/src/{util-CoQjmE3u.js → util-B3xGByQh.js} +4 -5
  297. package/dist/src/{util-aLhtl3fe.cjs → util-B9vlHIIh.cjs} +208 -223
  298. package/dist/src/{util-Du96oyYS.js → util-BHGHw5G1.js} +4 -5
  299. package/dist/src/{util-DQ984syk.js → util-BRYkYPTd.js} +36 -51
  300. package/dist/src/{util-D9eLdGfa.js → util-BV4XUC0n.js} +5 -6
  301. package/dist/src/util-Bv6uGDfH.js +293 -0
  302. package/dist/src/{util-1wWM599Z.cjs → util-BzMcevZc.cjs} +50 -51
  303. package/dist/src/{util-_h4pVqrz.js → util-C1CeHl-P.js} +36 -51
  304. package/dist/src/{util-Bm_-UMD_.js → util-CMy69ZgQ.js} +5 -6
  305. package/dist/src/{util-CyUdMzV0.cjs → util-DGNOS1db.cjs} +34 -35
  306. package/dist/src/util-Dnmk2mBQ.js +599 -0
  307. package/dist/src/util-ZzmqNPlg.js +1426 -0
  308. package/dist/src/{utils-BjLy-Q72.cjs → utils-Cz9qXqII.cjs} +29 -32
  309. package/dist/src/{utils-CFMn2yHW.js → utils-XiOAgly5.js} +4 -7
  310. package/dist/src/utils-dLokC-eR.js +94 -0
  311. package/dist/src/{utils-DvWMzuMx.js → utils-f2-Moju7.js} +4 -7
  312. package/dist/tsconfig.tsbuildinfo +1 -1
  313. package/package.json +38 -38
  314. package/dist/src/app/assets/index-B2D0bCSI.js +0 -439
  315. package/dist/src/app/assets/vendor-charts-CCl15Imd.js +0 -36
  316. package/dist/src/cache-ChPcurj7.js +0 -6
  317. package/dist/src/cache-VVu_W-yg.js +0 -8
  318. package/dist/src/cache-YLNCFEM2.cjs +0 -6
  319. package/dist/src/chunk-DHDDz29n.js +0 -22
  320. package/dist/src/chunk-FhC4c-0y.js +0 -21
  321. package/dist/src/cloud-BndfXy4H.js +0 -5
  322. package/dist/src/eval-BhHvMY82.js +0 -17
  323. package/dist/src/evalResult-Dq2gFNQY.js +0 -12
  324. package/dist/src/evalResult-nmcP5VKH.cjs +0 -12
  325. package/dist/src/evalResult-trqZjVYh.js +0 -14
  326. package/dist/src/evaluator-CnfPstzT.js +0 -39
  327. package/dist/src/fetch-IDPDue6F.cjs +0 -4
  328. package/dist/src/fetch-hKJ-It8q.js +0 -6
  329. package/dist/src/fetch-ouKnrWK-.js +0 -4
  330. package/dist/src/graders-CQn7WUsd.cjs +0 -34
  331. package/dist/src/graders-DC6QAbpW.js +0 -35
  332. package/dist/src/graders-DUWz3Y7j.js +0 -37
  333. package/dist/src/opencode-sdk-4bL9n-Gk.js +0 -382
  334. package/dist/src/opencode-sdk-BfC2zWcR.js +0 -376
  335. package/dist/src/opencode-sdk-DMJyuwMg.js +0 -380
  336. package/dist/src/opencode-sdk-Da-9adza.cjs +0 -383
  337. package/dist/src/providers-CsXB2Ix-.js +0 -35
  338. package/dist/src/providers-DO8ltjLC.js +0 -33
  339. package/dist/src/providers-Dtq-xnXd.cjs +0 -33
  340. package/dist/src/rubyUtils-BUbcND2f.js +0 -6
  341. package/dist/src/rubyUtils-Cr55X_KE.js +0 -5
  342. package/dist/src/rubyUtils-DlIiqoYo.cjs +0 -5
  343. package/dist/src/server-C2eQH4Gu.js +0 -6
  344. package/dist/src/server-CXWycu7H.cjs +0 -6
  345. package/dist/src/server-Q6OGlxxT.js +0 -8
  346. package/dist/src/store-B3EDO9Q3.js +0 -7
  347. package/dist/src/store-Dl9F8aw5.js +0 -6
  348. package/dist/src/store-SnrGrlt9.cjs +0 -6
  349. package/dist/src/telemetry-BGhiPZtl.js +0 -8
  350. package/dist/src/telemetry-CFfiYan6.cjs +0 -6
  351. package/dist/src/telemetry-DHzEduxX.js +0 -6
  352. package/dist/src/transform-C1x1ZlMQ.cjs +0 -6
  353. package/dist/src/transform-DYHjFmQu.js +0 -8
  354. package/dist/src/transform-rmwJT5JQ.js +0 -7
  355. package/dist/src/transformersAvailability-eJooj0gX.js +0 -35
@@ -1,10 +1,10 @@
1
- import { _ as getEnvBool, b as getEnvString, i as logger_default, w as cliState_default } from "./logger-CG1uZPbQ.js";
2
- import { s as CloudConfig, t as fetchWithProxy } from "./fetch-D3OHf-lV.js";
3
- import { o as isLoggedIntoCloud } from "./accounts-CPDRAMND.js";
4
- import chalk from "chalk";
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") || (cliState_default.remote ?? false);
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
- const BrowserBehaviorNames = {
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
- logger_default.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
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
- logger_default.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
172
+ logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
178
173
  } else {
179
- logger_default.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
174
+ logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
180
175
  supported = false;
181
176
  }
182
177
  } else {
183
- logger_default.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
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
- logger_default.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
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, checkServerFeatureSupport as n, getRemoteHealthUrl as o, promptYesNo as r, neverGenerateRemote as s, BrowserBehavior as t };
196
- //# sourceMappingURL=server-RV_i_YX5.js.map
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 logger_default } from "./logger-LSBxlt7a.js";
3
- import { _ as getDbSignalPath } from "./tables-DMegD0Xf.js";
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
- logger_default.warn(`Failed to write database signal file: ${err}`);
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
- logger_default.debug(`Creating signal file at ${filePath}`);
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
- logger_default.debug(`Setting up file watcher on ${filePath}`);
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
- logger_default.warn(`File watcher error: ${error}`);
105
+ logger.warn(`File watcher error: ${error}`);
108
106
  });
109
107
  return watcher;
110
108
  } catch (error) {
111
- logger_default.warn(`Failed to set up file watcher: ${error}`);
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
- //# sourceMappingURL=signal-BW33JuId.js.map
115
+
116
+ //# sourceMappingURL=signal-4U3mfRvL.js.map
@@ -1,6 +1,5 @@
1
- const require_logger = require('./logger-B7sBeGa0.cjs');
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.logger_default.error(`Slack provider error: ${error}`);
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.logger_default.error(`Error fetching Slack messages: ${error}`);
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.logger_default.error(`Error fetching Slack messages: ${error}`);
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.logger_default.error(`Error fetching Slack messages: ${error}`);
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
- //# sourceMappingURL=slack-DEURelTy.cjs.map
134
+
135
+ //# sourceMappingURL=slack-BmVAVGaK.cjs.map
@@ -1,6 +1,6 @@
1
- import { P as logger_default } from "./server/index.js";
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
- logger_default.error(`Slack provider error: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- //# sourceMappingURL=slack-BQYeW9L3.js.map
135
+
136
+ //# sourceMappingURL=slack-DCUPTzS2.js.map
@@ -1,6 +1,5 @@
1
- import { i as logger_default } from "./logger-CG1uZPbQ.js";
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
- logger_default.error(`Slack provider error: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- //# sourceMappingURL=slack-BB6yuZzp.js.map
134
+
135
+ //# sourceMappingURL=slack-DOdy_kyv.js.map
@@ -1,7 +1,5 @@
1
- #!/usr/bin/env node
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
- logger_default.error(`Slack provider error: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- logger_default.error(`Error fetching Slack messages: ${error}`);
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
- //# sourceMappingURL=slack-2pRrhhgJ.js.map
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
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ import "./logger-KkObSCzq.js";
3
+ import "./types-Cbd8uOMq.js";
4
+ import "./tables-gftXzE9I.js";
5
+ import { n as getTraceStore } from "./store-Dim__MDd.js";
6
+ export { getTraceStore };