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,228 @@
1
+ import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
+ import { i as logger } from "./logger-DLcq4dWf.js";
3
+ import { f as spansTable, h as getDb, m as tracesTable } from "./tables-xKANLRBD.js";
4
+ import { asc, eq, lt } from "drizzle-orm";
5
+ //#region src/tracing/store.ts
6
+ var store_exports = /* @__PURE__ */ __exportAll({
7
+ TraceStore: () => TraceStore,
8
+ getTraceStore: () => getTraceStore
9
+ });
10
+ const SENSITIVE_ATTRIBUTE_KEYS = [
11
+ "authorization",
12
+ "cookie",
13
+ "set-cookie",
14
+ "token",
15
+ "api_key",
16
+ "apikey",
17
+ "secret",
18
+ "password",
19
+ "passphrase"
20
+ ];
21
+ function sanitizeAttributes(attributes) {
22
+ if (!attributes) return {};
23
+ const sanitizeValue = (value) => {
24
+ if (typeof value === "string") return value.length > 400 ? `${value.slice(0, 400)}…` : value;
25
+ if (Array.isArray(value)) return value.map(sanitizeValue);
26
+ if (value && typeof value === "object") return sanitizeAttributes(value);
27
+ return value;
28
+ };
29
+ const sanitized = {};
30
+ for (const [key, value] of Object.entries(attributes)) {
31
+ const lowerKey = key.toLowerCase();
32
+ if (SENSITIVE_ATTRIBUTE_KEYS.some((sensitiveKey) => lowerKey.includes(sensitiveKey))) {
33
+ sanitized[key] = "<redacted>";
34
+ continue;
35
+ }
36
+ sanitized[key] = sanitizeValue(value);
37
+ }
38
+ return sanitized;
39
+ }
40
+ function computeDepth(span, spanMap, depthCache) {
41
+ if (depthCache.has(span.spanId)) return depthCache.get(span.spanId);
42
+ if (!span.parentSpanId || !spanMap.has(span.parentSpanId)) {
43
+ depthCache.set(span.spanId, 0);
44
+ return 0;
45
+ }
46
+ const currentDepth = computeDepth(spanMap.get(span.parentSpanId), spanMap, depthCache) + 1;
47
+ depthCache.set(span.spanId, currentDepth);
48
+ return currentDepth;
49
+ }
50
+ function deriveSpanKind(span) {
51
+ const attributes = span.attributes || {};
52
+ const attributeKind = attributes["span.kind"] || attributes["otel.span.kind"] || attributes["spanKind"];
53
+ if (typeof attributeKind === "string") return attributeKind.toLowerCase();
54
+ return "internal";
55
+ }
56
+ var TraceStore = class {
57
+ db = null;
58
+ getDatabase() {
59
+ if (!this.db) {
60
+ logger.debug("[TraceStore] Initializing database connection");
61
+ this.db = getDb();
62
+ }
63
+ return this.db;
64
+ }
65
+ async createTrace(trace) {
66
+ try {
67
+ logger.debug(`[TraceStore] Creating trace ${trace.traceId} for evaluation ${trace.evaluationId}`);
68
+ await this.getDatabase().insert(tracesTable).values({
69
+ id: crypto.randomUUID(),
70
+ traceId: trace.traceId,
71
+ evaluationId: trace.evaluationId,
72
+ testCaseId: trace.testCaseId,
73
+ metadata: trace.metadata
74
+ }).onConflictDoNothing({ target: tracesTable.traceId });
75
+ logger.debug(`[TraceStore] Successfully created or found existing trace ${trace.traceId}`);
76
+ } catch (error) {
77
+ logger.error(`[TraceStore] Failed to create trace: ${error}`);
78
+ throw error;
79
+ }
80
+ }
81
+ async addSpans(traceId, spans, options) {
82
+ try {
83
+ logger.debug(`[TraceStore] Adding ${spans.length} spans to trace ${traceId}`);
84
+ const db = this.getDatabase();
85
+ if (options?.skipTraceCheck) logger.debug(`[TraceStore] Skipping trace existence check for OTLP scenario`);
86
+ else {
87
+ logger.debug(`[TraceStore] Verifying trace ${traceId} exists`);
88
+ if ((await db.select().from(tracesTable).where(eq(tracesTable.traceId, traceId)).limit(1)).length === 0) {
89
+ logger.warn(`[TraceStore] Trace ${traceId} not found, skipping ${spans.length} spans. This may indicate spans arrived before trace was created.`);
90
+ return {
91
+ stored: false,
92
+ reason: `Trace ${traceId} not found`
93
+ };
94
+ }
95
+ logger.debug(`[TraceStore] Trace ${traceId} found, proceeding with span insertion`);
96
+ }
97
+ const spanRecords = spans.map((span) => {
98
+ logger.debug(`[TraceStore] Preparing span ${span.spanId} (${span.name}) for insertion`);
99
+ return {
100
+ id: crypto.randomUUID(),
101
+ traceId,
102
+ spanId: span.spanId,
103
+ parentSpanId: span.parentSpanId,
104
+ name: span.name,
105
+ startTime: span.startTime,
106
+ endTime: span.endTime,
107
+ attributes: span.attributes,
108
+ statusCode: span.statusCode,
109
+ statusMessage: span.statusMessage
110
+ };
111
+ });
112
+ await db.insert(spansTable).values(spanRecords);
113
+ logger.debug(`[TraceStore] Successfully added ${spans.length} spans to trace ${traceId}`);
114
+ return { stored: true };
115
+ } catch (error) {
116
+ logger.error(`[TraceStore] Failed to add spans: ${error}`);
117
+ throw error;
118
+ }
119
+ }
120
+ async getTracesByEvaluation(evaluationId) {
121
+ try {
122
+ logger.debug(`[TraceStore] Fetching traces for evaluation ${evaluationId}`);
123
+ const db = this.getDatabase();
124
+ const traces = await db.select().from(tracesTable).where(eq(tracesTable.evaluationId, evaluationId));
125
+ logger.debug(`[TraceStore] Found ${traces.length} traces for evaluation ${evaluationId}`);
126
+ const tracesWithSpans = await Promise.all(traces.map(async (trace) => {
127
+ logger.debug(`[TraceStore] Fetching spans for trace ${trace.traceId}`);
128
+ const spans = await db.select().from(spansTable).where(eq(spansTable.traceId, trace.traceId));
129
+ logger.debug(`[TraceStore] Found ${spans.length} spans for trace ${trace.traceId}`);
130
+ return {
131
+ ...trace,
132
+ spans
133
+ };
134
+ }));
135
+ logger.debug(`[TraceStore] Returning ${tracesWithSpans.length} traces with spans`);
136
+ return tracesWithSpans;
137
+ } catch (error) {
138
+ logger.error(`[TraceStore] Failed to get traces for evaluation: ${error}`);
139
+ throw error;
140
+ }
141
+ }
142
+ async getTrace(traceId) {
143
+ try {
144
+ logger.debug(`[TraceStore] Fetching trace ${traceId}`);
145
+ const db = this.getDatabase();
146
+ const traces = await db.select().from(tracesTable).where(eq(tracesTable.traceId, traceId)).limit(1);
147
+ if (traces.length === 0) {
148
+ logger.debug(`[TraceStore] Trace ${traceId} not found`);
149
+ return null;
150
+ }
151
+ const trace = traces[0];
152
+ logger.debug(`[TraceStore] Found trace ${traceId}, fetching spans`);
153
+ const spans = await db.select().from(spansTable).where(eq(spansTable.traceId, traceId));
154
+ logger.debug(`[TraceStore] Found ${spans.length} spans for trace ${traceId}`);
155
+ return {
156
+ ...trace,
157
+ spans
158
+ };
159
+ } catch (error) {
160
+ logger.error(`[TraceStore] Failed to get trace: ${error}`);
161
+ throw error;
162
+ }
163
+ }
164
+ async deleteOldTraces(retentionDays) {
165
+ try {
166
+ logger.debug(`[TraceStore] Deleting traces older than ${retentionDays} days`);
167
+ const db = this.getDatabase();
168
+ const cutoffTime = Date.now() - retentionDays * 24 * 60 * 60 * 1e3;
169
+ await db.delete(tracesTable).where(lt(tracesTable.createdAt, cutoffTime));
170
+ logger.debug(`[TraceStore] Successfully deleted traces older than ${retentionDays} days`);
171
+ } catch (error) {
172
+ logger.error(`[TraceStore] Failed to delete old traces: ${error}`);
173
+ throw error;
174
+ }
175
+ }
176
+ async getSpans(traceId, options = {}) {
177
+ const { earliestStartTime, maxSpans, maxDepth, includeInternalSpans = true, spanFilter, sanitizeAttributes: shouldSanitize = true } = options;
178
+ try {
179
+ logger.debug(`[TraceStore] Fetching spans for trace ${traceId}`);
180
+ const rows = await this.getDatabase().select().from(spansTable).where(eq(spansTable.traceId, traceId)).orderBy(asc(spansTable.startTime));
181
+ const spanMap = /* @__PURE__ */ new Map();
182
+ const depthCache = /* @__PURE__ */ new Map();
183
+ for (const row of rows) {
184
+ if (earliestStartTime && row.startTime < earliestStartTime) continue;
185
+ const rawAttributes = row.attributes ?? {};
186
+ const spanData = {
187
+ spanId: row.spanId,
188
+ parentSpanId: row.parentSpanId ?? void 0,
189
+ name: row.name,
190
+ startTime: row.startTime,
191
+ endTime: row.endTime ?? void 0,
192
+ attributes: shouldSanitize ? sanitizeAttributes(rawAttributes) : rawAttributes,
193
+ statusCode: row.statusCode ?? void 0,
194
+ statusMessage: row.statusMessage ?? void 0
195
+ };
196
+ const spanKind = deriveSpanKind({
197
+ ...spanData,
198
+ attributes: rawAttributes
199
+ });
200
+ if (!includeInternalSpans && spanKind === "internal") continue;
201
+ if (spanFilter && spanFilter.length > 0) {
202
+ if (!spanFilter.some((filterName) => spanData.name.toLowerCase().includes(filterName.toLowerCase()))) continue;
203
+ }
204
+ spanMap.set(spanData.spanId, spanData);
205
+ }
206
+ let spans = Array.from(spanMap.values());
207
+ if (maxDepth !== void 0) spans = spans.filter((span) => computeDepth(span, spanMap, depthCache) < maxDepth);
208
+ if (maxSpans !== void 0) spans = spans.slice(0, maxSpans);
209
+ logger.debug(`[TraceStore] Returning ${spans.length} spans for trace ${traceId}`);
210
+ return spans;
211
+ } catch (error) {
212
+ logger.error(`[TraceStore] Failed to fetch spans for trace ${traceId}: ${error}`);
213
+ throw error;
214
+ }
215
+ }
216
+ };
217
+ let traceStore = null;
218
+ function getTraceStore() {
219
+ if (!traceStore) {
220
+ logger.debug("[TraceStore] Creating new TraceStore instance");
221
+ traceStore = new TraceStore();
222
+ }
223
+ return traceStore;
224
+ }
225
+ //#endregion
226
+ export { store_exports as n, getTraceStore as t };
227
+
228
+ //# sourceMappingURL=store-Ub2vaGJ1.js.map
@@ -1,16 +1,15 @@
1
- import { _ as getEnvBool, g as getConfigDirectoryPath, i as logger_default } from "./logger-w8Ozp0Td.js";
2
- import { g as ResultFailureReason } from "./types-DMVjYLpx.js";
1
+ import { _ as getEnvBool, g as getConfigDirectoryPath, i as logger } from "./logger-CT3IKMKA.js";
2
+ import { g as ResultFailureReason } from "./types-CLKiCBW3.js";
3
3
  import * as path$1 from "path";
4
4
  import { relations, sql } from "drizzle-orm";
5
5
  import Database from "better-sqlite3";
6
6
  import { drizzle } from "drizzle-orm/better-sqlite3";
7
7
  import { DefaultLogger } from "drizzle-orm/logger";
8
8
  import { index, integer, primaryKey, real, sqliteTable, text, uniqueIndex } from "drizzle-orm/sqlite-core";
9
-
10
9
  //#region src/database/index.ts
11
10
  var DrizzleLogWriter = class {
12
11
  write(message) {
13
- if (getEnvBool("PROMPTFOO_ENABLE_DATABASE_LOGS", false)) logger_default.debug(`Drizzle: ${message}`);
12
+ if (getEnvBool("PROMPTFOO_ENABLE_DATABASE_LOGS", false)) logger.debug(`Drizzle: ${message}`);
14
13
  }
15
14
  };
16
15
  let dbInstance = null;
@@ -29,19 +28,18 @@ function getDb() {
29
28
  if (!isMemoryDb && !getEnvBool("PROMPTFOO_DISABLE_WAL_MODE", false)) try {
30
29
  sqliteInstance.pragma("journal_mode = WAL");
31
30
  const result = sqliteInstance.prepare("PRAGMA journal_mode").get();
32
- if (result.journal_mode.toLowerCase() === "wal") logger_default.debug("Successfully enabled SQLite WAL mode");
33
- else logger_default.warn(`Failed to enable WAL mode (got '${result.journal_mode}'). Database performance may be reduced. This can happen on network filesystems. Set PROMPTFOO_DISABLE_WAL_MODE=true to suppress this warning.`);
31
+ if (result.journal_mode.toLowerCase() === "wal") logger.debug("Successfully enabled SQLite WAL mode");
32
+ else logger.warn(`Failed to enable WAL mode (got '${result.journal_mode}'). Database performance may be reduced. This can happen on network filesystems. Set PROMPTFOO_DISABLE_WAL_MODE=true to suppress this warning.`);
34
33
  sqliteInstance.pragma("wal_autocheckpoint = 1000");
35
34
  sqliteInstance.pragma("synchronous = NORMAL");
36
35
  } catch (err) {
37
- logger_default.warn(`Error configuring SQLite WAL mode: ${err}. Database will use default journal mode. Performance may be reduced. This can happen on network filesystems or certain containerized environments. Set PROMPTFOO_DISABLE_WAL_MODE=true to suppress this warning.`);
36
+ logger.warn(`Error configuring SQLite WAL mode: ${err}. Database will use default journal mode. Performance may be reduced. This can happen on network filesystems or certain containerized environments. Set PROMPTFOO_DISABLE_WAL_MODE=true to suppress this warning.`);
38
37
  }
39
38
  const drizzleLogger = new DefaultLogger({ writer: new DrizzleLogWriter() });
40
39
  dbInstance = drizzle(sqliteInstance, { logger: drizzleLogger });
41
40
  }
42
41
  return dbInstance;
43
42
  }
44
-
45
43
  //#endregion
46
44
  //#region src/database/tables.ts
47
45
  const promptsTable = sqliteTable("prompts", {
@@ -119,7 +117,7 @@ const evalsToPromptsTable = sqliteTable("evals_to_prompts", {
119
117
  evalIdIdx: index("evals_to_prompts_eval_id_idx").on(t.evalId),
120
118
  promptIdIdx: index("evals_to_prompts_prompt_id_idx").on(t.promptId)
121
119
  }));
122
- const promptsRelations = relations(promptsTable, ({ many }) => ({ evalsToPrompts: many(evalsToPromptsTable) }));
120
+ relations(promptsTable, ({ many }) => ({ evalsToPrompts: many(evalsToPromptsTable) }));
123
121
  const evalsToTagsTable = sqliteTable("evals_to_tags", {
124
122
  evalId: text("eval_id").notNull().references(() => evalsTable.id),
125
123
  tagId: text("tag_id").notNull().references(() => tagsTable.id)
@@ -128,8 +126,8 @@ const evalsToTagsTable = sqliteTable("evals_to_tags", {
128
126
  evalIdIdx: index("evals_to_tags_eval_id_idx").on(t.evalId),
129
127
  tagIdIdx: index("evals_to_tags_tag_id_idx").on(t.tagId)
130
128
  }));
131
- const tagsRelations = relations(tagsTable, ({ many }) => ({ evalsToTags: many(evalsToTagsTable) }));
132
- const evalsToTagsRelations = relations(evalsToTagsTable, ({ one }) => ({
129
+ relations(tagsTable, ({ many }) => ({ evalsToTags: many(evalsToTagsTable) }));
130
+ relations(evalsToTagsTable, ({ one }) => ({
133
131
  eval: one(evalsTable, {
134
132
  fields: [evalsToTagsTable.evalId],
135
133
  references: [evalsTable.id]
@@ -147,7 +145,8 @@ const blobAssetsTable = sqliteTable("blob_assets", {
147
145
  createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`)
148
146
  }, (table) => ({
149
147
  providerIdx: index("blob_assets_provider_idx").on(table.provider),
150
- createdAtIdx: index("blob_assets_created_at_idx").on(table.createdAt)
148
+ createdAtIdx: index("blob_assets_created_at_idx").on(table.createdAt),
149
+ mimeTypeIdx: index("blob_assets_mime_type_idx").on(table.mimeType)
151
150
  }));
152
151
  const blobReferencesTable = sqliteTable("blob_references", {
153
152
  id: text("id").primaryKey(),
@@ -160,7 +159,8 @@ const blobReferencesTable = sqliteTable("blob_references", {
160
159
  createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`)
161
160
  }, (table) => ({
162
161
  blobIdx: index("blob_references_blob_idx").on(table.blobHash),
163
- evalIdx: index("blob_references_eval_idx").on(table.evalId)
162
+ evalIdx: index("blob_references_eval_idx").on(table.evalId),
163
+ blobCreatedAtIdx: index("blob_references_blob_created_at_idx").on(table.blobHash, table.createdAt)
164
164
  }));
165
165
  const datasetsTable = sqliteTable("datasets", {
166
166
  id: text("id").primaryKey(),
@@ -175,13 +175,13 @@ const evalsToDatasetsTable = sqliteTable("evals_to_datasets", {
175
175
  evalIdIdx: index("evals_to_datasets_eval_id_idx").on(t.evalId),
176
176
  datasetIdIdx: index("evals_to_datasets_dataset_id_idx").on(t.datasetId)
177
177
  }));
178
- const datasetsRelations = relations(datasetsTable, ({ many }) => ({ evalsToDatasets: many(evalsToDatasetsTable) }));
179
- const evalsRelations = relations(evalsTable, ({ many }) => ({
178
+ relations(datasetsTable, ({ many }) => ({ evalsToDatasets: many(evalsToDatasetsTable) }));
179
+ relations(evalsTable, ({ many }) => ({
180
180
  evalsToPrompts: many(evalsToPromptsTable),
181
181
  evalsToDatasets: many(evalsToDatasetsTable),
182
182
  evalsToTags: many(evalsToTagsTable)
183
183
  }));
184
- const evalsToPromptsRelations = relations(evalsToPromptsTable, ({ one }) => ({
184
+ relations(evalsToPromptsTable, ({ one }) => ({
185
185
  eval: one(evalsTable, {
186
186
  fields: [evalsToPromptsTable.evalId],
187
187
  references: [evalsTable.id]
@@ -191,7 +191,7 @@ const evalsToPromptsRelations = relations(evalsToPromptsTable, ({ one }) => ({
191
191
  references: [promptsTable.id]
192
192
  })
193
193
  }));
194
- const evalsToDatasetsRelations = relations(evalsToDatasetsTable, ({ one }) => ({
194
+ relations(evalsToDatasetsTable, ({ one }) => ({
195
195
  eval: one(evalsTable, {
196
196
  fields: [evalsToDatasetsTable.evalId],
197
197
  references: [evalsTable.id]
@@ -201,7 +201,7 @@ const evalsToDatasetsRelations = relations(evalsToDatasetsTable, ({ one }) => ({
201
201
  references: [datasetsTable.id]
202
202
  })
203
203
  }));
204
- const configsTable = sqliteTable("configs", {
204
+ sqliteTable("configs", {
205
205
  id: text("id").primaryKey(),
206
206
  createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
207
207
  updatedAt: integer("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
@@ -212,7 +212,7 @@ const configsTable = sqliteTable("configs", {
212
212
  createdAtIdx: index("configs_created_at_idx").on(table.createdAt),
213
213
  typeIdx: index("configs_type_idx").on(table.type)
214
214
  }));
215
- const modelAuditsTable = sqliteTable("model_audits", {
215
+ sqliteTable("model_audits", {
216
216
  id: text("id").primaryKey(),
217
217
  createdAt: integer("created_at").notNull().default(sql`CURRENT_TIMESTAMP`),
218
218
  updatedAt: integer("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
@@ -271,18 +271,18 @@ const spansTable = sqliteTable("spans", {
271
271
  traceIdIdx: index("spans_trace_id_idx").on(table.traceId),
272
272
  spanIdIdx: index("spans_span_id_idx").on(table.spanId)
273
273
  }));
274
- const tracesRelations = relations(tracesTable, ({ one, many }) => ({
274
+ relations(tracesTable, ({ one, many }) => ({
275
275
  eval: one(evalsTable, {
276
276
  fields: [tracesTable.evaluationId],
277
277
  references: [evalsTable.id]
278
278
  }),
279
279
  spans: many(spansTable)
280
280
  }));
281
- const spansRelations = relations(spansTable, ({ one }) => ({ trace: one(tracesTable, {
281
+ relations(spansTable, ({ one }) => ({ trace: one(tracesTable, {
282
282
  fields: [spansTable.traceId],
283
283
  references: [tracesTable.traceId]
284
284
  }) }));
285
-
286
285
  //#endregion
287
286
  export { evalsTable as a, evalsToTagsTable as c, tagsTable as d, tracesTable as f, evalResultsTable as i, promptsTable as l, getDbSignalPath as m, blobReferencesTable as n, evalsToDatasetsTable as o, getDb as p, datasetsTable as r, evalsToPromptsTable as s, blobAssetsTable as t, spansTable as u };
288
- //# sourceMappingURL=tables-D-NSwNIb.js.map
287
+
288
+ //# sourceMappingURL=tables-5EvT_Bwn.js.map