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,171 @@
1
+ import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
+ import { C as isCI, _ as getEnvBool, b as getEnvString, i as logger } from "./logger-DLcq4dWf.js";
3
+ import { D as R_ENDPOINT, E as EVENTS_ENDPOINT, N as POSTHOG_KEY, P as VERSION, T as CONSENT_ENDPOINT, r as fetchWithTimeout, t as fetchWithProxy } from "./fetch-4M3YRaqL.js";
4
+ import { c as isLoggedIntoCloud, i as getAuthMethod, o as getUserEmail, s as getUserId } from "./accounts-BgNJDBE6.js";
5
+ import { z } from "zod";
6
+ import { PostHog } from "posthog-node";
7
+ //#region src/telemetry.ts
8
+ var telemetry_exports = /* @__PURE__ */ __exportAll({
9
+ Telemetry: () => Telemetry,
10
+ TelemetryEventSchema: () => TelemetryEventSchema,
11
+ default: () => telemetry
12
+ });
13
+ const TelemetryEventSchema = z.object({
14
+ event: z.enum([
15
+ "assertion_used",
16
+ "command_used",
17
+ "eval setup",
18
+ "eval_ran",
19
+ "feature_used",
20
+ "funnel",
21
+ "redteam discover",
22
+ "redteam generate",
23
+ "redteam init",
24
+ "redteam poison",
25
+ "redteam report",
26
+ "redteam run",
27
+ "redteam setup",
28
+ "webui_action",
29
+ "webui_api",
30
+ "webui_page_view"
31
+ ]),
32
+ packageVersion: z.string().optional().prefault(VERSION),
33
+ properties: z.record(z.string(), z.union([
34
+ z.string(),
35
+ z.number(),
36
+ z.boolean(),
37
+ z.array(z.string())
38
+ ]))
39
+ });
40
+ let posthogClient = null;
41
+ let isShuttingDown = false;
42
+ function getPostHogClient() {
43
+ if (getEnvBool("PROMPTFOO_DISABLE_TELEMETRY") || getEnvBool("IS_TESTING")) return null;
44
+ if (posthogClient === null && "phc_E5n5uHnDo2eREJL1uqX1cIlbkoRby4yFWt3V94HqRRg") try {
45
+ posthogClient = new PostHog(POSTHOG_KEY, {
46
+ host: EVENTS_ENDPOINT,
47
+ fetch: fetchWithProxy,
48
+ flushInterval: 0
49
+ });
50
+ } catch {
51
+ posthogClient = null;
52
+ }
53
+ return posthogClient;
54
+ }
55
+ const TELEMETRY_TIMEOUT_MS = 1e3;
56
+ var Telemetry = class {
57
+ telemetryDisabledRecorded = false;
58
+ id;
59
+ email;
60
+ constructor() {
61
+ this.id = getUserId();
62
+ this.email = getUserEmail();
63
+ this.identify();
64
+ }
65
+ async identify() {
66
+ if (this.disabled || getEnvBool("IS_TESTING")) return;
67
+ const client = getPostHogClient();
68
+ if (client) try {
69
+ client.identify({
70
+ distinctId: this.id,
71
+ properties: {
72
+ email: this.email,
73
+ isLoggedIntoCloud: isLoggedIntoCloud(),
74
+ authMethod: getAuthMethod(),
75
+ isRunningInCi: isCI()
76
+ }
77
+ });
78
+ client.flush().catch(() => {});
79
+ } catch (error) {
80
+ logger.debug(`PostHog identify error: ${error}`);
81
+ }
82
+ }
83
+ get disabled() {
84
+ return getEnvBool("PROMPTFOO_DISABLE_TELEMETRY");
85
+ }
86
+ recordTelemetryDisabled() {
87
+ if (!this.telemetryDisabledRecorded) {
88
+ this.sendEvent("feature_used", { feature: "telemetry disabled" });
89
+ this.telemetryDisabledRecorded = true;
90
+ }
91
+ }
92
+ record(eventName, properties) {
93
+ if (this.disabled) this.recordTelemetryDisabled();
94
+ else this.sendEvent(eventName, properties);
95
+ }
96
+ sendEvent(eventName, properties) {
97
+ const propertiesWithMetadata = {
98
+ ...properties,
99
+ packageVersion: VERSION,
100
+ isRunningInCi: isCI()
101
+ };
102
+ const client = getPostHogClient();
103
+ if (client && !getEnvBool("IS_TESTING")) try {
104
+ client.capture({
105
+ distinctId: this.id,
106
+ event: eventName,
107
+ properties: propertiesWithMetadata
108
+ });
109
+ client.flush().catch(() => {});
110
+ } catch (error) {
111
+ logger.debug(`PostHog capture error: ${error}`);
112
+ }
113
+ fetchWithProxy(R_ENDPOINT, {
114
+ method: "POST",
115
+ headers: { "Content-Type": "application/json" },
116
+ body: JSON.stringify({
117
+ event: eventName,
118
+ environment: getEnvString("NODE_ENV", "development"),
119
+ email: this.email,
120
+ meta: {
121
+ user_id: this.id,
122
+ ...propertiesWithMetadata
123
+ }
124
+ })
125
+ }).catch(() => {});
126
+ }
127
+ async shutdown() {
128
+ if (isShuttingDown) return;
129
+ const client = getPostHogClient();
130
+ if (!client) return;
131
+ isShuttingDown = true;
132
+ try {
133
+ await client.shutdown();
134
+ } catch (error) {
135
+ logger.debug(`PostHog shutdown error: ${error}`);
136
+ }
137
+ }
138
+ /**
139
+ * This is a separate endpoint to save consent used only for redteam data synthesis for "harmful" plugins.
140
+ */
141
+ async saveConsent(email, metadata) {
142
+ try {
143
+ const response = await fetchWithTimeout(CONSENT_ENDPOINT, {
144
+ method: "POST",
145
+ headers: { "Content-Type": "application/json" },
146
+ body: JSON.stringify({
147
+ email,
148
+ metadata
149
+ })
150
+ }, TELEMETRY_TIMEOUT_MS);
151
+ if (!response.ok) throw new Error(`Failed to save consent: ${response.statusText}`);
152
+ } catch (err) {
153
+ logger.debug(`Failed to save consent: ${err.message}`);
154
+ }
155
+ }
156
+ };
157
+ const telemetry = new Telemetry();
158
+ const TELEMETRY_INSTANCE_KEY = Symbol.for("promptfoo.telemetry.instance");
159
+ const SHUTDOWN_HANDLER_KEY = Symbol.for("promptfoo.telemetry.shutdownHandler");
160
+ process[TELEMETRY_INSTANCE_KEY] = telemetry;
161
+ if (!process[SHUTDOWN_HANDLER_KEY]) {
162
+ process[SHUTDOWN_HANDLER_KEY] = true;
163
+ process.once("beforeExit", () => {
164
+ const instance = process[TELEMETRY_INSTANCE_KEY];
165
+ if (instance) instance.shutdown().catch(() => {});
166
+ });
167
+ }
168
+ //#endregion
169
+ export { telemetry as n, telemetry_exports as r, TelemetryEventSchema as t };
170
+
171
+ //# sourceMappingURL=telemetry-DMb2Mpfm.js.map
@@ -16,7 +16,7 @@ function ellipsize(str, maxLen) {
16
16
  function escapeRegExp(str) {
17
17
  return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
18
18
  }
19
-
20
19
  //#endregion
21
20
  export { escapeRegExp as n, ellipsize as t };
22
- //# sourceMappingURL=text-Dm78AVGG.js.map
21
+
22
+ //# sourceMappingURL=text-B_UCRPp2.js.map
@@ -1,4 +1,3 @@
1
-
2
1
  //#region src/util/text.ts
3
2
  /**
4
3
  * Truncates a string to a maximum length, adding an ellipsis (...) if truncated.
@@ -17,18 +16,18 @@ function ellipsize(str, maxLen) {
17
16
  function escapeRegExp(str) {
18
17
  return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
19
18
  }
20
-
21
19
  //#endregion
22
- Object.defineProperty(exports, 'ellipsize', {
23
- enumerable: true,
24
- get: function () {
25
- return ellipsize;
26
- }
20
+ Object.defineProperty(exports, "ellipsize", {
21
+ enumerable: true,
22
+ get: function() {
23
+ return ellipsize;
24
+ }
27
25
  });
28
- Object.defineProperty(exports, 'escapeRegExp', {
29
- enumerable: true,
30
- get: function () {
31
- return escapeRegExp;
32
- }
26
+ Object.defineProperty(exports, "escapeRegExp", {
27
+ enumerable: true,
28
+ get: function() {
29
+ return escapeRegExp;
30
+ }
33
31
  });
34
- //# sourceMappingURL=text-DF2hMKdg.cjs.map
32
+
33
+ //# sourceMappingURL=text-CW1cyrwj.cjs.map
@@ -17,7 +17,7 @@ function ellipsize(str, maxLen) {
17
17
  function escapeRegExp(str) {
18
18
  return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
19
19
  }
20
-
21
20
  //#endregion
22
21
  export { escapeRegExp as n, ellipsize as t };
23
- //# sourceMappingURL=text-DgMr_tiM.js.map
22
+
23
+ //# sourceMappingURL=text-Db-Wt2u2.js.map
@@ -0,0 +1,22 @@
1
+ //#region src/util/text.ts
2
+ /**
3
+ * Truncates a string to a maximum length, adding an ellipsis (...) if truncated.
4
+ * @param str The string to truncate
5
+ * @param maxLen The maximum length of the resulting string, including the ellipsis
6
+ * @returns The truncated string, with ellipsis if necessary
7
+ */
8
+ function ellipsize(str, maxLen) {
9
+ if (str.length > maxLen) return str.slice(0, maxLen - 3) + "...";
10
+ return str;
11
+ }
12
+ /**
13
+ * Escapes special regex characters in a string.
14
+ * Use this when building regex patterns from dynamic input to prevent ReDoS attacks.
15
+ */
16
+ function escapeRegExp(str) {
17
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
18
+ }
19
+ //#endregion
20
+ export { escapeRegExp as n, ellipsize as t };
21
+
22
+ //# sourceMappingURL=text-TIv0QYnd.js.map
@@ -132,7 +132,7 @@ function normalizeTokenUsage(tokenUsage) {
132
132
  assertions: tokenUsage?.assertions || createEmptyAssertions()
133
133
  };
134
134
  }
135
-
136
135
  //#endregion
137
136
  export { createEmptyTokenUsage as a, createEmptyAssertions as i, accumulateResponseTokenUsage as n, normalizeTokenUsage as o, accumulateTokenUsage as r, accumulateAssertionTokenUsage as t };
138
- //# sourceMappingURL=tokenUsageUtils-FZd5O_4A.js.map
137
+
138
+ //# sourceMappingURL=tokenUsageUtils-BDGe-iyI.js.map
@@ -133,7 +133,7 @@ function normalizeTokenUsage(tokenUsage) {
133
133
  assertions: tokenUsage?.assertions || createEmptyAssertions()
134
134
  };
135
135
  }
136
-
137
136
  //#endregion
138
137
  export { createEmptyTokenUsage as a, createEmptyAssertions as i, accumulateResponseTokenUsage as n, normalizeTokenUsage as o, accumulateTokenUsage as r, accumulateAssertionTokenUsage as t };
139
- //# sourceMappingURL=tokenUsageUtils-DmZSD2eU.js.map
138
+
139
+ //# sourceMappingURL=tokenUsageUtils-DflFMjS0.js.map
@@ -0,0 +1,138 @@
1
+ //#region src/util/tokenUsageUtils.ts
2
+ /**
3
+ * Helper to create empty completion details
4
+ */
5
+ function createEmptyCompletionDetails() {
6
+ return {
7
+ reasoning: 0,
8
+ acceptedPrediction: 0,
9
+ rejectedPrediction: 0
10
+ };
11
+ }
12
+ /**
13
+ * Create an empty assertions token usage object.
14
+ */
15
+ function createEmptyAssertions() {
16
+ return {
17
+ total: 0,
18
+ prompt: 0,
19
+ completion: 0,
20
+ cached: 0,
21
+ numRequests: 0,
22
+ completionDetails: createEmptyCompletionDetails()
23
+ };
24
+ }
25
+ /**
26
+ * Create an empty token usage object with all fields initialized to zero.
27
+ */
28
+ function createEmptyTokenUsage() {
29
+ return {
30
+ prompt: 0,
31
+ completion: 0,
32
+ cached: 0,
33
+ total: 0,
34
+ numRequests: 0,
35
+ completionDetails: createEmptyCompletionDetails(),
36
+ assertions: createEmptyAssertions()
37
+ };
38
+ }
39
+ /**
40
+ * Helper to accumulate numeric values
41
+ */
42
+ function addNumbers(a, b) {
43
+ return (a ?? 0) + (b ?? 0);
44
+ }
45
+ /**
46
+ * Helper to accumulate completion details
47
+ */
48
+ function accumulateCompletionDetails(target, update) {
49
+ if (!update) return target;
50
+ return {
51
+ reasoning: addNumbers(target?.reasoning, update.reasoning),
52
+ acceptedPrediction: addNumbers(target?.acceptedPrediction, update.acceptedPrediction),
53
+ rejectedPrediction: addNumbers(target?.rejectedPrediction, update.rejectedPrediction)
54
+ };
55
+ }
56
+ /**
57
+ * Accumulate token usage into a target object. Mutates {@code target}.
58
+ * @param target Object to update
59
+ * @param update Usage to add
60
+ * @param incrementRequests Whether to increment numRequests when update is provided but doesn't specify numRequests
61
+ */
62
+ function accumulateTokenUsage(target, update, incrementRequests = false) {
63
+ if (!update) return;
64
+ target.prompt = addNumbers(target.prompt, update.prompt);
65
+ target.completion = addNumbers(target.completion, update.completion);
66
+ target.cached = addNumbers(target.cached, update.cached);
67
+ target.total = addNumbers(target.total, update.total);
68
+ if (update.numRequests !== void 0) target.numRequests = addNumbers(target.numRequests, update.numRequests);
69
+ else if (incrementRequests) target.numRequests = (target.numRequests ?? 0) + 1;
70
+ if (update.completionDetails) target.completionDetails = accumulateCompletionDetails(target.completionDetails, update.completionDetails);
71
+ if (update.assertions) {
72
+ if (!target.assertions) target.assertions = {
73
+ total: 0,
74
+ prompt: 0,
75
+ completion: 0,
76
+ cached: 0,
77
+ numRequests: 0
78
+ };
79
+ target.assertions.total = addNumbers(target.assertions.total, update.assertions.total);
80
+ target.assertions.prompt = addNumbers(target.assertions.prompt, update.assertions.prompt);
81
+ target.assertions.completion = addNumbers(target.assertions.completion, update.assertions.completion);
82
+ target.assertions.cached = addNumbers(target.assertions.cached, update.assertions.cached);
83
+ target.assertions.numRequests = addNumbers(target.assertions.numRequests, update.assertions.numRequests);
84
+ if (update.assertions.completionDetails) target.assertions.completionDetails = accumulateCompletionDetails(target.assertions.completionDetails, update.assertions.completionDetails);
85
+ }
86
+ }
87
+ /**
88
+ * Accumulate token usage specifically for assertions.
89
+ * This function operates directly on an assertions object rather than a full TokenUsage object.
90
+ * @param target Assertions object to update
91
+ * @param update Partial token usage that may contain assertion-related fields
92
+ */
93
+ function accumulateAssertionTokenUsage(target, update) {
94
+ if (!update) return;
95
+ target.total = addNumbers(target.total, update.total);
96
+ target.prompt = addNumbers(target.prompt, update.prompt);
97
+ target.completion = addNumbers(target.completion, update.completion);
98
+ target.cached = addNumbers(target.cached, update.cached);
99
+ if (update.completionDetails) target.completionDetails = accumulateCompletionDetails(target.completionDetails, update.completionDetails);
100
+ }
101
+ /**
102
+ * Accumulate token usage from a response, handling the common pattern of
103
+ * incrementing numRequests when no token usage is provided.
104
+ * @param target Object to update
105
+ * @param response Response that may contain token usage
106
+ */
107
+ function accumulateResponseTokenUsage(target, response, options) {
108
+ const countAsRequest = options?.countAsRequest ?? true;
109
+ if (response?.tokenUsage) if (countAsRequest) {
110
+ accumulateTokenUsage(target, response.tokenUsage);
111
+ if (response.tokenUsage.numRequests === void 0) target.numRequests = (target.numRequests ?? 0) + 1;
112
+ } else accumulateTokenUsage(target, {
113
+ ...response.tokenUsage,
114
+ numRequests: void 0
115
+ });
116
+ else if (response && countAsRequest) target.numRequests = (target.numRequests ?? 0) + 1;
117
+ }
118
+ /**
119
+ * Normalize token usage from a provider response into a standard TokenUsage object.
120
+ * Provides default values for all fields if not present in the response.
121
+ * @param tokenUsage Token usage from provider response (may be partial or undefined)
122
+ * @returns Fully populated TokenUsage object with defaults
123
+ */
124
+ function normalizeTokenUsage(tokenUsage) {
125
+ return {
126
+ total: tokenUsage?.total || 0,
127
+ prompt: tokenUsage?.prompt || 0,
128
+ completion: tokenUsage?.completion || 0,
129
+ cached: tokenUsage?.cached || 0,
130
+ numRequests: tokenUsage?.numRequests || 0,
131
+ completionDetails: tokenUsage?.completionDetails || createEmptyCompletionDetails(),
132
+ assertions: tokenUsage?.assertions || createEmptyAssertions()
133
+ };
134
+ }
135
+ //#endregion
136
+ export { createEmptyTokenUsage as a, createEmptyAssertions as i, accumulateResponseTokenUsage as n, normalizeTokenUsage as o, accumulateTokenUsage as r, accumulateAssertionTokenUsage as t };
137
+
138
+ //# sourceMappingURL=tokenUsageUtils-NYT-WKS6.js.map
@@ -1,4 +1,3 @@
1
-
2
1
  //#region src/util/tokenUsageUtils.ts
3
2
  /**
4
3
  * Helper to create empty completion details
@@ -133,42 +132,42 @@ function normalizeTokenUsage(tokenUsage) {
133
132
  assertions: tokenUsage?.assertions || createEmptyAssertions()
134
133
  };
135
134
  }
136
-
137
135
  //#endregion
138
- Object.defineProperty(exports, 'accumulateAssertionTokenUsage', {
139
- enumerable: true,
140
- get: function () {
141
- return accumulateAssertionTokenUsage;
142
- }
136
+ Object.defineProperty(exports, "accumulateAssertionTokenUsage", {
137
+ enumerable: true,
138
+ get: function() {
139
+ return accumulateAssertionTokenUsage;
140
+ }
143
141
  });
144
- Object.defineProperty(exports, 'accumulateResponseTokenUsage', {
145
- enumerable: true,
146
- get: function () {
147
- return accumulateResponseTokenUsage;
148
- }
142
+ Object.defineProperty(exports, "accumulateResponseTokenUsage", {
143
+ enumerable: true,
144
+ get: function() {
145
+ return accumulateResponseTokenUsage;
146
+ }
149
147
  });
150
- Object.defineProperty(exports, 'accumulateTokenUsage', {
151
- enumerable: true,
152
- get: function () {
153
- return accumulateTokenUsage;
154
- }
148
+ Object.defineProperty(exports, "accumulateTokenUsage", {
149
+ enumerable: true,
150
+ get: function() {
151
+ return accumulateTokenUsage;
152
+ }
155
153
  });
156
- Object.defineProperty(exports, 'createEmptyAssertions', {
157
- enumerable: true,
158
- get: function () {
159
- return createEmptyAssertions;
160
- }
154
+ Object.defineProperty(exports, "createEmptyAssertions", {
155
+ enumerable: true,
156
+ get: function() {
157
+ return createEmptyAssertions;
158
+ }
161
159
  });
162
- Object.defineProperty(exports, 'createEmptyTokenUsage', {
163
- enumerable: true,
164
- get: function () {
165
- return createEmptyTokenUsage;
166
- }
160
+ Object.defineProperty(exports, "createEmptyTokenUsage", {
161
+ enumerable: true,
162
+ get: function() {
163
+ return createEmptyTokenUsage;
164
+ }
167
165
  });
168
- Object.defineProperty(exports, 'normalizeTokenUsage', {
169
- enumerable: true,
170
- get: function () {
171
- return normalizeTokenUsage;
172
- }
166
+ Object.defineProperty(exports, "normalizeTokenUsage", {
167
+ enumerable: true,
168
+ get: function() {
169
+ return normalizeTokenUsage;
170
+ }
173
171
  });
174
- //# sourceMappingURL=tokenUsageUtils-CXhxVj72.cjs.map
172
+
173
+ //# sourceMappingURL=tokenUsageUtils-bVa1ga6f.cjs.map
@@ -1,23 +1,22 @@
1
- const require_logger = require('./logger-BdZ-IqBc.cjs');
2
- require('./esm-BQkx5roy.cjs');
3
- require('./pythonUtils-DZ6EbdY4.cjs');
4
- require('./types-BIfttHrT.cjs');
5
- require('./util-DUYOvxAy.cjs');
6
- const require_fetch = require('./fetch-ZMn_oemb.cjs');
7
- const require_cache = require('./cache-7xULbvt3.cjs');
8
- const require_openai = require('./openai-Bigwjgo1.cjs');
9
- const require_util$1 = require('./util-C08Kns6-.cjs');
1
+ const require_logger = require("./logger-Cp1GPUjj.cjs");
2
+ require("./esm-CnNt7sI4.cjs");
3
+ require("./pythonUtils-CTU3Y3lw.cjs");
4
+ require("./types-LJ0r3wbR.cjs");
5
+ require("./util-Yz-1aEhW.cjs");
6
+ const require_fetch = require("./fetch-BxUk8odA.cjs");
7
+ const require_cache = require("./cache-COish3-W.cjs");
8
+ const require_openai = require("./openai-Cuif0GEt.cjs");
9
+ const require_util$1 = require("./util-Db0a0AFH.cjs");
10
10
  let fs = require("fs");
11
11
  fs = require_logger.__toESM(fs);
12
12
  let path = require("path");
13
13
  path = require_logger.__toESM(path);
14
-
15
14
  //#region src/providers/openai/transcription.ts
16
15
  var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends require_openai.OpenAiGenericProvider {
17
16
  static OPENAI_TRANSCRIPTION_MODEL_NAMES = require_util$1.OPENAI_TRANSCRIPTION_MODELS.map((model) => model.id);
18
17
  config;
19
18
  constructor(modelName, options = {}) {
20
- if (!OpenAiTranscriptionProvider.OPENAI_TRANSCRIPTION_MODEL_NAMES.includes(modelName)) require_logger.logger_default.debug(`Using unknown transcription model: ${modelName}`);
19
+ if (!OpenAiTranscriptionProvider.OPENAI_TRANSCRIPTION_MODEL_NAMES.includes(modelName)) require_logger.logger.debug(`Using unknown transcription model: ${modelName}`);
21
20
  super(modelName, options);
22
21
  this.config = options.config || {};
23
22
  }
@@ -73,7 +72,7 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends requ
73
72
  }, require_fetch.REQUEST_TIMEOUT_MS, "json", context?.bustCache ?? context?.debug));
74
73
  if (status < 200 || status >= 300) return { error: `API error: ${status} ${statusText}\n${typeof data === "string" ? data : JSON.stringify(data)}` };
75
74
  } catch (err) {
76
- require_logger.logger_default.error("API call error", { error: err });
75
+ require_logger.logger.error("API call error", { error: err });
77
76
  return { error: `API call error: ${String(err)}` };
78
77
  }
79
78
  if (data.error) return { error: typeof data.error === "string" ? data.error : JSON.stringify(data.error) };
@@ -118,12 +117,12 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends requ
118
117
  }
119
118
  };
120
119
  } catch (err) {
121
- require_logger.logger_default.error("Transcription error", { error: err });
120
+ require_logger.logger.error("Transcription error", { error: err });
122
121
  return { error: `Transcription error: ${String(err)}` };
123
122
  }
124
123
  }
125
124
  };
126
-
127
125
  //#endregion
128
126
  exports.OpenAiTranscriptionProvider = OpenAiTranscriptionProvider;
129
- //# sourceMappingURL=transcription-FNIz3YOe.cjs.map
127
+
128
+ //# sourceMappingURL=transcription-CL78qbOU.cjs.map
@@ -1,13 +1,20 @@
1
- import { _ as fetchWithCache, d as OpenAiGenericProvider, j as logger_default, k as REQUEST_TIMEOUT_MS, u as OPENAI_TRANSCRIPTION_MODELS } from "./server/index.js";
1
+ import { i as logger } from "./logger-DLcq4dWf.js";
2
+ import { p as REQUEST_TIMEOUT_MS } from "./fetch-4M3YRaqL.js";
3
+ import "./esm-CaIwzWR5.js";
4
+ import "./types-CN_TZ2GJ.js";
5
+ import { r as fetchWithCache } from "./cache-D3eqDYGU.js";
6
+ import "./pythonUtils-D6fwaDSg.js";
7
+ import "./util-5cB-L7U3.js";
8
+ import { t as OpenAiGenericProvider } from "./openai-j-sE2O7r.js";
9
+ import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-6-GqIvzS.js";
2
10
  import fs from "fs";
3
11
  import path from "path";
4
-
5
12
  //#region src/providers/openai/transcription.ts
6
13
  var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends OpenAiGenericProvider {
7
14
  static OPENAI_TRANSCRIPTION_MODEL_NAMES = OPENAI_TRANSCRIPTION_MODELS.map((model) => model.id);
8
15
  config;
9
16
  constructor(modelName, options = {}) {
10
- if (!OpenAiTranscriptionProvider.OPENAI_TRANSCRIPTION_MODEL_NAMES.includes(modelName)) logger_default.debug(`Using unknown transcription model: ${modelName}`);
17
+ if (!OpenAiTranscriptionProvider.OPENAI_TRANSCRIPTION_MODEL_NAMES.includes(modelName)) logger.debug(`Using unknown transcription model: ${modelName}`);
11
18
  super(modelName, options);
12
19
  this.config = options.config || {};
13
20
  }
@@ -63,7 +70,7 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends Open
63
70
  }, REQUEST_TIMEOUT_MS, "json", context?.bustCache ?? context?.debug));
64
71
  if (status < 200 || status >= 300) return { error: `API error: ${status} ${statusText}\n${typeof data === "string" ? data : JSON.stringify(data)}` };
65
72
  } catch (err) {
66
- logger_default.error("API call error", { error: err });
73
+ logger.error("API call error", { error: err });
67
74
  return { error: `API call error: ${String(err)}` };
68
75
  }
69
76
  if (data.error) return { error: typeof data.error === "string" ? data.error : JSON.stringify(data.error) };
@@ -108,12 +115,12 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends Open
108
115
  }
109
116
  };
110
117
  } catch (err) {
111
- logger_default.error("Transcription error", { error: err });
118
+ logger.error("Transcription error", { error: err });
112
119
  return { error: `Transcription error: ${String(err)}` };
113
120
  }
114
121
  }
115
122
  };
116
-
117
123
  //#endregion
118
124
  export { OpenAiTranscriptionProvider };
119
- //# sourceMappingURL=transcription-C-M81iDA.js.map
125
+
126
+ //# sourceMappingURL=transcription-DAtxHhAM.js.map
@@ -1,22 +1,20 @@
1
- import "./chunk-FhC4c-0y.js";
2
- import { i as logger_default } from "./logger-w8Ozp0Td.js";
3
- import "./esm-rDtG_2rg.js";
4
- import "./pythonUtils-vMlk9Qp5.js";
5
- import "./types-DMVjYLpx.js";
6
- import "./util-DiCePfDu.js";
7
- import { h as REQUEST_TIMEOUT_MS } from "./fetch-18MuNu9i.js";
8
- import { a as fetchWithCache } from "./cache-BLLayYEN.js";
9
- import { t as OpenAiGenericProvider } from "./openai-Dz3surb_.js";
10
- import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-Cl0zfT3V.js";
1
+ import { i as logger } from "./logger-CT3IKMKA.js";
2
+ import "./esm-Cd1AjG1D.js";
3
+ import "./pythonUtils-D5nxkQ0P.js";
4
+ import "./types-CLKiCBW3.js";
5
+ import "./util-Dlz_Wvgm.js";
6
+ import { p as REQUEST_TIMEOUT_MS } from "./fetch-60Gzydls.js";
7
+ import { r as fetchWithCache } from "./cache-8XhNqPKW.js";
8
+ import { t as OpenAiGenericProvider } from "./openai-DElQ-fPX.js";
9
+ import { i as OPENAI_TRANSCRIPTION_MODELS } from "./util-Betm42rL.js";
11
10
  import fs from "fs";
12
11
  import path from "path";
13
-
14
12
  //#region src/providers/openai/transcription.ts
15
13
  var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends OpenAiGenericProvider {
16
14
  static OPENAI_TRANSCRIPTION_MODEL_NAMES = OPENAI_TRANSCRIPTION_MODELS.map((model) => model.id);
17
15
  config;
18
16
  constructor(modelName, options = {}) {
19
- if (!OpenAiTranscriptionProvider.OPENAI_TRANSCRIPTION_MODEL_NAMES.includes(modelName)) logger_default.debug(`Using unknown transcription model: ${modelName}`);
17
+ if (!OpenAiTranscriptionProvider.OPENAI_TRANSCRIPTION_MODEL_NAMES.includes(modelName)) logger.debug(`Using unknown transcription model: ${modelName}`);
20
18
  super(modelName, options);
21
19
  this.config = options.config || {};
22
20
  }
@@ -72,7 +70,7 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends Open
72
70
  }, REQUEST_TIMEOUT_MS, "json", context?.bustCache ?? context?.debug));
73
71
  if (status < 200 || status >= 300) return { error: `API error: ${status} ${statusText}\n${typeof data === "string" ? data : JSON.stringify(data)}` };
74
72
  } catch (err) {
75
- logger_default.error("API call error", { error: err });
73
+ logger.error("API call error", { error: err });
76
74
  return { error: `API call error: ${String(err)}` };
77
75
  }
78
76
  if (data.error) return { error: typeof data.error === "string" ? data.error : JSON.stringify(data.error) };
@@ -117,12 +115,12 @@ var OpenAiTranscriptionProvider = class OpenAiTranscriptionProvider extends Open
117
115
  }
118
116
  };
119
117
  } catch (err) {
120
- logger_default.error("Transcription error", { error: err });
118
+ logger.error("Transcription error", { error: err });
121
119
  return { error: `Transcription error: ${String(err)}` };
122
120
  }
123
121
  }
124
122
  };
125
-
126
123
  //#endregion
127
124
  export { OpenAiTranscriptionProvider };
128
- //# sourceMappingURL=transcription-CYuY5sFO.js.map
125
+
126
+ //# sourceMappingURL=transcription-LNZTNUUL.js.map