syntropylabs-evalkit 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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 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(`
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 kt=Object.defineProperty;var $n=Object.getOwnPropertyDescriptor;var Gn=Object.getOwnPropertyNames;var Hn=Object.prototype.hasOwnProperty;var I=(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 Xt=(e,t)=>{for(var n in t)kt(e,n,{get:t[n],enumerable:true});},Ln=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Gn(t))!Hn.call(e,o)&&o!==n&&kt(e,o,{get:()=>t[o],enumerable:!(r=$n(t,o))||r.enumerable});return e};var Un=e=>Ln(kt({},"__esModule",{value:true}),e);function Bn(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 Vn(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 Fn(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 Dn(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 Jn(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 zn(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 Wn(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 U(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=Bn(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=Vn(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=Fn(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=Dn(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=Jn(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=zn(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=Wn(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=(Yt(),Un(Qt)),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 gt=x(()=>{});function M(e,t,n){if(!e||!t||!B.has(e))return;let r=Q.get(e)??[];r.push({name:t,args:n}),Q.set(e,r);}var B,Q,q=x(()=>{B=new Map,Q=new Map;});function ft(e){return crypto.randomBytes(e).toString("hex")}function Zt(e){return typeof e=="function"?{name:e.name||"tool"}:typeof e=="string"||e&&typeof e=="object"?e:String(e)}async function te(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(Zt)),t.functionSchemas&&(r.functionSchemas=t.functionSchemas.map(Zt)),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 Yn(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 Zn(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 U({output:t,toolCalls:n,expectedTools:e.expected_tools??[],constraints:s,metrics:r}).scores}catch{return {}}}async function tr(e,t,n,r){let o=n.name??"scenario",s=n.scenario_id??"scn_"+ft(6),i="sess_"+ft(6),c=Yn(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});B.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 R=0;R<c.length;R++){let A={message:c[R],sessionId:i,state:a,turn:R+1},O=await t.entrypoint(A);O&&typeof O=="object"&&"text"in O?(g.push(O.text),O.toolCalls&&f.push(...O.toolCalls)):g.push(String(O)),y++;}let k=f.length?f:Q.get(l)??[];h=Zn(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 ee(e,t){let n="sim_"+ft(8),r="run_"+ft(8),o=t.maxTurns??12,s=[],i=[];for(let c of t.scenarios){let{result:a,traceId:l}=await tr(e,t,c,{simulationId:n,runId:r,maxTurns:o});s.push(a),i.push(l);}await e.flush();for(let c of i)B.delete(c),Q.delete(c);return {simulationId:n,runId:r,results:s}}var ne=x(()=>{q();gt();});var N,re=x(()=>{(function(e){e[e.SUCCESS=0]="SUCCESS",e[e.FAILED=1]="FAILED";})(N||(N={}));});var oe=x(()=>{re();});function Rt(e){return e[0]*1e3+e[1]/1e6}function er(e){return {0:"INTERNAL",1:"SERVER",2:"CLIENT",3:"PRODUCER",4:"CONSUMER"}[e]??"INTERNAL"}function nr(e){return e===1?"OK":e===2?"ERROR":"UNSET"}function rr(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 se(e){return new Promise(t=>setTimeout(t,e))}var yt,ae=x(()=>{oe();q();yt=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:N.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:N.SUCCESS});}).catch(s=>{console.error("[evalkit] export network error:",s),n({code:N.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 se(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 se(o[i]??1800));}throw s}shutdown(){return Promise.resolve()}toEnvelope(t){let n=t.spanContext(),r=t.attributes,o=Rt(t.startTime),s=Rt(t.endTime),i=t.events.map(l=>({name:l.name,timestamp:new Date(Rt(l.time)).toISOString(),attributes:l.attributes})),c={traceId:n.traceId,spanId:n.spanId,parentSpanId:t.parentSpanId,spanKind:er(t.kind),spanType:r["evalkit.span_type"]??"log",status:nr(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:rr(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=B.get(n.traceId);return a&&(c.isSimulation=true,c.simulationId=a.simulationId,c.scenarioId=a.scenarioId,c.runId=a.runId),c}};});function Et(e,t=lr){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 cr,lr;exports.EvalKitClient=void 0;var bt=x(()=>{ae();cr="0.1.20",lr=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 yt({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":cr};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"]=Et(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":Et(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":Et(m)}:void 0),m)}}async flush(){await this.provider.forceFlush();}async destroy(){await this.provider.shutdown();}};});function K(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 J=x(()=>{});function mr(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 $(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":gr(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 mr(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{}M(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 gr(e){return e.map(t=>`${t.role}: ${t.content??""}`).join(`
3
+ `)}var Ot=x(()=>{q();});function yr(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 G(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=hr(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 yr(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{M(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 hr(e,t){let n=[];return e&&n.push(`system: ${e}`),n.push(...t.map(r=>`${r.role}: ${r.content}`)),n.join(`
4
+ `)}var ht=x(()=>{q();});function vt(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 At=x(()=>{});function tt(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 It=x(()=>{});function T(e){let t={};for(let[n,r]of Object.entries(e))Sr.test(n)||r!==void 0&&(t[n]=Array.isArray(r)?r.join(", "):String(r));return t}var Sr,Kt=x(()=>{Sr=/^(authorization|cookie|set-cookie|x-api-key|api-key|x-auth-token|proxy-authorization|x-secret|x-access-token|token|password)$/i;});var z,Pt=x(()=>{z=new Map;});function et(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 et(e,o),o};}t.interceptors.request.use(n=>{let r=(n.baseURL?n.baseURL.replace(/\/$/,""):"")+(n.url??"");if(Or.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=T(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,z.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&&z.delete(n.config.__evalkitSpanId),r){let o=T(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&&z.delete(n.config.__evalkitSpanId),r){let o=n.response?.status??0,s=T(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 Or,Mt=x(()=>{Kt();Pt();Or=[/\/v1\/ingest/,/\/health(z)?$/];});function nt(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 qt=x(()=>{});function rt(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,R,A)=>{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(R)?R.length:R?.affectedRows??0),g.setStatus({code:api.SpanStatusCode.OK})),g.end(),h(k,R,A);}]);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 Nt=x(()=>{});function jr(e){if(!e||typeof e!="object")return false;let t=e.constructor?.name??"";return t==="ConverseCommand"||t==="ConverseStreamCommand"}function ot(e,t,n){if(t.send.__evalkit)return;let r=t.send;t.send=async function(...o){let s=o[0];if(!jr(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
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
- `);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 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
- `))}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 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;
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 jt=x(()=>{});function st(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 $t=x(()=>{});function at(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 Gt=x(()=>{});function _e(e){return e?.text??""}function Ur(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(_e).join("");return o?`${r}: ${o}`:""}).filter(Boolean).join(`
9
+ `);if(e&&typeof e=="object"){let t=e;if(t.parts)return (t.parts??[]).map(_e).join("")}return e!=null?String(e):""}function Br(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 xe(e){let t=Br(e?.config),n=Ur(e?.contents);return [t?`system: ${t}`:"",n].filter(Boolean).join(`
10
+ `)}function Ce(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 ke(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=Vr(t);M(n,s,o.args),c&&c.end();}}function Vr(e){if(!Ut)return null;let t=api.trace.setSpan(api.context.active(),e);return Ut.tracer.startSpan("tool_call",{kind:api.SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call"}},t)}function lt(e,t,n){if(Ut=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":xe(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":Ce(m)});try{ke(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":xe(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=Ce(f);y&&d.push(y),f?.usageMetadata&&(p=f.usageMetadata.promptTokenCount??p,g=f.usageMetadata.candidatesTokenCount??g),ke(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 Ut,Bt=x(()=>{q();Ut=null;});function Vt(e){if(typeof I>"u")return null;let t=I.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 w(){return typeof I<"u"?I: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 S,Ft=x(()=>{S=new Function("s","return import(s)");});var Oe={};Xt(Oe,{langchainCallbackHandler:()=>Ct,langchainHandlerMethods:()=>we,patchLangChain:()=>Yr});function P(e,t=zr){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 Ee(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 Wr(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:P(r?.content);return `${o}: ${s}`});return P(n.join(`
11
+ `))}catch{return P(e)}}function Xr(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:P(r.message.content));return P(t.filter(Boolean).join(`
12
+ `))}catch{return ""}}function Qr(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 we(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=be(o,a);n(i,c,"llm_call","llm.generate",{"gen_ai.request.model":l,"gen_ai.system":Ee(o)??"","evalkit.prompt":P((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":Ee(o)??"","evalkit.prompt":Wr(s)});},handleLLMEnd(o,s){let{tin:i,tout:c}=Qr(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":P(u.args??{})}),M(a.span.spanContext().traceId,u.name,u.args));}catch{}r(s,"OK",{"evalkit.completion":Xr(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??"");M(d?.span.spanContext().traceId,String(u)),n(i,c,"tool_call",String(u),{"tool.name":String(u),"tool.arguments":P(s)});},handleToolEnd(o,s){r(s,"OK",{"tool.result":P(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":P(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 Ct(e){try{let n=(await S("@langchain/core/callbacks/base")).BaseCallbackHandler.fromMethods(we(e));return n.name="evalkit",n.__evalkit=!0,n}catch{return null}}async function Yr(e){let t=await Ct(e);if(!t)return null;try{let r=(await S("@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 zr,Dt=x(()=>{q();Ft();zr=4096;});function pt(e,t,n){G(e,t,n);}function ut(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 Jt=x(()=>{ht();});function Ie(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 Ke=x(()=>{});function Me(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=K(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 qe=x(()=>{J();});function je(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=K(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 $e=x(()=>{J();});function He(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=K(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 Le=x(()=>{J();});function Ue(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=K(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 Be=x(()=>{J();});exports.EvalKitInterceptor=void 0;var zt=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 Wt(e){return so.some(t=>t.test(e))}function ao(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 De(e){let t,n;try{let s=typeof I<"u"?I: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}=ao(l,d,i);if(Wt(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 E=z.get(String(v));if(E){let _=T({...h});delete _["x-evalkit-span-id"],Object.keys(_).length&&E.setAttributes({"http.request.headers":JSON.stringify(_)});}return c.call(s,l,m,u)}let k=T(h),R=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()),A=c.call(s,l,m,u),O=R.spanContext();return A.setHeader("traceparent",`00-${O.traceId}-${O.spanId}-01`),A.on("response",E=>{let _=E.statusCode??0;R.setAttributes({"http.status_code":_,...E.headers?{"http.response.headers":JSON.stringify(T(E.headers))}:{}}),R.setStatus({code:_>=400?api.SpanStatusCode.ERROR:api.SpanStatusCode.OK}),R.end();}),A.on("error",E=>{R.setAttributes({"http.status_code":0,"error.message":E.message}),R.recordException(E instanceof Error?E:new Error(String(E))),R.setStatus({code:api.SpanStatusCode.ERROR,message:E.message}),R.end();}),A};let c=s.request;c.__evalkit||(a.__evalkit=true,Object.defineProperty(s,"request",{value:a,writable:true,configurable:true}));}}function Je(e){let t;try{t=(typeof I<"u"?I: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(Wt(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?io(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(T(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;i.on("data",_=>{try{if(_&&v<y){let b=Buffer.isBuffer(_)?_:typeof _=="string"?Buffer.from(_):null;b&&b.length&&(h.push(b),v+=b.length);}}catch{}}),i.on("end",()=>{if(h.length)try{let _=Buffer.concat(h).subarray(0,y).toString("utf-8");_&&p.setAttribute("http.request.body",_);}catch{}});let k=[],R=0,A=_=>{try{if(_&&typeof _!="function"&&R<y){let b=Buffer.isBuffer(_)?_:typeof _=="string"?Buffer.from(_):null;b&&b.length&&(k.push(b),R+=b.length);}}catch{}},O=c.write.bind(c),E=c.end.bind(c);return c.write=function(_,...b){return A(_),O(_,...b)},c.end=function(_,...b){return A(_),E(_,...b)},c.on("finish",()=>{p.setAttribute("http.status_code",c.statusCode);try{let _=c.getHeaders();_&&Object.keys(_).length&&p.setAttribute("http.response.headers",JSON.stringify(T(_)));}catch{}if(k.length)try{let _=Buffer.concat(k).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 io(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 ze(){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(Wt(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=T(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(T(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 so,We=x(()=>{Kt();Pt();so=[/\/v1\/ingest/,/\/health(z)?$/,/169\.254\./,/metadata\.google/,/storage\.googleapis/];});function Qe(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 Ye=x(()=>{});function en(){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 nn=x(()=>{});function uo(e){let t=Vt("mongoose");t&&vt(e,t);}function mo(e){let t=Vt("axios");t&&et(e,t.default??t);}async function go(e){try{let n=w()("pg"),r=n.Client??n.default?.Client;if(r){nt(e,r);return}}catch{}try{let t=await S("pg"),n=t.Client??t.default?.Client;n&&nt(e,n);}catch{}}async function fo(e){try{let t=w(),n=t("mysql2"),r=n.Connection??n.default?.Connection??t("mysql2/lib/connection");if(r){rt(e,r);return}}catch{}try{let t=await S("mysql2"),n=t.Connection??t.default?.Connection;n&&rt(e,n);}catch{}}async function yo(e){try{let n=w()("ioredis"),r=n.default??n.Redis??n;if(r?.prototype){tt(e,r);return}}catch{}try{let t=await S("ioredis"),n=t.default??t.Redis??t;n?.prototype&&tt(e,n);}catch{}}async function ho(e){try{let n=w()("openai"),o=(n.default??n.OpenAI??n)?.Chat?.Completions?.prototype;if(o){$(e,o);return}}catch{}try{let t=await S("openai"),r=(t.default??t.OpenAI??t)?.Chat?.Completions?.prototype;r&&$(e,r);}catch{}}async function vo(e){try{let n=w()("@anthropic-ai/sdk"),o=(n.default??n.Anthropic??n)?.Messages?.prototype;if(o){G(e,o);return}}catch{}try{let t=await S("@anthropic-ai/sdk"),r=(t.default??t.Anthropic??t)?.Messages?.prototype;r&&G(e,r);}catch{}}async function _o(e){try{let n=w()("@aws-sdk/client-bedrock-runtime"),o=(n.BedrockRuntimeClient??n.default?.BedrockRuntimeClient)?.prototype;if(o){ot(e,o);return}}catch{}try{let t=await S("@aws-sdk/client-bedrock-runtime"),r=(t.BedrockRuntimeClient??t.default?.BedrockRuntimeClient)?.prototype;r&&ot(e,r);}catch{}}async function xo(e){try{let n=w()("@anthropic-ai/sdk"),o=(n.AnthropicVertex??n.default?.AnthropicVertex)?.Messages?.prototype;if(o){pt(e,o);return}}catch{}try{let t=await S("@anthropic-ai/sdk"),r=(t.AnthropicVertex??t.default?.AnthropicVertex)?.Messages?.prototype;r&&pt(e,r);}catch{}}async function Co(e){try{let n=w()("@google-cloud/vertexai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){ut(e,o);return}}catch{}try{let t=await S("@google-cloud/vertexai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&ut(e,r);}catch{}}async function ko(e){try{let n=w()("cohere-ai"),o=(n.CohereClient??n.default?.CohereClient??n.default)?.prototype;if(o){st(e,o);return}}catch{}try{let t=await S("cohere-ai"),r=(t.CohereClient??t.default?.CohereClient??t.default)?.prototype;r&&st(e,r);}catch{}}async function Ro(e){try{let n=w()("@google/generative-ai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){at(e,o);return}}catch{}try{let t=await S("@google/generative-ai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&at(e,r);}catch{}}async function So(e){try{let n=w()("@google/genai"),r=n.Models??n.default?.Models;if(r?.prototype){lt(e,r.prototype);return}}catch{}try{let t=await S("@google/genai"),n=t.Models??t.default?.Models;n?.prototype&&lt(e,n.prototype);}catch{}}async function Eo(e){try{let n=w()("groq-sdk"),o=(n.default??n.Groq??n)?.Chat?.Completions?.prototype;if(o){$(e,o,void 0,"groq");return}}catch{}try{let t=await S("groq-sdk"),r=(t.default??t.Groq??t)?.Chat?.Completions?.prototype;r&&$(e,r,void 0,"groq");}catch{}}async function bo(e){try{let{patchLangChain:t}=await Promise.resolve().then(()=>(Dt(),Oe));await t(e);}catch{}}function rn(e){try{Je(e);}catch{}try{De(e);}catch{}ze(),Qe(e),en(),uo(e),mo(e),Promise.all([ho(e),vo(e),_o(e),xo(e),Co(e),ko(e),Ro(e),So(e),Eo(e),bo(e),go(e),fo(e),yo(e)]).catch(()=>{});}var on=x(()=>{Ft();Ot();ht();jt();Jt();$t();Gt();Bt();At();qt();Nt();It();Mt();We();Ye();nn();});var Qt={};Xt(Qt,{EvalKitClient:()=>exports.EvalKitClient,EvalKitInterceptor:()=>exports.EvalKitInterceptor,TraceMethod:()=>Kn,Traced:()=>Pn,createNestjsInterceptor:()=>bn,currentTraceId:()=>qn,default:()=>exports.default,evaluate:()=>U,expressMiddleware:()=>Cn,fastifyPlugin:()=>kn,flush:()=>On,generateScenarios:()=>Nn,hapiPlugin:()=>En,honoMiddleware:()=>Sn,init:()=>sn,koaMiddleware:()=>Rn,langchainHandler:()=>fn,patchAnthropicClient:()=>cn,patchAnthropicVertexClient:()=>pn,patchAxiosClient:()=>vn,patchBedrockClient:()=>ln,patchCohereClient:()=>dn,patchGoogleAIModel:()=>mn,patchGoogleGenAIModels:()=>gn,patchMongooseClient:()=>yn,patchMysql2Client:()=>xn,patchOpenAIClient:()=>an,patchPgClient:()=>_n,patchRedisClient:()=>hn,patchVertexGenerativeModel:()=>un,simulateUser:()=>jn,startHttpTrace:()=>Tn,startSpan:()=>An,startTrace:()=>wn,traceFunction:()=>In,withTrace:()=>Mn});function C(){if(!L)throw new Error("[evalkit] call evalkit.init() before using the SDK");return L}function sn(e){return L&&L.destroy(),L=new exports.EvalKitClient(e),rn(L),L}function an(e,t){$(C(),e.chat.completions,t);}function cn(e,t){G(C(),e.messages,t);}function ln(e){ot(C(),e);}function pn(e){pt(C(),e.messages);}function un(e){ut(C(),e);}function dn(e){st(C(),e);}function mn(e){at(C(),e);}function gn(e){lt(C(),e);}function fn(){return Ct(C())}function yn(e){vt(C(),e);}function hn(e){tt(C(),e);}function vn(e){et(C(),e);}function _n(e){nt(C(),e);}function xn(e){rt(C(),e);}function Cn(e){return Me(C(),e)}function kn(e){return Ie(C(),e,To)}function Rn(e){return je(C(),e)}function Sn(e){return He(C(),e)}function En(e){return Ue(C(),e)}function bn(){return new exports.EvalKitInterceptor(C())}function wn(e,t){return C().startTrace(e,t)}async function On(){return C().flush()}function Tn(e,t,n){return C().startHttpTrace(e,t,n)}function An(e,t,n){return C().startSpan(e,t,n)}function In(e,t,n,r=true){return C().traceFunction(e,t,n,r)}function Kn(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 Pn(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 Mn(e,t){return api.context.with(e,t)}function qn(){let e=api.trace.getActiveSpan();return e?.isRecording()?e.spanContext().traceId:void 0}function Nn(e){return te(C(),e)}function jn(e){return ee(C(),e)}function To(e){return K(e)}var L;exports.default=void 0;var Yt=x(()=>{gt();ne();bt();J();Ot();ht();At();It();Mt();qt();Nt();jt();$t();Gt();Bt();Dt();Jt();Ke();qe();$e();Le();Be();zt();on();bt();zt();gt();L=null;exports.default={init:sn,evaluate:U,generateScenarios:Nn,simulateUser:jn,patchOpenAIClient:an,patchAnthropicClient:cn,patchBedrockClient:ln,patchAnthropicVertexClient:pn,patchVertexGenerativeModel:un,patchCohereClient:dn,patchGoogleAIModel:mn,patchGoogleGenAIModels:gn,langchainHandler:fn,patchMongooseClient:yn,patchRedisClient:hn,patchAxiosClient:vn,patchPgClient:_n,patchMysql2Client:xn,expressMiddleware:Cn,fastifyPlugin:kn,koaMiddleware:Rn,honoMiddleware:Sn,hapiPlugin:En,createNestjsInterceptor:bn,startTrace:wn,startHttpTrace:Tn,startSpan:An,traceFunction:In,TraceMethod:Kn,Traced:Pn,withTrace:Mn,currentTraceId:qn,flush:On};});Yt();exports.TraceMethod=Kn;exports.Traced=Pn;exports.createNestjsInterceptor=bn;exports.currentTraceId=qn;exports.evaluate=U;exports.expressMiddleware=Cn;exports.fastifyPlugin=kn;exports.flush=On;exports.generateScenarios=Nn;exports.hapiPlugin=En;exports.honoMiddleware=Sn;exports.init=sn;exports.koaMiddleware=Rn;exports.langchainHandler=fn;exports.patchAnthropicClient=cn;exports.patchAnthropicVertexClient=pn;exports.patchAxiosClient=vn;exports.patchBedrockClient=ln;exports.patchCohereClient=dn;exports.patchGoogleAIModel=mn;exports.patchGoogleGenAIModels=gn;exports.patchMongooseClient=yn;exports.patchMysql2Client=xn;exports.patchOpenAIClient=an;exports.patchPgClient=_n;exports.patchRedisClient=hn;exports.patchVertexGenerativeModel=un;exports.simulateUser=jn;exports.startHttpTrace=Tn;exports.startSpan=An;exports.startTrace=wn;exports.traceFunction=In;exports.withTrace=Mn;
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,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(`
1
+ import {b,h,l,c,n,p,d,g,e,f,a,j as j$1,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 In(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 Kn(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 Pn(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 Mn(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 qn(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 Nn(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 jn(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 G(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=In(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=Kn(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=Pn(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=Mn(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=qn(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=Nn(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=jn(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=(Jt(),d(Dt)),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 dt=b(()=>{});function mt(e){return randomBytes(e).toString("hex")}function zt(e){return typeof e=="function"?{name:e.name||"tool"}:typeof e=="string"||e&&typeof e=="object"?e:String(e)}async function Wt(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(zt)),t.functionSchemas&&(r.functionSchemas=t.functionSchemas.map(zt)),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 Un(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 Hn(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 G({output:t,toolCalls:n,expectedTools:e.expected_tools??[],constraints:a,metrics:r}).scores}catch{return {}}}async function Ln(e$1,t,n,r){let o=n.name??"scenario",a=n.scenario_id??"scn_"+mt(6),i="sess_"+mt(6),c=Un(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 R=0;R<c.length;R++){let A={message:c[R],sessionId:i,state:s,turn:R+1},O=await t.entrypoint(A);O&&typeof O=="object"&&"text"in O?(g.push(O.text),O.toolCalls&&f$1.push(...O.toolCalls)):g.push(String(O)),y++;}let k=f$1.length?f$1:f.get(l)??[];h=Hn(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 Qt(e$1,t){let n="sim_"+mt(8),r="run_"+mt(8),o=t.maxTurns??12,a=[],i=[];for(let c of t.scenarios){let{result:s,traceId:l}=await Ln(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 Xt=b(()=>{h();dt();});var K,Yt=b(()=>{(function(e){e[e.SUCCESS=0]="SUCCESS",e[e.FAILED=1]="FAILED";})(K||(K={}));});var Zt=b(()=>{Yt();});function Ct(e){return e[0]*1e3+e[1]/1e6}function Bn(e){return {0:"INTERNAL",1:"SERVER",2:"CLIENT",3:"PRODUCER",4:"CONSUMER"}[e]??"INTERNAL"}function Vn(e){return e===1?"OK":e===2?"ERROR":"UNSET"}function Fn(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 te(e){return new Promise(t=>setTimeout(t,e))}var gt,ee=b(()=>{Zt();h();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(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:K.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:K.SUCCESS});}).catch(a=>{console.error("[evalkit] export network error:",a),n({code:K.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 te(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 te(o[i]??1800));}throw a}shutdown(){return Promise.resolve()}toEnvelope(t){let n=t.spanContext(),r=t.attributes,o=Ct(t.startTime),a=Ct(t.endTime),i=t.events.map(l=>({name:l.name,timestamp:new Date(Ct(l.time)).toISOString(),attributes:l.attributes})),c={traceId:n.traceId,spanId:n.spanId,parentSpanId:t.parentSpanId,spanKind:Bn(t.kind),spanType:r["evalkit.span_type"]??"log",status:Vn(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:Fn(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 Rt(e,t=Xn){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 Qn,Xn,L,St=b(()=>{ee();Qn="0.1.20",Xn=4096;L=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 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":Qn};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"]=Rt(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":Rt(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":Rt(m)}:void 0),m)}}async flush(){await this.provider.forceFlush();}async destroy(){await this.provider.shutdown();}};});function I(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 B=b(()=>{});function er(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 M(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":nr(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 er(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 nr(e){return e.map(t=>`${t.role}: ${t.content??""}`).join(`
3
+ `)}var bt=b(()=>{h();});function or(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 q(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=sr(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 or(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 sr(e,t){let n=[];return e&&n.push(`system: ${e}`),n.push(...t.map(r=>`${r.role}: ${r.content}`)),n.join(`
4
+ `)}var ft=b(()=>{h();});function yt(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 Ot=b(()=>{});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 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 Tt=b(()=>{});function T(e){let t={};for(let[n,r]of Object.entries(e))dr.test(n)||r!==void 0&&(t[n]=Array.isArray(r)?r.join(", "):String(r));return t}var dr,At=b(()=>{dr=/^(authorization|cookie|set-cookie|x-api-key|api-key|x-auth-token|proxy-authorization|x-secret|x-access-token|token|password)$/i;});var V,It=b(()=>{V=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(yr.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=T(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,V.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&&V.delete(n.config.__evalkitSpanId),r){let o=T(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&&V.delete(n.config.__evalkitSpanId),r){let o=n.response?.status??0,a=T(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 yr,Kt=b(()=>{At();It();yr=[/\/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(!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 Pt=b(()=>{});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(...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,R,A)=>{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(R)?R.length:R?.affectedRows??0),g.setStatus({code:SpanStatusCode.OK})),g.end(),h(k,R,A);}]);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 Mt=b(()=>{});function Er(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 a=o[0];if(!Er(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
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};
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 qt=b(()=>{});function rt(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 Nt=b(()=>{});function ot(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 jt=b(()=>{});function ge(e){return e?.text??""}function Ar(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(ge).join("");return o?`${r}: ${o}`:""}).filter(Boolean).join(`
9
+ `);if(e&&typeof e=="object"){let t=e;if(t.parts)return (t.parts??[]).map(ge).join("")}return e!=null?String(e):""}function Ir(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 fe(e){let t=Ir(e?.config),n=Ar(e?.contents);return [t?`system: ${t}`:"",n].filter(Boolean).join(`
10
+ `)}function ye(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 he(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=Kr(t);g(n,a,o.args),c&&c.end();}}function Kr(e){if(!Ut)return null;let t=trace.setSpan(context.active(),e);return Ut.tracer.startSpan("tool_call",{kind:SpanKind.INTERNAL,attributes:{"evalkit.span_type":"tool_call"}},t)}function it(e,t,n){if(Ut=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":fe(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":ye(m)});try{he(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":fe(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=ye(f);y&&u.push(y),f?.usageMetadata&&(p=f.usageMetadata.promptTokenCount??p,g=f.usageMetadata.candidatesTokenCount??g),he(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 Ut,Ht=b(()=>{h();Ut=null;});function ct(e,t,n){q(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(...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 Lt=b(()=>{ft();});function _e(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 Ce=b(()=>{});function Re(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=I(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 Se=b(()=>{B();});function be(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=I(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 we=b(()=>{B();});function Te(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=I(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 Ae=b(()=>{B();});function Ie(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=I(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 Ke=b(()=>{B();});var F,Bt=b(()=>{F=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 Vt(e){return Gr.some(t=>t.test(e))}function Ur(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 qe(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}=Ur(l,u,i);if(Vt(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 S=V.get(String(v));if(S){let x=T({...h});delete x["x-evalkit-span-id"],Object.keys(x).length&&S.setAttributes({"http.request.headers":JSON.stringify(x)});}return c.call(a,l,m,d)}let k=T(h),R=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()),A=c.call(a,l,m,d),O=R.spanContext();return A.setHeader("traceparent",`00-${O.traceId}-${O.spanId}-01`),A.on("response",S=>{let x=S.statusCode??0;R.setAttributes({"http.status_code":x,...S.headers?{"http.response.headers":JSON.stringify(T(S.headers))}:{}}),R.setStatus({code:x>=400?SpanStatusCode.ERROR:SpanStatusCode.OK}),R.end();}),A.on("error",S=>{R.setAttributes({"http.status_code":0,"error.message":S.message}),R.recordException(S instanceof Error?S:new Error(String(S))),R.setStatus({code:SpanStatusCode.ERROR,message:S.message}),R.end();}),A};let c=a.request;c.__evalkit||(s.__evalkit=true,Object.defineProperty(a,"request",{value:s,writable:true,configurable:true}));}}function Ne(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(Vt(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?Hr(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(T(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;i.on("data",x=>{try{if(x&&v<y){let E=Buffer.isBuffer(x)?x:typeof x=="string"?Buffer.from(x):null;E&&E.length&&(h.push(E),v+=E.length);}}catch{}}),i.on("end",()=>{if(h.length)try{let x=Buffer.concat(h).subarray(0,y).toString("utf-8");x&&p.setAttribute("http.request.body",x);}catch{}});let k=[],R=0,A=x=>{try{if(x&&typeof x!="function"&&R<y){let E=Buffer.isBuffer(x)?x:typeof x=="string"?Buffer.from(x):null;E&&E.length&&(k.push(E),R+=E.length);}}catch{}},O=c.write.bind(c),S=c.end.bind(c);return c.write=function(x,...E){return A(x),O(x,...E)},c.end=function(x,...E){return A(x),S(x,...E)},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(T(x)));}catch{}if(k.length)try{let x=Buffer.concat(k).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 Hr(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 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(Vt(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=T(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(T(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 Gr,$e=b(()=>{At();It();Gr=[/\/v1\/ingest/,/\/health(z)?$/,/169\.254\./,/metadata\.google/,/storage\.googleapis/];});function Ue(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 He=b(()=>{});function Ve(){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 Fe=b(()=>{});function Fr(e){let t=j$1("mongoose");t&&yt(e,t);}function Dr(e){let t=j$1("axios");t&&Z(e,t.default??t);}async function Jr(e){try{let n=k()("pg"),r=n.Client??n.default?.Client;if(r){tt(e,r);return}}catch{}try{let t=await i("pg"),n=t.Client??t.default?.Client;n&&tt(e,n);}catch{}}async function zr(e){try{let t=k(),n=t("mysql2"),r=n.Connection??n.default?.Connection??t("mysql2/lib/connection");if(r){et(e,r);return}}catch{}try{let t=await i("mysql2"),n=t.Connection??t.default?.Connection;n&&et(e,n);}catch{}}async function Wr(e){try{let n=k()("ioredis"),r=n.default??n.Redis??n;if(r?.prototype){Y(e,r);return}}catch{}try{let t=await i("ioredis"),n=t.default??t.Redis??t;n?.prototype&&Y(e,n);}catch{}}async function Qr(e){try{let n=k()("openai"),o=(n.default??n.OpenAI??n)?.Chat?.Completions?.prototype;if(o){M(e,o);return}}catch{}try{let t=await i("openai"),r=(t.default??t.OpenAI??t)?.Chat?.Completions?.prototype;r&&M(e,r);}catch{}}async function Xr(e){try{let n=k()("@anthropic-ai/sdk"),o=(n.default??n.Anthropic??n)?.Messages?.prototype;if(o){q(e,o);return}}catch{}try{let t=await i("@anthropic-ai/sdk"),r=(t.default??t.Anthropic??t)?.Messages?.prototype;r&&q(e,r);}catch{}}async function Yr(e){try{let n=k()("@aws-sdk/client-bedrock-runtime"),o=(n.BedrockRuntimeClient??n.default?.BedrockRuntimeClient)?.prototype;if(o){nt(e,o);return}}catch{}try{let t=await i("@aws-sdk/client-bedrock-runtime"),r=(t.BedrockRuntimeClient??t.default?.BedrockRuntimeClient)?.prototype;r&&nt(e,r);}catch{}}async function Zr(e){try{let n=k()("@anthropic-ai/sdk"),o=(n.AnthropicVertex??n.default?.AnthropicVertex)?.Messages?.prototype;if(o){ct(e,o);return}}catch{}try{let t=await i("@anthropic-ai/sdk"),r=(t.AnthropicVertex??t.default?.AnthropicVertex)?.Messages?.prototype;r&&ct(e,r);}catch{}}async function to(e){try{let n=k()("@google-cloud/vertexai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){pt(e,o);return}}catch{}try{let t=await i("@google-cloud/vertexai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&pt(e,r);}catch{}}async function eo(e){try{let n=k()("cohere-ai"),o=(n.CohereClient??n.default?.CohereClient??n.default)?.prototype;if(o){rt(e,o);return}}catch{}try{let t=await i("cohere-ai"),r=(t.CohereClient??t.default?.CohereClient??t.default)?.prototype;r&&rt(e,r);}catch{}}async function no(e){try{let n=k()("@google/generative-ai"),o=(n.GenerativeModel??n.default?.GenerativeModel)?.prototype;if(o){ot(e,o);return}}catch{}try{let t=await i("@google/generative-ai"),r=(t.GenerativeModel??t.default?.GenerativeModel)?.prototype;r&&ot(e,r);}catch{}}async function ro(e){try{let n=k()("@google/genai"),r=n.Models??n.default?.Models;if(r?.prototype){it(e,r.prototype);return}}catch{}try{let t=await i("@google/genai"),n=t.Models??t.default?.Models;n?.prototype&&it(e,n.prototype);}catch{}}async function oo(e){try{let n=k()("groq-sdk"),o=(n.default??n.Groq??n)?.Chat?.Completions?.prototype;if(o){M(e,o,void 0,"groq");return}}catch{}try{let t=await i("groq-sdk"),r=(t.default??t.Groq??t)?.Chat?.Completions?.prototype;r&&M(e,r,void 0,"groq");}catch{}}async function so(e){try{let{patchLangChain:t}=await import('./langchain-QDMKUXBO.mjs');await t(e);}catch{}}function De(e){try{Ne(e);}catch{}try{qe(e);}catch{}je(),Ue(e),Ve(),Fr(e),Dr(e),Promise.all([Qr(e),Xr(e),Yr(e),Zr(e),to(e),eo(e),no(e),ro(e),oo(e),so(e),Jr(e),zr(e),Wr(e)]).catch(()=>{});}var Je=b(()=>{l();bt();ft();qt();Lt();Nt();jt();Ht();Ot();Pt();Mt();Tt();Kt();$e();He();Fe();});var Dt={};c(Dt,{EvalKitClient:()=>L,EvalKitInterceptor:()=>F,TraceMethod:()=>Cn,Traced:()=>kn,createNestjsInterceptor:()=>fn,currentTraceId:()=>Sn,default:()=>po,evaluate:()=>G,expressMiddleware:()=>ln,fastifyPlugin:()=>un,flush:()=>hn,generateScenarios:()=>En,hapiPlugin:()=>gn,honoMiddleware:()=>mn,init:()=>ze,koaMiddleware:()=>dn,langchainHandler:()=>rn,patchAnthropicClient:()=>Qe,patchAnthropicVertexClient:()=>Ye,patchAxiosClient:()=>an,patchBedrockClient:()=>Xe,patchCohereClient:()=>tn,patchGoogleAIModel:()=>en,patchGoogleGenAIModels:()=>nn,patchMongooseClient:()=>on,patchMysql2Client:()=>pn,patchOpenAIClient:()=>We,patchPgClient:()=>cn,patchRedisClient:()=>sn,patchVertexGenerativeModel:()=>Ze,simulateUser:()=>bn,startHttpTrace:()=>vn,startSpan:()=>xn,startTrace:()=>yn,traceFunction:()=>_n,withTrace:()=>Rn});function C(){if(!j)throw new Error("[evalkit] call evalkit.init() before using the SDK");return j}function ze(e){return j&&j.destroy(),j=new L(e),De(j),j}function We(e,t){M(C(),e.chat.completions,t);}function Qe(e,t){q(C(),e.messages,t);}function Xe(e){nt(C(),e);}function Ye(e){ct(C(),e.messages);}function Ze(e){pt(C(),e);}function tn(e){rt(C(),e);}function en(e){ot(C(),e);}function nn(e){it(C(),e);}function rn(){return n(C())}function on(e){yt(C(),e);}function sn(e){Y(C(),e);}function an(e){Z(C(),e);}function cn(e){tt(C(),e);}function pn(e){et(C(),e);}function ln(e){return Re(C(),e)}function un(e){return _e(C(),e,co)}function dn(e){return be(C(),e)}function mn(e){return Te(C(),e)}function gn(e){return Ie(C(),e)}function fn(){return new F(C())}function yn(e,t){return C().startTrace(e,t)}async function hn(){return C().flush()}function vn(e,t,n){return C().startHttpTrace(e,t,n)}function xn(e,t,n){return C().startSpan(e,t,n)}function _n(e,t,n,r=true){return C().traceFunction(e,t,n,r)}function Cn(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 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 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 Rn(e,t){return context.with(e,t)}function Sn(){let e=trace.getActiveSpan();return e?.isRecording()?e.spanContext().traceId:void 0}function En(e){return Wt(C(),e)}function bn(e){return Qt(C(),e)}function co(e){return I(e)}var j,po,Jt=b(()=>{dt();Xt();St();B();bt();ft();Ot();Tt();Kt();Pt();Mt();qt();Nt();jt();Ht();p();Lt();Ce();Se();we();Ae();Ke();Bt();Je();St();Bt();dt();j=null;po={init:ze,evaluate:G,generateScenarios:En,simulateUser:bn,patchOpenAIClient:We,patchAnthropicClient:Qe,patchBedrockClient:Xe,patchAnthropicVertexClient:Ye,patchVertexGenerativeModel:Ze,patchCohereClient:tn,patchGoogleAIModel:en,patchGoogleGenAIModels:nn,langchainHandler:rn,patchMongooseClient:on,patchRedisClient:sn,patchAxiosClient:an,patchPgClient:cn,patchMysql2Client:pn,expressMiddleware:ln,fastifyPlugin:un,koaMiddleware:dn,honoMiddleware:mn,hapiPlugin:gn,createNestjsInterceptor:fn,startTrace:yn,startHttpTrace:vn,startSpan:xn,traceFunction:_n,TraceMethod:Cn,Traced:kn,withTrace:Rn,currentTraceId:Sn,flush:hn};});Jt();export{L as EvalKitClient,F as EvalKitInterceptor,Cn as TraceMethod,kn as Traced,fn as createNestjsInterceptor,Sn as currentTraceId,po as default,G as evaluate,ln as expressMiddleware,un as fastifyPlugin,hn as flush,En as generateScenarios,gn as hapiPlugin,mn as honoMiddleware,ze as init,dn as koaMiddleware,rn as langchainHandler,Qe as patchAnthropicClient,Ye as patchAnthropicVertexClient,an as patchAxiosClient,Xe as patchBedrockClient,tn as patchCohereClient,en as patchGoogleAIModel,nn as patchGoogleGenAIModels,on as patchMongooseClient,pn as patchMysql2Client,We as patchOpenAIClient,cn as patchPgClient,sn as patchRedisClient,Ze as patchVertexGenerativeModel,bn as simulateUser,vn as startHttpTrace,xn as startSpan,yn as startTrace,_n as traceFunction,Rn as withTrace};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "syntropylabs-evalkit",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "description": "EvalKit TypeScript SDK — OpenTelemetry-based LLM observability and tracing",
5
5
  "license": "LicenseRef-Proprietary",
6
6
  "author": "Syntropy Labs",