judgeval 0.1.33

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 (51) hide show
  1. package/LICENSE.md +202 -0
  2. package/README.md +340 -0
  3. package/dist/clients.d.ts +7 -0
  4. package/dist/clients.js +78 -0
  5. package/dist/clients.js.map +1 -0
  6. package/dist/common/integrations/langgraph.d.ts +40 -0
  7. package/dist/common/integrations/langgraph.js +444 -0
  8. package/dist/common/integrations/langgraph.js.map +1 -0
  9. package/dist/common/logger-instance.d.ts +3 -0
  10. package/dist/common/logger-instance.js +64 -0
  11. package/dist/common/logger-instance.js.map +1 -0
  12. package/dist/common/logger.d.ts +54 -0
  13. package/dist/common/logger.js +221 -0
  14. package/dist/common/logger.js.map +1 -0
  15. package/dist/common/tracer.d.ts +205 -0
  16. package/dist/common/tracer.js +1035 -0
  17. package/dist/common/tracer.js.map +1 -0
  18. package/dist/constants.d.ts +51 -0
  19. package/dist/constants.js +344 -0
  20. package/dist/constants.js.map +1 -0
  21. package/dist/data/example.d.ts +70 -0
  22. package/dist/data/example.js +125 -0
  23. package/dist/data/example.js.map +1 -0
  24. package/dist/data/result.d.ts +51 -0
  25. package/dist/data/result.js +83 -0
  26. package/dist/data/result.js.map +1 -0
  27. package/dist/evaluation-run.d.ts +44 -0
  28. package/dist/evaluation-run.js +136 -0
  29. package/dist/evaluation-run.js.map +1 -0
  30. package/dist/index.d.ts +10 -0
  31. package/dist/index.js +73 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/judgment-client.d.ts +179 -0
  34. package/dist/judgment-client.js +1038 -0
  35. package/dist/judgment-client.js.map +1 -0
  36. package/dist/rules.d.ts +120 -0
  37. package/dist/rules.js +322 -0
  38. package/dist/rules.js.map +1 -0
  39. package/dist/run-evaluation.d.ts +78 -0
  40. package/dist/run-evaluation.js +618 -0
  41. package/dist/run-evaluation.js.map +1 -0
  42. package/dist/scorers/api-scorer.d.ts +79 -0
  43. package/dist/scorers/api-scorer.js +291 -0
  44. package/dist/scorers/api-scorer.js.map +1 -0
  45. package/dist/scorers/base-scorer.d.ts +100 -0
  46. package/dist/scorers/base-scorer.js +190 -0
  47. package/dist/scorers/base-scorer.js.map +1 -0
  48. package/dist/scorers/exact-match-scorer.d.ts +10 -0
  49. package/dist/scorers/exact-match-scorer.js +84 -0
  50. package/dist/scorers/exact-match-scorer.js.map +1 -0
  51. package/package.json +88 -0
@@ -0,0 +1,444 @@
1
+ "use strict";
2
+ // judgeval-js/src/integrations/langgraph.ts
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.JudgevalLanggraphCallbackHandler = void 0;
14
+ const base_1 = require("@langchain/core/callbacks/base");
15
+ const messages_1 = require("@langchain/core/messages"); // Regular import for BaseMessage value
16
+ const uuid_1 = require("uuid");
17
+ const tracer_1 = require("../tracer"); // Adjust path
18
+ // --- Global Handler Setup (REMOVED - No longer needed with context propagation) ---
19
+ class JudgevalLanggraphCallbackHandler extends base_1.BaseCallbackHandler {
20
+ // Optional: Track executed nodes/tools if needed for external use cases like evaluation
21
+ // public executedNodes: string[] = [];
22
+ // public executedTools: string[] = [];
23
+ constructor(tracer) {
24
+ super(); // Call parent constructor
25
+ this.name = "judgeval_langgraph_callback_handler"; // Identifier for the handler
26
+ this.spanStartTimes = {}; // Store start time per spanId (using Judgeval spanId)
27
+ this.runIdToSpanId = {}; // Map Langchain runId to Judgeval spanId
28
+ this.tracer = tracer !== null && tracer !== void 0 ? tracer : tracer_1.Tracer.getInstance(); // Use provided or singleton tracer
29
+ // No need to get traceClient here, will be fetched from context in methods
30
+ console.log(`[Judgeval Handler] Initialized. Monitoring Enabled: ${this.tracer.enableMonitoring}`); // Added prefix
31
+ }
32
+ // Helper to safely get the current TraceClient from context
33
+ _getActiveTraceClient() {
34
+ if (!this.tracer.enableMonitoring) {
35
+ // console.log("Judgeval Handler: Monitoring disabled."); // Reduce noise
36
+ return null;
37
+ }
38
+ const client = this.tracer.getCurrentTrace();
39
+ if (!client) {
40
+ console.log("[Judgeval Handler] _getActiveTraceClient: No active trace client found in context."); // Added log
41
+ }
42
+ // Explicitly return null if client is undefined
43
+ return client !== null && client !== void 0 ? client : null;
44
+ }
45
+ // Helper to create a unique span ID
46
+ _generateSpanId() {
47
+ return (0, uuid_1.v4)();
48
+ }
49
+ // Start a new span, associating it with the LangChain runId
50
+ _startSpan(lcRunId, name, spanType = "span") {
51
+ var _a;
52
+ const traceClient = this._getActiveTraceClient();
53
+ if (!traceClient)
54
+ return;
55
+ const startTime = Date.now() / 1000;
56
+ const spanId = this._generateSpanId();
57
+ this.runIdToSpanId[lcRunId] = spanId; // Map Langchain runId to our new spanId
58
+ // Get parent span ID from the current async context
59
+ const parentSpanId = tracer_1.currentSpanAsyncLocalStorage.getStore();
60
+ // Calculate depth based on parent
61
+ let depth = 0;
62
+ if (parentSpanId) {
63
+ const parentEntry = traceClient.entries.find((e) => e.span_id === parentSpanId && e.type === 'enter');
64
+ if (parentEntry) {
65
+ depth = ((_a = parentEntry.depth) !== null && _a !== void 0 ? _a : -1) + 1; // Increment parent depth
66
+ }
67
+ else {
68
+ // If parent entry not found (should be rare in async context), start at 0
69
+ console.warn(`Judgeval Handler: Parent span entry ${parentSpanId} not found for child ${spanId}. Defaulting depth to 0.`);
70
+ depth = 0;
71
+ }
72
+ }
73
+ else {
74
+ // No parent in context, this is a root span (relative to this handler's context)
75
+ depth = 0;
76
+ }
77
+ // console.log(`>>> _startSpan: Creating span ${spanId} ('${name}') depth: ${depth}, parent: ${parentSpanId ?? 'None'}, lcRunId: ${lcRunId}`); // Debug log
78
+ traceClient.addEntry({
79
+ type: 'enter',
80
+ function: name,
81
+ span_id: spanId,
82
+ depth: depth,
83
+ timestamp: startTime,
84
+ span_type: spanType,
85
+ parent_span_id: parentSpanId
86
+ });
87
+ this.spanStartTimes[spanId] = startTime;
88
+ // Set this new span as the current one in the context *for child operations*
89
+ // Note: This relies on Langchain's async flow preserving the context.
90
+ // If Langchain breaks context, this might not propagate correctly.
91
+ // It's generally better to *read* the parent from context when starting a span,
92
+ // rather than trying to manage pushing/popping onto the context here.
93
+ // The Tracer's observe/runInTrace methods handle setting the context.
94
+ }
95
+ // End the span corresponding to the LangChain runId
96
+ _endSpan(lcRunId, output, error) {
97
+ const traceClient = this._getActiveTraceClient();
98
+ // Retrieve the spanId using the LangChain runId
99
+ const spanId = this.runIdToSpanId[lcRunId];
100
+ if (!traceClient || !spanId || !(spanId in this.spanStartTimes)) {
101
+ // console.log(`>>> _endSpan: Skipping endSpan for lcRunId ${lcRunId} / spanId ${spanId} - ID/trace/time missing or monitoring disabled.`); // Debug log
102
+ // Clean up the map even if we can't end the span fully
103
+ if (lcRunId in this.runIdToSpanId)
104
+ delete this.runIdToSpanId[lcRunId];
105
+ return;
106
+ }
107
+ const startTime = this.spanStartTimes[spanId];
108
+ const endTime = Date.now() / 1000;
109
+ const duration = endTime - startTime;
110
+ // Find the original 'enter' entry to get details like name and depth
111
+ const enterEntry = traceClient.entries.find(e => e.span_id === spanId && e.type === 'enter');
112
+ if (!enterEntry) {
113
+ console.warn(`Judgeval Handler: Could not find 'enter' entry for span ${spanId} (lcRunId: ${lcRunId}) during _endSpan.`);
114
+ // Clean up maps even if entry isn't found
115
+ delete this.spanStartTimes[spanId];
116
+ delete this.runIdToSpanId[lcRunId];
117
+ return;
118
+ }
119
+ // Record output or error *before* the exit entry
120
+ if (error) {
121
+ traceClient.recordOutput(error instanceof Error ? error : new Error(String(error)));
122
+ }
123
+ else if (output !== undefined) {
124
+ // Avoid recording 'undefined' as output explicitly
125
+ traceClient.recordOutput(output);
126
+ }
127
+ traceClient.addEntry({
128
+ type: 'exit',
129
+ function: enterEntry.function, // Use name from 'enter' entry
130
+ span_id: spanId,
131
+ depth: enterEntry.depth, // Use depth from 'enter' entry
132
+ timestamp: endTime,
133
+ duration: duration,
134
+ span_type: enterEntry.span_type // Use type from 'enter' entry
135
+ });
136
+ // Clean up maps
137
+ delete this.spanStartTimes[spanId];
138
+ delete this.runIdToSpanId[lcRunId];
139
+ // console.log(`>>> _endSpan: Ended span ${spanId} ('${enterEntry.function}'), lcRunId: ${lcRunId}`); // Debug log
140
+ }
141
+ // --- Chain Events ---
142
+ onChainStart(serialized, inputs, runId, parentRunId, tags, metadata, options // Langchain-JS doesn't seem to pass options here consistently
143
+ ) {
144
+ return __awaiter(this, void 0, void 0, function* () {
145
+ var _a;
146
+ console.log(`[Judgeval Handler] onChainStart called for runId: ${runId}`); // Added log
147
+ // console.log(`>>> onChainStart: runId: ${runId}, parentRunId: ${parentRunId}, metadata: ${JSON.stringify(metadata)}, tags: ${JSON.stringify(tags)}`); // Debug log
148
+ const traceClient = this._getActiveTraceClient();
149
+ if (!traceClient)
150
+ return;
151
+ let spanName;
152
+ const spanType = "chain"; // Keep type as chain
153
+ // Determine span name based on Python logic: prioritize 'LangGraph' root, then serialized name
154
+ const executionName = (_a = serialized === null || serialized === void 0 ? void 0 : serialized.name) !== null && _a !== void 0 ? _a : 'Unknown Chain';
155
+ if (executionName === 'LangGraph') {
156
+ spanName = 'LangGraph'; // Match Python root span name
157
+ }
158
+ else {
159
+ // Use the serialized name or a generic fallback, avoiding node-specific prefixes
160
+ spanName = executionName;
161
+ }
162
+ // Removed node-specific logic:
163
+ // const nodeName = metadata?.langgraph_node ? String(metadata.langgraph_node) : null;
164
+ // if (nodeName) { ... } else { ... }
165
+ this._startSpan(runId, spanName, spanType);
166
+ // Record input associated with the started span
167
+ const currentSpanId = this.runIdToSpanId[runId];
168
+ if (currentSpanId) {
169
+ // Input is recorded in the current context span of the TraceClient
170
+ traceClient.recordInput({ args: inputs /* , options: options */ }); // Removed spanId
171
+ }
172
+ });
173
+ }
174
+ onChainEnd(outputs, // Output can sometimes be a simple string
175
+ runId, parentRunId, tags) {
176
+ return __awaiter(this, void 0, void 0, function* () {
177
+ // console.log(`>>> onChainEnd: runId: ${runId}`); // Debug log
178
+ // Output is recorded within _endSpan
179
+ this._endSpan(runId, outputs);
180
+ });
181
+ }
182
+ onChainError(error, runId, parentRunId, tags) {
183
+ return __awaiter(this, void 0, void 0, function* () {
184
+ // console.error(`>>> onChainError: runId: ${runId}`, error); // Debug log
185
+ // Error is recorded within _endSpan
186
+ this._endSpan(runId, undefined, error);
187
+ });
188
+ }
189
+ // --- LLM Events ---
190
+ _getLlmSpanName(serialized) {
191
+ var _a;
192
+ // Simplify extraction if possible, check common patterns
193
+ const idPath = ((_a = serialized === null || serialized === void 0 ? void 0 : serialized.id) !== null && _a !== void 0 ? _a : []).join('/').toLowerCase();
194
+ if (idPath.includes("openai"))
195
+ return "OPENAI_API_CALL";
196
+ if (idPath.includes("anthropic"))
197
+ return "ANTHROPIC_API_CALL";
198
+ if (idPath.includes("together"))
199
+ return "TOGETHER_API_CALL";
200
+ // Add other common providers if needed (e.g., google, bedrock)
201
+ return "LLM_CALL"; // Default
202
+ }
203
+ // Generic LLM Start handler (covers both base LLM and ChatModel)
204
+ _handleLlmStart(serialized, runId, inputData, extraParams,
205
+ // tags?: string[] | undefined, // Often unused for LLM spans
206
+ // metadata?: Record<string, unknown> | undefined, // Often unused for LLM spans
207
+ options // Langchain passes invocation params here
208
+ ) {
209
+ return __awaiter(this, void 0, void 0, function* () {
210
+ var _a, _b, _c, _d, _e;
211
+ // console.log(`>>> _handleLlmStart: runId: ${runId}`); // Debug log
212
+ const traceClient = this._getActiveTraceClient();
213
+ if (!traceClient)
214
+ return;
215
+ // Extract model name from options (common pattern) or extraParams
216
+ const invocationParams = (_b = (_a = options === null || options === void 0 ? void 0 : options.invocation_params) !== null && _a !== void 0 ? _a : extraParams) !== null && _b !== void 0 ? _b : {};
217
+ const modelName = (_d = (_c = invocationParams === null || invocationParams === void 0 ? void 0 : invocationParams.model_name) !== null && _c !== void 0 ? _c : invocationParams === null || invocationParams === void 0 ? void 0 : invocationParams.model) !== null && _d !== void 0 ? _d : 'unknown_model';
218
+ const spanName = this._getLlmSpanName(serialized);
219
+ this._startSpan(runId, spanName, "llm");
220
+ // Prepare input payload
221
+ let inputPayload = {
222
+ model: modelName,
223
+ params: invocationParams, // Record all invocation params
224
+ // options: options // May include other config besides invocation_params
225
+ };
226
+ if ('prompts' in inputData) {
227
+ inputPayload.prompts = inputData.prompts;
228
+ }
229
+ else if ('messages' in inputData) {
230
+ // Langchain JS passes messages as BaseMessage[][]
231
+ inputPayload.messages = (_e = inputData.messages[0]) !== null && _e !== void 0 ? _e : []; // Extract first batch element safely
232
+ }
233
+ // Record input associated with the started span
234
+ const currentSpanId = this.runIdToSpanId[runId];
235
+ if (currentSpanId) {
236
+ // Input is recorded in the current context span of the TraceClient
237
+ traceClient.recordInput(inputPayload); // Removed spanId
238
+ }
239
+ });
240
+ }
241
+ onLlmStart(serialized, prompts, runId, parentRunId, extraParams, tags, metadata, options // options might contain invocation_params
242
+ ) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ console.log(`[Judgeval Handler] onLlmStart called for runId: ${runId}`); // Added log
245
+ yield this._handleLlmStart(serialized, runId, { prompts }, extraParams, options);
246
+ });
247
+ }
248
+ // Handles Chat Model start specifically
249
+ onChatModelStart(serialized, messages, runId, parentRunId, extraParams, tags, metadata, options // options might contain invocation_params
250
+ ) {
251
+ return __awaiter(this, void 0, void 0, function* () {
252
+ console.log(`[Judgeval Handler] onChatModelStart called for runId: ${runId}`); // Added log
253
+ yield this._handleLlmStart(serialized, runId, { messages }, extraParams, options);
254
+ });
255
+ }
256
+ /**
257
+ * Handles the end of an LLM call. Extracts the output, usage data, and ends the corresponding span.
258
+ * @param output The result from the LLM call.
259
+ * @param runId The unique ID of the run.
260
+ */
261
+ onLlmEnd(output, runId) {
262
+ return __awaiter(this, void 0, void 0, function* () {
263
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
264
+ // console.log(`>>> onLlmEnd: runId: ${runId}`); // Debug log
265
+ const traceClient = this._getActiveTraceClient();
266
+ const spanId = this.runIdToSpanId[runId]; // Needed for context if recording output directly here
267
+ if (!traceClient || !spanId) {
268
+ // console.warn(`Judgeval Handler: Skipping onLlmEnd for runId ${runId}. Trace client or span ID missing.`); // Debug log
269
+ this._endSpan(runId, output); // Still attempt to end span if possible, passing raw output
270
+ return;
271
+ }
272
+ // Process LLMResult to extract relevant data
273
+ const generation = (_b = (_a = output.generations) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b[0];
274
+ let llmOutputPayload = {};
275
+ if (generation) {
276
+ // Handle ChatGeneration vs regular Generation
277
+ if ("message" in generation && generation.message instanceof messages_1.BaseMessage) {
278
+ const aiMessage = generation.message; // Assume AI message for output
279
+ llmOutputPayload.content = aiMessage.content;
280
+ // Include tool calls if present
281
+ if (aiMessage.tool_calls && aiMessage.tool_calls.length > 0) {
282
+ llmOutputPayload.tool_calls = aiMessage.tool_calls;
283
+ }
284
+ if (aiMessage.invalid_tool_calls && aiMessage.invalid_tool_calls.length > 0) {
285
+ llmOutputPayload.invalid_tool_calls = aiMessage.invalid_tool_calls;
286
+ }
287
+ // Usage metadata might be here (e.g., OpenAI)
288
+ if (aiMessage.usage_metadata) {
289
+ llmOutputPayload.usage_metadata = aiMessage.usage_metadata;
290
+ }
291
+ }
292
+ else if (generation.text) {
293
+ // Handle plain text generation
294
+ llmOutputPayload.content = generation.text;
295
+ }
296
+ // Standardize token usage extraction if not in usage_metadata
297
+ // Check generationInfo first, then llmOutput
298
+ const tokenUsage = (_d = (_c = generation.generationInfo) === null || _c === void 0 ? void 0 : _c.tokenUsage) !== null && _d !== void 0 ? _d : (_e = output.llmOutput) === null || _e === void 0 ? void 0 : _e.tokenUsage;
299
+ if (tokenUsage && !((_f = llmOutputPayload.usage_metadata) === null || _f === void 0 ? void 0 : _f.token_usage)) { // Avoid duplication if already in usage_metadata
300
+ llmOutputPayload.token_usage = {
301
+ completionTokens: (_g = tokenUsage.completionTokens) !== null && _g !== void 0 ? _g : tokenUsage.completion_tokens,
302
+ promptTokens: (_h = tokenUsage.promptTokens) !== null && _h !== void 0 ? _h : tokenUsage.prompt_tokens,
303
+ totalTokens: (_j = tokenUsage.totalTokens) !== null && _j !== void 0 ? _j : tokenUsage.total_tokens,
304
+ };
305
+ // Normalize keys within usage_metadata if present
306
+ }
307
+ else if ((_k = llmOutputPayload.usage_metadata) === null || _k === void 0 ? void 0 : _k.token_usage) {
308
+ const usageMeta = llmOutputPayload.usage_metadata.token_usage;
309
+ llmOutputPayload.token_usage = {
310
+ completionTokens: (_l = usageMeta.completionTokens) !== null && _l !== void 0 ? _l : usageMeta.completion_tokens,
311
+ promptTokens: (_m = usageMeta.promptTokens) !== null && _m !== void 0 ? _m : usageMeta.prompt_tokens,
312
+ totalTokens: (_o = usageMeta.totalTokens) !== null && _o !== void 0 ? _o : usageMeta.total_tokens,
313
+ };
314
+ }
315
+ // Include other generationInfo if available and potentially useful
316
+ if (generation.generationInfo) {
317
+ llmOutputPayload.generation_info = generation.generationInfo;
318
+ }
319
+ }
320
+ // Include raw LLM output if available and potentially useful (can be verbose)
321
+ // if (output.llmOutput) {
322
+ // llmOutputPayload.raw_llm_output = output.llmOutput;
323
+ // }
324
+ // Output is recorded within _endSpan
325
+ this._endSpan(runId, llmOutputPayload);
326
+ });
327
+ }
328
+ onLlmError(error, runId, parentRunId) {
329
+ return __awaiter(this, void 0, void 0, function* () {
330
+ // console.error(`>>> onLlmError: runId: ${runId}`, error); // Debug log
331
+ // Error is recorded within _endSpan
332
+ this._endSpan(runId, undefined, error);
333
+ });
334
+ }
335
+ // --- Tool Events ---
336
+ onToolStart(serialized, inputStr, // input is often a stringified object
337
+ runId, parentRunId, tags, metadata) {
338
+ return __awaiter(this, void 0, void 0, function* () {
339
+ var _a;
340
+ console.log(`[Judgeval Handler] onToolStart called for runId: ${runId}`); // Added log
341
+ // console.log(`>>> onToolStart: runId: ${runId}, name: ${serialized?.name}`); // Debug log
342
+ const traceClient = this._getActiveTraceClient();
343
+ if (!traceClient)
344
+ return;
345
+ // Match Python: Use the tool name directly as the span name
346
+ const toolName = (_a = serialized === null || serialized === void 0 ? void 0 : serialized.name) !== null && _a !== void 0 ? _a : 'Unknown Tool';
347
+ const spanName = toolName; // Removed "TOOL: " prefix
348
+ this._startSpan(runId, spanName, "tool");
349
+ // Try to parse inputStr if it's JSON, otherwise keep as string
350
+ let parsedInput = inputStr;
351
+ try {
352
+ // Avoid parsing null/empty strings
353
+ if (inputStr && inputStr.trim().startsWith('{') && inputStr.trim().endsWith('}')) {
354
+ parsedInput = JSON.parse(inputStr);
355
+ }
356
+ }
357
+ catch (e) {
358
+ // Ignore error, keep as string if parsing fails
359
+ }
360
+ // Record input associated with the started span
361
+ const currentSpanId = this.runIdToSpanId[runId];
362
+ if (currentSpanId) {
363
+ // Input is recorded in the current context span of the TraceClient
364
+ traceClient.recordInput({ input: parsedInput /* , options: options */ }); // Removed spanId
365
+ }
366
+ // Track tool execution (if needed externally)
367
+ // this.executedTools.push(toolName); // Example
368
+ });
369
+ }
370
+ onToolEnd(output, // Tool output is typically a string
371
+ runId, parentRunId) {
372
+ return __awaiter(this, void 0, void 0, function* () {
373
+ // console.log(`>>> onToolEnd: runId: ${runId}`); // Debug log
374
+ // Output is recorded within _endSpan
375
+ this._endSpan(runId, output);
376
+ });
377
+ }
378
+ onToolError(error, runId, parentRunId) {
379
+ return __awaiter(this, void 0, void 0, function* () {
380
+ // console.error(`>>> onToolError: runId: ${runId}`, error); // Debug log
381
+ // Error is recorded within _endSpan
382
+ this._endSpan(runId, undefined, error);
383
+ });
384
+ }
385
+ // --- Retriever Events ---
386
+ onRetrieverStart(serialized, query, runId, parentRunId, tags, metadata) {
387
+ return __awaiter(this, void 0, void 0, function* () {
388
+ console.log(`[Judgeval Handler] onRetrieverStart called for runId: ${runId}`); // Added log
389
+ // console.log(`>>> onRetrieverStart: runId: ${runId}, name: ${serialized?.name}`); // Debug log
390
+ const traceClient = this._getActiveTraceClient();
391
+ if (!traceClient)
392
+ return;
393
+ // Match Python naming convention
394
+ const retrieverName = serialized === null || serialized === void 0 ? void 0 : serialized.name;
395
+ let spanName;
396
+ if (retrieverName) {
397
+ spanName = `RETRIEVER_${retrieverName.toUpperCase()}`;
398
+ }
399
+ else {
400
+ spanName = "RETRIEVER_CALL";
401
+ }
402
+ // const spanName = `RETRIEVER: ${retrieverName}`; // Old naming
403
+ this._startSpan(runId, spanName, "retriever"); // Use 'retriever' span type
404
+ // Record input associated with the started span
405
+ const currentSpanId = this.runIdToSpanId[runId];
406
+ if (currentSpanId) {
407
+ // Input is recorded in the current context span of the TraceClient
408
+ traceClient.recordInput({ query: query /* , options: options */ }); // Removed spanId
409
+ }
410
+ });
411
+ }
412
+ onRetrieverEnd(documents, runId, parentRunId, tags) {
413
+ return __awaiter(this, void 0, void 0, function* () {
414
+ // console.log(`>>> onRetrieverEnd: runId: ${runId}, docs: ${documents.length}`); // Debug log
415
+ const traceClient = this._getActiveTraceClient();
416
+ if (!traceClient) {
417
+ // If no trace client, we still need to clean up the runId mapping potentially
418
+ this._endSpan(runId);
419
+ return;
420
+ }
421
+ // Format output similar to Python's handler
422
+ const docSummary = documents.map((doc, i) => ({
423
+ index: i,
424
+ page_content: doc.pageContent.substring(0, 150) + (doc.pageContent.length > 150 ? "..." : ""), // Slightly longer preview
425
+ metadata: doc.metadata,
426
+ }));
427
+ const output = {
428
+ document_count: documents.length,
429
+ documents: docSummary,
430
+ };
431
+ // Output is recorded within _endSpan
432
+ this._endSpan(runId, output);
433
+ });
434
+ }
435
+ onRetrieverError(error, runId, parentRunId, tags) {
436
+ return __awaiter(this, void 0, void 0, function* () {
437
+ // console.error(`>>> onRetrieverError: runId: ${runId}`, error); // Debug log
438
+ // Error is recorded within _endSpan
439
+ this._endSpan(runId, undefined, error);
440
+ });
441
+ }
442
+ }
443
+ exports.JudgevalLanggraphCallbackHandler = JudgevalLanggraphCallbackHandler;
444
+ //# sourceMappingURL=langgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph.js","sourceRoot":"","sources":["../../../src/common/integrations/langgraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import winston from 'winston';
2
+ declare const logger: winston.Logger;
3
+ export default logger;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const winston_1 = __importDefault(require("winston"));
18
+ // Define the logger configuration
19
+ const logger = winston_1.default.createLogger({
20
+ level: process.env.JUDGMENT_LOG_LEVEL || 'info', // Default to 'info', allow override via env var
21
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston_1.default.format.printf((_a) => {
22
+ var { timestamp, level, message } = _a, meta = __rest(_a, ["timestamp", "level", "message"]);
23
+ // Simple format: Timestamp [LEVEL]: message {meta}
24
+ let metaString = '';
25
+ if (Object.keys(meta).length > 0) {
26
+ try {
27
+ // Attempt to stringify metadata, handle potential circular references
28
+ metaString = ` ${JSON.stringify(meta, (key, value) => {
29
+ if (typeof value === 'object' && value !== null) {
30
+ // Basic check for circular reference, might need refinement
31
+ if (key === '')
32
+ return value; // Root object
33
+ if (metaString.includes(JSON.stringify(value)))
34
+ return '[Circular]';
35
+ }
36
+ return value;
37
+ })}`;
38
+ }
39
+ catch (error) {
40
+ metaString = ' [Meta stringify error]';
41
+ }
42
+ }
43
+ return `${timestamp} [${level.toUpperCase()}]: ${message}${metaString}`;
44
+ }), winston_1.default.format.colorize({ all: true }) // Optional: Add colors
45
+ ),
46
+ transports: [
47
+ // Log to the console
48
+ new winston_1.default.transports.Console(),
49
+ // Future enhancement: Add file transport
50
+ // new winston.transports.File({ filename: 'judgeval.log' })
51
+ ],
52
+ // Handle exceptions
53
+ exceptionHandlers: [
54
+ new winston_1.default.transports.Console()
55
+ // new winston.transports.File({ filename: 'exceptions.log' })
56
+ ],
57
+ // Handle promise rejections
58
+ rejectionHandlers: [
59
+ new winston_1.default.transports.Console()
60
+ // new winston.transports.File({ filename: 'rejections.log' })
61
+ ]
62
+ });
63
+ exports.default = logger;
64
+ //# sourceMappingURL=logger-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-instance.js","sourceRoot":"","sources":["../../src/common/logger-instance.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAA8B;AAE9B,kCAAkC;AAClC,MAAM,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,EAAE,gDAAgD;IACjG,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,EAC3D,iBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAsC,EAAE,EAAE;YAA1C,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,OAAW,EAAN,IAAI,cAApC,iCAAsC,CAAF;QACzD,mDAAmD;QACnD,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,sEAAsE;gBACtE,UAAU,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBAChD,4DAA4D;wBAC5D,IAAI,GAAG,KAAK,EAAE;4BAAE,OAAO,KAAK,CAAC,CAAC,cAAc;wBAC5C,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;4BAAE,OAAO,YAAY,CAAC;oBACtE,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,EAAE,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,GAAG,yBAAyB,CAAC;YACzC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,SAAS,KAAK,KAAK,CAAC,WAAW,EAAE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC1E,CAAC,CAAC,EACF,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,uBAAuB;KAC/D;IACD,UAAU,EAAE;QACV,qBAAqB;QACrB,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE;QAChC,yCAAyC;QACzC,4DAA4D;KAC7D;IACD,oBAAoB;IACpB,iBAAiB,EAAE;QACjB,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE;QAChC,8DAA8D;KAC/D;IACD,4BAA4B;IAC5B,iBAAiB,EAAE;QACjB,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE;QAChC,8DAA8D;KAC/D;CACF,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Logger utilities and result printing for the JudgEval TypeScript SDK
3
+ */
4
+ /**
5
+ * Log a debug message
6
+ */
7
+ export declare function debug(message: string, meta?: Record<string, any>): void;
8
+ /**
9
+ * Log an info message (alias for info)
10
+ */
11
+ export declare function log(message: string, ...args: any[]): void;
12
+ /**
13
+ * Log an info message
14
+ */
15
+ export declare function info(message: string, meta?: Record<string, any>): void;
16
+ /**
17
+ * Log a warning message
18
+ */
19
+ export declare function warning(message: string, meta?: Record<string, any>): void;
20
+ /**
21
+ * Alias for warning
22
+ */
23
+ export declare function warn(message: string, meta?: Record<string, any>): void;
24
+ /**
25
+ * Log an error message
26
+ */
27
+ export declare function error(message: string, meta?: Record<string, any>): void;
28
+ /**
29
+ * Set the current example context for logging (Keep for potential context integration)
30
+ */
31
+ export declare function setExampleContext(exampleId: string, timestamp: string): void;
32
+ /**
33
+ * Clear the current example context (Keep for potential context integration)
34
+ */
35
+ export declare function clearExampleContext(): void;
36
+ /**
37
+ * Create a context for example-specific logging (Keep for potential context integration)
38
+ */
39
+ export declare function withExampleContext<T>(exampleId: string, timestamp: string, fn: () => T): T;
40
+ /**
41
+ * Format evaluation results for display
42
+ * This matches the Python SDK's output format with clickable links
43
+ */
44
+ export declare function formatEvaluationResults(results: any[], projectName?: string, evalName?: string): string;
45
+ /**
46
+ * Print evaluation results to the console
47
+ * This matches the Python SDK's output format exactly
48
+ */
49
+ export declare function printResults(results: any[], projectName?: string, evalName?: string): void;
50
+ /**
51
+ * Simplified print function for results - matches Python SDK's print(results) behavior
52
+ * This is the preferred way to print results
53
+ */
54
+ export declare function print(data: any): void;