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
@@ -0,0 +1,236 @@
1
+ import { g as getConfigDirectoryPath, i as logger } from "./logger-DLcq4dWf.js";
2
+ import { h as getDb, n as blobReferencesTable, t as blobAssetsTable } from "./tables-xKANLRBD.js";
3
+ import * as fs$1 from "node:fs";
4
+ import * as path$1 from "node:path";
5
+ import * as fsPromises$1 from "node:fs/promises";
6
+ import { and, eq } from "drizzle-orm";
7
+ import { createHash, randomUUID } from "node:crypto";
8
+ //#region src/blobs/constants.ts
9
+ const BLOB_MIN_SIZE = 1024;
10
+ const BLOB_MAX_SIZE = 52428800;
11
+ const BLOB_SCHEME = "promptfoo://blob/";
12
+ const DEFAULT_FILESYSTEM_SUBDIR = "blobs";
13
+ //#endregion
14
+ //#region src/blobs/filesystemProvider.ts
15
+ const BLOB_HASH_REGEX = /^[a-f0-9]{64}$/i;
16
+ function computeHash(data) {
17
+ return createHash("sha256").update(data).digest("hex");
18
+ }
19
+ function buildUri(hash) {
20
+ return `${BLOB_SCHEME}${hash}`;
21
+ }
22
+ var FilesystemBlobStorageProvider = class {
23
+ providerId = "filesystem";
24
+ basePath;
25
+ constructor(config) {
26
+ const defaultBase = path$1.join(getConfigDirectoryPath(true), DEFAULT_FILESYSTEM_SUBDIR);
27
+ this.basePath = path$1.resolve(config?.basePath || defaultBase);
28
+ this.ensureDirectory();
29
+ }
30
+ ensureDirectory() {
31
+ if (!fs$1.existsSync(this.basePath)) {
32
+ fs$1.mkdirSync(this.basePath, { recursive: true });
33
+ logger.debug("[BlobFS] Created blob directory", { basePath: this.basePath });
34
+ }
35
+ }
36
+ assertValidHash(hash) {
37
+ if (!BLOB_HASH_REGEX.test(hash)) throw new Error(`[BlobFS] Invalid blob hash: "${hash}"`);
38
+ }
39
+ resolvePathInBase(unsafePath) {
40
+ const targetPath = path$1.isAbsolute(unsafePath) ? path$1.resolve(unsafePath) : path$1.resolve(this.basePath, unsafePath);
41
+ const safeBase = path$1.resolve(this.basePath) + path$1.sep;
42
+ if (!targetPath.startsWith(safeBase)) throw new Error("[BlobFS] Path traversal attempt detected");
43
+ return targetPath;
44
+ }
45
+ hashToPath(hash) {
46
+ this.assertValidHash(hash);
47
+ const dirRelative = path$1.join(hash.slice(0, 2), hash.slice(2, 4));
48
+ const fileRelative = path$1.join(dirRelative, hash);
49
+ return this.resolvePathInBase(fileRelative);
50
+ }
51
+ async ensureHashDir(hash) {
52
+ this.assertValidHash(hash);
53
+ const dirRelative = path$1.join(hash.slice(0, 2), hash.slice(2, 4));
54
+ const dirPath = this.resolvePathInBase(dirRelative);
55
+ await fsPromises$1.mkdir(dirPath, { recursive: true });
56
+ }
57
+ metadataPath(filePath) {
58
+ return `${filePath}.meta.json`;
59
+ }
60
+ async store(data, mimeType) {
61
+ const hash = computeHash(data);
62
+ await this.ensureHashDir(hash);
63
+ const filePath = this.hashToPath(hash);
64
+ try {
65
+ await fsPromises$1.access(filePath);
66
+ const meta = await this.readMetadata(filePath);
67
+ return {
68
+ ref: this.buildRef(hash, meta?.mimeType ?? mimeType, meta?.sizeBytes ?? data.length, meta?.provider ?? this.providerId),
69
+ deduplicated: true
70
+ };
71
+ } catch {}
72
+ await fsPromises$1.writeFile(filePath, data);
73
+ const metadata = {
74
+ mimeType,
75
+ sizeBytes: data.length,
76
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
77
+ provider: this.providerId,
78
+ key: filePath
79
+ };
80
+ await fsPromises$1.writeFile(this.metadataPath(filePath), JSON.stringify(metadata, null, 2));
81
+ return {
82
+ ref: this.buildRef(hash, mimeType, data.length, this.providerId),
83
+ deduplicated: false
84
+ };
85
+ }
86
+ async getByHash(hash) {
87
+ const filePath = this.hashToPath(hash);
88
+ let data;
89
+ try {
90
+ data = await fsPromises$1.readFile(filePath);
91
+ } catch (error) {
92
+ if (error.code === "ENOENT") throw new Error(`Blob not found: ${hash}`);
93
+ throw error;
94
+ }
95
+ const metadata = await this.readMetadata(filePath) || {
96
+ mimeType: "application/octet-stream",
97
+ sizeBytes: data.length,
98
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
99
+ provider: this.providerId,
100
+ key: filePath
101
+ };
102
+ return {
103
+ data,
104
+ metadata
105
+ };
106
+ }
107
+ async exists(hash) {
108
+ try {
109
+ const filePath = this.hashToPath(hash);
110
+ await fsPromises$1.access(filePath);
111
+ return true;
112
+ } catch {
113
+ return false;
114
+ }
115
+ }
116
+ async deleteByHash(hash) {
117
+ try {
118
+ const filePath = this.hashToPath(hash);
119
+ const metaPath = this.metadataPath(filePath);
120
+ try {
121
+ await fsPromises$1.unlink(filePath);
122
+ } catch (error) {
123
+ if (error.code !== "ENOENT") throw error;
124
+ }
125
+ try {
126
+ await fsPromises$1.unlink(metaPath);
127
+ } catch (error) {
128
+ if (error.code !== "ENOENT") throw error;
129
+ }
130
+ } catch {}
131
+ }
132
+ async getUrl(_hash, _expiresInSeconds) {
133
+ return null;
134
+ }
135
+ buildRef(hash, mimeType, sizeBytes, provider) {
136
+ return {
137
+ uri: buildUri(hash),
138
+ hash,
139
+ mimeType,
140
+ sizeBytes,
141
+ provider
142
+ };
143
+ }
144
+ async readMetadata(filePath) {
145
+ const safeFilePath = this.resolvePathInBase(filePath);
146
+ const metaPath = this.metadataPath(safeFilePath);
147
+ try {
148
+ const raw = await fsPromises$1.readFile(metaPath, "utf8");
149
+ return JSON.parse(raw);
150
+ } catch (error) {
151
+ if (error.code === "ENOENT") return null;
152
+ logger.warn("[BlobFS] Failed to read metadata", { error });
153
+ return null;
154
+ }
155
+ }
156
+ };
157
+ //#endregion
158
+ //#region src/blobs/index.ts
159
+ let defaultProvider = null;
160
+ function createDefaultProvider() {
161
+ return new FilesystemBlobStorageProvider();
162
+ }
163
+ function getBlobStorageProvider() {
164
+ if (!defaultProvider) {
165
+ defaultProvider = createDefaultProvider();
166
+ logger.debug("[BlobStorage] Initialized provider", { provider: defaultProvider.providerId });
167
+ }
168
+ return defaultProvider;
169
+ }
170
+ async function storeBlob(data, mimeType, refContext) {
171
+ const provider = getBlobStorageProvider();
172
+ const result = await provider.store(data, mimeType);
173
+ const db = getDb();
174
+ try {
175
+ db.transaction(() => {
176
+ const assetInsert = db.insert(blobAssetsTable).values({
177
+ hash: result.ref.hash,
178
+ sizeBytes: result.ref.sizeBytes,
179
+ mimeType: result.ref.mimeType,
180
+ provider: result.ref.provider
181
+ }).onConflictDoNothing().run();
182
+ return (refContext?.evalId && db.insert(blobReferencesTable).values({
183
+ id: randomUUID(),
184
+ blobHash: result.ref.hash,
185
+ evalId: refContext.evalId,
186
+ testIdx: refContext.testIdx,
187
+ promptIdx: refContext.promptIdx,
188
+ location: refContext.location,
189
+ kind: refContext.kind
190
+ }).onConflictDoNothing().run()) ?? assetInsert;
191
+ });
192
+ } catch (error) {
193
+ try {
194
+ await provider.deleteByHash(result.ref.hash);
195
+ } catch (cleanupError) {
196
+ logger.warn("[BlobStorage] Failed to rollback blob after DB error", {
197
+ error: cleanupError,
198
+ hash: result.ref.hash
199
+ });
200
+ }
201
+ throw error;
202
+ }
203
+ return result;
204
+ }
205
+ async function getBlobByHash(hash) {
206
+ return getBlobStorageProvider().getByHash(hash);
207
+ }
208
+ async function getBlobUrl(hash, expiresInSeconds) {
209
+ return getBlobStorageProvider().getUrl(hash, expiresInSeconds);
210
+ }
211
+ async function recordBlobReference(hash, refContext) {
212
+ if (!refContext.evalId) return;
213
+ if (!await getBlobStorageProvider().exists(hash).catch(() => false)) {
214
+ logger.debug("[BlobStorage] Attempted to record reference for missing blob", {
215
+ hash,
216
+ evalId: refContext.evalId,
217
+ location: refContext.location
218
+ });
219
+ return;
220
+ }
221
+ const db = getDb();
222
+ if (db.select({ id: blobReferencesTable.id }).from(blobReferencesTable).where(and(eq(blobReferencesTable.blobHash, hash), eq(blobReferencesTable.evalId, refContext.evalId))).get()) return;
223
+ db.insert(blobReferencesTable).values({
224
+ id: randomUUID(),
225
+ blobHash: hash,
226
+ evalId: refContext.evalId,
227
+ testIdx: refContext.testIdx,
228
+ promptIdx: refContext.promptIdx,
229
+ location: refContext.location,
230
+ kind: refContext.kind
231
+ }).run();
232
+ }
233
+ //#endregion
234
+ export { BLOB_MAX_SIZE as a, storeBlob as i, getBlobUrl as n, BLOB_MIN_SIZE as o, recordBlobReference as r, getBlobByHash as t };
235
+
236
+ //# sourceMappingURL=blobs-qTYm-1PY.js.map
@@ -1,13 +1,12 @@
1
- import { t as __exportAll } from "./chunk-FhC4c-0y.js";
2
- import { _ as getEnvBool, b as getEnvString, g as getConfigDirectoryPath, i as logger_default, y as getEnvInt } from "./logger-w8Ozp0Td.js";
3
- import { h as REQUEST_TIMEOUT_MS, n as fetchWithRetries, p as sleep } from "./fetch-18MuNu9i.js";
1
+ import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
+ import { _ as getEnvBool, b as getEnvString, g as getConfigDirectoryPath, i as logger, y as getEnvInt } from "./logger-CT3IKMKA.js";
3
+ import { d as sleep, n as fetchWithRetries, p as REQUEST_TIMEOUT_MS } from "./fetch-60Gzydls.js";
4
4
  import fs from "fs";
5
5
  import path from "path";
6
6
  import { createCache } from "cache-manager";
7
7
  import { Keyv } from "keyv";
8
8
  import { KeyvFile } from "keyv-file";
9
9
  import { randomBytes } from "crypto";
10
-
11
10
  //#region src/cacheMigration.ts
12
11
  /**
13
12
  * Migration sunset date: After this date, skip migration entirely.
@@ -39,7 +38,7 @@ function getDirSize(dirPath) {
39
38
  else totalSize += fs.statSync(itemPath).size;
40
39
  }
41
40
  } catch (err) {
42
- if (err.code !== "ENOENT") logger_default.warn(`[Cache Migration] Error calculating directory size: ${err.message}`);
41
+ if (err.code !== "ENOENT") logger.warn(`[Cache Migration] Error calculating directory size: ${err.message}`);
43
42
  }
44
43
  return totalSize;
45
44
  }
@@ -54,18 +53,18 @@ function checkDiskSpace(cachePath) {
54
53
  const stats = fs.statfsSync(cachePath);
55
54
  const availableBytes = stats.bavail * stats.bsize;
56
55
  const requiredBytes = cacheSize * 2 + 10 * 1024 * 1024;
57
- logger_default.debug(`[Cache Migration] Disk space check: need ${(requiredBytes / 1024 / 1024).toFixed(2)}MB, have ${(availableBytes / 1024 / 1024).toFixed(2)}MB available`);
56
+ logger.debug(`[Cache Migration] Disk space check: need ${(requiredBytes / 1024 / 1024).toFixed(2)}MB, have ${(availableBytes / 1024 / 1024).toFixed(2)}MB available`);
58
57
  if (availableBytes < requiredBytes) {
59
- logger_default.error(`[Cache Migration] Insufficient disk space for migration. Need ${(requiredBytes / 1024 / 1024).toFixed(0)}MB, have ${(availableBytes / 1024 / 1024).toFixed(0)}MB available.`);
58
+ logger.error(`[Cache Migration] Insufficient disk space for migration. Need ${(requiredBytes / 1024 / 1024).toFixed(0)}MB, have ${(availableBytes / 1024 / 1024).toFixed(0)}MB available.`);
60
59
  return false;
61
60
  }
62
61
  return true;
63
62
  } else {
64
- logger_default.debug("[Cache Migration] Disk space check not available on this platform, proceeding");
63
+ logger.debug("[Cache Migration] Disk space check not available on this platform, proceeding");
65
64
  return true;
66
65
  }
67
66
  } catch (err) {
68
- logger_default.warn(`[Cache Migration] Could not check disk space: ${err.message}`);
67
+ logger.warn(`[Cache Migration] Could not check disk space: ${err.message}`);
69
68
  return true;
70
69
  }
71
70
  }
@@ -91,7 +90,7 @@ function isProcessRunning(pid) {
91
90
  */
92
91
  function acquireMigrationLock(cachePath, attempt = 1) {
93
92
  if (attempt > MAX_LOCK_ATTEMPTS) {
94
- logger_default.warn(`[Cache Migration] Failed to acquire lock after ${MAX_LOCK_ATTEMPTS} attempts`);
93
+ logger.warn(`[Cache Migration] Failed to acquire lock after ${MAX_LOCK_ATTEMPTS} attempts`);
95
94
  return null;
96
95
  }
97
96
  const lockFile = path.join(cachePath, ".migration.lock");
@@ -100,7 +99,7 @@ function acquireMigrationLock(cachePath, attempt = 1) {
100
99
  const fd = fs.openSync(lockFile, "wx");
101
100
  fs.writeSync(fd, process.pid.toString());
102
101
  fs.fsyncSync(fd);
103
- logger_default.debug(`[Cache Migration] Lock acquired (PID: ${process.pid})`);
102
+ logger.debug(`[Cache Migration] Lock acquired (PID: ${process.pid})`);
104
103
  return fd;
105
104
  } catch (err) {
106
105
  if (err.code === "EEXIST") {
@@ -109,20 +108,20 @@ function acquireMigrationLock(cachePath, attempt = 1) {
109
108
  const pid = parseInt(content, 10);
110
109
  if (!isNaN(pid)) {
111
110
  if (isProcessRunning(pid)) {
112
- logger_default.info(`[Cache Migration] Another migration is in progress (PID: ${pid})`);
111
+ logger.info(`[Cache Migration] Another migration is in progress (PID: ${pid})`);
113
112
  return null;
114
113
  }
115
- logger_default.warn(`[Cache Migration] Removing stale lock file (PID: ${pid} not found)`);
114
+ logger.warn(`[Cache Migration] Removing stale lock file (PID: ${pid} not found)`);
116
115
  try {
117
116
  fs.unlinkSync(lockFile);
118
117
  return acquireMigrationLock(cachePath, attempt + 1);
119
118
  } catch (unlinkErr) {
120
- logger_default.error(`[Cache Migration] Failed to remove stale lock: ${unlinkErr.message}`);
119
+ logger.error(`[Cache Migration] Failed to remove stale lock: ${unlinkErr.message}`);
121
120
  return null;
122
121
  }
123
122
  }
124
123
  } catch (readErr) {
125
- logger_default.warn(`[Cache Migration] Could not read lock file: ${readErr.message}`);
124
+ logger.warn(`[Cache Migration] Could not read lock file: ${readErr.message}`);
126
125
  }
127
126
  return null;
128
127
  }
@@ -138,13 +137,13 @@ function releaseMigrationLock(fd, cachePath) {
138
137
  try {
139
138
  fs.closeSync(fd);
140
139
  } catch (err) {
141
- logger_default.warn(`[Cache Migration] Failed to close lock file: ${err.message}`);
140
+ logger.warn(`[Cache Migration] Failed to close lock file: ${err.message}`);
142
141
  }
143
142
  try {
144
143
  fs.unlinkSync(lockFile);
145
- logger_default.debug("[Cache Migration] Lock released");
144
+ logger.debug("[Cache Migration] Lock released");
146
145
  } catch (err) {
147
- logger_default.warn(`[Cache Migration] Failed to remove lock file: ${err.message}`);
146
+ logger.warn(`[Cache Migration] Failed to remove lock file: ${err.message}`);
148
147
  }
149
148
  }
150
149
  /**
@@ -177,28 +176,28 @@ function readOldCacheEntries(cachePath) {
177
176
  };
178
177
  const entries = /* @__PURE__ */ new Map();
179
178
  if (!fs.existsSync(cachePath)) {
180
- logger_default.info(`[Cache Migration] No old cache directory found at ${cachePath}`);
179
+ logger.info(`[Cache Migration] No old cache directory found at ${cachePath}`);
181
180
  return {
182
181
  entries,
183
182
  stats
184
183
  };
185
184
  }
186
185
  const diskstoreDirs = fs.readdirSync(cachePath, { withFileTypes: true }).filter((dirEntry) => dirEntry.isDirectory() && dirEntry.name.startsWith("diskstore-")).map((dirEntry) => dirEntry.name);
187
- logger_default.info(`[Cache Migration] Found ${diskstoreDirs.length} diskstore directories`);
186
+ logger.info(`[Cache Migration] Found ${diskstoreDirs.length} diskstore directories`);
188
187
  const shouldLogProgress = diskstoreDirs.length > 100;
189
- if (shouldLogProgress) logger_default.info(`[Cache Migration] Processing large cache, this may take a moment...`);
188
+ if (shouldLogProgress) logger.info(`[Cache Migration] Processing large cache, this may take a moment...`);
190
189
  const now = Date.now();
191
190
  let dirCount = 0;
192
191
  for (const dir of diskstoreDirs) {
193
192
  const dirPath = path.join(cachePath, dir);
194
193
  dirCount++;
195
- if (shouldLogProgress && dirCount % 100 === 0) logger_default.info(`[Cache Migration] Processed ${dirCount}/${diskstoreDirs.length} directories...`);
194
+ if (shouldLogProgress && dirCount % 100 === 0) logger.info(`[Cache Migration] Processed ${dirCount}/${diskstoreDirs.length} directories...`);
196
195
  try {
197
196
  const jsonFiles = fs.readdirSync(dirPath).filter((f) => f.endsWith(".json"));
198
197
  for (const file of jsonFiles) {
199
198
  const filePath = path.join(dirPath, file);
200
199
  stats.totalFiles++;
201
- if (stats.totalFiles % 1e3 === 0 && stats.totalFiles > 0) logger_default.info(`[Cache Migration] Processed ${stats.totalFiles} files...`);
200
+ if (stats.totalFiles % 1e3 === 0 && stats.totalFiles > 0) logger.info(`[Cache Migration] Processed ${stats.totalFiles} files...`);
202
201
  try {
203
202
  const content = fs.readFileSync(filePath, "utf-8");
204
203
  const oldEntry = JSON.parse(content);
@@ -249,7 +248,7 @@ function validateCacheFile(cachePath, expectedEntryCount) {
249
248
  if (!Array.isArray(parsed.cache)) throw new Error("Cache file has invalid structure: missing or invalid \"cache\" array");
250
249
  if (typeof parsed.lastExpire !== "number") throw new Error("Cache file has invalid structure: missing or invalid \"lastExpire\" field");
251
250
  if (parsed.cache.length !== expectedEntryCount) throw new Error(`Cache file entry count mismatch: expected ${expectedEntryCount}, got ${parsed.cache.length}`);
252
- logger_default.debug(`[Cache Migration] Validated cache file: ${cachePath} (${expectedEntryCount} entries)`);
251
+ logger.debug(`[Cache Migration] Validated cache file: ${cachePath} (${expectedEntryCount} entries)`);
253
252
  }
254
253
  /**
255
254
  * Write entries in keyv-file format using atomic write operation.
@@ -273,7 +272,7 @@ function writeNewCacheFile(entries, newCachePath) {
273
272
  }
274
273
  fs.writeFileSync(tempFile, serialized, "utf-8");
275
274
  fs.renameSync(tempFile, newCachePath);
276
- logger_default.debug(`[Cache Migration] Atomically wrote cache file: ${newCachePath}`);
275
+ logger.debug(`[Cache Migration] Atomically wrote cache file: ${newCachePath}`);
277
276
  validateCacheFile(newCachePath, entries.size);
278
277
  } catch (err) {
279
278
  try {
@@ -287,7 +286,7 @@ function writeNewCacheFile(entries, newCachePath) {
287
286
  */
288
287
  function createBackup(cachePath) {
289
288
  const backupPath = `${cachePath}.backup.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
290
- logger_default.info(`[Cache Migration] Creating backup at ${backupPath}`);
289
+ logger.info(`[Cache Migration] Creating backup at ${backupPath}`);
291
290
  if (fs.existsSync(cachePath)) fs.cpSync(cachePath, backupPath, { recursive: true });
292
291
  return backupPath;
293
292
  }
@@ -315,11 +314,11 @@ function isMigrationComplete(cacheBasePath, newCacheFile) {
315
314
  if (newCacheFile && fs.existsSync(newCacheFile)) return true;
316
315
  if (newCacheFile) {
317
316
  if (hasOldCacheFormat(cacheBasePath)) {
318
- logger_default.warn("[Cache Migration] Marker file exists but migration appears incomplete. Old cache format found but new cache missing. Retrying migration...");
317
+ logger.warn("[Cache Migration] Marker file exists but migration appears incomplete. Old cache format found but new cache missing. Retrying migration...");
319
318
  try {
320
319
  fs.unlinkSync(markerPath);
321
320
  } catch (err) {
322
- logger_default.warn(`[Cache Migration] Failed to remove stale marker: ${err.message}`);
321
+ logger.warn(`[Cache Migration] Failed to remove stale marker: ${err.message}`);
323
322
  }
324
323
  return false;
325
324
  }
@@ -351,7 +350,7 @@ function cleanupOldCache(cachePath) {
351
350
  throw err;
352
351
  }
353
352
  const diskstoreDirs = dirEntries.filter((dirEntry) => dirEntry.isDirectory() && dirEntry.name.startsWith("diskstore-")).map((dirEntry) => dirEntry.name);
354
- logger_default.info(`[Cache Migration] Cleaning up ${diskstoreDirs.length} old cache directories`);
353
+ logger.info(`[Cache Migration] Cleaning up ${diskstoreDirs.length} old cache directories`);
355
354
  for (const dir of diskstoreDirs) {
356
355
  const dirPath = path.join(cachePath, dir);
357
356
  try {
@@ -360,7 +359,7 @@ function cleanupOldCache(cachePath) {
360
359
  force: true
361
360
  });
362
361
  } catch (err) {
363
- logger_default.warn(`[Cache Migration] Failed to remove ${dirPath}: ${err.message}`);
362
+ logger.warn(`[Cache Migration] Failed to remove ${dirPath}: ${err.message}`);
364
363
  }
365
364
  }
366
365
  }
@@ -370,23 +369,23 @@ function cleanupOldCache(cachePath) {
370
369
  */
371
370
  function cleanupBackup(backupPath, stats) {
372
371
  if (stats.successCount === 0 && stats.failureCount === 0) {
373
- logger_default.info(`[Cache Migration] No valid entries found (${stats.skippedExpired} expired only). Removing backup to save space.`);
372
+ logger.info(`[Cache Migration] No valid entries found (${stats.skippedExpired} expired only). Removing backup to save space.`);
374
373
  try {
375
374
  fs.rmSync(backupPath, {
376
375
  recursive: true,
377
376
  force: true
378
377
  });
379
- logger_default.info(`[Cache Migration] Backup removed: ${backupPath}`);
378
+ logger.info(`[Cache Migration] Backup removed: ${backupPath}`);
380
379
  return true;
381
380
  } catch (err) {
382
- logger_default.warn(`[Cache Migration] Failed to remove backup ${backupPath}: ${err.message}`);
381
+ logger.warn(`[Cache Migration] Failed to remove backup ${backupPath}: ${err.message}`);
383
382
  return false;
384
383
  }
385
384
  } else if (stats.failureCount > 0) {
386
- logger_default.info(`[Cache Migration] Backup kept at ${backupPath} due to ${stats.failureCount} migration errors. You may want to investigate these failures.`);
385
+ logger.info(`[Cache Migration] Backup kept at ${backupPath} due to ${stats.failureCount} migration errors. You may want to investigate these failures.`);
387
386
  return false;
388
387
  } else {
389
- logger_default.info(`[Cache Migration] Backup kept at ${backupPath} (migrated ${stats.successCount} valid entries). You can manually delete this backup if you no longer need it.`);
388
+ logger.info(`[Cache Migration] Backup kept at ${backupPath} (migrated ${stats.successCount} valid entries). You can manually delete this backup if you no longer need it.`);
390
389
  return false;
391
390
  }
392
391
  }
@@ -395,10 +394,10 @@ function cleanupBackup(backupPath, stats) {
395
394
  * Migrates cache from cache-manager v4 (cache-manager-fs-hash) to v7 (keyv-file)
396
395
  */
397
396
  function runMigration(cachePath, newCacheFilePath) {
398
- logger_default.info("[Cache Migration] Starting cache migration from v4 to v7");
397
+ logger.info("[Cache Migration] Starting cache migration from v4 to v7");
399
398
  const lock = acquireMigrationLock(cachePath);
400
399
  if (lock === null) {
401
- logger_default.info("[Cache Migration] Another migration is in progress, skipping");
400
+ logger.info("[Cache Migration] Another migration is in progress, skipping");
402
401
  return {
403
402
  success: true,
404
403
  stats: {
@@ -412,7 +411,7 @@ function runMigration(cachePath, newCacheFilePath) {
412
411
  }
413
412
  try {
414
413
  if (isMigrationComplete(cachePath, newCacheFilePath)) {
415
- logger_default.info("[Cache Migration] Migration already completed, skipping");
414
+ logger.info("[Cache Migration] Migration already completed, skipping");
416
415
  return {
417
416
  success: true,
418
417
  stats: {
@@ -425,7 +424,7 @@ function runMigration(cachePath, newCacheFilePath) {
425
424
  };
426
425
  }
427
426
  if (!hasOldCacheFormat(cachePath)) {
428
- logger_default.info("[Cache Migration] No old cache format detected, skipping migration");
427
+ logger.info("[Cache Migration] No old cache format detected, skipping migration");
429
428
  markMigrationComplete(cachePath, {
430
429
  totalFiles: 0,
431
430
  successCount: 0,
@@ -445,7 +444,7 @@ function runMigration(cachePath, newCacheFilePath) {
445
444
  };
446
445
  }
447
446
  if (!checkDiskSpace(cachePath)) {
448
- logger_default.error("[Cache Migration] Insufficient disk space, aborting migration");
447
+ logger.error("[Cache Migration] Insufficient disk space, aborting migration");
449
448
  return {
450
449
  success: false,
451
450
  stats: {
@@ -458,30 +457,30 @@ function runMigration(cachePath, newCacheFilePath) {
458
457
  };
459
458
  }
460
459
  const backupPath = createBackup(cachePath);
461
- logger_default.info("[Cache Migration] Reading old cache entries");
460
+ logger.info("[Cache Migration] Reading old cache entries");
462
461
  const { entries, stats } = readOldCacheEntries(cachePath);
463
- logger_default.info(`[Cache Migration] Read ${stats.successCount} entries (${stats.failureCount} failures, ${stats.skippedExpired} expired)`);
462
+ logger.info(`[Cache Migration] Read ${stats.successCount} entries (${stats.failureCount} failures, ${stats.skippedExpired} expired)`);
464
463
  if (stats.errors.length > 0) {
465
- logger_default.warn(`[Cache Migration] Encountered ${stats.errors.length} errors:`);
466
- stats.errors.slice(0, 10).forEach((err) => logger_default.warn(` - ${err}`));
467
- if (stats.errors.length > 10) logger_default.warn(` ... and ${stats.errors.length - 10} more errors`);
464
+ logger.warn(`[Cache Migration] Encountered ${stats.errors.length} errors:`);
465
+ stats.errors.slice(0, 10).forEach((err) => logger.warn(` - ${err}`));
466
+ if (stats.errors.length > 10) logger.warn(` ... and ${stats.errors.length - 10} more errors`);
468
467
  }
469
468
  if (entries.size > 0) {
470
- logger_default.info(`[Cache Migration] Writing ${entries.size} entries to new cache file: ${newCacheFilePath}`);
469
+ logger.info(`[Cache Migration] Writing ${entries.size} entries to new cache file: ${newCacheFilePath}`);
471
470
  writeNewCacheFile(entries, newCacheFilePath);
472
- } else logger_default.info("[Cache Migration] No entries to migrate");
471
+ } else logger.info("[Cache Migration] No entries to migrate");
473
472
  cleanupOldCache(cachePath);
474
473
  const backupDeleted = cleanupBackup(backupPath, stats);
475
474
  markMigrationComplete(cachePath, stats);
476
- logger_default.info("[Cache Migration] Migration completed successfully");
475
+ logger.info("[Cache Migration] Migration completed successfully");
477
476
  return {
478
477
  success: true,
479
478
  stats,
480
479
  backupPath: backupDeleted ? void 0 : backupPath
481
480
  };
482
481
  } catch (err) {
483
- logger_default.error(`[Cache Migration] Migration failed: ${err.message}`);
484
- logger_default.error(`[Cache Migration] Stack trace: ${err.stack}`);
482
+ logger.error(`[Cache Migration] Migration failed: ${err.message}`);
483
+ logger.error(`[Cache Migration] Stack trace: ${err.stack}`);
485
484
  return {
486
485
  success: false,
487
486
  stats: {
@@ -508,7 +507,6 @@ function shouldRunMigration(cachePath, newCacheFile) {
508
507
  if (isMigrationComplete(cachePath, newCacheFile)) return false;
509
508
  return hasOldCacheFormat(cachePath);
510
509
  }
511
-
512
510
  //#endregion
513
511
  //#region src/util/fetch/errors.ts
514
512
  /**
@@ -541,7 +539,6 @@ function isTransientConnectionError(error) {
541
539
  if (message.includes("eproto") && (message.includes("wrong version number") || message.includes("self signed") || message.includes("unable to verify") || message.includes("unknown ca") || message.includes("cert"))) return false;
542
540
  return message.includes("bad record mac") || message.includes("eproto") || message.includes("econnreset") || message.includes("socket hang up");
543
541
  }
544
-
545
542
  //#endregion
546
543
  //#region src/cache.ts
547
544
  var cache_exports = /* @__PURE__ */ __exportAll({
@@ -572,23 +569,23 @@ function getCache() {
572
569
  if (cacheType === "disk" && enabled) {
573
570
  cachePath = getEnvString("PROMPTFOO_CACHE_PATH") || path.join(getConfigDirectoryPath(), "cache");
574
571
  if (!fs.existsSync(cachePath)) {
575
- logger_default.info(`Creating cache folder at ${cachePath}.`);
572
+ logger.info(`Creating cache folder at ${cachePath}.`);
576
573
  fs.mkdirSync(cachePath, { recursive: true });
577
574
  }
578
575
  const newCacheFile = path.join(cachePath, "cache.json");
579
576
  if (shouldRunMigration(cachePath, newCacheFile)) {
580
- logger_default.info("[Cache] Migrating cache from v4 to v7...");
577
+ logger.info("[Cache] Migrating cache from v4 to v7...");
581
578
  try {
582
579
  const result = runMigration(cachePath, newCacheFile);
583
580
  if (result.success) {
584
- logger_default.info(`[Cache] Migration completed: ${result.stats.successCount} entries migrated, ${result.stats.skippedExpired} expired`);
585
- if (result.backupPath) logger_default.info(`[Cache] Backup kept at: ${result.backupPath}`);
581
+ logger.info(`[Cache] Migration completed: ${result.stats.successCount} entries migrated, ${result.stats.skippedExpired} expired`);
582
+ if (result.backupPath) logger.info(`[Cache] Backup kept at: ${result.backupPath}`);
586
583
  } else {
587
- logger_default.error(`[Cache] Migration failed: ${result.stats.errors.join(", ")}. Falling back to memory cache.`);
584
+ logger.error(`[Cache] Migration failed: ${result.stats.errors.join(", ")}. Falling back to memory cache.`);
588
585
  migrationFailed = true;
589
586
  }
590
587
  } catch (err) {
591
- logger_default.error(`[Cache] Migration error: ${err.message}. Falling back to memory cache.`);
588
+ logger.error(`[Cache] Migration error: ${err.message}. Falling back to memory cache.`);
592
589
  migrationFailed = true;
593
590
  }
594
591
  }
@@ -599,7 +596,7 @@ function getCache() {
599
596
  });
600
597
  stores.push(keyv);
601
598
  } catch (err) {
602
- logger_default.warn(`[Cache] Failed to initialize disk cache: ${err.message}. Using memory cache instead.`);
599
+ logger.warn(`[Cache] Failed to initialize disk cache: ${err.message}. Using memory cache instead.`);
603
600
  }
604
601
  }
605
602
  cacheInstance = createCache({
@@ -625,7 +622,7 @@ async function fetchAndReadBody(url, options, timeout, maxRetries, isIdempotent)
625
622
  } catch (err) {
626
623
  if (isTransientConnectionError(err) && bodyAttempt < maxBodyRetries) {
627
624
  const backoffMs = Math.pow(2, bodyAttempt) * 1e3;
628
- logger_default.debug("[Cache] Body stream failed with transient error, retrying", {
625
+ logger.debug("[Cache] Body stream failed with transient error, retrying", {
629
626
  attempt: bodyAttempt + 1,
630
627
  maxRetries: maxBodyRetries,
631
628
  backoffMs,
@@ -700,16 +697,16 @@ async function fetchWithCache(url, options = {}, timeout = REQUEST_TIMEOUT_MS, f
700
697
  }
701
698
  if (!data) return;
702
699
  if (format === "json" && parsedData?.error) {
703
- logger_default.debug(`Not caching ${url} because it contains an 'error' key: ${parsedData.error}`);
700
+ logger.debug(`Not caching ${url} because it contains an 'error' key: ${parsedData.error}`);
704
701
  return data;
705
702
  }
706
- logger_default.debug(`Storing ${url} response in cache with latencyMs=${fetchLatencyMs}: ${data}`);
703
+ logger.debug(`Storing ${url} response in cache with latencyMs=${fetchLatencyMs}: ${data}`);
707
704
  return data;
708
705
  } catch (err) {
709
706
  throw new Error(`Error parsing response from ${url}: ${err.message}. Received text: ${responseText}`);
710
707
  }
711
708
  });
712
- if (cached && cachedResponse) logger_default.debug(`Returning cached response for ${url}: ${cachedResponse}`);
709
+ if (cached && cachedResponse) logger.debug(`Returning cached response for ${url}: ${cachedResponse}`);
713
710
  const parsedResponse = JSON.parse(cachedResponse ?? errorResponse);
714
711
  return {
715
712
  cached,
@@ -720,7 +717,7 @@ async function fetchWithCache(url, options = {}, timeout = REQUEST_TIMEOUT_MS, f
720
717
  latencyMs: parsedResponse.latencyMs,
721
718
  deleteFromCache: async () => {
722
719
  await cache.del(cacheKey);
723
- logger_default.debug(`Evicted from cache: ${cacheKey}`);
720
+ logger.debug(`Evicted from cache: ${cacheKey}`);
724
721
  }
725
722
  };
726
723
  }
@@ -736,7 +733,7 @@ async function clearCache() {
736
733
  function isCacheEnabled() {
737
734
  return enabled;
738
735
  }
739
-
740
736
  //#endregion
741
- export { fetchWithCache as a, NON_TRANSIENT_HTTP_STATUSES as c, enableCache as i, isNonTransientHttpStatus as l, clearCache as n, getCache as o, disableCache as r, isCacheEnabled as s, cache_exports as t, isTransientConnectionError as u };
742
- //# sourceMappingURL=cache-BLLayYEN.js.map
737
+ export { isCacheEnabled as a, isTransientConnectionError as c, getCache as i, disableCache as n, NON_TRANSIENT_HTTP_STATUSES as o, fetchWithCache as r, isNonTransientHttpStatus as s, cache_exports as t };
738
+
739
+ //# sourceMappingURL=cache-8XhNqPKW.js.map
@@ -0,0 +1,5 @@
1
+ require("./logger-Cp1GPUjj.cjs");
2
+ require("./fetch-BxUk8odA.cjs");
3
+ const require_cache = require("./cache-COish3-W.cjs");
4
+ exports.getCache = require_cache.getCache;
5
+ exports.isCacheEnabled = require_cache.isCacheEnabled;
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ import "./logger-KkObSCzq.js";
3
+ import "./fetch-BMv0O527.js";
4
+ import "./cloud-Bc9526yV.js";
5
+ import { o as getCache, s as isCacheEnabled } from "./cache-CG0SlR1d.js";
6
+ export { getCache, isCacheEnabled };