syntropylabs-evalkit 0.1.17 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,7 +24,7 @@ npm install openai @anthropic-ai/sdk
24
24
  import evalkit from "syntropylabs-evalkit";
25
25
 
26
26
  evalkit.init({
27
- apiKey: process.env.EVALKIT_API_KEY,
27
+ subscriptionKey: process.env.EVALKIT_SUBSCRIPTION_KEY!,
28
28
  serviceName: "my-service",
29
29
  });
30
30
 
@@ -41,7 +41,7 @@ Each incoming request becomes a root trace, with downstream LLM/DB/HTTP calls ne
41
41
  import express from "express";
42
42
  import evalkit from "syntropylabs-evalkit";
43
43
 
44
- evalkit.init({ apiKey: process.env.EVALKIT_API_KEY, serviceName: "api" });
44
+ evalkit.init({ subscriptionKey: process.env.EVALKIT_SUBSCRIPTION_KEY!, serviceName: "api" });
45
45
 
46
46
  const app = express();
47
47
  app.use(evalkit.expressMiddleware());
@@ -81,10 +81,12 @@ await evalkit.flush(); // force-flush before process exit
81
81
  ```ts
82
82
  import { evaluate } from "syntropylabs-evalkit";
83
83
 
84
- const result = await evaluate({
85
- input: "What is the capital of France?",
86
- output: "Paris",
87
- metrics: ["correctness", "relevance"],
84
+ // Deterministic, local scoring — runs synchronously, pushed as an eval_result span
85
+ const { scores } = evaluate({
86
+ output: "The answer is AWS and Azure.",
87
+ expectedTools: ["search", "summarize"],
88
+ toolCalls: [{ name: "search" }, { name: "summarize" }],
89
+ constraints: { requiredTerms: ["AWS", "Azure"] },
88
90
  });
89
91
  ```
90
92
 
@@ -99,13 +101,15 @@ const { simulationId, results } = await evalkit.simulateUser({ /* ... */ });
99
101
 
100
102
  ## Configuration
101
103
 
102
- | Option | Description |
103
- | ------------- | ------------------------------------------------------ |
104
- | `apiKey` | EvalKit project API key (required). |
105
- | `serviceName` | Logical service name attached to every trace. |
106
- | `endpoint` | Override the collector endpoint (defaults to EvalKit). |
104
+ | Option | Description |
105
+ | ------------------ | ------------------------------------------------------------- |
106
+ | `subscriptionKey` | EvalKit trace-project subscription key (**required**). |
107
+ | `serviceName` | Logical service name attached to every trace. |
108
+ | `environment` | `"development"` \| `"staging"` \| `"production"`. |
109
+ | `baseUrl` | Override the trace ingest endpoint (defaults to hosted). |
110
+ | `apiUrl` | Override the control-plane endpoint (scenario generation). |
107
111
 
108
- See `EvalKitOptions` (exported type) for the full set.
112
+ See the exported `EvalKitOptions` type for the full set (`appVersion`, `deviceId`, `debug`, batch tuning).
109
113
 
110
114
  ## License
111
115
 
package/dist/index.d.mts CHANGED
@@ -156,7 +156,7 @@ interface HapiPluginOptions {
156
156
  *
157
157
  * @example
158
158
  * import Hapi from '@hapi/hapi';
159
- * import evalkit from '@evalkit/sdk';
159
+ * import evalkit from 'syntropylabs-evalkit';
160
160
  *
161
161
  * evalkit.init({ subscriptionKey: '...', serviceName: 'my-api' });
162
162
  * const server = Hapi.server({ port: 3000 });
@@ -230,7 +230,7 @@ interface OfflineEvalResult {
230
230
  * span to the trace service so they appear alongside trace data.
231
231
  *
232
232
  * @example
233
- * import { evaluate } from '@evalkit/sdk';
233
+ * import { evaluate } from 'syntropylabs-evalkit';
234
234
  *
235
235
  * const result = evaluate({
236
236
  * output: 'The answer is AWS and Azure.',
package/dist/index.d.ts CHANGED
@@ -156,7 +156,7 @@ interface HapiPluginOptions {
156
156
  *
157
157
  * @example
158
158
  * import Hapi from '@hapi/hapi';
159
- * import evalkit from '@evalkit/sdk';
159
+ * import evalkit from 'syntropylabs-evalkit';
160
160
  *
161
161
  * evalkit.init({ subscriptionKey: '...', serviceName: 'my-api' });
162
162
  * const server = Hapi.server({ port: 3000 });
@@ -230,7 +230,7 @@ interface OfflineEvalResult {
230
230
  * span to the trace service so they appear alongside trace data.
231
231
  *
232
232
  * @example
233
- * import { evaluate } from '@evalkit/sdk';
233
+ * import { evaluate } from 'syntropylabs-evalkit';
234
234
  *
235
235
  * const result = evaluate({
236
236
  * output: 'The answer is AWS and Azure.',
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var api=require('@opentelemetry/api'),crypto=require('crypto'),sdkTraceNode=require('@opentelemetry/sdk-trace-node'),sdkTraceBase=require('@opentelemetry/sdk-trace-base'),resources=require('@opentelemetry/resources'),semanticConventions=require('@opentelemetry/semantic-conventions'),module$1=require('module');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var Ct=Object.defineProperty;var jn=Object.getOwnPropertyDescriptor;var $n=Object.getOwnPropertyNames;var Gn=Object.prototype.hasOwnProperty;var T=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var _=(e,t)=>()=>(e&&(t=e(e=0)),t);var Wt=(e,t)=>{for(var n in t)Ct(e,n,{get:t[n],enumerable:true});},Hn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $n(t))!Gn.call(e,o)&&o!==n&&Ct(e,o,{get:()=>t[o],enumerable:!(r=jn(t,o))||r.enumerable});return e};var Ln=e=>Hn(Ct({},"__esModule",{value:true}),e);function Un(e,t){if(t.length===0)return {score:1,lcsLength:0};let n=e.length,r=t.length,o=Array.from({length:n+1},()=>new Array(r+1).fill(0));for(let i=1;i<=n;i++)for(let c=1;c<=r;c++)e[i-1]===t[c-1]?o[i][c]=o[i-1][c-1]+1:o[i][c]=Math.max(o[i-1][c],o[i][c-1]);let s=o[n][r];return {score:s/t.length,lcsLength:s}}function Bn(e,t){if(e.length===0&&t.length===0)return {score:1,precision:1,recall:1};if(e.length===0||t.length===0)return {score:0,precision:0,recall:0};let n=new Set(e),r=new Set(t),o=new Set([...n].filter(a=>r.has(a))),s=o.size/n.size,i=o.size/r.size;return {score:s+i===0?0:2*s*i/(s+i),precision:s,recall:i}}function Vn(e,t){if(t.length===0)return {score:1,called:0,total:0};let n=new Set(e),r=t.filter(o=>n.has(o)).length;return {score:r/t.length,called:r,total:t.length}}function Fn(e,t){if(t.length===0)return {score:1,matched:[],missing:[]};let n=e.toLowerCase(),r=t.filter(s=>n.includes(s.toLowerCase())),o=t.filter(s=>!n.includes(s.toLowerCase()));return {score:r.length/t.length,matched:r,missing:o}}function Dn(e,t){let n={},r=[];if(t.requiredTerms!==void 0&&t.requiredTerms.length>0){let s=e.toLowerCase(),i=t.requiredTerms.every(c=>s.includes(c.toLowerCase()));n.requiredTerms=i,r.push(i);}if(t.hasCitations!==void 0){let s=/\[[\d]+\]|\(\w[^)]{1,80}\d{4}\)|\bhttps?:\/\//.test(e);n.hasCitations=t.hasCitations?s:!s,r.push(n.hasCitations);}if(t.slideCount!==void 0){let s=/slide\s+\d+|section\s+\d+|##\s+\d+\./gi,c=(e.match(s)??[]).length===t.slideCount;n.slideCount=c,r.push(c);}return r.length===0?{score:1,checks:n}:{score:r.filter(Boolean).length/r.length,checks:n}}function Jn(e,t){if(e.length===0)return {score:1,relevant:0,total:0};let n=new Set(t),r=e.filter(o=>n.has(o)).length;return {score:r/e.length,relevant:r,total:e.length}}function zn(e,t){if(t.length===0)return {score:1,covered:0,total:0};let n=new Set(e),r=t.filter(o=>n.has(o)).length;return {score:r/t.length,covered:r,total:t.length}}function L(e){let t=new Set(e.metrics??["tool_trajectory","tool_f1","tool_correctness","response_match","constraint_compliance","contextual_precision","contextual_recall"]),n=(e.toolCalls??[]).map(a=>a.name),r=e.expectedTools??[],o={},s={};if(t.has("tool_trajectory")&&r.length>0){let a=Un(n,r);o.tool_trajectory=a.score,s.tool_trajectory={lcsLength:a.lcsLength,expectedCount:r.length};}if(t.has("tool_f1")&&(n.length>0||r.length>0)){let a=Bn(n,r);o.tool_f1=a.score,s.tool_f1={precision:a.precision,recall:a.recall};}if(t.has("tool_correctness")&&r.length>0){let a=Vn(n,r);o.tool_correctness=a.score,s.tool_correctness={called:a.called,total:a.total};}let i=e.constraints?.requiredTerms??[];if(t.has("response_match")&&i.length>0){let a=Fn(e.output,i);o.response_match=a.score,s.response_match={matched:a.matched,missing:a.missing};}if(t.has("constraint_compliance")&&e.constraints){let a=Dn(e.output,e.constraints);o.constraint_compliance=a.score,s.constraint_compliance={checks:a.checks};}if(t.has("contextual_precision")&&e.retrievedContext!==void 0&&e.expectedContext!==void 0){let a=Jn(e.retrievedContext,e.expectedContext);o.contextual_precision=a.score,s.contextual_precision={relevant:a.relevant,total:a.total};}if(t.has("contextual_recall")&&e.retrievedContext!==void 0&&e.expectedContext!==void 0){let a=zn(e.retrievedContext,e.expectedContext);o.contextual_recall=a.score,s.contextual_recall={covered:a.covered,total:a.total};}let c={scores:o,details:s};try{let a=(Qt(),Ln(Xt)),l={"evalkit.span_type":"eval_result","evalkit.eval_type":"offline"};for(let[p,m]of Object.entries(o))l[`evalkit.metric.${p}`]=m;let{end:u}=a.startSpan("evaluation",l);u("OK");}catch{}return c}var dt=_(()=>{});function K(e,t,n){if(!e||!t||!U.has(e))return;let r=W.get(e)??[];r.push({name:t,args:n}),W.set(e,r);}var U,W,P=_(()=>{U=new Map,W=new Map;});function mt(e){return crypto.randomBytes(e).toString("hex")}function Yt(e){return typeof e=="function"?{name:e.name||"tool"}:typeof e=="string"||e&&typeof e=="object"?e:String(e)}async function Zt(e,t){let n=(t.apiUrl??process.env.EVALKIT_API_URL??e.options.apiUrl).replace(/\/$/,""),r={agentInstructions:t.agentInstructions,count:t.count??5};t.tools&&(r.tools=t.tools.map(Yt)),t.functionSchemas&&(r.functionSchemas=t.functionSchemas.map(Yt)),t.context!==void 0&&(r.context=t.context),t.rag&&(r.rag=t.rag),t.categories&&(r.categories=t.categories),t.model&&(r.model=t.model),t.provider&&(r.provider=t.provider),t.apiKey&&(r.apiKey=t.apiKey),t.temperature!==void 0&&(r.temperature=t.temperature);let o=await fetch(n+"/scenarios/generate",{method:"POST",headers:{"Content-Type":"application/json","X-Subscription-Key":e.options.subscriptionKey},body:JSON.stringify(r)});if(!o.ok){let i=await o.text().catch(()=>"");throw new Error(`generateScenarios failed ${o.status}: ${i}`)}return (await o.json()).scenarios??[]}function Qn(e){let t=e.turns??e.messages??[],n=[];for(let r of t)typeof r=="string"?n.push(r):r&&typeof r=="object"&&r.content&&(r.role??"user")==="user"&&n.push(String(r.content));return n.length===0&&e.starting_prompt&&n.push(String(e.starting_prompt)),n}function Yn(e,t,n,r){let o=Array.from(new Set([...e.constraints?.required_terms??[],...e.target_keywords??[]])),s={};o.length&&(s.requiredTerms=o),e.constraints?.has_citations!==void 0&&(s.hasCitations=e.constraints.has_citations);try{return L({output:t,toolCalls:n,expectedTools:e.expected_tools??[],constraints:s,metrics:r}).scores}catch{return {}}}async function Zn(e,t,n,r){let o=n.name??"scenario",s=n.scenario_id??"scn_"+mt(6),i="sess_"+mt(6),c=Qn(n).slice(0,r.maxTurns),a={...n.setup?.state??{},__safe_mode__:t.safeMode??true},{traceId:l,end:u,ctx:p}=e.startTrace(`scenario:${o}`,{"evalkit.session_id":i});U.set(l,{simulationId:r.simulationId,runId:r.runId,scenarioId:s});let m="OK",d,g=[],f=[],h=0,y={};try{await api.context.with(p,async()=>{for(let R=0;R<c.length;R++){let O={message:c[R],sessionId:i,state:a,turn:R+1},x=await t.entrypoint(O);x&&typeof x=="object"&&"text"in x?(g.push(x.text),x.toolCalls&&f.push(...x.toolCalls)):g.push(String(x)),h++;}let k=f.length?f:W.get(l)??[];y=Yn(n,g.join(`
2
- `),k,t.metrics);});}catch(k){m="ERROR",d=k?.message??String(k);}finally{u(m);}let v={scenarioId:s,name:o,status:m,turns:h,scores:y};return d&&(v.error=d),{result:v,traceId:l}}async function te(e,t){let n="sim_"+mt(8),r="run_"+mt(8),o=t.maxTurns??12,s=[],i=[];for(let c of t.scenarios){let{result:a,traceId:l}=await Zn(e,t,c,{simulationId:n,runId:r,maxTurns:o});s.push(a),i.push(l);}await e.flush();for(let c of i)U.delete(c),W.delete(c);return {simulationId:n,runId:r,results:s}}var ee=_(()=>{P();dt();});var M,ne=_(()=>{(function(e){e[e.SUCCESS=0]="SUCCESS",e[e.FAILED=1]="FAILED";})(M||(M={}));});var re=_(()=>{ne();});function kt(e){return e[0]*1e3+e[1]/1e6}function tr(e){return {0:"INTERNAL",1:"SERVER",2:"CLIENT",3:"PRODUCER",4:"CONSUMER"}[e]??"INTERNAL"}function er(e){return e===1?"OK":e===2?"ERROR":"UNSET"}function nr(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("evalkit.")||n==="gen_ai.system"||r!=null&&(t[n]=r);return t}function oe(e){return new Promise(t=>setTimeout(t,e))}var gt,se=_(()=>{re();P();gt=class{constructor(t){this.url=`${t.baseUrl.replace(/\/$/,"")}/v1/ingest`,this.subscriptionKey=t.subscriptionKey,this.debug=t.debug??false;}export(t,n){let r=t.map(s=>this.toEnvelope(s)),o={events:r};this.debug&&console.log(`[evalkit] sending ${r.length} span(s) \u2192 ${this.url}`),this.fetchWithRetry(this.url,{method:"POST",headers:{"Content-Type":"application/json","X-Subscription-Key":this.subscriptionKey},body:JSON.stringify(o)}).then(async s=>{if(!s.ok){let i=await s.text().catch(()=>"(no body)");console.error(`[evalkit] export failed ${s.status}: ${i}`),n({code:M.FAILED});return}if(this.debug){let i=await s.json().catch(()=>({}));console.log(`[evalkit] exported ${r.length} span(s) \u2014 status: ${i.status}`);}n({code:M.SUCCESS});}).catch(s=>{console.error("[evalkit] export network error:",s),n({code:M.FAILED});});}async fetchWithRetry(t,n,r=3){let o=[200,600,1800],s;for(let i=0;i<=r;i++)try{let c=await fetch(t,n);if(c.ok||c.status>=400&&c.status<500)return c;if(i<r)this.debug&&console.warn(`[evalkit] HTTP ${c.status}, retry ${i+1}/${r}`),await oe(o[i]??1800);else return c}catch(c){s=c,i<r&&(this.debug&&console.warn(`[evalkit] network error, retry ${i+1}/${r}:`,c),await oe(o[i]??1800));}throw s}shutdown(){return Promise.resolve()}toEnvelope(t){let n=t.spanContext(),r=t.attributes,o=kt(t.startTime),s=kt(t.endTime),i=t.events.map(l=>({name:l.name,timestamp:new Date(kt(l.time)).toISOString(),attributes:l.attributes})),c={traceId:n.traceId,spanId:n.spanId,parentSpanId:t.parentSpanId,spanKind:tr(t.kind),spanType:r["evalkit.span_type"]??"log",status:er(t.status.code),statusMessage:t.status.message,serviceName:t.resource.attributes["service.name"],operation:t.name,model:r["gen_ai.response.model"]??r["gen_ai.request.model"],provider:r["gen_ai.system"],prompt:r["evalkit.prompt"],completion:r["evalkit.completion"],tokensIn:Math.round(r["gen_ai.usage.input_tokens"]||0)||void 0,tokensOut:Math.round(r["gen_ai.usage.output_tokens"]||0)||void 0,latencyMs:Math.round(s-o),startTime:new Date(o).toISOString(),endTime:new Date(s).toISOString(),events:i.length>0?i:void 0,attributes:nr(r),createdAt:new Date(o).toISOString(),environment:r["evalkit.environment"],appVersion:r["evalkit.app_version"],userId:r["evalkit.user_id"],sessionId:r["evalkit.session_id"],deviceId:r["evalkit.device_id"],sdkVersion:r["evalkit.sdk_version"]},a=U.get(n.traceId);return a&&(c.isSimulation=true,c.simulationId=a.simulationId,c.scenarioId=a.scenarioId,c.runId=a.runId),c}};});function St(e,t=cr){let n;try{n=JSON.stringify(e);}catch{}if(n===void 0)try{n=String(e);}catch{n="<unserializable>";}return n.length>t?n.slice(0,t)+"\u2026":n}var ir,cr;exports.EvalKitClient=void 0;var bt=_(()=>{se();ir="0.1.17",cr=4096;exports.EvalKitClient=class{constructor(t){this.options={serviceName:"unknown",debug:false,maxExportBatchSize:512,scheduledDelayMillis:5e3,baseUrl:"https://api.syntropylabs.ai",apiUrl:"https://api.syntropylabs.ai",environment:"",appVersion:"",...t};let n=new gt({baseUrl:this.options.baseUrl,subscriptionKey:this.options.subscriptionKey,debug:this.options.debug});this.provider=new sdkTraceNode.NodeTracerProvider({resource:new resources.Resource({[semanticConventions.ATTR_SERVICE_NAME]:this.options.serviceName}),spanProcessors:[new sdkTraceBase.BatchSpanProcessor(n,{maxExportBatchSize:this.options.maxExportBatchSize,scheduledDelayMillis:this.options.scheduledDelayMillis})]}),this.provider.register(),this.tracer=api.trace.getTracer("evalkit","0.1.0");}metaAttributes(){let t={"evalkit.sdk_version":ir};return this.options.environment&&(t["evalkit.environment"]=this.options.environment),this.options.appVersion&&(t["evalkit.app_version"]=this.options.appVersion),this.options.deviceId&&(t["evalkit.device_id"]=this.options.deviceId),t}startTrace(t,n){let r=this.tracer.startSpan(t,{kind:api.SpanKind.SERVER,attributes:{"evalkit.span_type":"log",...this.metaAttributes(),...n}},api.context.active()),o=api.trace.setSpan(api.context.active(),r);return {traceId:r.spanContext().traceId,ctx:o,end:(i="OK")=>{r.setStatus({code:i==="OK"?api.SpanStatusCode.OK:api.SpanStatusCode.ERROR}),r.end();}}}startHttpTrace(t,n,r){let o=this.tracer.startSpan(t,{kind:api.SpanKind.SERVER,attributes:{"evalkit.span_type":"http_call","http.method":n.method,"http.url":n.url,...n.headers?{"http.request.headers":JSON.stringify(n.headers)}:{},...n.requestBody!==void 0?{"http.request.body":JSON.stringify(n.requestBody)}:{},...this.metaAttributes(),...r}},api.context.active()),s=api.trace.setSpan(api.context.active(),o);return {traceId:o.spanContext().traceId,ctx:s,end:(c="OK",a)=>{a?.statusCode!==void 0&&o.setAttribute("http.status_code",a.statusCode),a?.body!==void 0&&o.setAttribute("http.response.body",JSON.stringify(a.body)),a?.headers&&o.setAttribute("http.response.headers",JSON.stringify(a.headers)),o.setStatus({code:c==="OK"?api.SpanStatusCode.OK:api.SpanStatusCode.ERROR}),o.end();}}}startSpan(t,n,r){let o=this.tracer.startSpan(t,{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"function_call",...this.metaAttributes(),...n}},r??api.context.active());return {ctx:api.trace.setSpan(api.context.active(),o),end:(i="OK",c)=>{c&&o.setAttributes(c),o.setStatus({code:i==="OK"?api.SpanStatusCode.OK:api.SpanStatusCode.ERROR}),o.end();}}}traceFunction(t,n,r,o=true){let s=this;return function(...i){let c={"evalkit.span_type":"function_call",...r};o&&i.length&&(c["function.args"]=St(i));let{ctx:a,end:l}=s.startSpan(t,c),u;try{u=api.context.with(a,()=>n.apply(this,i));}catch(p){throw l("ERROR",{"error.message":p?.message??String(p)}),p}return u&&typeof u.then=="function"?u.then(p=>(l("OK",o?{"function.result":St(p)}:void 0),p),p=>{throw l("ERROR",{"error.message":p?.message??String(p)}),p}):(l("OK",o?{"function.result":St(u)}:void 0),u)}}async flush(){await this.provider.forceFlush();}async destroy(){await this.provider.shutdown();}};});function A(e){if(!e)return api.context.active();let t=e.split("-");return t.length===4&&t[0]==="00"&&t[1].length===32&&t[2].length===16?api.trace.setSpanContext(api.ROOT_CONTEXT,{traceId:t[1],spanId:t[2],traceFlags:parseInt(t[3],16),isRemote:true}):api.context.active()}var F=_(()=>{});function dr(e,t){let n="",r=0,o=0,s=false;function i(c){s||(s=true,c?t.setStatus({code:api.SpanStatusCode.ERROR,message:c.message}):(t.setAttributes({"evalkit.completion":n,"gen_ai.usage.input_tokens":r,"gen_ai.usage.output_tokens":o,"gen_ai.streaming":true}),t.setStatus({code:api.SpanStatusCode.OK})),t.end());}return new Proxy(e,{get(c,a,l){if(a===Symbol.asyncIterator)return function(){let p=c[Symbol.asyncIterator]();return {async next(){try{let m=await p.next();if(!m.done&&m.value){let d=m.value,g=d.choices?.[0]?.delta?.content;g&&(n+=g),d.usage&&(r=d.usage.prompt_tokens??0,o=d.usage.completion_tokens??0);}return m.done&&i(),m}catch(m){throw i(m instanceof Error?m:new Error(String(m))),m}},return(){return i(),p.return?.()??Promise.resolve({done:true,value:void 0})},throw(m){return i(m instanceof Error?m:new Error(String(m))),p.throw?.(m)??Promise.reject(m)},[Symbol.asyncIterator](){return this}}};let u=Reflect.get(c,a,l);return typeof u=="function"?u.bind(c):u}})}function N(e,t,n,r="openai"){if(t.create.__evalkit)return;let o=t.create;t.create=async function(...s){let i=s[0],c=n??api.context.active(),a=e.tracer.startSpan("chat.completions.create",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":r,"gen_ai.request.model":i.model??"unknown",...i.temperature!=null&&{"gen_ai.request.temperature":i.temperature},...i.max_tokens!=null&&{"gen_ai.request.max_tokens":i.max_tokens},...i.top_p!=null&&{"gen_ai.request.top_p":i.top_p},"evalkit.prompt":mr(i.messages??[])}},c),l=api.trace.setSpan(c,a);if(i?.stream){let d;try{d=await api.context.with(l,()=>o.apply(this,s));}catch(g){throw a.setStatus({code:api.SpanStatusCode.ERROR,message:g instanceof Error?g.message:String(g)}),a.end(),g}return dr(d,a)}let u;try{u=await api.context.with(l,()=>o.apply(this,s));}catch(d){throw a.setStatus({code:api.SpanStatusCode.ERROR,message:d instanceof Error?d.message:String(d)}),a.end(),d}let p=u.choices?.[0],m=p?.message.content??"";a.setAttributes({"gen_ai.response.model":u.model,"gen_ai.response.id":u.id,"gen_ai.usage.input_tokens":u.usage?.prompt_tokens??0,"gen_ai.usage.output_tokens":u.usage?.completion_tokens??0,"gen_ai.usage.total_tokens":u.usage?.total_tokens??0,"gen_ai.response.finish_reasons":p?.finish_reason?[p.finish_reason]:[],"evalkit.completion":m});for(let d of p?.message.tool_calls??[]){a.addEvent("gen_ai.tool.call",{"gen_ai.tool.call.id":d.id,"gen_ai.tool.name":d.function.name,"gen_ai.tool.call.arguments":d.function.arguments});try{let f;try{f=JSON.parse(d.function.arguments);}catch{}K(a.spanContext().traceId,d.function.name,f);}catch{}e.tracer.startSpan(d.function.name,{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call","gen_ai.tool.name":d.function.name,"gen_ai.tool.call.id":d.id,"gen_ai.tool.call.arguments":d.function.arguments}},l).end();}return a.setStatus({code:api.SpanStatusCode.OK}),a.end(),u},t.create.__evalkit=true;}function mr(e){return e.map(t=>`${t.role}: ${t.content??""}`).join(`
3
- `)}var wt=_(()=>{P();});function fr(e,t){let n="",r=0,o=0,s=false;function i(a){let l=a?.type;if(l==="content_block_delta"){let u=a.delta;u?.type==="text_delta"&&u.text&&(n+=u.text);}else l==="message_start"?r=a.message?.usage?.input_tokens??0:l==="message_delta"&&(o=a.usage?.output_tokens??0);}function c(a){s||(s=true,a?t.setStatus({code:api.SpanStatusCode.ERROR,message:a.message}):(t.setAttributes({"evalkit.completion":n,"gen_ai.usage.input_tokens":r,"gen_ai.usage.output_tokens":o,"gen_ai.streaming":true}),t.setStatus({code:api.SpanStatusCode.OK})),t.end());}return new Proxy(e,{get(a,l,u){if(l===Symbol.asyncIterator)return function(){let m=a[Symbol.asyncIterator]();return {async next(){try{let d=await m.next();return !d.done&&d.value&&i(d.value),d.done&&c(),d}catch(d){throw c(d instanceof Error?d:new Error(String(d))),d}},return(){return c(),m.return?.()??Promise.resolve({done:true,value:void 0})},throw(d){return c(d instanceof Error?d:new Error(String(d))),m.throw?.(d)??Promise.reject(d)},[Symbol.asyncIterator](){return this}}};let p=Reflect.get(a,l,u);return typeof p=="function"?p.bind(a):p}})}function j(e,t,n){if(t.create.__evalkit)return;let r=t.create;t.create=async function(...o){let s=o[0],i=n??api.context.active(),c=yr(s.system,s.messages??[]),a=e.tracer.startSpan("messages.create",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"anthropic","gen_ai.request.model":s.model??"unknown",...s.temperature!=null&&{"gen_ai.request.temperature":s.temperature},...s.max_tokens!=null&&{"gen_ai.request.max_tokens":s.max_tokens},...s.top_p!=null&&{"gen_ai.request.top_p":s.top_p},"evalkit.prompt":c}},i),l=api.trace.setSpan(i,a);if(s?.stream){let m;try{m=await api.context.with(l,()=>r.apply(this,o));}catch(d){throw a.setStatus({code:api.SpanStatusCode.ERROR,message:d instanceof Error?d.message:String(d)}),a.end(),d}return fr(m,a)}let u;try{u=await api.context.with(l,()=>r.apply(this,o));}catch(m){throw a.setStatus({code:api.SpanStatusCode.ERROR,message:m instanceof Error?m.message:String(m)}),a.end(),m}let p=u.content.filter(m=>m.type==="text").map(m=>m.text??"").join("");a.setAttributes({"gen_ai.response.model":u.model,"gen_ai.response.id":u.id,"gen_ai.usage.input_tokens":u.usage?.input_tokens??0,"gen_ai.usage.output_tokens":u.usage?.output_tokens??0,"gen_ai.response.finish_reasons":u.stop_reason?[u.stop_reason]:[],"evalkit.completion":p});for(let m of u.content)if(m.type==="tool_use"){let d=m;a.addEvent("gen_ai.tool.call",{"gen_ai.tool.call.id":d.id,"gen_ai.tool.name":d.name,"gen_ai.tool.call.arguments":JSON.stringify(d.input)});try{K(a.spanContext().traceId,d.name,d.input);}catch{}e.tracer.startSpan(d.name,{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call","gen_ai.tool.name":d.name,"gen_ai.tool.call.id":d.id,"gen_ai.tool.call.arguments":JSON.stringify(d.input)}},l).end();}return a.setStatus({code:api.SpanStatusCode.OK}),a.end(),u},t.create.__evalkit=true;}function yr(e,t){let n=[];return e&&n.push(`system: ${e}`),n.push(...t.map(r=>`${r.role}: ${r.content}`)),n.join(`
4
- `)}var yt=_(()=>{P();});function ht(e,t){let n=t.Query?.prototype;if(!n||n.__evalkit)return;let r=n.exec;n.exec=async function(){if(!api.trace.getActiveSpan()?.isRecording())return r.call(this);let s=this.op??"query",i=this.model?.collection?.name??this._collection?.collectionName??"unknown",c=e.tracer.startSpan(`${s} ${i}`,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"mongodb","db.operation":s,"db.collection":i,"db.query":JSON.stringify(this._conditions??{})}},api.context.active());try{let a=await r.call(this);return c.setStatus({code:api.SpanStatusCode.OK}),c.end(),a}catch(a){throw c.setStatus({code:api.SpanStatusCode.ERROR,message:a.message}),c.end(),a}},n.__evalkit=true;}var Tt=_(()=>{});function Y(e,t){let r=t?.prototype&&(typeof t.prototype.sendCommand=="function"||typeof t.prototype.call=="function")?t.prototype:Object.getPrototypeOf(t);if(!r||r.__evalkit_redis)return;let o=typeof r.sendCommand=="function"?"sendCommand":typeof r.call=="function"?"call":null;if(!o)return;let s=r[o];r[o]=async function(i,...c){if(!api.trace.getActiveSpan()?.isRecording())return s.call(this,i,...c);let l=Array.isArray(i)?i[0]:i?.name??i?.args?.[0]??"cmd",u=(typeof l=="string"?l:String(l)).toUpperCase(),p=e.tracer.startSpan(`redis ${u}`,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"redis","db.operation":u}},api.context.active());try{let m=await s.call(this,i,...c);return p.setStatus({code:api.SpanStatusCode.OK}),p.end(),m}catch(m){throw p.setStatus({code:api.SpanStatusCode.ERROR,message:m.message}),p.end(),m}},r.__evalkit_redis=true;}var At=_(()=>{});function w(e){let t={};for(let[n,r]of Object.entries(e))Rr.test(n)||r!==void 0&&(t[n]=Array.isArray(r)?r.join(", "):String(r));return t}var Rr,It=_(()=>{Rr=/^(authorization|cookie|set-cookie|x-api-key|api-key|x-auth-token|proxy-authorization|x-secret|x-access-token|token|password)$/i;});var D,Kt=_(()=>{D=new Map;});function Z(e,t){if(!t.__evalkit_axios){if(t.__evalkit_axios=true,typeof t.create=="function"){let n=t.create.bind(t);t.create=function(...r){let o=n(...r);return Z(e,o),o};}t.interceptors.request.use(n=>{let r=(n.baseURL?n.baseURL.replace(/\/$/,""):"")+(n.url??"");if(wr.some(u=>u.test(r))||!api.trace.getActiveSpan()?.isRecording())return n;let s=n.url??"";try{s=new URL(r,n.baseURL??"http://localhost").pathname;}catch{}let i=(n.method??"get").toUpperCase(),c=w(n.headers??{}),a=e.tracer.startSpan(`${i} ${s}`,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"http_call","http.method":i,"http.url":r,...Object.keys(c).length?{"http.request.headers":JSON.stringify(c)}:{},...n.data!==void 0?{"http.request.body":typeof n.data=="string"?n.data.slice(0,4096):JSON.stringify(n.data).slice(0,4096)}:{}}},api.context.active()),l=a.spanContext();return n.headers=n.headers??{},n.headers.traceparent=`00-${l.traceId}-${l.spanId}-01`,n.headers["x-evalkit-span-id"]=l.spanId,D.set(l.spanId,a),n.__evalkitSpan=a,n.__evalkitSpanId=l.spanId,n}),t.interceptors.response.use(n=>{let r=n.config?.__evalkitSpan;if(n.config?.__evalkitSpanId&&D.delete(n.config.__evalkitSpanId),r){let o=w(n.headers??{}),s=n.data,i;s!=null&&(i=(typeof s=="string"?s:JSON.stringify(s)).slice(0,4096)),r.setAttributes({"http.status_code":n.status,...Object.keys(o).length?{"http.response.headers":JSON.stringify(o)}:{},...i!==void 0?{"http.response.body":i}:{}}),r.setStatus({code:api.SpanStatusCode.OK}),r.end();}return n},n=>{let r=n.config?.__evalkitSpan;if(n.config?.__evalkitSpanId&&D.delete(n.config.__evalkitSpanId),r){let o=n.response?.status??0,s=w(n.response?.headers??{}),i=n.response?.data,c;i!=null&&(c=(typeof i=="string"?i:JSON.stringify(i)).slice(0,4096)),r.setAttributes({"http.status_code":o,"error.message":n.message,...Object.keys(s).length?{"http.response.headers":JSON.stringify(s)}:{},...c!==void 0?{"http.response.body":c}:{}}),r.setStatus({code:api.SpanStatusCode.ERROR,message:n.message}),r.end();}throw n});}}var wr,Pt=_(()=>{It();Kt();wr=[/\/v1\/ingest/,/\/health(z)?$/];});function tt(e,t){let n=t?.prototype??Object.getPrototypeOf(t);if(!n||n.__evalkit_pg)return;let r=n.query;typeof r=="function"&&(n.query=function(...o){if(!api.trace.getActiveSpan()?.isRecording())return r.apply(this,o);let i=typeof o[0]=="string"?o[0]:o[0]?.text??o[0]?.name??"query",c=Array.isArray(o[1])?o[1]:o[0]?.values??void 0,l=i.trim().match(/^(\w+)/)?.[1]?.toUpperCase()??"QUERY",p=i.match(/(?:FROM|INTO|UPDATE|JOIN)\s+"?(\w+)"?/i)?.[1]??"",m=p?`${l} ${p}`:`pg ${l}`,d=e.tracer.startSpan(m,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"postgresql","db.operation":l,"db.statement":i.slice(0,2048),...c!==void 0?{"db.params":JSON.stringify(c).slice(0,1024)}:{},...p?{"db.sql.table":p}:{}}},api.context.active()),g=o[o.length-1];if(typeof g=="function"){let h=g,y=o.slice(0,-1).concat([(v,k)=>{v?(d.setStatus({code:api.SpanStatusCode.ERROR,message:v.message}),d.setAttribute("error.message",v.message)):(d.setAttribute("db.rows_affected",k?.rowCount??0),d.setStatus({code:api.SpanStatusCode.OK})),d.end(),h(v,k);}]);return r.apply(this,y)}return r.apply(this,o).then(h=>(d.setAttribute("db.rows_affected",h?.rowCount??0),d.setStatus({code:api.SpanStatusCode.OK}),d.end(),h),h=>{throw d.setStatus({code:api.SpanStatusCode.ERROR,message:h?.message}),d.setAttribute("error.message",h?.message??String(h)),d.end(),h})},n.__evalkit_pg=true);}var Mt=_(()=>{});function et(e,t){let n=t?.prototype??Object.getPrototypeOf(t);if(!(!n||n.__evalkit_mysql2)){for(let r of ["query","execute"]){let o=n[r];typeof o=="function"&&(n[r]=function(...s){if(!api.trace.getActiveSpan()?.isRecording())return o.apply(this,s);let c=typeof s[0]=="string"?s[0]:s[0]?.sql??"query",a=Array.isArray(s[1])?s[1]:void 0,u=c.trim().match(/^(\w+)/)?.[1]?.toUpperCase()??"QUERY",m=c.match(/(?:FROM|INTO|UPDATE|JOIN)\s+`?(\w+)`?/i)?.[1]??"",d=m?`${u} ${m}`:`mysql ${u}`,g=e.tracer.startSpan(d,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"mysql","db.operation":u,"db.statement":c.slice(0,2048),...a!==void 0?{"db.params":JSON.stringify(a).slice(0,1024)}:{},...m?{"db.sql.table":m}:{}}},api.context.active()),f=s[s.length-1];if(typeof f=="function"){let y=f,v=s.slice(0,-1).concat([(k,R,O)=>{k?(g.setStatus({code:api.SpanStatusCode.ERROR,message:k.message}),g.setAttribute("error.message",k.message)):(g.setAttribute("db.rows_affected",Array.isArray(R)?R.length:R?.affectedRows??0),g.setStatus({code:api.SpanStatusCode.OK})),g.end(),y(k,R,O);}]);return o.apply(this,v)}let h=o.apply(this,s);return h&&typeof h.then=="function"?h.then(([y,v])=>(g.setAttribute("db.rows_affected",Array.isArray(y)?y.length:y?.affectedRows??0),g.setStatus({code:api.SpanStatusCode.OK}),g.end(),[y,v]),y=>{throw g.setStatus({code:api.SpanStatusCode.ERROR,message:y?.message}),g.setAttribute("error.message",y?.message??String(y)),g.end(),y}):(g.end(),h)});}n.__evalkit_mysql2=true;}}var qt=_(()=>{});function Nr(e){if(!e||typeof e!="object")return false;let t=e.constructor?.name??"";return t==="ConverseCommand"||t==="ConverseStreamCommand"}function nt(e,t,n){if(t.send.__evalkit)return;let r=t.send;t.send=async function(...o){let s=o[0];if(!Nr(s))return r.apply(this,o);let i=s.input,c=i?.modelId??"unknown",a=c.split(".")[0]??"bedrock",l=i?.system?.map(v=>v.text).join(`
5
- `)??"",u=i?.messages?.map(v=>`${v.role}: ${v.content.map(k=>k.text??"").join("")}`)??[],p=[l?`system: ${l}`:"",...u].filter(Boolean).join(`
6
- `),m=i?.inferenceConfig??{},d=api.context.active(),g=e.tracer.startSpan("converse",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":a,"gen_ai.request.model":c,...m.temperature!=null&&{"gen_ai.request.temperature":m.temperature},...m.maxTokens!=null&&{"gen_ai.request.max_tokens":m.maxTokens},...m.topP!=null&&{"gen_ai.request.top_p":m.topP},"evalkit.prompt":p}},d),f=api.trace.setSpan(d,g),h;try{h=await api.context.with(f,()=>r.apply(this,o));}catch(v){throw g.setStatus({code:api.SpanStatusCode.ERROR,message:v instanceof Error?v.message:String(v)}),g.end(),v}let y=h.output?.message?.content?.map(v=>v.text??"").join("")??"";return g.setAttributes({"gen_ai.response.model":c,"gen_ai.usage.input_tokens":h.usage?.inputTokens??0,"gen_ai.usage.output_tokens":h.usage?.outputTokens??0,"gen_ai.usage.total_tokens":h.usage?.totalTokens??0,"gen_ai.response.finish_reasons":h.stopReason?[h.stopReason]:[],"evalkit.completion":y}),g.setStatus({code:api.SpanStatusCode.OK}),g.end(),h},t.send.__evalkit=true;}var Nt=_(()=>{});function rt(e,t,n){if(t.chat.__evalkit)return;let r=t.chat;t.chat=async function(...o){let s=o[0];if(s?.stream)return r.apply(this,o);let i=s?.chatHistory?.map(m=>`${m.role}: ${m.message??""}`)??[],c=[s?.preamble?`system: ${s.preamble}`:"",...i,`user: ${s?.message??""}`].filter(Boolean).join(`
7
- `),a=api.context.active(),l=e.tracer.startSpan("chat",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"cohere","gen_ai.request.model":s?.model??"unknown",...s?.temperature!=null&&{"gen_ai.request.temperature":s.temperature},...s?.maxTokens!=null&&{"gen_ai.request.max_tokens":s.maxTokens},"evalkit.prompt":c}},a),u=api.trace.setSpan(a,l),p;try{p=await api.context.with(u,()=>r.apply(this,o));}catch(m){throw l.setStatus({code:api.SpanStatusCode.ERROR,message:m instanceof Error?m.message:String(m)}),l.end(),m}return l.setAttributes({"gen_ai.response.model":s?.model??"unknown","gen_ai.response.id":p.generationId??"","gen_ai.usage.input_tokens":p.meta?.tokens?.inputTokens??0,"gen_ai.usage.output_tokens":p.meta?.tokens?.outputTokens??0,"gen_ai.response.finish_reasons":p.finishReason?[p.finishReason]:[],"evalkit.completion":p.text??""}),l.setStatus({code:api.SpanStatusCode.OK}),l.end(),p},t.chat.__evalkit=true;}var jt=_(()=>{});function ot(e,t,n){if(t.generateContent.__evalkit)return;let r=t.generateContent,o=t.model??"unknown";t.generateContent=async function(...s){let i=s[0],c="";if(typeof i=="string")c=`user: ${i}`;else {let f=i,h=f?.systemInstruction?.parts?.map(v=>v.text??"").join("")??"",y=f?.contents?.map(v=>`${v.role??"user"}: ${v.parts.map(k=>k.text??"").join("")}`)??[];c=[h?`system: ${h}`:"",...y].filter(Boolean).join(`
8
- `);}let a=api.context.active(),l=e.tracer.startSpan("generateContent",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-ai","gen_ai.request.model":o,"evalkit.prompt":c}},a),u=api.trace.setSpan(a,l),p;try{p=await api.context.with(u,()=>r.apply(this,s));}catch(f){throw l.setStatus({code:api.SpanStatusCode.ERROR,message:f instanceof Error?f.message:String(f)}),l.end(),f}let m=p?.response,d=m?.candidates?.[0],g=d?.content?.parts?.map(f=>f.text??"").join("")??"";return l.setAttributes({"gen_ai.response.model":o,"gen_ai.usage.input_tokens":m?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":m?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":m?.usageMetadata?.totalTokenCount??0,"gen_ai.response.finish_reasons":d?.finishReason?[d.finishReason]:[],"evalkit.completion":g}),l.setStatus({code:api.SpanStatusCode.OK}),l.end(),p},t.generateContent.__evalkit=true;}var $t=_(()=>{});function ve(e){return e?.text??""}function Lr(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(t=>{if(typeof t=="string")return t;let n=t,r=n.role??"user",o=(n.parts??[]).map(ve).join("");return o?`${r}: ${o}`:""}).filter(Boolean).join(`
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var api=require('@opentelemetry/api'),crypto=require('crypto'),sdkTraceNode=require('@opentelemetry/sdk-trace-node'),sdkTraceBase=require('@opentelemetry/sdk-trace-base'),resources=require('@opentelemetry/resources'),semanticConventions=require('@opentelemetry/semantic-conventions'),module$1=require('module');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var Ct=Object.defineProperty;var jn=Object.getOwnPropertyDescriptor;var $n=Object.getOwnPropertyNames;var Gn=Object.prototype.hasOwnProperty;var T=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var x=(e,t)=>()=>(e&&(t=e(e=0)),t);var Wt=(e,t)=>{for(var n in t)Ct(e,n,{get:t[n],enumerable:true});},Hn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $n(t))!Gn.call(e,o)&&o!==n&&Ct(e,o,{get:()=>t[o],enumerable:!(r=jn(t,o))||r.enumerable});return e};var Ln=e=>Hn(Ct({},"__esModule",{value:true}),e);function Un(e,t){if(t.length===0)return {score:1,lcsLength:0};let n=e.length,r=t.length,o=Array.from({length:n+1},()=>new Array(r+1).fill(0));for(let i=1;i<=n;i++)for(let c=1;c<=r;c++)e[i-1]===t[c-1]?o[i][c]=o[i-1][c-1]+1:o[i][c]=Math.max(o[i-1][c],o[i][c-1]);let s=o[n][r];return {score:s/t.length,lcsLength:s}}function Bn(e,t){if(e.length===0&&t.length===0)return {score:1,precision:1,recall:1};if(e.length===0||t.length===0)return {score:0,precision:0,recall:0};let n=new Set(e),r=new Set(t),o=new Set([...n].filter(a=>r.has(a))),s=o.size/n.size,i=o.size/r.size;return {score:s+i===0?0:2*s*i/(s+i),precision:s,recall:i}}function Vn(e,t){if(t.length===0)return {score:1,called:0,total:0};let n=new Set(e),r=t.filter(o=>n.has(o)).length;return {score:r/t.length,called:r,total:t.length}}function Fn(e,t){if(t.length===0)return {score:1,matched:[],missing:[]};let n=e.toLowerCase(),r=t.filter(s=>n.includes(s.toLowerCase())),o=t.filter(s=>!n.includes(s.toLowerCase()));return {score:r.length/t.length,matched:r,missing:o}}function Dn(e,t){let n={},r=[];if(t.requiredTerms!==void 0&&t.requiredTerms.length>0){let s=e.toLowerCase(),i=t.requiredTerms.every(c=>s.includes(c.toLowerCase()));n.requiredTerms=i,r.push(i);}if(t.hasCitations!==void 0){let s=/\[[\d]+\]|\(\w[^)]{1,80}\d{4}\)|\bhttps?:\/\//.test(e);n.hasCitations=t.hasCitations?s:!s,r.push(n.hasCitations);}if(t.slideCount!==void 0){let s=/slide\s+\d+|section\s+\d+|##\s+\d+\./gi,c=(e.match(s)??[]).length===t.slideCount;n.slideCount=c,r.push(c);}return r.length===0?{score:1,checks:n}:{score:r.filter(Boolean).length/r.length,checks:n}}function Jn(e,t){if(e.length===0)return {score:1,relevant:0,total:0};let n=new Set(t),r=e.filter(o=>n.has(o)).length;return {score:r/e.length,relevant:r,total:e.length}}function zn(e,t){if(t.length===0)return {score:1,covered:0,total:0};let n=new Set(e),r=t.filter(o=>n.has(o)).length;return {score:r/t.length,covered:r,total:t.length}}function L(e){let t=new Set(e.metrics??["tool_trajectory","tool_f1","tool_correctness","response_match","constraint_compliance","contextual_precision","contextual_recall"]),n=(e.toolCalls??[]).map(a=>a.name),r=e.expectedTools??[],o={},s={};if(t.has("tool_trajectory")&&r.length>0){let a=Un(n,r);o.tool_trajectory=a.score,s.tool_trajectory={lcsLength:a.lcsLength,expectedCount:r.length};}if(t.has("tool_f1")&&(n.length>0||r.length>0)){let a=Bn(n,r);o.tool_f1=a.score,s.tool_f1={precision:a.precision,recall:a.recall};}if(t.has("tool_correctness")&&r.length>0){let a=Vn(n,r);o.tool_correctness=a.score,s.tool_correctness={called:a.called,total:a.total};}let i=e.constraints?.requiredTerms??[];if(t.has("response_match")&&i.length>0){let a=Fn(e.output,i);o.response_match=a.score,s.response_match={matched:a.matched,missing:a.missing};}if(t.has("constraint_compliance")&&e.constraints){let a=Dn(e.output,e.constraints);o.constraint_compliance=a.score,s.constraint_compliance={checks:a.checks};}if(t.has("contextual_precision")&&e.retrievedContext!==void 0&&e.expectedContext!==void 0){let a=Jn(e.retrievedContext,e.expectedContext);o.contextual_precision=a.score,s.contextual_precision={relevant:a.relevant,total:a.total};}if(t.has("contextual_recall")&&e.retrievedContext!==void 0&&e.expectedContext!==void 0){let a=zn(e.retrievedContext,e.expectedContext);o.contextual_recall=a.score,s.contextual_recall={covered:a.covered,total:a.total};}let c={scores:o,details:s};try{let a=(Qt(),Ln(Xt)),l={"evalkit.span_type":"eval_result","evalkit.eval_type":"offline"};for(let[u,d]of Object.entries(o))l[`evalkit.metric.${u}`]=d;let{end:m}=a.startSpan("evaluation",l);m("OK");}catch{}return c}var mt=x(()=>{});function K(e,t,n){if(!e||!t||!U.has(e))return;let r=X.get(e)??[];r.push({name:t,args:n}),X.set(e,r);}var U,X,P=x(()=>{U=new Map,X=new Map;});function gt(e){return crypto.randomBytes(e).toString("hex")}function Yt(e){return typeof e=="function"?{name:e.name||"tool"}:typeof e=="string"||e&&typeof e=="object"?e:String(e)}async function Zt(e,t){let n=(t.apiUrl??process.env.EVALKIT_API_URL??e.options.apiUrl).replace(/\/$/,""),r={agentInstructions:t.agentInstructions,count:t.count??5};t.tools&&(r.tools=t.tools.map(Yt)),t.functionSchemas&&(r.functionSchemas=t.functionSchemas.map(Yt)),t.context!==void 0&&(r.context=t.context),t.rag&&(r.rag=t.rag),t.categories&&(r.categories=t.categories),t.model&&(r.model=t.model),t.provider&&(r.provider=t.provider),t.apiKey&&(r.apiKey=t.apiKey),t.temperature!==void 0&&(r.temperature=t.temperature);let o=await fetch(n+"/scenarios/generate",{method:"POST",headers:{"Content-Type":"application/json","X-Subscription-Key":e.options.subscriptionKey},body:JSON.stringify(r)});if(!o.ok){let i=await o.text().catch(()=>"");throw new Error(`generateScenarios failed ${o.status}: ${i}`)}return (await o.json()).scenarios??[]}function Qn(e){let t=e.turns??e.messages??[],n=[];for(let r of t)typeof r=="string"?n.push(r):r&&typeof r=="object"&&r.content&&(r.role??"user")==="user"&&n.push(String(r.content));return n.length===0&&e.starting_prompt&&n.push(String(e.starting_prompt)),n}function Yn(e,t,n,r){let o=Array.from(new Set([...e.constraints?.required_terms??[],...e.target_keywords??[]])),s={};o.length&&(s.requiredTerms=o),e.constraints?.has_citations!==void 0&&(s.hasCitations=e.constraints.has_citations);try{return L({output:t,toolCalls:n,expectedTools:e.expected_tools??[],constraints:s,metrics:r}).scores}catch{return {}}}async function Zn(e,t,n,r){let o=n.name??"scenario",s=n.scenario_id??"scn_"+gt(6),i="sess_"+gt(6),c=Qn(n).slice(0,r.maxTurns),a={...n.setup?.state??{},__safe_mode__:t.safeMode??true},{traceId:l,end:m,ctx:u}=e.startTrace(`scenario:${o}`,{"evalkit.session_id":i});U.set(l,{simulationId:r.simulationId,runId:r.runId,scenarioId:s});let d="OK",p,g=[],f=[],y=0,h={};try{await api.context.with(u,async()=>{for(let S=0;S<c.length;S++){let O={message:c[S],sessionId:i,state:a,turn:S+1},_=await t.entrypoint(O);_&&typeof _=="object"&&"text"in _?(g.push(_.text),_.toolCalls&&f.push(..._.toolCalls)):g.push(String(_)),y++;}let k=f.length?f:X.get(l)??[];h=Yn(n,g.join(`
2
+ `),k,t.metrics);});}catch(k){d="ERROR",p=k?.message??String(k);}finally{m(d);}let v={scenarioId:s,name:o,status:d,turns:y,scores:h};return p&&(v.error=p),{result:v,traceId:l}}async function te(e,t){let n="sim_"+gt(8),r="run_"+gt(8),o=t.maxTurns??12,s=[],i=[];for(let c of t.scenarios){let{result:a,traceId:l}=await Zn(e,t,c,{simulationId:n,runId:r,maxTurns:o});s.push(a),i.push(l);}await e.flush();for(let c of i)U.delete(c),X.delete(c);return {simulationId:n,runId:r,results:s}}var ee=x(()=>{P();mt();});var M,ne=x(()=>{(function(e){e[e.SUCCESS=0]="SUCCESS",e[e.FAILED=1]="FAILED";})(M||(M={}));});var re=x(()=>{ne();});function kt(e){return e[0]*1e3+e[1]/1e6}function tr(e){return {0:"INTERNAL",1:"SERVER",2:"CLIENT",3:"PRODUCER",4:"CONSUMER"}[e]??"INTERNAL"}function er(e){return e===1?"OK":e===2?"ERROR":"UNSET"}function nr(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("evalkit.")||n==="gen_ai.system"||r!=null&&(t[n]=r);return t}function oe(e){return new Promise(t=>setTimeout(t,e))}var ft,se=x(()=>{re();P();ft=class{constructor(t){this.url=`${t.baseUrl.replace(/\/$/,"")}/v1/ingest`,this.subscriptionKey=t.subscriptionKey,this.debug=t.debug??false;}export(t,n){let r=t.map(s=>this.toEnvelope(s)),o={events:r};this.debug&&console.log(`[evalkit] sending ${r.length} span(s) \u2192 ${this.url}`),this.fetchWithRetry(this.url,{method:"POST",headers:{"Content-Type":"application/json","X-Subscription-Key":this.subscriptionKey},body:JSON.stringify(o)}).then(async s=>{if(!s.ok){let i=await s.text().catch(()=>"(no body)");console.error(`[evalkit] export failed ${s.status}: ${i}`),n({code:M.FAILED});return}if(this.debug){let i=await s.json().catch(()=>({}));console.log(`[evalkit] exported ${r.length} span(s) \u2014 status: ${i.status}`);}n({code:M.SUCCESS});}).catch(s=>{console.error("[evalkit] export network error:",s),n({code:M.FAILED});});}async fetchWithRetry(t,n,r=3){let o=[200,600,1800],s;for(let i=0;i<=r;i++)try{let c=await fetch(t,n);if(c.ok||c.status>=400&&c.status<500)return c;if(i<r)this.debug&&console.warn(`[evalkit] HTTP ${c.status}, retry ${i+1}/${r}`),await oe(o[i]??1800);else return c}catch(c){s=c,i<r&&(this.debug&&console.warn(`[evalkit] network error, retry ${i+1}/${r}:`,c),await oe(o[i]??1800));}throw s}shutdown(){return Promise.resolve()}toEnvelope(t){let n=t.spanContext(),r=t.attributes,o=kt(t.startTime),s=kt(t.endTime),i=t.events.map(l=>({name:l.name,timestamp:new Date(kt(l.time)).toISOString(),attributes:l.attributes})),c={traceId:n.traceId,spanId:n.spanId,parentSpanId:t.parentSpanId,spanKind:tr(t.kind),spanType:r["evalkit.span_type"]??"log",status:er(t.status.code),statusMessage:t.status.message,serviceName:t.resource.attributes["service.name"],operation:t.name,model:r["gen_ai.response.model"]??r["gen_ai.request.model"],provider:r["gen_ai.system"],prompt:r["evalkit.prompt"],completion:r["evalkit.completion"],tokensIn:Math.round(r["gen_ai.usage.input_tokens"]||0)||void 0,tokensOut:Math.round(r["gen_ai.usage.output_tokens"]||0)||void 0,latencyMs:Math.round(s-o),startTime:new Date(o).toISOString(),endTime:new Date(s).toISOString(),events:i.length>0?i:void 0,attributes:nr(r),createdAt:new Date(o).toISOString(),environment:r["evalkit.environment"],appVersion:r["evalkit.app_version"],userId:r["evalkit.user_id"],sessionId:r["evalkit.session_id"],deviceId:r["evalkit.device_id"],sdkVersion:r["evalkit.sdk_version"]},a=U.get(n.traceId);return a&&(c.isSimulation=true,c.simulationId=a.simulationId,c.scenarioId=a.scenarioId,c.runId=a.runId),c}};});function St(e,t=cr){let n;try{n=JSON.stringify(e);}catch{}if(n===void 0)try{n=String(e);}catch{n="<unserializable>";}return n.length>t?n.slice(0,t)+"\u2026":n}var ir,cr;exports.EvalKitClient=void 0;var Et=x(()=>{se();ir="0.1.20",cr=4096;exports.EvalKitClient=class{constructor(t){this.options={serviceName:"unknown",debug:false,maxExportBatchSize:512,scheduledDelayMillis:5e3,baseUrl:"https://api.syntropylabs.ai",apiUrl:"https://api.syntropylabs.ai",environment:"",appVersion:"",...t};let n=new ft({baseUrl:this.options.baseUrl,subscriptionKey:this.options.subscriptionKey,debug:this.options.debug});this.provider=new sdkTraceNode.NodeTracerProvider({resource:new resources.Resource({[semanticConventions.ATTR_SERVICE_NAME]:this.options.serviceName}),spanProcessors:[new sdkTraceBase.BatchSpanProcessor(n,{maxExportBatchSize:this.options.maxExportBatchSize,scheduledDelayMillis:this.options.scheduledDelayMillis})]}),this.provider.register(),this.tracer=api.trace.getTracer("evalkit","0.1.0");}metaAttributes(){let t={"evalkit.sdk_version":ir};return this.options.environment&&(t["evalkit.environment"]=this.options.environment),this.options.appVersion&&(t["evalkit.app_version"]=this.options.appVersion),this.options.deviceId&&(t["evalkit.device_id"]=this.options.deviceId),t}startTrace(t,n){let r=this.tracer.startSpan(t,{kind:api.SpanKind.SERVER,attributes:{"evalkit.span_type":"log",...this.metaAttributes(),...n}},api.context.active()),o=api.trace.setSpan(api.context.active(),r);return {traceId:r.spanContext().traceId,ctx:o,end:(i="OK")=>{r.setStatus({code:i==="OK"?api.SpanStatusCode.OK:api.SpanStatusCode.ERROR}),r.end();}}}startHttpTrace(t,n,r){let o=this.tracer.startSpan(t,{kind:api.SpanKind.SERVER,attributes:{"evalkit.span_type":"http_call","http.method":n.method,"http.url":n.url,...n.headers?{"http.request.headers":JSON.stringify(n.headers)}:{},...n.requestBody!==void 0?{"http.request.body":JSON.stringify(n.requestBody)}:{},...this.metaAttributes(),...r}},api.context.active()),s=api.trace.setSpan(api.context.active(),o);return {traceId:o.spanContext().traceId,ctx:s,end:(c="OK",a)=>{a?.statusCode!==void 0&&o.setAttribute("http.status_code",a.statusCode),a?.body!==void 0&&o.setAttribute("http.response.body",JSON.stringify(a.body)),a?.headers&&o.setAttribute("http.response.headers",JSON.stringify(a.headers)),o.setStatus({code:c==="OK"?api.SpanStatusCode.OK:api.SpanStatusCode.ERROR}),o.end();}}}startSpan(t,n,r){let o=this.tracer.startSpan(t,{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"function_call",...this.metaAttributes(),...n}},r??api.context.active());return {ctx:api.trace.setSpan(api.context.active(),o),end:(i="OK",c)=>{c&&o.setAttributes(c),o.setStatus({code:i==="OK"?api.SpanStatusCode.OK:api.SpanStatusCode.ERROR}),o.end();}}}traceFunction(t,n,r,o=true){let s=this;return function(...i){let c={"evalkit.span_type":"function_call",...r};o&&i.length&&(c["function.args"]=St(i));let{ctx:a,end:l}=s.startSpan(t,c),m;try{m=api.context.with(a,()=>n.apply(this,i));}catch(u){let d=u instanceof Error?u:new Error(String(u));throw api.trace.getSpan(a)?.recordException(d),l("ERROR",{"error.message":d.message}),u}return m&&typeof m.then=="function"?m.then(u=>(l("OK",o?{"function.result":St(u)}:void 0),u),u=>{let d=u instanceof Error?u:new Error(String(u));throw api.trace.getSpan(a)?.recordException(d),l("ERROR",{"error.message":d.message}),u}):(l("OK",o?{"function.result":St(m)}:void 0),m)}}async flush(){await this.provider.forceFlush();}async destroy(){await this.provider.shutdown();}};});function A(e){if(!e)return api.context.active();let t=e.split("-");return t.length===4&&t[0]==="00"&&t[1].length===32&&t[2].length===16?api.trace.setSpanContext(api.ROOT_CONTEXT,{traceId:t[1],spanId:t[2],traceFlags:parseInt(t[3],16),isRemote:true}):api.context.active()}var D=x(()=>{});function dr(e,t){let n="",r=0,o=0,s=false;function i(c){s||(s=true,c?(t.recordException(c),t.setStatus({code:api.SpanStatusCode.ERROR,message:c.message})):(t.setAttributes({"evalkit.completion":n,"gen_ai.usage.input_tokens":r,"gen_ai.usage.output_tokens":o,"gen_ai.streaming":true}),t.setStatus({code:api.SpanStatusCode.OK})),t.end());}return new Proxy(e,{get(c,a,l){if(a===Symbol.asyncIterator)return function(){let u=c[Symbol.asyncIterator]();return {async next(){try{let d=await u.next();if(!d.done&&d.value){let p=d.value,g=p.choices?.[0]?.delta?.content;g&&(n+=g),p.usage&&(r=p.usage.prompt_tokens??0,o=p.usage.completion_tokens??0);}return d.done&&i(),d}catch(d){throw i(d instanceof Error?d:new Error(String(d))),d}},return(){return i(),u.return?.()??Promise.resolve({done:true,value:void 0})},throw(d){return i(d instanceof Error?d:new Error(String(d))),u.throw?.(d)??Promise.reject(d)},[Symbol.asyncIterator](){return this}}};let m=Reflect.get(c,a,l);return typeof m=="function"?m.bind(c):m}})}function N(e,t,n,r="openai"){if(t.create.__evalkit)return;let o=t.create;t.create=async function(...s){let i=s[0],c=n??api.context.active(),a=e.tracer.startSpan("chat.completions.create",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":r,"gen_ai.request.model":i.model??"unknown",...i.temperature!=null&&{"gen_ai.request.temperature":i.temperature},...i.max_tokens!=null&&{"gen_ai.request.max_tokens":i.max_tokens},...i.top_p!=null&&{"gen_ai.request.top_p":i.top_p},"evalkit.prompt":mr(i.messages??[])}},c),l=api.trace.setSpan(c,a);if(i?.stream){let p;try{p=await api.context.with(l,()=>o.apply(this,s));}catch(g){let f=g instanceof Error?g:new Error(String(g));throw a.recordException(f),a.setStatus({code:api.SpanStatusCode.ERROR,message:f.message}),a.end(),g}return dr(p,a)}let m;try{m=await api.context.with(l,()=>o.apply(this,s));}catch(p){let g=p instanceof Error?p:new Error(String(p));throw a.recordException(g),a.setStatus({code:api.SpanStatusCode.ERROR,message:g.message}),a.end(),p}let u=m.choices?.[0],d=u?.message.content??"";a.setAttributes({"gen_ai.response.model":m.model,"gen_ai.response.id":m.id,"gen_ai.usage.input_tokens":m.usage?.prompt_tokens??0,"gen_ai.usage.output_tokens":m.usage?.completion_tokens??0,"gen_ai.usage.total_tokens":m.usage?.total_tokens??0,"gen_ai.response.finish_reasons":u?.finish_reason?[u.finish_reason]:[],"evalkit.completion":d});for(let p of u?.message.tool_calls??[]){a.addEvent("gen_ai.tool.call",{"gen_ai.tool.call.id":p.id,"gen_ai.tool.name":p.function.name,"gen_ai.tool.call.arguments":p.function.arguments});try{let f;try{f=JSON.parse(p.function.arguments);}catch{}K(a.spanContext().traceId,p.function.name,f);}catch{}e.tracer.startSpan(p.function.name,{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call","gen_ai.tool.name":p.function.name,"gen_ai.tool.call.id":p.id,"gen_ai.tool.call.arguments":p.function.arguments}},l).end();}return a.setStatus({code:api.SpanStatusCode.OK}),a.end(),m},t.create.__evalkit=true;}function mr(e){return e.map(t=>`${t.role}: ${t.content??""}`).join(`
3
+ `)}var wt=x(()=>{P();});function fr(e,t){let n="",r=0,o=0,s=false;function i(a){let l=a?.type;if(l==="content_block_delta"){let m=a.delta;m?.type==="text_delta"&&m.text&&(n+=m.text);}else l==="message_start"?r=a.message?.usage?.input_tokens??0:l==="message_delta"&&(o=a.usage?.output_tokens??0);}function c(a){s||(s=true,a?(t.recordException(a),t.setStatus({code:api.SpanStatusCode.ERROR,message:a.message})):(t.setAttributes({"evalkit.completion":n,"gen_ai.usage.input_tokens":r,"gen_ai.usage.output_tokens":o,"gen_ai.streaming":true}),t.setStatus({code:api.SpanStatusCode.OK})),t.end());}return new Proxy(e,{get(a,l,m){if(l===Symbol.asyncIterator)return function(){let d=a[Symbol.asyncIterator]();return {async next(){try{let p=await d.next();return !p.done&&p.value&&i(p.value),p.done&&c(),p}catch(p){throw c(p instanceof Error?p:new Error(String(p))),p}},return(){return c(),d.return?.()??Promise.resolve({done:true,value:void 0})},throw(p){return c(p instanceof Error?p:new Error(String(p))),d.throw?.(p)??Promise.reject(p)},[Symbol.asyncIterator](){return this}}};let u=Reflect.get(a,l,m);return typeof u=="function"?u.bind(a):u}})}function j(e,t,n){if(t.create.__evalkit)return;let r=t.create;t.create=async function(...o){let s=o[0],i=n??api.context.active(),c=yr(s.system,s.messages??[]),a=e.tracer.startSpan("messages.create",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"anthropic","gen_ai.request.model":s.model??"unknown",...s.temperature!=null&&{"gen_ai.request.temperature":s.temperature},...s.max_tokens!=null&&{"gen_ai.request.max_tokens":s.max_tokens},...s.top_p!=null&&{"gen_ai.request.top_p":s.top_p},"evalkit.prompt":c}},i),l=api.trace.setSpan(i,a);if(s?.stream){let d;try{d=await api.context.with(l,()=>r.apply(this,o));}catch(p){let g=p instanceof Error?p:new Error(String(p));throw a.recordException(g),a.setStatus({code:api.SpanStatusCode.ERROR,message:g.message}),a.end(),p}return fr(d,a)}let m;try{m=await api.context.with(l,()=>r.apply(this,o));}catch(d){let p=d instanceof Error?d:new Error(String(d));throw a.recordException(p),a.setStatus({code:api.SpanStatusCode.ERROR,message:p.message}),a.end(),d}let u=m.content.filter(d=>d.type==="text").map(d=>d.text??"").join("");a.setAttributes({"gen_ai.response.model":m.model,"gen_ai.response.id":m.id,"gen_ai.usage.input_tokens":m.usage?.input_tokens??0,"gen_ai.usage.output_tokens":m.usage?.output_tokens??0,"gen_ai.response.finish_reasons":m.stop_reason?[m.stop_reason]:[],"evalkit.completion":u});for(let d of m.content)if(d.type==="tool_use"){let p=d;a.addEvent("gen_ai.tool.call",{"gen_ai.tool.call.id":p.id,"gen_ai.tool.name":p.name,"gen_ai.tool.call.arguments":JSON.stringify(p.input)});try{K(a.spanContext().traceId,p.name,p.input);}catch{}e.tracer.startSpan(p.name,{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call","gen_ai.tool.name":p.name,"gen_ai.tool.call.id":p.id,"gen_ai.tool.call.arguments":JSON.stringify(p.input)}},l).end();}return a.setStatus({code:api.SpanStatusCode.OK}),a.end(),m},t.create.__evalkit=true;}function yr(e,t){let n=[];return e&&n.push(`system: ${e}`),n.push(...t.map(r=>`${r.role}: ${r.content}`)),n.join(`
4
+ `)}var yt=x(()=>{P();});function ht(e,t){let n=t.Query?.prototype;if(!n||n.__evalkit)return;let r=n.exec;n.exec=async function(){if(!api.trace.getActiveSpan()?.isRecording())return r.call(this);let s=this.op??"query",i=this.model?.collection?.name??this._collection?.collectionName??"unknown",c=e.tracer.startSpan(`${s} ${i}`,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"mongodb","db.operation":s,"db.collection":i,"db.query":JSON.stringify(this._conditions??{})}},api.context.active());try{let a=await r.call(this);return c.setStatus({code:api.SpanStatusCode.OK}),c.end(),a}catch(a){let l=a instanceof Error?a:new Error(String(a));throw c.recordException(l),c.setStatus({code:api.SpanStatusCode.ERROR,message:l.message}),c.end(),a}},n.__evalkit=true;}var Tt=x(()=>{});function Z(e,t){let r=t?.prototype&&(typeof t.prototype.sendCommand=="function"||typeof t.prototype.call=="function")?t.prototype:Object.getPrototypeOf(t);if(!r||r.__evalkit_redis)return;let o=typeof r.sendCommand=="function"?"sendCommand":typeof r.call=="function"?"call":null;if(!o)return;let s=r[o];r[o]=async function(i,...c){if(!api.trace.getActiveSpan()?.isRecording())return s.call(this,i,...c);let l=Array.isArray(i)?i[0]:i?.name??i?.args?.[0]??"cmd",m=(typeof l=="string"?l:String(l)).toUpperCase(),u=e.tracer.startSpan(`redis ${m}`,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"redis","db.operation":m}},api.context.active());try{let d=await s.call(this,i,...c);return u.setStatus({code:api.SpanStatusCode.OK}),u.end(),d}catch(d){let p=d instanceof Error?d:new Error(String(d));throw u.recordException(p),u.setStatus({code:api.SpanStatusCode.ERROR,message:p.message}),u.end(),d}},r.__evalkit_redis=true;}var At=x(()=>{});function w(e){let t={};for(let[n,r]of Object.entries(e))Rr.test(n)||r!==void 0&&(t[n]=Array.isArray(r)?r.join(", "):String(r));return t}var Rr,It=x(()=>{Rr=/^(authorization|cookie|set-cookie|x-api-key|api-key|x-auth-token|proxy-authorization|x-secret|x-access-token|token|password)$/i;});var J,Kt=x(()=>{J=new Map;});function tt(e,t){if(!t.__evalkit_axios){if(t.__evalkit_axios=true,typeof t.create=="function"){let n=t.create.bind(t);t.create=function(...r){let o=n(...r);return tt(e,o),o};}t.interceptors.request.use(n=>{let r=(n.baseURL?n.baseURL.replace(/\/$/,""):"")+(n.url??"");if(wr.some(m=>m.test(r))||!api.trace.getActiveSpan()?.isRecording())return n;let s=n.url??"";try{s=new URL(r,n.baseURL??"http://localhost").pathname;}catch{}let i=(n.method??"get").toUpperCase(),c=w(n.headers??{}),a=e.tracer.startSpan(`${i} ${s}`,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"http_call","http.method":i,"http.url":r,...Object.keys(c).length?{"http.request.headers":JSON.stringify(c)}:{},...n.data!==void 0?{"http.request.body":typeof n.data=="string"?n.data.slice(0,4096):JSON.stringify(n.data).slice(0,4096)}:{}}},api.context.active()),l=a.spanContext();return n.headers=n.headers??{},n.headers.traceparent=`00-${l.traceId}-${l.spanId}-01`,n.headers["x-evalkit-span-id"]=l.spanId,J.set(l.spanId,a),n.__evalkitSpan=a,n.__evalkitSpanId=l.spanId,n}),t.interceptors.response.use(n=>{let r=n.config?.__evalkitSpan;if(n.config?.__evalkitSpanId&&J.delete(n.config.__evalkitSpanId),r){let o=w(n.headers??{}),s=n.data,i;s!=null&&(i=(typeof s=="string"?s:JSON.stringify(s)).slice(0,4096)),r.setAttributes({"http.status_code":n.status,...Object.keys(o).length?{"http.response.headers":JSON.stringify(o)}:{},...i!==void 0?{"http.response.body":i}:{}}),r.setStatus({code:api.SpanStatusCode.OK}),r.end();}return n},n=>{let r=n.config?.__evalkitSpan;if(n.config?.__evalkitSpanId&&J.delete(n.config.__evalkitSpanId),r){let o=n.response?.status??0,s=w(n.response?.headers??{}),i=n.response?.data,c;i!=null&&(c=(typeof i=="string"?i:JSON.stringify(i)).slice(0,4096)),r.setAttributes({"http.status_code":o,"error.message":n.message,...Object.keys(s).length?{"http.response.headers":JSON.stringify(s)}:{},...c!==void 0?{"http.response.body":c}:{}}),r.recordException(n instanceof Error?n:new Error(String(n))),r.setStatus({code:api.SpanStatusCode.ERROR,message:n.message}),r.end();}throw n});}}var wr,Pt=x(()=>{It();Kt();wr=[/\/v1\/ingest/,/\/health(z)?$/];});function et(e,t){let n=t?.prototype??Object.getPrototypeOf(t);if(!n||n.__evalkit_pg)return;let r=n.query;typeof r=="function"&&(n.query=function(...o){if(!api.trace.getActiveSpan()?.isRecording())return r.apply(this,o);let i=typeof o[0]=="string"?o[0]:o[0]?.text??o[0]?.name??"query",c=Array.isArray(o[1])?o[1]:o[0]?.values??void 0,l=i.trim().match(/^(\w+)/)?.[1]?.toUpperCase()??"QUERY",u=i.match(/(?:FROM|INTO|UPDATE|JOIN)\s+"?(\w+)"?/i)?.[1]??"",d=u?`${l} ${u}`:`pg ${l}`,p=e.tracer.startSpan(d,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"postgresql","db.operation":l,"db.statement":i.slice(0,2048),...c!==void 0?{"db.params":JSON.stringify(c).slice(0,1024)}:{},...u?{"db.sql.table":u}:{}}},api.context.active()),g=o[o.length-1];if(typeof g=="function"){let y=g,h=o.slice(0,-1).concat([(v,k)=>{v?(p.recordException(v),p.setStatus({code:api.SpanStatusCode.ERROR,message:v.message}),p.setAttribute("error.message",v.message)):(p.setAttribute("db.rows_affected",k?.rowCount??0),p.setStatus({code:api.SpanStatusCode.OK})),p.end(),y(v,k);}]);return r.apply(this,h)}return r.apply(this,o).then(y=>(p.setAttribute("db.rows_affected",y?.rowCount??0),p.setStatus({code:api.SpanStatusCode.OK}),p.end(),y),y=>{let h=y instanceof Error?y:new Error(String(y));throw p.recordException(h),p.setStatus({code:api.SpanStatusCode.ERROR,message:h.message}),p.setAttribute("error.message",h.message),p.end(),y})},n.__evalkit_pg=true);}var Mt=x(()=>{});function nt(e,t){let n=t?.prototype??Object.getPrototypeOf(t);if(!(!n||n.__evalkit_mysql2)){for(let r of ["query","execute"]){let o=n[r];typeof o=="function"&&(n[r]=function(...s){if(!api.trace.getActiveSpan()?.isRecording())return o.apply(this,s);let c=typeof s[0]=="string"?s[0]:s[0]?.sql??"query",a=Array.isArray(s[1])?s[1]:void 0,m=c.trim().match(/^(\w+)/)?.[1]?.toUpperCase()??"QUERY",d=c.match(/(?:FROM|INTO|UPDATE|JOIN)\s+`?(\w+)`?/i)?.[1]??"",p=d?`${m} ${d}`:`mysql ${m}`,g=e.tracer.startSpan(p,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"mysql","db.operation":m,"db.statement":c.slice(0,2048),...a!==void 0?{"db.params":JSON.stringify(a).slice(0,1024)}:{},...d?{"db.sql.table":d}:{}}},api.context.active()),f=s[s.length-1];if(typeof f=="function"){let h=f,v=s.slice(0,-1).concat([(k,S,O)=>{k?(g.recordException(k),g.setStatus({code:api.SpanStatusCode.ERROR,message:k.message}),g.setAttribute("error.message",k.message)):(g.setAttribute("db.rows_affected",Array.isArray(S)?S.length:S?.affectedRows??0),g.setStatus({code:api.SpanStatusCode.OK})),g.end(),h(k,S,O);}]);return o.apply(this,v)}let y=o.apply(this,s);return y&&typeof y.then=="function"?y.then(([h,v])=>(g.setAttribute("db.rows_affected",Array.isArray(h)?h.length:h?.affectedRows??0),g.setStatus({code:api.SpanStatusCode.OK}),g.end(),[h,v]),h=>{let v=h instanceof Error?h:new Error(String(h));throw g.recordException(v),g.setStatus({code:api.SpanStatusCode.ERROR,message:v.message}),g.setAttribute("error.message",v.message),g.end(),h}):(g.end(),y)});}n.__evalkit_mysql2=true;}}var qt=x(()=>{});function Nr(e){if(!e||typeof e!="object")return false;let t=e.constructor?.name??"";return t==="ConverseCommand"||t==="ConverseStreamCommand"}function rt(e,t,n){if(t.send.__evalkit)return;let r=t.send;t.send=async function(...o){let s=o[0];if(!Nr(s))return r.apply(this,o);let i=s.input,c=i?.modelId??"unknown",a=c.split(".")[0]??"bedrock",l=i?.system?.map(v=>v.text).join(`
5
+ `)??"",m=i?.messages?.map(v=>`${v.role}: ${v.content.map(k=>k.text??"").join("")}`)??[],u=[l?`system: ${l}`:"",...m].filter(Boolean).join(`
6
+ `),d=i?.inferenceConfig??{},p=api.context.active(),g=e.tracer.startSpan("converse",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":a,"gen_ai.request.model":c,...d.temperature!=null&&{"gen_ai.request.temperature":d.temperature},...d.maxTokens!=null&&{"gen_ai.request.max_tokens":d.maxTokens},...d.topP!=null&&{"gen_ai.request.top_p":d.topP},"evalkit.prompt":u}},p),f=api.trace.setSpan(p,g),y;try{y=await api.context.with(f,()=>r.apply(this,o));}catch(v){let k=v instanceof Error?v:new Error(String(v));throw g.recordException(k),g.setStatus({code:api.SpanStatusCode.ERROR,message:k.message}),g.end(),v}let h=y.output?.message?.content?.map(v=>v.text??"").join("")??"";return g.setAttributes({"gen_ai.response.model":c,"gen_ai.usage.input_tokens":y.usage?.inputTokens??0,"gen_ai.usage.output_tokens":y.usage?.outputTokens??0,"gen_ai.usage.total_tokens":y.usage?.totalTokens??0,"gen_ai.response.finish_reasons":y.stopReason?[y.stopReason]:[],"evalkit.completion":h}),g.setStatus({code:api.SpanStatusCode.OK}),g.end(),y},t.send.__evalkit=true;}var Nt=x(()=>{});function ot(e,t,n){if(t.chat.__evalkit)return;let r=t.chat;t.chat=async function(...o){let s=o[0];if(s?.stream)return r.apply(this,o);let i=s?.chatHistory?.map(d=>`${d.role}: ${d.message??""}`)??[],c=[s?.preamble?`system: ${s.preamble}`:"",...i,`user: ${s?.message??""}`].filter(Boolean).join(`
7
+ `),a=api.context.active(),l=e.tracer.startSpan("chat",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"cohere","gen_ai.request.model":s?.model??"unknown",...s?.temperature!=null&&{"gen_ai.request.temperature":s.temperature},...s?.maxTokens!=null&&{"gen_ai.request.max_tokens":s.maxTokens},"evalkit.prompt":c}},a),m=api.trace.setSpan(a,l),u;try{u=await api.context.with(m,()=>r.apply(this,o));}catch(d){let p=d instanceof Error?d:new Error(String(d));throw l.recordException(p),l.setStatus({code:api.SpanStatusCode.ERROR,message:p.message}),l.end(),d}return l.setAttributes({"gen_ai.response.model":s?.model??"unknown","gen_ai.response.id":u.generationId??"","gen_ai.usage.input_tokens":u.meta?.tokens?.inputTokens??0,"gen_ai.usage.output_tokens":u.meta?.tokens?.outputTokens??0,"gen_ai.response.finish_reasons":u.finishReason?[u.finishReason]:[],"evalkit.completion":u.text??""}),l.setStatus({code:api.SpanStatusCode.OK}),l.end(),u},t.chat.__evalkit=true;}var jt=x(()=>{});function st(e,t,n){if(t.generateContent.__evalkit)return;let r=t.generateContent,o=t.model??"unknown";t.generateContent=async function(...s){let i=s[0],c="";if(typeof i=="string")c=`user: ${i}`;else {let f=i,y=f?.systemInstruction?.parts?.map(v=>v.text??"").join("")??"",h=f?.contents?.map(v=>`${v.role??"user"}: ${v.parts.map(k=>k.text??"").join("")}`)??[];c=[y?`system: ${y}`:"",...h].filter(Boolean).join(`
8
+ `);}let a=api.context.active(),l=e.tracer.startSpan("generateContent",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-ai","gen_ai.request.model":o,"evalkit.prompt":c}},a),m=api.trace.setSpan(a,l),u;try{u=await api.context.with(m,()=>r.apply(this,s));}catch(f){let y=f instanceof Error?f:new Error(String(f));throw l.recordException(y),l.setStatus({code:api.SpanStatusCode.ERROR,message:y.message}),l.end(),f}let d=u?.response,p=d?.candidates?.[0],g=p?.content?.parts?.map(f=>f.text??"").join("")??"";return l.setAttributes({"gen_ai.response.model":o,"gen_ai.usage.input_tokens":d?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":d?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":d?.usageMetadata?.totalTokenCount??0,"gen_ai.response.finish_reasons":p?.finishReason?[p.finishReason]:[],"evalkit.completion":g}),l.setStatus({code:api.SpanStatusCode.OK}),l.end(),u},t.generateContent.__evalkit=true;}var $t=x(()=>{});function ve(e){return e?.text??""}function Lr(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(t=>{if(typeof t=="string")return t;let n=t,r=n.role??"user",o=(n.parts??[]).map(ve).join("");return o?`${r}: ${o}`:""}).filter(Boolean).join(`
9
9
  `);if(e&&typeof e=="object"){let t=e;if(t.parts)return (t.parts??[]).map(ve).join("")}return e!=null?String(e):""}function Ur(e){let t=e?.systemInstruction;return t?typeof t=="string"?t:Array.isArray(t?.parts)?t.parts.map(n=>n?.text??"").join(""):typeof t?.text=="string"?t.text:"":""}function _e(e){let t=Ur(e?.config),n=Lr(e?.contents);return [t?`system: ${t}`:"",n].filter(Boolean).join(`
10
- `)}function xe(e){let t=[];for(let n of e?.candidates??[])for(let r of n.content?.parts??[])r.text&&t.push(r.text);return t.length?t.join(""):e?.text??""}function Ce(e,t,n){let r=[];if(Array.isArray(e?.functionCalls))r.push(...e.functionCalls);else for(let o of e?.candidates??[])for(let s of o.content?.parts??[])s.functionCall?.name&&r.push(s.functionCall);for(let o of r){let s=o.name??"";if(!s)continue;let i="";try{i=JSON.stringify(o.args??{});}catch{i=String(o.args);}t.addEvent("gen_ai.tool.call",{"gen_ai.tool.name":s,"gen_ai.tool.call.arguments":i,"gen_ai.tool.call.id":o.id??""});let c=Br(t);K(n,s,o.args),c&&c.end();}}function Br(e){if(!Lt)return null;let t=api.trace.setSpan(api.context.active(),e);return Lt.tracer.startSpan("tool_call",{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call"}},t)}function it(e,t,n){if(Lt=e,t.generateContent&&!t.generateContent.__evalkit){let r=t.generateContent;t.generateContent=async function(...o){let s=o[0]??{},i=s.model??"unknown",c=api.context.active(),a=e.tracer.startSpan("generateContent",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-genai","gen_ai.request.model":i,"evalkit.prompt":_e(s)}},c),l=api.trace.setSpan(c,a),u;try{u=await api.context.with(l,()=>r.apply(this,o));}catch(p){throw a.setStatus({code:api.SpanStatusCode.ERROR,message:p instanceof Error?p.message:String(p)}),a.end(),p}a.setAttributes({"gen_ai.response.model":i,"gen_ai.usage.input_tokens":u?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":u?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":u?.usageMetadata?.totalTokenCount??0,"evalkit.completion":xe(u)});try{Ce(u,a,a.spanContext().traceId);}catch{}return a.setStatus({code:api.SpanStatusCode.OK}),a.end(),u},t.generateContent.__evalkit=true;}if(t.generateContentStream&&!t.generateContentStream.__evalkit){let r=t.generateContentStream;t.generateContentStream=async function(...o){let s=o[0]??{},i=s.model??"unknown",c=api.context.active(),a=e.tracer.startSpan("generateContentStream",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-genai","gen_ai.request.model":i,"gen_ai.streaming":true,"evalkit.prompt":_e(s)}},c),l=api.trace.setSpan(c,a),u;try{u=await api.context.with(l,()=>r.apply(this,o));}catch(m){throw a.setStatus({code:api.SpanStatusCode.ERROR,message:m instanceof Error?m.message:String(m)}),a.end(),m}async function*p(){let m=[],d=0,g=0;try{for await(let f of u){try{let h=xe(f);h&&m.push(h),f?.usageMetadata&&(d=f.usageMetadata.promptTokenCount??d,g=f.usageMetadata.candidatesTokenCount??g),Ce(f,a,a.spanContext().traceId);}catch{}yield f;}a.setAttributes({"gen_ai.response.model":i,"gen_ai.usage.input_tokens":d,"gen_ai.usage.output_tokens":g,"evalkit.completion":m.join("")}),a.setStatus({code:api.SpanStatusCode.OK});}catch(f){throw a.setStatus({code:api.SpanStatusCode.ERROR,message:f instanceof Error?f.message:String(f)}),f}finally{a.end();}}return p()},t.generateContentStream.__evalkit=true;}}var Lt,Ut=_(()=>{P();Lt=null;});function Bt(e){if(typeof T>"u")return null;let t=T.cache;if(!t)return null;let n=Object.keys(t).find(r=>{let o=r.split("/node_modules/");return o.length>1&&o[o.length-1].startsWith(e+"/")});return n?t[n]?.exports??null:null}function E(){return typeof T<"u"?T:module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)))}var b,Vt=_(()=>{b=new Function("s","return import(s)");});var we={};Wt(we,{langchainCallbackHandler:()=>xt,langchainHandlerMethods:()=>Ee,patchLangChain:()=>Qr});function I(e,t=Jr){let n;try{n=typeof e=="string"?e:JSON.stringify(e);}catch{n=String(e);}return n==null?"":n.length>t?n.slice(0,t)+"\u2026":n}function Se(e){let t=e?.id;if(Array.isArray(t)){for(let n of ["openai","anthropic","google","vertexai","cohere","mistral","bedrock","ollama","groq"])if(t.includes(n))return n==="vertexai"?"vertex-ai":n;return t[t.length-1]}}function be(e,t){let n=t?.invocation_params??{};for(let o of ["model","model_name","modelName","model_id","deployment_name"])if(n[o])return String(n[o]);let r=e?.kwargs??{};for(let o of ["model","model_name","modelName","model_id"])if(r[o])return String(r[o]);return "unknown"}function zr(e){try{let n=((Array.isArray(e?.[0])?e[0]:e)??[]).map(r=>{let o=(typeof r?._getType=="function"?r._getType():void 0)??r?.role??r?.type??"message",s=typeof r?.content=="string"?r.content:I(r?.content);return `${o}: ${s}`});return I(n.join(`
10
+ `)}function xe(e){let t=[];for(let n of e?.candidates??[])for(let r of n.content?.parts??[])r.text&&t.push(r.text);return t.length?t.join(""):e?.text??""}function Ce(e,t,n){let r=[];if(Array.isArray(e?.functionCalls))r.push(...e.functionCalls);else for(let o of e?.candidates??[])for(let s of o.content?.parts??[])s.functionCall?.name&&r.push(s.functionCall);for(let o of r){let s=o.name??"";if(!s)continue;let i="";try{i=JSON.stringify(o.args??{});}catch{i=String(o.args);}t.addEvent("gen_ai.tool.call",{"gen_ai.tool.name":s,"gen_ai.tool.call.arguments":i,"gen_ai.tool.call.id":o.id??""});let c=Br(t);K(n,s,o.args),c&&c.end();}}function Br(e){if(!Lt)return null;let t=api.trace.setSpan(api.context.active(),e);return Lt.tracer.startSpan("tool_call",{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call"}},t)}function ct(e,t,n){if(Lt=e,t.generateContent&&!t.generateContent.__evalkit){let r=t.generateContent;t.generateContent=async function(...o){let s=o[0]??{},i=s.model??"unknown",c=api.context.active(),a=e.tracer.startSpan("generateContent",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-genai","gen_ai.request.model":i,"evalkit.prompt":_e(s)}},c),l=api.trace.setSpan(c,a),m;try{m=await api.context.with(l,()=>r.apply(this,o));}catch(u){let d=u instanceof Error?u:new Error(String(u));throw a.recordException(d),a.setStatus({code:api.SpanStatusCode.ERROR,message:d.message}),a.end(),u}a.setAttributes({"gen_ai.response.model":i,"gen_ai.usage.input_tokens":m?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":m?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":m?.usageMetadata?.totalTokenCount??0,"evalkit.completion":xe(m)});try{Ce(m,a,a.spanContext().traceId);}catch{}return a.setStatus({code:api.SpanStatusCode.OK}),a.end(),m},t.generateContent.__evalkit=true;}if(t.generateContentStream&&!t.generateContentStream.__evalkit){let r=t.generateContentStream;t.generateContentStream=async function(...o){let s=o[0]??{},i=s.model??"unknown",c=api.context.active(),a=e.tracer.startSpan("generateContentStream",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-genai","gen_ai.request.model":i,"gen_ai.streaming":true,"evalkit.prompt":_e(s)}},c),l=api.trace.setSpan(c,a),m;try{m=await api.context.with(l,()=>r.apply(this,o));}catch(d){let p=d instanceof Error?d:new Error(String(d));throw a.recordException(p),a.setStatus({code:api.SpanStatusCode.ERROR,message:p.message}),a.end(),d}async function*u(){let d=[],p=0,g=0;try{for await(let f of m){try{let y=xe(f);y&&d.push(y),f?.usageMetadata&&(p=f.usageMetadata.promptTokenCount??p,g=f.usageMetadata.candidatesTokenCount??g),Ce(f,a,a.spanContext().traceId);}catch{}yield f;}a.setAttributes({"gen_ai.response.model":i,"gen_ai.usage.input_tokens":p,"gen_ai.usage.output_tokens":g,"evalkit.completion":d.join("")}),a.setStatus({code:api.SpanStatusCode.OK});}catch(f){let y=f instanceof Error?f:new Error(String(f));throw a.recordException(y),a.setStatus({code:api.SpanStatusCode.ERROR,message:y.message}),f}finally{a.end();}}return u()},t.generateContentStream.__evalkit=true;}}var Lt,Ut=x(()=>{P();Lt=null;});function Bt(e){if(typeof T>"u")return null;let t=T.cache;if(!t)return null;let n=Object.keys(t).find(r=>{let o=r.split("/node_modules/");return o.length>1&&o[o.length-1].startsWith(e+"/")});return n?t[n]?.exports??null:null}function b(){return typeof T<"u"?T:module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)))}var E,Vt=x(()=>{E=new Function("s","return import(s)");});var we={};Wt(we,{langchainCallbackHandler:()=>xt,langchainHandlerMethods:()=>be,patchLangChain:()=>Qr});function I(e,t=Jr){let n;try{n=typeof e=="string"?e:JSON.stringify(e);}catch{n=String(e);}return n==null?"":n.length>t?n.slice(0,t)+"\u2026":n}function Se(e){let t=e?.id;if(Array.isArray(t)){for(let n of ["openai","anthropic","google","vertexai","cohere","mistral","bedrock","ollama","groq"])if(t.includes(n))return n==="vertexai"?"vertex-ai":n;return t[t.length-1]}}function Ee(e,t){let n=t?.invocation_params??{};for(let o of ["model","model_name","modelName","model_id","deployment_name"])if(n[o])return String(n[o]);let r=e?.kwargs??{};for(let o of ["model","model_name","modelName","model_id"])if(r[o])return String(r[o]);return "unknown"}function zr(e){try{let n=((Array.isArray(e?.[0])?e[0]:e)??[]).map(r=>{let o=(typeof r?._getType=="function"?r._getType():void 0)??r?.role??r?.type??"message",s=typeof r?.content=="string"?r.content:I(r?.content);return `${o}: ${s}`});return I(n.join(`
11
11
  `))}catch{return I(e)}}function Wr(e){try{let t=[];for(let n of e?.generations??[])for(let r of n??[])r?.text?t.push(String(r.text)):r?.message?.content&&t.push(typeof r.message.content=="string"?r.message.content:I(r.message.content));return I(t.filter(Boolean).join(`
12
- `))}catch{return ""}}function Xr(e){let t=0,n=0;try{let r=e?.llmOutput?.tokenUsage??e?.llmOutput?.usage??{};if(t=r.promptTokens??r.prompt_tokens??r.input_tokens??0,n=r.completionTokens??r.completion_tokens??r.output_tokens??0,!t&&!n)for(let o of e?.generations??[])for(let s of o??[]){let i=s?.message?.usage_metadata;i&&(t=i.input_tokens??t,n=i.output_tokens??n);}}catch{}return {tin:t||0,tout:n||0}}function Ee(e){let t=new Map;function n(o,s,i,c,a){try{let l=s?t.get(s):void 0,u=l?l.ctx:api.context.active(),p=e.tracer.startSpan(c,{kind:i==="llm_call"?api.SpanKind.CLIENT:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":i,"evalkit.framework":"langchain",...a}},u);t.set(o,{span:p,ctx:api.trace.setSpan(u,p)});}catch{}}function r(o,s,i,c){try{let a=t.get(o);if(!a)return;t.delete(o),i&&a.span.setAttributes(i),a.span.setStatus({code:s==="OK"?api.SpanStatusCode.OK:api.SpanStatusCode.ERROR,message:c}),a.span.end();}catch{}}return {handleChainStart(o,s,i,c,a,l,u,p){let m=p??o?.id?.[o.id.length-1]??"chain";n(i,c,"function_call",String(m),a?.length?{"langchain.tags":a.join(",")}:{});},handleChainEnd(o,s){r(s,"OK");},handleChainError(o,s){r(s,"ERROR",void 0,String(o?.message??o));},handleLLMStart(o,s,i,c,a){let l=be(o,a);n(i,c,"llm_call","llm.generate",{"gen_ai.request.model":l,"gen_ai.system":Se(o)??"","evalkit.prompt":I((s??[]).join(`
13
- `))});},handleChatModelStart(o,s,i,c,a){let l=be(o,a);n(i,c,"llm_call","chat.generate",{"gen_ai.request.model":l,"gen_ai.system":Se(o)??"","evalkit.prompt":zr(s)});},handleLLMEnd(o,s){let{tin:i,tout:c}=Xr(o),a=t.get(s);try{for(let l of o?.generations??[])for(let u of l??[])for(let p of u?.message?.tool_calls??[])p?.name&&a&&(a.span.addEvent("gen_ai.tool.call",{"gen_ai.tool.name":p.name,"gen_ai.tool.call.arguments":I(p.args??{})}),K(a.span.spanContext().traceId,p.name,p.args));}catch{}r(s,"OK",{"evalkit.completion":Wr(o),"gen_ai.usage.input_tokens":i,"gen_ai.usage.output_tokens":c,"gen_ai.usage.total_tokens":i+c});},handleLLMError(o,s){r(s,"ERROR",void 0,String(o?.message??o));},handleToolStart(o,s,i,c,a,l,u){let p=u??o?.id?.[o.id.length-1]??"tool",m=t.get(c??"");K(m?.span.spanContext().traceId,String(p)),n(i,c,"tool_call",String(p),{"tool.name":String(p),"tool.arguments":I(s)});},handleToolEnd(o,s){r(s,"OK",{"tool.result":I(o)});},handleToolError(o,s){r(s,"ERROR",void 0,String(o?.message??o));},handleRetrieverStart(o,s,i,c){let a=o?.id?.[o.id.length-1]??"retriever";n(i,c,"db_query",String(a),{"retriever.query":I(s)});},handleRetrieverEnd(o,s){let i=Array.isArray(o)?o.length:0;r(s,"OK",{"retriever.document_count":i});},handleRetrieverError(o,s){r(s,"ERROR",void 0,String(o?.message??o));}}}async function xt(e){try{let n=(await b("@langchain/core/callbacks/base")).BaseCallbackHandler.fromMethods(Ee(e));return n.name="evalkit",n.__evalkit=!0,n}catch{return null}}async function Qr(e){let t=await xt(e);if(!t)return null;try{let r=(await b("@langchain/core/callbacks/manager")).CallbackManager;if(r&&typeof r.configure=="function"&&!r.__evalkitPatched){let o=r.configure.bind(r);r.configure=(...s)=>{let i=o(...s);try{i&&![...i.handlers??[],...i.inheritableHandlers??[]].some(l=>l?.__evalkit)&&typeof i.addHandler=="function"&&i.addHandler(t,!0);}catch{}return i},r.__evalkitPatched=!0;}}catch{}return t}var Jr,Ft=_(()=>{P();Vt();Jr=4096;});function ct(e,t,n){j(e,t,n);}function lt(e,t,n){if(t.generateContent.__evalkit)return;let r=t.generateContent,o=t.model??"unknown";t.generateContent=async function(...s){let i=s[0],c=i?.systemInstruction?.parts?.map(y=>y.text??"").join("")??"",a=i?.contents?.map(y=>`${y.role??"user"}: ${y.parts.map(v=>v.text??"").join("")}`)??[],l=[c?`system: ${c}`:"",...a].filter(Boolean).join(`
14
- `),u=api.context.active(),p=e.tracer.startSpan("generateContent",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-vertex","gen_ai.request.model":o,"evalkit.prompt":l}},u),m=api.trace.setSpan(u,p),d;try{d=await api.context.with(m,()=>r.apply(this,s));}catch(y){throw p.setStatus({code:api.SpanStatusCode.ERROR,message:y instanceof Error?y.message:String(y)}),p.end(),y}let g=d?.response,f=g?.candidates?.[0],h=f?.content?.parts?.map(y=>y.text??"").join("")??"";return p.setAttributes({"gen_ai.response.model":o,"gen_ai.usage.input_tokens":g?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":g?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":g?.usageMetadata?.totalTokenCount??0,"gen_ai.response.finish_reasons":f?.finishReason?[f.finishReason]:[],"evalkit.completion":h}),p.setStatus({code:api.SpanStatusCode.OK}),p.end(),d},t.generateContent.__evalkit=true;}var Dt=_(()=>{yt();});function Ae(e,t={},n){function r(o,s,i){let c={...t,...s};o.addHook("onRequest",(a,l,u)=>{let p=a.routerPath??a.routeOptions?.url??a.url??"/",m=typeof c.name=="function"?c.name(a):c.name??`${String(a.method??"GET")} ${String(p)}`,d=a.headers?.traceparent,g=n?n(d):api.context.active(),{traceId:f,end:h,ctx:y}=api.context.with(g,()=>e.startHttpTrace(m,{method:String(a.method??"GET"),url:String(a.url??"/"),headers:a.headers,requestBody:void 0}));a._evalkitCtx=y,a._evalkitTraceId=f,a._evalkitEnd=h,a._evalkitEnded=false,api.context.with(y,u);}),o.addHook("preHandler",(a,l,u)=>{if(a._evalkitCtx&&a.body!==void 0){let p=api.trace.getActiveSpan();if(p?.isRecording())try{p.setAttribute("http.request.body",typeof a.body=="string"?a.body.slice(0,4096):JSON.stringify(a.body).slice(0,4096));}catch{}}api.context.with(a._evalkitCtx??api.context.active(),u);}),o.addHook("onResponse",(a,l,u)=>{if(typeof a._evalkitEnd=="function"&&!a._evalkitEnded){a._evalkitEnded=true;let p=l.statusCode??200;a._evalkitEnd(p>=400?"ERROR":"OK",{statusCode:p});}u();}),o.addHook("onError",(a,l,u,p)=>{typeof a._evalkitEnd=="function"&&!a._evalkitEnded&&(a._evalkitEnded=true,a._evalkitEnd("ERROR",{statusCode:l.statusCode??500})),p();}),i();}return r[Symbol.for("skip-override")]=true,r}var Ie=_(()=>{});function Pe(e,t){return (n,r,o)=>{let s=typeof t?.name=="function"?t.name(n):t?.name??`${String(n.method)} ${String(n.route?.path??n.path??n.url)}`,i=A(n.headers?.traceparent),{end:c,ctx:a,traceId:l}=api.context.with(i,()=>e.startHttpTrace(s,{method:String(n.method??"GET"),url:String(n.originalUrl??n.url??"/"),headers:n.headers,requestBody:n.body}));n._evalkitCtx=a,n._evalkitTraceId=l;let u=api.trace.getSpan(a)?.spanContext().spanId??"0000000000000000";r.setHeader?.("x-trace-id",l),r.setHeader?.("traceparent",`00-${l}-${u}-01`);let p=r.end;r.end=function(...m){let d=r.statusCode??200;return c(d>=400?"ERROR":"OK",{statusCode:d,headers:r.getHeaders?r.getHeaders():void 0}),p.apply(r,m)},api.context.with(a,()=>o());}}var Me=_(()=>{F();});function Ne(e,t){return async(n,r)=>{let o=typeof t?.name=="function"?t.name(n):t?.name??`${String(n.method??"GET")} ${String(n.path??"/")}`,s=A(n.request?.headers?.traceparent),{end:i,ctx:c}=api.context.with(s,()=>e.startHttpTrace(o,{method:String(n.method??"GET"),url:String(n.href??n.url??"/"),headers:n.request?.headers,requestBody:n.request?.body}));n._evalkitCtx=c;try{await api.context.with(c,r);let a=n.status??200;i(a>=400?"ERROR":"OK",{statusCode:a});}catch(a){throw i("ERROR",{statusCode:n.status??500}),a}}}var je=_(()=>{F();});function Ge(e,t){return async(n,r)=>{let o=n.req,s=o.url??"/",i=s;try{i=new URL(s).pathname;}catch{}let c=typeof t?.name=="function"?t.name(n):t?.name??`${String(o.method??"GET")} ${i}`,a=A(o.header("traceparent")),{end:l,ctx:u}=api.context.with(a,()=>e.startHttpTrace(c,{method:String(o.method??"GET"),url:s,headers:Object.fromEntries(o.raw?.headers??[])}));try{await api.context.with(u,r);let p=n.res?.status??200;l(p>=400?"ERROR":"OK",{statusCode:p});}catch(p){throw l("ERROR",{statusCode:500}),p}}}var He=_(()=>{F();});function Le(e,t){return {name:"@evalkit/hapi",register(n){let r=new WeakMap;n.ext("onRequest",(o,s)=>{let i=typeof t?.name=="function"?t.name(o):t?.name??`${String(o.method?.toUpperCase()??"GET")} ${String(o.path??"/")}`,c=A(o.headers?.traceparent),{end:a,ctx:l}=api.context.with(c,()=>e.startHttpTrace(i,{method:String(o.method?.toUpperCase()??"GET"),url:String(o.url?.href??o.path??"/"),headers:o.headers}));return r.set(o,{end:a,ctx:l}),s.continue}),n.ext("onPreResponse",(o,s)=>{let i=r.get(o);if(i){let c=o.response?.output?.statusCode??o.response?.statusCode??200;i.end(c>=400?"ERROR":"OK",{statusCode:c}),r.delete(o);}return s.continue});}}}var Ue=_(()=>{F();});exports.EvalKitInterceptor=void 0;var Jt=_(()=>{exports.EvalKitInterceptor=class{constructor(t){this.client=t;}intercept(t,n){let r=t.switchToHttp?.();if(!r)return n.handle();let o=r.getRequest(),s=`${String(o.method??"GET")} ${String(o.route?.path??o.path??o.url??"/")}`,{ctx:i,end:c}=this.client.startHttpTrace(s,{method:String(o.method??"GET"),url:String(o.originalUrl??o.url??"/"),headers:o.headers,requestBody:o.body}),a=api.context.with(i,()=>n.handle());return {subscribe(l){return a.subscribe({next:u=>l.next?.(u),error:u=>{c("ERROR"),l.error?.(u);},complete:()=>{let u=r.getResponse().statusCode??200;c(u>=400?"ERROR":"OK",{statusCode:u}),l.complete?.();}})},pipe(...l){return a.pipe(...l)}}}};});function zt(e){return oo.some(t=>t.test(e))}function so(e,t,n){let r="",o="GET";if(typeof e=="string")r=e,o=(t?.method??"GET").toUpperCase();else if(e instanceof URL)r=e.href,o=(t?.method??"GET").toUpperCase();else {let i=e.hostname??e.host??"localhost",c=e.port?`:${e.port}`:"",a=e.path??"/";r=`${n}://${i}${c}${a}`,o=(e.method??t?.method??"GET").toUpperCase();}let s=r;try{s=new URL(r.startsWith("http")?r:`${n}://localhost${r}`).pathname;}catch{}return {url:r,method:o,pathname:s}}function Fe(e){let t,n;try{let s=typeof T<"u"?T:module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)));t=s("http"),n=s("https");}catch{return}let r=[{mod:t,scheme:"http"},{mod:n,scheme:"https"}];for(let{mod:s,scheme:i}of r){let a=function(l,u,p){let m=typeof u=="function"?void 0:u,{url:d,method:g,pathname:f}=so(l,m,i);if(zt(d)||!api.trace.getActiveSpan()?.isRecording())return c.call(s,l,u,p);let y={...typeof l=="object"&&!(l instanceof URL)?l.headers??{}:{},...m?.headers??{}},v=y["x-evalkit-span-id"];if(v){typeof l=="object"&&!(l instanceof URL)&&l.headers&&delete l.headers["x-evalkit-span-id"],m?.headers&&delete m.headers["x-evalkit-span-id"];let S=D.get(String(v));if(S){let H=w({...y});delete H["x-evalkit-span-id"],Object.keys(H).length&&S.setAttributes({"http.request.headers":JSON.stringify(H)});}return c.call(s,l,u,p)}let k=w(y),R=e.tracer.startSpan(`${g} ${f}`,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"http_call","http.method":g,"http.url":d,...Object.keys(k).length?{"http.request.headers":JSON.stringify(k)}:{}}},api.context.active()),O=c.call(s,l,u,p),x=R.spanContext();return O.setHeader("traceparent",`00-${x.traceId}-${x.spanId}-01`),O.on("response",S=>{let H=S.statusCode??0;R.setAttributes({"http.status_code":H,...S.headers?{"http.response.headers":JSON.stringify(w(S.headers))}:{}}),R.setStatus({code:H>=400?api.SpanStatusCode.ERROR:api.SpanStatusCode.OK}),R.end();}),O.on("error",S=>{R.setAttributes({"http.status_code":0,"error.message":S.message}),R.setStatus({code:api.SpanStatusCode.ERROR,message:S.message}),R.end();}),O};let c=s.request;c.__evalkit||(a.__evalkit=true,Object.defineProperty(s,"request",{value:a,writable:true,configurable:true}));}}function De(e){let t;try{t=(typeof T<"u"?T:module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href))))("http");}catch{return}if(t.Server.prototype.emit.__evalkit_server)return;let n=t.Server.prototype.emit;function r(o,...s){if(o!=="request")return n.call(this,o,...s);let i=s[0],c=s[1],a=i.url??"/";if(zt(a))return n.call(this,o,...s);if(api.trace.getActiveSpan()?.isRecording())return n.call(this,o,...s);let l=(i.method??"GET").toUpperCase(),u=a;try{u=new URL(a,"http://localhost").pathname;}catch{}let p=i.headers.traceparent,m=p?ao(Array.isArray(p)?p[0]:p):api.context.active(),d=e.tracer.startSpan(`${l} ${u}`,{kind:api.SpanKind.SERVER,attributes:{"evalkit.span_type":"http_call","http.method":l,"http.url":a,"http.request.headers":JSON.stringify(w(i.headers))}},m),g=api.trace.setSpan(m,d),f=d.spanContext();c.setHeader("x-trace-id",f.traceId),c.setHeader("traceparent",`00-${f.traceId}-${f.spanId}-01`);let h=8192,y=[],v=0,k=x=>{try{if(x&&typeof x!="function"&&v<h){let S=Buffer.isBuffer(x)?x:typeof x=="string"?Buffer.from(x):null;S&&S.length&&(y.push(S),v+=S.length);}}catch{}},R=c.write.bind(c),O=c.end.bind(c);return c.write=function(x,...S){return k(x),R(x,...S)},c.end=function(x,...S){return k(x),O(x,...S)},c.on("finish",()=>{d.setAttribute("http.status_code",c.statusCode);try{let x=c.getHeaders();x&&Object.keys(x).length&&d.setAttribute("http.response.headers",JSON.stringify(w(x)));}catch{}if(y.length)try{let x=Buffer.concat(y).subarray(0,h).toString("utf-8");x&&d.setAttribute("http.response.body",x);}catch{}d.setStatus({code:c.statusCode>=400?api.SpanStatusCode.ERROR:api.SpanStatusCode.OK}),d.end();}),c.on("error",x=>{d.setAttribute("error.message",x.message),d.setStatus({code:api.SpanStatusCode.ERROR,message:x.message}),d.end();}),api.context.with(g,()=>n.call(this,o,...s))}r.__evalkit_server=true,t.Server.prototype.emit=r;}function ao(e){let t=e.split("-");if(t.length<4)return api.context.active();let[,n,r,o]=t;if(!n||!r)return api.context.active();try{let s={traceId:n,spanId:r,isRemote:!0,traceFlags:parseInt(o??"01",16)};return api.trace.setSpanContext(api.context.active(),s)}catch{return api.context.active()}}function Je(){if(typeof globalThis.fetch!="function"||globalThis.fetch.__evalkit)return;let e=globalThis.fetch.bind(globalThis);globalThis.fetch=async function(n,r){let o=typeof n=="string"?n:n instanceof URL?n.href:n.url;if(zt(o))return e(n,r);let s=api.trace.getActiveSpan();if(!s?.isRecording())return e(n,r);let i=(r?.method??"GET").toUpperCase(),c=o;try{c=new URL(o).pathname;}catch{}let a={};r?.headers&&new Headers(r.headers).forEach((f,h)=>{a[h]=f;});let l=w(a),u=s.spanContext(),p=`00-${u.traceId}-${u.spanId}-01`,m=new Headers(r?.headers);m.set("traceparent",p);let d={...r,headers:m};Object.keys(l).length&&s.addEvent("http.fetch.request",{"http.method":i,"http.url":o,"http.request.headers":JSON.stringify(l)});try{let g=await e(n,d),f={};return g.headers.forEach((h,y)=>{f[y]=h;}),s.addEvent("http.fetch.response",{"http.url":o,"http.status_code":g.status,"http.response.headers":JSON.stringify(w(f))}),g}catch(g){throw s.addEvent("http.fetch.error",{"http.url":o,"error.message":g?.message??String(g),"error.stack":g?.stack??""}),g}},globalThis.fetch.__evalkit=true;}var oo,ze=_(()=>{It();Kt();oo=[/\/v1\/ingest/,/\/health(z)?$/,/169\.254\./,/metadata\.google/,/storage\.googleapis/];});function Xe(e){if(console.__evalkit)return;let t=console.log.bind(console),n=console.warn.bind(console),r=console.error.bind(console),o=i=>i.map(c=>{if(typeof c=="string")return c;if(c instanceof Error)return `${c.message}
15
- ${c.stack??""}`;try{return JSON.stringify(c)}catch{return String(c)}}).join(" ").slice(0,2e3),s=(i,c)=>{let a=api.trace.getActiveSpan();if(a?.isRecording())a.addEvent(`log.${i}`,{"log.level":i,"log.message":c});else {let l=e.tracer.startSpan(`log.${i}`,{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"log","log.level":i,"log.message":c}},api.context.active());l.setStatus({code:i==="ERROR"?api.SpanStatusCode.ERROR:api.SpanStatusCode.OK}),l.end();}};console.log=(...i)=>{t(...i),s("INFO",o(i));},console.warn=(...i)=>{n(...i),s("WARN",o(i));},console.error=(...i)=>{r(...i),s("ERROR",o(i));},console.__evalkit=true;}var Qe=_(()=>{});function tn(){typeof process>"u"||(process.on("unhandledRejection",e=>{let t=api.trace.getActiveSpan();if(!t?.isRecording())return;let n=e instanceof Error?e.message:String(e),r=e instanceof Error?e.stack??"":"";t.addEvent("error.unhandled_rejection",{"error.message":n,"error.stack":r,"log.level":"ERROR","log.message":`UnhandledRejection: ${n}`}),t.setStatus({code:api.SpanStatusCode.ERROR,message:n});}),process.on("uncaughtException",e=>{let t=api.trace.getActiveSpan();t?.isRecording()&&(t.addEvent("error.uncaught_exception",{"error.message":e.message,"error.stack":e.stack??"","log.level":"ERROR","log.message":`UncaughtException: ${e.message}`}),t.setStatus({code:api.SpanStatusCode.ERROR,message:e.message}));}));}var en=_(()=>{});function po(e){let t=Bt("mongoose");t&&ht(e,t);}function uo(e){let t=Bt("axios");t&&Z(e,t.default??t);}async function mo(e){try{let n=E()("pg"),r=n.Client??n.default?.Client;if(r){tt(e,r);return}}catch{}try{let t=await b("pg"),n=t.Client??t.default?.Client;n&&tt(e,n);}catch{}}async function go(e){try{let t=E(),n=t("mysql2"),r=n.Connection??n.default?.Connection??t("mysql2/lib/connection");if(r){et(e,r);return}}catch{}try{let t=await b("mysql2"),n=t.Connection??t.default?.Connection;n&&et(e,n);}catch{}}async function fo(e){try{let n=E()("ioredis"),r=n.default??n.Redis??n;if(r?.prototype){Y(e,r);return}}catch{}try{let t=await b("ioredis"),n=t.default??t.Redis??t;n?.prototype&&Y(e,n);}catch{}}async function yo(e){try{let n=E()("openai"),o=(n.default??n.OpenAI??n)?.Chat?.Completions?.prototype;if(o){N(e,o);return}}catch{}try{let t=await b("openai"),r=(t.default??t.OpenAI??t)?.Chat?.Completions?.prototype;r&&N(e,r);}catch{}}async function ho(e){try{let n=E()("@anthropic-ai/sdk"),o=(n.default??n.Anthropic??n)?.Messages?.prototype;if(o){j(e,o);return}}catch{}try{let t=await b("@anthropic-ai/sdk"),r=(t.default??t.Anthropic??t)?.Messages?.prototype;r&&j(e,r);}catch{}}async function vo(e){try{let n=E()("@aws-sdk/client-bedrock-runtime"),o=(n.BedrockRuntimeClient??n.default?.BedrockRuntimeClient)?.prototype;if(o){nt(e,o);return}}catch{}try{let t=await b("@aws-sdk/client-bedrock-runtime"),r=(t.BedrockRuntimeClient??t.default?.BedrockRuntimeClient)?.prototype;r&&nt(e,r);}catch{}}async function _o(e){try{let n=E()("@anthropic-ai/sdk"),o=(n.AnthropicVertex??n.default?.AnthropicVertex)?.Messages?.prototype;if(o){ct(e,o);return}}catch{}try{let t=await b("@anthropic-ai/sdk"),r=(t.AnthropicVertex??t.default?.AnthropicVertex)?.Messages?.prototype;r&&ct(e,r);}catch{}}async function xo(e){try{let n=E()("@google-cloud/vertexai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){lt(e,o);return}}catch{}try{let t=await b("@google-cloud/vertexai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&lt(e,r);}catch{}}async function Co(e){try{let n=E()("cohere-ai"),o=(n.CohereClient??n.default?.CohereClient??n.default)?.prototype;if(o){rt(e,o);return}}catch{}try{let t=await b("cohere-ai"),r=(t.CohereClient??t.default?.CohereClient??t.default)?.prototype;r&&rt(e,r);}catch{}}async function ko(e){try{let n=E()("@google/generative-ai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){ot(e,o);return}}catch{}try{let t=await b("@google/generative-ai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&ot(e,r);}catch{}}async function Ro(e){try{let n=E()("@google/genai"),r=n.Models??n.default?.Models;if(r?.prototype){it(e,r.prototype);return}}catch{}try{let t=await b("@google/genai"),n=t.Models??t.default?.Models;n?.prototype&&it(e,n.prototype);}catch{}}async function So(e){try{let n=E()("groq-sdk"),o=(n.default??n.Groq??n)?.Chat?.Completions?.prototype;if(o){N(e,o,void 0,"groq");return}}catch{}try{let t=await b("groq-sdk"),r=(t.default??t.Groq??t)?.Chat?.Completions?.prototype;r&&N(e,r,void 0,"groq");}catch{}}async function bo(e){try{let{patchLangChain:t}=await Promise.resolve().then(()=>(Ft(),we));await t(e);}catch{}}function nn(e){try{De(e);}catch{}try{Fe(e);}catch{}Je(),Xe(e),tn(),po(e),uo(e),Promise.all([yo(e),ho(e),vo(e),_o(e),xo(e),Co(e),ko(e),Ro(e),So(e),bo(e),mo(e),go(e),fo(e)]).catch(()=>{});}var rn=_(()=>{Vt();wt();yt();Nt();Dt();jt();$t();Ut();Tt();Mt();qt();At();Pt();ze();Qe();en();});var Xt={};Wt(Xt,{EvalKitClient:()=>exports.EvalKitClient,EvalKitInterceptor:()=>exports.EvalKitInterceptor,TraceMethod:()=>In,Traced:()=>Kn,createNestjsInterceptor:()=>bn,currentTraceId:()=>Mn,default:()=>exports.default,evaluate:()=>L,expressMiddleware:()=>xn,fastifyPlugin:()=>Cn,flush:()=>wn,generateScenarios:()=>qn,hapiPlugin:()=>Sn,honoMiddleware:()=>Rn,init:()=>on,koaMiddleware:()=>kn,langchainHandler:()=>gn,patchAnthropicClient:()=>an,patchAnthropicVertexClient:()=>ln,patchAxiosClient:()=>hn,patchBedrockClient:()=>cn,patchCohereClient:()=>un,patchGoogleAIModel:()=>dn,patchGoogleGenAIModels:()=>mn,patchMongooseClient:()=>fn,patchMysql2Client:()=>_n,patchOpenAIClient:()=>sn,patchPgClient:()=>vn,patchRedisClient:()=>yn,patchVertexGenerativeModel:()=>pn,simulateUser:()=>Nn,startHttpTrace:()=>On,startSpan:()=>Tn,startTrace:()=>En,traceFunction:()=>An,withTrace:()=>Pn});function C(){if(!G)throw new Error("[evalkit] call evalkit.init() before using the SDK");return G}function on(e){return G&&G.destroy(),G=new exports.EvalKitClient(e),nn(G),G}function sn(e,t){N(C(),e.chat.completions,t);}function an(e,t){j(C(),e.messages,t);}function cn(e){nt(C(),e);}function ln(e){ct(C(),e.messages);}function pn(e){lt(C(),e);}function un(e){rt(C(),e);}function dn(e){ot(C(),e);}function mn(e){it(C(),e);}function gn(){return xt(C())}function fn(e){ht(C(),e);}function yn(e){Y(C(),e);}function hn(e){Z(C(),e);}function vn(e){tt(C(),e);}function _n(e){et(C(),e);}function xn(e){return Pe(C(),e)}function Cn(e){return Ae(C(),e,Oo)}function kn(e){return Ne(C(),e)}function Rn(e){return Ge(C(),e)}function Sn(e){return Le(C(),e)}function bn(){return new exports.EvalKitInterceptor(C())}function En(e,t){return C().startTrace(e,t)}async function wn(){return C().flush()}function On(e,t,n){return C().startHttpTrace(e,t,n)}function Tn(e,t,n){return C().startSpan(e,t,n)}function An(e,t,n,r=true){return C().traceFunction(e,t,n,r)}function In(e){return (t,n,r)=>{let o=r.value,s=e??`${t.constructor?.name??"unknown"}.${String(n)}`,i;return r.value=function(...c){return i||(i=C().traceFunction(s,o)),i.apply(this,c)},r}}function Kn(e){return t=>{let n=t.prototype,r=e?.prefix??t.name;for(let o of Object.getOwnPropertyNames(n)){if(o==="constructor")continue;let s=Object.getOwnPropertyDescriptor(n,o);if(!s||typeof s.value!="function")continue;let i=s.value,c=`${r}.${o}`,a=null;Object.defineProperty(n,o,{...s,value:function(...l){return a||(a=C().traceFunction(c,i)),a.apply(this,l)}});}return t}}function Pn(e,t){return api.context.with(e,t)}function Mn(){let e=api.trace.getActiveSpan();return e?.isRecording()?e.spanContext().traceId:void 0}function qn(e){return Zt(C(),e)}function Nn(e){return te(C(),e)}function Oo(e){return A(e)}var G;exports.default=void 0;var Qt=_(()=>{dt();ee();bt();F();wt();yt();Tt();At();Pt();Mt();qt();Nt();jt();$t();Ut();Ft();Dt();Ie();Me();je();He();Ue();Jt();rn();bt();Jt();dt();G=null;exports.default={init:on,evaluate:L,generateScenarios:qn,simulateUser:Nn,patchOpenAIClient:sn,patchAnthropicClient:an,patchBedrockClient:cn,patchAnthropicVertexClient:ln,patchVertexGenerativeModel:pn,patchCohereClient:un,patchGoogleAIModel:dn,patchGoogleGenAIModels:mn,langchainHandler:gn,patchMongooseClient:fn,patchRedisClient:yn,patchAxiosClient:hn,patchPgClient:vn,patchMysql2Client:_n,expressMiddleware:xn,fastifyPlugin:Cn,koaMiddleware:kn,honoMiddleware:Rn,hapiPlugin:Sn,createNestjsInterceptor:bn,startTrace:En,startHttpTrace:On,startSpan:Tn,traceFunction:An,TraceMethod:In,Traced:Kn,withTrace:Pn,currentTraceId:Mn,flush:wn};});Qt();exports.TraceMethod=In;exports.Traced=Kn;exports.createNestjsInterceptor=bn;exports.currentTraceId=Mn;exports.evaluate=L;exports.expressMiddleware=xn;exports.fastifyPlugin=Cn;exports.flush=wn;exports.generateScenarios=qn;exports.hapiPlugin=Sn;exports.honoMiddleware=Rn;exports.init=on;exports.koaMiddleware=kn;exports.langchainHandler=gn;exports.patchAnthropicClient=an;exports.patchAnthropicVertexClient=ln;exports.patchAxiosClient=hn;exports.patchBedrockClient=cn;exports.patchCohereClient=un;exports.patchGoogleAIModel=dn;exports.patchGoogleGenAIModels=mn;exports.patchMongooseClient=fn;exports.patchMysql2Client=_n;exports.patchOpenAIClient=sn;exports.patchPgClient=vn;exports.patchRedisClient=yn;exports.patchVertexGenerativeModel=pn;exports.simulateUser=Nn;exports.startHttpTrace=On;exports.startSpan=Tn;exports.startTrace=En;exports.traceFunction=An;exports.withTrace=Pn;
12
+ `))}catch{return ""}}function Xr(e){let t=0,n=0;try{let r=e?.llmOutput?.tokenUsage??e?.llmOutput?.usage??{};if(t=r.promptTokens??r.prompt_tokens??r.input_tokens??0,n=r.completionTokens??r.completion_tokens??r.output_tokens??0,!t&&!n)for(let o of e?.generations??[])for(let s of o??[]){let i=s?.message?.usage_metadata;i&&(t=i.input_tokens??t,n=i.output_tokens??n);}}catch{}return {tin:t||0,tout:n||0}}function be(e){let t=new Map;function n(o,s,i,c,a){try{let l=s?t.get(s):void 0,m=l?l.ctx:api.context.active(),u=e.tracer.startSpan(c,{kind:i==="llm_call"?api.SpanKind.CLIENT:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":i,"evalkit.framework":"langchain",...a}},m);t.set(o,{span:u,ctx:api.trace.setSpan(m,u)});}catch{}}function r(o,s,i,c){try{let a=t.get(o);if(!a)return;t.delete(o),i&&a.span.setAttributes(i),a.span.setStatus({code:s==="OK"?api.SpanStatusCode.OK:api.SpanStatusCode.ERROR,message:c}),a.span.end();}catch{}}return {handleChainStart(o,s,i,c,a,l,m,u){let d=u??o?.id?.[o.id.length-1]??"chain";n(i,c,"function_call",String(d),a?.length?{"langchain.tags":a.join(",")}:{});},handleChainEnd(o,s){r(s,"OK");},handleChainError(o,s){r(s,"ERROR",void 0,String(o?.message??o));},handleLLMStart(o,s,i,c,a){let l=Ee(o,a);n(i,c,"llm_call","llm.generate",{"gen_ai.request.model":l,"gen_ai.system":Se(o)??"","evalkit.prompt":I((s??[]).join(`
13
+ `))});},handleChatModelStart(o,s,i,c,a){let l=Ee(o,a);n(i,c,"llm_call","chat.generate",{"gen_ai.request.model":l,"gen_ai.system":Se(o)??"","evalkit.prompt":zr(s)});},handleLLMEnd(o,s){let{tin:i,tout:c}=Xr(o),a=t.get(s);try{for(let l of o?.generations??[])for(let m of l??[])for(let u of m?.message?.tool_calls??[])u?.name&&a&&(a.span.addEvent("gen_ai.tool.call",{"gen_ai.tool.name":u.name,"gen_ai.tool.call.arguments":I(u.args??{})}),K(a.span.spanContext().traceId,u.name,u.args));}catch{}r(s,"OK",{"evalkit.completion":Wr(o),"gen_ai.usage.input_tokens":i,"gen_ai.usage.output_tokens":c,"gen_ai.usage.total_tokens":i+c});},handleLLMError(o,s){r(s,"ERROR",void 0,String(o?.message??o));},handleToolStart(o,s,i,c,a,l,m){let u=m??o?.id?.[o.id.length-1]??"tool",d=t.get(c??"");K(d?.span.spanContext().traceId,String(u)),n(i,c,"tool_call",String(u),{"tool.name":String(u),"tool.arguments":I(s)});},handleToolEnd(o,s){r(s,"OK",{"tool.result":I(o)});},handleToolError(o,s){r(s,"ERROR",void 0,String(o?.message??o));},handleRetrieverStart(o,s,i,c){let a=o?.id?.[o.id.length-1]??"retriever";n(i,c,"db_query",String(a),{"retriever.query":I(s)});},handleRetrieverEnd(o,s){let i=Array.isArray(o)?o.length:0;r(s,"OK",{"retriever.document_count":i});},handleRetrieverError(o,s){r(s,"ERROR",void 0,String(o?.message??o));}}}async function xt(e){try{let n=(await E("@langchain/core/callbacks/base")).BaseCallbackHandler.fromMethods(be(e));return n.name="evalkit",n.__evalkit=!0,n}catch{return null}}async function Qr(e){let t=await xt(e);if(!t)return null;try{let r=(await E("@langchain/core/callbacks/manager")).CallbackManager;if(r&&typeof r.configure=="function"&&!r.__evalkitPatched){let o=r.configure.bind(r);r.configure=(...s)=>{let i=o(...s);try{i&&![...i.handlers??[],...i.inheritableHandlers??[]].some(l=>l?.__evalkit)&&typeof i.addHandler=="function"&&i.addHandler(t,!0);}catch{}return i},r.__evalkitPatched=!0;}}catch{}return t}var Jr,Ft=x(()=>{P();Vt();Jr=4096;});function lt(e,t,n){j(e,t,n);}function pt(e,t,n){if(t.generateContent.__evalkit)return;let r=t.generateContent,o=t.model??"unknown";t.generateContent=async function(...s){let i=s[0],c=i?.systemInstruction?.parts?.map(h=>h.text??"").join("")??"",a=i?.contents?.map(h=>`${h.role??"user"}: ${h.parts.map(v=>v.text??"").join("")}`)??[],l=[c?`system: ${c}`:"",...a].filter(Boolean).join(`
14
+ `),m=api.context.active(),u=e.tracer.startSpan("generateContent",{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-vertex","gen_ai.request.model":o,"evalkit.prompt":l}},m),d=api.trace.setSpan(m,u),p;try{p=await api.context.with(d,()=>r.apply(this,s));}catch(h){let v=h instanceof Error?h:new Error(String(h));throw u.recordException(v),u.setStatus({code:api.SpanStatusCode.ERROR,message:v.message}),u.end(),h}let g=p?.response,f=g?.candidates?.[0],y=f?.content?.parts?.map(h=>h.text??"").join("")??"";return u.setAttributes({"gen_ai.response.model":o,"gen_ai.usage.input_tokens":g?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":g?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":g?.usageMetadata?.totalTokenCount??0,"gen_ai.response.finish_reasons":f?.finishReason?[f.finishReason]:[],"evalkit.completion":y}),u.setStatus({code:api.SpanStatusCode.OK}),u.end(),p},t.generateContent.__evalkit=true;}var Dt=x(()=>{yt();});function Ae(e,t={},n){function r(o,s,i){let c={...t,...s};o.addHook("onRequest",(a,l,m)=>{let u=a.routerPath??a.routeOptions?.url??a.url??"/",d=typeof c.name=="function"?c.name(a):c.name??`${String(a.method??"GET")} ${String(u)}`,p=a.headers?.traceparent,g=n?n(p):api.context.active(),{traceId:f,end:y,ctx:h}=api.context.with(g,()=>e.startHttpTrace(d,{method:String(a.method??"GET"),url:String(a.url??"/"),headers:a.headers,requestBody:void 0}));a._evalkitCtx=h,a._evalkitTraceId=f,a._evalkitEnd=y,a._evalkitEnded=false,api.context.with(h,m);}),o.addHook("preHandler",(a,l,m)=>{if(a._evalkitCtx&&a.body!==void 0){let u=api.trace.getActiveSpan();if(u?.isRecording())try{u.setAttribute("http.request.body",typeof a.body=="string"?a.body.slice(0,4096):JSON.stringify(a.body).slice(0,4096));}catch{}}api.context.with(a._evalkitCtx??api.context.active(),m);}),o.addHook("onResponse",(a,l,m)=>{if(typeof a._evalkitEnd=="function"&&!a._evalkitEnded){a._evalkitEnded=true;let u=l.statusCode??200;a._evalkitEnd(u>=400?"ERROR":"OK",{statusCode:u});}m();}),o.addHook("onError",(a,l,m,u)=>{typeof a._evalkitEnd=="function"&&!a._evalkitEnded&&(a._evalkitEnded=true,a._evalkitEnd("ERROR",{statusCode:l.statusCode??500})),u();}),i();}return r[Symbol.for("skip-override")]=true,r}var Ie=x(()=>{});function Pe(e,t){return (n,r,o)=>{let s=typeof t?.name=="function"?t.name(n):t?.name??`${String(n.method)} ${String(n.route?.path??n.path??n.url)}`,i=A(n.headers?.traceparent),{end:c,ctx:a,traceId:l}=api.context.with(i,()=>e.startHttpTrace(s,{method:String(n.method??"GET"),url:String(n.originalUrl??n.url??"/"),headers:n.headers,requestBody:n.body}));n._evalkitCtx=a,n._evalkitTraceId=l;let m=api.trace.getSpan(a)?.spanContext().spanId??"0000000000000000";r.setHeader?.("x-trace-id",l),r.setHeader?.("traceparent",`00-${l}-${m}-01`);let u=r.end;r.end=function(...d){let p=r.statusCode??200;return c(p>=400?"ERROR":"OK",{statusCode:p,headers:r.getHeaders?r.getHeaders():void 0}),u.apply(r,d)},api.context.with(a,()=>o());}}var Me=x(()=>{D();});function Ne(e,t){return async(n,r)=>{let o=typeof t?.name=="function"?t.name(n):t?.name??`${String(n.method??"GET")} ${String(n.path??"/")}`,s=A(n.request?.headers?.traceparent),{end:i,ctx:c}=api.context.with(s,()=>e.startHttpTrace(o,{method:String(n.method??"GET"),url:String(n.href??n.url??"/"),headers:n.request?.headers,requestBody:n.request?.body}));n._evalkitCtx=c;try{await api.context.with(c,r);let a=n.status??200;i(a>=400?"ERROR":"OK",{statusCode:a});}catch(a){throw i("ERROR",{statusCode:n.status??500}),a}}}var je=x(()=>{D();});function Ge(e,t){return async(n,r)=>{let o=n.req,s=o.url??"/",i=s;try{i=new URL(s).pathname;}catch{}let c=typeof t?.name=="function"?t.name(n):t?.name??`${String(o.method??"GET")} ${i}`,a=A(o.header("traceparent")),{end:l,ctx:m}=api.context.with(a,()=>e.startHttpTrace(c,{method:String(o.method??"GET"),url:s,headers:Object.fromEntries(o.raw?.headers??[])}));try{await api.context.with(m,r);let u=n.res?.status??200;l(u>=400?"ERROR":"OK",{statusCode:u});}catch(u){throw l("ERROR",{statusCode:500}),u}}}var He=x(()=>{D();});function Le(e,t){return {name:"@evalkit/hapi",register(n){let r=new WeakMap;n.ext("onRequest",(o,s)=>{let i=typeof t?.name=="function"?t.name(o):t?.name??`${String(o.method?.toUpperCase()??"GET")} ${String(o.path??"/")}`,c=A(o.headers?.traceparent),{end:a,ctx:l}=api.context.with(c,()=>e.startHttpTrace(i,{method:String(o.method?.toUpperCase()??"GET"),url:String(o.url?.href??o.path??"/"),headers:o.headers}));return r.set(o,{end:a,ctx:l}),s.continue}),n.ext("onPreResponse",(o,s)=>{let i=r.get(o);if(i){let c=o.response?.output?.statusCode??o.response?.statusCode??200;i.end(c>=400?"ERROR":"OK",{statusCode:c}),r.delete(o);}return s.continue});}}}var Ue=x(()=>{D();});exports.EvalKitInterceptor=void 0;var Jt=x(()=>{exports.EvalKitInterceptor=class{constructor(t){this.client=t;}intercept(t,n){let r=t.switchToHttp?.();if(!r)return n.handle();let o=r.getRequest(),s=`${String(o.method??"GET")} ${String(o.route?.path??o.path??o.url??"/")}`,{ctx:i,end:c}=this.client.startHttpTrace(s,{method:String(o.method??"GET"),url:String(o.originalUrl??o.url??"/"),headers:o.headers,requestBody:o.body}),a=api.context.with(i,()=>n.handle());return {subscribe(l){return a.subscribe({next:m=>l.next?.(m),error:m=>{c("ERROR"),l.error?.(m);},complete:()=>{let m=r.getResponse().statusCode??200;c(m>=400?"ERROR":"OK",{statusCode:m}),l.complete?.();}})},pipe(...l){return a.pipe(...l)}}}};});function zt(e){return oo.some(t=>t.test(e))}function so(e,t,n){let r="",o="GET";if(typeof e=="string")r=e,o=(t?.method??"GET").toUpperCase();else if(e instanceof URL)r=e.href,o=(t?.method??"GET").toUpperCase();else {let i=e.hostname??e.host??"localhost",c=e.port?`:${e.port}`:"",a=e.path??"/";r=`${n}://${i}${c}${a}`,o=(e.method??t?.method??"GET").toUpperCase();}let s=r;try{s=new URL(r.startsWith("http")?r:`${n}://localhost${r}`).pathname;}catch{}return {url:r,method:o,pathname:s}}function Fe(e){let t,n;try{let s=typeof T<"u"?T:module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)));t=s("http"),n=s("https");}catch{return}let r=[{mod:t,scheme:"http"},{mod:n,scheme:"https"}];for(let{mod:s,scheme:i}of r){let a=function(l,m,u){let d=typeof m=="function"?void 0:m,{url:p,method:g,pathname:f}=so(l,d,i);if(zt(p)||!api.trace.getActiveSpan()?.isRecording())return c.call(s,l,m,u);let h={...typeof l=="object"&&!(l instanceof URL)?l.headers??{}:{},...d?.headers??{}},v=h["x-evalkit-span-id"];if(v){typeof l=="object"&&!(l instanceof URL)&&l.headers&&delete l.headers["x-evalkit-span-id"],d?.headers&&delete d.headers["x-evalkit-span-id"];let R=J.get(String(v));if(R){let H=w({...h});delete H["x-evalkit-span-id"],Object.keys(H).length&&R.setAttributes({"http.request.headers":JSON.stringify(H)});}return c.call(s,l,m,u)}let k=w(h),S=e.tracer.startSpan(`${g} ${f}`,{kind:api.SpanKind.CLIENT,attributes:{"evalkit.span_type":"http_call","http.method":g,"http.url":p,...Object.keys(k).length?{"http.request.headers":JSON.stringify(k)}:{}}},api.context.active()),O=c.call(s,l,m,u),_=S.spanContext();return O.setHeader("traceparent",`00-${_.traceId}-${_.spanId}-01`),O.on("response",R=>{let H=R.statusCode??0;S.setAttributes({"http.status_code":H,...R.headers?{"http.response.headers":JSON.stringify(w(R.headers))}:{}}),S.setStatus({code:H>=400?api.SpanStatusCode.ERROR:api.SpanStatusCode.OK}),S.end();}),O.on("error",R=>{S.setAttributes({"http.status_code":0,"error.message":R.message}),S.recordException(R instanceof Error?R:new Error(String(R))),S.setStatus({code:api.SpanStatusCode.ERROR,message:R.message}),S.end();}),O};let c=s.request;c.__evalkit||(a.__evalkit=true,Object.defineProperty(s,"request",{value:a,writable:true,configurable:true}));}}function De(e){let t;try{t=(typeof T<"u"?T:module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href))))("http");}catch{return}if(t.Server.prototype.emit.__evalkit_server)return;let n=t.Server.prototype.emit;function r(o,...s){if(o!=="request")return n.call(this,o,...s);let i=s[0],c=s[1],a=i.url??"/";if(zt(a))return n.call(this,o,...s);if(api.trace.getActiveSpan()?.isRecording())return n.call(this,o,...s);let l=(i.method??"GET").toUpperCase(),m=a;try{m=new URL(a,"http://localhost").pathname;}catch{}let u=i.headers.traceparent,d=u?ao(Array.isArray(u)?u[0]:u):api.context.active(),p=e.tracer.startSpan(`${l} ${m}`,{kind:api.SpanKind.SERVER,attributes:{"evalkit.span_type":"http_call","http.method":l,"http.url":a,"http.request.headers":JSON.stringify(w(i.headers))}},d),g=api.trace.setSpan(d,p),f=p.spanContext();c.setHeader("x-trace-id",f.traceId),c.setHeader("traceparent",`00-${f.traceId}-${f.spanId}-01`);let y=8192,h=[],v=0,k=_=>{try{if(_&&typeof _!="function"&&v<y){let R=Buffer.isBuffer(_)?_:typeof _=="string"?Buffer.from(_):null;R&&R.length&&(h.push(R),v+=R.length);}}catch{}},S=c.write.bind(c),O=c.end.bind(c);return c.write=function(_,...R){return k(_),S(_,...R)},c.end=function(_,...R){return k(_),O(_,...R)},c.on("finish",()=>{p.setAttribute("http.status_code",c.statusCode);try{let _=c.getHeaders();_&&Object.keys(_).length&&p.setAttribute("http.response.headers",JSON.stringify(w(_)));}catch{}if(h.length)try{let _=Buffer.concat(h).subarray(0,y).toString("utf-8");_&&p.setAttribute("http.response.body",_);}catch{}p.setStatus({code:c.statusCode>=400?api.SpanStatusCode.ERROR:api.SpanStatusCode.OK}),p.end();}),c.on("error",_=>{p.setAttribute("error.message",_.message),p.recordException(_ instanceof Error?_:new Error(String(_))),p.setStatus({code:api.SpanStatusCode.ERROR,message:_.message}),p.end();}),api.context.with(g,()=>n.call(this,o,...s))}r.__evalkit_server=true,t.Server.prototype.emit=r;}function ao(e){let t=e.split("-");if(t.length<4)return api.context.active();let[,n,r,o]=t;if(!n||!r)return api.context.active();try{let s={traceId:n,spanId:r,isRemote:!0,traceFlags:parseInt(o??"01",16)};return api.trace.setSpanContext(api.context.active(),s)}catch{return api.context.active()}}function Je(){if(typeof globalThis.fetch!="function"||globalThis.fetch.__evalkit)return;let e=globalThis.fetch.bind(globalThis);globalThis.fetch=async function(n,r){let o=typeof n=="string"?n:n instanceof URL?n.href:n.url;if(zt(o))return e(n,r);let s=api.trace.getActiveSpan();if(!s?.isRecording())return e(n,r);let i=(r?.method??"GET").toUpperCase(),c=o;try{c=new URL(o).pathname;}catch{}let a={};r?.headers&&new Headers(r.headers).forEach((f,y)=>{a[y]=f;});let l=w(a),m=s.spanContext(),u=`00-${m.traceId}-${m.spanId}-01`,d=new Headers(r?.headers);d.set("traceparent",u);let p={...r,headers:d};Object.keys(l).length&&s.addEvent("http.fetch.request",{"http.method":i,"http.url":o,"http.request.headers":JSON.stringify(l)});try{let g=await e(n,p),f={};return g.headers.forEach((y,h)=>{f[h]=y;}),s.addEvent("http.fetch.response",{"http.url":o,"http.status_code":g.status,"http.response.headers":JSON.stringify(w(f))}),g}catch(g){throw s.addEvent("http.fetch.error",{"http.url":o,"error.message":g?.message??String(g),"error.stack":g?.stack??""}),g}},globalThis.fetch.__evalkit=true;}var oo,ze=x(()=>{It();Kt();oo=[/\/v1\/ingest/,/\/health(z)?$/,/169\.254\./,/metadata\.google/,/storage\.googleapis/];});function Xe(e){if(console.__evalkit)return;let t=console.log.bind(console),n=console.warn.bind(console),r=console.error.bind(console),o=i=>i.map(c=>{if(typeof c=="string")return c;if(c instanceof Error)return `${c.message}
15
+ ${c.stack??""}`;try{return JSON.stringify(c)}catch{return String(c)}}).join(" ").slice(0,2e3),s=(i,c)=>{let a=api.trace.getActiveSpan();if(a?.isRecording())a.addEvent(`log.${i}`,{"log.level":i,"log.message":c});else {let l=e.tracer.startSpan(`log.${i}`,{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"log","log.level":i,"log.message":c}},api.context.active());l.setStatus({code:i==="ERROR"?api.SpanStatusCode.ERROR:api.SpanStatusCode.OK}),l.end();}};console.log=(...i)=>{t(...i),s("INFO",o(i));},console.warn=(...i)=>{n(...i),s("WARN",o(i));},console.error=(...i)=>{r(...i),s("ERROR",o(i));},console.__evalkit=true;}var Qe=x(()=>{});function tn(){typeof process>"u"||(process.on("unhandledRejection",e=>{let t=api.trace.getActiveSpan();if(!t?.isRecording())return;let n=e instanceof Error?e:new Error(String(e));t.addEvent("error.unhandled_rejection",{"error.message":n.message,"error.stack":n.stack??"","log.level":"ERROR","log.message":`UnhandledRejection: ${n.message}`}),t.recordException(n),t.setStatus({code:api.SpanStatusCode.ERROR,message:n.message});}),process.on("uncaughtException",e=>{let t=api.trace.getActiveSpan();t?.isRecording()&&(t.addEvent("error.uncaught_exception",{"error.message":e.message,"error.stack":e.stack??"","log.level":"ERROR","log.message":`UncaughtException: ${e.message}`}),t.recordException(e),t.setStatus({code:api.SpanStatusCode.ERROR,message:e.message}));}));}var en=x(()=>{});function po(e){let t=Bt("mongoose");t&&ht(e,t);}function uo(e){let t=Bt("axios");t&&tt(e,t.default??t);}async function mo(e){try{let n=b()("pg"),r=n.Client??n.default?.Client;if(r){et(e,r);return}}catch{}try{let t=await E("pg"),n=t.Client??t.default?.Client;n&&et(e,n);}catch{}}async function go(e){try{let t=b(),n=t("mysql2"),r=n.Connection??n.default?.Connection??t("mysql2/lib/connection");if(r){nt(e,r);return}}catch{}try{let t=await E("mysql2"),n=t.Connection??t.default?.Connection;n&&nt(e,n);}catch{}}async function fo(e){try{let n=b()("ioredis"),r=n.default??n.Redis??n;if(r?.prototype){Z(e,r);return}}catch{}try{let t=await E("ioredis"),n=t.default??t.Redis??t;n?.prototype&&Z(e,n);}catch{}}async function yo(e){try{let n=b()("openai"),o=(n.default??n.OpenAI??n)?.Chat?.Completions?.prototype;if(o){N(e,o);return}}catch{}try{let t=await E("openai"),r=(t.default??t.OpenAI??t)?.Chat?.Completions?.prototype;r&&N(e,r);}catch{}}async function ho(e){try{let n=b()("@anthropic-ai/sdk"),o=(n.default??n.Anthropic??n)?.Messages?.prototype;if(o){j(e,o);return}}catch{}try{let t=await E("@anthropic-ai/sdk"),r=(t.default??t.Anthropic??t)?.Messages?.prototype;r&&j(e,r);}catch{}}async function vo(e){try{let n=b()("@aws-sdk/client-bedrock-runtime"),o=(n.BedrockRuntimeClient??n.default?.BedrockRuntimeClient)?.prototype;if(o){rt(e,o);return}}catch{}try{let t=await E("@aws-sdk/client-bedrock-runtime"),r=(t.BedrockRuntimeClient??t.default?.BedrockRuntimeClient)?.prototype;r&&rt(e,r);}catch{}}async function _o(e){try{let n=b()("@anthropic-ai/sdk"),o=(n.AnthropicVertex??n.default?.AnthropicVertex)?.Messages?.prototype;if(o){lt(e,o);return}}catch{}try{let t=await E("@anthropic-ai/sdk"),r=(t.AnthropicVertex??t.default?.AnthropicVertex)?.Messages?.prototype;r&&lt(e,r);}catch{}}async function xo(e){try{let n=b()("@google-cloud/vertexai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){pt(e,o);return}}catch{}try{let t=await E("@google-cloud/vertexai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&pt(e,r);}catch{}}async function Co(e){try{let n=b()("cohere-ai"),o=(n.CohereClient??n.default?.CohereClient??n.default)?.prototype;if(o){ot(e,o);return}}catch{}try{let t=await E("cohere-ai"),r=(t.CohereClient??t.default?.CohereClient??t.default)?.prototype;r&&ot(e,r);}catch{}}async function ko(e){try{let n=b()("@google/generative-ai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){st(e,o);return}}catch{}try{let t=await E("@google/generative-ai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&st(e,r);}catch{}}async function Ro(e){try{let n=b()("@google/genai"),r=n.Models??n.default?.Models;if(r?.prototype){ct(e,r.prototype);return}}catch{}try{let t=await E("@google/genai"),n=t.Models??t.default?.Models;n?.prototype&&ct(e,n.prototype);}catch{}}async function So(e){try{let n=b()("groq-sdk"),o=(n.default??n.Groq??n)?.Chat?.Completions?.prototype;if(o){N(e,o,void 0,"groq");return}}catch{}try{let t=await E("groq-sdk"),r=(t.default??t.Groq??t)?.Chat?.Completions?.prototype;r&&N(e,r,void 0,"groq");}catch{}}async function Eo(e){try{let{patchLangChain:t}=await Promise.resolve().then(()=>(Ft(),we));await t(e);}catch{}}function nn(e){try{De(e);}catch{}try{Fe(e);}catch{}Je(),Xe(e),tn(),po(e),uo(e),Promise.all([yo(e),ho(e),vo(e),_o(e),xo(e),Co(e),ko(e),Ro(e),So(e),Eo(e),mo(e),go(e),fo(e)]).catch(()=>{});}var rn=x(()=>{Vt();wt();yt();Nt();Dt();jt();$t();Ut();Tt();Mt();qt();At();Pt();ze();Qe();en();});var Xt={};Wt(Xt,{EvalKitClient:()=>exports.EvalKitClient,EvalKitInterceptor:()=>exports.EvalKitInterceptor,TraceMethod:()=>In,Traced:()=>Kn,createNestjsInterceptor:()=>En,currentTraceId:()=>Mn,default:()=>exports.default,evaluate:()=>L,expressMiddleware:()=>xn,fastifyPlugin:()=>Cn,flush:()=>wn,generateScenarios:()=>qn,hapiPlugin:()=>Sn,honoMiddleware:()=>Rn,init:()=>on,koaMiddleware:()=>kn,langchainHandler:()=>gn,patchAnthropicClient:()=>an,patchAnthropicVertexClient:()=>ln,patchAxiosClient:()=>hn,patchBedrockClient:()=>cn,patchCohereClient:()=>un,patchGoogleAIModel:()=>dn,patchGoogleGenAIModels:()=>mn,patchMongooseClient:()=>fn,patchMysql2Client:()=>_n,patchOpenAIClient:()=>sn,patchPgClient:()=>vn,patchRedisClient:()=>yn,patchVertexGenerativeModel:()=>pn,simulateUser:()=>Nn,startHttpTrace:()=>On,startSpan:()=>Tn,startTrace:()=>bn,traceFunction:()=>An,withTrace:()=>Pn});function C(){if(!G)throw new Error("[evalkit] call evalkit.init() before using the SDK");return G}function on(e){return G&&G.destroy(),G=new exports.EvalKitClient(e),nn(G),G}function sn(e,t){N(C(),e.chat.completions,t);}function an(e,t){j(C(),e.messages,t);}function cn(e){rt(C(),e);}function ln(e){lt(C(),e.messages);}function pn(e){pt(C(),e);}function un(e){ot(C(),e);}function dn(e){st(C(),e);}function mn(e){ct(C(),e);}function gn(){return xt(C())}function fn(e){ht(C(),e);}function yn(e){Z(C(),e);}function hn(e){tt(C(),e);}function vn(e){et(C(),e);}function _n(e){nt(C(),e);}function xn(e){return Pe(C(),e)}function Cn(e){return Ae(C(),e,Oo)}function kn(e){return Ne(C(),e)}function Rn(e){return Ge(C(),e)}function Sn(e){return Le(C(),e)}function En(){return new exports.EvalKitInterceptor(C())}function bn(e,t){return C().startTrace(e,t)}async function wn(){return C().flush()}function On(e,t,n){return C().startHttpTrace(e,t,n)}function Tn(e,t,n){return C().startSpan(e,t,n)}function An(e,t,n,r=true){return C().traceFunction(e,t,n,r)}function In(e){return (t,n,r)=>{let o=r.value,s=e??`${t.constructor?.name??"unknown"}.${String(n)}`,i;return r.value=function(...c){return i||(i=C().traceFunction(s,o)),i.apply(this,c)},r}}function Kn(e){return t=>{let n=t.prototype,r=e?.prefix??t.name;for(let o of Object.getOwnPropertyNames(n)){if(o==="constructor")continue;let s=Object.getOwnPropertyDescriptor(n,o);if(!s||typeof s.value!="function")continue;let i=s.value,c=`${r}.${o}`,a=null;Object.defineProperty(n,o,{...s,value:function(...l){return a||(a=C().traceFunction(c,i)),a.apply(this,l)}});}return t}}function Pn(e,t){return api.context.with(e,t)}function Mn(){let e=api.trace.getActiveSpan();return e?.isRecording()?e.spanContext().traceId:void 0}function qn(e){return Zt(C(),e)}function Nn(e){return te(C(),e)}function Oo(e){return A(e)}var G;exports.default=void 0;var Qt=x(()=>{mt();ee();Et();D();wt();yt();Tt();At();Pt();Mt();qt();Nt();jt();$t();Ut();Ft();Dt();Ie();Me();je();He();Ue();Jt();rn();Et();Jt();mt();G=null;exports.default={init:on,evaluate:L,generateScenarios:qn,simulateUser:Nn,patchOpenAIClient:sn,patchAnthropicClient:an,patchBedrockClient:cn,patchAnthropicVertexClient:ln,patchVertexGenerativeModel:pn,patchCohereClient:un,patchGoogleAIModel:dn,patchGoogleGenAIModels:mn,langchainHandler:gn,patchMongooseClient:fn,patchRedisClient:yn,patchAxiosClient:hn,patchPgClient:vn,patchMysql2Client:_n,expressMiddleware:xn,fastifyPlugin:Cn,koaMiddleware:kn,honoMiddleware:Rn,hapiPlugin:Sn,createNestjsInterceptor:En,startTrace:bn,startHttpTrace:On,startSpan:Tn,traceFunction:An,TraceMethod:In,Traced:Kn,withTrace:Pn,currentTraceId:Mn,flush:wn};});Qt();exports.TraceMethod=In;exports.Traced=Kn;exports.createNestjsInterceptor=En;exports.currentTraceId=Mn;exports.evaluate=L;exports.expressMiddleware=xn;exports.fastifyPlugin=Cn;exports.flush=wn;exports.generateScenarios=qn;exports.hapiPlugin=Sn;exports.honoMiddleware=Rn;exports.init=on;exports.koaMiddleware=kn;exports.langchainHandler=gn;exports.patchAnthropicClient=an;exports.patchAnthropicVertexClient=ln;exports.patchAxiosClient=hn;exports.patchBedrockClient=cn;exports.patchCohereClient=un;exports.patchGoogleAIModel=dn;exports.patchGoogleGenAIModels=mn;exports.patchMongooseClient=fn;exports.patchMysql2Client=_n;exports.patchOpenAIClient=sn;exports.patchPgClient=vn;exports.patchRedisClient=yn;exports.patchVertexGenerativeModel=pn;exports.simulateUser=Nn;exports.startHttpTrace=On;exports.startSpan=Tn;exports.startTrace=bn;exports.traceFunction=An;exports.withTrace=Pn;
package/dist/index.mjs CHANGED
@@ -1,12 +1,12 @@
1
- import {b,h,l,c,n,p,d,g,e,f,a,j,k,i}from'./chunk-OVOA54JW.mjs';import {context,trace,SpanKind,SpanStatusCode,ROOT_CONTEXT}from'@opentelemetry/api';import {randomBytes}from'crypto';import {NodeTracerProvider}from'@opentelemetry/sdk-trace-node';import {BatchSpanProcessor}from'@opentelemetry/sdk-trace-base';import {Resource}from'@opentelemetry/resources';import {ATTR_SERVICE_NAME}from'@opentelemetry/semantic-conventions';import {createRequire}from'module';function An(e,t){if(t.length===0)return {score:1,lcsLength:0};let n=e.length,o=t.length,r=Array.from({length:n+1},()=>new Array(o+1).fill(0));for(let i=1;i<=n;i++)for(let c=1;c<=o;c++)e[i-1]===t[c-1]?r[i][c]=r[i-1][c-1]+1:r[i][c]=Math.max(r[i-1][c],r[i][c-1]);let s=r[n][o];return {score:s/t.length,lcsLength:s}}function In(e,t){if(e.length===0&&t.length===0)return {score:1,precision:1,recall:1};if(e.length===0||t.length===0)return {score:0,precision:0,recall:0};let n=new Set(e),o=new Set(t),r=new Set([...n].filter(a=>o.has(a))),s=r.size/n.size,i=r.size/o.size;return {score:s+i===0?0:2*s*i/(s+i),precision:s,recall:i}}function Kn(e,t){if(t.length===0)return {score:1,called:0,total:0};let n=new Set(e),o=t.filter(r=>n.has(r)).length;return {score:o/t.length,called:o,total:t.length}}function Pn(e,t){if(t.length===0)return {score:1,matched:[],missing:[]};let n=e.toLowerCase(),o=t.filter(s=>n.includes(s.toLowerCase())),r=t.filter(s=>!n.includes(s.toLowerCase()));return {score:o.length/t.length,matched:o,missing:r}}function Mn(e,t){let n={},o=[];if(t.requiredTerms!==void 0&&t.requiredTerms.length>0){let s=e.toLowerCase(),i=t.requiredTerms.every(c=>s.includes(c.toLowerCase()));n.requiredTerms=i,o.push(i);}if(t.hasCitations!==void 0){let s=/\[[\d]+\]|\(\w[^)]{1,80}\d{4}\)|\bhttps?:\/\//.test(e);n.hasCitations=t.hasCitations?s:!s,o.push(n.hasCitations);}if(t.slideCount!==void 0){let s=/slide\s+\d+|section\s+\d+|##\s+\d+\./gi,c=(e.match(s)??[]).length===t.slideCount;n.slideCount=c,o.push(c);}return o.length===0?{score:1,checks:n}:{score:o.filter(Boolean).length/o.length,checks:n}}function qn(e,t){if(e.length===0)return {score:1,relevant:0,total:0};let n=new Set(t),o=e.filter(r=>n.has(r)).length;return {score:o/e.length,relevant:o,total:e.length}}function Nn(e,t){if(t.length===0)return {score:1,covered:0,total:0};let n=new Set(e),o=t.filter(r=>n.has(r)).length;return {score:o/t.length,covered:o,total:t.length}}function $(e){let t=new Set(e.metrics??["tool_trajectory","tool_f1","tool_correctness","response_match","constraint_compliance","contextual_precision","contextual_recall"]),n=(e.toolCalls??[]).map(a=>a.name),o=e.expectedTools??[],r={},s={};if(t.has("tool_trajectory")&&o.length>0){let a=An(n,o);r.tool_trajectory=a.score,s.tool_trajectory={lcsLength:a.lcsLength,expectedCount:o.length};}if(t.has("tool_f1")&&(n.length>0||o.length>0)){let a=In(n,o);r.tool_f1=a.score,s.tool_f1={precision:a.precision,recall:a.recall};}if(t.has("tool_correctness")&&o.length>0){let a=Kn(n,o);r.tool_correctness=a.score,s.tool_correctness={called:a.called,total:a.total};}let i=e.constraints?.requiredTerms??[];if(t.has("response_match")&&i.length>0){let a=Pn(e.output,i);r.response_match=a.score,s.response_match={matched:a.matched,missing:a.missing};}if(t.has("constraint_compliance")&&e.constraints){let a=Mn(e.output,e.constraints);r.constraint_compliance=a.score,s.constraint_compliance={checks:a.checks};}if(t.has("contextual_precision")&&e.retrievedContext!==void 0&&e.expectedContext!==void 0){let a=qn(e.retrievedContext,e.expectedContext);r.contextual_precision=a.score,s.contextual_precision={relevant:a.relevant,total:a.total};}if(t.has("contextual_recall")&&e.retrievedContext!==void 0&&e.expectedContext!==void 0){let a=Nn(e.retrievedContext,e.expectedContext);r.contextual_recall=a.score,s.contextual_recall={covered:a.covered,total:a.total};}let c={scores:r,details:s};try{let a=(Dt(),d(Ft)),p={"evalkit.span_type":"eval_result","evalkit.eval_type":"offline"};for(let[m,d]of Object.entries(r))p[`evalkit.metric.${m}`]=d;let{end:u}=a.startSpan("evaluation",p);u("OK");}catch{}return c}var lt=b(()=>{});function ut(e){return randomBytes(e).toString("hex")}function Jt(e){return typeof e=="function"?{name:e.name||"tool"}:typeof e=="string"||e&&typeof e=="object"?e:String(e)}async function zt(e,t){let n=(t.apiUrl??process.env.EVALKIT_API_URL??e.options.apiUrl).replace(/\/$/,""),o={agentInstructions:t.agentInstructions,count:t.count??5};t.tools&&(o.tools=t.tools.map(Jt)),t.functionSchemas&&(o.functionSchemas=t.functionSchemas.map(Jt)),t.context!==void 0&&(o.context=t.context),t.rag&&(o.rag=t.rag),t.categories&&(o.categories=t.categories),t.model&&(o.model=t.model),t.provider&&(o.provider=t.provider),t.apiKey&&(o.apiKey=t.apiKey),t.temperature!==void 0&&(o.temperature=t.temperature);let r=await fetch(n+"/scenarios/generate",{method:"POST",headers:{"Content-Type":"application/json","X-Subscription-Key":e.options.subscriptionKey},body:JSON.stringify(o)});if(!r.ok){let i=await r.text().catch(()=>"");throw new Error(`generateScenarios failed ${r.status}: ${i}`)}return (await r.json()).scenarios??[]}function Gn(e){let t=e.turns??e.messages??[],n=[];for(let o of t)typeof o=="string"?n.push(o):o&&typeof o=="object"&&o.content&&(o.role??"user")==="user"&&n.push(String(o.content));return n.length===0&&e.starting_prompt&&n.push(String(e.starting_prompt)),n}function Un(e,t,n,o){let r=Array.from(new Set([...e.constraints?.required_terms??[],...e.target_keywords??[]])),s={};r.length&&(s.requiredTerms=r),e.constraints?.has_citations!==void 0&&(s.hasCitations=e.constraints.has_citations);try{return $({output:t,toolCalls:n,expectedTools:e.expected_tools??[],constraints:s,metrics:o}).scores}catch{return {}}}async function Hn(e$1,t,n,o){let r=n.name??"scenario",s=n.scenario_id??"scn_"+ut(6),i="sess_"+ut(6),c=Gn(n).slice(0,o.maxTurns),a={...n.setup?.state??{},__safe_mode__:t.safeMode??true},{traceId:p,end:u,ctx:m}=e$1.startTrace(`scenario:${r}`,{"evalkit.session_id":i});e.set(p,{simulationId:o.simulationId,runId:o.runId,scenarioId:s});let d="OK",l,g=[],f$1=[],h=0,y={};try{await context.with(m,async()=>{for(let R=0;R<c.length;R++){let O={message:c[R],sessionId:i,state:a,turn:R+1},_=await t.entrypoint(O);_&&typeof _=="object"&&"text"in _?(g.push(_.text),_.toolCalls&&f$1.push(..._.toolCalls)):g.push(String(_)),h++;}let k=f$1.length?f$1:f.get(p)??[];y=Un(n,g.join(`
2
- `),k,t.metrics);});}catch(k){d="ERROR",l=k?.message??String(k);}finally{u(d);}let v={scenarioId:s,name:r,status:d,turns:h,scores:y};return l&&(v.error=l),{result:v,traceId:p}}async function Wt(e$1,t){let n="sim_"+ut(8),o="run_"+ut(8),r=t.maxTurns??12,s=[],i=[];for(let c of t.scenarios){let{result:a,traceId:p}=await Hn(e$1,t,c,{simulationId:n,runId:o,maxTurns:r});s.push(a),i.push(p);}await e$1.flush();for(let c of i)e.delete(c),f.delete(c);return {simulationId:n,runId:o,results:s}}var Qt=b(()=>{h();lt();});var A,Xt=b(()=>{(function(e){e[e.SUCCESS=0]="SUCCESS",e[e.FAILED=1]="FAILED";})(A||(A={}));});var Yt=b(()=>{Xt();});function xt(e){return e[0]*1e3+e[1]/1e6}function Ln(e){return {0:"INTERNAL",1:"SERVER",2:"CLIENT",3:"PRODUCER",4:"CONSUMER"}[e]??"INTERNAL"}function Bn(e){return e===1?"OK":e===2?"ERROR":"UNSET"}function Vn(e){let t={};for(let[n,o]of Object.entries(e))n.startsWith("evalkit.")||n==="gen_ai.system"||o!=null&&(t[n]=o);return t}function Zt(e){return new Promise(t=>setTimeout(t,e))}var dt,te=b(()=>{Yt();h();dt=class{constructor(t){this.url=`${t.baseUrl.replace(/\/$/,"")}/v1/ingest`,this.subscriptionKey=t.subscriptionKey,this.debug=t.debug??false;}export(t,n){let o=t.map(s=>this.toEnvelope(s)),r={events:o};this.debug&&console.log(`[evalkit] sending ${o.length} span(s) \u2192 ${this.url}`),this.fetchWithRetry(this.url,{method:"POST",headers:{"Content-Type":"application/json","X-Subscription-Key":this.subscriptionKey},body:JSON.stringify(r)}).then(async s=>{if(!s.ok){let i=await s.text().catch(()=>"(no body)");console.error(`[evalkit] export failed ${s.status}: ${i}`),n({code:A.FAILED});return}if(this.debug){let i=await s.json().catch(()=>({}));console.log(`[evalkit] exported ${o.length} span(s) \u2014 status: ${i.status}`);}n({code:A.SUCCESS});}).catch(s=>{console.error("[evalkit] export network error:",s),n({code:A.FAILED});});}async fetchWithRetry(t,n,o=3){let r=[200,600,1800],s;for(let i=0;i<=o;i++)try{let c=await fetch(t,n);if(c.ok||c.status>=400&&c.status<500)return c;if(i<o)this.debug&&console.warn(`[evalkit] HTTP ${c.status}, retry ${i+1}/${o}`),await Zt(r[i]??1800);else return c}catch(c){s=c,i<o&&(this.debug&&console.warn(`[evalkit] network error, retry ${i+1}/${o}:`,c),await Zt(r[i]??1800));}throw s}shutdown(){return Promise.resolve()}toEnvelope(t){let n=t.spanContext(),o=t.attributes,r=xt(t.startTime),s=xt(t.endTime),i=t.events.map(p=>({name:p.name,timestamp:new Date(xt(p.time)).toISOString(),attributes:p.attributes})),c={traceId:n.traceId,spanId:n.spanId,parentSpanId:t.parentSpanId,spanKind:Ln(t.kind),spanType:o["evalkit.span_type"]??"log",status:Bn(t.status.code),statusMessage:t.status.message,serviceName:t.resource.attributes["service.name"],operation:t.name,model:o["gen_ai.response.model"]??o["gen_ai.request.model"],provider:o["gen_ai.system"],prompt:o["evalkit.prompt"],completion:o["evalkit.completion"],tokensIn:Math.round(o["gen_ai.usage.input_tokens"]||0)||void 0,tokensOut:Math.round(o["gen_ai.usage.output_tokens"]||0)||void 0,latencyMs:Math.round(s-r),startTime:new Date(r).toISOString(),endTime:new Date(s).toISOString(),events:i.length>0?i:void 0,attributes:Vn(o),createdAt:new Date(r).toISOString(),environment:o["evalkit.environment"],appVersion:o["evalkit.app_version"],userId:o["evalkit.user_id"],sessionId:o["evalkit.session_id"],deviceId:o["evalkit.device_id"],sdkVersion:o["evalkit.sdk_version"]},a=e.get(n.traceId);return a&&(c.isSimulation=true,c.simulationId=a.simulationId,c.scenarioId=a.scenarioId,c.runId=a.runId),c}};});function kt(e,t=Qn){let n;try{n=JSON.stringify(e);}catch{}if(n===void 0)try{n=String(e);}catch{n="<unserializable>";}return n.length>t?n.slice(0,t)+"\u2026":n}var Wn,Qn,U,Rt=b(()=>{te();Wn="0.1.17",Qn=4096;U=class{constructor(t){this.options={serviceName:"unknown",debug:false,maxExportBatchSize:512,scheduledDelayMillis:5e3,baseUrl:"https://api.syntropylabs.ai",apiUrl:"https://api.syntropylabs.ai",environment:"",appVersion:"",...t};let n=new dt({baseUrl:this.options.baseUrl,subscriptionKey:this.options.subscriptionKey,debug:this.options.debug});this.provider=new NodeTracerProvider({resource:new Resource({[ATTR_SERVICE_NAME]:this.options.serviceName}),spanProcessors:[new BatchSpanProcessor(n,{maxExportBatchSize:this.options.maxExportBatchSize,scheduledDelayMillis:this.options.scheduledDelayMillis})]}),this.provider.register(),this.tracer=trace.getTracer("evalkit","0.1.0");}metaAttributes(){let t={"evalkit.sdk_version":Wn};return this.options.environment&&(t["evalkit.environment"]=this.options.environment),this.options.appVersion&&(t["evalkit.app_version"]=this.options.appVersion),this.options.deviceId&&(t["evalkit.device_id"]=this.options.deviceId),t}startTrace(t,n){let o=this.tracer.startSpan(t,{kind:SpanKind.SERVER,attributes:{"evalkit.span_type":"log",...this.metaAttributes(),...n}},context.active()),r=trace.setSpan(context.active(),o);return {traceId:o.spanContext().traceId,ctx:r,end:(i="OK")=>{o.setStatus({code:i==="OK"?SpanStatusCode.OK:SpanStatusCode.ERROR}),o.end();}}}startHttpTrace(t,n,o){let r=this.tracer.startSpan(t,{kind:SpanKind.SERVER,attributes:{"evalkit.span_type":"http_call","http.method":n.method,"http.url":n.url,...n.headers?{"http.request.headers":JSON.stringify(n.headers)}:{},...n.requestBody!==void 0?{"http.request.body":JSON.stringify(n.requestBody)}:{},...this.metaAttributes(),...o}},context.active()),s=trace.setSpan(context.active(),r);return {traceId:r.spanContext().traceId,ctx:s,end:(c="OK",a)=>{a?.statusCode!==void 0&&r.setAttribute("http.status_code",a.statusCode),a?.body!==void 0&&r.setAttribute("http.response.body",JSON.stringify(a.body)),a?.headers&&r.setAttribute("http.response.headers",JSON.stringify(a.headers)),r.setStatus({code:c==="OK"?SpanStatusCode.OK:SpanStatusCode.ERROR}),r.end();}}}startSpan(t,n,o){let r=this.tracer.startSpan(t,{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"function_call",...this.metaAttributes(),...n}},o??context.active());return {ctx:trace.setSpan(context.active(),r),end:(i="OK",c)=>{c&&r.setAttributes(c),r.setStatus({code:i==="OK"?SpanStatusCode.OK:SpanStatusCode.ERROR}),r.end();}}}traceFunction(t,n,o,r=true){let s=this;return function(...i){let c={"evalkit.span_type":"function_call",...o};r&&i.length&&(c["function.args"]=kt(i));let{ctx:a,end:p}=s.startSpan(t,c),u;try{u=context.with(a,()=>n.apply(this,i));}catch(m){throw p("ERROR",{"error.message":m?.message??String(m)}),m}return u&&typeof u.then=="function"?u.then(m=>(p("OK",r?{"function.result":kt(m)}:void 0),m),m=>{throw p("ERROR",{"error.message":m?.message??String(m)}),m}):(p("OK",r?{"function.result":kt(u)}:void 0),u)}}async flush(){await this.provider.forceFlush();}async destroy(){await this.provider.shutdown();}};});function T(e){if(!e)return context.active();let t=e.split("-");return t.length===4&&t[0]==="00"&&t[1].length===32&&t[2].length===16?trace.setSpanContext(ROOT_CONTEXT,{traceId:t[1],spanId:t[2],traceFlags:parseInt(t[3],16),isRemote:true}):context.active()}var H=b(()=>{});function to(e,t){let n="",o=0,r=0,s=false;function i(c){s||(s=true,c?t.setStatus({code:SpanStatusCode.ERROR,message:c.message}):(t.setAttributes({"evalkit.completion":n,"gen_ai.usage.input_tokens":o,"gen_ai.usage.output_tokens":r,"gen_ai.streaming":true}),t.setStatus({code:SpanStatusCode.OK})),t.end());}return new Proxy(e,{get(c,a,p){if(a===Symbol.asyncIterator)return function(){let m=c[Symbol.asyncIterator]();return {async next(){try{let d=await m.next();if(!d.done&&d.value){let l=d.value,g=l.choices?.[0]?.delta?.content;g&&(n+=g),l.usage&&(o=l.usage.prompt_tokens??0,r=l.usage.completion_tokens??0);}return d.done&&i(),d}catch(d){throw i(d instanceof Error?d:new Error(String(d))),d}},return(){return i(),m.return?.()??Promise.resolve({done:true,value:void 0})},throw(d){return i(d instanceof Error?d:new Error(String(d))),m.throw?.(d)??Promise.reject(d)},[Symbol.asyncIterator](){return this}}};let u=Reflect.get(c,a,p);return typeof u=="function"?u.bind(c):u}})}function K(e,t,n,o="openai"){if(t.create.__evalkit)return;let r=t.create;t.create=async function(...s){let i=s[0],c=n??context.active(),a=e.tracer.startSpan("chat.completions.create",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":o,"gen_ai.request.model":i.model??"unknown",...i.temperature!=null&&{"gen_ai.request.temperature":i.temperature},...i.max_tokens!=null&&{"gen_ai.request.max_tokens":i.max_tokens},...i.top_p!=null&&{"gen_ai.request.top_p":i.top_p},"evalkit.prompt":eo(i.messages??[])}},c),p=trace.setSpan(c,a);if(i?.stream){let l;try{l=await context.with(p,()=>r.apply(this,s));}catch(g){throw a.setStatus({code:SpanStatusCode.ERROR,message:g instanceof Error?g.message:String(g)}),a.end(),g}return to(l,a)}let u;try{u=await context.with(p,()=>r.apply(this,s));}catch(l){throw a.setStatus({code:SpanStatusCode.ERROR,message:l instanceof Error?l.message:String(l)}),a.end(),l}let m=u.choices?.[0],d=m?.message.content??"";a.setAttributes({"gen_ai.response.model":u.model,"gen_ai.response.id":u.id,"gen_ai.usage.input_tokens":u.usage?.prompt_tokens??0,"gen_ai.usage.output_tokens":u.usage?.completion_tokens??0,"gen_ai.usage.total_tokens":u.usage?.total_tokens??0,"gen_ai.response.finish_reasons":m?.finish_reason?[m.finish_reason]:[],"evalkit.completion":d});for(let l of m?.message.tool_calls??[]){a.addEvent("gen_ai.tool.call",{"gen_ai.tool.call.id":l.id,"gen_ai.tool.name":l.function.name,"gen_ai.tool.call.arguments":l.function.arguments});try{let f;try{f=JSON.parse(l.function.arguments);}catch{}g(a.spanContext().traceId,l.function.name,f);}catch{}e.tracer.startSpan(l.function.name,{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call","gen_ai.tool.name":l.function.name,"gen_ai.tool.call.id":l.id,"gen_ai.tool.call.arguments":l.function.arguments}},p).end();}return a.setStatus({code:SpanStatusCode.OK}),a.end(),u},t.create.__evalkit=true;}function eo(e){return e.map(t=>`${t.role}: ${t.content??""}`).join(`
3
- `)}var bt=b(()=>{h();});function oo(e,t){let n="",o=0,r=0,s=false;function i(a){let p=a?.type;if(p==="content_block_delta"){let u=a.delta;u?.type==="text_delta"&&u.text&&(n+=u.text);}else p==="message_start"?o=a.message?.usage?.input_tokens??0:p==="message_delta"&&(r=a.usage?.output_tokens??0);}function c(a){s||(s=true,a?t.setStatus({code:SpanStatusCode.ERROR,message:a.message}):(t.setAttributes({"evalkit.completion":n,"gen_ai.usage.input_tokens":o,"gen_ai.usage.output_tokens":r,"gen_ai.streaming":true}),t.setStatus({code:SpanStatusCode.OK})),t.end());}return new Proxy(e,{get(a,p,u){if(p===Symbol.asyncIterator)return function(){let d=a[Symbol.asyncIterator]();return {async next(){try{let l=await d.next();return !l.done&&l.value&&i(l.value),l.done&&c(),l}catch(l){throw c(l instanceof Error?l:new Error(String(l))),l}},return(){return c(),d.return?.()??Promise.resolve({done:true,value:void 0})},throw(l){return c(l instanceof Error?l:new Error(String(l))),d.throw?.(l)??Promise.reject(l)},[Symbol.asyncIterator](){return this}}};let m=Reflect.get(a,p,u);return typeof m=="function"?m.bind(a):m}})}function P(e,t,n){if(t.create.__evalkit)return;let o=t.create;t.create=async function(...r){let s=r[0],i=n??context.active(),c=ro(s.system,s.messages??[]),a=e.tracer.startSpan("messages.create",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"anthropic","gen_ai.request.model":s.model??"unknown",...s.temperature!=null&&{"gen_ai.request.temperature":s.temperature},...s.max_tokens!=null&&{"gen_ai.request.max_tokens":s.max_tokens},...s.top_p!=null&&{"gen_ai.request.top_p":s.top_p},"evalkit.prompt":c}},i),p=trace.setSpan(i,a);if(s?.stream){let d;try{d=await context.with(p,()=>o.apply(this,r));}catch(l){throw a.setStatus({code:SpanStatusCode.ERROR,message:l instanceof Error?l.message:String(l)}),a.end(),l}return oo(d,a)}let u;try{u=await context.with(p,()=>o.apply(this,r));}catch(d){throw a.setStatus({code:SpanStatusCode.ERROR,message:d instanceof Error?d.message:String(d)}),a.end(),d}let m=u.content.filter(d=>d.type==="text").map(d=>d.text??"").join("");a.setAttributes({"gen_ai.response.model":u.model,"gen_ai.response.id":u.id,"gen_ai.usage.input_tokens":u.usage?.input_tokens??0,"gen_ai.usage.output_tokens":u.usage?.output_tokens??0,"gen_ai.response.finish_reasons":u.stop_reason?[u.stop_reason]:[],"evalkit.completion":m});for(let d of u.content)if(d.type==="tool_use"){let l=d;a.addEvent("gen_ai.tool.call",{"gen_ai.tool.call.id":l.id,"gen_ai.tool.name":l.name,"gen_ai.tool.call.arguments":JSON.stringify(l.input)});try{g(a.spanContext().traceId,l.name,l.input);}catch{}e.tracer.startSpan(l.name,{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call","gen_ai.tool.name":l.name,"gen_ai.tool.call.id":l.id,"gen_ai.tool.call.arguments":JSON.stringify(l.input)}},p).end();}return a.setStatus({code:SpanStatusCode.OK}),a.end(),u},t.create.__evalkit=true;}function ro(e,t){let n=[];return e&&n.push(`system: ${e}`),n.push(...t.map(o=>`${o.role}: ${o.content}`)),n.join(`
4
- `)}var gt=b(()=>{h();});function ft(e,t){let n=t.Query?.prototype;if(!n||n.__evalkit)return;let o=n.exec;n.exec=async function(){if(!trace.getActiveSpan()?.isRecording())return o.call(this);let s=this.op??"query",i=this.model?.collection?.name??this._collection?.collectionName??"unknown",c=e.tracer.startSpan(`${s} ${i}`,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"mongodb","db.operation":s,"db.collection":i,"db.query":JSON.stringify(this._conditions??{})}},context.active());try{let a=await o.call(this);return c.setStatus({code:SpanStatusCode.OK}),c.end(),a}catch(a){throw c.setStatus({code:SpanStatusCode.ERROR,message:a.message}),c.end(),a}},n.__evalkit=true;}var wt=b(()=>{});function Q(e,t){let o=t?.prototype&&(typeof t.prototype.sendCommand=="function"||typeof t.prototype.call=="function")?t.prototype:Object.getPrototypeOf(t);if(!o||o.__evalkit_redis)return;let r=typeof o.sendCommand=="function"?"sendCommand":typeof o.call=="function"?"call":null;if(!r)return;let s=o[r];o[r]=async function(i,...c){if(!trace.getActiveSpan()?.isRecording())return s.call(this,i,...c);let p=Array.isArray(i)?i[0]:i?.name??i?.args?.[0]??"cmd",u=(typeof p=="string"?p:String(p)).toUpperCase(),m=e.tracer.startSpan(`redis ${u}`,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"redis","db.operation":u}},context.active());try{let d=await s.call(this,i,...c);return m.setStatus({code:SpanStatusCode.OK}),m.end(),d}catch(d){throw m.setStatus({code:SpanStatusCode.ERROR,message:d.message}),m.end(),d}},o.__evalkit_redis=true;}var Ot=b(()=>{});function w(e){let t={};for(let[n,o]of Object.entries(e))uo.test(n)||o!==void 0&&(t[n]=Array.isArray(o)?o.join(", "):String(o));return t}var uo,Tt=b(()=>{uo=/^(authorization|cookie|set-cookie|x-api-key|api-key|x-auth-token|proxy-authorization|x-secret|x-access-token|token|password)$/i;});var L,At=b(()=>{L=new Map;});function X(e,t){if(!t.__evalkit_axios){if(t.__evalkit_axios=true,typeof t.create=="function"){let n=t.create.bind(t);t.create=function(...o){let r=n(...o);return X(e,r),r};}t.interceptors.request.use(n=>{let o=(n.baseURL?n.baseURL.replace(/\/$/,""):"")+(n.url??"");if(yo.some(u=>u.test(o))||!trace.getActiveSpan()?.isRecording())return n;let s=n.url??"";try{s=new URL(o,n.baseURL??"http://localhost").pathname;}catch{}let i=(n.method??"get").toUpperCase(),c=w(n.headers??{}),a=e.tracer.startSpan(`${i} ${s}`,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"http_call","http.method":i,"http.url":o,...Object.keys(c).length?{"http.request.headers":JSON.stringify(c)}:{},...n.data!==void 0?{"http.request.body":typeof n.data=="string"?n.data.slice(0,4096):JSON.stringify(n.data).slice(0,4096)}:{}}},context.active()),p=a.spanContext();return n.headers=n.headers??{},n.headers.traceparent=`00-${p.traceId}-${p.spanId}-01`,n.headers["x-evalkit-span-id"]=p.spanId,L.set(p.spanId,a),n.__evalkitSpan=a,n.__evalkitSpanId=p.spanId,n}),t.interceptors.response.use(n=>{let o=n.config?.__evalkitSpan;if(n.config?.__evalkitSpanId&&L.delete(n.config.__evalkitSpanId),o){let r=w(n.headers??{}),s=n.data,i;s!=null&&(i=(typeof s=="string"?s:JSON.stringify(s)).slice(0,4096)),o.setAttributes({"http.status_code":n.status,...Object.keys(r).length?{"http.response.headers":JSON.stringify(r)}:{},...i!==void 0?{"http.response.body":i}:{}}),o.setStatus({code:SpanStatusCode.OK}),o.end();}return n},n=>{let o=n.config?.__evalkitSpan;if(n.config?.__evalkitSpanId&&L.delete(n.config.__evalkitSpanId),o){let r=n.response?.status??0,s=w(n.response?.headers??{}),i=n.response?.data,c;i!=null&&(c=(typeof i=="string"?i:JSON.stringify(i)).slice(0,4096)),o.setAttributes({"http.status_code":r,"error.message":n.message,...Object.keys(s).length?{"http.response.headers":JSON.stringify(s)}:{},...c!==void 0?{"http.response.body":c}:{}}),o.setStatus({code:SpanStatusCode.ERROR,message:n.message}),o.end();}throw n});}}var yo,It=b(()=>{Tt();At();yo=[/\/v1\/ingest/,/\/health(z)?$/];});function Y(e,t){let n=t?.prototype??Object.getPrototypeOf(t);if(!n||n.__evalkit_pg)return;let o=n.query;typeof o=="function"&&(n.query=function(...r){if(!trace.getActiveSpan()?.isRecording())return o.apply(this,r);let i=typeof r[0]=="string"?r[0]:r[0]?.text??r[0]?.name??"query",c=Array.isArray(r[1])?r[1]:r[0]?.values??void 0,p=i.trim().match(/^(\w+)/)?.[1]?.toUpperCase()??"QUERY",m=i.match(/(?:FROM|INTO|UPDATE|JOIN)\s+"?(\w+)"?/i)?.[1]??"",d=m?`${p} ${m}`:`pg ${p}`,l=e.tracer.startSpan(d,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"postgresql","db.operation":p,"db.statement":i.slice(0,2048),...c!==void 0?{"db.params":JSON.stringify(c).slice(0,1024)}:{},...m?{"db.sql.table":m}:{}}},context.active()),g=r[r.length-1];if(typeof g=="function"){let h=g,y=r.slice(0,-1).concat([(v,k)=>{v?(l.setStatus({code:SpanStatusCode.ERROR,message:v.message}),l.setAttribute("error.message",v.message)):(l.setAttribute("db.rows_affected",k?.rowCount??0),l.setStatus({code:SpanStatusCode.OK})),l.end(),h(v,k);}]);return o.apply(this,y)}return o.apply(this,r).then(h=>(l.setAttribute("db.rows_affected",h?.rowCount??0),l.setStatus({code:SpanStatusCode.OK}),l.end(),h),h=>{throw l.setStatus({code:SpanStatusCode.ERROR,message:h?.message}),l.setAttribute("error.message",h?.message??String(h)),l.end(),h})},n.__evalkit_pg=true);}var Kt=b(()=>{});function Z(e,t){let n=t?.prototype??Object.getPrototypeOf(t);if(!(!n||n.__evalkit_mysql2)){for(let o of ["query","execute"]){let r=n[o];typeof r=="function"&&(n[o]=function(...s){if(!trace.getActiveSpan()?.isRecording())return r.apply(this,s);let c=typeof s[0]=="string"?s[0]:s[0]?.sql??"query",a=Array.isArray(s[1])?s[1]:void 0,u=c.trim().match(/^(\w+)/)?.[1]?.toUpperCase()??"QUERY",d=c.match(/(?:FROM|INTO|UPDATE|JOIN)\s+`?(\w+)`?/i)?.[1]??"",l=d?`${u} ${d}`:`mysql ${u}`,g=e.tracer.startSpan(l,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"mysql","db.operation":u,"db.statement":c.slice(0,2048),...a!==void 0?{"db.params":JSON.stringify(a).slice(0,1024)}:{},...d?{"db.sql.table":d}:{}}},context.active()),f=s[s.length-1];if(typeof f=="function"){let y=f,v=s.slice(0,-1).concat([(k,R,O)=>{k?(g.setStatus({code:SpanStatusCode.ERROR,message:k.message}),g.setAttribute("error.message",k.message)):(g.setAttribute("db.rows_affected",Array.isArray(R)?R.length:R?.affectedRows??0),g.setStatus({code:SpanStatusCode.OK})),g.end(),y(k,R,O);}]);return r.apply(this,v)}let h=r.apply(this,s);return h&&typeof h.then=="function"?h.then(([y,v])=>(g.setAttribute("db.rows_affected",Array.isArray(y)?y.length:y?.affectedRows??0),g.setStatus({code:SpanStatusCode.OK}),g.end(),[y,v]),y=>{throw g.setStatus({code:SpanStatusCode.ERROR,message:y?.message}),g.setAttribute("error.message",y?.message??String(y)),g.end(),y}):(g.end(),h)});}n.__evalkit_mysql2=true;}}var Pt=b(()=>{});function bo(e){if(!e||typeof e!="object")return false;let t=e.constructor?.name??"";return t==="ConverseCommand"||t==="ConverseStreamCommand"}function tt(e,t,n){if(t.send.__evalkit)return;let o=t.send;t.send=async function(...r){let s=r[0];if(!bo(s))return o.apply(this,r);let i=s.input,c=i?.modelId??"unknown",a=c.split(".")[0]??"bedrock",p=i?.system?.map(v=>v.text).join(`
5
- `)??"",u=i?.messages?.map(v=>`${v.role}: ${v.content.map(k=>k.text??"").join("")}`)??[],m=[p?`system: ${p}`:"",...u].filter(Boolean).join(`
6
- `),d=i?.inferenceConfig??{},l=context.active(),g=e.tracer.startSpan("converse",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":a,"gen_ai.request.model":c,...d.temperature!=null&&{"gen_ai.request.temperature":d.temperature},...d.maxTokens!=null&&{"gen_ai.request.max_tokens":d.maxTokens},...d.topP!=null&&{"gen_ai.request.top_p":d.topP},"evalkit.prompt":m}},l),f=trace.setSpan(l,g),h;try{h=await context.with(f,()=>o.apply(this,r));}catch(v){throw g.setStatus({code:SpanStatusCode.ERROR,message:v instanceof Error?v.message:String(v)}),g.end(),v}let y=h.output?.message?.content?.map(v=>v.text??"").join("")??"";return g.setAttributes({"gen_ai.response.model":c,"gen_ai.usage.input_tokens":h.usage?.inputTokens??0,"gen_ai.usage.output_tokens":h.usage?.outputTokens??0,"gen_ai.usage.total_tokens":h.usage?.totalTokens??0,"gen_ai.response.finish_reasons":h.stopReason?[h.stopReason]:[],"evalkit.completion":y}),g.setStatus({code:SpanStatusCode.OK}),g.end(),h},t.send.__evalkit=true;}var Mt=b(()=>{});function et(e,t,n){if(t.chat.__evalkit)return;let o=t.chat;t.chat=async function(...r){let s=r[0];if(s?.stream)return o.apply(this,r);let i=s?.chatHistory?.map(d=>`${d.role}: ${d.message??""}`)??[],c=[s?.preamble?`system: ${s.preamble}`:"",...i,`user: ${s?.message??""}`].filter(Boolean).join(`
7
- `),a=context.active(),p=e.tracer.startSpan("chat",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"cohere","gen_ai.request.model":s?.model??"unknown",...s?.temperature!=null&&{"gen_ai.request.temperature":s.temperature},...s?.maxTokens!=null&&{"gen_ai.request.max_tokens":s.maxTokens},"evalkit.prompt":c}},a),u=trace.setSpan(a,p),m;try{m=await context.with(u,()=>o.apply(this,r));}catch(d){throw p.setStatus({code:SpanStatusCode.ERROR,message:d instanceof Error?d.message:String(d)}),p.end(),d}return p.setAttributes({"gen_ai.response.model":s?.model??"unknown","gen_ai.response.id":m.generationId??"","gen_ai.usage.input_tokens":m.meta?.tokens?.inputTokens??0,"gen_ai.usage.output_tokens":m.meta?.tokens?.outputTokens??0,"gen_ai.response.finish_reasons":m.finishReason?[m.finishReason]:[],"evalkit.completion":m.text??""}),p.setStatus({code:SpanStatusCode.OK}),p.end(),m},t.chat.__evalkit=true;}var qt=b(()=>{});function nt(e,t,n){if(t.generateContent.__evalkit)return;let o=t.generateContent,r=t.model??"unknown";t.generateContent=async function(...s){let i=s[0],c="";if(typeof i=="string")c=`user: ${i}`;else {let f=i,h=f?.systemInstruction?.parts?.map(v=>v.text??"").join("")??"",y=f?.contents?.map(v=>`${v.role??"user"}: ${v.parts.map(k=>k.text??"").join("")}`)??[];c=[h?`system: ${h}`:"",...y].filter(Boolean).join(`
8
- `);}let a=context.active(),p=e.tracer.startSpan("generateContent",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-ai","gen_ai.request.model":r,"evalkit.prompt":c}},a),u=trace.setSpan(a,p),m;try{m=await context.with(u,()=>o.apply(this,s));}catch(f){throw p.setStatus({code:SpanStatusCode.ERROR,message:f instanceof Error?f.message:String(f)}),p.end(),f}let d=m?.response,l=d?.candidates?.[0],g=l?.content?.parts?.map(f=>f.text??"").join("")??"";return p.setAttributes({"gen_ai.response.model":r,"gen_ai.usage.input_tokens":d?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":d?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":d?.usageMetadata?.totalTokenCount??0,"gen_ai.response.finish_reasons":l?.finishReason?[l.finishReason]:[],"evalkit.completion":g}),p.setStatus({code:SpanStatusCode.OK}),p.end(),m},t.generateContent.__evalkit=true;}var Nt=b(()=>{});function me(e){return e?.text??""}function Ao(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(t=>{if(typeof t=="string")return t;let n=t,o=n.role??"user",r=(n.parts??[]).map(me).join("");return r?`${o}: ${r}`:""}).filter(Boolean).join(`
9
- `);if(e&&typeof e=="object"){let t=e;if(t.parts)return (t.parts??[]).map(me).join("")}return e!=null?String(e):""}function Io(e){let t=e?.systemInstruction;return t?typeof t=="string"?t:Array.isArray(t?.parts)?t.parts.map(n=>n?.text??"").join(""):typeof t?.text=="string"?t.text:"":""}function ge(e){let t=Io(e?.config),n=Ao(e?.contents);return [t?`system: ${t}`:"",n].filter(Boolean).join(`
10
- `)}function fe(e){let t=[];for(let n of e?.candidates??[])for(let o of n.content?.parts??[])o.text&&t.push(o.text);return t.length?t.join(""):e?.text??""}function ye(e,t,n){let o=[];if(Array.isArray(e?.functionCalls))o.push(...e.functionCalls);else for(let r of e?.candidates??[])for(let s of r.content?.parts??[])s.functionCall?.name&&o.push(s.functionCall);for(let r of o){let s=r.name??"";if(!s)continue;let i="";try{i=JSON.stringify(r.args??{});}catch{i=String(r.args);}t.addEvent("gen_ai.tool.call",{"gen_ai.tool.name":s,"gen_ai.tool.call.arguments":i,"gen_ai.tool.call.id":r.id??""});let c=Ko(t);g(n,s,r.args),c&&c.end();}}function Ko(e){if(!Gt)return null;let t=trace.setSpan(context.active(),e);return Gt.tracer.startSpan("tool_call",{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call"}},t)}function st(e,t,n){if(Gt=e,t.generateContent&&!t.generateContent.__evalkit){let o=t.generateContent;t.generateContent=async function(...r){let s=r[0]??{},i=s.model??"unknown",c=context.active(),a=e.tracer.startSpan("generateContent",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-genai","gen_ai.request.model":i,"evalkit.prompt":ge(s)}},c),p=trace.setSpan(c,a),u;try{u=await context.with(p,()=>o.apply(this,r));}catch(m){throw a.setStatus({code:SpanStatusCode.ERROR,message:m instanceof Error?m.message:String(m)}),a.end(),m}a.setAttributes({"gen_ai.response.model":i,"gen_ai.usage.input_tokens":u?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":u?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":u?.usageMetadata?.totalTokenCount??0,"evalkit.completion":fe(u)});try{ye(u,a,a.spanContext().traceId);}catch{}return a.setStatus({code:SpanStatusCode.OK}),a.end(),u},t.generateContent.__evalkit=true;}if(t.generateContentStream&&!t.generateContentStream.__evalkit){let o=t.generateContentStream;t.generateContentStream=async function(...r){let s=r[0]??{},i=s.model??"unknown",c=context.active(),a=e.tracer.startSpan("generateContentStream",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-genai","gen_ai.request.model":i,"gen_ai.streaming":true,"evalkit.prompt":ge(s)}},c),p=trace.setSpan(c,a),u;try{u=await context.with(p,()=>o.apply(this,r));}catch(d){throw a.setStatus({code:SpanStatusCode.ERROR,message:d instanceof Error?d.message:String(d)}),a.end(),d}async function*m(){let d=[],l=0,g=0;try{for await(let f of u){try{let h=fe(f);h&&d.push(h),f?.usageMetadata&&(l=f.usageMetadata.promptTokenCount??l,g=f.usageMetadata.candidatesTokenCount??g),ye(f,a,a.spanContext().traceId);}catch{}yield f;}a.setAttributes({"gen_ai.response.model":i,"gen_ai.usage.input_tokens":l,"gen_ai.usage.output_tokens":g,"evalkit.completion":d.join("")}),a.setStatus({code:SpanStatusCode.OK});}catch(f){throw a.setStatus({code:SpanStatusCode.ERROR,message:f instanceof Error?f.message:String(f)}),f}finally{a.end();}}return m()},t.generateContentStream.__evalkit=true;}}var Gt,Ut=b(()=>{h();Gt=null;});function at(e,t,n){P(e,t,n);}function it(e,t,n){if(t.generateContent.__evalkit)return;let o=t.generateContent,r=t.model??"unknown";t.generateContent=async function(...s){let i=s[0],c=i?.systemInstruction?.parts?.map(y=>y.text??"").join("")??"",a=i?.contents?.map(y=>`${y.role??"user"}: ${y.parts.map(v=>v.text??"").join("")}`)??[],p=[c?`system: ${c}`:"",...a].filter(Boolean).join(`
11
- `),u=context.active(),m=e.tracer.startSpan("generateContent",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-vertex","gen_ai.request.model":r,"evalkit.prompt":p}},u),d=trace.setSpan(u,m),l;try{l=await context.with(d,()=>o.apply(this,s));}catch(y){throw m.setStatus({code:SpanStatusCode.ERROR,message:y instanceof Error?y.message:String(y)}),m.end(),y}let g=l?.response,f=g?.candidates?.[0],h=f?.content?.parts?.map(y=>y.text??"").join("")??"";return m.setAttributes({"gen_ai.response.model":r,"gen_ai.usage.input_tokens":g?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":g?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":g?.usageMetadata?.totalTokenCount??0,"gen_ai.response.finish_reasons":f?.finishReason?[f.finishReason]:[],"evalkit.completion":h}),m.setStatus({code:SpanStatusCode.OK}),m.end(),l},t.generateContent.__evalkit=true;}var Ht=b(()=>{gt();});function _e(e,t={},n){function o(r,s,i){let c={...t,...s};r.addHook("onRequest",(a,p,u)=>{let m=a.routerPath??a.routeOptions?.url??a.url??"/",d=typeof c.name=="function"?c.name(a):c.name??`${String(a.method??"GET")} ${String(m)}`,l=a.headers?.traceparent,g=n?n(l):context.active(),{traceId:f,end:h,ctx:y}=context.with(g,()=>e.startHttpTrace(d,{method:String(a.method??"GET"),url:String(a.url??"/"),headers:a.headers,requestBody:void 0}));a._evalkitCtx=y,a._evalkitTraceId=f,a._evalkitEnd=h,a._evalkitEnded=false,context.with(y,u);}),r.addHook("preHandler",(a,p,u)=>{if(a._evalkitCtx&&a.body!==void 0){let m=trace.getActiveSpan();if(m?.isRecording())try{m.setAttribute("http.request.body",typeof a.body=="string"?a.body.slice(0,4096):JSON.stringify(a.body).slice(0,4096));}catch{}}context.with(a._evalkitCtx??context.active(),u);}),r.addHook("onResponse",(a,p,u)=>{if(typeof a._evalkitEnd=="function"&&!a._evalkitEnded){a._evalkitEnded=true;let m=p.statusCode??200;a._evalkitEnd(m>=400?"ERROR":"OK",{statusCode:m});}u();}),r.addHook("onError",(a,p,u,m)=>{typeof a._evalkitEnd=="function"&&!a._evalkitEnded&&(a._evalkitEnded=true,a._evalkitEnd("ERROR",{statusCode:p.statusCode??500})),m();}),i();}return o[Symbol.for("skip-override")]=true,o}var xe=b(()=>{});function ke(e,t){return (n,o,r)=>{let s=typeof t?.name=="function"?t.name(n):t?.name??`${String(n.method)} ${String(n.route?.path??n.path??n.url)}`,i=T(n.headers?.traceparent),{end:c,ctx:a,traceId:p}=context.with(i,()=>e.startHttpTrace(s,{method:String(n.method??"GET"),url:String(n.originalUrl??n.url??"/"),headers:n.headers,requestBody:n.body}));n._evalkitCtx=a,n._evalkitTraceId=p;let u=trace.getSpan(a)?.spanContext().spanId??"0000000000000000";o.setHeader?.("x-trace-id",p),o.setHeader?.("traceparent",`00-${p}-${u}-01`);let m=o.end;o.end=function(...d){let l=o.statusCode??200;return c(l>=400?"ERROR":"OK",{statusCode:l,headers:o.getHeaders?o.getHeaders():void 0}),m.apply(o,d)},context.with(a,()=>r());}}var Re=b(()=>{H();});function be(e,t){return async(n,o)=>{let r=typeof t?.name=="function"?t.name(n):t?.name??`${String(n.method??"GET")} ${String(n.path??"/")}`,s=T(n.request?.headers?.traceparent),{end:i,ctx:c}=context.with(s,()=>e.startHttpTrace(r,{method:String(n.method??"GET"),url:String(n.href??n.url??"/"),headers:n.request?.headers,requestBody:n.request?.body}));n._evalkitCtx=c;try{await context.with(c,o);let a=n.status??200;i(a>=400?"ERROR":"OK",{statusCode:a});}catch(a){throw i("ERROR",{statusCode:n.status??500}),a}}}var Ee=b(()=>{H();});function Oe(e,t){return async(n,o)=>{let r=n.req,s=r.url??"/",i=s;try{i=new URL(s).pathname;}catch{}let c=typeof t?.name=="function"?t.name(n):t?.name??`${String(r.method??"GET")} ${i}`,a=T(r.header("traceparent")),{end:p,ctx:u}=context.with(a,()=>e.startHttpTrace(c,{method:String(r.method??"GET"),url:s,headers:Object.fromEntries(r.raw?.headers??[])}));try{await context.with(u,o);let m=n.res?.status??200;p(m>=400?"ERROR":"OK",{statusCode:m});}catch(m){throw p("ERROR",{statusCode:500}),m}}}var Te=b(()=>{H();});function Ae(e,t){return {name:"@evalkit/hapi",register(n){let o=new WeakMap;n.ext("onRequest",(r,s)=>{let i=typeof t?.name=="function"?t.name(r):t?.name??`${String(r.method?.toUpperCase()??"GET")} ${String(r.path??"/")}`,c=T(r.headers?.traceparent),{end:a,ctx:p}=context.with(c,()=>e.startHttpTrace(i,{method:String(r.method?.toUpperCase()??"GET"),url:String(r.url?.href??r.path??"/"),headers:r.headers}));return o.set(r,{end:a,ctx:p}),s.continue}),n.ext("onPreResponse",(r,s)=>{let i=o.get(r);if(i){let c=r.response?.output?.statusCode??r.response?.statusCode??200;i.end(c>=400?"ERROR":"OK",{statusCode:c}),o.delete(r);}return s.continue});}}}var Ie=b(()=>{H();});var B,Lt=b(()=>{B=class{constructor(t){this.client=t;}intercept(t,n){let o=t.switchToHttp?.();if(!o)return n.handle();let r=o.getRequest(),s=`${String(r.method??"GET")} ${String(r.route?.path??r.path??r.url??"/")}`,{ctx:i,end:c}=this.client.startHttpTrace(s,{method:String(r.method??"GET"),url:String(r.originalUrl??r.url??"/"),headers:r.headers,requestBody:r.body}),a=context.with(i,()=>n.handle());return {subscribe(p){return a.subscribe({next:u=>p.next?.(u),error:u=>{c("ERROR"),p.error?.(u);},complete:()=>{let u=o.getResponse().statusCode??200;c(u>=400?"ERROR":"OK",{statusCode:u}),p.complete?.();}})},pipe(...p){return a.pipe(...p)}}}};});function Bt(e){return Go.some(t=>t.test(e))}function Uo(e,t,n){let o="",r="GET";if(typeof e=="string")o=e,r=(t?.method??"GET").toUpperCase();else if(e instanceof URL)o=e.href,r=(t?.method??"GET").toUpperCase();else {let i=e.hostname??e.host??"localhost",c=e.port?`:${e.port}`:"",a=e.path??"/";o=`${n}://${i}${c}${a}`,r=(e.method??t?.method??"GET").toUpperCase();}let s=o;try{s=new URL(o.startsWith("http")?o:`${n}://localhost${o}`).pathname;}catch{}return {url:o,method:r,pathname:s}}function Me(e){let t,n;try{let s=typeof a<"u"?a:createRequire(import.meta.url);t=s("http"),n=s("https");}catch{return}let o=[{mod:t,scheme:"http"},{mod:n,scheme:"https"}];for(let{mod:s,scheme:i}of o){let a=function(p,u,m){let d=typeof u=="function"?void 0:u,{url:l,method:g,pathname:f}=Uo(p,d,i);if(Bt(l)||!trace.getActiveSpan()?.isRecording())return c.call(s,p,u,m);let y={...typeof p=="object"&&!(p instanceof URL)?p.headers??{}:{},...d?.headers??{}},v=y["x-evalkit-span-id"];if(v){typeof p=="object"&&!(p instanceof URL)&&p.headers&&delete p.headers["x-evalkit-span-id"],d?.headers&&delete d.headers["x-evalkit-span-id"];let S=L.get(String(v));if(S){let N=w({...y});delete N["x-evalkit-span-id"],Object.keys(N).length&&S.setAttributes({"http.request.headers":JSON.stringify(N)});}return c.call(s,p,u,m)}let k=w(y),R=e.tracer.startSpan(`${g} ${f}`,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"http_call","http.method":g,"http.url":l,...Object.keys(k).length?{"http.request.headers":JSON.stringify(k)}:{}}},context.active()),O=c.call(s,p,u,m),_=R.spanContext();return O.setHeader("traceparent",`00-${_.traceId}-${_.spanId}-01`),O.on("response",S=>{let N=S.statusCode??0;R.setAttributes({"http.status_code":N,...S.headers?{"http.response.headers":JSON.stringify(w(S.headers))}:{}}),R.setStatus({code:N>=400?SpanStatusCode.ERROR:SpanStatusCode.OK}),R.end();}),O.on("error",S=>{R.setAttributes({"http.status_code":0,"error.message":S.message}),R.setStatus({code:SpanStatusCode.ERROR,message:S.message}),R.end();}),O};let c=s.request;c.__evalkit||(a.__evalkit=true,Object.defineProperty(s,"request",{value:a,writable:true,configurable:true}));}}function qe(e){let t;try{t=(typeof a<"u"?a:createRequire(import.meta.url))("http");}catch{return}if(t.Server.prototype.emit.__evalkit_server)return;let n=t.Server.prototype.emit;function o(r,...s){if(r!=="request")return n.call(this,r,...s);let i=s[0],c=s[1],a=i.url??"/";if(Bt(a))return n.call(this,r,...s);if(trace.getActiveSpan()?.isRecording())return n.call(this,r,...s);let p=(i.method??"GET").toUpperCase(),u=a;try{u=new URL(a,"http://localhost").pathname;}catch{}let m=i.headers.traceparent,d=m?Ho(Array.isArray(m)?m[0]:m):context.active(),l=e.tracer.startSpan(`${p} ${u}`,{kind:SpanKind.SERVER,attributes:{"evalkit.span_type":"http_call","http.method":p,"http.url":a,"http.request.headers":JSON.stringify(w(i.headers))}},d),g=trace.setSpan(d,l),f=l.spanContext();c.setHeader("x-trace-id",f.traceId),c.setHeader("traceparent",`00-${f.traceId}-${f.spanId}-01`);let h=8192,y=[],v=0,k=_=>{try{if(_&&typeof _!="function"&&v<h){let S=Buffer.isBuffer(_)?_:typeof _=="string"?Buffer.from(_):null;S&&S.length&&(y.push(S),v+=S.length);}}catch{}},R=c.write.bind(c),O=c.end.bind(c);return c.write=function(_,...S){return k(_),R(_,...S)},c.end=function(_,...S){return k(_),O(_,...S)},c.on("finish",()=>{l.setAttribute("http.status_code",c.statusCode);try{let _=c.getHeaders();_&&Object.keys(_).length&&l.setAttribute("http.response.headers",JSON.stringify(w(_)));}catch{}if(y.length)try{let _=Buffer.concat(y).subarray(0,h).toString("utf-8");_&&l.setAttribute("http.response.body",_);}catch{}l.setStatus({code:c.statusCode>=400?SpanStatusCode.ERROR:SpanStatusCode.OK}),l.end();}),c.on("error",_=>{l.setAttribute("error.message",_.message),l.setStatus({code:SpanStatusCode.ERROR,message:_.message}),l.end();}),context.with(g,()=>n.call(this,r,...s))}o.__evalkit_server=true,t.Server.prototype.emit=o;}function Ho(e){let t=e.split("-");if(t.length<4)return context.active();let[,n,o,r]=t;if(!n||!o)return context.active();try{let s={traceId:n,spanId:o,isRemote:!0,traceFlags:parseInt(r??"01",16)};return trace.setSpanContext(context.active(),s)}catch{return context.active()}}function Ne(){if(typeof globalThis.fetch!="function"||globalThis.fetch.__evalkit)return;let e=globalThis.fetch.bind(globalThis);globalThis.fetch=async function(n,o){let r=typeof n=="string"?n:n instanceof URL?n.href:n.url;if(Bt(r))return e(n,o);let s=trace.getActiveSpan();if(!s?.isRecording())return e(n,o);let i=(o?.method??"GET").toUpperCase(),c=r;try{c=new URL(r).pathname;}catch{}let a={};o?.headers&&new Headers(o.headers).forEach((f,h)=>{a[h]=f;});let p=w(a),u=s.spanContext(),m=`00-${u.traceId}-${u.spanId}-01`,d=new Headers(o?.headers);d.set("traceparent",m);let l={...o,headers:d};Object.keys(p).length&&s.addEvent("http.fetch.request",{"http.method":i,"http.url":r,"http.request.headers":JSON.stringify(p)});try{let g=await e(n,l),f={};return g.headers.forEach((h,y)=>{f[y]=h;}),s.addEvent("http.fetch.response",{"http.url":r,"http.status_code":g.status,"http.response.headers":JSON.stringify(w(f))}),g}catch(g){throw s.addEvent("http.fetch.error",{"http.url":r,"error.message":g?.message??String(g),"error.stack":g?.stack??""}),g}},globalThis.fetch.__evalkit=true;}var Go,je=b(()=>{Tt();At();Go=[/\/v1\/ingest/,/\/health(z)?$/,/169\.254\./,/metadata\.google/,/storage\.googleapis/];});function Ge(e){if(console.__evalkit)return;let t=console.log.bind(console),n=console.warn.bind(console),o=console.error.bind(console),r=i=>i.map(c=>{if(typeof c=="string")return c;if(c instanceof Error)return `${c.message}
12
- ${c.stack??""}`;try{return JSON.stringify(c)}catch{return String(c)}}).join(" ").slice(0,2e3),s=(i,c)=>{let a=trace.getActiveSpan();if(a?.isRecording())a.addEvent(`log.${i}`,{"log.level":i,"log.message":c});else {let p=e.tracer.startSpan(`log.${i}`,{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"log","log.level":i,"log.message":c}},context.active());p.setStatus({code:i==="ERROR"?SpanStatusCode.ERROR:SpanStatusCode.OK}),p.end();}};console.log=(...i)=>{t(...i),s("INFO",r(i));},console.warn=(...i)=>{n(...i),s("WARN",r(i));},console.error=(...i)=>{o(...i),s("ERROR",r(i));},console.__evalkit=true;}var Ue=b(()=>{});function Be(){typeof process>"u"||(process.on("unhandledRejection",e=>{let t=trace.getActiveSpan();if(!t?.isRecording())return;let n=e instanceof Error?e.message:String(e),o=e instanceof Error?e.stack??"":"";t.addEvent("error.unhandled_rejection",{"error.message":n,"error.stack":o,"log.level":"ERROR","log.message":`UnhandledRejection: ${n}`}),t.setStatus({code:SpanStatusCode.ERROR,message:n});}),process.on("uncaughtException",e=>{let t=trace.getActiveSpan();t?.isRecording()&&(t.addEvent("error.uncaught_exception",{"error.message":e.message,"error.stack":e.stack??"","log.level":"ERROR","log.message":`UncaughtException: ${e.message}`}),t.setStatus({code:SpanStatusCode.ERROR,message:e.message}));}));}var Ve=b(()=>{});function Fo(e){let t=j("mongoose");t&&ft(e,t);}function Do(e){let t=j("axios");t&&X(e,t.default??t);}async function Jo(e){try{let n=k()("pg"),o=n.Client??n.default?.Client;if(o){Y(e,o);return}}catch{}try{let t=await i("pg"),n=t.Client??t.default?.Client;n&&Y(e,n);}catch{}}async function zo(e){try{let t=k(),n=t("mysql2"),o=n.Connection??n.default?.Connection??t("mysql2/lib/connection");if(o){Z(e,o);return}}catch{}try{let t=await i("mysql2"),n=t.Connection??t.default?.Connection;n&&Z(e,n);}catch{}}async function Wo(e){try{let n=k()("ioredis"),o=n.default??n.Redis??n;if(o?.prototype){Q(e,o);return}}catch{}try{let t=await i("ioredis"),n=t.default??t.Redis??t;n?.prototype&&Q(e,n);}catch{}}async function Qo(e){try{let n=k()("openai"),r=(n.default??n.OpenAI??n)?.Chat?.Completions?.prototype;if(r){K(e,r);return}}catch{}try{let t=await i("openai"),o=(t.default??t.OpenAI??t)?.Chat?.Completions?.prototype;o&&K(e,o);}catch{}}async function Xo(e){try{let n=k()("@anthropic-ai/sdk"),r=(n.default??n.Anthropic??n)?.Messages?.prototype;if(r){P(e,r);return}}catch{}try{let t=await i("@anthropic-ai/sdk"),o=(t.default??t.Anthropic??t)?.Messages?.prototype;o&&P(e,o);}catch{}}async function Yo(e){try{let n=k()("@aws-sdk/client-bedrock-runtime"),r=(n.BedrockRuntimeClient??n.default?.BedrockRuntimeClient)?.prototype;if(r){tt(e,r);return}}catch{}try{let t=await i("@aws-sdk/client-bedrock-runtime"),o=(t.BedrockRuntimeClient??t.default?.BedrockRuntimeClient)?.prototype;o&&tt(e,o);}catch{}}async function Zo(e){try{let n=k()("@anthropic-ai/sdk"),r=(n.AnthropicVertex??n.default?.AnthropicVertex)?.Messages?.prototype;if(r){at(e,r);return}}catch{}try{let t=await i("@anthropic-ai/sdk"),o=(t.AnthropicVertex??t.default?.AnthropicVertex)?.Messages?.prototype;o&&at(e,o);}catch{}}async function tr(e){try{let n=k()("@google-cloud/vertexai"),r=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(r){it(e,r);return}}catch{}try{let t=await i("@google-cloud/vertexai"),o=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;o&&it(e,o);}catch{}}async function er(e){try{let n=k()("cohere-ai"),r=(n.CohereClient??n.default?.CohereClient??n.default)?.prototype;if(r){et(e,r);return}}catch{}try{let t=await i("cohere-ai"),o=(t.CohereClient??t.default?.CohereClient??t.default)?.prototype;o&&et(e,o);}catch{}}async function nr(e){try{let n=k()("@google/generative-ai"),r=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(r){nt(e,r);return}}catch{}try{let t=await i("@google/generative-ai"),o=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;o&&nt(e,o);}catch{}}async function or(e){try{let n=k()("@google/genai"),o=n.Models??n.default?.Models;if(o?.prototype){st(e,o.prototype);return}}catch{}try{let t=await i("@google/genai"),n=t.Models??t.default?.Models;n?.prototype&&st(e,n.prototype);}catch{}}async function rr(e){try{let n=k()("groq-sdk"),r=(n.default??n.Groq??n)?.Chat?.Completions?.prototype;if(r){K(e,r,void 0,"groq");return}}catch{}try{let t=await i("groq-sdk"),o=(t.default??t.Groq??t)?.Chat?.Completions?.prototype;o&&K(e,o,void 0,"groq");}catch{}}async function sr(e){try{let{patchLangChain:t}=await import('./langchain-QDMKUXBO.mjs');await t(e);}catch{}}function Fe(e){try{qe(e);}catch{}try{Me(e);}catch{}Ne(),Ge(e),Be(),Fo(e),Do(e),Promise.all([Qo(e),Xo(e),Yo(e),Zo(e),tr(e),er(e),nr(e),or(e),rr(e),sr(e),Jo(e),zo(e),Wo(e)]).catch(()=>{});}var De=b(()=>{l();bt();gt();Mt();Ht();qt();Nt();Ut();wt();Kt();Pt();Ot();It();je();Ue();Ve();});var Ft={};c(Ft,{EvalKitClient:()=>U,EvalKitInterceptor:()=>B,TraceMethod:()=>xn,Traced:()=>Cn,createNestjsInterceptor:()=>gn,currentTraceId:()=>Rn,default:()=>pr,evaluate:()=>$,expressMiddleware:()=>pn,fastifyPlugin:()=>ln,flush:()=>yn,generateScenarios:()=>Sn,hapiPlugin:()=>mn,honoMiddleware:()=>dn,init:()=>Je,koaMiddleware:()=>un,langchainHandler:()=>nn,patchAnthropicClient:()=>We,patchAnthropicVertexClient:()=>Xe,patchAxiosClient:()=>sn,patchBedrockClient:()=>Qe,patchCohereClient:()=>Ze,patchGoogleAIModel:()=>tn,patchGoogleGenAIModels:()=>en,patchMongooseClient:()=>on,patchMysql2Client:()=>cn,patchOpenAIClient:()=>ze,patchPgClient:()=>an,patchRedisClient:()=>rn,patchVertexGenerativeModel:()=>Ye,simulateUser:()=>bn,startHttpTrace:()=>hn,startSpan:()=>vn,startTrace:()=>fn,traceFunction:()=>_n,withTrace:()=>kn});function C(){if(!q)throw new Error("[evalkit] call evalkit.init() before using the SDK");return q}function Je(e){return q&&q.destroy(),q=new U(e),Fe(q),q}function ze(e,t){K(C(),e.chat.completions,t);}function We(e,t){P(C(),e.messages,t);}function Qe(e){tt(C(),e);}function Xe(e){at(C(),e.messages);}function Ye(e){it(C(),e);}function Ze(e){et(C(),e);}function tn(e){nt(C(),e);}function en(e){st(C(),e);}function nn(){return n(C())}function on(e){ft(C(),e);}function rn(e){Q(C(),e);}function sn(e){X(C(),e);}function an(e){Y(C(),e);}function cn(e){Z(C(),e);}function pn(e){return ke(C(),e)}function ln(e){return _e(C(),e,cr)}function un(e){return be(C(),e)}function dn(e){return Oe(C(),e)}function mn(e){return Ae(C(),e)}function gn(){return new B(C())}function fn(e,t){return C().startTrace(e,t)}async function yn(){return C().flush()}function hn(e,t,n){return C().startHttpTrace(e,t,n)}function vn(e,t,n){return C().startSpan(e,t,n)}function _n(e,t,n,o=true){return C().traceFunction(e,t,n,o)}function xn(e){return (t,n,o)=>{let r=o.value,s=e??`${t.constructor?.name??"unknown"}.${String(n)}`,i;return o.value=function(...c){return i||(i=C().traceFunction(s,r)),i.apply(this,c)},o}}function Cn(e){return t=>{let n=t.prototype,o=e?.prefix??t.name;for(let r of Object.getOwnPropertyNames(n)){if(r==="constructor")continue;let s=Object.getOwnPropertyDescriptor(n,r);if(!s||typeof s.value!="function")continue;let i=s.value,c=`${o}.${r}`,a=null;Object.defineProperty(n,r,{...s,value:function(...p){return a||(a=C().traceFunction(c,i)),a.apply(this,p)}});}return t}}function kn(e,t){return context.with(e,t)}function Rn(){let e=trace.getActiveSpan();return e?.isRecording()?e.spanContext().traceId:void 0}function Sn(e){return zt(C(),e)}function bn(e){return Wt(C(),e)}function cr(e){return T(e)}var q,pr,Dt=b(()=>{lt();Qt();Rt();H();bt();gt();wt();Ot();It();Kt();Pt();Mt();qt();Nt();Ut();p();Ht();xe();Re();Ee();Te();Ie();Lt();De();Rt();Lt();lt();q=null;pr={init:Je,evaluate:$,generateScenarios:Sn,simulateUser:bn,patchOpenAIClient:ze,patchAnthropicClient:We,patchBedrockClient:Qe,patchAnthropicVertexClient:Xe,patchVertexGenerativeModel:Ye,patchCohereClient:Ze,patchGoogleAIModel:tn,patchGoogleGenAIModels:en,langchainHandler:nn,patchMongooseClient:on,patchRedisClient:rn,patchAxiosClient:sn,patchPgClient:an,patchMysql2Client:cn,expressMiddleware:pn,fastifyPlugin:ln,koaMiddleware:un,honoMiddleware:dn,hapiPlugin:mn,createNestjsInterceptor:gn,startTrace:fn,startHttpTrace:hn,startSpan:vn,traceFunction:_n,TraceMethod:xn,Traced:Cn,withTrace:kn,currentTraceId:Rn,flush:yn};});Dt();export{U as EvalKitClient,B as EvalKitInterceptor,xn as TraceMethod,Cn as Traced,gn as createNestjsInterceptor,Rn as currentTraceId,pr as default,$ as evaluate,pn as expressMiddleware,ln as fastifyPlugin,yn as flush,Sn as generateScenarios,mn as hapiPlugin,dn as honoMiddleware,Je as init,un as koaMiddleware,nn as langchainHandler,We as patchAnthropicClient,Xe as patchAnthropicVertexClient,sn as patchAxiosClient,Qe as patchBedrockClient,Ze as patchCohereClient,tn as patchGoogleAIModel,en as patchGoogleGenAIModels,on as patchMongooseClient,cn as patchMysql2Client,ze as patchOpenAIClient,an as patchPgClient,rn as patchRedisClient,Ye as patchVertexGenerativeModel,bn as simulateUser,hn as startHttpTrace,vn as startSpan,fn as startTrace,_n as traceFunction,kn as withTrace};
1
+ import {b,h,l,c,n,p,d,g,e,f,a,j,k,i}from'./chunk-OVOA54JW.mjs';import {context,trace,SpanKind,SpanStatusCode,ROOT_CONTEXT}from'@opentelemetry/api';import {randomBytes}from'crypto';import {NodeTracerProvider}from'@opentelemetry/sdk-trace-node';import {BatchSpanProcessor}from'@opentelemetry/sdk-trace-base';import {Resource}from'@opentelemetry/resources';import {ATTR_SERVICE_NAME}from'@opentelemetry/semantic-conventions';import {createRequire}from'module';function An(e,t){if(t.length===0)return {score:1,lcsLength:0};let n=e.length,r=t.length,o=Array.from({length:n+1},()=>new Array(r+1).fill(0));for(let i=1;i<=n;i++)for(let c=1;c<=r;c++)e[i-1]===t[c-1]?o[i][c]=o[i-1][c-1]+1:o[i][c]=Math.max(o[i-1][c],o[i][c-1]);let a=o[n][r];return {score:a/t.length,lcsLength:a}}function In(e,t){if(e.length===0&&t.length===0)return {score:1,precision:1,recall:1};if(e.length===0||t.length===0)return {score:0,precision:0,recall:0};let n=new Set(e),r=new Set(t),o=new Set([...n].filter(s=>r.has(s))),a=o.size/n.size,i=o.size/r.size;return {score:a+i===0?0:2*a*i/(a+i),precision:a,recall:i}}function Kn(e,t){if(t.length===0)return {score:1,called:0,total:0};let n=new Set(e),r=t.filter(o=>n.has(o)).length;return {score:r/t.length,called:r,total:t.length}}function Pn(e,t){if(t.length===0)return {score:1,matched:[],missing:[]};let n=e.toLowerCase(),r=t.filter(a=>n.includes(a.toLowerCase())),o=t.filter(a=>!n.includes(a.toLowerCase()));return {score:r.length/t.length,matched:r,missing:o}}function Mn(e,t){let n={},r=[];if(t.requiredTerms!==void 0&&t.requiredTerms.length>0){let a=e.toLowerCase(),i=t.requiredTerms.every(c=>a.includes(c.toLowerCase()));n.requiredTerms=i,r.push(i);}if(t.hasCitations!==void 0){let a=/\[[\d]+\]|\(\w[^)]{1,80}\d{4}\)|\bhttps?:\/\//.test(e);n.hasCitations=t.hasCitations?a:!a,r.push(n.hasCitations);}if(t.slideCount!==void 0){let a=/slide\s+\d+|section\s+\d+|##\s+\d+\./gi,c=(e.match(a)??[]).length===t.slideCount;n.slideCount=c,r.push(c);}return r.length===0?{score:1,checks:n}:{score:r.filter(Boolean).length/r.length,checks:n}}function qn(e,t){if(e.length===0)return {score:1,relevant:0,total:0};let n=new Set(t),r=e.filter(o=>n.has(o)).length;return {score:r/e.length,relevant:r,total:e.length}}function Nn(e,t){if(t.length===0)return {score:1,covered:0,total:0};let n=new Set(e),r=t.filter(o=>n.has(o)).length;return {score:r/t.length,covered:r,total:t.length}}function $(e){let t=new Set(e.metrics??["tool_trajectory","tool_f1","tool_correctness","response_match","constraint_compliance","contextual_precision","contextual_recall"]),n=(e.toolCalls??[]).map(s=>s.name),r=e.expectedTools??[],o={},a={};if(t.has("tool_trajectory")&&r.length>0){let s=An(n,r);o.tool_trajectory=s.score,a.tool_trajectory={lcsLength:s.lcsLength,expectedCount:r.length};}if(t.has("tool_f1")&&(n.length>0||r.length>0)){let s=In(n,r);o.tool_f1=s.score,a.tool_f1={precision:s.precision,recall:s.recall};}if(t.has("tool_correctness")&&r.length>0){let s=Kn(n,r);o.tool_correctness=s.score,a.tool_correctness={called:s.called,total:s.total};}let i=e.constraints?.requiredTerms??[];if(t.has("response_match")&&i.length>0){let s=Pn(e.output,i);o.response_match=s.score,a.response_match={matched:s.matched,missing:s.missing};}if(t.has("constraint_compliance")&&e.constraints){let s=Mn(e.output,e.constraints);o.constraint_compliance=s.score,a.constraint_compliance={checks:s.checks};}if(t.has("contextual_precision")&&e.retrievedContext!==void 0&&e.expectedContext!==void 0){let s=qn(e.retrievedContext,e.expectedContext);o.contextual_precision=s.score,a.contextual_precision={relevant:s.relevant,total:s.total};}if(t.has("contextual_recall")&&e.retrievedContext!==void 0&&e.expectedContext!==void 0){let s=Nn(e.retrievedContext,e.expectedContext);o.contextual_recall=s.score,a.contextual_recall={covered:s.covered,total:s.total};}let c={scores:o,details:a};try{let s=(Dt(),d(Ft)),l={"evalkit.span_type":"eval_result","evalkit.eval_type":"offline"};for(let[d,u]of Object.entries(o))l[`evalkit.metric.${d}`]=u;let{end:m}=s.startSpan("evaluation",l);m("OK");}catch{}return c}var ut=b(()=>{});function dt(e){return randomBytes(e).toString("hex")}function Jt(e){return typeof e=="function"?{name:e.name||"tool"}:typeof e=="string"||e&&typeof e=="object"?e:String(e)}async function zt(e,t){let n=(t.apiUrl??process.env.EVALKIT_API_URL??e.options.apiUrl).replace(/\/$/,""),r={agentInstructions:t.agentInstructions,count:t.count??5};t.tools&&(r.tools=t.tools.map(Jt)),t.functionSchemas&&(r.functionSchemas=t.functionSchemas.map(Jt)),t.context!==void 0&&(r.context=t.context),t.rag&&(r.rag=t.rag),t.categories&&(r.categories=t.categories),t.model&&(r.model=t.model),t.provider&&(r.provider=t.provider),t.apiKey&&(r.apiKey=t.apiKey),t.temperature!==void 0&&(r.temperature=t.temperature);let o=await fetch(n+"/scenarios/generate",{method:"POST",headers:{"Content-Type":"application/json","X-Subscription-Key":e.options.subscriptionKey},body:JSON.stringify(r)});if(!o.ok){let i=await o.text().catch(()=>"");throw new Error(`generateScenarios failed ${o.status}: ${i}`)}return (await o.json()).scenarios??[]}function Gn(e){let t=e.turns??e.messages??[],n=[];for(let r of t)typeof r=="string"?n.push(r):r&&typeof r=="object"&&r.content&&(r.role??"user")==="user"&&n.push(String(r.content));return n.length===0&&e.starting_prompt&&n.push(String(e.starting_prompt)),n}function Un(e,t,n,r){let o=Array.from(new Set([...e.constraints?.required_terms??[],...e.target_keywords??[]])),a={};o.length&&(a.requiredTerms=o),e.constraints?.has_citations!==void 0&&(a.hasCitations=e.constraints.has_citations);try{return $({output:t,toolCalls:n,expectedTools:e.expected_tools??[],constraints:a,metrics:r}).scores}catch{return {}}}async function Hn(e$1,t,n,r){let o=n.name??"scenario",a=n.scenario_id??"scn_"+dt(6),i="sess_"+dt(6),c=Gn(n).slice(0,r.maxTurns),s={...n.setup?.state??{},__safe_mode__:t.safeMode??true},{traceId:l,end:m,ctx:d}=e$1.startTrace(`scenario:${o}`,{"evalkit.session_id":i});e.set(l,{simulationId:r.simulationId,runId:r.runId,scenarioId:a});let u="OK",p,g=[],f$1=[],y=0,h={};try{await context.with(d,async()=>{for(let S=0;S<c.length;S++){let O={message:c[S],sessionId:i,state:s,turn:S+1},x=await t.entrypoint(O);x&&typeof x=="object"&&"text"in x?(g.push(x.text),x.toolCalls&&f$1.push(...x.toolCalls)):g.push(String(x)),y++;}let k=f$1.length?f$1:f.get(l)??[];h=Un(n,g.join(`
2
+ `),k,t.metrics);});}catch(k){u="ERROR",p=k?.message??String(k);}finally{m(u);}let v={scenarioId:a,name:o,status:u,turns:y,scores:h};return p&&(v.error=p),{result:v,traceId:l}}async function Wt(e$1,t){let n="sim_"+dt(8),r="run_"+dt(8),o=t.maxTurns??12,a=[],i=[];for(let c of t.scenarios){let{result:s,traceId:l}=await Hn(e$1,t,c,{simulationId:n,runId:r,maxTurns:o});a.push(s),i.push(l);}await e$1.flush();for(let c of i)e.delete(c),f.delete(c);return {simulationId:n,runId:r,results:a}}var Qt=b(()=>{h();ut();});var A,Xt=b(()=>{(function(e){e[e.SUCCESS=0]="SUCCESS",e[e.FAILED=1]="FAILED";})(A||(A={}));});var Yt=b(()=>{Xt();});function _t(e){return e[0]*1e3+e[1]/1e6}function Ln(e){return {0:"INTERNAL",1:"SERVER",2:"CLIENT",3:"PRODUCER",4:"CONSUMER"}[e]??"INTERNAL"}function Bn(e){return e===1?"OK":e===2?"ERROR":"UNSET"}function Vn(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("evalkit.")||n==="gen_ai.system"||r!=null&&(t[n]=r);return t}function Zt(e){return new Promise(t=>setTimeout(t,e))}var mt,te=b(()=>{Yt();h();mt=class{constructor(t){this.url=`${t.baseUrl.replace(/\/$/,"")}/v1/ingest`,this.subscriptionKey=t.subscriptionKey,this.debug=t.debug??false;}export(t,n){let r=t.map(a=>this.toEnvelope(a)),o={events:r};this.debug&&console.log(`[evalkit] sending ${r.length} span(s) \u2192 ${this.url}`),this.fetchWithRetry(this.url,{method:"POST",headers:{"Content-Type":"application/json","X-Subscription-Key":this.subscriptionKey},body:JSON.stringify(o)}).then(async a=>{if(!a.ok){let i=await a.text().catch(()=>"(no body)");console.error(`[evalkit] export failed ${a.status}: ${i}`),n({code:A.FAILED});return}if(this.debug){let i=await a.json().catch(()=>({}));console.log(`[evalkit] exported ${r.length} span(s) \u2014 status: ${i.status}`);}n({code:A.SUCCESS});}).catch(a=>{console.error("[evalkit] export network error:",a),n({code:A.FAILED});});}async fetchWithRetry(t,n,r=3){let o=[200,600,1800],a;for(let i=0;i<=r;i++)try{let c=await fetch(t,n);if(c.ok||c.status>=400&&c.status<500)return c;if(i<r)this.debug&&console.warn(`[evalkit] HTTP ${c.status}, retry ${i+1}/${r}`),await Zt(o[i]??1800);else return c}catch(c){a=c,i<r&&(this.debug&&console.warn(`[evalkit] network error, retry ${i+1}/${r}:`,c),await Zt(o[i]??1800));}throw a}shutdown(){return Promise.resolve()}toEnvelope(t){let n=t.spanContext(),r=t.attributes,o=_t(t.startTime),a=_t(t.endTime),i=t.events.map(l=>({name:l.name,timestamp:new Date(_t(l.time)).toISOString(),attributes:l.attributes})),c={traceId:n.traceId,spanId:n.spanId,parentSpanId:t.parentSpanId,spanKind:Ln(t.kind),spanType:r["evalkit.span_type"]??"log",status:Bn(t.status.code),statusMessage:t.status.message,serviceName:t.resource.attributes["service.name"],operation:t.name,model:r["gen_ai.response.model"]??r["gen_ai.request.model"],provider:r["gen_ai.system"],prompt:r["evalkit.prompt"],completion:r["evalkit.completion"],tokensIn:Math.round(r["gen_ai.usage.input_tokens"]||0)||void 0,tokensOut:Math.round(r["gen_ai.usage.output_tokens"]||0)||void 0,latencyMs:Math.round(a-o),startTime:new Date(o).toISOString(),endTime:new Date(a).toISOString(),events:i.length>0?i:void 0,attributes:Vn(r),createdAt:new Date(o).toISOString(),environment:r["evalkit.environment"],appVersion:r["evalkit.app_version"],userId:r["evalkit.user_id"],sessionId:r["evalkit.session_id"],deviceId:r["evalkit.device_id"],sdkVersion:r["evalkit.sdk_version"]},s=e.get(n.traceId);return s&&(c.isSimulation=true,c.simulationId=s.simulationId,c.scenarioId=s.scenarioId,c.runId=s.runId),c}};});function kt(e,t=Qn){let n;try{n=JSON.stringify(e);}catch{}if(n===void 0)try{n=String(e);}catch{n="<unserializable>";}return n.length>t?n.slice(0,t)+"\u2026":n}var Wn,Qn,H,Rt=b(()=>{te();Wn="0.1.20",Qn=4096;H=class{constructor(t){this.options={serviceName:"unknown",debug:false,maxExportBatchSize:512,scheduledDelayMillis:5e3,baseUrl:"https://api.syntropylabs.ai",apiUrl:"https://api.syntropylabs.ai",environment:"",appVersion:"",...t};let n=new mt({baseUrl:this.options.baseUrl,subscriptionKey:this.options.subscriptionKey,debug:this.options.debug});this.provider=new NodeTracerProvider({resource:new Resource({[ATTR_SERVICE_NAME]:this.options.serviceName}),spanProcessors:[new BatchSpanProcessor(n,{maxExportBatchSize:this.options.maxExportBatchSize,scheduledDelayMillis:this.options.scheduledDelayMillis})]}),this.provider.register(),this.tracer=trace.getTracer("evalkit","0.1.0");}metaAttributes(){let t={"evalkit.sdk_version":Wn};return this.options.environment&&(t["evalkit.environment"]=this.options.environment),this.options.appVersion&&(t["evalkit.app_version"]=this.options.appVersion),this.options.deviceId&&(t["evalkit.device_id"]=this.options.deviceId),t}startTrace(t,n){let r=this.tracer.startSpan(t,{kind:SpanKind.SERVER,attributes:{"evalkit.span_type":"log",...this.metaAttributes(),...n}},context.active()),o=trace.setSpan(context.active(),r);return {traceId:r.spanContext().traceId,ctx:o,end:(i="OK")=>{r.setStatus({code:i==="OK"?SpanStatusCode.OK:SpanStatusCode.ERROR}),r.end();}}}startHttpTrace(t,n,r){let o=this.tracer.startSpan(t,{kind:SpanKind.SERVER,attributes:{"evalkit.span_type":"http_call","http.method":n.method,"http.url":n.url,...n.headers?{"http.request.headers":JSON.stringify(n.headers)}:{},...n.requestBody!==void 0?{"http.request.body":JSON.stringify(n.requestBody)}:{},...this.metaAttributes(),...r}},context.active()),a=trace.setSpan(context.active(),o);return {traceId:o.spanContext().traceId,ctx:a,end:(c="OK",s)=>{s?.statusCode!==void 0&&o.setAttribute("http.status_code",s.statusCode),s?.body!==void 0&&o.setAttribute("http.response.body",JSON.stringify(s.body)),s?.headers&&o.setAttribute("http.response.headers",JSON.stringify(s.headers)),o.setStatus({code:c==="OK"?SpanStatusCode.OK:SpanStatusCode.ERROR}),o.end();}}}startSpan(t,n,r){let o=this.tracer.startSpan(t,{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"function_call",...this.metaAttributes(),...n}},r??context.active());return {ctx:trace.setSpan(context.active(),o),end:(i="OK",c)=>{c&&o.setAttributes(c),o.setStatus({code:i==="OK"?SpanStatusCode.OK:SpanStatusCode.ERROR}),o.end();}}}traceFunction(t,n,r,o=true){let a=this;return function(...i){let c={"evalkit.span_type":"function_call",...r};o&&i.length&&(c["function.args"]=kt(i));let{ctx:s,end:l}=a.startSpan(t,c),m;try{m=context.with(s,()=>n.apply(this,i));}catch(d){let u=d instanceof Error?d:new Error(String(d));throw trace.getSpan(s)?.recordException(u),l("ERROR",{"error.message":u.message}),d}return m&&typeof m.then=="function"?m.then(d=>(l("OK",o?{"function.result":kt(d)}:void 0),d),d=>{let u=d instanceof Error?d:new Error(String(d));throw trace.getSpan(s)?.recordException(u),l("ERROR",{"error.message":u.message}),d}):(l("OK",o?{"function.result":kt(m)}:void 0),m)}}async flush(){await this.provider.forceFlush();}async destroy(){await this.provider.shutdown();}};});function T(e){if(!e)return context.active();let t=e.split("-");return t.length===4&&t[0]==="00"&&t[1].length===32&&t[2].length===16?trace.setSpanContext(ROOT_CONTEXT,{traceId:t[1],spanId:t[2],traceFlags:parseInt(t[3],16),isRemote:true}):context.active()}var L=b(()=>{});function tr(e,t){let n="",r=0,o=0,a=false;function i(c){a||(a=true,c?(t.recordException(c),t.setStatus({code:SpanStatusCode.ERROR,message:c.message})):(t.setAttributes({"evalkit.completion":n,"gen_ai.usage.input_tokens":r,"gen_ai.usage.output_tokens":o,"gen_ai.streaming":true}),t.setStatus({code:SpanStatusCode.OK})),t.end());}return new Proxy(e,{get(c,s,l){if(s===Symbol.asyncIterator)return function(){let d=c[Symbol.asyncIterator]();return {async next(){try{let u=await d.next();if(!u.done&&u.value){let p=u.value,g=p.choices?.[0]?.delta?.content;g&&(n+=g),p.usage&&(r=p.usage.prompt_tokens??0,o=p.usage.completion_tokens??0);}return u.done&&i(),u}catch(u){throw i(u instanceof Error?u:new Error(String(u))),u}},return(){return i(),d.return?.()??Promise.resolve({done:true,value:void 0})},throw(u){return i(u instanceof Error?u:new Error(String(u))),d.throw?.(u)??Promise.reject(u)},[Symbol.asyncIterator](){return this}}};let m=Reflect.get(c,s,l);return typeof m=="function"?m.bind(c):m}})}function K(e,t,n,r="openai"){if(t.create.__evalkit)return;let o=t.create;t.create=async function(...a){let i=a[0],c=n??context.active(),s=e.tracer.startSpan("chat.completions.create",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":r,"gen_ai.request.model":i.model??"unknown",...i.temperature!=null&&{"gen_ai.request.temperature":i.temperature},...i.max_tokens!=null&&{"gen_ai.request.max_tokens":i.max_tokens},...i.top_p!=null&&{"gen_ai.request.top_p":i.top_p},"evalkit.prompt":er(i.messages??[])}},c),l=trace.setSpan(c,s);if(i?.stream){let p;try{p=await context.with(l,()=>o.apply(this,a));}catch(g){let f=g instanceof Error?g:new Error(String(g));throw s.recordException(f),s.setStatus({code:SpanStatusCode.ERROR,message:f.message}),s.end(),g}return tr(p,s)}let m;try{m=await context.with(l,()=>o.apply(this,a));}catch(p){let g=p instanceof Error?p:new Error(String(p));throw s.recordException(g),s.setStatus({code:SpanStatusCode.ERROR,message:g.message}),s.end(),p}let d=m.choices?.[0],u=d?.message.content??"";s.setAttributes({"gen_ai.response.model":m.model,"gen_ai.response.id":m.id,"gen_ai.usage.input_tokens":m.usage?.prompt_tokens??0,"gen_ai.usage.output_tokens":m.usage?.completion_tokens??0,"gen_ai.usage.total_tokens":m.usage?.total_tokens??0,"gen_ai.response.finish_reasons":d?.finish_reason?[d.finish_reason]:[],"evalkit.completion":u});for(let p of d?.message.tool_calls??[]){s.addEvent("gen_ai.tool.call",{"gen_ai.tool.call.id":p.id,"gen_ai.tool.name":p.function.name,"gen_ai.tool.call.arguments":p.function.arguments});try{let f;try{f=JSON.parse(p.function.arguments);}catch{}g(s.spanContext().traceId,p.function.name,f);}catch{}e.tracer.startSpan(p.function.name,{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call","gen_ai.tool.name":p.function.name,"gen_ai.tool.call.id":p.id,"gen_ai.tool.call.arguments":p.function.arguments}},l).end();}return s.setStatus({code:SpanStatusCode.OK}),s.end(),m},t.create.__evalkit=true;}function er(e){return e.map(t=>`${t.role}: ${t.content??""}`).join(`
3
+ `)}var Et=b(()=>{h();});function rr(e,t){let n="",r=0,o=0,a=false;function i(s){let l=s?.type;if(l==="content_block_delta"){let m=s.delta;m?.type==="text_delta"&&m.text&&(n+=m.text);}else l==="message_start"?r=s.message?.usage?.input_tokens??0:l==="message_delta"&&(o=s.usage?.output_tokens??0);}function c(s){a||(a=true,s?(t.recordException(s),t.setStatus({code:SpanStatusCode.ERROR,message:s.message})):(t.setAttributes({"evalkit.completion":n,"gen_ai.usage.input_tokens":r,"gen_ai.usage.output_tokens":o,"gen_ai.streaming":true}),t.setStatus({code:SpanStatusCode.OK})),t.end());}return new Proxy(e,{get(s,l,m){if(l===Symbol.asyncIterator)return function(){let u=s[Symbol.asyncIterator]();return {async next(){try{let p=await u.next();return !p.done&&p.value&&i(p.value),p.done&&c(),p}catch(p){throw c(p instanceof Error?p:new Error(String(p))),p}},return(){return c(),u.return?.()??Promise.resolve({done:true,value:void 0})},throw(p){return c(p instanceof Error?p:new Error(String(p))),u.throw?.(p)??Promise.reject(p)},[Symbol.asyncIterator](){return this}}};let d=Reflect.get(s,l,m);return typeof d=="function"?d.bind(s):d}})}function P(e,t,n){if(t.create.__evalkit)return;let r=t.create;t.create=async function(...o){let a=o[0],i=n??context.active(),c=or(a.system,a.messages??[]),s=e.tracer.startSpan("messages.create",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"anthropic","gen_ai.request.model":a.model??"unknown",...a.temperature!=null&&{"gen_ai.request.temperature":a.temperature},...a.max_tokens!=null&&{"gen_ai.request.max_tokens":a.max_tokens},...a.top_p!=null&&{"gen_ai.request.top_p":a.top_p},"evalkit.prompt":c}},i),l=trace.setSpan(i,s);if(a?.stream){let u;try{u=await context.with(l,()=>r.apply(this,o));}catch(p){let g=p instanceof Error?p:new Error(String(p));throw s.recordException(g),s.setStatus({code:SpanStatusCode.ERROR,message:g.message}),s.end(),p}return rr(u,s)}let m;try{m=await context.with(l,()=>r.apply(this,o));}catch(u){let p=u instanceof Error?u:new Error(String(u));throw s.recordException(p),s.setStatus({code:SpanStatusCode.ERROR,message:p.message}),s.end(),u}let d=m.content.filter(u=>u.type==="text").map(u=>u.text??"").join("");s.setAttributes({"gen_ai.response.model":m.model,"gen_ai.response.id":m.id,"gen_ai.usage.input_tokens":m.usage?.input_tokens??0,"gen_ai.usage.output_tokens":m.usage?.output_tokens??0,"gen_ai.response.finish_reasons":m.stop_reason?[m.stop_reason]:[],"evalkit.completion":d});for(let u of m.content)if(u.type==="tool_use"){let p=u;s.addEvent("gen_ai.tool.call",{"gen_ai.tool.call.id":p.id,"gen_ai.tool.name":p.name,"gen_ai.tool.call.arguments":JSON.stringify(p.input)});try{g(s.spanContext().traceId,p.name,p.input);}catch{}e.tracer.startSpan(p.name,{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call","gen_ai.tool.name":p.name,"gen_ai.tool.call.id":p.id,"gen_ai.tool.call.arguments":JSON.stringify(p.input)}},l).end();}return s.setStatus({code:SpanStatusCode.OK}),s.end(),m},t.create.__evalkit=true;}function or(e,t){let n=[];return e&&n.push(`system: ${e}`),n.push(...t.map(r=>`${r.role}: ${r.content}`)),n.join(`
4
+ `)}var gt=b(()=>{h();});function ft(e,t){let n=t.Query?.prototype;if(!n||n.__evalkit)return;let r=n.exec;n.exec=async function(){if(!trace.getActiveSpan()?.isRecording())return r.call(this);let a=this.op??"query",i=this.model?.collection?.name??this._collection?.collectionName??"unknown",c=e.tracer.startSpan(`${a} ${i}`,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"mongodb","db.operation":a,"db.collection":i,"db.query":JSON.stringify(this._conditions??{})}},context.active());try{let s=await r.call(this);return c.setStatus({code:SpanStatusCode.OK}),c.end(),s}catch(s){let l=s instanceof Error?s:new Error(String(s));throw c.recordException(l),c.setStatus({code:SpanStatusCode.ERROR,message:l.message}),c.end(),s}},n.__evalkit=true;}var wt=b(()=>{});function X(e,t){let r=t?.prototype&&(typeof t.prototype.sendCommand=="function"||typeof t.prototype.call=="function")?t.prototype:Object.getPrototypeOf(t);if(!r||r.__evalkit_redis)return;let o=typeof r.sendCommand=="function"?"sendCommand":typeof r.call=="function"?"call":null;if(!o)return;let a=r[o];r[o]=async function(i,...c){if(!trace.getActiveSpan()?.isRecording())return a.call(this,i,...c);let l=Array.isArray(i)?i[0]:i?.name??i?.args?.[0]??"cmd",m=(typeof l=="string"?l:String(l)).toUpperCase(),d=e.tracer.startSpan(`redis ${m}`,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"redis","db.operation":m}},context.active());try{let u=await a.call(this,i,...c);return d.setStatus({code:SpanStatusCode.OK}),d.end(),u}catch(u){let p=u instanceof Error?u:new Error(String(u));throw d.recordException(p),d.setStatus({code:SpanStatusCode.ERROR,message:p.message}),d.end(),u}},r.__evalkit_redis=true;}var Ot=b(()=>{});function w(e){let t={};for(let[n,r]of Object.entries(e))ur.test(n)||r!==void 0&&(t[n]=Array.isArray(r)?r.join(", "):String(r));return t}var ur,Tt=b(()=>{ur=/^(authorization|cookie|set-cookie|x-api-key|api-key|x-auth-token|proxy-authorization|x-secret|x-access-token|token|password)$/i;});var B,At=b(()=>{B=new Map;});function Y(e,t){if(!t.__evalkit_axios){if(t.__evalkit_axios=true,typeof t.create=="function"){let n=t.create.bind(t);t.create=function(...r){let o=n(...r);return Y(e,o),o};}t.interceptors.request.use(n=>{let r=(n.baseURL?n.baseURL.replace(/\/$/,""):"")+(n.url??"");if(fr.some(m=>m.test(r))||!trace.getActiveSpan()?.isRecording())return n;let a=n.url??"";try{a=new URL(r,n.baseURL??"http://localhost").pathname;}catch{}let i=(n.method??"get").toUpperCase(),c=w(n.headers??{}),s=e.tracer.startSpan(`${i} ${a}`,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"http_call","http.method":i,"http.url":r,...Object.keys(c).length?{"http.request.headers":JSON.stringify(c)}:{},...n.data!==void 0?{"http.request.body":typeof n.data=="string"?n.data.slice(0,4096):JSON.stringify(n.data).slice(0,4096)}:{}}},context.active()),l=s.spanContext();return n.headers=n.headers??{},n.headers.traceparent=`00-${l.traceId}-${l.spanId}-01`,n.headers["x-evalkit-span-id"]=l.spanId,B.set(l.spanId,s),n.__evalkitSpan=s,n.__evalkitSpanId=l.spanId,n}),t.interceptors.response.use(n=>{let r=n.config?.__evalkitSpan;if(n.config?.__evalkitSpanId&&B.delete(n.config.__evalkitSpanId),r){let o=w(n.headers??{}),a=n.data,i;a!=null&&(i=(typeof a=="string"?a:JSON.stringify(a)).slice(0,4096)),r.setAttributes({"http.status_code":n.status,...Object.keys(o).length?{"http.response.headers":JSON.stringify(o)}:{},...i!==void 0?{"http.response.body":i}:{}}),r.setStatus({code:SpanStatusCode.OK}),r.end();}return n},n=>{let r=n.config?.__evalkitSpan;if(n.config?.__evalkitSpanId&&B.delete(n.config.__evalkitSpanId),r){let o=n.response?.status??0,a=w(n.response?.headers??{}),i=n.response?.data,c;i!=null&&(c=(typeof i=="string"?i:JSON.stringify(i)).slice(0,4096)),r.setAttributes({"http.status_code":o,"error.message":n.message,...Object.keys(a).length?{"http.response.headers":JSON.stringify(a)}:{},...c!==void 0?{"http.response.body":c}:{}}),r.recordException(n instanceof Error?n:new Error(String(n))),r.setStatus({code:SpanStatusCode.ERROR,message:n.message}),r.end();}throw n});}}var fr,It=b(()=>{Tt();At();fr=[/\/v1\/ingest/,/\/health(z)?$/];});function Z(e,t){let n=t?.prototype??Object.getPrototypeOf(t);if(!n||n.__evalkit_pg)return;let r=n.query;typeof r=="function"&&(n.query=function(...o){if(!trace.getActiveSpan()?.isRecording())return r.apply(this,o);let i=typeof o[0]=="string"?o[0]:o[0]?.text??o[0]?.name??"query",c=Array.isArray(o[1])?o[1]:o[0]?.values??void 0,l=i.trim().match(/^(\w+)/)?.[1]?.toUpperCase()??"QUERY",d=i.match(/(?:FROM|INTO|UPDATE|JOIN)\s+"?(\w+)"?/i)?.[1]??"",u=d?`${l} ${d}`:`pg ${l}`,p=e.tracer.startSpan(u,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"postgresql","db.operation":l,"db.statement":i.slice(0,2048),...c!==void 0?{"db.params":JSON.stringify(c).slice(0,1024)}:{},...d?{"db.sql.table":d}:{}}},context.active()),g=o[o.length-1];if(typeof g=="function"){let y=g,h=o.slice(0,-1).concat([(v,k)=>{v?(p.recordException(v),p.setStatus({code:SpanStatusCode.ERROR,message:v.message}),p.setAttribute("error.message",v.message)):(p.setAttribute("db.rows_affected",k?.rowCount??0),p.setStatus({code:SpanStatusCode.OK})),p.end(),y(v,k);}]);return r.apply(this,h)}return r.apply(this,o).then(y=>(p.setAttribute("db.rows_affected",y?.rowCount??0),p.setStatus({code:SpanStatusCode.OK}),p.end(),y),y=>{let h=y instanceof Error?y:new Error(String(y));throw p.recordException(h),p.setStatus({code:SpanStatusCode.ERROR,message:h.message}),p.setAttribute("error.message",h.message),p.end(),y})},n.__evalkit_pg=true);}var Kt=b(()=>{});function tt(e,t){let n=t?.prototype??Object.getPrototypeOf(t);if(!(!n||n.__evalkit_mysql2)){for(let r of ["query","execute"]){let o=n[r];typeof o=="function"&&(n[r]=function(...a){if(!trace.getActiveSpan()?.isRecording())return o.apply(this,a);let c=typeof a[0]=="string"?a[0]:a[0]?.sql??"query",s=Array.isArray(a[1])?a[1]:void 0,m=c.trim().match(/^(\w+)/)?.[1]?.toUpperCase()??"QUERY",u=c.match(/(?:FROM|INTO|UPDATE|JOIN)\s+`?(\w+)`?/i)?.[1]??"",p=u?`${m} ${u}`:`mysql ${m}`,g=e.tracer.startSpan(p,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"db_query","db.system":"mysql","db.operation":m,"db.statement":c.slice(0,2048),...s!==void 0?{"db.params":JSON.stringify(s).slice(0,1024)}:{},...u?{"db.sql.table":u}:{}}},context.active()),f=a[a.length-1];if(typeof f=="function"){let h=f,v=a.slice(0,-1).concat([(k,S,O)=>{k?(g.recordException(k),g.setStatus({code:SpanStatusCode.ERROR,message:k.message}),g.setAttribute("error.message",k.message)):(g.setAttribute("db.rows_affected",Array.isArray(S)?S.length:S?.affectedRows??0),g.setStatus({code:SpanStatusCode.OK})),g.end(),h(k,S,O);}]);return o.apply(this,v)}let y=o.apply(this,a);return y&&typeof y.then=="function"?y.then(([h,v])=>(g.setAttribute("db.rows_affected",Array.isArray(h)?h.length:h?.affectedRows??0),g.setStatus({code:SpanStatusCode.OK}),g.end(),[h,v]),h=>{let v=h instanceof Error?h:new Error(String(h));throw g.recordException(v),g.setStatus({code:SpanStatusCode.ERROR,message:v.message}),g.setAttribute("error.message",v.message),g.end(),h}):(g.end(),y)});}n.__evalkit_mysql2=true;}}var Pt=b(()=>{});function Sr(e){if(!e||typeof e!="object")return false;let t=e.constructor?.name??"";return t==="ConverseCommand"||t==="ConverseStreamCommand"}function et(e,t,n){if(t.send.__evalkit)return;let r=t.send;t.send=async function(...o){let a=o[0];if(!Sr(a))return r.apply(this,o);let i=a.input,c=i?.modelId??"unknown",s=c.split(".")[0]??"bedrock",l=i?.system?.map(v=>v.text).join(`
5
+ `)??"",m=i?.messages?.map(v=>`${v.role}: ${v.content.map(k=>k.text??"").join("")}`)??[],d=[l?`system: ${l}`:"",...m].filter(Boolean).join(`
6
+ `),u=i?.inferenceConfig??{},p=context.active(),g=e.tracer.startSpan("converse",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":s,"gen_ai.request.model":c,...u.temperature!=null&&{"gen_ai.request.temperature":u.temperature},...u.maxTokens!=null&&{"gen_ai.request.max_tokens":u.maxTokens},...u.topP!=null&&{"gen_ai.request.top_p":u.topP},"evalkit.prompt":d}},p),f=trace.setSpan(p,g),y;try{y=await context.with(f,()=>r.apply(this,o));}catch(v){let k=v instanceof Error?v:new Error(String(v));throw g.recordException(k),g.setStatus({code:SpanStatusCode.ERROR,message:k.message}),g.end(),v}let h=y.output?.message?.content?.map(v=>v.text??"").join("")??"";return g.setAttributes({"gen_ai.response.model":c,"gen_ai.usage.input_tokens":y.usage?.inputTokens??0,"gen_ai.usage.output_tokens":y.usage?.outputTokens??0,"gen_ai.usage.total_tokens":y.usage?.totalTokens??0,"gen_ai.response.finish_reasons":y.stopReason?[y.stopReason]:[],"evalkit.completion":h}),g.setStatus({code:SpanStatusCode.OK}),g.end(),y},t.send.__evalkit=true;}var Mt=b(()=>{});function nt(e,t,n){if(t.chat.__evalkit)return;let r=t.chat;t.chat=async function(...o){let a=o[0];if(a?.stream)return r.apply(this,o);let i=a?.chatHistory?.map(u=>`${u.role}: ${u.message??""}`)??[],c=[a?.preamble?`system: ${a.preamble}`:"",...i,`user: ${a?.message??""}`].filter(Boolean).join(`
7
+ `),s=context.active(),l=e.tracer.startSpan("chat",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"cohere","gen_ai.request.model":a?.model??"unknown",...a?.temperature!=null&&{"gen_ai.request.temperature":a.temperature},...a?.maxTokens!=null&&{"gen_ai.request.max_tokens":a.maxTokens},"evalkit.prompt":c}},s),m=trace.setSpan(s,l),d;try{d=await context.with(m,()=>r.apply(this,o));}catch(u){let p=u instanceof Error?u:new Error(String(u));throw l.recordException(p),l.setStatus({code:SpanStatusCode.ERROR,message:p.message}),l.end(),u}return l.setAttributes({"gen_ai.response.model":a?.model??"unknown","gen_ai.response.id":d.generationId??"","gen_ai.usage.input_tokens":d.meta?.tokens?.inputTokens??0,"gen_ai.usage.output_tokens":d.meta?.tokens?.outputTokens??0,"gen_ai.response.finish_reasons":d.finishReason?[d.finishReason]:[],"evalkit.completion":d.text??""}),l.setStatus({code:SpanStatusCode.OK}),l.end(),d},t.chat.__evalkit=true;}var qt=b(()=>{});function rt(e,t,n){if(t.generateContent.__evalkit)return;let r=t.generateContent,o=t.model??"unknown";t.generateContent=async function(...a){let i=a[0],c="";if(typeof i=="string")c=`user: ${i}`;else {let f=i,y=f?.systemInstruction?.parts?.map(v=>v.text??"").join("")??"",h=f?.contents?.map(v=>`${v.role??"user"}: ${v.parts.map(k=>k.text??"").join("")}`)??[];c=[y?`system: ${y}`:"",...h].filter(Boolean).join(`
8
+ `);}let s=context.active(),l=e.tracer.startSpan("generateContent",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-ai","gen_ai.request.model":o,"evalkit.prompt":c}},s),m=trace.setSpan(s,l),d;try{d=await context.with(m,()=>r.apply(this,a));}catch(f){let y=f instanceof Error?f:new Error(String(f));throw l.recordException(y),l.setStatus({code:SpanStatusCode.ERROR,message:y.message}),l.end(),f}let u=d?.response,p=u?.candidates?.[0],g=p?.content?.parts?.map(f=>f.text??"").join("")??"";return l.setAttributes({"gen_ai.response.model":o,"gen_ai.usage.input_tokens":u?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":u?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":u?.usageMetadata?.totalTokenCount??0,"gen_ai.response.finish_reasons":p?.finishReason?[p.finishReason]:[],"evalkit.completion":g}),l.setStatus({code:SpanStatusCode.OK}),l.end(),d},t.generateContent.__evalkit=true;}var Nt=b(()=>{});function me(e){return e?.text??""}function Tr(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(t=>{if(typeof t=="string")return t;let n=t,r=n.role??"user",o=(n.parts??[]).map(me).join("");return o?`${r}: ${o}`:""}).filter(Boolean).join(`
9
+ `);if(e&&typeof e=="object"){let t=e;if(t.parts)return (t.parts??[]).map(me).join("")}return e!=null?String(e):""}function Ar(e){let t=e?.systemInstruction;return t?typeof t=="string"?t:Array.isArray(t?.parts)?t.parts.map(n=>n?.text??"").join(""):typeof t?.text=="string"?t.text:"":""}function ge(e){let t=Ar(e?.config),n=Tr(e?.contents);return [t?`system: ${t}`:"",n].filter(Boolean).join(`
10
+ `)}function fe(e){let t=[];for(let n of e?.candidates??[])for(let r of n.content?.parts??[])r.text&&t.push(r.text);return t.length?t.join(""):e?.text??""}function ye(e,t,n){let r=[];if(Array.isArray(e?.functionCalls))r.push(...e.functionCalls);else for(let o of e?.candidates??[])for(let a of o.content?.parts??[])a.functionCall?.name&&r.push(a.functionCall);for(let o of r){let a=o.name??"";if(!a)continue;let i="";try{i=JSON.stringify(o.args??{});}catch{i=String(o.args);}t.addEvent("gen_ai.tool.call",{"gen_ai.tool.name":a,"gen_ai.tool.call.arguments":i,"gen_ai.tool.call.id":o.id??""});let c=Ir(t);g(n,a,o.args),c&&c.end();}}function Ir(e){if(!Gt)return null;let t=trace.setSpan(context.active(),e);return Gt.tracer.startSpan("tool_call",{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call"}},t)}function at(e,t,n){if(Gt=e,t.generateContent&&!t.generateContent.__evalkit){let r=t.generateContent;t.generateContent=async function(...o){let a=o[0]??{},i=a.model??"unknown",c=context.active(),s=e.tracer.startSpan("generateContent",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-genai","gen_ai.request.model":i,"evalkit.prompt":ge(a)}},c),l=trace.setSpan(c,s),m;try{m=await context.with(l,()=>r.apply(this,o));}catch(d){let u=d instanceof Error?d:new Error(String(d));throw s.recordException(u),s.setStatus({code:SpanStatusCode.ERROR,message:u.message}),s.end(),d}s.setAttributes({"gen_ai.response.model":i,"gen_ai.usage.input_tokens":m?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":m?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":m?.usageMetadata?.totalTokenCount??0,"evalkit.completion":fe(m)});try{ye(m,s,s.spanContext().traceId);}catch{}return s.setStatus({code:SpanStatusCode.OK}),s.end(),m},t.generateContent.__evalkit=true;}if(t.generateContentStream&&!t.generateContentStream.__evalkit){let r=t.generateContentStream;t.generateContentStream=async function(...o){let a=o[0]??{},i=a.model??"unknown",c=context.active(),s=e.tracer.startSpan("generateContentStream",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-genai","gen_ai.request.model":i,"gen_ai.streaming":true,"evalkit.prompt":ge(a)}},c),l=trace.setSpan(c,s),m;try{m=await context.with(l,()=>r.apply(this,o));}catch(u){let p=u instanceof Error?u:new Error(String(u));throw s.recordException(p),s.setStatus({code:SpanStatusCode.ERROR,message:p.message}),s.end(),u}async function*d(){let u=[],p=0,g=0;try{for await(let f of m){try{let y=fe(f);y&&u.push(y),f?.usageMetadata&&(p=f.usageMetadata.promptTokenCount??p,g=f.usageMetadata.candidatesTokenCount??g),ye(f,s,s.spanContext().traceId);}catch{}yield f;}s.setAttributes({"gen_ai.response.model":i,"gen_ai.usage.input_tokens":p,"gen_ai.usage.output_tokens":g,"evalkit.completion":u.join("")}),s.setStatus({code:SpanStatusCode.OK});}catch(f){let y=f instanceof Error?f:new Error(String(f));throw s.recordException(y),s.setStatus({code:SpanStatusCode.ERROR,message:y.message}),f}finally{s.end();}}return d()},t.generateContentStream.__evalkit=true;}}var Gt,Ut=b(()=>{h();Gt=null;});function it(e,t,n){P(e,t,n);}function ct(e,t,n){if(t.generateContent.__evalkit)return;let r=t.generateContent,o=t.model??"unknown";t.generateContent=async function(...a){let i=a[0],c=i?.systemInstruction?.parts?.map(h=>h.text??"").join("")??"",s=i?.contents?.map(h=>`${h.role??"user"}: ${h.parts.map(v=>v.text??"").join("")}`)??[],l=[c?`system: ${c}`:"",...s].filter(Boolean).join(`
11
+ `),m=context.active(),d=e.tracer.startSpan("generateContent",{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"llm_call","gen_ai.system":"google-vertex","gen_ai.request.model":o,"evalkit.prompt":l}},m),u=trace.setSpan(m,d),p;try{p=await context.with(u,()=>r.apply(this,a));}catch(h){let v=h instanceof Error?h:new Error(String(h));throw d.recordException(v),d.setStatus({code:SpanStatusCode.ERROR,message:v.message}),d.end(),h}let g=p?.response,f=g?.candidates?.[0],y=f?.content?.parts?.map(h=>h.text??"").join("")??"";return d.setAttributes({"gen_ai.response.model":o,"gen_ai.usage.input_tokens":g?.usageMetadata?.promptTokenCount??0,"gen_ai.usage.output_tokens":g?.usageMetadata?.candidatesTokenCount??0,"gen_ai.usage.total_tokens":g?.usageMetadata?.totalTokenCount??0,"gen_ai.response.finish_reasons":f?.finishReason?[f.finishReason]:[],"evalkit.completion":y}),d.setStatus({code:SpanStatusCode.OK}),d.end(),p},t.generateContent.__evalkit=true;}var Ht=b(()=>{gt();});function xe(e,t={},n){function r(o,a,i){let c={...t,...a};o.addHook("onRequest",(s,l,m)=>{let d=s.routerPath??s.routeOptions?.url??s.url??"/",u=typeof c.name=="function"?c.name(s):c.name??`${String(s.method??"GET")} ${String(d)}`,p=s.headers?.traceparent,g=n?n(p):context.active(),{traceId:f,end:y,ctx:h}=context.with(g,()=>e.startHttpTrace(u,{method:String(s.method??"GET"),url:String(s.url??"/"),headers:s.headers,requestBody:void 0}));s._evalkitCtx=h,s._evalkitTraceId=f,s._evalkitEnd=y,s._evalkitEnded=false,context.with(h,m);}),o.addHook("preHandler",(s,l,m)=>{if(s._evalkitCtx&&s.body!==void 0){let d=trace.getActiveSpan();if(d?.isRecording())try{d.setAttribute("http.request.body",typeof s.body=="string"?s.body.slice(0,4096):JSON.stringify(s.body).slice(0,4096));}catch{}}context.with(s._evalkitCtx??context.active(),m);}),o.addHook("onResponse",(s,l,m)=>{if(typeof s._evalkitEnd=="function"&&!s._evalkitEnded){s._evalkitEnded=true;let d=l.statusCode??200;s._evalkitEnd(d>=400?"ERROR":"OK",{statusCode:d});}m();}),o.addHook("onError",(s,l,m,d)=>{typeof s._evalkitEnd=="function"&&!s._evalkitEnded&&(s._evalkitEnded=true,s._evalkitEnd("ERROR",{statusCode:l.statusCode??500})),d();}),i();}return r[Symbol.for("skip-override")]=true,r}var _e=b(()=>{});function ke(e,t){return (n,r,o)=>{let a=typeof t?.name=="function"?t.name(n):t?.name??`${String(n.method)} ${String(n.route?.path??n.path??n.url)}`,i=T(n.headers?.traceparent),{end:c,ctx:s,traceId:l}=context.with(i,()=>e.startHttpTrace(a,{method:String(n.method??"GET"),url:String(n.originalUrl??n.url??"/"),headers:n.headers,requestBody:n.body}));n._evalkitCtx=s,n._evalkitTraceId=l;let m=trace.getSpan(s)?.spanContext().spanId??"0000000000000000";r.setHeader?.("x-trace-id",l),r.setHeader?.("traceparent",`00-${l}-${m}-01`);let d=r.end;r.end=function(...u){let p=r.statusCode??200;return c(p>=400?"ERROR":"OK",{statusCode:p,headers:r.getHeaders?r.getHeaders():void 0}),d.apply(r,u)},context.with(s,()=>o());}}var Re=b(()=>{L();});function Ee(e,t){return async(n,r)=>{let o=typeof t?.name=="function"?t.name(n):t?.name??`${String(n.method??"GET")} ${String(n.path??"/")}`,a=T(n.request?.headers?.traceparent),{end:i,ctx:c}=context.with(a,()=>e.startHttpTrace(o,{method:String(n.method??"GET"),url:String(n.href??n.url??"/"),headers:n.request?.headers,requestBody:n.request?.body}));n._evalkitCtx=c;try{await context.with(c,r);let s=n.status??200;i(s>=400?"ERROR":"OK",{statusCode:s});}catch(s){throw i("ERROR",{statusCode:n.status??500}),s}}}var be=b(()=>{L();});function Oe(e,t){return async(n,r)=>{let o=n.req,a=o.url??"/",i=a;try{i=new URL(a).pathname;}catch{}let c=typeof t?.name=="function"?t.name(n):t?.name??`${String(o.method??"GET")} ${i}`,s=T(o.header("traceparent")),{end:l,ctx:m}=context.with(s,()=>e.startHttpTrace(c,{method:String(o.method??"GET"),url:a,headers:Object.fromEntries(o.raw?.headers??[])}));try{await context.with(m,r);let d=n.res?.status??200;l(d>=400?"ERROR":"OK",{statusCode:d});}catch(d){throw l("ERROR",{statusCode:500}),d}}}var Te=b(()=>{L();});function Ae(e,t){return {name:"@evalkit/hapi",register(n){let r=new WeakMap;n.ext("onRequest",(o,a)=>{let i=typeof t?.name=="function"?t.name(o):t?.name??`${String(o.method?.toUpperCase()??"GET")} ${String(o.path??"/")}`,c=T(o.headers?.traceparent),{end:s,ctx:l}=context.with(c,()=>e.startHttpTrace(i,{method:String(o.method?.toUpperCase()??"GET"),url:String(o.url?.href??o.path??"/"),headers:o.headers}));return r.set(o,{end:s,ctx:l}),a.continue}),n.ext("onPreResponse",(o,a)=>{let i=r.get(o);if(i){let c=o.response?.output?.statusCode??o.response?.statusCode??200;i.end(c>=400?"ERROR":"OK",{statusCode:c}),r.delete(o);}return a.continue});}}}var Ie=b(()=>{L();});var V,Lt=b(()=>{V=class{constructor(t){this.client=t;}intercept(t,n){let r=t.switchToHttp?.();if(!r)return n.handle();let o=r.getRequest(),a=`${String(o.method??"GET")} ${String(o.route?.path??o.path??o.url??"/")}`,{ctx:i,end:c}=this.client.startHttpTrace(a,{method:String(o.method??"GET"),url:String(o.originalUrl??o.url??"/"),headers:o.headers,requestBody:o.body}),s=context.with(i,()=>n.handle());return {subscribe(l){return s.subscribe({next:m=>l.next?.(m),error:m=>{c("ERROR"),l.error?.(m);},complete:()=>{let m=r.getResponse().statusCode??200;c(m>=400?"ERROR":"OK",{statusCode:m}),l.complete?.();}})},pipe(...l){return s.pipe(...l)}}}};});function Bt(e){return $r.some(t=>t.test(e))}function Gr(e,t,n){let r="",o="GET";if(typeof e=="string")r=e,o=(t?.method??"GET").toUpperCase();else if(e instanceof URL)r=e.href,o=(t?.method??"GET").toUpperCase();else {let i=e.hostname??e.host??"localhost",c=e.port?`:${e.port}`:"",s=e.path??"/";r=`${n}://${i}${c}${s}`,o=(e.method??t?.method??"GET").toUpperCase();}let a=r;try{a=new URL(r.startsWith("http")?r:`${n}://localhost${r}`).pathname;}catch{}return {url:r,method:o,pathname:a}}function Me(e){let t,n;try{let a$1=typeof a<"u"?a:createRequire(import.meta.url);t=a$1("http"),n=a$1("https");}catch{return}let r=[{mod:t,scheme:"http"},{mod:n,scheme:"https"}];for(let{mod:a,scheme:i}of r){let s=function(l,m,d){let u=typeof m=="function"?void 0:m,{url:p,method:g,pathname:f}=Gr(l,u,i);if(Bt(p)||!trace.getActiveSpan()?.isRecording())return c.call(a,l,m,d);let h={...typeof l=="object"&&!(l instanceof URL)?l.headers??{}:{},...u?.headers??{}},v=h["x-evalkit-span-id"];if(v){typeof l=="object"&&!(l instanceof URL)&&l.headers&&delete l.headers["x-evalkit-span-id"],u?.headers&&delete u.headers["x-evalkit-span-id"];let R=B.get(String(v));if(R){let N=w({...h});delete N["x-evalkit-span-id"],Object.keys(N).length&&R.setAttributes({"http.request.headers":JSON.stringify(N)});}return c.call(a,l,m,d)}let k=w(h),S=e.tracer.startSpan(`${g} ${f}`,{kind:SpanKind.CLIENT,attributes:{"evalkit.span_type":"http_call","http.method":g,"http.url":p,...Object.keys(k).length?{"http.request.headers":JSON.stringify(k)}:{}}},context.active()),O=c.call(a,l,m,d),x=S.spanContext();return O.setHeader("traceparent",`00-${x.traceId}-${x.spanId}-01`),O.on("response",R=>{let N=R.statusCode??0;S.setAttributes({"http.status_code":N,...R.headers?{"http.response.headers":JSON.stringify(w(R.headers))}:{}}),S.setStatus({code:N>=400?SpanStatusCode.ERROR:SpanStatusCode.OK}),S.end();}),O.on("error",R=>{S.setAttributes({"http.status_code":0,"error.message":R.message}),S.recordException(R instanceof Error?R:new Error(String(R))),S.setStatus({code:SpanStatusCode.ERROR,message:R.message}),S.end();}),O};let c=a.request;c.__evalkit||(s.__evalkit=true,Object.defineProperty(a,"request",{value:s,writable:true,configurable:true}));}}function qe(e){let t;try{t=(typeof a<"u"?a:createRequire(import.meta.url))("http");}catch{return}if(t.Server.prototype.emit.__evalkit_server)return;let n=t.Server.prototype.emit;function r(o,...a){if(o!=="request")return n.call(this,o,...a);let i=a[0],c=a[1],s=i.url??"/";if(Bt(s))return n.call(this,o,...a);if(trace.getActiveSpan()?.isRecording())return n.call(this,o,...a);let l=(i.method??"GET").toUpperCase(),m=s;try{m=new URL(s,"http://localhost").pathname;}catch{}let d=i.headers.traceparent,u=d?Ur(Array.isArray(d)?d[0]:d):context.active(),p=e.tracer.startSpan(`${l} ${m}`,{kind:SpanKind.SERVER,attributes:{"evalkit.span_type":"http_call","http.method":l,"http.url":s,"http.request.headers":JSON.stringify(w(i.headers))}},u),g=trace.setSpan(u,p),f=p.spanContext();c.setHeader("x-trace-id",f.traceId),c.setHeader("traceparent",`00-${f.traceId}-${f.spanId}-01`);let y=8192,h=[],v=0,k=x=>{try{if(x&&typeof x!="function"&&v<y){let R=Buffer.isBuffer(x)?x:typeof x=="string"?Buffer.from(x):null;R&&R.length&&(h.push(R),v+=R.length);}}catch{}},S=c.write.bind(c),O=c.end.bind(c);return c.write=function(x,...R){return k(x),S(x,...R)},c.end=function(x,...R){return k(x),O(x,...R)},c.on("finish",()=>{p.setAttribute("http.status_code",c.statusCode);try{let x=c.getHeaders();x&&Object.keys(x).length&&p.setAttribute("http.response.headers",JSON.stringify(w(x)));}catch{}if(h.length)try{let x=Buffer.concat(h).subarray(0,y).toString("utf-8");x&&p.setAttribute("http.response.body",x);}catch{}p.setStatus({code:c.statusCode>=400?SpanStatusCode.ERROR:SpanStatusCode.OK}),p.end();}),c.on("error",x=>{p.setAttribute("error.message",x.message),p.recordException(x instanceof Error?x:new Error(String(x))),p.setStatus({code:SpanStatusCode.ERROR,message:x.message}),p.end();}),context.with(g,()=>n.call(this,o,...a))}r.__evalkit_server=true,t.Server.prototype.emit=r;}function Ur(e){let t=e.split("-");if(t.length<4)return context.active();let[,n,r,o]=t;if(!n||!r)return context.active();try{let a={traceId:n,spanId:r,isRemote:!0,traceFlags:parseInt(o??"01",16)};return trace.setSpanContext(context.active(),a)}catch{return context.active()}}function Ne(){if(typeof globalThis.fetch!="function"||globalThis.fetch.__evalkit)return;let e=globalThis.fetch.bind(globalThis);globalThis.fetch=async function(n,r){let o=typeof n=="string"?n:n instanceof URL?n.href:n.url;if(Bt(o))return e(n,r);let a=trace.getActiveSpan();if(!a?.isRecording())return e(n,r);let i=(r?.method??"GET").toUpperCase(),c=o;try{c=new URL(o).pathname;}catch{}let s={};r?.headers&&new Headers(r.headers).forEach((f,y)=>{s[y]=f;});let l=w(s),m=a.spanContext(),d=`00-${m.traceId}-${m.spanId}-01`,u=new Headers(r?.headers);u.set("traceparent",d);let p={...r,headers:u};Object.keys(l).length&&a.addEvent("http.fetch.request",{"http.method":i,"http.url":o,"http.request.headers":JSON.stringify(l)});try{let g=await e(n,p),f={};return g.headers.forEach((y,h)=>{f[h]=y;}),a.addEvent("http.fetch.response",{"http.url":o,"http.status_code":g.status,"http.response.headers":JSON.stringify(w(f))}),g}catch(g){throw a.addEvent("http.fetch.error",{"http.url":o,"error.message":g?.message??String(g),"error.stack":g?.stack??""}),g}},globalThis.fetch.__evalkit=true;}var $r,je=b(()=>{Tt();At();$r=[/\/v1\/ingest/,/\/health(z)?$/,/169\.254\./,/metadata\.google/,/storage\.googleapis/];});function Ge(e){if(console.__evalkit)return;let t=console.log.bind(console),n=console.warn.bind(console),r=console.error.bind(console),o=i=>i.map(c=>{if(typeof c=="string")return c;if(c instanceof Error)return `${c.message}
12
+ ${c.stack??""}`;try{return JSON.stringify(c)}catch{return String(c)}}).join(" ").slice(0,2e3),a=(i,c)=>{let s=trace.getActiveSpan();if(s?.isRecording())s.addEvent(`log.${i}`,{"log.level":i,"log.message":c});else {let l=e.tracer.startSpan(`log.${i}`,{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"log","log.level":i,"log.message":c}},context.active());l.setStatus({code:i==="ERROR"?SpanStatusCode.ERROR:SpanStatusCode.OK}),l.end();}};console.log=(...i)=>{t(...i),a("INFO",o(i));},console.warn=(...i)=>{n(...i),a("WARN",o(i));},console.error=(...i)=>{r(...i),a("ERROR",o(i));},console.__evalkit=true;}var Ue=b(()=>{});function Be(){typeof process>"u"||(process.on("unhandledRejection",e=>{let t=trace.getActiveSpan();if(!t?.isRecording())return;let n=e instanceof Error?e:new Error(String(e));t.addEvent("error.unhandled_rejection",{"error.message":n.message,"error.stack":n.stack??"","log.level":"ERROR","log.message":`UnhandledRejection: ${n.message}`}),t.recordException(n),t.setStatus({code:SpanStatusCode.ERROR,message:n.message});}),process.on("uncaughtException",e=>{let t=trace.getActiveSpan();t?.isRecording()&&(t.addEvent("error.uncaught_exception",{"error.message":e.message,"error.stack":e.stack??"","log.level":"ERROR","log.message":`UncaughtException: ${e.message}`}),t.recordException(e),t.setStatus({code:SpanStatusCode.ERROR,message:e.message}));}));}var Ve=b(()=>{});function Vr(e){let t=j("mongoose");t&&ft(e,t);}function Fr(e){let t=j("axios");t&&Y(e,t.default??t);}async function Dr(e){try{let n=k()("pg"),r=n.Client??n.default?.Client;if(r){Z(e,r);return}}catch{}try{let t=await i("pg"),n=t.Client??t.default?.Client;n&&Z(e,n);}catch{}}async function Jr(e){try{let t=k(),n=t("mysql2"),r=n.Connection??n.default?.Connection??t("mysql2/lib/connection");if(r){tt(e,r);return}}catch{}try{let t=await i("mysql2"),n=t.Connection??t.default?.Connection;n&&tt(e,n);}catch{}}async function zr(e){try{let n=k()("ioredis"),r=n.default??n.Redis??n;if(r?.prototype){X(e,r);return}}catch{}try{let t=await i("ioredis"),n=t.default??t.Redis??t;n?.prototype&&X(e,n);}catch{}}async function Wr(e){try{let n=k()("openai"),o=(n.default??n.OpenAI??n)?.Chat?.Completions?.prototype;if(o){K(e,o);return}}catch{}try{let t=await i("openai"),r=(t.default??t.OpenAI??t)?.Chat?.Completions?.prototype;r&&K(e,r);}catch{}}async function Qr(e){try{let n=k()("@anthropic-ai/sdk"),o=(n.default??n.Anthropic??n)?.Messages?.prototype;if(o){P(e,o);return}}catch{}try{let t=await i("@anthropic-ai/sdk"),r=(t.default??t.Anthropic??t)?.Messages?.prototype;r&&P(e,r);}catch{}}async function Xr(e){try{let n=k()("@aws-sdk/client-bedrock-runtime"),o=(n.BedrockRuntimeClient??n.default?.BedrockRuntimeClient)?.prototype;if(o){et(e,o);return}}catch{}try{let t=await i("@aws-sdk/client-bedrock-runtime"),r=(t.BedrockRuntimeClient??t.default?.BedrockRuntimeClient)?.prototype;r&&et(e,r);}catch{}}async function Yr(e){try{let n=k()("@anthropic-ai/sdk"),o=(n.AnthropicVertex??n.default?.AnthropicVertex)?.Messages?.prototype;if(o){it(e,o);return}}catch{}try{let t=await i("@anthropic-ai/sdk"),r=(t.AnthropicVertex??t.default?.AnthropicVertex)?.Messages?.prototype;r&&it(e,r);}catch{}}async function Zr(e){try{let n=k()("@google-cloud/vertexai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){ct(e,o);return}}catch{}try{let t=await i("@google-cloud/vertexai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&ct(e,r);}catch{}}async function to(e){try{let n=k()("cohere-ai"),o=(n.CohereClient??n.default?.CohereClient??n.default)?.prototype;if(o){nt(e,o);return}}catch{}try{let t=await i("cohere-ai"),r=(t.CohereClient??t.default?.CohereClient??t.default)?.prototype;r&&nt(e,r);}catch{}}async function eo(e){try{let n=k()("@google/generative-ai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){rt(e,o);return}}catch{}try{let t=await i("@google/generative-ai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&rt(e,r);}catch{}}async function no(e){try{let n=k()("@google/genai"),r=n.Models??n.default?.Models;if(r?.prototype){at(e,r.prototype);return}}catch{}try{let t=await i("@google/genai"),n=t.Models??t.default?.Models;n?.prototype&&at(e,n.prototype);}catch{}}async function ro(e){try{let n=k()("groq-sdk"),o=(n.default??n.Groq??n)?.Chat?.Completions?.prototype;if(o){K(e,o,void 0,"groq");return}}catch{}try{let t=await i("groq-sdk"),r=(t.default??t.Groq??t)?.Chat?.Completions?.prototype;r&&K(e,r,void 0,"groq");}catch{}}async function oo(e){try{let{patchLangChain:t}=await import('./langchain-QDMKUXBO.mjs');await t(e);}catch{}}function Fe(e){try{qe(e);}catch{}try{Me(e);}catch{}Ne(),Ge(e),Be(),Vr(e),Fr(e),Promise.all([Wr(e),Qr(e),Xr(e),Yr(e),Zr(e),to(e),eo(e),no(e),ro(e),oo(e),Dr(e),Jr(e),zr(e)]).catch(()=>{});}var De=b(()=>{l();Et();gt();Mt();Ht();qt();Nt();Ut();wt();Kt();Pt();Ot();It();je();Ue();Ve();});var Ft={};c(Ft,{EvalKitClient:()=>H,EvalKitInterceptor:()=>V,TraceMethod:()=>_n,Traced:()=>Cn,createNestjsInterceptor:()=>gn,currentTraceId:()=>Rn,default:()=>co,evaluate:()=>$,expressMiddleware:()=>pn,fastifyPlugin:()=>ln,flush:()=>yn,generateScenarios:()=>Sn,hapiPlugin:()=>mn,honoMiddleware:()=>dn,init:()=>Je,koaMiddleware:()=>un,langchainHandler:()=>nn,patchAnthropicClient:()=>We,patchAnthropicVertexClient:()=>Xe,patchAxiosClient:()=>sn,patchBedrockClient:()=>Qe,patchCohereClient:()=>Ze,patchGoogleAIModel:()=>tn,patchGoogleGenAIModels:()=>en,patchMongooseClient:()=>rn,patchMysql2Client:()=>cn,patchOpenAIClient:()=>ze,patchPgClient:()=>an,patchRedisClient:()=>on,patchVertexGenerativeModel:()=>Ye,simulateUser:()=>En,startHttpTrace:()=>hn,startSpan:()=>vn,startTrace:()=>fn,traceFunction:()=>xn,withTrace:()=>kn});function C(){if(!q)throw new Error("[evalkit] call evalkit.init() before using the SDK");return q}function Je(e){return q&&q.destroy(),q=new H(e),Fe(q),q}function ze(e,t){K(C(),e.chat.completions,t);}function We(e,t){P(C(),e.messages,t);}function Qe(e){et(C(),e);}function Xe(e){it(C(),e.messages);}function Ye(e){ct(C(),e);}function Ze(e){nt(C(),e);}function tn(e){rt(C(),e);}function en(e){at(C(),e);}function nn(){return n(C())}function rn(e){ft(C(),e);}function on(e){X(C(),e);}function sn(e){Y(C(),e);}function an(e){Z(C(),e);}function cn(e){tt(C(),e);}function pn(e){return ke(C(),e)}function ln(e){return xe(C(),e,io)}function un(e){return Ee(C(),e)}function dn(e){return Oe(C(),e)}function mn(e){return Ae(C(),e)}function gn(){return new V(C())}function fn(e,t){return C().startTrace(e,t)}async function yn(){return C().flush()}function hn(e,t,n){return C().startHttpTrace(e,t,n)}function vn(e,t,n){return C().startSpan(e,t,n)}function xn(e,t,n,r=true){return C().traceFunction(e,t,n,r)}function _n(e){return (t,n,r)=>{let o=r.value,a=e??`${t.constructor?.name??"unknown"}.${String(n)}`,i;return r.value=function(...c){return i||(i=C().traceFunction(a,o)),i.apply(this,c)},r}}function Cn(e){return t=>{let n=t.prototype,r=e?.prefix??t.name;for(let o of Object.getOwnPropertyNames(n)){if(o==="constructor")continue;let a=Object.getOwnPropertyDescriptor(n,o);if(!a||typeof a.value!="function")continue;let i=a.value,c=`${r}.${o}`,s=null;Object.defineProperty(n,o,{...a,value:function(...l){return s||(s=C().traceFunction(c,i)),s.apply(this,l)}});}return t}}function kn(e,t){return context.with(e,t)}function Rn(){let e=trace.getActiveSpan();return e?.isRecording()?e.spanContext().traceId:void 0}function Sn(e){return zt(C(),e)}function En(e){return Wt(C(),e)}function io(e){return T(e)}var q,co,Dt=b(()=>{ut();Qt();Rt();L();Et();gt();wt();Ot();It();Kt();Pt();Mt();qt();Nt();Ut();p();Ht();_e();Re();be();Te();Ie();Lt();De();Rt();Lt();ut();q=null;co={init:Je,evaluate:$,generateScenarios:Sn,simulateUser:En,patchOpenAIClient:ze,patchAnthropicClient:We,patchBedrockClient:Qe,patchAnthropicVertexClient:Xe,patchVertexGenerativeModel:Ye,patchCohereClient:Ze,patchGoogleAIModel:tn,patchGoogleGenAIModels:en,langchainHandler:nn,patchMongooseClient:rn,patchRedisClient:on,patchAxiosClient:sn,patchPgClient:an,patchMysql2Client:cn,expressMiddleware:pn,fastifyPlugin:ln,koaMiddleware:un,honoMiddleware:dn,hapiPlugin:mn,createNestjsInterceptor:gn,startTrace:fn,startHttpTrace:hn,startSpan:vn,traceFunction:xn,TraceMethod:_n,Traced:Cn,withTrace:kn,currentTraceId:Rn,flush:yn};});Dt();export{H as EvalKitClient,V as EvalKitInterceptor,_n as TraceMethod,Cn as Traced,gn as createNestjsInterceptor,Rn as currentTraceId,co as default,$ as evaluate,pn as expressMiddleware,ln as fastifyPlugin,yn as flush,Sn as generateScenarios,mn as hapiPlugin,dn as honoMiddleware,Je as init,un as koaMiddleware,nn as langchainHandler,We as patchAnthropicClient,Xe as patchAnthropicVertexClient,sn as patchAxiosClient,Qe as patchBedrockClient,Ze as patchCohereClient,tn as patchGoogleAIModel,en as patchGoogleGenAIModels,rn as patchMongooseClient,cn as patchMysql2Client,ze as patchOpenAIClient,an as patchPgClient,on as patchRedisClient,Ye as patchVertexGenerativeModel,En as simulateUser,hn as startHttpTrace,vn as startSpan,fn as startTrace,xn as traceFunction,kn as withTrace};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "syntropylabs-evalkit",
3
- "version": "0.1.17",
3
+ "version": "0.1.20",
4
4
  "description": "EvalKit TypeScript SDK — OpenTelemetry-based LLM observability and tracing",
5
5
  "license": "LicenseRef-Proprietary",
6
6
  "author": "Syntropy Labs",