judgeval 1.0.1 → 1.1.0
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/Judgeval.d.ts +3 -0
- package/dist/Judgeval.d.ts.map +1 -1
- package/dist/data/Example.d.ts.map +1 -1
- package/dist/datasets/DatasetFactory.d.ts +4 -2
- package/dist/datasets/DatasetFactory.d.ts.map +1 -1
- package/dist/datasets/schema.d.ts +39 -0
- package/dist/datasets/schema.d.ts.map +1 -0
- package/dist/evaluation/EvaluatorRunner.d.ts.map +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.cjs.map +19 -13
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +19 -13
- package/dist/internal/api/client.d.ts +25 -9
- package/dist/internal/api/client.d.ts.map +1 -1
- package/dist/internal/api/models/AddDatasetItemsResponse.d.ts +5 -0
- package/dist/internal/api/models/AddDatasetItemsResponse.d.ts.map +1 -0
- package/dist/internal/api/models/ApplyTestRunSuccessRequest.d.ts +7 -0
- package/dist/internal/api/models/ApplyTestRunSuccessRequest.d.ts.map +1 -0
- package/dist/internal/api/models/ApplyTestRunSuccessResponse.d.ts +4 -0
- package/dist/internal/api/models/ApplyTestRunSuccessResponse.d.ts.map +1 -0
- package/dist/internal/api/models/CreateOfflineDatasetRequest.d.ts +9 -0
- package/dist/internal/api/models/CreateOfflineDatasetRequest.d.ts.map +1 -0
- package/dist/internal/api/models/CreateOfflineDatasetResponse.d.ts +18 -0
- package/dist/internal/api/models/CreateOfflineDatasetResponse.d.ts.map +1 -0
- package/dist/internal/api/models/CreateTestConfigRequest.d.ts +12 -0
- package/dist/internal/api/models/CreateTestConfigRequest.d.ts.map +1 -0
- package/dist/internal/api/models/CreateTestRunRequest.d.ts +20 -0
- package/dist/internal/api/models/CreateTestRunRequest.d.ts.map +1 -0
- package/dist/internal/api/models/DeleteOfflineDatasetResponse.d.ts +5 -0
- package/dist/internal/api/models/DeleteOfflineDatasetResponse.d.ts.map +1 -0
- package/dist/internal/api/models/DeleteTestConfigResponse.d.ts +5 -0
- package/dist/internal/api/models/DeleteTestConfigResponse.d.ts.map +1 -0
- package/dist/internal/api/models/Example.d.ts +1 -0
- package/dist/internal/api/models/Example.d.ts.map +1 -1
- package/dist/internal/api/models/FetchTestRunViaExperimentAliasResponse.d.ts +42 -0
- package/dist/internal/api/models/FetchTestRunViaExperimentAliasResponse.d.ts.map +1 -0
- package/dist/internal/api/models/InsertOfflineDatasetExamplesRequest.d.ts +4 -0
- package/dist/internal/api/models/InsertOfflineDatasetExamplesRequest.d.ts.map +1 -0
- package/dist/internal/api/models/OfflineDatasetPageResponse.d.ts +44 -0
- package/dist/internal/api/models/OfflineDatasetPageResponse.d.ts.map +1 -0
- package/dist/internal/api/models/OfflineDatasetVersionsResponse.d.ts +13 -0
- package/dist/internal/api/models/OfflineDatasetVersionsResponse.d.ts.map +1 -0
- package/dist/internal/api/models/OfflineTestsLocalScorerResult.d.ts +15 -0
- package/dist/internal/api/models/OfflineTestsLocalScorerResult.d.ts.map +1 -0
- package/dist/internal/api/models/OfflineTestsLogEvalResultsExamplesRequest.d.ts +7 -0
- package/dist/internal/api/models/OfflineTestsLogEvalResultsExamplesRequest.d.ts.map +1 -0
- package/dist/internal/api/models/OfflineTestsLogEvalResultsExamplesResponse.d.ts +4 -0
- package/dist/internal/api/models/OfflineTestsLogEvalResultsExamplesResponse.d.ts.map +1 -0
- package/dist/internal/api/models/OfflineTestsLogEvalResultsRequest.d.ts +7 -0
- package/dist/internal/api/models/OfflineTestsLogEvalResultsRequest.d.ts.map +1 -0
- package/dist/internal/api/models/OfflineTestsLogEvalResultsResponse.d.ts +4 -0
- package/dist/internal/api/models/OfflineTestsLogEvalResultsResponse.d.ts.map +1 -0
- package/dist/internal/api/models/PreparedTestRunResponse.d.ts +70 -0
- package/dist/internal/api/models/PreparedTestRunResponse.d.ts.map +1 -0
- package/dist/internal/api/models/PullAllOfflineDatasetsResponse.d.ts +14 -0
- package/dist/internal/api/models/PullAllOfflineDatasetsResponse.d.ts.map +1 -0
- package/dist/internal/api/models/PullOfflineDatasetResponse.d.ts +24 -0
- package/dist/internal/api/models/PullOfflineDatasetResponse.d.ts.map +1 -0
- package/dist/internal/api/models/SDKUpdateAgentJudgeRequest.d.ts +1 -1
- package/dist/internal/api/models/SDKUpdateAgentJudgeRequest.d.ts.map +1 -1
- package/dist/internal/api/models/SDKUpdateAgentJudgeResponse.d.ts +1 -0
- package/dist/internal/api/models/SDKUpdateAgentJudgeResponse.d.ts.map +1 -1
- package/dist/internal/api/models/TestConfigResponse.d.ts +29 -0
- package/dist/internal/api/models/TestConfigResponse.d.ts.map +1 -0
- package/dist/internal/api/models/TestConfigsResponse.d.ts +29 -0
- package/dist/internal/api/models/TestConfigsResponse.d.ts.map +1 -0
- package/dist/internal/api/models/TestRunGraphResponse.d.ts +4 -0
- package/dist/internal/api/models/TestRunGraphResponse.d.ts.map +1 -0
- package/dist/internal/api/models/TestRunItemsResponse.d.ts +41 -0
- package/dist/internal/api/models/TestRunItemsResponse.d.ts.map +1 -0
- package/dist/internal/api/models/TestRunResponse.d.ts +21 -0
- package/dist/internal/api/models/TestRunResponse.d.ts.map +1 -0
- package/dist/internal/api/models/TestRunsResponse.d.ts +20 -0
- package/dist/internal/api/models/TestRunsResponse.d.ts.map +1 -0
- package/dist/internal/api/models/UpdateTestConfigRequest.d.ts +5 -0
- package/dist/internal/api/models/UpdateTestConfigRequest.d.ts.map +1 -0
- package/dist/internal/api/models/UpdateTestRunStatusRequest.d.ts +5 -0
- package/dist/internal/api/models/UpdateTestRunStatusRequest.d.ts.map +1 -0
- package/dist/internal/api/models/index.d.ts +29 -15
- package/dist/internal/api/models/index.d.ts.map +1 -1
- package/dist/offline-tests/OfflineTestRunner.d.ts +58 -0
- package/dist/offline-tests/OfflineTestRunner.d.ts.map +1 -0
- package/dist/offline-tests/OfflineTestsFactory.d.ts +59 -0
- package/dist/offline-tests/OfflineTestsFactory.d.ts.map +1 -0
- package/dist/offline-tests/index.d.ts +4 -0
- package/dist/offline-tests/index.d.ts.map +1 -0
- package/dist/offline-tests/types.d.ts +90 -0
- package/dist/offline-tests/types.d.ts.map +1 -0
- package/dist/offline-tests/utils.d.ts +19 -0
- package/dist/offline-tests/utils.d.ts.map +1 -0
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/sleep.d.ts +3 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/Judgeval.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EvaluationFactory } from "./evaluation/EvaluationFactory";
|
|
2
2
|
import { DatasetFactory } from "./datasets/DatasetFactory";
|
|
3
3
|
import { AgentJudgeFactory } from "./agent-judges/AgentJudgeFactory";
|
|
4
|
+
import { OfflineTestsFactory } from "./offline-tests/OfflineTestsFactory";
|
|
4
5
|
import type { OfflineTracer, OfflineTracerConfig } from "./trace/OfflineTracer";
|
|
5
6
|
/**
|
|
6
7
|
* Options for {@link Judgeval.offlineTracer}.
|
|
@@ -86,5 +87,7 @@ export declare class Judgeval {
|
|
|
86
87
|
get evaluation(): EvaluationFactory;
|
|
87
88
|
/** Manage Agent Judges (prompt-based scorers) on the platform. */
|
|
88
89
|
get agentJudges(): AgentJudgeFactory;
|
|
90
|
+
/** Create test configs and run offline tests (dataset + judges). */
|
|
91
|
+
get offlineTests(): OfflineTestsFactory;
|
|
89
92
|
}
|
|
90
93
|
//# sourceMappingURL=Judgeval.d.ts.map
|
package/dist/Judgeval.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Judgeval.d.ts","sourceRoot":"","sources":["../src/Judgeval.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEhF;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,mBAAmB,EACnB,aAAa,GAAG,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,CACvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAE3C,OAAO;IAUP;;;;;;;;;;;;;;;;OAgBG;WACU,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgC9D;;;;;;;;;;;;;;;;OAgBG;IACG,aAAa,CACjB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,aAAa,CAAC;IAWzB,qDAAqD;IACrD,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,kDAAkD;IAClD,IAAI,UAAU,IAAI,iBAAiB,CAMlC;IAED,kEAAkE;IAClE,IAAI,WAAW,IAAI,iBAAiB,CAMnC;CACF"}
|
|
1
|
+
{"version":3,"file":"Judgeval.d.ts","sourceRoot":"","sources":["../src/Judgeval.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEhF;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,mBAAmB,EACnB,aAAa,GAAG,QAAQ,GAAG,gBAAgB,GAAG,QAAQ,CACvD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAE3C,OAAO;IAUP;;;;;;;;;;;;;;;;OAgBG;WACU,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgC9D;;;;;;;;;;;;;;;;OAgBG;IACG,aAAa,CACjB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,aAAa,CAAC;IAWzB,qDAAqD;IACrD,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,kDAAkD;IAClD,IAAI,UAAU,IAAI,iBAAiB,CAMlC;IAED,kEAAkE;IAClE,IAAI,WAAW,IAAI,iBAAiB,CAMnC;IAED,oEAAoE;IACpE,IAAI,YAAY,IAAI,mBAAmB,CAMtC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Example.d.ts","sourceRoot":"","sources":["../../src/data/Example.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IAEtD,OAAO;IAYP;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO;IAM3D,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"Example.d.ts","sourceRoot":"","sources":["../../src/data/Example.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IAEtD,OAAO;IAYP;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO;IAM3D,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAQ9B;IAEH;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAevC,6BAA6B;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,sCAAsC;IACtC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,sDAAsD;IACtD,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAExC;IAED,wCAAwC;IACxC,MAAM,IAAI,WAAW;CAatB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { JudgmentApiClient } from "../internal/api/client";
|
|
2
|
-
import type {
|
|
2
|
+
import type { PullAllOfflineDatasetsResponse } from "../internal/api/models";
|
|
3
3
|
import { Example } from "../data/Example";
|
|
4
4
|
import { Dataset } from "./Dataset";
|
|
5
|
+
import { type DatasetSchema } from "./schema";
|
|
5
6
|
/**
|
|
6
7
|
* Creates, retrieves, and lists datasets in your project.
|
|
7
8
|
*
|
|
@@ -38,13 +39,14 @@ export declare class DatasetFactory {
|
|
|
38
39
|
examples?: Example[];
|
|
39
40
|
overwrite?: boolean;
|
|
40
41
|
batchSize?: number;
|
|
42
|
+
schema?: DatasetSchema;
|
|
41
43
|
}): Promise<Dataset | null>;
|
|
42
44
|
/**
|
|
43
45
|
* List all datasets in the project.
|
|
44
46
|
*
|
|
45
47
|
* @returns An array of dataset metadata, or `null` if the project is unresolved.
|
|
46
48
|
*/
|
|
47
|
-
list(): Promise<
|
|
49
|
+
list(): Promise<PullAllOfflineDatasetsResponse | null>;
|
|
48
50
|
private _expectProjectId;
|
|
49
51
|
}
|
|
50
52
|
//# sourceMappingURL=DatasetFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetFactory.d.ts","sourceRoot":"","sources":["../../src/datasets/DatasetFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"DatasetFactory.d.ts","sourceRoot":"","sources":["../../src/datasets/DatasetFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGpC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,WAAW,EAAE,MAAM;IAOrB;;;;;OAKG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAkChD;;;;;;;;OAQG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,aAAa,CAAC;KACnB,GACL,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IA+C1B;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,8BAA8B,GAAG,IAAI,CAAC;IAOtD,OAAO,CAAC,gBAAgB;CASzB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Example } from "../data/Example";
|
|
2
|
+
/**
|
|
3
|
+
* A dataset column type: a JSON Schema primitive or the Judgment pointer type
|
|
4
|
+
* `"trace"` (whose stored value is a trace id rather than literal data).
|
|
5
|
+
*/
|
|
6
|
+
export type DatasetColumnType = "string" | "integer" | "number" | "boolean" | "array" | "object" | "trace";
|
|
7
|
+
/** A single dataset column declaration. */
|
|
8
|
+
export interface DatasetSchemaProperty {
|
|
9
|
+
type: DatasetColumnType;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A dataset's JSON Schema. Datasets are object-typed with one property per
|
|
13
|
+
* column. A column declared `{ type: "trace" }` (under any name) holds a trace
|
|
14
|
+
* id; at most one trace column is allowed per dataset.
|
|
15
|
+
*/
|
|
16
|
+
export interface DatasetSchema {
|
|
17
|
+
type: "object";
|
|
18
|
+
properties: Record<string, DatasetSchemaProperty>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validate a dataset JSON Schema client-side before sending. Mirrors the
|
|
22
|
+
* server's structural checks so obvious mistakes fail fast; the server remains
|
|
23
|
+
* the source of truth for full JSON Schema validation.
|
|
24
|
+
*
|
|
25
|
+
* @throws Error if the schema is not an object, does not declare top-level
|
|
26
|
+
* `type: "object"`, lacks a `properties` object, or declares more than one
|
|
27
|
+
* trace-typed column.
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateDatasetSchema(schema: unknown): void;
|
|
30
|
+
/**
|
|
31
|
+
* Infer a JSON Schema from a set of examples. Convenience for
|
|
32
|
+
* `client.datasets.create()` when no explicit schema is supplied. Every
|
|
33
|
+
* example must share the same set of non-null fields; inferred types are JSON
|
|
34
|
+
* Schema primitives only (declare a trace column with an explicit schema).
|
|
35
|
+
*
|
|
36
|
+
* @throws Error if no examples are provided or examples have heterogeneous fields.
|
|
37
|
+
*/
|
|
38
|
+
export declare function inferSchemaFromExamples(examples: Example[]): DatasetSchema;
|
|
39
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/datasets/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,OAAO,GACP,QAAQ,GACR,OAAO,CAAC;AAEZ,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACnD;AAID;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA8B3D;AAaD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,CAgC1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvaluatorRunner.d.ts","sourceRoot":"","sources":["../../src/evaluation/EvaluatorRunner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAK7C;;;;;GAKG;AACH,8BAAsB,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK;IAC5D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGtC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,WAAW,EAAE,MAAM;IAOrB,SAAS,CAAC,QAAQ,CAAC,aAAa,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,CAAC,EAAE,GACX,oBAAoB;IAEvB,SAAS,CAAC,QAAQ,CAAC,OAAO,CACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;cAEF,KAAK,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"EvaluatorRunner.d.ts","sourceRoot":"","sources":["../../src/evaluation/EvaluatorRunner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAK7C;;;;;GAKG;AACH,8BAAsB,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK;IAC5D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAGtC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,WAAW,EAAE,MAAM;IAOrB,SAAS,CAAC,QAAQ,CAAC,aAAa,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,CAAC,EAAE,GACX,oBAAoB;IAEvB,SAAS,CAAC,QAAQ,CAAC,OAAO,CACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;cAEF,KAAK,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IA+BzD,SAAS,CAAC,eAAe,CACvB,QAAQ,EAAE,OAAO,EAAE,EACnB,WAAW,EAAE,iBAAiB,EAAE,EAChC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,OAAO,GAClB,aAAa,EAAE;IAsEZ,GAAG,CACP,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,CAAC,EAAE,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,OAAe,EAC3B,cAAc,GAAE,MAAY,GAC3B,OAAO,CAAC,aAAa,EAAE,CAAC;CA8C5B"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
var zq=Object.create;var{getPrototypeOf:vq,defineProperty:F1,getOwnPropertyNames:jR,getOwnPropertyDescriptor:Nq}=Object,MR=Object.prototype.hasOwnProperty;var w1=(R,q,E)=>{E=R!=null?zq(vq(R)):{};let $=q||!R||!R.__esModule?F1(E,"default",{value:R,enumerable:!0}):E;for(let f of jR(R))if(!MR.call($,f))F1($,f,{get:()=>R[f],enumerable:!0});return $},_R=new WeakMap,Iq=(R)=>{var q=_R.get(R),E;if(q)return q;if(q=F1({},"__esModule",{value:!0}),R&&typeof R==="object"||typeof R==="function")jR(R).map(($)=>!MR.call(q,$)&&F1(q,$,{get:()=>R[$],enumerable:!(E=Nq(R,$))||E.enumerable}));return _R.set(R,q),q},kq=(R,q)=>()=>(q||R((q={exports:{}}).exports,q),q.exports);var G1=(R,q)=>{for(var E in q)F1(R,E,{get:q[E],enumerable:!0,configurable:!0,set:($)=>q[E]=()=>$})};var V=(R,q)=>()=>(R&&(q=R(R=0)),q);function J1(R,q){let E=process.env[R];if(!E)return q??null;return E}var i,t,r,bR;var C1=V(()=>{i=J1("JUDGMENT_API_KEY"),t=J1("JUDGMENT_ORG_ID"),r=J1("JUDGMENT_API_URL","https://api.judgmentlabs.ai"),bR=J1("JUDGMENT_LOG_LEVEL","warn")});class p{baseUrl;apiKey;organizationId;constructor(R,q,E){this.baseUrl=R,this.apiKey=q,this.organizationId=E}getBaseUrl(){return this.baseUrl}getApiKey(){return this.apiKey}getOrganizationId(){return this.organizationId}async request(R,q,E){let $=await fetch(q,{method:R,headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`,"X-Organization-Id":this.organizationId},body:E!==void 0?JSON.stringify(E):void 0});if(!$.ok){let f=await $.text();throw Error(`HTTP ${$.status}: ${f}`)}return $.json()}async postOtelV1traces(){let R=this.baseUrl+"/otel/v1/traces";return this.request("POST",R,{})}async postOtelV1offlineTraces(){let R=this.baseUrl+"/otel/v1/offline-traces";return this.request("POST",R,{})}async postV1projectsResolve(R){let q=this.baseUrl+"/v1/projects/resolve/";return this.request("POST",q,R)}async postV1projects(R){let q=this.baseUrl+"/v1/projects";return this.request("POST",q,R)}async deleteV1projects(R){let q=this.baseUrl+`/v1/projects/${R}`;return this.request("DELETE",q,{})}async postV1projectsDatasets(R,q){let E=this.baseUrl+`/v1/projects/${R}/datasets`;return this.request("POST",E,q)}async getV1projectsDatasets(R){let q=this.baseUrl+`/v1/projects/${R}/datasets`;return this.request("GET",q,void 0)}async postV1projectsDatasetsByDatasetNameExamples(R,q,E){let $=this.baseUrl+`/v1/projects/${R}/datasets/${q}/examples`;return this.request("POST",$,E)}async getV1projectsDatasetsByDatasetName(R,q){let E=this.baseUrl+`/v1/projects/${R}/datasets/${q}`;return this.request("GET",E,void 0)}async postV1projectsEvaluateExamples(R,q){let E=this.baseUrl+`/v1/projects/${R}/evaluate/examples`;return this.request("POST",E,q)}async postV1projectsEvaluateTraces(R,q){let E=this.baseUrl+`/v1/projects/${R}/evaluate/traces`;return this.request("POST",E,q)}async postV1projectsEvalResults(R,q){let E=this.baseUrl+`/v1/projects/${R}/eval-results`;return this.request("POST",E,q)}async postV1projectsEvalResultsExamples(R,q){let E=this.baseUrl+`/v1/projects/${R}/eval-results/examples`;return this.request("POST",E,q)}async getV1projectsExperimentsByRunId(R,q){let E=this.baseUrl+`/v1/projects/${R}/experiments/${q}`;return this.request("GET",E,void 0)}async postV1projectsEvalQueueExamples(R,q){let E=this.baseUrl+`/v1/projects/${R}/eval-queue/examples`;return this.request("POST",E,q)}async postV1projectsEvalQueueTraces(R,q){let E=this.baseUrl+`/v1/projects/${R}/eval-queue/traces`;return this.request("POST",E,q)}async getV1projectsPromptsByName(R,q,E,$){let f=new URLSearchParams;if(E!==void 0)f.set("commit_id",E);if($!==void 0)f.set("tag",$);let P=this.baseUrl+`/v1/projects/${R}/prompts/${q}`+(f.toString()?"?"+f.toString():"");return this.request("GET",P,void 0)}async postV1projectsPrompts(R,q){let E=this.baseUrl+`/v1/projects/${R}/prompts`;return this.request("POST",E,q)}async postV1projectsPromptsByNameTags(R,q,E){let $=this.baseUrl+`/v1/projects/${R}/prompts/${q}/tags`;return this.request("POST",$,E)}async deleteV1projectsPromptsByNameTags(R,q,E){let $=this.baseUrl+`/v1/projects/${R}/prompts/${q}/tags`;return this.request("DELETE",$,E)}async getV1projectsPromptsByNameVersions(R,q){let E=this.baseUrl+`/v1/projects/${R}/prompts/${q}/versions`;return this.request("GET",E,void 0)}async getV1projectsScorers(R,q,E){let $=new URLSearchParams;if(q!==void 0)$.set("names",q);if(E!==void 0)$.set("is_trace",E);let f=this.baseUrl+`/v1/projects/${R}/scorers`+($.toString()?"?"+$.toString():"");return this.request("GET",f,void 0)}async getV1projectsScorersByNameExists(R,q){let E=this.baseUrl+`/v1/projects/${R}/scorers/${q}/exists`;return this.request("GET",E,void 0)}async postV1projectsScorersCustom(R){let q=this.baseUrl+`/v1/projects/${R}/scorers/custom`;return this.request("POST",q,{})}async postV1projectsScorersCustomBundle(R){let q=this.baseUrl+`/v1/projects/${R}/scorers/custom/bundle`;return this.request("POST",q,{})}async getV1projectsScorersCustomByNameExists(R,q){let E=this.baseUrl+`/v1/projects/${R}/scorers/custom/${q}/exists`;return this.request("GET",E,void 0)}async postV1projectsTracesByTraceIdTags(R,q,E){let $=this.baseUrl+`/v1/projects/${R}/traces/${q}/tags`;return this.request("POST",$,E)}async getV1e2eFetchTraceByProjectNameByTraceId(R,q){let E=this.baseUrl+`/v1/e2e_fetch_trace/${R}/${q}`;return this.request("GET",E,void 0)}async getV1e2eTracesPerProject(R,q,E){let $=new URLSearchParams;if(q!==void 0)$.set("limit",q);if(E!==void 0)$.set("offset",E);let f=this.baseUrl+`/v1/e2e_traces_per_project/${R}`+($.toString()?"?"+$.toString():"");return this.request("GET",f,void 0)}async postV1e2eFetchSpanScore(R){let q=this.baseUrl+"/v1/e2e_fetch_span_score/";return this.request("POST",q,R)}async postV1projectsJudges(R,q){let E=this.baseUrl+`/v1/projects/${R}/judges`;return this.request("POST",E,q)}async patchV1projectsJudgesByJudgeId(R,q,E){let $=this.baseUrl+`/v1/projects/${R}/judges/${q}`;return this.request("PATCH",$,E)}}var O1=()=>{};var F;var O=V(()=>{C1();F=class F{static RESET="\x1B[0m";static RED="\x1B[31m";static YELLOW="\x1B[33m";static GRAY="\x1B[90m";static Level={DEBUG:0,INFO:1,WARNING:2,ERROR:3,CRITICAL:4};static initialized=!1;static levelSetManually=!1;static currentLevel=F.Level.WARNING;static useColor=!0;static initialize(){if(!F.initialized){let R=process.env.JUDGMENT_NO_COLOR;if(F.useColor=!R&&process.stdout.isTTY,!F.levelSetManually){let q=bR.toLowerCase();if(q){let E={debug:F.Level.DEBUG,info:F.Level.INFO,warning:F.Level.WARNING,warn:F.Level.WARNING,error:F.Level.ERROR,critical:F.Level.CRITICAL};F.currentLevel=E[q]??F.Level.WARNING}}F.initialized=!0}}static setLevel(R){F.currentLevel=R,F.levelSetManually=!0}static setUseColor(R){F.useColor=R}static log(R,q){if(F.initialize(),R<F.currentLevel)return;let E=new Date().toISOString().replace("T"," ").substring(0,19),$=Object.keys(F.Level).find((U)=>F.Level[U]===R)??"UNKNOWN",f=`${E} - judgeval - ${$} - ${q}`;if(F.useColor)f=`${R===F.Level.DEBUG||R===F.Level.INFO?F.GRAY:R===F.Level.WARNING?F.YELLOW:F.RED}${f}${F.RESET}`;(R>=F.Level.ERROR?process.stderr:process.stdout).write(f+`
|
|
2
|
-
`)}static debug(R){F.log(F.Level.DEBUG,R)}static info(R){F.log(F.Level.INFO,R)}static warning(R){F.log(F.Level.WARNING,R)}static warn(R){F.log(F.Level.WARNING,R)}static error(R){F.log(F.Level.ERROR,R)}static critical(R){F.log(F.Level.CRITICAL,R)}}});async function
|
|
3
|
-
${$.stack}`:"";return F.error(`[Caught] An exception was raised in ${R}: ${String($)}${f}`),E}}var M=V(()=>{O()});var oR=V(()=>{M()});function L(R,q={}){let{pre:E,post:$,error:f,finally:P}=q;return async function(...C){let D=E?Q("immutableWrapAsync.pre",()=>E(...C)):void 0,S;try{let W=await R.apply(this,C);if($)S=Q("immutableWrapAsync.post",()=>$(D,W,C));return W}catch(W){if(f)S=Q("immutableWrapAsync.error",()=>f(D,W,C));throw W}finally{if(P)Q("immutableWrapAsync.finally",()=>{P(S)})}}}var sR=V(()=>{M()});var gR=V(()=>{M()});function mR(R,q={}){let{pre:E,yield:$,post:f,error:P,finally:U}=q;return async function*(...D){let S=E?Q("immutableWrapAsyncIterator.pre",()=>E(...D)):void 0,W;try{for await(let Y of R(...D)){if($)Q("immutableWrapAsyncIterator.yield",()=>{$(S,Y)});yield Y}if(f)W=Q("immutableWrapAsyncIterator.post",()=>f(S))}catch(Y){if(P)W=Q("immutableWrapAsyncIterator.error",()=>P(S,Y));throw Y}finally{if(U)Q("immutableWrapAsyncIterator.finally",()=>{U(W)})}}}var UR=V(()=>{M()});function g(R,q){let E=R[Symbol.asyncIterator].bind(R),$=mR(()=>({[Symbol.asyncIterator]:E}),{yield:(f,P)=>{q.onYield(P)},post:()=>{q.onDone()},error:(f,P)=>{q.onError(P)},finally:()=>{q.onFinally()}});R[Symbol.asyncIterator]=()=>$()}var cR=V(()=>{UR()});var V1=V(()=>{oR();sR();gR();UR();cR()});function W1(R,q){Q("recordChatUsage",()=>{let E=q.prompt_tokens_details?.cached_tokens??0,$=q.prompt_tokens+q.completion_tokens+E;m.recordLLMMetadata({non_cached_input_tokens:$>q.total_tokens?q.prompt_tokens-E:q.prompt_tokens,output_tokens:q.completion_tokens||void 0,cache_read_input_tokens:E||void 0},R),m.setAttribute("judgment.usage.metadata",w(q),R)})}var DR=V(()=>{$1();B();M();k()});function nR(R){R.chat.completions.parse=L(R.chat.completions.parse.bind(R.chat.completions),{pre:(q)=>{let E=m.startSpan("OPENAI_API_CALL");return m.setSpanKind("llm",E),m.recordLLMMetadata({model:q.model},E),m.setInput(q,E),E},post:(q,E)=>{if(!q)return;if(m.setOutput(w(E),q),E.usage)W1(q,E.usage);return m.recordLLMMetadata({model:E.model},q),q},error:(q,E)=>{if(q)m.setError(E,q);return q},finally:(q)=>{q?.end()}})}var iR=V(()=>{B();k();V1();DR()});function tR(R){R.chat.completions.create=L(R.chat.completions.create.bind(R.chat.completions),{pre:(q)=>{if(q.stream)q.stream_options??={include_usage:!0};let E=m.startSpan("OPENAI_API_CALL");return m.setSpanKind("llm",E),m.recordLLMMetadata({model:q.model},E),m.setInput(q,E),{span:E,proxied:!1}},post:(q,E,$)=>{if(!q)return;let{span:f}=q;if($[0].stream){let U=E,C="";return g(U,{onYield(D){if(typeof D.choices[0]?.delta.content==="string")C+=D.choices[0].delta.content;if(D.usage)W1(f,D.usage)},onDone(){m.setOutput(C,f)},onError(D){m.setError(D,f)},onFinally(){f.end()}}),{span:f,proxied:!0}}let P=E;if(m.setOutput(w(P),f),P.usage)W1(f,P.usage);return m.recordLLMMetadata({model:P.model},f),q},error:(q,E)=>{if(q)m.setError(E,q.span);return q},finally:(q)=>{if(q&&!q.proxied)q.span.end()}})}var rR=V(()=>{B();k();V1();DR()});function eR(R,q){Q("images.recordUsage",()=>{let E="input_tokens_details"in q?q.input_tokens_details:void 0,$=E?.image_tokens??0;if(m.recordLLMMetadata({non_cached_input_tokens:E?.text_tokens??0,output_tokens:q.output_tokens||void 0},R),$)m.setAttribute("judgment.usage.non_cached_input_image_tokens",$,R);if(q.output_tokens)m.setAttribute("judgment.usage.output_image_tokens",q.output_tokens,R);m.setAttribute("judgment.usage.metadata",w(q),R)})}function aR(R){R.images.generate=L(R.images.generate.bind(R.images),{pre:(q)=>{let E=m.startSpan("OPENAI_API_CALL");return m.setSpanKind("llm",E),m.recordLLMMetadata({model:q.model},E),m.setInput(q,E),{span:E,proxied:!1}},post:(q,E,$)=>{if(!q)return;let{span:f}=q;if($[0].stream){let U=E,C;return g(U,{onYield(D){if(sq.has(D.type))C=D,eR(f,C.usage)},onDone(){m.setOutput(w(C??{}),f)},onError(D){m.setError(D,f)},onFinally(){f.end()}}),{span:f,proxied:!0}}let P=E;if(m.setOutput(w(P),f),P.usage)eR(f,P.usage);return q},error:(q,E)=>{if(q)m.setError(E,q.span);return q},finally:(q)=>{if(q&&!q.proxied)q.span.end()}})}var sq;var Rq=V(()=>{$1();B();M();k();V1();sq=new Set(["image_generation.completed","image_edit.completed"])});function qq(R,q){Q("responses.recordUsage",()=>{let E=q.input_tokens_details.cached_tokens,$=q.input_tokens+q.output_tokens+E;m.recordLLMMetadata({non_cached_input_tokens:$>q.total_tokens?q.input_tokens-E:q.input_tokens,output_tokens:q.output_tokens||void 0,cache_read_input_tokens:E||void 0},R),m.setAttribute("judgment.usage.metadata",w(q),R)})}function Eq(R){R.responses.create=L(R.responses.create.bind(R.responses),{pre:(q)=>{let E=m.startSpan("OPENAI_API_CALL");return m.setSpanKind("llm",E),m.recordLLMMetadata({model:q.model},E),m.setInput(q,E),{span:E,proxied:!1}},post:(q,E,$)=>{if(!q)return;let{span:f}=q;if($[0].stream){let U=E,C="";return g(U,{onYield(D){if(D.type==="response.output_text.delta")C+=D.delta;if(D.type==="response.completed"){let S=D.response;if(S.usage)qq(f,S.usage);m.recordLLMMetadata({model:S.model},f)}},onDone(){m.setOutput(C,f)},onError(D){m.setError(D,f)},onFinally(){f.end()}}),{span:f,proxied:!0}}let P=E;if(m.setOutput(w(P),f),P.usage)qq(f,P.usage);if(typeof P.model==="string")m.recordLLMMetadata({model:P.model},f);return q},error:(q,E)=>{if(q)m.setError(E,q.span);return q},finally:(q)=>{if(q&&!q.proxied)q.span.end()}})}var $q=V(()=>{$1();B();M();k();V1()});function B1(R){return Q("wrapOpenAI",()=>{tR(R),nR(R),Eq(R),aR(R)}),R}var fq=V(()=>{M();iR();rR();Rq();$q()});function K1(R){return B1(R)}var FR=V(()=>{fq()});function rq(R){return Function.prototype.toString.call(R)}function eq(R){let q=rq(R).replace(tq,"");return q.match(gq)||q.match(cq)}function Pq(R){let q=eq(R);if(!q||!q[1])return[];return q[1].split(nq).map((E)=>{return E.replace(iq,(f,P,U)=>U).trim()}).filter((E)=>E.length>0)}var gq,cq,nq,iq,tq;var mq=V(()=>{gq=/^([^(]+?)=>/,cq=/^[^(]*\(\s*([^)]*)\)/m,nq=/,/,iq=/^\s*(_?)(\S+?)\1\s*$/,tq=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm});var Uq="=",T1=";",Q1=",",u1="baggage",Dq=180,Fq=4096,Cq=8192;function Vq(R){return R.reduce((q,E)=>{let $=`${q}${q!==""?Q1:""}${E}`;return $.length>Cq?q:$},"")}function Wq(R){return R.getAllEntries().map(([q,E])=>{let $=`${encodeURIComponent(q)}=${encodeURIComponent(E.value)}`;if(E.metadata!==void 0)$+=T1+E.metadata.toString();return $})}function Qq(R){let q=R.split(T1);if(q.length<=0)return;let E=q.shift();if(!E)return;let $=E.indexOf(Uq);if($<=0)return;let f=decodeURIComponent(E.substring(0,$).trim()),P=decodeURIComponent(E.substring($+1).trim()),U;if(q.length>0)U=Sq.baggageEntryMetadataFromString(q.join(T1));return{key:f,value:P,metadata:U}}var Sq;var Yq=V(()=>{Sq=require("@opentelemetry/api")});class K{inject(R,q,E){let $=T(R);if(!$||Hq.isTracingSuppressed(R))return;let f=Wq($).filter((U)=>U.length<=Fq).slice(0,Dq),P=Vq(f);if(P.length>0)E.set(q,u1,P)}extract(R,q,E){let $=E.get(q,u1),f=Array.isArray($)?$.join(Q1):$;if(!f)return R;let P={};if(f.length===0)return R;if(f.split(Q1).forEach((C)=>{let D=Qq(C);if(D){let S={value:D.value};if(D.metadata)S.metadata=D.metadata;P[D.key]=S}}),Object.entries(P).length===0)return R;return H1(R,Y1(P))}fields(){return[u1]}}var Hq;var d1=V(()=>{Z1();Yq();Hq=require("@opentelemetry/core")});var l1={};G1(l1,{setBaggage:()=>H1,getBaggage:()=>T,getActiveBaggage:()=>aq,deleteBaggage:()=>RE,createBaggage:()=>Y1,baggageEntryMetadataFromString:()=>Zq.baggageEntryMetadataFromString,JudgmentBaggagePropagator:()=>K});function T(R){return R.getValue(CR)}function aq(){return T(X.getInstance().getCurrentContext())}function H1(R,q){return R.setValue(CR,q)}function RE(R){return R.deleteValue(CR)}var X1,Zq,Y1,CR;var Z1=V(()=>{A();d1();X1=require("@opentelemetry/api"),Zq=require("@opentelemetry/api"),Y1=X1.propagation.createBaggage.bind(X1.propagation),CR=X1.createContextKey("baggage")});var s1={};G1(s1,{setGlobalTextmap:()=>qE,inject:()=>EE,getGlobalTextmap:()=>SR,extract:()=>VR});function SR(){return Xq}function qE(R){Xq=R}function hq(R){if(R!==void 0)return R;return X.getInstance().getCurrentContext()}function EE(R,q,E=p1.defaultTextMapSetter){Q("propagation.inject",()=>{SR().inject(hq(q),R,E)})}function VR(R,q,E=p1.defaultTextMapGetter){let $=hq(q);return Q("propagation.extract",()=>SR().extract($,R,E),$)}var p1,o1,Xq;var WR=V(()=>{M();d1();A();p1=require("@opentelemetry/api"),o1=require("@opentelemetry/core"),Xq=new o1.CompositePropagator({propagators:[new o1.W3CTraceContextPropagator,new K]})});class m{projectName;projectId;apiKey;organizationId;apiUrl;environment;serializer;_tracerProvider;_client;_enableMonitoring;supportsLiveInstrumentation=!0;constructor(R,q,E,$,f,P,U,C,D,S){this.projectName=R,this.projectId=q,this.apiKey=E,this.organizationId=$,this.apiUrl=f,this.environment=P,this.serializer=U,this._tracerProvider=C,this._client=D,this._enableMonitoring=S}setActive(){return X.getInstance().setActive(this)}static _getProxyProvider(){return X.getInstance()}static _getSerializer(){return m._getProxyProvider().getActiveTracer()?.serializer??w}static _getCurrentTraceAndSpanId(){let q=m._getProxyProvider().getCurrentSpan();if(!q?.isRecording())return null;let E=q.spanContext();if(!E.traceId||!(E.traceFlags&1))return null;return[E.traceId,E.spanId]}static _emitPartial(){Q("BaseTracer._emitPartial",()=>{let R=m._getProxyProvider().getActiveTracer();if(!R||!R.supportsLiveInstrumentation)return;R.getSpanProcessor().emitPartial()})}static getCurrentSpan(){return m._getProxyProvider().getCurrentSpan()}static async forceFlush(){await m._getProxyProvider().forceFlush()}static async shutdown(){await m._getProxyProvider().shutdown()}static registerOTELInstrumentation(R){Q("BaseTracer.registerOTELInstrumentation",()=>{m._getProxyProvider().addInstrumentation(R)})}static wrap(R){return K1(R)}static getOTELTracer(){return m._getProxyProvider().getTracer(xq)}static startSpan(R,q){let E=m.getOTELTracer().startSpan(R,{attributes:q});return m._emitPartial(),E}static startActiveSpan(R,q){let{name:E,attributes:$}=R;return m.getOTELTracer().startActiveSpan(E,{attributes:$},(f)=>{m._emitPartial();try{let P=q(f);if(P instanceof Promise)return P.finally(()=>{f.end()});return f.end(),P}catch(P){throw f.end(),P}})}static span(R,q){return m.startActiveSpan({name:R},(E)=>{try{let $=q(E);if($ instanceof Promise)return $.catch((f)=>{throw E.setStatus({code:y.SpanStatusCode.ERROR,message:String(f)}),E.recordException(f),f});return $}catch($){throw E.setStatus({code:y.SpanStatusCode.ERROR,message:String($)}),E.recordException($),$}})}static with(R,q){return m.span(R,q)}static continueTrace(R,q){let E=m._getProxyProvider(),$=VR(R);return E.withContext($,()=>q($))}static observe(R,q){let E;if(typeof R==="function")E=R;else q=R;let{spanType:$="span",spanName:f,recordInput:P=!0,recordOutput:U=!0,fork:C=!1}=q??{},D=m._getProxyProvider(),S=(W)=>{let Y=f??W.name;return function(...Z){let b=D.getTracer(xq);if(C&&D.getActiveTracer()!==null&&D.getCurrentSpan()?.isRecording()===!0){let x=m._getSerializer(),h=b.startSpan(Y),I=h.spanContext();if($)h.setAttribute("judgment.span_kind",$);let wR={"judgment.link.source_trace_id":I.traceId,"judgment.link.source_span_id":I.spanId};if($)wR["judgment.span_kind"]=$;let bq=D.setSpan(D.getCurrentContext(),D.wrapSpanContext(y.INVALID_SPAN_CONTEXT)),n=b.startSpan(Y,{attributes:wR},bq),GR=n.spanContext();h.setAttribute("judgment.link.target_trace_id",GR.traceId),h.setAttribute("judgment.link.target_span_id",GR.spanId);let r1=()=>{n.end(),h.end()},JR=(G)=>{for(let z of[n,h])z.recordException(G),z.setStatus({code:y.SpanStatusCode.ERROR,message:String(G)})},OR=(G)=>{let z=s(G,x);n.setAttribute("judgment.output",z),h.setAttribute("judgment.output",z)};if(P){let G=s(wq(W,Z),x);n.setAttribute("judgment.input",G),h.setAttribute("judgment.input",G)}return m._emitPartial(),D.useSpan(n,!1,!1,!1,()=>{try{let G=W.call(this,...Z);if(G instanceof Promise)return G.then((z)=>{if(U)OR(z);return z}).catch((z)=>{throw JR(z),z}).finally(r1);if(U)OR(G);return r1(),G}catch(G){throw JR(G),r1(),G}})}return b.startActiveSpan(Y,(x)=>{if($)x.setAttribute("judgment.span_kind",$);try{if(P)x.setAttribute("judgment.input",s(wq(W,Z),m._getSerializer()));m._emitPartial();let h=W.call(this,...Z);if(h instanceof Promise)return h.then((I)=>{if(U)x.setAttribute("judgment.output",s(I,m._getSerializer()));return I}).catch((I)=>{throw x.recordException(I),x.setStatus({code:y.SpanStatusCode.ERROR,message:String(I)}),I}).finally(()=>{x.end()});if(U)x.setAttribute("judgment.output",s(h,m._getSerializer()));return x.end(),h}catch(h){throw x.recordException(h),x.setStatus({code:y.SpanStatusCode.ERROR,message:String(h)}),x.end(),h}})}};if(!E)return S;return S(E)}static _resolveSpan(R){if(R)return R;return m._getProxyProvider().getCurrentSpan()}static setSpanKind(R,q){Q("BaseTracer.setSpanKind",()=>{if(!R)return;let E=m._resolveSpan(q);if(E?.isRecording())E.setAttribute("judgment.span_kind",R)})}static setLLMSpan(){m.setSpanKind("llm")}static setToolSpan(){m.setSpanKind("tool")}static setGeneralSpan(){m.setSpanKind("span")}static setAttribute(R,q,E){Q("BaseTracer.setAttribute",()=>{let $=m._resolveSpan(E);if(!$?.isRecording())return;if(!R||q==null)return;$.setAttribute(R,s(q,m._getSerializer()))})}static setAttributes(R,q){for(let[E,$]of Object.entries(R))if(q)m.setAttribute(E,$,q);else m.setAttribute(E,$)}static setInput(R,q){if(q)m.setAttribute("judgment.input",R,q);else m.setAttribute("judgment.input",R)}static setOutput(R,q){if(q)m.setAttribute("judgment.output",R,q);else m.setAttribute("judgment.output",R)}static setError(R,q){Q("BaseTracer.setError",()=>{let E=m._resolveSpan(q);if(!E?.isRecording())return;E.recordException(R),E.setStatus({code:y.SpanStatusCode.ERROR,message:String(R)})})}static recordLLMMetadata(R,q){Q("BaseTracer.recordLLMMetadata",()=>{let E=m._resolveSpan(q);if(!E?.isRecording())return;if(typeof R.model==="string")E.setAttribute("judgment.llm.model",R.model);if(typeof R.provider==="string")E.setAttribute("judgment.llm.provider",R.provider);if(typeof R.non_cached_input_tokens==="number")E.setAttribute("judgment.usage.non_cached_input_tokens",R.non_cached_input_tokens);if(typeof R.output_tokens==="number")E.setAttribute("judgment.usage.output_tokens",R.output_tokens);if(typeof R.cache_read_input_tokens==="number")E.setAttribute("judgment.usage.cache_read_input_tokens",R.cache_read_input_tokens);if(typeof R.cache_creation_input_tokens==="number")E.setAttribute("judgment.usage.cache_creation_input_tokens",R.cache_creation_input_tokens);if(typeof R.total_cost_usd==="number")E.setAttribute("judgment.usage.total_cost_usd",R.total_cost_usd)})}static _setPropagatingBaggageKey(R,q){Q("BaseTracer._setPropagatingBaggageKey",()=>{let E=m._getProxyProvider(),$=E.getCurrentSpan();if(!$?.isRecording())return;$.setAttribute(R,q);let f=E.getCurrentContext(),P=(T(f)??Y1()).setEntry(R,{value:q});E.attachContext(H1(f,P))})}static setCustomerId(R){m._setPropagatingBaggageKey("judgment.customer_id",R)}static setCustomerUserId(R){m._setPropagatingBaggageKey("judgment.customer_user_id",R)}static setSessionId(R){m._setPropagatingBaggageKey("judgment.session_id",R)}static tag(R){Q("BaseTracer.tag",()=>{if(!R||Array.isArray(R)&&R.length===0)return;let E=m._getProxyProvider().getActiveTracer();if(!E?.projectId||!E._client)return;if(!E.supportsLiveInstrumentation)return;let $=m._getCurrentTraceAndSpanId();if(!$)return;let[f]=$,P=Array.isArray(R)?R:[R];E._client.postV1projectsTracesByTraceIdTags(E.projectId,f,{tags:P}).catch((U)=>{F.error(`tag failed: ${String(U)}`)})})}static asyncEvaluate(R,q){Q("BaseTracer.asyncEvaluate",()=>{let{judge:E,example:$}=R,P=m._getProxyProvider().getActiveTracer();if(!P?.projectId)return;if(!P.supportsLiveInstrumentation)return;let U=m._resolveSpan(q);if(!U?.isRecording())return;let C=P.getSpanProcessor(),D=U.spanContext(),S=C.stateIncr(D,"pending_evals_count"),W={project_id:P.projectId,eval_name:`async_evaluate_${E}_${S}`,judges:[{name:E}],examples:[{...$,example_id:Gq.randomUUID(),created_at:new Date().toISOString(),trace_id:D.traceId,span_id:D.spanId}],is_offline:!1,is_behavior:!1},Y=C.stateAppend(D,"pending_evals",W);U.setAttribute("judgment.pending_trace_eval",JSON.stringify(Y))})}}function wq(R,q){try{let E=Pq(R).map((f)=>f.replace(/^\.\.\./,"").split("=")[0].trim()).filter((f)=>f.length>0),$={};return E.forEach((f,P)=>{if(P<q.length)$[f]=q[P]}),$}catch{return{}}}var y,Gq,xq="judgeval";var B=V(()=>{$1();FR();mq();M();O();k();Z1();A();WR();y=require("@opentelemetry/api"),Gq=require("crypto")});class N{_delegate;constructor(R,q,E,$){if(!R){this._delegate=null;return}this._delegate=new Jq.OTLPTraceExporter({url:R,headers:{Authorization:`Bearer ${q}`,"X-Organization-Id":E,"X-Project-Id":$}})}export(R,q){F.info(`Exported ${R.length} spans`),this._delegate?.export(R,q)}shutdown(){return this._delegate?.shutdown()??Promise.resolve()}forceFlush(){return this._delegate?.forceFlush()??Promise.resolve()}}var Jq;var h1=V(()=>{O();Jq=require("@opentelemetry/exporter-trace-otlp-http")});var Oq,u;var g1=V(()=>{h1();Oq=require("@opentelemetry/core");u=class u extends N{constructor(){super("","","","")}export(R,q){q({code:Oq.ExportResultCode.SUCCESS})}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}});class f1{_keyPredicate;constructor(R=c1){this._keyPredicate=R}onStart(R,q){let E=T(q)?.getAllEntries()??[];for(let[$,f]of E)if(this._keyPredicate($))R.setAttribute($,f.value)}onEnd(R){}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}}var c1=()=>!0;var QR=V(()=>{Z1()});function P1(R){return`${R.traceId}:${R.spanId}`}function fE(R){return R[0]===0&&R[1]===0}var _q,d;var x1=V(()=>{$1();M();A();QR();_q=require("@opentelemetry/sdk-trace-base");d=class d extends _q.BatchSpanProcessor{tracer;_state=new Map;_spanFinalizers;_baggageProcessor;constructor(R,q,E){super(q,E);this.tracer=R,this._spanFinalizers=new FinalizationRegistry(($)=>{this._cleanupSpanState($)}),this._baggageProcessor=new f1}_cleanupSpanState(R){this._state.delete(R)}_registerSpan(R){let q=R.spanContext();if(!q.traceId||!q.spanId)return;let E=P1(q);this._spanFinalizers.register(R,E)}stateSet(R,q,E){let $=P1(R),f=this._state.get($);if(!f)f=new Map,this._state.set($,f);f.set(q,E)}stateGet(R,q,E){let $=P1(R),f=this._state.get($);if(!f?.has(q))return E;return f.get(q)}stateIncr(R,q){let E=P1(R),$=this._state.get(E);if(!$)$=new Map,this._state.set(E,$);let f=$.get(q),P=typeof f==="number"?f:0;return $.set(q,P+1),P}stateAppend(R,q,E){let $=P1(R),f=this._state.get($);if(!f)f=new Map,this._state.set($,f);let P=f.get(q),U=Array.isArray(P)?[...P,E]:[E];return f.set(q,U),U}_emitSpan(R,q=!1){let E=R.spanContext();if(!E.traceId)return;let $=this.stateIncr(E,"judgment.update_id"),f={...R.attributes,"judgment.update_id":$};if(q)delete f["judgment.pending_trace_eval"];let P=Object.create(R);Object.defineProperty(P,"attributes",{value:f,writable:!1});let U=fE(R.endTime)?R.startTime:R.endTime;Object.defineProperty(P,"endTime",{value:U,writable:!1}),super.onEnd(P)}emitPartial(){Q("JudgmentSpanProcessor.emitPartial",()=>{let q=X.getInstance().getCurrentSpan();if(!q?.isRecording())return;let E=q.spanContext();if(!E.traceId)return;if(this.stateGet(E,"disable_partial_emit",!1))return;this._emitSpan(q,!0)})}onStart(R,q){Q("JudgmentSpanProcessor.onStart",()=>{this._baggageProcessor.onStart(R,q),this._registerSpan(R)})}onEnd(R){Q("JudgmentSpanProcessor.onEnd",()=>{let q=R.spanContext();if(!q.traceId){super.onEnd(R);return}let E=P1(q);try{if(!this.stateGet(q,"cancelled",!1))this._emitSpan(R)}finally{this._cleanupSpanState(E)}})}}});var m1;var YR=V(()=>{g1();x1();m1=class m1 extends d{constructor(){super(null,new u)}onStart(R,q){}onEnd(R){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}emitPartial(){}stateSet(R,q,E){}stateGet(R,q,E){return E}stateIncr(R,q){return 0}stateAppend(R,q,E){return[E]}}});var n1,HR,c;var ZR=V(()=>{C1();O1();O();_1();k();qR();B();A();h1();g1();x1();YR();n1=require("@opentelemetry/resources"),HR=require("@opentelemetry/sdk-trace-node");c=class c extends m{_spanExporter=null;_spanProcessor=null;constructor(R,q,E,$,f,P,U,C,D,S){super(R,q,E,$,f,P,U,C,D,S)}static async init(R={}){let q=R.apiKey??i,E=R.organizationId??t,$=R.apiUrl??r,f=R.projectName??null,P=R.serializer??w,U=!0;if(!f)F.warning("project_name not provided. Tracer will not export spans."),U=!1;if(!q)F.warning("api_key not provided. Tracer will not export spans."),U=!1;if(!E)F.warning("organization_id not provided. Tracer will not export spans."),U=!1;if(!$)F.warning("api_url not provided. Tracer will not export spans."),U=!1;let C=null,D=null;if(U&&f&&q&&E&&$){if(C=new p($,q,E),D=await e(C,f).catch(()=>null),!D)F.warning(`Project '${f}' not found. Tracer will not export spans.`),U=!1}let S={"service.name":f??"unknown","telemetry.sdk.name":"judgeval","telemetry.sdk.version":k1};if(R.environment)S["deployment.environment"]=R.environment;if(R.resourceAttributes)Object.assign(S,R.resourceAttributes);let W=n1.defaultResource().merge(n1.resourceFromAttributes(S)),Y=new HR.NodeTracerProvider({resource:W,sampler:R.sampler,spanLimits:R.spanLimits}),Z=new c(f,D,q,E,$,R.environment??null,P,Y,C,U);if(U){let j=new HR.NodeTracerProvider({resource:W,sampler:R.sampler,spanLimits:R.spanLimits,spanProcessors:[Z.getSpanProcessor(),...R.spanProcessors??[]]});Z._tracerProvider=j}if(X.getInstance().register(Z),R.setActive??!0)Z.setActive();return Z}getSpanExporter(){if(this._spanExporter)return this._spanExporter;if(!this._enableMonitoring||!this.projectId||!this.apiKey||!this.organizationId||!this.apiUrl)this._spanExporter=new u;else{let R=this.apiUrl.endsWith("/")?this.apiUrl+"otel/v1/traces":this.apiUrl+"/otel/v1/traces";this._spanExporter=new N(R,this.apiKey,this.organizationId,this.projectId)}return this._spanExporter}getSpanProcessor(){if(this._spanProcessor)return this._spanProcessor;if(!this._enableMonitoring)this._spanProcessor=new m1;else this._spanProcessor=new d(this,this.getSpanExporter());return this._spanProcessor}}});var U1;var XR=V(()=>{S1();x1();U1=class U1 extends d{_dataset;_exampleFields;_seenTraceIds=new Set;constructor(R,q,E){super(R,q);this._dataset=E.dataset,this._exampleFields={...E.exampleFields??{}}}_maybeCreateExample(R){if(R.parentSpanContext)return;let q=R.spanContext();if(!q?.traceId)return;if(this._seenTraceIds.has(q.traceId))return;this._seenTraceIds.add(q.traceId);let E=_.create({...this._exampleFields,offline_trace_id:q.traceId});this._dataset.push(E)}onEnd(R){try{this._maybeCreateExample(R)}finally{super.onEnd(R)}}}});var Mq={};G1(Mq,{OfflineTracer:()=>D1});var i1,hR,jq="otel/v1/offline-traces",D1;var xR=V(()=>{C1();O1();_1();k();qR();A();ZR();h1();XR();i1=require("@opentelemetry/resources"),hR=require("@opentelemetry/sdk-trace-node");D1=class D1 extends c{supportsLiveInstrumentation=!1;_offlineApiUrl;_offlineApiKey;_offlineOrganizationId;_offlineProjectId;_dataset;_exampleFields;_offlineSpanExporter=null;_offlineSpanProcessor=null;constructor(R){super(R.projectName,R.projectId,R.apiKey,R.organizationId,R.apiUrl,R.environment,R.serializer,R.tracerProvider,R.client,!0);this._offlineApiUrl=R.apiUrl,this._offlineApiKey=R.apiKey,this._offlineOrganizationId=R.organizationId,this._offlineProjectId=R.projectId,this._dataset=R.dataset,this._exampleFields=R.exampleFields}static async create(R){let q=R.apiKey??i,E=R.organizationId??t,$=R.apiUrl??r,f=R.projectName,P=R.serializer??w;if(!f)throw Error("projectName is required for OfflineTracer");if(!q)throw Error("apiKey is required for OfflineTracer");if(!E)throw Error("organizationId is required for OfflineTracer");if(!$)throw Error("apiUrl is required for OfflineTracer");let U=new p($,q,E),C;try{C=await e(U,f)}catch(b){throw Error(`Project '${f}' not found; cannot start OfflineTracer: ${String(b)}`)}let D={"service.name":f,"telemetry.sdk.name":"judgeval","telemetry.sdk.version":k1,"judgment.offline":"true"};if(R.environment)D["deployment.environment"]=R.environment;if(R.resourceAttributes)Object.assign(D,R.resourceAttributes);let S=i1.defaultResource().merge(i1.resourceFromAttributes(D)),W=new D1({projectName:f,projectId:C,apiKey:q,organizationId:E,apiUrl:$,environment:R.environment??null,serializer:P,tracerProvider:new hR.NodeTracerProvider({resource:S}),client:U,dataset:R.dataset,exampleFields:{...R.exampleFields??{}}}),Y=new hR.NodeTracerProvider({resource:S,sampler:R.sampler,spanLimits:R.spanLimits,spanProcessors:[W.getSpanProcessor(),...R.spanProcessors??[]]});if(W._tracerProvider=Y,X.getInstance().register(W),R.setActive??!0)W.setActive();return W}getSpanExporter(){if(this._offlineSpanExporter)return this._offlineSpanExporter;let R=this._offlineApiUrl.endsWith("/")?this._offlineApiUrl+jq:this._offlineApiUrl+"/"+jq;return this._offlineSpanExporter=new N(R,this._offlineApiKey,this._offlineOrganizationId,this._offlineProjectId),this._offlineSpanExporter}getSpanProcessor(){if(this._offlineSpanProcessor)return this._offlineSpanProcessor;return this._offlineSpanProcessor=new U1(this,this.getSpanExporter(),{dataset:this._dataset,exampleFields:this._exampleFields}),this._offlineSpanProcessor}}});var PE={};G1(PE,{wrapOpenAI:()=>B1,wrap:()=>K1,propagation:()=>s1,baggage:()=>l1,Tracer:()=>c,OfflineTracer:()=>D1,OfflineJudgmentSpanProcessor:()=>U1,NoOpSpanProcessor:()=>m1,NoOpSpanExporter:()=>u,JudgmentTracerProvider:()=>X,JudgmentSpanExporter:()=>N,JudgmentBaggageSpanProcessor:()=>f1,JudgmentBaggagePropagator:()=>K,Judgeval:()=>t1,Judge:()=>a,Example:()=>_,Evaluation:()=>q1,Dataset:()=>o,BaseTracer:()=>m,AgentJudgeFactory:()=>E1,ALLOW_ALL_BAGGAGE_KEYS:()=>c1});module.exports=Iq(PE);C1();O1();_1();O();class a{}O();var RR=w1(b1(),1);O();var H=w1(b1(),1),Bq=2000;class R1{_client;_projectId;_projectName;constructor(R,q,E){this._client=R,this._projectId=q,this._projectName=E}async _poll(R,q,E,$){let f=Date.now();while(!0){let P=(Date.now()-f)/1000;if(P>$)throw Error(`Evaluation timed out after ${$}s`);let U=await this._client.getV1projectsExperimentsByRunId(R,q),C=U.results??[];if(C.length>=E){let S=U.ui_results_url??"Failed to get UI results URL";return console.log(`${H.default.green("✓")} Evals completed and saved in ${H.default.bold(`${P.toFixed(1)}s`)}`),{results:C,url:S}}await new Promise((S)=>setTimeout(S,Bq))}}_displayResults(R,q,E,$){let f=[],P=0,U=0;console.log();for(let C=0;C<q.length;C++){let D=q[C],S=D.scorers.every((W)=>Boolean(W.success));if(S)P++,console.log(`${H.default.green("✓")} Example ${C+1}: ${H.default.green("PASSED")}`);else U++,console.log(`${H.default.red("✗")} Example ${C+1}: ${H.default.red("FAILED")}`);for(let W of D.scorers){let Y=W.score!==null?W.score.toFixed(3):"N/A",Z=W.success?H.default.green(Y):H.default.red(Y);console.log(` ${H.default.dim(`${W.name}:`)} ${Z} ${H.default.dim(`(threshold: ${W.threshold})`)}`)}f.push({success:S,scorers:D.scorers,example:R[C]})}if(console.log(),P===f.length)console.log(`${H.default.bold(H.default.green("✓ All tests passed!"))} (${P}/${f.length})`);else console.log(`${H.default.bold(H.default.yellow("⚠ Results:"))} ${H.default.green(`${P} passed`)} | ${H.default.red(`${U} failed`)}`);if(console.log(`${H.default.dim("View full details:")} ${H.default.underline(E)}`),console.log(),$&&f.some((C)=>!C.success)){let C=[`Evaluation failed: ${U}/${f.length} examples failed`];for(let D=0;D<f.length;D++)if(!f[D].success){C.push(` Example ${D+1}:`);for(let S of f[D].scorers)if(!S.success){if(C.push(` ${S.name}: ${S.score!==null?S.score.toFixed(3):"N/A"} (threshold: ${S.threshold})`),S.reason)C.push(` ${S.reason}`)}}throw Error(C.join(`
|
|
4
|
-
`))}return f}async run(R,q,E,$=!1,f=300){if(!this._projectId)return F.error("Project ID is not resolved. Evaluation requires a valid project."),[];let P=this._projectId,U=crypto.randomUUID(),C=new Date().toISOString();console.log(),console.log(H.default.bold(H.default.cyan("Starting Evaluation"))),console.log(`${H.default.dim("Run:")} ${E}`),console.log(`${H.default.dim("Project:")} ${this._projectName}`),console.log(`${H.default.dim("Examples:")} ${R.length} | ${H.default.dim("Scorers:")} ${q.length}`),console.log();let D=this._buildPayload(U,P,E,C,R,q),S=await this._submit(P,U,R,q,D),{results:W,url:Y}=await this._poll(P,U,S,f);return this._displayResults(R,W,Y,$)}}class z1 extends R1{_buildPayload(R,q,E,$,f,P){return{id:R,project_id:q,eval_name:E,created_at:$,examples:f.map((U)=>U.toJSON()),judgment_scorers:[],custom_scorers:[]}}async _submit(R,q,E,$,f){let P=Date.now(),U=E.flatMap((Y,Z)=>$.map((b)=>b.score(Y).then((j)=>({exampleIdx:Z,scorer:b,result:j,error:null})).catch((j)=>({exampleIdx:Z,scorer:b,result:null,error:String(j)})))),C=await Promise.all(U),D=((Date.now()-P)/1000).toFixed(1);console.log(`${RR.default.green("✓")} Scoring completed in ${RR.default.bold(`${D}s`)}`);let S=new Map;for(let Y of C){let Z=S.get(Y.exampleIdx);if(!Z)Z=[],S.set(Y.exampleIdx,Z);Z.push(Y)}let W=E.map((Y,Z)=>{return{scorers_data:(S.get(Z)??[]).map((j)=>{if(j.error!==null)return{scorer_name:j.scorer.constructor.name,value:0,reason:"",error:j.error};let x=j.result;return{scorer_name:j.scorer.constructor.name,value:x.value,reason:x.reason,...x.citations&&{citations:x.citations.map((h)=>({span_id:h.spanId,span_attribute:h.spanAttribute}))}}}),data_object:Y.toJSON()}});return await this._client.postV1projectsEvalResultsExamples(R,{results:W,run:f}),E.length}}var kR=w1(b1(),1);class v1 extends R1{_buildPayload(R,q,E,$,f,P){return{id:R,project_id:q,eval_name:E,created_at:$,examples:f.map((U)=>U.toJSON()),judgment_scorers:P.map((U)=>({name:U})),custom_scorers:[]}}async _submit(R,q,E,$,f){return await this._client.postV1projectsEvalQueueExamples(R,f),console.log(`${kR.default.green("✓")} Evaluation submitted`),E.length}}class q1{_local;_hosted;constructor(R,q,E){this._local=new z1(R,q,E),this._hosted=new v1(R,q,E)}run(R){let{examples:q,scorers:E,evalRunName:$,assertTest:f=!1,timeoutSeconds:P=300}=R,U=E.filter((D)=>typeof D==="string"),C=E.filter((D)=>D instanceof a);if(C.length>0&&U.length>0)return F.error("Running both local and hosted scorers is not supported. Please run your evaluation with either local or hosted scorers, but not both."),Promise.resolve([]);if(C.length===0&&U.length===0)return F.error("No valid local or hosted scorers provided. Please provide at least one local or hosted scorer."),Promise.resolve([]);if(C.length>0)return this._local.run(q,C,$,f,P);return this._hosted.run(q,U,$,f,P)}}class N1{_client;_projectId;_projectName;constructor(R,q,E){this._client=R,this._projectId=q,this._projectName=E}create(){return new q1(this._client,this._projectId,this._projectName)}}S1();O();S1();class o{name;projectId;projectName;datasetKind;examples;_client;constructor(R){this.name=R.name,this.projectId=R.projectId,this.projectName=R.projectName,this.datasetKind=R.datasetKind??"example",this.examples=R.examples??[],this._client=R.client??null}async addExamples(R,q=100){if(!this._client)return;for(let E=0;E<R.length;E+=q){let $=R.slice(E,E+q);await this._client.postV1projectsDatasetsByDatasetNameExamples(this.projectId,this.name,{examples:$.map((f)=>f.toJSON())})}}async addFromJson(R,q=100){let{readFile:E}=await import("fs/promises"),$=await E(R,"utf-8"),P=JSON.parse($).map((U)=>{if(typeof U!=="object"||U===null)throw Error("Each item in the JSON array must be an object");return _.create(U)});await this.addExamples(P,q)}get length(){return this.examples.length}[Symbol.iterator](){return this.examples[Symbol.iterator]()}toString(){return`Dataset(name=${this.name}, examples=${this.examples.length})`}}class I1{_client;_projectId;_projectName;constructor(R,q,E){this._client=R,this._projectId=q,this._projectName=E}async get(R){let q=this._expectProjectId();if(!q)return null;let E=await this._client.getV1projectsDatasetsByDatasetName(q,R),$=E.dataset_kind??"example",P=(E.examples??[]).map((U)=>_.from(U));return new o({name:R,projectId:q,projectName:this._projectName,datasetKind:$,examples:P,client:this._client})}async create(R,q={}){let E=this._expectProjectId();if(!E)return null;let{examples:$=[],overwrite:f=!1,batchSize:P=100}=q;await this._client.postV1projectsDatasets(E,{name:R,examples:[],dataset_kind:"example",overwrite:f});let U=new o({name:R,projectId:E,projectName:this._projectName,examples:$,client:this._client});if($.length>0)await U.addExamples($,P);return U}list(){let R=this._expectProjectId();if(!R)return Promise.resolve(null);return this._client.getV1projectsDatasets(R)}_expectProjectId(){if(!this._projectId)return F.error("Project ID is not resolved. Dataset operations require a valid project."),null;return this._projectId}}O();class E1{_client;_projectId;_projectName;constructor(R,q,E){this._client=R,this._projectId=q,this._projectName=E}async create(R){let q=this._expectProjectId();if(!q)return null;let E={name:R.name,prompt:R.prompt,model:R.model,score_type:R.scoreType};if(R.description!==void 0)E.description=R.description;if(R.judgeDescription!==void 0)E.judge_description=R.judgeDescription;if(R.categories!==void 0)E.categories=R.categories;if(R.minScore!==void 0)E.min_score=R.minScore;if(R.maxScore!==void 0)E.max_score=R.maxScore;return{judgeId:(await this._client.postV1projectsJudges(q,E)).judge_id,name:R.name,prompt:R.prompt,model:R.model,scoreType:R.scoreType,description:R.description??null,judgeDescription:R.judgeDescription??null,categories:R.categories??null,minScore:R.minScore??null,maxScore:R.maxScore??null,majorVersion:0,minorVersion:0}}async update(R){let q=this._expectProjectId();if(!q)return null;let E={};if(R.prompt!==void 0)E.prompt=R.prompt;if(R.model!==void 0)E.model=R.model;if(R.scoreType!==void 0)E.score_type=R.scoreType;if(R.description!==void 0)E.description=R.description;if(R.judgeDescription!==void 0)E.judge_description=R.judgeDescription;if(R.categories!==void 0)E.categories=R.categories;if(R.minScore!==void 0)E.min_score=R.minScore;if(R.maxScore!==void 0)E.max_score=R.maxScore;if(R.sourceMajorVersion!==void 0)E.source_major_version=R.sourceMajorVersion;if(R.sourceMinorVersion!==void 0)E.source_minor_version=R.sourceMinorVersion;if(R.targetMajorVersion!==void 0)E.target_major_version=R.targetMajorVersion;if(R.targetMinorVersion!==void 0)E.target_minor_version=R.targetMinorVersion;let $=await this._client.patchV1projectsJudgesByJudgeId(q,R.judgeId,E);return Kq($)}_expectProjectId(){if(!this._projectId)return F.error("Project ID is not resolved. Agent judge operations require a valid project."),null;return this._projectId}}function Kq(R){let q=R.judge;return{judgeId:q.id,name:q.name,prompt:q.prompt??"",model:q.model??"",scoreType:q.score_type,description:q.description??null,judgeDescription:q.judge_description??null,categories:q.categories??null,minScore:q.min_score??null,maxScore:q.max_score??null,majorVersion:q.major_version??null,minorVersion:q.minor_version??null}}class t1{_client;_projectName;_projectId;constructor(R,q,E){this._client=R,this._projectName=q,this._projectId=E}static async create(R){let q=R.apiKey??i,E=R.organizationId??t,$=R.apiUrl??r;if(!q)throw Error("API key is required");if(!E)throw Error("Organization ID is required");if(!$)throw Error("API URL is required");if(!R.projectName)throw Error("Project name is required");let f=new p($,q,E),P=null;try{P=await e(f,R.projectName)}catch{F.warning(`Project '${R.projectName}' not found. Some operations requiring project_id will be skipped.`)}return new t1(f,R.projectName,P)}async offlineTracer(R){let{OfflineTracer:q}=await Promise.resolve().then(() => (xR(),Mq));return q.create({...R,projectName:this._projectName,apiKey:this._client.getApiKey(),organizationId:this._client.getOrganizationId(),apiUrl:this._client.getBaseUrl()})}get datasets(){return new I1(this._client,this._projectId,this._projectName)}get evaluation(){return new N1(this._client,this._projectId,this._projectName)}get agentJudges(){return new E1(this._client,this._projectId,this._projectName)}}B();h1();g1();A();x1();YR();XR();QR();d1();Z1();WR();ZR();xR();FR();S1();
|
|
1
|
+
var cf=Object.create;var{getPrototypeOf:rf,defineProperty:ZR,getOwnPropertyNames:K1,getOwnPropertyDescriptor:ef}=Object,u1=Object.prototype.hasOwnProperty;var hR=(R,f,q)=>{q=R!=null?cf(rf(R)):{};let $=f||!R||!R.__esModule?ZR(q,"default",{value:R,enumerable:!0}):q;for(let D of K1(R))if(!u1.call($,D))ZR($,D,{get:()=>R[D],enumerable:!0});return $},I1=new WeakMap,af=(R)=>{var f=I1.get(R),q;if(f)return f;if(f=ZR({},"__esModule",{value:!0}),R&&typeof R==="object"||typeof R==="function")K1(R).map(($)=>!u1.call(f,$)&&ZR(f,$,{get:()=>R[$],enumerable:!(q=ef(R,$))||q.enumerable}));return I1.set(R,f),f},Rq=(R,f)=>()=>(f||R((f={exports:{}}).exports,f),f.exports);var LR=(R,f)=>{for(var q in f)ZR(R,q,{get:f[q],enumerable:!0,configurable:!0,set:($)=>f[q]=()=>$})};var H=(R,f)=>()=>(R&&(f=R(R=0)),f);function NR(R,f){let q=process.env[R];if(!q)return f??null;return q}var qR,$R,DR,l1;var XR=H(()=>{qR=NR("JUDGMENT_API_KEY"),$R=NR("JUDGMENT_ORG_ID"),DR=NR("JUDGMENT_API_URL","https://api.judgmentlabs.ai"),l1=NR("JUDGMENT_LOG_LEVEL","warn")});class c{baseUrl;apiKey;organizationId;constructor(R,f,q){this.baseUrl=R,this.apiKey=f,this.organizationId=q}getBaseUrl(){return this.baseUrl}getApiKey(){return this.apiKey}getOrganizationId(){return this.organizationId}async request(R,f,q){let $=await fetch(f,{method:R,headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`,"X-Organization-Id":this.organizationId},body:q!==void 0?JSON.stringify(q):void 0});if(!$.ok){let D=await $.text();throw Error(`HTTP ${$.status}: ${D}`)}return $.json()}async postOtelV1traces(){let R=this.baseUrl+"/otel/v1/traces";return this.request("POST",R,{})}async postOtelV1offlineTraces(){let R=this.baseUrl+"/otel/v1/offline-traces";return this.request("POST",R,{})}async postV1projectsResolve(R){let f=this.baseUrl+"/v1/projects/resolve/";return this.request("POST",f,R)}async postV1projects(R){let f=this.baseUrl+"/v1/projects";return this.request("POST",f,R)}async deleteV1projects(R){let f=this.baseUrl+`/v1/projects/${R}`;return this.request("DELETE",f,{})}async postV1projectsDatasets(R,f){let q=this.baseUrl+`/v1/projects/${R}/datasets`;return this.request("POST",q,f)}async getV1projectsDatasets(R){let f=this.baseUrl+`/v1/projects/${R}/datasets`;return this.request("GET",f,void 0)}async getV1projectsDatasetsByDatasetIdentifierVersions(R,f){let q=this.baseUrl+`/v1/projects/${R}/datasets/${f}/versions`;return this.request("GET",q,void 0)}async getV1projectsDatasetsByDatasetIdentifierPage(R,f,q,$,D,P){let U=new URLSearchParams;if(q!==void 0)U.set("version",q);if($!==void 0)U.set("limit",$);if(D!==void 0)U.set("cursor_created_at",D);if(P!==void 0)U.set("cursor_example_id",P);let E=this.baseUrl+`/v1/projects/${R}/datasets/${f}/page`+(U.toString()?"?"+U.toString():"");return this.request("GET",E,void 0)}async postV1projectsDatasetsByDatasetIdentifierExamples(R,f,q){let $=this.baseUrl+`/v1/projects/${R}/datasets/${f}/examples`;return this.request("POST",$,q)}async deleteV1projectsDatasetsByDatasetIdentifier(R,f){let q=this.baseUrl+`/v1/projects/${R}/datasets/${f}`;return this.request("DELETE",q,{})}async getV1projectsDatasetsByDatasetIdentifier(R,f){let q=this.baseUrl+`/v1/projects/${R}/datasets/${f}`;return this.request("GET",q,void 0)}async getV1projectsTestConfigs(R,f){let q=new URLSearchParams;if(f!==void 0)q.set("dataset_id",f);let $=this.baseUrl+`/v1/projects/${R}/test-configs`+(q.toString()?"?"+q.toString():"");return this.request("GET",$,void 0)}async postV1projectsTestConfigs(R,f){let q=this.baseUrl+`/v1/projects/${R}/test-configs`;return this.request("POST",q,f)}async getV1projectsTestConfigsByTestConfigId(R,f){let q=this.baseUrl+`/v1/projects/${R}/test-configs/${f}`;return this.request("GET",q,void 0)}async patchV1projectsTestConfigsByTestConfigId(R,f,q){let $=this.baseUrl+`/v1/projects/${R}/test-configs/${f}`;return this.request("PATCH",$,q)}async deleteV1projectsTestConfigsByTestConfigId(R,f){let q=this.baseUrl+`/v1/projects/${R}/test-configs/${f}`;return this.request("DELETE",q,{})}async getV1projectsTestRuns(R,f,q,$,D){let P=new URLSearchParams;if(f!==void 0)P.set("test_config_id",f);if(q!==void 0)P.set("dataset_id",q);if($!==void 0)P.set("status",$);if(D!==void 0)P.set("limit",D);let U=this.baseUrl+`/v1/projects/${R}/test-runs`+(P.toString()?"?"+P.toString():"");return this.request("GET",U,void 0)}async postV1projectsTestRuns(R,f){let q=this.baseUrl+`/v1/projects/${R}/test-runs`;return this.request("POST",q,f)}async getV1projectsTestRunsByTestRunId(R,f){let q=this.baseUrl+`/v1/projects/${R}/test-runs/${f}`;return this.request("GET",q,void 0)}async patchV1projectsTestRunsByTestRunIdStatus(R,f,q){let $=this.baseUrl+`/v1/projects/${R}/test-runs/${f}/status`;return this.request("PATCH",$,q)}async patchV1projectsTestRunsByTestRunIdSuccess(R,f,q){let $=this.baseUrl+`/v1/projects/${R}/test-runs/${f}/success`;return this.request("PATCH",$,q)}async getV1projectsTestRunsByTestRunIdItems(R,f,q,$){let D=new URLSearchParams;if(q!==void 0)D.set("limit",q);if($!==void 0)D.set("cursor",$);let P=this.baseUrl+`/v1/projects/${R}/test-runs/${f}/items`+(D.toString()?"?"+D.toString():"");return this.request("GET",P,void 0)}async getV1projectsTestRunsByTestRunIdResults(R,f,q,$){let D=new URLSearchParams;if(q!==void 0)D.set("limit",q);if($!==void 0)D.set("cursor",$);let P=this.baseUrl+`/v1/projects/${R}/test-runs/${f}/results`+(D.toString()?"?"+D.toString():"");return this.request("GET",P,void 0)}async getV1projectsTestRunsByTestRunIdGraph(R,f){let q=this.baseUrl+`/v1/projects/${R}/test-runs/${f}/graph`;return this.request("GET",q,void 0)}async getV1projectsExperimentsByRunId(R,f,q,$){let D=new URLSearchParams;if(q!==void 0)D.set("limit",q);if($!==void 0)D.set("cursor",$);let P=this.baseUrl+`/v1/projects/${R}/experiments/${f}`+(D.toString()?"?"+D.toString():"");return this.request("GET",P,void 0)}async postV1projectsEvalResults(R,f){let q=this.baseUrl+`/v1/projects/${R}/eval-results`;return this.request("POST",q,f)}async postV1projectsEvalResultsExamples(R,f){let q=this.baseUrl+`/v1/projects/${R}/eval-results/examples`;return this.request("POST",q,f)}async postV1projectsEvaluateExamples(R,f){let q=this.baseUrl+`/v1/projects/${R}/evaluate/examples`;return this.request("POST",q,f)}async postV1projectsEvaluateTraces(R,f){let q=this.baseUrl+`/v1/projects/${R}/evaluate/traces`;return this.request("POST",q,f)}async postV1projectsEvalQueueExamples(R,f){let q=this.baseUrl+`/v1/projects/${R}/eval-queue/examples`;return this.request("POST",q,f)}async postV1projectsEvalQueueTraces(R,f){let q=this.baseUrl+`/v1/projects/${R}/eval-queue/traces`;return this.request("POST",q,f)}async getV1projectsPromptsByName(R,f,q,$){let D=new URLSearchParams;if(q!==void 0)D.set("commit_id",q);if($!==void 0)D.set("tag",$);let P=this.baseUrl+`/v1/projects/${R}/prompts/${f}`+(D.toString()?"?"+D.toString():"");return this.request("GET",P,void 0)}async postV1projectsPrompts(R,f){let q=this.baseUrl+`/v1/projects/${R}/prompts`;return this.request("POST",q,f)}async postV1projectsPromptsByNameTags(R,f,q){let $=this.baseUrl+`/v1/projects/${R}/prompts/${f}/tags`;return this.request("POST",$,q)}async deleteV1projectsPromptsByNameTags(R,f,q){let $=this.baseUrl+`/v1/projects/${R}/prompts/${f}/tags`;return this.request("DELETE",$,q)}async getV1projectsPromptsByNameVersions(R,f){let q=this.baseUrl+`/v1/projects/${R}/prompts/${f}/versions`;return this.request("GET",q,void 0)}async getV1projectsScorers(R,f,q){let $=new URLSearchParams;if(f!==void 0)$.set("names",f);if(q!==void 0)$.set("is_trace",q);let D=this.baseUrl+`/v1/projects/${R}/scorers`+($.toString()?"?"+$.toString():"");return this.request("GET",D,void 0)}async getV1projectsScorersByNameExists(R,f){let q=this.baseUrl+`/v1/projects/${R}/scorers/${f}/exists`;return this.request("GET",q,void 0)}async postV1projectsScorersCustom(R){let f=this.baseUrl+`/v1/projects/${R}/scorers/custom`;return this.request("POST",f,{})}async postV1projectsScorersCustomBundle(R){let f=this.baseUrl+`/v1/projects/${R}/scorers/custom/bundle`;return this.request("POST",f,{})}async getV1projectsScorersCustomByNameExists(R,f){let q=this.baseUrl+`/v1/projects/${R}/scorers/custom/${f}/exists`;return this.request("GET",q,void 0)}async postV1projectsTracesByTraceIdTags(R,f,q){let $=this.baseUrl+`/v1/projects/${R}/traces/${f}/tags`;return this.request("POST",$,q)}async getV1e2eFetchTraceByProjectNameByTraceId(R,f){let q=this.baseUrl+`/v1/e2e_fetch_trace/${R}/${f}`;return this.request("GET",q,void 0)}async getV1e2eTracesPerProject(R){let f=this.baseUrl+`/v1/e2e_traces_per_project/${R}`;return this.request("GET",f,void 0)}async postV1e2eFetchSpanScore(R){let f=this.baseUrl+"/v1/e2e_fetch_span_score/";return this.request("POST",f,R)}async postV1projectsJudges(R,f){let q=this.baseUrl+`/v1/projects/${R}/judges`;return this.request("POST",q,f)}async patchV1projectsJudgesByJudgeId(R,f,q){let $=this.baseUrl+`/v1/projects/${R}/judges/${f}`;return this.request("PATCH",$,q)}}var AR=()=>{};var F;var j=H(()=>{XR();F=class F{static RESET="\x1B[0m";static RED="\x1B[31m";static YELLOW="\x1B[33m";static GRAY="\x1B[90m";static Level={DEBUG:0,INFO:1,WARNING:2,ERROR:3,CRITICAL:4};static initialized=!1;static levelSetManually=!1;static currentLevel=F.Level.WARNING;static useColor=!0;static initialize(){if(!F.initialized){let R=process.env.JUDGMENT_NO_COLOR;if(F.useColor=!R&&process.stdout.isTTY,!F.levelSetManually){let f=l1.toLowerCase();if(f){let q={debug:F.Level.DEBUG,info:F.Level.INFO,warning:F.Level.WARNING,warn:F.Level.WARNING,error:F.Level.ERROR,critical:F.Level.CRITICAL};F.currentLevel=q[f]??F.Level.WARNING}}F.initialized=!0}}static setLevel(R){F.currentLevel=R,F.levelSetManually=!0}static setUseColor(R){F.useColor=R}static log(R,f){if(F.initialize(),R<F.currentLevel)return;let q=new Date().toISOString().replace("T"," ").substring(0,19),$=Object.keys(F.Level).find((U)=>F.Level[U]===R)??"UNKNOWN",D=`${q} - judgeval - ${$} - ${f}`;if(F.useColor)D=`${R===F.Level.DEBUG||R===F.Level.INFO?F.GRAY:R===F.Level.WARNING?F.YELLOW:F.RED}${D}${F.RESET}`;(R>=F.Level.ERROR?process.stderr:process.stdout).write(D+`
|
|
2
|
+
`)}static debug(R){F.log(F.Level.DEBUG,R)}static info(R){F.log(F.Level.INFO,R)}static warning(R){F.log(F.Level.WARNING,R)}static warn(R){F.log(F.Level.WARNING,R)}static error(R){F.log(F.Level.ERROR,R)}static critical(R){F.log(F.Level.CRITICAL,R)}}});function BR(R){return new Promise((f)=>setTimeout(f,R))}async function p1(R,f={}){let{maxRetries:q=3,backoff:$=()=>1000,onRetry:D}=f;for(let P=1;P<=q;P++)try{return await R()}catch(U){if(P===q)throw U;D?.(P,U),await BR($(P))}throw Error("retry: exhausted all attempts")}var d1=()=>{};async function PR(R,f){let q=`org:${R.getOrganizationId()}:project:${f}`,$=s1.get(q);if($)return $;let D=H1.get(q);if(D)return D;let P=(async()=>{F.info(`Resolving project ID for project: ${f}`);let U=await p1(async()=>{let O=(await R.postV1projectsResolve({project_name:f})).project_id;if(!O)throw Error(`Project ID not found for project: ${f}`);return O},{maxRetries:3,backoff:(E)=>E*1000,onRetry:(E,O)=>{F.warning(`Failed to resolve project ID for '${f}' (attempt ${E}): ${String(O)}`)}});return F.info(`Resolved project ID: ${U}`),s1.set(q,U),U})();H1.set(q,P);try{return await P}finally{H1.delete(q)}}var s1,H1;var vR=H(()=>{j();d1();s1=new Map,H1=new Map});var GR=Rq((rq,S1)=>{var KR=process||{},n1=KR.argv||[],IR=KR.env||{},fq=!(!!IR.NO_COLOR||n1.includes("--no-color"))&&(!!IR.FORCE_COLOR||n1.includes("--color")||KR.platform==="win32"||(KR.stdout||{}).isTTY&&IR.TERM!=="dumb"||!!IR.CI),qq=(R,f,q=R)=>($)=>{let D=""+$,P=D.indexOf(f,R.length);return~P?R+$q(D,f,q,P)+f:R+D+f},$q=(R,f,q,$)=>{let D="",P=0;do D+=R.substring(P,$)+q,P=$+f.length,$=R.indexOf(f,P);while(~$);return D+R.substring(P)},g1=(R=fq)=>{let f=R?qq:()=>String;return{isColorSupported:R,reset:f("\x1B[0m","\x1B[0m"),bold:f("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:f("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:f("\x1B[3m","\x1B[23m"),underline:f("\x1B[4m","\x1B[24m"),inverse:f("\x1B[7m","\x1B[27m"),hidden:f("\x1B[8m","\x1B[28m"),strikethrough:f("\x1B[9m","\x1B[29m"),black:f("\x1B[30m","\x1B[39m"),red:f("\x1B[31m","\x1B[39m"),green:f("\x1B[32m","\x1B[39m"),yellow:f("\x1B[33m","\x1B[39m"),blue:f("\x1B[34m","\x1B[39m"),magenta:f("\x1B[35m","\x1B[39m"),cyan:f("\x1B[36m","\x1B[39m"),white:f("\x1B[37m","\x1B[39m"),gray:f("\x1B[90m","\x1B[39m"),bgBlack:f("\x1B[40m","\x1B[49m"),bgRed:f("\x1B[41m","\x1B[49m"),bgGreen:f("\x1B[42m","\x1B[49m"),bgYellow:f("\x1B[43m","\x1B[49m"),bgBlue:f("\x1B[44m","\x1B[49m"),bgMagenta:f("\x1B[45m","\x1B[49m"),bgCyan:f("\x1B[46m","\x1B[49m"),bgWhite:f("\x1B[47m","\x1B[49m"),blackBright:f("\x1B[90m","\x1B[39m"),redBright:f("\x1B[91m","\x1B[39m"),greenBright:f("\x1B[92m","\x1B[39m"),yellowBright:f("\x1B[93m","\x1B[39m"),blueBright:f("\x1B[94m","\x1B[39m"),magentaBright:f("\x1B[95m","\x1B[39m"),cyanBright:f("\x1B[96m","\x1B[39m"),whiteBright:f("\x1B[97m","\x1B[39m"),bgBlackBright:f("\x1B[100m","\x1B[49m"),bgRedBright:f("\x1B[101m","\x1B[49m"),bgGreenBright:f("\x1B[102m","\x1B[49m"),bgYellowBright:f("\x1B[103m","\x1B[49m"),bgBlueBright:f("\x1B[104m","\x1B[49m"),bgMagentaBright:f("\x1B[105m","\x1B[49m"),bgCyanBright:f("\x1B[106m","\x1B[49m"),bgWhiteBright:f("\x1B[107m","\x1B[49m")}};S1.exports=g1();S1.exports.createColors=g1});var m;var JR=H(()=>{m=class m{exampleId;createdAt;name;_properties;constructor(R,f,q,$){this.exampleId=R,this.createdAt=f,this.name=q,this._properties=$}static create(R={}){return new m(crypto.randomUUID(),new Date().toISOString(),null,{...R})}static META_KEYS=new Set(["example_id","created_at","name","trace_id","span_id","offline_trace_id","agent_offline_trace_id"]);static from(R){let f={};for(let q of Object.keys(R))if(!m.META_KEYS.has(q))f[q]=R[q];return new m(R.example_id??"",R.created_at??"",R.name??null,f)}get(R){return this._properties[R]}has(R){return R in this._properties}get properties(){return{...this._properties}}toJSON(){let R={example_id:this.exampleId,created_at:this.createdAt,name:this.name};for(let[f,q]of Object.entries(this._properties))R[f]=q;return R}}});function Eq(){let R=new WeakSet;return function(f,q){if(typeof q==="bigint")return q.toString();if(typeof q==="object"&&q!==null){if(R.has(q))return"[Circular]";R.add(q)}return q}}function w(R){try{let f=JSON.stringify(R);if(typeof f==="string")return f;return String(f)}catch{try{let f=JSON.stringify(R,Eq());return typeof f==="string"?f:String(R)}catch(f){return F.error(`safeStringify failed: ${f}`),String(R)}}}function e(R,f){if(typeof R==="string"||typeof R==="number"||typeof R==="boolean")return R;return f(R)}var I=H(()=>{j()});var t1="1.1.0";var o1=()=>{};var gR;var Z1=H(()=>{o1();gR=t1});var FR=()=>{};function S(R,f,q){try{return f()}catch($){let D=$ instanceof Error&&$.stack?`
|
|
3
|
+
${$.stack}`:"";return F.error(`[Caught] An exception was raised in ${R}: ${String($)}${D}`),q}}var y=H(()=>{j()});var c1=H(()=>{y()});function K(R,f={}){let{pre:q,post:$,error:D,finally:P}=f;return async function(...E){let O=q?S("immutableWrapAsync.pre",()=>q(...E)):void 0,Q;try{let Y=await R.apply(this,E);if($)Q=S("immutableWrapAsync.post",()=>$(O,Y,E));return Y}catch(Y){if(D)Q=S("immutableWrapAsync.error",()=>D(O,Y,E));throw Y}finally{if(P)S("immutableWrapAsync.finally",()=>{P(Q)})}}}var r1=H(()=>{y()});var e1=H(()=>{y()});function h1(R,f={}){let{pre:q,yield:$,post:D,error:P,finally:U}=f;return async function*(...O){let Q=q?S("immutableWrapAsyncIterator.pre",()=>q(...O)):void 0,Y;try{for await(let W of R(...O)){if($)S("immutableWrapAsyncIterator.yield",()=>{$(Q,W)});yield W}if(D)Y=S("immutableWrapAsyncIterator.post",()=>D(Q))}catch(W){if(P)Y=S("immutableWrapAsyncIterator.error",()=>P(Q,W));throw W}finally{if(U)S("immutableWrapAsyncIterator.finally",()=>{U(Y)})}}}var X1=H(()=>{y()});function a(R,f){let q=R[Symbol.asyncIterator].bind(R),$=h1(()=>({[Symbol.asyncIterator]:q}),{yield:(D,P)=>{f.onYield(P)},post:()=>{f.onDone()},error:(D,P)=>{f.onError(P)},finally:()=>{f.onFinally()}});R[Symbol.asyncIterator]=()=>$()}var a1=H(()=>{X1()});var bR=H(()=>{c1();r1();e1();X1();a1()});function wR(R,f){S("recordChatUsage",()=>{let q=f.prompt_tokens_details?.cached_tokens??0,$=f.prompt_tokens+f.completion_tokens+q;V.recordLLMMetadata({non_cached_input_tokens:$>f.total_tokens?f.prompt_tokens-q:f.prompt_tokens,output_tokens:f.completion_tokens||void 0,cache_read_input_tokens:q||void 0},R),V.setAttribute("judgment.usage.metadata",w(f),R)})}var G1=H(()=>{FR();p();y();I()});function Rf(R){R.chat.completions.parse=K(R.chat.completions.parse.bind(R.chat.completions),{pre:(f)=>{let q=V.startSpan("OPENAI_API_CALL");return V.setSpanKind("llm",q),V.recordLLMMetadata({model:f.model},q),V.setInput(f,q),q},post:(f,q)=>{if(!f)return;if(V.setOutput(w(q),f),q.usage)wR(f,q.usage);return V.recordLLMMetadata({model:q.model},f),f},error:(f,q)=>{if(f)V.setError(q,f);return f},finally:(f)=>{f?.end()}})}var ff=H(()=>{p();I();bR();G1()});function qf(R){R.chat.completions.create=K(R.chat.completions.create.bind(R.chat.completions),{pre:(f)=>{if(f.stream)f.stream_options??={include_usage:!0};let q=V.startSpan("OPENAI_API_CALL");return V.setSpanKind("llm",q),V.recordLLMMetadata({model:f.model},q),V.setInput(f,q),{span:q,proxied:!1}},post:(f,q,$)=>{if(!f)return;let{span:D}=f;if($[0].stream){let U=q,E="";return a(U,{onYield(O){if(typeof O.choices[0]?.delta.content==="string")E+=O.choices[0].delta.content;if(O.usage)wR(D,O.usage)},onDone(){V.setOutput(E,D)},onError(O){V.setError(O,D)},onFinally(){D.end()}}),{span:D,proxied:!0}}let P=q;if(V.setOutput(w(P),D),P.usage)wR(D,P.usage);return V.recordLLMMetadata({model:P.model},D),f},error:(f,q)=>{if(f)V.setError(q,f.span);return f},finally:(f)=>{if(f&&!f.proxied)f.span.end()}})}var $f=H(()=>{p();I();bR();G1()});function Df(R,f){S("images.recordUsage",()=>{let q="input_tokens_details"in f?f.input_tokens_details:void 0,$=q?.image_tokens??0;if(V.recordLLMMetadata({non_cached_input_tokens:q?.text_tokens??0,output_tokens:f.output_tokens||void 0},R),$)V.setAttribute("judgment.usage.non_cached_input_image_tokens",$,R);if(f.output_tokens)V.setAttribute("judgment.usage.output_image_tokens",f.output_tokens,R);V.setAttribute("judgment.usage.metadata",w(f),R)})}function Pf(R){R.images.generate=K(R.images.generate.bind(R.images),{pre:(f)=>{let q=V.startSpan("OPENAI_API_CALL");return V.setSpanKind("llm",q),V.recordLLMMetadata({model:f.model},q),V.setInput(f,q),{span:q,proxied:!1}},post:(f,q,$)=>{if(!f)return;let{span:D}=f;if($[0].stream){let U=q,E;return a(U,{onYield(O){if(Fq.has(O.type))E=O,Df(D,E.usage)},onDone(){V.setOutput(w(E??{}),D)},onError(O){V.setError(O,D)},onFinally(){D.end()}}),{span:D,proxied:!0}}let P=q;if(V.setOutput(w(P),D),P.usage)Df(D,P.usage);return f},error:(f,q)=>{if(f)V.setError(q,f.span);return f},finally:(f)=>{if(f&&!f.proxied)f.span.end()}})}var Fq;var Uf=H(()=>{FR();p();y();I();bR();Fq=new Set(["image_generation.completed","image_edit.completed"])});function Of(R,f){S("responses.recordUsage",()=>{let q=f.input_tokens_details.cached_tokens,$=f.input_tokens+f.output_tokens+q;V.recordLLMMetadata({non_cached_input_tokens:$>f.total_tokens?f.input_tokens-q:f.input_tokens,output_tokens:f.output_tokens||void 0,cache_read_input_tokens:q||void 0},R),V.setAttribute("judgment.usage.metadata",w(f),R)})}function Ef(R){R.responses.create=K(R.responses.create.bind(R.responses),{pre:(f)=>{let q=V.startSpan("OPENAI_API_CALL");return V.setSpanKind("llm",q),V.recordLLMMetadata({model:f.model},q),V.setInput(f,q),{span:q,proxied:!1}},post:(f,q,$)=>{if(!f)return;let{span:D}=f;if($[0].stream){let U=q,E="";return a(U,{onYield(O){if(O.type==="response.output_text.delta")E+=O.delta;if(O.type==="response.completed"){let Q=O.response;if(Q.usage)Of(D,Q.usage);V.recordLLMMetadata({model:Q.model},D)}},onDone(){V.setOutput(E,D)},onError(O){V.setError(O,D)},onFinally(){D.end()}}),{span:D,proxied:!0}}let P=q;if(V.setOutput(w(P),D),P.usage)Of(D,P.usage);if(typeof P.model==="string")V.recordLLMMetadata({model:P.model},D);return f},error:(f,q)=>{if(f)V.setError(q,f.span);return f},finally:(f)=>{if(f&&!f.proxied)f.span.end()}})}var Vf=H(()=>{FR();p();y();I();bR()});function oR(R){return S("wrapOpenAI",()=>{qf(R),Rf(R),Ef(R),Pf(R)}),R}var Ff=H(()=>{y();ff();$f();Uf();Vf()});function tR(R){return oR(R)}var J1=H(()=>{Ff()});function Cq(R){return Function.prototype.toString.call(R)}function Zq(R){let f=Cq(R).replace(Sq,"");return f.match(Qq)||f.match(Yq)}function Qf(R){let f=Zq(R);if(!f||!f[1])return[];return f[1].split(Wq).map((q)=>{return q.replace(Hq,(D,P,U)=>U).trim()}).filter((q)=>q.length>0)}var Qq,Yq,Wq,Hq,Sq;var Yf=H(()=>{Qq=/^([^(]+?)=>/,Yq=/^[^(]*\(\s*([^)]*)\)/m,Wq=/,/,Hq=/^\s*(_?)(\S+?)\1\s*$/,Sq=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm});function w1(){return Hf.getStore()===!0}function Sf(R){if(b1=R,Wf)return;let f=N.context;f.active=()=>{if(!w1())return hq();let q=cR.getStore();if(q)return q;return b1?b1():N.ROOT_CONTEXT},f.with=(q,$,D,...P)=>{if(!w1())return Xq(q,$,D,...P);return cR.run(q,()=>$.apply(D,P))},f.bind=(q,$)=>{if(!w1())return Gq(q,$);if(typeof $!=="function")return $;let D=$;return(...P)=>cR.run(q,()=>D(...P))},Wf=!0}function M1(R,f){return Hf.run(!0,()=>cR.run(R,f))}var N,_1,Wf=!1,b1=null,Hf,cR,hq,Xq,Gq;var Cf=H(()=>{N=require("@opentelemetry/api"),_1=require("async_hooks"),Hf=new _1.AsyncLocalStorage,cR=new _1.AsyncLocalStorage,hq=N.context.active.bind(N.context),Xq=N.context.with.bind(N.context),Gq=N.context.bind.bind(N.context)});class Xf{_provider;constructor(R){this._provider=R}startSpan(R,f,q){let $=q??this._provider.getCurrentContext();return this._provider._getDelegateTracer().startSpan(R,f,$)}startActiveSpan(R,...f){let q={},$=this._provider.getCurrentContext(),D;if(f.length===1)D=f[0];else if(f.length===2)q=f[0],D=f[1];else q=f[0],$=f[1],D=f[2];let P=this.startSpan(R,q,$);return this._provider.useSpan(P,!1,!1,!1,()=>D(P))}}class Gf{startSpan(){return x.trace.wrapSpanContext(x.INVALID_SPAN_CONTEXT)}startActiveSpan(R,...f){return(f.length===1?f[0]:f.length===2?f[1]:f[2])(this.startSpan())}}class G{static _instance=null;_activeTracer=null;_instrumentations=[];_noOpTracer;_proxyTracer;_tracers=new Set;constructor(){this._noOpTracer=new Gf,this._proxyTracer=new Xf(this),Sf(()=>this.getCurrentContext())}static getInstance(){return G._instance??=new G,G._instance}static installAsGlobalTracerProvider(){let R=G.getInstance();return x.trace.setGlobalTracerProvider(R)}register(R){this._tracers.add(R)}deregister(R){this._tracers.delete(R)}setActive(R){let f=this.getCurrentSpan();if(f?.isRecording()){if(x.trace.getSpan(this.getCurrentContext())===f)return F.error("Cannot set_active() while a root span is active. Keeping existing tracer provider."),!1}return this.register(R),this._activeTracer=R,!0}getActiveTracer(){return this._activeTracer}getCurrentContext(){return rR.getStore()??x.ROOT_CONTEXT}setSpan(R,f){return x.trace.setSpan(R,f)}wrapSpanContext(R){return x.trace.wrapSpanContext(R)}getCurrentSpan(){let R=this.getCurrentContext();return x.trace.getSpan(R)}hasActiveRootSpan(){if(!this.getCurrentSpan()?.isRecording())return!1;return!0}_getDelegateTracer(){let R=this._activeTracer;if(!R)return F.debug("No active tracer, returning NoOpTracer"),this._noOpTracer;return R._tracerProvider.getTracer(Jq)}getTracer(R,f,q){return this._proxyTracer}addInstrumentation(R){try{Zf.registerInstrumentations({tracerProvider:this,instrumentations:[R]}),this._instrumentations.push(R)}catch(f){F.error(`Failed to add instrumentation: ${String(f)}`)}}useSpan(R,f,q,$,D){let P=this.getCurrentContext(),U=x.trace.setSpan(P,R);return rR.run(U,()=>M1(U,()=>{try{let E=D();if(E instanceof Promise)return E.catch((O)=>{if(R.isRecording()){if(q)R.recordException(O);if($){let Q=O;R.setStatus({code:x.SpanStatusCode.ERROR,message:`${Q.name}: ${Q.message}`})}}throw O}).finally(()=>{if(f)R.end()});if(f)R.end();return E}catch(E){if(R.isRecording()){if(q)R.recordException(E);if($){let O=E;R.setStatus({code:x.SpanStatusCode.ERROR,message:`${O.name}: ${O.message}`})}}if(f)R.end();throw E}}))}attachContext(R){rR.enterWith(R)}withContext(R,f){return rR.run(R,()=>M1(R,f))}async forceFlush(){let R=await Promise.allSettled(Array.from(this._tracers).map((f)=>f._tracerProvider.forceFlush()));for(let f of R)if(f.status==="rejected")F.error(`forceFlush failed: ${String(f.reason)}`)}async shutdown(){let R=await Promise.allSettled(Array.from(this._tracers).map((f)=>f._tracerProvider.shutdown()));for(let f of R)if(f.status==="rejected")F.error(`shutdown failed: ${String(f.reason)}`);this._activeTracer=null,this._tracers.clear()}}var x,Zf,hf,Jq="judgeval",rR;var u=H(()=>{j();Cf();x=require("@opentelemetry/api"),Zf=require("@opentelemetry/instrumentation"),hf=require("async_hooks"),rR=new hf.AsyncLocalStorage});var Jf="=",eR=";",_R=",",aR="baggage",bf=180,wf=4096,_f=8192;function Tf(R){return R.reduce((f,q)=>{let $=`${f}${f!==""?_R:""}${q}`;return $.length>_f?f:$},"")}function zf(R){return R.getAllEntries().map(([f,q])=>{let $=`${encodeURIComponent(f)}=${encodeURIComponent(q.value)}`;if(q.metadata!==void 0)$+=eR+q.metadata.toString();return $})}function jf(R){let f=R.split(eR);if(f.length<=0)return;let q=f.shift();if(!q)return;let $=q.indexOf(Jf);if($<=0)return;let D=decodeURIComponent(q.substring(0,$).trim()),P=decodeURIComponent(q.substring($+1).trim()),U;if(f.length>0)U=Mf.baggageEntryMetadataFromString(f.join(eR));return{key:D,value:P,metadata:U}}var Mf;var xf=H(()=>{Mf=require("@opentelemetry/api")});class d{inject(R,f,q){let $=s(R);if(!$||mf.isTracingSuppressed(R))return;let D=zf($).filter((U)=>U.length<=wf).slice(0,bf),P=Tf(D);if(P.length>0)q.set(f,aR,P)}extract(R,f,q){let $=q.get(f,aR),D=Array.isArray($)?$.join(_R):$;if(!D)return R;let P={};if(D.length===0)return R;if(D.split(_R).forEach((E)=>{let O=jf(E);if(O){let Q={value:O.value};if(O.metadata)Q.metadata=O.metadata;P[O.key]=Q}}),Object.entries(P).length===0)return R;return TR(R,MR(P))}fields(){return[aR]}}var mf;var R1=H(()=>{zR();xf();mf=require("@opentelemetry/core")});var f1={};LR(f1,{setBaggage:()=>TR,getBaggage:()=>s,getActiveBaggage:()=>bq,deleteBaggage:()=>wq,createBaggage:()=>MR,baggageEntryMetadataFromString:()=>kf.baggageEntryMetadataFromString,JudgmentBaggagePropagator:()=>d});function s(R){return R.getValue(T1)}function bq(){return s(G.getInstance().getCurrentContext())}function TR(R,f){return R.setValue(T1,f)}function wq(R){return R.deleteValue(T1)}var jR,kf,MR,T1;var zR=H(()=>{u();R1();jR=require("@opentelemetry/api"),kf=require("@opentelemetry/api"),MR=jR.propagation.createBaggage.bind(jR.propagation),T1=jR.createContextKey("baggage")});var D1={};LR(D1,{setGlobalTextmap:()=>_q,inject:()=>Mq,getGlobalTextmap:()=>z1,extract:()=>j1});function z1(){return yf}function _q(R){yf=R}function Lf(R){if(R!==void 0)return R;return G.getInstance().getCurrentContext()}function Mq(R,f,q=q1.defaultTextMapSetter){S("propagation.inject",()=>{z1().inject(Lf(f),R,q)})}function j1(R,f,q=q1.defaultTextMapGetter){let $=Lf(f);return S("propagation.extract",()=>z1().extract($,R,q),$)}var q1,$1,yf;var x1=H(()=>{y();R1();u();q1=require("@opentelemetry/api"),$1=require("@opentelemetry/core"),yf=new $1.CompositePropagator({propagators:[new $1.W3CTraceContextPropagator,new d]})});class V{projectName;projectId;apiKey;organizationId;apiUrl;environment;serializer;_tracerProvider;_client;_enableMonitoring;supportsLiveInstrumentation=!0;constructor(R,f,q,$,D,P,U,E,O,Q){this.projectName=R,this.projectId=f,this.apiKey=q,this.organizationId=$,this.apiUrl=D,this.environment=P,this.serializer=U,this._tracerProvider=E,this._client=O,this._enableMonitoring=Q}setActive(){return G.getInstance().setActive(this)}static _getProxyProvider(){return G.getInstance()}static _getSerializer(){return V._getProxyProvider().getActiveTracer()?.serializer??w}static _getCurrentTraceAndSpanId(){let f=V._getProxyProvider().getCurrentSpan();if(!f?.isRecording())return null;let q=f.spanContext();if(!q.traceId||!(q.traceFlags&1))return null;return[q.traceId,q.spanId]}static _emitPartial(){S("BaseTracer._emitPartial",()=>{let R=V._getProxyProvider().getActiveTracer();if(!R||!R.supportsLiveInstrumentation)return;R.getSpanProcessor().emitPartial()})}static getCurrentSpan(){return V._getProxyProvider().getCurrentSpan()}static async forceFlush(){await V._getProxyProvider().forceFlush()}static async shutdown(){await V._getProxyProvider().shutdown()}static registerOTELInstrumentation(R){S("BaseTracer.registerOTELInstrumentation",()=>{V._getProxyProvider().addInstrumentation(R)})}static wrap(R){return tR(R)}static getOTELTracer(){return V._getProxyProvider().getTracer(Nf)}static startSpan(R,f){let q=V.getOTELTracer().startSpan(R,{attributes:f});return V._emitPartial(),q}static startActiveSpan(R,f){let{name:q,attributes:$}=R;return V.getOTELTracer().startActiveSpan(q,{attributes:$},(D)=>{V._emitPartial();try{let P=f(D);if(P instanceof Promise)return P.finally(()=>{D.end()});return D.end(),P}catch(P){throw D.end(),P}})}static span(R,f){return V.startActiveSpan({name:R},(q)=>{try{let $=f(q);if($ instanceof Promise)return $.catch((D)=>{throw q.setStatus({code:l.SpanStatusCode.ERROR,message:String(D)}),q.recordException(D),D});return $}catch($){throw q.setStatus({code:l.SpanStatusCode.ERROR,message:String($)}),q.recordException($),$}})}static with(R,f){return V.span(R,f)}static continueTrace(R,f){let q=V._getProxyProvider(),$=j1(R);return q.withContext($,()=>f($))}static observe(R,f){let q;if(typeof R==="function")q=R;else f=R;let{spanType:$="span",spanName:D,recordInput:P=!0,recordOutput:U=!0,fork:E=!1}=f??{},O=V._getProxyProvider(),Q=(Y)=>{let W=D??Y.name;return function(...C){let J=O.getTracer(Nf);if(E&&O.getActiveTracer()!==null&&O.getCurrentSpan()?.isRecording()===!0){let h=V._getSerializer(),Z=J.startSpan(W),T=Z.spanContext();if($)Z.setAttribute("judgment.span_kind",$);let kR={"judgment.link.source_trace_id":T.traceId,"judgment.link.source_span_id":T.spanId};if($)kR["judgment.span_kind"]=$;let yR=O.setSpan(O.getCurrentContext(),O.wrapSpanContext(l.INVALID_SPAN_CONTEXT)),v=J.startSpan(W,{attributes:kR},yR),o=v.spanContext();Z.setAttribute("judgment.link.target_trace_id",o.traceId),Z.setAttribute("judgment.link.target_span_id",o.spanId);let fR=()=>{v.end(),Z.end()},B1=(z)=>{for(let L of[v,Z])L.recordException(z),L.setStatus({code:l.SpanStatusCode.ERROR,message:String(z)})},v1=(z)=>{let L=e(z,h);v.setAttribute("judgment.output",L),Z.setAttribute("judgment.output",L)};if(P){let z=e(Af(Y,C),h);v.setAttribute("judgment.input",z),Z.setAttribute("judgment.input",z)}return V._emitPartial(),O.useSpan(v,!1,!1,!1,()=>{try{let z=Y.call(this,...C);if(z instanceof Promise)return z.then((L)=>{if(U)v1(L);return L}).catch((L)=>{throw B1(L),L}).finally(fR);if(U)v1(z);return fR(),z}catch(z){throw B1(z),fR(),z}})}return J.startActiveSpan(W,(h)=>{if($)h.setAttribute("judgment.span_kind",$);try{if(P)h.setAttribute("judgment.input",e(Af(Y,C),V._getSerializer()));V._emitPartial();let Z=Y.call(this,...C);if(Z instanceof Promise)return Z.then((T)=>{if(U)h.setAttribute("judgment.output",e(T,V._getSerializer()));return T}).catch((T)=>{throw h.recordException(T),h.setStatus({code:l.SpanStatusCode.ERROR,message:String(T)}),T}).finally(()=>{h.end()});if(U)h.setAttribute("judgment.output",e(Z,V._getSerializer()));return h.end(),Z}catch(Z){throw h.recordException(Z),h.setStatus({code:l.SpanStatusCode.ERROR,message:String(Z)}),h.end(),Z}})}};if(!q)return Q;return Q(q)}static _resolveSpan(R){if(R)return R;return V._getProxyProvider().getCurrentSpan()}static setSpanKind(R,f){S("BaseTracer.setSpanKind",()=>{if(!R)return;let q=V._resolveSpan(f);if(q?.isRecording())q.setAttribute("judgment.span_kind",R)})}static setLLMSpan(){V.setSpanKind("llm")}static setToolSpan(){V.setSpanKind("tool")}static setGeneralSpan(){V.setSpanKind("span")}static setAttribute(R,f,q){S("BaseTracer.setAttribute",()=>{let $=V._resolveSpan(q);if(!$?.isRecording())return;if(!R||f==null)return;$.setAttribute(R,e(f,V._getSerializer()))})}static setAttributes(R,f){for(let[q,$]of Object.entries(R))if(f)V.setAttribute(q,$,f);else V.setAttribute(q,$)}static setInput(R,f){if(f)V.setAttribute("judgment.input",R,f);else V.setAttribute("judgment.input",R)}static setOutput(R,f){if(f)V.setAttribute("judgment.output",R,f);else V.setAttribute("judgment.output",R)}static setError(R,f){S("BaseTracer.setError",()=>{let q=V._resolveSpan(f);if(!q?.isRecording())return;q.recordException(R),q.setStatus({code:l.SpanStatusCode.ERROR,message:String(R)})})}static recordLLMMetadata(R,f){S("BaseTracer.recordLLMMetadata",()=>{let q=V._resolveSpan(f);if(!q?.isRecording())return;if(typeof R.model==="string")q.setAttribute("judgment.llm.model",R.model);if(typeof R.provider==="string")q.setAttribute("judgment.llm.provider",R.provider);if(typeof R.non_cached_input_tokens==="number")q.setAttribute("judgment.usage.non_cached_input_tokens",R.non_cached_input_tokens);if(typeof R.output_tokens==="number")q.setAttribute("judgment.usage.output_tokens",R.output_tokens);if(typeof R.cache_read_input_tokens==="number")q.setAttribute("judgment.usage.cache_read_input_tokens",R.cache_read_input_tokens);if(typeof R.cache_creation_input_tokens==="number")q.setAttribute("judgment.usage.cache_creation_input_tokens",R.cache_creation_input_tokens);if(typeof R.total_cost_usd==="number")q.setAttribute("judgment.usage.total_cost_usd",R.total_cost_usd)})}static _setPropagatingBaggageKey(R,f){S("BaseTracer._setPropagatingBaggageKey",()=>{let q=V._getProxyProvider(),$=q.getCurrentSpan();if(!$?.isRecording())return;$.setAttribute(R,f);let D=q.getCurrentContext(),P=(s(D)??MR()).setEntry(R,{value:f});q.attachContext(TR(D,P))})}static setCustomerId(R){V._setPropagatingBaggageKey("judgment.customer_id",R)}static setCustomerUserId(R){V._setPropagatingBaggageKey("judgment.customer_user_id",R)}static setSessionId(R){V._setPropagatingBaggageKey("judgment.session_id",R)}static tag(R){S("BaseTracer.tag",()=>{if(!R||Array.isArray(R)&&R.length===0)return;let q=V._getProxyProvider().getActiveTracer();if(!q?.projectId||!q._client)return;if(!q.supportsLiveInstrumentation)return;let $=V._getCurrentTraceAndSpanId();if(!$)return;let[D]=$,P=Array.isArray(R)?R:[R];q._client.postV1projectsTracesByTraceIdTags(q.projectId,D,{tags:P}).catch((U)=>{F.error(`tag failed: ${String(U)}`)})})}static asyncEvaluate(R,f){S("BaseTracer.asyncEvaluate",()=>{let{judge:q,example:$}=R,P=V._getProxyProvider().getActiveTracer();if(!P?.projectId)return;if(!P.supportsLiveInstrumentation)return;let U=V._resolveSpan(f);if(!U?.isRecording())return;let E=P.getSpanProcessor(),O=U.spanContext(),Q=E.stateIncr(O,"pending_evals_count"),Y={project_id:P.projectId,eval_name:`async_evaluate_${q}_${Q}`,judges:[{name:q}],examples:[{...$,example_id:Bf.randomUUID(),created_at:new Date().toISOString(),trace_id:O.traceId,span_id:O.spanId}],is_offline:!1,is_behavior:!1},W=E.stateAppend(O,"pending_evals",Y);U.setAttribute("judgment.pending_trace_eval",JSON.stringify(W))})}}function Af(R,f){try{let q=Qf(R).map((D)=>D.replace(/^\.\.\./,"").split("=")[0].trim()).filter((D)=>D.length>0),$={};return q.forEach((D,P)=>{if(P<f.length)$[D]=f[P]}),$}catch{return{}}}var l,Bf,Nf="judgeval";var p=H(()=>{FR();J1();Yf();y();j();I();zR();u();x1();l=require("@opentelemetry/api"),Bf=require("crypto")});class A{_delegate;constructor(R,f,q,$){if(!R){this._delegate=null;return}this._delegate=new vf.OTLPTraceExporter({url:R,headers:{Authorization:`Bearer ${f}`,"X-Organization-Id":q,"X-Project-Id":$}})}export(R,f){F.info(`Exported ${R.length} spans`),this._delegate?.export(R,f)}shutdown(){return this._delegate?.shutdown()??Promise.resolve()}forceFlush(){return this._delegate?.forceFlush()??Promise.resolve()}}var vf;var xR=H(()=>{j();vf=require("@opentelemetry/exporter-trace-otlp-http")});var If,n;var P1=H(()=>{xR();If=require("@opentelemetry/core");n=class n extends A{constructor(){super("","","","")}export(R,f){f({code:If.ExportResultCode.SUCCESS})}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}});class QR{_keyPredicate;constructor(R=U1){this._keyPredicate=R}onStart(R,f){let q=s(f)?.getAllEntries()??[];for(let[$,D]of q)if(this._keyPredicate($))R.setAttribute($,D.value)}onEnd(R){}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}}var U1=()=>!0;var m1=H(()=>{zR()});function YR(R){return`${R.traceId}:${R.spanId}`}function zq(R){return R[0]===0&&R[1]===0}var Kf,g;var mR=H(()=>{FR();y();u();m1();Kf=require("@opentelemetry/sdk-trace-base");g=class g extends Kf.BatchSpanProcessor{tracer;_state=new Map;_spanFinalizers;_baggageProcessor;constructor(R,f,q){super(f,q);this.tracer=R,this._spanFinalizers=new FinalizationRegistry(($)=>{this._cleanupSpanState($)}),this._baggageProcessor=new QR}_cleanupSpanState(R){this._state.delete(R)}_registerSpan(R){let f=R.spanContext();if(!f.traceId||!f.spanId)return;let q=YR(f);this._spanFinalizers.register(R,q)}stateSet(R,f,q){let $=YR(R),D=this._state.get($);if(!D)D=new Map,this._state.set($,D);D.set(f,q)}stateGet(R,f,q){let $=YR(R),D=this._state.get($);if(!D?.has(f))return q;return D.get(f)}stateIncr(R,f){let q=YR(R),$=this._state.get(q);if(!$)$=new Map,this._state.set(q,$);let D=$.get(f),P=typeof D==="number"?D:0;return $.set(f,P+1),P}stateAppend(R,f,q){let $=YR(R),D=this._state.get($);if(!D)D=new Map,this._state.set($,D);let P=D.get(f),U=Array.isArray(P)?[...P,q]:[q];return D.set(f,U),U}_emitSpan(R,f=!1){let q=R.spanContext();if(!q.traceId)return;let $=this.stateIncr(q,"judgment.update_id"),D={...R.attributes,"judgment.update_id":$};if(f)delete D["judgment.pending_trace_eval"];let P=Object.create(R);Object.defineProperty(P,"attributes",{value:D,writable:!1});let U=zq(R.endTime)?R.startTime:R.endTime;Object.defineProperty(P,"endTime",{value:U,writable:!1}),super.onEnd(P)}emitPartial(){S("JudgmentSpanProcessor.emitPartial",()=>{let f=G.getInstance().getCurrentSpan();if(!f?.isRecording())return;let q=f.spanContext();if(!q.traceId)return;if(this.stateGet(q,"disable_partial_emit",!1))return;this._emitSpan(f,!0)})}onStart(R,f){S("JudgmentSpanProcessor.onStart",()=>{this._baggageProcessor.onStart(R,f),this._registerSpan(R)})}onEnd(R){S("JudgmentSpanProcessor.onEnd",()=>{let f=R.spanContext();if(!f.traceId){super.onEnd(R);return}let q=YR(f);try{if(!this.stateGet(f,"cancelled",!1))this._emitSpan(R)}finally{this._cleanupSpanState(q)}})}}});var WR;var k1=H(()=>{P1();mR();WR=class WR extends g{constructor(){super(null,new n)}onStart(R,f){}onEnd(R){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}emitPartial(){}stateSet(R,f,q){}stateGet(R,f,q){return q}stateIncr(R,f){return 0}stateAppend(R,f,q){return[q]}}});var O1,y1,B;var E1=H(()=>{XR();AR();j();vR();I();Z1();p();u();xR();P1();mR();k1();O1=require("@opentelemetry/resources"),y1=require("@opentelemetry/sdk-trace-node");B=class B extends V{_spanExporter=null;_spanProcessor=null;constructor(R,f,q,$,D,P,U,E,O,Q){super(R,f,q,$,D,P,U,E,O,Q)}static async init(R={}){let f=R.apiKey??qR,q=R.organizationId??$R,$=R.apiUrl??DR,D=R.projectName??null,P=R.serializer??w,U=!0;if(!D)F.warning("project_name not provided. Tracer will not export spans."),U=!1;if(!f)F.warning("api_key not provided. Tracer will not export spans."),U=!1;if(!q)F.warning("organization_id not provided. Tracer will not export spans."),U=!1;if(!$)F.warning("api_url not provided. Tracer will not export spans."),U=!1;let E=null,O=null;if(U&&D&&f&&q&&$){if(E=new c($,f,q),O=await PR(E,D).catch(()=>null),!O)F.warning(`Project '${D}' not found. Tracer will not export spans.`),U=!1}let Q={"service.name":D??"unknown","telemetry.sdk.name":"judgeval","telemetry.sdk.version":gR};if(R.environment)Q["deployment.environment"]=R.environment;if(R.resourceAttributes)Object.assign(Q,R.resourceAttributes);let Y=O1.defaultResource().merge(O1.resourceFromAttributes(Q)),W=new y1.NodeTracerProvider({resource:Y,sampler:R.sampler,spanLimits:R.spanLimits}),C=new B(D,O,f,q,$,R.environment??null,P,W,E,U);if(U){let b=new y1.NodeTracerProvider({resource:Y,sampler:R.sampler,spanLimits:R.spanLimits,spanProcessors:[C.getSpanProcessor(),...R.spanProcessors??[]]});C._tracerProvider=b}if(G.getInstance().register(C),R.setActive??!0)C.setActive();return C}getSpanExporter(){if(this._spanExporter)return this._spanExporter;if(!this._enableMonitoring||!this.projectId||!this.apiKey||!this.organizationId||!this.apiUrl)this._spanExporter=new n;else{let R=this.apiUrl.endsWith("/")?this.apiUrl+"otel/v1/traces":this.apiUrl+"/otel/v1/traces";this._spanExporter=new A(R,this.apiKey,this.organizationId,this.projectId)}return this._spanExporter}getSpanProcessor(){if(this._spanProcessor)return this._spanProcessor;if(!this._enableMonitoring)this._spanProcessor=new WR;else this._spanProcessor=new g(this,this.getSpanExporter());return this._spanProcessor}}});var HR;var L1=H(()=>{JR();mR();HR=class HR extends g{_dataset;_exampleFields;_seenTraceIds=new Set;constructor(R,f,q){super(R,f);this._dataset=q.dataset,this._exampleFields={...q.exampleFields??{}}}_maybeCreateExample(R){if(R.parentSpanContext)return;let f=R.spanContext();if(!f?.traceId)return;if(this._seenTraceIds.has(f.traceId))return;this._seenTraceIds.add(f.traceId);let q=m.create({...this._exampleFields,offline_trace_id:f.traceId});this._dataset.push(q)}onEnd(R){try{this._maybeCreateExample(R)}finally{super.onEnd(R)}}}});var lf={};LR(lf,{OfflineTracer:()=>i});var V1,N1,uf="otel/v1/offline-traces",i;var F1=H(()=>{XR();AR();vR();I();Z1();u();E1();xR();L1();V1=require("@opentelemetry/resources"),N1=require("@opentelemetry/sdk-trace-node");i=class i extends B{supportsLiveInstrumentation=!1;_offlineApiUrl;_offlineApiKey;_offlineOrganizationId;_offlineProjectId;_dataset;_exampleFields;_offlineSpanExporter=null;_offlineSpanProcessor=null;constructor(R){super(R.projectName,R.projectId,R.apiKey,R.organizationId,R.apiUrl,R.environment,R.serializer,R.tracerProvider,R.client,!0);this._offlineApiUrl=R.apiUrl,this._offlineApiKey=R.apiKey,this._offlineOrganizationId=R.organizationId,this._offlineProjectId=R.projectId,this._dataset=R.dataset,this._exampleFields=R.exampleFields}static async create(R){let f=R.apiKey??qR,q=R.organizationId??$R,$=R.apiUrl??DR,D=R.projectName,P=R.serializer??w;if(!D)throw Error("projectName is required for OfflineTracer");if(!f)throw Error("apiKey is required for OfflineTracer");if(!q)throw Error("organizationId is required for OfflineTracer");if(!$)throw Error("apiUrl is required for OfflineTracer");let U=new c($,f,q),E;try{E=await PR(U,D)}catch(J){throw Error(`Project '${D}' not found; cannot start OfflineTracer: ${String(J)}`)}let O={"service.name":D,"telemetry.sdk.name":"judgeval","telemetry.sdk.version":gR,"judgment.offline":"true"};if(R.environment)O["deployment.environment"]=R.environment;if(R.resourceAttributes)Object.assign(O,R.resourceAttributes);let Q=V1.defaultResource().merge(V1.resourceFromAttributes(O)),Y=new i({projectName:D,projectId:E,apiKey:f,organizationId:q,apiUrl:$,environment:R.environment??null,serializer:P,tracerProvider:new N1.NodeTracerProvider({resource:Q}),client:U,dataset:R.dataset,exampleFields:{...R.exampleFields??{}}}),W=new N1.NodeTracerProvider({resource:Q,sampler:R.sampler,spanLimits:R.spanLimits,spanProcessors:[Y.getSpanProcessor(),...R.spanProcessors??[]]});if(Y._tracerProvider=W,G.getInstance().register(Y),R.setActive??!0)Y.setActive();return Y}getSpanExporter(){if(this._offlineSpanExporter)return this._offlineSpanExporter;let R=this._offlineApiUrl.endsWith("/")?this._offlineApiUrl+uf:this._offlineApiUrl+"/"+uf;return this._offlineSpanExporter=new A(R,this._offlineApiKey,this._offlineOrganizationId,this._offlineProjectId),this._offlineSpanExporter}getSpanProcessor(){if(this._offlineSpanProcessor)return this._offlineSpanProcessor;return this._offlineSpanProcessor=new HR(this,this.getSpanExporter(),{dataset:this._dataset,exampleFields:this._exampleFields}),this._offlineSpanProcessor}}});var Aq={};LR(Aq,{wrapOpenAI:()=>oR,wrap:()=>tR,validateDatasetSchema:()=>dR,propagation:()=>D1,inferSchemaFromExamples:()=>sR,baggage:()=>f1,Tracer:()=>B,OfflineTracer:()=>i,OfflineTestsFactory:()=>CR,OfflineTestRunner:()=>SR,OfflineJudgmentSpanProcessor:()=>HR,NoOpSpanProcessor:()=>WR,NoOpSpanExporter:()=>n,JudgmentTracerProvider:()=>G,JudgmentSpanExporter:()=>A,JudgmentBaggageSpanProcessor:()=>QR,JudgmentBaggagePropagator:()=>d,Judgeval:()=>W1,Judge:()=>UR,Example:()=>m,Evaluation:()=>ER,Dataset:()=>r,BaseTracer:()=>V,AgentJudgeFactory:()=>VR,ALLOW_ALL_BAGGAGE_KEYS:()=>U1});module.exports=af(Aq);XR();AR();vR();j();class UR{}j();var C1=hR(GR(),1);j();var X=hR(GR(),1),Dq=2000;class OR{_client;_projectId;_projectName;constructor(R,f,q){this._client=R,this._projectId=f,this._projectName=q}async _poll(R,f,q,$){let D=Date.now();while(!0){let P=(Date.now()-D)/1000;if(P>$)throw Error(`Evaluation timed out after ${$}s`);let U=await this._client.getV1projectsExperimentsByRunId(R,f),E=U.results??[];if(E.length>=q){let Q=U.ui_results_url??"Failed to get UI results URL";return console.log(`${X.default.green("✓")} Evals completed and saved in ${X.default.bold(`${P.toFixed(1)}s`)}`),{results:E,url:Q}}await new Promise((Q)=>setTimeout(Q,Dq))}}_displayResults(R,f,q,$){let D=[],P=0,U=0;console.log();for(let E=0;E<f.length;E++){let O=f[E],Q=O.scorers.every((Y)=>Boolean(Y.success));if(Q)P++,console.log(`${X.default.green("✓")} Example ${E+1}: ${X.default.green("PASSED")}`);else U++,console.log(`${X.default.red("✗")} Example ${E+1}: ${X.default.red("FAILED")}`);for(let Y of O.scorers){let W=Y.score!==null?Y.score.toFixed(3):"N/A",C=Y.success?X.default.green(W):X.default.red(W);console.log(` ${X.default.dim(`${Y.name}:`)} ${C} ${X.default.dim(`(threshold: ${Y.threshold})`)}`)}D.push({success:Q,scorers:O.scorers,example:R[E]})}if(console.log(),P===D.length)console.log(`${X.default.bold(X.default.green("✓ All tests passed!"))} (${P}/${D.length})`);else console.log(`${X.default.bold(X.default.yellow("⚠ Results:"))} ${X.default.green(`${P} passed`)} | ${X.default.red(`${U} failed`)}`);if(console.log(`${X.default.dim("View full details:")} ${X.default.underline(q)}`),console.log(),$&&D.some((E)=>!E.success)){let E=[`Evaluation failed: ${U}/${D.length} examples failed`];for(let O=0;O<D.length;O++)if(!D[O].success){E.push(` Example ${O+1}:`);for(let Q of D[O].scorers)if(!Q.success){if(E.push(` ${Q.name}: ${Q.score!==null?Q.score.toFixed(3):"N/A"} (threshold: ${Q.threshold})`),Q.reason)E.push(` ${Q.reason}`)}}throw Error(E.join(`
|
|
4
|
+
`))}return D}async run(R,f,q,$=!1,D=300){if(!this._projectId)return F.error("Project ID is not resolved. Evaluation requires a valid project."),[];let P=this._projectId,U=crypto.randomUUID(),E=new Date().toISOString();console.log(),console.log(X.default.bold(X.default.cyan("Starting Evaluation"))),console.log(`${X.default.dim("Run:")} ${q}`),console.log(`${X.default.dim("Project:")} ${this._projectName}`),console.log(`${X.default.dim("Examples:")} ${R.length} | ${X.default.dim("Scorers:")} ${f.length}`),console.log();let O=this._buildPayload(U,P,q,E,R,f),Q=await this._submit(P,U,R,f,O),{results:Y,url:W}=await this._poll(P,U,Q,D);return this._displayResults(R,Y,W,$)}}class uR extends OR{_buildPayload(R,f,q,$,D,P){return{id:R,project_id:f,eval_name:q,created_at:$,examples:D.map((U)=>U.toJSON()),judgment_scorers:[],custom_scorers:[]}}async _submit(R,f,q,$,D){let P=Date.now(),U=q.flatMap((W,C)=>$.map((J)=>J.score(W).then((b)=>({exampleIdx:C,scorer:J,result:b,error:null})).catch((b)=>({exampleIdx:C,scorer:J,result:null,error:String(b)})))),E=await Promise.all(U),O=((Date.now()-P)/1000).toFixed(1);console.log(`${C1.default.green("✓")} Scoring completed in ${C1.default.bold(`${O}s`)}`);let Q=new Map;for(let W of E){let C=Q.get(W.exampleIdx);if(!C)C=[],Q.set(W.exampleIdx,C);C.push(W)}let Y=q.map((W,C)=>{return{scorers_data:(Q.get(C)??[]).map((b)=>{if(b.error!==null)return{scorer_name:b.scorer.constructor.name,value:0,reason:"",error:b.error};let h=b.result;return{scorer_name:b.scorer.constructor.name,value:h.value,reason:h.reason,...h.citations&&{citations:h.citations.map((Z)=>({span_id:Z.spanId,span_attribute:Z.spanAttribute}))}}}),data_object:W.toJSON()}});return await this._client.postV1projectsEvalResultsExamples(R,{results:Y,run:D}),q.length}}var i1=hR(GR(),1);class lR extends OR{_buildPayload(R,f,q,$,D,P){return{id:R,project_id:f,eval_name:q,created_at:$,examples:D.map((U)=>U.toJSON()),judgment_scorers:P.map((U)=>({name:U})),custom_scorers:[]}}async _submit(R,f,q,$,D){return await this._client.postV1projectsEvalQueueExamples(R,D),console.log(`${i1.default.green("✓")} Evaluation submitted`),q.length}}class ER{_local;_hosted;constructor(R,f,q){this._local=new uR(R,f,q),this._hosted=new lR(R,f,q)}run(R){let{examples:f,scorers:q,evalRunName:$,assertTest:D=!1,timeoutSeconds:P=300}=R,U=q.filter((O)=>typeof O==="string"),E=q.filter((O)=>O instanceof UR);if(E.length>0&&U.length>0)return F.error("Running both local and hosted scorers is not supported. Please run your evaluation with either local or hosted scorers, but not both."),Promise.resolve([]);if(E.length===0&&U.length===0)return F.error("No valid local or hosted scorers provided. Please provide at least one local or hosted scorer."),Promise.resolve([]);if(E.length>0)return this._local.run(f,E,$,D,P);return this._hosted.run(f,U,$,D,P)}}class pR{_client;_projectId;_projectName;constructor(R,f,q){this._client=R,this._projectId=f,this._projectName=q}create(){return new ER(this._client,this._projectId,this._projectName)}}JR();j();JR();class r{name;projectId;projectName;datasetKind;examples;_client;constructor(R){this.name=R.name,this.projectId=R.projectId,this.projectName=R.projectName,this.datasetKind=R.datasetKind??"example",this.examples=R.examples??[],this._client=R.client??null}async addExamples(R,f=100){if(!this._client)return;for(let q=0;q<R.length;q+=f){let $=R.slice(q,q+f);await this._client.postV1projectsDatasetsByDatasetIdentifierExamples(this.projectId,this.name,{examples:$.map((D)=>D.toJSON())})}}async addFromJson(R,f=100){let{readFile:q}=await import("fs/promises"),$=await q(R,"utf-8"),P=JSON.parse($).map((U)=>{if(typeof U!=="object"||U===null)throw Error("Each item in the JSON array must be an object");return m.create(U)});await this.addExamples(P,f)}get length(){return this.examples.length}[Symbol.iterator](){return this.examples[Symbol.iterator]()}toString(){return`Dataset(name=${this.name}, examples=${this.examples.length})`}}var Pq="trace";function dR(R){if(typeof R!=="object"||R===null||Array.isArray(R))throw Error("Dataset schema must be a JSON object.");let f=R;if(f.type!=="object")throw Error('Dataset schema must declare top-level type "object".');let q=f.properties;if(typeof q!=="object"||q===null||Array.isArray(q))throw Error("Dataset schema must declare a 'properties' object.");let $=Object.entries(q).filter(([,D])=>typeof D==="object"&&D!==null&&D.type===Pq).map(([D])=>D);if($.length>1)throw Error(`A dataset may declare at most one trace column; found ${$.length}: ${$.join(", ")}.`)}function Uq(R){if(typeof R==="boolean")return"boolean";if(typeof R==="number")return Number.isInteger(R)?"integer":"number";if(typeof R==="string")return"string";if(Array.isArray(R))return"array";if(typeof R==="object"&&R!==null)return"object";return"string"}function sR(R){if(R.length===0)throw Error("Cannot infer a dataset schema without examples. Pass an explicit `schema` to client.datasets.create().");let f={},q=null;for(let $ of R){let D=new Set;for(let[P,U]of Object.entries($.properties)){if(U===null||U===void 0)continue;if(D.add(P),!(P in f))f[P]={type:Uq(U)}}if(q===null)q=D;else if(q.size!==D.size||![...q].every((P)=>D.has(P)))throw Error("All examples must share the same set of fields (dataset schemas require all declared properties). Pass an explicit `schema` or make all examples homogeneous.")}return{type:"object",properties:f}}class nR{_client;_projectId;_projectName;constructor(R,f,q){this._client=R,this._projectId=f,this._projectName=q}async get(R){let f=this._expectProjectId();if(!f)return null;let q=await this._client.getV1projectsDatasetsByDatasetIdentifier(f,R),$=q.dataset_kind??"example",D=(q.examples??[]).map((P)=>m.from({...P.data??{},example_id:P.example_id,created_at:P.created_at??""}));return new r({name:R,projectId:f,projectName:this._projectName,datasetKind:$,examples:D,client:this._client})}async create(R,f={}){let q=this._expectProjectId();if(!q)return null;let{examples:$=[],overwrite:D=!1,batchSize:P=100,schema:U}=f,E;if(U!==void 0)dR(U),E=U;else{if($.length===0)throw Error("Datasets require a JSON Schema. Pass `schema` to create(), or provide `examples` to infer one.");E=sR($)}await this._client.postV1projectsDatasets(q,{name:R,examples:[],dataset_kind:"example",overwrite:D,schema:E});let O=new r({name:R,projectId:q,projectName:this._projectName,examples:$,client:this._client});if($.length>0)await O.addExamples($,P);return O}list(){let R=this._expectProjectId();if(!R)return Promise.resolve(null);return this._client.getV1projectsDatasets(R)}_expectProjectId(){if(!this._projectId)return F.error("Project ID is not resolved. Dataset operations require a valid project."),null;return this._projectId}}j();class VR{_client;_projectId;_projectName;constructor(R,f,q){this._client=R,this._projectId=f,this._projectName=q}async create(R){let f=this._expectProjectId();if(!f)return null;let q={name:R.name,prompt:R.prompt,model:R.model,score_type:R.scoreType};if(R.description!==void 0)q.description=R.description;if(R.judgeDescription!==void 0)q.judge_description=R.judgeDescription;if(R.categories!==void 0)q.categories=R.categories;if(R.minScore!==void 0)q.min_score=R.minScore;if(R.maxScore!==void 0)q.max_score=R.maxScore;return{judgeId:(await this._client.postV1projectsJudges(f,q)).judge_id,name:R.name,prompt:R.prompt,model:R.model,scoreType:R.scoreType,description:R.description??null,judgeDescription:R.judgeDescription??null,categories:R.categories??null,minScore:R.minScore??null,maxScore:R.maxScore??null,majorVersion:0,minorVersion:0}}async update(R){let f=this._expectProjectId();if(!f)return null;let q={};if(R.prompt!==void 0)q.prompt=R.prompt;if(R.model!==void 0)q.model=R.model;if(R.scoreType!==void 0)q.score_type=R.scoreType;if(R.description!==void 0)q.description=R.description;if(R.judgeDescription!==void 0)q.judge_description=R.judgeDescription;if(R.categories!==void 0)q.categories=R.categories;if(R.minScore!==void 0)q.min_score=R.minScore;if(R.maxScore!==void 0)q.max_score=R.maxScore;if(R.sourceMajorVersion!==void 0)q.source_major_version=R.sourceMajorVersion;if(R.sourceMinorVersion!==void 0)q.source_minor_version=R.sourceMinorVersion;if(R.targetMajorVersion!==void 0)q.target_major_version=R.targetMajorVersion;if(R.targetMinorVersion!==void 0)q.target_minor_version=R.targetMinorVersion;let $=await this._client.patchV1projectsJudgesByJudgeId(f,R.judgeId,q);return Oq($)}_expectProjectId(){if(!this._projectId)return F.error("Project ID is not resolved. Agent judge operations require a valid project."),null;return this._projectId}}function Oq(R){let f=R.judge;return{judgeId:f.id,name:f.name,prompt:f.prompt??"",model:f.model??"",scoreType:f.score_type,description:f.description??null,judgeDescription:f.judge_description??null,categories:f.categories??null,minScore:f.min_score??null,maxScore:f.max_score??null,majorVersion:f.major_version??null,minorVersion:f.minor_version??null}}j();j();E1();F1();u();function Q1(R){let f=Array.isArray(R.judges)?R.judges.filter((q)=>typeof q==="object"&&q!==null):[];return{id:typeof R.id==="string"?R.id:"",name:typeof R.name==="string"?R.name:"",datasetId:typeof R.dataset_id==="string"?R.dataset_id:"",description:typeof R.description==="string"?R.description:null,createdAt:typeof R.created_at==="string"?R.created_at:null,judges:f}}function pf(R){let f=[];for(let q of R)for(let $ of q.scorers)if($.success!==null&&$.success!==void 0)f.push($.success);if(f.length===0)return null;return f.every((q)=>q)}var _=hR(GR(),1);function k(R){return typeof R==="object"&&R!==null&&!Array.isArray(R)?R:{}}function RR(R){return Array.isArray(R)?R:[]}function M(R){return typeof R==="string"?R:""}function df(R){return R?"Yes":"No"}function jq(R){let{score_type:f,bool_value:q,str_value:$,num_value:D}=R;if(f==="binary")return typeof q==="boolean"?df(q):null;if(f==="categorical")return typeof $==="string"?$:null;if(f==="numeric")return typeof D==="number"?D:null;if(typeof q==="boolean")return df(q);if(typeof $==="string")return $;if(typeof D==="number")return D;return null}function xq(R){if(typeof R==="object"&&R!==null){let f=R.text;return typeof f==="string"&&f?f:null}if(typeof R==="string"){try{let f=JSON.parse(R);if(typeof f==="object"&&f!==null){let q=f.text;if(typeof q==="string")return q||null}}catch{}return R||null}return null}function sf(R){if(!R||R.length===0)return;let f=[];for(let q of R){if(!q.name&&!q.judgeId)throw Error("judgeVersions entries require a 'name' (or 'judgeId') key");let $={};if(q.judgeId!==void 0)$.judge_id=q.judgeId;if(q.name!==void 0)$.name=q.name;if(q.tag!==void 0)$.tag=q.tag;if(q.version!==void 0)$.version=q.version;if(q.majorVersion!==void 0)$.major_version=q.majorVersion;if(q.minorVersion!==void 0)$.minor_version=q.minorVersion;f.push($)}return f}function nf(R,f,q){let $=[];for(let D of R){let P=M(D.example_id),U=k(D.data),E=[];for(let O of RR(D.scorers)){let Q=k(O),Y={judge_id:Q.judge_id,judge_major_version:Q.judge_major_version,judge_minor_version:Q.judge_minor_version},W=xq(Q.reason);if(W)Y.reason=W;E.push({name:M(Q.judge_name),value:jq(Q),scoreType:typeof Q.score_type==="string"?Q.score_type:null,error:typeof Q.error==="string"?Q.error:null,success:typeof Q.success==="boolean"?Q.success:null,metadata:Y})}if(q){let O=Boolean(q({...U},E));for(let Q of E)Q.success=O}$.push({exampleId:P,data:U,scorers:E,agentOfflineTraceId:f[P]})}return $}function gf(R){if(R.status!=="completed")throw Error(`Test run ${R.testRunId} finished with status '${R.status}'`);let f=R.results.filter((q)=>q.scorers.some(($)=>$.success===!1)).map((q)=>q.exampleId);if(f.length>0||R.passed!==!0)throw Error(`Test run ${R.testRunId} failed its pass condition for ${f.length} example(s): ${JSON.stringify(f)}`)}function of(R,f,q){console.log(),console.log(_.default.bold(_.default.cyan("Starting Offline Test"))),console.log(`${_.default.dim("Config:")} ${R}`),console.log(`${_.default.dim("Project:")} ${f}`),console.log(`${_.default.dim("Examples:")} ${q}`),console.log()}function tf(R,f){if(console.log(),R.forEach((q,$)=>{if(q.scorers.some((P)=>P.success!==null&&P.success!==void 0)){let P=q.scorers.every((U)=>U.success===!0);console.log(P?`${_.default.green("✓")} Example ${$+1}: ${_.default.green("PASSED")}`:`${_.default.red("✗")} Example ${$+1}: ${_.default.red("FAILED")}`)}else console.log(`${_.default.cyan("•")} Example ${$+1}:`);for(let P of q.scorers){if(P.error){console.log(` ${_.default.dim(`${P.name}:`)} ${_.default.red(`error: ${P.error}`)}`);continue}let U=P.value===null?"N/A":String(P.value),E=P.success===!0?_.default.green(U):P.success===!1?_.default.red(U):U;console.log(` ${_.default.dim(`${P.name}:`)} ${E}`)}}),console.log(),f)console.log(`${_.default.dim("View full details:")} ${_.default.underline(f)}`),console.log()}var mq=new Set(["completed","error","cancelled"]),kq=100,yq=200,Lq=2000,Y1=1e4;class SR{_client;_projectId;_projectName;constructor(R,f,q){this._client=R,this._projectId=f,this._projectName=q}async resolveDatasetVersion(R,f){let q=await this._client.getV1projectsDatasetsByDatasetIdentifierVersions(this._projectId,R.datasetId),$=RR(q.versions).filter((D)=>typeof D==="object"&&D!==null).map((D)=>D);if(f===void 0){if($.length===0)throw Error(`Dataset of test config '${R.name}' has no versions`);return $.reduce((D,P)=>Number(P.version_number??0)>Number(D.version_number??0)?P:D)}if(typeof f==="number"){let D=$.find((P)=>Number(P.version_number??0)===f);if(D)return D}else{let D=$.find((P)=>P.version_id===f);if(D)return D}throw Error(`Dataset version ${JSON.stringify(f)} does not exist for the dataset of test config '${R.name}'`)}async fetchExamples(R,f){let q=[],$,D,P=0;for(;;){if(P>=Y1)throw Error(`fetchExamples exceeded ${Y1} pages for dataset of test config '${R.name}'`);let U=await this._client.getV1projectsDatasetsByDatasetIdentifierPage(this._projectId,R.datasetId,String(f),String(kq),$,D);P+=1;for(let Q of RR(U.entries)){let Y=k(k(Q).example),W=Y.data;if(typeof W==="string")try{W=JSON.parse(W)}catch{W={}}q.push({exampleId:M(Y.example_id),data:k(W),offlineTraceId:typeof Y.offline_trace_id==="string"?Y.offline_trace_id:null,createdAt:typeof Y.created_at==="string"?Y.created_at:null})}let E=k(U.metadata),O=k(E.nextCursor);if(!E.hasMore||Object.keys(O).length===0)break;$=M(O.created_at),D=M(O.example_id)}return q}createTestRun(R,f={}){let q={test_config_id:R.id,source:f.source??"sdk"};if(f.name)q.name=f.name;if(typeof f.datasetVersion==="number")q.dataset_version_number=f.datasetVersion;else if(typeof f.datasetVersion==="string")q.dataset_version_id=f.datasetVersion;let $=sf(f.judgeVersions);if($)q.judge_versions=$;let D=f.agentTraces??{};if(Object.keys(D).length>0)q.agent_traces=Object.entries(D).map(([P,U])=>({example_id:P,agent_offline_trace_id:U}));return this._client.postV1projectsTestRuns(this._projectId,q)}async runAgent(R,f){let q=[],$=G.getInstance().getActiveTracer();await i.create({projectName:this._projectName,apiKey:this._client.getApiKey(),organizationId:this._client.getOrganizationId(),apiUrl:this._client.getBaseUrl(),dataset:q,setActive:!0});let D={};try{let P=B.observe(R,{spanType:"agent"});for(let U of f){let E=q.length;try{await P(U.data)}catch(O){F.error(`Agent entrypoint raised for example ${U.exampleId}: ${String(O)}`)}for(let O of q.slice(E)){let Q=O.get("offline_trace_id");if(U.exampleId&&typeof Q==="string"){D[U.exampleId]=Q;break}}}}finally{if(await B.forceFlush(),$)$.setActive()}return D}async waitForCompletion(R,f){let q=Date.now();for(;;){if((Date.now()-q)/1000>f)throw Error(`Test run ${R} did not complete within ${f}s`);let $=await this._client.getV1projectsTestRunsByTestRunId(this._projectId,R),D=M(k($.test_run).status);if(mq.has(D))return D;await BR(Lq)}}async fetchItems(R){let f=[],q="",$,D=0;for(;;){if(D>=Y1)throw Error(`fetchItems exceeded ${Y1} pages for test run ${R}`);let P=await this._client.getV1projectsTestRunsByTestRunIdItems(this._projectId,R,String(yq),$);D+=1;for(let E of RR(P.results))f.push(k(E));if(!q)q=M(P.ui_results_url);let U=P.next_cursor;if(!P.has_more||typeof U!=="string"||!U)break;$=U}return{items:f,uiResultsUrl:q}}async reportSuccess(R,f,q,$){let D=new Map,P=new Map,U=(Y,W,C,J)=>`${Y}\x00${W}\x00${C}\x00${J}`,E=(Y,W)=>`${Y}\x00${W}`;for(let Y of RR(f.evaluation_runs)){let W=k(Y),C=W.run_id;if(typeof C!=="string"||!C)continue;D.set(U(M(W.example_id),M(W.judge_id),Number(W.judge_major_version??0),Number(W.judge_minor_version??0)),C),P.set(E(M(W.example_id),M(W.judge_name)),C)}let O=new Map;for(let Y of $)O.set(Y.exampleId,Y);let Q=[];for(let Y of q){let W=M(Y.example_id),C=O.get(W),J=C?C.scorers.map((h)=>h.success??null):[],b=RR(Y.scorers);for(let h=0;h<b.length;h+=1){let Z=k(b[h]),T=D.get(U(W,M(Z.judge_id),Number(Z.judge_major_version??0),Number(Z.judge_minor_version??0)))??P.get(E(W,M(Z.judge_name)));if(!T){F.warning(`No evaluation run ref for scorer ${M(Z.judge_name)} of example ${W}; skipping its success update`);continue}Q.push({evaluation_run_id:T,success:h<J.length?J[h]:null})}}if(Q.length===0)return;await this._client.patchV1projectsTestRunsByTestRunIdSuccess(this._projectId,R,{successes:Q})}async run(R,f={}){let{agentFunction:q,judgeVersions:$,datasetVersion:D,passConditionFn:P,assertTest:U=!1,timeoutSeconds:E=600,runName:O}=f;if(U&&!P)throw Error("assertTest=true requires a passConditionFn to decide whether each row passes.");let Q=await this.resolveDatasetVersion(R,D),Y=Number(Q.version_number??0),W=await this.fetchExamples(R,Y);of(R.name,this._projectName,W.length),F.info(`Dataset version ${Y}: ${W.length} example(s)`);let C=typeof D==="string"?D:Y,J={};if(q&&W.length>0)J=await this.runAgent(q,W);let b=await this.createTestRun(R,{datasetVersion:C,judgeVersions:$,agentTraces:J,name:O}),h=k(b.test_run),Z=M(h.id),T=M(b.ui_results_url);F.info(`Created test run ${Z} over ${W.length} examples`);let kR=await this.waitForCompletion(Z,E),{items:yR,uiResultsUrl:v}=await this.fetchItems(Z);if(v)T=v;let o=nf(yR,J,P);if(P)await this.reportSuccess(Z,b,yR,o);tf(o,T||void 0);let fR={testRunId:Z,status:kR,uiResultsUrl:T||void 0,results:o,agentOfflineTraceIds:J,passed:pf(o)};if(U)gf(fR);return fR}}var Nq=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function A1(R){return Nq.test(R)}class CR{_client;_projectId;_projectName;constructor(R,f,q){this._client=R,this._projectId=f,this._projectName=q}async createConfig(R,f,q,$){let D=this._expectProjectId();if(!D)return null;let P=[];for(let O of q)if(typeof O==="string")P.push(A1(O)?{judge_id:O}:{name:O});else if(O.judgeId)P.push({judge_id:O.judgeId});else if(O.name)P.push({name:O.name});else throw Error("judges entries must be judge names or objects with a 'judgeId' or 'name'");let U={name:R,judges:P};if($!==void 0)U.description=$;if(A1(f))U.dataset_id=f;else U.dataset_name=f;let E=await this._client.postV1projectsTestConfigs(D,U);return F.info(`Created test config ${R}`),Q1(E.test_config??{})}async getConfig(R){let f=this._expectProjectId();if(!f)return null;if(A1(R)){let D=await this._client.getV1projectsTestConfigsByTestConfigId(f,R);return Q1(D.test_config??{})}let $=(await this.listConfigs()??[]).find((D)=>D.name===R);if(!$)return F.error(`Test config '${R}' not found`),null;return $}async listConfigs(R){let f=this._expectProjectId();if(!f)return null;let q=await this._client.getV1projectsTestConfigs(f,R);return(Array.isArray(q.test_configs)?q.test_configs:[]).map((D)=>Q1(D))}async deleteConfig(R){let f=this._expectProjectId();if(!f)return!1;return await this._client.deleteV1projectsTestConfigsByTestConfigId(f,R),F.info(`Deleted test config ${R}`),!0}async run(R,f={}){let q=this._expectProjectId();if(!q)return null;let $=typeof R==="string"?await this.getConfig(R):R;if(!$||!$.id)return null;return new SR(this._client,q,this._projectName).run($,f)}_expectProjectId(){if(!this._projectId)return F.error("Project ID is not resolved. Offline-test operations require a valid project."),null;return this._projectId}}class W1{_client;_projectName;_projectId;constructor(R,f,q){this._client=R,this._projectName=f,this._projectId=q}static async create(R){let f=R.apiKey??qR,q=R.organizationId??$R,$=R.apiUrl??DR;if(!f)throw Error("API key is required");if(!q)throw Error("Organization ID is required");if(!$)throw Error("API URL is required");if(!R.projectName)throw Error("Project name is required");let D=new c($,f,q),P=null;try{P=await PR(D,R.projectName)}catch{F.warning(`Project '${R.projectName}' not found. Some operations requiring project_id will be skipped.`)}return new W1(D,R.projectName,P)}async offlineTracer(R){let{OfflineTracer:f}=await Promise.resolve().then(() => (F1(),lf));return f.create({...R,projectName:this._projectName,apiKey:this._client.getApiKey(),organizationId:this._client.getOrganizationId(),apiUrl:this._client.getBaseUrl()})}get datasets(){return new nR(this._client,this._projectId,this._projectName)}get evaluation(){return new pR(this._client,this._projectId,this._projectName)}get agentJudges(){return new VR(this._client,this._projectId,this._projectName)}get offlineTests(){return new CR(this._client,this._projectId,this._projectName)}}p();xR();P1();u();mR();k1();L1();m1();R1();zR();x1();E1();F1();J1();JR();
|
|
5
5
|
|
|
6
|
-
//# debugId=
|
|
6
|
+
//# debugId=A4B1A6E1DDC7F86A64756E2164756E21
|
|
7
7
|
//# sourceMappingURL=index.cjs.map
|