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,13 +1,13 @@
1
- const require_logger = require('./logger-BdZ-IqBc.cjs');
2
- const require_esm = 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
- const require_transform = require('./transform-ivxEY4f7.cjs');
9
- const require_util$1 = require('./util-DkFTvieG.cjs');
10
- const require_cometapi = require('./cometapi-JbvOJSCO.cjs');
1
+ const require_logger = require("./logger-Cp1GPUjj.cjs");
2
+ const require_esm = require("./esm-CnNt7sI4.cjs");
3
+ require("./pythonUtils-CTU3Y3lw.cjs");
4
+ require("./types-LJ0r3wbR.cjs");
5
+ require("./util-Yz-1aEhW.cjs");
6
+ require("./fetch-BxUk8odA.cjs");
7
+ require("./cache-COish3-W.cjs");
8
+ const require_transform = require("./transform-DOcQeLld.cjs");
9
+ const require_util$1 = require("./util-CchiqXh_.cjs");
10
+ const require_cometapi = require("./cometapi-vY6aDZgo.cjs");
11
11
  let node_fs = require("node:fs");
12
12
  node_fs = require_logger.__toESM(node_fs);
13
13
  let node_path = require("node:path");
@@ -16,7 +16,6 @@ let dedent = require("dedent");
16
16
  dedent = require_logger.__toESM(dedent);
17
17
  let node_os = require("node:os");
18
18
  node_os = require_logger.__toESM(node_os);
19
-
20
19
  //#region src/providers/claude-agent-sdk.ts
21
20
  /**
22
21
  * Claude Agent SDK Provider
@@ -53,7 +52,7 @@ const CLAUDE_CODE_MODEL_ALIASES = [
53
52
  * Uses resolvePackageEntryPoint to handle ESM-only packages with restrictive exports
54
53
  */
55
54
  async function loadClaudeCodeSDK() {
56
- const claudeCodePath = require_esm.resolvePackageEntryPoint("@anthropic-ai/claude-agent-sdk", require_logger.cliState_default.basePath && node_path.default.isAbsolute(require_logger.cliState_default.basePath) ? require_logger.cliState_default.basePath : process.cwd());
55
+ const claudeCodePath = require_esm.resolvePackageEntryPoint("@anthropic-ai/claude-agent-sdk", require_logger.state.basePath && node_path.default.isAbsolute(require_logger.state.basePath) ? require_logger.state.basePath : process.cwd());
57
56
  if (!claudeCodePath) throw new Error(dedent.default`The @anthropic-ai/claude-agent-sdk package is required but not installed.
58
57
 
59
58
  To use the Claude Agent SDK provider, install it with:
@@ -63,8 +62,8 @@ async function loadClaudeCodeSDK() {
63
62
  try {
64
63
  return require_esm.importModule(claudeCodePath);
65
64
  } catch (err) {
66
- require_logger.logger_default.error(`Failed to load Claude Agent SDK: ${err}`);
67
- if (err.stack) require_logger.logger_default.error(err.stack);
65
+ require_logger.logger.error(`Failed to load Claude Agent SDK: ${err}`);
66
+ if (err.stack) require_logger.logger.error(err.stack);
68
67
  throw new Error(dedent.default`Failed to load @anthropic-ai/claude-agent-sdk.
69
68
 
70
69
  The package was found but could not be loaded. This may be due to:
@@ -131,8 +130,8 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
131
130
  this.env = env;
132
131
  this.apiKey = this.getApiKey();
133
132
  this.providerId = id ?? this.providerId;
134
- if (this.config.model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.model)) require_logger.logger_default.warn(`Using unknown model for Claude Agent SDK: ${this.config.model}`);
135
- if (this.config.fallback_model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.fallback_model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.fallback_model)) require_logger.logger_default.warn(`Using unknown model for Claude Agent SDK fallback: ${this.config.fallback_model}`);
133
+ if (this.config.model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.model)) require_logger.logger.warn(`Using unknown model for Claude Agent SDK: ${this.config.model}`);
134
+ if (this.config.fallback_model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.fallback_model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.fallback_model)) require_logger.logger.warn(`Using unknown model for Claude Agent SDK fallback: ${this.config.fallback_model}`);
136
135
  }
137
136
  id() {
138
137
  return this.providerId;
@@ -160,9 +159,10 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
160
159
  if ("custom_allowed_tools" in config) allowedTools = Array.from(new Set(config.custom_allowed_tools ?? [])).sort();
161
160
  else if (config.append_allowed_tools) allowedTools = Array.from(new Set([...defaultAllowedTools, ...config.append_allowed_tools])).sort();
162
161
  const disallowedTools = config.disallowed_tools ? Array.from(new Set(config.disallowed_tools)).sort() : void 0;
162
+ const basePath = require_logger.state.basePath ? node_path.default.resolve(require_logger.state.basePath) : process.cwd();
163
163
  let isTempDir = false;
164
164
  let workingDir;
165
- if (config.working_dir) workingDir = config.working_dir;
165
+ if (config.working_dir) workingDir = require_esm.safeResolve(basePath, config.working_dir);
166
166
  else isTempDir = true;
167
167
  let canUseTool;
168
168
  if (config.ask_user_question) canUseTool = createAskUserQuestionCanUseTool(config.ask_user_question.behavior);
@@ -180,9 +180,12 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
180
180
  maxThinkingTokens: config.max_thinking_tokens,
181
181
  allowedTools,
182
182
  disallowedTools,
183
- plugins: config.plugins,
183
+ plugins: config.plugins?.map((plugin) => ({
184
+ ...plugin,
185
+ path: require_esm.safeResolve(basePath, plugin.path)
186
+ })),
184
187
  maxBudgetUsd: config.max_budget_usd,
185
- additionalDirectories: config.additional_directories,
188
+ additionalDirectories: config.additional_directories?.map((dir) => require_esm.safeResolve(basePath, dir)),
186
189
  resume: config.resume,
187
190
  forkSession: config.fork_session,
188
191
  resumeSessionAt: config.resume_session_at,
@@ -197,14 +200,14 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
197
200
  agent: config.agent,
198
201
  sessionId: config.session_id,
199
202
  debug: config.debug,
200
- debugFile: config.debug_file,
203
+ debugFile: config.debug_file ? require_esm.safeResolve(basePath, config.debug_file) : void 0,
201
204
  sandbox: config.sandbox,
202
205
  allowDangerouslySkipPermissions: config.allow_dangerously_skip_permissions,
203
206
  permissionPromptToolName: config.permission_prompt_tool_name,
204
207
  executable: config.executable,
205
208
  executableArgs: config.executable_args,
206
209
  extraArgs: config.extra_args,
207
- pathToClaudeCodeExecutable: config.path_to_claude_code_executable,
210
+ pathToClaudeCodeExecutable: config.path_to_claude_code_executable ? require_esm.safeResolve(basePath, config.path_to_claude_code_executable) : void 0,
208
211
  settingSources: config.setting_sources,
209
212
  tools: config.tools,
210
213
  enableFileCheckpointing: config.enable_file_checkpointing,
@@ -213,7 +216,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
213
216
  };
214
217
  const cacheResult = await require_cometapi.initializeAgenticCache({
215
218
  cacheKeyPrefix: "anthropic:claude-agent-sdk",
216
- workingDir: config.working_dir,
219
+ workingDir,
217
220
  bustCache: context?.bustCache,
218
221
  mcp: config.mcp?.servers?.length ? config.mcp : void 0,
219
222
  cacheMcp: config.cache_mcp
@@ -255,7 +258,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
255
258
  prompt,
256
259
  options
257
260
  };
258
- require_logger.logger_default.debug(`Calling Claude Agent SDK: ${JSON.stringify({
261
+ require_logger.logger.debug(`Calling Claude Agent SDK: ${JSON.stringify({
259
262
  prompt,
260
263
  options: {
261
264
  ...options,
@@ -298,7 +301,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
298
301
  const sessionId = msg.session_id;
299
302
  const toolCallsArray = Array.from(toolCallsMap.values());
300
303
  if (msg.subtype === "success") {
301
- require_logger.logger_default.debug(`Claude Agent SDK response: ${raw}`);
304
+ require_logger.logger.debug(`Claude Agent SDK response: ${raw}`);
302
305
  const response = {
303
306
  output: msg.structured_output !== void 0 ? msg.structured_output : msg.result,
304
307
  tokenUsage,
@@ -307,6 +310,11 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
307
310
  sessionId,
308
311
  metadata: {
309
312
  toolCalls: toolCallsArray,
313
+ numTurns: msg.num_turns,
314
+ durationMs: msg.duration_ms,
315
+ durationApiMs: msg.duration_api_ms,
316
+ modelUsage: msg.modelUsage,
317
+ permissionDenials: msg.permission_denials,
310
318
  ...msg.structured_output !== void 0 ? { structuredOutput: msg.structured_output } : {}
311
319
  }
312
320
  };
@@ -318,16 +326,23 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
318
326
  cost,
319
327
  raw,
320
328
  sessionId,
321
- metadata: { toolCalls: toolCallsArray }
329
+ metadata: {
330
+ toolCalls: toolCallsArray,
331
+ numTurns: msg.num_turns,
332
+ durationMs: msg.duration_ms,
333
+ durationApiMs: msg.duration_api_ms,
334
+ modelUsage: msg.modelUsage,
335
+ permissionDenials: msg.permission_denials
336
+ }
322
337
  };
323
338
  }
324
339
  return { error: "Claude Agent SDK call didn't return a result" };
325
340
  } catch (error) {
326
341
  if (error?.name === "AbortError" || callOptions?.abortSignal?.aborted) {
327
- require_logger.logger_default.warn("Claude Agent SDK call aborted");
342
+ require_logger.logger.warn("Claude Agent SDK call aborted");
328
343
  return { error: "Claude Agent SDK call aborted" };
329
344
  }
330
- require_logger.logger_default.error(`Error calling Claude Agent SDK: ${error}`);
345
+ require_logger.logger.error(`Error calling Claude Agent SDK: ${error}`);
331
346
  return { error: `Error calling Claude Agent SDK: ${error}` };
332
347
  } finally {
333
348
  if (isTempDir && workingDir) node_fs.default.rmSync(workingDir, {
@@ -349,7 +364,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
349
364
  }
350
365
  async cleanup() {}
351
366
  };
352
-
353
367
  //#endregion
354
368
  exports.ClaudeCodeSDKProvider = ClaudeCodeSDKProvider;
355
- //# sourceMappingURL=claude-agent-sdk-BzxF6NIJ.cjs.map
369
+
370
+ //# sourceMappingURL=claude-agent-sdk-CJH22shf.cjs.map
@@ -1,21 +1,17 @@
1
- #!/usr/bin/env node
2
- import "./chunk-DHDDz29n.js";
3
- import { C as getEnvString, O as cliState_default, o as logger_default } from "./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 { i as resolvePackageEntryPoint, r as importModule } from "./esm-CYhseqj4.js";
10
- import "./pythonUtils-r1uBuA0n.js";
11
- import { t as transformMCPConfigToClaudeCode } from "./transform-CoP2bJ7P.js";
12
- import { t as ANTHROPIC_MODELS } from "./util-vjscpUzy.js";
13
- import { n as getCachedResponse, r as initializeAgenticCache, t as cacheResponse } from "./agentic-utils-D6_gzOUF.js";
14
- import fs from "node:fs";
1
+ import { b as getEnvString, i as logger, w as state } from "./logger-CT3IKMKA.js";
2
+ import { i as resolvePackageEntryPoint, o as safeResolve, r as importModule } from "./esm-Cd1AjG1D.js";
3
+ import "./pythonUtils-D5nxkQ0P.js";
4
+ import "./types-CLKiCBW3.js";
5
+ import "./util-Dlz_Wvgm.js";
6
+ import "./fetch-60Gzydls.js";
7
+ import "./cache-8XhNqPKW.js";
8
+ import { t as transformMCPConfigToClaudeCode } from "./transform-DGLazrMm.js";
9
+ import { t as ANTHROPIC_MODELS } from "./util-DaWTWKBK.js";
10
+ import { i as initializeAgenticCache, r as getCachedResponse, t as cacheResponse } from "./cometapi-DkXrKi5z.js";
15
11
  import path from "node:path";
12
+ import fs from "node:fs";
16
13
  import dedent from "dedent";
17
14
  import os from "node:os";
18
-
19
15
  //#region src/providers/claude-agent-sdk.ts
20
16
  /**
21
17
  * Claude Agent SDK Provider
@@ -52,7 +48,7 @@ const CLAUDE_CODE_MODEL_ALIASES = [
52
48
  * Uses resolvePackageEntryPoint to handle ESM-only packages with restrictive exports
53
49
  */
54
50
  async function loadClaudeCodeSDK() {
55
- const claudeCodePath = resolvePackageEntryPoint("@anthropic-ai/claude-agent-sdk", cliState_default.basePath && path.isAbsolute(cliState_default.basePath) ? cliState_default.basePath : process.cwd());
51
+ const claudeCodePath = resolvePackageEntryPoint("@anthropic-ai/claude-agent-sdk", state.basePath && path.isAbsolute(state.basePath) ? state.basePath : process.cwd());
56
52
  if (!claudeCodePath) throw new Error(dedent`The @anthropic-ai/claude-agent-sdk package is required but not installed.
57
53
 
58
54
  To use the Claude Agent SDK provider, install it with:
@@ -62,8 +58,8 @@ async function loadClaudeCodeSDK() {
62
58
  try {
63
59
  return importModule(claudeCodePath);
64
60
  } catch (err) {
65
- logger_default.error(`Failed to load Claude Agent SDK: ${err}`);
66
- if (err.stack) logger_default.error(err.stack);
61
+ logger.error(`Failed to load Claude Agent SDK: ${err}`);
62
+ if (err.stack) logger.error(err.stack);
67
63
  throw new Error(dedent`Failed to load @anthropic-ai/claude-agent-sdk.
68
64
 
69
65
  The package was found but could not be loaded. This may be due to:
@@ -130,8 +126,8 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
130
126
  this.env = env;
131
127
  this.apiKey = this.getApiKey();
132
128
  this.providerId = id ?? this.providerId;
133
- if (this.config.model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.model)) logger_default.warn(`Using unknown model for Claude Agent SDK: ${this.config.model}`);
134
- if (this.config.fallback_model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.fallback_model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.fallback_model)) logger_default.warn(`Using unknown model for Claude Agent SDK fallback: ${this.config.fallback_model}`);
129
+ if (this.config.model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.model)) logger.warn(`Using unknown model for Claude Agent SDK: ${this.config.model}`);
130
+ if (this.config.fallback_model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.fallback_model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.fallback_model)) logger.warn(`Using unknown model for Claude Agent SDK fallback: ${this.config.fallback_model}`);
135
131
  }
136
132
  id() {
137
133
  return this.providerId;
@@ -159,9 +155,10 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
159
155
  if ("custom_allowed_tools" in config) allowedTools = Array.from(new Set(config.custom_allowed_tools ?? [])).sort();
160
156
  else if (config.append_allowed_tools) allowedTools = Array.from(new Set([...defaultAllowedTools, ...config.append_allowed_tools])).sort();
161
157
  const disallowedTools = config.disallowed_tools ? Array.from(new Set(config.disallowed_tools)).sort() : void 0;
158
+ const basePath = state.basePath ? path.resolve(state.basePath) : process.cwd();
162
159
  let isTempDir = false;
163
160
  let workingDir;
164
- if (config.working_dir) workingDir = config.working_dir;
161
+ if (config.working_dir) workingDir = safeResolve(basePath, config.working_dir);
165
162
  else isTempDir = true;
166
163
  let canUseTool;
167
164
  if (config.ask_user_question) canUseTool = createAskUserQuestionCanUseTool(config.ask_user_question.behavior);
@@ -179,9 +176,12 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
179
176
  maxThinkingTokens: config.max_thinking_tokens,
180
177
  allowedTools,
181
178
  disallowedTools,
182
- plugins: config.plugins,
179
+ plugins: config.plugins?.map((plugin) => ({
180
+ ...plugin,
181
+ path: safeResolve(basePath, plugin.path)
182
+ })),
183
183
  maxBudgetUsd: config.max_budget_usd,
184
- additionalDirectories: config.additional_directories,
184
+ additionalDirectories: config.additional_directories?.map((dir) => safeResolve(basePath, dir)),
185
185
  resume: config.resume,
186
186
  forkSession: config.fork_session,
187
187
  resumeSessionAt: config.resume_session_at,
@@ -196,14 +196,14 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
196
196
  agent: config.agent,
197
197
  sessionId: config.session_id,
198
198
  debug: config.debug,
199
- debugFile: config.debug_file,
199
+ debugFile: config.debug_file ? safeResolve(basePath, config.debug_file) : void 0,
200
200
  sandbox: config.sandbox,
201
201
  allowDangerouslySkipPermissions: config.allow_dangerously_skip_permissions,
202
202
  permissionPromptToolName: config.permission_prompt_tool_name,
203
203
  executable: config.executable,
204
204
  executableArgs: config.executable_args,
205
205
  extraArgs: config.extra_args,
206
- pathToClaudeCodeExecutable: config.path_to_claude_code_executable,
206
+ pathToClaudeCodeExecutable: config.path_to_claude_code_executable ? safeResolve(basePath, config.path_to_claude_code_executable) : void 0,
207
207
  settingSources: config.setting_sources,
208
208
  tools: config.tools,
209
209
  enableFileCheckpointing: config.enable_file_checkpointing,
@@ -212,7 +212,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
212
212
  };
213
213
  const cacheResult = await initializeAgenticCache({
214
214
  cacheKeyPrefix: "anthropic:claude-agent-sdk",
215
- workingDir: config.working_dir,
215
+ workingDir,
216
216
  bustCache: context?.bustCache,
217
217
  mcp: config.mcp?.servers?.length ? config.mcp : void 0,
218
218
  cacheMcp: config.cache_mcp
@@ -254,7 +254,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
254
254
  prompt,
255
255
  options
256
256
  };
257
- logger_default.debug(`Calling Claude Agent SDK: ${JSON.stringify({
257
+ logger.debug(`Calling Claude Agent SDK: ${JSON.stringify({
258
258
  prompt,
259
259
  options: {
260
260
  ...options,
@@ -297,7 +297,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
297
297
  const sessionId = msg.session_id;
298
298
  const toolCallsArray = Array.from(toolCallsMap.values());
299
299
  if (msg.subtype === "success") {
300
- logger_default.debug(`Claude Agent SDK response: ${raw}`);
300
+ logger.debug(`Claude Agent SDK response: ${raw}`);
301
301
  const response = {
302
302
  output: msg.structured_output !== void 0 ? msg.structured_output : msg.result,
303
303
  tokenUsage,
@@ -306,6 +306,11 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
306
306
  sessionId,
307
307
  metadata: {
308
308
  toolCalls: toolCallsArray,
309
+ numTurns: msg.num_turns,
310
+ durationMs: msg.duration_ms,
311
+ durationApiMs: msg.duration_api_ms,
312
+ modelUsage: msg.modelUsage,
313
+ permissionDenials: msg.permission_denials,
309
314
  ...msg.structured_output !== void 0 ? { structuredOutput: msg.structured_output } : {}
310
315
  }
311
316
  };
@@ -317,16 +322,23 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
317
322
  cost,
318
323
  raw,
319
324
  sessionId,
320
- metadata: { toolCalls: toolCallsArray }
325
+ metadata: {
326
+ toolCalls: toolCallsArray,
327
+ numTurns: msg.num_turns,
328
+ durationMs: msg.duration_ms,
329
+ durationApiMs: msg.duration_api_ms,
330
+ modelUsage: msg.modelUsage,
331
+ permissionDenials: msg.permission_denials
332
+ }
321
333
  };
322
334
  }
323
335
  return { error: "Claude Agent SDK call didn't return a result" };
324
336
  } catch (error) {
325
337
  if (error?.name === "AbortError" || callOptions?.abortSignal?.aborted) {
326
- logger_default.warn("Claude Agent SDK call aborted");
338
+ logger.warn("Claude Agent SDK call aborted");
327
339
  return { error: "Claude Agent SDK call aborted" };
328
340
  }
329
- logger_default.error(`Error calling Claude Agent SDK: ${error}`);
341
+ logger.error(`Error calling Claude Agent SDK: ${error}`);
330
342
  return { error: `Error calling Claude Agent SDK: ${error}` };
331
343
  } finally {
332
344
  if (isTempDir && workingDir) fs.rmSync(workingDir, {
@@ -348,7 +360,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
348
360
  }
349
361
  async cleanup() {}
350
362
  };
351
-
352
363
  //#endregion
353
364
  export { ClaudeCodeSDKProvider };
354
- //# sourceMappingURL=claude-agent-sdk-CmkTnKGH.js.map
365
+
366
+ //# sourceMappingURL=claude-agent-sdk-D6_k9FKA.js.map
@@ -1,10 +1,19 @@
1
- import { E as resolvePackageEntryPoint, I as getEnvString, L as cliState_default, T as importModule, j as logger_default, m as transformMCPConfigToClaudeCode, p as ANTHROPIC_MODELS } from "./server/index.js";
2
- import { n as getCachedResponse, r as initializeAgenticCache, t as cacheResponse } from "./cloudflare-gateway-Djf3F3_H.js";
1
+ #!/usr/bin/env node
2
+ import { C as getEnvString, O as state, o as logger } from "./logger-KkObSCzq.js";
3
+ import "./fetch-BMv0O527.js";
4
+ import "./cloud-Bc9526yV.js";
5
+ import "./types-CH3Ge2sE.js";
6
+ import "./cache-CG0SlR1d.js";
7
+ import "./util-YT5HPZaS.js";
8
+ import { i as resolvePackageEntryPoint, o as safeResolve, r as importModule } from "./esm-C03C-mv3.js";
9
+ import "./pythonUtils-C3py6GC1.js";
10
+ import { t as transformMCPConfigToClaudeCode } from "./transform-Cgi24fJ7.js";
11
+ import { t as ANTHROPIC_MODELS } from "./util-B7T3SiBS.js";
12
+ import { i as initializeAgenticCache, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-BKIN5PKu.js";
3
13
  import fs from "node:fs";
4
14
  import path from "node:path";
5
15
  import dedent from "dedent";
6
16
  import os from "node:os";
7
-
8
17
  //#region src/providers/claude-agent-sdk.ts
9
18
  /**
10
19
  * Claude Agent SDK Provider
@@ -41,7 +50,7 @@ const CLAUDE_CODE_MODEL_ALIASES = [
41
50
  * Uses resolvePackageEntryPoint to handle ESM-only packages with restrictive exports
42
51
  */
43
52
  async function loadClaudeCodeSDK() {
44
- const claudeCodePath = resolvePackageEntryPoint("@anthropic-ai/claude-agent-sdk", cliState_default.basePath && path.isAbsolute(cliState_default.basePath) ? cliState_default.basePath : process.cwd());
53
+ const claudeCodePath = resolvePackageEntryPoint("@anthropic-ai/claude-agent-sdk", state.basePath && path.isAbsolute(state.basePath) ? state.basePath : process.cwd());
45
54
  if (!claudeCodePath) throw new Error(dedent`The @anthropic-ai/claude-agent-sdk package is required but not installed.
46
55
 
47
56
  To use the Claude Agent SDK provider, install it with:
@@ -51,8 +60,8 @@ async function loadClaudeCodeSDK() {
51
60
  try {
52
61
  return importModule(claudeCodePath);
53
62
  } catch (err) {
54
- logger_default.error(`Failed to load Claude Agent SDK: ${err}`);
55
- if (err.stack) logger_default.error(err.stack);
63
+ logger.error(`Failed to load Claude Agent SDK: ${err}`);
64
+ if (err.stack) logger.error(err.stack);
56
65
  throw new Error(dedent`Failed to load @anthropic-ai/claude-agent-sdk.
57
66
 
58
67
  The package was found but could not be loaded. This may be due to:
@@ -119,8 +128,8 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
119
128
  this.env = env;
120
129
  this.apiKey = this.getApiKey();
121
130
  this.providerId = id ?? this.providerId;
122
- if (this.config.model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.model)) logger_default.warn(`Using unknown model for Claude Agent SDK: ${this.config.model}`);
123
- if (this.config.fallback_model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.fallback_model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.fallback_model)) logger_default.warn(`Using unknown model for Claude Agent SDK fallback: ${this.config.fallback_model}`);
131
+ if (this.config.model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.model)) logger.warn(`Using unknown model for Claude Agent SDK: ${this.config.model}`);
132
+ if (this.config.fallback_model && !ClaudeCodeSDKProvider.ANTHROPIC_MODELS_NAMES.includes(this.config.fallback_model) && !CLAUDE_CODE_MODEL_ALIASES.includes(this.config.fallback_model)) logger.warn(`Using unknown model for Claude Agent SDK fallback: ${this.config.fallback_model}`);
124
133
  }
125
134
  id() {
126
135
  return this.providerId;
@@ -148,9 +157,10 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
148
157
  if ("custom_allowed_tools" in config) allowedTools = Array.from(new Set(config.custom_allowed_tools ?? [])).sort();
149
158
  else if (config.append_allowed_tools) allowedTools = Array.from(new Set([...defaultAllowedTools, ...config.append_allowed_tools])).sort();
150
159
  const disallowedTools = config.disallowed_tools ? Array.from(new Set(config.disallowed_tools)).sort() : void 0;
160
+ const basePath = state.basePath ? path.resolve(state.basePath) : process.cwd();
151
161
  let isTempDir = false;
152
162
  let workingDir;
153
- if (config.working_dir) workingDir = config.working_dir;
163
+ if (config.working_dir) workingDir = safeResolve(basePath, config.working_dir);
154
164
  else isTempDir = true;
155
165
  let canUseTool;
156
166
  if (config.ask_user_question) canUseTool = createAskUserQuestionCanUseTool(config.ask_user_question.behavior);
@@ -168,9 +178,12 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
168
178
  maxThinkingTokens: config.max_thinking_tokens,
169
179
  allowedTools,
170
180
  disallowedTools,
171
- plugins: config.plugins,
181
+ plugins: config.plugins?.map((plugin) => ({
182
+ ...plugin,
183
+ path: safeResolve(basePath, plugin.path)
184
+ })),
172
185
  maxBudgetUsd: config.max_budget_usd,
173
- additionalDirectories: config.additional_directories,
186
+ additionalDirectories: config.additional_directories?.map((dir) => safeResolve(basePath, dir)),
174
187
  resume: config.resume,
175
188
  forkSession: config.fork_session,
176
189
  resumeSessionAt: config.resume_session_at,
@@ -185,14 +198,14 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
185
198
  agent: config.agent,
186
199
  sessionId: config.session_id,
187
200
  debug: config.debug,
188
- debugFile: config.debug_file,
201
+ debugFile: config.debug_file ? safeResolve(basePath, config.debug_file) : void 0,
189
202
  sandbox: config.sandbox,
190
203
  allowDangerouslySkipPermissions: config.allow_dangerously_skip_permissions,
191
204
  permissionPromptToolName: config.permission_prompt_tool_name,
192
205
  executable: config.executable,
193
206
  executableArgs: config.executable_args,
194
207
  extraArgs: config.extra_args,
195
- pathToClaudeCodeExecutable: config.path_to_claude_code_executable,
208
+ pathToClaudeCodeExecutable: config.path_to_claude_code_executable ? safeResolve(basePath, config.path_to_claude_code_executable) : void 0,
196
209
  settingSources: config.setting_sources,
197
210
  tools: config.tools,
198
211
  enableFileCheckpointing: config.enable_file_checkpointing,
@@ -201,7 +214,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
201
214
  };
202
215
  const cacheResult = await initializeAgenticCache({
203
216
  cacheKeyPrefix: "anthropic:claude-agent-sdk",
204
- workingDir: config.working_dir,
217
+ workingDir,
205
218
  bustCache: context?.bustCache,
206
219
  mcp: config.mcp?.servers?.length ? config.mcp : void 0,
207
220
  cacheMcp: config.cache_mcp
@@ -243,7 +256,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
243
256
  prompt,
244
257
  options
245
258
  };
246
- logger_default.debug(`Calling Claude Agent SDK: ${JSON.stringify({
259
+ logger.debug(`Calling Claude Agent SDK: ${JSON.stringify({
247
260
  prompt,
248
261
  options: {
249
262
  ...options,
@@ -286,7 +299,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
286
299
  const sessionId = msg.session_id;
287
300
  const toolCallsArray = Array.from(toolCallsMap.values());
288
301
  if (msg.subtype === "success") {
289
- logger_default.debug(`Claude Agent SDK response: ${raw}`);
302
+ logger.debug(`Claude Agent SDK response: ${raw}`);
290
303
  const response = {
291
304
  output: msg.structured_output !== void 0 ? msg.structured_output : msg.result,
292
305
  tokenUsage,
@@ -295,6 +308,11 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
295
308
  sessionId,
296
309
  metadata: {
297
310
  toolCalls: toolCallsArray,
311
+ numTurns: msg.num_turns,
312
+ durationMs: msg.duration_ms,
313
+ durationApiMs: msg.duration_api_ms,
314
+ modelUsage: msg.modelUsage,
315
+ permissionDenials: msg.permission_denials,
298
316
  ...msg.structured_output !== void 0 ? { structuredOutput: msg.structured_output } : {}
299
317
  }
300
318
  };
@@ -306,16 +324,23 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
306
324
  cost,
307
325
  raw,
308
326
  sessionId,
309
- metadata: { toolCalls: toolCallsArray }
327
+ metadata: {
328
+ toolCalls: toolCallsArray,
329
+ numTurns: msg.num_turns,
330
+ durationMs: msg.duration_ms,
331
+ durationApiMs: msg.duration_api_ms,
332
+ modelUsage: msg.modelUsage,
333
+ permissionDenials: msg.permission_denials
334
+ }
310
335
  };
311
336
  }
312
337
  return { error: "Claude Agent SDK call didn't return a result" };
313
338
  } catch (error) {
314
339
  if (error?.name === "AbortError" || callOptions?.abortSignal?.aborted) {
315
- logger_default.warn("Claude Agent SDK call aborted");
340
+ logger.warn("Claude Agent SDK call aborted");
316
341
  return { error: "Claude Agent SDK call aborted" };
317
342
  }
318
- logger_default.error(`Error calling Claude Agent SDK: ${error}`);
343
+ logger.error(`Error calling Claude Agent SDK: ${error}`);
319
344
  return { error: `Error calling Claude Agent SDK: ${error}` };
320
345
  } finally {
321
346
  if (isTempDir && workingDir) fs.rmSync(workingDir, {
@@ -337,7 +362,7 @@ var ClaudeCodeSDKProvider = class ClaudeCodeSDKProvider {
337
362
  }
338
363
  async cleanup() {}
339
364
  };
340
-
341
365
  //#endregion
342
366
  export { ClaudeCodeSDKProvider };
343
- //# sourceMappingURL=claude-agent-sdk-rXCBLK_o.js.map
367
+
368
+ //# sourceMappingURL=claude-agent-sdk-Dy5lT-Tx.js.map
@@ -1,9 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvString, o as logger_default, v as getConfigDirectoryPath } from "./logger-BotXmWKW.js";
2
+ import { C as getEnvString, o as logger, v as getConfigDirectoryPath } from "./logger-KkObSCzq.js";
3
3
  import * as fs$1 from "fs";
4
4
  import * as path$1 from "path";
5
5
  import yaml from "js-yaml";
6
-
7
6
  //#region src/globalConfig/globalConfig.ts
8
7
  /**
9
8
  * Functions for manipulating the global configuration file, which lives at
@@ -43,11 +42,11 @@ function writeGlobalConfigPartial(partialConfig) {
43
42
  });
44
43
  writeGlobalConfig(updatedConfig);
45
44
  }
46
-
47
45
  //#endregion
48
46
  //#region src/globalConfig/cloud.ts
49
47
  const CLOUD_API_HOST = "https://api.promptfoo.app";
50
48
  const API_HOST = getEnvString("API_HOST", CLOUD_API_HOST);
49
+ const SHARING_CUTOFF_DATE = /* @__PURE__ */ new Date("2026-03-09T00:00:00Z");
51
50
  var CloudConfig = class {
52
51
  config;
53
52
  constructor() {
@@ -56,6 +55,7 @@ var CloudConfig = class {
56
55
  appUrl: savedConfig.appUrl || "https://www.promptfoo.app",
57
56
  apiHost: savedConfig.apiHost,
58
57
  apiKey: savedConfig.apiKey,
58
+ sharing: savedConfig.sharing,
59
59
  currentOrganizationId: savedConfig.currentOrganizationId,
60
60
  currentTeamId: savedConfig.currentTeamId,
61
61
  teams: savedConfig.teams
@@ -100,8 +100,21 @@ var CloudConfig = class {
100
100
  getAppUrl() {
101
101
  return this.config.appUrl;
102
102
  }
103
+ getSharing() {
104
+ return this.config.sharing;
105
+ }
106
+ /**
107
+ * Sets the sharing preference. Note: this value is only updated at authentication time
108
+ * (via `validateAndSetApiToken`) and may become stale if the user's license status
109
+ * changes between re-authentications.
110
+ */
111
+ setSharing(sharing) {
112
+ this.config.sharing = sharing;
113
+ this.saveConfig();
114
+ }
103
115
  delete() {
104
116
  writeGlobalConfigPartial({ cloud: {} });
117
+ this.reload();
105
118
  }
106
119
  saveConfig() {
107
120
  writeGlobalConfigPartial({ cloud: this.config });
@@ -113,6 +126,7 @@ var CloudConfig = class {
113
126
  appUrl: savedConfig.appUrl || "https://www.promptfoo.app",
114
127
  apiHost: savedConfig.apiHost,
115
128
  apiKey: savedConfig.apiKey,
129
+ sharing: savedConfig.sharing,
116
130
  currentOrganizationId: savedConfig.currentOrganizationId,
117
131
  currentTeamId: savedConfig.currentTeamId,
118
132
  teams: savedConfig.teams
@@ -120,27 +134,33 @@ var CloudConfig = class {
120
134
  }
121
135
  async validateAndSetApiToken(token, apiHost) {
122
136
  try {
123
- const { fetchWithProxy } = await import("./fetch-DAZkv3gV.js");
137
+ const { fetchWithProxy } = await import("./fetch-KV5kNASw.js");
124
138
  const response = await fetchWithProxy(`${apiHost}/api/v1/users/me`, { headers: { Authorization: `Bearer ${token}` } });
125
139
  if (!response.ok) {
126
140
  const errorMessage = await response.text();
127
- logger_default.error(`[Cloud] Failed to validate API token: ${errorMessage}. HTTP Status: ${response.status} - ${response.statusText}.`);
141
+ logger.error(`[Cloud] Failed to validate API token: ${errorMessage}. HTTP Status: ${response.status} - ${response.statusText}.`);
128
142
  throw new Error("Failed to validate API token: " + response.statusText);
129
143
  }
130
- const { user, organization, app } = await response.json();
144
+ const { user, organization, app, hasActiveLicense } = await response.json();
131
145
  this.setApiKey(token);
132
146
  this.setApiHost(apiHost);
133
147
  this.setAppUrl(app.url);
148
+ if (typeof hasActiveLicense === "boolean") {
149
+ const createdAt = user?.createdAt ? new Date(user.createdAt) : null;
150
+ const isGrandfathered = createdAt != null && createdAt < SHARING_CUTOFF_DATE;
151
+ this.setSharing(hasActiveLicense || isGrandfathered);
152
+ }
134
153
  return {
135
154
  user,
136
155
  organization,
137
- app
156
+ app,
157
+ hasActiveLicense: typeof hasActiveLicense === "boolean" ? hasActiveLicense : false
138
158
  };
139
159
  } catch (err) {
140
160
  const error = err;
141
161
  const errorMessage = error instanceof Error ? error.message : String(error);
142
- logger_default.error(`[Cloud] Failed to validate API token with host ${apiHost}: ${errorMessage}`);
143
- if (error.cause) logger_default.error(`Cause: ${error.cause}`);
162
+ logger.error(`[Cloud] Failed to validate API token with host ${apiHost}: ${errorMessage}`);
163
+ if (error.cause) logger.error(`Cause: ${error.cause}`);
144
164
  throw error;
145
165
  }
146
166
  }
@@ -187,7 +207,7 @@ var CloudConfig = class {
187
207
  }
188
208
  };
189
209
  const cloudConfig = new CloudConfig();
190
-
191
210
  //#endregion
192
- export { readGlobalConfig as a, cloudConfig as i, CLOUD_API_HOST as n, writeGlobalConfig as o, CloudConfig as r, writeGlobalConfigPartial as s, API_HOST as t };
193
- //# sourceMappingURL=cloud-BMbRVJFw.js.map
211
+ export { cloudConfig as a, writeGlobalConfigPartial as c, SHARING_CUTOFF_DATE as i, CLOUD_API_HOST as n, readGlobalConfig as o, CloudConfig as r, writeGlobalConfig as s, API_HOST as t };
212
+
213
+ //# sourceMappingURL=cloud-Bc9526yV.js.map
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import "./logger-KkObSCzq.js";
3
+ import { a as cloudConfig } from "./cloud-Bc9526yV.js";
4
+ export { cloudConfig };