judgeval 0.8.4 → 0.9.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 (291) hide show
  1. package/README.md +17 -37
  2. package/dist/Judgeval.d.ts +0 -8
  3. package/dist/Judgeval.d.ts.map +1 -1
  4. package/dist/{judgmentAttributeKeys.d.ts → JudgmentAttributeKeys.d.ts} +16 -2
  5. package/dist/JudgmentAttributeKeys.d.ts.map +1 -0
  6. package/dist/env.d.ts +0 -8
  7. package/dist/env.d.ts.map +1 -1
  8. package/dist/index.cjs +3 -3
  9. package/dist/index.cjs.map +22 -42
  10. package/dist/index.d.ts +1 -4
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.mjs +3 -3
  13. package/dist/index.mjs.map +22 -42
  14. package/dist/internal/api/client.d.ts +41 -0
  15. package/dist/internal/api/client.d.ts.map +1 -0
  16. package/dist/internal/api/index.d.ts +2 -24
  17. package/dist/internal/api/index.d.ts.map +1 -1
  18. package/dist/internal/api/models/AddProjectRequest.d.ts +4 -0
  19. package/dist/internal/api/models/AddProjectRequest.d.ts.map +1 -0
  20. package/dist/internal/api/models/AddProjectResponse.d.ts +4 -0
  21. package/dist/internal/api/models/AddProjectResponse.d.ts.map +1 -0
  22. package/dist/internal/api/models/AddToJudgeEvalQueueResponse.d.ts +6 -0
  23. package/dist/internal/api/models/AddToJudgeEvalQueueResponse.d.ts.map +1 -0
  24. package/dist/internal/api/models/AddToRunEvalQueueExamplesResponse.d.ts +6 -0
  25. package/dist/internal/api/models/AddToRunEvalQueueExamplesResponse.d.ts.map +1 -0
  26. package/dist/internal/api/models/AddToRunEvalQueueTracesResponse.d.ts +6 -0
  27. package/dist/internal/api/models/AddToRunEvalQueueTracesResponse.d.ts.map +1 -0
  28. package/dist/internal/api/models/AddTraceTagsRequest.d.ts +4 -0
  29. package/dist/internal/api/models/AddTraceTagsRequest.d.ts.map +1 -0
  30. package/dist/internal/api/models/AddTraceTagsResponse.d.ts +4 -0
  31. package/dist/internal/api/models/AddTraceTagsResponse.d.ts.map +1 -0
  32. package/dist/internal/api/models/BaseScorer.d.ts +10 -13
  33. package/dist/internal/api/models/BaseScorer.d.ts.map +1 -1
  34. package/dist/internal/api/models/CreateDatasetRequest.d.ts +8 -0
  35. package/dist/internal/api/models/CreateDatasetRequest.d.ts.map +1 -0
  36. package/dist/internal/api/models/CreateDatasetResponse.d.ts +4 -0
  37. package/dist/internal/api/models/CreateDatasetResponse.d.ts.map +1 -0
  38. package/dist/internal/api/models/CustomScorerExistsResponse.d.ts +4 -0
  39. package/dist/internal/api/models/CustomScorerExistsResponse.d.ts.map +1 -0
  40. package/dist/internal/api/models/CustomScorerPayload.d.ts +4 -0
  41. package/dist/internal/api/models/CustomScorerPayload.d.ts.map +1 -0
  42. package/dist/internal/api/models/DatasetInfo.d.ts +9 -0
  43. package/dist/internal/api/models/DatasetInfo.d.ts.map +1 -0
  44. package/dist/internal/api/models/DeleteProjectResponse.d.ts +5 -0
  45. package/dist/internal/api/models/DeleteProjectResponse.d.ts.map +1 -0
  46. package/dist/internal/api/models/E2EFetchSpanScoreRequest.d.ts +6 -0
  47. package/dist/internal/api/models/E2EFetchSpanScoreRequest.d.ts.map +1 -0
  48. package/dist/internal/api/models/E2EFetchSpanScoreResponse.d.ts +2 -0
  49. package/dist/internal/api/models/E2EFetchSpanScoreResponse.d.ts.map +1 -0
  50. package/dist/internal/api/models/E2EFetchTraceResponse.d.ts +2 -0
  51. package/dist/internal/api/models/E2EFetchTraceResponse.d.ts.map +1 -0
  52. package/dist/internal/api/models/E2ETracesPerProjectResponse.d.ts +9 -0
  53. package/dist/internal/api/models/E2ETracesPerProjectResponse.d.ts.map +1 -0
  54. package/dist/internal/api/models/E2ETracesPerProjectRow.d.ts +2 -0
  55. package/dist/internal/api/models/E2ETracesPerProjectRow.d.ts.map +1 -0
  56. package/dist/internal/api/models/ErrorResponse.d.ts +5 -0
  57. package/dist/internal/api/models/ErrorResponse.d.ts.map +1 -0
  58. package/dist/internal/api/models/Example.d.ts +4 -6
  59. package/dist/internal/api/models/Example.d.ts.map +1 -1
  60. package/dist/internal/api/models/ExampleEvaluationRun.d.ts +11 -13
  61. package/dist/internal/api/models/ExampleEvaluationRun.d.ts.map +1 -1
  62. package/dist/internal/api/models/ExampleScoringResult.d.ts +59 -0
  63. package/dist/internal/api/models/ExampleScoringResult.d.ts.map +1 -0
  64. package/dist/internal/api/models/ExperimentRunItem.d.ts +11 -0
  65. package/dist/internal/api/models/ExperimentRunItem.d.ts.map +1 -0
  66. package/dist/internal/api/models/ExperimentScorer.d.ts +15 -0
  67. package/dist/internal/api/models/ExperimentScorer.d.ts.map +1 -0
  68. package/dist/internal/api/models/FetchExperimentRunResponse.d.ts +3 -6
  69. package/dist/internal/api/models/FetchExperimentRunResponse.d.ts.map +1 -1
  70. package/dist/internal/api/models/FetchPromptResponse.d.ts +5 -0
  71. package/dist/internal/api/models/FetchPromptResponse.d.ts.map +1 -0
  72. package/dist/internal/api/models/FetchPromptScorersResponse.d.ts +2 -6
  73. package/dist/internal/api/models/FetchPromptScorersResponse.d.ts.map +1 -1
  74. package/dist/internal/api/models/GetPromptVersionsResponse.d.ts +5 -0
  75. package/dist/internal/api/models/GetPromptVersionsResponse.d.ts.map +1 -0
  76. package/dist/internal/api/models/HealthResponse.d.ts +5 -0
  77. package/dist/internal/api/models/HealthResponse.d.ts.map +1 -0
  78. package/dist/internal/api/models/InsertExamplesRequest.d.ts +5 -0
  79. package/dist/internal/api/models/InsertExamplesRequest.d.ts.map +1 -0
  80. package/dist/internal/api/models/InsertExamplesResponse.d.ts +4 -0
  81. package/dist/internal/api/models/InsertExamplesResponse.d.ts.map +1 -0
  82. package/dist/internal/api/models/InsertPromptRequest.d.ts +6 -0
  83. package/dist/internal/api/models/InsertPromptRequest.d.ts.map +1 -0
  84. package/dist/internal/api/models/InsertPromptResponse.d.ts +6 -0
  85. package/dist/internal/api/models/InsertPromptResponse.d.ts.map +1 -0
  86. package/dist/internal/api/models/JudgeEvaluationRun.d.ts +13 -0
  87. package/dist/internal/api/models/JudgeEvaluationRun.d.ts.map +1 -0
  88. package/dist/internal/api/models/JudgmentScorerConfig.d.ts +4 -0
  89. package/dist/internal/api/models/JudgmentScorerConfig.d.ts.map +1 -0
  90. package/dist/internal/api/models/LocalScorerResult.d.ts +15 -0
  91. package/dist/internal/api/models/LocalScorerResult.d.ts.map +1 -0
  92. package/dist/internal/api/models/LogEvalResultsExamplesRequest.d.ts +7 -0
  93. package/dist/internal/api/models/LogEvalResultsExamplesRequest.d.ts.map +1 -0
  94. package/dist/internal/api/models/LogEvalResultsExamplesResponse.d.ts +4 -0
  95. package/dist/internal/api/models/LogEvalResultsExamplesResponse.d.ts.map +1 -0
  96. package/dist/internal/api/models/LogEvalResultsRequest.d.ts +7 -0
  97. package/dist/internal/api/models/LogEvalResultsRequest.d.ts.map +1 -0
  98. package/dist/internal/api/models/LogEvalResultsResponse.d.ts +0 -4
  99. package/dist/internal/api/models/LogEvalResultsResponse.d.ts.map +1 -1
  100. package/dist/internal/api/models/PendingEvalPayload.d.ts +16 -0
  101. package/dist/internal/api/models/PendingEvalPayload.d.ts.map +1 -0
  102. package/dist/internal/api/models/PromptCommitInfo.d.ts +12 -0
  103. package/dist/internal/api/models/PromptCommitInfo.d.ts.map +1 -0
  104. package/dist/internal/api/models/PromptScorer.d.ts +4 -9
  105. package/dist/internal/api/models/PromptScorer.d.ts.map +1 -1
  106. package/dist/internal/api/models/PullAllDatasetsResponse.d.ts +3 -0
  107. package/dist/internal/api/models/PullAllDatasetsResponse.d.ts.map +1 -0
  108. package/dist/internal/api/models/PullDatasetResponse.d.ts +8 -0
  109. package/dist/internal/api/models/PullDatasetResponse.d.ts.map +1 -0
  110. package/dist/internal/api/models/ResolveProjectRequest.d.ts +4 -0
  111. package/dist/internal/api/models/ResolveProjectRequest.d.ts.map +1 -0
  112. package/dist/internal/api/models/ResolveProjectResponse.d.ts +4 -0
  113. package/dist/internal/api/models/ResolveProjectResponse.d.ts.map +1 -0
  114. package/dist/internal/api/models/ScorerConfig.d.ts +5 -9
  115. package/dist/internal/api/models/ScorerConfig.d.ts.map +1 -1
  116. package/dist/internal/api/models/ScorerExistsResponse.d.ts +0 -4
  117. package/dist/internal/api/models/ScorerExistsResponse.d.ts.map +1 -1
  118. package/dist/internal/api/models/ScoringResult.d.ts +1 -14
  119. package/dist/internal/api/models/ScoringResult.d.ts.map +1 -1
  120. package/dist/internal/api/models/TagPromptRequest.d.ts +5 -0
  121. package/dist/internal/api/models/TagPromptRequest.d.ts.map +1 -0
  122. package/dist/internal/api/models/TagPromptResponse.d.ts +4 -0
  123. package/dist/internal/api/models/TagPromptResponse.d.ts.map +1 -0
  124. package/dist/internal/api/models/TraceEvaluationRun.d.ts +12 -14
  125. package/dist/internal/api/models/TraceEvaluationRun.d.ts.map +1 -1
  126. package/dist/internal/api/models/TraceInfo.d.ts +5 -0
  127. package/dist/internal/api/models/TraceInfo.d.ts.map +1 -0
  128. package/dist/internal/api/models/TraceScoringResult.d.ts +59 -0
  129. package/dist/internal/api/models/TraceScoringResult.d.ts.map +1 -0
  130. package/dist/internal/api/models/TraceSpan.d.ts +25 -0
  131. package/dist/internal/api/models/TraceSpan.d.ts.map +1 -0
  132. package/dist/internal/api/models/TriggerRootSpanRulesRequest.d.ts +5 -0
  133. package/dist/internal/api/models/TriggerRootSpanRulesRequest.d.ts.map +1 -0
  134. package/dist/internal/api/models/TriggerRootSpanRulesResponse.d.ts +5 -0
  135. package/dist/internal/api/models/TriggerRootSpanRulesResponse.d.ts.map +1 -0
  136. package/dist/internal/api/models/UntagPromptRequest.d.ts +4 -0
  137. package/dist/internal/api/models/UntagPromptRequest.d.ts.map +1 -0
  138. package/dist/internal/api/models/UntagPromptResponse.d.ts +4 -0
  139. package/dist/internal/api/models/UntagPromptResponse.d.ts.map +1 -0
  140. package/dist/internal/api/models/UploadCustomScorerRequest.d.ts +11 -0
  141. package/dist/internal/api/models/UploadCustomScorerRequest.d.ts.map +1 -0
  142. package/dist/internal/api/models/UploadCustomScorerResponse.d.ts +6 -0
  143. package/dist/internal/api/models/UploadCustomScorerResponse.d.ts.map +1 -0
  144. package/dist/internal/api/models/WelcomeResponse.d.ts +4 -0
  145. package/dist/internal/api/models/WelcomeResponse.d.ts.map +1 -0
  146. package/dist/internal/api/models/index.d.ts +61 -0
  147. package/dist/internal/api/models/index.d.ts.map +1 -0
  148. package/dist/trace/BaseTracer.d.ts +79 -0
  149. package/dist/trace/BaseTracer.d.ts.map +1 -0
  150. package/dist/trace/JudgmentTracerProvider.d.ts +37 -0
  151. package/dist/trace/JudgmentTracerProvider.d.ts.map +1 -0
  152. package/dist/trace/Tracer.d.ts +13 -0
  153. package/dist/trace/Tracer.d.ts.map +1 -0
  154. package/dist/{tracer → trace}/exporters/JudgmentSpanExporter.d.ts +4 -4
  155. package/dist/trace/exporters/JudgmentSpanExporter.d.ts.map +1 -0
  156. package/dist/{tracer → trace}/exporters/NoOpSpanExporter.d.ts +4 -2
  157. package/dist/trace/exporters/NoOpSpanExporter.d.ts.map +1 -0
  158. package/dist/trace/exporters/index.d.ts.map +1 -0
  159. package/dist/trace/index.d.ts +8 -0
  160. package/dist/trace/index.d.ts.map +1 -0
  161. package/dist/trace/instrumentation/OtelContextBridge.d.ts +4 -0
  162. package/dist/trace/instrumentation/OtelContextBridge.d.ts.map +1 -0
  163. package/dist/trace/processors/JudgmentSpanProcessor.d.ts +21 -0
  164. package/dist/trace/processors/JudgmentSpanProcessor.d.ts.map +1 -0
  165. package/dist/{tracer/processors/NoOpJudgmentSpanProcessor.d.ts → trace/processors/NoOpSpanProcessor.d.ts} +7 -6
  166. package/dist/trace/processors/NoOpSpanProcessor.d.ts.map +1 -0
  167. package/dist/{tracer → trace}/processors/_lifecycles/CustomerIdProcessor.d.ts +4 -3
  168. package/dist/trace/processors/_lifecycles/CustomerIdProcessor.d.ts.map +1 -0
  169. package/dist/{tracer → trace}/processors/_lifecycles/SessionIdProcessor.d.ts +4 -3
  170. package/dist/trace/processors/_lifecycles/SessionIdProcessor.d.ts.map +1 -0
  171. package/dist/trace/processors/_lifecycles/contextKeys.d.ts +3 -0
  172. package/dist/trace/processors/_lifecycles/contextKeys.d.ts.map +1 -0
  173. package/dist/{tracer → trace}/processors/_lifecycles/index.d.ts +2 -1
  174. package/dist/trace/processors/_lifecycles/index.d.ts.map +1 -0
  175. package/dist/trace/processors/_lifecycles/registry.d.ts +7 -0
  176. package/dist/trace/processors/_lifecycles/registry.d.ts.map +1 -0
  177. package/dist/trace/processors/index.d.ts +4 -0
  178. package/dist/trace/processors/index.d.ts.map +1 -0
  179. package/dist/utils/resolveProjectId.d.ts.map +1 -1
  180. package/dist/utils/serializer.d.ts +8 -0
  181. package/dist/utils/serializer.d.ts.map +1 -1
  182. package/package.json +1 -1
  183. package/dist/data/APIScorerType.d.ts +0 -10
  184. package/dist/data/APIScorerType.d.ts.map +0 -1
  185. package/dist/data/Example.d.ts +0 -20
  186. package/dist/data/Example.d.ts.map +0 -1
  187. package/dist/data/ScorerData.d.ts +0 -28
  188. package/dist/data/ScorerData.d.ts.map +0 -1
  189. package/dist/data/ScoringResult.d.ts +0 -24
  190. package/dist/data/ScoringResult.d.ts.map +0 -1
  191. package/dist/data/index.d.ts +0 -5
  192. package/dist/data/index.d.ts.map +0 -1
  193. package/dist/evaluation/Evaluation.d.ts +0 -9
  194. package/dist/evaluation/Evaluation.d.ts.map +0 -1
  195. package/dist/evaluation/EvaluationFactory.d.ts +0 -8
  196. package/dist/evaluation/EvaluationFactory.d.ts.map +0 -1
  197. package/dist/evaluation/index.d.ts +0 -3
  198. package/dist/evaluation/index.d.ts.map +0 -1
  199. package/dist/internal/api/models/EvalResults.d.ts +0 -12
  200. package/dist/internal/api/models/EvalResults.d.ts.map +0 -1
  201. package/dist/internal/api/models/EvalResultsFetch.d.ts +0 -9
  202. package/dist/internal/api/models/EvalResultsFetch.d.ts.map +0 -1
  203. package/dist/internal/api/models/FetchPromptScorersRequest.d.ts +0 -9
  204. package/dist/internal/api/models/FetchPromptScorersRequest.d.ts.map +0 -1
  205. package/dist/internal/api/models/OtelTraceSpan.d.ts +0 -25
  206. package/dist/internal/api/models/OtelTraceSpan.d.ts.map +0 -1
  207. package/dist/internal/api/models/ResolveProjectNameRequest.d.ts +0 -8
  208. package/dist/internal/api/models/ResolveProjectNameRequest.d.ts.map +0 -1
  209. package/dist/internal/api/models/ResolveProjectNameResponse.d.ts +0 -8
  210. package/dist/internal/api/models/ResolveProjectNameResponse.d.ts.map +0 -1
  211. package/dist/internal/api/models/SavePromptScorerRequest.d.ts +0 -14
  212. package/dist/internal/api/models/SavePromptScorerRequest.d.ts.map +0 -1
  213. package/dist/internal/api/models/SavePromptScorerResponse.d.ts +0 -9
  214. package/dist/internal/api/models/SavePromptScorerResponse.d.ts.map +0 -1
  215. package/dist/internal/api/models/ScorerData.d.ts +0 -17
  216. package/dist/internal/api/models/ScorerData.d.ts.map +0 -1
  217. package/dist/internal/api/models/ScorerExistsRequest.d.ts +0 -8
  218. package/dist/internal/api/models/ScorerExistsRequest.d.ts.map +0 -1
  219. package/dist/internal/api/models.d.ts +0 -26
  220. package/dist/internal/api/models.d.ts.map +0 -1
  221. package/dist/judgmentAttributeKeys.d.ts.map +0 -1
  222. package/dist/scorers/APIScorer.d.ts +0 -40
  223. package/dist/scorers/APIScorer.d.ts.map +0 -1
  224. package/dist/scorers/BaseScorer.d.ts +0 -6
  225. package/dist/scorers/BaseScorer.d.ts.map +0 -1
  226. package/dist/scorers/ScorersFactory.d.ts +0 -13
  227. package/dist/scorers/ScorersFactory.d.ts.map +0 -1
  228. package/dist/scorers/builtIn/AnswerCorrectnessScorer.d.ts +0 -11
  229. package/dist/scorers/builtIn/AnswerCorrectnessScorer.d.ts.map +0 -1
  230. package/dist/scorers/builtIn/AnswerRelevancyScorer.d.ts +0 -11
  231. package/dist/scorers/builtIn/AnswerRelevancyScorer.d.ts.map +0 -1
  232. package/dist/scorers/builtIn/BuiltInScorersFactory.d.ts +0 -9
  233. package/dist/scorers/builtIn/BuiltInScorersFactory.d.ts.map +0 -1
  234. package/dist/scorers/builtIn/FaithfulnessScorer.d.ts +0 -11
  235. package/dist/scorers/builtIn/FaithfulnessScorer.d.ts.map +0 -1
  236. package/dist/scorers/builtIn/index.d.ts +0 -5
  237. package/dist/scorers/builtIn/index.d.ts.map +0 -1
  238. package/dist/scorers/customScorer/CustomScorer.d.ts +0 -16
  239. package/dist/scorers/customScorer/CustomScorer.d.ts.map +0 -1
  240. package/dist/scorers/customScorer/CustomScorerFactory.d.ts +0 -5
  241. package/dist/scorers/customScorer/CustomScorerFactory.d.ts.map +0 -1
  242. package/dist/scorers/customScorer/index.d.ts +0 -3
  243. package/dist/scorers/customScorer/index.d.ts.map +0 -1
  244. package/dist/scorers/index.d.ts +0 -9
  245. package/dist/scorers/index.d.ts.map +0 -1
  246. package/dist/scorers/promptScorer/PromptScorer.d.ts +0 -35
  247. package/dist/scorers/promptScorer/PromptScorer.d.ts.map +0 -1
  248. package/dist/scorers/promptScorer/PromptScorerFactory.d.ts +0 -12
  249. package/dist/scorers/promptScorer/PromptScorerFactory.d.ts.map +0 -1
  250. package/dist/scorers/promptScorer/index.d.ts +0 -3
  251. package/dist/scorers/promptScorer/index.d.ts.map +0 -1
  252. package/dist/tracer/BaseTracer.d.ts +0 -114
  253. package/dist/tracer/BaseTracer.d.ts.map +0 -1
  254. package/dist/tracer/BrowserTracer.d.ts +0 -28
  255. package/dist/tracer/BrowserTracer.d.ts.map +0 -1
  256. package/dist/tracer/BrowserTracerFactory.d.ts +0 -8
  257. package/dist/tracer/BrowserTracerFactory.d.ts.map +0 -1
  258. package/dist/tracer/JudgmentNodeTracerProvider.d.ts +0 -30
  259. package/dist/tracer/JudgmentNodeTracerProvider.d.ts.map +0 -1
  260. package/dist/tracer/NoOpSpan.d.ts +0 -15
  261. package/dist/tracer/NoOpSpan.d.ts.map +0 -1
  262. package/dist/tracer/NoOpTracer.d.ts +0 -9
  263. package/dist/tracer/NoOpTracer.d.ts.map +0 -1
  264. package/dist/tracer/NodeTracer.d.ts +0 -41
  265. package/dist/tracer/NodeTracer.d.ts.map +0 -1
  266. package/dist/tracer/NodeTracerFactory.d.ts +0 -8
  267. package/dist/tracer/NodeTracerFactory.d.ts.map +0 -1
  268. package/dist/tracer/exporters/JudgmentSpanExporter.d.ts.map +0 -1
  269. package/dist/tracer/exporters/NoOpSpanExporter.d.ts.map +0 -1
  270. package/dist/tracer/exporters/index.d.ts.map +0 -1
  271. package/dist/tracer/index.d.ts +0 -10
  272. package/dist/tracer/index.d.ts.map +0 -1
  273. package/dist/tracer/processors/JudgmentSpanProcessor.d.ts +0 -13
  274. package/dist/tracer/processors/JudgmentSpanProcessor.d.ts.map +0 -1
  275. package/dist/tracer/processors/NoOpJudgmentSpanProcessor.d.ts.map +0 -1
  276. package/dist/tracer/processors/_lifecycles/CustomerIdProcessor.d.ts.map +0 -1
  277. package/dist/tracer/processors/_lifecycles/SessionIdProcessor.d.ts.map +0 -1
  278. package/dist/tracer/processors/_lifecycles/index.d.ts.map +0 -1
  279. package/dist/tracer/processors/_lifecycles/registry.d.ts +0 -6
  280. package/dist/tracer/processors/_lifecycles/registry.d.ts.map +0 -1
  281. package/dist/utils/generators.d.ts +0 -3
  282. package/dist/utils/generators.d.ts.map +0 -1
  283. package/dist/utils/guards.d.ts +0 -4
  284. package/dist/utils/guards.d.ts.map +0 -1
  285. package/dist/utils/index.d.ts +0 -8
  286. package/dist/utils/index.d.ts.map +0 -1
  287. package/dist/utils/types.d.ts +0 -4
  288. package/dist/utils/types.d.ts.map +0 -1
  289. package/dist/utils/validation.d.ts +0 -11
  290. package/dist/utils/validation.d.ts.map +0 -1
  291. /package/dist/{tracer → trace}/exporters/index.d.ts +0 -0
package/README.md CHANGED
@@ -7,45 +7,19 @@
7
7
 
8
8
  Find the latest version on [npm](https://www.npmjs.com/package/judgeval).
9
9
 
10
- **npm:**
11
-
12
10
  ```bash
13
11
  npm install judgeval
14
12
  ```
15
13
 
16
- **yarn:**
17
-
18
- ```bash
19
- yarn add judgeval
20
- ```
21
-
22
- **bun:**
23
-
24
- ```bash
25
- bun add judgeval
26
- ```
27
-
28
- **pnpm:**
29
-
30
- ```bash
31
- pnpm add judgeval
32
- ```
33
-
34
14
  ## Usage
35
15
 
36
16
  ### Tracer
37
17
 
38
18
  ```typescript
39
- import { OpenAIInstrumentation } from "@opentelemetry/instrumentation-openai";
40
- import { Judgeval, type NodeTracer } from "judgeval";
41
-
42
- const client = Judgeval.create();
19
+ import { Tracer } from "judgeval";
43
20
 
44
- const tracer = await client.nodeTracer.create({
21
+ const tracer = await Tracer.init({
45
22
  projectName: "my-llm-app",
46
- enableEvaluation: true,
47
- enableMonitoring: true,
48
- instrumentations: [new OpenAIInstrumentation()],
49
23
  });
50
24
 
51
25
  async function chatWithUser(userMessage: string): Promise<string> {
@@ -56,25 +30,31 @@ async function chatWithUser(userMessage: string): Promise<string> {
56
30
  return response.choices[0].message.content || "";
57
31
  }
58
32
 
59
- const tracedChat = tracer.observe(chatWithUser);
33
+ const tracedChat = Tracer.observe(chatWithUser);
60
34
  const result = await tracedChat("What is the capital of France?");
61
35
 
62
- await tracer.shutdown();
36
+ await Tracer.shutdown();
63
37
  ```
64
38
 
65
- ### Scorer
39
+ ### Async Evaluation
40
+
41
+ Trigger server-side evaluation on the current span:
66
42
 
67
43
  ```typescript
68
- import { Example } from "judgeval";
44
+ import { Tracer } from "judgeval";
45
+
46
+ const tracedChat = Tracer.observe(async (userMessage: string) => {
47
+ const response = await openai.chat.completions.create({
48
+ model: "gpt-4o-mini",
49
+ messages: [{ role: "user", content: userMessage }],
50
+ });
69
51
 
70
- const scorer = client.scorers.builtIn.answerRelevancy();
52
+ Tracer.asyncEvaluate("Relevancy");
71
53
 
72
- const example = Example.create({
73
- input: "What is the capital of France?",
74
- actual_output: "Paris is the capital of France.",
54
+ return response.choices[0].message.content || "";
75
55
  });
76
56
 
77
- await tracer.asyncEvaluate(scorer, example);
57
+ await tracedChat("What is the capital of France?");
78
58
  ```
79
59
 
80
60
  ## Documentation
@@ -1,7 +1,3 @@
1
- import { EvaluationFactory } from "./evaluation/EvaluationFactory";
2
- import { ScorersFactory } from "./scorers/ScorersFactory";
3
- import { BrowserTracerFactory } from "./tracer/BrowserTracerFactory";
4
- import { NodeTracerFactory } from "./tracer/NodeTracerFactory";
5
1
  export interface JudgevalConfig {
6
2
  apiKey?: string;
7
3
  organizationId?: string;
@@ -11,9 +7,5 @@ export declare class Judgeval {
11
7
  private readonly internalClient;
12
8
  protected constructor(config?: JudgevalConfig);
13
9
  static create(config?: JudgevalConfig): Judgeval;
14
- get nodeTracer(): NodeTracerFactory;
15
- get browserTracer(): BrowserTracerFactory;
16
- get scorers(): ScorersFactory;
17
- get evaluation(): EvaluationFactory;
18
10
  }
19
11
  //# sourceMappingURL=Judgeval.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"Judgeval.d.ts","sourceRoot":"","sources":["../src/Judgeval.ts"],"names":[],"mappings":"AAEA,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;CAGrD"}
@@ -5,7 +5,6 @@ export declare enum AttributeKeys {
5
5
  JUDGMENT_OFFLINE_MODE = "judgment.offline_mode",
6
6
  JUDGMENT_UPDATE_ID = "judgment.update_id",
7
7
  JUDGMENT_CUSTOMER_ID = "judgment.customer_id",
8
- JUDGMENT_SESSION_ID = "judgment.session_id",
9
8
  JUDGMENT_AGENT_ID = "judgment.agent_id",
10
9
  JUDGMENT_PARENT_AGENT_ID = "judgment.parent_agent_id",
11
10
  JUDGMENT_AGENT_CLASS_NAME = "judgment.agent_class_name",
@@ -15,6 +14,16 @@ export declare enum AttributeKeys {
15
14
  JUDGMENT_STATE_BEFORE = "judgment.state_before",
16
15
  JUDGMENT_STATE_AFTER = "judgment.state_after",
17
16
  JUDGMENT_PENDING_TRACE_EVAL = "judgment.pending_trace_eval",
17
+ JUDGMENT_USAGE_METADATA = "judgment.usage.metadata",
18
+ JUDGMENT_LLM_PROVIDER = "judgment.llm.provider",
19
+ JUDGMENT_LLM_MODEL_NAME = "judgment.llm.model",
20
+ JUDGMENT_USAGE_NON_CACHED_INPUT_TOKENS = "judgment.usage.non_cached_input_tokens",
21
+ JUDGMENT_USAGE_CACHE_CREATION_INPUT_TOKENS = "judgment.usage.cache_creation_input_tokens",
22
+ JUDGMENT_USAGE_CACHE_READ_INPUT_TOKENS = "judgment.usage.cache_read_input_tokens",
23
+ JUDGMENT_USAGE_OUTPUT_TOKENS = "judgment.usage.output_tokens",
24
+ JUDGMENT_USAGE_TOTAL_COST_USD = "judgment.usage.total_cost_usd",
25
+ JUDGMENT_SESSION_ID = "judgment.session_id",
26
+ JUDGMENT_PROJECT_ID_OVERRIDE = "judgment.project_id_override",
18
27
  GEN_AI_PROMPT = "gen_ai.prompt",
19
28
  GEN_AI_COMPLETION = "gen_ai.completion",
20
29
  GEN_AI_REQUEST_MODEL = "gen_ai.request.model",
@@ -28,6 +37,11 @@ export declare enum AttributeKeys {
28
37
  GEN_AI_REQUEST_MAX_TOKENS = "gen_ai.request.max_tokens",
29
38
  GEN_AI_RESPONSE_FINISH_REASONS = "gen_ai.response.finish_reasons"
30
39
  }
40
+ export declare enum InternalAttributeKeys {
41
+ DISABLE_PARTIAL_EMIT = "disable_partial_emit",
42
+ CANCELLED = "cancelled",
43
+ IS_CUSTOMER_CONTEXT_OWNER = "is_customer_context_owner"
44
+ }
31
45
  export declare enum ResourceKeys {
32
46
  SERVICE_NAME = "service.name",
33
47
  TELEMETRY_SDK_LANGUAGE = "telemetry.sdk.language",
@@ -35,4 +49,4 @@ export declare enum ResourceKeys {
35
49
  TELEMETRY_SDK_VERSION = "telemetry.sdk.version",
36
50
  JUDGMENT_PROJECT_ID = "judgment.project_id"
37
51
  }
38
- //# sourceMappingURL=judgmentAttributeKeys.d.ts.map
52
+ //# sourceMappingURL=JudgmentAttributeKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JudgmentAttributeKeys.d.ts","sourceRoot":"","sources":["../src/JudgmentAttributeKeys.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,kBAAkB,uBAAuB;IACzC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,qBAAqB,0BAA0B;IAC/C,kBAAkB,uBAAuB;IACzC,oBAAoB,yBAAyB;IAC7C,iBAAiB,sBAAsB;IACvC,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,4BAA4B,iCAAiC;IAC7D,6BAA6B,kCAAkC;IAC/D,4BAA4B,iCAAiC;IAC7D,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,2BAA2B,gCAAgC;IAC3D,uBAAuB,4BAA4B;IAEnD,qBAAqB,0BAA0B;IAC/C,uBAAuB,uBAAuB;IAC9C,sCAAsC,2CAA2C;IACjF,0CAA0C,+CAA+C;IACzF,sCAAsC,2CAA2C;IACjF,4BAA4B,iCAAiC;IAC7D,6BAA6B,kCAAkC;IAE/D,mBAAmB,wBAAwB;IAC3C,4BAA4B,iCAAiC;IAE7D,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;IACvC,oBAAoB,yBAAyB;IAC7C,qBAAqB,0BAA0B;IAC/C,aAAa,kBAAkB;IAC/B,yBAAyB,8BAA8B;IACvD,0BAA0B,+BAA+B;IACzD,wCAAwC,6CAA6C;IACrF,oCAAoC,yCAAyC;IAC7E,0BAA0B,+BAA+B;IACzD,yBAAyB,8BAA8B;IACvD,8BAA8B,mCAAmC;CAClE;AAED,oBAAY,qBAAqB;IAC/B,oBAAoB,yBAAyB;IAC7C,SAAS,cAAc;IACvB,yBAAyB,8BAA8B;CACxD;AAED,oBAAY,YAAY;IACtB,YAAY,iBAAiB;IAC7B,sBAAsB,2BAA2B;IACjD,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;IAC/C,mBAAmB,wBAAwB;CAC5C"}
package/dist/env.d.ts CHANGED
@@ -1,13 +1,5 @@
1
1
  export declare const JUDGMENT_API_KEY: string | null;
2
2
  export declare const JUDGMENT_ORG_ID: string | null;
3
3
  export declare const JUDGMENT_API_URL: string;
4
- export declare const JUDGMENT_DEFAULT_GPT_MODEL: string;
5
- export declare const JUDGMENT_ENABLE_MONITORING: string;
6
- export declare const JUDGMENT_ENABLE_EVALUATIONS: string;
7
- export declare const JUDGMENT_NO_COLOR: string | null;
8
4
  export declare const JUDGMENT_LOG_LEVEL: string;
9
- export declare const OPENAI_API_KEY: string | null;
10
- export declare const ANTHROPIC_API_KEY: string | null;
11
- export declare const GOOGLE_API_KEY: string | null;
12
- export declare const GEMINI_API_KEY: string | null;
13
5
  //# sourceMappingURL=env.d.ts.map
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,gBAAgB,eAAgC,CAAC;AAC9D,eAAO,MAAM,eAAe,eAA+B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,QAG5B,CAAC;AACF,eAAO,MAAM,0BAA0B,QAGtC,CAAC;AACF,eAAO,MAAM,0BAA0B,QAGtC,CAAC;AACF,eAAO,MAAM,2BAA2B,QAGvC,CAAC;AACF,eAAO,MAAM,iBAAiB,eAAiC,CAAC;AAChE,eAAO,MAAM,kBAAkB,QAA0C,CAAC;AAE1E,eAAO,MAAM,cAAc,eAA8B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,eAAiC,CAAC;AAChE,eAAO,MAAM,cAAc,eAA8B,CAAC;AAC1D,eAAO,MAAM,cAAc,eAA8B,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,gBAAgB,eAAgC,CAAC;AAC9D,eAAO,MAAM,eAAe,eAA+B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,QAG5B,CAAC;AACF,eAAO,MAAM,kBAAkB,QAA0C,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- var{defineProperty:Q,getOwnPropertyNames:Ce,getOwnPropertyDescriptor:Ie}=Object,Oe=Object.prototype.hasOwnProperty;var ne=new WeakMap,xe=(e)=>{var t=ne.get(e),r;if(t)return t;if(t=Q({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Ce(e).map((i)=>!Oe.call(t,i)&&Q(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable}));return ne.set(e,t),t};var be=(e,t)=>{for(var r in t)Q(e,r,{get:t[r],enumerable:!0,configurable:!0,set:(i)=>t[r]=()=>i})};var je={};be(je,{ScoringResult:()=>B,ScorersFactory:()=>U,ScorerData:()=>z,PromptScorerFactory:()=>R,PromptScorer:()=>G,NodeTracerFactory:()=>j,NodeTracer:()=>C,NoOpSpanExporter:()=>P,JudgmentSpanExporter:()=>y,Judgeval:()=>Y,FaithfulnessScorer:()=>A,Example:()=>I,EvaluationFactory:()=>x,Evaluation:()=>O,CustomScorerFactory:()=>D,CustomScorer:()=>b,BuiltInScorersFactory:()=>w,BrowserTracerFactory:()=>F,BrowserTracer:()=>M,BaseTracer:()=>_,BaseScorer:()=>v,AnswerRelevancyScorer:()=>g,AnswerCorrectnessScorer:()=>N,APIScorer:()=>h});module.exports=xe(je);function m(e,t){let r=process.env[e];if(!r)return t??null;return r}var ae=m("JUDGMENT_API_KEY"),le=m("JUDGMENT_ORG_ID"),de=m("JUDGMENT_API_URL","https://api.judgmentlabs.ai"),ce=m("JUDGMENT_DEFAULT_GPT_MODEL","gpt-5-mini"),$e=m("JUDGMENT_ENABLE_MONITORING","true"),Le=m("JUDGMENT_ENABLE_EVALUATIONS","true"),qe=m("JUDGMENT_NO_COLOR"),ue=m("JUDGMENT_LOG_LEVEL","warn"),He=m("OPENAI_API_KEY"),Ye=m("ANTHROPIC_API_KEY"),ze=m("GOOGLE_API_KEY"),Be=m("GEMINI_API_KEY");class X{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 O{client;constructor(e){this.client=e.client}}class x{client;constructor(e){this.client=e}create(e={}){return new O({...e,client:this.client})}}var S={PROMPT_SCORER:"Prompt Scorer",TRACE_PROMPT_SCORER:"Trace Prompt Scorer",FAITHFULNESS:"Faithfulness",ANSWER_RELEVANCY:"Answer Relevancy",ANSWER_CORRECTNESS:"Answer Correctness",CUSTOM:"Custom"};class v{}class h extends v{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 pe(this,e)}}class pe{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 N extends h{constructor(e={}){super(S.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 g extends h{constructor(e={}){super(S.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 A extends h{constructor(e={}){super(S.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 w{answerCorrectness(e={}){return new N(e)}answerRelevancy(e={}){return new g(e)}faithfulness(e={}){return new A(e)}}class b extends h{_className;_serverHosted;constructor(e){super(S.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 D{get(e,t){return new b({name:e,className:t??e,serverHosted:!0})}}var De=async function*(){}.constructor,Ge=function*(){}.constructor;function me(e){return e instanceof De}function he(e){return e instanceof Ge}class o{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=o.Level.WARNING;static useColor=!0;static initialize(){if(!o.initialized){let e=process.env.JUDGMENT_NO_COLOR;o.useColor=!e&&process.stdout.isTTY;let t=ue.toLowerCase();if(t){let r={debug:o.Level.DEBUG,info:o.Level.INFO,warning:o.Level.WARNING,warn:o.Level.WARNING,error:o.Level.ERROR,critical:o.Level.CRITICAL};o.currentLevel=r[t]??o.Level.WARNING}o.initialized=!0}}static setLevel(e){o.currentLevel=e}static setUseColor(e){o.useColor=e}static log(e,t){if(o.initialize(),e<o.currentLevel)return;let r=new Date().toISOString().replace("T"," ").substring(0,19),i=Object.keys(o.Level).find((c)=>o.Level[c]===e)??"UNKNOWN",n=`${r} - judgeval - ${i} - ${t}`;if(o.useColor)n=`${e===o.Level.DEBUG||e===o.Level.INFO?o.GRAY:e===o.Level.WARNING?o.YELLOW:o.RED}${n}${o.RESET}`;(e>=o.Level.ERROR?process.stderr:process.stdout).write(n+`
2
- `)}static debug(e){o.log(o.Level.DEBUG,e)}static info(e){o.log(o.Level.INFO,e)}static warning(e){o.log(o.Level.WARNING,e)}static warn(e){o.log(o.Level.WARNING,e)}static error(e){o.log(o.Level.ERROR,e)}static critical(e){o.log(o.Level.CRITICAL,e)}}var _e=new Map;async function Ee(e,t){let r=`org:${e.getOrganizationId()}:project:${t}`,i=_e.get(r);if(i)return i;o.info(`Resolving project ID for project: ${t}`);let a=(await e.projectsResolve({project_name:t})).project_id;if(!a)throw Error(`Project ID not found for project: ${t}`);return o.info(`Resolved project ID: ${a}`),_e.set(r,a),a}class G extends v{_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?S.TRACE_PROMPT_SCORER:S.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 R{client;isTrace;static cache=new Map;constructor(e,t){this.client=e,this.isTrace=t}async get(e){let t=this.getCacheKey(e),r=R.cache.get(t);if(r)return this._create(r,e);try{let i={names:[e]},n=await this.client.fetchScorers(i);if(n.scorers.length===0)throw Error(`Failed to fetch prompt scorer '${e}': not found`);let a=n.scorers[0],c=a.is_trace===!0;if(c!==this.isTrace){let s=this.isTrace?"TracePromptScorer":"PromptScorer";throw Error(`Scorer with name ${e} is a ${c?"TracePromptScorer":"PromptScorer"}, not a ${s}`)}return R.cache.set(t,a),this._create(a,e)}catch(i){return o.error(`Failed to fetch prompt scorer '${e}': ${i}`),null}}_create(e,t){let r;if(e.options&&typeof e.options==="object"){r={};for(let[i,n]of Object.entries(e.options))if(typeof n==="number")r[i]=n}return new G({name:t,prompt:e.prompt,threshold:e.threshold,options:r??{},model:e.model??ce,description:e.description??"",isTrace:this.isTrace})}getCacheKey(e){return`${e}:${this.client.getApiKey()}:${this.client.getOrganizationId()}`}}class U{client;constructor(e){this.client=e}get promptScorer(){return new R(this.client,!1)}get tracePromptScorer(){return new R(this.client,!0)}get customScorer(){return new D}get builtIn(){return new w}}var Z;function Ue(e,t){if(typeof t==="bigint")return t.toString();if(typeof t==="object"&&t!==null){if(Z.has(t))return"[Circular]";Z.add(t)}return t}function J(e){try{let t=JSON.stringify(e);if(typeof t==="string")return t;return String(t)}catch{try{Z=new WeakSet;let t=JSON.stringify(e,Ue);return typeof t==="string"?t:String(e)}catch(t){return o.error(`safeStringify failed: ${t}`),String(e)}}}var Ne=require("@opentelemetry/resources"),ge=require("@opentelemetry/sdk-trace-web");var Se="0.8.4";var q=Se;var d=require("@opentelemetry/api");var fe=require("@opentelemetry/exporter-trace-otlp-http");class y{delegate;constructor(e,t,r,i){this.delegate=new fe.OTLPTraceExporter({url:e,headers:{Authorization:`Bearer ${t}`,"X-Organization-Id":r,"X-Project-Id":i}})}export(e,t){o.info(`JudgmentSpanExporter: exporting ${e.length} spans`),this.delegate.export(e,t)}shutdown(){return this.delegate.shutdown()}forceFlush(){return this.delegate.forceFlush?.()??Promise.resolve()}}class P{export(e,t){t({code:0})}shutdown(){return Promise.resolve()}}var Te=require("@opentelemetry/sdk-trace-base");class k extends Te.BatchSpanProcessor{tracer;constructor(e,t,r){let i={maxQueueSize:r?.maxQueueSize,scheduledDelayMillis:r?.scheduledDelayMillis,maxExportBatchSize:r?.maxExportBatchSize,exportTimeoutMillis:r?.exportTimeoutMillis};super(t,i);this.tracer=e}}class K extends k{constructor(e){super(e,new P)}onStart(e,t){return}onEnd(e){return}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}onShutdown(){return}}class _{static TRACER_NAME="judgeval";projectName;enableEvaluation;apiClient;serializer;jsonEncoder;projectId;constructor(e,t,r,i,n=J){this.projectName=e,this.enableEvaluation=t,this.apiClient=r,this.serializer=i,this.jsonEncoder=n,this.projectId=null}async resolveAndSetProjectId(){try{this.projectId=await Ee(this.apiClient,this.projectName)}catch{o.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 new y(this.buildEndpoint(this.apiClient.getBaseUrl()),this.apiClient.getApiKey(),this.apiClient.getOrganizationId(),this.projectId);return o.error("Project not resolved; cannot create exporter, returning NoOpSpanExporter"),new P}getSpanProcessor(){if(this.projectId!==null)return new k(this,this.getSpanExporter());return o.error("Project not resolved; cannot create processor, returning NoOpSpanProcessor"),new K(this)}getTracer(){return d.trace.getTracer(_.TRACER_NAME)}setSpanKind(e){if(!e)return;let t=d.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=d.trace.getActiveSpan();if(r){let i=typeof t==="string"||typeof t==="number"||typeof t==="boolean"?t:this.serializer(t);r.setAttribute(e,i)}}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)}setCustomerId(e){let t=d.trace.getActiveSpan();if(!t)return;t.setAttribute("judgment.customer_id",e)}setSessionId(e){let t=d.trace.getActiveSpan();if(!t)return;t.setAttribute("judgment.session_id",e)}asyncEvaluate(e,t){this.safeExecute("evaluate scorer",()=>{if(!this.enableEvaluation)return;let r=this.getSampledSpanContext();if(!r)return;let{traceId:i,spanId:n}=r;this.logEvaluationInfo("asyncEvaluate",i,n,e.getName());let a=this.createEvaluationRun(e,t,i,n);this.enqueueEvaluation(a).catch((c)=>{o.error(`Failed to enqueue evaluation run: ${c}`)})})}asyncTraceEvaluate(e){this.safeExecute("evaluate trace scorer",()=>{if(!this.enableEvaluation)return;let t=this.getSampledSpan();if(!t)return;let r=t.spanContext(),i=r.traceId,n=r.spanId;this.logEvaluationInfo("asyncTraceEvaluate",i,n,e.getName());let a=this.createTraceEvaluationRun(e,i,n);try{let c=JSON.stringify(a);t.setAttribute("judgment.pending_trace_eval",c)}catch(c){o.error(`Failed to serialize trace evaluation: ${c}`)}})}span(e,t,r){return this.getTracer().startSpan(e,t??{},r??d.context.active())}with(e,t,r,i){return this.getTracer().startActiveSpan(e,r??{},i??d.context.active(),(a)=>{try{let c=t(a);if(c instanceof Promise)return c.catch((s)=>{throw a.recordException(s),a.setStatus({code:d.SpanStatusCode.ERROR,message:String(s)}),s}).finally(()=>{a.end()});return a.end(),c}catch(c){throw a.setStatus({code:d.SpanStatusCode.ERROR}),a.recordException(c),a.end(),c}})}observe(e,t="span",r,i,n){let a=r??e.name;if(me(e))return this.observeAsyncGenerator(e,t,a,i,n);if(he(e))return this.observeGenerator(e,t,a,i,n);let c=this.getTracer();return(...s)=>{return c.startActiveSpan(a,i??{},n??d.context.active(),(u)=>{if(t)u.setAttribute("judgment.span_kind",t);try{let T=this.formatInputs(e,s);u.setAttribute("judgment.input",this.serializer(T));let p=e(...s);if(p instanceof Promise)return p.then((f)=>{return u.setAttribute("judgment.output",this.serializer(f)),f}).catch((f)=>{throw u.recordException(f),u.setStatus({code:d.SpanStatusCode.ERROR,message:String(f)}),f}).finally(()=>{u.end()});return u.setAttribute("judgment.output",this.serializer(p)),u.end(),p}catch(T){throw u.recordException(T),u.setStatus({code:d.SpanStatusCode.ERROR,message:String(T)}),u.end(),T}})}}observeAsyncGenerator(e,t,r,i,n){return(...a)=>{let c=n??d.context.active(),s=this.getTracer().startSpan(r,i??{},c),u=d.trace.setSpan(c,s);if(t)s.setAttribute("judgment.span_kind",t);let T=this.formatInputs(e,a);s.setAttribute("judgment.input",this.serializer(T));let p=d.context.with(u,()=>e(...a)),f=d.context.bind(u,async(...E)=>{try{let l=await p.next(...E);if(l.done)s.setAttribute("judgment.output",this.serializer(l.value)),s.end();return l}catch(l){throw s.recordException(l),s.setStatus({code:d.SpanStatusCode.ERROR,message:String(l)}),s.end(),l}}),V=d.context.bind(u,async(E)=>{try{let l=await p.return(E);return s.setAttribute("judgment.output",this.serializer(l.value)),s.end(),l}catch(l){throw s.recordException(l),s.setStatus({code:d.SpanStatusCode.ERROR,message:String(l)}),s.end(),l}}),W=d.context.bind(u,async(E)=>{try{return await p.throw(E)}catch(l){throw s.recordException(l),s.setStatus({code:d.SpanStatusCode.ERROR,message:String(l)}),s.end(),l}});return{next:f,return:V,throw:W,[Symbol.asyncIterator](){return this}}}}observeGenerator(e,t,r,i,n){return(...a)=>{let c=n??d.context.active(),s=this.getTracer().startSpan(r,i??{},c),u=d.trace.setSpan(c,s);if(t)s.setAttribute("judgment.span_kind",t);let T=this.formatInputs(e,a);s.setAttribute("judgment.input",this.serializer(T));let p=d.context.with(u,()=>e(...a)),f=d.context.bind(u,(...E)=>{try{let l=p.next(...E);if(l.done)s.setAttribute("judgment.output",this.serializer(l.value)),s.end();return l}catch(l){throw s.recordException(l),s.setStatus({code:d.SpanStatusCode.ERROR,message:String(l)}),s.end(),l}}),V=d.context.bind(u,(E)=>{try{let l=p.return(E);return s.setAttribute("judgment.output",this.serializer(l.value)),s.end(),l}catch(l){throw s.recordException(l),s.setStatus({code:d.SpanStatusCode.ERROR,message:String(l)}),s.end(),l}}),W=d.context.bind(u,(E)=>{try{return p.throw(E)}catch(l){throw s.recordException(l),s.setStatus({code:d.SpanStatusCode.ERROR,message:String(l)}),s.end(),l}});return{next:f,return:V,throw:W,[Symbol.iterator](){return this}}}}buildEndpoint(e){return e.endsWith("/")?e+"otel/v1/traces":e+"/otel/v1/traces"}generateRunId(e,t){return e+(t??Date.now().toString())}createEvaluationRun(e,t,r,i){let n=this.generateRunId("async_evaluate_",i);return{project_name:this.projectName,eval_name:n,trace_id:r,trace_span_id:i,examples:[t.toModel()],judgment_scorers:[e.getScorerConfig()],custom_scorers:[]}}createTraceEvaluationRun(e,t,r){let i=this.generateRunId("async_trace_evaluate_",r);return{project_name:this.projectName,eval_name:i,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){o.error(`Failed to enqueue evaluation run: ${t}`)}}getSampledSpanContext(){let e=d.trace.getActiveSpan();if(!e)return null;let t=e.spanContext();if(!t.traceFlags||!(t.traceFlags&1))return null;return t}getSampledSpan(){let e=d.trace.getActiveSpan();if(!e)return null;let t=e.spanContext();if(!t.traceFlags||!(t.traceFlags&1))return null;return e}logEvaluationInfo(e,t,r,i){o.info(`${e}: project=${this.projectName}, traceId=${t}, spanId=${r}, scorer=${i}`)}safeExecute(e,t){try{t()}catch(r){o.error(`Failed to ${e}: ${r}`)}}isValidKey(e){return e.length>0}formatInputs(e,t){try{let r=e.toString(),i=/\(([^)]*)\)/.exec(r),n=i?i[1].split(",").map((c)=>c.trim().split("=")[0].trim()).filter((c)=>c.length>0):[],a={};return n.forEach((c,s)=>{if(s<t.length)a[c]=t[s]}),a}catch{return{}}}}var Pe=require("@opentelemetry/api");var Re=[];function $(e){Re.push(e)}function L(){return Re.map((e)=>new e)}class te{onStart(e,t){let r=Pe.trace.getSpan(t);if(r&&"attributes"in r){let n=r.attributes["judgment.customer_id"];if(n!==void 0)e.setAttribute("judgment.customer_id",String(n))}}onEnd(e){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}$(te);var ve=require("@opentelemetry/api");class re{onStart(e,t){let r=ve.trace.getSpan(t);if(r&&"attributes"in r){let n=r.attributes["judgment.session_id"];if(n!==void 0)e.setAttribute("judgment.session_id",String(n))}}onEnd(e){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}$(re);class M extends _{webTracerProvider=null;resourceAttributes;sampler;constructor(e,t,r,i,n,a){super(e,t,r,i);this.resourceAttributes=n,this.sampler=a}static async create(e,t){let r=new M(e.projectName,e.enableEvaluation,t,e.serializer,e.resourceAttributes,e.sampler);if(await r.resolveAndSetProjectId(),e.initialize)await r.initialize();return r}async initialize(){if(this.webTracerProvider!==null){o.warn("BrowserTracer already initialized");return}try{let e={"service.name":this.projectName,"telemetry.sdk.version":q,...this.resourceAttributes},t=[...L(),this.getSpanProcessor()];this.webTracerProvider=new ge.WebTracerProvider({resource:Ne.resourceFromAttributes(e),spanProcessors:t,sampler:this.sampler}),this.webTracerProvider.register(),o.info("BrowserTracer initialized successfully")}catch(e){throw Error(`Failed to initialize BrowserTracer: ${e instanceof Error?e.message:String(e)}`)}}async shutdown(){if(!this.webTracerProvider){o.warn("BrowserTracer not initialized, skipping shutdown");return}try{await this.webTracerProvider.shutdown(),this.webTracerProvider=null,o.info("BrowserTracer shut down successfully")}catch(e){o.error(`Failed to shutdown BrowserTracer: ${e}`)}}}class F{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??J,resourceAttributes:e.resourceAttributes??{},sampler:e.sampler,initialize:e.initialize??!0},this.client)}}var ye=require("@opentelemetry/instrumentation"),H=require("@opentelemetry/resources");var we=require("@opentelemetry/sdk-trace-node");var Ae=require("@opentelemetry/api");class oe{setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t,r){return this}addLink(e){return this}addLinks(e){return this}setStatus(e){return this}updateName(e){return this}end(e){return}isRecording(){return!1}recordException(e,t){return}spanContext(){return Ae.INVALID_SPAN_CONTEXT}}class ie{noopSpan=new oe;startSpan(e,t,r){return this.noopSpan}startActiveSpan(e,...t){let r=t[t.length-1];return r(this.noopSpan)}}class se extends we.NodeTracerProvider{filterTracer;constructor(e){super(e);this.filterTracer=e.filterTracer??(()=>!0)}getTracer(e,t,r){if(e===_.TRACER_NAME)return super.getTracer(e,t,r);try{if(this.filterTracer({name:e,version:t,options:r}))return super.getTracer(e,t,r);else return o.debug(`[JudgmentNodeTracerProvider] Returning NoOpTracer for tracer ${e} as it is disallowed by the filterTracer callback.`),new ie}catch(i){return o.error(`[JudgmentNodeTracerProvider] Failed to filter tracer ${e}: ${i}.`),super.getTracer(e,t,r)}}}class C extends _{tracerProvider=null;resourceAttributes;instrumentations;filterTracer;constructor(e,t,r,i,n,a,c){super(e,t,r,i);this.resourceAttributes=n,this.instrumentations=a,this.filterTracer=c}static async create(e,t){let r=new C(e.projectName,e.enableEvaluation,t,e.serializer,e.resourceAttributes,e.instrumentations,e.filterTracer);if(await r.resolveAndSetProjectId(),e.initialize)await r.initialize({sampler:e.sampler});return r}async initialize(e){if(this.tracerProvider!==null){o.warn("NodeTracer already initialized");return}try{let t=H.defaultResource().merge(H.resourceFromAttributes({"service.name":this.projectName,"telemetry.sdk.name":_.TRACER_NAME,"telemetry.sdk.version":q,...this.resourceAttributes,...e?.resourceAttributes})),r=[...L(),this.getSpanProcessor(),...e?.spanProcessors??[]];this.tracerProvider=new se({resource:t,sampler:e?.sampler,spanProcessors:r,filterTracer:this.filterTracer}),this.tracerProvider.register();let i=[...this.instrumentations,...e?.instrumentations??[]];if(i.length>0)ye.registerInstrumentations({instrumentations:i});o.info("NodeTracer initialized successfully")}catch(t){throw Error(`Failed to initialize NodeTracer: ${t instanceof Error?t.message:String(t)}`)}}async shutdown(){if(!this.tracerProvider){o.warn("NodeTracer not initialized, skipping shutdown");return}try{await this.tracerProvider.shutdown(),this.tracerProvider=null,o.info("NodeTracer shut down successfully")}catch(e){o.error(`Failed to shutdown NodeTracer: ${e}`)}}async forceFlush(){if(!this.tracerProvider){o.warn("NodeTracer not initialized, skipping force flush");return}try{await this.tracerProvider.forceFlush()}catch(e){o.error(`Failed to force flush NodeTracer: ${e}`)}}}class j{client;constructor(e){this.client=e}async create(e){if(!e.projectName)throw Error("Project name is required");return C.create({projectName:e.projectName,enableEvaluation:e.enableEvaluation??!0,enableMonitoring:e.enableMonitoring??!1,serializer:e.serializer??J,resourceAttributes:e.resourceAttributes??{},instrumentations:e.instrumentations??[],filterTracer:e.filterTracer,initialize:e.initialize??!0},this.client)}}class Y{internalClient;constructor(e={}){let t=e.apiKey??ae,r=e.organizationId??le,i=e.apiUrl??de;if(!t)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 X(i,t,r)}static create(e={}){return new Y(e)}get nodeTracer(){return new j(this.internalClient)}get browserTracer(){return new F(this.internalClient)}get scorers(){return new U(this.internalClient)}get evaluation(){return new x(this.internalClient)}}var Me=require("crypto");class I{exampleId;createdAt;name;properties;constructor(e={}){this.exampleId=e.exampleId??Me.randomUUID(),this.createdAt=e.createdAt??new Date().toISOString(),this.name=e.name??null,this.properties=e.properties??{}}static create(e){return new I({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 z{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 B{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 I)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}}
1
+ var{defineProperty:F,getOwnPropertyNames:Te,getOwnPropertyDescriptor:ve}=Object,Ue=Object.prototype.hasOwnProperty;var B=new WeakMap,xe=(e)=>{var t=B.get(e),s;if(t)return t;if(t=F({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Te(e).map((o)=>!Ue.call(t,o)&&F(t,o,{get:()=>e[o],enumerable:!(s=ve(e,o))||s.enumerable}));return B.set(e,t),t};var ge=(e,t)=>{for(var s in t)F(e,s,{get:t[s],enumerable:!0,configurable:!0,set:(o)=>t[s]=()=>o})};var ae={};ge(ae,{Tracer:()=>j,NoOpSpanExporter:()=>h,JudgmentTracerProvider:()=>u,JudgmentSpanExporter:()=>S,Judgeval:()=>y,BaseTracer:()=>p});module.exports=xe(ae);function I(e,t){let s=process.env[e];if(!s)return t??null;return s}var q=I("JUDGMENT_API_KEY"),C=I("JUDGMENT_ORG_ID"),O=I("JUDGMENT_API_URL","https://api.judgmentlabs.ai"),K=I("JUDGMENT_LOG_LEVEL","warn");class U{baseUrl;apiKey;organizationId;constructor(e,t,s){this.baseUrl=e,this.apiKey=t,this.organizationId=s}getBaseUrl(){return this.baseUrl}getApiKey(){return this.apiKey}getOrganizationId(){return this.organizationId}async request(e,t,s){let o=await fetch(t,{method:e,headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`,"X-Organization-Id":this.organizationId},body:s!==void 0?JSON.stringify(s):void 0});if(!o.ok){let n=await o.text();throw Error(`HTTP ${o.status}: ${n}`)}return o.json()}async postOtelV1traces(){let e=this.baseUrl+"/otel/v1/traces";return this.request("POST",e,{})}async postOtelTriggerRootSpanRules(e){let t=this.baseUrl+"/otel/trigger_root_span_rules";return this.request("POST",t,e)}async postV1projectsResolve(e){let t=this.baseUrl+"/v1/projects/resolve/";return this.request("POST",t,e)}async postV1projects(e){let t=this.baseUrl+"/v1/projects";return this.request("POST",t,e)}async deleteV1projects(e){let t=this.baseUrl+`/v1/projects/${e}`;return this.request("DELETE",t,{})}async postV1projectsDatasets(e,t){let s=this.baseUrl+`/v1/projects/${e}/datasets`;return this.request("POST",s,t)}async getV1projectsDatasets(e){let t=this.baseUrl+`/v1/projects/${e}/datasets`;return this.request("GET",t,void 0)}async postV1projectsDatasetsByDatasetNameExamples(e,t,s){let o=this.baseUrl+`/v1/projects/${e}/datasets/${t}/examples`;return this.request("POST",o,s)}async getV1projectsDatasetsByDatasetName(e,t){let s=this.baseUrl+`/v1/projects/${e}/datasets/${t}`;return this.request("GET",s,void 0)}async postV1projectsEvaluateExamples(e,t){let s=this.baseUrl+`/v1/projects/${e}/evaluate/examples`;return this.request("POST",s,t)}async postV1projectsEvaluateTraces(e,t){let s=this.baseUrl+`/v1/projects/${e}/evaluate/traces`;return this.request("POST",s,t)}async postV1projectsEvalResults(e,t){let s=this.baseUrl+`/v1/projects/${e}/eval-results`;return this.request("POST",s,t)}async postV1projectsEvalResultsExamples(e,t){let s=this.baseUrl+`/v1/projects/${e}/eval-results/examples`;return this.request("POST",s,t)}async getV1projectsExperimentsByRunId(e,t){let s=this.baseUrl+`/v1/projects/${e}/experiments/${t}`;return this.request("GET",s,void 0)}async postV1projectsEvalQueueExamples(e,t){let s=this.baseUrl+`/v1/projects/${e}/eval-queue/examples`;return this.request("POST",s,t)}async postV1projectsEvalQueueTraces(e,t){let s=this.baseUrl+`/v1/projects/${e}/eval-queue/traces`;return this.request("POST",s,t)}async getV1projectsPromptsByName(e,t,s,o){let n=new URLSearchParams;if(s!==void 0)n.set("commit_id",s);if(o!==void 0)n.set("tag",o);let i=this.baseUrl+`/v1/projects/${e}/prompts/${t}`+(n.toString()?"?"+n.toString():"");return this.request("GET",i,void 0)}async postV1projectsPrompts(e,t){let s=this.baseUrl+`/v1/projects/${e}/prompts`;return this.request("POST",s,t)}async postV1projectsPromptsByNameTags(e,t,s){let o=this.baseUrl+`/v1/projects/${e}/prompts/${t}/tags`;return this.request("POST",o,s)}async deleteV1projectsPromptsByNameTags(e,t,s){let o=this.baseUrl+`/v1/projects/${e}/prompts/${t}/tags`;return this.request("DELETE",o,s)}async getV1projectsPromptsByNameVersions(e,t){let s=this.baseUrl+`/v1/projects/${e}/prompts/${t}/versions`;return this.request("GET",s,void 0)}async getV1projectsScorers(e,t,s){let o=new URLSearchParams;if(t!==void 0)o.set("names",t);if(s!==void 0)o.set("is_trace",s);let n=this.baseUrl+`/v1/projects/${e}/scorers`+(o.toString()?"?"+o.toString():"");return this.request("GET",n,void 0)}async getV1projectsScorersByNameExists(e,t){let s=this.baseUrl+`/v1/projects/${e}/scorers/${t}/exists`;return this.request("GET",s,void 0)}async postV1projectsScorersCustom(e,t){let s=this.baseUrl+`/v1/projects/${e}/scorers/custom`;return this.request("POST",s,t)}async getV1projectsScorersCustomByNameExists(e,t){let s=this.baseUrl+`/v1/projects/${e}/scorers/custom/${t}/exists`;return this.request("GET",s,void 0)}async postV1projectsTracesByTraceIdTags(e,t,s){let o=this.baseUrl+`/v1/projects/${e}/traces/${t}/tags`;return this.request("POST",o,s)}async getV1e2eFetchTraceByProjectNameByTraceId(e,t){let s=this.baseUrl+`/v1/e2e_fetch_trace/${e}/${t}`;return this.request("GET",s,void 0)}async getV1e2eTracesPerProject(e,t,s){let o=new URLSearchParams;if(t!==void 0)o.set("limit",t);if(s!==void 0)o.set("offset",s);let n=this.baseUrl+`/v1/e2e_traces_per_project/${e}`+(o.toString()?"?"+o.toString():"");return this.request("GET",n,void 0)}async postV1e2eFetchSpanScore(e){let t=this.baseUrl+"/v1/e2e_fetch_span_score/";return this.request("POST",t,e)}}class y{internalClient;constructor(e={}){let t=e.apiKey??q,s=e.organizationId??C,o=e.apiUrl??O;if(!t)throw Error("API key is required");if(!s)throw Error("Organization ID is required");if(!o)throw Error("API URL is required");this.internalClient=new U(o,t,s)}static create(e={}){return new y(e)}}var D=require("@opentelemetry/api"),Re=require("crypto");var Ne=/^([^(]+?)=>/,De=/^[^(]*\(\s*([^)]*)\)/m,Ge=/,/,je=/^\s*(_?)(\S+?)\1\s*$/,Ie=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function qe(e){return Function.prototype.toString.call(e)}function Ce(e){let t=qe(e).replace(Ie,"");return t.match(Ne)||t.match(De)}function ee(e){let t=Ce(e);if(!t||!t[1])return[];return t[1].split(Ge).map((s)=>{return s.replace(je,(n,i,l)=>l).trim()}).filter((s)=>s.length>0)}class r{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=r.Level.WARNING;static useColor=!0;static initialize(){if(!r.initialized){let e=process.env.JUDGMENT_NO_COLOR;r.useColor=!e&&process.stdout.isTTY;let t=K.toLowerCase();if(t){let s={debug:r.Level.DEBUG,info:r.Level.INFO,warning:r.Level.WARNING,warn:r.Level.WARNING,error:r.Level.ERROR,critical:r.Level.CRITICAL};r.currentLevel=s[t]??r.Level.WARNING}r.initialized=!0}}static setLevel(e){r.currentLevel=e}static setUseColor(e){r.useColor=e}static log(e,t){if(r.initialize(),e<r.currentLevel)return;let s=new Date().toISOString().replace("T"," ").substring(0,19),o=Object.keys(r.Level).find((l)=>r.Level[l]===e)??"UNKNOWN",n=`${s} - judgeval - ${o} - ${t}`;if(r.useColor)n=`${e===r.Level.DEBUG||e===r.Level.INFO?r.GRAY:e===r.Level.WARNING?r.YELLOW:r.RED}${n}${r.RESET}`;(e>=r.Level.ERROR?process.stderr:process.stdout).write(n+`
2
+ `)}static debug(e){r.log(r.Level.DEBUG,e)}static info(e){r.log(r.Level.INFO,e)}static warning(e){r.log(r.Level.WARNING,e)}static warn(e){r.log(r.Level.WARNING,e)}static error(e){r.log(r.Level.ERROR,e)}static critical(e){r.log(r.Level.CRITICAL,e)}}var J;function Oe(e,t){if(typeof t==="bigint")return t.toString();if(typeof t==="object"&&t!==null){if(J.has(t))return"[Circular]";J.add(t)}return t}function A(e){try{let t=JSON.stringify(e);if(typeof t==="string")return t;return String(t)}catch{try{J=new WeakSet;let t=JSON.stringify(e,Oe);return typeof t==="string"?t:String(e)}catch(t){return r.error(`safeStringify failed: ${t}`),String(e)}}}function x(e,t){if(typeof e==="string"||typeof e==="number"||typeof e==="boolean")return e;return t(e)}var _=require("@opentelemetry/api"),pe=require("@opentelemetry/instrumentation"),ie=require("async_hooks");var f=require("@opentelemetry/api"),b=require("async_hooks"),te=!1,V=null,oe=new b.AsyncLocalStorage,M=new b.AsyncLocalStorage,se=f.context.active.bind(f.context),ye=f.context.with.bind(f.context),Ae=f.context.bind.bind(f.context);function k(){return oe.getStore()===!0}function ne(e){if(V=e,te)return;let t=f.context;t.active=()=>{if(!k())return se();let s=M.getStore();if(s)return s;return V?V():se()},t.with=(s,o,n,...i)=>{if(!k())return ye(s,o,n,...i);return M.run(s,()=>o.apply(n,i))},t.bind=(s,o)=>{if(!k())return Ae(s,o);if(typeof o!=="function")return o;let n=o;return(...i)=>M.run(s,()=>n(...i))},te=!0}function re(e,t){return oe.run(!0,()=>M.run(e,t))}var Me="judgeval",Y=new ie.AsyncLocalStorage;class le{_provider;constructor(e){this._provider=e}startSpan(e,t,s){let o=s??this._provider.getCurrentContext();return this._provider._getDelegateTracer().startSpan(e,t,o)}startActiveSpan(e,...t){let s={},o=this._provider.getCurrentContext(),n;if(t.length===1)n=t[0];else if(t.length===2)s=t[0],n=t[1];else s=t[0],o=t[1],n=t[2];let i=this.startSpan(e,s,o);return this._provider.useSpan(i,!0,!0,!0,()=>n(i))}}class me{startSpan(){return _.trace.wrapSpanContext(_.INVALID_SPAN_CONTEXT)}startActiveSpan(e,...t){return(t.length===1?t[0]:t.length===2?t[1]:t[2])(this.startSpan())}}class u{static _instance=null;_activeTracer=null;_instrumentations=[];_noOpTracer;_proxyTracer;_tracers=new Set;constructor(){this._noOpTracer=new me,this._proxyTracer=new le(this),ne(()=>this.getCurrentContext())}static getInstance(){return u._instance??=new u,u._instance}static installAsGlobalTracerProvider(){let e=u.getInstance();return _.trace.setGlobalTracerProvider(e)}register(e){this._tracers.add(e)}deregister(e){this._tracers.delete(e)}setActive(e){let t=this.getCurrentSpan();if(t?.isRecording()){if(_.trace.getSpan(this.getCurrentContext())===t)return r.error("Cannot set_active() while a root span is active. Keeping existing tracer provider."),!1}return this.register(e),this._activeTracer=e,!0}getActiveTracer(){return this._activeTracer}getCurrentContext(){return Y.getStore()??_.context.active()}getCurrentSpan(){let e=this.getCurrentContext();return _.trace.getSpan(e)}hasActiveRootSpan(){if(!this.getCurrentSpan()?.isRecording())return!1;return!0}_getDelegateTracer(){let e=this._activeTracer;if(!e)return r.debug("No active tracer, returning NoOpTracer"),this._noOpTracer;return e._tracerProvider.getTracer(Me)}getTracer(e,t,s){return this._proxyTracer}addInstrumentation(e){try{pe.registerInstrumentations({tracerProvider:this,instrumentations:[e]}),this._instrumentations.push(e)}catch(t){r.error(`Failed to add instrumentation: ${String(t)}`)}}useSpan(e,t,s,o,n){let i=this.getCurrentContext(),l=_.trace.setSpan(i,e);return Y.run(l,()=>re(l,()=>{try{let m=n();if(m instanceof Promise)return m.catch((E)=>{if(e.isRecording()){if(s)e.recordException(E);if(o){let c=E;e.setStatus({code:_.SpanStatusCode.ERROR,message:`${c.name}: ${c.message}`})}}throw E}).finally(()=>{if(t)e.end()});if(t)e.end();return m}catch(m){if(e.isRecording()){if(s)e.recordException(m);if(o){let E=m;e.setStatus({code:_.SpanStatusCode.ERROR,message:`${E.name}: ${E.message}`})}}if(t)e.end();throw m}}))}attachContext(e){Y.enterWith(e)}async forceFlush(){await Promise.all(Array.from(this._tracers).map((e)=>e._tracerProvider.forceFlush()))}async shutdown(){await Promise.all(Array.from(this._tracers).map((e)=>e._tracerProvider.shutdown())),this._activeTracer=null,this._tracers.clear()}}var g=Symbol.for("judgment.customer_id"),N=Symbol.for("judgment.session_id");var Ee="judgeval";class p{projectName;projectId;apiKey;organizationId;apiUrl;environment;serializer;_tracerProvider;_client;_enableMonitoring;constructor(e,t,s,o,n,i,l,m,E,c){this.projectName=e,this.projectId=t,this.apiKey=s,this.organizationId=o,this.apiUrl=n,this.environment=i,this.serializer=l,this._tracerProvider=m,this._client=E,this._enableMonitoring=c}setActive(){return u.getInstance().setActive(this)}static _getProxyProvider(){return u.getInstance()}static _getSerializer(){return p._getProxyProvider().getActiveTracer()?.serializer??A}static _getCurrentTraceAndSpanId(){let t=p._getProxyProvider().getCurrentSpan();if(!t?.isRecording())return null;let s=t.spanContext();if(!s.traceId||!(s.traceFlags&1))return null;return[s.traceId,s.spanId]}static _emitPartial(){let e=p._getProxyProvider().getActiveTracer();if(!e)return;e.getSpanProcessor().emitPartial()}static getCurrentSpan(){return p._getProxyProvider().getCurrentSpan()}static async forceFlush(){await p._getProxyProvider().forceFlush()}static async shutdown(){await p._getProxyProvider().shutdown()}static registerOTELInstrumentation(e){p._getProxyProvider().addInstrumentation(e)}static getOTELTracer(){return p._getProxyProvider().getTracer(Ee)}static startSpan(e,t){let s=p.getOTELTracer().startSpan(e,{attributes:t});return p._emitPartial(),s}static startActiveSpan(e,t,s){return p.getOTELTracer().startActiveSpan(e,{attributes:s},(o)=>{p._emitPartial();let n=t(o);if(n instanceof Promise)return n.finally(()=>{o.end()});return o.end(),n})}static span(e,t){return p.startActiveSpan(e,(s)=>{try{let o=t(s);if(o instanceof Promise)return o.catch((n)=>{throw s.setStatus({code:D.SpanStatusCode.ERROR,message:String(n)}),s.recordException(n),n});return o}catch(o){throw s.setStatus({code:D.SpanStatusCode.ERROR,message:String(o)}),s.recordException(o),o}})}static with(e,t){return p.span(e,t)}static observe(e,t="span",s,o=!0,n=!0,i=!1){let l=p._getProxyProvider(),m=(E)=>{let c=s??E.name;return(...v)=>{return l.getTracer(Ee).startActiveSpan(c,(R)=>{if(t)R.setAttribute("judgment.span_kind",t);try{if(o)R.setAttribute("judgment.input",x(we(E,v),p._getSerializer()));p._emitPartial();let d=E(...v);if(d instanceof Promise)return d.then((P)=>{if(n)R.setAttribute("judgment.output",x(P,p._getSerializer()));return P}).catch((P)=>{throw R.recordException(P),R.setStatus({code:D.SpanStatusCode.ERROR,message:String(P)}),P}).finally(()=>{R.end()});if(n)R.setAttribute("judgment.output",x(d,p._getSerializer()));return R.end(),d}catch(d){throw R.recordException(d),R.setStatus({code:D.SpanStatusCode.ERROR,message:String(d)}),R.end(),d}})}};if(!e)return m;return m(e)}static setSpanKind(e){if(!e)return;let t=p._getProxyProvider().getCurrentSpan();if(t?.isRecording())t.setAttribute("judgment.span_kind",e)}static setLLMSpan(){p.setSpanKind("llm")}static setToolSpan(){p.setSpanKind("tool")}static setGeneralSpan(){p.setSpanKind("span")}static setAttribute(e,t){let s=p._getProxyProvider().getCurrentSpan();if(!s?.isRecording())return;if(!e||t==null)return;s.setAttribute(e,x(t,p._getSerializer()))}static setAttributes(e){for(let[t,s]of Object.entries(e))p.setAttribute(t,s)}static setInput(e){p.setAttribute("judgment.input",e)}static setOutput(e){p.setAttribute("judgment.output",e)}static recordLLMMetadata(e){let t=p._getProxyProvider().getCurrentSpan();if(!t?.isRecording())return;if(typeof e.non_cached_input_tokens==="number")t.setAttribute("judgment.usage.non_cached_input_tokens",e.non_cached_input_tokens);if(typeof e.output_tokens==="number")t.setAttribute("judgment.usage.output_tokens",e.output_tokens);if(typeof e.cache_read_input_tokens==="number")t.setAttribute("judgment.usage.cache_read_input_tokens",e.cache_read_input_tokens);if(typeof e.cache_creation_input_tokens==="number")t.setAttribute("judgment.usage.cache_creation_input_tokens",e.cache_creation_input_tokens);if(typeof e.total_cost_usd==="number")t.setAttribute("judgment.usage.total_cost_usd",e.total_cost_usd)}static setCustomerId(e){let t=p._getProxyProvider(),s=t.getCurrentSpan();if(!s?.isRecording())return;s.setAttribute("judgment.customer_id",e);let o=t.getCurrentContext().setValue(g,e);t.attachContext(o)}static setSessionId(e){let t=p._getProxyProvider(),s=t.getCurrentSpan();if(!s?.isRecording())return;let o=s.spanContext();if(!o.traceId||!(o.traceFlags&1))return;s.setAttribute("judgment.session_id",e);let n=t.getCurrentContext().setValue(N,e);t.attachContext(n)}static tag(e){if(!e||Array.isArray(e)&&e.length===0)return;let s=p._getProxyProvider().getActiveTracer();if(!s?.projectId||!s._client)return;let o=p._getCurrentTraceAndSpanId();if(!o)return;let[n]=o,i=Array.isArray(e)?e:[e];s._client.postV1projectsTracesByTraceIdTags(s.projectId,n,{tags:i}).catch((l)=>{r.error(`tag failed: ${String(l)}`)})}static _pendingEvals=new Map;static asyncEvaluate(e,t){let s=p._getProxyProvider(),o=s.getActiveTracer();if(!o){r.warning("asyncEvaluate: no active tracer");return}if(!o.projectId){r.warning("asyncEvaluate: no project configured");return}let n=s.getCurrentSpan();if(!n?.isRecording()){r.warning("asyncEvaluate: no active span");return}let i=n.spanContext(),l=`${i.traceId}:${i.spanId}`,m=p._pendingEvals.get(l)??[],E={project_id:o.projectId,eval_name:`async_evaluate_${e}_${m.length}`,judges:[{name:e}],examples:[{...t,example_id:Re.randomUUID(),created_at:new Date().toISOString(),trace_id:i.traceId,span_id:i.spanId}],is_offline:!1,is_behavior:!1};m.push(E),p._pendingEvals.set(l,m),n.setAttribute("judgment.pending_trace_eval",JSON.stringify(m))}}function we(e,t){try{let s=ee(e).map((n)=>n.replace(/^\.\.\./,"").split("=")[0].trim()).filter((n)=>n.length>0),o={};return s.forEach((n,i)=>{if(i<t.length)o[n]=t[i]}),o}catch{return{}}}var ue=require("@opentelemetry/exporter-trace-otlp-http");class S{_delegate;constructor(e,t,s,o){this._delegate=new ue.OTLPTraceExporter({url:e,headers:{Authorization:`Bearer ${t}`,"X-Organization-Id":s,"X-Project-Id":o}})}export(e,t){r.info(`Exported ${e.length} spans`),this._delegate?.export(e,t)}shutdown(){return this._delegate?.shutdown()??Promise.resolve()}forceFlush(){return this._delegate?.forceFlush()??Promise.resolve()}}var _e=require("@opentelemetry/core");class h extends S{constructor(){super("https://api.judgmentlabs.ai/otel/v1/traces","","","");this._delegate=null}export(e,t){t({code:_e.ExportResultCode.SUCCESS})}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}var de=require("@opentelemetry/sdk-trace-base");var ce=[];function G(e){ce.push(e)}function w(){return ce.map((e)=>e())}class Q{onStart(e,t){let s=t.getValue(g);if(s)e.setAttribute("judgment.customer_id",s)}onEnd(e){}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}}G(()=>new Q);class H{onStart(e,t){let s=t.getValue(N);if(s)e.setAttribute("judgment.session_id",s)}onEnd(e){}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}}G(()=>new H);function L(e){return`${e.traceId}:${e.spanId}`}class T extends de.BatchSpanProcessor{tracer;_internalAttributes=new Map;constructor(e,t,s){super(t,s);this.tracer=e}_cleanupSpanState(e){this._internalAttributes.delete(e)}setInternalAttribute(e,t,s){let o=L(e),n=this._internalAttributes.get(o);if(!n)n=new Map,this._internalAttributes.set(o,n);n.set(t,s)}getInternalAttribute(e,t,s=null){let o=L(e),n=this._internalAttributes.get(o);if(!n)return s;return n.has(t)?n.get(t):s}_emitSpan(e){let t=e.spanContext(),s=L(t),o=this._internalAttributes.get(s);if(!o)o=new Map,this._internalAttributes.set(s,o);let n=o.get("judgment.update_id")??0;o.set("judgment.update_id",n+1);let i={...e.attributes,"judgment.update_id":n},l=Object.create(e);Object.defineProperty(l,"attributes",{value:i,writable:!1}),Object.defineProperty(l,"endTime",{value:e.endTime??e.startTime,writable:!1}),super.onEnd(l)}emitPartial(){let t=u.getInstance().getCurrentSpan();if(!t?.isRecording())return;if(this.getInternalAttribute(t.spanContext(),"disable_partial_emit",!1))return;this._emitSpan(t)}onStart(e,t){for(let s of w())s.onStart(e,t)}onEnd(e){for(let n of w())n.onEnd(e);let t=e.spanContext();if(!this.getInternalAttribute(t,"cancelled",!1))this._emitSpan(e);let o=L(t);this._cleanupSpanState(o)}}class a extends T{constructor(){super(null,new h)}onStart(e,t){}onEnd(e){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}emitPartial(){}setInternalAttribute(e,t,s){}getInternalAttribute(e,t,s=null){return s}}var $=require("@opentelemetry/resources"),Z=require("@opentelemetry/sdk-trace-node");var Pe=new Map,X=new Map;async function fe(e,t){let s=`org:${e.getOrganizationId()}:project:${t}`,o=Pe.get(s);if(o)return o;let n=X.get(s);if(n)return n;let i=(async()=>{r.info(`Resolving project ID for project: ${t}`);let m=(await e.postV1projectsResolve({project_name:t})).project_id;if(!m)throw Error(`Project ID not found for project: ${t}`);return r.info(`Resolved project ID: ${m}`),Pe.set(s,m),m})();X.set(s,i);try{return await i}finally{X.delete(s)}}var Se="0.9.0";var he=Se;class j extends p{_spanExporter=null;_spanProcessor=null;constructor(e,t,s,o,n,i,l,m,E,c){super(e,t,s,o,n,i,l,m,E,c)}static async init(e={}){let t=e.apiKey??q,s=e.organizationId??C,o=e.apiUrl??O,n=e.projectName??null,i=e.serializer??A,l=!0;if(!n)r.warning("project_name not provided. Tracer will not export spans."),l=!1;if(!t)r.warning("api_key not provided. Tracer will not export spans."),l=!1;if(!s)r.warning("organization_id not provided. Tracer will not export spans."),l=!1;if(!o)r.warning("api_url not provided. Tracer will not export spans."),l=!1;let m=null,E=null;if(l&&n&&t&&s&&o){if(m=new U(o,t,s),E=await fe(m,n).catch(()=>null),!E)r.warning(`Project '${n}' not found. Tracer will not export spans.`),l=!1}let c={"service.name":n??"unknown","telemetry.sdk.name":"judgeval","telemetry.sdk.version":he};if(e.environment)c["deployment.environment"]=e.environment;if(e.resourceAttributes)Object.assign(c,e.resourceAttributes);let v=$.defaultResource().merge($.resourceFromAttributes(c)),z=new Z.NodeTracerProvider({resource:v}),R=new j(n,E,t,s,o,e.environment??null,i,z,m,l);if(l){let P=new Z.NodeTracerProvider({resource:v,spanProcessors:[R.getSpanProcessor()]});R._tracerProvider=P}if(u.getInstance().register(R),e.setActive??!0)R.setActive();return R}getSpanExporter(){if(this._spanExporter)return this._spanExporter;if(!this._enableMonitoring||!this.projectId||!this.apiKey||!this.organizationId||!this.apiUrl)this._spanExporter=new h;else{let e=this.apiUrl.endsWith("/")?this.apiUrl+"otel/v1/traces":this.apiUrl+"/otel/v1/traces";this._spanExporter=new S(e,this.apiKey,this.organizationId,this.projectId)}return this._spanExporter}getSpanProcessor(){if(this._spanProcessor)return this._spanProcessor;if(!this._enableMonitoring)this._spanProcessor=new a;else this._spanProcessor=new T(this,this.getSpanExporter());return this._spanProcessor}}
3
3
 
4
- //# debugId=BEDA3A051A62830B64756E2164756E21
4
+ //# debugId=AF65548B0C7F12A864756E2164756E21
5
5
  //# sourceMappingURL=index.cjs.map