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,383 +0,0 @@
1
- const require_logger = require('./logger-B7sBeGa0.cjs');
2
- const require_esm = require('./esm-Ct-Joyue.cjs');
3
- require('./fetch-BmbD-v1L.cjs');
4
- require('./cache-BTVYfbka.cjs');
5
- const require_cometapi = require('./cometapi-DIO64tf4.cjs');
6
- let fs = require("fs");
7
- fs = require_logger.__toESM(fs);
8
- let path = require("path");
9
- path = require_logger.__toESM(path);
10
- let node_module = require("node:module");
11
- let os = require("os");
12
- os = require_logger.__toESM(os);
13
- let dedent = require("dedent");
14
- dedent = require_logger.__toESM(dedent);
15
-
16
- //#region src/providers/opencode-sdk.ts
17
- /**
18
- * Check if promptfoo is in debug mode
19
- */
20
- function isDebugMode() {
21
- return require_logger.getLogLevel() === "debug";
22
- }
23
- /**
24
- * Maximum number of sessions to keep in memory to prevent unbounded growth
25
- */
26
- const MAX_SESSIONS = 100;
27
- /**
28
- * Resolve ESM-only package entry point by reading package.json exports
29
- * Handles packages that only have "import" condition (no "require" condition)
30
- *
31
- * @param packageName - The package name (e.g., '@opencode-ai/sdk')
32
- * @param basePath - Base path for resolution
33
- * @returns Absolute path to the ESM entry point
34
- */
35
- function resolveEsmPackage(packageName, basePath) {
36
- const require = (0, node_module.createRequire)(path.default.join(basePath, "package.json"));
37
- let packageJsonPath;
38
- try {
39
- packageJsonPath = require.resolve(`${packageName}/package.json`);
40
- } catch {
41
- packageJsonPath = path.default.join(basePath, "node_modules", ...packageName.split("/"), "package.json");
42
- if (!fs.default.existsSync(packageJsonPath)) throw new Error(`Cannot find ${packageName}/package.json`);
43
- }
44
- const packageDir = path.default.dirname(packageJsonPath);
45
- const packageJson = JSON.parse(fs.default.readFileSync(packageJsonPath, "utf-8"));
46
- let esmEntry;
47
- if (packageJson.exports) {
48
- const mainExport = packageJson.exports["."] || packageJson.exports;
49
- if (typeof mainExport === "string") esmEntry = mainExport;
50
- else if (typeof mainExport === "object") esmEntry = mainExport.import || mainExport.default;
51
- }
52
- if (!esmEntry) esmEntry = packageJson.module || packageJson.main;
53
- if (!esmEntry) throw new Error(`Cannot find ESM entry point in ${packageName}/package.json`);
54
- return path.default.join(packageDir, esmEntry);
55
- }
56
- /**
57
- * Helper to load the OpenCode SDK ESM module
58
- *
59
- * Uses a two-phase approach:
60
- * 1. Try simple dynamic import - works when SDK is in same node_modules tree
61
- * 2. Fall back to smart ESM resolution for edge cases (pnpm, global installs, monorepos)
62
- */
63
- async function loadOpenCodeSDK() {
64
- try {
65
- require_logger.logger_default.debug("Attempting simple dynamic import of @opencode-ai/sdk");
66
- return await import("@opencode-ai/sdk");
67
- } catch {
68
- require_logger.logger_default.debug("Simple import failed, falling back to smart ESM resolution");
69
- }
70
- try {
71
- const modulePath = resolveEsmPackage("@opencode-ai/sdk", require_logger.cliState_default.basePath && path.default.isAbsolute(require_logger.cliState_default.basePath) ? require_logger.cliState_default.basePath : process.cwd());
72
- require_logger.logger_default.debug(`Resolved OpenCode SDK path: ${modulePath}`);
73
- return await require_esm.importModule(modulePath);
74
- } catch (err) {
75
- require_logger.logger_default.error(`Failed to load OpenCode SDK: ${err}`);
76
- const stack = err.stack;
77
- if (stack) require_logger.logger_default.error(stack);
78
- throw new Error(dedent.default`The @opencode-ai/sdk package is required but not installed.
79
-
80
- To use the OpenCode SDK provider, install it with:
81
- npm install @opencode-ai/sdk
82
-
83
- For more information, see: https://www.promptfoo.dev/docs/providers/opencode-sdk/`);
84
- }
85
- }
86
- var OpenCodeSDKProvider = class {
87
- config;
88
- env;
89
- providerId = "opencode:sdk";
90
- opencodeModule;
91
- client;
92
- server;
93
- sessions = /* @__PURE__ */ new Map();
94
- sessionOrder = [];
95
- constructor(options = {}) {
96
- const { config, env, id } = options;
97
- this.config = config ?? {};
98
- this.env = env;
99
- this.providerId = id ?? this.providerId;
100
- }
101
- id() {
102
- return this.providerId;
103
- }
104
- /**
105
- * Get API key based on provider_id or common environment variables
106
- */
107
- getApiKey() {
108
- if (this.config?.apiKey) return this.config.apiKey;
109
- const providerId = this.config?.provider_id?.toLowerCase();
110
- if (providerId === "anthropic") return this.env?.ANTHROPIC_API_KEY || require_logger.getEnvString("ANTHROPIC_API_KEY");
111
- if (providerId === "openai") return this.env?.OPENAI_API_KEY || require_logger.getEnvString("OPENAI_API_KEY");
112
- if (providerId === "google") return this.env?.GOOGLE_API_KEY || require_logger.getEnvString("GOOGLE_API_KEY");
113
- return this.env?.ANTHROPIC_API_KEY || require_logger.getEnvString("ANTHROPIC_API_KEY") || this.env?.OPENAI_API_KEY || require_logger.getEnvString("OPENAI_API_KEY");
114
- }
115
- toString() {
116
- return "[OpenCode SDK Provider]";
117
- }
118
- async cleanup() {
119
- if (!this.config.persist_sessions) for (const sessionId of this.sessions.values()) try {
120
- await this.client?.session?.delete({ path: { id: sessionId } });
121
- } catch (err) {
122
- require_logger.logger_default.debug(`Failed to delete session ${sessionId}: ${err}`);
123
- }
124
- this.sessions.clear();
125
- this.sessionOrder = [];
126
- if (this.server) {
127
- try {
128
- this.server.close();
129
- } catch (err) {
130
- require_logger.logger_default.debug(`Failed to close OpenCode server: ${err}`);
131
- }
132
- this.server = void 0;
133
- }
134
- }
135
- /**
136
- * Build the tools configuration based on config and defaults
137
- */
138
- buildToolsConfig(config) {
139
- if (config.tools) return config.tools;
140
- if (!config.working_dir) return {
141
- bash: false,
142
- edit: false,
143
- write: false,
144
- read: false,
145
- grep: false,
146
- glob: false,
147
- list: false,
148
- patch: false,
149
- todowrite: false,
150
- todoread: false,
151
- webfetch: false,
152
- question: false,
153
- skill: false,
154
- lsp: false
155
- };
156
- return {
157
- bash: false,
158
- edit: false,
159
- write: false,
160
- read: true,
161
- grep: true,
162
- glob: true,
163
- list: true,
164
- patch: false,
165
- todowrite: false,
166
- todoread: false,
167
- webfetch: false,
168
- question: false,
169
- skill: false,
170
- lsp: false
171
- };
172
- }
173
- /**
174
- * Add a session to the cache with LRU eviction
175
- */
176
- addSession(cacheKey, sessionId) {
177
- while (this.sessions.size >= MAX_SESSIONS && this.sessionOrder.length > 0) {
178
- const oldestKey = this.sessionOrder.shift();
179
- if (oldestKey) {
180
- const oldSessionId = this.sessions.get(oldestKey);
181
- this.sessions.delete(oldestKey);
182
- if (oldSessionId) this.client?.session?.delete({ path: { id: oldSessionId } }).catch((err) => {
183
- require_logger.logger_default.debug(`Failed to delete evicted session ${oldSessionId}: ${err}`);
184
- });
185
- }
186
- }
187
- this.sessions.set(cacheKey, sessionId);
188
- this.sessionOrder.push(cacheKey);
189
- }
190
- async callApi(prompt, context, callOptions) {
191
- const config = {
192
- ...this.config,
193
- ...context?.prompt?.config
194
- };
195
- let isTempDir = false;
196
- let workingDir;
197
- if (config.working_dir) {
198
- workingDir = path.default.isAbsolute(config.working_dir) ? config.working_dir : path.default.resolve(process.cwd(), config.working_dir);
199
- let stats;
200
- try {
201
- stats = fs.default.statSync(workingDir);
202
- } catch (err) {
203
- throw new Error(`Working directory ${config.working_dir} (resolved to ${workingDir}) does not exist or isn't accessible: ${err.message}`);
204
- }
205
- if (!stats.isDirectory()) throw new Error(`Working directory ${config.working_dir} (resolved to ${workingDir}) is not a directory`);
206
- } else {
207
- isTempDir = true;
208
- workingDir = fs.default.mkdtempSync(path.default.join(os.default.tmpdir(), "promptfoo-opencode-sdk-"));
209
- }
210
- const mcpConfig = config.mcp && Object.keys(config.mcp).length > 0 ? config.mcp : void 0;
211
- const cacheResult = await require_cometapi.initializeAgenticCache({
212
- cacheKeyPrefix: "opencode:sdk",
213
- workingDir: config.working_dir ? workingDir : void 0,
214
- bustCache: context?.bustCache,
215
- mcp: mcpConfig,
216
- cacheMcp: config.cache_mcp
217
- }, {
218
- prompt,
219
- provider_id: config.provider_id,
220
- model: config.model,
221
- tools: this.buildToolsConfig(config),
222
- permission: config.permission,
223
- agent: config.agent,
224
- custom_agent: config.custom_agent
225
- });
226
- const cachedResponse = await require_cometapi.getCachedResponse(cacheResult, "OpenCode SDK");
227
- if (cachedResponse) return cachedResponse;
228
- if (callOptions?.abortSignal?.aborted) return { error: "OpenCode SDK call aborted before it started" };
229
- try {
230
- if (!this.opencodeModule) this.opencodeModule = await loadOpenCodeSDK();
231
- if (!this.client) {
232
- const { createOpencode, createOpencodeClient } = this.opencodeModule;
233
- if (config.baseUrl) this.client = createOpencodeClient({ baseUrl: config.baseUrl });
234
- else {
235
- const homeDir = os.default.homedir();
236
- const opencodeBinPath = path.default.join(homeDir, ".opencode", "bin");
237
- const serverEnv = { ...process.env };
238
- if (!serverEnv.PATH?.includes(opencodeBinPath)) {
239
- serverEnv.PATH = `${opencodeBinPath}:${serverEnv.PATH ?? ""}`;
240
- require_logger.logger_default.debug(`Added ${opencodeBinPath} to PATH for OpenCode CLI`);
241
- }
242
- if (config.log_level === "debug" || isDebugMode()) {
243
- serverEnv.DEBUG = serverEnv.DEBUG || "opencode:*";
244
- require_logger.logger_default.debug("[OpenCode SDK] Debug mode enabled, synced from promptfoo log level");
245
- }
246
- const serverOptions = {
247
- hostname: config.hostname ?? "127.0.0.1",
248
- port: config.port ?? 0,
249
- timeout: config.timeout ?? 3e4,
250
- env: serverEnv
251
- };
252
- const serverConfig = {};
253
- if (config.mcp && Object.keys(config.mcp).length > 0) {
254
- serverConfig.mcp = config.mcp;
255
- require_logger.logger_default.debug(`[OpenCode SDK] Configuring MCP servers: ${Object.keys(config.mcp).join(", ")}`);
256
- }
257
- if (config.custom_agent) {
258
- serverConfig.agent = { custom: {
259
- description: config.custom_agent.description,
260
- model: config.custom_agent.model,
261
- temperature: config.custom_agent.temperature,
262
- top_p: config.custom_agent.top_p,
263
- tools: config.custom_agent.tools,
264
- permission: config.custom_agent.permission,
265
- prompt: config.custom_agent.prompt,
266
- mode: config.custom_agent.mode ?? "primary",
267
- maxSteps: config.custom_agent.steps ?? config.custom_agent.maxSteps,
268
- color: config.custom_agent.color,
269
- disable: config.custom_agent.disable,
270
- hidden: config.custom_agent.hidden
271
- } };
272
- require_logger.logger_default.debug(`[OpenCode SDK] Configuring custom agent: ${config.custom_agent.description}`);
273
- }
274
- if (config.permission) {
275
- serverConfig.permission = config.permission;
276
- require_logger.logger_default.debug("[OpenCode SDK] Configuring global permissions");
277
- }
278
- const toolsConfig = this.buildToolsConfig(config);
279
- if (toolsConfig) serverConfig.tools = toolsConfig;
280
- if (Object.keys(serverConfig).length > 0) serverOptions.config = serverConfig;
281
- const opencode = await createOpencode(serverOptions);
282
- this.client = opencode.client;
283
- this.server = opencode.server;
284
- require_logger.logger_default.debug(`OpenCode server started at ${opencode.server.url}`);
285
- }
286
- }
287
- let sessionId;
288
- const sessionCacheKey = cacheResult.cacheKey;
289
- if (config.session_id) sessionId = config.session_id;
290
- else if (config.persist_sessions && sessionCacheKey && this.sessions.has(sessionCacheKey)) sessionId = this.sessions.get(sessionCacheKey);
291
- else {
292
- const createResult = await this.client.session.create({ body: { title: `promptfoo-${Date.now()}` } });
293
- const extractedId = createResult?.data?.id ?? createResult?.id;
294
- if (!extractedId) throw new Error("Failed to get session ID from OpenCode SDK response");
295
- sessionId = extractedId;
296
- if (config.persist_sessions && sessionCacheKey) this.addSession(sessionCacheKey, sessionId);
297
- }
298
- const promptBody = { parts: [{
299
- type: "text",
300
- text: prompt
301
- }] };
302
- if (config.provider_id || config.model) promptBody.model = {
303
- providerID: config.provider_id ?? "",
304
- modelID: config.model ?? ""
305
- };
306
- const toolsConfig = this.buildToolsConfig(config);
307
- if (toolsConfig) promptBody.tools = toolsConfig;
308
- if (config.agent) promptBody.agent = config.agent;
309
- else if (config.custom_agent) promptBody.agent = "custom";
310
- if (config.custom_agent?.prompt) promptBody.system = config.custom_agent.prompt;
311
- if (config.permission) promptBody.permission = config.permission;
312
- const promptOptions = {
313
- path: { id: sessionId },
314
- body: promptBody
315
- };
316
- if (config.working_dir) promptOptions.query = { directory: workingDir };
317
- require_logger.logger_default.debug(`OpenCode SDK prompt options:`, {
318
- path: promptOptions.path,
319
- body: promptBody,
320
- query: promptOptions.query
321
- });
322
- const response = await this.client.session.prompt(promptOptions);
323
- require_logger.logger_default.debug(`OpenCode SDK response received`);
324
- const responseData = response?.data;
325
- const assistantMessage = responseData?.info;
326
- const parts = responseData?.parts ?? [];
327
- let output = "";
328
- for (const part of parts) if (part.type === "text" && part.text) output += (output ? "\n" : "") + part.text;
329
- const raw = JSON.stringify(response);
330
- const tokens = assistantMessage?.tokens;
331
- const tokenUsage = tokens ? {
332
- prompt: tokens.input ?? 0,
333
- completion: tokens.output ?? 0,
334
- total: (tokens.input ?? 0) + (tokens.output ?? 0)
335
- } : void 0;
336
- const cost = assistantMessage?.cost ?? 0;
337
- const providerResponse = {
338
- output,
339
- tokenUsage,
340
- cost,
341
- raw,
342
- sessionId
343
- };
344
- await require_cometapi.cacheResponse(cacheResult, providerResponse, "OpenCode SDK");
345
- require_logger.logger_default.debug(`OpenCode SDK response: ${output.substring(0, 100)}...`);
346
- return providerResponse;
347
- } catch (error) {
348
- if (error?.name === "AbortError" || callOptions?.abortSignal?.aborted) {
349
- require_logger.logger_default.warn("OpenCode SDK call aborted");
350
- return { error: "OpenCode SDK call aborted" };
351
- }
352
- if (error?.code === "ENOENT" && error?.message?.includes("opencode")) {
353
- const cliError = dedent.default`The OpenCode CLI is required but not installed.
354
-
355
- The OpenCode SDK requires the 'opencode' CLI to be installed and available in your PATH.
356
-
357
- Install it with:
358
- curl -fsSL https://opencode.ai/install | bash
359
-
360
- Or see: https://opencode.ai for other installation methods.`;
361
- require_logger.logger_default.error(cliError);
362
- return { error: cliError };
363
- }
364
- require_logger.logger_default.error(`Error calling OpenCode SDK: ${error}`);
365
- return { error: `Error calling OpenCode SDK: ${error.message || error}` };
366
- } finally {
367
- if (isTempDir && workingDir) fs.default.rmSync(workingDir, {
368
- recursive: true,
369
- force: true
370
- });
371
- const sessionCacheKey = cacheResult.cacheKey;
372
- if (!config.persist_sessions && !config.session_id && sessionCacheKey) {
373
- this.sessions.delete(sessionCacheKey);
374
- const idx = this.sessionOrder.indexOf(sessionCacheKey);
375
- if (idx !== -1) this.sessionOrder.splice(idx, 1);
376
- }
377
- }
378
- }
379
- };
380
-
381
- //#endregion
382
- exports.OpenCodeSDKProvider = OpenCodeSDKProvider;
383
- //# sourceMappingURL=opencode-sdk-Da-9adza.cjs.map
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./chunk-DHDDz29n.js";
3
- import "./logger-LSBxlt7a.js";
4
- import "./fetch-CXZI9RRr.js";
5
- import "./accounts-DVINui-2.js";
6
- import "./cloud-CZ-q9Ier.js";
7
- import "./telemetry--WAdAfVi.js";
8
- import "./types-CXQduE9o.js";
9
- import "./server-BJ4m4f1D.js";
10
- import { a as resolveProviderConfigs, i as resolveProvider, n as loadApiProvider, r as loadApiProviders, t as getProviderIds } from "./providers-Iil64vk9.js";
11
- import "./cache-jsiwsAJv.js";
12
- import "./util-_h4pVqrz.js";
13
- import "./esm-B9dPm_BF.js";
14
- import "./pythonUtils-CcT5LH1M.js";
15
- import "./transform-BEgStbHK.js";
16
- import "./createHash-CJcfskIZ.js";
17
- import "./genaiTracer-CqNnnXrE.js";
18
- import "./chat-BcPjZXIp.js";
19
- import "./transform-DeGlxb0D.js";
20
- import "./messages-CGPPidQr.js";
21
- import "./util-CoQjmE3u.js";
22
- import "./responses-CxzoQoBe.js";
23
- import "./openai-CcN1B8Sb.js";
24
- import "./util-Bm_-UMD_.js";
25
- import "./completion-Bgf1VJoq.js";
26
- import "./blobs-BM_e6hCa.js";
27
- import "./tables-DMegD0Xf.js";
28
- import "./extractor-CD5yKL-G.js";
29
- import "./store-s3SftUwF.js";
30
- import "./base-XB2tDJrB.js";
31
- import "./image-O1u4bCFg.js";
32
- import "./providerRegistry-Cq_JK_CJ.js";
33
- import "./rubyUtils-DudlFZed.js";
34
-
35
- export { loadApiProvider, loadApiProviders };
@@ -1,33 +0,0 @@
1
- import "./chunk-FhC4c-0y.js";
2
- import "./logger-CG1uZPbQ.js";
3
- import "./esm-D2pZ87fL.js";
4
- import "./pythonUtils-hZ8LeQLv.js";
5
- import "./transform-CYDILYDe.js";
6
- import "./types-C5hEkb-x.js";
7
- import "./util-DQ984syk.js";
8
- import "./fetch-D3OHf-lV.js";
9
- import "./cache-CIpsoBZR.js";
10
- import { a as resolveProviderConfigs, i as resolveProvider, n as loadApiProvider, r as loadApiProviders, t as getProviderIds } from "./providers-BnFpbY_s.js";
11
- import "./createHash-Dw_iLu31.js";
12
- import "./genaiTracer-Ce19n68P.js";
13
- import "./chat-CcUCysjU.js";
14
- import "./transform-Dfl89yi4.js";
15
- import "./messages-Uee41Mj5.js";
16
- import "./util-Du96oyYS.js";
17
- import "./responses-DOAFFENS.js";
18
- import "./openai-PblZ3jUE.js";
19
- import "./util-D9eLdGfa.js";
20
- import "./completion-CG29bfKX.js";
21
- import "./accounts-CPDRAMND.js";
22
- import "./server-RV_i_YX5.js";
23
- import "./blobs-CR5C4Ihh.js";
24
- import "./tables-DfTsNN7X.js";
25
- import "./extractor-V5x_m1i0.js";
26
- import "./telemetry-BedSm-bZ.js";
27
- import "./store-DJNsD1iC.js";
28
- import "./base-h961VXYk.js";
29
- import "./image-C3wHC9_h.js";
30
- import "./providerRegistry-DSSHjMKf.js";
31
- import "./rubyUtils-CwbGmgYN.js";
32
-
33
- export { loadApiProvider, loadApiProviders };
@@ -1,33 +0,0 @@
1
- require('./logger-B7sBeGa0.cjs');
2
- require('./esm-Ct-Joyue.cjs');
3
- require('./pythonUtils-DBbuI3QJ.cjs');
4
- require('./transform-B1Hi5lWS.cjs');
5
- require('./types-DWNf48sT.cjs');
6
- require('./util-aLhtl3fe.cjs');
7
- require('./fetch-BmbD-v1L.cjs');
8
- require('./cache-BTVYfbka.cjs');
9
- const require_providers = require('./providers-DHbjzW2e.cjs');
10
- require('./createHash-CYQy4YeL.cjs');
11
- require('./genaiTracer-Dres3qrN.cjs');
12
- require('./chat-BE44YOc6.cjs');
13
- require('./transform-D5PjiWiZ.cjs');
14
- require('./messages-XhiwCbi4.cjs');
15
- require('./util-CyUdMzV0.cjs');
16
- require('./responses-ghR3IOfy.cjs');
17
- require('./openai-DUFopMrH.cjs');
18
- require('./util-1wWM599Z.cjs');
19
- require('./completion-CCRT4kX1.cjs');
20
- require('./accounts-Fl2J3_Fu.cjs');
21
- require('./server-B5v33lvE.cjs');
22
- require('./blobs-B-KQAFhX.cjs');
23
- require('./tables-BKTmd6u7.cjs');
24
- require('./extractor-C031XmTA.cjs');
25
- require('./telemetry-DQgVBCAb.cjs');
26
- require('./store-D7CgQzAR.cjs');
27
- require('./base-pGVmXNl4.cjs');
28
- require('./image-CuKHuccK.cjs');
29
- require('./providerRegistry-CvHEVJad.cjs');
30
- require('./rubyUtils-C8MhKGHb.cjs');
31
-
32
- exports.loadApiProvider = require_providers.loadApiProvider;
33
- exports.loadApiProviders = require_providers.loadApiProviders;
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./logger-LSBxlt7a.js";
3
- import "./esm-B9dPm_BF.js";
4
- import { a as validateRubyPath, i as tryPath, n as runRuby, r as state, t as getSysExecutable } from "./rubyUtils-DudlFZed.js";
5
-
6
- export { runRuby };
@@ -1,5 +0,0 @@
1
- import "./logger-CG1uZPbQ.js";
2
- import "./esm-D2pZ87fL.js";
3
- import { a as validateRubyPath, i as tryPath, n as runRuby, r as state, t as getSysExecutable } from "./rubyUtils-CwbGmgYN.js";
4
-
5
- export { runRuby };
@@ -1,5 +0,0 @@
1
- require('./logger-B7sBeGa0.cjs');
2
- require('./esm-Ct-Joyue.cjs');
3
- const require_rubyUtils = require('./rubyUtils-C8MhKGHb.cjs');
4
-
5
- exports.runRuby = require_rubyUtils.runRuby;
@@ -1,6 +0,0 @@
1
- import "./logger-CG1uZPbQ.js";
2
- import "./fetch-D3OHf-lV.js";
3
- import "./accounts-CPDRAMND.js";
4
- import { n as checkServerFeatureSupport, t as BrowserBehavior } from "./server-RV_i_YX5.js";
5
-
6
- export { checkServerFeatureSupport };
@@ -1,6 +0,0 @@
1
- require('./logger-B7sBeGa0.cjs');
2
- require('./fetch-BmbD-v1L.cjs');
3
- require('./accounts-Fl2J3_Fu.cjs');
4
- const require_server = require('./server-B5v33lvE.cjs');
5
-
6
- exports.checkServerFeatureSupport = require_server.checkServerFeatureSupport;
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./logger-LSBxlt7a.js";
3
- import "./fetch-CXZI9RRr.js";
4
- import "./accounts-DVINui-2.js";
5
- import "./cloud-CZ-q9Ier.js";
6
- import { a as openAuthBrowser, i as checkServerRunning, n as BrowserBehaviorNames, o as openBrowser, r as checkServerFeatureSupport, t as BrowserBehavior } from "./server-BJ4m4f1D.js";
7
-
8
- export { checkServerFeatureSupport };
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./logger-LSBxlt7a.js";
3
- import "./types-CXQduE9o.js";
4
- import "./tables-DMegD0Xf.js";
5
- import { n as getTraceStore, t as TraceStore } from "./store-s3SftUwF.js";
6
-
7
- export { getTraceStore };
@@ -1,6 +0,0 @@
1
- import "./logger-CG1uZPbQ.js";
2
- import "./types-C5hEkb-x.js";
3
- import "./tables-DfTsNN7X.js";
4
- import { n as getTraceStore, t as TraceStore } from "./store-DJNsD1iC.js";
5
-
6
- export { getTraceStore };
@@ -1,6 +0,0 @@
1
- require('./logger-B7sBeGa0.cjs');
2
- require('./types-DWNf48sT.cjs');
3
- require('./tables-BKTmd6u7.cjs');
4
- const require_store = require('./store-D7CgQzAR.cjs');
5
-
6
- exports.getTraceStore = require_store.getTraceStore;
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./logger-LSBxlt7a.js";
3
- import "./fetch-CXZI9RRr.js";
4
- import "./accounts-DVINui-2.js";
5
- import "./cloud-CZ-q9Ier.js";
6
- import { n as TelemetryEventSchema, r as telemetry_default, t as Telemetry } from "./telemetry--WAdAfVi.js";
7
-
8
- export { telemetry_default as default };
@@ -1,6 +0,0 @@
1
- require('./logger-B7sBeGa0.cjs');
2
- require('./fetch-BmbD-v1L.cjs');
3
- require('./accounts-Fl2J3_Fu.cjs');
4
- const require_telemetry = require('./telemetry-DQgVBCAb.cjs');
5
-
6
- exports.default = require_telemetry.telemetry_default;
@@ -1,6 +0,0 @@
1
- import "./logger-CG1uZPbQ.js";
2
- import "./fetch-D3OHf-lV.js";
3
- import "./accounts-CPDRAMND.js";
4
- import { n as telemetry_default, t as Telemetry } from "./telemetry-BedSm-bZ.js";
5
-
6
- export { telemetry_default as default };
@@ -1,6 +0,0 @@
1
- require('./logger-B7sBeGa0.cjs');
2
- require('./esm-Ct-Joyue.cjs');
3
- require('./pythonUtils-DBbuI3QJ.cjs');
4
- const require_transform = require('./transform-B1Hi5lWS.cjs');
5
-
6
- exports.TransformInputType = require_transform.TransformInputType;
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./chunk-DHDDz29n.js";
3
- import "./logger-LSBxlt7a.js";
4
- import "./esm-B9dPm_BF.js";
5
- import "./pythonUtils-CcT5LH1M.js";
6
- import { n as transform, t as TransformInputType } from "./transform-BEgStbHK.js";
7
-
8
- export { TransformInputType };
@@ -1,7 +0,0 @@
1
- import "./chunk-FhC4c-0y.js";
2
- import "./logger-CG1uZPbQ.js";
3
- import "./esm-D2pZ87fL.js";
4
- import "./pythonUtils-hZ8LeQLv.js";
5
- import { n as transform, t as TransformInputType } from "./transform-CYDILYDe.js";
6
-
7
- export { TransformInputType };
@@ -1,35 +0,0 @@
1
- //#region src/providers/transformersAvailability.ts
2
- /**
3
- * Utility for checking @huggingface/transformers availability.
4
- *
5
- * This module provides lazy checking of the optional @huggingface/transformers dependency
6
- * with caching to avoid repeated import attempts.
7
- */
8
- let transformersAvailableCache = null;
9
- /**
10
- * Checks if the @huggingface/transformers library is available.
11
- * Result is cached after first call for efficiency.
12
- */
13
- async function isTransformersAvailable() {
14
- if (transformersAvailableCache !== null) return transformersAvailableCache;
15
- try {
16
- await import("@huggingface/transformers");
17
- transformersAvailableCache = true;
18
- } catch {
19
- transformersAvailableCache = false;
20
- }
21
- return transformersAvailableCache;
22
- }
23
- /**
24
- * Validates that the @huggingface/transformers library is installed.
25
- * Throws an error with installation instructions if not available.
26
- *
27
- * Call this early (before pipeline creation) to fail fast with a helpful message.
28
- */
29
- async function validateTransformersDependency(checkTransformers = isTransformersAvailable) {
30
- if (!await checkTransformers()) throw new Error("@huggingface/transformers is required for local embedding and text generation providers.\nInstall it with: npm install @huggingface/transformers");
31
- }
32
-
33
- //#endregion
34
- export { validateTransformersDependency };
35
- //# sourceMappingURL=transformersAvailability-eJooj0gX.js.map