promptfoo 0.96.2 → 0.98.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 (289) hide show
  1. package/dist/package.json +15 -15
  2. package/dist/src/app/assets/index-D7I51A2q.js +789 -0
  3. package/dist/src/app/assets/{index-YwjS5Vq2.css → index-DatcZSwS.css} +1 -1
  4. package/dist/src/app/assets/{index.es-CrujH26S.js → index.es-COpBxjTX.js} +1 -1
  5. package/dist/src/app/assets/{sync-gFAH4kmH.js → sync-BY_V2XfM.js} +1 -1
  6. package/dist/src/app/index.html +2 -2
  7. package/dist/src/assertions/index.d.ts.map +1 -1
  8. package/dist/src/assertions/index.js +10 -3
  9. package/dist/src/assertions/index.js.map +1 -1
  10. package/dist/src/assertions/redteam.js +2 -2
  11. package/dist/src/assertions/redteam.js.map +1 -1
  12. package/dist/src/cache.d.ts +1 -0
  13. package/dist/src/cache.d.ts.map +1 -1
  14. package/dist/src/cache.js +5 -0
  15. package/dist/src/cache.js.map +1 -1
  16. package/dist/src/commands/eval.d.ts.map +1 -1
  17. package/dist/src/commands/eval.js +7 -2
  18. package/dist/src/commands/eval.js.map +1 -1
  19. package/dist/src/database/tables.d.ts +201 -182
  20. package/dist/src/database/tables.d.ts.map +1 -1
  21. package/dist/src/envars.d.ts +1 -1
  22. package/dist/src/envars.d.ts.map +1 -1
  23. package/dist/src/evaluator.d.ts.map +1 -1
  24. package/dist/src/evaluator.js +13 -3
  25. package/dist/src/evaluator.js.map +1 -1
  26. package/dist/src/index.d.ts +2 -106
  27. package/dist/src/index.d.ts.map +1 -1
  28. package/dist/src/logger.js +10 -10
  29. package/dist/src/logger.js.map +1 -1
  30. package/dist/src/main.js +15 -1
  31. package/dist/src/main.js.map +1 -1
  32. package/dist/src/models/eval.d.ts +2 -0
  33. package/dist/src/models/eval.d.ts.map +1 -1
  34. package/dist/src/models/eval.js +4 -0
  35. package/dist/src/models/eval.js.map +1 -1
  36. package/dist/src/prompts/processors/yaml.d.ts.map +1 -1
  37. package/dist/src/prompts/processors/yaml.js +7 -2
  38. package/dist/src/prompts/processors/yaml.js.map +1 -1
  39. package/dist/src/providers/adaline.gateway.d.ts +2 -1
  40. package/dist/src/providers/adaline.gateway.d.ts.map +1 -1
  41. package/dist/src/providers/adaline.gateway.js +2 -2
  42. package/dist/src/providers/adaline.gateway.js.map +1 -1
  43. package/dist/src/providers/ai21.d.ts +2 -1
  44. package/dist/src/providers/ai21.d.ts.map +1 -1
  45. package/dist/src/providers/ai21.js.map +1 -1
  46. package/dist/src/providers/anthropic.d.ts +2 -1
  47. package/dist/src/providers/anthropic.d.ts.map +1 -1
  48. package/dist/src/providers/anthropic.js.map +1 -1
  49. package/dist/src/providers/azure.d.ts +12 -4
  50. package/dist/src/providers/azure.d.ts.map +1 -1
  51. package/dist/src/providers/azure.js +106 -62
  52. package/dist/src/providers/azure.js.map +1 -1
  53. package/dist/src/providers/bam.d.ts +2 -1
  54. package/dist/src/providers/bam.d.ts.map +1 -1
  55. package/dist/src/providers/bam.js.map +1 -1
  56. package/dist/src/providers/bedrock.d.ts +6 -2
  57. package/dist/src/providers/bedrock.d.ts.map +1 -1
  58. package/dist/src/providers/bedrock.js +13 -0
  59. package/dist/src/providers/bedrock.js.map +1 -1
  60. package/dist/src/providers/cloudflare-ai.d.ts +2 -1
  61. package/dist/src/providers/cloudflare-ai.d.ts.map +1 -1
  62. package/dist/src/providers/cohere.d.ts +2 -1
  63. package/dist/src/providers/cohere.d.ts.map +1 -1
  64. package/dist/src/providers/defaults.d.ts +2 -1
  65. package/dist/src/providers/defaults.d.ts.map +1 -1
  66. package/dist/src/providers/defaults.js.map +1 -1
  67. package/dist/src/providers/fal.d.ts +2 -1
  68. package/dist/src/providers/fal.d.ts.map +1 -1
  69. package/dist/src/providers/fal.js.map +1 -1
  70. package/dist/src/providers/groq.d.ts +2 -1
  71. package/dist/src/providers/groq.d.ts.map +1 -1
  72. package/dist/src/providers/http.d.ts +5 -1
  73. package/dist/src/providers/http.d.ts.map +1 -1
  74. package/dist/src/providers/http.js +67 -10
  75. package/dist/src/providers/http.js.map +1 -1
  76. package/dist/src/providers/localai.d.ts +2 -1
  77. package/dist/src/providers/localai.d.ts.map +1 -1
  78. package/dist/src/providers/localai.js.map +1 -1
  79. package/dist/src/providers/mistral.d.ts +2 -1
  80. package/dist/src/providers/mistral.d.ts.map +1 -1
  81. package/dist/src/providers/openai.d.ts +2 -1
  82. package/dist/src/providers/openai.d.ts.map +1 -1
  83. package/dist/src/providers/openai.js +1 -1
  84. package/dist/src/providers/openai.js.map +1 -1
  85. package/dist/src/providers/palm.d.ts +2 -1
  86. package/dist/src/providers/palm.d.ts.map +1 -1
  87. package/dist/src/providers/palm.js.map +1 -1
  88. package/dist/src/providers/promptfoo.d.ts +9 -4
  89. package/dist/src/providers/promptfoo.d.ts.map +1 -1
  90. package/dist/src/providers/promptfoo.js +7 -7
  91. package/dist/src/providers/promptfoo.js.map +1 -1
  92. package/dist/src/providers/replicate.d.ts +2 -1
  93. package/dist/src/providers/replicate.d.ts.map +1 -1
  94. package/dist/src/providers/simulatedUser.d.ts.map +1 -1
  95. package/dist/src/providers/simulatedUser.js +5 -0
  96. package/dist/src/providers/simulatedUser.js.map +1 -1
  97. package/dist/src/providers/togetherai.d.ts +2 -1
  98. package/dist/src/providers/togetherai.d.ts.map +1 -1
  99. package/dist/src/providers/togetherai.js.map +1 -1
  100. package/dist/src/providers/vertex.d.ts +2 -1
  101. package/dist/src/providers/vertex.d.ts.map +1 -1
  102. package/dist/src/providers/watsonx.d.ts +2 -1
  103. package/dist/src/providers/watsonx.d.ts.map +1 -1
  104. package/dist/src/providers/watsonx.js.map +1 -1
  105. package/dist/src/providers/xai.d.ts +2 -1
  106. package/dist/src/providers/xai.d.ts.map +1 -1
  107. package/dist/src/providers/xai.js.map +1 -1
  108. package/dist/src/providers.d.ts +2 -1
  109. package/dist/src/providers.d.ts.map +1 -1
  110. package/dist/src/providers.js.map +1 -1
  111. package/dist/src/redteam/commands/generate.js +1 -1
  112. package/dist/src/redteam/commands/generate.js.map +1 -1
  113. package/dist/src/redteam/commands/init.d.ts.map +1 -1
  114. package/dist/src/redteam/commands/init.js +57 -49
  115. package/dist/src/redteam/commands/init.js.map +1 -1
  116. package/dist/src/redteam/commands/setup.d.ts +3 -0
  117. package/dist/src/redteam/commands/setup.d.ts.map +1 -0
  118. package/dist/src/redteam/commands/setup.js +31 -0
  119. package/dist/src/redteam/commands/setup.js.map +1 -0
  120. package/dist/src/redteam/constants.d.ts +2 -2
  121. package/dist/src/redteam/constants.d.ts.map +1 -1
  122. package/dist/src/redteam/constants.js +1 -1
  123. package/dist/src/redteam/constants.js.map +1 -1
  124. package/dist/src/redteam/graders.d.ts +2 -77
  125. package/dist/src/redteam/graders.d.ts.map +1 -1
  126. package/dist/src/redteam/graders.js +25 -25
  127. package/dist/src/redteam/graders.js.map +1 -1
  128. package/dist/src/redteam/index.d.ts.map +1 -1
  129. package/dist/src/redteam/index.js +46 -23
  130. package/dist/src/redteam/index.js.map +1 -1
  131. package/dist/src/redteam/plugins/base.d.ts +12 -7
  132. package/dist/src/redteam/plugins/base.d.ts.map +1 -1
  133. package/dist/src/redteam/plugins/base.js +42 -28
  134. package/dist/src/redteam/plugins/base.js.map +1 -1
  135. package/dist/src/redteam/plugins/competitors.d.ts.map +1 -1
  136. package/dist/src/redteam/plugins/competitors.js +2 -0
  137. package/dist/src/redteam/plugins/competitors.js.map +1 -1
  138. package/dist/src/redteam/plugins/debugAccess.d.ts.map +1 -1
  139. package/dist/src/redteam/plugins/debugAccess.js +18 -0
  140. package/dist/src/redteam/plugins/debugAccess.js.map +1 -1
  141. package/dist/src/redteam/plugins/harmful/aligned.d.ts +13 -0
  142. package/dist/src/redteam/plugins/harmful/aligned.d.ts.map +1 -0
  143. package/dist/src/redteam/plugins/harmful/aligned.js +29 -0
  144. package/dist/src/redteam/plugins/harmful/aligned.js.map +1 -0
  145. package/dist/src/redteam/plugins/harmful/common.d.ts +5 -0
  146. package/dist/src/redteam/plugins/harmful/common.d.ts.map +1 -0
  147. package/dist/src/redteam/plugins/harmful/common.js +39 -0
  148. package/dist/src/redteam/plugins/harmful/common.js.map +1 -0
  149. package/dist/src/redteam/plugins/harmful/constants.d.ts +10 -0
  150. package/dist/src/redteam/plugins/harmful/constants.d.ts.map +1 -0
  151. package/dist/src/redteam/plugins/harmful/constants.js +166 -0
  152. package/dist/src/redteam/plugins/harmful/constants.js.map +1 -0
  153. package/dist/src/redteam/plugins/harmful/graders.d.ts +15 -0
  154. package/dist/src/redteam/plugins/harmful/graders.d.ts.map +1 -0
  155. package/dist/src/redteam/plugins/harmful/graders.js +94 -0
  156. package/dist/src/redteam/plugins/harmful/graders.js.map +1 -0
  157. package/dist/src/redteam/plugins/harmful/unaligned.d.ts +5 -0
  158. package/dist/src/redteam/plugins/harmful/unaligned.d.ts.map +1 -0
  159. package/dist/src/redteam/plugins/harmful/unaligned.js +29 -0
  160. package/dist/src/redteam/plugins/harmful/unaligned.js.map +1 -0
  161. package/dist/src/redteam/plugins/index.d.ts.map +1 -1
  162. package/dist/src/redteam/plugins/index.js +29 -26
  163. package/dist/src/redteam/plugins/index.js.map +1 -1
  164. package/dist/src/redteam/plugins/intent.d.ts.map +1 -1
  165. package/dist/src/redteam/plugins/intent.js +6 -0
  166. package/dist/src/redteam/plugins/intent.js.map +1 -1
  167. package/dist/src/redteam/providers/crescendo/index.d.ts +9 -0
  168. package/dist/src/redteam/providers/crescendo/index.d.ts.map +1 -1
  169. package/dist/src/redteam/providers/crescendo/index.js +96 -39
  170. package/dist/src/redteam/providers/crescendo/index.js.map +1 -1
  171. package/dist/src/redteam/providers/goat.d.ts.map +1 -1
  172. package/dist/src/redteam/providers/goat.js +33 -1
  173. package/dist/src/redteam/providers/goat.js.map +1 -1
  174. package/dist/src/redteam/providers/iterative.d.ts +7 -0
  175. package/dist/src/redteam/providers/iterative.d.ts.map +1 -1
  176. package/dist/src/redteam/providers/iterative.js +55 -3
  177. package/dist/src/redteam/providers/iterative.js.map +1 -1
  178. package/dist/src/redteam/providers/iterativeImage.d.ts +9 -1
  179. package/dist/src/redteam/providers/iterativeImage.d.ts.map +1 -1
  180. package/dist/src/redteam/providers/iterativeImage.js +42 -12
  181. package/dist/src/redteam/providers/iterativeImage.js.map +1 -1
  182. package/dist/src/redteam/providers/iterativeTree.d.ts +7 -2
  183. package/dist/src/redteam/providers/iterativeTree.d.ts.map +1 -1
  184. package/dist/src/redteam/providers/iterativeTree.js +56 -11
  185. package/dist/src/redteam/providers/iterativeTree.js.map +1 -1
  186. package/dist/src/redteam/providers/shared.d.ts +9 -3
  187. package/dist/src/redteam/providers/shared.d.ts.map +1 -1
  188. package/dist/src/redteam/providers/shared.js +15 -6
  189. package/dist/src/redteam/providers/shared.js.map +1 -1
  190. package/dist/src/redteam/strategies/index.d.ts +3 -2
  191. package/dist/src/redteam/strategies/index.d.ts.map +1 -1
  192. package/dist/src/redteam/strategies/index.js +48 -13
  193. package/dist/src/redteam/strategies/index.js.map +1 -1
  194. package/dist/src/redteam/strategies/multilingual.d.ts.map +1 -1
  195. package/dist/src/redteam/strategies/multilingual.js +1 -0
  196. package/dist/src/redteam/strategies/multilingual.js.map +1 -1
  197. package/dist/src/redteam/types.d.ts +6 -0
  198. package/dist/src/redteam/types.d.ts.map +1 -1
  199. package/dist/src/server/routes/providers.js +1 -0
  200. package/dist/src/server/routes/providers.js.map +1 -1
  201. package/dist/src/server/server.d.ts +2 -1
  202. package/dist/src/server/server.d.ts.map +1 -1
  203. package/dist/src/server/server.js +13 -3
  204. package/dist/src/server/server.js.map +1 -1
  205. package/dist/src/share.d.ts.map +1 -1
  206. package/dist/src/share.js +11 -0
  207. package/dist/src/share.js.map +1 -1
  208. package/dist/src/types/env.d.ts +54 -0
  209. package/dist/src/types/env.d.ts.map +1 -0
  210. package/dist/src/types/env.js +3 -0
  211. package/dist/src/types/env.js.map +1 -0
  212. package/dist/src/types/index.d.ts +8185 -6164
  213. package/dist/src/types/index.d.ts.map +1 -1
  214. package/dist/src/types/index.js +8 -2
  215. package/dist/src/types/index.js.map +1 -1
  216. package/dist/src/types/providers.d.ts +3 -53
  217. package/dist/src/types/providers.d.ts.map +1 -1
  218. package/dist/src/types/providers.js.map +1 -1
  219. package/dist/src/types/shared.d.ts +1 -0
  220. package/dist/src/types/shared.d.ts.map +1 -1
  221. package/dist/src/util/config/load.js +1 -1
  222. package/dist/src/util/config/load.js.map +1 -1
  223. package/dist/src/util/exportToFile/index.d.ts +1 -0
  224. package/dist/src/util/exportToFile/index.d.ts.map +1 -1
  225. package/dist/src/util/index.d.ts +42 -34
  226. package/dist/src/util/index.d.ts.map +1 -1
  227. package/dist/src/util/transform.d.ts +1 -0
  228. package/dist/src/util/transform.d.ts.map +1 -1
  229. package/dist/src/util/transform.js.map +1 -1
  230. package/dist/src/validators/providers.d.ts +311 -296
  231. package/dist/src/validators/providers.d.ts.map +1 -1
  232. package/dist/src/validators/redteam.d.ts +126 -126
  233. package/dist/src/validators/redteam.d.ts.map +1 -1
  234. package/dist/src/validators/redteam.js +14 -2
  235. package/dist/src/validators/redteam.js.map +1 -1
  236. package/dist/src/validators/shared.d.ts +3 -0
  237. package/dist/src/validators/shared.d.ts.map +1 -1
  238. package/dist/src/validators/shared.js +1 -0
  239. package/dist/src/validators/shared.js.map +1 -1
  240. package/dist/test/cache.test.js +47 -7
  241. package/dist/test/cache.test.js.map +1 -1
  242. package/dist/test/commands/init.test.js +14 -0
  243. package/dist/test/commands/init.test.js.map +1 -1
  244. package/dist/test/evaluator.test.js +136 -32
  245. package/dist/test/evaluator.test.js.map +1 -1
  246. package/dist/test/factories/evalFactory.d.ts +161 -148
  247. package/dist/test/factories/evalFactory.d.ts.map +1 -1
  248. package/dist/test/prompts/index.test.js +38 -25
  249. package/dist/test/prompts/index.test.js.map +1 -1
  250. package/dist/test/prompts/processors/yaml.test.js +50 -4
  251. package/dist/test/prompts/processors/yaml.test.js.map +1 -1
  252. package/dist/test/providers/http.test.js +0 -17
  253. package/dist/test/providers/http.test.js.map +1 -1
  254. package/dist/test/providers/index.test.js +1 -0
  255. package/dist/test/providers/index.test.js.map +1 -1
  256. package/dist/test/providers/togetherai.test.js.map +1 -1
  257. package/dist/test/redteam/index.test.js +2 -2
  258. package/dist/test/redteam/index.test.js.map +1 -1
  259. package/dist/test/redteam/plugins/base.test.js +61 -23
  260. package/dist/test/redteam/plugins/base.test.js.map +1 -1
  261. package/dist/test/redteam/plugins/harmful/aligned.test.d.ts +2 -0
  262. package/dist/test/redteam/plugins/harmful/aligned.test.d.ts.map +1 -0
  263. package/dist/test/redteam/plugins/harmful/aligned.test.js +123 -0
  264. package/dist/test/redteam/plugins/harmful/aligned.test.js.map +1 -0
  265. package/dist/test/redteam/plugins/harmful/common.test.d.ts +2 -0
  266. package/dist/test/redteam/plugins/harmful/common.test.d.ts.map +1 -0
  267. package/dist/test/redteam/plugins/harmful/common.test.js +105 -0
  268. package/dist/test/redteam/plugins/harmful/common.test.js.map +1 -0
  269. package/dist/test/redteam/plugins/harmful/unaligned.test.d.ts +2 -0
  270. package/dist/test/redteam/plugins/harmful/unaligned.test.d.ts.map +1 -0
  271. package/dist/test/redteam/plugins/harmful/unaligned.test.js +150 -0
  272. package/dist/test/redteam/plugins/harmful/unaligned.test.js.map +1 -0
  273. package/dist/test/redteam/plugins/index.test.d.ts +2 -0
  274. package/dist/test/redteam/plugins/index.test.d.ts.map +1 -0
  275. package/dist/test/redteam/plugins/index.test.js +172 -0
  276. package/dist/test/redteam/plugins/index.test.js.map +1 -0
  277. package/dist/test/redteam/providers/iterativeTree.test.js +13 -6
  278. package/dist/test/redteam/providers/iterativeTree.test.js.map +1 -1
  279. package/dist/test/share.test.js +45 -1
  280. package/dist/test/share.test.js.map +1 -1
  281. package/dist/test/types.test.js +15 -1
  282. package/dist/test/types.test.js.map +1 -1
  283. package/dist/tsconfig.tsbuildinfo +1 -1
  284. package/package.json +15 -15
  285. package/dist/src/app/assets/index-CAof5cIE.js +0 -769
  286. package/dist/src/redteam/plugins/harmful.d.ts +0 -18
  287. package/dist/src/redteam/plugins/harmful.d.ts.map +0 -1
  288. package/dist/src/redteam/plugins/harmful.js +0 -384
  289. package/dist/src/redteam/plugins/harmful.js.map +0 -1
@@ -4,16 +4,19 @@ export declare const TokenUsageSchema: z.ZodObject<{
4
4
  completion: z.ZodOptional<z.ZodNumber>;
5
5
  prompt: z.ZodOptional<z.ZodNumber>;
6
6
  total: z.ZodOptional<z.ZodNumber>;
7
+ numRequests: z.ZodOptional<z.ZodNumber>;
7
8
  }, "strip", z.ZodTypeAny, {
8
9
  cached?: number | undefined;
9
10
  completion?: number | undefined;
10
11
  prompt?: number | undefined;
11
12
  total?: number | undefined;
13
+ numRequests?: number | undefined;
12
14
  }, {
13
15
  cached?: number | undefined;
14
16
  completion?: number | undefined;
15
17
  prompt?: number | undefined;
16
18
  total?: number | undefined;
19
+ numRequests?: number | undefined;
17
20
  }>;
18
21
  export declare const NunjucksFilterMapSchema: z.ZodRecord<z.ZodString, z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodAny>, z.ZodString>>;
19
22
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/validators/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAK3B,CAAC;AAEH,eAAO,MAAM,uBAAuB,wFAGnC,CAAC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/validators/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,uBAAuB,wFAGnC,CAAC"}
@@ -7,6 +7,7 @@ exports.TokenUsageSchema = zod_1.z.object({
7
7
  completion: zod_1.z.number().optional(),
8
8
  prompt: zod_1.z.number().optional(),
9
9
  total: zod_1.z.number().optional(),
10
+ numRequests: zod_1.z.number().optional(),
10
11
  });
11
12
  exports.NunjucksFilterMapSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.function(zod_1.z.tuple([zod_1.z.any()]).rest(zod_1.z.any()), zod_1.z.string()));
12
13
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/validators/shared.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAC7C,OAAC,CAAC,MAAM,EAAE,EACV,OAAC,CAAC,QAAQ,CAAC,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CACzD,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/validators/shared.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAC7C,OAAC,CAAC,MAAM,EAAE,EACV,OAAC,CAAC,QAAQ,CAAC,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CACzD,CAAC"}
@@ -13,6 +13,7 @@ const mockedFetchResponse = (ok, response) => {
13
13
  json: () => Promise.resolve(response),
14
14
  headers: new Headers({
15
15
  'content-type': 'application/json',
16
+ 'x-session-id': '45',
16
17
  }),
17
18
  };
18
19
  };
@@ -30,6 +31,7 @@ describe('fetchWithCache', () => {
30
31
  expect(result).toEqual({
31
32
  cached: false,
32
33
  data: response,
34
+ headers: { 'content-type': 'application/json', 'x-session-id': '45' },
33
35
  status: 400,
34
36
  statusText: 'Bad Request',
35
37
  });
@@ -37,11 +39,19 @@ describe('fetchWithCache', () => {
37
39
  it('should fetch data with cache enabled', async () => {
38
40
  (0, cache_1.enableCache)();
39
41
  const url = 'https://api.example.com/data';
40
- const response = { data: 'test data' };
42
+ const response = {
43
+ data: 'test data',
44
+ };
41
45
  mockedFetch.mockResolvedValueOnce(mockedFetchResponse(true, response));
42
46
  const result = await (0, cache_1.fetchWithCache)(url, {}, 1000);
43
47
  expect(mockedFetch).toHaveBeenCalledTimes(1);
44
- expect(result).toEqual({ cached: false, data: response, status: 200, statusText: 'OK' });
48
+ expect(result).toEqual({
49
+ cached: false,
50
+ data: response,
51
+ status: 200,
52
+ statusText: 'OK',
53
+ headers: { 'x-session-id': '45', 'content-type': 'application/json' },
54
+ });
45
55
  });
46
56
  it('should fetch data with cache enabled after previous test', async () => {
47
57
  const url = 'https://api.example.com/data';
@@ -49,7 +59,13 @@ describe('fetchWithCache', () => {
49
59
  mockedFetch.mockResolvedValueOnce(mockedFetchResponse(true, response));
50
60
  const result = await (0, cache_1.fetchWithCache)(url, {}, 1000);
51
61
  expect(mockedFetch).toHaveBeenCalledTimes(0);
52
- expect(result).toEqual({ cached: true, data: response, status: 200, statusText: 'OK' });
62
+ expect(result).toEqual({
63
+ cached: true,
64
+ data: response,
65
+ status: 200,
66
+ statusText: 'OK',
67
+ headers: { 'content-type': 'application/json', 'x-session-id': '45' },
68
+ });
53
69
  });
54
70
  it('should only fetch data once with cache enabled', async () => {
55
71
  (0, cache_1.enableCache)();
@@ -63,8 +79,20 @@ describe('fetchWithCache', () => {
63
79
  (0, cache_1.fetchWithCache)(url, {}, 1000),
64
80
  ]);
65
81
  expect(mockedFetch).toHaveBeenCalledTimes(1);
66
- expect(a).toEqual({ cached: false, data: response, status: 200, statusText: 'OK' });
67
- expect(b).toEqual({ cached: true, data: response, status: 200, statusText: 'OK' });
82
+ expect(a).toEqual({
83
+ cached: false,
84
+ data: response,
85
+ status: 200,
86
+ statusText: 'OK',
87
+ headers: { 'x-session-id': '45', 'content-type': 'application/json' },
88
+ });
89
+ expect(b).toEqual({
90
+ cached: true,
91
+ data: response,
92
+ status: 200,
93
+ statusText: 'OK',
94
+ headers: { 'x-session-id': '45', 'content-type': 'application/json' },
95
+ });
68
96
  });
69
97
  it('should fetch data without cache for a single test', async () => {
70
98
  (0, cache_1.disableCache)();
@@ -73,7 +101,13 @@ describe('fetchWithCache', () => {
73
101
  mockedFetch.mockResolvedValueOnce(mockedFetchResponse(true, response));
74
102
  const result = await (0, cache_1.fetchWithCache)(url, {}, 1000);
75
103
  expect(mockedFetch).toHaveBeenCalledTimes(1);
76
- expect(result).toEqual({ cached: false, data: response, status: 200, statusText: 'OK' });
104
+ expect(result).toEqual({
105
+ cached: false,
106
+ data: response,
107
+ status: 200,
108
+ statusText: 'OK',
109
+ headers: { 'content-type': 'application/json', 'x-session-id': '45' },
110
+ });
77
111
  (0, cache_1.enableCache)();
78
112
  });
79
113
  it('should still fetch data without cache for a single test', async () => {
@@ -83,7 +117,13 @@ describe('fetchWithCache', () => {
83
117
  mockedFetch.mockResolvedValueOnce(mockedFetchResponse(true, response));
84
118
  const result = await (0, cache_1.fetchWithCache)(url, {}, 1000);
85
119
  expect(mockedFetch).toHaveBeenCalledTimes(1);
86
- expect(result).toEqual({ cached: false, data: response, status: 200, statusText: 'OK' });
120
+ expect(result).toEqual({
121
+ cached: false,
122
+ data: response,
123
+ status: 200,
124
+ statusText: 'OK',
125
+ headers: { 'content-type': 'application/json', 'x-session-id': '45' },
126
+ });
87
127
  (0, cache_1.enableCache)();
88
128
  });
89
129
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../../test/cache.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.test.js","sourceRoot":"","sources":["../../test/cache.test.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,20 @@ const commander_1 = require("commander");
30
30
  const promises_1 = __importDefault(require("fs/promises"));
31
31
  const init = __importStar(require("../../src/commands/init"));
32
32
  const logger_1 = __importDefault(require("../../src/logger"));
33
+ // Add mock for redteam init
34
+ jest.mock('../../src/redteam/commands/init', () => ({
35
+ redteamInit: jest.fn(),
36
+ }));
37
+ jest.mock('../../src/server/server', () => ({
38
+ startServer: jest.fn(),
39
+ BrowserBehavior: {
40
+ ASK: 0,
41
+ OPEN: 1,
42
+ SKIP: 2,
43
+ OPEN_TO_REPORT: 3,
44
+ OPEN_TO_REDTEAM_CREATE: 4,
45
+ },
46
+ }));
33
47
  jest.mock('../../src/commands/init', () => {
34
48
  const actual = jest.requireActual('../../src/commands/init');
35
49
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../test/commands/init.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../test/commands/init.test.ts"],"names":[],"mappings":"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"}
@@ -25,28 +25,28 @@ const mockApiProvider = {
25
25
  id: jest.fn().mockReturnValue('test-provider'),
26
26
  callApi: jest.fn().mockResolvedValue({
27
27
  output: 'Test output',
28
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
28
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
29
29
  }),
30
30
  };
31
31
  const mockApiProvider2 = {
32
32
  id: jest.fn().mockReturnValue('test-provider-2'),
33
33
  callApi: jest.fn().mockResolvedValue({
34
34
  output: 'Test output',
35
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
35
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
36
36
  }),
37
37
  };
38
38
  const mockGradingApiProviderPasses = {
39
39
  id: jest.fn().mockReturnValue('test-grading-provider'),
40
40
  callApi: jest.fn().mockResolvedValue({
41
41
  output: JSON.stringify({ pass: true, reason: 'Test grading output' }),
42
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
42
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
43
43
  }),
44
44
  };
45
45
  const mockGradingApiProviderFails = {
46
46
  id: jest.fn().mockReturnValue('test-grading-provider'),
47
47
  callApi: jest.fn().mockResolvedValue({
48
48
  output: JSON.stringify({ pass: false, reason: 'Grading failed reason' }),
49
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
49
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
50
50
  }),
51
51
  };
52
52
  function toPrompt(text) {
@@ -78,7 +78,13 @@ describe('evaluator', () => {
78
78
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(1);
79
79
  expect(summary.stats.successes).toBe(1);
80
80
  expect(summary.stats.failures).toBe(0);
81
- expect(summary.stats.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5, cached: 0 });
81
+ expect(summary.stats.tokenUsage).toEqual({
82
+ total: 10,
83
+ prompt: 5,
84
+ completion: 5,
85
+ cached: 0,
86
+ numRequests: 1,
87
+ });
82
88
  expect(summary.results[0].prompt.raw).toBe('Test prompt value1 value2');
83
89
  expect(summary.results[0].prompt.label).toBe('Test prompt {{ var1 }} {{ var2 }}');
84
90
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -99,7 +105,13 @@ describe('evaluator', () => {
99
105
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(1);
100
106
  expect(summary.stats.successes).toBe(1);
101
107
  expect(summary.stats.failures).toBe(0);
102
- expect(summary.stats.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5, cached: 0 });
108
+ expect(summary.stats.tokenUsage).toEqual({
109
+ total: 10,
110
+ prompt: 5,
111
+ completion: 5,
112
+ cached: 0,
113
+ numRequests: 1,
114
+ });
103
115
  expect(summary.results[0].prompt.raw).toBe('Test prompt 1 < 2 he said "hello world"...');
104
116
  expect(summary.results[0].prompt.label).toBe('Test prompt {{ var1 }} {{ var2 }}');
105
117
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -120,7 +132,13 @@ describe('evaluator', () => {
120
132
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(1);
121
133
  expect(summary.stats.successes).toBe(1);
122
134
  expect(summary.stats.failures).toBe(0);
123
- expect(summary.stats.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5, cached: 0 });
135
+ expect(summary.stats.tokenUsage).toEqual({
136
+ total: 10,
137
+ prompt: 5,
138
+ completion: 5,
139
+ cached: 0,
140
+ numRequests: 1,
141
+ });
124
142
  expect(summary.results[0].prompt.raw).toBe('Test prompt value1 value2');
125
143
  expect(summary.results[0].prompt.label).toBe('Test prompt {{ var1.prop1 }} {{ var2 }}');
126
144
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -141,7 +159,13 @@ describe('evaluator', () => {
141
159
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(1);
142
160
  expect(summary.stats.successes).toBe(1);
143
161
  expect(summary.stats.failures).toBe(0);
144
- expect(summary.stats.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5, cached: 0 });
162
+ expect(summary.stats.tokenUsage).toEqual({
163
+ total: 10,
164
+ prompt: 5,
165
+ completion: 5,
166
+ cached: 0,
167
+ numRequests: 1,
168
+ });
145
169
  expect(summary.results[0].prompt.raw).toBe('Test prompt value1 value2');
146
170
  expect(summary.results[0].prompt.label).toBe('test display name');
147
171
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -162,7 +186,13 @@ describe('evaluator', () => {
162
186
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(4);
163
187
  expect(summary.stats.successes).toBe(4);
164
188
  expect(summary.stats.failures).toBe(0);
165
- expect(summary.stats.tokenUsage).toEqual({ total: 40, prompt: 20, completion: 20, cached: 0 });
189
+ expect(summary.stats.tokenUsage).toEqual({
190
+ total: 40,
191
+ prompt: 20,
192
+ completion: 20,
193
+ cached: 0,
194
+ numRequests: 4,
195
+ });
166
196
  expect(summary.results[0].prompt.raw).toBe('Test prompt value1 value2');
167
197
  expect(summary.results[0].prompt.label).toBe('Test prompt {{ var1 }} {{ var2 }}');
168
198
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -183,7 +213,13 @@ describe('evaluator', () => {
183
213
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(2);
184
214
  expect(summary.stats.successes).toBe(2);
185
215
  expect(summary.stats.failures).toBe(0);
186
- expect(summary.stats.tokenUsage).toEqual({ total: 20, prompt: 10, completion: 10, cached: 0 });
216
+ expect(summary.stats.tokenUsage).toEqual({
217
+ total: 20,
218
+ prompt: 10,
219
+ completion: 10,
220
+ cached: 0,
221
+ numRequests: 2,
222
+ });
187
223
  expect(summary.results[0].prompt.raw).toBe('Test prompt value1 value2');
188
224
  expect(summary.results[0].prompt.label).toBe('Test prompt {{ var1 }} {{ var2 }}');
189
225
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -199,7 +235,13 @@ describe('evaluator', () => {
199
235
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(1);
200
236
  expect(summary.stats.successes).toBe(1);
201
237
  expect(summary.stats.failures).toBe(0);
202
- expect(summary.stats.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5, cached: 0 });
238
+ expect(summary.stats.tokenUsage).toEqual({
239
+ total: 10,
240
+ prompt: 5,
241
+ completion: 5,
242
+ cached: 0,
243
+ numRequests: 1,
244
+ });
203
245
  expect(summary.results[0].prompt.raw).toBe('Test prompt');
204
246
  expect(summary.results[0].prompt.label).toBe('Test prompt');
205
247
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -215,7 +257,13 @@ describe('evaluator', () => {
215
257
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(3);
216
258
  expect(summary.stats.successes).toBe(3);
217
259
  expect(summary.stats.failures).toBe(0);
218
- expect(summary.stats.tokenUsage).toEqual({ total: 30, prompt: 15, completion: 15, cached: 0 });
260
+ expect(summary.stats.tokenUsage).toEqual({
261
+ total: 30,
262
+ prompt: 15,
263
+ completion: 15,
264
+ cached: 0,
265
+ numRequests: 3,
266
+ });
219
267
  expect(summary.results[0].prompt.raw).toBe('Test prompt');
220
268
  expect(summary.results[0].prompt.label).toBe('Test prompt');
221
269
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -423,7 +471,7 @@ describe('evaluator', () => {
423
471
  id: jest.fn().mockReturnValue('test-provider-json'),
424
472
  callApi: jest.fn().mockResolvedValue({
425
473
  output: '{"output": "testing", "value": 123}',
426
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
474
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
427
475
  }),
428
476
  };
429
477
  const testSuite = {
@@ -456,7 +504,7 @@ describe('evaluator', () => {
456
504
  id: jest.fn().mockReturnValue('test-provider-transform'),
457
505
  callApi: jest.fn().mockResolvedValue({
458
506
  output: 'Original output',
459
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
507
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
460
508
  }),
461
509
  transform: '`Transformed: ${output}`',
462
510
  };
@@ -539,12 +587,62 @@ describe('evaluator', () => {
539
587
  }));
540
588
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(2);
541
589
  });
590
+ it('evaluate with context in vars transform in defaultTest', async () => {
591
+ const mockApiProvider = {
592
+ id: jest.fn().mockReturnValue('test-provider'),
593
+ callApi: jest.fn().mockResolvedValue({
594
+ output: 'Test output',
595
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
596
+ }),
597
+ };
598
+ const testSuite = {
599
+ providers: [mockApiProvider],
600
+ prompts: [toPrompt('Hello {{ name }}, your age is {{ age }}')],
601
+ defaultTest: {
602
+ options: {
603
+ transformVars: `return {
604
+ ...vars,
605
+ // Test that context.uuid is available
606
+ id: context.uuid,
607
+ // Test that context.prompt is available but empty
608
+ hasPrompt: Boolean(context.prompt)
609
+ }`,
610
+ },
611
+ },
612
+ tests: [
613
+ {
614
+ vars: {
615
+ name: 'Alice',
616
+ age: 25,
617
+ },
618
+ },
619
+ ],
620
+ };
621
+ const evalRecord = await eval_1.default.create({}, testSuite.prompts, { id: (0, crypto_1.randomUUID)() });
622
+ await (0, evaluator_1.evaluate)(testSuite, evalRecord, {});
623
+ const summary = await evalRecord.toEvaluateSummary();
624
+ expect(summary).toEqual(expect.objectContaining({
625
+ stats: expect.objectContaining({
626
+ successes: 1,
627
+ failures: 0,
628
+ }),
629
+ results: expect.arrayContaining([
630
+ expect.objectContaining({
631
+ vars: expect.objectContaining({
632
+ id: expect.stringMatching(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i),
633
+ hasPrompt: true,
634
+ }),
635
+ }),
636
+ ]),
637
+ }));
638
+ expect(mockApiProvider.callApi).toHaveBeenCalledTimes(1);
639
+ });
542
640
  it('evaluate with provider transform and test transform', async () => {
543
641
  const mockApiProviderWithTransform = {
544
642
  id: jest.fn().mockReturnValue('test-provider-transform'),
545
643
  callApi: jest.fn().mockResolvedValue({
546
644
  output: 'Original output',
547
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
645
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
548
646
  }),
549
647
  transform: '`ProviderTransformed: ${output}`',
550
648
  };
@@ -608,7 +706,13 @@ describe('evaluator', () => {
608
706
  expect(mockApiProvider.callApi).toHaveBeenCalledTimes(1);
609
707
  expect(summary.stats.successes).toBe(1);
610
708
  expect(summary.stats.failures).toBe(0);
611
- expect(summary.stats.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5, cached: 0 });
709
+ expect(summary.stats.tokenUsage).toEqual({
710
+ total: 10,
711
+ prompt: 5,
712
+ completion: 5,
713
+ cached: 0,
714
+ numRequests: 1,
715
+ });
612
716
  expect(summary.results[0].prompt.raw).toBe('Test prompt 1');
613
717
  expect(summary.results[0].prompt.label).toBe('Test prompt 1');
614
718
  expect(summary.results[0].response?.output).toBe('Test output');
@@ -618,7 +722,7 @@ describe('evaluator', () => {
618
722
  id: jest.fn().mockReturnValue('test-provider'),
619
723
  callApi: jest.fn().mockResolvedValue({
620
724
  output: 'Test output',
621
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
725
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
622
726
  }),
623
727
  };
624
728
  const testSuite = {
@@ -656,11 +760,11 @@ describe('evaluator', () => {
656
760
  .fn()
657
761
  .mockResolvedValueOnce({
658
762
  output: 'Hola mundo',
659
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
763
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
660
764
  })
661
765
  .mockResolvedValueOnce({
662
766
  output: 'Bonjour le monde',
663
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
767
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
664
768
  }),
665
769
  };
666
770
  const testSuite = {
@@ -711,19 +815,19 @@ describe('evaluator', () => {
711
815
  .fn()
712
816
  .mockResolvedValueOnce({
713
817
  output: 'Spanish Hola',
714
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
818
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
715
819
  })
716
820
  .mockResolvedValueOnce({
717
821
  output: 'Spanish Bonjour',
718
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
822
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
719
823
  })
720
824
  .mockResolvedValueOnce({
721
825
  output: 'French Hola',
722
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
826
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
723
827
  })
724
828
  .mockResolvedValueOnce({
725
829
  output: 'French Bonjour',
726
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
830
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
727
831
  }),
728
832
  };
729
833
  const testSuite = {
@@ -768,7 +872,7 @@ describe('evaluator', () => {
768
872
  id: jest.fn().mockReturnValue('test-provider'),
769
873
  callApi: jest.fn().mockResolvedValue({
770
874
  output: 'Hello, World',
771
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
875
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
772
876
  }),
773
877
  };
774
878
  const testSuite = {
@@ -871,7 +975,7 @@ describe('evaluator', () => {
871
975
  callApi: jest.fn().mockImplementation((prompt) => {
872
976
  return Promise.resolve({
873
977
  output: prompt,
874
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
978
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
875
979
  });
876
980
  }),
877
981
  };
@@ -902,14 +1006,14 @@ describe('evaluator', () => {
902
1006
  label: 'Labeled Provider',
903
1007
  callApi: jest.fn().mockResolvedValue({
904
1008
  output: 'Labeled Provider Output',
905
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
1009
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
906
1010
  }),
907
1011
  };
908
1012
  const mockUnlabeledProvider = {
909
1013
  id: () => 'unlabeled-provider-id',
910
1014
  callApi: jest.fn().mockResolvedValue({
911
1015
  output: 'Unlabeled Provider Output',
912
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
1016
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
913
1017
  }),
914
1018
  };
915
1019
  const testSuite = {
@@ -1029,7 +1133,7 @@ describe('evaluator', () => {
1029
1133
  id: jest.fn().mockReturnValue('test-provider-transform'),
1030
1134
  callApi: jest.fn().mockResolvedValue({
1031
1135
  output: 'Original output',
1032
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
1136
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
1033
1137
  }),
1034
1138
  transform: '`Provider: ${output}`',
1035
1139
  };
@@ -1067,7 +1171,7 @@ describe('evaluator', () => {
1067
1171
  id: jest.fn().mockReturnValue('test-provider-transform'),
1068
1172
  callApi: jest.fn().mockResolvedValue({
1069
1173
  output: 'Original output',
1070
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
1174
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
1071
1175
  }),
1072
1176
  transform: '`Provider: ${output}`',
1073
1177
  };
@@ -1112,7 +1216,7 @@ describe('evaluator', () => {
1112
1216
  id: jest.fn().mockReturnValue('test-provider-no-output'),
1113
1217
  callApi: jest.fn().mockResolvedValue({
1114
1218
  output: null,
1115
- tokenUsage: { total: 5, prompt: 5, completion: 0, cached: 0 },
1219
+ tokenUsage: { total: 5, prompt: 5, completion: 0, cached: 0, numRequests: 1 },
1116
1220
  }),
1117
1221
  };
1118
1222
  const testSuite = {
@@ -1135,7 +1239,7 @@ describe('evaluator', () => {
1135
1239
  id: jest.fn().mockReturnValue('test-provider-no-output'),
1136
1240
  callApi: jest.fn().mockResolvedValue({
1137
1241
  output: false,
1138
- tokenUsage: { total: 5, prompt: 5, completion: 0, cached: 0 },
1242
+ tokenUsage: { total: 5, prompt: 5, completion: 0, cached: 0, numRequests: 1 },
1139
1243
  }),
1140
1244
  };
1141
1245
  const testSuite = {
@@ -1157,7 +1261,7 @@ describe('evaluator', () => {
1157
1261
  id: jest.fn().mockReturnValue('test-provider'),
1158
1262
  callApi: jest.fn().mockResolvedValue({
1159
1263
  output: 'Test response',
1160
- tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0 },
1264
+ tokenUsage: { total: 10, prompt: 5, completion: 5, cached: 0, numRequests: 1 },
1161
1265
  }),
1162
1266
  };
1163
1267
  const testSuite = {