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
@@ -0,0 +1,222 @@
1
+ import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
+ import { b as getEnvString, i as logger, m as safeJsonStringify } from "./logger-DLcq4dWf.js";
3
+ import { n as getWrapperDir } from "./esm-CaIwzWR5.js";
4
+ import fs from "fs";
5
+ import path from "path";
6
+ import os from "os";
7
+ import { promisify } from "util";
8
+ import { execFile } from "child_process";
9
+ //#region src/ruby/rubyUtils.ts
10
+ var rubyUtils_exports = /* @__PURE__ */ __exportAll({
11
+ getSysExecutable: () => getSysExecutable,
12
+ runRuby: () => runRuby,
13
+ state: () => state,
14
+ tryPath: () => tryPath,
15
+ validateRubyPath: () => validateRubyPath
16
+ });
17
+ const execFileAsync = promisify(execFile);
18
+ /**
19
+ * Global state for Ruby executable path caching.
20
+ * Ensures consistent Ruby executable usage across multiple provider instances.
21
+ */
22
+ const state = {
23
+ cachedRubyPath: null,
24
+ validationPromise: null,
25
+ validatingPath: null
26
+ };
27
+ /**
28
+ * Attempts to find Ruby using Windows 'where' command.
29
+ * Only applicable on Windows platforms.
30
+ * @returns The validated Ruby executable path, or null if not found
31
+ */
32
+ async function tryWindowsWhere() {
33
+ try {
34
+ const output = (await execFileAsync("where", ["ruby"])).stdout.trim();
35
+ if (!output) {
36
+ logger.debug("Windows 'where ruby' returned empty output");
37
+ return null;
38
+ }
39
+ const paths = output.split("\n").filter((path) => path.trim());
40
+ for (const rubyPath of paths) {
41
+ const trimmedPath = rubyPath.trim();
42
+ if (!trimmedPath.endsWith(".exe")) continue;
43
+ const validated = await tryPath(trimmedPath);
44
+ if (validated) return validated;
45
+ }
46
+ } catch (error) {
47
+ const errorMsg = error instanceof Error ? error.message : String(error);
48
+ logger.debug(`Windows 'where ruby' failed: ${errorMsg}`);
49
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES")) logger.warn(`Permission denied when searching for Ruby: ${errorMsg}`);
50
+ }
51
+ return null;
52
+ }
53
+ /**
54
+ * Attempts to get Ruby executable path by running Ruby commands.
55
+ * Uses RbConfig.ruby to get the actual Ruby executable path.
56
+ * @param commands - Array of Ruby command names to try (e.g., ['ruby'])
57
+ * @returns The Ruby executable path, or null if all commands fail
58
+ */
59
+ async function tryRubyCommands(commands) {
60
+ for (const cmd of commands) try {
61
+ const executablePath = (await execFileAsync(cmd, ["-e", "puts RbConfig.ruby"])).stdout.trim();
62
+ if (executablePath && executablePath !== "None") return executablePath;
63
+ } catch (error) {
64
+ const errorMsg = error instanceof Error ? error.message : String(error);
65
+ logger.debug(`Ruby command "${cmd}" failed: ${errorMsg}`);
66
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) logger.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
67
+ }
68
+ return null;
69
+ }
70
+ /**
71
+ * Attempts to validate Ruby commands directly as a final fallback.
72
+ * Validates each command by running it with --version.
73
+ * @param commands - Array of Ruby command names to try (e.g., ['ruby'])
74
+ * @returns The validated Ruby executable path, or null if all commands fail
75
+ */
76
+ async function tryDirectCommands(commands) {
77
+ for (const cmd of commands) try {
78
+ const validated = await tryPath(cmd);
79
+ if (validated) return validated;
80
+ } catch (error) {
81
+ const errorMsg = error instanceof Error ? error.message : String(error);
82
+ logger.debug(`Direct command "${cmd}" failed: ${errorMsg}`);
83
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) logger.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * Attempts to get the Ruby executable path using platform-appropriate strategies.
89
+ * @returns The Ruby executable path if successful, or null if failed.
90
+ */
91
+ async function getSysExecutable() {
92
+ if (process.platform === "win32") {
93
+ const whereResult = await tryWindowsWhere();
94
+ if (whereResult) return whereResult;
95
+ const sysResult = await tryRubyCommands(["ruby"]);
96
+ if (sysResult) return sysResult;
97
+ return await tryDirectCommands(["ruby"]);
98
+ } else return await tryRubyCommands(["ruby"]);
99
+ }
100
+ /**
101
+ * Attempts to validate a Ruby executable path.
102
+ * @param path - The path to the Ruby executable to test.
103
+ * @returns The validated path if successful, or null if invalid.
104
+ */
105
+ async function tryPath(path) {
106
+ let timeoutId;
107
+ try {
108
+ const timeoutPromise = new Promise((_, reject) => {
109
+ timeoutId = setTimeout(() => reject(/* @__PURE__ */ new Error("Command timed out")), 2500);
110
+ });
111
+ const result = await Promise.race([execFileAsync(path, ["--version"]), timeoutPromise]);
112
+ if (timeoutId) clearTimeout(timeoutId);
113
+ if (result.stdout.trim().toLowerCase().includes("ruby")) return path;
114
+ return null;
115
+ } catch {
116
+ if (timeoutId) clearTimeout(timeoutId);
117
+ return null;
118
+ }
119
+ }
120
+ /**
121
+ * Validates and caches the Ruby executable path.
122
+ *
123
+ * @param rubyPath - Path to the Ruby executable.
124
+ * @param isExplicit - If true, only tries the provided path.
125
+ * @returns Validated Ruby executable path.
126
+ * @throws {Error} If no valid Ruby executable is found.
127
+ */
128
+ async function validateRubyPath(rubyPath, isExplicit) {
129
+ if (state.cachedRubyPath && state.validatingPath === rubyPath) return state.cachedRubyPath;
130
+ if (state.validatingPath !== rubyPath) {
131
+ state.cachedRubyPath = null;
132
+ state.validationPromise = null;
133
+ state.validatingPath = rubyPath;
134
+ }
135
+ if (!state.validationPromise) state.validationPromise = (async () => {
136
+ try {
137
+ const primaryPath = await tryPath(rubyPath);
138
+ if (primaryPath) {
139
+ state.cachedRubyPath = primaryPath;
140
+ state.validationPromise = null;
141
+ return primaryPath;
142
+ }
143
+ if (isExplicit) {
144
+ const error = /* @__PURE__ */ new Error(`Ruby not found. Tried "${rubyPath}" Please ensure Ruby is installed and set the PROMPTFOO_RUBY environment variable to your Ruby executable path (e.g., '${process.platform === "win32" ? "C:\\Ruby32\\bin\\ruby.exe" : "/usr/bin/ruby"}').`);
145
+ state.validationPromise = null;
146
+ throw error;
147
+ }
148
+ const detectedPath = await getSysExecutable();
149
+ if (detectedPath) {
150
+ state.cachedRubyPath = detectedPath;
151
+ state.validationPromise = null;
152
+ return detectedPath;
153
+ }
154
+ const error = /* @__PURE__ */ new Error(`Ruby not found. Tried "${rubyPath}", ruby executable detection, and fallback commands. Please ensure Ruby is installed and set the PROMPTFOO_RUBY environment variable to your Ruby executable path (e.g., '${process.platform === "win32" ? "C:\\Ruby32\\bin\\ruby.exe" : "/usr/bin/ruby"}').`);
155
+ state.validationPromise = null;
156
+ throw error;
157
+ } catch (error) {
158
+ state.validationPromise = null;
159
+ throw error;
160
+ }
161
+ })();
162
+ return state.validationPromise;
163
+ }
164
+ /**
165
+ * Runs a Ruby script with the specified method and arguments.
166
+ *
167
+ * @param scriptPath - The path to the Ruby script to run.
168
+ * @param method - The name of the method to call in the Ruby script.
169
+ * @param args - An array of arguments to pass to the Ruby script.
170
+ * @param options - Optional settings for running the Ruby script.
171
+ * @param options.rubyExecutable - Optional path to the Ruby executable.
172
+ * @returns A promise that resolves to the output of the Ruby script.
173
+ * @throws An error if there's an issue running the Ruby script or parsing its output.
174
+ */
175
+ async function runRuby(scriptPath, method, args, options = {}) {
176
+ const absPath = path.resolve(scriptPath);
177
+ const tempJsonPath = path.join(os.tmpdir(), `promptfoo-ruby-input-json-${Date.now()}-${Math.random().toString(16).slice(2)}.json`);
178
+ const outputPath = path.join(os.tmpdir(), `promptfoo-ruby-output-json-${Date.now()}-${Math.random().toString(16).slice(2)}.json`);
179
+ const customPath = options.rubyExecutable || getEnvString("PROMPTFOO_RUBY");
180
+ let rubyPath = customPath || "ruby";
181
+ rubyPath = await validateRubyPath(rubyPath, typeof customPath === "string");
182
+ const wrapperPath = path.join(getWrapperDir("ruby"), "wrapper.rb");
183
+ try {
184
+ fs.writeFileSync(tempJsonPath, safeJsonStringify(args), "utf-8");
185
+ logger.debug(`Running Ruby wrapper with args: ${safeJsonStringify(args)}`);
186
+ const { stdout, stderr } = await execFileAsync(rubyPath, [
187
+ wrapperPath,
188
+ absPath,
189
+ method,
190
+ tempJsonPath,
191
+ outputPath
192
+ ]);
193
+ if (stdout) logger.debug(stdout.trim());
194
+ if (stderr) logger.error(stderr.trim());
195
+ const output = fs.readFileSync(outputPath, "utf-8");
196
+ logger.debug(`Ruby script ${absPath} returned: ${output}`);
197
+ let result;
198
+ try {
199
+ result = JSON.parse(output);
200
+ logger.debug(`Ruby script ${absPath} parsed output type: ${typeof result}, structure: ${result ? JSON.stringify(Object.keys(result)) : "undefined"}`);
201
+ } catch (error) {
202
+ throw new Error(`Invalid JSON: ${error.message} when parsing result: ${output}\nStack Trace: ${error.stack}`);
203
+ }
204
+ if (result?.type !== "final_result") throw new Error("The Ruby script `call_api` function must return a hash with an `output`");
205
+ return result.data;
206
+ } catch (error) {
207
+ logger.error(`Error running Ruby script: ${error.message}\nStack Trace: ${error.stack || "No Ruby traceback available"}`);
208
+ throw new Error(`Error running Ruby script: ${error.message}\nStack Trace: ${error.stack || "No Ruby traceback available"}`);
209
+ } finally {
210
+ [tempJsonPath, outputPath].forEach((file) => {
211
+ try {
212
+ fs.unlinkSync(file);
213
+ } catch (error) {
214
+ logger.error(`Error removing ${file}: ${error}`);
215
+ }
216
+ });
217
+ }
218
+ }
219
+ //#endregion
220
+ export { runRuby as n, rubyUtils_exports as t };
221
+
222
+ //# sourceMappingURL=rubyUtils-BcuGX77l.js.map
@@ -1,12 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvString, g as safeJsonStringify, o as logger_default } from "./logger-LSBxlt7a.js";
3
- import { n as getWrapperDir } from "./esm-B9dPm_BF.js";
2
+ import { C as getEnvString, g as safeJsonStringify, o as logger } from "./logger-KkObSCzq.js";
3
+ import { n as getWrapperDir } from "./esm-C03C-mv3.js";
4
4
  import fs from "fs";
5
5
  import path from "path";
6
6
  import os from "os";
7
7
  import { promisify } from "util";
8
8
  import { execFile } from "child_process";
9
-
10
9
  //#region src/ruby/rubyUtils.ts
11
10
  const execFileAsync = promisify(execFile);
12
11
  /**
@@ -27,7 +26,7 @@ async function tryWindowsWhere() {
27
26
  try {
28
27
  const output = (await execFileAsync("where", ["ruby"])).stdout.trim();
29
28
  if (!output) {
30
- logger_default.debug("Windows 'where ruby' returned empty output");
29
+ logger.debug("Windows 'where ruby' returned empty output");
31
30
  return null;
32
31
  }
33
32
  const paths = output.split("\n").filter((path) => path.trim());
@@ -39,8 +38,8 @@ async function tryWindowsWhere() {
39
38
  }
40
39
  } catch (error) {
41
40
  const errorMsg = error instanceof Error ? error.message : String(error);
42
- logger_default.debug(`Windows 'where ruby' failed: ${errorMsg}`);
43
- if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES")) logger_default.warn(`Permission denied when searching for Ruby: ${errorMsg}`);
41
+ logger.debug(`Windows 'where ruby' failed: ${errorMsg}`);
42
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES")) logger.warn(`Permission denied when searching for Ruby: ${errorMsg}`);
44
43
  }
45
44
  return null;
46
45
  }
@@ -56,8 +55,8 @@ async function tryRubyCommands(commands) {
56
55
  if (executablePath && executablePath !== "None") return executablePath;
57
56
  } catch (error) {
58
57
  const errorMsg = error instanceof Error ? error.message : String(error);
59
- logger_default.debug(`Ruby command "${cmd}" failed: ${errorMsg}`);
60
- if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) logger_default.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
58
+ logger.debug(`Ruby command "${cmd}" failed: ${errorMsg}`);
59
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) logger.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
61
60
  }
62
61
  return null;
63
62
  }
@@ -73,8 +72,8 @@ async function tryDirectCommands(commands) {
73
72
  if (validated) return validated;
74
73
  } catch (error) {
75
74
  const errorMsg = error instanceof Error ? error.message : String(error);
76
- logger_default.debug(`Direct command "${cmd}" failed: ${errorMsg}`);
77
- if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) logger_default.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
75
+ logger.debug(`Direct command "${cmd}" failed: ${errorMsg}`);
76
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) logger.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
78
77
  }
79
78
  return null;
80
79
  }
@@ -176,7 +175,7 @@ async function runRuby(scriptPath, method, args, options = {}) {
176
175
  const wrapperPath = path.join(getWrapperDir("ruby"), "wrapper.rb");
177
176
  try {
178
177
  fs.writeFileSync(tempJsonPath, safeJsonStringify(args), "utf-8");
179
- logger_default.debug(`Running Ruby wrapper with args: ${safeJsonStringify(args)}`);
178
+ logger.debug(`Running Ruby wrapper with args: ${safeJsonStringify(args)}`);
180
179
  const { stdout, stderr } = await execFileAsync(rubyPath, [
181
180
  wrapperPath,
182
181
  absPath,
@@ -184,33 +183,33 @@ async function runRuby(scriptPath, method, args, options = {}) {
184
183
  tempJsonPath,
185
184
  outputPath
186
185
  ]);
187
- if (stdout) logger_default.debug(stdout.trim());
188
- if (stderr) logger_default.error(stderr.trim());
186
+ if (stdout) logger.debug(stdout.trim());
187
+ if (stderr) logger.error(stderr.trim());
189
188
  const output = fs.readFileSync(outputPath, "utf-8");
190
- logger_default.debug(`Ruby script ${absPath} returned: ${output}`);
189
+ logger.debug(`Ruby script ${absPath} returned: ${output}`);
191
190
  let result;
192
191
  try {
193
192
  result = JSON.parse(output);
194
- logger_default.debug(`Ruby script ${absPath} parsed output type: ${typeof result}, structure: ${result ? JSON.stringify(Object.keys(result)) : "undefined"}`);
193
+ logger.debug(`Ruby script ${absPath} parsed output type: ${typeof result}, structure: ${result ? JSON.stringify(Object.keys(result)) : "undefined"}`);
195
194
  } catch (error) {
196
195
  throw new Error(`Invalid JSON: ${error.message} when parsing result: ${output}\nStack Trace: ${error.stack}`);
197
196
  }
198
197
  if (result?.type !== "final_result") throw new Error("The Ruby script `call_api` function must return a hash with an `output`");
199
198
  return result.data;
200
199
  } catch (error) {
201
- logger_default.error(`Error running Ruby script: ${error.message}\nStack Trace: ${error.stack || "No Ruby traceback available"}`);
200
+ logger.error(`Error running Ruby script: ${error.message}\nStack Trace: ${error.stack || "No Ruby traceback available"}`);
202
201
  throw new Error(`Error running Ruby script: ${error.message}\nStack Trace: ${error.stack || "No Ruby traceback available"}`);
203
202
  } finally {
204
203
  [tempJsonPath, outputPath].forEach((file) => {
205
204
  try {
206
205
  fs.unlinkSync(file);
207
206
  } catch (error) {
208
- logger_default.error(`Error removing ${file}: ${error}`);
207
+ logger.error(`Error removing ${file}: ${error}`);
209
208
  }
210
209
  });
211
210
  }
212
211
  }
213
-
214
212
  //#endregion
215
213
  export { validateRubyPath as a, tryPath as i, runRuby as n, state as r, getSysExecutable as t };
216
- //# sourceMappingURL=rubyUtils-DudlFZed.js.map
214
+
215
+ //# sourceMappingURL=rubyUtils-Boc4HZzX.js.map
@@ -0,0 +1,4 @@
1
+ require("./logger-Cp1GPUjj.cjs");
2
+ require("./esm-CnNt7sI4.cjs");
3
+ const require_rubyUtils = require("./rubyUtils-DhCAlxZr.cjs");
4
+ exports.runRuby = require_rubyUtils.runRuby;
@@ -1,5 +1,5 @@
1
- const require_logger = require('./logger-B7sBeGa0.cjs');
2
- const require_esm = require('./esm-Ct-Joyue.cjs');
1
+ const require_logger = require("./logger-Cp1GPUjj.cjs");
2
+ const require_esm = require("./esm-CnNt7sI4.cjs");
3
3
  let fs = require("fs");
4
4
  fs = require_logger.__toESM(fs);
5
5
  let path = require("path");
@@ -7,10 +7,8 @@ path = require_logger.__toESM(path);
7
7
  let os = require("os");
8
8
  os = require_logger.__toESM(os);
9
9
  let child_process = require("child_process");
10
- let util = require("util");
11
-
12
10
  //#region src/ruby/rubyUtils.ts
13
- const execFileAsync = (0, util.promisify)(child_process.execFile);
11
+ const execFileAsync = (0, require("util").promisify)(child_process.execFile);
14
12
  /**
15
13
  * Global state for Ruby executable path caching.
16
14
  * Ensures consistent Ruby executable usage across multiple provider instances.
@@ -29,10 +27,10 @@ async function tryWindowsWhere() {
29
27
  try {
30
28
  const output = (await execFileAsync("where", ["ruby"])).stdout.trim();
31
29
  if (!output) {
32
- require_logger.logger_default.debug("Windows 'where ruby' returned empty output");
30
+ require_logger.logger.debug("Windows 'where ruby' returned empty output");
33
31
  return null;
34
32
  }
35
- const paths = output.split("\n").filter((path) => path.trim());
33
+ const paths = output.split("\n").filter((path$2) => path$2.trim());
36
34
  for (const rubyPath of paths) {
37
35
  const trimmedPath = rubyPath.trim();
38
36
  if (!trimmedPath.endsWith(".exe")) continue;
@@ -41,8 +39,8 @@ async function tryWindowsWhere() {
41
39
  }
42
40
  } catch (error) {
43
41
  const errorMsg = error instanceof Error ? error.message : String(error);
44
- require_logger.logger_default.debug(`Windows 'where ruby' failed: ${errorMsg}`);
45
- if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES")) require_logger.logger_default.warn(`Permission denied when searching for Ruby: ${errorMsg}`);
42
+ require_logger.logger.debug(`Windows 'where ruby' failed: ${errorMsg}`);
43
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES")) require_logger.logger.warn(`Permission denied when searching for Ruby: ${errorMsg}`);
46
44
  }
47
45
  return null;
48
46
  }
@@ -58,8 +56,8 @@ async function tryRubyCommands(commands) {
58
56
  if (executablePath && executablePath !== "None") return executablePath;
59
57
  } catch (error) {
60
58
  const errorMsg = error instanceof Error ? error.message : String(error);
61
- require_logger.logger_default.debug(`Ruby command "${cmd}" failed: ${errorMsg}`);
62
- if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) require_logger.logger_default.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
59
+ require_logger.logger.debug(`Ruby command "${cmd}" failed: ${errorMsg}`);
60
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) require_logger.logger.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
63
61
  }
64
62
  return null;
65
63
  }
@@ -75,8 +73,8 @@ async function tryDirectCommands(commands) {
75
73
  if (validated) return validated;
76
74
  } catch (error) {
77
75
  const errorMsg = error instanceof Error ? error.message : String(error);
78
- require_logger.logger_default.debug(`Direct command "${cmd}" failed: ${errorMsg}`);
79
- if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) require_logger.logger_default.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
76
+ require_logger.logger.debug(`Direct command "${cmd}" failed: ${errorMsg}`);
77
+ if (errorMsg.includes("Access is denied") || errorMsg.includes("EACCES") || errorMsg.includes("EPERM")) require_logger.logger.warn(`Permission denied when trying Ruby command "${cmd}": ${errorMsg}`);
80
78
  }
81
79
  return null;
82
80
  }
@@ -98,15 +96,15 @@ async function getSysExecutable() {
98
96
  * @param path - The path to the Ruby executable to test.
99
97
  * @returns The validated path if successful, or null if invalid.
100
98
  */
101
- async function tryPath(path) {
99
+ async function tryPath(path$3) {
102
100
  let timeoutId;
103
101
  try {
104
102
  const timeoutPromise = new Promise((_, reject) => {
105
103
  timeoutId = setTimeout(() => reject(/* @__PURE__ */ new Error("Command timed out")), 2500);
106
104
  });
107
- const result = await Promise.race([execFileAsync(path, ["--version"]), timeoutPromise]);
105
+ const result = await Promise.race([execFileAsync(path$3, ["--version"]), timeoutPromise]);
108
106
  if (timeoutId) clearTimeout(timeoutId);
109
- if (result.stdout.trim().toLowerCase().includes("ruby")) return path;
107
+ if (result.stdout.trim().toLowerCase().includes("ruby")) return path$3;
110
108
  return null;
111
109
  } catch {
112
110
  if (timeoutId) clearTimeout(timeoutId);
@@ -178,7 +176,7 @@ async function runRuby(scriptPath, method, args, options = {}) {
178
176
  const wrapperPath = path.default.join(require_esm.getWrapperDir("ruby"), "wrapper.rb");
179
177
  try {
180
178
  fs.default.writeFileSync(tempJsonPath, require_logger.safeJsonStringify(args), "utf-8");
181
- require_logger.logger_default.debug(`Running Ruby wrapper with args: ${require_logger.safeJsonStringify(args)}`);
179
+ require_logger.logger.debug(`Running Ruby wrapper with args: ${require_logger.safeJsonStringify(args)}`);
182
180
  const { stdout, stderr } = await execFileAsync(rubyPath, [
183
181
  wrapperPath,
184
182
  absPath,
@@ -186,62 +184,62 @@ async function runRuby(scriptPath, method, args, options = {}) {
186
184
  tempJsonPath,
187
185
  outputPath
188
186
  ]);
189
- if (stdout) require_logger.logger_default.debug(stdout.trim());
190
- if (stderr) require_logger.logger_default.error(stderr.trim());
187
+ if (stdout) require_logger.logger.debug(stdout.trim());
188
+ if (stderr) require_logger.logger.error(stderr.trim());
191
189
  const output = fs.default.readFileSync(outputPath, "utf-8");
192
- require_logger.logger_default.debug(`Ruby script ${absPath} returned: ${output}`);
190
+ require_logger.logger.debug(`Ruby script ${absPath} returned: ${output}`);
193
191
  let result;
194
192
  try {
195
193
  result = JSON.parse(output);
196
- require_logger.logger_default.debug(`Ruby script ${absPath} parsed output type: ${typeof result}, structure: ${result ? JSON.stringify(Object.keys(result)) : "undefined"}`);
194
+ require_logger.logger.debug(`Ruby script ${absPath} parsed output type: ${typeof result}, structure: ${result ? JSON.stringify(Object.keys(result)) : "undefined"}`);
197
195
  } catch (error) {
198
196
  throw new Error(`Invalid JSON: ${error.message} when parsing result: ${output}\nStack Trace: ${error.stack}`);
199
197
  }
200
198
  if (result?.type !== "final_result") throw new Error("The Ruby script `call_api` function must return a hash with an `output`");
201
199
  return result.data;
202
200
  } catch (error) {
203
- require_logger.logger_default.error(`Error running Ruby script: ${error.message}\nStack Trace: ${error.stack || "No Ruby traceback available"}`);
201
+ require_logger.logger.error(`Error running Ruby script: ${error.message}\nStack Trace: ${error.stack || "No Ruby traceback available"}`);
204
202
  throw new Error(`Error running Ruby script: ${error.message}\nStack Trace: ${error.stack || "No Ruby traceback available"}`);
205
203
  } finally {
206
204
  [tempJsonPath, outputPath].forEach((file) => {
207
205
  try {
208
206
  fs.default.unlinkSync(file);
209
207
  } catch (error) {
210
- require_logger.logger_default.error(`Error removing ${file}: ${error}`);
208
+ require_logger.logger.error(`Error removing ${file}: ${error}`);
211
209
  }
212
210
  });
213
211
  }
214
212
  }
215
-
216
213
  //#endregion
217
- Object.defineProperty(exports, 'getSysExecutable', {
218
- enumerable: true,
219
- get: function () {
220
- return getSysExecutable;
221
- }
214
+ Object.defineProperty(exports, "getSysExecutable", {
215
+ enumerable: true,
216
+ get: function() {
217
+ return getSysExecutable;
218
+ }
222
219
  });
223
- Object.defineProperty(exports, 'runRuby', {
224
- enumerable: true,
225
- get: function () {
226
- return runRuby;
227
- }
220
+ Object.defineProperty(exports, "runRuby", {
221
+ enumerable: true,
222
+ get: function() {
223
+ return runRuby;
224
+ }
228
225
  });
229
- Object.defineProperty(exports, 'state', {
230
- enumerable: true,
231
- get: function () {
232
- return state;
233
- }
226
+ Object.defineProperty(exports, "state", {
227
+ enumerable: true,
228
+ get: function() {
229
+ return state;
230
+ }
234
231
  });
235
- Object.defineProperty(exports, 'tryPath', {
236
- enumerable: true,
237
- get: function () {
238
- return tryPath;
239
- }
232
+ Object.defineProperty(exports, "tryPath", {
233
+ enumerable: true,
234
+ get: function() {
235
+ return tryPath;
236
+ }
240
237
  });
241
- Object.defineProperty(exports, 'validateRubyPath', {
242
- enumerable: true,
243
- get: function () {
244
- return validateRubyPath;
245
- }
238
+ Object.defineProperty(exports, "validateRubyPath", {
239
+ enumerable: true,
240
+ get: function() {
241
+ return validateRubyPath;
242
+ }
246
243
  });
247
- //# sourceMappingURL=rubyUtils-C8MhKGHb.cjs.map
244
+
245
+ //# sourceMappingURL=rubyUtils-DhCAlxZr.cjs.map