judgeval 0.6.0 → 0.7.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.
Files changed (164) hide show
  1. package/dist/Judgeval.d.ts.map +1 -0
  2. package/dist/{v1/data → data}/APIScorerType.d.ts +0 -3
  3. package/dist/data/APIScorerType.d.ts.map +1 -0
  4. package/dist/{v1/data → data}/Example.d.ts +2 -2
  5. package/dist/data/Example.d.ts.map +1 -0
  6. package/dist/{v1/data → data}/ScorerData.d.ts +1 -1
  7. package/dist/data/ScorerData.d.ts.map +1 -0
  8. package/dist/{v1/data → data}/ScoringResult.d.ts +1 -1
  9. package/dist/data/ScoringResult.d.ts.map +1 -0
  10. package/dist/data/index.d.ts +4 -3
  11. package/dist/data/index.d.ts.map +1 -1
  12. package/dist/{v1/evaluation → evaluation}/Evaluation.d.ts +1 -1
  13. package/dist/evaluation/Evaluation.d.ts.map +1 -0
  14. package/dist/{v1/evaluation → evaluation}/EvaluationFactory.d.ts +1 -1
  15. package/dist/evaluation/EvaluationFactory.d.ts.map +1 -0
  16. package/dist/evaluation/index.d.ts.map +1 -0
  17. package/dist/index.cjs +3 -3
  18. package/dist/index.cjs.map +22 -47
  19. package/dist/index.d.ts +5 -11
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.mjs +3 -3
  22. package/dist/index.mjs.map +22 -47
  23. package/dist/index.umd.js +16 -16
  24. package/dist/index.umd.js.map +24 -49
  25. package/dist/{v1/scorers → scorers}/APIScorer.d.ts +1 -1
  26. package/dist/scorers/APIScorer.d.ts.map +1 -0
  27. package/dist/{v1/scorers → scorers}/BaseScorer.d.ts +1 -1
  28. package/dist/scorers/BaseScorer.d.ts.map +1 -0
  29. package/dist/{v1/scorers → scorers}/ScorersFactory.d.ts +1 -1
  30. package/dist/scorers/ScorersFactory.d.ts.map +1 -0
  31. package/dist/scorers/builtIn/AnswerCorrectnessScorer.d.ts.map +1 -0
  32. package/dist/scorers/builtIn/AnswerRelevancyScorer.d.ts.map +1 -0
  33. package/dist/scorers/builtIn/BuiltInScorersFactory.d.ts.map +1 -0
  34. package/dist/scorers/builtIn/FaithfulnessScorer.d.ts.map +1 -0
  35. package/dist/scorers/builtIn/index.d.ts.map +1 -0
  36. package/dist/{v1/scorers → scorers}/customScorer/CustomScorer.d.ts +1 -1
  37. package/dist/scorers/customScorer/CustomScorer.d.ts.map +1 -0
  38. package/dist/scorers/customScorer/CustomScorerFactory.d.ts.map +1 -0
  39. package/dist/scorers/customScorer/index.d.ts.map +1 -0
  40. package/dist/scorers/index.d.ts +8 -4
  41. package/dist/scorers/index.d.ts.map +1 -1
  42. package/dist/{v1/scorers → scorers}/promptScorer/PromptScorer.d.ts +1 -1
  43. package/dist/scorers/promptScorer/PromptScorer.d.ts.map +1 -0
  44. package/dist/{v1/scorers → scorers}/promptScorer/PromptScorerFactory.d.ts +1 -1
  45. package/dist/scorers/promptScorer/PromptScorerFactory.d.ts.map +1 -0
  46. package/dist/scorers/promptScorer/index.d.ts.map +1 -0
  47. package/dist/{v1/tracer → tracer}/BaseTracer.d.ts +1 -1
  48. package/dist/tracer/BaseTracer.d.ts.map +1 -0
  49. package/dist/tracer/BrowserTracer.d.ts +21 -9
  50. package/dist/tracer/BrowserTracer.d.ts.map +1 -1
  51. package/dist/{v1/tracer → tracer}/BrowserTracerFactory.d.ts +1 -1
  52. package/dist/tracer/BrowserTracerFactory.d.ts.map +1 -0
  53. package/dist/tracer/NodeTracer.d.ts +24 -10
  54. package/dist/tracer/NodeTracer.d.ts.map +1 -1
  55. package/dist/{v1/tracer → tracer}/NodeTracerFactory.d.ts +1 -1
  56. package/dist/tracer/NodeTracerFactory.d.ts.map +1 -0
  57. package/dist/tracer/exporters/JudgmentSpanExporter.d.ts +4 -77
  58. package/dist/tracer/exporters/JudgmentSpanExporter.d.ts.map +1 -1
  59. package/dist/tracer/exporters/NoOpSpanExporter.d.ts +4 -8
  60. package/dist/tracer/exporters/NoOpSpanExporter.d.ts.map +1 -1
  61. package/dist/tracer/index.d.ts +8 -4
  62. package/dist/tracer/index.d.ts.map +1 -1
  63. package/package.json +1 -6
  64. package/dist/constants.d.ts +0 -2
  65. package/dist/constants.d.ts.map +0 -1
  66. package/dist/data/evaluation-run.d.ts +0 -57
  67. package/dist/data/evaluation-run.d.ts.map +0 -1
  68. package/dist/data/example-params.d.ts +0 -13
  69. package/dist/data/example-params.d.ts.map +0 -1
  70. package/dist/data/example.d.ts +0 -12
  71. package/dist/data/example.d.ts.map +0 -1
  72. package/dist/judgment-client.d.ts +0 -19
  73. package/dist/judgment-client.d.ts.map +0 -1
  74. package/dist/scorers/adapters.d.ts +0 -7
  75. package/dist/scorers/adapters.d.ts.map +0 -1
  76. package/dist/scorers/api_scorers/answer-correctness-scorer.d.ts +0 -6
  77. package/dist/scorers/api_scorers/answer-correctness-scorer.d.ts.map +0 -1
  78. package/dist/scorers/api_scorers/answer-relevancy-scorer.d.ts +0 -6
  79. package/dist/scorers/api_scorers/answer-relevancy-scorer.d.ts.map +0 -1
  80. package/dist/scorers/api_scorers/faithfulness-scorer.d.ts +0 -6
  81. package/dist/scorers/api_scorers/faithfulness-scorer.d.ts.map +0 -1
  82. package/dist/scorers/api_scorers/index.d.ts +0 -6
  83. package/dist/scorers/api_scorers/index.d.ts.map +0 -1
  84. package/dist/scorers/api_scorers/instruction-adherence-scorer.d.ts +0 -6
  85. package/dist/scorers/api_scorers/instruction-adherence-scorer.d.ts.map +0 -1
  86. package/dist/scorers/api_scorers/prompt_scorer/base-prompt-scorer.d.ts +0 -21
  87. package/dist/scorers/api_scorers/prompt_scorer/base-prompt-scorer.d.ts.map +0 -1
  88. package/dist/scorers/api_scorers/prompt_scorer/index.d.ts +0 -5
  89. package/dist/scorers/api_scorers/prompt_scorer/index.d.ts.map +0 -1
  90. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer-utils.d.ts +0 -6
  91. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer-utils.d.ts.map +0 -1
  92. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer.d.ts +0 -10
  93. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer.d.ts.map +0 -1
  94. package/dist/scorers/api_scorers/prompt_scorer/trace-prompt-scorer.d.ts +0 -8
  95. package/dist/scorers/api_scorers/prompt_scorer/trace-prompt-scorer.d.ts.map +0 -1
  96. package/dist/scorers/example-scorer.d.ts +0 -13
  97. package/dist/scorers/example-scorer.d.ts.map +0 -1
  98. package/dist/scorers/local-scorer.d.ts +0 -22
  99. package/dist/scorers/local-scorer.d.ts.map +0 -1
  100. package/dist/scorers/remote-scorer.d.ts +0 -20
  101. package/dist/scorers/remote-scorer.d.ts.map +0 -1
  102. package/dist/tracer/OpenTelemetryKeys.d.ts +0 -39
  103. package/dist/tracer/OpenTelemetryKeys.d.ts.map +0 -1
  104. package/dist/tracer/Tracer.d.ts +0 -53
  105. package/dist/tracer/Tracer.d.ts.map +0 -1
  106. package/dist/tracer/TracerConfiguration.d.ts +0 -96
  107. package/dist/tracer/TracerConfiguration.d.ts.map +0 -1
  108. package/dist/v1/Judgeval.d.ts.map +0 -1
  109. package/dist/v1/data/APIScorerType.d.ts.map +0 -1
  110. package/dist/v1/data/Example.d.ts.map +0 -1
  111. package/dist/v1/data/ScorerData.d.ts.map +0 -1
  112. package/dist/v1/data/ScoringResult.d.ts.map +0 -1
  113. package/dist/v1/data/index.d.ts +0 -5
  114. package/dist/v1/data/index.d.ts.map +0 -1
  115. package/dist/v1/evaluation/Evaluation.d.ts.map +0 -1
  116. package/dist/v1/evaluation/EvaluationFactory.d.ts.map +0 -1
  117. package/dist/v1/evaluation/index.d.ts.map +0 -1
  118. package/dist/v1/index.cjs +0 -5
  119. package/dist/v1/index.cjs.map +0 -39
  120. package/dist/v1/index.d.ts +0 -6
  121. package/dist/v1/index.d.ts.map +0 -1
  122. package/dist/v1/index.mjs +0 -5
  123. package/dist/v1/index.mjs.map +0 -39
  124. package/dist/v1/scorers/APIScorer.d.ts.map +0 -1
  125. package/dist/v1/scorers/BaseScorer.d.ts.map +0 -1
  126. package/dist/v1/scorers/ScorersFactory.d.ts.map +0 -1
  127. package/dist/v1/scorers/builtIn/AnswerCorrectnessScorer.d.ts.map +0 -1
  128. package/dist/v1/scorers/builtIn/AnswerRelevancyScorer.d.ts.map +0 -1
  129. package/dist/v1/scorers/builtIn/BuiltInScorersFactory.d.ts.map +0 -1
  130. package/dist/v1/scorers/builtIn/FaithfulnessScorer.d.ts.map +0 -1
  131. package/dist/v1/scorers/builtIn/index.d.ts.map +0 -1
  132. package/dist/v1/scorers/customScorer/CustomScorer.d.ts.map +0 -1
  133. package/dist/v1/scorers/customScorer/CustomScorerFactory.d.ts.map +0 -1
  134. package/dist/v1/scorers/customScorer/index.d.ts.map +0 -1
  135. package/dist/v1/scorers/index.d.ts +0 -9
  136. package/dist/v1/scorers/index.d.ts.map +0 -1
  137. package/dist/v1/scorers/promptScorer/PromptScorer.d.ts.map +0 -1
  138. package/dist/v1/scorers/promptScorer/PromptScorerFactory.d.ts.map +0 -1
  139. package/dist/v1/scorers/promptScorer/index.d.ts.map +0 -1
  140. package/dist/v1/tracer/BaseTracer.d.ts.map +0 -1
  141. package/dist/v1/tracer/BrowserTracer.d.ts +0 -23
  142. package/dist/v1/tracer/BrowserTracer.d.ts.map +0 -1
  143. package/dist/v1/tracer/BrowserTracerFactory.d.ts.map +0 -1
  144. package/dist/v1/tracer/NodeTracer.d.ts +0 -27
  145. package/dist/v1/tracer/NodeTracer.d.ts.map +0 -1
  146. package/dist/v1/tracer/NodeTracerFactory.d.ts.map +0 -1
  147. package/dist/v1/tracer/exporters/JudgmentSpanExporter.d.ts +0 -11
  148. package/dist/v1/tracer/exporters/JudgmentSpanExporter.d.ts.map +0 -1
  149. package/dist/v1/tracer/exporters/NoOpSpanExporter.d.ts +0 -8
  150. package/dist/v1/tracer/exporters/NoOpSpanExporter.d.ts.map +0 -1
  151. package/dist/v1/tracer/exporters/index.d.ts +0 -3
  152. package/dist/v1/tracer/exporters/index.d.ts.map +0 -1
  153. package/dist/v1/tracer/index.d.ts +0 -9
  154. package/dist/v1/tracer/index.d.ts.map +0 -1
  155. /package/dist/{v1/Judgeval.d.ts → Judgeval.d.ts} +0 -0
  156. /package/dist/{v1/evaluation → evaluation}/index.d.ts +0 -0
  157. /package/dist/{v1/scorers → scorers}/builtIn/AnswerCorrectnessScorer.d.ts +0 -0
  158. /package/dist/{v1/scorers → scorers}/builtIn/AnswerRelevancyScorer.d.ts +0 -0
  159. /package/dist/{v1/scorers → scorers}/builtIn/BuiltInScorersFactory.d.ts +0 -0
  160. /package/dist/{v1/scorers → scorers}/builtIn/FaithfulnessScorer.d.ts +0 -0
  161. /package/dist/{v1/scorers → scorers}/builtIn/index.d.ts +0 -0
  162. /package/dist/{v1/scorers → scorers}/customScorer/CustomScorerFactory.d.ts +0 -0
  163. /package/dist/{v1/scorers → scorers}/customScorer/index.d.ts +0 -0
  164. /package/dist/{v1/scorers → scorers}/promptScorer/index.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Judgeval.d.ts","sourceRoot":"","sources":["../src/Judgeval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IAEnD,SAAS,aAAa,MAAM,GAAE,cAAmB;IAkBjD,MAAM,CAAC,MAAM,CAAC,MAAM,GAAE,cAAmB,GAAG,QAAQ;IAIpD,IAAI,UAAU,IAAI,iBAAiB,CAElC;IAED,IAAI,aAAa,IAAI,oBAAoB,CAExC;IAED,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,IAAI,UAAU,IAAI,iBAAiB,CAElC;CACF"}
@@ -4,9 +4,6 @@ export declare const APIScorerType: {
4
4
  readonly FAITHFULNESS: "Faithfulness";
5
5
  readonly ANSWER_RELEVANCY: "Answer Relevancy";
6
6
  readonly ANSWER_CORRECTNESS: "Answer Correctness";
7
- readonly INSTRUCTION_ADHERENCE: "Instruction Adherence";
8
- readonly EXECUTION_ORDER: "Execution Order";
9
- readonly DERAILMENT: "Derailment";
10
7
  readonly CUSTOM: "Custom";
11
8
  };
12
9
  export type APIScorerType = (typeof APIScorerType)[keyof typeof APIScorerType];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"APIScorerType.d.ts","sourceRoot":"","sources":["../../src/data/APIScorerType.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Example as APIExample } from "../../internal/api/models";
1
+ import type { Example as APIExample } from "../internal/api/models";
2
2
  export interface ExampleConfig {
3
3
  name?: string;
4
4
  properties?: Record<string, unknown>;
@@ -11,7 +11,7 @@ export declare class Example {
11
11
  name?: string | null;
12
12
  private properties;
13
13
  private constructor();
14
- static create(config?: ExampleConfig): Example;
14
+ static create(data: Record<string, unknown>): Example;
15
15
  setProperty(key: string, value: unknown): this;
16
16
  getProperty(key: string): unknown;
17
17
  getProperties(): Record<string, unknown>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Example.d.ts","sourceRoot":"","sources":["../../src/data/Example.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,OAAO;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,UAAU,CAA0B;IAE5C,OAAO;IAOP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAMrD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAK9C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIxC,OAAO,IAAI,UAAU;CAQtB"}
@@ -1,4 +1,4 @@
1
- import type { ScorerData as APIScorerData } from "../../internal/api/models";
1
+ import type { ScorerData as APIScorerData } from "../internal/api/models";
2
2
  export interface ScorerDataConfig {
3
3
  name?: string;
4
4
  threshold?: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScorerData.d.ts","sourceRoot":"","sources":["../../src/data/ScorerData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,UAAU;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEP,MAAM,GAAE,gBAAqB;IAazC,OAAO,IAAI,aAAa;CAkCzB"}
@@ -1,4 +1,4 @@
1
- import type { OtelTraceSpan, ScoringResult as APIScoringResult } from "../../internal/api/models";
1
+ import type { ScoringResult as APIScoringResult, OtelTraceSpan } from "../internal/api/models";
2
2
  import { Example } from "./Example";
3
3
  import { ScorerData } from "./ScorerData";
4
4
  export interface ScoringResultConfig {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScoringResult.d.ts","sourceRoot":"","sources":["../../src/data/ScoringResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,IAAI,gBAAgB,EACjC,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEnB,MAAM,GAAE,mBAAwB;IAU5C,OAAO,IAAI,gBAAgB;CA4B5B"}
@@ -1,4 +1,5 @@
1
- export * from "./evaluation-run";
2
- export * from "./example";
3
- export * from "./example-params";
1
+ export * from "./APIScorerType";
2
+ export { Example, type ExampleConfig } from "./Example";
3
+ export { ScorerData, type ScorerDataConfig } from "./ScorerData";
4
+ export { ScoringResult, type ScoringResultConfig } from "./ScoringResult";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { JudgmentApiClient } from "../../internal/api";
1
+ import { JudgmentApiClient } from "../internal/api";
2
2
  export interface EvaluationConfig {
3
3
  client: JudgmentApiClient;
4
4
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Evaluation.d.ts","sourceRoot":"","sources":["../../src/evaluation/Evaluation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,MAAM,EAAE,gBAAgB;CAGrC"}
@@ -1,4 +1,4 @@
1
- import { JudgmentApiClient } from "../../internal/api";
1
+ import { JudgmentApiClient } from "../internal/api";
2
2
  import { Evaluation, type EvaluationConfig } from "./Evaluation";
3
3
  export declare class EvaluationFactory {
4
4
  private readonly client;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvaluationFactory.d.ts","sourceRoot":"","sources":["../../src/evaluation/EvaluationFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEjE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,MAAM,EAAE,iBAAiB;IAIrC,MAAM,CAAC,MAAM,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAAG,UAAU;CAMlE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/evaluation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- var{defineProperty:ut,getOwnPropertyNames:$t,getOwnPropertyDescriptor:kt}=Object,qt=Object.prototype.hasOwnProperty;var Nt=new WeakMap,At=(t)=>{var e=Nt.get(t),r;if(e)return e;if(e=ut({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")$t(t).map((i)=>!qt.call(e,i)&&ut(e,i,{get:()=>t[i],enumerable:!(r=kt(t,i))||r.enumerable}));return Nt.set(t,e),e};var wt=(t,e)=>{for(var r in e)ut(t,r,{get:e[r],enumerable:!0,configurable:!0,set:(i)=>e[r]=()=>i})};var _t={};wt(_t,{ScoringResult:()=>st,ScorersFactory:()=>Y,ScorerData:()=>ot,PromptScorerFactory:()=>N,PromptScorer:()=>O,NodeTracerFactory:()=>V,NodeTracer:()=>U,NoOpSpanExporter:()=>I,JudgmentSpanExporter:()=>D,Judgeval:()=>it,FaithfulnessScorer:()=>C,Example:()=>G,EvaluationFactory:()=>q,Evaluation:()=>k,CustomScorerFactory:()=>H,CustomScorer:()=>L,BuiltInScorersFactory:()=>b,BrowserTracerFactory:()=>z,BrowserTracer:()=>v,BaseTracer:()=>P,BaseScorer:()=>w,AnswerRelevancyScorer:()=>y,AnswerCorrectnessScorer:()=>x,APIScorer:()=>_});module.exports=At(_t);function p(t,e){let r=process.env[t];if(!r)return e??null;return r}var d=p("JUDGMENT_API_KEY"),m=p("JUDGMENT_ORG_ID"),S=p("JUDGMENT_API_URL","https://api.judgmentlabs.ai"),Lt=p("JUDGMENT_LLM_PROXY_URL","https://api.judgmentlabs.ai/llm/proxy/v1"),$=p("JUDGMENT_DEFAULT_GPT_MODEL","gpt-4.1"),Ht=p("JUDGMENT_ENABLE_MONITORING","true"),Yt=p("JUDGMENT_ENABLE_EVALUATIONS","true"),zt=p("JUDGMENT_NO_COLOR"),ht=p("JUDGMENT_LOG_LEVEL","warn"),Vt=p("OPENAI_API_KEY"),Bt=p("ANTHROPIC_API_KEY"),Wt=p("GOOGLE_API_KEY"),Xt=p("GEMINI_API_KEY");class g{baseUrl;apiKey;organizationId;constructor(t,e,r){this.baseUrl=t,this.apiKey=e,this.organizationId=r}getBaseUrl(){return this.baseUrl}getApiKey(){return this.apiKey}getOrganizationId(){return this.organizationId}buildUrl(t){return this.baseUrl+t}buildHeaders(){if(!this.apiKey||!this.organizationId)throw Error("API key and organization ID cannot be null");return{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`,"X-Organization-Id":this.organizationId}}async addToRunEvalQueueExamples(t){let e=this.buildUrl("/add_to_run_eval_queue/examples"),r=await fetch(e,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(t)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return}async addToRunEvalQueueTraces(t){let e=this.buildUrl("/add_to_run_eval_queue/traces"),r=await fetch(e,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(t)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return}async logEvalResults(t){let e=this.buildUrl("/log_eval_results/"),r=await fetch(e,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(t)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async fetchExperimentRun(t){let e=this.buildUrl("/fetch_experiment_run/"),r=await fetch(e,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(t)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async scorerExists(t){let e=this.buildUrl("/scorer_exists/"),r=await fetch(e,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(t)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async saveScorer(t){let e=this.buildUrl("/save_scorer/"),r=await fetch(e,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(t)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async fetchScorers(t){let e=this.buildUrl("/fetch_scorers/"),r=await fetch(e,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(t)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async projectsResolve(t){let e=this.buildUrl("/projects/resolve/"),r=await fetch(e,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(t)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}}class k{client;constructor(t){if(!t.client)throw Error("client is required");this.client=t.client}}class q{client;constructor(t){this.client=t}create(t={}){return new k({...t,client:this.client})}}var T={PROMPT_SCORER:"Prompt Scorer",TRACE_PROMPT_SCORER:"Trace Prompt Scorer",FAITHFULNESS:"Faithfulness",ANSWER_RELEVANCY:"Answer Relevancy",ANSWER_CORRECTNESS:"Answer Correctness",INSTRUCTION_ADHERENCE:"Instruction Adherence",EXECUTION_ORDER:"Execution Order",DERAILMENT:"Derailment",CUSTOM:"Custom"};class w{}class _ extends w{scoreType;requiredParams;_threshold;_name;_strictMode;_model;additionalProperties;constructor(t){super();this.scoreType=t,this._name=t,this._threshold=0.5,this._strictMode=!1,this.requiredParams=[],this.additionalProperties={}}getName(){return this._name}getScoreType(){return this.scoreType}getThreshold(){return this._threshold}getStrictMode(){return this._strictMode}getModel(){return this._model}getRequiredParams(){return[...this.requiredParams]}setThreshold(t){if(t<0||t>1)throw Error(`Threshold must be between 0 and 1, got: ${t}`);if(this._threshold=t,this._strictMode)this._threshold=1}setName(t){this._name=t}setStrictMode(t){if(this._strictMode=t,t)this._threshold=1}setModel(t){this._model=t}setRequiredParams(t){this.requiredParams=[...t]}setAdditionalProperty(t,e){this.additionalProperties[t]=e}getAdditionalProperties(){return{...this.additionalProperties}}getScorerConfig(){let t={...this.additionalProperties};return{score_type:this.scoreType,threshold:this._threshold,name:this._name,strict_mode:this._strictMode,required_params:this.requiredParams,kwargs:t}}static builder(t){return new Rt(this,t)}}class Rt{scorer;constructor(t,e){this.scorer=new t(e)}threshold(t){return this.scorer.setThreshold(t),this}name(t){return this.scorer.setName(t),this}strictMode(t){return this.scorer.setStrictMode(t),this}requiredParams(t){return this.scorer.setRequiredParams(t),this}model(t){return this.scorer.setModel(t),this}additionalProperty(t,e){return this.scorer.setAdditionalProperty(t,e),this}build(){return this.scorer}}class x extends _{constructor(t={}){super(T.ANSWER_CORRECTNESS);if(this.setRequiredParams(["input","actual_output","expected_output"]),t.threshold!==void 0)this.setThreshold(t.threshold);if(t.name)this.setName(t.name);if(t.strictMode!==void 0)this.setStrictMode(t.strictMode);if(t.model)this.setModel(t.model)}}class y extends _{constructor(t={}){super(T.ANSWER_RELEVANCY);if(this.setRequiredParams(["input","actual_output"]),t.threshold!==void 0)this.setThreshold(t.threshold);if(t.name)this.setName(t.name);if(t.strictMode!==void 0)this.setStrictMode(t.strictMode);if(t.model)this.setModel(t.model)}}class C extends _{constructor(t={}){super(T.FAITHFULNESS);if(this.setRequiredParams(["context","actual_output"]),t.threshold!==void 0)this.setThreshold(t.threshold);if(t.name)this.setName(t.name);if(t.strictMode!==void 0)this.setStrictMode(t.strictMode);if(t.model)this.setModel(t.model)}}class b{answerCorrectness(t={}){return new x(t)}answerRelevancy(t={}){return new y(t)}faithfulness(t={}){return new C(t)}}class L extends _{_className;_serverHosted;constructor(t){super(T.CUSTOM);if(this.setName(t.name),t.className)this._className=t.className,this.setAdditionalProperty("class_name",t.className);this._serverHosted=t.serverHosted??!0,this.setAdditionalProperty("server_hosted",this._serverHosted)}getClassName(){return this._className}isServerHosted(){return this._serverHosted}getScorerConfig(){throw Error("CustomScorer does not use ScorerConfig")}}class H{get(t,e){return new L({name:t,className:e??t,serverHosted:!0})}}class O extends w{_name;_prompt;_threshold;_options;_model;_description;isTrace;constructor(t){super();this._name=t.name,this._prompt=t.prompt,this._threshold=t.threshold,this._options={...t.options},this._model=t.model,this._description=t.description,this.isTrace=t.isTrace??!1}getName(){return this._name}getPrompt(){return this._prompt}getThreshold(){return this._threshold}getOptions(){return this._options?{...this._options}:void 0}getModel(){return this._model}getDescription(){return this._description}setThreshold(t){this._threshold=t}setPrompt(t){this._prompt=t}setModel(t){this._model=t}setOptions(t){this._options={...t}}setDescription(t){this._description=t}appendToPrompt(t){this._prompt=this._prompt+t}getScorerConfig(){let t=this.isTrace?T.TRACE_PROMPT_SCORER:T.PROMPT_SCORER,e={prompt:this._prompt};if(this._options)e.options=this._options;if(this._model)e.model=this._model;if(this._description)e.description=this._description;return{score_type:t,threshold:this._threshold,name:this._name,kwargs:e}}}class N{client;isTrace;static cache=new Map;constructor(t,e){this.client=t,this.isTrace=e}async get(t){let e=this.getCacheKey(t),r=N.cache.get(e);if(r)return this.createFromModel(r,t);try{let i={names:[t]},o=await this.client.fetchScorers(i);if(o.scorers.length===0)throw Error(`Failed to fetch prompt scorer '${t}': not found`);let l=o.scorers[0],n=l.is_trace===!0;if(n!==this.isTrace){let a=this.isTrace?"TracePromptScorer":"PromptScorer";throw Error(`Scorer with name ${t} is a ${n?"TracePromptScorer":"PromptScorer"}, not a ${a}`)}return N.cache.set(e,l),this.createFromModel(l,t)}catch(i){if(i instanceof Error)throw i;throw Error(`Failed to fetch prompt scorer '${t}': ${i}`)}}create(t){if(!t.name)throw Error("Name is required");if(!t.prompt)throw Error("Prompt is required");return new O({...t,isTrace:this.isTrace})}createFromModel(t,e){let r;if(t.options&&typeof t.options==="object"){r={};for(let[i,o]of Object.entries(t.options))if(typeof o==="number")r[i]=o}return new O({name:e,prompt:t.prompt,threshold:t.threshold,options:r??{},model:t.model??$,description:t.description??"",isTrace:this.isTrace})}getCacheKey(t){return`${t}:${this.client.getApiKey()}:${this.client.getOrganizationId()}`}}class Y{client;constructor(t){this.client=t}get promptScorer(){return new N(this.client,!1)}get tracePromptScorer(){return new N(this.client,!0)}get customScorer(){return new H}get builtIn(){return new b}}var yt=require("@opentelemetry/resources"),rt=require("@opentelemetry/sdk-trace-web");class s{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 currentLevel=s.Level.WARNING;static useColor=!0;static initialize(){if(!s.initialized){let t=process.env.JUDGMENT_NO_COLOR;s.useColor=!t&&process.stdout.isTTY;let e=ht.toLowerCase();if(e){let r={debug:s.Level.DEBUG,info:s.Level.INFO,warning:s.Level.WARNING,warn:s.Level.WARNING,error:s.Level.ERROR,critical:s.Level.CRITICAL};s.currentLevel=r[e]??s.Level.WARNING}s.initialized=!0}}static setLevel(t){s.currentLevel=t}static setUseColor(t){s.useColor=t}static log(t,e){if(s.initialize(),t<s.currentLevel)return;let r=new Date().toISOString().replace("T"," ").substring(0,19),i=Object.keys(s.Level).find((n)=>s.Level[n]===t)??"UNKNOWN",o=`${r} - judgeval - ${i} - ${e}`;if(s.useColor)o=`${t===s.Level.DEBUG||t===s.Level.INFO?s.GRAY:t===s.Level.WARNING?s.YELLOW:s.RED}${o}${s.RESET}`;(t>=s.Level.ERROR?process.stderr:process.stdout).write(o+`
2
- `)}static debug(t){s.log(s.Level.DEBUG,t)}static info(t){s.log(s.Level.INFO,t)}static warning(t){s.log(s.Level.WARNING,t)}static warn(t){s.log(s.Level.WARNING,t)}static error(t){s.log(s.Level.ERROR,t)}static critical(t){s.log(s.Level.CRITICAL,t)}}var Mt="0.6.0";var R=Mt;var f=require("@opentelemetry/api");var xt=require("@opentelemetry/exporter-trace-otlp-http");var Zt=/^([^(]+?)=>/,Kt=/^[^(]*\(\s*([^)]*)\)/m,te=/,/,ee=/^\s*(_?)(\S+?)\1\s*$/,re=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function ie(t){return Function.prototype.toString.call(t)}function oe(t){let e=ie(t).replace(re,"");return e.match(Zt)||e.match(Kt)}function pt(t){let e=oe(t);if(!e||!e[1])return[];return e[1].split(te).map((r)=>{return r.replace(ee,(o,l,n)=>n).trim()}).filter((r)=>r.length>0)}class D{delegate;constructor(t,e,r,i){this.delegate=new xt.OTLPTraceExporter({url:t,headers:{Authorization:`Bearer ${e}`,"X-Organization-Id":r,"X-Project-Id":i}})}export(t,e){s.info(`JudgmentSpanExporter: exporting ${t.length} spans`),this.delegate.export(t,e)}shutdown(){return this.delegate.shutdown()}forceFlush(){return this.delegate.forceFlush?.()??Promise.resolve()}}class I{export(t,e){e({code:0})}shutdown(){return Promise.resolve()}}class P{static TRACER_NAME="judgeval";projectName;enableEvaluation;apiClient;serializer;jsonEncoder;projectId;constructor(t,e,r,i,o=JSON.stringify){this.projectName=t,this.enableEvaluation=e,this.apiClient=r,this.serializer=i,this.jsonEncoder=o,this.projectId=null}async resolveAndSetProjectId(){try{this.projectId=await this.resolveProjectId(this.projectName),s.info(`Successfully resolved project ID: ${this.projectId}`)}catch{s.error(`Failed to resolve project ${this.projectName}, please create it first at https://app.judgmentlabs.ai/org/${this.apiClient.getOrganizationId()}/projects. Skipping Judgment export.`),this.projectId=null}}getSpanExporter(){if(this.projectId!==null)return this.createJudgmentSpanExporter(this.projectId);return s.error("Project not resolved; cannot create exporter, returning NoOpSpanExporter"),new I}getTracer(){return f.trace.getTracer(P.TRACER_NAME)}setSpanKind(t){if(!t)return;let e=f.trace.getActiveSpan();if(e)e.setAttribute("judgment.span_kind",t)}setAttribute(t,e){if(!this.isValidKey(t))return;if(e===null||e===void 0)return;let r=f.trace.getActiveSpan();if(r){let i=typeof e==="string"||typeof e==="number"||typeof e==="boolean"?e:this.serializer(e);r.setAttribute(t,i)}}setAttributes(t){for(let[e,r]of Object.entries(t))this.setAttribute(e,r)}setLLMSpan(){this.setSpanKind("llm")}setToolSpan(){this.setSpanKind("tool")}setGeneralSpan(){this.setSpanKind("span")}setInput(t){this.setAttribute("judgment.input",t)}setOutput(t){this.setAttribute("judgment.output",t)}asyncEvaluate(t,e){this.safeExecute("evaluate scorer",()=>{if(!this.enableEvaluation)return;let r=this.getSampledSpanContext();if(!r)return;let{traceId:i,spanId:o}=r;this.logEvaluationInfo("asyncEvaluate",i,o,t.getName());let l=this.createEvaluationRun(t,e,i,o);this.enqueueEvaluation(l).catch((n)=>{s.error(`Failed to enqueue evaluation run: ${n}`)})})}asyncTraceEvaluate(t){this.safeExecute("evaluate trace scorer",()=>{if(!this.enableEvaluation)return;let e=this.getSampledSpan();if(!e)return;let r=e.spanContext(),i=r.traceId,o=r.spanId;this.logEvaluationInfo("asyncTraceEvaluate",i,o,t.getName());let l=this.createTraceEvaluationRun(t,i,o);try{let n=JSON.stringify(l);e.setAttribute("judgment.pending_trace_eval",n)}catch(n){s.error(`Failed to serialize trace evaluation: ${n}`)}})}span(t,e){return this.getTracer().startActiveSpan(t,(i)=>{try{return e()}catch(o){throw i.setStatus({code:f.SpanStatusCode.ERROR}),i.recordException(o),o}finally{i.end()}})}static startSpan(t){return f.trace.getTracer(P.TRACER_NAME).startSpan(t)}observe(t,e="span",r){let i=this.getTracer(),o=r??t.name;return(...l)=>{return i.startActiveSpan(o,(n)=>{if(e)n.setAttribute("judgment.span_kind",e);try{let a=this.formatInputs(t,l);n.setAttribute("judgment.input",this.serializer(a));let c=t(...l);if(c instanceof Promise)return c.then((A)=>{return n.setAttribute("judgment.output",this.serializer(A)),A}).catch((A)=>{throw n.recordException(A),n.setStatus({code:f.SpanStatusCode.ERROR,message:String(A)}),A}).finally(()=>{n.end()});return n.setAttribute("judgment.output",this.serializer(c)),n.end(),c}catch(a){throw n.recordException(a),n.setStatus({code:f.SpanStatusCode.ERROR,message:String(a)}),n.end(),a}})}}async resolveProjectId(t){try{s.info(`Resolving project ID for project: ${t}`);let e={project_name:t},i=(await this.apiClient.projectsResolve(e)).project_id;if(!i)throw Error(`Project ID not found for project: ${t}`);return s.info(`Resolved project ID: ${i}`),i}catch(e){throw Error(`Failed to resolve project ID: ${e instanceof Error?e.message:String(e)}`)}}buildEndpoint(t){return t.endsWith("/")?t+"otel/v1/traces":t+"/otel/v1/traces"}createJudgmentSpanExporter(t){return new D(this.buildEndpoint(this.apiClient.getBaseUrl()),this.apiClient.getApiKey(),this.apiClient.getOrganizationId(),t)}generateRunId(t,e){return t+(e??Date.now().toString())}createEvaluationRun(t,e,r,i){let o=this.generateRunId("async_evaluate_",i);return{project_name:this.projectName,eval_name:o,trace_id:r,trace_span_id:i,examples:[e.toModel()],judgment_scorers:[t.getScorerConfig()],custom_scorers:[]}}createTraceEvaluationRun(t,e,r){let i=this.generateRunId("async_trace_evaluate_",r);return{project_name:this.projectName,eval_name:i,trace_and_span_ids:[[e,r]],judgment_scorers:[t.getScorerConfig()],custom_scorers:[],is_offline:!1}}async enqueueEvaluation(t){try{await this.apiClient.addToRunEvalQueueExamples(t)}catch(e){s.error(`Failed to enqueue evaluation run: ${e}`)}}getSampledSpanContext(){let t=f.trace.getActiveSpan();if(!t)return null;let e=t.spanContext();if(!e.traceFlags||!(e.traceFlags&1))return null;return e}getSampledSpan(){let t=f.trace.getActiveSpan();if(!t)return null;let e=t.spanContext();if(!e.traceFlags||!(e.traceFlags&1))return null;return t}logEvaluationInfo(t,e,r,i){s.info(`${t}: project=${this.projectName}, traceId=${e}, spanId=${r}, scorer=${i}`)}safeExecute(t,e){try{e()}catch(r){s.error(`Failed to ${t}: ${r}`)}}isValidKey(t){return t.length>0}formatInputs(t,e){try{let r=t.toString(),i=/\(([^)]*)\)/.exec(r),o=i?i[1].split(",").map((n)=>n.trim().split("=")[0].trim()).filter((n)=>n.length>0):[],l={};return o.forEach((n,a)=>{if(a<e.length)l[n]=e[a]}),l}catch{return{}}}}class v extends P{webTracerProvider=null;resourceAttributes;constructor(t,e,r,i,o){super(t,e,r,i);this.resourceAttributes=o}static async create(t,e){let r=new v(t.projectName,t.enableEvaluation,e,t.serializer,t.resourceAttributes);if(await r.resolveAndSetProjectId(),t.initialize)await r.initialize();return r}async initialize(){if(this.webTracerProvider!==null){s.warn("BrowserTracer already initialized");return}try{let t={"service.name":this.projectName,"telemetry.sdk.version":R,...this.resourceAttributes},e=this.getSpanExporter();this.webTracerProvider=new rt.WebTracerProvider({resource:yt.resourceFromAttributes(t),spanProcessors:[new rt.BatchSpanProcessor(e)]}),this.webTracerProvider.register(),s.info("BrowserTracer initialized successfully")}catch(t){throw Error(`Failed to initialize BrowserTracer: ${t instanceof Error?t.message:String(t)}`)}}async shutdown(){if(!this.webTracerProvider){s.warn("BrowserTracer not initialized, skipping shutdown");return}try{await this.webTracerProvider.shutdown(),this.webTracerProvider=null,s.info("BrowserTracer shut down successfully")}catch(t){s.error(`Failed to shutdown BrowserTracer: ${t}`)}}}class z{client;constructor(t){this.client=t}async create(t){if(!t.projectName)throw Error("Project name is required");return v.create({projectName:t.projectName,enableEvaluation:t.enableEvaluation??!0,enableMonitoring:t.enableMonitoring??!1,serializer:t.serializer??JSON.stringify,resourceAttributes:t.resourceAttributes??{},initialize:t.initialize??!0},this.client)}}var Ct=require("@opentelemetry/resources"),bt=require("@opentelemetry/sdk-node");class U extends P{nodeSDK=null;resourceAttributes;instrumentations;constructor(t,e,r,i,o,l){super(t,e,r,i);this.resourceAttributes=o,this.instrumentations=l}static async create(t,e){let r=new U(t.projectName,t.enableEvaluation,e,t.serializer,t.resourceAttributes,t.instrumentations);if(await r.resolveAndSetProjectId(),t.initialize)await r.initialize();return r}async initialize(){if(this.nodeSDK!==null){s.warn("NodeTracer already initialized");return}try{let t={"service.name":this.projectName,"telemetry.sdk.version":R,...this.resourceAttributes},e=this.getSpanExporter();this.nodeSDK=new bt.NodeSDK({resource:Ct.resourceFromAttributes(t),traceExporter:e,instrumentations:this.instrumentations}),this.nodeSDK.start(),s.info("NodeTracer initialized successfully")}catch(t){throw Error(`Failed to initialize NodeTracer: ${t instanceof Error?t.message:String(t)}`)}}async shutdown(){if(!this.nodeSDK){s.warn("NodeTracer not initialized, skipping shutdown");return}try{await this.nodeSDK.shutdown(),this.nodeSDK=null,s.info("NodeTracer shut down successfully")}catch(t){s.error(`Failed to shutdown NodeTracer: ${t}`)}}}class V{client;constructor(t){this.client=t}async create(t){if(!t.projectName)throw Error("Project name is required");return U.create({projectName:t.projectName,enableEvaluation:t.enableEvaluation??!0,enableMonitoring:t.enableMonitoring??!1,serializer:t.serializer??JSON.stringify,resourceAttributes:t.resourceAttributes??{},instrumentations:t.instrumentations??[],initialize:t.initialize??!0},this.client)}}class it{internalClient;constructor(t={}){let e=t.apiKey??d,r=t.organizationId??m,i=t.apiUrl??S;if(!e)throw Error("API key is required");if(!r)throw Error("Organization ID is required");if(!i)throw Error("API URL is required");this.internalClient=new g(i,e,r)}static create(t={}){return new it(t)}get nodeTracer(){return new V(this.internalClient)}get browserTracer(){return new z(this.internalClient)}get scorers(){return new Y(this.internalClient)}get evaluation(){return new q(this.internalClient)}}var Ot=require("crypto");class G{exampleId;createdAt;name;properties;constructor(t={}){this.exampleId=t.exampleId??Ot.randomUUID(),this.createdAt=t.createdAt??new Date().toISOString(),this.name=t.name??null,this.properties=t.properties??{}}static create(t={}){return new G(t)}setProperty(t,e){return this.properties[t]=e,this}getProperty(t){return this.properties[t]}getProperties(){return{...this.properties}}toModel(){return{example_id:this.exampleId,created_at:this.createdAt,name:this.name??void 0,...this.properties}}}class ot{name;threshold;success;score;reason;strictMode;evaluationModel;error;additionalMetadata;id;constructor(t={}){this.name=t.name??null,this.threshold=t.threshold??null,this.success=t.success??null,this.score=t.score??null,this.reason=t.reason??null,this.strictMode=t.strictMode??null,this.evaluationModel=t.evaluationModel??null,this.error=t.error??null,this.additionalMetadata=t.additionalMetadata??{},this.id=t.id??null}toModel(){let t={name:this.name??"",threshold:this.threshold??0,success:this.success??!1};if(this.score!==void 0&&this.score!==null)t.score=this.score;if(this.reason!==void 0&&this.reason!==null)t.reason=this.reason;if(this.strictMode!==void 0&&this.strictMode!==null)t.strict_mode=this.strictMode;if(this.evaluationModel!==void 0&&this.evaluationModel!==null)t.evaluation_model=this.evaluationModel;if(this.error!==void 0&&this.error!==null)t.error=this.error;if(this.additionalMetadata&&Object.keys(this.additionalMetadata).length>0)t.additional_metadata=this.additionalMetadata;if(this.id!==void 0&&this.id!==null)t.id=this.id;return t}}class st{success;scorersData;name;dataObject;traceId;runDuration;evaluationCost;constructor(t={}){this.success=t.success??null,this.scorersData=t.scorersData??[],this.name=t.name??null,this.dataObject=t.dataObject??null,this.traceId=t.traceId??null,this.runDuration=t.runDuration??null,this.evaluationCost=t.evaluationCost??null}toModel(){let t={success:this.success??!1,scorers_data:(this.scorersData??[]).map((e)=>e.toModel())};if(this.name!==void 0&&this.name!==null)t.name=this.name;if(this.dataObject!==void 0&&this.dataObject!==null)if(this.dataObject instanceof G)t.data_object=this.dataObject.toModel();else t.data_object=this.dataObject;if(this.traceId!==void 0&&this.traceId!==null)t.trace_id=this.traceId;if(this.runDuration!==void 0&&this.runDuration!==null)t.run_duration=this.runDuration;if(this.evaluationCost!==void 0&&this.evaluationCost!==null)t.evaluation_cost=this.evaluationCost;return t}}var le={};wt(le,{v1:()=>_t,parseFunctionArgs:()=>pt,fetchPromptScorer:()=>X,TracerConfigurationBuilder:()=>dt,TracerConfiguration:()=>j,Tracer:()=>E,TracePromptScorer:()=>ct,TraceEvaluationRun:()=>It,RemoteScorer:()=>h,PromptScorer:()=>at,OpenTelemetryKeys:()=>u,OPENAI_API_KEY:()=>Vt,NodeTracer:()=>K,NoOpSpanExporter:()=>et,Logger:()=>s,LocalScorer:()=>B,JudgmentSpanExporter:()=>Q,JudgmentClient:()=>gt,JudgmentAPIError:()=>M,JUDGMENT_ORG_ID:()=>m,JUDGMENT_NO_COLOR:()=>zt,JUDGMENT_LOG_LEVEL:()=>ht,JUDGMENT_LLM_PROXY_URL:()=>Lt,JUDGMENT_ENABLE_MONITORING:()=>Ht,JUDGMENT_ENABLE_EVALUATIONS:()=>Yt,JUDGMENT_DEFAULT_GPT_MODEL:()=>$,JUDGMENT_API_URL:()=>S,JUDGMENT_API_KEY:()=>d,InstructionAdherenceScorer:()=>St,GOOGLE_API_KEY:()=>Wt,GEMINI_API_KEY:()=>Xt,FaithfulnessScorer:()=>ft,ExampleScorer:()=>vt,ExampleParams:()=>W,ExampleEvaluationRun:()=>lt,Example:()=>ne,EvaluationRun:()=>nt,BrowserTracer:()=>Z,BasePromptScorer:()=>J,AnswerRelevancyScorer:()=>Tt,AnswerCorrectnessScorer:()=>Et,ANTHROPIC_API_KEY:()=>Bt});module.exports=At(le);function Dt(t){return{score_type:"Custom",name:t.name,class_name:t.constructor.name,threshold:t.threshold,strict_mode:t.strictMode,model:t.model,score:t.score,score_breakdown:null,reason:t.reason,using_native_model:null,success:t.success,model_client:null,error:t.error,additional_metadata:t.metadata,user:null,server_hosted:!1}}function tt(t){return{score_type:t.scoreType,name:t.name,threshold:t.threshold,model:t.model,strict_mode:t.strictMode,required_params:Array.from(t.requiredParams),kwargs:t.kwargs}}class B{name;threshold;strictMode;model;score=null;reason=null;error=null;success=!1;metadata=null;constructor(t){this.name=t.name,this.strictMode=t.strictMode??!1,this.threshold=this.strictMode?1:t.threshold??0.5,this.model=t.model??null}successCheck(){if(this.error!==null)return!1;if(this.score===null)return!1;return this.score>=this.threshold}}class h{scoreType;name;threshold;strictMode;model;requiredParams;kwargs;constructor(t){this.scoreType=t.scoreType,this.name=t.name??t.scoreType,this.strictMode=t.strictMode??!1,this.threshold=this.strictMode?1:t.threshold??0.5,this.model=t.model??null,this.requiredParams=Object.freeze(t.requiredParams??[]),this.kwargs=t.kwargs??{}}}class nt{id;created_at;local_scorers=[];remote_scorers=[];model;constructor(t){let{scorers:e=[],model:r}=t;this.id=crypto.randomUUID(),this.created_at=new Date().toISOString(),this.model=r??null;for(let i of e)if(i instanceof B)this.local_scorers.push(i);else if(i instanceof h)this.remote_scorers.push(i)}toBaseModel(){return{id:this.id,created_at:this.created_at,custom_scorers:this.local_scorers.length>0?this.local_scorers.map(Dt):void 0,judgment_scorers:this.remote_scorers.length>0?this.remote_scorers.map(tt):void 0,model:this.model}}}class lt extends nt{project_name;eval_name;examples;trace_span_id;trace_id;constructor(t){let{examples:e,project_name:r,eval_name:i,trace_span_id:o,trace_id:l,...n}=t;super(n);this.project_name=r,this.eval_name=i,this.examples=e,this.trace_span_id=o??null,this.trace_id=l??null}toModel(){return{...this.toBaseModel(),project_name:this.project_name,eval_name:this.eval_name,examples:this.examples,trace_span_id:this.trace_span_id,trace_id:this.trace_id}}}class It extends nt{project_name;eval_name;trace_and_span_ids;is_offline;constructor(t){let{trace_and_span_ids:e,project_name:r,eval_name:i,is_offline:o,...l}=t;super(l);this.project_name=r,this.eval_name=i,this.trace_and_span_ids=e,this.is_offline=o??!1}toModel(){return{...this.toBaseModel(),project_name:this.project_name,eval_name:this.eval_name,trace_and_span_ids:this.trace_and_span_ids,is_offline:this.is_offline}}}function ne(t){return{example_id:void 0,created_at:new Date().toISOString(),name:null,...t}}var W;((c)=>{c.INPUT="input";c.ACTUAL_OUTPUT="actual_output";c.EXPECTED_OUTPUT="expected_output";c.CONTEXT="context";c.RETRIEVAL_CONTEXT="retrieval_context";c.TOOLS_CALLED="tools_called";c.EXPECTED_TOOLS="expected_tools";c.ADDITIONAL_METADATA="additional_metadata"})(W||={});class J extends h{prompt;model;options;description;judgmentApiKey;organizationId;constructor(t,e,r,i,o,l,n,a=d??"",c=m??""){super({scoreType:t,name:e,threshold:i,model:o,requiredParams:[],kwargs:{prompt:r,...l?{options:l}:{},...n?{description:n}:{}}});this.prompt=r,this.model=o,this.options=l,this.description=n,this.judgmentApiKey=a,this.organizationId=c}getThreshold(){return this.threshold}getPrompt(){return this.prompt}getOptions(){return this.options?{...this.options}:null}getModel(){return this.model}getDescription(){return this.description}getName(){return this.name}getConfig(){return{name:this.name,prompt:this.prompt,threshold:this.threshold,model:this.model,options:this.options,description:this.description}}toString(){return`${this.constructor.name}(name=${this.name}, prompt=${this.prompt}, threshold=${this.threshold}, model=${this.model}, options=${JSON.stringify(this.options)}, description=${this.description})`}}class M extends Error{statusCode;constructor(t,e){super(e);this.statusCode=t;this.name="JudgmentAPIError"}}async function X(t,e=d??"",r=m??""){if(!S||!e||!r)throw Error("Missing required API credentials");let o=await new g(S,e,r).fetchScorers({names:[t]});if(o.scorers.length===0)throw new M(404,`Scorer with name ${t} not found`);return o.scorers[0]}class at extends J{constructor(t,e,r,i,o,l,n=d??"",a=m??""){super("Prompt Scorer",t,e,r,i,o,l,n,a)}getScoreType(){return"Prompt Scorer"}getIsTrace(){return!1}static async get(t,e=d??"",r=m??""){let i=await X(t,e,r);if(i.is_trace===!0)throw new M(400,`Scorer with name ${t} is a TracePromptScorer, not a PromptScorer`);return new at(i.name,i.prompt,i.threshold,i.model??null,i.options,i.description,e,r)}}class ct extends J{constructor(t,e,r,i,o,l,n=d??"",a=m??""){super("Trace Prompt Scorer",t,e,r,i,o,l,n,a)}getScoreType(){return"Trace Prompt Scorer"}getIsTrace(){return!0}static async get(t,e=d??"",r=m??""){let i=await X(t,e,r);if(i.is_trace!==!0)throw new M(400,`Scorer with name ${t} is a PromptScorer, not a TracePromptScorer`);return new ct(i.name,i.prompt,i.threshold,i.model??null,i.options,i.description,e,r)}}class Et extends h{constructor(t={}){super({scoreType:"Answer Correctness",...t,requiredParams:["input","actual_output","expected_output"]})}static get(t={}){return new Et(t)}}class Tt extends h{constructor(t={}){super({scoreType:"Answer Relevancy",...t,requiredParams:["input","actual_output"]})}static get(t={}){return new Tt(t)}}class ft extends h{constructor(t={}){super({scoreType:"Faithfulness",...t,requiredParams:["input","actual_output","retrieval_context"]})}static get(t={}){return new ft(t)}}class St extends h{constructor(t={}){super({scoreType:"Instruction Adherence",...t,requiredParams:["input","actual_output"]})}static get(t={}){return new St(t)}}class vt extends B{static get(t){return new this({name:t.name,threshold:t.threshold,strictMode:t.strictMode,model:t.model})}}var Ut=require("@opentelemetry/exporter-trace-otlp-http");class Q{delegate;projectId;constructor(t,e,r,i){if(!i||i.trim()==="")throw Error("projectId is required for JudgmentSpanExporter");this.projectId=i,this.delegate=new Ut.OTLPTraceExporter({url:t,headers:{Authorization:`Bearer ${e}`,"X-Organization-Id":r,"X-Project-Id":i}})}static builder(){return new Gt}export(t,e){s.info(`JudgmentSpanExporter: Exported ${t.length} spans`),this.delegate.export(t,e)}shutdown(){return s.info(`JudgmentSpanExporter: Shutting down exporter for project ${this.projectId}`),this.delegate.shutdown()}forceFlush(){return s.info(`JudgmentSpanExporter: Force flushing spans for project ${this.projectId}`),this.delegate.forceFlush?.()??Promise.resolve()}}class Gt{_endpoint;_apiKey;_organizationId;_projectId;constructor(){}endpoint(t){return this._endpoint=t,this}apiKey(t){return this._apiKey=t,this}organizationId(t){return this._organizationId=t,this}projectId(t){return this._projectId=t,this}build(){if(!this._endpoint||this._endpoint.trim()==="")throw Error("Endpoint is required");if(!this._apiKey||this._apiKey.trim()==="")throw Error("API key is required");if(!this._organizationId||this._organizationId.trim()==="")throw Error("Organization ID is required");if(!this._projectId||this._projectId.trim()==="")throw Error("Project ID is required");return new Q(this._endpoint,this._apiKey,this._organizationId,this._projectId)}}class et{export(t,e){e({code:0})}flush(){return Promise.resolve()}shutdown(){return Promise.resolve()}}class u{static AttributeKeys={JUDGMENT_SPAN_KIND:"judgment.span_kind",JUDGMENT_INPUT:"judgment.input",JUDGMENT_OUTPUT:"judgment.output",JUDGMENT_OFFLINE_MODE:"judgment.offline_mode",JUDGMENT_UPDATE_ID:"judgment.update_id",JUDGMENT_CUSTOMER_ID:"judgment.customer_id",JUDGMENT_AGENT_ID:"judgment.agent_id",JUDGMENT_PARENT_AGENT_ID:"judgment.parent_agent_id",JUDGMENT_AGENT_CLASS_NAME:"judgment.agent_class_name",JUDGMENT_AGENT_INSTANCE_NAME:"judgment.agent_instance_name",PENDING_TRACE_EVAL:"judgment.pending_trace_eval",GEN_AI_PROMPT:"gen_ai.prompt",GEN_AI_COMPLETION:"gen_ai.completion",GEN_AI_REQUEST_MODEL:"gen_ai.request.model",GEN_AI_RESPONSE_MODEL:"gen_ai.response.model",GEN_AI_SYSTEM:"gen_ai.system",GEN_AI_USAGE_INPUT_TOKENS:"gen_ai.usage.input_tokens",GEN_AI_USAGE_OUTPUT_TOKENS:"gen_ai.usage.output_tokens",GEN_AI_USAGE_COMPLETION_TOKENS:"gen_ai.usage.completion_tokens",GEN_AI_REQUEST_TEMPERATURE:"gen_ai.request.temperature",GEN_AI_REQUEST_MAX_TOKENS:"gen_ai.request.max_tokens",GEN_AI_RESPONSE_FINISH_REASONS:"gen_ai.response.finish_reasons",GEN_AI_USAGE_TOTAL_COST:"gen_ai.usage.total_cost_usd"};static InternalAttributeKeys={DISABLE_PARTIAL_EMIT:"disable_partial_emit",CANCELLED:"cancelled"};static ResourceKeys={SERVICE_NAME:"service.name",TELEMETRY_SDK_LANGUAGE:"telemetry.sdk.language",TELEMETRY_SDK_NAME:"telemetry.sdk.name",TELEMETRY_SDK_VERSION:"telemetry.sdk.version",JUDGMENT_PROJECT_ID:"judgment.project_id"}}var F=require("@opentelemetry/api");class E{static instances=new Map;apiClient;tracer;serializer=JSON.stringify;_initialized=!1;projectId=null;spanExporter=null;configuration;getConfiguration(){return this.configuration}getProjectId(){return this.projectId}getSerializer(){return this.serializer}constructor(t){this.configuration=t,this.tracer=F.trace.getTracer(this.configuration.tracerName),this.apiClient=new g(this.configuration.apiUrl,this.configuration.apiKey,this.configuration.organizationId),this._initialized=!1}async resolveProjectId(){try{s.info(`Resolving project ID for project: ${this.configuration.projectName}`);let t=await this.apiClient.projectsResolve({project_name:this.configuration.projectName});s.info(`Resolved project ID: ${t.project_id}`);let e=t.project_id;return this.projectId=e,s.info(`Successfully resolved project ID: ${this.projectId}`),this.projectId}catch(t){throw Error(`Failed to resolve project ID: ${t instanceof Error?t.message:String(t)}`)}}async getSpanExporter(){if(!this.spanExporter)try{let t=await this.resolveProjectId();this.spanExporter=this.createJudgmentSpanExporter(t)}catch{s.error("Failed to resolve project "+this.configuration.projectName+", please create it first at https://app.judgmentlabs.ai/org/"+(this.configuration.organizationId||"unknown")+"/projects. Skipping Judgment export."),this.spanExporter=new et}return this.spanExporter}setSpanKind(t){let e=F.trace.getActiveSpan();if(!e){s.info("No active span found, skipping setSpanKind");return}e.setAttribute(u.AttributeKeys.JUDGMENT_SPAN_KIND,t)}setAttribute(t,e){let r=F.trace.getActiveSpan();if(!r){s.info("No active span found, skipping setAttribute");return}r.setAttribute(t,this.serializer(e))}setLLMSpan(){this.setSpanKind("llm")}setToolSpan(){this.setSpanKind("tool")}setGeneralSpan(){this.setSpanKind("span")}setAttributes(t){let e=F.trace.getActiveSpan();if(!e){s.info("No active span found, skipping setAttributes");return}for(let[r,i]of Object.entries(t))e.setAttribute(r,this.serializer(i))}setInput(t){this.setAttribute(u.AttributeKeys.JUDGMENT_INPUT,t)}setOutput(t){this.setAttribute(u.AttributeKeys.JUDGMENT_OUTPUT,t)}asyncEvaluate(t,e,r){try{if(!this.configuration.enableEvaluation)return;let i=F.trace.getActiveSpan();if(!i){s.info("No active span found, skipping asyncEvaluate");return}if(!i.isRecording()){s.info("Active span is not recording, skipping asyncEvaluate");return}let o=i.spanContext(),l=o.traceId,n=o.spanId;s.info(`asyncEvaluate: project=${this.configuration.projectName}, traceId=${l}, spanId=${n}, scorer=${t.name}`);let a=this.createEvaluationRun(t,e,r,l,n);this.enqueueEvaluation(a)}catch(i){s.error(`Failed to asyncEvaluate: ${i instanceof Error?i.message:String(i)}`)}}asyncTraceEvaluate(t,e){try{if(!this.configuration.enableEvaluation)return;let r=F.trace.getActiveSpan();if(!r){s.info("No active span found, skipping asyncTraceEvaluate");return}if(!r.isRecording()){s.info("Active span is not recording, skipping asyncTraceEvaluate");return}let i=r.spanContext(),o=i.traceId,l=i.spanId;s.info(`asyncTraceEvaluate: project=${this.configuration.projectName}, traceId=${o}, spanId=${l}, scorer=${t.name}`);let n=this.createTraceEvaluationRun(t,e,o,l),a=this.serializer(n);r.setAttribute(u.AttributeKeys.PENDING_TRACE_EVAL,a)}catch(r){s.error(`Failed to asyncTraceEvaluate: ${r instanceof Error?r.message:String(r)}`)}}createTraceEvaluationRun(t,e,r,i){let o=`async_trace_evaluate_${i||Date.now()}`,l=e??$,n=tt(t);return{project_name:this.configuration.projectName,eval_name:o,judgment_scorers:[n],custom_scorers:[],model:l,trace_and_span_ids:[[r,i]],created_at:new Date().toISOString(),is_offline:!1,is_bucket_run:!1}}createJudgmentSpanExporter(t){let e=this.configuration.apiUrl.endsWith("/")?`${this.configuration.apiUrl}otel/v1/traces`:`${this.configuration.apiUrl}/otel/v1/traces`;return Q.builder().endpoint(e).apiKey(this.configuration.apiKey).organizationId(this.configuration.organizationId).projectId(t).build()}createEvaluationRun(t,e,r,i,o){let l=`async_evaluate_${o||Date.now()}`,n=r??$,a=tt(t);return{project_name:this.configuration.projectName,eval_name:l,examples:[e],custom_scorers:[],judgment_scorers:[a],model:n,trace_id:i,trace_span_id:o,created_at:new Date().toISOString()}}async enqueueEvaluation(t){try{await this.apiClient.addToRunEvalQueueExamples(t),s.info(`Enqueuing evaluation run: ${t.eval_name}`)}catch(e){s.error(`Failed to enqueue evaluation run: ${e instanceof Error?e.message:String(e)}`)}}_observe(t,e="span"){return(...r)=>{let i=t.name||"anonymous";return this.tracer.startActiveSpan(i,(o)=>{try{o.setAttribute(u.AttributeKeys.JUDGMENT_SPAN_KIND,e);try{let n=pt(t);if(n.length===r.length){let a={};n.forEach((c,A)=>{a[c]=r[A]}),o.setAttribute(u.AttributeKeys.JUDGMENT_INPUT,this.serializer(a))}}catch(n){s.warn(`Failed to parse function args: ${n instanceof Error?n.message:String(n)}`)}let l=t(...r);if(l instanceof Promise)return l.then((n)=>{return o.setAttribute(u.AttributeKeys.JUDGMENT_OUTPUT,this.serializer(n)),n}).catch((n)=>{throw o.recordException(n instanceof Error?n:Error(String(n))),n}).finally(()=>{o.end()});return o.setAttribute(u.AttributeKeys.JUDGMENT_OUTPUT,this.serializer(l)),o.end(),l}catch(l){throw o.recordException(l),o.end(),l}})}}observe(t,e){try{if(typeof t==="function"){let r=this._observe(t,e??"span");return Object.defineProperty(r,"name",{value:t.name}),r}return(r,i,o)=>{try{if(!o)return;let l=o.value,n=this._observe(l,t??"span");return Object.defineProperty(n,"name",{value:l.name}),o.value=n,o}catch(l){s.error(`Failed to wrap method with observe: ${l instanceof Error?l.message:String(l)}`)}}}catch(r){if(s.error(`Failed to observe function: ${r instanceof Error?r.message:String(r)}`),typeof t==="function")return t;return()=>{}}}async shutdown(){}}var Pt="opentelemetry.instrumentation.judgeval";class j{projectName;apiKey;organizationId;apiUrl;enableEvaluation;tracerName;resourceAttributes;initialize;constructor(t,e,r,i,o,l=Pt,n={},a=!0){this.projectName=t;this.apiKey=e;this.organizationId=r;this.apiUrl=i;this.enableEvaluation=o;this.tracerName=l;this.resourceAttributes=n;this.initialize=a}static createDefault(t){return new dt().projectName(t).build()}static builder(){return new dt}}class dt{_projectName;_apiKey=d;_organizationId=m;_apiUrl=S;_enableEvaluation=!0;_tracerName=Pt;_resourceAttributes={};_initialize=!0;projectName(t){return this._projectName=t,this}apiKey(t){return this._apiKey=t,this}organizationId(t){return this._organizationId=t,this}apiUrl(t){return this._apiUrl=t,this}enableEvaluation(t){return this._enableEvaluation=t,this}tracerName(t){return this._tracerName=t,this}resourceAttributes(t){return this._resourceAttributes=t,this}initialize(t){return this._initialize=t,this}build(){if(!this._projectName)throw Error("Project name is required");if(!this._apiKey)throw Error("API key is required");if(!this._organizationId)throw Error("Organization ID is required");if(!this._apiUrl)throw Error("API URL is required");return new j(this._projectName,this._apiKey,this._organizationId,this._apiUrl,this._enableEvaluation,this._tracerName,this._resourceAttributes,this._initialize)}}class gt{apiClient;constructor(t=d,e=m){if(t===null||e===null)throw Error("API key and organization ID are required");this.apiClient=new g(S,t,e)}async runEvaluation(t,e,r,i,o){if(t.length===0)throw Error("No examples provided");let l=new lt({project_name:r,eval_name:i,examples:t,scorers:e,model:o}),n=Boolean(l.local_scorers.length),a=Boolean(l.remote_scorers.length);if(n&&a)throw Error("Cannot run both local and remote scorers at the same time");if(a)return this.runRemoteScorers(l);return this.runLocalScorers(l)}async runRemoteScorers(t){console.log("Running evaluation..."),await this.apiClient.addToRunEvalQueueExamples(t.toModel());let e=await this.pollForResults(t.project_name,t.id,t.examples.length);return console.log(`View results at: ${e.ui_results_url}/example`),e.results}async runLocalScorers(t){console.log("Running local evaluation...");let e=await this.executeLocalScorers(t),r=await this.apiClient.logEvalResults({results:e,run:t.toModel()});return console.log(`View results at: ${r.ui_results_url}/example`),e}async executeLocalScorers(t){let e=[];for(let r of t.examples){let i=[];for(let o of t.local_scorers){try{o.score=await o.scoreExample(r),o.success=o.successCheck()}catch(l){o.error=l instanceof Error?l.message:String(l),o.score=null,o.success=!1}i.push({name:o.name,threshold:o.threshold,success:o.success,score:o.score,reason:o.reason,strict_mode:o.strictMode,evaluation_model:o.model,error:o.error,additional_metadata:o.metadata})}e.push({success:i.every((o)=>o.success),scorers_data:i,data_object:r})}return e}async pollForResults(t,e,r){for(let i=0;i<60;i++){let o=await this.apiClient.fetchExperimentRun({experiment_run_id:e,project_name:t});if(o.results?.length===r)return o;await new Promise((l)=>setTimeout(l,5000))}throw Error("Evaluation timed out")}}var Jt=require("@opentelemetry/resources"),mt=require("@opentelemetry/sdk-trace-web");class Z extends E{webTracerProvider;async initialize(t={}){if(this._initialized)return this;try{let e={[u.ResourceKeys.SERVICE_NAME]:this.configuration.projectName,[u.ResourceKeys.TELEMETRY_SDK_VERSION]:R,...this.configuration.resourceAttributes,...t.resourceAttributes},r=await this.getSpanExporter();return this.webTracerProvider=new mt.WebTracerProvider({resource:Jt.resourceFromAttributes(e),spanProcessors:[new mt.BatchSpanProcessor(r)],...t}),this.webTracerProvider.register(),this._initialized=!0,this}catch(e){throw Error(`Failed to initialize browser tracer: ${e instanceof Error?e.message:String(e)}`)}}static getInstance(t){let e=`BrowserTracer:${t.projectName}`;if(!E.instances.has(e))E.instances.set(e,new Z(t));return E.instances.get(e)}static async createDefault(t){let e=j.builder().projectName(t).build(),r=new Z(e);if(e.initialize)await r.initialize();return r}static async createWithConfiguration(t){let e=new Z(t);if(t.initialize)await e.initialize();return e}}var Ft=require("@opentelemetry/resources"),jt=require("@opentelemetry/sdk-node");class K extends E{nodeSDK;async initialize(t={}){if(this._initialized)return this;try{let e={[u.ResourceKeys.SERVICE_NAME]:this.configuration.projectName,[u.ResourceKeys.TELEMETRY_SDK_VERSION]:R,...this.configuration.resourceAttributes,...t.resourceAttributes},r=await this.getSpanExporter();return this.nodeSDK=new jt.NodeSDK({resource:Ft.resourceFromAttributes(e),instrumentations:t.instrumentations,traceExporter:r,...t}),this.nodeSDK.start(),this._initialized=!0,this}catch(e){throw Error(`Failed to initialize node tracer: ${e instanceof Error?e.message:String(e)}`)}}static getInstance(t){let e=`NodeTracer:${t.projectName}`;if(!E.instances.has(e))E.instances.set(e,new K(t));return E.instances.get(e)}static async createDefault(t){let e=j.builder().projectName(t).enableEvaluation(!0).build(),r=new K(e);if(e.initialize)await r.initialize();return r}static async createWithConfiguration(t){let e=new K(t);if(t.initialize)await e.initialize();return e}async shutdown(){if(!this.nodeSDK){s.warn("Node SDK not initialized, skipping shutdown");return}await this.nodeSDK.shutdown()}}
1
+ var{defineProperty:L,getOwnPropertyNames:te,getOwnPropertyDescriptor:re}=Object,se=Object.prototype.hasOwnProperty;var $=new WeakMap,oe=(e)=>{var t=$.get(e),r;if(t)return t;if(t=L({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")te(e).map((o)=>!se.call(t,o)&&L(t,o,{get:()=>e[o],enumerable:!(r=re(e,o))||r.enumerable}));return $.set(e,t),t};var ie=(e,t)=>{for(var r in t)L(e,r,{get:t[r],enumerable:!0,configurable:!0,set:(o)=>t[r]=()=>o})};var le={};ie(le,{ScoringResult:()=>F,ScorersFactory:()=>I,ScorerData:()=>j,PromptScorerFactory:()=>h,PromptScorer:()=>v,NodeTracerFactory:()=>b,NodeTracer:()=>M,NoOpSpanExporter:()=>N,JudgmentSpanExporter:()=>P,Judgeval:()=>J,FaithfulnessScorer:()=>T,Example:()=>A,EvaluationFactory:()=>C,Evaluation:()=>w,CustomScorerFactory:()=>O,CustomScorer:()=>y,BuiltInScorersFactory:()=>f,BrowserTracerFactory:()=>x,BrowserTracer:()=>R,BaseTracer:()=>m,BaseScorer:()=>_,AnswerRelevancyScorer:()=>S,AnswerCorrectnessScorer:()=>E,APIScorer:()=>d});module.exports=oe(le);function l(e,t){let r=process.env[e];if(!r)return t??null;return r}var H=l("JUDGMENT_API_KEY"),q=l("JUDGMENT_ORG_ID"),Y=l("JUDGMENT_API_URL","https://api.judgmentlabs.ai"),ce=l("JUDGMENT_LLM_PROXY_URL","https://api.judgmentlabs.ai/llm/proxy/v1"),z=l("JUDGMENT_DEFAULT_GPT_MODEL","gpt-4.1"),ue=l("JUDGMENT_ENABLE_MONITORING","true"),pe=l("JUDGMENT_ENABLE_EVALUATIONS","true"),me=l("JUDGMENT_NO_COLOR"),B=l("JUDGMENT_LOG_LEVEL","warn"),he=l("OPENAI_API_KEY"),_e=l("ANTHROPIC_API_KEY"),Ee=l("GOOGLE_API_KEY"),Se=l("GEMINI_API_KEY");class k{baseUrl;apiKey;organizationId;constructor(e,t,r){this.baseUrl=e,this.apiKey=t,this.organizationId=r}getBaseUrl(){return this.baseUrl}getApiKey(){return this.apiKey}getOrganizationId(){return this.organizationId}buildUrl(e){return this.baseUrl+e}buildHeaders(){if(!this.apiKey||!this.organizationId)throw Error("API key and organization ID cannot be null");return{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`,"X-Organization-Id":this.organizationId}}async addToRunEvalQueueExamples(e){let t=this.buildUrl("/add_to_run_eval_queue/examples"),r=await fetch(t,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(e)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return}async addToRunEvalQueueTraces(e){let t=this.buildUrl("/add_to_run_eval_queue/traces"),r=await fetch(t,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(e)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return}async logEvalResults(e){let t=this.buildUrl("/log_eval_results/"),r=await fetch(t,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(e)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async fetchExperimentRun(e){let t=this.buildUrl("/fetch_experiment_run/"),r=await fetch(t,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(e)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async scorerExists(e){let t=this.buildUrl("/scorer_exists/"),r=await fetch(t,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(e)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async saveScorer(e){let t=this.buildUrl("/save_scorer/"),r=await fetch(t,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(e)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async fetchScorers(e){let t=this.buildUrl("/fetch_scorers/"),r=await fetch(t,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(e)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}async projectsResolve(e){let t=this.buildUrl("/projects/resolve/"),r=await fetch(t,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(e)});if(!r.ok)throw Error(`HTTP Error: ${r.status} - ${await r.text()}`);return await r.json()}}class w{client;constructor(e){this.client=e.client}}class C{client;constructor(e){this.client=e}create(e={}){return new w({...e,client:this.client})}}var c={PROMPT_SCORER:"Prompt Scorer",TRACE_PROMPT_SCORER:"Trace Prompt Scorer",FAITHFULNESS:"Faithfulness",ANSWER_RELEVANCY:"Answer Relevancy",ANSWER_CORRECTNESS:"Answer Correctness",CUSTOM:"Custom"};class _{}class d extends _{scoreType;requiredParams;_threshold;_name;_strictMode;_model;additionalProperties;constructor(e){super();this.scoreType=e,this._name=e,this._threshold=0.5,this._strictMode=!1,this.requiredParams=[],this.additionalProperties={}}getName(){return this._name}getScoreType(){return this.scoreType}getThreshold(){return this._threshold}getStrictMode(){return this._strictMode}getModel(){return this._model}getRequiredParams(){return[...this.requiredParams]}setThreshold(e){if(e<0||e>1)throw Error(`Threshold must be between 0 and 1, got: ${e}`);if(this._threshold=e,this._strictMode)this._threshold=1}setName(e){this._name=e}setStrictMode(e){if(this._strictMode=e,e)this._threshold=1}setModel(e){this._model=e}setRequiredParams(e){this.requiredParams=[...e]}setAdditionalProperty(e,t){this.additionalProperties[e]=t}getAdditionalProperties(){return{...this.additionalProperties}}getScorerConfig(){let e={...this.additionalProperties};return{score_type:this.scoreType,threshold:this._threshold,name:this._name,strict_mode:this._strictMode,required_params:this.requiredParams,kwargs:e}}static builder(e){return new W(this,e)}}class W{scorer;constructor(e,t){this.scorer=new e(t)}threshold(e){return this.scorer.setThreshold(e),this}name(e){return this.scorer.setName(e),this}strictMode(e){return this.scorer.setStrictMode(e),this}requiredParams(e){return this.scorer.setRequiredParams(e),this}model(e){return this.scorer.setModel(e),this}additionalProperty(e,t){return this.scorer.setAdditionalProperty(e,t),this}build(){return this.scorer}}class E extends d{constructor(e={}){super(c.ANSWER_CORRECTNESS);if(this.setRequiredParams(["input","actual_output","expected_output"]),e.threshold!==void 0)this.setThreshold(e.threshold);if(e.name)this.setName(e.name);if(e.strictMode!==void 0)this.setStrictMode(e.strictMode);if(e.model)this.setModel(e.model)}}class S extends d{constructor(e={}){super(c.ANSWER_RELEVANCY);if(this.setRequiredParams(["input","actual_output"]),e.threshold!==void 0)this.setThreshold(e.threshold);if(e.name)this.setName(e.name);if(e.strictMode!==void 0)this.setStrictMode(e.strictMode);if(e.model)this.setModel(e.model)}}class T extends d{constructor(e={}){super(c.FAITHFULNESS);if(this.setRequiredParams(["context","actual_output"]),e.threshold!==void 0)this.setThreshold(e.threshold);if(e.name)this.setName(e.name);if(e.strictMode!==void 0)this.setStrictMode(e.strictMode);if(e.model)this.setModel(e.model)}}class f{answerCorrectness(e={}){return new E(e)}answerRelevancy(e={}){return new S(e)}faithfulness(e={}){return new T(e)}}class y extends d{_className;_serverHosted;constructor(e){super(c.CUSTOM);if(this.setName(e.name),e.className)this._className=e.className,this.setAdditionalProperty("class_name",e.className);this._serverHosted=e.serverHosted??!0,this.setAdditionalProperty("server_hosted",this._serverHosted)}getClassName(){return this._className}isServerHosted(){return this._serverHosted}getScorerConfig(){throw Error("CustomScorer does not use ScorerConfig")}}class O{get(e,t){return new y({name:e,className:t??e,serverHosted:!0})}}class v extends _{_name;_prompt;_threshold;_options;_model;_description;isTrace;constructor(e){super();this._name=e.name,this._prompt=e.prompt,this._threshold=e.threshold,this._options={...e.options},this._model=e.model,this._description=e.description,this.isTrace=e.isTrace??!1}getName(){return this._name}getPrompt(){return this._prompt}getThreshold(){return this._threshold}getOptions(){return this._options?{...this._options}:void 0}getModel(){return this._model}getDescription(){return this._description}setThreshold(e){this._threshold=e}setPrompt(e){this._prompt=e}setModel(e){this._model=e}setOptions(e){this._options={...e}}setDescription(e){this._description=e}appendToPrompt(e){this._prompt=this._prompt+e}getScorerConfig(){let e=this.isTrace?c.TRACE_PROMPT_SCORER:c.PROMPT_SCORER,t={prompt:this._prompt};if(this._options)t.options=this._options;if(this._model)t.model=this._model;if(this._description)t.description=this._description;return{score_type:e,threshold:this._threshold,name:this._name,kwargs:t}}}class h{client;isTrace;static cache=new Map;constructor(e,t){this.client=e,this.isTrace=t}async get(e){let t=this.getCacheKey(e),r=h.cache.get(t);if(r)return this.createFromModel(r,e);try{let o={names:[e]},i=await this.client.fetchScorers(o);if(i.scorers.length===0)throw Error(`Failed to fetch prompt scorer '${e}': not found`);let a=i.scorers[0],n=a.is_trace===!0;if(n!==this.isTrace){let p=this.isTrace?"TracePromptScorer":"PromptScorer";throw Error(`Scorer with name ${e} is a ${n?"TracePromptScorer":"PromptScorer"}, not a ${p}`)}return h.cache.set(t,a),this.createFromModel(a,e)}catch(o){if(o instanceof Error)throw o;throw Error(`Failed to fetch prompt scorer '${e}': ${o}`)}}create(e){if(!e.name)throw Error("Name is required");if(!e.prompt)throw Error("Prompt is required");return new v({...e,isTrace:this.isTrace})}createFromModel(e,t){let r;if(e.options&&typeof e.options==="object"){r={};for(let[o,i]of Object.entries(e.options))if(typeof i==="number")r[o]=i}return new v({name:t,prompt:e.prompt,threshold:e.threshold,options:r??{},model:e.model??z,description:e.description??"",isTrace:this.isTrace})}getCacheKey(e){return`${e}:${this.client.getApiKey()}:${this.client.getOrganizationId()}`}}class I{client;constructor(e){this.client=e}get promptScorer(){return new h(this.client,!1)}get tracePromptScorer(){return new h(this.client,!0)}get customScorer(){return new O}get builtIn(){return new f}}var X=require("@opentelemetry/resources"),G=require("@opentelemetry/sdk-trace-web");class s{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 currentLevel=s.Level.WARNING;static useColor=!0;static initialize(){if(!s.initialized){let e=process.env.JUDGMENT_NO_COLOR;s.useColor=!e&&process.stdout.isTTY;let t=B.toLowerCase();if(t){let r={debug:s.Level.DEBUG,info:s.Level.INFO,warning:s.Level.WARNING,warn:s.Level.WARNING,error:s.Level.ERROR,critical:s.Level.CRITICAL};s.currentLevel=r[t]??s.Level.WARNING}s.initialized=!0}}static setLevel(e){s.currentLevel=e}static setUseColor(e){s.useColor=e}static log(e,t){if(s.initialize(),e<s.currentLevel)return;let r=new Date().toISOString().replace("T"," ").substring(0,19),o=Object.keys(s.Level).find((n)=>s.Level[n]===e)??"UNKNOWN",i=`${r} - judgeval - ${o} - ${t}`;if(s.useColor)i=`${e===s.Level.DEBUG||e===s.Level.INFO?s.GRAY:e===s.Level.WARNING?s.YELLOW:s.RED}${i}${s.RESET}`;(e>=s.Level.ERROR?process.stderr:process.stdout).write(i+`
2
+ `)}static debug(e){s.log(s.Level.DEBUG,e)}static info(e){s.log(s.Level.INFO,e)}static warning(e){s.log(s.Level.WARNING,e)}static warn(e){s.log(s.Level.WARNING,e)}static error(e){s.log(s.Level.ERROR,e)}static critical(e){s.log(s.Level.CRITICAL,e)}}var V="0.7.0";var U=V;var u=require("@opentelemetry/api");var Q=require("@opentelemetry/exporter-trace-otlp-http");class P{delegate;constructor(e,t,r,o){this.delegate=new Q.OTLPTraceExporter({url:e,headers:{Authorization:`Bearer ${t}`,"X-Organization-Id":r,"X-Project-Id":o}})}export(e,t){s.info(`JudgmentSpanExporter: exporting ${e.length} spans`),this.delegate.export(e,t)}shutdown(){return this.delegate.shutdown()}forceFlush(){return this.delegate.forceFlush?.()??Promise.resolve()}}class N{export(e,t){t({code:0})}shutdown(){return Promise.resolve()}}class m{static TRACER_NAME="judgeval";projectName;enableEvaluation;apiClient;serializer;jsonEncoder;projectId;constructor(e,t,r,o,i=JSON.stringify){this.projectName=e,this.enableEvaluation=t,this.apiClient=r,this.serializer=o,this.jsonEncoder=i,this.projectId=null}async resolveAndSetProjectId(){try{this.projectId=await this.resolveProjectId(this.projectName),s.info(`Successfully resolved project ID: ${this.projectId}`)}catch{s.error(`Failed to resolve project ${this.projectName}, please create it first at https://app.judgmentlabs.ai/org/${this.apiClient.getOrganizationId()}/projects. Skipping Judgment export.`),this.projectId=null}}getSpanExporter(){if(this.projectId!==null)return this.createJudgmentSpanExporter(this.projectId);return s.error("Project not resolved; cannot create exporter, returning NoOpSpanExporter"),new N}getTracer(){return u.trace.getTracer(m.TRACER_NAME)}setSpanKind(e){if(!e)return;let t=u.trace.getActiveSpan();if(t)t.setAttribute("judgment.span_kind",e)}setAttribute(e,t){if(!this.isValidKey(e))return;if(t===null||t===void 0)return;let r=u.trace.getActiveSpan();if(r){let o=typeof t==="string"||typeof t==="number"||typeof t==="boolean"?t:this.serializer(t);r.setAttribute(e,o)}}setAttributes(e){for(let[t,r]of Object.entries(e))this.setAttribute(t,r)}setLLMSpan(){this.setSpanKind("llm")}setToolSpan(){this.setSpanKind("tool")}setGeneralSpan(){this.setSpanKind("span")}setInput(e){this.setAttribute("judgment.input",e)}setOutput(e){this.setAttribute("judgment.output",e)}asyncEvaluate(e,t){this.safeExecute("evaluate scorer",()=>{if(!this.enableEvaluation)return;let r=this.getSampledSpanContext();if(!r)return;let{traceId:o,spanId:i}=r;this.logEvaluationInfo("asyncEvaluate",o,i,e.getName());let a=this.createEvaluationRun(e,t,o,i);this.enqueueEvaluation(a).catch((n)=>{s.error(`Failed to enqueue evaluation run: ${n}`)})})}asyncTraceEvaluate(e){this.safeExecute("evaluate trace scorer",()=>{if(!this.enableEvaluation)return;let t=this.getSampledSpan();if(!t)return;let r=t.spanContext(),o=r.traceId,i=r.spanId;this.logEvaluationInfo("asyncTraceEvaluate",o,i,e.getName());let a=this.createTraceEvaluationRun(e,o,i);try{let n=JSON.stringify(a);t.setAttribute("judgment.pending_trace_eval",n)}catch(n){s.error(`Failed to serialize trace evaluation: ${n}`)}})}span(e,t){return this.getTracer().startActiveSpan(e,(o)=>{try{return t()}catch(i){throw o.setStatus({code:u.SpanStatusCode.ERROR}),o.recordException(i),i}finally{o.end()}})}static startSpan(e){return u.trace.getTracer(m.TRACER_NAME).startSpan(e)}observe(e,t="span",r){let o=this.getTracer(),i=r??e.name;return(...a)=>{return o.startActiveSpan(i,(n)=>{if(t)n.setAttribute("judgment.span_kind",t);try{let p=this.formatInputs(e,a);n.setAttribute("judgment.input",this.serializer(p));let D=e(...a);if(D instanceof Promise)return D.then((g)=>{return n.setAttribute("judgment.output",this.serializer(g)),g}).catch((g)=>{throw n.recordException(g),n.setStatus({code:u.SpanStatusCode.ERROR,message:String(g)}),g}).finally(()=>{n.end()});return n.setAttribute("judgment.output",this.serializer(D)),n.end(),D}catch(p){throw n.recordException(p),n.setStatus({code:u.SpanStatusCode.ERROR,message:String(p)}),n.end(),p}})}}async resolveProjectId(e){try{s.info(`Resolving project ID for project: ${e}`);let t={project_name:e},o=(await this.apiClient.projectsResolve(t)).project_id;if(!o)throw Error(`Project ID not found for project: ${e}`);return s.info(`Resolved project ID: ${o}`),o}catch(t){throw Error(`Failed to resolve project ID: ${t instanceof Error?t.message:String(t)}`)}}buildEndpoint(e){return e.endsWith("/")?e+"otel/v1/traces":e+"/otel/v1/traces"}createJudgmentSpanExporter(e){return new P(this.buildEndpoint(this.apiClient.getBaseUrl()),this.apiClient.getApiKey(),this.apiClient.getOrganizationId(),e)}generateRunId(e,t){return e+(t??Date.now().toString())}createEvaluationRun(e,t,r,o){let i=this.generateRunId("async_evaluate_",o);return{project_name:this.projectName,eval_name:i,trace_id:r,trace_span_id:o,examples:[t.toModel()],judgment_scorers:[e.getScorerConfig()],custom_scorers:[]}}createTraceEvaluationRun(e,t,r){let o=this.generateRunId("async_trace_evaluate_",r);return{project_name:this.projectName,eval_name:o,trace_and_span_ids:[[t,r]],judgment_scorers:[e.getScorerConfig()],custom_scorers:[],is_offline:!1}}async enqueueEvaluation(e){try{await this.apiClient.addToRunEvalQueueExamples(e)}catch(t){s.error(`Failed to enqueue evaluation run: ${t}`)}}getSampledSpanContext(){let e=u.trace.getActiveSpan();if(!e)return null;let t=e.spanContext();if(!t.traceFlags||!(t.traceFlags&1))return null;return t}getSampledSpan(){let e=u.trace.getActiveSpan();if(!e)return null;let t=e.spanContext();if(!t.traceFlags||!(t.traceFlags&1))return null;return e}logEvaluationInfo(e,t,r,o){s.info(`${e}: project=${this.projectName}, traceId=${t}, spanId=${r}, scorer=${o}`)}safeExecute(e,t){try{t()}catch(r){s.error(`Failed to ${e}: ${r}`)}}isValidKey(e){return e.length>0}formatInputs(e,t){try{let r=e.toString(),o=/\(([^)]*)\)/.exec(r),i=o?o[1].split(",").map((n)=>n.trim().split("=")[0].trim()).filter((n)=>n.length>0):[],a={};return i.forEach((n,p)=>{if(p<t.length)a[n]=t[p]}),a}catch{return{}}}}class R extends m{webTracerProvider=null;resourceAttributes;constructor(e,t,r,o,i){super(e,t,r,o);this.resourceAttributes=i}static async create(e,t){let r=new R(e.projectName,e.enableEvaluation,t,e.serializer,e.resourceAttributes);if(await r.resolveAndSetProjectId(),e.initialize)await r.initialize();return r}async initialize(){if(this.webTracerProvider!==null){s.warn("BrowserTracer already initialized");return}try{let e={"service.name":this.projectName,"telemetry.sdk.version":U,...this.resourceAttributes},t=this.getSpanExporter();this.webTracerProvider=new G.WebTracerProvider({resource:X.resourceFromAttributes(e),spanProcessors:[new G.BatchSpanProcessor(t)]}),this.webTracerProvider.register(),s.info("BrowserTracer initialized successfully")}catch(e){throw Error(`Failed to initialize BrowserTracer: ${e instanceof Error?e.message:String(e)}`)}}async shutdown(){if(!this.webTracerProvider){s.warn("BrowserTracer not initialized, skipping shutdown");return}try{await this.webTracerProvider.shutdown(),this.webTracerProvider=null,s.info("BrowserTracer shut down successfully")}catch(e){s.error(`Failed to shutdown BrowserTracer: ${e}`)}}}class x{client;constructor(e){this.client=e}async create(e){if(!e.projectName)throw Error("Project name is required");return R.create({projectName:e.projectName,enableEvaluation:e.enableEvaluation??!0,enableMonitoring:e.enableMonitoring??!1,serializer:e.serializer??JSON.stringify,resourceAttributes:e.resourceAttributes??{},initialize:e.initialize??!0},this.client)}}var Z=require("@opentelemetry/resources"),K=require("@opentelemetry/sdk-node");class M extends m{nodeSDK=null;resourceAttributes;instrumentations;constructor(e,t,r,o,i,a){super(e,t,r,o);this.resourceAttributes=i,this.instrumentations=a}static async create(e,t){let r=new M(e.projectName,e.enableEvaluation,t,e.serializer,e.resourceAttributes,e.instrumentations);if(await r.resolveAndSetProjectId(),e.initialize)await r.initialize();return r}async initialize(){if(this.nodeSDK!==null){s.warn("NodeTracer already initialized");return}try{let e={"service.name":this.projectName,"telemetry.sdk.version":U,...this.resourceAttributes},t=this.getSpanExporter();this.nodeSDK=new K.NodeSDK({resource:Z.resourceFromAttributes(e),traceExporter:t,instrumentations:this.instrumentations}),this.nodeSDK.start(),s.info("NodeTracer initialized successfully")}catch(e){throw Error(`Failed to initialize NodeTracer: ${e instanceof Error?e.message:String(e)}`)}}async shutdown(){if(!this.nodeSDK){s.warn("NodeTracer not initialized, skipping shutdown");return}try{await this.nodeSDK.shutdown(),this.nodeSDK=null,s.info("NodeTracer shut down successfully")}catch(e){s.error(`Failed to shutdown NodeTracer: ${e}`)}}}class b{client;constructor(e){this.client=e}async create(e){if(!e.projectName)throw Error("Project name is required");return M.create({projectName:e.projectName,enableEvaluation:e.enableEvaluation??!0,enableMonitoring:e.enableMonitoring??!1,serializer:e.serializer??JSON.stringify,resourceAttributes:e.resourceAttributes??{},instrumentations:e.instrumentations??[],initialize:e.initialize??!0},this.client)}}class J{internalClient;constructor(e={}){let t=e.apiKey??H,r=e.organizationId??q,o=e.apiUrl??Y;if(!t)throw Error("API key is required");if(!r)throw Error("Organization ID is required");if(!o)throw Error("API URL is required");this.internalClient=new k(o,t,r)}static create(e={}){return new J(e)}get nodeTracer(){return new b(this.internalClient)}get browserTracer(){return new x(this.internalClient)}get scorers(){return new I(this.internalClient)}get evaluation(){return new C(this.internalClient)}}var ee=require("crypto");class A{exampleId;createdAt;name;properties;constructor(e={}){this.exampleId=e.exampleId??ee.randomUUID(),this.createdAt=e.createdAt??new Date().toISOString(),this.name=e.name??null,this.properties=e.properties??{}}static create(e){return new A({properties:e})}setProperty(e,t){return this.properties[e]=t,this}getProperty(e){return this.properties[e]}getProperties(){return{...this.properties}}toModel(){return{example_id:this.exampleId,created_at:this.createdAt,name:this.name??void 0,...this.properties}}}class j{name;threshold;success;score;reason;strictMode;evaluationModel;error;additionalMetadata;id;constructor(e={}){this.name=e.name??null,this.threshold=e.threshold??null,this.success=e.success??null,this.score=e.score??null,this.reason=e.reason??null,this.strictMode=e.strictMode??null,this.evaluationModel=e.evaluationModel??null,this.error=e.error??null,this.additionalMetadata=e.additionalMetadata??{},this.id=e.id??null}toModel(){let e={name:this.name??"",threshold:this.threshold??0,success:this.success??!1};if(this.score!==void 0&&this.score!==null)e.score=this.score;if(this.reason!==void 0&&this.reason!==null)e.reason=this.reason;if(this.strictMode!==void 0&&this.strictMode!==null)e.strict_mode=this.strictMode;if(this.evaluationModel!==void 0&&this.evaluationModel!==null)e.evaluation_model=this.evaluationModel;if(this.error!==void 0&&this.error!==null)e.error=this.error;if(this.additionalMetadata&&Object.keys(this.additionalMetadata).length>0)e.additional_metadata=this.additionalMetadata;if(this.id!==void 0&&this.id!==null)e.id=this.id;return e}}class F{success;scorersData;name;dataObject;traceId;runDuration;evaluationCost;constructor(e={}){this.success=e.success??null,this.scorersData=e.scorersData??[],this.name=e.name??null,this.dataObject=e.dataObject??null,this.traceId=e.traceId??null,this.runDuration=e.runDuration??null,this.evaluationCost=e.evaluationCost??null}toModel(){let e={success:this.success??!1,scorers_data:(this.scorersData??[]).map((t)=>t.toModel())};if(this.name!==void 0&&this.name!==null)e.name=this.name;if(this.dataObject!==void 0&&this.dataObject!==null)if(this.dataObject instanceof A)e.data_object=this.dataObject.toModel();else e.data_object=this.dataObject;if(this.traceId!==void 0&&this.traceId!==null)e.trace_id=this.traceId;if(this.runDuration!==void 0&&this.runDuration!==null)e.run_duration=this.runDuration;if(this.evaluationCost!==void 0&&this.evaluationCost!==null)e.evaluation_cost=this.evaluationCost;return e}}
3
3
 
4
- //# debugId=C5AE9AD4D19A663364756E2164756E21
4
+ //# debugId=FF17D184C02B542664756E2164756E21
5
5
  //# sourceMappingURL=index.cjs.map