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,348 @@
1
+ #!/usr/bin/env node
2
+ import { N as state, T as getEnvBool, s as logger } from "./logger-BbY6ypFL.js";
3
+ import nunjucks from "nunjucks";
4
+ //#region src/util/templates.ts
5
+ function isNunjucksAstNode(value) {
6
+ return Boolean(value && typeof value === "object" && typeof value.typename === "string");
7
+ }
8
+ function getNunjucksParser() {
9
+ return nunjucks.parser;
10
+ }
11
+ function parseNunjucksTemplate(template) {
12
+ const parser = getNunjucksParser();
13
+ if (!parser || typeof parser.parse !== "function") {
14
+ logger.debug("[templates] nunjucks.parser.parse is not available; falling back to conservative detection");
15
+ return { ok: false };
16
+ }
17
+ try {
18
+ return {
19
+ ok: true,
20
+ ast: parser.parse(template)
21
+ };
22
+ } catch (err) {
23
+ logger.debug("[templates] nunjucks parse failed; falling back to conservative detection", { error: err instanceof Error ? err.message : String(err) });
24
+ return { ok: false };
25
+ }
26
+ }
27
+ function isNonReferenceSymbol(parent) {
28
+ if (!parent) return false;
29
+ return parent.node.typename === "Pair" && parent.field === "key" || parent.node.typename === "Filter" && parent.field === "name" || parent.node.typename === "Is" && parent.field === "right" || parent.node.typename === "Set" && parent.field === "targets" || isForLikeNode(parent.node) && parent.field === "name" || parent.node.typename === "Macro" && parent.field === "name" || parent.node.typename === "Import" && parent.field === "target" || parent.node.typename === "FromImport" && parent.field === "names";
30
+ }
31
+ function getSymbolName(node) {
32
+ return isNunjucksAstNode(node) && node.typename === "Symbol" && typeof node.value === "string" ? node.value : void 0;
33
+ }
34
+ function collectBindingNames(node) {
35
+ if (Array.isArray(node)) return node.flatMap((item) => collectBindingNames(item));
36
+ const symbolName = getSymbolName(node);
37
+ if (symbolName) return [symbolName];
38
+ if (!isNunjucksAstNode(node) || !Array.isArray(node.children)) return [];
39
+ return node.children.flatMap((child) => collectBindingNames(child));
40
+ }
41
+ function addBindingNames(scope, node) {
42
+ const nextScope = new Set(scope);
43
+ for (const name of collectBindingNames(node)) nextScope.add(name);
44
+ return nextScope;
45
+ }
46
+ function addNamesToScope(scope, names) {
47
+ const nextScope = new Set(scope);
48
+ for (const name of names) nextScope.add(name);
49
+ return nextScope;
50
+ }
51
+ function collectFromImportBindingNames(namesNode) {
52
+ if (!isNunjucksAstNode(namesNode) || !Array.isArray(namesNode.children)) return [];
53
+ const names = [];
54
+ for (const child of namesNode.children) {
55
+ const plainImportName = getSymbolName(child);
56
+ if (plainImportName) {
57
+ names.push(plainImportName);
58
+ continue;
59
+ }
60
+ if (isNunjucksAstNode(child) && child.typename === "Pair") {
61
+ const aliasName = getSymbolName(child.value);
62
+ if (aliasName) names.push(aliasName);
63
+ }
64
+ }
65
+ return names;
66
+ }
67
+ function astNodeListReferencesVariable(nodes, variableName, parent, boundSymbols) {
68
+ let scope = new Set(boundSymbols);
69
+ for (const item of nodes) {
70
+ if (!isNunjucksAstNode(item)) continue;
71
+ if (astReferencesVariable(item, variableName, parent, scope)) return true;
72
+ if (item.typename === "Set") scope = addBindingNames(scope, item.targets);
73
+ else if (item.typename === "Macro") scope = addBindingNames(scope, item.name);
74
+ else if (item.typename === "Import") scope = addBindingNames(scope, item.target);
75
+ else if (item.typename === "FromImport") scope = addNamesToScope(scope, collectFromImportBindingNames(item.names));
76
+ }
77
+ return false;
78
+ }
79
+ function astChildReferencesVariable(node, field, variableName, boundSymbols) {
80
+ const child = node[field];
81
+ if (Array.isArray(child)) return child.some((item) => isNunjucksAstNode(item) && astReferencesVariable(item, variableName, {
82
+ field,
83
+ node
84
+ }, boundSymbols));
85
+ return isNunjucksAstNode(child) && astReferencesVariable(child, variableName, {
86
+ field,
87
+ node
88
+ }, boundSymbols);
89
+ }
90
+ function isForLikeNode(node) {
91
+ return node.typename === "For" || node.typename === "AsyncEach" || node.typename === "AsyncAll";
92
+ }
93
+ function forLikeNodeReferencesVariable(node, variableName, boundSymbols) {
94
+ const loopScope = addBindingNames(boundSymbols, node.name);
95
+ return astChildReferencesVariable(node, "arr", variableName, boundSymbols) || astChildReferencesVariable(node, "body", variableName, loopScope) || astChildReferencesVariable(node, "else_", variableName, boundSymbols);
96
+ }
97
+ /**
98
+ * Walk a Nunjucks macro/caller signature left-to-right. Positional args and
99
+ * earlier keyword defaults are visible to later defaults, but the current
100
+ * keyword is not bound until its own default value has been evaluated.
101
+ */
102
+ function analyzeSignatureArgs(argsNode, variableName, boundSymbols) {
103
+ const paramNames = [];
104
+ if (!isNunjucksAstNode(argsNode) || !Array.isArray(argsNode.children)) return {
105
+ paramNames,
106
+ referencesVariable: false
107
+ };
108
+ const defaultScope = new Set(boundSymbols);
109
+ for (const child of argsNode.children) {
110
+ if (!isNunjucksAstNode(child)) continue;
111
+ const positionalParamName = getSymbolName(child);
112
+ if (positionalParamName) {
113
+ paramNames.push(positionalParamName);
114
+ defaultScope.add(positionalParamName);
115
+ continue;
116
+ }
117
+ if (child.typename === "KeywordArgs" && Array.isArray(child.children)) {
118
+ for (const pair of child.children) {
119
+ const keywordParamName = isNunjucksAstNode(pair) && pair.typename === "Pair" ? getSymbolName(pair.key) : void 0;
120
+ if (isNunjucksAstNode(pair) && pair.typename === "Pair" && astChildReferencesVariable(pair, "value", variableName, defaultScope)) return {
121
+ paramNames,
122
+ referencesVariable: true
123
+ };
124
+ if (keywordParamName) {
125
+ paramNames.push(keywordParamName);
126
+ defaultScope.add(keywordParamName);
127
+ }
128
+ }
129
+ continue;
130
+ }
131
+ if (astReferencesVariable(child, variableName, {
132
+ field: "children",
133
+ node: argsNode
134
+ }, defaultScope)) return {
135
+ paramNames,
136
+ referencesVariable: true
137
+ };
138
+ }
139
+ return {
140
+ paramNames,
141
+ referencesVariable: false
142
+ };
143
+ }
144
+ function macroNodeReferencesVariable(node, variableName, boundSymbols) {
145
+ const { paramNames, referencesVariable } = analyzeSignatureArgs(node.args, variableName, boundSymbols);
146
+ if (referencesVariable) return true;
147
+ const macroScope = addNamesToScope(boundSymbols, paramNames);
148
+ const macroName = getSymbolName(node.name);
149
+ if (macroName) macroScope.add(macroName);
150
+ return astChildReferencesVariable(node, "body", variableName, macroScope);
151
+ }
152
+ function isNodeReferencesVariable(node, variableName, boundSymbols) {
153
+ if (astChildReferencesVariable(node, "left", variableName, boundSymbols)) return true;
154
+ const right = node.right;
155
+ if (!isNunjucksAstNode(right)) return false;
156
+ if (right.typename === "FunCall") return astChildReferencesVariable(right, "args", variableName, boundSymbols);
157
+ return right.typename !== "Symbol" && astReferencesVariable(right, variableName, {
158
+ field: "right",
159
+ node
160
+ }, boundSymbols);
161
+ }
162
+ function setNodeReferencesVariable(node, variableName, boundSymbols) {
163
+ return astChildReferencesVariable(node, "value", variableName, boundSymbols) || astChildReferencesVariable(node, "body", variableName, boundSymbols);
164
+ }
165
+ function fromImportNodeReferencesVariable(node, variableName, boundSymbols) {
166
+ return astChildReferencesVariable(node, "template", variableName, boundSymbols);
167
+ }
168
+ function blockNodeReferencesVariable(node, variableName, boundSymbols) {
169
+ return astChildReferencesVariable(node, "body", variableName, boundSymbols);
170
+ }
171
+ function callerNodeReferencesVariable(node, variableName, boundSymbols) {
172
+ const { paramNames, referencesVariable } = analyzeSignatureArgs(node.args, variableName, boundSymbols);
173
+ if (referencesVariable) return true;
174
+ return astChildReferencesVariable(node, "body", variableName, addNamesToScope(boundSymbols, paramNames));
175
+ }
176
+ function astFieldsReferenceVariable(node, variableName, boundSymbols) {
177
+ return (node.fields ?? []).some((field) => astChildReferencesVariable(node, field, variableName, boundSymbols));
178
+ }
179
+ function astReferencesVariable(node, variableName, parent, boundSymbols = /* @__PURE__ */ new Set()) {
180
+ if (node.typename === "Symbol" && node.value === variableName) return !boundSymbols.has(variableName) && !isNonReferenceSymbol(parent);
181
+ if ((node.typename === "Root" || node.typename === "NodeList") && Array.isArray(node.children)) return astNodeListReferencesVariable(node.children, variableName, {
182
+ field: "children",
183
+ node
184
+ }, boundSymbols);
185
+ if (isForLikeNode(node)) return forLikeNodeReferencesVariable(node, variableName, boundSymbols);
186
+ if (node.typename === "Macro") return macroNodeReferencesVariable(node, variableName, boundSymbols);
187
+ if (node.typename === "Is") return isNodeReferencesVariable(node, variableName, boundSymbols);
188
+ if (node.typename === "Set") return setNodeReferencesVariable(node, variableName, boundSymbols);
189
+ if (node.typename === "FromImport") return fromImportNodeReferencesVariable(node, variableName, boundSymbols);
190
+ if (node.typename === "Block") return blockNodeReferencesVariable(node, variableName, boundSymbols);
191
+ if (node.typename === "Caller") return callerNodeReferencesVariable(node, variableName, boundSymbols);
192
+ return astFieldsReferenceVariable(node, variableName, boundSymbols);
193
+ }
194
+ /**
195
+ * Get a Nunjucks engine instance with optional filters and configuration.
196
+ * @param filters - Optional map of custom Nunjucks filters.
197
+ * @param throwOnUndefined - Whether to throw an error on undefined variables.
198
+ * @param isGrader - Whether this engine is being used in a grader context.
199
+ * Nunjucks is always enabled in grader mode.
200
+ * @returns A configured Nunjucks environment.
201
+ */
202
+ function getNunjucksEngine(filters, throwOnUndefined = false, isGrader = false) {
203
+ if (!isGrader && getEnvBool("PROMPTFOO_DISABLE_TEMPLATING")) return { renderString: (template) => template };
204
+ const env = nunjucks.configure({
205
+ autoescape: false,
206
+ throwOnUndefined
207
+ });
208
+ const envGlobals = {
209
+ ...getEnvBool("PROMPTFOO_DISABLE_TEMPLATE_ENV_VARS", getEnvBool("PROMPTFOO_SELF_HOSTED", false)) ? {} : process.env,
210
+ ...state.config?.env
211
+ };
212
+ env.addGlobal("env", envGlobals);
213
+ env.addFilter("load", function(str) {
214
+ return JSON.parse(str);
215
+ });
216
+ if (filters) for (const [name, filter] of Object.entries(filters)) env.addFilter(name, filter);
217
+ return env;
218
+ }
219
+ /**
220
+ * Parse Nunjucks template to extract variables.
221
+ * @param template - The Nunjucks template string.
222
+ * @returns An array of variables used in the template.
223
+ */
224
+ function extractVariablesFromTemplate(template) {
225
+ const variableSet = /* @__PURE__ */ new Set();
226
+ const regex = /\{\{[\s]*([^{}\s|]+)[\s]*(?:\|[^}]+)?\}\}|\{%[\s]*(?:if|for)[\s]+([^{}\s]+)[\s]*.*?%\}/g;
227
+ template = template.replace(/\{#[\s\S]*?#\}/g, "");
228
+ let match;
229
+ while ((match = regex.exec(template)) !== null) {
230
+ const variable = match[1] || match[2];
231
+ if (variable) variableSet.add(variable);
232
+ }
233
+ const forLoopRegex = /\{%[\s]*for[\s]+(\w+)[\s]+in[\s]+(\w+)[\s]*%\}/g;
234
+ while ((match = forLoopRegex.exec(template)) !== null) {
235
+ variableSet.delete(match[1]);
236
+ variableSet.add(match[2]);
237
+ }
238
+ return Array.from(variableSet);
239
+ }
240
+ /**
241
+ * Extract variables from multiple Nunjucks templates.
242
+ * @param templates - An array of Nunjucks template strings.
243
+ * @returns An array of variables used in the templates.
244
+ */
245
+ function extractVariablesFromTemplates(templates) {
246
+ const variableSet = /* @__PURE__ */ new Set();
247
+ for (const template of templates) extractVariablesFromTemplate(template).forEach((variable) => variableSet.add(variable));
248
+ return Array.from(variableSet);
249
+ }
250
+ /**
251
+ * Classify whether a template references `variableName` as a real Nunjucks
252
+ * expression symbol, and surface whether the template parsed successfully.
253
+ *
254
+ * Callers that cache results should avoid caching when `parsed` is `false`,
255
+ * otherwise a transient parse failure would poison the cache for the lifetime
256
+ * of the process.
257
+ */
258
+ function analyzeTemplateReference(template, variableName) {
259
+ if (!variableName || !template.includes(variableName)) return {
260
+ referenced: false,
261
+ parsed: true
262
+ };
263
+ const parseResult = parseNunjucksTemplate(template);
264
+ if (!parseResult.ok) return {
265
+ referenced: true,
266
+ parsed: false
267
+ };
268
+ return {
269
+ referenced: astReferencesVariable(parseResult.ast, variableName),
270
+ parsed: true
271
+ };
272
+ }
273
+ //#endregion
274
+ //#region src/util/render.ts
275
+ /**
276
+ * Renders ONLY environment variable templates in an object, leaving all other templates untouched.
277
+ * This allows env vars to be resolved at provider load time while preserving runtime var templates.
278
+ *
279
+ * Supports full Nunjucks syntax for env vars including filters and expressions:
280
+ * - {{ env.VAR_NAME }}
281
+ * - {{ env['VAR-NAME'] }}
282
+ * - {{ env["VAR-NAME"] }}
283
+ * - {{ env.VAR | default('fallback') }}
284
+ * - {{ env.VAR | upper }}
285
+ *
286
+ * Preserves non-env templates for runtime rendering:
287
+ * - {{ vars.x }} - preserved as literal
288
+ * - {{ prompt }} - preserved as literal
289
+ *
290
+ * Implementation: Uses regex to find env templates, delegates to Nunjucks for rendering.
291
+ * This ensures full Nunjucks feature support while preserving non-env templates.
292
+ *
293
+ * @param obj - The object to process
294
+ * @param envOverrides - Optional env vars to merge with (or replace) the base env
295
+ * @param replaceBase - If true, envOverrides replaces the base env entirely instead of merging
296
+ * @returns The object with only env templates rendered
297
+ */
298
+ function renderEnvOnlyInObject(obj, envOverrides, replaceBase) {
299
+ if (getEnvBool("PROMPTFOO_DISABLE_TEMPLATING")) return obj;
300
+ if (typeof obj === "string") {
301
+ const nunjucks = getNunjucksEngine();
302
+ const baseEnvGlobals = nunjucks.getGlobal("env");
303
+ const envGlobals = replaceBase ? envOverrides ?? {} : envOverrides ? {
304
+ ...baseEnvGlobals,
305
+ ...envOverrides
306
+ } : baseEnvGlobals;
307
+ return obj.replace(/\{\{(?:[^}]|\}(?!\}))*\}\}/g, (match) => {
308
+ if (!match.match(/\benv\.|env\[/)) return match;
309
+ const varMatch = match.match(/env\.(\w+)|env\[['"]([^'"]+)['"]\]/);
310
+ const varName = varMatch?.[1] || varMatch?.[2];
311
+ if (match.includes("|") || varName && varName in envGlobals && envGlobals[varName] !== void 0) try {
312
+ return nunjucks.renderString(match, { env: envGlobals });
313
+ } catch (error) {
314
+ logger.debug(`Failed to render env template "${match}": ${error instanceof Error ? error.message : String(error)}`);
315
+ return match;
316
+ }
317
+ return match;
318
+ });
319
+ }
320
+ if (Array.isArray(obj)) return obj.map((item) => renderEnvOnlyInObject(item, envOverrides, replaceBase));
321
+ if (typeof obj === "object" && obj !== null) {
322
+ const result = {};
323
+ for (const key in obj) {
324
+ if (key === "_conversation") {
325
+ result[key] = obj[key];
326
+ continue;
327
+ }
328
+ result[key] = renderEnvOnlyInObject(obj[key], envOverrides, replaceBase);
329
+ }
330
+ return result;
331
+ }
332
+ return obj;
333
+ }
334
+ function renderVarsInObject(obj, vars) {
335
+ if (!vars || getEnvBool("PROMPTFOO_DISABLE_TEMPLATING")) return obj;
336
+ if (typeof obj === "string") return getNunjucksEngine().renderString(obj, vars);
337
+ if (Array.isArray(obj)) return obj.map((item) => renderVarsInObject(item, vars));
338
+ if (typeof obj === "object" && obj !== null) {
339
+ const result = {};
340
+ for (const key in obj) result[key] = renderVarsInObject(obj[key], vars);
341
+ return result;
342
+ } else if (typeof obj === "function") return renderVarsInObject(obj({ vars }));
343
+ return obj;
344
+ }
345
+ //#endregion
346
+ export { extractVariablesFromTemplates as a, extractVariablesFromTemplate as i, renderVarsInObject as n, getNunjucksEngine as o, analyzeTemplateReference as r, renderEnvOnlyInObject as t };
347
+
348
+ //# sourceMappingURL=render-CSP99NLm.js.map