promptfoo 0.115.3 → 0.115.4

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 (49) hide show
  1. package/dist/drizzle/0015_zippy_wallop.sql +29 -0
  2. package/dist/drizzle/meta/0015_snapshot.json +1003 -0
  3. package/dist/drizzle/meta/_journal.json +7 -0
  4. package/dist/package.json +1 -1
  5. package/dist/src/app/assets/{index-BXsrbFYA.js → index-DwIrymQd.js} +169 -169
  6. package/dist/src/app/assets/{source-map-support-CNXJ1-7r.js → source-map-support-UIopcc8W.js} +1 -1
  7. package/dist/src/app/assets/{sync-CYtWtmxM.js → sync-CqTZoCfS.js} +1 -1
  8. package/dist/src/app/index.html +1 -1
  9. package/dist/src/database/tables.d.ts +365 -0
  10. package/dist/src/database/tables.d.ts.map +1 -1
  11. package/dist/src/database/tables.js +48 -1
  12. package/dist/src/database/tables.js.map +1 -1
  13. package/dist/src/evaluator.d.ts.map +1 -1
  14. package/dist/src/evaluator.js +46 -4
  15. package/dist/src/evaluator.js.map +1 -1
  16. package/dist/src/redteam/commands/generate.d.ts.map +1 -1
  17. package/dist/src/redteam/commands/generate.js +0 -2
  18. package/dist/src/redteam/commands/generate.js.map +1 -1
  19. package/dist/src/server/routes/traces.d.ts +2 -0
  20. package/dist/src/server/routes/traces.d.ts.map +1 -0
  21. package/dist/src/server/routes/traces.js +45 -0
  22. package/dist/src/server/routes/traces.js.map +1 -0
  23. package/dist/src/server/server.d.ts.map +1 -1
  24. package/dist/src/server/server.js +2 -0
  25. package/dist/src/server/server.js.map +1 -1
  26. package/dist/src/tracing/evaluatorTracing.d.ts +39 -0
  27. package/dist/src/tracing/evaluatorTracing.d.ts.map +1 -0
  28. package/dist/src/tracing/evaluatorTracing.js +189 -0
  29. package/dist/src/tracing/evaluatorTracing.js.map +1 -0
  30. package/dist/src/tracing/otlpReceiver.d.ts +21 -0
  31. package/dist/src/tracing/otlpReceiver.d.ts.map +1 -0
  32. package/dist/src/tracing/otlpReceiver.js +278 -0
  33. package/dist/src/tracing/otlpReceiver.js.map +1 -0
  34. package/dist/src/tracing/store.d.ts +33 -0
  35. package/dist/src/tracing/store.d.ts.map +1 -0
  36. package/dist/src/tracing/store.js +170 -0
  37. package/dist/src/tracing/store.js.map +1 -0
  38. package/dist/src/types/index.d.ts +606 -0
  39. package/dist/src/types/index.d.ts.map +1 -1
  40. package/dist/src/types/index.js +77 -0
  41. package/dist/src/types/index.js.map +1 -1
  42. package/dist/src/types/providers.d.ts +4 -0
  43. package/dist/src/types/providers.d.ts.map +1 -1
  44. package/dist/src/types/providers.js.map +1 -1
  45. package/dist/src/util/config/load.d.ts.map +1 -1
  46. package/dist/src/util/config/load.js +3 -0
  47. package/dist/src/util/config/load.js.map +1 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +1 -1
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TraceStore = void 0;
7
+ exports.getTraceStore = getTraceStore;
8
+ const crypto_1 = require("crypto");
9
+ const drizzle_orm_1 = require("drizzle-orm");
10
+ const database_1 = require("../database");
11
+ const tables_1 = require("../database/tables");
12
+ const logger_1 = __importDefault(require("../logger"));
13
+ class TraceStore {
14
+ constructor() {
15
+ this.db = null;
16
+ }
17
+ getDatabase() {
18
+ if (!this.db) {
19
+ logger_1.default.debug('[TraceStore] Initializing database connection');
20
+ this.db = (0, database_1.getDb)();
21
+ }
22
+ return this.db;
23
+ }
24
+ async createTrace(trace) {
25
+ try {
26
+ logger_1.default.debug(`[TraceStore] Creating trace ${trace.traceId} for evaluation ${trace.evaluationId}`);
27
+ const db = this.getDatabase();
28
+ await db.insert(tables_1.tracesTable).values({
29
+ id: (0, crypto_1.randomUUID)(),
30
+ traceId: trace.traceId,
31
+ evaluationId: trace.evaluationId,
32
+ testCaseId: trace.testCaseId,
33
+ metadata: trace.metadata,
34
+ });
35
+ logger_1.default.debug(`[TraceStore] Successfully created trace ${trace.traceId}`);
36
+ }
37
+ catch (error) {
38
+ logger_1.default.error(`[TraceStore] Failed to create trace: ${error}`);
39
+ throw error;
40
+ }
41
+ }
42
+ async addSpans(traceId, spans, options) {
43
+ try {
44
+ logger_1.default.debug(`[TraceStore] Adding ${spans.length} spans to trace ${traceId}`);
45
+ const db = this.getDatabase();
46
+ // Only verify trace exists if not skipping the check (for OTLP scenarios)
47
+ if (options?.skipTraceCheck) {
48
+ logger_1.default.debug(`[TraceStore] Skipping trace existence check for OTLP scenario`);
49
+ }
50
+ else {
51
+ logger_1.default.debug(`[TraceStore] Verifying trace ${traceId} exists`);
52
+ const trace = await db
53
+ .select()
54
+ .from(tables_1.tracesTable)
55
+ .where((0, drizzle_orm_1.eq)(tables_1.tracesTable.traceId, traceId))
56
+ .limit(1);
57
+ if (trace.length === 0) {
58
+ logger_1.default.warn(`[TraceStore] Trace ${traceId} not found, skipping spans`);
59
+ return;
60
+ }
61
+ logger_1.default.debug(`[TraceStore] Trace ${traceId} found, proceeding with span insertion`);
62
+ }
63
+ // Insert spans
64
+ const spanRecords = spans.map((span) => {
65
+ logger_1.default.debug(`[TraceStore] Preparing span ${span.spanId} (${span.name}) for insertion`);
66
+ return {
67
+ id: (0, crypto_1.randomUUID)(),
68
+ traceId,
69
+ spanId: span.spanId,
70
+ parentSpanId: span.parentSpanId,
71
+ name: span.name,
72
+ startTime: span.startTime,
73
+ endTime: span.endTime,
74
+ attributes: span.attributes,
75
+ statusCode: span.statusCode,
76
+ statusMessage: span.statusMessage,
77
+ };
78
+ });
79
+ await db.insert(tables_1.spansTable).values(spanRecords);
80
+ logger_1.default.debug(`[TraceStore] Successfully added ${spans.length} spans to trace ${traceId}`);
81
+ }
82
+ catch (error) {
83
+ logger_1.default.error(`[TraceStore] Failed to add spans: ${error}`);
84
+ throw error;
85
+ }
86
+ }
87
+ async getTracesByEvaluation(evaluationId) {
88
+ try {
89
+ logger_1.default.debug(`[TraceStore] Fetching traces for evaluation ${evaluationId}`);
90
+ const db = this.getDatabase();
91
+ // Get all traces for the evaluation
92
+ const traces = await db
93
+ .select()
94
+ .from(tables_1.tracesTable)
95
+ .where((0, drizzle_orm_1.eq)(tables_1.tracesTable.evaluationId, evaluationId));
96
+ logger_1.default.debug(`[TraceStore] Found ${traces.length} traces for evaluation ${evaluationId}`);
97
+ // Get spans for each trace
98
+ const tracesWithSpans = await Promise.all(traces.map(async (trace) => {
99
+ logger_1.default.debug(`[TraceStore] Fetching spans for trace ${trace.traceId}`);
100
+ const spans = await db
101
+ .select()
102
+ .from(tables_1.spansTable)
103
+ .where((0, drizzle_orm_1.eq)(tables_1.spansTable.traceId, trace.traceId));
104
+ logger_1.default.debug(`[TraceStore] Found ${spans.length} spans for trace ${trace.traceId}`);
105
+ return {
106
+ ...trace,
107
+ spans,
108
+ };
109
+ }));
110
+ logger_1.default.debug(`[TraceStore] Returning ${tracesWithSpans.length} traces with spans`);
111
+ return tracesWithSpans;
112
+ }
113
+ catch (error) {
114
+ logger_1.default.error(`[TraceStore] Failed to get traces for evaluation: ${error}`);
115
+ throw error;
116
+ }
117
+ }
118
+ async getTrace(traceId) {
119
+ try {
120
+ logger_1.default.debug(`[TraceStore] Fetching trace ${traceId}`);
121
+ const db = this.getDatabase();
122
+ const traces = await db
123
+ .select()
124
+ .from(tables_1.tracesTable)
125
+ .where((0, drizzle_orm_1.eq)(tables_1.tracesTable.traceId, traceId))
126
+ .limit(1);
127
+ if (traces.length === 0) {
128
+ logger_1.default.debug(`[TraceStore] Trace ${traceId} not found`);
129
+ return null;
130
+ }
131
+ const trace = traces[0];
132
+ logger_1.default.debug(`[TraceStore] Found trace ${traceId}, fetching spans`);
133
+ const spans = await db.select().from(tables_1.spansTable).where((0, drizzle_orm_1.eq)(tables_1.spansTable.traceId, traceId));
134
+ logger_1.default.debug(`[TraceStore] Found ${spans.length} spans for trace ${traceId}`);
135
+ return {
136
+ ...trace,
137
+ spans,
138
+ };
139
+ }
140
+ catch (error) {
141
+ logger_1.default.error(`[TraceStore] Failed to get trace: ${error}`);
142
+ throw error;
143
+ }
144
+ }
145
+ async deleteOldTraces(retentionDays) {
146
+ try {
147
+ logger_1.default.debug(`[TraceStore] Deleting traces older than ${retentionDays} days`);
148
+ const db = this.getDatabase();
149
+ const cutoffTime = Date.now() - retentionDays * 24 * 60 * 60 * 1000;
150
+ // Delete old traces (spans will be cascade deleted due to foreign key)
151
+ await db.delete(tables_1.tracesTable).where((0, drizzle_orm_1.lt)(tables_1.tracesTable.createdAt, cutoffTime));
152
+ logger_1.default.debug(`[TraceStore] Successfully deleted traces older than ${retentionDays} days`);
153
+ }
154
+ catch (error) {
155
+ logger_1.default.error(`[TraceStore] Failed to delete old traces: ${error}`);
156
+ throw error;
157
+ }
158
+ }
159
+ }
160
+ exports.TraceStore = TraceStore;
161
+ // Singleton instance
162
+ let traceStore = null;
163
+ function getTraceStore() {
164
+ if (!traceStore) {
165
+ logger_1.default.debug('[TraceStore] Creating new TraceStore instance');
166
+ traceStore = new TraceStore();
167
+ }
168
+ return traceStore;
169
+ }
170
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/tracing/store.ts"],"names":[],"mappings":"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"}