promptfoo 0.119.13 → 0.119.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.
- package/dist/package.json +28 -26
- package/dist/src/app/assets/index-eJ2lMe94.js +51 -0
- package/dist/src/app/assets/{source-map-support-Bnh0UQ2S.js → source-map-support-1v4oeb7P.js} +1 -1
- package/dist/src/app/assets/sync-CtLQRuC1.js +1 -0
- package/dist/src/app/assets/{vendor-charts-T60Uk0Z3.js → vendor-charts-DnVv66VV.js} +1 -1
- package/dist/src/app/assets/{vendor-markdown-DLig-KJh.js → vendor-markdown-DCpQIyMA.js} +1 -1
- package/dist/src/app/assets/{vendor-mui-core-5BLaiG3c.js → vendor-mui-core-Boqnpf9f.js} +1 -1
- package/dist/src/app/assets/{vendor-mui-icons-fn39Fu2e.js → vendor-mui-icons-B8MqoVbj.js} +1 -1
- package/dist/src/app/assets/vendor-mui-x-CGSS6QHF.js +45 -0
- package/dist/src/app/assets/{vendor-utils-DYBMEuwX.js → vendor-utils-DdfHIEy8.js} +1 -1
- package/dist/src/app/index.html +7 -7
- package/dist/src/assertions/guardrails.d.ts +1 -1
- package/dist/src/assertions/guardrails.js +18 -9
- package/dist/src/assertions/index.d.ts +1 -1
- package/dist/src/assertions/index.js +9 -3
- package/dist/src/assertions/searchRubric.d.ts +3 -0
- package/dist/src/assertions/searchRubric.js +18 -0
- package/dist/src/commands/eval.js +1 -1
- package/dist/src/commands/modelScan.d.ts +7 -1
- package/dist/src/commands/modelScan.js +121 -59
- package/dist/src/database/index.d.ts +6 -0
- package/dist/src/database/index.js +11 -0
- package/dist/src/database/tables.d.ts +46 -24
- package/dist/src/envars.d.ts +17 -0
- package/dist/src/generated/constants.js +1 -1
- package/dist/src/logger.d.ts +5 -0
- package/dist/src/logger.js +28 -0
- package/dist/src/main.js +17 -6
- package/dist/src/matchers.d.ts +1 -0
- package/dist/src/matchers.js +80 -0
- package/dist/src/models/eval.d.ts +2 -1
- package/dist/src/models/eval.js +44 -2
- package/dist/src/prompts/grading.d.ts +1 -0
- package/dist/src/prompts/grading.js +26 -1
- package/dist/src/prompts/index.d.ts +1 -0
- package/dist/src/prompts/index.js +4 -1
- package/dist/src/providers/adaline.gateway.js +2 -2
- package/dist/src/providers/anthropic/defaults.d.ts +1 -1
- package/dist/src/providers/anthropic/defaults.js +15 -0
- package/dist/src/providers/azure/chat.d.ts +3 -1
- package/dist/src/providers/azure/chat.js +16 -3
- package/dist/src/providers/azure/defaults.js +660 -141
- package/dist/src/providers/azure/responses.d.ts +5 -0
- package/dist/src/providers/azure/responses.js +33 -4
- package/dist/src/providers/azure/types.d.ts +4 -0
- package/dist/src/providers/bedrock/agents.d.ts +1 -1
- package/dist/src/providers/bedrock/agents.js +2 -2
- package/dist/src/providers/bedrock/base.d.ts +40 -0
- package/dist/src/providers/bedrock/base.js +171 -0
- package/dist/src/providers/bedrock/converse.d.ts +146 -0
- package/dist/src/providers/bedrock/converse.js +1044 -0
- package/dist/src/providers/bedrock/index.d.ts +1 -34
- package/dist/src/providers/bedrock/index.js +4 -159
- package/dist/src/providers/bedrock/knowledgeBase.d.ts +1 -1
- package/dist/src/providers/bedrock/knowledgeBase.js +2 -2
- package/dist/src/providers/bedrock/nova-sonic.d.ts +2 -1
- package/dist/src/providers/bedrock/nova-sonic.js +2 -2
- package/dist/src/providers/claude-agent-sdk.d.ts +58 -1
- package/dist/src/providers/claude-agent-sdk.js +22 -1
- package/dist/src/providers/defaults.js +4 -0
- package/dist/src/providers/github/defaults.js +6 -6
- package/dist/src/providers/google/types.d.ts +25 -0
- package/dist/src/providers/google/util.d.ts +2 -0
- package/dist/src/providers/google/vertex.js +78 -22
- package/dist/src/providers/{groq.d.ts → groq/chat.d.ts} +26 -20
- package/dist/src/providers/groq/chat.js +79 -0
- package/dist/src/providers/groq/index.d.ts +5 -0
- package/dist/src/providers/groq/index.js +24 -0
- package/dist/src/providers/groq/responses.d.ts +106 -0
- package/dist/src/providers/groq/responses.js +64 -0
- package/dist/src/providers/groq/types.d.ts +44 -0
- package/dist/src/providers/groq/types.js +3 -0
- package/dist/src/providers/groq/util.d.ts +15 -0
- package/dist/src/providers/groq/util.js +28 -0
- package/dist/src/providers/mcp/client.d.ts +8 -0
- package/dist/src/providers/mcp/client.js +60 -10
- package/dist/src/providers/mcp/types.d.ts +21 -0
- package/dist/src/providers/openai/chatkit-pool.d.ts +114 -0
- package/dist/src/providers/openai/chatkit-pool.js +548 -0
- package/dist/src/providers/openai/chatkit-types.d.ts +73 -0
- package/dist/src/providers/openai/chatkit-types.js +3 -0
- package/dist/src/providers/openai/chatkit.d.ts +76 -0
- package/dist/src/providers/openai/chatkit.js +879 -0
- package/dist/src/providers/openai/codex-sdk.d.ts +109 -0
- package/dist/src/providers/openai/codex-sdk.js +346 -0
- package/dist/src/providers/openai/defaults.d.ts +2 -0
- package/dist/src/providers/openai/defaults.js +10 -4
- package/dist/src/providers/registry.js +48 -9
- package/dist/src/providers/responses/types.d.ts +1 -1
- package/dist/src/providers/sagemaker.d.ts +2 -2
- package/dist/src/providers/webSearchUtils.d.ts +17 -0
- package/dist/src/providers/webSearchUtils.js +169 -0
- package/dist/src/providers/xai/chat.d.ts +61 -0
- package/dist/src/providers/xai/chat.js +68 -3
- package/dist/src/providers/xai/responses.d.ts +189 -0
- package/dist/src/providers/xai/responses.js +268 -0
- package/dist/src/redteam/constants/plugins.d.ts +1 -1
- package/dist/src/redteam/constants/plugins.js +1 -1
- package/dist/src/redteam/constants/strategies.d.ts +1 -1
- package/dist/src/redteam/constants/strategies.js +1 -0
- package/dist/src/redteam/plugins/vlguard.d.ts +53 -4
- package/dist/src/redteam/plugins/vlguard.js +362 -46
- package/dist/src/redteam/providers/constants.d.ts +2 -2
- package/dist/src/redteam/providers/constants.js +2 -2
- package/dist/src/redteam/providers/crescendo/index.d.ts +1 -1
- package/dist/src/redteam/providers/crescendo/index.js +5 -3
- package/dist/src/redteam/providers/hydra/index.js +1 -1
- package/dist/src/server/routes/modelAudit.js +4 -4
- package/dist/src/share.js +4 -2
- package/dist/src/telemetry.js +44 -8
- package/dist/src/types/env.d.ts +3 -0
- package/dist/src/types/env.js +1 -0
- package/dist/src/types/index.d.ts +896 -615
- package/dist/src/types/index.js +1 -0
- package/dist/src/types/providers.d.ts +1 -0
- package/dist/src/types/tracing.d.ts +3 -0
- package/dist/src/util/database.d.ts +6 -4
- package/dist/src/util/file.js +6 -4
- package/dist/src/util/modelAuditCliParser.d.ts +4 -4
- package/dist/src/util/xlsx.js +52 -26
- package/dist/src/validators/providers.d.ts +142 -122
- package/dist/src/validators/providers.js +4 -6
- package/dist/src/validators/redteam.d.ts +36 -28
- package/dist/src/validators/redteam.js +9 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +28 -26
- package/dist/drizzle/CLAUDE.md +0 -65
- package/dist/src/app/assets/index-DifT6VGT.js +0 -51
- package/dist/src/app/assets/sync-Oo-W_Rbj.js +0 -1
- package/dist/src/app/assets/vendor-mui-x-C2xF-yiO.js +0 -45
- package/dist/src/providers/groq.js +0 -48
package/dist/src/telemetry.js
CHANGED
|
@@ -34,6 +34,7 @@ exports.TelemetryEventSchema = zod_1.z.object({
|
|
|
34
34
|
properties: zod_1.z.record(zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean(), zod_1.z.array(zod_1.z.string())])),
|
|
35
35
|
});
|
|
36
36
|
let posthogClient = null;
|
|
37
|
+
let isShuttingDown = false;
|
|
37
38
|
function getPostHogClient() {
|
|
38
39
|
if ((0, envars_1.getEnvBool)('PROMPTFOO_DISABLE_TELEMETRY') || (0, envars_1.getEnvBool)('IS_TESTING')) {
|
|
39
40
|
return null;
|
|
@@ -43,6 +44,12 @@ function getPostHogClient() {
|
|
|
43
44
|
posthogClient = new posthog_node_1.PostHog(build_1.POSTHOG_KEY, {
|
|
44
45
|
host: constants_1.EVENTS_ENDPOINT,
|
|
45
46
|
fetch: index_1.fetchWithProxy,
|
|
47
|
+
// Disable automatic flush interval to prevent keeping the event loop alive.
|
|
48
|
+
// Without this, PostHog's internal setInterval keeps the Node.js event loop
|
|
49
|
+
// alive indefinitely, causing processes that import promptfoo to hang.
|
|
50
|
+
// Events are still sent immediately via explicit flush() calls after each capture.
|
|
51
|
+
// See: https://github.com/promptfoo/promptfoo/issues/5893
|
|
52
|
+
flushInterval: 0,
|
|
46
53
|
});
|
|
47
54
|
}
|
|
48
55
|
catch {
|
|
@@ -58,7 +65,7 @@ class Telemetry {
|
|
|
58
65
|
this.id = (0, accounts_1.getUserId)();
|
|
59
66
|
this.email = (0, accounts_1.getUserEmail)();
|
|
60
67
|
this.identify().then(() => {
|
|
61
|
-
//
|
|
68
|
+
// Intentionally empty - fire and forget
|
|
62
69
|
});
|
|
63
70
|
}
|
|
64
71
|
async identify() {
|
|
@@ -144,14 +151,22 @@ class Telemetry {
|
|
|
144
151
|
});
|
|
145
152
|
}
|
|
146
153
|
async shutdown() {
|
|
154
|
+
// Guard against multiple shutdown calls (from beforeExit + explicit shutdown in main.ts)
|
|
155
|
+
if (isShuttingDown) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
147
158
|
const client = getPostHogClient();
|
|
148
|
-
if (client) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
159
|
+
if (!client) {
|
|
160
|
+
// No client to shut down - don't set the flag so future shutdowns work
|
|
161
|
+
// if telemetry becomes enabled (e.g., in test harnesses)
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
isShuttingDown = true;
|
|
165
|
+
try {
|
|
166
|
+
await client.shutdown();
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
logger_1.default.debug(`PostHog shutdown error: ${error}`);
|
|
155
170
|
}
|
|
156
171
|
}
|
|
157
172
|
/**
|
|
@@ -177,5 +192,26 @@ class Telemetry {
|
|
|
177
192
|
}
|
|
178
193
|
exports.Telemetry = Telemetry;
|
|
179
194
|
const telemetry = new Telemetry();
|
|
195
|
+
// Use Symbol.for to ensure the same symbol across module reloads (e.g., in Jest tests).
|
|
196
|
+
// This prevents MaxListenersExceededWarning when tests use jest.resetModules().
|
|
197
|
+
const TELEMETRY_INSTANCE_KEY = Symbol.for('promptfoo.telemetry.instance');
|
|
198
|
+
const SHUTDOWN_HANDLER_KEY = Symbol.for('promptfoo.telemetry.shutdownHandler');
|
|
199
|
+
// Store telemetry instance on process so the beforeExit handler can access the current instance
|
|
200
|
+
process[TELEMETRY_INSTANCE_KEY] = telemetry;
|
|
201
|
+
// Register cleanup handler only once across all module reloads.
|
|
202
|
+
// This is a safety net to ensure PostHog client is properly shut down when the process exits.
|
|
203
|
+
// The primary fix is disabling PostHog's internal flush timer (flushInterval: 0) so it
|
|
204
|
+
// doesn't keep the event loop alive. See: https://github.com/promptfoo/promptfoo/issues/5893
|
|
205
|
+
if (!process[SHUTDOWN_HANDLER_KEY]) {
|
|
206
|
+
process[SHUTDOWN_HANDLER_KEY] = true;
|
|
207
|
+
process.once('beforeExit', () => {
|
|
208
|
+
const instance = process[TELEMETRY_INSTANCE_KEY];
|
|
209
|
+
if (instance) {
|
|
210
|
+
instance.shutdown().catch(() => {
|
|
211
|
+
// Silently ignore - logger may be unavailable during shutdown
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
180
216
|
exports.default = telemetry;
|
|
181
217
|
//# sourceMappingURL=telemetry.js.map
|
package/dist/src/types/env.d.ts
CHANGED
|
@@ -67,6 +67,7 @@ export declare const ProviderEnvOverridesSchema: z.ZodObject<{
|
|
|
67
67
|
OPENAI_API_KEY: z.ZodOptional<z.ZodString>;
|
|
68
68
|
OPENAI_BASE_URL: z.ZodOptional<z.ZodString>;
|
|
69
69
|
OPENAI_ORGANIZATION: z.ZodOptional<z.ZodString>;
|
|
70
|
+
CODEX_API_KEY: z.ZodOptional<z.ZodString>;
|
|
70
71
|
PALM_API_HOST: z.ZodOptional<z.ZodString>;
|
|
71
72
|
PALM_API_KEY: z.ZodOptional<z.ZodString>;
|
|
72
73
|
PORTKEY_API_KEY: z.ZodOptional<z.ZodString>;
|
|
@@ -173,6 +174,7 @@ export declare const ProviderEnvOverridesSchema: z.ZodObject<{
|
|
|
173
174
|
OPENAI_API_KEY?: string | undefined;
|
|
174
175
|
OPENAI_BASE_URL?: string | undefined;
|
|
175
176
|
OPENAI_ORGANIZATION?: string | undefined;
|
|
177
|
+
CODEX_API_KEY?: string | undefined;
|
|
176
178
|
PALM_API_HOST?: string | undefined;
|
|
177
179
|
PALM_API_KEY?: string | undefined;
|
|
178
180
|
PORTKEY_API_KEY?: string | undefined;
|
|
@@ -279,6 +281,7 @@ export declare const ProviderEnvOverridesSchema: z.ZodObject<{
|
|
|
279
281
|
OPENAI_API_KEY?: string | undefined;
|
|
280
282
|
OPENAI_BASE_URL?: string | undefined;
|
|
281
283
|
OPENAI_ORGANIZATION?: string | undefined;
|
|
284
|
+
CODEX_API_KEY?: string | undefined;
|
|
282
285
|
PALM_API_HOST?: string | undefined;
|
|
283
286
|
PALM_API_KEY?: string | undefined;
|
|
284
287
|
PORTKEY_API_KEY?: string | undefined;
|
package/dist/src/types/env.js
CHANGED
|
@@ -70,6 +70,7 @@ exports.ProviderEnvOverridesSchema = zod_1.z.object({
|
|
|
70
70
|
OPENAI_API_KEY: zod_1.z.string().optional(),
|
|
71
71
|
OPENAI_BASE_URL: zod_1.z.string().optional(),
|
|
72
72
|
OPENAI_ORGANIZATION: zod_1.z.string().optional(),
|
|
73
|
+
CODEX_API_KEY: zod_1.z.string().optional(),
|
|
73
74
|
PALM_API_HOST: zod_1.z.string().optional(),
|
|
74
75
|
PALM_API_KEY: zod_1.z.string().optional(),
|
|
75
76
|
PORTKEY_API_KEY: zod_1.z.string().optional(),
|