observability-toolkit 1.8.0 → 1.8.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 (186) hide show
  1. package/README.md +81 -3
  2. package/dist/backends/index.d.ts +119 -0
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +57 -0
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/index.test.d.ts +5 -0
  7. package/dist/backends/index.test.d.ts.map +1 -0
  8. package/dist/backends/index.test.js +156 -0
  9. package/dist/backends/index.test.js.map +1 -0
  10. package/dist/backends/local-jsonl-boolean-search.test.js +8 -27
  11. package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
  12. package/dist/backends/local-jsonl-logs.test.d.ts +2 -0
  13. package/dist/backends/local-jsonl-logs.test.d.ts.map +1 -0
  14. package/dist/backends/local-jsonl-logs.test.js +603 -0
  15. package/dist/backends/local-jsonl-logs.test.js.map +1 -0
  16. package/dist/backends/local-jsonl-traces.test.d.ts +2 -0
  17. package/dist/backends/local-jsonl-traces.test.d.ts.map +1 -0
  18. package/dist/backends/local-jsonl-traces.test.js +1723 -0
  19. package/dist/backends/local-jsonl-traces.test.js.map +1 -0
  20. package/dist/backends/local-jsonl.d.ts +4 -1
  21. package/dist/backends/local-jsonl.d.ts.map +1 -1
  22. package/dist/backends/local-jsonl.js +185 -1
  23. package/dist/backends/local-jsonl.js.map +1 -1
  24. package/dist/backends/local-jsonl.test.js +723 -46
  25. package/dist/backends/local-jsonl.test.js.map +1 -1
  26. package/dist/backends/signoz-api.d.ts +32 -0
  27. package/dist/backends/signoz-api.d.ts.map +1 -1
  28. package/dist/backends/signoz-api.js +231 -33
  29. package/dist/backends/signoz-api.js.map +1 -1
  30. package/dist/backends/signoz-api.test.js +410 -63
  31. package/dist/backends/signoz-api.test.js.map +1 -1
  32. package/dist/lib/constants.d.ts +59 -0
  33. package/dist/lib/constants.d.ts.map +1 -1
  34. package/dist/lib/constants.js +252 -6
  35. package/dist/lib/constants.js.map +1 -1
  36. package/dist/lib/constants.test.js +357 -21
  37. package/dist/lib/constants.test.js.map +1 -1
  38. package/dist/lib/edge-cases.test.d.ts +11 -0
  39. package/dist/lib/edge-cases.test.d.ts.map +1 -0
  40. package/dist/lib/edge-cases.test.js +634 -0
  41. package/dist/lib/edge-cases.test.js.map +1 -0
  42. package/dist/lib/error-sanitizer.d.ts +57 -0
  43. package/dist/lib/error-sanitizer.d.ts.map +1 -0
  44. package/dist/lib/error-sanitizer.js +207 -0
  45. package/dist/lib/error-sanitizer.js.map +1 -0
  46. package/dist/lib/error-sanitizer.test.d.ts +8 -0
  47. package/dist/lib/error-sanitizer.test.d.ts.map +1 -0
  48. package/dist/lib/error-sanitizer.test.js +369 -0
  49. package/dist/lib/error-sanitizer.test.js.map +1 -0
  50. package/dist/lib/file-utils.d.ts +134 -0
  51. package/dist/lib/file-utils.d.ts.map +1 -1
  52. package/dist/lib/file-utils.js +395 -9
  53. package/dist/lib/file-utils.js.map +1 -1
  54. package/dist/lib/file-utils.test.js +444 -3
  55. package/dist/lib/file-utils.test.js.map +1 -1
  56. package/dist/lib/indexer.d.ts +9 -1
  57. package/dist/lib/indexer.d.ts.map +1 -1
  58. package/dist/lib/indexer.js +51 -2
  59. package/dist/lib/indexer.js.map +1 -1
  60. package/dist/lib/indexer.test.js +138 -20
  61. package/dist/lib/indexer.test.js.map +1 -1
  62. package/dist/lib/input-validator.d.ts +103 -0
  63. package/dist/lib/input-validator.d.ts.map +1 -0
  64. package/dist/lib/input-validator.js +250 -0
  65. package/dist/lib/input-validator.js.map +1 -0
  66. package/dist/lib/input-validator.test.d.ts +2 -0
  67. package/dist/lib/input-validator.test.d.ts.map +1 -0
  68. package/dist/lib/input-validator.test.js +287 -0
  69. package/dist/lib/input-validator.test.js.map +1 -0
  70. package/dist/lib/query-sanitizer.d.ts +143 -0
  71. package/dist/lib/query-sanitizer.d.ts.map +1 -0
  72. package/dist/lib/query-sanitizer.js +261 -0
  73. package/dist/lib/query-sanitizer.js.map +1 -0
  74. package/dist/lib/query-sanitizer.test.d.ts +5 -0
  75. package/dist/lib/query-sanitizer.test.d.ts.map +1 -0
  76. package/dist/lib/query-sanitizer.test.js +400 -0
  77. package/dist/lib/query-sanitizer.test.js.map +1 -0
  78. package/dist/lib/server-utils.d.ts +80 -0
  79. package/dist/lib/server-utils.d.ts.map +1 -0
  80. package/dist/lib/server-utils.js +141 -0
  81. package/dist/lib/server-utils.js.map +1 -0
  82. package/dist/lib/shared-schemas.d.ts +59 -0
  83. package/dist/lib/shared-schemas.d.ts.map +1 -0
  84. package/dist/lib/shared-schemas.js +58 -0
  85. package/dist/lib/shared-schemas.js.map +1 -0
  86. package/dist/lib/shared-schemas.test.d.ts +5 -0
  87. package/dist/lib/shared-schemas.test.d.ts.map +1 -0
  88. package/dist/lib/shared-schemas.test.js +106 -0
  89. package/dist/lib/shared-schemas.test.js.map +1 -0
  90. package/dist/lib/toon-encoder.d.ts +21 -0
  91. package/dist/lib/toon-encoder.d.ts.map +1 -0
  92. package/dist/lib/toon-encoder.js +46 -0
  93. package/dist/lib/toon-encoder.js.map +1 -0
  94. package/dist/server.d.ts +1 -1
  95. package/dist/server.d.ts.map +1 -1
  96. package/dist/server.js +155 -81
  97. package/dist/server.js.map +1 -1
  98. package/dist/server.test.js +363 -0
  99. package/dist/server.test.js.map +1 -1
  100. package/dist/test-helpers/env-utils.d.ts +65 -0
  101. package/dist/test-helpers/env-utils.d.ts.map +1 -0
  102. package/dist/test-helpers/env-utils.js +94 -0
  103. package/dist/test-helpers/env-utils.js.map +1 -0
  104. package/dist/test-helpers/file-utils.d.ts +93 -0
  105. package/dist/test-helpers/file-utils.d.ts.map +1 -0
  106. package/dist/test-helpers/file-utils.js +206 -0
  107. package/dist/test-helpers/file-utils.js.map +1 -0
  108. package/dist/test-helpers/index.d.ts +10 -0
  109. package/dist/test-helpers/index.d.ts.map +1 -0
  110. package/dist/test-helpers/index.js +28 -0
  111. package/dist/test-helpers/index.js.map +1 -0
  112. package/dist/test-helpers/mock-backends.d.ts +139 -0
  113. package/dist/test-helpers/mock-backends.d.ts.map +1 -0
  114. package/dist/test-helpers/mock-backends.js +227 -0
  115. package/dist/test-helpers/mock-backends.js.map +1 -0
  116. package/dist/test-helpers/mock-backends.test.d.ts +5 -0
  117. package/dist/test-helpers/mock-backends.test.d.ts.map +1 -0
  118. package/dist/test-helpers/mock-backends.test.js +368 -0
  119. package/dist/test-helpers/mock-backends.test.js.map +1 -0
  120. package/dist/test-helpers/schema-validators.d.ts +32 -0
  121. package/dist/test-helpers/schema-validators.d.ts.map +1 -0
  122. package/dist/test-helpers/schema-validators.js +125 -0
  123. package/dist/test-helpers/schema-validators.js.map +1 -0
  124. package/dist/test-helpers/test-data-builders.d.ts +223 -0
  125. package/dist/test-helpers/test-data-builders.d.ts.map +1 -0
  126. package/dist/test-helpers/test-data-builders.js +288 -0
  127. package/dist/test-helpers/test-data-builders.js.map +1 -0
  128. package/dist/test-helpers/test-data-builders.test.d.ts +2 -0
  129. package/dist/test-helpers/test-data-builders.test.d.ts.map +1 -0
  130. package/dist/test-helpers/test-data-builders.test.js +306 -0
  131. package/dist/test-helpers/test-data-builders.test.js.map +1 -0
  132. package/dist/test-helpers/tool-validators.d.ts +28 -0
  133. package/dist/test-helpers/tool-validators.d.ts.map +1 -0
  134. package/dist/test-helpers/tool-validators.js +56 -0
  135. package/dist/test-helpers/tool-validators.js.map +1 -0
  136. package/dist/tools/context-stats.d.ts +1 -0
  137. package/dist/tools/context-stats.d.ts.map +1 -1
  138. package/dist/tools/context-stats.js +9 -5
  139. package/dist/tools/context-stats.js.map +1 -1
  140. package/dist/tools/context-stats.test.js +24 -10
  141. package/dist/tools/context-stats.test.js.map +1 -1
  142. package/dist/tools/get-trace-url.js +2 -2
  143. package/dist/tools/get-trace-url.js.map +1 -1
  144. package/dist/tools/health-check.js +2 -2
  145. package/dist/tools/health-check.js.map +1 -1
  146. package/dist/tools/index.d.ts +1 -0
  147. package/dist/tools/index.d.ts.map +1 -1
  148. package/dist/tools/index.js +1 -0
  149. package/dist/tools/index.js.map +1 -1
  150. package/dist/tools/query-evaluations.d.ts +186 -0
  151. package/dist/tools/query-evaluations.d.ts.map +1 -0
  152. package/dist/tools/query-evaluations.js +351 -0
  153. package/dist/tools/query-evaluations.js.map +1 -0
  154. package/dist/tools/query-evaluations.test.d.ts +5 -0
  155. package/dist/tools/query-evaluations.test.d.ts.map +1 -0
  156. package/dist/tools/query-evaluations.test.js +733 -0
  157. package/dist/tools/query-evaluations.test.js.map +1 -0
  158. package/dist/tools/query-llm-events.d.ts +24 -18
  159. package/dist/tools/query-llm-events.d.ts.map +1 -1
  160. package/dist/tools/query-llm-events.js +103 -60
  161. package/dist/tools/query-llm-events.js.map +1 -1
  162. package/dist/tools/query-llm-events.test.js +271 -9
  163. package/dist/tools/query-llm-events.test.js.map +1 -1
  164. package/dist/tools/query-logs.d.ts +28 -20
  165. package/dist/tools/query-logs.d.ts.map +1 -1
  166. package/dist/tools/query-logs.js +85 -61
  167. package/dist/tools/query-logs.js.map +1 -1
  168. package/dist/tools/query-logs.test.js +74 -145
  169. package/dist/tools/query-logs.test.js.map +1 -1
  170. package/dist/tools/query-metrics.d.ts +20 -20
  171. package/dist/tools/query-metrics.d.ts.map +1 -1
  172. package/dist/tools/query-metrics.js +109 -61
  173. package/dist/tools/query-metrics.js.map +1 -1
  174. package/dist/tools/query-metrics.test.js +26 -61
  175. package/dist/tools/query-metrics.test.js.map +1 -1
  176. package/dist/tools/query-traces.d.ts +24 -22
  177. package/dist/tools/query-traces.d.ts.map +1 -1
  178. package/dist/tools/query-traces.js +95 -70
  179. package/dist/tools/query-traces.js.map +1 -1
  180. package/dist/tools/query-traces.test.js +294 -90
  181. package/dist/tools/query-traces.test.js.map +1 -1
  182. package/dist/tools/setup-claudeignore.js +7 -7
  183. package/dist/tools/setup-claudeignore.js.map +1 -1
  184. package/dist/tools/setup-claudeignore.test.js +4 -25
  185. package/dist/tools/setup-claudeignore.test.js.map +1 -1
  186. package/package.json +3 -4
@@ -0,0 +1,351 @@
1
+ /**
2
+ * Query LLM evaluation results from local JSONL files
3
+ *
4
+ * Implements gen_ai.evaluation.result event support per OTel GenAI semantic conventions.
5
+ * https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-events/
6
+ */
7
+ import { z } from 'zod';
8
+ import { MultiDirectoryBackend } from '../backends/local-jsonl.js';
9
+ import { MAX_RESULTS_IN_MEMORY } from '../lib/constants.js';
10
+ import { enforceMemoryLimit, StreamingAggregator, shouldUseStreamingAggregation } from '../lib/file-utils.js';
11
+ import { validateLimit, validateDateRange, validateRegexPattern, InputValidationError, } from '../lib/input-validator.js';
12
+ import { sessionSchema, traceIdSchema, dateRangeSchema, paginationSchema, } from '../lib/shared-schemas.js';
13
+ export const queryEvaluationsSchema = z.object({
14
+ evaluationName: z.string().optional().describe('Evaluation name (substring)'),
15
+ scoreMin: z.number().optional().describe('Min score threshold'),
16
+ scoreMax: z.number().optional().describe('Max score threshold'),
17
+ scoreLabel: z.string().optional().describe('Score label (exact)'),
18
+ evaluator: z.string().optional().describe('Evaluator identity'),
19
+ evaluatorType: z.enum(['llm', 'human', 'rule', 'classifier']).optional().describe('Evaluator type'),
20
+ responseId: z.string().optional().describe('Response ID'),
21
+ ...traceIdSchema,
22
+ ...sessionSchema,
23
+ ...dateRangeSchema,
24
+ ...paginationSchema,
25
+ aggregation: z.enum(['avg', 'min', 'max', 'count', 'p50', 'p95', 'p99']).optional().describe('Aggregation function'),
26
+ groupBy: z.array(z.enum(['evaluationName', 'scoreLabel', 'evaluator'])).optional().describe('Group by fields'),
27
+ });
28
+ /**
29
+ * Calculate percentile using R-7 linear interpolation method.
30
+ * This is the default method used by NumPy, Excel, and R.
31
+ * @param sortedValues - Pre-sorted array of numeric values (ascending)
32
+ * @param percentile - Percentile to calculate (0-100)
33
+ * @returns The interpolated percentile value
34
+ */
35
+ function calculatePercentileFromSorted(sortedValues, percentile) {
36
+ if (sortedValues.length === 0)
37
+ return 0;
38
+ if (sortedValues.length === 1)
39
+ return sortedValues[0];
40
+ // R-7 method: linear interpolation
41
+ const rank = (percentile / 100) * (sortedValues.length - 1);
42
+ const lowerIndex = Math.floor(rank);
43
+ const upperIndex = Math.ceil(rank);
44
+ const weight = rank - lowerIndex;
45
+ if (lowerIndex === upperIndex) {
46
+ return sortedValues[lowerIndex];
47
+ }
48
+ return sortedValues[lowerIndex] * (1 - weight) + sortedValues[upperIndex] * weight;
49
+ }
50
+ // Constants for magic values
51
+ const UNGROUPED_KEY = '__all__';
52
+ const MISSING_LABEL_KEY = '__none__';
53
+ const MAX_RETURNED_EVALUATIONS = 20;
54
+ /**
55
+ * Normalize a score value based on its unit to a 0-1 scale.
56
+ * Used for calculating averageScore across evaluations with mixed units.
57
+ *
58
+ * Supported units:
59
+ * - 'percentage' or 'percent': 0-100 → 0-1
60
+ * - 'ratio_0_1' or undefined: already 0-1, no change
61
+ * - Other units: kept as-is (no normalization)
62
+ */
63
+ function normalizeScore(value, unit) {
64
+ if (!unit)
65
+ return value;
66
+ const normalizedUnit = unit.toLowerCase().trim();
67
+ switch (normalizedUnit) {
68
+ case 'percentage':
69
+ case 'percent':
70
+ return value / 100;
71
+ case 'ratio_0_1':
72
+ default:
73
+ return value;
74
+ }
75
+ }
76
+ /**
77
+ * Normalize scoreLabel: treat empty strings as undefined (P1-3 fix)
78
+ */
79
+ function normalizeScoreLabel(label) {
80
+ if (label === undefined || label === null)
81
+ return undefined;
82
+ const trimmed = label.trim();
83
+ return trimmed.length > 0 ? trimmed : undefined;
84
+ }
85
+ /** Group key for aggregation */
86
+ function getGroupKey(evaluation, groupBy) {
87
+ if (groupBy.length === 0)
88
+ return UNGROUPED_KEY;
89
+ return groupBy.map(field => {
90
+ if (field === 'evaluationName')
91
+ return evaluation.evaluationName;
92
+ if (field === 'scoreLabel')
93
+ return normalizeScoreLabel(evaluation.scoreLabel) || MISSING_LABEL_KEY;
94
+ if (field === 'evaluator')
95
+ return evaluation.evaluator || MISSING_LABEL_KEY;
96
+ return '__unknown__';
97
+ }).join('::');
98
+ }
99
+ /** Calculate aggregation result for a group */
100
+ function calculateAggregation(stats, aggregation) {
101
+ if (stats.count === 0 && aggregation !== 'count')
102
+ return undefined;
103
+ // Pre-sort once for percentile calculations (P2-1 optimization)
104
+ let sortedValues;
105
+ if (aggregation === 'p50' || aggregation === 'p95' || aggregation === 'p99') {
106
+ if (stats.values.length === 0)
107
+ return undefined;
108
+ sortedValues = [...stats.values].sort((a, b) => a - b);
109
+ }
110
+ switch (aggregation) {
111
+ case 'count':
112
+ return stats.count;
113
+ case 'avg':
114
+ return stats.values.length > 0 ? stats.sum / stats.values.length : undefined;
115
+ case 'min':
116
+ return stats.min;
117
+ case 'max':
118
+ return stats.max;
119
+ case 'p50':
120
+ return calculatePercentileFromSorted(sortedValues, 50);
121
+ case 'p95':
122
+ return calculatePercentileFromSorted(sortedValues, 95);
123
+ case 'p99':
124
+ return calculatePercentileFromSorted(sortedValues, 99);
125
+ }
126
+ }
127
+ /**
128
+ * Build summary statistics from evaluations.
129
+ * Counts by evaluation name, score label, and evaluator, plus average normalized score.
130
+ */
131
+ export function buildSummary(evaluations) {
132
+ const byName = new Map();
133
+ const byLabel = new Map();
134
+ const byEvaluator = new Map();
135
+ let totalScore = 0;
136
+ let scoreCount = 0;
137
+ for (const evaluation of evaluations) {
138
+ const normalizedLabel = normalizeScoreLabel(evaluation.scoreLabel);
139
+ byName.set(evaluation.evaluationName, (byName.get(evaluation.evaluationName) || 0) + 1);
140
+ if (normalizedLabel) {
141
+ byLabel.set(normalizedLabel, (byLabel.get(normalizedLabel) || 0) + 1);
142
+ }
143
+ if (evaluation.evaluator) {
144
+ byEvaluator.set(evaluation.evaluator, (byEvaluator.get(evaluation.evaluator) || 0) + 1);
145
+ }
146
+ if (evaluation.scoreValue !== undefined) {
147
+ totalScore += normalizeScore(evaluation.scoreValue, evaluation.scoreUnit);
148
+ scoreCount++;
149
+ }
150
+ }
151
+ return {
152
+ byEvaluationName: Object.fromEntries(byName),
153
+ byScoreLabel: Object.fromEntries(byLabel),
154
+ byEvaluator: Object.fromEntries(byEvaluator),
155
+ averageScore: scoreCount > 0 ? totalScore / scoreCount : undefined,
156
+ };
157
+ }
158
+ /**
159
+ * Build aggregation results from evaluations.
160
+ * Groups evaluations by specified fields and calculates the requested aggregation.
161
+ */
162
+ export function buildAggregations(evaluations, aggregation, groupBy) {
163
+ const groups = new Map();
164
+ for (const evaluation of evaluations) {
165
+ const normalizedLabel = normalizeScoreLabel(evaluation.scoreLabel);
166
+ const key = getGroupKey(evaluation, groupBy);
167
+ const stats = groups.get(key) || {
168
+ count: 0,
169
+ sum: 0,
170
+ min: undefined,
171
+ max: undefined,
172
+ values: [],
173
+ fields: {},
174
+ };
175
+ stats.count++;
176
+ if (evaluation.scoreValue !== undefined) {
177
+ stats.sum += evaluation.scoreValue;
178
+ stats.min = stats.min === undefined ? evaluation.scoreValue : Math.min(stats.min, evaluation.scoreValue);
179
+ stats.max = stats.max === undefined ? evaluation.scoreValue : Math.max(stats.max, evaluation.scoreValue);
180
+ stats.values.push(evaluation.scoreValue);
181
+ }
182
+ // Store field values for response
183
+ for (const field of groupBy) {
184
+ if (field === 'evaluationName')
185
+ stats.fields.evaluationName = evaluation.evaluationName;
186
+ if (field === 'scoreLabel')
187
+ stats.fields.scoreLabel = normalizedLabel || '';
188
+ if (field === 'evaluator')
189
+ stats.fields.evaluator = evaluation.evaluator || '';
190
+ }
191
+ groups.set(key, stats);
192
+ }
193
+ return Array.from(groups.values()).map(stats => ({
194
+ ...(stats.fields.evaluationName && { evaluationName: stats.fields.evaluationName }),
195
+ ...(stats.fields.scoreLabel && { scoreLabel: stats.fields.scoreLabel }),
196
+ ...(stats.fields.evaluator && { evaluator: stats.fields.evaluator }),
197
+ count: stats.count,
198
+ value: calculateAggregation(stats, aggregation),
199
+ }));
200
+ }
201
+ export async function queryEvaluations(rawInput, backendOptions) {
202
+ try {
203
+ const input = queryEvaluationsSchema.parse(rawInput);
204
+ // Validate inputs
205
+ const validatedLimit = validateLimit(input.limit);
206
+ // Validate date range if provided
207
+ if (input.startDate || input.endDate) {
208
+ validateDateRange(input.startDate, input.endDate);
209
+ }
210
+ // Validate evaluationName as regex pattern if provided
211
+ if (input.evaluationName) {
212
+ validateRegexPattern(input.evaluationName);
213
+ }
214
+ // P2-2: Validate score range values are finite numbers
215
+ if (input.scoreMin !== undefined && !Number.isFinite(input.scoreMin)) {
216
+ throw new Error(`Invalid scoreMin: must be a finite number, got ${input.scoreMin}`);
217
+ }
218
+ if (input.scoreMax !== undefined && !Number.isFinite(input.scoreMax)) {
219
+ throw new Error(`Invalid scoreMax: must be a finite number, got ${input.scoreMax}`);
220
+ }
221
+ // Validate score range logic
222
+ if (input.scoreMin !== undefined && input.scoreMax !== undefined) {
223
+ if (input.scoreMin > input.scoreMax) {
224
+ throw new Error(`Invalid score range: scoreMin (${input.scoreMin}) cannot exceed scoreMax (${input.scoreMax})`);
225
+ }
226
+ }
227
+ const options = {
228
+ evaluationName: input.evaluationName,
229
+ scoreMin: input.scoreMin,
230
+ scoreMax: input.scoreMax,
231
+ scoreLabel: input.scoreLabel,
232
+ evaluator: input.evaluator,
233
+ evaluatorType: input.evaluatorType,
234
+ responseId: input.responseId,
235
+ traceId: input.traceId,
236
+ sessionId: input.sessionId,
237
+ startDate: input.startDate,
238
+ endDate: input.endDate,
239
+ limit: validatedLimit,
240
+ aggregation: input.aggregation,
241
+ groupBy: input.groupBy,
242
+ };
243
+ const local = backendOptions?.localBackend ?? new MultiDirectoryBackend();
244
+ const rawEvaluations = await local.queryEvaluations(options);
245
+ // Enforce memory limit
246
+ const { results: evaluations, truncated, originalCount } = enforceMemoryLimit(rawEvaluations, MAX_RESULTS_IN_MEMORY);
247
+ // Use streaming aggregation for large datasets when computing aggregations
248
+ const useStreaming = shouldUseStreamingAggregation(evaluations.length) && input.aggregation;
249
+ let summary;
250
+ let aggregations;
251
+ if (useStreaming && input.aggregation) {
252
+ // Use StreamingAggregator for large datasets
253
+ // Build summary with streaming aggregation
254
+ const byName = new Map();
255
+ const byLabel = new Map();
256
+ const byEvaluator = new Map();
257
+ const scoreAggregator = new StreamingAggregator();
258
+ // Group aggregators for each group key
259
+ const groupAggregators = new Map();
260
+ for (const evaluation of evaluations) {
261
+ const normalizedLabel = normalizeScoreLabel(evaluation.scoreLabel);
262
+ byName.set(evaluation.evaluationName, (byName.get(evaluation.evaluationName) || 0) + 1);
263
+ if (normalizedLabel) {
264
+ byLabel.set(normalizedLabel, (byLabel.get(normalizedLabel) || 0) + 1);
265
+ }
266
+ if (evaluation.evaluator) {
267
+ byEvaluator.set(evaluation.evaluator, (byEvaluator.get(evaluation.evaluator) || 0) + 1);
268
+ }
269
+ if (evaluation.scoreValue !== undefined) {
270
+ scoreAggregator.add(normalizeScore(evaluation.scoreValue, evaluation.scoreUnit));
271
+ }
272
+ // Build group aggregations
273
+ const groupBy = input.groupBy || [];
274
+ const key = getGroupKey(evaluation, groupBy);
275
+ let group = groupAggregators.get(key);
276
+ if (!group) {
277
+ group = { agg: new StreamingAggregator(), count: 0, fields: {} };
278
+ // Store field values for response
279
+ for (const field of groupBy) {
280
+ if (field === 'evaluationName')
281
+ group.fields.evaluationName = evaluation.evaluationName;
282
+ if (field === 'scoreLabel')
283
+ group.fields.scoreLabel = normalizedLabel || '';
284
+ if (field === 'evaluator')
285
+ group.fields.evaluator = evaluation.evaluator || '';
286
+ }
287
+ groupAggregators.set(key, group);
288
+ }
289
+ group.count++;
290
+ if (evaluation.scoreValue !== undefined) {
291
+ group.agg.add(evaluation.scoreValue);
292
+ }
293
+ }
294
+ summary = {
295
+ byEvaluationName: Object.fromEntries(byName),
296
+ byScoreLabel: Object.fromEntries(byLabel),
297
+ byEvaluator: Object.fromEntries(byEvaluator),
298
+ averageScore: scoreAggregator.getResult('avg'),
299
+ };
300
+ // Build aggregation results from streaming aggregators
301
+ aggregations = Array.from(groupAggregators.values()).map(group => ({
302
+ ...(group.fields.evaluationName && { evaluationName: group.fields.evaluationName }),
303
+ ...(group.fields.scoreLabel && { scoreLabel: group.fields.scoreLabel }),
304
+ ...(group.fields.evaluator && { evaluator: group.fields.evaluator }),
305
+ count: group.count,
306
+ value: group.agg.getResult(input.aggregation),
307
+ }));
308
+ }
309
+ else {
310
+ // Use original approach for smaller datasets
311
+ summary = buildSummary(evaluations);
312
+ aggregations = input.aggregation
313
+ ? buildAggregations(evaluations, input.aggregation, input.groupBy || [])
314
+ : undefined;
315
+ }
316
+ return {
317
+ count: evaluations.length,
318
+ ...(truncated && { truncated: true, originalCount }),
319
+ summary: {
320
+ ...summary,
321
+ ...(aggregations && { aggregations }),
322
+ },
323
+ evaluations: evaluations.slice(0, MAX_RETURNED_EVALUATIONS).map(e => ({
324
+ timestamp: e.timestamp,
325
+ evaluationName: e.evaluationName,
326
+ scoreValue: e.scoreValue,
327
+ scoreLabel: e.scoreLabel,
328
+ scoreUnit: e.scoreUnit,
329
+ explanation: e.explanation,
330
+ evaluator: e.evaluator,
331
+ evaluatorType: e.evaluatorType,
332
+ responseId: e.responseId,
333
+ traceId: e.traceId,
334
+ sessionId: e.sessionId,
335
+ })),
336
+ };
337
+ }
338
+ catch (error) {
339
+ if (error instanceof InputValidationError) {
340
+ throw new Error(`Validation error (${error.field}): ${error.message}`);
341
+ }
342
+ throw error;
343
+ }
344
+ }
345
+ export const queryEvaluationsTool = {
346
+ name: 'obs_query_evaluations',
347
+ description: 'Query gen_ai.evaluation.result events. Supports score filtering and aggregations.',
348
+ inputSchema: queryEvaluationsSchema,
349
+ handler: queryEvaluations,
350
+ };
351
+ //# sourceMappingURL=query-evaluations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-evaluations.js","sourceRoot":"","sources":["../../src/tools/query-evaluations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for query-evaluations tool
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=query-evaluations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-evaluations.test.d.ts","sourceRoot":"","sources":["../../src/tools/query-evaluations.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}