promptfoo 0.103.13 → 0.103.14

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 (84) hide show
  1. package/dist/package.json +13 -13
  2. package/dist/src/app/assets/{index-CNZfEf8i.js → index-gCO1so_L.js} +233 -232
  3. package/dist/src/app/assets/{index.es-vrsSPryr.js → index.es-BebRurvf.js} +1 -1
  4. package/dist/src/app/assets/{sync-B_Y0n4tJ.js → sync-cefC8sLm.js} +1 -1
  5. package/dist/src/app/index.html +1 -1
  6. package/dist/src/fetch.d.ts +2 -0
  7. package/dist/src/fetch.d.ts.map +1 -1
  8. package/dist/src/fetch.js +2 -1
  9. package/dist/src/fetch.js.map +1 -1
  10. package/dist/src/providers/azure.d.ts.map +1 -1
  11. package/dist/src/providers/azure.js +10 -0
  12. package/dist/src/providers/azure.js.map +1 -1
  13. package/dist/src/providers/http.d.ts +5 -3
  14. package/dist/src/providers/http.d.ts.map +1 -1
  15. package/dist/src/providers/http.js +7 -6
  16. package/dist/src/providers/http.js.map +1 -1
  17. package/dist/src/redteam/commands/generate.d.ts.map +1 -1
  18. package/dist/src/redteam/commands/generate.js +30 -9
  19. package/dist/src/redteam/commands/generate.js.map +1 -1
  20. package/dist/src/redteam/graders.d.ts.map +1 -1
  21. package/dist/src/redteam/graders.js +13 -13
  22. package/dist/src/redteam/graders.js.map +1 -1
  23. package/dist/src/redteam/index.d.ts +1 -0
  24. package/dist/src/redteam/index.d.ts.map +1 -1
  25. package/dist/src/redteam/index.js +1 -1
  26. package/dist/src/redteam/index.js.map +1 -1
  27. package/dist/src/redteam/plugins/harmful/graders.d.ts +52 -0
  28. package/dist/src/redteam/plugins/harmful/graders.d.ts.map +1 -1
  29. package/dist/src/redteam/plugins/harmful/graders.js +577 -22
  30. package/dist/src/redteam/plugins/harmful/graders.js.map +1 -1
  31. package/dist/src/redteam/types.d.ts +1 -0
  32. package/dist/src/redteam/types.d.ts.map +1 -1
  33. package/dist/src/redteam/util.d.ts.map +1 -1
  34. package/dist/src/redteam/util.js +2 -0
  35. package/dist/src/redteam/util.js.map +1 -1
  36. package/dist/src/server/server.d.ts.map +1 -1
  37. package/dist/src/server/server.js +1 -7
  38. package/dist/src/server/server.js.map +1 -1
  39. package/dist/src/validators/redteam.d.ts +3 -0
  40. package/dist/src/validators/redteam.d.ts.map +1 -1
  41. package/dist/src/validators/redteam.js +2 -0
  42. package/dist/src/validators/redteam.js.map +1 -1
  43. package/dist/test/assertions/answerRelevance.test.d.ts +2 -0
  44. package/dist/test/assertions/answerRelevance.test.d.ts.map +1 -0
  45. package/dist/test/assertions/answerRelevance.test.js +177 -0
  46. package/dist/test/assertions/answerRelevance.test.js.map +1 -0
  47. package/dist/test/assertions/contextFaithfulness.test.d.ts +2 -0
  48. package/dist/test/assertions/contextFaithfulness.test.d.ts.map +1 -0
  49. package/dist/test/assertions/contextFaithfulness.test.js +226 -0
  50. package/dist/test/assertions/contextFaithfulness.test.js.map +1 -0
  51. package/dist/test/assertions/contextRecall.test.d.ts +2 -0
  52. package/dist/test/assertions/contextRecall.test.d.ts.map +1 -0
  53. package/dist/test/assertions/contextRecall.test.js +243 -0
  54. package/dist/test/assertions/contextRecall.test.js.map +1 -0
  55. package/dist/test/assertions/contextRelevance.test.d.ts +2 -0
  56. package/dist/test/assertions/contextRelevance.test.d.ts.map +1 -0
  57. package/dist/test/assertions/contextRelevance.test.js +238 -0
  58. package/dist/test/assertions/contextRelevance.test.js.map +1 -0
  59. package/dist/test/assertions/geval.test.d.ts +2 -0
  60. package/dist/test/assertions/geval.test.d.ts.map +1 -0
  61. package/dist/test/assertions/geval.test.js +222 -0
  62. package/dist/test/assertions/geval.test.js.map +1 -0
  63. package/dist/test/assertions/modelGradedClosedQa.test.d.ts +2 -0
  64. package/dist/test/assertions/modelGradedClosedQa.test.d.ts.map +1 -0
  65. package/dist/test/assertions/modelGradedClosedQa.test.js +200 -0
  66. package/dist/test/assertions/modelGradedClosedQa.test.js.map +1 -0
  67. package/dist/test/fetch.test.js +66 -18
  68. package/dist/test/fetch.test.js.map +1 -1
  69. package/dist/test/providers/azure.test.js +41 -11
  70. package/dist/test/providers/azure.test.js.map +1 -1
  71. package/dist/test/providers/http.test.js +70 -2
  72. package/dist/test/providers/http.test.js.map +1 -1
  73. package/dist/test/providers/index.test.js +0 -454
  74. package/dist/test/providers/index.test.js.map +1 -1
  75. package/dist/test/providers/openai.test.js +509 -0
  76. package/dist/test/providers/openai.test.js.map +1 -1
  77. package/dist/test/redteam/commands/generate.test.js +7 -0
  78. package/dist/test/redteam/commands/generate.test.js.map +1 -1
  79. package/dist/test/redteam/extraction/purpose.test.js +1 -0
  80. package/dist/test/redteam/extraction/purpose.test.js.map +1 -1
  81. package/dist/test/redteam/strategies/index.test.js +1 -0
  82. package/dist/test/redteam/strategies/index.test.js.map +1 -1
  83. package/dist/tsconfig.tsbuildinfo +1 -1
  84. package/package.json +13 -13
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const contextRecall_1 = require("../../src/assertions/contextRecall");
37
+ const matchers = __importStar(require("../../src/matchers"));
38
+ jest.mock('../../src/matchers');
39
+ describe('handleContextRecall', () => {
40
+ const mockMatchesContextRecall = jest.spyOn(matchers, 'matchesContextRecall');
41
+ beforeEach(() => {
42
+ jest.resetAllMocks();
43
+ });
44
+ it('should handle context recall with prompt context', async () => {
45
+ const mockResult = {
46
+ pass: true,
47
+ score: 0.9,
48
+ reason: 'Good recall',
49
+ };
50
+ mockMatchesContextRecall.mockResolvedValue(mockResult);
51
+ const mockProvider = {
52
+ id: () => 'test-provider',
53
+ callApi: jest.fn(),
54
+ };
55
+ const params = {
56
+ assertion: { type: 'context-recall', threshold: 0.8 },
57
+ renderedValue: 'test output',
58
+ prompt: 'test context',
59
+ test: {
60
+ vars: {},
61
+ options: {},
62
+ },
63
+ baseType: 'context-recall',
64
+ context: {
65
+ prompt: 'test context',
66
+ vars: {},
67
+ test: {
68
+ vars: {},
69
+ options: {},
70
+ },
71
+ logProbs: undefined,
72
+ provider: mockProvider,
73
+ providerResponse: undefined,
74
+ },
75
+ inverse: false,
76
+ output: 'test output',
77
+ outputString: 'test output',
78
+ provider: mockProvider,
79
+ providerResponse: {},
80
+ };
81
+ const result = await (0, contextRecall_1.handleContextRecall)(params);
82
+ expect(result).toEqual({
83
+ assertion: { type: 'context-recall', threshold: 0.8 },
84
+ ...mockResult,
85
+ });
86
+ expect(mockMatchesContextRecall).toHaveBeenCalledWith('test context', 'test output', 0.8, {}, {});
87
+ });
88
+ it('should handle context recall with vars context', async () => {
89
+ const mockResult = {
90
+ pass: true,
91
+ score: 0.85,
92
+ reason: 'Good recall from vars',
93
+ };
94
+ mockMatchesContextRecall.mockResolvedValue(mockResult);
95
+ const mockProvider = {
96
+ id: () => 'test-provider',
97
+ callApi: jest.fn(),
98
+ };
99
+ const params = {
100
+ assertion: { type: 'context-recall', threshold: 0.7 },
101
+ renderedValue: 'test output',
102
+ prompt: 'original context',
103
+ test: {
104
+ vars: { context: 'context from vars' },
105
+ options: {},
106
+ },
107
+ baseType: 'context-recall',
108
+ context: {
109
+ prompt: 'original context',
110
+ vars: { context: 'context from vars' },
111
+ test: {
112
+ vars: { context: 'context from vars' },
113
+ options: {},
114
+ },
115
+ logProbs: undefined,
116
+ provider: mockProvider,
117
+ providerResponse: undefined,
118
+ },
119
+ inverse: false,
120
+ output: 'test output',
121
+ outputString: 'test output',
122
+ provider: mockProvider,
123
+ providerResponse: {},
124
+ };
125
+ const result = await (0, contextRecall_1.handleContextRecall)(params);
126
+ expect(result).toEqual({
127
+ assertion: { type: 'context-recall', threshold: 0.7 },
128
+ ...mockResult,
129
+ });
130
+ expect(mockMatchesContextRecall).toHaveBeenCalledWith('context from vars', 'test output', 0.7, {}, { context: 'context from vars' });
131
+ });
132
+ it('should use default threshold of 0 when not provided', async () => {
133
+ const mockResult = {
134
+ pass: true,
135
+ score: 0.5,
136
+ reason: 'Default threshold test',
137
+ };
138
+ mockMatchesContextRecall.mockResolvedValue(mockResult);
139
+ const mockProvider = {
140
+ id: () => 'test-provider',
141
+ callApi: jest.fn(),
142
+ };
143
+ const params = {
144
+ assertion: { type: 'context-recall' },
145
+ renderedValue: 'test output',
146
+ prompt: 'test context',
147
+ test: {
148
+ vars: {},
149
+ options: {},
150
+ },
151
+ baseType: 'context-recall',
152
+ context: {
153
+ prompt: 'test context',
154
+ vars: {},
155
+ test: {
156
+ vars: {},
157
+ options: {},
158
+ },
159
+ logProbs: undefined,
160
+ provider: mockProvider,
161
+ providerResponse: undefined,
162
+ },
163
+ inverse: false,
164
+ output: 'test output',
165
+ outputString: 'test output',
166
+ provider: mockProvider,
167
+ providerResponse: {},
168
+ };
169
+ const result = await (0, contextRecall_1.handleContextRecall)(params);
170
+ expect(result).toEqual({
171
+ assertion: { type: 'context-recall' },
172
+ ...mockResult,
173
+ });
174
+ expect(mockMatchesContextRecall).toHaveBeenCalledWith('test context', 'test output', 0, {}, {});
175
+ });
176
+ it('should throw error when renderedValue is not a string', async () => {
177
+ const mockProvider = {
178
+ id: () => 'test-provider',
179
+ callApi: jest.fn(),
180
+ };
181
+ const params = {
182
+ assertion: { type: 'context-recall' },
183
+ renderedValue: { value: 123 }, // Changed to object to match AssertionValue type
184
+ prompt: 'test context',
185
+ test: {
186
+ vars: {},
187
+ options: {},
188
+ },
189
+ baseType: 'context-recall',
190
+ context: {
191
+ prompt: 'test context',
192
+ vars: {},
193
+ test: {
194
+ vars: {},
195
+ options: {},
196
+ },
197
+ logProbs: undefined,
198
+ provider: mockProvider,
199
+ providerResponse: undefined,
200
+ },
201
+ inverse: false,
202
+ output: '123',
203
+ outputString: '123',
204
+ provider: mockProvider,
205
+ providerResponse: {},
206
+ };
207
+ await expect((0, contextRecall_1.handleContextRecall)(params)).rejects.toThrow('context-recall assertion type must have a string value');
208
+ });
209
+ it('should throw error when prompt is missing', async () => {
210
+ const mockProvider = {
211
+ id: () => 'test-provider',
212
+ callApi: jest.fn(),
213
+ };
214
+ const params = {
215
+ assertion: { type: 'context-recall' },
216
+ renderedValue: 'test output',
217
+ prompt: undefined,
218
+ test: {
219
+ vars: {},
220
+ options: {},
221
+ },
222
+ baseType: 'context-recall',
223
+ context: {
224
+ prompt: undefined,
225
+ vars: {},
226
+ test: {
227
+ vars: {},
228
+ options: {},
229
+ },
230
+ logProbs: undefined,
231
+ provider: mockProvider,
232
+ providerResponse: undefined,
233
+ },
234
+ inverse: false,
235
+ output: 'test output',
236
+ outputString: 'test output',
237
+ provider: mockProvider,
238
+ providerResponse: {},
239
+ };
240
+ await expect((0, contextRecall_1.handleContextRecall)(params)).rejects.toThrow('context-recall assertion type must have a prompt');
241
+ });
242
+ });
243
+ //# sourceMappingURL=contextRecall.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextRecall.test.js","sourceRoot":"","sources":["../../../test/assertions/contextRecall.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contextRelevance.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextRelevance.test.d.ts","sourceRoot":"","sources":["../../../test/assertions/contextRelevance.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const contextRelevance_1 = require("../../src/assertions/contextRelevance");
4
+ const matchers_1 = require("../../src/matchers");
5
+ jest.mock('../../src/matchers');
6
+ describe('handleContextRelevance', () => {
7
+ beforeEach(() => {
8
+ jest.resetAllMocks();
9
+ });
10
+ it('should handle valid input', async () => {
11
+ const mockResult = {
12
+ pass: true,
13
+ score: 0.8,
14
+ reason: 'test reason',
15
+ };
16
+ jest.mocked(matchers_1.matchesContextRelevance).mockResolvedValue(mockResult);
17
+ const result = await (0, contextRelevance_1.handleContextRelevance)({
18
+ assertion: {
19
+ type: 'context-relevance',
20
+ threshold: 0.7,
21
+ },
22
+ test: {
23
+ vars: {
24
+ query: 'test query',
25
+ context: 'test context',
26
+ },
27
+ options: {},
28
+ },
29
+ baseType: 'context-relevance',
30
+ context: {
31
+ prompt: 'test prompt',
32
+ vars: {},
33
+ test: {
34
+ vars: {
35
+ query: 'test query',
36
+ context: 'test context',
37
+ },
38
+ options: {},
39
+ },
40
+ logProbs: undefined,
41
+ provider: {
42
+ id: () => 'test-provider',
43
+ config: {},
44
+ callApi: jest.fn(),
45
+ },
46
+ providerResponse: {
47
+ output: 'test output',
48
+ tokenUsage: {},
49
+ },
50
+ },
51
+ inverse: false,
52
+ output: 'test output',
53
+ outputString: 'test output',
54
+ providerResponse: {
55
+ output: 'test output',
56
+ tokenUsage: {},
57
+ },
58
+ });
59
+ expect(result).toEqual({
60
+ assertion: {
61
+ type: 'context-relevance',
62
+ threshold: 0.7,
63
+ },
64
+ ...mockResult,
65
+ });
66
+ expect(matchers_1.matchesContextRelevance).toHaveBeenCalledWith('test query', 'test context', 0.7, {});
67
+ });
68
+ it('should throw error if vars is missing', async () => {
69
+ await expect((0, contextRelevance_1.handleContextRelevance)({
70
+ assertion: {
71
+ type: 'context-relevance',
72
+ },
73
+ test: {},
74
+ baseType: 'context-relevance',
75
+ context: {
76
+ prompt: 'test prompt',
77
+ vars: {},
78
+ test: {
79
+ vars: {
80
+ query: 'test query',
81
+ context: 'test context',
82
+ },
83
+ options: {},
84
+ },
85
+ logProbs: undefined,
86
+ provider: {
87
+ id: () => 'test-provider',
88
+ config: {},
89
+ callApi: jest.fn(),
90
+ },
91
+ providerResponse: {
92
+ output: 'test output',
93
+ tokenUsage: {},
94
+ },
95
+ },
96
+ inverse: false,
97
+ output: 'test output',
98
+ outputString: 'test output',
99
+ providerResponse: {
100
+ output: 'test output',
101
+ tokenUsage: {},
102
+ },
103
+ })).rejects.toThrow('context-relevance assertion type must have a vars object');
104
+ });
105
+ it('should throw error if query is missing', async () => {
106
+ await expect((0, contextRelevance_1.handleContextRelevance)({
107
+ assertion: {
108
+ type: 'context-relevance',
109
+ },
110
+ test: {
111
+ vars: {
112
+ context: 'test context',
113
+ },
114
+ },
115
+ baseType: 'context-relevance',
116
+ context: {
117
+ prompt: 'test prompt',
118
+ vars: {},
119
+ test: {
120
+ vars: {
121
+ query: 'test query',
122
+ context: 'test context',
123
+ },
124
+ options: {},
125
+ },
126
+ logProbs: undefined,
127
+ provider: {
128
+ id: () => 'test-provider',
129
+ config: {},
130
+ callApi: jest.fn(),
131
+ },
132
+ providerResponse: {
133
+ output: 'test output',
134
+ tokenUsage: {},
135
+ },
136
+ },
137
+ inverse: false,
138
+ output: 'test output',
139
+ outputString: 'test output',
140
+ providerResponse: {
141
+ output: 'test output',
142
+ tokenUsage: {},
143
+ },
144
+ })).rejects.toThrow('context-relevance assertion type must have a query var');
145
+ });
146
+ it('should throw error if context is missing', async () => {
147
+ await expect((0, contextRelevance_1.handleContextRelevance)({
148
+ assertion: {
149
+ type: 'context-relevance',
150
+ },
151
+ test: {
152
+ vars: {
153
+ query: 'test query',
154
+ },
155
+ },
156
+ baseType: 'context-relevance',
157
+ context: {
158
+ prompt: 'test prompt',
159
+ vars: {},
160
+ test: {
161
+ vars: {
162
+ query: 'test query',
163
+ context: 'test context',
164
+ },
165
+ options: {},
166
+ },
167
+ logProbs: undefined,
168
+ provider: {
169
+ id: () => 'test-provider',
170
+ config: {},
171
+ callApi: jest.fn(),
172
+ },
173
+ providerResponse: {
174
+ output: 'test output',
175
+ tokenUsage: {},
176
+ },
177
+ },
178
+ inverse: false,
179
+ output: 'test output',
180
+ outputString: 'test output',
181
+ providerResponse: {
182
+ output: 'test output',
183
+ tokenUsage: {},
184
+ },
185
+ })).rejects.toThrow('context-relevance assertion type must have a context var');
186
+ });
187
+ it('should use default threshold of 0 if not specified', async () => {
188
+ const mockResult = {
189
+ pass: true,
190
+ score: 0.5,
191
+ reason: 'test reason',
192
+ };
193
+ jest.mocked(matchers_1.matchesContextRelevance).mockResolvedValue(mockResult);
194
+ await (0, contextRelevance_1.handleContextRelevance)({
195
+ assertion: {
196
+ type: 'context-relevance',
197
+ },
198
+ test: {
199
+ vars: {
200
+ query: 'test query',
201
+ context: 'test context',
202
+ },
203
+ options: {},
204
+ },
205
+ baseType: 'context-relevance',
206
+ context: {
207
+ prompt: 'test prompt',
208
+ vars: {},
209
+ test: {
210
+ vars: {
211
+ query: 'test query',
212
+ context: 'test context',
213
+ },
214
+ options: {},
215
+ },
216
+ logProbs: undefined,
217
+ provider: {
218
+ id: () => 'test-provider',
219
+ config: {},
220
+ callApi: jest.fn(),
221
+ },
222
+ providerResponse: {
223
+ output: 'test output',
224
+ tokenUsage: {},
225
+ },
226
+ },
227
+ inverse: false,
228
+ output: 'test output',
229
+ outputString: 'test output',
230
+ providerResponse: {
231
+ output: 'test output',
232
+ tokenUsage: {},
233
+ },
234
+ });
235
+ expect(matchers_1.matchesContextRelevance).toHaveBeenCalledWith('test query', 'test context', 0, {});
236
+ });
237
+ });
238
+ //# sourceMappingURL=contextRelevance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextRelevance.test.js","sourceRoot":"","sources":["../../../test/assertions/contextRelevance.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=geval.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geval.test.d.ts","sourceRoot":"","sources":["../../../test/assertions/geval.test.ts"],"names":[],"mappings":""}