promptfoo 0.87.1 → 0.89.0

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 (329) hide show
  1. package/README.md +3 -3
  2. package/dist/package.json +29 -29
  3. package/dist/src/__mocks__/esm.d.ts.map +1 -1
  4. package/dist/src/__mocks__/esm.js +1 -0
  5. package/dist/src/__mocks__/esm.js.map +1 -1
  6. package/dist/src/app/assets/index-DQ5S2Ye6.js +782 -0
  7. package/dist/src/app/assets/index-Dl-FhnW1.css +1 -0
  8. package/dist/src/app/assets/index.es-DR-0y8vm.js +18 -0
  9. package/dist/src/app/assets/purify.es-DGIRlouP.js +3 -0
  10. package/dist/src/app/assets/sync-D_jwcTYY.js +4 -0
  11. package/dist/src/app/favicon.png +0 -0
  12. package/dist/src/app/index.html +16 -0
  13. package/dist/src/assertions/AssertionsResult.d.ts.map +1 -1
  14. package/dist/src/assertions/AssertionsResult.js +7 -0
  15. package/dist/src/assertions/AssertionsResult.js.map +1 -1
  16. package/dist/src/assertions.d.ts.map +1 -1
  17. package/dist/src/assertions.js +19 -4
  18. package/dist/src/assertions.js.map +1 -1
  19. package/dist/src/cache.js +1 -1
  20. package/dist/src/cache.js.map +1 -1
  21. package/dist/src/commands/cache.js +2 -2
  22. package/dist/src/commands/cache.js.map +1 -1
  23. package/dist/src/commands/delete.js +2 -2
  24. package/dist/src/commands/delete.js.map +1 -1
  25. package/dist/src/commands/eval.d.ts +1 -1
  26. package/dist/src/commands/eval.d.ts.map +1 -1
  27. package/dist/src/commands/eval.js +17 -3
  28. package/dist/src/commands/eval.js.map +1 -1
  29. package/dist/src/commands/generate/dataset.js +1 -1
  30. package/dist/src/commands/generate/dataset.js.map +1 -1
  31. package/dist/src/commands/list.js +3 -3
  32. package/dist/src/commands/list.js.map +1 -1
  33. package/dist/src/commands/share.js +2 -2
  34. package/dist/src/commands/share.js.map +1 -1
  35. package/dist/src/commands/show.js +1 -1
  36. package/dist/src/commands/show.js.map +1 -1
  37. package/dist/src/commands/view.js +2 -2
  38. package/dist/src/commands/view.js.map +1 -1
  39. package/dist/src/config.d.ts.map +1 -1
  40. package/dist/src/config.js +47 -57
  41. package/dist/src/config.js.map +1 -1
  42. package/dist/src/csv.d.ts.map +1 -1
  43. package/dist/src/csv.js +40 -15
  44. package/dist/src/csv.js.map +1 -1
  45. package/dist/src/database/tables.d.ts +18 -18
  46. package/dist/src/envars.d.ts +1 -0
  47. package/dist/src/envars.d.ts.map +1 -1
  48. package/dist/src/envars.js.map +1 -1
  49. package/dist/src/evaluator.d.ts.map +1 -1
  50. package/dist/src/evaluator.js +32 -0
  51. package/dist/src/evaluator.js.map +1 -1
  52. package/dist/src/evaluatorHelpers.js +1 -1
  53. package/dist/src/evaluatorHelpers.js.map +1 -1
  54. package/dist/src/globalConfig.js +1 -1
  55. package/dist/src/globalConfig.js.map +1 -1
  56. package/dist/src/golang/wrapper.go +53 -0
  57. package/dist/src/main.d.ts.map +1 -1
  58. package/dist/src/main.js +5 -11
  59. package/dist/src/main.js.map +1 -1
  60. package/dist/src/onboarding.d.ts +1 -1
  61. package/dist/src/onboarding.d.ts.map +1 -1
  62. package/dist/src/onboarding.js +4 -2
  63. package/dist/src/onboarding.js.map +1 -1
  64. package/dist/src/providers/ai21.d.ts.map +1 -1
  65. package/dist/src/providers/ai21.js +3 -12
  66. package/dist/src/providers/ai21.js.map +1 -1
  67. package/dist/src/providers/anthropic.d.ts +3 -3
  68. package/dist/src/providers/anthropic.d.ts.map +1 -1
  69. package/dist/src/providers/anthropic.js +44 -34
  70. package/dist/src/providers/anthropic.js.map +1 -1
  71. package/dist/src/providers/azureopenai.d.ts +3 -2
  72. package/dist/src/providers/azureopenai.d.ts.map +1 -1
  73. package/dist/src/providers/azureopenai.js +129 -3
  74. package/dist/src/providers/azureopenai.js.map +1 -1
  75. package/dist/src/providers/bedrock.js +2 -2
  76. package/dist/src/providers/bedrock.js.map +1 -1
  77. package/dist/src/providers/cloudflare-ai.d.ts +2 -2
  78. package/dist/src/providers/cloudflare-ai.d.ts.map +1 -1
  79. package/dist/src/providers/cloudflare-ai.js.map +1 -1
  80. package/dist/src/providers/cohere.js +1 -1
  81. package/dist/src/providers/cohere.js.map +1 -1
  82. package/dist/src/providers/golangCompletion.d.ts +19 -0
  83. package/dist/src/providers/golangCompletion.d.ts.map +1 -0
  84. package/dist/src/providers/golangCompletion.js +105 -0
  85. package/dist/src/providers/golangCompletion.js.map +1 -0
  86. package/dist/src/providers/http.js +1 -1
  87. package/dist/src/providers/http.js.map +1 -1
  88. package/dist/src/providers/mistral.d.ts.map +1 -1
  89. package/dist/src/providers/mistral.js +8 -18
  90. package/dist/src/providers/mistral.js.map +1 -1
  91. package/dist/src/providers/openai.d.ts +13 -0
  92. package/dist/src/providers/openai.d.ts.map +1 -1
  93. package/dist/src/providers/openai.js +28 -24
  94. package/dist/src/providers/openai.js.map +1 -1
  95. package/dist/src/providers/openaiUtil.d.ts.map +1 -1
  96. package/dist/src/providers/openaiUtil.js +1 -1
  97. package/dist/src/providers/openaiUtil.js.map +1 -1
  98. package/dist/src/providers/shared.d.ts +41 -0
  99. package/dist/src/providers/shared.d.ts.map +1 -1
  100. package/dist/src/providers/shared.js +44 -0
  101. package/dist/src/providers/shared.js.map +1 -1
  102. package/dist/src/providers/vertexUtil.js +2 -2
  103. package/dist/src/providers/vertexUtil.js.map +1 -1
  104. package/dist/src/providers.d.ts.map +1 -1
  105. package/dist/src/providers.js +5 -0
  106. package/dist/src/providers.js.map +1 -1
  107. package/dist/src/python/execAsync.d.ts +10 -0
  108. package/dist/src/python/execAsync.d.ts.map +1 -0
  109. package/dist/src/python/execAsync.js +17 -0
  110. package/dist/src/python/execAsync.js.map +1 -0
  111. package/dist/src/python/pythonUtils.d.ts +29 -0
  112. package/dist/src/python/pythonUtils.d.ts.map +1 -1
  113. package/dist/src/python/pythonUtils.js +85 -6
  114. package/dist/src/python/pythonUtils.js.map +1 -1
  115. package/dist/src/python/wrapper.d.ts.map +1 -1
  116. package/dist/src/python/wrapper.js +8 -5
  117. package/dist/src/python/wrapper.js.map +1 -1
  118. package/dist/src/{commands/redteam → redteam/commands}/generate.d.ts +1 -1
  119. package/dist/src/redteam/commands/generate.d.ts.map +1 -0
  120. package/dist/src/{commands/redteam → redteam/commands}/generate.js +14 -14
  121. package/dist/src/redteam/commands/generate.js.map +1 -0
  122. package/dist/src/redteam/commands/init.d.ts.map +1 -0
  123. package/dist/src/{commands/redteam → redteam/commands}/init.js +23 -15
  124. package/dist/src/redteam/commands/init.js.map +1 -0
  125. package/dist/src/{commands/redteam → redteam/commands}/plugins.d.ts.map +1 -1
  126. package/dist/src/{commands/redteam → redteam/commands}/plugins.js +1 -1
  127. package/dist/src/{commands/redteam → redteam/commands}/plugins.js.map +1 -1
  128. package/dist/src/redteam/constants.d.ts.map +1 -1
  129. package/dist/src/redteam/constants.js +16 -22
  130. package/dist/src/redteam/constants.js.map +1 -1
  131. package/dist/src/redteam/index.d.ts +1 -1
  132. package/dist/src/redteam/index.d.ts.map +1 -1
  133. package/dist/src/redteam/index.js.map +1 -1
  134. package/dist/src/redteam/providers/crescendo/index.js +2 -2
  135. package/dist/src/redteam/providers/crescendo/index.js.map +1 -1
  136. package/dist/src/redteam/providers/prompts.d.ts.map +1 -1
  137. package/dist/src/redteam/providers/prompts.js +23 -0
  138. package/dist/src/redteam/providers/prompts.js.map +1 -1
  139. package/dist/src/{types/redteam.d.ts → redteam/types.d.ts} +1 -1
  140. package/dist/src/redteam/types.d.ts.map +1 -0
  141. package/dist/src/{types/redteam.js → redteam/types.js} +1 -1
  142. package/dist/src/redteam/types.js.map +1 -0
  143. package/dist/src/server/server.d.ts.map +1 -1
  144. package/dist/src/server/server.js +10 -3
  145. package/dist/src/server/server.js.map +1 -1
  146. package/dist/src/share.js +1 -1
  147. package/dist/src/share.js.map +1 -1
  148. package/dist/src/suggestions.js +1 -1
  149. package/dist/src/suggestions.js.map +1 -1
  150. package/dist/src/telemetry.d.ts.map +1 -1
  151. package/dist/src/telemetry.js +3 -1
  152. package/dist/src/telemetry.js.map +1 -1
  153. package/dist/src/testCases.d.ts.map +1 -1
  154. package/dist/src/testCases.js +4 -3
  155. package/dist/src/testCases.js.map +1 -1
  156. package/dist/src/types/index.d.ts +413 -231
  157. package/dist/src/types/index.d.ts.map +1 -1
  158. package/dist/src/types/index.js +12 -2
  159. package/dist/src/types/index.js.map +1 -1
  160. package/dist/src/util/index.d.ts +19 -5
  161. package/dist/src/util/index.d.ts.map +1 -1
  162. package/dist/src/util/index.js +5 -3
  163. package/dist/src/util/index.js.map +1 -1
  164. package/dist/src/util/json.js +2 -2
  165. package/dist/src/util/json.js.map +1 -1
  166. package/dist/src/validators/prompts.d.ts +2 -2
  167. package/dist/src/validators/providers.d.ts +166 -20
  168. package/dist/src/validators/providers.d.ts.map +1 -1
  169. package/dist/src/validators/providers.js +5 -5
  170. package/dist/src/validators/providers.js.map +1 -1
  171. package/dist/src/validators/redteam.d.ts +15 -15
  172. package/dist/test/assertions.test.js +49 -0
  173. package/dist/test/assertions.test.js.map +1 -1
  174. package/dist/test/config.test.js +192 -48
  175. package/dist/test/config.test.js.map +1 -1
  176. package/dist/test/csv.test.js +84 -0
  177. package/dist/test/csv.test.js.map +1 -1
  178. package/dist/test/envars.test.js +103 -0
  179. package/dist/test/envars.test.js.map +1 -1
  180. package/dist/test/matchers.test.js +5 -5
  181. package/dist/test/matchers.test.js.map +1 -1
  182. package/dist/test/providers.anthropic.test.js +93 -23
  183. package/dist/test/providers.anthropic.test.js.map +1 -1
  184. package/dist/test/providers.azure.test.js +42 -0
  185. package/dist/test/providers.azure.test.js.map +1 -1
  186. package/dist/test/providers.bedrock.test.js +2 -1
  187. package/dist/test/providers.bedrock.test.js.map +1 -1
  188. package/dist/test/providers.shared.test.d.ts +2 -0
  189. package/dist/test/providers.shared.test.d.ts.map +1 -0
  190. package/dist/test/providers.shared.test.js +92 -0
  191. package/dist/test/providers.shared.test.js.map +1 -0
  192. package/dist/test/providers.test.js +112 -7
  193. package/dist/test/providers.test.js.map +1 -1
  194. package/dist/test/python/pythonUtils.test.d.ts +2 -0
  195. package/dist/test/python/pythonUtils.test.d.ts.map +1 -0
  196. package/dist/test/python/pythonUtils.test.js +224 -0
  197. package/dist/test/python/pythonUtils.test.js.map +1 -0
  198. package/dist/test/python/wrapper.test.d.ts +2 -0
  199. package/dist/test/python/wrapper.test.d.ts.map +1 -0
  200. package/dist/test/python/wrapper.test.js +71 -0
  201. package/dist/test/python/wrapper.test.js.map +1 -0
  202. package/dist/test/rateLimit.test.js.map +1 -1
  203. package/dist/test/redteam/commands/generate.test.d.ts.map +1 -0
  204. package/dist/test/{commands/redteam → redteam/commands}/generate.test.js +1 -1
  205. package/dist/test/{commands/redteam → redteam/commands}/generate.test.js.map +1 -1
  206. package/dist/test/redteam/validators.test.js +2 -2
  207. package/dist/test/redteam/validators.test.js.map +1 -1
  208. package/dist/test/testCases.test.js +75 -27
  209. package/dist/test/testCases.test.js.map +1 -1
  210. package/dist/test/types.test.js +17 -10
  211. package/dist/test/types.test.js.map +1 -1
  212. package/dist/test/util.test.js +10 -0
  213. package/dist/test/util.test.js.map +1 -1
  214. package/package.json +29 -29
  215. package/dist/src/commands/redteam/generate.d.ts.map +0 -1
  216. package/dist/src/commands/redteam/generate.js.map +0 -1
  217. package/dist/src/commands/redteam/init.d.ts.map +0 -1
  218. package/dist/src/commands/redteam/init.js.map +0 -1
  219. package/dist/src/types/redteam.d.ts.map +0 -1
  220. package/dist/src/types/redteam.js.map +0 -1
  221. package/dist/src/web/nextui/404/index.html +0 -1
  222. package/dist/src/web/nextui/404.html +0 -1
  223. package/dist/src/web/nextui/_next/static/chunks/113-c691bf7d3a37d865.js +0 -1
  224. package/dist/src/web/nextui/_next/static/chunks/132-d6bea93785831786.js +0 -6
  225. package/dist/src/web/nextui/_next/static/chunks/15.306496fdcef5f880.js +0 -52
  226. package/dist/src/web/nextui/_next/static/chunks/167-744b9f585d2d97f7.js +0 -54
  227. package/dist/src/web/nextui/_next/static/chunks/189-f9d565af9a2b91cb.js +0 -1
  228. package/dist/src/web/nextui/_next/static/chunks/1a53ab81-5e1a018996226f61.js +0 -6
  229. package/dist/src/web/nextui/_next/static/chunks/235-2bbcbc3cd37eef0f.js +0 -1
  230. package/dist/src/web/nextui/_next/static/chunks/285-1e2a6158b5f0e918.js +0 -32
  231. package/dist/src/web/nextui/_next/static/chunks/407.42b5daf65ab5dde9.js +0 -1
  232. package/dist/src/web/nextui/_next/static/chunks/417-cbf95fe2bc362650.js +0 -2
  233. package/dist/src/web/nextui/_next/static/chunks/461-77257ab6b1bb209d.js +0 -1
  234. package/dist/src/web/nextui/_next/static/chunks/565431e5-7b9122ac20f7a0ae.js +0 -140
  235. package/dist/src/web/nextui/_next/static/chunks/631-d005608c3710a99c.js +0 -6
  236. package/dist/src/web/nextui/_next/static/chunks/640-0f757e2fe135173d.js +0 -1
  237. package/dist/src/web/nextui/_next/static/chunks/646-62a1d1d5b397d18f.js +0 -28
  238. package/dist/src/web/nextui/_next/static/chunks/730-3eb7255cd813a727.js +0 -25
  239. package/dist/src/web/nextui/_next/static/chunks/782-910eb0e09b818816.js +0 -35
  240. package/dist/src/web/nextui/_next/static/chunks/840.58dde6630f088da4.js +0 -1
  241. package/dist/src/web/nextui/_next/static/chunks/854-c18aaae33bccdc36.js +0 -1
  242. package/dist/src/web/nextui/_next/static/chunks/86-fcb0efd0a19bac7d.js +0 -1
  243. package/dist/src/web/nextui/_next/static/chunks/874-66f90697795eddbc.js +0 -1
  244. package/dist/src/web/nextui/_next/static/chunks/88-f3a7a858d5f4e9a0.js +0 -17
  245. package/dist/src/web/nextui/_next/static/chunks/887.028187fb318c3e59.js +0 -1
  246. package/dist/src/web/nextui/_next/static/chunks/906-70c43cd62b2efac1.js +0 -97
  247. package/dist/src/web/nextui/_next/static/chunks/972-15d1ab608a24eebf.js +0 -1
  248. package/dist/src/web/nextui/_next/static/chunks/975-db84f98b8dd028ab.js +0 -1
  249. package/dist/src/web/nextui/_next/static/chunks/a5c829b0-07a2c92898a6780c.js +0 -14
  250. package/dist/src/web/nextui/_next/static/chunks/app/auth/login/page-c1dbf0abc580796f.js +0 -1
  251. package/dist/src/web/nextui/_next/static/chunks/app/auth/signup/page-93b80ab19bdaf2cc.js +0 -1
  252. package/dist/src/web/nextui/_next/static/chunks/app/datasets/page-17e6d3f57945f88a.js +0 -1
  253. package/dist/src/web/nextui/_next/static/chunks/app/eval/[id]/not-found-dc8b4f57fd363c1b.js +0 -1
  254. package/dist/src/web/nextui/_next/static/chunks/app/eval/[id]/page-1e54704d75f36e25.js +0 -1
  255. package/dist/src/web/nextui/_next/static/chunks/app/eval/page-5295461188ef9b43.js +0 -1
  256. package/dist/src/web/nextui/_next/static/chunks/app/layout-e465aaafbfe88e82.js +0 -1
  257. package/dist/src/web/nextui/_next/static/chunks/app/page-81e3b8fee37eaf67.js +0 -1
  258. package/dist/src/web/nextui/_next/static/chunks/app/progress/page-ac2f99c11e76f5a5.js +0 -1
  259. package/dist/src/web/nextui/_next/static/chunks/app/prompts/page-296c32f480e84a57.js +0 -1
  260. package/dist/src/web/nextui/_next/static/chunks/app/report/page-f7c9e46492061e19.js +0 -1
  261. package/dist/src/web/nextui/_next/static/chunks/app/setup/page-35c95dd67114a045.js +0 -1
  262. package/dist/src/web/nextui/_next/static/chunks/b6261da7-e9d81a4364ddd0c0.js +0 -9
  263. package/dist/src/web/nextui/_next/static/chunks/fd57813c.8f0e3582250c76c5.js +0 -1
  264. package/dist/src/web/nextui/_next/static/chunks/framework-c3d480eb9ad30ba5.js +0 -25
  265. package/dist/src/web/nextui/_next/static/chunks/main-6b1ff2291a752212.js +0 -1
  266. package/dist/src/web/nextui/_next/static/chunks/main-app-0dc90092cd7acaaf.js +0 -1
  267. package/dist/src/web/nextui/_next/static/chunks/pages/_app-998b254a061422d4.js +0 -1
  268. package/dist/src/web/nextui/_next/static/chunks/pages/_error-94f0db477e27e000.js +0 -1
  269. package/dist/src/web/nextui/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -1
  270. package/dist/src/web/nextui/_next/static/chunks/webpack-452ae8c28379ed4c.js +0 -1
  271. package/dist/src/web/nextui/_next/static/css/48d388184a2f4ce3.css +0 -1
  272. package/dist/src/web/nextui/_next/static/css/4d76d7cdd9492e1d.css +0 -1
  273. package/dist/src/web/nextui/_next/static/css/8119d8bd13a8adab.css +0 -1
  274. package/dist/src/web/nextui/_next/static/css/87b5e6e04efd27e5.css +0 -1
  275. package/dist/src/web/nextui/_next/static/css/de0307797e31a3e6.css +0 -1
  276. package/dist/src/web/nextui/_next/static/css/eb523daddb89dfc1.css +0 -1
  277. package/dist/src/web/nextui/_next/static/css/edcd6f0b6c902fde.css +0 -1
  278. package/dist/src/web/nextui/_next/static/gtTJhFvE95U20UjbnSnMr/_buildManifest.js +0 -1
  279. package/dist/src/web/nextui/_next/static/gtTJhFvE95U20UjbnSnMr/_ssgManifest.js +0 -1
  280. package/dist/src/web/nextui/_next/static/media/26a46d62cd723877-s.woff2 +0 -0
  281. package/dist/src/web/nextui/_next/static/media/55c55f0601d81cf3-s.woff2 +0 -0
  282. package/dist/src/web/nextui/_next/static/media/581909926a08bbc8-s.woff2 +0 -0
  283. package/dist/src/web/nextui/_next/static/media/6d93bde91c0c2823-s.woff2 +0 -0
  284. package/dist/src/web/nextui/_next/static/media/97e0cb1ae144a2a9-s.woff2 +0 -0
  285. package/dist/src/web/nextui/_next/static/media/a34f9d1faa5f3315-s.p.woff2 +0 -0
  286. package/dist/src/web/nextui/_next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  287. package/dist/src/web/nextui/android-chrome-192x192.png +0 -0
  288. package/dist/src/web/nextui/android-chrome-512x512.png +0 -0
  289. package/dist/src/web/nextui/apple-touch-icon.png +0 -0
  290. package/dist/src/web/nextui/auth/callback +0 -1
  291. package/dist/src/web/nextui/auth/login/index.html +0 -1
  292. package/dist/src/web/nextui/auth/login/index.txt +0 -10
  293. package/dist/src/web/nextui/auth/signup/index.html +0 -1
  294. package/dist/src/web/nextui/auth/signup/index.txt +0 -10
  295. package/dist/src/web/nextui/browserconfig.xml +0 -9
  296. package/dist/src/web/nextui/datasets/index.html +0 -1
  297. package/dist/src/web/nextui/datasets/index.txt +0 -10
  298. package/dist/src/web/nextui/eval/index.html +0 -1
  299. package/dist/src/web/nextui/eval/index.txt +0 -12
  300. package/dist/src/web/nextui/index.html +0 -1
  301. package/dist/src/web/nextui/index.txt +0 -11
  302. package/dist/src/web/nextui/logo.svg +0 -30
  303. package/dist/src/web/nextui/mstile-144x144.png +0 -0
  304. package/dist/src/web/nextui/mstile-150x150.png +0 -0
  305. package/dist/src/web/nextui/mstile-310x150.png +0 -0
  306. package/dist/src/web/nextui/mstile-310x310.png +0 -0
  307. package/dist/src/web/nextui/mstile-70x70.png +0 -0
  308. package/dist/src/web/nextui/progress/index.html +0 -1
  309. package/dist/src/web/nextui/progress/index.txt +0 -10
  310. package/dist/src/web/nextui/prompts/index.html +0 -1
  311. package/dist/src/web/nextui/prompts/index.txt +0 -10
  312. package/dist/src/web/nextui/report/index.html +0 -1
  313. package/dist/src/web/nextui/report/index.txt +0 -12
  314. package/dist/src/web/nextui/safari-pinned-tab.svg +0 -68
  315. package/dist/src/web/nextui/setup/index.html +0 -1
  316. package/dist/src/web/nextui/setup/index.txt +0 -12
  317. package/dist/src/web/nextui/site.webmanifest +0 -19
  318. package/dist/test/commands/redteam/generate.test.d.ts.map +0 -1
  319. package/dist/test/pythonWrapper.test.d.ts +0 -2
  320. package/dist/test/pythonWrapper.test.d.ts.map +0 -1
  321. package/dist/test/pythonWrapper.test.js +0 -99
  322. package/dist/test/pythonWrapper.test.js.map +0 -1
  323. /package/dist/src/{web/nextui/logo-panda.svg → app/assets/logo-panda-BuYvzEyb.svg} +0 -0
  324. /package/dist/src/{web/nextui → app}/favicon-16x16.png +0 -0
  325. /package/dist/src/{web/nextui → app}/favicon-32x32.png +0 -0
  326. /package/dist/src/{web/nextui → app}/favicon.ico +0 -0
  327. /package/dist/src/{commands/redteam → redteam/commands}/init.d.ts +0 -0
  328. /package/dist/src/{commands/redteam → redteam/commands}/plugins.d.ts +0 -0
  329. /package/dist/test/{commands/redteam → redteam/commands}/generate.test.d.ts +0 -0
@@ -3,29 +3,101 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.state = void 0;
7
+ exports.tryPath = tryPath;
8
+ exports.validatePythonPath = validatePythonPath;
6
9
  exports.runPython = runPython;
7
- const fs_1 = require("fs");
10
+ const fs_1 = __importDefault(require("fs"));
8
11
  const os_1 = __importDefault(require("os"));
9
12
  const path_1 = __importDefault(require("path"));
10
13
  const python_shell_1 = require("python-shell");
11
14
  const envars_1 = require("../envars");
12
15
  const logger_1 = __importDefault(require("../logger"));
13
16
  const json_1 = require("../util/json");
17
+ const execAsync_1 = require("./execAsync");
18
+ exports.state = { cachedPythonPath: null };
19
+ /**
20
+ * Attempts to validate a Python executable path.
21
+ * @param path - The path to the Python executable to test.
22
+ * @returns The validated path if successful, or null if invalid.
23
+ */
24
+ async function tryPath(path) {
25
+ try {
26
+ const result = await Promise.race([
27
+ (0, execAsync_1.execAsync)(`${path} --version`),
28
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Command timed out')), 250)),
29
+ ]);
30
+ const versionOutput = result.stdout.trim();
31
+ if (versionOutput.startsWith('Python')) {
32
+ return path;
33
+ }
34
+ return null;
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ /**
41
+ * Validates and caches the Python executable path.
42
+ *
43
+ * @param pythonPath - Path to the Python executable.
44
+ * @param isExplicit - If true, only tries the provided path.
45
+ * @returns Validated Python executable path.
46
+ * @throws {Error} If no valid Python executable is found.
47
+ */
48
+ async function validatePythonPath(pythonPath, isExplicit) {
49
+ if (exports.state.cachedPythonPath) {
50
+ return exports.state.cachedPythonPath;
51
+ }
52
+ const primaryPath = await tryPath(pythonPath);
53
+ if (primaryPath) {
54
+ exports.state.cachedPythonPath = primaryPath;
55
+ return primaryPath;
56
+ }
57
+ if (isExplicit) {
58
+ throw new Error(`Python 3 not found. Tried "${pythonPath}" ` +
59
+ `Please ensure Python 3 is installed and set the PROMPTFOO_PYTHON environment variable ` +
60
+ `to your Python 3 executable path (e.g., '${process.platform === 'win32' ? 'C:\\Python39\\python.exe' : '/usr/bin/python3'}').`);
61
+ }
62
+ const alternativePath = process.platform === 'win32' ? 'py -3' : 'python3';
63
+ const secondaryPath = await tryPath(alternativePath);
64
+ if (secondaryPath) {
65
+ exports.state.cachedPythonPath = secondaryPath;
66
+ return secondaryPath;
67
+ }
68
+ throw new Error(`Python 3 not found. Tried "${pythonPath}" and "${alternativePath}". ` +
69
+ `Please ensure Python 3 is installed and set the PROMPTFOO_PYTHON environment variable ` +
70
+ `to your Python 3 executable path (e.g., '${process.platform === 'win32' ? 'C:\\Python39\\python.exe' : '/usr/bin/python3'}').`);
71
+ }
72
+ /**
73
+ * Runs a Python script with the specified method and arguments.
74
+ *
75
+ * @param scriptPath - The path to the Python script to run.
76
+ * @param method - The name of the method to call in the Python script.
77
+ * @param args - An array of arguments to pass to the Python script.
78
+ * @param options - Optional settings for running the Python script.
79
+ * @param options.pythonExecutable - Optional path to the Python executable.
80
+ * @returns A promise that resolves to the output of the Python script.
81
+ * @throws An error if there's an issue running the Python script or parsing its output.
82
+ */
14
83
  async function runPython(scriptPath, method, args, options = {}) {
15
84
  const absPath = path_1.default.resolve(scriptPath);
16
85
  const tempJsonPath = path_1.default.join(os_1.default.tmpdir(), `promptfoo-python-input-json-${Date.now()}-${Math.random().toString(16).slice(2)}.json`);
17
86
  const outputPath = path_1.default.join(os_1.default.tmpdir(), `promptfoo-python-output-json-${Date.now()}-${Math.random().toString(16).slice(2)}.json`);
87
+ const customPath = options.pythonExecutable || (0, envars_1.getEnvString)('PROMPTFOO_PYTHON');
88
+ const pythonPath = customPath || 'python';
89
+ await validatePythonPath(pythonPath, typeof customPath === 'string');
18
90
  const pythonOptions = {
19
- mode: 'text',
20
- pythonPath: options.pythonExecutable || (0, envars_1.getEnvString)('PROMPTFOO_PYTHON') || 'python',
91
+ mode: 'binary',
92
+ pythonPath,
21
93
  scriptPath: __dirname,
22
94
  args: [absPath, method, tempJsonPath, outputPath],
23
95
  };
24
96
  try {
25
- await fs_1.promises.writeFile(tempJsonPath, (0, json_1.safeJsonStringify)(args), 'utf-8');
97
+ await fs_1.default.writeFileSync(tempJsonPath, (0, json_1.safeJsonStringify)(args), 'utf-8');
26
98
  logger_1.default.debug(`Running Python wrapper with args: ${(0, json_1.safeJsonStringify)(args)}`);
27
99
  await python_shell_1.PythonShell.run('wrapper.py', pythonOptions);
28
- const output = await fs_1.promises.readFile(outputPath, 'utf-8');
100
+ const output = await fs_1.default.readFileSync(outputPath, 'utf-8');
29
101
  logger_1.default.debug(`Python script ${absPath} returned: ${output}`);
30
102
  let result;
31
103
  try {
@@ -46,7 +118,14 @@ async function runPython(scriptPath, method, args, options = {}) {
46
118
  'No Python traceback available'}`);
47
119
  }
48
120
  finally {
49
- await Promise.all([tempJsonPath, outputPath].map((file) => fs_1.promises.unlink(file).catch((error) => logger_1.default.error(`Error removing ${file}: ${error}`))));
121
+ await Promise.all([tempJsonPath, outputPath].map((file) => {
122
+ try {
123
+ fs_1.default.unlinkSync(file);
124
+ }
125
+ catch (error) {
126
+ logger_1.default.error(`Error removing ${file}: ${error}`);
127
+ }
128
+ }));
50
129
  }
51
130
  }
52
131
  //# sourceMappingURL=pythonUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pythonUtils.js","sourceRoot":"","sources":["../../../src/python/pythonUtils.ts"],"names":[],"mappings":";;;;;AASA,8BA8DC;AAvED,2BAAoC;AACpC,4CAAoB;AACpB,gDAAwB;AAExB,+CAA2C;AAC3C,sCAAyC;AACzC,uDAA+B;AAC/B,uCAAiD;AAE1C,KAAK,UAAU,SAAS,CAC7B,UAAkB,EAClB,MAAc,EACd,IAAqC,EACrC,UAAyC,EAAE;IAE3C,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAC5B,YAAE,CAAC,MAAM,EAAE,EACX,+BAA+B,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CACxF,CAAC;IACF,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAC1B,YAAE,CAAC,MAAM,EAAE,EACX,gCAAgC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CACzF,CAAC;IACF,MAAM,aAAa,GAAuB;QACxC,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAA,qBAAY,EAAC,kBAAkB,CAAC,IAAI,QAAQ;QACpF,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC;KAClD,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,aAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAA,wBAAiB,EAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACnE,gBAAM,CAAC,KAAK,CAAC,qCAAqC,IAAA,wBAAiB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,0BAAW,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACtD,gBAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,cAAc,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,MAAuD,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,iBAAkB,KAAe,CAAC,OAAO,yBACvC,MACF,kBAAmB,KAAe,CAAC,KAAK,EAAE,CAC3C,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,EAAE,IAAI,KAAK,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAM,CAAC,KAAK,CACV,gCAAiC,KAAe,CAAC,OAAO,kBACrD,KAAe,CAAC,KAAK,EAAE,OAAO,CAAC,0BAA0B,EAAE,oBAAoB,CAAC;YACjF,+BACF,EAAE,CACH,CAAC;QACF,MAAM,IAAI,KAAK,CACb,gCAAiC,KAAe,CAAC,OAAO,kBACrD,KAAe,CAAC,KAAK,EAAE,OAAO,CAAC,0BAA0B,EAAE,oBAAoB,CAAC;YACjF,+BACF,EAAE,CACH,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtC,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CACnF,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"pythonUtils.js","sourceRoot":"","sources":["../../../src/python/pythonUtils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../../src/python/wrapper.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,GACpC,OAAO,CAAC,GAAG,CAAC,CAkBd"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../../src/python/wrapper.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,GACpC,OAAO,CAAC,GAAG,CAAC,CAoBd"}
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.runPythonCode = runPythonCode;
7
- const fs_1 = require("fs");
7
+ const fs_1 = __importDefault(require("fs"));
8
8
  const os_1 = __importDefault(require("os"));
9
9
  const path_1 = __importDefault(require("path"));
10
10
  const logger_1 = __importDefault(require("../logger"));
@@ -19,7 +19,7 @@ const pythonUtils_1 = require("./pythonUtils");
19
19
  async function runPythonCode(code, method, args) {
20
20
  const tempFilePath = path_1.default.join(os_1.default.tmpdir(), `temp-python-code-${Date.now()}-${Math.random().toString(16).slice(2)}.py`);
21
21
  try {
22
- await fs_1.promises.writeFile(tempFilePath, code);
22
+ fs_1.default.writeFileSync(tempFilePath, code);
23
23
  // Necessary to await so temp file doesn't get deleted.
24
24
  const result = await (0, pythonUtils_1.runPython)(tempFilePath, method, args);
25
25
  return result;
@@ -29,9 +29,12 @@ async function runPythonCode(code, method, args) {
29
29
  throw error;
30
30
  }
31
31
  finally {
32
- await fs_1.promises
33
- .unlink(tempFilePath)
34
- .catch((error) => logger_1.default.error(`Error removing temporary file: ${error}`));
32
+ try {
33
+ fs_1.default.unlinkSync(tempFilePath);
34
+ }
35
+ catch (error) {
36
+ logger_1.default.error(`Error removing temporary file: ${error}`);
37
+ }
35
38
  }
36
39
  }
37
40
  //# sourceMappingURL=wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/python/wrapper.ts"],"names":[],"mappings":";;;;;AAaA,sCAsBC;AAnCD,2BAAoC;AACpC,4CAAoB;AACpB,gDAAwB;AACxB,uDAA+B;AAC/B,+CAA0C;AAE1C;;;;;;GAMG;AACI,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,MAAc,EACd,IAAqC;IAErC,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAC5B,YAAE,CAAC,MAAM,EAAE,EACX,oBAAoB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAC3E,CAAC;IACF,IAAI,CAAC;QACH,MAAM,aAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACvC,uDAAuD;QACvD,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAS,EAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAM,CAAC,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,aAAE;aACL,MAAM,CAAC,YAAY,CAAC;aACpB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAM,CAAC,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/python/wrapper.ts"],"names":[],"mappings":";;;;;AAaA,sCAwBC;AArCD,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AACxB,uDAA+B;AAC/B,+CAA0C;AAE1C;;;;;;GAMG;AACI,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,MAAc,EACd,IAAqC;IAErC,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAC5B,YAAE,CAAC,MAAM,EAAE,EACX,oBAAoB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAC3E,CAAC;IACF,IAAI,CAAC;QACH,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACrC,uDAAuD;QACvD,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAS,EAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAM,CAAC,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAM,CAAC,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { Command } from 'commander';
2
2
  import type { UnifiedConfig } from '../../types';
3
- import type { RedteamCliGenerateOptions } from '../../types/redteam';
3
+ import type { RedteamCliGenerateOptions } from '../types';
4
4
  export declare function doGenerateRedteam(options: RedteamCliGenerateOptions): Promise<void>;
5
5
  export declare function generateRedteamCommand(program: Command, command: 'redteam' | 'generate', defaultConfig: Partial<UnifiedConfig>, defaultConfigPath: string | undefined): void;
6
6
  //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/redteam/commands/generate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,aAAa,CAAC;AAY5D,OAAO,KAAK,EAAqB,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAG7E,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,yBAAyB,iBA+KzE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,SAAS,GAAG,UAAU,EAC/B,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,EACrC,iBAAiB,EAAE,MAAM,GAAG,SAAS,QAoHtC"}
@@ -35,19 +35,19 @@ const js_yaml_1 = __importDefault(require("js-yaml"));
35
35
  const path_1 = __importDefault(require("path"));
36
36
  const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
37
37
  const zod_1 = require("zod");
38
+ const __1 = require("..");
38
39
  const cache_1 = require("../../cache");
39
40
  const cliState_1 = __importDefault(require("../../cliState"));
40
41
  const config_1 = require("../../config");
41
42
  const logger_1 = __importDefault(require("../../logger"));
42
- const redteam_1 = require("../../redteam");
43
- const constants_1 = require("../../redteam/constants");
44
- const util_1 = require("../../redteam/util");
45
43
  const telemetry_1 = __importDefault(require("../../telemetry"));
46
- const util_2 = require("../../util");
44
+ const util_1 = require("../../util");
47
45
  const config_2 = require("../../util/config");
48
- const redteam_2 = require("../../validators/redteam");
46
+ const redteam_1 = require("../../validators/redteam");
47
+ const constants_1 = require("../constants");
48
+ const util_2 = require("../util");
49
49
  async function doGenerateRedteam(options) {
50
- (0, util_2.setupEnv)(options.envFile);
50
+ (0, util_1.setupEnv)(options.envFile);
51
51
  if (!options.cache) {
52
52
  logger_1.default.info('Cache is disabled');
53
53
  (0, cache_1.disableCache)();
@@ -120,13 +120,13 @@ async function doGenerateRedteam(options) {
120
120
  strategies: strategyObjs,
121
121
  delay: redteamConfig?.delay || options.delay,
122
122
  };
123
- const parsedConfig = redteam_2.RedteamConfigSchema.safeParse(config);
123
+ const parsedConfig = redteam_1.RedteamConfigSchema.safeParse(config);
124
124
  if (!parsedConfig.success) {
125
125
  logger_1.default.error('Invalid redteam configuration:');
126
126
  logger_1.default.error(parsedConfig.error.toString());
127
127
  throw new Error('Invalid redteam configuration');
128
128
  }
129
- const { testCases: redteamTests, purpose, entities, } = await (0, redteam_1.synthesize)({
129
+ const { testCases: redteamTests, purpose, entities, } = await (0, __1.synthesize)({
130
130
  ...parsedConfig.data,
131
131
  language: config.language,
132
132
  numTests: config.numTests,
@@ -158,12 +158,12 @@ async function doGenerateRedteam(options) {
158
158
  redteam: { ...(existingYaml.redteam || {}), ...updatedRedteamConfig },
159
159
  };
160
160
  (0, config_2.writePromptfooConfig)(updatedYaml, options.output);
161
- (0, util_2.printBorder)();
161
+ (0, util_1.printBorder)();
162
162
  const relativeOutputPath = path_1.default.relative(process.cwd(), options.output);
163
163
  logger_1.default.info(`Wrote ${redteamTests.length} new test cases to ${relativeOutputPath}`);
164
164
  logger_1.default.info('\n' +
165
165
  chalk_1.default.green(`Run ${chalk_1.default.bold(`promptfoo eval -c ${relativeOutputPath}`)} to run the red team!`));
166
- (0, util_2.printBorder)();
166
+ (0, util_1.printBorder)();
167
167
  }
168
168
  else if (options.write && configPath) {
169
169
  const existingConfig = js_yaml_1.default.load(fs.readFileSync(configPath, 'utf8'));
@@ -225,7 +225,7 @@ function generateRedteamCommand(program, command, defaultConfig, defaultConfigPa
225
225
  .option('-n, --num-tests <number>', 'Number of test cases to generate per plugin', (val) => (Number.isInteger(val) ? val : Number.parseInt(val, 10)), undefined)
226
226
  .option('--language <language>', 'Specify the language for generated tests. Defaults to English')
227
227
  .option('--no-cache', 'Do not read or write results to disk cache', false)
228
- .option('--env-file <path>', 'Path to .env file')
228
+ .option('--env-file, --env-path <path>', 'Path to .env file')
229
229
  .option('-j, --max-concurrency <number>', 'Maximum number of concurrent API calls', (val) => Number.parseInt(val, 10), defaultConfig.evaluateOptions?.maxConcurrency)
230
230
  .option('--delay <number>', 'Delay in milliseconds between plugin API calls', (val) => Number.parseInt(val, 10))
231
231
  .option('--remote', 'Force remote inference wherever possible', false)
@@ -233,7 +233,7 @@ function generateRedteamCommand(program, command, defaultConfig, defaultConfigPa
233
233
  if (opts.remote) {
234
234
  cliState_1.default.remote = true;
235
235
  }
236
- if ((0, util_1.shouldGenerateRemote)()) {
236
+ if ((0, util_2.shouldGenerateRemote)()) {
237
237
  logger_1.default.debug('Remote generation enabled');
238
238
  }
239
239
  else {
@@ -242,7 +242,7 @@ function generateRedteamCommand(program, command, defaultConfig, defaultConfigPa
242
242
  try {
243
243
  let overrides = {};
244
244
  if (opts.plugins && opts.plugins.length > 0) {
245
- const parsed = redteam_2.RedteamConfigSchema.safeParse({
245
+ const parsed = redteam_1.RedteamConfigSchema.safeParse({
246
246
  plugins: opts.plugins,
247
247
  strategies: opts.strategies,
248
248
  numTests: opts.numTests,
@@ -260,7 +260,7 @@ function generateRedteamCommand(program, command, defaultConfig, defaultConfigPa
260
260
  logger_1.default.info('No output file specified, writing to redteam.yaml in the current directory');
261
261
  opts.output = 'redteam.yaml';
262
262
  }
263
- const validatedOpts = redteam_2.RedteamGenerateOptionsSchema.parse({
263
+ const validatedOpts = redteam_1.RedteamGenerateOptionsSchema.parse({
264
264
  ...opts,
265
265
  ...overrides,
266
266
  defaultConfig,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/redteam/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/redteam/commands/init.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+JzC,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,iBAwa9D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,QA2B3C"}
@@ -44,15 +44,16 @@ const accounts_1 = require("../../accounts");
44
44
  const envars_1 = require("../../envars");
45
45
  const globalConfig_1 = require("../../globalConfig");
46
46
  const logger_1 = __importDefault(require("../../logger"));
47
- const constants_1 = require("../../redteam/constants");
48
47
  const telemetry_1 = __importDefault(require("../../telemetry"));
49
48
  const templates_1 = require("../../util/templates");
49
+ const constants_1 = require("../constants");
50
50
  const generate_1 = require("./generate");
51
51
  const REDTEAM_CONFIG_TEMPLATE = `# Red teaming configuration
52
52
  # Docs: https://promptfoo.dev/docs/red-team/configuration
53
53
 
54
54
  description: "My first red team"
55
55
 
56
+ {% if prompts.length > 0 -%}
56
57
  prompts:
57
58
  {% for prompt in prompts -%}
58
59
  - {{ prompt | dump }}
@@ -62,9 +63,10 @@ prompts:
62
63
  # - file:///path/to/prompt.json
63
64
  # Learn more: https://promptfoo.dev/docs/configuration/parameters/#prompts
64
65
  {% endif %}
66
+ {% endif -%}
65
67
 
66
- providers:
67
- # Providers are red team targets. To talk directly to your application, use a custom provider.
68
+ targets:
69
+ # Red team targets. To talk directly to your application, use a custom provider.
68
70
  # See https://promptfoo.dev/docs/red-team/configuration/#providers
69
71
  {% for provider in providers -%}
70
72
  {% if provider is string -%}
@@ -78,6 +80,7 @@ providers:
78
80
  {% endif -%}
79
81
  {% endfor %}
80
82
 
83
+ # Other redteam settings
81
84
  redteam:
82
85
  {% if purpose is defined -%}
83
86
  purpose: {{ purpose | dump }}
@@ -147,10 +150,10 @@ function recordOnboardingStep(step, properties = {}) {
147
150
  });
148
151
  }
149
152
  async function getSystemPrompt(numVariablesRequired = 1) {
150
- const NOTE = 'NOTE: your prompt must include one or more injectable variables like {{query}} or {{name}} as a placeholder for user input (REMOVE THIS LINE)';
153
+ const NOTE = 'NOTE: your prompt must include one or more injectable variables like {{prompt}} or {{name}} as a placeholder for user input (REMOVE THIS LINE)';
151
154
  let prompt = (0, dedent_1.default) `You are a helpful and concise assistant.
152
155
 
153
- User query: {{query}}
156
+ User query: {{prompt}}
154
157
 
155
158
  ${NOTE}`;
156
159
  prompt = await (0, editor_1.default)({
@@ -161,7 +164,7 @@ async function getSystemPrompt(numVariablesRequired = 1) {
161
164
  const variables = (0, templates_1.extractVariablesFromTemplate)(prompt);
162
165
  if (variables.length < numVariablesRequired) {
163
166
  // Give the user another chance to edit their prompt
164
- logger_1.default.info(chalk_1.default.red(`Your prompt must include ${numVariablesRequired} ${numVariablesRequired === 1 ? 'variable' : 'variables'} like "{{query}}" as a placeholder for user input.`));
167
+ logger_1.default.info(chalk_1.default.red(`Your prompt must include ${numVariablesRequired} ${numVariablesRequired === 1 ? 'variable' : 'variables'} like "{{prompt}}" as a placeholder for user input.`));
165
168
  prompt = await (0, editor_1.default)({
166
169
  message: 'Enter the prompt you want to test against:',
167
170
  default: prompt,
@@ -183,8 +186,8 @@ async function redteamInit(directory) {
183
186
  message: 'What would you like to do?',
184
187
  choices: [
185
188
  { name: 'Not sure yet', value: 'not_sure' },
186
- { name: 'Red team a prompt, model, or chatbot', value: 'prompt_model_chatbot' },
187
189
  { name: 'Red team an HTTP endpoint', value: 'http_endpoint' },
190
+ { name: 'Red team a model + prompt', value: 'prompt_model_chatbot' },
188
191
  { name: 'Red team a RAG', value: 'rag' },
189
192
  { name: 'Red team an Agent', value: 'agent' },
190
193
  ],
@@ -193,9 +196,12 @@ async function redteamInit(directory) {
193
196
  recordOnboardingStep('choose app type', { value: redTeamChoice });
194
197
  const prompts = [];
195
198
  let purpose;
196
- const useCustomProvider = redTeamChoice === 'rag' || redTeamChoice === 'agent' || redTeamChoice === 'http_endpoint';
199
+ const useCustomProvider = redTeamChoice === 'rag' ||
200
+ redTeamChoice === 'agent' ||
201
+ redTeamChoice === 'http_endpoint' ||
202
+ redTeamChoice === 'not_sure';
197
203
  let deferGeneration = useCustomProvider;
198
- const defaultPrompt = 'You are a travel agent specialized in budget trips to Europe\n\nUser query: {{query}}';
204
+ const defaultPrompt = 'You are a travel agent specialized in budget trips to Europe\n\nUser query: {{prompt}}';
199
205
  const defaultPurpose = 'Travel agent specializing in budget trips to Europe';
200
206
  if (useCustomProvider) {
201
207
  purpose =
@@ -203,7 +209,6 @@ async function redteamInit(directory) {
203
209
  message: (0, dedent_1.default) `What is the purpose of your application? This is used to tailor the attacks. Be as specific as possible.
204
210
  (e.g. "${defaultPurpose}")\n`,
205
211
  })) || defaultPurpose;
206
- prompts.push(`{{query}}`);
207
212
  recordOnboardingStep('choose purpose', { value: purpose });
208
213
  }
209
214
  else if (redTeamChoice === 'prompt_model_chatbot') {
@@ -226,11 +231,11 @@ async function redteamInit(directory) {
226
231
  prompts.push(prompt);
227
232
  }
228
233
  else {
229
- prompts.push('You are a travel agent specialized in budget trips to Europe\n\nUser query: {{query}}');
234
+ prompts.push('You are a travel agent specialized in budget trips to Europe\n\nUser query: {{prompt}}');
230
235
  }
231
236
  let providers;
232
237
  if (useCustomProvider) {
233
- if (redTeamChoice === 'http_endpoint') {
238
+ if (redTeamChoice === 'http_endpoint' || redTeamChoice === 'not_sure') {
234
239
  providers = [
235
240
  {
236
241
  id: 'https://example.com/generate',
@@ -494,13 +499,16 @@ async function redteamInit(directory) {
494
499
  fs.writeFileSync(path.join(projectDir, 'chat.py'), CUSTOM_PROVIDER_TEMPLATE, 'utf8');
495
500
  }
496
501
  console.clear();
497
- logger_1.default.info(chalk_1.default.green(`\nCreated red teaming configuration file at ${configPath}\n`));
502
+ logger_1.default.info(chalk_1.default.green(`\nCreated red teaming configuration file at ${chalk_1.default.bold(configPath)}\n`));
498
503
  telemetry_1.default.record('command_used', { name: 'redteam init' });
499
504
  await recordOnboardingStep('finish');
500
505
  if (deferGeneration) {
501
506
  logger_1.default.info('\n' +
502
- chalk_1.default.blue('To generate test cases after editing your configuration, use the command: ' +
503
- chalk_1.default.bold('promptfoo redteam generate')));
507
+ chalk_1.default.green((0, dedent_1.default) `
508
+ To generate test cases after editing your configuration, use the command:
509
+
510
+ ${chalk_1.default.bold('promptfoo redteam generate')}
511
+ `));
504
512
  return;
505
513
  }
506
514
  else {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/redteam/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../../src/commands/redteam/plugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAoB9C"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../../src/redteam/commands/plugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAoB9C"}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.pluginsCommand = pluginsCommand;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
8
  const logger_1 = __importDefault(require("../../logger"));
9
- const constants_1 = require("../../redteam/constants");
9
+ const constants_1 = require("../constants");
10
10
  function pluginsCommand(program) {
11
11
  program
12
12
  .command('plugins')
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../../src/commands/redteam/plugins.ts"],"names":[],"mappings":";;;;;AAKA,wCAoBC;AAzBD,kDAA0B;AAE1B,0DAAkC;AAClC,uDAAgG;AAEhG,SAAgB,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,YAAY,EAAE,2CAA2C,CAAC;SACjE,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,2BAAe,CAAC,CAAC,CAAC,uBAAW,CAAC;QAEtE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,gBAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,MAAM,WAAW,GAAG,mCAAuB,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC;gBAClF,gBAAM,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../../src/redteam/commands/plugins.ts"],"names":[],"mappings":";;;;;AAKA,wCAoBC;AAzBD,kDAA0B;AAE1B,0DAAkC;AAClC,4CAAqF;AAErF,SAAgB,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,YAAY,EAAE,2CAA2C,CAAC;SACjE,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,2BAAe,CAAC,CAAC,CAAC,uBAAW,CAAC;QAEtE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,gBAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,MAAM,WAAW,GAAG,mCAAuB,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC;gBAClF,gBAAM,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/redteam/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/redteam/constants.ts"],"names":[],"mappings":"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"}
@@ -168,11 +168,11 @@ exports.OWASP_API_TOP_10_MAPPING = {
168
168
  };
169
169
  exports.NIST_AI_RMF_MAPPING = {
170
170
  'nist:ai:measure:1.1': {
171
- plugins: ['harmful:misinformation-disinformation', 'overreliance', 'excessive-agency'],
171
+ plugins: ['harmful:misinformation-disinformation', 'excessive-agency'],
172
172
  strategies: ['jailbreak', 'prompt-injection'],
173
173
  },
174
174
  'nist:ai:measure:1.2': {
175
- plugins: ['harmful:misinformation-disinformation', 'overreliance', 'excessive-agency'],
175
+ plugins: ['harmful:misinformation-disinformation', 'excessive-agency'],
176
176
  strategies: ['jailbreak', 'prompt-injection'],
177
177
  },
178
178
  'nist:ai:measure:2.1': {
@@ -184,15 +184,15 @@ exports.NIST_AI_RMF_MAPPING = {
184
184
  strategies: [],
185
185
  },
186
186
  'nist:ai:measure:2.3': {
187
- plugins: ['overreliance', 'excessive-agency'],
187
+ plugins: ['excessive-agency'],
188
188
  strategies: [],
189
189
  },
190
190
  'nist:ai:measure:2.4': {
191
- plugins: ['overreliance', 'excessive-agency', 'harmful:misinformation-disinformation'],
191
+ plugins: ['excessive-agency', 'harmful:misinformation-disinformation'],
192
192
  strategies: ['jailbreak', 'prompt-injection'],
193
193
  },
194
194
  'nist:ai:measure:2.5': {
195
- plugins: ['overreliance', 'excessive-agency'],
195
+ plugins: ['excessive-agency'],
196
196
  strategies: [],
197
197
  },
198
198
  'nist:ai:measure:2.6': {
@@ -212,7 +212,7 @@ exports.NIST_AI_RMF_MAPPING = {
212
212
  strategies: [],
213
213
  },
214
214
  'nist:ai:measure:2.9': {
215
- plugins: ['overreliance', 'excessive-agency'],
215
+ plugins: ['excessive-agency'],
216
216
  strategies: [],
217
217
  },
218
218
  'nist:ai:measure:2.10': {
@@ -228,31 +228,31 @@ exports.NIST_AI_RMF_MAPPING = {
228
228
  strategies: [],
229
229
  },
230
230
  'nist:ai:measure:2.13': {
231
- plugins: ['overreliance', 'excessive-agency'],
231
+ plugins: ['excessive-agency'],
232
232
  strategies: [],
233
233
  },
234
234
  'nist:ai:measure:3.1': {
235
- plugins: ['overreliance', 'excessive-agency', 'harmful:misinformation-disinformation'],
235
+ plugins: ['excessive-agency', 'harmful:misinformation-disinformation'],
236
236
  strategies: ['jailbreak', 'prompt-injection'],
237
237
  },
238
238
  'nist:ai:measure:3.2': {
239
- plugins: ['overreliance', 'excessive-agency'],
239
+ plugins: ['excessive-agency'],
240
240
  strategies: [],
241
241
  },
242
242
  'nist:ai:measure:3.3': {
243
- plugins: ['overreliance', 'excessive-agency'],
243
+ plugins: ['excessive-agency'],
244
244
  strategies: [],
245
245
  },
246
246
  'nist:ai:measure:4.1': {
247
- plugins: ['overreliance', 'excessive-agency'],
247
+ plugins: ['excessive-agency'],
248
248
  strategies: [],
249
249
  },
250
250
  'nist:ai:measure:4.2': {
251
- plugins: ['overreliance', 'excessive-agency', 'harmful:misinformation-disinformation'],
251
+ plugins: ['excessive-agency', 'harmful:misinformation-disinformation'],
252
252
  strategies: [],
253
253
  },
254
254
  'nist:ai:measure:4.3': {
255
- plugins: ['overreliance', 'excessive-agency'],
255
+ plugins: ['excessive-agency'],
256
256
  strategies: [],
257
257
  },
258
258
  };
@@ -270,13 +270,7 @@ exports.MITRE_ATLAS_MAPPING = {
270
270
  strategies: ['jailbreak', 'prompt-injection', 'base64', 'leetspeak', 'rot13'],
271
271
  },
272
272
  'mitre:atlas:ml-attack-staging': {
273
- plugins: [
274
- 'overreliance',
275
- 'excessive-agency',
276
- 'hallucination',
277
- 'ascii-smuggling',
278
- 'indirect-prompt-injection',
279
- ],
273
+ plugins: ['excessive-agency', 'hallucination', 'ascii-smuggling', 'indirect-prompt-injection'],
280
274
  strategies: ['jailbreak', 'jailbreak:tree'],
281
275
  },
282
276
  'mitre:atlas:exfiltration': {
@@ -293,7 +287,7 @@ exports.MITRE_ATLAS_MAPPING = {
293
287
  strategies: [],
294
288
  },
295
289
  'mitre:atlas:impact': {
296
- plugins: ['harmful', 'overreliance', 'excessive-agency', 'hijacking', 'imitation', 'politics'],
290
+ plugins: ['harmful', 'excessive-agency', 'hijacking', 'imitation'],
297
291
  strategies: ['crescendo'],
298
292
  },
299
293
  };
@@ -330,7 +324,7 @@ exports.ALL_STRATEGIES = [
330
324
  ...exports.DEFAULT_STRATEGIES,
331
325
  ...exports.ADDITIONAL_STRATEGIES,
332
326
  ];
333
- // Duplicated in src/web/nextui/src/app/report/constants.ts for frontend
327
+ // Duplicated in src/app/report/constants.ts for frontend
334
328
  exports.subCategoryDescriptions = {
335
329
  default: 'Includes common plugins',
336
330
  basic: 'Raw attacks without any special attack strategies',