promptfoo 0.120.26 → 0.121.1

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 (366) hide show
  1. package/README.md +1 -1
  2. package/dist/drizzle/0023_wooden_mandrill.sql +2 -0
  3. package/dist/drizzle/meta/0023_snapshot.json +1496 -0
  4. package/dist/drizzle/meta/_journal.json +7 -0
  5. package/dist/src/{ListApp-D3DG0F8h.js → ListApp-Du7YVwj5.js} +2 -4
  6. package/dist/src/accounts-BgNJDBE6.js +206 -0
  7. package/dist/src/{accounts-BzEY8H3v.cjs → accounts-Bx-x3bmW.cjs} +99 -80
  8. package/dist/src/{accounts-DHHiXsy6.js → accounts-CMqkzrVf.js} +61 -36
  9. package/dist/src/{accounts-R3gfCR_g.js → accounts-xrUGFA6n.js} +60 -35
  10. package/dist/src/{agentic-utils-D6_gzOUF.js → agentic-utils-BKIN5PKu.js} +9 -10
  11. package/dist/src/{agents-CwM7re15.cjs → agents-B0f4HICh.cjs} +37 -40
  12. package/dist/src/{agents-Cnph5GLD.js → agents-C-dDThPK.js} +37 -37
  13. package/dist/src/{agents-C7BiinFI.cjs → agents-CErsqg5U.cjs} +19 -27
  14. package/dist/src/{agents-v4cW_ZgC.js → agents-CVIn-Utx.js} +19 -22
  15. package/dist/src/{agents-GiUianme.js → agents-CXknwsFX.js} +37 -40
  16. package/dist/src/{agents-DETIQHqF.js → agents-DeH4Gu94.js} +21 -28
  17. package/dist/src/{agents-DYIT-hQy.js → agents-Dy2YpZpa.js} +38 -41
  18. package/dist/src/{agents-Cao4i7AX.js → agents-aF4-T121.js} +19 -30
  19. package/dist/src/{aimlapi-DMF6v_vb.js → aimlapi-BAGZDo5G.js} +16 -18
  20. package/dist/src/{aimlapi-CMJpKK-B.js → aimlapi-BNfTBexL.js} +15 -17
  21. package/dist/src/{aimlapi-DtSf1ykJ.js → aimlapi-DHRKlBEA.js} +15 -4
  22. package/dist/src/{aimlapi-DoGLcQW_.cjs → aimlapi-tg0Gkcvr.cjs} +15 -16
  23. package/dist/src/app/assets/index-BFCZg7hQ.js +439 -0
  24. package/dist/src/app/assets/index-NCn4eVBv.css +1 -0
  25. package/dist/src/app/assets/{vendor-charts-CYyo8R8v.js → vendor-charts-CCl15Imd.js} +1 -1
  26. package/dist/src/app/assets/{vendor-markdown-DSmzq4Jh.js → vendor-markdown-0tekx3KX.js} +1 -1
  27. package/dist/src/app/index.html +4 -34
  28. package/dist/src/{audio-DUH4q0Xq.js → audio-BRODU0UK.js} +7 -9
  29. package/dist/src/{audio-BWjyvHn9.cjs → audio-BWeaWovU.cjs} +6 -7
  30. package/dist/src/{audio-U580w8jM.js → audio-CHQ4r-RV.js} +6 -5
  31. package/dist/src/{audio-BrJBFN2b.js → audio-tf_NBjlC.js} +6 -8
  32. package/dist/src/base-B0tcrnq_.js +193 -0
  33. package/dist/src/base-B4QJRyFS.js +194 -0
  34. package/dist/src/base-DBtwl2FR.cjs +222 -0
  35. package/dist/src/base-fEDN28WM.js +193 -0
  36. package/dist/src/{blobs-kt8v3UyH.js → blobs-BAU-dXan.js} +9 -12
  37. package/dist/src/{blobs-C9J2mVgo.js → blobs-Bpg5rH6i.js} +9 -12
  38. package/dist/src/{blobs-673H0jCl.cjs → blobs-DvS-O6be.cjs} +34 -37
  39. package/dist/src/blobs-qTYm-1PY.js +236 -0
  40. package/dist/src/{cache-BLLayYEN.js → cache-8XhNqPKW.js} +64 -67
  41. package/dist/src/cache-Bbn1Nyrd.cjs +5 -0
  42. package/dist/src/cache-BwsMSda7.js +6 -0
  43. package/dist/src/{cache-mIszOnuz.js → cache-CG0SlR1d.js} +64 -66
  44. package/dist/src/{cache-7xULbvt3.cjs → cache-COish3-W.cjs} +114 -117
  45. package/dist/src/cache-D3eqDYGU.js +739 -0
  46. package/dist/src/{chat-Fl6TZJRS.cjs → chat-2K608PeQ.cjs} +20 -21
  47. package/dist/src/chat-BKm79wib.js +764 -0
  48. package/dist/src/{chat-XPN9YHhr.js → chat-CM_kyI8B.js} +20 -9
  49. package/dist/src/{chat-DIywASPG.js → chat-CRWNNq73.js} +49 -49
  50. package/dist/src/{chat-C8Ei4f87.js → chat-CznLWr_D.js} +49 -49
  51. package/dist/src/{chat-CgyGj2hC.js → chat-DHMH-N64.js} +20 -22
  52. package/dist/src/{chat-C4zqjObh.cjs → chat-DaqekjFr.cjs} +69 -69
  53. package/dist/src/{chat-Cpz3O-Xl.js → chat-DxysjBvt.js} +21 -23
  54. package/dist/src/{chatkit-Dpxrq4eD.js → chatkit-65VXf5SR.js} +58 -58
  55. package/dist/src/{chatkit-DIrJX8xk.js → chatkit-Be-Q-a9F.js} +58 -60
  56. package/dist/src/{chatkit-DEls11hE.js → chatkit-BxFvW8KY.js} +58 -60
  57. package/dist/src/{chatkit-e25Ziu17.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
  58. package/dist/src/chunk-DEq-mXcV.js +15 -0
  59. package/dist/src/chunk-DRamLcfz.js +16 -0
  60. package/dist/src/{claude-agent-sdk-6-xTaLwM.js → claude-agent-sdk-BLTu0WBO.js} +45 -31
  61. package/dist/src/{claude-agent-sdk-BzxF6NIJ.cjs → claude-agent-sdk-CJH22shf.cjs} +44 -29
  62. package/dist/src/{claude-agent-sdk-CmkTnKGH.js → claude-agent-sdk-D6_k9FKA.js} +45 -33
  63. package/dist/src/{claude-agent-sdk-rXCBLK_o.js → claude-agent-sdk-Dy5lT-Tx.js} +46 -21
  64. package/dist/src/{cloud-BMbRVJFw.js → cloud-Bc9526yV.js} +32 -12
  65. package/dist/src/cloud-DmE0EwsY.js +4 -0
  66. package/dist/src/{cloudflare-ai-CUg4BTcj.js → cloudflare-ai-C9r2sRhw.js} +16 -18
  67. package/dist/src/{cloudflare-ai-Z9X219gp.js → cloudflare-ai-CWWJCRim.js} +16 -4
  68. package/dist/src/{cloudflare-ai-BAQ0u_dg.cjs → cloudflare-ai-ClWSdor4.cjs} +16 -17
  69. package/dist/src/{cloudflare-ai-CobxMTR4.js → cloudflare-ai-ICsOuD-z.js} +17 -19
  70. package/dist/src/{cloudflare-gateway-C0sgfr_z.cjs → cloudflare-gateway-C2_-KG5o.cjs} +21 -22
  71. package/dist/src/{cloudflare-gateway-_itGuXry.js → cloudflare-gateway-D6O7AlYb.js} +23 -23
  72. package/dist/src/{cloudflare-gateway-D2_yi-Fh.js → cloudflare-gateway-D6xFc5pa.js} +21 -25
  73. package/dist/src/{cloudflare-gateway-Djf3F3_H.js → cloudflare-gateway-pXGHxJ47.js} +26 -14
  74. package/dist/src/{codex-sdk-ibXwdglL.js → codex-sdk-C6UMlxwV.js} +49 -32
  75. package/dist/src/{codex-sdk-BASDNkIl.js → codex-sdk-DUwKWezN.js} +49 -30
  76. package/dist/src/{codex-sdk-dSnGdgIp.js → codex-sdk-GGAw0qbD.js} +49 -32
  77. package/dist/src/{codex-sdk-wTEpMM_X.cjs → codex-sdk-fAO0c3yA.cjs} +49 -32
  78. package/dist/src/{cometapi-B01btbfb.js → cometapi-BasUi7-_.js} +17 -19
  79. package/dist/src/{cometapi-DHUAH6nK.js → cometapi-Bbjp5V4x.js} +16 -4
  80. package/dist/src/{cometapi-ChAaRjg5.js → cometapi-DkXrKi5z.js} +21 -24
  81. package/dist/src/{cometapi-JbvOJSCO.cjs → cometapi-vY6aDZgo.cjs} +21 -22
  82. package/dist/src/{completion-D9_MDlnd.js → completion-6Mx_iXxK.js} +11 -13
  83. package/dist/src/{completion-BBJ6zmG3.js → completion-C5rtR_9P.js} +11 -13
  84. package/dist/src/{completion-DDyL3Cb2.cjs → completion-CDOouNzq.cjs} +21 -23
  85. package/dist/src/completion-C_P3ypkJ.js +120 -0
  86. package/dist/src/createHash-CTQmL3G2.js +15 -0
  87. package/dist/src/createHash-CfZSc0b4.cjs +27 -0
  88. package/dist/src/createHash-Da8fMwqB.js +16 -0
  89. package/dist/src/createHash-DmPQkvBh.js +15 -0
  90. package/dist/src/{docker-JAAubMw3.js → docker-5KcG-_86.js} +18 -20
  91. package/dist/src/{docker-Ckw-j7Rr.cjs → docker-BwsKwxFs.cjs} +18 -19
  92. package/dist/src/{docker-vnOg96gi.js → docker-CZnqU1XV.js} +18 -7
  93. package/dist/src/{docker-BuButc4D.js → docker-DzxyDPIj.js} +19 -21
  94. package/dist/src/entrypoint.js +2 -3
  95. package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
  96. package/dist/src/{esm-CYhseqj4.js → esm-C03C-mv3.js} +17 -20
  97. package/dist/src/{esm-rDtG_2rg.js → esm-CaIwzWR5.js} +18 -21
  98. package/dist/src/esm-Cd1AjG1D.js +379 -0
  99. package/dist/src/{esm-BQkx5roy.cjs → esm-CnNt7sI4.cjs} +47 -49
  100. package/dist/src/eval-17JizQIv.js +15 -0
  101. package/dist/src/{eval-CYrbG57o.js → eval-DmFyWU7i.js} +49 -55
  102. package/dist/src/{evalResult-COsVttMA.js → evalResult-CDQiuUuf.js} +16 -12
  103. package/dist/src/{evalResult-6JaUIStC.js → evalResult-CTG2AHOS.js} +10 -11
  104. package/dist/src/evalResult-Cqj8pldJ.js +12 -0
  105. package/dist/src/{evalResult-DlRfu_Rq.cjs → evalResult-Dap2CekP.cjs} +20 -21
  106. package/dist/src/evalResult-DvcJAWJU.cjs +10 -0
  107. package/dist/src/evalResult-Hftn-S_i.js +10 -0
  108. package/dist/src/evaluator-B2CFNt-P.js +36 -0
  109. package/dist/src/{evaluator-3EJCMTs0.js → evaluator-DPFRbFIL.js} +210 -232
  110. package/dist/src/{extractor-LSYjrhK0.js → extractor-CFG6bcWJ.js} +23 -38
  111. package/dist/src/{extractor-DbhlYEeo.cjs → extractor-DX36oYEv.cjs} +37 -64
  112. package/dist/src/{extractor-Hs7la_19.js → extractor-M67RUtg6.js} +23 -38
  113. package/dist/src/extractor-YMU_Gvt8.js +374 -0
  114. package/dist/src/fetch-4M3YRaqL.js +780 -0
  115. package/dist/src/{fetch-18MuNu9i.js → fetch-60Gzydls.js} +60 -46
  116. package/dist/src/{fetch-SRsE6Ctl.js → fetch-BMv0O527.js} +41 -35
  117. package/dist/src/{fetch-ZMn_oemb.cjs → fetch-BxUk8odA.cjs} +268 -279
  118. package/dist/src/fetch-KV5kNASw.js +5 -0
  119. package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
  120. package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
  121. package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
  122. package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
  123. package/dist/src/{formatDuration-Doo0xq-z.js → formatDuration-DgBVMN65.js} +2 -2
  124. package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
  125. package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
  126. package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
  127. package/dist/src/{genaiTracer-CQlpZkrp.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
  128. package/dist/src/graders-Bu0H9nXi.js +32 -0
  129. package/dist/src/{graders-BaMCwIKp.js → graders-CHO8EPM4.js} +385 -417
  130. package/dist/src/graders-Cfhkvx-e.js +34 -0
  131. package/dist/src/{graders-QsALpIdy.js → graders-CpdqD9PI.js} +385 -417
  132. package/dist/src/graders-DClJVpGP.cjs +32 -0
  133. package/dist/src/{graders-DzUUnUjC.cjs → graders-DOXycdlG.cjs} +721 -753
  134. package/dist/src/graders-DcnJsrMO.js +32 -0
  135. package/dist/src/graders-R9rYUM0d.js +13466 -0
  136. package/dist/src/{image-BiEVdpdP.js → image-BmEZqVmk.js} +57 -18
  137. package/dist/src/{image-mhAGP07h.js → image-CBBVXWuT.js} +57 -18
  138. package/dist/src/{image-D10zEe1f.cjs → image-CDLQOcqT.cjs} +6 -7
  139. package/dist/src/{image-COCWy5dX.js → image-DJEvKveK.js} +6 -5
  140. package/dist/src/{image-C3BjJUAU.cjs → image-DTedmQPg.cjs} +77 -32
  141. package/dist/src/{image-DB4sHxdJ.js → image-gvmivTEe.js} +7 -9
  142. package/dist/src/image-pAX56tPG.js +257 -0
  143. package/dist/src/{image-BXt_7u0v.js → image-tL5hIOFh.js} +6 -8
  144. package/dist/src/index.cjs +696 -693
  145. package/dist/src/index.d.cts +113 -10
  146. package/dist/src/index.d.ts +113 -6
  147. package/dist/src/index.js +657 -658
  148. package/dist/src/{interactiveCheck-DU-MAhp5.js → interactiveCheck-BgLZUIt3.js} +7 -8
  149. package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
  150. package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
  151. package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
  152. package/dist/src/invariant-vgHWClmd.js +25 -0
  153. package/dist/src/{knowledgeBase-DotRBzUE.js → knowledgeBase-CLJybhnF.js} +19 -34
  154. package/dist/src/{knowledgeBase-XJQ0Qyez.js → knowledgeBase-CoU-UQBg.js} +17 -41
  155. package/dist/src/{knowledgeBase-CMvMlLZR.js → knowledgeBase-DjWPVqSb.js} +17 -43
  156. package/dist/src/{knowledgeBase-Bnb00xKs.cjs → knowledgeBase-wkxuRFhA.cjs} +17 -40
  157. package/dist/src/{litellm-CHrRmPAe.js → litellm-B9Hysuri.js} +16 -18
  158. package/dist/src/{litellm-CrLJrPIm.js → litellm-CTfa0hqi.js} +15 -17
  159. package/dist/src/{litellm-BrnZhMcL.cjs → litellm-NYpQ8RQu.cjs} +15 -16
  160. package/dist/src/{litellm-BECdjOTx.js → litellm-ePxtr9F1.js} +15 -4
  161. package/dist/src/{logger-w8Ozp0Td.js → logger-CT3IKMKA.js} +24 -41
  162. package/dist/src/{logger-BdZ-IqBc.cjs → logger-Cp1GPUjj.cjs} +166 -192
  163. package/dist/src/logger-DLcq4dWf.js +713 -0
  164. package/dist/src/{logger-BotXmWKW.js → logger-KkObSCzq.js} +27 -43
  165. package/dist/src/{luma-ray-C0RkI3lt.cjs → luma-ray-B0GGNRc1.cjs} +20 -21
  166. package/dist/src/{luma-ray-C-w6EsJm.js → luma-ray-BE2mOt6N.js} +20 -13
  167. package/dist/src/{luma-ray-BOeX-h0M.js → luma-ray-BW9IRGIc.js} +22 -21
  168. package/dist/src/{luma-ray-DgKLS0BF.js → luma-ray-Cm1KZBhs.js} +20 -23
  169. package/dist/src/main.js +1985 -2055
  170. package/dist/src/{messages-DXV3Qh8_.cjs → messages-1JrJs91T.cjs} +35 -34
  171. package/dist/src/{messages-D61tPFQo.js → messages-1x9atZmP.js} +25 -24
  172. package/dist/src/{messages-CDZYGNlS.js → messages-BLbWdsyt.js} +25 -24
  173. package/dist/src/messages-D8EA0oDc.js +240 -0
  174. package/dist/src/{meteor-P2rUE-Uz.js → meteor-44VjEACX.js} +3 -4
  175. package/dist/src/{meteor-SLNTgmXm.js → meteor-D-SotUw9.js} +3 -4
  176. package/dist/src/{meteor-odmwVbyG.cjs → meteor-DLZZ3osF.cjs} +3 -4
  177. package/dist/src/{meteor-Dj8cTkU_.js → meteor-DUiCJRC-.js} +3 -4
  178. package/dist/src/modelslab-C1OLRmVX.js +166 -0
  179. package/dist/src/modelslab-CqXBy3U8.js +168 -0
  180. package/dist/src/modelslab-DcOSFwKh.cjs +166 -0
  181. package/dist/src/modelslab-X5-4LroM.js +166 -0
  182. package/dist/src/{nova-reel-C2LFfVTf.js → nova-reel-BgS1ZWuK.js} +20 -13
  183. package/dist/src/{nova-reel-DtCjbD5O.js → nova-reel-D2ZkOSyr.js} +22 -21
  184. package/dist/src/{nova-reel-D9FXq3Mt.cjs → nova-reel-D9xfaMBs.cjs} +20 -21
  185. package/dist/src/{nova-reel-Bk5npr2q.js → nova-reel-DihqLeol.js} +20 -23
  186. package/dist/src/{nova-sonic-BoRSY_U6.cjs → nova-sonic-DVu3mMIy.cjs} +30 -31
  187. package/dist/src/{nova-sonic-D_qERM-K.js → nova-sonic-DezhVUYT.js} +30 -26
  188. package/dist/src/{nova-sonic-CgaWLDM1.js → nova-sonic-P-CdUMlV.js} +30 -31
  189. package/dist/src/{nova-sonic-BXRfQyF-.js → nova-sonic-Q3BOJeig.js} +31 -32
  190. package/dist/src/{openai-Bigwjgo1.cjs → openai-Cuif0GEt.cjs} +8 -9
  191. package/dist/src/{openai-Dz3surb_.js → openai-DElQ-fPX.js} +3 -4
  192. package/dist/src/{openai-CT5fwbve.js → openai-DhbB7eWK.js} +3 -4
  193. package/dist/src/openai-j-sE2O7r.js +44 -0
  194. package/dist/src/{openclaw-dHLcXUWZ.js → openclaw-BiSZPL7J.js} +20 -14
  195. package/dist/src/{openclaw-CpPrXwf6.js → openclaw-Bv1DINsX.js} +20 -27
  196. package/dist/src/{openclaw-B6XY2kUf.js → openclaw-D1D_ej1z.js} +21 -28
  197. package/dist/src/{openclaw-DDSfq5fp.cjs → openclaw-DAfWQn-o.cjs} +33 -39
  198. package/dist/src/opencode-sdk-C7m-wRfI.js +560 -0
  199. package/dist/src/opencode-sdk-CfaLN8PY.cjs +564 -0
  200. package/dist/src/opencode-sdk-D95s6SnR.js +562 -0
  201. package/dist/src/opencode-sdk-DxUPkLT7.js +560 -0
  202. package/dist/src/{otlpReceiver-DmRb0NBj.js → otlpReceiver--AIRW_S4.js} +53 -51
  203. package/dist/src/{otlpReceiver-Dg817agV.js → otlpReceiver-Bn5wGB1v.js} +53 -55
  204. package/dist/src/{otlpReceiver-B6Xo4KZM.cjs → otlpReceiver-Diec4cln.cjs} +53 -55
  205. package/dist/src/{otlpReceiver-BO0rbDzh.js → otlpReceiver-g3ByGaXs.js} +53 -55
  206. package/dist/src/{providerRegistry-Xf0qdqGQ.js → providerRegistry-B0RUOLI_.js} +7 -8
  207. package/dist/src/{providerRegistry-wCWd7sKQ.js → providerRegistry-CD8MEar9.js} +7 -8
  208. package/dist/src/{providerRegistry-lc7a7utN.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
  209. package/dist/src/providerRegistry-DM8rZYol.js +45 -0
  210. package/dist/src/providers-B3HvufyI.js +33246 -0
  211. package/dist/src/{providers-BiNq_Iyc.js → providers-BKRJTjBz.js} +1743 -1795
  212. package/dist/src/providers-C1rOSHiR.js +32 -0
  213. package/dist/src/{providers-BlEhY5mi.js → providers-CFLy1_ji.js} +1750 -1802
  214. package/dist/src/{providers-BNKVY53V.cjs → providers-CFu-TZl-.cjs} +2111 -2163
  215. package/dist/src/providers-CxmDwEFf.cjs +31 -0
  216. package/dist/src/providers-Dodakqr0.js +30 -0
  217. package/dist/src/providers-GIQ2TcsA.js +30 -0
  218. package/dist/src/{pythonUtils-r1uBuA0n.js → pythonUtils-C3py6GC1.js} +18 -19
  219. package/dist/src/{pythonUtils-DZ6EbdY4.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
  220. package/dist/src/{pythonUtils-vMlk9Qp5.js → pythonUtils-D5nxkQ0P.js} +18 -19
  221. package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
  222. package/dist/src/quiverai-C2jVwbH1.js +213 -0
  223. package/dist/src/quiverai-CI6gYJVI.js +213 -0
  224. package/dist/src/quiverai-CLkWkyZc.cjs +213 -0
  225. package/dist/src/quiverai-MHSxbmmZ.js +215 -0
  226. package/dist/src/{render-CAZvKKkB.js → render-Drod8m7K.js} +4 -5
  227. package/dist/src/{responses-DLLjADw5.js → responses-BKqJmhhc.js} +34 -27
  228. package/dist/src/{responses-TsdODUpm.js → responses-CGw0DCzh.js} +34 -27
  229. package/dist/src/responses-jxdehPkC.js +660 -0
  230. package/dist/src/{responses-zOtKtnY_.cjs → responses-tD4Bd4dc.cjs} +49 -42
  231. package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
  232. package/dist/src/{rubyUtils-Cs35SDYa.js → rubyUtils-BUVePouc.js} +27 -20
  233. package/dist/src/rubyUtils-BcuGX77l.js +222 -0
  234. package/dist/src/{rubyUtils-BtjlqyXt.js → rubyUtils-Boc4HZzX.js} +18 -19
  235. package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
  236. package/dist/src/{rubyUtils-DCVaJ3mc.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
  237. package/dist/src/{sagemaker-Du4LIR97.js → sagemaker-BK4Zb993.js} +75 -70
  238. package/dist/src/{sagemaker-CLdUAv5z.js → sagemaker-BfiWTmvn.js} +77 -77
  239. package/dist/src/{sagemaker-DwNnEVYt.cjs → sagemaker-CcQHM1jV.cjs} +75 -76
  240. package/dist/src/{sagemaker-BcgLu0U4.js → sagemaker-D2Q1c-sD.js} +75 -79
  241. package/dist/src/{scanner-Dyw21Wg_.js → scanner-J8CA3LsV.js} +149 -122
  242. package/dist/src/server/index.js +5620 -67302
  243. package/dist/src/{server-CgUQ25qW.cjs → server-B0PPuDw-.cjs} +57 -67
  244. package/dist/src/server-B1vi21hA.js +7 -0
  245. package/dist/src/{server-CbMTRQkg.js → server-BC7XJFgr.js} +19 -24
  246. package/dist/src/server-Cm9Kai_h.cjs +5 -0
  247. package/dist/src/{server-DWmZLfCy.js → server-DbFphssR.js} +26 -29
  248. package/dist/src/server-OAs3nBRT.js +229 -0
  249. package/dist/src/{signal-Bl32q42d.js → signal-BOTbd53Z.js} +9 -11
  250. package/dist/src/{slack-BtMkB6xP.cjs → slack-BmVAVGaK.cjs} +7 -8
  251. package/dist/src/{slack-OZYxoVON.js → slack-DCUPTzS2.js} +8 -8
  252. package/dist/src/{slack-DPqj42Ts.js → slack-DOdy_kyv.js} +7 -8
  253. package/dist/src/{slack-BfdBx2tO.js → slack-DXMKtA-f.js} +7 -9
  254. package/dist/src/store-BNmZ1KAz.cjs +5 -0
  255. package/dist/src/{store-BqwfFEyF.cjs → store-BSc-TF2w.cjs} +44 -45
  256. package/dist/src/store-BltJg2cd.js +6 -0
  257. package/dist/src/{store-D4gdn9ih.js → store-D1tv90v3.js} +34 -35
  258. package/dist/src/{store-2ocbYY9D.js → store-DQLEjuEO.js} +40 -36
  259. package/dist/src/store-Ub2vaGJ1.js +228 -0
  260. package/dist/src/{tables-D-NSwNIb.js → tables-5EvT_Bwn.js} +23 -23
  261. package/dist/src/{tables-B9E1kRp-.cjs → tables-C7K-XKWp.cjs} +93 -93
  262. package/dist/src/{tables-C7TT2XVn.js → tables-D36WTqKX.js} +25 -25
  263. package/dist/src/tables-xKANLRBD.js +288 -0
  264. package/dist/src/telemetry-5BCRNBbe.cjs +5 -0
  265. package/dist/src/{telemetry-DZ_7PaVq.js → telemetry-C15ziL8u.js} +17 -14
  266. package/dist/src/{telemetry-BXyVqyAg.js → telemetry-C2YDkUQH.js} +11 -13
  267. package/dist/src/{telemetry-D0_yFdtU.cjs → telemetry-CbrnxHp_.cjs} +21 -24
  268. package/dist/src/telemetry-D4W5hboe.js +7 -0
  269. package/dist/src/telemetry-DMb2Mpfm.js +171 -0
  270. package/dist/src/{text-Dm78AVGG.js → text-B_UCRPp2.js} +2 -2
  271. package/dist/src/{text-DF2hMKdg.cjs → text-CW1cyrwj.cjs} +12 -13
  272. package/dist/src/{text-DgMr_tiM.js → text-Db-Wt2u2.js} +2 -2
  273. package/dist/src/text-TIv0QYnd.js +22 -0
  274. package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
  275. package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
  276. package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
  277. package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
  278. package/dist/src/{transcription-FNIz3YOe.cjs → transcription-CL78qbOU.cjs} +14 -15
  279. package/dist/src/{transcription-C-M81iDA.js → transcription-DAtxHhAM.js} +14 -7
  280. package/dist/src/{transcription-CYuY5sFO.js → transcription-LNZTNUUL.js} +14 -16
  281. package/dist/src/{transcription-Ch7S-LWw.js → transcription-QHh3AH6Z.js} +15 -17
  282. package/dist/src/{transform-CoP2bJ7P.js → transform-Cgi24fJ7.js} +94 -66
  283. package/dist/src/{transform-Kd6u-oNm.cjs → transform-CzK1Q0zl.cjs} +24 -26
  284. package/dist/src/{transform-D8dILpfZ.js → transform-DECvGmzp.js} +15 -13
  285. package/dist/src/{transform-DMaxQwDx.js → transform-DGLazrMm.js} +94 -66
  286. package/dist/src/transform-DGxXocjk.js +1506 -0
  287. package/dist/src/{transform-ivxEY4f7.cjs → transform-DOcQeLld.cjs} +234 -206
  288. package/dist/src/transform-DTGDnAzW.js +6 -0
  289. package/dist/src/{transform-CqTFr7KR.js → transform-DilY9wbS.js} +10 -12
  290. package/dist/src/transform-aa6tmVpZ.js +216 -0
  291. package/dist/src/transform-m3qNw4KP.cjs +5 -0
  292. package/dist/src/{transformersAvailability-DEU2naS1.js → transformersAvailability-CEVM2GNQ.js} +2 -2
  293. package/dist/src/{transformersAvailability-Bkep3ka7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
  294. package/dist/src/{transformersAvailability-DwmezkVe.js → transformersAvailability-D6c6ROpT.js} +2 -2
  295. package/dist/src/{types-t52w-XsS.js → types-CH3Ge2sE.js} +103 -92
  296. package/dist/src/{types-DMVjYLpx.js → types-CLKiCBW3.js} +98 -91
  297. package/dist/src/types-CN_TZ2GJ.js +3260 -0
  298. package/dist/src/{types-BIfttHrT.cjs → types-LJ0r3wbR.cjs} +573 -566
  299. package/dist/src/util-5cB-L7U3.js +1430 -0
  300. package/dist/src/util-6-GqIvzS.js +599 -0
  301. package/dist/src/{util-vjscpUzy.js → util-B7T3SiBS.js} +5 -6
  302. package/dist/src/{util-Cl0zfT3V.js → util-Betm42rL.js} +44 -17
  303. package/dist/src/{util-CUEt0Vum.js → util-C-PPYSMq.js} +44 -17
  304. package/dist/src/{util-DkFTvieG.cjs → util-CchiqXh_.cjs} +35 -36
  305. package/dist/src/{util-mJ58qbbw.js → util-DaWTWKBK.js} +5 -6
  306. package/dist/src/{util-C08Kns6-.cjs → util-Db0a0AFH.cjs} +89 -62
  307. package/dist/src/{util-DiCePfDu.js → util-Dlz_Wvgm.js} +102 -53
  308. package/dist/src/{util-BSh4a_Q8.js → util-YT5HPZaS.js} +102 -53
  309. package/dist/src/{util-DUYOvxAy.cjs → util-Yz-1aEhW.cjs} +274 -219
  310. package/dist/src/util-ZZH-3QZz.js +293 -0
  311. package/dist/src/{utils-DFaZa6Rf.cjs → utils-Cz9qXqII.cjs} +32 -35
  312. package/dist/src/{utils-CVzb4YiI.js → utils-XiOAgly5.js} +4 -7
  313. package/dist/src/utils-dLokC-eR.js +94 -0
  314. package/dist/src/{utils-JaY9veb5.js → utils-f2-Moju7.js} +4 -7
  315. package/dist/tsconfig.tsbuildinfo +1 -1
  316. package/package.json +59 -53
  317. package/dist/src/app/assets/index-BOgkICuY.css +0 -1
  318. package/dist/src/app/assets/index-CSgqn_Vd.js +0 -428
  319. package/dist/src/app/tsconfig.app.tsbuildinfo +0 -1
  320. package/dist/src/base-BaXmtXYp.js +0 -107
  321. package/dist/src/base-Dtp8b4_N.js +0 -106
  322. package/dist/src/base-f71xxWai.cjs +0 -111
  323. package/dist/src/cache-BUPcq0Ad.js +0 -6
  324. package/dist/src/cache-CVfRb-HD.cjs +0 -6
  325. package/dist/src/cache-O4EuX2JV.js +0 -8
  326. package/dist/src/chunk-DHDDz29n.js +0 -22
  327. package/dist/src/chunk-FhC4c-0y.js +0 -21
  328. package/dist/src/cloud-CZ4hytdm.js +0 -5
  329. package/dist/src/eval-CKHWqG9f.js +0 -16
  330. package/dist/src/evalResult-CxTP-LMm.cjs +0 -11
  331. package/dist/src/evalResult-CzLURDcP.js +0 -13
  332. package/dist/src/evalResult-DyttNQ_G.js +0 -11
  333. package/dist/src/evaluator-0PvfeBYh.js +0 -38
  334. package/dist/src/fetch-Bi0o-fdp.js +0 -4
  335. package/dist/src/fetch-CMptBDVg.cjs +0 -4
  336. package/dist/src/fetch-DAZkv3gV.js +0 -6
  337. package/dist/src/graders-BCytzXrb.js +0 -34
  338. package/dist/src/graders-CGZQShfJ.cjs +0 -33
  339. package/dist/src/graders-spkuVC-E.js +0 -36
  340. package/dist/src/opencode-sdk-CImWVqy9.js +0 -382
  341. package/dist/src/opencode-sdk-CuCztr4P.js +0 -380
  342. package/dist/src/opencode-sdk-DhcfRbBH.js +0 -376
  343. package/dist/src/opencode-sdk-mqF-Oj3f.cjs +0 -383
  344. package/dist/src/providers-BMZZmPBJ.cjs +0 -32
  345. package/dist/src/providers-CQQrNaJk.js +0 -32
  346. package/dist/src/providers-Ck8HyrC-.js +0 -34
  347. package/dist/src/quiverai-BNfIwKCO.cjs +0 -54
  348. package/dist/src/quiverai-BQigKdIH.js +0 -57
  349. package/dist/src/quiverai-Bfy2WnE2.js +0 -55
  350. package/dist/src/quiverai-CedIP0PJ.js +0 -43
  351. package/dist/src/rubyUtils-D7--T12C.js +0 -6
  352. package/dist/src/rubyUtils-DRRiMFV2.js +0 -5
  353. package/dist/src/rubyUtils-vb8OYFC-.cjs +0 -5
  354. package/dist/src/server-BUbS0Qfh.js +0 -6
  355. package/dist/src/server-XpGXFHkS.cjs +0 -6
  356. package/dist/src/server-gfOx5Zrk.js +0 -8
  357. package/dist/src/store-5u2yriTV.js +0 -7
  358. package/dist/src/store-D_lq_8oQ.js +0 -6
  359. package/dist/src/store-m5KT6Ly7.cjs +0 -6
  360. package/dist/src/telemetry-5RHFoCJh.js +0 -6
  361. package/dist/src/telemetry-Do8wMnA-.js +0 -8
  362. package/dist/src/telemetry-LojxPoFq.cjs +0 -6
  363. package/dist/src/transform-8eGmaH-7.js +0 -7
  364. package/dist/src/transform-BRVvWaG4.cjs +0 -6
  365. package/dist/src/transform-GybT0X0u.js +0 -8
  366. package/dist/src/transformersAvailability-DkAWaK5B.js +0 -35
@@ -1,383 +0,0 @@
1
- const require_logger = require('./logger-BdZ-IqBc.cjs');
2
- const require_esm = require('./esm-BQkx5roy.cjs');
3
- require('./fetch-ZMn_oemb.cjs');
4
- require('./cache-7xULbvt3.cjs');
5
- const require_cometapi = require('./cometapi-JbvOJSCO.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-mqF-Oj3f.cjs.map
@@ -1,32 +0,0 @@
1
- require('./logger-BdZ-IqBc.cjs');
2
- require('./esm-BQkx5roy.cjs');
3
- require('./pythonUtils-DZ6EbdY4.cjs');
4
- require('./transform-Kd6u-oNm.cjs');
5
- require('./types-BIfttHrT.cjs');
6
- require('./util-DUYOvxAy.cjs');
7
- require('./fetch-ZMn_oemb.cjs');
8
- require('./cache-7xULbvt3.cjs');
9
- const require_providers = require('./providers-BNKVY53V.cjs');
10
- require('./extractor-DbhlYEeo.cjs');
11
- require('./genaiTracer-CQlpZkrp.cjs');
12
- require('./chat-C4zqjObh.cjs');
13
- require('./transform-ivxEY4f7.cjs');
14
- require('./messages-DXV3Qh8_.cjs');
15
- require('./util-DkFTvieG.cjs');
16
- require('./responses-zOtKtnY_.cjs');
17
- require('./openai-Bigwjgo1.cjs');
18
- require('./util-C08Kns6-.cjs');
19
- require('./completion-DDyL3Cb2.cjs');
20
- require('./accounts-BzEY8H3v.cjs');
21
- require('./server-CgUQ25qW.cjs');
22
- require('./blobs-673H0jCl.cjs');
23
- require('./tables-B9E1kRp-.cjs');
24
- require('./telemetry-D0_yFdtU.cjs');
25
- require('./store-BqwfFEyF.cjs');
26
- require('./base-f71xxWai.cjs');
27
- require('./image-C3BjJUAU.cjs');
28
- require('./providerRegistry-lc7a7utN.cjs');
29
- require('./rubyUtils-DCVaJ3mc.cjs');
30
-
31
- exports.loadApiProvider = require_providers.loadApiProvider;
32
- exports.loadApiProviders = require_providers.loadApiProviders;
@@ -1,32 +0,0 @@
1
- import "./chunk-FhC4c-0y.js";
2
- import "./logger-w8Ozp0Td.js";
3
- import "./esm-rDtG_2rg.js";
4
- import "./pythonUtils-vMlk9Qp5.js";
5
- import "./transform-D8dILpfZ.js";
6
- import "./types-DMVjYLpx.js";
7
- import "./util-DiCePfDu.js";
8
- import "./fetch-18MuNu9i.js";
9
- import "./cache-BLLayYEN.js";
10
- import { a as resolveProviderConfigs, i as resolveProvider, n as loadApiProvider, r as loadApiProviders, t as getProviderIds } from "./providers-BiNq_Iyc.js";
11
- import "./extractor-Hs7la_19.js";
12
- import "./genaiTracer-Ce19n68P.js";
13
- import "./chat-C8Ei4f87.js";
14
- import "./transform-DMaxQwDx.js";
15
- import "./messages-CDZYGNlS.js";
16
- import "./util-mJ58qbbw.js";
17
- import "./responses-DLLjADw5.js";
18
- import "./openai-Dz3surb_.js";
19
- import "./util-Cl0zfT3V.js";
20
- import "./completion-D9_MDlnd.js";
21
- import "./accounts-R3gfCR_g.js";
22
- import "./server-CbMTRQkg.js";
23
- import "./blobs-C9J2mVgo.js";
24
- import "./tables-D-NSwNIb.js";
25
- import "./telemetry-DZ_7PaVq.js";
26
- import "./store-2ocbYY9D.js";
27
- import "./base-Dtp8b4_N.js";
28
- import "./image-BiEVdpdP.js";
29
- import "./providerRegistry-wCWd7sKQ.js";
30
- import "./rubyUtils-Cs35SDYa.js";
31
-
32
- export { loadApiProvider, loadApiProviders };
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./chunk-DHDDz29n.js";
3
- import "./logger-BotXmWKW.js";
4
- import "./fetch-SRsE6Ctl.js";
5
- import "./accounts-DHHiXsy6.js";
6
- import "./cloud-BMbRVJFw.js";
7
- import "./telemetry-BXyVqyAg.js";
8
- import "./types-t52w-XsS.js";
9
- import "./server-DWmZLfCy.js";
10
- import { a as resolveProviderConfigs, i as resolveProvider, n as loadApiProvider, r as loadApiProviders, t as getProviderIds } from "./providers-BlEhY5mi.js";
11
- import "./cache-mIszOnuz.js";
12
- import "./util-BSh4a_Q8.js";
13
- import "./esm-CYhseqj4.js";
14
- import "./pythonUtils-r1uBuA0n.js";
15
- import "./transform-CqTFr7KR.js";
16
- import "./extractor-LSYjrhK0.js";
17
- import "./genaiTracer-CqNnnXrE.js";
18
- import "./chat-DIywASPG.js";
19
- import "./transform-CoP2bJ7P.js";
20
- import "./messages-D61tPFQo.js";
21
- import "./util-vjscpUzy.js";
22
- import "./responses-TsdODUpm.js";
23
- import "./openai-CT5fwbve.js";
24
- import "./util-CUEt0Vum.js";
25
- import "./completion-BBJ6zmG3.js";
26
- import "./blobs-kt8v3UyH.js";
27
- import "./tables-C7TT2XVn.js";
28
- import "./store-D4gdn9ih.js";
29
- import "./base-BaXmtXYp.js";
30
- import "./image-mhAGP07h.js";
31
- import "./providerRegistry-Xf0qdqGQ.js";
32
- import "./rubyUtils-BtjlqyXt.js";
33
-
34
- export { loadApiProvider, loadApiProviders };
@@ -1,54 +0,0 @@
1
- require('./logger-BdZ-IqBc.cjs');
2
- require('./esm-BQkx5roy.cjs');
3
- require('./pythonUtils-DZ6EbdY4.cjs');
4
- require('./types-BIfttHrT.cjs');
5
- require('./util-DUYOvxAy.cjs');
6
- require('./fetch-ZMn_oemb.cjs');
7
- require('./cache-7xULbvt3.cjs');
8
- require('./genaiTracer-CQlpZkrp.cjs');
9
- const require_chat = require('./chat-C4zqjObh.cjs');
10
- require('./transform-ivxEY4f7.cjs');
11
- require('./openai-Bigwjgo1.cjs');
12
- require('./util-C08Kns6-.cjs');
13
-
14
- //#region src/providers/quiverai.ts
15
- const QUIVERAI_API_BASE_URL = "https://api.quiver.ai/v1";
16
- /**
17
- * QuiverAI chat provider extends OpenAI chat completion provider.
18
- * QuiverAI's chat API is OpenAI-compatible and excels at SVG generation.
19
- */
20
- var QuiverAiChatProvider = class extends require_chat.OpenAiChatCompletionProvider {
21
- constructor(modelName, providerOptions = {}) {
22
- const config = providerOptions.config || {};
23
- super(modelName, {
24
- ...providerOptions,
25
- config: {
26
- ...config,
27
- apiBaseUrl: config.apiBaseUrl || QUIVERAI_API_BASE_URL,
28
- apiKeyEnvar: "QUIVERAI_API_KEY"
29
- }
30
- });
31
- }
32
- id() {
33
- return `quiverai:${this.modelName}`;
34
- }
35
- toString() {
36
- return `[QuiverAI Provider ${this.modelName}]`;
37
- }
38
- getApiUrlDefault() {
39
- return QUIVERAI_API_BASE_URL;
40
- }
41
- };
42
- function createQuiverAiProvider(providerPath, providerOptions = {}, env) {
43
- const splits = providerPath.split(":");
44
- const modelType = splits[1];
45
- const effectiveEnv = env || providerOptions.env;
46
- return new QuiverAiChatProvider((modelType === "chat" ? splits.slice(2) : splits.slice(1)).join(":") || "arrow-0.5", {
47
- ...providerOptions,
48
- env: effectiveEnv
49
- });
50
- }
51
-
52
- //#endregion
53
- exports.createQuiverAiProvider = createQuiverAiProvider;
54
- //# sourceMappingURL=quiverai-BNfIwKCO.cjs.map
@@ -1,57 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./chunk-DHDDz29n.js";
3
- import "./logger-BotXmWKW.js";
4
- import "./fetch-SRsE6Ctl.js";
5
- import "./cloud-BMbRVJFw.js";
6
- import "./types-t52w-XsS.js";
7
- import "./cache-mIszOnuz.js";
8
- import "./util-BSh4a_Q8.js";
9
- import "./esm-CYhseqj4.js";
10
- import "./pythonUtils-r1uBuA0n.js";
11
- import "./genaiTracer-CqNnnXrE.js";
12
- import { t as OpenAiChatCompletionProvider } from "./chat-DIywASPG.js";
13
- import "./transform-CoP2bJ7P.js";
14
- import "./openai-CT5fwbve.js";
15
- import "./util-CUEt0Vum.js";
16
-
17
- //#region src/providers/quiverai.ts
18
- const QUIVERAI_API_BASE_URL = "https://api.quiver.ai/v1";
19
- /**
20
- * QuiverAI chat provider extends OpenAI chat completion provider.
21
- * QuiverAI's chat API is OpenAI-compatible and excels at SVG generation.
22
- */
23
- var QuiverAiChatProvider = class extends OpenAiChatCompletionProvider {
24
- constructor(modelName, providerOptions = {}) {
25
- const config = providerOptions.config || {};
26
- super(modelName, {
27
- ...providerOptions,
28
- config: {
29
- ...config,
30
- apiBaseUrl: config.apiBaseUrl || QUIVERAI_API_BASE_URL,
31
- apiKeyEnvar: "QUIVERAI_API_KEY"
32
- }
33
- });
34
- }
35
- id() {
36
- return `quiverai:${this.modelName}`;
37
- }
38
- toString() {
39
- return `[QuiverAI Provider ${this.modelName}]`;
40
- }
41
- getApiUrlDefault() {
42
- return QUIVERAI_API_BASE_URL;
43
- }
44
- };
45
- function createQuiverAiProvider(providerPath, providerOptions = {}, env) {
46
- const splits = providerPath.split(":");
47
- const modelType = splits[1];
48
- const effectiveEnv = env || providerOptions.env;
49
- return new QuiverAiChatProvider((modelType === "chat" ? splits.slice(2) : splits.slice(1)).join(":") || "arrow-0.5", {
50
- ...providerOptions,
51
- env: effectiveEnv
52
- });
53
- }
54
-
55
- //#endregion
56
- export { createQuiverAiProvider };
57
- //# sourceMappingURL=quiverai-BQigKdIH.js.map
@@ -1,55 +0,0 @@
1
- import "./chunk-FhC4c-0y.js";
2
- import "./logger-w8Ozp0Td.js";
3
- import "./esm-rDtG_2rg.js";
4
- import "./pythonUtils-vMlk9Qp5.js";
5
- import "./types-DMVjYLpx.js";
6
- import "./util-DiCePfDu.js";
7
- import "./fetch-18MuNu9i.js";
8
- import "./cache-BLLayYEN.js";
9
- import "./genaiTracer-Ce19n68P.js";
10
- import { t as OpenAiChatCompletionProvider } from "./chat-C8Ei4f87.js";
11
- import "./transform-DMaxQwDx.js";
12
- import "./openai-Dz3surb_.js";
13
- import "./util-Cl0zfT3V.js";
14
-
15
- //#region src/providers/quiverai.ts
16
- const QUIVERAI_API_BASE_URL = "https://api.quiver.ai/v1";
17
- /**
18
- * QuiverAI chat provider extends OpenAI chat completion provider.
19
- * QuiverAI's chat API is OpenAI-compatible and excels at SVG generation.
20
- */
21
- var QuiverAiChatProvider = class extends OpenAiChatCompletionProvider {
22
- constructor(modelName, providerOptions = {}) {
23
- const config = providerOptions.config || {};
24
- super(modelName, {
25
- ...providerOptions,
26
- config: {
27
- ...config,
28
- apiBaseUrl: config.apiBaseUrl || QUIVERAI_API_BASE_URL,
29
- apiKeyEnvar: "QUIVERAI_API_KEY"
30
- }
31
- });
32
- }
33
- id() {
34
- return `quiverai:${this.modelName}`;
35
- }
36
- toString() {
37
- return `[QuiverAI Provider ${this.modelName}]`;
38
- }
39
- getApiUrlDefault() {
40
- return QUIVERAI_API_BASE_URL;
41
- }
42
- };
43
- function createQuiverAiProvider(providerPath, providerOptions = {}, env) {
44
- const splits = providerPath.split(":");
45
- const modelType = splits[1];
46
- const effectiveEnv = env || providerOptions.env;
47
- return new QuiverAiChatProvider((modelType === "chat" ? splits.slice(2) : splits.slice(1)).join(":") || "arrow-0.5", {
48
- ...providerOptions,
49
- env: effectiveEnv
50
- });
51
- }
52
-
53
- //#endregion
54
- export { createQuiverAiProvider };
55
- //# sourceMappingURL=quiverai-Bfy2WnE2.js.map