promptfoo 0.121.5 → 0.121.8

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 (490) hide show
  1. package/dist/src/{ListApp-BRUsT43Y.js → ListApp-DLmM02JS.js} +1 -1
  2. package/dist/src/{accounts-BIFntVWB.cjs → accounts-BVz5gHLK.cjs} +16 -10
  3. package/dist/src/{accounts-bnyHT7Ju.js → accounts-BWjqwsrf.js} +12 -7
  4. package/dist/src/{accounts-CLJHCDDb.js → accounts-D6IBfEE0.js} +13 -8
  5. package/dist/src/{accounts-CaLNYnf7.js → accounts-DAv_0iE7.js} +12 -7
  6. package/dist/src/{agentic-utils-B5krlibj.js → agentic-utils-BJKAkz2e.js} +2 -2
  7. package/dist/src/{agentic-utils-D2x0wGhB.cjs → agentic-utils-C-A92xhn.cjs} +8 -7
  8. package/dist/src/{agentic-utils-Ba67xmgs.js → agentic-utils-DmoS_S4B.js} +2 -2
  9. package/dist/src/{agentic-utils-BclbiXiq.js → agentic-utils-GdToujHu.js} +2 -2
  10. package/dist/src/{agents-BGqaTDnr.js → agents-2C8NN6I1.js} +20 -9
  11. package/dist/src/{agents-n6vPqV3i.js → agents-BMAiSR2o.js} +4 -4
  12. package/dist/src/{agents-BYdMl1UE.js → agents-C-PGaxwj.js} +20 -9
  13. package/dist/src/{agents-BV9yFpXX.js → agents-C98cz5pl.js} +20 -9
  14. package/dist/src/{agents-WULPVjbH.cjs → agents-DB8Ub2Ld.cjs} +7 -6
  15. package/dist/src/{agents-DhxWMCtH.js → agents-Dwshy2H8.js} +4 -4
  16. package/dist/src/{agents-emVcx3yh.js → agents-mlKjx-cK.js} +2 -2
  17. package/dist/src/{agents-DiWmQYH9.cjs → agents-n2ej-c4H.cjs} +21 -10
  18. package/dist/src/{aimlapi-DR4pgeiC.js → aimlapi-Bi-laUlp.js} +6 -6
  19. package/dist/src/{aimlapi-BzLjZI_m.cjs → aimlapi-D0OFV4Vj.cjs} +7 -7
  20. package/dist/src/{aimlapi-BxqK9HF_.js → aimlapi-WyUK0wYy.js} +6 -6
  21. package/dist/src/{aimlapi-uPGp0Zdo.js → aimlapi-v-63ZjEI.js} +6 -6
  22. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -1
  23. package/dist/src/app/assets/Report-sCXUfaWo.js +1 -0
  24. package/dist/src/app/assets/index-BopgkZEh.js +388 -0
  25. package/dist/src/app/assets/index-yhM8y1PP.css +1 -0
  26. package/dist/src/app/assets/{scroll-timeline-D9IT_e8Z.js → scroll-timeline-RpeTwOvs.js} +1 -1
  27. package/dist/src/app/assets/sync-5gq6fmG4.js +4 -0
  28. package/dist/src/app/assets/vendor-charts-BL9OMNU7.js +36 -0
  29. package/dist/src/app/assets/{vendor-markdown-Ch00wnNI.js → vendor-markdown-BYsQqn7Z.js} +10 -10
  30. package/dist/src/app/assets/{vendor-react-CVvmk1UB.js → vendor-react-CqWgVW6T.js} +2 -2
  31. package/dist/src/app/assets/{vendor-utils-BnEYbx2Q.js → vendor-utils-BHPO71pu.js} +1 -1
  32. package/dist/src/app/index.html +6 -6
  33. package/dist/src/{audio-CScmnmEB.js → audio-DnEIHWZR.js} +3 -3
  34. package/dist/src/{audio-Da8U9IS5.js → audio-heR0mu0n.js} +3 -3
  35. package/dist/src/{audio-BvpTOArF.js → audio-wafFO1wn.js} +3 -3
  36. package/dist/src/{audio-C0vDeS0j.cjs → audio-x44tsxIo.cjs} +4 -4
  37. package/dist/src/authoritativeMarkupInjection-2G3Be6oL.cjs +74 -0
  38. package/dist/src/authoritativeMarkupInjection-81PPynHR.js +75 -0
  39. package/dist/src/authoritativeMarkupInjection-D9O70HPi.js +74 -0
  40. package/dist/src/authoritativeMarkupInjection-PxSf3Rh8.js +74 -0
  41. package/dist/src/{base-dYsl2hmL.js → base-0Gzzue9Z.js} +4 -3
  42. package/dist/src/{base-BOMaNEes.js → base-Bp4c52YZ.js} +4 -3
  43. package/dist/src/{base-BTux96b1.js → base-BuNn-YBX.js} +4 -3
  44. package/dist/src/{base-Tw6uhH8K.cjs → base-BzdS8tod.cjs} +5 -4
  45. package/dist/src/bestOfN-BHiOjeaq.js +136 -0
  46. package/dist/src/bestOfN-CdkNPPbX.js +136 -0
  47. package/dist/src/bestOfN-ClUSOhN0.js +137 -0
  48. package/dist/src/bestOfN-DWwXEg1h.cjs +140 -0
  49. package/dist/src/{blobs-B95F_7vE.cjs → blobs-B0977K1O.cjs} +7 -6
  50. package/dist/src/{blobs-D_gg8nbm.js → blobs-CeFdPn_T.js} +2 -2
  51. package/dist/src/{blobs-DjLby-uP.js → blobs-DODuTK-a.js} +2 -2
  52. package/dist/src/{blobs-BW4U31ue.js → blobs-Dwef1Ao1.js} +2 -2
  53. package/dist/src/cache-BKYi3kAA.js +3 -0
  54. package/dist/src/{cache-BI5BY7ey.js → cache-BR77mdIR.js} +127 -11
  55. package/dist/src/{cache-Cr-qWIbP.js → cache-CrioYnaa.js} +125 -10
  56. package/dist/src/{cache-Bzttsk0X.js → cache-DdriHsNX.js} +125 -10
  57. package/dist/src/{cache-DGg-yTZG.cjs → cache-h5MWOBZI.cjs} +135 -25
  58. package/dist/src/{chat-Cx_LkwvZ.js → chat-BBEnnpQk.js} +11 -11
  59. package/dist/src/{chat-DChSH_Es.js → chat-BSos6PvZ.js} +9 -9
  60. package/dist/src/{chat-aMQZw6R7.js → chat-Bnt7ieO0.js} +4 -4
  61. package/dist/src/{chat-vYqqv1gP.cjs → chat-DSyYuTYT.cjs} +14 -13
  62. package/dist/src/{chat-BLOdH60v.js → chat-DTdf-J5Q.js} +11 -11
  63. package/dist/src/{chat-DH97tVV9.cjs → chat-Dq3DomYU.cjs} +6 -6
  64. package/dist/src/{chat-DG2LkwLq.js → chat-g5QLeLOo.js} +4 -4
  65. package/dist/src/{chat-D9nudO9b.js → chat-mTTuUAYb.js} +4 -4
  66. package/dist/src/{chatkit-B8X34dQc.js → chatkit-B6DWi70Q.js} +3 -3
  67. package/dist/src/{chatkit-D44VyUyB.cjs → chatkit-BYveR48_.cjs} +6 -5
  68. package/dist/src/{chatkit-BXu42Qwt.js → chatkit-fARZwEfV.js} +3 -3
  69. package/dist/src/{chatkit-CbMRoeYw.js → chatkit-lb6FK02w.js} +1 -1
  70. package/dist/src/{claude-agent-sdk-DYv_AJ8u.js → claude-agent-sdk-BGUac_kS.js} +213 -66
  71. package/dist/src/{claude-agent-sdk-BjriSVRZ.js → claude-agent-sdk-BP__YGfK.js} +213 -66
  72. package/dist/src/{claude-agent-sdk-BzNZeZ0N.js → claude-agent-sdk-Ddgx5BIQ.js} +212 -65
  73. package/dist/src/{claude-agent-sdk-BRq0bbIK.cjs → claude-agent-sdk-n2XcEclh.cjs} +219 -71
  74. package/dist/src/cloud-DiWbUiVP.js +3 -0
  75. package/dist/src/{cloud-Da0bofJd.js → cloud-DqF5N1aJ.js} +2 -2
  76. package/dist/src/{cloudflare-ai-CXC4b1EU.js → cloudflare-ai-BGamMotN.js} +4 -4
  77. package/dist/src/{cloudflare-ai-DGOwgexC.js → cloudflare-ai-BwW8W-w7.js} +4 -4
  78. package/dist/src/{cloudflare-ai-DJv5qnyb.cjs → cloudflare-ai-DCRGnsyL.cjs} +6 -6
  79. package/dist/src/{cloudflare-ai-CyBoIs1Q.js → cloudflare-ai-sD26nP6V.js} +4 -4
  80. package/dist/src/{cloudflare-gateway-TJkVrZlB.js → cloudflare-gateway-2lnOT4qM.js} +3 -3
  81. package/dist/src/{cloudflare-gateway-D-dnkzCF.js → cloudflare-gateway-B1-8KNCt.js} +3 -3
  82. package/dist/src/{cloudflare-gateway-DKVjkDav.cjs → cloudflare-gateway-CCC1DFrC.cjs} +5 -5
  83. package/dist/src/{cloudflare-gateway-1sAoOyft.js → cloudflare-gateway-DOghiU6r.js} +3 -3
  84. package/dist/src/{codex-app-server-CCLjqCh9.js → codex-app-server-BWeWamEb.js} +19 -4
  85. package/dist/src/{codex-app-server-CCe0TiDc.js → codex-app-server-DyQB1P0p.js} +20 -5
  86. package/dist/src/{codex-app-server-VMRnjZ68.cjs → codex-app-server-R9u_G7W9.cjs} +27 -11
  87. package/dist/src/{codex-app-server-CPW1LFwh.js → codex-app-server-ZQRJSJjU.js} +20 -5
  88. package/dist/src/{codex-sdk-Bzb_TqX9.js → codex-sdk-B62H0fe7.js} +16 -5
  89. package/dist/src/{codex-sdk-Bd8UbO9q.cjs → codex-sdk-BRPUvJG8.cjs} +31 -12
  90. package/dist/src/{codex-sdk-BgEFQ70r.js → codex-sdk-Dio1zJBS.js} +18 -7
  91. package/dist/src/codex-sdk-DxukZs_K.js +3 -0
  92. package/dist/src/{codex-sdk-DfvDTN33.js → codex-sdk-iEmW1eS2.js} +18 -7
  93. package/dist/src/{cometapi-B5ImDlSm.js → cometapi--hh7dESS.js} +7 -7
  94. package/dist/src/{cometapi-CC7hWxmX.js → cometapi-C7yWNGqt.js} +7 -7
  95. package/dist/src/{cometapi-CCbpHkuF.js → cometapi-CSIi16a0.js} +7 -7
  96. package/dist/src/{cometapi-BgAkuYCw.cjs → cometapi-sZgBZtbU.cjs} +8 -8
  97. package/dist/src/{completion-DtQ72Bm3.cjs → completion-CWtqdn3z.cjs} +6 -6
  98. package/dist/src/{completion-Vq_ad618.js → completion-DT8cxo9T.js} +4 -4
  99. package/dist/src/{completion-2iuYVxwi.js → completion-DUScduXp.js} +5 -5
  100. package/dist/src/{completion-CrD6MQ93.js → completion-D_2IOAoS.js} +5 -5
  101. package/dist/src/constants-BjJV0cRr.js +6 -0
  102. package/dist/src/constants-DH5XYLKZ.js +7 -0
  103. package/dist/src/constants-DZGEFLsu.js +6 -0
  104. package/dist/src/constants-a2kYssQk.cjs +11 -0
  105. package/dist/src/{createHash-4gFQpDDv.js → createHash-BtbSX3mj.js} +1 -1
  106. package/dist/src/{createHash-Un4Q_huE.js → createHash-CGVzWdjj.js} +1 -1
  107. package/dist/src/{createHash-VvBIc-AW.cjs → createHash-CSiqnK5P.cjs} +2 -2
  108. package/dist/src/{createHash-DPpsZgFF.js → createHash-CgRvs4Fn.js} +1 -1
  109. package/dist/src/crescendo-B41TwUHM.js +722 -0
  110. package/dist/src/crescendo-Bfic7KC4.js +724 -0
  111. package/dist/src/crescendo-DXFB7rHP.cjs +725 -0
  112. package/dist/src/crescendo-DvvYxMLA.js +723 -0
  113. package/dist/src/custom-BdzuqFTN.js +619 -0
  114. package/dist/src/custom-Cf5Q6r-P.js +618 -0
  115. package/dist/src/custom-DLgufezC.js +620 -0
  116. package/dist/src/custom-LEXHCRe3.cjs +621 -0
  117. package/dist/src/{docker--3qzPa-6.js → docker-BOSO_6hK.js} +5 -5
  118. package/dist/src/{docker-D3AY-5F5.cjs → docker-D0h2vFrc.cjs} +6 -6
  119. package/dist/src/{docker-DCsCDvwM.js → docker-D2TWGyTP.js} +5 -5
  120. package/dist/src/{docker-Dorv4_Dg.js → docker-Vj_4_cPg.js} +5 -5
  121. package/dist/src/{embedding-BXhN5lCH.cjs → embedding-BQIApR18.cjs} +6 -6
  122. package/dist/src/{embedding-ChS1ivFS.js → embedding-CStK0TV6.js} +5 -5
  123. package/dist/src/{embedding-DNRvZwRN.js → embedding-CU78FMnw.js} +5 -5
  124. package/dist/src/{embedding-D_bI4NDq.js → embedding-CV8lmCnU.js} +4 -4
  125. package/dist/src/{errors-DFHe4L-n.js → errors-9PcUL8BC.js} +1 -1
  126. package/dist/src/{esm-B_rGuPTo.cjs → esm-BIKakvNa.cjs} +8 -7
  127. package/dist/src/{esm-BRkfNsYs.js → esm-BTK1W7lG.js} +1 -1
  128. package/dist/src/{esm-BX8fwlAO.js → esm-Bexx2PFc.js} +1 -1
  129. package/dist/src/{eval-DJ_4A-tr.js → eval-B3BaNBbO.js} +19 -19
  130. package/dist/src/{eval-BQPLBJbw.js → eval-DfR9885C.js} +1 -1
  131. package/dist/src/evalResult-BtZSUgQv.js +3 -0
  132. package/dist/src/{evalResult-D6P5I5il.js → evalResult-CcSqNl_Y.js} +17 -10
  133. package/dist/src/{evalResult-Cx-8OWkb.cjs → evalResult-DHXs-9TL.cjs} +29 -11
  134. package/dist/src/{evalResult-pSvGWFMo.js → evalResult-PGqEbasb.js} +18 -11
  135. package/dist/src/evaluator-B9LGbKI8.js +3 -0
  136. package/dist/src/{evaluator-D-UIbbYq.js → evaluator-n_dEb00o.js} +258 -132
  137. package/dist/src/evaluatorHelpers-CrRObe2z.js +510 -0
  138. package/dist/src/evaluatorHelpers-D06I9WFL.cjs +537 -0
  139. package/dist/src/evaluatorHelpers-D1_kwvyp.js +511 -0
  140. package/dist/src/{extractor-DxyiFhPk.js → extractor-BVkZtk4R.js} +5 -5
  141. package/dist/src/{extractor-BM3jRERL.js → extractor-D3Fv_Tdh.js} +5 -5
  142. package/dist/src/{extractor-YlZbUMsL.js → extractor-Jp53vs-6.js} +5 -5
  143. package/dist/src/{extractor-Dxr2J_wK.cjs → extractor-bV_NOoaz.cjs} +6 -6
  144. package/dist/src/{fetch-Y5qX_kST.js → fetch-BSSAcMxf.js} +90 -26
  145. package/dist/src/fetch-BodQTrMU.js +3 -0
  146. package/dist/src/{fetch-NuqXW1Xb.cjs → fetch-Cfm4EuOB.cjs} +115 -32
  147. package/dist/src/{fetch-B6ch2nU2.js → fetch-Cpf1U1nO.js} +86 -26
  148. package/dist/src/{fetch-D9xxyC1p.js → fetch-Doks14zQ.js} +90 -26
  149. package/dist/src/{fileExtensions-D9h-8Wxg.cjs → fileExtensions-BhdwzYaD.cjs} +24 -1
  150. package/dist/src/{fileExtensions-BGh-W-HT.js → fileExtensions-CXRfY3Ss.js} +12 -2
  151. package/dist/src/{fileExtensions-DysCsxNG.js → fileExtensions-D4GCJ67J.js} +12 -2
  152. package/dist/src/{formatDuration-Ch4A7G3o.js → formatDuration-CMVNrYvE.js} +1 -1
  153. package/dist/src/{genaiTracer-BokHC-MW.cjs → genaiTracer-14nugQQx.cjs} +14 -2
  154. package/dist/src/{genaiTracer-C3ZPQU60.js → genaiTracer-BPVvltoW.js} +2 -2
  155. package/dist/src/{genaiTracer-DxODqT9e.js → genaiTracer-D18lYzhB.js} +2 -2
  156. package/dist/src/{genaiTracer-CFny3gOy.js → genaiTracer-jJKYsnjc.js} +2 -2
  157. package/dist/src/goat-Ba7Gznzq.js +467 -0
  158. package/dist/src/goat-CJngS-WU.js +468 -0
  159. package/dist/src/goat-CwsbfQeu.js +466 -0
  160. package/dist/src/goat-DOMbozoX.cjs +470 -0
  161. package/dist/src/graders-B3D7kCcD.js +3 -0
  162. package/dist/src/{graders-CgPn32yp.js → graders-BQt1BaQe.js} +1019 -86
  163. package/dist/src/{graders-Bw1wk_21.cjs → graders-CBQ2s6gz.cjs} +1087 -130
  164. package/dist/src/{graders-CwrbifOo.js → graders-DaRU98zs.js} +1022 -84
  165. package/dist/src/{graders-BoUqsCEm.js → graders-KXzjnIim.js} +1024 -86
  166. package/dist/src/hydra-BU6GjYoQ.js +560 -0
  167. package/dist/src/hydra-BmXHxlyl.js +559 -0
  168. package/dist/src/hydra-CR0KyYDb.js +561 -0
  169. package/dist/src/hydra-RO9jBks7.cjs +560 -0
  170. package/dist/src/{image-BeWaInPF.js → image-BBmZdKO3.js} +3 -3
  171. package/dist/src/{image-qjO6FWPs.js → image-B_PFG7IG.js} +3 -3
  172. package/dist/src/image-BtODOZjh.js +442 -0
  173. package/dist/src/image-CYuNJIqd.js +442 -0
  174. package/dist/src/{image-D10dNAav.cjs → image-E00WFZkq.cjs} +4 -4
  175. package/dist/src/image-HK2Cfqb1.cjs +465 -0
  176. package/dist/src/{image-Dr_3I3nK.js → image-LGj8dTcr.js} +3 -3
  177. package/dist/src/image-YMKejC0r.js +443 -0
  178. package/dist/src/index.cjs +711 -339
  179. package/dist/src/index.d.cts +3159 -1611
  180. package/dist/src/index.d.ts +3158 -1610
  181. package/dist/src/index.js +605 -249
  182. package/dist/src/indirectWebPwn-B80dLlFC.js +260 -0
  183. package/dist/src/indirectWebPwn-BMTXXznx.js +386 -0
  184. package/dist/src/indirectWebPwn-BZFPV7Q9.js +385 -0
  185. package/dist/src/indirectWebPwn-BaEQEOIO.cjs +260 -0
  186. package/dist/src/indirectWebPwn-BzpyMnFS.js +259 -0
  187. package/dist/src/indirectWebPwn-CiWB-vVH.js +385 -0
  188. package/dist/src/indirectWebPwn-D7NA9Nsv.cjs +397 -0
  189. package/dist/src/indirectWebPwn-o_bEFMjP.js +259 -0
  190. package/dist/src/inputVariables-B0qUChbV.js +467 -0
  191. package/dist/src/inputVariables-DUGMb9Ka.js +464 -0
  192. package/dist/src/inputVariables-DXFdi7AI.js +468 -0
  193. package/dist/src/inputVariables-Dq9W-Z3a.cjs +475 -0
  194. package/dist/src/{interactiveCheck-CCICw2cy.js → interactiveCheck-C4QlIuoR.js} +1 -1
  195. package/dist/src/{invariant-kfQ8Bu82.cjs → invariant-QtnLD03y.cjs} +1 -1
  196. package/dist/src/iterative-B-l0syBV.js +501 -0
  197. package/dist/src/iterative-BACUeCCz.cjs +503 -0
  198. package/dist/src/iterative-CVwoExo8.js +502 -0
  199. package/dist/src/iterative-QDrGSyss.js +500 -0
  200. package/dist/src/iterativeImage-BQg2OwA6.js +413 -0
  201. package/dist/src/iterativeImage-Bwn0fM75.js +413 -0
  202. package/dist/src/iterativeImage-CcgVyASo.cjs +415 -0
  203. package/dist/src/iterativeImage-D_UbQXg4.js +414 -0
  204. package/dist/src/iterativeMeta-CIu-CHRS.js +405 -0
  205. package/dist/src/iterativeMeta-CN8CNjFA.js +406 -0
  206. package/dist/src/iterativeMeta-DN6BTjpq.js +404 -0
  207. package/dist/src/iterativeMeta-DlqY3BsS.cjs +405 -0
  208. package/dist/src/iterativeTree-CJ8a8G9T.js +820 -0
  209. package/dist/src/iterativeTree-DcuFXnjL.js +819 -0
  210. package/dist/src/iterativeTree-FrDDYAN0.js +818 -0
  211. package/dist/src/iterativeTree-LOgAi0nU.cjs +821 -0
  212. package/dist/src/{knowledgeBase-C8qOo26M.cjs → knowledgeBase-CdbcGBZF.cjs} +25 -11
  213. package/dist/src/{knowledgeBase-BBETc5-S.js → knowledgeBase-CjOXp6Lr.js} +23 -9
  214. package/dist/src/{knowledgeBase-Dr3Kib7F.js → knowledgeBase-DxAq4n4z.js} +24 -10
  215. package/dist/src/{knowledgeBase-CzAi2rUI.js → knowledgeBase-o_wTLzrt.js} +24 -10
  216. package/dist/src/{litellm-DRc4qWfc.js → litellm-B2gHwya_.js} +4 -4
  217. package/dist/src/{litellm-CaUmV7Mk.cjs → litellm-CPpdlO7n.cjs} +5 -5
  218. package/dist/src/{litellm-BLSiANhk.js → litellm-CYfgxLrM.js} +4 -4
  219. package/dist/src/{litellm-DQGo_juI.js → litellm-ojWBKU3C.js} +4 -4
  220. package/dist/src/{logger-COuQb2xB.cjs → logger-cfNpzI4o.cjs} +13 -55
  221. package/dist/src/{luma-ray-if-Ml4R9.cjs → luma-ray-BCCO9XXG.cjs} +9 -8
  222. package/dist/src/{luma-ray-B-tNZzqW.js → luma-ray-BPrdihAb.js} +5 -5
  223. package/dist/src/{luma-ray-CtS3OlGq.js → luma-ray-DP5N79lB.js} +5 -5
  224. package/dist/src/{luma-ray-PJJgUjOc.js → luma-ray-DTDyoAlM.js} +5 -5
  225. package/dist/src/main.js +727 -234
  226. package/dist/src/memoryPoisoning-B6N3us35.cjs +106 -0
  227. package/dist/src/memoryPoisoning-Bc_BK_k2.js +106 -0
  228. package/dist/src/memoryPoisoning-D375zwSX.js +107 -0
  229. package/dist/src/memoryPoisoning-DJA0YjJT.js +106 -0
  230. package/dist/src/{messages-CewuNcNS.js → messages-Bg29Nbit.js} +17 -9
  231. package/dist/src/{messages-BnsVHUnm.cjs → messages-BrZEnHsV.cjs} +24 -15
  232. package/dist/src/{messages-CI69Lasb.js → messages-CBulRaud.js} +18 -10
  233. package/dist/src/{messages-B9dSjrNf.js → messages-K9A8RxBM.js} +18 -10
  234. package/dist/src/{meteor-CeGo0Lu2.js → meteor--TZYICTI.js} +1 -1
  235. package/dist/src/{meteor-BBGcGeCa.cjs → meteor-CR226f7Z.cjs} +2 -2
  236. package/dist/src/{meteor-Wc_aUVvu.js → meteor-Cl_yd7rJ.js} +1 -1
  237. package/dist/src/{meteor-BKTM-7KS.js → meteor-Dce-_zGQ.js} +1 -1
  238. package/dist/src/mischievousUser-BDLwSGN0.js +46 -0
  239. package/dist/src/mischievousUser-Blx-OtT3.js +47 -0
  240. package/dist/src/mischievousUser-CHuTTvBg.js +46 -0
  241. package/dist/src/mischievousUser-CSUrH3fq.cjs +46 -0
  242. package/dist/src/{modelslab-zpz9JcK0.js → modelslab-BjEk7yCP.js} +6 -6
  243. package/dist/src/{modelslab-BCLOtfek.js → modelslab-CBCrdIBc.js} +6 -6
  244. package/dist/src/{modelslab-D73OnKSx.js → modelslab-CrGpXuhv.js} +6 -6
  245. package/dist/src/{modelslab-BkapYJhh.cjs → modelslab-Cvh0klQx.cjs} +7 -7
  246. package/dist/src/{nova-reel-B8F_TK5w.js → nova-reel-CUDDZcSA.js} +5 -5
  247. package/dist/src/{nova-reel-Bx0NFV2f.js → nova-reel-CyDESu5J.js} +5 -5
  248. package/dist/src/{nova-reel-DkT7tnoB.cjs → nova-reel-DH_Ksu6X.cjs} +9 -8
  249. package/dist/src/{nova-reel-CNGJTLtG.js → nova-reel-YQAqUYJY.js} +5 -5
  250. package/dist/src/{nova-sonic-BeTRaFOh.js → nova-sonic-BVFFB7JZ.js} +2 -2
  251. package/dist/src/{nova-sonic-YT426juD.cjs → nova-sonic-Bg3cxMMu.cjs} +5 -4
  252. package/dist/src/{nova-sonic-CL7Zqv0G.js → nova-sonic-BhmnRGyh.js} +3 -3
  253. package/dist/src/{nova-sonic-BaXRN1cr.js → nova-sonic-DxmK95c1.js} +3 -3
  254. package/dist/src/{openai-Cy1XLs0c.cjs → openai-C3uXv8wS.cjs} +2 -2
  255. package/dist/src/{openai-BT-JvDse.js → openai-CJrsh9n4.js} +1 -1
  256. package/dist/src/{openai-D4fxGvRx.js → openai-zgwBb4Ff.js} +1 -1
  257. package/dist/src/{openclaw-DUBZP3GL.cjs → openclaw-CHQaZi_-.cjs} +17 -15
  258. package/dist/src/{openclaw-DA8U4DsD.js → openclaw-CWOm2eOr.js} +9 -8
  259. package/dist/src/{openclaw-DObVgpjC.js → openclaw-Cdk9JKfY.js} +9 -8
  260. package/dist/src/{openclaw-Bq7RVR3k.js → openclaw-DhF8rUpI.js} +9 -8
  261. package/dist/src/{opencode-sdk-BB40Wir1.js → opencode-sdk-BRjiPV-g.js} +38 -3
  262. package/dist/src/{opencode-sdk-CeqiOcOU.cjs → opencode-sdk-CPFMw0ed.cjs} +45 -9
  263. package/dist/src/{opencode-sdk-BM1UAIv1.js → opencode-sdk-CaSOCsBA.js} +39 -4
  264. package/dist/src/{opencode-sdk-ChdK7F7z.js → opencode-sdk-CqkyG8De.js} +39 -4
  265. package/dist/src/{otlpReceiver-UYMQx3sy.js → otlpReceiver--gTpSagc.js} +119 -3
  266. package/dist/src/{otlpReceiver-C6thJRXi.js → otlpReceiver-B2eaKC8C.js} +118 -2
  267. package/dist/src/{otlpReceiver-CcdIikOu.js → otlpReceiver-BXjcRqAM.js} +119 -3
  268. package/dist/src/{otlpReceiver-DNSQj6bf.cjs → otlpReceiver-CvJdBGSc.cjs} +125 -7
  269. package/dist/src/packageParser--MWTSrPW.js +36 -0
  270. package/dist/src/packageParser-CgE-ziRo.js +35 -0
  271. package/dist/src/packageParser-QoCS1FMl.cjs +54 -0
  272. package/dist/src/packageParser-hwwSGnAZ.js +35 -0
  273. package/dist/src/processShim-BBxt7LKO.js +95 -0
  274. package/dist/src/processShim-BcGzU8fY.js +94 -0
  275. package/dist/src/processShim-C_z3aRvF.js +94 -0
  276. package/dist/src/processShim-DSY9BV2T.cjs +98 -0
  277. package/dist/src/promptLength-0qIHyhA5.js +71 -0
  278. package/dist/src/promptLength-4X-Wd8PG.js +72 -0
  279. package/dist/src/promptLength-B9nZEfO6.js +71 -0
  280. package/dist/src/promptLength-BbBbDHNj.cjs +94 -0
  281. package/dist/src/promptfoo-BU4_0J85.js +238 -0
  282. package/dist/src/promptfoo-CReYAtfb.js +237 -0
  283. package/dist/src/promptfoo-ClChwT74.cjs +292 -0
  284. package/dist/src/promptfoo-CqEpj6Sr.js +237 -0
  285. package/dist/src/prompts-BYMtqPCw.js +259 -0
  286. package/dist/src/prompts-C-bqE1Yp.js +260 -0
  287. package/dist/src/prompts-Cp_Qx5Ml.js +270 -0
  288. package/dist/src/prompts-DHhQsANy.js +259 -0
  289. package/dist/src/prompts-D_QpZ2Dm.js +271 -0
  290. package/dist/src/prompts-hNvWBD3z.cjs +284 -0
  291. package/dist/src/prompts-huDVH2CI.js +270 -0
  292. package/dist/src/prompts-p78Hul5i.cjs +289 -0
  293. package/dist/src/{providerRegistry-BESeALrr.cjs → providerRegistry-CZO_w7ue.cjs} +2 -2
  294. package/dist/src/{providerRegistry-DoACwqhD.js → providerRegistry-DHcFiVWX.js} +1 -1
  295. package/dist/src/{providerRegistry-PMsleEzs.js → providerRegistry-ReCd0sFa.js} +1 -1
  296. package/dist/src/{providers-DT-GtF2t.js → providers-B7TyByfj.js} +789 -11925
  297. package/dist/src/{providers-CJh7iriU.js → providers-BGc7tDtQ.js} +796 -11872
  298. package/dist/src/{providers-Ctcc592x.js → providers-CSOp-bCm.js} +1 -1
  299. package/dist/src/{providers-eDShy16E.cjs → providers-V6RBuieY.cjs} +837 -12138
  300. package/dist/src/{providers-DRrerKra.js → providers-iH3Sw1yo.js} +851 -11938
  301. package/dist/src/{pythonUtils-C4tltmIn.js → pythonUtils-CLCgQ9tt.js} +1 -1
  302. package/dist/src/{pythonUtils-DNqbnRdx.js → pythonUtils-CgYxeSmO.js} +2 -2
  303. package/dist/src/{pythonUtils-CoLaCwNY.cjs → pythonUtils-Cokhluq3.cjs} +7 -6
  304. package/dist/src/{pythonUtils-DMO68Jg7.js → pythonUtils-D0BYebvX.js} +2 -2
  305. package/dist/src/{quiverai-CPKhWgaT.js → quiverai-58BtRRet.js} +3 -3
  306. package/dist/src/{quiverai-Bk1KrvL6.js → quiverai-C1dYu5MW.js} +3 -3
  307. package/dist/src/{quiverai-BSS9a7wV.js → quiverai-CNMIpZQg.js} +3 -3
  308. package/dist/src/{quiverai-Bpx6MZ7T.cjs → quiverai-fmSfU43k.cjs} +4 -4
  309. package/dist/src/registry-6Jw6ebor.cjs +124 -0
  310. package/dist/src/registry-BTGk2ZkB.js +124 -0
  311. package/dist/src/registry-BTNqmP5o.js +125 -0
  312. package/dist/src/registry-NGnOG2xa.js +124 -0
  313. package/dist/src/{server-gyd6d4Hc.js → remoteGeneration--D6WjzUm.js} +15 -108
  314. package/dist/src/{server-BEECpeGG.cjs → remoteGeneration-BpIYlb_O.cjs} +30 -119
  315. package/dist/src/{server-ByxbqAcQ.js → remoteGeneration-CJC3E0aW.js} +15 -147
  316. package/dist/src/remoteGeneration-D6UjE2JT.js +218 -0
  317. package/dist/src/render-BNTrbmBw.cjs +384 -0
  318. package/dist/src/render-CSP99NLm.js +348 -0
  319. package/dist/src/render-DFfDeYUK.js +347 -0
  320. package/dist/src/{render-nj-UaPdn.js → render-DznWrxGO.js} +2 -2
  321. package/dist/src/render-_6ur1fhE.js +347 -0
  322. package/dist/src/resourceAttributes-D1jP3kL5.js +17 -0
  323. package/dist/src/resourceAttributes-DQbBB--2.js +16 -0
  324. package/dist/src/resourceAttributes-ephgOvdR.cjs +27 -0
  325. package/dist/src/resourceAttributes-v6-I67fn.js +16 -0
  326. package/dist/src/{responses-1ztiVYsx.js → responses-5Gf5HNOi.js} +11 -7
  327. package/dist/src/{responses-BiaBguAu.js → responses-BVi7xIdv.js} +13 -9
  328. package/dist/src/{responses-CF-ayauu.cjs → responses-CUARGrhY.cjs} +16 -11
  329. package/dist/src/{responses-B8haB-mD.js → responses-CrmWv6iz.js} +13 -9
  330. package/dist/src/rolldown-runtime-D_mwlA32.cjs +43 -0
  331. package/dist/src/rubyUtils-BYVlQ94c.js +3 -0
  332. package/dist/src/{rubyUtils-CIQFnVz4.js → rubyUtils-CXlFM2rR.js} +2 -2
  333. package/dist/src/{rubyUtils-BI0p46eZ.js → rubyUtils-CnlW8AYb.js} +2 -2
  334. package/dist/src/{rubyUtils-DoifqkiA.cjs → rubyUtils-CqUWBZAt.cjs} +16 -26
  335. package/dist/src/{rubyUtils-DGnoCYL2.js → rubyUtils-DdGojpfv.js} +1 -1
  336. package/dist/src/runtimeTransform-BJOpL9Yc.js +142 -0
  337. package/dist/src/runtimeTransform-Dgh_D7DU.js +143 -0
  338. package/dist/src/runtimeTransform-DigbjU1r.js +142 -0
  339. package/dist/src/runtimeTransform-ON3YYILw.cjs +147 -0
  340. package/dist/src/{sagemaker-ljtY12VM.cjs → sagemaker-BeVTKfrv.cjs} +65 -53
  341. package/dist/src/{sagemaker-BDLeW29y.js → sagemaker-BwbV5U7_.js} +61 -50
  342. package/dist/src/{sagemaker-C5T60MKf.js → sagemaker-ClAZ6Qwc.js} +61 -50
  343. package/dist/src/{sagemaker-ClS_NB07.js → sagemaker-DY2qrOpq.js} +61 -50
  344. package/dist/src/{scanner-nOCWNIXa.js → scanner-BS-iFIp3.js} +6 -6
  345. package/dist/src/server/index.js +4115 -420
  346. package/dist/src/server-BHOEL8p8.cjs +126 -0
  347. package/dist/src/server-CbiJppij.js +107 -0
  348. package/dist/src/server-D18AAlAc.js +3 -0
  349. package/dist/src/server-DLYjSFm2.js +182 -0
  350. package/dist/src/server-JQYD_Nws.js +146 -0
  351. package/dist/src/{fileExtensions-8CjoL7vB.js → shared-BoG7qLMv.js} +12 -2
  352. package/dist/src/shared-CRq0gGVf.js +1334 -0
  353. package/dist/src/shared-CSIGeGLl.js +1334 -0
  354. package/dist/src/shared-DNvim54U.js +1335 -0
  355. package/dist/src/shared-aHWko3P1.cjs +1436 -0
  356. package/dist/src/{signal-DTtUuU3l.js → signal-CSurUUyV.js} +2 -2
  357. package/dist/src/simulatedUser-C7sOFSF6.js +222 -0
  358. package/dist/src/simulatedUser-DH_7RzEQ.js +222 -0
  359. package/dist/src/simulatedUser-lgMMmniD.js +223 -0
  360. package/dist/src/simulatedUser-mnCUS9Bm.cjs +227 -0
  361. package/dist/src/{slack-Bamy_7te.js → slack-Bapo-7_8.js} +1 -1
  362. package/dist/src/{slack-BLlsDpfG.cjs → slack-DMC1QVEg.cjs} +3 -2
  363. package/dist/src/{slack-BPYLQLgb.js → slack-DTEFhrMn.js} +1 -1
  364. package/dist/src/{slack-4zZX1OKP.js → slack-k-_CP84Q.js} +1 -1
  365. package/dist/src/storage-95htjpLs.js +834 -0
  366. package/dist/src/storage-A4WnAeN3.cjs +911 -0
  367. package/dist/src/storage-B2Ql_oq4.js +822 -0
  368. package/dist/src/storage-EKVWZBNY.js +875 -0
  369. package/dist/src/{store-2K0kDi80.cjs → store-B2NDDooM.cjs} +60 -24
  370. package/dist/src/{store-CPh25336.js → store-DKd5592Q.js} +50 -19
  371. package/dist/src/{store-BPkzEyFM.js → store-HpopRVzl.js} +50 -19
  372. package/dist/src/store-IbiRIF3k.js +3 -0
  373. package/dist/src/strategies-CBI1brSy.js +2333 -0
  374. package/dist/src/strategies-CCcnEbFO.cjs +2360 -0
  375. package/dist/src/strategies-CD1gHeeQ.js +2331 -0
  376. package/dist/src/{tables-WgdUZ8Ck.js → tables-CRSXQ2Ke.js} +2 -2
  377. package/dist/src/{tables-BMSOS2Gg.js → tables-CxjU7bBd.js} +2 -2
  378. package/dist/src/{tables-CXbaZ9y1.cjs → tables-DBIJU0WE.cjs} +6 -5
  379. package/dist/src/{tables-NlvH23ky.js → tables-DafUHOeh.js} +2 -2
  380. package/dist/src/telemetry-BUm_krVX.js +3 -0
  381. package/dist/src/{telemetry--iqaGyaS.js → telemetry-BbpmrenM.js} +4 -4
  382. package/dist/src/{telemetry-CgdVGV8N.js → telemetry-C4bX-6Sr.js} +4 -4
  383. package/dist/src/{telemetry-CEQxGnMZ.cjs → telemetry-C_ImlCOk.cjs} +15 -9
  384. package/dist/src/{telemetry-DWdGHvEf.js → telemetry-DOE567Wj.js} +4 -4
  385. package/dist/src/{text-DDQP0tuQ.js → text-CZr46tp_.js} +1 -1
  386. package/dist/src/{text-D4lz-Jg_.js → text-Db-Wt2u2.js} +1 -1
  387. package/dist/src/{text-NWvfMfkF.js → text-DwYK5EBn.js} +1 -1
  388. package/dist/src/{text-BiNME7QG.cjs → text-nywWsRBM.cjs} +1 -1
  389. package/dist/src/{tokenUsageUtils-2wIvAhB3.js → tokenUsageUtils-CDet74yk.js} +1 -1
  390. package/dist/src/{tokenUsageUtils-4c780gFd.js → tokenUsageUtils-CmnQ0G2m.js} +1 -1
  391. package/dist/src/{tokenUsageUtils-C9odhsbW.cjs → tokenUsageUtils-_B-P8IAi.cjs} +1 -1
  392. package/dist/src/toolAttributes-BAjwcBf0.cjs +103 -0
  393. package/dist/src/toolAttributes-COVgDrBG.js +87 -0
  394. package/dist/src/toolAttributes-DJ9ZEKXD.js +86 -0
  395. package/dist/src/tracingOptions-BOP1FsRt.js +220 -0
  396. package/dist/src/tracingOptions-BvmDa_jH.js +219 -0
  397. package/dist/src/tracingOptions-DFBoE8O0.cjs +249 -0
  398. package/dist/src/tracingOptions-xhjOg2b1.js +221 -0
  399. package/dist/src/{transcription-D7Q0vJsh.js → transcription-BOXDoehT.js} +4 -4
  400. package/dist/src/{transcription-Bm2emLmJ.js → transcription-CpVdKc4P.js} +5 -5
  401. package/dist/src/{transcription-CZ4LG5hQ.cjs → transcription-D8kkPXg_.cjs} +9 -8
  402. package/dist/src/{transcription-84t4ALo2.js → transcription-Z94eV9LR.js} +5 -5
  403. package/dist/src/transform-BnSTnFlp.js +187 -0
  404. package/dist/src/transform-BnSXWmU_2.cjs +221 -0
  405. package/dist/src/{transform-DtooZqYY.js → transform-BufxPIQL.js} +8 -8
  406. package/dist/src/transform-CGt7Kt3y2.js +186 -0
  407. package/dist/src/transform-CrPGTsij.js +186 -0
  408. package/dist/src/{transform-Dg4LcO1Y.cjs → transform-DJkt81VY.cjs} +12 -11
  409. package/dist/src/{transform-B-b6Cq-q.js → transform-DtTfiGoh.js} +8 -8
  410. package/dist/src/{transform-_DpNB4qp.js → transform-Wp6s_5QE.js} +8 -8
  411. package/dist/src/{transformersAvailability-lvCCvuPT.js → transformersAvailability-0ThtPved.js} +1 -1
  412. package/dist/src/transformersAvailability-BYydDE5U.js +35 -0
  413. package/dist/src/{transformersAvailability-rJGPccjr.js → transformersAvailability-BvyU9vDD.js} +1 -1
  414. package/dist/src/{transformersAvailability-B22swDxr.cjs → transformersAvailability-BytPvKUW.cjs} +1 -1
  415. package/dist/src/{types-BVH9hjgW.js → types-BFevViUY.js} +113 -19
  416. package/dist/src/{types-BDjGOq4E.js → types-BJQBBPTP.js} +113 -19
  417. package/dist/src/{types-CgG2rKiW.cjs → types-CxJvaY2S.cjs} +211 -28
  418. package/dist/src/{types-DNRZVOue.js → types-D6glLbdF.js} +125 -26
  419. package/dist/src/{util-Dpmm_dAI.cjs → util-BHCAeuXx.cjs} +33 -7
  420. package/dist/src/{util-DFPeFkiV.js → util-CMrHV35u.js} +28 -8
  421. package/dist/src/{util-DvpHnLt0.cjs → util-COnzevXE.cjs} +29 -21
  422. package/dist/src/{util-BlFVL0UF.js → util-CYev3d-r.js} +22 -7
  423. package/dist/src/util-DGqkTb2-.js +327 -0
  424. package/dist/src/util-DNtUsus_.cjs +386 -0
  425. package/dist/src/{util-Dub0f_ej.js → util-DRfqa4xz.js} +17 -10
  426. package/dist/src/{util-BVXcTwXu.js → util-DTq3jq2z.js} +28 -8
  427. package/dist/src/{util-C-kmRosx.js → util-DeY58psG.js} +22 -7
  428. package/dist/src/util-DpV6KT5i.js +327 -0
  429. package/dist/src/{util-3pBZZb_H.js → util-DwNJzqOV.js} +45 -10
  430. package/dist/src/util-ETfU_sS9.js +328 -0
  431. package/dist/src/{util-A5_ZsQUn.cjs → util-NYQvo1C7.cjs} +25 -9
  432. package/dist/src/{util-DN0-b81k.js → util-X4KQgyVD.js} +28 -8
  433. package/dist/src/{util-BQOCAHQC.js → util-jZRrXe1P.js} +46 -11
  434. package/dist/src/{util-B9CNhyac.js → util-o2Qg5rZv.js} +22 -7
  435. package/dist/src/{utils-BUMN8orw.js → utils-B0lzitHZ.js} +2 -2
  436. package/dist/src/{utils-kt7lv30R.js → utils-BFOh20Gb.js} +2 -2
  437. package/dist/src/{utils-o8S5huU2.js → utils-BGY69tk_.js} +2 -2
  438. package/dist/src/{utils-DkVeShIB.cjs → utils-Ve6kuJsa.cjs} +3 -3
  439. package/dist/src/{version-CbuBKu2U.js → version-CHR-EFec.js} +2 -2
  440. package/dist/src/{version-CbpiUINz.js → version-F0YDgb7J.js} +2 -2
  441. package/dist/src/{version-D9zu9FWB.cjs → version-VzUqOBZk.cjs} +2 -2
  442. package/dist/src/{version-0frU0UTr.js → version-qVEN5qCm.js} +2 -2
  443. package/dist/tsconfig.tsbuildinfo +1 -1
  444. package/package.json +49 -23
  445. package/dist/src/app/assets/Report-vjzrbgce.js +0 -1
  446. package/dist/src/app/assets/index-B3NQ8HTd.js +0 -385
  447. package/dist/src/app/assets/index-Cli2yAXv.css +0 -1
  448. package/dist/src/app/assets/sync-IjzpWrOE.js +0 -4
  449. package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +0 -36
  450. package/dist/src/cache-BRkhlH3k.cjs +0 -3
  451. package/dist/src/cache-BlC6aeJ0.js +0 -3
  452. package/dist/src/cloud-CoD5OacT.js +0 -3
  453. package/dist/src/codex-sdk-1jm_qPHf.js +0 -3
  454. package/dist/src/codex-sdk-Danroptg.cjs +0 -2
  455. package/dist/src/evalResult-BBJAHAtw.cjs +0 -2
  456. package/dist/src/evalResult-BBK58h2B.js +0 -3
  457. package/dist/src/evalResult-spPqh1G_.js +0 -2
  458. package/dist/src/evaluator-DgLKaZk8.js +0 -3
  459. package/dist/src/fetch-8viavNv8.js +0 -3
  460. package/dist/src/graders-C84JI-m5.js +0 -2
  461. package/dist/src/graders-CBbd0K0Q.cjs +0 -2
  462. package/dist/src/graders-CbQqpHSN.js +0 -3
  463. package/dist/src/graders-DS42d3ZG.js +0 -2
  464. package/dist/src/image-BmilRNqO.js +0 -258
  465. package/dist/src/image-CxJoa3aW.cjs +0 -280
  466. package/dist/src/image-DsGRlkh7.js +0 -257
  467. package/dist/src/image-a_SGUobh.js +0 -257
  468. package/dist/src/providers-BuyzKt7C.js +0 -2
  469. package/dist/src/providers-C7lNVBjX.cjs +0 -3
  470. package/dist/src/providers-CCE2COJi2.js +0 -2
  471. package/dist/src/render-7uNJ2V14.js +0 -135
  472. package/dist/src/render-DlscvAUJ.js +0 -135
  473. package/dist/src/render-eui5p5mL.js +0 -136
  474. package/dist/src/render-tG6ir9_g.cjs +0 -165
  475. package/dist/src/rubyUtils-4hjGxvju.js +0 -3
  476. package/dist/src/rubyUtils-CO-tuszQ.cjs +0 -2
  477. package/dist/src/server-ByiF3qlg.js +0 -386
  478. package/dist/src/server-C0XKRNB_.cjs +0 -2
  479. package/dist/src/server-C_15p79-.js +0 -3
  480. package/dist/src/store-2OXm_eBY.js +0 -240
  481. package/dist/src/store-BELqNwvz.js +0 -3
  482. package/dist/src/store-uQZ4AjPe.cjs +0 -2
  483. package/dist/src/telemetry-DjNoC_n3.cjs +0 -2
  484. package/dist/src/telemetry-ZdPZc0fm.js +0 -3
  485. package/dist/src/transform-BQt0BeAW.js +0 -3
  486. package/dist/src/transform-Bq5oqC0s.cjs +0 -2
  487. package/dist/src/transform-C9izGX54.cjs +0 -228
  488. package/dist/src/transform-CwbAZ84V.js +0 -216
  489. package/dist/src/transform-DzCF-wqV.js +0 -213
  490. package/dist/src/transform-eGiUAv86.js +0 -216
@@ -0,0 +1,126 @@
1
+ const require_rolldown_runtime = require("./rolldown-runtime-D_mwlA32.cjs");
2
+ const require_logger = require("./logger-cfNpzI4o.cjs");
3
+ const require_fetch = require("./fetch-Cfm4EuOB.cjs");
4
+ const require_remoteGeneration = require("./remoteGeneration-BpIYlb_O.cjs");
5
+ let chalk = require("chalk");
6
+ chalk = require_rolldown_runtime.__toESM(chalk, 1);
7
+ require("opener");
8
+ let readline = require("readline");
9
+ readline = require_rolldown_runtime.__toESM(readline, 1);
10
+ //#region src/util/readline.ts
11
+ /**
12
+ * Factory function for creating readline interface.
13
+ * This abstraction makes it easier to mock in tests and prevents open handles.
14
+ */
15
+ function createReadlineInterface() {
16
+ return readline.default.createInterface({
17
+ input: process.stdin,
18
+ output: process.stdout
19
+ });
20
+ }
21
+ /**
22
+ * Prompts the user with a question and returns their answer.
23
+ * Automatically handles cleanup of the readline interface.
24
+ */
25
+ async function promptUser(question) {
26
+ return new Promise((resolve, reject) => {
27
+ let rl = null;
28
+ try {
29
+ rl = createReadlineInterface();
30
+ rl.on("error", (err) => {
31
+ if (rl) rl.close();
32
+ reject(err);
33
+ });
34
+ rl.question(question, (answer) => {
35
+ if (rl) rl.close();
36
+ resolve(answer);
37
+ });
38
+ } catch (err) {
39
+ if (rl) rl.close();
40
+ reject(err);
41
+ }
42
+ });
43
+ }
44
+ /**
45
+ * Prompts the user with a yes/no question and returns a boolean.
46
+ * @param question The question to ask
47
+ * @param defaultYes If true, empty response defaults to yes. If false, defaults to no.
48
+ */
49
+ async function promptYesNo(question, defaultYes = false) {
50
+ const answer = await promptUser(`${question} ${defaultYes ? "(Y/n): " : "(y/N): "}`);
51
+ if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
52
+ return answer.trim().toLowerCase().startsWith("y");
53
+ }
54
+ //#endregion
55
+ //#region src/util/server.ts
56
+ var server_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
57
+ BrowserBehavior: () => BrowserBehavior,
58
+ checkServerFeatureSupport: () => checkServerFeatureSupport
59
+ });
60
+ const BrowserBehavior = {
61
+ ASK: 0,
62
+ OPEN: 1,
63
+ SKIP: 2,
64
+ OPEN_TO_REPORT: 3,
65
+ OPEN_TO_REDTEAM_CREATE: 4,
66
+ OPEN_TO_EVAL_SETUP: 5
67
+ };
68
+ BrowserBehavior.ASK, BrowserBehavior.OPEN, BrowserBehavior.SKIP, BrowserBehavior.OPEN_TO_REPORT, BrowserBehavior.OPEN_TO_REDTEAM_CREATE, BrowserBehavior.OPEN_TO_EVAL_SETUP;
69
+ const featureCache = /* @__PURE__ */ new Map();
70
+ /**
71
+ * Checks if a server supports a specific feature based on build date
72
+ * @param featureName - Name of the feature (for caching and logging)
73
+ * @param requiredBuildDate - Minimum build date when feature was added (ISO string)
74
+ * @returns Promise<boolean> - true if server supports the feature
75
+ */
76
+ async function checkServerFeatureSupport(featureName, requiredBuildDate) {
77
+ const cacheKey = `${featureName}`;
78
+ if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
79
+ let supported = false;
80
+ try {
81
+ require_logger.logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
82
+ const versionUrl = require_remoteGeneration.getRemoteVersionUrl();
83
+ if (versionUrl) {
84
+ const data = await (await require_fetch.fetchWithProxy(versionUrl, {
85
+ method: "GET",
86
+ headers: { "Content-Type": "application/json" }
87
+ })).json();
88
+ if (data.buildDate) {
89
+ supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
90
+ require_logger.logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
91
+ } else {
92
+ require_logger.logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
93
+ supported = false;
94
+ }
95
+ } else {
96
+ require_logger.logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
97
+ supported = true;
98
+ }
99
+ } catch (error) {
100
+ require_logger.logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
101
+ supported = false;
102
+ }
103
+ featureCache.set(cacheKey, supported);
104
+ return supported;
105
+ }
106
+ //#endregion
107
+ Object.defineProperty(exports, "checkServerFeatureSupport", {
108
+ enumerable: true,
109
+ get: function() {
110
+ return checkServerFeatureSupport;
111
+ }
112
+ });
113
+ Object.defineProperty(exports, "promptYesNo", {
114
+ enumerable: true,
115
+ get: function() {
116
+ return promptYesNo;
117
+ }
118
+ });
119
+ Object.defineProperty(exports, "server_exports", {
120
+ enumerable: true,
121
+ get: function() {
122
+ return server_exports;
123
+ }
124
+ });
125
+
126
+ //# sourceMappingURL=server-BHOEL8p8.cjs.map
@@ -0,0 +1,107 @@
1
+ import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
+ import { a as logger } from "./logger-Ct2S6Yx-.js";
3
+ import { t as fetchWithProxy } from "./fetch-Doks14zQ.js";
4
+ import { o as getRemoteVersionUrl } from "./remoteGeneration-CJC3E0aW.js";
5
+ import "chalk";
6
+ import "opener";
7
+ import readline from "readline";
8
+ //#region src/util/readline.ts
9
+ /**
10
+ * Factory function for creating readline interface.
11
+ * This abstraction makes it easier to mock in tests and prevents open handles.
12
+ */
13
+ function createReadlineInterface() {
14
+ return readline.createInterface({
15
+ input: process.stdin,
16
+ output: process.stdout
17
+ });
18
+ }
19
+ /**
20
+ * Prompts the user with a question and returns their answer.
21
+ * Automatically handles cleanup of the readline interface.
22
+ */
23
+ async function promptUser(question) {
24
+ return new Promise((resolve, reject) => {
25
+ let rl = null;
26
+ try {
27
+ rl = createReadlineInterface();
28
+ rl.on("error", (err) => {
29
+ if (rl) rl.close();
30
+ reject(err);
31
+ });
32
+ rl.question(question, (answer) => {
33
+ if (rl) rl.close();
34
+ resolve(answer);
35
+ });
36
+ } catch (err) {
37
+ if (rl) rl.close();
38
+ reject(err);
39
+ }
40
+ });
41
+ }
42
+ /**
43
+ * Prompts the user with a yes/no question and returns a boolean.
44
+ * @param question The question to ask
45
+ * @param defaultYes If true, empty response defaults to yes. If false, defaults to no.
46
+ */
47
+ async function promptYesNo(question, defaultYes = false) {
48
+ const answer = await promptUser(`${question} ${defaultYes ? "(Y/n): " : "(y/N): "}`);
49
+ if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
50
+ return answer.trim().toLowerCase().startsWith("y");
51
+ }
52
+ //#endregion
53
+ //#region src/util/server.ts
54
+ var server_exports = /* @__PURE__ */ __exportAll({
55
+ BrowserBehavior: () => BrowserBehavior,
56
+ checkServerFeatureSupport: () => checkServerFeatureSupport
57
+ });
58
+ const BrowserBehavior = {
59
+ ASK: 0,
60
+ OPEN: 1,
61
+ SKIP: 2,
62
+ OPEN_TO_REPORT: 3,
63
+ OPEN_TO_REDTEAM_CREATE: 4,
64
+ OPEN_TO_EVAL_SETUP: 5
65
+ };
66
+ BrowserBehavior.ASK, BrowserBehavior.OPEN, BrowserBehavior.SKIP, BrowserBehavior.OPEN_TO_REPORT, BrowserBehavior.OPEN_TO_REDTEAM_CREATE, BrowserBehavior.OPEN_TO_EVAL_SETUP;
67
+ const featureCache = /* @__PURE__ */ new Map();
68
+ /**
69
+ * Checks if a server supports a specific feature based on build date
70
+ * @param featureName - Name of the feature (for caching and logging)
71
+ * @param requiredBuildDate - Minimum build date when feature was added (ISO string)
72
+ * @returns Promise<boolean> - true if server supports the feature
73
+ */
74
+ async function checkServerFeatureSupport(featureName, requiredBuildDate) {
75
+ const cacheKey = `${featureName}`;
76
+ if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
77
+ let supported = false;
78
+ try {
79
+ logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
80
+ const versionUrl = getRemoteVersionUrl();
81
+ if (versionUrl) {
82
+ const data = await (await fetchWithProxy(versionUrl, {
83
+ method: "GET",
84
+ headers: { "Content-Type": "application/json" }
85
+ })).json();
86
+ if (data.buildDate) {
87
+ supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
88
+ logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
89
+ } else {
90
+ logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
91
+ supported = false;
92
+ }
93
+ } else {
94
+ logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
95
+ supported = true;
96
+ }
97
+ } catch (error) {
98
+ logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
99
+ supported = false;
100
+ }
101
+ featureCache.set(cacheKey, supported);
102
+ return supported;
103
+ }
104
+ //#endregion
105
+ export { server_exports as n, promptYesNo as r, checkServerFeatureSupport as t };
106
+
107
+ //# sourceMappingURL=server-CbiJppij.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { r as checkServerFeatureSupport } from "./server-DLYjSFm2.js";
3
+ export { checkServerFeatureSupport };
@@ -0,0 +1,182 @@
1
+ #!/usr/bin/env node
2
+ import { s as logger } from "./logger-BbY6ypFL.js";
3
+ import { N as getDefaultPort, n as fetchWithProxy } from "./fetch-Cpf1U1nO.js";
4
+ import "./version-F0YDgb7J.js";
5
+ import { o as getRemoteVersionUrl } from "./remoteGeneration-D6UjE2JT.js";
6
+ import chalk from "chalk";
7
+ import opener from "opener";
8
+ import readline from "readline";
9
+ //#region src/util/readline.ts
10
+ /**
11
+ * Factory function for creating readline interface.
12
+ * This abstraction makes it easier to mock in tests and prevents open handles.
13
+ */
14
+ function createReadlineInterface() {
15
+ return readline.createInterface({
16
+ input: process.stdin,
17
+ output: process.stdout
18
+ });
19
+ }
20
+ /**
21
+ * Prompts the user with a question and returns their answer.
22
+ * Automatically handles cleanup of the readline interface.
23
+ */
24
+ async function promptUser(question) {
25
+ return new Promise((resolve, reject) => {
26
+ let rl = null;
27
+ try {
28
+ rl = createReadlineInterface();
29
+ rl.on("error", (err) => {
30
+ if (rl) rl.close();
31
+ reject(err);
32
+ });
33
+ rl.question(question, (answer) => {
34
+ if (rl) rl.close();
35
+ resolve(answer);
36
+ });
37
+ } catch (err) {
38
+ if (rl) rl.close();
39
+ reject(err);
40
+ }
41
+ });
42
+ }
43
+ /**
44
+ * Prompts the user with a yes/no question and returns a boolean.
45
+ * @param question The question to ask
46
+ * @param defaultYes If true, empty response defaults to yes. If false, defaults to no.
47
+ */
48
+ async function promptYesNo(question, defaultYes = false) {
49
+ const answer = await promptUser(`${question} ${defaultYes ? "(Y/n): " : "(y/N): "}`);
50
+ if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
51
+ return answer.trim().toLowerCase().startsWith("y");
52
+ }
53
+ //#endregion
54
+ //#region src/util/server.ts
55
+ const BrowserBehavior = {
56
+ ASK: 0,
57
+ OPEN: 1,
58
+ SKIP: 2,
59
+ OPEN_TO_REPORT: 3,
60
+ OPEN_TO_REDTEAM_CREATE: 4,
61
+ OPEN_TO_EVAL_SETUP: 5
62
+ };
63
+ const BrowserBehaviorNames = {
64
+ [BrowserBehavior.ASK]: "ASK",
65
+ [BrowserBehavior.OPEN]: "OPEN",
66
+ [BrowserBehavior.SKIP]: "SKIP",
67
+ [BrowserBehavior.OPEN_TO_REPORT]: "OPEN_TO_REPORT",
68
+ [BrowserBehavior.OPEN_TO_REDTEAM_CREATE]: "OPEN_TO_REDTEAM_CREATE",
69
+ [BrowserBehavior.OPEN_TO_EVAL_SETUP]: "OPEN_TO_EVAL_SETUP"
70
+ };
71
+ const featureCache = /* @__PURE__ */ new Map();
72
+ /**
73
+ * Checks if a server supports a specific feature based on build date
74
+ * @param featureName - Name of the feature (for caching and logging)
75
+ * @param requiredBuildDate - Minimum build date when feature was added (ISO string)
76
+ * @returns Promise<boolean> - true if server supports the feature
77
+ */
78
+ async function checkServerFeatureSupport(featureName, requiredBuildDate) {
79
+ const cacheKey = `${featureName}`;
80
+ if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
81
+ let supported = false;
82
+ try {
83
+ logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
84
+ const versionUrl = getRemoteVersionUrl();
85
+ if (versionUrl) {
86
+ const data = await (await fetchWithProxy(versionUrl, {
87
+ method: "GET",
88
+ headers: { "Content-Type": "application/json" }
89
+ })).json();
90
+ if (data.buildDate) {
91
+ supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
92
+ logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
93
+ } else {
94
+ logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
95
+ supported = false;
96
+ }
97
+ } else {
98
+ logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
99
+ supported = true;
100
+ }
101
+ } catch (error) {
102
+ logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
103
+ supported = false;
104
+ }
105
+ featureCache.set(cacheKey, supported);
106
+ return supported;
107
+ }
108
+ async function checkServerRunning(port = getDefaultPort()) {
109
+ logger.debug(`Checking for existing server on port ${port}...`);
110
+ try {
111
+ const data = await (await fetchWithProxy(`http://localhost:${port}/health`, { headers: { "x-promptfoo-silent": "true" } })).json();
112
+ return data.status === "OK" && data.version === "0.121.8";
113
+ } catch (err) {
114
+ logger.debug(`No existing server found - this is expected on first startup. ${String(err)}`);
115
+ return false;
116
+ }
117
+ }
118
+ async function openBrowser(browserBehavior, port = getDefaultPort()) {
119
+ const baseUrl = `http://localhost:${port}`;
120
+ let url = baseUrl;
121
+ if (browserBehavior === BrowserBehavior.OPEN_TO_REPORT) url = `${baseUrl}/report`;
122
+ else if (browserBehavior === BrowserBehavior.OPEN_TO_REDTEAM_CREATE) url = `${baseUrl}/redteam/setup`;
123
+ else if (browserBehavior === BrowserBehavior.OPEN_TO_EVAL_SETUP) url = `${baseUrl}/setup`;
124
+ const doOpen = async () => {
125
+ try {
126
+ logger.info("Press Ctrl+C to stop the server");
127
+ await opener(url);
128
+ } catch (err) {
129
+ logger.error(`Failed to open browser: ${String(err)}`);
130
+ }
131
+ };
132
+ if (browserBehavior === BrowserBehavior.ASK) {
133
+ if (await promptYesNo("Open URL in browser?", false)) await doOpen();
134
+ } else if (browserBehavior !== BrowserBehavior.SKIP) await doOpen();
135
+ }
136
+ /**
137
+ * Opens authentication URLs in the browser with environment-aware behavior.
138
+ *
139
+ * @param authUrl - The login/signup URL to open in the browser
140
+ * @param welcomeUrl - The URL where users can get their API token after login
141
+ * @param browserBehavior - Controls how the browser opening is handled:
142
+ * - BrowserBehavior.ASK: Prompts user before opening (defaults to yes)
143
+ * - BrowserBehavior.OPEN: Opens browser automatically without prompting
144
+ * - BrowserBehavior.SKIP: Shows manual URLs without opening browser
145
+ * @returns Promise that resolves when the operation completes
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * // Prompt user to open login page
150
+ * await openAuthBrowser(
151
+ * 'https://promptfoo.app',
152
+ * 'https://promptfoo.app/welcome',
153
+ * BrowserBehavior.ASK
154
+ * );
155
+ * ```
156
+ */
157
+ async function openAuthBrowser(authUrl, welcomeUrl, browserBehavior) {
158
+ const doOpen = async () => {
159
+ try {
160
+ logger.info(`Opening ${authUrl} in your browser...`);
161
+ await opener(authUrl);
162
+ logger.info(`After logging in, get your API token at ${chalk.green(welcomeUrl)}`);
163
+ } catch (err) {
164
+ logger.error(`Failed to open browser: ${String(err)}`);
165
+ logger.info(`Please visit: ${chalk.green(authUrl)}`);
166
+ logger.info(`After logging in, get your API token at ${chalk.green(welcomeUrl)}`);
167
+ }
168
+ };
169
+ if (browserBehavior === BrowserBehavior.ASK) if (await promptYesNo("Open login page in browser?", true)) await doOpen();
170
+ else {
171
+ logger.info(`Please visit: ${chalk.green(authUrl)}`);
172
+ logger.info(`After logging in, get your API token at ${chalk.green(welcomeUrl)}`);
173
+ }
174
+ else if (browserBehavior === BrowserBehavior.SKIP) {
175
+ logger.info(`Please visit: ${chalk.green(authUrl)}`);
176
+ logger.info(`After logging in, get your API token at ${chalk.green(welcomeUrl)}`);
177
+ } else await doOpen();
178
+ }
179
+ //#endregion
180
+ export { openAuthBrowser as a, promptYesNo as c, checkServerRunning as i, BrowserBehaviorNames as n, openBrowser as o, checkServerFeatureSupport as r, promptUser as s, BrowserBehavior as t };
181
+
182
+ //# sourceMappingURL=server-DLYjSFm2.js.map
@@ -0,0 +1,146 @@
1
+ import { t as __exportAll } from "./chunk-DEq-mXcV.js";
2
+ import { a as logger } from "./logger-KD8JjCRJ.js";
3
+ import { P as getDefaultPort, t as fetchWithProxy } from "./fetch-BSSAcMxf.js";
4
+ import "./version-CHR-EFec.js";
5
+ import { o as getRemoteVersionUrl } from "./remoteGeneration--D6WjzUm.js";
6
+ import "chalk";
7
+ import opener from "opener";
8
+ import readline from "readline";
9
+ //#region src/util/readline.ts
10
+ /**
11
+ * Factory function for creating readline interface.
12
+ * This abstraction makes it easier to mock in tests and prevents open handles.
13
+ */
14
+ function createReadlineInterface() {
15
+ return readline.createInterface({
16
+ input: process.stdin,
17
+ output: process.stdout
18
+ });
19
+ }
20
+ /**
21
+ * Prompts the user with a question and returns their answer.
22
+ * Automatically handles cleanup of the readline interface.
23
+ */
24
+ async function promptUser(question) {
25
+ return new Promise((resolve, reject) => {
26
+ let rl = null;
27
+ try {
28
+ rl = createReadlineInterface();
29
+ rl.on("error", (err) => {
30
+ if (rl) rl.close();
31
+ reject(err);
32
+ });
33
+ rl.question(question, (answer) => {
34
+ if (rl) rl.close();
35
+ resolve(answer);
36
+ });
37
+ } catch (err) {
38
+ if (rl) rl.close();
39
+ reject(err);
40
+ }
41
+ });
42
+ }
43
+ /**
44
+ * Prompts the user with a yes/no question and returns a boolean.
45
+ * @param question The question to ask
46
+ * @param defaultYes If true, empty response defaults to yes. If false, defaults to no.
47
+ */
48
+ async function promptYesNo(question, defaultYes = false) {
49
+ const answer = await promptUser(`${question} ${defaultYes ? "(Y/n): " : "(y/N): "}`);
50
+ if (defaultYes) return !answer.trim().toLowerCase().startsWith("n");
51
+ return answer.trim().toLowerCase().startsWith("y");
52
+ }
53
+ //#endregion
54
+ //#region src/util/server.ts
55
+ var server_exports = /* @__PURE__ */ __exportAll({
56
+ BrowserBehavior: () => BrowserBehavior,
57
+ BrowserBehaviorNames: () => BrowserBehaviorNames,
58
+ checkServerFeatureSupport: () => checkServerFeatureSupport,
59
+ checkServerRunning: () => checkServerRunning,
60
+ openBrowser: () => openBrowser
61
+ });
62
+ const BrowserBehavior = {
63
+ ASK: 0,
64
+ OPEN: 1,
65
+ SKIP: 2,
66
+ OPEN_TO_REPORT: 3,
67
+ OPEN_TO_REDTEAM_CREATE: 4,
68
+ OPEN_TO_EVAL_SETUP: 5
69
+ };
70
+ const BrowserBehaviorNames = {
71
+ [BrowserBehavior.ASK]: "ASK",
72
+ [BrowserBehavior.OPEN]: "OPEN",
73
+ [BrowserBehavior.SKIP]: "SKIP",
74
+ [BrowserBehavior.OPEN_TO_REPORT]: "OPEN_TO_REPORT",
75
+ [BrowserBehavior.OPEN_TO_REDTEAM_CREATE]: "OPEN_TO_REDTEAM_CREATE",
76
+ [BrowserBehavior.OPEN_TO_EVAL_SETUP]: "OPEN_TO_EVAL_SETUP"
77
+ };
78
+ const featureCache = /* @__PURE__ */ new Map();
79
+ /**
80
+ * Checks if a server supports a specific feature based on build date
81
+ * @param featureName - Name of the feature (for caching and logging)
82
+ * @param requiredBuildDate - Minimum build date when feature was added (ISO string)
83
+ * @returns Promise<boolean> - true if server supports the feature
84
+ */
85
+ async function checkServerFeatureSupport(featureName, requiredBuildDate) {
86
+ const cacheKey = `${featureName}`;
87
+ if (featureCache.has(cacheKey)) return featureCache.get(cacheKey);
88
+ let supported = false;
89
+ try {
90
+ logger.debug(`[Feature Detection] Checking server support for feature: ${featureName}`);
91
+ const versionUrl = getRemoteVersionUrl();
92
+ if (versionUrl) {
93
+ const data = await (await fetchWithProxy(versionUrl, {
94
+ method: "GET",
95
+ headers: { "Content-Type": "application/json" }
96
+ })).json();
97
+ if (data.buildDate) {
98
+ supported = new Date(data.buildDate) >= new Date(requiredBuildDate);
99
+ logger.debug(`[Feature Detection] ${featureName}: buildDate=${data.buildDate}, required=${requiredBuildDate}, supported=${supported}`);
100
+ } else {
101
+ logger.debug(`[Feature Detection] ${featureName}: no version info, assuming not supported`);
102
+ supported = false;
103
+ }
104
+ } else {
105
+ logger.debug(`[Feature Detection] No remote URL available for ${featureName}, assuming local server supports it`);
106
+ supported = true;
107
+ }
108
+ } catch (error) {
109
+ logger.debug(`[Feature Detection] Version check failed for ${featureName}, assuming not supported: ${error}`);
110
+ supported = false;
111
+ }
112
+ featureCache.set(cacheKey, supported);
113
+ return supported;
114
+ }
115
+ async function checkServerRunning(port = getDefaultPort()) {
116
+ logger.debug(`Checking for existing server on port ${port}...`);
117
+ try {
118
+ const data = await (await fetchWithProxy(`http://localhost:${port}/health`, { headers: { "x-promptfoo-silent": "true" } })).json();
119
+ return data.status === "OK" && data.version === "0.121.8";
120
+ } catch (err) {
121
+ logger.debug(`No existing server found - this is expected on first startup. ${String(err)}`);
122
+ return false;
123
+ }
124
+ }
125
+ async function openBrowser(browserBehavior, port = getDefaultPort()) {
126
+ const baseUrl = `http://localhost:${port}`;
127
+ let url = baseUrl;
128
+ if (browserBehavior === BrowserBehavior.OPEN_TO_REPORT) url = `${baseUrl}/report`;
129
+ else if (browserBehavior === BrowserBehavior.OPEN_TO_REDTEAM_CREATE) url = `${baseUrl}/redteam/setup`;
130
+ else if (browserBehavior === BrowserBehavior.OPEN_TO_EVAL_SETUP) url = `${baseUrl}/setup`;
131
+ const doOpen = async () => {
132
+ try {
133
+ logger.info("Press Ctrl+C to stop the server");
134
+ await opener(url);
135
+ } catch (err) {
136
+ logger.error(`Failed to open browser: ${String(err)}`);
137
+ }
138
+ };
139
+ if (browserBehavior === BrowserBehavior.ASK) {
140
+ if (await promptYesNo("Open URL in browser?", false)) await doOpen();
141
+ } else if (browserBehavior !== BrowserBehavior.SKIP) await doOpen();
142
+ }
143
+ //#endregion
144
+ export { openBrowser as a, checkServerRunning as i, BrowserBehaviorNames as n, server_exports as o, checkServerFeatureSupport as r, promptYesNo as s, BrowserBehavior as t };
145
+
146
+ //# sourceMappingURL=server-JQYD_Nws.js.map
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  //#region src/util/fileExtensions.ts
2
3
  /**
3
4
  * Array of supported JavaScript and TypeScript file extensions
@@ -80,6 +81,15 @@ function isAudioFile(filePath) {
80
81
  return audioExtensions.includes(fileExtension);
81
82
  }
82
83
  //#endregion
83
- export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
84
+ //#region src/validators/shared.ts
85
+ const NunjucksFilterMapSchema = z.record(z.string(), z.custom((v) => typeof v === "function"));
86
+ /**
87
+ * Zod schema accepting a string or a function.
88
+ * Used for transform fields that accept inline JS expressions, file:// references,
89
+ * or direct functions when using the Node.js package.
90
+ */
91
+ const StringOrFunctionSchema = z.union([z.string(), z.custom((val) => typeof val === "function", { message: "Transform must be a string expression, file:// path, or a function (Node.js package)" })]);
92
+ //#endregion
93
+ export { isImageFile as a, isAudioFile as i, StringOrFunctionSchema as n, isJavascriptFile as o, JAVASCRIPT_EXTENSIONS as r, isVideoFile as s, NunjucksFilterMapSchema as t };
84
94
 
85
- //# sourceMappingURL=fileExtensions-8CjoL7vB.js.map
95
+ //# sourceMappingURL=shared-BoG7qLMv.js.map