promptfoo 0.120.27 → 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 (352) 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-BgNJDBE6.js +206 -0
  4. package/dist/src/{accounts-Fl2J3_Fu.cjs → accounts-Bx-x3bmW.cjs} +77 -78
  5. package/dist/src/{accounts-DVINui-2.js → accounts-CMqkzrVf.js} +39 -34
  6. package/dist/src/{accounts-CPDRAMND.js → accounts-xrUGFA6n.js} +38 -33
  7. package/dist/src/{agentic-utils-D922n6mm.js → agentic-utils-BKIN5PKu.js} +9 -10
  8. package/dist/src/{agents-BO2n8Z0d.cjs → agents-B0f4HICh.cjs} +37 -40
  9. package/dist/src/{agents-BXLmVsxR.js → agents-C-dDThPK.js} +37 -37
  10. package/dist/src/{agents-DgJf2-ez.cjs → agents-CErsqg5U.cjs} +16 -17
  11. package/dist/src/{agents-BcsN_BgB.js → agents-CVIn-Utx.js} +16 -12
  12. package/dist/src/{agents-hqgSV-3o.js → agents-CXknwsFX.js} +37 -40
  13. package/dist/src/{agents-pMfppv9Z.js → agents-DeH4Gu94.js} +18 -18
  14. package/dist/src/{agents-BdUTAwi-.js → agents-Dy2YpZpa.js} +38 -41
  15. package/dist/src/{agents-DNvSH78i.js → agents-aF4-T121.js} +16 -20
  16. package/dist/src/{aimlapi-DOib86oE.js → aimlapi-BAGZDo5G.js} +16 -18
  17. package/dist/src/{aimlapi-DtgPI0nE.js → aimlapi-BNfTBexL.js} +15 -17
  18. package/dist/src/{aimlapi-DTPACCB1.js → aimlapi-DHRKlBEA.js} +15 -4
  19. package/dist/src/{aimlapi-BE_Tg9Fl.cjs → aimlapi-tg0Gkcvr.cjs} +15 -16
  20. package/dist/src/app/assets/index-BFCZg7hQ.js +439 -0
  21. package/dist/src/app/index.html +1 -1
  22. package/dist/src/{audio-BRYU0BFo.js → audio-BRODU0UK.js} +7 -9
  23. package/dist/src/{audio-Cwo68yZS.cjs → audio-BWeaWovU.cjs} +6 -7
  24. package/dist/src/{audio-BnRUGAm_.js → audio-CHQ4r-RV.js} +6 -5
  25. package/dist/src/{audio-MSRki4JU.js → audio-tf_NBjlC.js} +6 -8
  26. package/dist/src/{base-h961VXYk.js → base-B0tcrnq_.js} +11 -13
  27. package/dist/src/{base-XB2tDJrB.js → base-B4QJRyFS.js} +11 -13
  28. package/dist/src/{base-pGVmXNl4.cjs → base-DBtwl2FR.cjs} +36 -38
  29. package/dist/src/base-fEDN28WM.js +193 -0
  30. package/dist/src/{blobs-BM_e6hCa.js → blobs-BAU-dXan.js} +9 -12
  31. package/dist/src/{blobs-CR5C4Ihh.js → blobs-Bpg5rH6i.js} +9 -12
  32. package/dist/src/{blobs-B-KQAFhX.cjs → blobs-DvS-O6be.cjs} +34 -37
  33. package/dist/src/blobs-qTYm-1PY.js +236 -0
  34. package/dist/src/{cache-CIpsoBZR.js → cache-8XhNqPKW.js} +64 -67
  35. package/dist/src/cache-Bbn1Nyrd.cjs +5 -0
  36. package/dist/src/cache-BwsMSda7.js +6 -0
  37. package/dist/src/{cache-jsiwsAJv.js → cache-CG0SlR1d.js} +64 -66
  38. package/dist/src/{cache-BTVYfbka.cjs → cache-COish3-W.cjs} +114 -117
  39. package/dist/src/cache-D3eqDYGU.js +739 -0
  40. package/dist/src/{chat-D31K7C4u.cjs → chat-2K608PeQ.cjs} +20 -21
  41. package/dist/src/chat-BKm79wib.js +764 -0
  42. package/dist/src/{chat-B84t99NW.js → chat-CM_kyI8B.js} +20 -9
  43. package/dist/src/{chat-BcPjZXIp.js → chat-CRWNNq73.js} +41 -44
  44. package/dist/src/{chat-CcUCysjU.js → chat-CznLWr_D.js} +41 -44
  45. package/dist/src/{chat-DwWifjxi.js → chat-DHMH-N64.js} +20 -22
  46. package/dist/src/{chat-BE44YOc6.cjs → chat-DaqekjFr.cjs} +61 -64
  47. package/dist/src/{chat-DZM2GUHO.js → chat-DxysjBvt.js} +21 -23
  48. package/dist/src/{chatkit-D67HS_0b.js → chatkit-65VXf5SR.js} +58 -58
  49. package/dist/src/{chatkit-DAB_qfzI.js → chatkit-Be-Q-a9F.js} +58 -60
  50. package/dist/src/{chatkit-Biqb_wsD.js → chatkit-BxFvW8KY.js} +58 -60
  51. package/dist/src/{chatkit-PGG4ZYIn.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
  52. package/dist/src/chunk-DEq-mXcV.js +15 -0
  53. package/dist/src/chunk-DRamLcfz.js +16 -0
  54. package/dist/src/{claude-agent-sdk-SVM6AdBu.js → claude-agent-sdk-BLTu0WBO.js} +31 -31
  55. package/dist/src/{claude-agent-sdk-C9SiaQub.cjs → claude-agent-sdk-CJH22shf.cjs} +31 -28
  56. package/dist/src/{claude-agent-sdk-C-IOTPfo.js → claude-agent-sdk-D6_k9FKA.js} +31 -29
  57. package/dist/src/{claude-agent-sdk-CiluSyW1.js → claude-agent-sdk-Dy5lT-Tx.js} +33 -20
  58. package/dist/src/{cloud-CZ-q9Ier.js → cloud-Bc9526yV.js} +7 -9
  59. package/dist/src/cloud-DmE0EwsY.js +4 -0
  60. package/dist/src/{cloudflare-ai-BahKHyhh.js → cloudflare-ai-C9r2sRhw.js} +16 -18
  61. package/dist/src/{cloudflare-ai-Dxyt50Nl.js → cloudflare-ai-CWWJCRim.js} +16 -4
  62. package/dist/src/{cloudflare-ai-Dfahv5SY.cjs → cloudflare-ai-ClWSdor4.cjs} +16 -17
  63. package/dist/src/{cloudflare-ai-v_qZD6_q.js → cloudflare-ai-ICsOuD-z.js} +17 -19
  64. package/dist/src/{cloudflare-gateway-BPWoZIzJ.cjs → cloudflare-gateway-C2_-KG5o.cjs} +21 -22
  65. package/dist/src/{cloudflare-gateway-Bi_FpOFy.js → cloudflare-gateway-D6O7AlYb.js} +23 -23
  66. package/dist/src/{cloudflare-gateway-btS7h1OZ.js → cloudflare-gateway-D6xFc5pa.js} +21 -25
  67. package/dist/src/{cloudflare-gateway-C0guUNwk.js → cloudflare-gateway-pXGHxJ47.js} +26 -14
  68. package/dist/src/{codex-sdk-DSxAnbfT.js → codex-sdk-C6UMlxwV.js} +28 -29
  69. package/dist/src/{codex-sdk-IYVi9fuM.js → codex-sdk-DUwKWezN.js} +28 -27
  70. package/dist/src/{codex-sdk-DulY0ZRq.js → codex-sdk-GGAw0qbD.js} +28 -29
  71. package/dist/src/{codex-sdk-DFKMtAyf.cjs → codex-sdk-fAO0c3yA.cjs} +28 -29
  72. package/dist/src/{cometapi-DkNBMk0G.js → cometapi-BasUi7-_.js} +17 -19
  73. package/dist/src/{cometapi-DzrR3SR_.js → cometapi-Bbjp5V4x.js} +16 -4
  74. package/dist/src/{cometapi-C9EEpJzT.js → cometapi-DkXrKi5z.js} +21 -24
  75. package/dist/src/{cometapi-DIO64tf4.cjs → cometapi-vY6aDZgo.cjs} +21 -22
  76. package/dist/src/{completion-CG29bfKX.js → completion-6Mx_iXxK.js} +11 -13
  77. package/dist/src/{completion-Bgf1VJoq.js → completion-C5rtR_9P.js} +11 -13
  78. package/dist/src/{completion-CCRT4kX1.cjs → completion-CDOouNzq.cjs} +21 -23
  79. package/dist/src/completion-C_P3ypkJ.js +120 -0
  80. package/dist/src/{createHash-Dw_iLu31.js → createHash-CTQmL3G2.js} +2 -3
  81. package/dist/src/{createHash-CYQy4YeL.cjs → createHash-CfZSc0b4.cjs} +13 -14
  82. package/dist/src/{createHash-CJcfskIZ.js → createHash-Da8fMwqB.js} +2 -3
  83. package/dist/src/createHash-DmPQkvBh.js +15 -0
  84. package/dist/src/{docker-D-ayp2FW.js → docker-5KcG-_86.js} +18 -20
  85. package/dist/src/{docker-DNcLR4Ig.cjs → docker-BwsKwxFs.cjs} +18 -19
  86. package/dist/src/{docker-egERKxCF.js → docker-CZnqU1XV.js} +18 -7
  87. package/dist/src/{docker-B81N0t4e.js → docker-DzxyDPIj.js} +19 -21
  88. package/dist/src/entrypoint.js +2 -3
  89. package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
  90. package/dist/src/{esm-B9dPm_BF.js → esm-C03C-mv3.js} +17 -20
  91. package/dist/src/{esm-D2pZ87fL.js → esm-CaIwzWR5.js} +18 -21
  92. package/dist/src/esm-Cd1AjG1D.js +379 -0
  93. package/dist/src/{esm-Ct-Joyue.cjs → esm-CnNt7sI4.cjs} +47 -49
  94. package/dist/src/eval-17JizQIv.js +15 -0
  95. package/dist/src/{eval-C-Nr6wX_.js → eval-DmFyWU7i.js} +47 -54
  96. package/dist/src/{evalResult-4BzI2tmj.js → evalResult-CDQiuUuf.js} +16 -12
  97. package/dist/src/{evalResult-DXMWJ3sx.js → evalResult-CTG2AHOS.js} +10 -11
  98. package/dist/src/evalResult-Cqj8pldJ.js +12 -0
  99. package/dist/src/{evalResult-CX8wQecI.cjs → evalResult-Dap2CekP.cjs} +20 -21
  100. package/dist/src/evalResult-DvcJAWJU.cjs +10 -0
  101. package/dist/src/evalResult-Hftn-S_i.js +10 -0
  102. package/dist/src/evaluator-B2CFNt-P.js +36 -0
  103. package/dist/src/{evaluator-8aGyV12L.js → evaluator-DPFRbFIL.js} +201 -229
  104. package/dist/src/{extractor-CD5yKL-G.js → extractor-CFG6bcWJ.js} +22 -24
  105. package/dist/src/{extractor-C031XmTA.cjs → extractor-DX36oYEv.cjs} +37 -39
  106. package/dist/src/{extractor-V5x_m1i0.js → extractor-M67RUtg6.js} +22 -24
  107. package/dist/src/extractor-YMU_Gvt8.js +374 -0
  108. package/dist/src/{fetch-D3OHf-lV.js → fetch-4M3YRaqL.js} +40 -45
  109. package/dist/src/fetch-60Gzydls.js +777 -0
  110. package/dist/src/{fetch-CXZI9RRr.js → fetch-BMv0O527.js} +23 -35
  111. package/dist/src/{fetch-BmbD-v1L.cjs → fetch-BxUk8odA.cjs} +244 -277
  112. package/dist/src/fetch-KV5kNASw.js +5 -0
  113. package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
  114. package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
  115. package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
  116. package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
  117. package/dist/src/{formatDuration-CdevI3An.js → formatDuration-DgBVMN65.js} +2 -2
  118. package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
  119. package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
  120. package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
  121. package/dist/src/{genaiTracer-Dres3qrN.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
  122. package/dist/src/graders-Bu0H9nXi.js +32 -0
  123. package/dist/src/{graders-DTeBrzWp.js → graders-CHO8EPM4.js} +349 -397
  124. package/dist/src/graders-Cfhkvx-e.js +34 -0
  125. package/dist/src/{graders--1y2u9HO.js → graders-CpdqD9PI.js} +349 -397
  126. package/dist/src/graders-DClJVpGP.cjs +32 -0
  127. package/dist/src/{graders-DohM2dir.cjs → graders-DOXycdlG.cjs} +684 -732
  128. package/dist/src/graders-DcnJsrMO.js +32 -0
  129. package/dist/src/graders-R9rYUM0d.js +13466 -0
  130. package/dist/src/{image-C3wHC9_h.js → image-BmEZqVmk.js} +9 -10
  131. package/dist/src/{image-O1u4bCFg.js → image-CBBVXWuT.js} +9 -10
  132. package/dist/src/{image-DpKl2F15.cjs → image-CDLQOcqT.cjs} +6 -7
  133. package/dist/src/{image-DmE-niFE.js → image-DJEvKveK.js} +6 -5
  134. package/dist/src/{image-CuKHuccK.cjs → image-DTedmQPg.cjs} +29 -30
  135. package/dist/src/{image-B0U4Hqll.js → image-gvmivTEe.js} +7 -9
  136. package/dist/src/image-pAX56tPG.js +257 -0
  137. package/dist/src/{image-DNEIf_aI.js → image-tL5hIOFh.js} +6 -8
  138. package/dist/src/index.cjs +605 -689
  139. package/dist/src/index.d.cts +11 -7
  140. package/dist/src/index.d.ts +11 -3
  141. package/dist/src/index.js +570 -658
  142. package/dist/src/{interactiveCheck-Bxj1Swex.js → interactiveCheck-BgLZUIt3.js} +7 -8
  143. package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
  144. package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
  145. package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
  146. package/dist/src/invariant-vgHWClmd.js +25 -0
  147. package/dist/src/{knowledgeBase-Be_zyW4L.js → knowledgeBase-CLJybhnF.js} +16 -16
  148. package/dist/src/{knowledgeBase-CEzQobWX.js → knowledgeBase-CoU-UQBg.js} +14 -9
  149. package/dist/src/{knowledgeBase-BZ41IFwq.js → knowledgeBase-DjWPVqSb.js} +14 -18
  150. package/dist/src/{knowledgeBase-D-5BMXlr.cjs → knowledgeBase-wkxuRFhA.cjs} +14 -15
  151. package/dist/src/{litellm-DnbRJ2if.js → litellm-B9Hysuri.js} +16 -18
  152. package/dist/src/{litellm-CRDqPhNI.js → litellm-CTfa0hqi.js} +15 -17
  153. package/dist/src/{litellm-hUSNM_M2.cjs → litellm-NYpQ8RQu.cjs} +15 -16
  154. package/dist/src/{litellm-9vR8zpfU.js → litellm-ePxtr9F1.js} +15 -4
  155. package/dist/src/{logger-CG1uZPbQ.js → logger-CT3IKMKA.js} +10 -29
  156. package/dist/src/{logger-B7sBeGa0.cjs → logger-Cp1GPUjj.cjs} +152 -180
  157. package/dist/src/logger-DLcq4dWf.js +713 -0
  158. package/dist/src/{logger-LSBxlt7a.js → logger-KkObSCzq.js} +13 -31
  159. package/dist/src/{luma-ray-Hm3d6VJE.cjs → luma-ray-B0GGNRc1.cjs} +20 -21
  160. package/dist/src/{luma-ray-drvgdpP9.js → luma-ray-BE2mOt6N.js} +20 -13
  161. package/dist/src/{luma-ray-4blv9iZ2.js → luma-ray-BW9IRGIc.js} +22 -21
  162. package/dist/src/{luma-ray-B2__8lYH.js → luma-ray-Cm1KZBhs.js} +20 -23
  163. package/dist/src/main.js +1170 -1321
  164. package/dist/src/{messages-XhiwCbi4.cjs → messages-1JrJs91T.cjs} +32 -34
  165. package/dist/src/{messages-CGPPidQr.js → messages-1x9atZmP.js} +22 -24
  166. package/dist/src/{messages-Uee41Mj5.js → messages-BLbWdsyt.js} +22 -24
  167. package/dist/src/messages-D8EA0oDc.js +240 -0
  168. package/dist/src/{meteor-BYykdXrV.js → meteor-44VjEACX.js} +3 -4
  169. package/dist/src/{meteor-CsopaHrH.js → meteor-D-SotUw9.js} +3 -4
  170. package/dist/src/{meteor-e-E-2vVl.cjs → meteor-DLZZ3osF.cjs} +3 -4
  171. package/dist/src/{meteor-C8lGP6P4.js → meteor-DUiCJRC-.js} +3 -4
  172. package/dist/src/{modelslab-yKz-ZNB4.js → modelslab-C1OLRmVX.js} +17 -10
  173. package/dist/src/{modelslab-E9gO-bYd.js → modelslab-CqXBy3U8.js} +18 -20
  174. package/dist/src/{modelslab-lUVW0cmB.cjs → modelslab-DcOSFwKh.cjs} +17 -18
  175. package/dist/src/{modelslab-ClBkr8_9.js → modelslab-X5-4LroM.js} +17 -19
  176. package/dist/src/{nova-reel-Dk8jNpId.js → nova-reel-BgS1ZWuK.js} +20 -13
  177. package/dist/src/{nova-reel-u2eF2Cxm.js → nova-reel-D2ZkOSyr.js} +22 -21
  178. package/dist/src/{nova-reel-D8CuO6QH.cjs → nova-reel-D9xfaMBs.cjs} +20 -21
  179. package/dist/src/{nova-reel-P9bwvtYX.js → nova-reel-DihqLeol.js} +20 -23
  180. package/dist/src/{nova-sonic-Ds1C-dpm.cjs → nova-sonic-DVu3mMIy.cjs} +30 -31
  181. package/dist/src/{nova-sonic-CK2rAiKi.js → nova-sonic-DezhVUYT.js} +30 -26
  182. package/dist/src/{nova-sonic-BaqWlkds.js → nova-sonic-P-CdUMlV.js} +30 -31
  183. package/dist/src/{nova-sonic-yZapPLv7.js → nova-sonic-Q3BOJeig.js} +31 -32
  184. package/dist/src/{openai-DUFopMrH.cjs → openai-Cuif0GEt.cjs} +8 -9
  185. package/dist/src/{openai-PblZ3jUE.js → openai-DElQ-fPX.js} +3 -4
  186. package/dist/src/{openai-CcN1B8Sb.js → openai-DhbB7eWK.js} +3 -4
  187. package/dist/src/openai-j-sE2O7r.js +44 -0
  188. package/dist/src/{openclaw-A-3_loM7.js → openclaw-BiSZPL7J.js} +20 -14
  189. package/dist/src/{openclaw-COn6QzDi.js → openclaw-Bv1DINsX.js} +20 -27
  190. package/dist/src/{openclaw-a3lylB-V.js → openclaw-D1D_ej1z.js} +21 -28
  191. package/dist/src/{openclaw-B6qqDr_u.cjs → openclaw-DAfWQn-o.cjs} +33 -39
  192. package/dist/src/opencode-sdk-C7m-wRfI.js +560 -0
  193. package/dist/src/opencode-sdk-CfaLN8PY.cjs +564 -0
  194. package/dist/src/opencode-sdk-D95s6SnR.js +562 -0
  195. package/dist/src/opencode-sdk-DxUPkLT7.js +560 -0
  196. package/dist/src/{otlpReceiver-oyf5wLGC.js → otlpReceiver--AIRW_S4.js} +53 -51
  197. package/dist/src/{otlpReceiver-BmmTiMjA.js → otlpReceiver-Bn5wGB1v.js} +53 -55
  198. package/dist/src/{otlpReceiver-lXsYVbpj.cjs → otlpReceiver-Diec4cln.cjs} +53 -55
  199. package/dist/src/{otlpReceiver-94URx7UW.js → otlpReceiver-g3ByGaXs.js} +53 -55
  200. package/dist/src/{providerRegistry-Cq_JK_CJ.js → providerRegistry-B0RUOLI_.js} +7 -8
  201. package/dist/src/{providerRegistry-DSSHjMKf.js → providerRegistry-CD8MEar9.js} +7 -8
  202. package/dist/src/{providerRegistry-CvHEVJad.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
  203. package/dist/src/providerRegistry-DM8rZYol.js +45 -0
  204. package/dist/src/providers-B3HvufyI.js +33246 -0
  205. package/dist/src/{providers-BnFpbY_s.js → providers-BKRJTjBz.js} +1536 -1669
  206. package/dist/src/providers-C1rOSHiR.js +32 -0
  207. package/dist/src/{providers-Iil64vk9.js → providers-CFLy1_ji.js} +1543 -1676
  208. package/dist/src/{providers-DHbjzW2e.cjs → providers-CFu-TZl-.cjs} +1896 -2029
  209. package/dist/src/providers-CxmDwEFf.cjs +31 -0
  210. package/dist/src/providers-Dodakqr0.js +30 -0
  211. package/dist/src/providers-GIQ2TcsA.js +30 -0
  212. package/dist/src/{pythonUtils-CcT5LH1M.js → pythonUtils-C3py6GC1.js} +18 -19
  213. package/dist/src/{pythonUtils-DBbuI3QJ.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
  214. package/dist/src/{pythonUtils-hZ8LeQLv.js → pythonUtils-D5nxkQ0P.js} +18 -19
  215. package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
  216. package/dist/src/{quiverai-BuI0tE39.js → quiverai-C2jVwbH1.js} +8 -7
  217. package/dist/src/{quiverai-DCGSZt4U.js → quiverai-CI6gYJVI.js} +8 -10
  218. package/dist/src/{quiverai-DiMVJQDz.cjs → quiverai-CLkWkyZc.cjs} +8 -9
  219. package/dist/src/{quiverai-fQNkExW4.js → quiverai-MHSxbmmZ.js} +9 -11
  220. package/dist/src/{render-Dj1smHEb.js → render-Drod8m7K.js} +4 -5
  221. package/dist/src/{responses-DOAFFENS.js → responses-BKqJmhhc.js} +22 -25
  222. package/dist/src/{responses-CxzoQoBe.js → responses-CGw0DCzh.js} +22 -25
  223. package/dist/src/responses-jxdehPkC.js +660 -0
  224. package/dist/src/{responses-ghR3IOfy.cjs → responses-tD4Bd4dc.cjs} +37 -40
  225. package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
  226. package/dist/src/{rubyUtils-CwbGmgYN.js → rubyUtils-BUVePouc.js} +27 -20
  227. package/dist/src/rubyUtils-BcuGX77l.js +222 -0
  228. package/dist/src/{rubyUtils-DudlFZed.js → rubyUtils-Boc4HZzX.js} +18 -19
  229. package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
  230. package/dist/src/{rubyUtils-C8MhKGHb.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
  231. package/dist/src/{sagemaker-gmskuyre.js → sagemaker-BK4Zb993.js} +75 -70
  232. package/dist/src/{sagemaker-DuM71dVU.js → sagemaker-BfiWTmvn.js} +77 -77
  233. package/dist/src/{sagemaker-77zbJ2Q2.cjs → sagemaker-CcQHM1jV.cjs} +75 -76
  234. package/dist/src/{sagemaker-CcxhlOAR.js → sagemaker-D2Q1c-sD.js} +75 -79
  235. package/dist/src/{scanner-DJYiSXQj.js → scanner-J8CA3LsV.js} +100 -121
  236. package/dist/src/server/index.js +5505 -67416
  237. package/dist/src/{server-B5v33lvE.cjs → server-B0PPuDw-.cjs} +57 -67
  238. package/dist/src/server-B1vi21hA.js +7 -0
  239. package/dist/src/{server-RV_i_YX5.js → server-BC7XJFgr.js} +19 -24
  240. package/dist/src/server-Cm9Kai_h.cjs +5 -0
  241. package/dist/src/{server-BJ4m4f1D.js → server-DbFphssR.js} +26 -29
  242. package/dist/src/server-OAs3nBRT.js +229 -0
  243. package/dist/src/{signal-BW33JuId.js → signal-BOTbd53Z.js} +9 -11
  244. package/dist/src/{slack-DEURelTy.cjs → slack-BmVAVGaK.cjs} +7 -8
  245. package/dist/src/{slack-BQYeW9L3.js → slack-DCUPTzS2.js} +8 -8
  246. package/dist/src/{slack-BB6yuZzp.js → slack-DOdy_kyv.js} +7 -8
  247. package/dist/src/{slack-2pRrhhgJ.js → slack-DXMKtA-f.js} +7 -9
  248. package/dist/src/store-BNmZ1KAz.cjs +5 -0
  249. package/dist/src/{store-D7CgQzAR.cjs → store-BSc-TF2w.cjs} +44 -45
  250. package/dist/src/store-BltJg2cd.js +6 -0
  251. package/dist/src/{store-s3SftUwF.js → store-D1tv90v3.js} +34 -35
  252. package/dist/src/{store-DJNsD1iC.js → store-DQLEjuEO.js} +40 -36
  253. package/dist/src/store-Ub2vaGJ1.js +228 -0
  254. package/dist/src/{tables-DfTsNN7X.js → tables-5EvT_Bwn.js} +19 -21
  255. package/dist/src/{tables-BKTmd6u7.cjs → tables-C7K-XKWp.cjs} +89 -91
  256. package/dist/src/{tables-DMegD0Xf.js → tables-D36WTqKX.js} +21 -23
  257. package/dist/src/tables-xKANLRBD.js +288 -0
  258. package/dist/src/telemetry-5BCRNBbe.cjs +5 -0
  259. package/dist/src/{telemetry-BedSm-bZ.js → telemetry-C15ziL8u.js} +17 -14
  260. package/dist/src/{telemetry--WAdAfVi.js → telemetry-C2YDkUQH.js} +11 -13
  261. package/dist/src/{telemetry-DQgVBCAb.cjs → telemetry-CbrnxHp_.cjs} +21 -24
  262. package/dist/src/telemetry-D4W5hboe.js +7 -0
  263. package/dist/src/telemetry-DMb2Mpfm.js +171 -0
  264. package/dist/src/{text-oiSbwSOI.js → text-B_UCRPp2.js} +2 -2
  265. package/dist/src/{text-oKzCBnK6.cjs → text-CW1cyrwj.cjs} +12 -13
  266. package/dist/src/{text-B_IrO4GZ.js → text-Db-Wt2u2.js} +2 -2
  267. package/dist/src/text-TIv0QYnd.js +22 -0
  268. package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
  269. package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
  270. package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
  271. package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
  272. package/dist/src/{transcription-BO1AHegO.cjs → transcription-CL78qbOU.cjs} +14 -15
  273. package/dist/src/{transcription-mYS9vd5v.js → transcription-DAtxHhAM.js} +14 -7
  274. package/dist/src/{transcription-X2-B4vkX.js → transcription-LNZTNUUL.js} +14 -16
  275. package/dist/src/{transcription-lzBLiTFJ.js → transcription-QHh3AH6Z.js} +15 -17
  276. package/dist/src/{transform-DeGlxb0D.js → transform-Cgi24fJ7.js} +39 -47
  277. package/dist/src/{transform-B1Hi5lWS.cjs → transform-CzK1Q0zl.cjs} +24 -26
  278. package/dist/src/{transform-CYDILYDe.js → transform-DECvGmzp.js} +15 -13
  279. package/dist/src/{transform-Dfl89yi4.js → transform-DGLazrMm.js} +39 -47
  280. package/dist/src/transform-DGxXocjk.js +1506 -0
  281. package/dist/src/{transform-D5PjiWiZ.cjs → transform-DOcQeLld.cjs} +179 -187
  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-aa6tmVpZ.js +216 -0
  285. package/dist/src/transform-m3qNw4KP.cjs +5 -0
  286. package/dist/src/{transformersAvailability-SZnTS3pJ.js → transformersAvailability-CEVM2GNQ.js} +2 -2
  287. package/dist/src/{transformersAvailability-D-glmEy7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
  288. package/dist/src/{transformersAvailability-CjeFXhuJ.js → transformersAvailability-D6c6ROpT.js} +2 -2
  289. package/dist/src/{types-CXQduE9o.js → types-CH3Ge2sE.js} +30 -90
  290. package/dist/src/{types-C5hEkb-x.js → types-CLKiCBW3.js} +25 -89
  291. package/dist/src/types-CN_TZ2GJ.js +3260 -0
  292. package/dist/src/{types-DWNf48sT.cjs → types-LJ0r3wbR.cjs} +500 -564
  293. package/dist/src/util-5cB-L7U3.js +1430 -0
  294. package/dist/src/util-6-GqIvzS.js +599 -0
  295. package/dist/src/{util-CoQjmE3u.js → util-B7T3SiBS.js} +4 -5
  296. package/dist/src/{util-D9eLdGfa.js → util-Betm42rL.js} +5 -6
  297. package/dist/src/{util-Bm_-UMD_.js → util-C-PPYSMq.js} +5 -6
  298. package/dist/src/{util-CyUdMzV0.cjs → util-CchiqXh_.cjs} +34 -35
  299. package/dist/src/{util-Du96oyYS.js → util-DaWTWKBK.js} +4 -5
  300. package/dist/src/{util-1wWM599Z.cjs → util-Db0a0AFH.cjs} +50 -51
  301. package/dist/src/{util-DQ984syk.js → util-Dlz_Wvgm.js} +37 -48
  302. package/dist/src/{util-_h4pVqrz.js → util-YT5HPZaS.js} +37 -48
  303. package/dist/src/{util-aLhtl3fe.cjs → util-Yz-1aEhW.cjs} +209 -220
  304. package/dist/src/util-ZZH-3QZz.js +293 -0
  305. package/dist/src/{utils-BjLy-Q72.cjs → utils-Cz9qXqII.cjs} +29 -32
  306. package/dist/src/{utils-CFMn2yHW.js → utils-XiOAgly5.js} +4 -7
  307. package/dist/src/utils-dLokC-eR.js +94 -0
  308. package/dist/src/{utils-DvWMzuMx.js → utils-f2-Moju7.js} +4 -7
  309. package/dist/tsconfig.tsbuildinfo +1 -1
  310. package/package.json +30 -30
  311. package/dist/src/app/assets/index-B2D0bCSI.js +0 -439
  312. package/dist/src/app/tsconfig.app.tsbuildinfo +0 -1
  313. package/dist/src/cache-ChPcurj7.js +0 -6
  314. package/dist/src/cache-VVu_W-yg.js +0 -8
  315. package/dist/src/cache-YLNCFEM2.cjs +0 -6
  316. package/dist/src/chunk-DHDDz29n.js +0 -22
  317. package/dist/src/chunk-FhC4c-0y.js +0 -21
  318. package/dist/src/cloud-BndfXy4H.js +0 -5
  319. package/dist/src/eval-BhHvMY82.js +0 -17
  320. package/dist/src/evalResult-Dq2gFNQY.js +0 -12
  321. package/dist/src/evalResult-nmcP5VKH.cjs +0 -12
  322. package/dist/src/evalResult-trqZjVYh.js +0 -14
  323. package/dist/src/evaluator-CnfPstzT.js +0 -39
  324. package/dist/src/fetch-IDPDue6F.cjs +0 -4
  325. package/dist/src/fetch-hKJ-It8q.js +0 -6
  326. package/dist/src/fetch-ouKnrWK-.js +0 -4
  327. package/dist/src/graders-CQn7WUsd.cjs +0 -34
  328. package/dist/src/graders-DC6QAbpW.js +0 -35
  329. package/dist/src/graders-DUWz3Y7j.js +0 -37
  330. package/dist/src/opencode-sdk-4bL9n-Gk.js +0 -382
  331. package/dist/src/opencode-sdk-BfC2zWcR.js +0 -376
  332. package/dist/src/opencode-sdk-DMJyuwMg.js +0 -380
  333. package/dist/src/opencode-sdk-Da-9adza.cjs +0 -383
  334. package/dist/src/providers-CsXB2Ix-.js +0 -35
  335. package/dist/src/providers-DO8ltjLC.js +0 -33
  336. package/dist/src/providers-Dtq-xnXd.cjs +0 -33
  337. package/dist/src/rubyUtils-BUbcND2f.js +0 -6
  338. package/dist/src/rubyUtils-Cr55X_KE.js +0 -5
  339. package/dist/src/rubyUtils-DlIiqoYo.cjs +0 -5
  340. package/dist/src/server-C2eQH4Gu.js +0 -6
  341. package/dist/src/server-CXWycu7H.cjs +0 -6
  342. package/dist/src/server-Q6OGlxxT.js +0 -8
  343. package/dist/src/store-B3EDO9Q3.js +0 -7
  344. package/dist/src/store-Dl9F8aw5.js +0 -6
  345. package/dist/src/store-SnrGrlt9.cjs +0 -6
  346. package/dist/src/telemetry-BGhiPZtl.js +0 -8
  347. package/dist/src/telemetry-CFfiYan6.cjs +0 -6
  348. package/dist/src/telemetry-DHzEduxX.js +0 -6
  349. package/dist/src/transform-C1x1ZlMQ.cjs +0 -6
  350. package/dist/src/transform-DYHjFmQu.js +0 -8
  351. package/dist/src/transform-rmwJT5JQ.js +0 -7
  352. package/dist/src/transformersAvailability-eJooj0gX.js +0 -35
@@ -1,382 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./chunk-DHDDz29n.js";
3
- import { C as getEnvString, O as cliState_default, n as getLogLevel, o as logger_default } from "./logger-LSBxlt7a.js";
4
- import "./fetch-CXZI9RRr.js";
5
- import "./cloud-CZ-q9Ier.js";
6
- import "./cache-jsiwsAJv.js";
7
- import { r as importModule } from "./esm-B9dPm_BF.js";
8
- import { n as getCachedResponse, r as initializeAgenticCache, t as cacheResponse } from "./agentic-utils-D922n6mm.js";
9
- import { createRequire } from "node:module";
10
- import fs from "fs";
11
- import path from "path";
12
- import os from "os";
13
- import dedent from "dedent";
14
-
15
- //#region src/providers/opencode-sdk.ts
16
- /**
17
- * Check if promptfoo is in debug mode
18
- */
19
- function isDebugMode() {
20
- return getLogLevel() === "debug";
21
- }
22
- /**
23
- * Maximum number of sessions to keep in memory to prevent unbounded growth
24
- */
25
- const MAX_SESSIONS = 100;
26
- /**
27
- * Resolve ESM-only package entry point by reading package.json exports
28
- * Handles packages that only have "import" condition (no "require" condition)
29
- *
30
- * @param packageName - The package name (e.g., '@opencode-ai/sdk')
31
- * @param basePath - Base path for resolution
32
- * @returns Absolute path to the ESM entry point
33
- */
34
- function resolveEsmPackage(packageName, basePath) {
35
- const require = createRequire(path.join(basePath, "package.json"));
36
- let packageJsonPath;
37
- try {
38
- packageJsonPath = require.resolve(`${packageName}/package.json`);
39
- } catch {
40
- packageJsonPath = path.join(basePath, "node_modules", ...packageName.split("/"), "package.json");
41
- if (!fs.existsSync(packageJsonPath)) throw new Error(`Cannot find ${packageName}/package.json`);
42
- }
43
- const packageDir = path.dirname(packageJsonPath);
44
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
45
- let esmEntry;
46
- if (packageJson.exports) {
47
- const mainExport = packageJson.exports["."] || packageJson.exports;
48
- if (typeof mainExport === "string") esmEntry = mainExport;
49
- else if (typeof mainExport === "object") esmEntry = mainExport.import || mainExport.default;
50
- }
51
- if (!esmEntry) esmEntry = packageJson.module || packageJson.main;
52
- if (!esmEntry) throw new Error(`Cannot find ESM entry point in ${packageName}/package.json`);
53
- return path.join(packageDir, esmEntry);
54
- }
55
- /**
56
- * Helper to load the OpenCode SDK ESM module
57
- *
58
- * Uses a two-phase approach:
59
- * 1. Try simple dynamic import - works when SDK is in same node_modules tree
60
- * 2. Fall back to smart ESM resolution for edge cases (pnpm, global installs, monorepos)
61
- */
62
- async function loadOpenCodeSDK() {
63
- try {
64
- logger_default.debug("Attempting simple dynamic import of @opencode-ai/sdk");
65
- return await import("@opencode-ai/sdk");
66
- } catch {
67
- logger_default.debug("Simple import failed, falling back to smart ESM resolution");
68
- }
69
- try {
70
- const modulePath = resolveEsmPackage("@opencode-ai/sdk", cliState_default.basePath && path.isAbsolute(cliState_default.basePath) ? cliState_default.basePath : process.cwd());
71
- logger_default.debug(`Resolved OpenCode SDK path: ${modulePath}`);
72
- return await importModule(modulePath);
73
- } catch (err) {
74
- logger_default.error(`Failed to load OpenCode SDK: ${err}`);
75
- const stack = err.stack;
76
- if (stack) logger_default.error(stack);
77
- throw new Error(dedent`The @opencode-ai/sdk package is required but not installed.
78
-
79
- To use the OpenCode SDK provider, install it with:
80
- npm install @opencode-ai/sdk
81
-
82
- For more information, see: https://www.promptfoo.dev/docs/providers/opencode-sdk/`);
83
- }
84
- }
85
- var OpenCodeSDKProvider = class {
86
- config;
87
- env;
88
- providerId = "opencode:sdk";
89
- opencodeModule;
90
- client;
91
- server;
92
- sessions = /* @__PURE__ */ new Map();
93
- sessionOrder = [];
94
- constructor(options = {}) {
95
- const { config, env, id } = options;
96
- this.config = config ?? {};
97
- this.env = env;
98
- this.providerId = id ?? this.providerId;
99
- }
100
- id() {
101
- return this.providerId;
102
- }
103
- /**
104
- * Get API key based on provider_id or common environment variables
105
- */
106
- getApiKey() {
107
- if (this.config?.apiKey) return this.config.apiKey;
108
- const providerId = this.config?.provider_id?.toLowerCase();
109
- if (providerId === "anthropic") return this.env?.ANTHROPIC_API_KEY || getEnvString("ANTHROPIC_API_KEY");
110
- if (providerId === "openai") return this.env?.OPENAI_API_KEY || getEnvString("OPENAI_API_KEY");
111
- if (providerId === "google") return this.env?.GOOGLE_API_KEY || getEnvString("GOOGLE_API_KEY");
112
- return this.env?.ANTHROPIC_API_KEY || getEnvString("ANTHROPIC_API_KEY") || this.env?.OPENAI_API_KEY || getEnvString("OPENAI_API_KEY");
113
- }
114
- toString() {
115
- return "[OpenCode SDK Provider]";
116
- }
117
- async cleanup() {
118
- if (!this.config.persist_sessions) for (const sessionId of this.sessions.values()) try {
119
- await this.client?.session?.delete({ path: { id: sessionId } });
120
- } catch (err) {
121
- logger_default.debug(`Failed to delete session ${sessionId}: ${err}`);
122
- }
123
- this.sessions.clear();
124
- this.sessionOrder = [];
125
- if (this.server) {
126
- try {
127
- this.server.close();
128
- } catch (err) {
129
- logger_default.debug(`Failed to close OpenCode server: ${err}`);
130
- }
131
- this.server = void 0;
132
- }
133
- }
134
- /**
135
- * Build the tools configuration based on config and defaults
136
- */
137
- buildToolsConfig(config) {
138
- if (config.tools) return config.tools;
139
- if (!config.working_dir) return {
140
- bash: false,
141
- edit: false,
142
- write: false,
143
- read: false,
144
- grep: false,
145
- glob: false,
146
- list: false,
147
- patch: false,
148
- todowrite: false,
149
- todoread: false,
150
- webfetch: false,
151
- question: false,
152
- skill: false,
153
- lsp: false
154
- };
155
- return {
156
- bash: false,
157
- edit: false,
158
- write: false,
159
- read: true,
160
- grep: true,
161
- glob: true,
162
- list: true,
163
- patch: false,
164
- todowrite: false,
165
- todoread: false,
166
- webfetch: false,
167
- question: false,
168
- skill: false,
169
- lsp: false
170
- };
171
- }
172
- /**
173
- * Add a session to the cache with LRU eviction
174
- */
175
- addSession(cacheKey, sessionId) {
176
- while (this.sessions.size >= MAX_SESSIONS && this.sessionOrder.length > 0) {
177
- const oldestKey = this.sessionOrder.shift();
178
- if (oldestKey) {
179
- const oldSessionId = this.sessions.get(oldestKey);
180
- this.sessions.delete(oldestKey);
181
- if (oldSessionId) this.client?.session?.delete({ path: { id: oldSessionId } }).catch((err) => {
182
- logger_default.debug(`Failed to delete evicted session ${oldSessionId}: ${err}`);
183
- });
184
- }
185
- }
186
- this.sessions.set(cacheKey, sessionId);
187
- this.sessionOrder.push(cacheKey);
188
- }
189
- async callApi(prompt, context, callOptions) {
190
- const config = {
191
- ...this.config,
192
- ...context?.prompt?.config
193
- };
194
- let isTempDir = false;
195
- let workingDir;
196
- if (config.working_dir) {
197
- workingDir = path.isAbsolute(config.working_dir) ? config.working_dir : path.resolve(process.cwd(), config.working_dir);
198
- let stats;
199
- try {
200
- stats = fs.statSync(workingDir);
201
- } catch (err) {
202
- throw new Error(`Working directory ${config.working_dir} (resolved to ${workingDir}) does not exist or isn't accessible: ${err.message}`);
203
- }
204
- if (!stats.isDirectory()) throw new Error(`Working directory ${config.working_dir} (resolved to ${workingDir}) is not a directory`);
205
- } else {
206
- isTempDir = true;
207
- workingDir = fs.mkdtempSync(path.join(os.tmpdir(), "promptfoo-opencode-sdk-"));
208
- }
209
- const mcpConfig = config.mcp && Object.keys(config.mcp).length > 0 ? config.mcp : void 0;
210
- const cacheResult = await initializeAgenticCache({
211
- cacheKeyPrefix: "opencode:sdk",
212
- workingDir: config.working_dir ? workingDir : void 0,
213
- bustCache: context?.bustCache,
214
- mcp: mcpConfig,
215
- cacheMcp: config.cache_mcp
216
- }, {
217
- prompt,
218
- provider_id: config.provider_id,
219
- model: config.model,
220
- tools: this.buildToolsConfig(config),
221
- permission: config.permission,
222
- agent: config.agent,
223
- custom_agent: config.custom_agent
224
- });
225
- const cachedResponse = await getCachedResponse(cacheResult, "OpenCode SDK");
226
- if (cachedResponse) return cachedResponse;
227
- if (callOptions?.abortSignal?.aborted) return { error: "OpenCode SDK call aborted before it started" };
228
- try {
229
- if (!this.opencodeModule) this.opencodeModule = await loadOpenCodeSDK();
230
- if (!this.client) {
231
- const { createOpencode, createOpencodeClient } = this.opencodeModule;
232
- if (config.baseUrl) this.client = createOpencodeClient({ baseUrl: config.baseUrl });
233
- else {
234
- const homeDir = os.homedir();
235
- const opencodeBinPath = path.join(homeDir, ".opencode", "bin");
236
- const serverEnv = { ...process.env };
237
- if (!serverEnv.PATH?.includes(opencodeBinPath)) {
238
- serverEnv.PATH = `${opencodeBinPath}:${serverEnv.PATH ?? ""}`;
239
- logger_default.debug(`Added ${opencodeBinPath} to PATH for OpenCode CLI`);
240
- }
241
- if (config.log_level === "debug" || isDebugMode()) {
242
- serverEnv.DEBUG = serverEnv.DEBUG || "opencode:*";
243
- logger_default.debug("[OpenCode SDK] Debug mode enabled, synced from promptfoo log level");
244
- }
245
- const serverOptions = {
246
- hostname: config.hostname ?? "127.0.0.1",
247
- port: config.port ?? 0,
248
- timeout: config.timeout ?? 3e4,
249
- env: serverEnv
250
- };
251
- const serverConfig = {};
252
- if (config.mcp && Object.keys(config.mcp).length > 0) {
253
- serverConfig.mcp = config.mcp;
254
- logger_default.debug(`[OpenCode SDK] Configuring MCP servers: ${Object.keys(config.mcp).join(", ")}`);
255
- }
256
- if (config.custom_agent) {
257
- serverConfig.agent = { custom: {
258
- description: config.custom_agent.description,
259
- model: config.custom_agent.model,
260
- temperature: config.custom_agent.temperature,
261
- top_p: config.custom_agent.top_p,
262
- tools: config.custom_agent.tools,
263
- permission: config.custom_agent.permission,
264
- prompt: config.custom_agent.prompt,
265
- mode: config.custom_agent.mode ?? "primary",
266
- maxSteps: config.custom_agent.steps ?? config.custom_agent.maxSteps,
267
- color: config.custom_agent.color,
268
- disable: config.custom_agent.disable,
269
- hidden: config.custom_agent.hidden
270
- } };
271
- logger_default.debug(`[OpenCode SDK] Configuring custom agent: ${config.custom_agent.description}`);
272
- }
273
- if (config.permission) {
274
- serverConfig.permission = config.permission;
275
- logger_default.debug("[OpenCode SDK] Configuring global permissions");
276
- }
277
- const toolsConfig = this.buildToolsConfig(config);
278
- if (toolsConfig) serverConfig.tools = toolsConfig;
279
- if (Object.keys(serverConfig).length > 0) serverOptions.config = serverConfig;
280
- const opencode = await createOpencode(serverOptions);
281
- this.client = opencode.client;
282
- this.server = opencode.server;
283
- logger_default.debug(`OpenCode server started at ${opencode.server.url}`);
284
- }
285
- }
286
- let sessionId;
287
- const sessionCacheKey = cacheResult.cacheKey;
288
- if (config.session_id) sessionId = config.session_id;
289
- else if (config.persist_sessions && sessionCacheKey && this.sessions.has(sessionCacheKey)) sessionId = this.sessions.get(sessionCacheKey);
290
- else {
291
- const createResult = await this.client.session.create({ body: { title: `promptfoo-${Date.now()}` } });
292
- const extractedId = createResult?.data?.id ?? createResult?.id;
293
- if (!extractedId) throw new Error("Failed to get session ID from OpenCode SDK response");
294
- sessionId = extractedId;
295
- if (config.persist_sessions && sessionCacheKey) this.addSession(sessionCacheKey, sessionId);
296
- }
297
- const promptBody = { parts: [{
298
- type: "text",
299
- text: prompt
300
- }] };
301
- if (config.provider_id || config.model) promptBody.model = {
302
- providerID: config.provider_id ?? "",
303
- modelID: config.model ?? ""
304
- };
305
- const toolsConfig = this.buildToolsConfig(config);
306
- if (toolsConfig) promptBody.tools = toolsConfig;
307
- if (config.agent) promptBody.agent = config.agent;
308
- else if (config.custom_agent) promptBody.agent = "custom";
309
- if (config.custom_agent?.prompt) promptBody.system = config.custom_agent.prompt;
310
- if (config.permission) promptBody.permission = config.permission;
311
- const promptOptions = {
312
- path: { id: sessionId },
313
- body: promptBody
314
- };
315
- if (config.working_dir) promptOptions.query = { directory: workingDir };
316
- logger_default.debug(`OpenCode SDK prompt options:`, {
317
- path: promptOptions.path,
318
- body: promptBody,
319
- query: promptOptions.query
320
- });
321
- const response = await this.client.session.prompt(promptOptions);
322
- logger_default.debug(`OpenCode SDK response received`);
323
- const responseData = response?.data;
324
- const assistantMessage = responseData?.info;
325
- const parts = responseData?.parts ?? [];
326
- let output = "";
327
- for (const part of parts) if (part.type === "text" && part.text) output += (output ? "\n" : "") + part.text;
328
- const raw = JSON.stringify(response);
329
- const tokens = assistantMessage?.tokens;
330
- const tokenUsage = tokens ? {
331
- prompt: tokens.input ?? 0,
332
- completion: tokens.output ?? 0,
333
- total: (tokens.input ?? 0) + (tokens.output ?? 0)
334
- } : void 0;
335
- const cost = assistantMessage?.cost ?? 0;
336
- const providerResponse = {
337
- output,
338
- tokenUsage,
339
- cost,
340
- raw,
341
- sessionId
342
- };
343
- await cacheResponse(cacheResult, providerResponse, "OpenCode SDK");
344
- logger_default.debug(`OpenCode SDK response: ${output.substring(0, 100)}...`);
345
- return providerResponse;
346
- } catch (error) {
347
- if (error?.name === "AbortError" || callOptions?.abortSignal?.aborted) {
348
- logger_default.warn("OpenCode SDK call aborted");
349
- return { error: "OpenCode SDK call aborted" };
350
- }
351
- if (error?.code === "ENOENT" && error?.message?.includes("opencode")) {
352
- const cliError = dedent`The OpenCode CLI is required but not installed.
353
-
354
- The OpenCode SDK requires the 'opencode' CLI to be installed and available in your PATH.
355
-
356
- Install it with:
357
- curl -fsSL https://opencode.ai/install | bash
358
-
359
- Or see: https://opencode.ai for other installation methods.`;
360
- logger_default.error(cliError);
361
- return { error: cliError };
362
- }
363
- logger_default.error(`Error calling OpenCode SDK: ${error}`);
364
- return { error: `Error calling OpenCode SDK: ${error.message || error}` };
365
- } finally {
366
- if (isTempDir && workingDir) fs.rmSync(workingDir, {
367
- recursive: true,
368
- force: true
369
- });
370
- const sessionCacheKey = cacheResult.cacheKey;
371
- if (!config.persist_sessions && !config.session_id && sessionCacheKey) {
372
- this.sessions.delete(sessionCacheKey);
373
- const idx = this.sessionOrder.indexOf(sessionCacheKey);
374
- if (idx !== -1) this.sessionOrder.splice(idx, 1);
375
- }
376
- }
377
- }
378
- };
379
-
380
- //#endregion
381
- export { OpenCodeSDKProvider };
382
- //# sourceMappingURL=opencode-sdk-4bL9n-Gk.js.map