judgeval 0.9.4 → 0.9.5

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 (72) hide show
  1. package/dist/Judgeval.d.ts +39 -0
  2. package/dist/Judgeval.d.ts.map +1 -1
  3. package/dist/JudgmentAttributeKeys.d.ts +14 -1
  4. package/dist/JudgmentAttributeKeys.d.ts.map +1 -1
  5. package/dist/index.cjs +4 -3
  6. package/dist/index.cjs.map +22 -18
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.mjs +4 -3
  10. package/dist/index.mjs.map +22 -18
  11. package/dist/internal/api/client.d.ts +3 -3
  12. package/dist/internal/api/client.d.ts.map +1 -1
  13. package/dist/internal/api/models/PromptScorer.d.ts +0 -1
  14. package/dist/internal/api/models/PromptScorer.d.ts.map +1 -1
  15. package/dist/internal/api/models/ScorerConfig.d.ts +1 -2
  16. package/dist/internal/api/models/ScorerConfig.d.ts.map +1 -1
  17. package/dist/internal/api/models/UploadCustomScorerBundleMetadata.d.ts +15 -0
  18. package/dist/internal/api/models/UploadCustomScorerBundleMetadata.d.ts.map +1 -0
  19. package/dist/internal/api/models/UploadCustomScorerBundleRequest.d.ts +6 -0
  20. package/dist/internal/api/models/UploadCustomScorerBundleRequest.d.ts.map +1 -0
  21. package/dist/internal/api/models/index.d.ts +2 -4
  22. package/dist/internal/api/models/index.d.ts.map +1 -1
  23. package/dist/trace/BaseTracer.d.ts +269 -3
  24. package/dist/trace/BaseTracer.d.ts.map +1 -1
  25. package/dist/trace/JudgmentTracerProvider.d.ts +65 -0
  26. package/dist/trace/JudgmentTracerProvider.d.ts.map +1 -1
  27. package/dist/trace/Tracer.d.ts +48 -0
  28. package/dist/trace/Tracer.d.ts.map +1 -1
  29. package/dist/trace/baggage/JudgmentBaggagePropagator.d.ts +12 -0
  30. package/dist/trace/baggage/JudgmentBaggagePropagator.d.ts.map +1 -0
  31. package/dist/trace/baggage/constants.d.ts +12 -0
  32. package/dist/trace/baggage/constants.d.ts.map +1 -0
  33. package/dist/trace/baggage/index.d.ts +20 -0
  34. package/dist/trace/baggage/index.d.ts.map +1 -0
  35. package/dist/trace/baggage/utils.d.ts +20 -0
  36. package/dist/trace/baggage/utils.d.ts.map +1 -0
  37. package/dist/trace/exporters/JudgmentSpanExporter.d.ts +26 -0
  38. package/dist/trace/exporters/JudgmentSpanExporter.d.ts.map +1 -1
  39. package/dist/trace/exporters/NoOpSpanExporter.d.ts +5 -0
  40. package/dist/trace/exporters/NoOpSpanExporter.d.ts.map +1 -1
  41. package/dist/trace/index.d.ts +4 -0
  42. package/dist/trace/index.d.ts.map +1 -1
  43. package/dist/trace/processors/JudgmentBaggageSpanProcessor.d.ts +33 -0
  44. package/dist/trace/processors/JudgmentBaggageSpanProcessor.d.ts.map +1 -0
  45. package/dist/trace/processors/JudgmentSpanProcessor.d.ts +22 -3
  46. package/dist/trace/processors/JudgmentSpanProcessor.d.ts.map +1 -1
  47. package/dist/trace/processors/NoOpSpanProcessor.d.ts +9 -2
  48. package/dist/trace/processors/NoOpSpanProcessor.d.ts.map +1 -1
  49. package/dist/trace/processors/index.d.ts +1 -1
  50. package/dist/trace/processors/index.d.ts.map +1 -1
  51. package/dist/trace/propagation/index.d.ts +42 -0
  52. package/dist/trace/propagation/index.d.ts.map +1 -0
  53. package/dist/utils/dont-throw.d.ts +11 -0
  54. package/dist/utils/dont-throw.d.ts.map +1 -0
  55. package/dist/utils/logger.d.ts +21 -0
  56. package/dist/utils/logger.d.ts.map +1 -1
  57. package/dist/utils/{resolveProjectId.d.ts → resolve-project-id.d.ts} +1 -1
  58. package/dist/utils/resolve-project-id.d.ts.map +1 -0
  59. package/dist/utils/retry.d.ts +27 -0
  60. package/dist/utils/retry.d.ts.map +1 -0
  61. package/package.json +1 -1
  62. package/dist/trace/processors/_lifecycles/CustomerIdProcessor.d.ts +0 -10
  63. package/dist/trace/processors/_lifecycles/CustomerIdProcessor.d.ts.map +0 -1
  64. package/dist/trace/processors/_lifecycles/SessionIdProcessor.d.ts +0 -10
  65. package/dist/trace/processors/_lifecycles/SessionIdProcessor.d.ts.map +0 -1
  66. package/dist/trace/processors/_lifecycles/contextKeys.d.ts +0 -3
  67. package/dist/trace/processors/_lifecycles/contextKeys.d.ts.map +0 -1
  68. package/dist/trace/processors/_lifecycles/index.d.ts +0 -7
  69. package/dist/trace/processors/_lifecycles/index.d.ts.map +0 -1
  70. package/dist/trace/processors/_lifecycles/registry.d.ts +0 -7
  71. package/dist/trace/processors/_lifecycles/registry.d.ts.map +0 -1
  72. package/dist/utils/resolveProjectId.d.ts.map +0 -1
@@ -1,11 +1,50 @@
1
+ /**
2
+ * Configuration options for the Judgeval client.
3
+ *
4
+ * Credentials are resolved in order: explicit arguments first, then
5
+ * environment variables `JUDGMENT_API_KEY`, `JUDGMENT_ORG_ID`, and
6
+ * `JUDGMENT_API_URL`.
7
+ */
1
8
  export interface JudgevalConfig {
9
+ /** Judgment API key. Defaults to `JUDGMENT_API_KEY` env var. */
2
10
  apiKey?: string;
11
+ /** Judgment organization ID. Defaults to `JUDGMENT_ORG_ID` env var. */
3
12
  organizationId?: string;
13
+ /** Judgment API URL. Defaults to `JUDGMENT_API_URL` env var. */
4
14
  apiUrl?: string;
5
15
  }
16
+ /**
17
+ * The main entry point for interacting with the Judgment platform.
18
+ *
19
+ * `Judgeval` connects to your Judgment project and gives you access to
20
+ * tracing, evaluation, and monitoring through the Judgment platform.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * import { Judgeval } from "judgeval";
25
+ *
26
+ * const client = Judgeval.create();
27
+ * ```
28
+ *
29
+ * @throws Error if any required credential is missing.
30
+ */
6
31
  export declare class Judgeval {
7
32
  private readonly internalClient;
8
33
  protected constructor(config?: JudgevalConfig);
34
+ /**
35
+ * Create a new Judgeval client instance.
36
+ *
37
+ * @param config - Configuration options. Credentials default to environment variables.
38
+ * @returns A new `Judgeval` instance.
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const client = Judgeval.create({
43
+ * apiKey: "<your-api-key>",
44
+ * organizationId: "<your-organization-id>",
45
+ * });
46
+ * ```
47
+ */
9
48
  static create(config?: JudgevalConfig): Judgeval;
10
49
  }
11
50
  //# sourceMappingURL=Judgeval.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Judgeval.d.ts","sourceRoot":"","sources":["../src/Judgeval.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoB;IAEnD,SAAS,aAAa,MAAM,GAAE,cAAmB;IAkBjD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,GAAE,cAAmB,GAAG,QAAQ;CAGrD"}
@@ -5,6 +5,7 @@ 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_CUSTOMER_USER_ID = "judgment.customer_user_id",
8
9
  JUDGMENT_AGENT_ID = "judgment.agent_id",
9
10
  JUDGMENT_PARENT_AGENT_ID = "judgment.parent_agent_id",
10
11
  JUDGMENT_AGENT_CLASS_NAME = "judgment.agent_class_name",
@@ -18,12 +19,18 @@ export declare enum AttributeKeys {
18
19
  JUDGMENT_LLM_PROVIDER = "judgment.llm.provider",
19
20
  JUDGMENT_LLM_MODEL_NAME = "judgment.llm.model",
20
21
  JUDGMENT_USAGE_NON_CACHED_INPUT_TOKENS = "judgment.usage.non_cached_input_tokens",
22
+ JUDGMENT_USAGE_NON_CACHED_INPUT_IMAGE_TOKENS = "judgment.usage.non_cached_input_image_tokens",
21
23
  JUDGMENT_USAGE_CACHE_CREATION_INPUT_TOKENS = "judgment.usage.cache_creation_input_tokens",
22
24
  JUDGMENT_USAGE_CACHE_READ_INPUT_TOKENS = "judgment.usage.cache_read_input_tokens",
23
25
  JUDGMENT_USAGE_OUTPUT_TOKENS = "judgment.usage.output_tokens",
26
+ JUDGMENT_USAGE_OUTPUT_IMAGE_TOKENS = "judgment.usage.output_image_tokens",
24
27
  JUDGMENT_USAGE_TOTAL_COST_USD = "judgment.usage.total_cost_usd",
25
28
  JUDGMENT_SESSION_ID = "judgment.session_id",
26
29
  JUDGMENT_PROJECT_ID_OVERRIDE = "judgment.project_id_override",
30
+ JUDGMENT_LINK_SOURCE_TRACE_ID = "judgment.link.source_trace_id",
31
+ JUDGMENT_LINK_SOURCE_SPAN_ID = "judgment.link.source_span_id",
32
+ JUDGMENT_LINK_TARGET_TRACE_ID = "judgment.link.target_trace_id",
33
+ JUDGMENT_LINK_TARGET_SPAN_ID = "judgment.link.target_span_id",
27
34
  GEN_AI_PROMPT = "gen_ai.prompt",
28
35
  GEN_AI_COMPLETION = "gen_ai.completion",
29
36
  GEN_AI_REQUEST_MODEL = "gen_ai.request.model",
@@ -37,10 +44,16 @@ export declare enum AttributeKeys {
37
44
  GEN_AI_REQUEST_MAX_TOKENS = "gen_ai.request.max_tokens",
38
45
  GEN_AI_RESPONSE_FINISH_REASONS = "gen_ai.response.finish_reasons"
39
46
  }
47
+ /**
48
+ * Internal attribute keys used for temporary state management in span processors.
49
+ * These are NOT exported and are used only for internal span lifecycle management.
50
+ */
40
51
  export declare enum InternalAttributeKeys {
41
52
  DISABLE_PARTIAL_EMIT = "disable_partial_emit",
42
53
  CANCELLED = "cancelled",
43
- IS_CUSTOMER_CONTEXT_OWNER = "is_customer_context_owner"
54
+ IS_CUSTOMER_CONTEXT_OWNER = "is_customer_context_owner",
55
+ PENDING_EVALS = "pending_evals",
56
+ PENDING_EVALS_COUNT = "pending_evals_count"
44
57
  }
45
58
  export declare enum ResourceKeys {
46
59
  SERVICE_NAME = "service.name",
@@ -1 +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"}
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,yBAAyB,8BAA8B;IACvD,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,4CAA4C,iDAAiD;IAC7F,0CAA0C,+CAA+C;IACzF,sCAAsC,2CAA2C;IACjF,4BAA4B,iCAAiC;IAC7D,kCAAkC,uCAAuC;IACzE,6BAA6B,kCAAkC;IAE/D,mBAAmB,wBAAwB;IAC3C,4BAA4B,iCAAiC;IAC7D,6BAA6B,kCAAkC;IAC/D,4BAA4B,iCAAiC;IAC7D,6BAA6B,kCAAkC;IAC/D,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;;;GAGG;AACH,oBAAY,qBAAqB;IAC/B,oBAAoB,yBAAyB;IAC7C,SAAS,cAAc;IACvB,yBAAyB,8BAA8B;IACvD,aAAa,kBAAkB;IAC/B,mBAAmB,wBAAwB;CAC5C;AAED,oBAAY,YAAY;IACtB,YAAY,iBAAiB;IAC7B,sBAAsB,2BAA2B;IACjD,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;IAC/C,mBAAmB,wBAAwB;CAC5C"}
package/dist/index.cjs CHANGED
@@ -1,5 +1,6 @@
1
- var{defineProperty:$,getOwnPropertyNames:Pe,getOwnPropertyDescriptor:Te}=Object,xe=Object.prototype.hasOwnProperty;var K=new WeakMap,he=(e)=>{var t=K.get(e),s;if(t)return t;if(t=$({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")Pe(e).map((o)=>!xe.call(t,o)&&$(t,o,{get:()=>e[o],enumerable:!(s=Te(e,o))||s.enumerable}));return K.set(e,t),t};var ve=(e,t)=>{for(var s in t)$(e,s,{get:t[s],enumerable:!0,configurable:!0,set:(o)=>t[s]=()=>o})};var Le={};ve(Le,{Tracer:()=>N,NoOpSpanExporter:()=>P,JudgmentTracerProvider:()=>R,JudgmentSpanExporter:()=>f,Judgeval:()=>A,BaseTracer:()=>p});module.exports=he(Le);function I(e,t){let s=process.env[e];if(!s)return t??null;return s}var C=I("JUDGMENT_API_KEY"),G=I("JUDGMENT_ORG_ID"),j=I("JUDGMENT_API_URL","https://api.judgmentlabs.ai"),B=I("JUDGMENT_LOG_LEVEL","warn");class h{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 A{internalClient;constructor(e={}){let t=e.apiKey??C,s=e.organizationId??G,o=e.apiUrl??j;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 h(o,t,s)}static create(e={}){return new A(e)}}var y=require("@opentelemetry/api"),ue=require("crypto");var ge=/^([^(]+?)=>/,Ue=/^[^(]*\(\s*([^)]*)\)/m,ye=/,/,De=/^\s*(_?)(\S+?)\1\s*$/,Ne=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function Ie(e){return Function.prototype.toString.call(e)}function Ce(e){let t=Ie(e).replace(Ne,"");return t.match(ge)||t.match(Ue)}function ee(e){let t=Ce(e);if(!t||!t[1])return[];return t[1].split(ye).map((s)=>{return s.replace(De,(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=B.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 Ge(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 q(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,Ge);return typeof t==="string"?t:String(e)}catch(t){return r.error(`safeStringify failed: ${t}`),String(e)}}}function v(e,t){if(typeof e==="string"||typeof e==="number"||typeof e==="boolean")return e;return t(e)}var c=require("@opentelemetry/api"),re=require("@opentelemetry/instrumentation"),pe=require("async_hooks");var d=require("@opentelemetry/api"),k=require("async_hooks"),te=!1,F=null,se=new k.AsyncLocalStorage,O=new k.AsyncLocalStorage,je=d.context.active.bind(d.context),Ae=d.context.with.bind(d.context),qe=d.context.bind.bind(d.context);function V(){return se.getStore()===!0}function oe(e){if(F=e,te)return;let t=d.context;t.active=()=>{if(!V())return je();let s=O.getStore();if(s)return s;return F?F():d.ROOT_CONTEXT},t.with=(s,o,n,...i)=>{if(!V())return Ae(s,o,n,...i);return O.run(s,()=>o.apply(n,i))},t.bind=(s,o)=>{if(!V())return qe(s,o);if(typeof o!=="function")return o;let n=o;return(...i)=>O.run(s,()=>n(...i))},te=!0}function ne(e,t){return se.run(!0,()=>O.run(e,t))}var Oe="judgeval",Y=new pe.AsyncLocalStorage;class ie{_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 le{startSpan(){return c.trace.wrapSpanContext(c.INVALID_SPAN_CONTEXT)}startActiveSpan(e,...t){return(t.length===1?t[0]:t.length===2?t[1]:t[2])(this.startSpan())}}class R{static _instance=null;_activeTracer=null;_instrumentations=[];_noOpTracer;_proxyTracer;_tracers=new Set;constructor(){this._noOpTracer=new le,this._proxyTracer=new ie(this),oe(()=>this.getCurrentContext())}static getInstance(){return R._instance??=new R,R._instance}static installAsGlobalTracerProvider(){let e=R.getInstance();return c.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(c.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()??c.ROOT_CONTEXT}getCurrentSpan(){let e=this.getCurrentContext();return c.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(Oe)}getTracer(e,t,s){return this._proxyTracer}addInstrumentation(e){try{re.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=c.trace.setSpan(i,e);return Y.run(l,()=>ne(l,()=>{try{let m=n();if(m instanceof Promise)return m.catch((u)=>{if(e.isRecording()){if(s)e.recordException(u);if(o){let _=u;e.setStatus({code:c.SpanStatusCode.ERROR,message:`${_.name}: ${_.message}`})}}throw u}).finally(()=>{if(t)e.end()});if(t)e.end();return m}catch(m){if(e.isRecording()){if(s)e.recordException(m);if(o){let u=m;e.setStatus({code:c.SpanStatusCode.ERROR,message:`${u.name}: ${u.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"),U=Symbol.for("judgment.session_id");var me="judgeval";class p{projectName;projectId;apiKey;organizationId;apiUrl;environment;serializer;_tracerProvider;_client;_enableMonitoring;constructor(e,t,s,o,n,i,l,m,u,_){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=u,this._enableMonitoring=_}setActive(){return R.getInstance().setActive(this)}static _getProxyProvider(){return R.getInstance()}static _getSerializer(){return p._getProxyProvider().getActiveTracer()?.serializer??q}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(me)}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:y.SpanStatusCode.ERROR,message:String(n)}),s.recordException(n),n});return o}catch(o){throw s.setStatus({code:y.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=(u)=>{let _=s??u.name;return(...x)=>{return l.getTracer(me).startActiveSpan(_,(E)=>{if(t)E.setAttribute("judgment.span_kind",t);try{if(o)E.setAttribute("judgment.input",v(Me(u,x),p._getSerializer()));p._emitPartial();let a=u(...x);if(a instanceof Promise)return a.then((S)=>{if(n)E.setAttribute("judgment.output",v(S,p._getSerializer()));return S}).catch((S)=>{throw E.recordException(S),E.setStatus({code:y.SpanStatusCode.ERROR,message:String(S)}),S}).finally(()=>{E.end()});if(n)E.setAttribute("judgment.output",v(a,p._getSerializer()));return E.end(),a}catch(a){throw E.recordException(a),E.setStatus({code:y.SpanStatusCode.ERROR,message:String(a)}),E.end(),a}})}};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,v(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.model==="string")t.setAttribute("judgment.llm.model",e.model);if(typeof e.provider==="string")t.setAttribute("judgment.llm.provider",e.provider);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(U,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)??[],u={project_id:o.projectId,eval_name:`async_evaluate_${e}_${m.length}`,judges:[{name:e}],examples:[{...t,example_id:ue.randomUUID(),created_at:new Date().toISOString(),trace_id:i.traceId,span_id:i.spanId}],is_offline:!1,is_behavior:!1};m.push(u),p._pendingEvals.set(l,m),n.setAttribute("judgment.pending_trace_eval",JSON.stringify(m))}}function Me(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 Ee=require("@opentelemetry/exporter-trace-otlp-http");class f{_delegate;constructor(e,t,s,o){this._delegate=new Ee.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 Re=require("@opentelemetry/core");class P extends f{constructor(){super("https://api.judgmentlabs.ai/otel/v1/traces","","","");this._delegate=null}export(e,t){t({code:Re.ExportResultCode.SUCCESS})}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}var _e=require("@opentelemetry/sdk-trace-base");var ce=[];function D(e){ce.push(e)}function M(){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()}}D(()=>new Q);class H{onStart(e,t){let s=t.getValue(U);if(s)e.setAttribute("judgment.session_id",s)}onEnd(e){}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}}D(()=>new H);function w(e){return`${e.traceId}:${e.spanId}`}function we(e){return e[0]===0&&e[1]===0}class T extends _e.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=w(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=w(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=w(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});let m=we(e.endTime)?e.startTime:e.endTime;Object.defineProperty(l,"endTime",{value:m,writable:!1}),super.onEnd(l)}emitPartial(){let t=R.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 M())s.onStart(e,t)}onEnd(e){for(let n of M())n.onEnd(e);let t=e.spanContext();if(!this.getInternalAttribute(t,"cancelled",!1))this._emitSpan(e);let o=w(t);this._cleanupSpanState(o)}}class b extends T{constructor(){super(null,new P)}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 L=require("@opentelemetry/resources"),Z=require("@opentelemetry/sdk-trace-node");var de=new Map,X=new Map;async function ae(e,t){let s=`org:${e.getOrganizationId()}:project:${t}`,o=de.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}`),de.set(s,m),m})();X.set(s,i);try{return await i}finally{X.delete(s)}}var Se="0.9.4";var fe=Se;class N extends p{_spanExporter=null;_spanProcessor=null;constructor(e,t,s,o,n,i,l,m,u,_){super(e,t,s,o,n,i,l,m,u,_)}static async init(e={}){let t=e.apiKey??C,s=e.organizationId??G,o=e.apiUrl??j,n=e.projectName??null,i=e.serializer??q,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,u=null;if(l&&n&&t&&s&&o){if(m=new h(o,t,s),u=await ae(m,n).catch(()=>null),!u)r.warning(`Project '${n}' not found. Tracer will not export spans.`),l=!1}let _={"service.name":n??"unknown","telemetry.sdk.name":"judgeval","telemetry.sdk.version":fe};if(e.environment)_["deployment.environment"]=e.environment;if(e.resourceAttributes)Object.assign(_,e.resourceAttributes);let x=L.defaultResource().merge(L.resourceFromAttributes(_)),z=new Z.NodeTracerProvider({resource:x}),E=new N(n,u,t,s,o,e.environment??null,i,z,m,l);if(l){let S=new Z.NodeTracerProvider({resource:x,spanProcessors:[E.getSpanProcessor()]});E._tracerProvider=S}if(R.getInstance().register(E),e.setActive??!0)E.setActive();return E}getSpanExporter(){if(this._spanExporter)return this._spanExporter;if(!this._enableMonitoring||!this.projectId||!this.apiKey||!this.organizationId||!this.apiUrl)this._spanExporter=new P;else{let e=this.apiUrl.endsWith("/")?this.apiUrl+"otel/v1/traces":this.apiUrl+"/otel/v1/traces";this._spanExporter=new f(e,this.apiKey,this.organizationId,this.projectId)}return this._spanExporter}getSpanProcessor(){if(this._spanProcessor)return this._spanProcessor;if(!this._enableMonitoring)this._spanProcessor=new b;else this._spanProcessor=new T(this,this.getSpanExporter());return this._spanProcessor}}
1
+ var{defineProperty:g,getOwnPropertyNames:ds,getOwnPropertyDescriptor:Bs}=Object,ys=Object.prototype.hasOwnProperty;var Ds=new WeakMap,is=(s)=>{var R=Ds.get(s),o;if(R)return R;if(R=g({},"__esModule",{value:!0}),s&&typeof s==="object"||typeof s==="function")ds(s).map((p)=>!ys.call(R,p)&&g(R,p,{get:()=>s[p],enumerable:!(o=Bs(s,p))||o.enumerable}));return Ds.set(s,R),R};var a=(s,R)=>{for(var o in R)g(s,o,{get:R[o],enumerable:!0,configurable:!0,set:(p)=>R[o]=()=>p})};var fR={};a(fR,{propagation:()=>K,baggage:()=>i,Tracer:()=>z,NoOpSpanProcessor:()=>Y,NoOpSpanExporter:()=>H,JudgmentTracerProvider:()=>D,JudgmentSpanExporter:()=>l,JudgmentBaggageSpanProcessor:()=>W,JudgmentBaggagePropagator:()=>x,Judgeval:()=>T,BaseTracer:()=>m,ALLOW_ALL_BAGGAGE_KEYS:()=>e});module.exports=is(fR);function J(s,R){let o=process.env[s];if(!o)return R??null;return o}var G=J("JUDGMENT_API_KEY"),_=J("JUDGMENT_ORG_ID"),c=J("JUDGMENT_API_URL","https://api.judgmentlabs.ai"),Us=J("JUDGMENT_LOG_LEVEL","warn");class u{baseUrl;apiKey;organizationId;constructor(s,R,o){this.baseUrl=s,this.apiKey=R,this.organizationId=o}getBaseUrl(){return this.baseUrl}getApiKey(){return this.apiKey}getOrganizationId(){return this.organizationId}async request(s,R,o){let p=await fetch(R,{method:s,headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`,"X-Organization-Id":this.organizationId},body:o!==void 0?JSON.stringify(o):void 0});if(!p.ok){let E=await p.text();throw Error(`HTTP ${p.status}: ${E}`)}return p.json()}async postOtelV1traces(){let s=this.baseUrl+"/otel/v1/traces";return this.request("POST",s,{})}async postV1projectsResolve(s){let R=this.baseUrl+"/v1/projects/resolve/";return this.request("POST",R,s)}async postV1projects(s){let R=this.baseUrl+"/v1/projects";return this.request("POST",R,s)}async deleteV1projects(s){let R=this.baseUrl+`/v1/projects/${s}`;return this.request("DELETE",R,{})}async postV1projectsDatasets(s,R){let o=this.baseUrl+`/v1/projects/${s}/datasets`;return this.request("POST",o,R)}async getV1projectsDatasets(s){let R=this.baseUrl+`/v1/projects/${s}/datasets`;return this.request("GET",R,void 0)}async postV1projectsDatasetsByDatasetNameExamples(s,R,o){let p=this.baseUrl+`/v1/projects/${s}/datasets/${R}/examples`;return this.request("POST",p,o)}async getV1projectsDatasetsByDatasetName(s,R){let o=this.baseUrl+`/v1/projects/${s}/datasets/${R}`;return this.request("GET",o,void 0)}async postV1projectsEvaluateExamples(s,R){let o=this.baseUrl+`/v1/projects/${s}/evaluate/examples`;return this.request("POST",o,R)}async postV1projectsEvaluateTraces(s,R){let o=this.baseUrl+`/v1/projects/${s}/evaluate/traces`;return this.request("POST",o,R)}async postV1projectsEvalResults(s,R){let o=this.baseUrl+`/v1/projects/${s}/eval-results`;return this.request("POST",o,R)}async postV1projectsEvalResultsExamples(s,R){let o=this.baseUrl+`/v1/projects/${s}/eval-results/examples`;return this.request("POST",o,R)}async getV1projectsExperimentsByRunId(s,R){let o=this.baseUrl+`/v1/projects/${s}/experiments/${R}`;return this.request("GET",o,void 0)}async postV1projectsEvalQueueExamples(s,R){let o=this.baseUrl+`/v1/projects/${s}/eval-queue/examples`;return this.request("POST",o,R)}async postV1projectsEvalQueueTraces(s,R){let o=this.baseUrl+`/v1/projects/${s}/eval-queue/traces`;return this.request("POST",o,R)}async getV1projectsPromptsByName(s,R,o,p){let E=new URLSearchParams;if(o!==void 0)E.set("commit_id",o);if(p!==void 0)E.set("tag",p);let j=this.baseUrl+`/v1/projects/${s}/prompts/${R}`+(E.toString()?"?"+E.toString():"");return this.request("GET",j,void 0)}async postV1projectsPrompts(s,R){let o=this.baseUrl+`/v1/projects/${s}/prompts`;return this.request("POST",o,R)}async postV1projectsPromptsByNameTags(s,R,o){let p=this.baseUrl+`/v1/projects/${s}/prompts/${R}/tags`;return this.request("POST",p,o)}async deleteV1projectsPromptsByNameTags(s,R,o){let p=this.baseUrl+`/v1/projects/${s}/prompts/${R}/tags`;return this.request("DELETE",p,o)}async getV1projectsPromptsByNameVersions(s,R){let o=this.baseUrl+`/v1/projects/${s}/prompts/${R}/versions`;return this.request("GET",o,void 0)}async getV1projectsScorers(s,R,o){let p=new URLSearchParams;if(R!==void 0)p.set("names",R);if(o!==void 0)p.set("is_trace",o);let E=this.baseUrl+`/v1/projects/${s}/scorers`+(p.toString()?"?"+p.toString():"");return this.request("GET",E,void 0)}async getV1projectsScorersByNameExists(s,R){let o=this.baseUrl+`/v1/projects/${s}/scorers/${R}/exists`;return this.request("GET",o,void 0)}async postV1projectsScorersCustom(s){let R=this.baseUrl+`/v1/projects/${s}/scorers/custom`;return this.request("POST",R,{})}async postV1projectsScorersCustomBundle(s){let R=this.baseUrl+`/v1/projects/${s}/scorers/custom/bundle`;return this.request("POST",R,{})}async getV1projectsScorersCustomByNameExists(s,R){let o=this.baseUrl+`/v1/projects/${s}/scorers/custom/${R}/exists`;return this.request("GET",o,void 0)}async postV1projectsTracesByTraceIdTags(s,R,o){let p=this.baseUrl+`/v1/projects/${s}/traces/${R}/tags`;return this.request("POST",p,o)}async getV1e2eFetchTraceByProjectNameByTraceId(s,R){let o=this.baseUrl+`/v1/e2e_fetch_trace/${s}/${R}`;return this.request("GET",o,void 0)}async getV1e2eTracesPerProject(s,R,o){let p=new URLSearchParams;if(R!==void 0)p.set("limit",R);if(o!==void 0)p.set("offset",o);let E=this.baseUrl+`/v1/e2e_traces_per_project/${s}`+(p.toString()?"?"+p.toString():"");return this.request("GET",E,void 0)}async postV1e2eFetchSpanScore(s){let R=this.baseUrl+"/v1/e2e_fetch_span_score/";return this.request("POST",R,s)}}class T{internalClient;constructor(s={}){let R=s.apiKey??G,o=s.organizationId??_,p=s.apiUrl??c;if(!R)throw Error("API key is required");if(!o)throw Error("Organization ID is required");if(!p)throw Error("API URL is required");this.internalClient=new u(p,R,o)}static create(s={}){return new T(s)}}var v=require("@opentelemetry/api"),vs=require("crypto");var bs=/^([^(]+?)=>/,As=/^[^(]*\(\s*([^)]*)\)/m,Ks=/,/,es=/^\s*(_?)(\S+?)\1\s*$/,rs=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;function gs(s){return Function.prototype.toString.call(s)}function as(s){let R=gs(s).replace(rs,"");return R.match(bs)||R.match(As)}function Fs(s){let R=as(s);if(!R||!R[1])return[];return R[1].split(Ks).map((o)=>{return o.replace(es,(E,j,P)=>P).trim()}).filter((o)=>o.length>0)}class q{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=q.Level.WARNING;static useColor=!0;static initialize(){if(!q.initialized){let s=process.env.JUDGMENT_NO_COLOR;q.useColor=!s&&process.stdout.isTTY;let R=Us.toLowerCase();if(R){let o={debug:q.Level.DEBUG,info:q.Level.INFO,warning:q.Level.WARNING,warn:q.Level.WARNING,error:q.Level.ERROR,critical:q.Level.CRITICAL};q.currentLevel=o[R]??q.Level.WARNING}q.initialized=!0}}static setLevel(s){q.currentLevel=s}static setUseColor(s){q.useColor=s}static log(s,R){if(q.initialize(),s<q.currentLevel)return;let o=new Date().toISOString().replace("T"," ").substring(0,19),p=Object.keys(q.Level).find((P)=>q.Level[P]===s)??"UNKNOWN",E=`${o} - judgeval - ${p} - ${R}`;if(q.useColor)E=`${s===q.Level.DEBUG||s===q.Level.INFO?q.GRAY:s===q.Level.WARNING?q.YELLOW:q.RED}${E}${q.RESET}`;(s>=q.Level.ERROR?process.stderr:process.stdout).write(E+`
2
+ `)}static debug(s){q.log(q.Level.DEBUG,s)}static info(s){q.log(q.Level.INFO,s)}static warning(s){q.log(q.Level.WARNING,s)}static warn(s){q.log(q.Level.WARNING,s)}static error(s){q.log(q.Level.ERROR,s)}static critical(s){q.log(q.Level.CRITICAL,s)}}function f(s,R,o){try{return R()}catch(p){let E=p instanceof Error&&p.stack?`
3
+ ${p.stack}`:"";return q.error(`[Caught] An exception was raised in ${s}: ${String(p)}${E}`),o}}var ss;function sR(s,R){if(typeof R==="bigint")return R.toString();if(typeof R==="object"&&R!==null){if(ss.has(R))return"[Circular]";ss.add(R)}return R}function k(s){try{let R=JSON.stringify(s);if(typeof R==="string")return R;return String(R)}catch{try{ss=new WeakSet;let R=JSON.stringify(s,sR);return typeof R==="string"?R:String(s)}catch(R){return q.error(`safeStringify failed: ${R}`),String(s)}}}function t(s,R){if(typeof s==="string"||typeof s==="number"||typeof s==="boolean")return s;return R(s)}var i={};a(i,{setBaggage:()=>N,getBaggage:()=>C,getActiveBaggage:()=>qR,deleteBaggage:()=>jR,createBaggage:()=>M,baggageEntryMetadataFromString:()=>Is.baggageEntryMetadataFromString,JudgmentBaggagePropagator:()=>x});var n=require("@opentelemetry/api");var V=require("@opentelemetry/api"),Qs=require("@opentelemetry/instrumentation"),ws=require("async_hooks");var S=require("@opentelemetry/api"),ps=require("async_hooks"),fs=!1,Rs=null,Vs=new ps.AsyncLocalStorage,L=new ps.AsyncLocalStorage,RR=S.context.active.bind(S.context),oR=S.context.with.bind(S.context),pR=S.context.bind.bind(S.context);function os(){return Vs.getStore()===!0}function Ss(s){if(Rs=s,fs)return;let R=S.context;R.active=()=>{if(!os())return RR();let o=L.getStore();if(o)return o;return Rs?Rs():S.ROOT_CONTEXT},R.with=(o,p,E,...j)=>{if(!os())return oR(o,p,E,...j);return L.run(o,()=>p.apply(E,j))},R.bind=(o,p)=>{if(!os())return pR(o,p);if(typeof p!=="function")return p;let E=p;return(...j)=>L.run(o,()=>E(...j))},fs=!0}function Es(s,R){return Vs.run(!0,()=>L.run(s,R))}var ER="judgeval",d=new ws.AsyncLocalStorage;class xs{_provider;constructor(s){this._provider=s}startSpan(s,R,o){let p=o??this._provider.getCurrentContext();return this._provider._getDelegateTracer().startSpan(s,R,p)}startActiveSpan(s,...R){let o={},p=this._provider.getCurrentContext(),E;if(R.length===1)E=R[0];else if(R.length===2)o=R[0],E=R[1];else o=R[0],p=R[1],E=R[2];let j=this.startSpan(s,o,p);return this._provider.useSpan(j,!0,!0,!0,()=>E(j))}}class Cs{startSpan(){return V.trace.wrapSpanContext(V.INVALID_SPAN_CONTEXT)}startActiveSpan(s,...R){return(R.length===1?R[0]:R.length===2?R[1]:R[2])(this.startSpan())}}class D{static _instance=null;_activeTracer=null;_instrumentations=[];_noOpTracer;_proxyTracer;_tracers=new Set;constructor(){this._noOpTracer=new Cs,this._proxyTracer=new xs(this),Ss(()=>this.getCurrentContext())}static getInstance(){return D._instance??=new D,D._instance}static installAsGlobalTracerProvider(){let s=D.getInstance();return V.trace.setGlobalTracerProvider(s)}register(s){this._tracers.add(s)}deregister(s){this._tracers.delete(s)}setActive(s){let R=this.getCurrentSpan();if(R?.isRecording()){if(V.trace.getSpan(this.getCurrentContext())===R)return q.error("Cannot set_active() while a root span is active. Keeping existing tracer provider."),!1}return this.register(s),this._activeTracer=s,!0}getActiveTracer(){return this._activeTracer}getCurrentContext(){return d.getStore()??V.ROOT_CONTEXT}getCurrentSpan(){let s=this.getCurrentContext();return V.trace.getSpan(s)}hasActiveRootSpan(){if(!this.getCurrentSpan()?.isRecording())return!1;return!0}_getDelegateTracer(){let s=this._activeTracer;if(!s)return q.debug("No active tracer, returning NoOpTracer"),this._noOpTracer;return s._tracerProvider.getTracer(ER)}getTracer(s,R,o){return this._proxyTracer}addInstrumentation(s){try{Qs.registerInstrumentations({tracerProvider:this,instrumentations:[s]}),this._instrumentations.push(s)}catch(R){q.error(`Failed to add instrumentation: ${String(R)}`)}}useSpan(s,R,o,p,E){let j=this.getCurrentContext(),P=V.trace.setSpan(j,s);return d.run(P,()=>Es(P,()=>{try{let $=E();if($ instanceof Promise)return $.catch((h)=>{if(s.isRecording()){if(o)s.recordException(h);if(p){let U=h;s.setStatus({code:V.SpanStatusCode.ERROR,message:`${U.name}: ${U.message}`})}}throw h}).finally(()=>{if(R)s.end()});if(R)s.end();return $}catch($){if(s.isRecording()){if(o)s.recordException($);if(p){let h=$;s.setStatus({code:V.SpanStatusCode.ERROR,message:`${h.name}: ${h.message}`})}}if(R)s.end();throw $}}))}attachContext(s){d.enterWith(s)}withContext(s,R){return d.run(s,()=>Es(s,R))}async forceFlush(){let s=await Promise.allSettled(Array.from(this._tracers).map((R)=>R._tracerProvider.forceFlush()));for(let R of s)if(R.status==="rejected")q.error(`forceFlush failed: ${String(R.reason)}`)}async shutdown(){let s=await Promise.allSettled(Array.from(this._tracers).map((R)=>R._tracerProvider.shutdown()));for(let R of s)if(R.status==="rejected")q.error(`shutdown failed: ${String(R.reason)}`);this._activeTracer=null,this._tracers.clear()}}var Is=require("@opentelemetry/api");var ts=require("@opentelemetry/core");var ls="=",B=";",I=",",y="baggage",Hs=180,Ws=4096,Zs=8192;var Xs=require("@opentelemetry/api");function Ys(s){return s.reduce((R,o)=>{let p=`${R}${R!==""?I:""}${o}`;return p.length>Zs?R:p},"")}function Os(s){return s.getAllEntries().map(([R,o])=>{let p=`${encodeURIComponent(R)}=${encodeURIComponent(o.value)}`;if(o.metadata!==void 0)p+=B+o.metadata.toString();return p})}function us(s){let R=s.split(B);if(R.length<=0)return;let o=R.shift();if(!o)return;let p=o.indexOf(ls);if(p<=0)return;let E=decodeURIComponent(o.substring(0,p).trim()),j=decodeURIComponent(o.substring(p+1).trim()),P;if(R.length>0)P=Xs.baggageEntryMetadataFromString(R.join(B));return{key:E,value:j,metadata:P}}class x{inject(s,R,o){let p=C(s);if(!p||ts.isTracingSuppressed(s))return;let E=Os(p).filter((P)=>P.length<=Ws).slice(0,Hs),j=Ys(E);if(j.length>0)o.set(R,y,j)}extract(s,R,o){let p=o.get(R,y),E=Array.isArray(p)?p.join(I):p;if(!E)return s;let j={};if(E.length===0)return s;if(E.split(I).forEach(($)=>{let h=us($);if(h){let U={value:h.value};if(h.metadata)U.metadata=h.metadata;j[h.key]=U}}),Object.entries(j).length===0)return s;return N(s,M(j))}fields(){return[y]}}var M=n.propagation.createBaggage.bind(n.propagation),qs=n.createContextKey("baggage");function C(s){return s.getValue(qs)??void 0}function qR(){return C(D.getInstance().getCurrentContext())}function N(s,R){return s.setValue(qs,R)}function jR(s){return s.deleteValue(qs)}var K={};a(K,{setGlobalTextmap:()=>PR,inject:()=>mR,getGlobalTextmap:()=>js,extract:()=>Ps});var b=require("@opentelemetry/api"),A=require("@opentelemetry/core");var Ms=new A.CompositePropagator({propagators:[new A.W3CTraceContextPropagator,new x]});function js(){return Ms}function PR(s){Ms=s}function Ns(s){if(s!==void 0)return s;return D.getInstance().getCurrentContext()}function mR(s,R,o=b.defaultTextMapSetter){f("propagation.inject",()=>{js().inject(Ns(R),s,o)})}function Ps(s,R,o=b.defaultTextMapGetter){let p=Ns(R);return f("propagation.extract",()=>js().extract(p,s,o),p)??p}var ns="judgeval";class m{projectName;projectId;apiKey;organizationId;apiUrl;environment;serializer;_tracerProvider;_client;_enableMonitoring;constructor(s,R,o,p,E,j,P,$,h,U){this.projectName=s,this.projectId=R,this.apiKey=o,this.organizationId=p,this.apiUrl=E,this.environment=j,this.serializer=P,this._tracerProvider=$,this._client=h,this._enableMonitoring=U}setActive(){return D.getInstance().setActive(this)}static _getProxyProvider(){return D.getInstance()}static _getSerializer(){return m._getProxyProvider().getActiveTracer()?.serializer??k}static _getCurrentTraceAndSpanId(){let R=m._getProxyProvider().getCurrentSpan();if(!R?.isRecording())return null;let o=R.spanContext();if(!o.traceId||!(o.traceFlags&1))return null;return[o.traceId,o.spanId]}static _emitPartial(){f("BaseTracer._emitPartial",()=>{let s=m._getProxyProvider().getActiveTracer();if(!s)return;s.getSpanProcessor().emitPartial()})}static getCurrentSpan(){return m._getProxyProvider().getCurrentSpan()}static async forceFlush(){await m._getProxyProvider().forceFlush()}static async shutdown(){await m._getProxyProvider().shutdown()}static registerOTELInstrumentation(s){f("BaseTracer.registerOTELInstrumentation",()=>{m._getProxyProvider().addInstrumentation(s)})}static getOTELTracer(){return m._getProxyProvider().getTracer(ns)}static startSpan(s,R){let o=m.getOTELTracer().startSpan(s,{attributes:R});return m._emitPartial(),o}static startActiveSpan(s,R,o){return m.getOTELTracer().startActiveSpan(s,{attributes:o},(p)=>{m._emitPartial();let E=R(p);if(E instanceof Promise)return E.finally(()=>{p.end()});return p.end(),E})}static span(s,R){return m.startActiveSpan(s,(o)=>{try{let p=R(o);if(p instanceof Promise)return p.catch((E)=>{throw o.setStatus({code:v.SpanStatusCode.ERROR,message:String(E)}),o.recordException(E),E});return p}catch(p){throw o.setStatus({code:v.SpanStatusCode.ERROR,message:String(p)}),o.recordException(p),p}})}static with(s,R){return m.span(s,R)}static continueTrace(s,R){let o=m._getProxyProvider(),p=Ps(s);return o.withContext(p,()=>R(p))}static observe(s,R="span",o,p=!0,E=!0,j=!1){let P=m._getProxyProvider(),$=(h)=>{let U=o??h.name;return(...O)=>{return P.getTracer(ns).startActiveSpan(U,(F)=>{if(R)F.setAttribute("judgment.span_kind",R);try{if(p)F.setAttribute("judgment.input",t(DR(h,O),m._getSerializer()));m._emitPartial();let Q=h(...O);if(Q instanceof Promise)return Q.then((w)=>{if(E)F.setAttribute("judgment.output",t(w,m._getSerializer()));return w}).catch((w)=>{throw F.recordException(w),F.setStatus({code:v.SpanStatusCode.ERROR,message:String(w)}),w}).finally(()=>{F.end()});if(E)F.setAttribute("judgment.output",t(Q,m._getSerializer()));return F.end(),Q}catch(Q){throw F.recordException(Q),F.setStatus({code:v.SpanStatusCode.ERROR,message:String(Q)}),F.end(),Q}})}};if(!s)return $;return $(s)}static setSpanKind(s){f("BaseTracer.setSpanKind",()=>{if(!s)return;let R=m._getProxyProvider().getCurrentSpan();if(R?.isRecording())R.setAttribute("judgment.span_kind",s)})}static setLLMSpan(){m.setSpanKind("llm")}static setToolSpan(){m.setSpanKind("tool")}static setGeneralSpan(){m.setSpanKind("span")}static setAttribute(s,R){f("BaseTracer.setAttribute",()=>{let o=m._getProxyProvider().getCurrentSpan();if(!o?.isRecording())return;if(!s||R==null)return;o.setAttribute(s,t(R,m._getSerializer()))})}static setAttributes(s){for(let[R,o]of Object.entries(s))m.setAttribute(R,o)}static setInput(s){m.setAttribute("judgment.input",s)}static setOutput(s){m.setAttribute("judgment.output",s)}static recordLLMMetadata(s){f("BaseTracer.recordLLMMetadata",()=>{let R=m._getProxyProvider().getCurrentSpan();if(!R?.isRecording())return;if(typeof s.model==="string")R.setAttribute("judgment.llm.model",s.model);if(typeof s.provider==="string")R.setAttribute("judgment.llm.provider",s.provider);if(typeof s.non_cached_input_tokens==="number")R.setAttribute("judgment.usage.non_cached_input_tokens",s.non_cached_input_tokens);if(typeof s.output_tokens==="number")R.setAttribute("judgment.usage.output_tokens",s.output_tokens);if(typeof s.cache_read_input_tokens==="number")R.setAttribute("judgment.usage.cache_read_input_tokens",s.cache_read_input_tokens);if(typeof s.cache_creation_input_tokens==="number")R.setAttribute("judgment.usage.cache_creation_input_tokens",s.cache_creation_input_tokens);if(typeof s.total_cost_usd==="number")R.setAttribute("judgment.usage.total_cost_usd",s.total_cost_usd)})}static _setPropagatingBaggageKey(s,R){f("BaseTracer._setPropagatingBaggageKey",()=>{let o=m._getProxyProvider(),p=o.getCurrentSpan();if(!p?.isRecording())return;p.setAttribute(s,R);let E=o.getCurrentContext(),j=(C(E)??M()).setEntry(s,{value:R});o.attachContext(N(E,j))})}static setCustomerId(s){m._setPropagatingBaggageKey("judgment.customer_id",s)}static setCustomerUserId(s){m._setPropagatingBaggageKey("judgment.customer_user_id",s)}static setSessionId(s){m._setPropagatingBaggageKey("judgment.session_id",s)}static tag(s){f("BaseTracer.tag",()=>{if(!s||Array.isArray(s)&&s.length===0)return;let o=m._getProxyProvider().getActiveTracer();if(!o?.projectId||!o._client)return;let p=m._getCurrentTraceAndSpanId();if(!p)return;let[E]=p,j=Array.isArray(s)?s:[s];o._client.postV1projectsTracesByTraceIdTags(o.projectId,E,{tags:j}).catch((P)=>{q.error(`tag failed: ${String(P)}`)})})}static asyncEvaluate(s,R){f("BaseTracer.asyncEvaluate",()=>{let o=m._getProxyProvider(),p=o.getActiveTracer();if(!p?.projectId)return;let E=o.getCurrentSpan();if(!E?.isRecording())return;let j=p.getSpanProcessor(),P=E.spanContext(),$=j.stateIncr(P,"pending_evals_count"),h={project_id:p.projectId,eval_name:`async_evaluate_${s}_${$}`,judges:[{name:s}],examples:[{...R,example_id:vs.randomUUID(),created_at:new Date().toISOString(),trace_id:P.traceId,span_id:P.spanId}],is_offline:!1,is_behavior:!1},U=j.stateAppend(P,"pending_evals",h);E.setAttribute("judgment.pending_trace_eval",JSON.stringify(U))})}}function DR(s,R){try{let o=Fs(s).map((E)=>E.replace(/^\.\.\./,"").split("=")[0].trim()).filter((E)=>E.length>0),p={};return o.forEach((E,j)=>{if(j<R.length)p[E]=R[j]}),p}catch{return{}}}var zs=require("@opentelemetry/exporter-trace-otlp-http");class l{_delegate;constructor(s,R,o,p){this._delegate=new zs.OTLPTraceExporter({url:s,headers:{Authorization:`Bearer ${R}`,"X-Organization-Id":o,"X-Project-Id":p}})}export(s,R){q.info(`Exported ${s.length} spans`),this._delegate?.export(s,R)}shutdown(){return this._delegate?.shutdown()??Promise.resolve()}forceFlush(){return this._delegate?.forceFlush()??Promise.resolve()}}var Js=require("@opentelemetry/core");class H extends l{constructor(){super("https://api.judgmentlabs.ai/otel/v1/traces","","","");this._delegate=null}export(s,R){R({code:Js.ExportResultCode.SUCCESS})}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}var Gs=require("@opentelemetry/sdk-trace-base");var e=()=>!0;class W{_keyPredicate;constructor(s=e){this._keyPredicate=s}onStart(s,R){let o=C(R)?.getAllEntries()??[];for(let[p,E]of o)if(this._keyPredicate(p))s.setAttribute(p,E.value)}onEnd(s){}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}}function Z(s){return`${s.traceId}:${s.spanId}`}function UR(s){return s[0]===0&&s[1]===0}class X extends Gs.BatchSpanProcessor{tracer;_state=new Map;_spanFinalizers;_baggageProcessor;constructor(s,R,o){super(R,o);this.tracer=s,this._spanFinalizers=new FinalizationRegistry((p)=>{this._cleanupSpanState(p)}),this._baggageProcessor=new W}_cleanupSpanState(s){this._state.delete(s)}_registerSpan(s){let R=s.spanContext();if(!R.traceId||!R.spanId)return;let o=Z(R);this._spanFinalizers.register(s,o)}stateSet(s,R,o){let p=Z(s),E=this._state.get(p);if(!E)E=new Map,this._state.set(p,E);E.set(R,o)}stateGet(s,R,o){let p=Z(s),E=this._state.get(p);if(!E||!E.has(R))return o;return E.get(R)}stateIncr(s,R){let o=Z(s),p=this._state.get(o);if(!p)p=new Map,this._state.set(o,p);let E=p.get(R),j=typeof E==="number"?E:0;return p.set(R,j+1),j}stateAppend(s,R,o){let p=Z(s),E=this._state.get(p);if(!E)E=new Map,this._state.set(p,E);let j=E.get(R),P=Array.isArray(j)?[...j,o]:[o];return E.set(R,P),P}_emitSpan(s,R=!1){let o=s.spanContext();if(!o.traceId)return;let p=this.stateIncr(o,"judgment.update_id"),E={...s.attributes,"judgment.update_id":p};if(R)delete E["judgment.pending_trace_eval"];let j=Object.create(s);Object.defineProperty(j,"attributes",{value:E,writable:!1});let P=UR(s.endTime)?s.startTime:s.endTime;Object.defineProperty(j,"endTime",{value:P,writable:!1}),super.onEnd(j)}emitPartial(){f("JudgmentSpanProcessor.emitPartial",()=>{let R=D.getInstance().getCurrentSpan();if(!R?.isRecording())return;let o=R.spanContext();if(!o.traceId)return;if(this.stateGet(o,"disable_partial_emit",!1))return;this._emitSpan(R,!0)})}onStart(s,R){f("JudgmentSpanProcessor.onStart",()=>{this._baggageProcessor.onStart(s,R),this._registerSpan(s)})}onEnd(s){f("JudgmentSpanProcessor.onEnd",()=>{let R=s.spanContext();if(!R.traceId){super.onEnd(s);return}let o=Z(R);try{if(!this.stateGet(R,"cancelled",!1))this._emitSpan(s)}finally{this._cleanupSpanState(o)}})}}class Y extends X{constructor(){super(null,new H)}onStart(s,R){}onEnd(s){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}emitPartial(){}stateSet(s,R,o){}stateGet(s,R,o){return o}stateIncr(s,R){return 0}stateAppend(s,R,o){return[o]}}var r=require("@opentelemetry/resources"),hs=require("@opentelemetry/sdk-trace-node");async function _s(s,R={}){let{maxRetries:o=3,backoff:p=()=>1000,onRetry:E}=R,j;for(let P=1;P<=o;P++)try{return await s()}catch($){if(j=$,P===o)throw $;E?.(P,$),await new Promise((h)=>setTimeout(h,p(P)))}throw j}var cs=new Map,ms=new Map;async function Ts(s,R){let o=`org:${s.getOrganizationId()}:project:${R}`,p=cs.get(o);if(p)return p;let E=ms.get(o);if(E)return E;let j=(async()=>{q.info(`Resolving project ID for project: ${R}`);let P=await _s(async()=>{let h=(await s.postV1projectsResolve({project_name:R})).project_id;if(!h)throw Error(`Project ID not found for project: ${R}`);return h},{maxRetries:3,backoff:($)=>$*1000,onRetry:($,h)=>{q.warning(`Failed to resolve project ID for '${R}' (attempt ${$}): ${String(h)}`)}});return q.info(`Resolved project ID: ${P}`),cs.set(o,P),P})();ms.set(o,j);try{return await j}finally{ms.delete(o)}}var ks="0.9.5";var Ls=ks;class z extends m{_spanExporter=null;_spanProcessor=null;constructor(s,R,o,p,E,j,P,$,h,U){super(s,R,o,p,E,j,P,$,h,U)}static async init(s={}){let R=s.apiKey??G,o=s.organizationId??_,p=s.apiUrl??c,E=s.projectName??null,j=s.serializer??k,P=!0;if(!E)q.warning("project_name not provided. Tracer will not export spans."),P=!1;if(!R)q.warning("api_key not provided. Tracer will not export spans."),P=!1;if(!o)q.warning("organization_id not provided. Tracer will not export spans."),P=!1;if(!p)q.warning("api_url not provided. Tracer will not export spans."),P=!1;let $=null,h=null;if(P&&E&&R&&o&&p){if($=new u(p,R,o),h=await Ts($,E).catch(()=>null),!h)q.warning(`Project '${E}' not found. Tracer will not export spans.`),P=!1}let U={"service.name":E??"unknown","telemetry.sdk.name":"judgeval","telemetry.sdk.version":Ls};if(s.environment)U["deployment.environment"]=s.environment;if(s.resourceAttributes)Object.assign(U,s.resourceAttributes);let O=r.defaultResource().merge(r.resourceFromAttributes(U)),$s=new hs.NodeTracerProvider({resource:O,sampler:s.sampler,spanLimits:s.spanLimits}),F=new z(E,h,R,o,p,s.environment??null,j,$s,$,P);if(P){let w=new hs.NodeTracerProvider({resource:O,sampler:s.sampler,spanLimits:s.spanLimits,spanProcessors:[F.getSpanProcessor(),...s.spanProcessors??[]]});F._tracerProvider=w}if(D.getInstance().register(F),s.setActive??!0)F.setActive();return F}getSpanExporter(){if(this._spanExporter)return this._spanExporter;if(!this._enableMonitoring||!this.projectId||!this.apiKey||!this.organizationId||!this.apiUrl)this._spanExporter=new H;else{let s=this.apiUrl.endsWith("/")?this.apiUrl+"otel/v1/traces":this.apiUrl+"/otel/v1/traces";this._spanExporter=new l(s,this.apiKey,this.organizationId,this.projectId)}return this._spanExporter}getSpanProcessor(){if(this._spanProcessor)return this._spanProcessor;if(!this._enableMonitoring)this._spanProcessor=new Y;else this._spanProcessor=new X(this,this.getSpanExporter());return this._spanProcessor}}
3
4
 
4
- //# debugId=55BDD4DADB8412CF64756E2164756E21
5
+ //# debugId=6BBFCA2BBAC6BB7264756E2164756E21
5
6
  //# sourceMappingURL=index.cjs.map