@zespan/sdk 1.3.0 → 1.3.1

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,14 +1,14 @@
1
- "use strict";var Dn=Object.create;var $e=Object.defineProperty;var Fn=Object.getOwnPropertyDescriptor;var En=Object.getOwnPropertyNames;var Gn=Object.getPrototypeOf,qn=Object.prototype.hasOwnProperty;var Kn=(r,t)=>{for(var n in t)$e(r,n,{get:t[n],enumerable:!0})},jt=(r,t,n,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of En(t))!qn.call(r,s)&&s!==n&&$e(r,s,{get:()=>t[s],enumerable:!(e=Fn(t,s))||e.enumerable});return r};var We=(r,t,n)=>(n=r!=null?Dn(Gn(r)):{},jt(t||!r||!r.__esModule?$e(n,"default",{value:r,enumerable:!0}):n,r)),Ln=r=>jt($e({},"__esModule",{value:!0}),r);var gs={};Kn(gs,{AgentContext:()=>Le,BaggageSpanProcessor:()=>dt,CREWAI_OTEL_ENV:()=>Rn,GuardrailBlockedError:()=>V,PromptClient:()=>Ce,SpanKind:()=>ne.SpanKind,SpanStatusCode:()=>ne.SpanStatusCode,ZespanADKCallbackHandler:()=>Ee,ZespanCallbackHandler:()=>Fe,ZespanClient:()=>Pe,ZespanLlamaIndexHandler:()=>Ke,attachTraceToAutoGenMessage:()=>Mn,autopatch:()=>Me,createSpan:()=>lt,extractAgentContext:()=>Be,extractAutoGenContext:()=>Be,extractTraceFromAutoGenMessage:()=>Pn,getCrewAIInstrumentationGuide:()=>Nn,getPydanticAIConfig:()=>jn,getTracer:()=>ye,getZespanClient:()=>F,getZespanVercelTelemetry:()=>Nt,init:()=>Yt,initOTel:()=>Ae,initZespan:()=>et,injectAgentContext:()=>ze,injectAutoGenContext:()=>ze,instrumentADK:()=>Ct,instrumentVercelAI:()=>ct,markFrameworkActive:()=>le,markFrameworkInactive:()=>ae,startSpan:()=>Mt,withAgent:()=>Pt,withSpan:()=>ut,withZespan:()=>Zt,withZespanContext:()=>He,withZespanTrace:()=>Qe,wrapADKAgent:()=>Ge,wrapADKRunner:()=>rt,wrapAnthropic:()=>yt,wrapBedrock:()=>pn,wrapGoogle:()=>It,wrapGoogleGenAI:()=>St,wrapGroq:()=>fn,wrapLiteLLM:()=>hn,wrapMistral:()=>mn,wrapOpenAI:()=>je,wrapOpenRouter:()=>wt,wrapZespanADKAgent:()=>xt,zespan:()=>ms});module.exports=Ln(gs);var Dt=require("zlib"),Je=class{constructor(t,n,e){this.c=t;this.cfg=n;this.configClient=e??null,this.maxQueueSize=n.maxQueueSize??1e4,this.timer=setInterval(()=>this.flush(),n.flushInterval),this.timer.unref&&this.timer.unref()}queue=[];timer=null;flushing=!1;consecutiveFlushFailures=0;configClient;maxQueueSize;push(t){this.queue.length>=this.maxQueueSize&&(this.queue.shift(),this.c.debug&&console.warn("[zespan] queue full, dropping oldest event")),this.queue.push(t),this.c.debug&&console.log(`[zespan] event queued: ${t.operation} span_kind=${t.span_kind??"llm"} trace=${t.trace_id?.slice(0,8)} tokens=${t.input_tokens}in/${t.output_tokens}out status=${t.status}`),this.queue.length>=this.cfg.maxSize&&this.flush()}async flush(){if(!this.queue.length||this.flushing)return;this.flushing=!0;let t=this.queue.slice(),n=(0,Dt.gzipSync)(Buffer.from(t.map(e=>JSON.stringify(e)).join(`
2
- `)));try{let e=await this._post(n,0);e.ok?(this.queue.splice(0,t.length),this.c.debug&&console.log(`[zespan] flushed ${t.length} event(s) \u2192 ${this.c.endpoint}`),this.consecutiveFlushFailures>0&&this.c.debug&&console.warn("[zespan] ingest recovered",{recoveredBatchSize:t.length,queuedEvents:this.queue.length,priorFailures:this.consecutiveFlushFailures}),this.consecutiveFlushFailures=0):(this.consecutiveFlushFailures+=1,(this.c.debug||this.consecutiveFlushFailures===1||this.consecutiveFlushFailures%5===0)&&console.error("[zespan] ingest flush failed; retaining events for retry",{retriable:e.retriable,status:e.status??null,error:e.error??null,queuedEvents:this.queue.length,failedBatchSize:t.length,consecutiveFailures:this.consecutiveFlushFailures}))}finally{this.flushing=!1}}async _post(t,n){let e=s=>new Promise(a=>setTimeout(a,s));try{let s=await fetch(this.c.endpoint,{method:"POST",body:t,headers:{"x-api-key":this.c.apiKey,"content-type":"application/x-ndjson","content-encoding":"gzip"}});if(s.ok){try{let a=await s.json();typeof a?.cv=="number"&&this.configClient&&this.configClient.checkVersion(a.cv)}catch{}return{ok:!0,retriable:!1}}return s.status===429&&n<3?(await e(Number(s.headers.get("retry-after")??5)*1e3),this._post(t,n+1)):s.status>=500&&n<3?(await e(2**n*1e3),this._post(t,n+1)):s.status===429||s.status>=500?(this.c.debug&&console.error("[zespan] retryable ingest failure",{status:s.status,attempt:n}),{ok:!1,retriable:!0,status:s.status}):(console.error("[zespan] non-retriable ingest failure",{status:s.status}),{ok:!1,retriable:!1,status:s.status})}catch(s){return n<3?(await e(2**n*1e3),this._post(t,n+1)):(this.c.debug&&console.error("[zespan] ingest transport error",s),{ok:!1,retriable:!0,error:s instanceof Error?s.message:String(s)})}}};var ne=require("@opentelemetry/api"),Et=require("@opentelemetry/sdk-trace-base"),Gt=require("@opentelemetry/exporter-trace-otlp-http"),qt=require("@opentelemetry/context-async-hooks"),Kt=require("@opentelemetry/core"),Ze=null,Ft=null;function Ae(r){let t=r.serviceName??"zespan-sdk",n=new Gt.OTLPTraceExporter({url:r.endpoint??"https://localhost:3001/v1/traces",headers:r.apiKey?{"x-api-key":r.apiKey}:void 0}),e=new Et.BatchSpanProcessor(n,{maxQueueSize:100,maxExportBatchSize:10,exportTimeoutMillis:3e4,scheduledDelayMillis:2e3}),{NodeTracerProvider:s}=require("@opentelemetry/sdk-trace-node"),a=new s({resource:{attributes:{"service.name":t,"service.version":"1.0.0","deployment.environment":r.environment??"production"}}});return a.addSpanProcessor(e),a.register({propagator:new Kt.W3CTraceContextPropagator}),Ze=ne.trace.getTracer(t,"1.0.0"),Ft=new qt.AsyncHooksContextManager,ne.context.setGlobalContextManager(Ft.enable()),{tracer:Ze,provider:a}}function ye(){if(!Ze)throw new Error("OTel not initialized. Call initOTel() first.");return Ze}function lt(r){return ye().startSpan(r.name,{kind:r.kind??ne.SpanKind.INTERNAL,attributes:r.attributes??{}})}async function ut(r,t,n){let s=ye().startSpan(r,{kind:n?.kind??ne.SpanKind.INTERNAL,attributes:n?.attributes??{}});try{let a=await t(s);return s.setStatus({code:ne.SpanStatusCode.OK}),s.end(),a}catch(a){throw s.setStatus({code:ne.SpanStatusCode.ERROR,message:a.message}),s.recordException(a),s.end(),a}}var Lt=require("crypto"),Ce=class{constructor(t){this.client=t}cache=new Map;cacheTTL=300*1e3;async get(t,n={}){let{version:e,label:s,cache:a=!0}=n;if(a){let g=this.getCacheKey(t,e,s),m=this.cache.get(g);if(m&&Date.now()-m.timestamp<this.cacheTTL)return m.prompt}let o=new URLSearchParams;e!==void 0&&o.set("version",e.toString()),s&&o.set("label",s);let d=`${this.client.baseURL}/v1/prompts/${encodeURIComponent(t)}?${o}`,c=await fetch(d,{headers:{"x-api-key":this.client.apiKey}});if(!c.ok)throw new Error(`Failed to fetch prompt: ${c.statusText}`);let u=await c.json(),l=(0,Lt.createHash)("sha256").update(JSON.stringify(u.prompt)).digest("hex"),i={...u,promptHash:l};if(a){let g=this.getCacheKey(t,e,s);this.cache.set(g,{prompt:i,timestamp:Date.now()})}return i}async list(t){let n=new URLSearchParams;t&&n.set("name",t);let e=`${this.client.baseURL}/v1/prompts?${n}`,s=await fetch(e,{headers:{"x-api-key":this.client.apiKey}});if(!s.ok)throw new Error(`Failed to list prompts: ${s.statusText}`);return(await s.json()).prompts||[]}async create(t){let n=`${this.client.baseURL}/v1/prompts`,e=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":this.client.apiKey},body:JSON.stringify(t)});if(!e.ok)throw new Error(`Failed to create prompt: ${e.statusText}`);let s=await e.json();return this.invalidateCache(t.name),s}async updateLabels(t,n,e){let s=`${this.client.baseURL}/v1/prompts/${encodeURIComponent(t)}/versions/${n}/labels`,a=await fetch(s,{method:"PATCH",headers:{"Content-Type":"application/json","x-api-key":this.client.apiKey},body:JSON.stringify({labels:e})});if(!a.ok)throw new Error(`Failed to update labels: ${a.statusText}`);let o=await a.json();return this.invalidateCache(t),o}compile(t,n){if(t.type==="text"){let e=typeof t.prompt=="string"?t.prompt:t.prompt.content;return Object.entries(n).forEach(([s,a])=>{e=e.replace(new RegExp(`\\{\\{${s}\\}\\}`,"g"),a)}),e}return JSON.stringify(t.prompt)}clearCache(t){t?this.invalidateCache(t):this.cache.clear()}getCacheKey(t,n,e){return n!==void 0?`${t}:v${n}`:e?`${t}:label:${e}`:`${t}:latest`}invalidateCache(t){let n=[];for(let e of this.cache.keys())e.startsWith(`${t}:`)&&n.push(e);n.forEach(e=>this.cache.delete(e))}};var zn="[REDACTED]",zt=r=>r.toLowerCase().replace(/[^a-z0-9]/g,""),Bn=r=>{let t=new Set;for(let n of r){let e=zt(String(n));e&&t.add(e)}return t},Ue=(r,t)=>{if(Array.isArray(r))return r.map(s=>Ue(s,t));if(!r||typeof r!="object")return r;let n=r,e={};for(let[s,a]of Object.entries(n)){if(t.has(zt(s))){e[s]=zn;continue}e[s]=Ue(a,t)}return e},Bt=(r,t)=>{if(r==null)return"";let n=Bn(t);if(typeof r=="string")try{let e=JSON.parse(r);return e&&typeof e=="object"?JSON.stringify(Ue(e,n)):r}catch{return r}return JSON.stringify(Ue(r,n))};function $t(){return{modelOverrides:new Map,cacheConfig:new Map,rateLimits:new Map,guardrailOverrides:new Map,samplingRate:1,promptVersions:new Map,fallbacks:new Map,retryPolicies:new Map,timeouts:new Map,concurrencyLimits:new Map,abTests:new Map}}function Oe(r,t){if(r.size!==t.size)return!1;for(let[n,e]of r){let s=t.get(n);if(typeof e=="object"&&e!==null&&typeof s=="object"&&s!==null){if(JSON.stringify(e)!==JSON.stringify(s))return!1}else if(s!==e)return!1}return!0}var Ve=class{localVersion=0;config=$t();listeners=new Map;fetching=!1;baseUrl;apiKey;projectId;constructor(t){this.baseUrl=t.baseUrl.replace(/\/+$/,""),this.apiKey=t.apiKey,this.projectId=t.projectId}checkVersion(t){t>this.localVersion&&!this.fetching&&(this.fetching=!0,this.fetchConfig().then(n=>{n&&(this.localVersion=t,this.applyFullConfig(n))}).catch(()=>{}).finally(()=>{this.fetching=!1}))}getModel(t,n){return this.config.modelOverrides.get(t)??n}getCacheConfig(t){return this.config.cacheConfig.get(t)??null}getSamplingRate(){return this.config.samplingRate}getRuntimeConfig(){return this.config}getLocalVersion(){return this.localVersion}getFallback(t){return this.config.fallbacks.get(t)??null}getRetryPolicy(t){return this.config.retryPolicies.get(t)??null}getTimeout(t){return this.config.timeouts.get(t)??null}getConcurrencyLimit(t){return this.config.concurrencyLimits.get(t)??null}getAbTest(t){return this.config.abTests.get(t)??null}on(t,n){let e=this.listeners.get(t)??[];e.push(n),this.listeners.set(t,e)}emit(t,n){let e=this.listeners.get(t);if(e)for(let s of e)try{s(n)}catch{}}async fetchConfig(){try{let t=`${this.baseUrl}/v1/sdk/config?projectId=${encodeURIComponent(this.projectId)}`,n=await fetch(t,{headers:{"x-api-key":this.apiKey}});return n.ok?(await n.json()).config??null:null}catch{return null}}applyFullConfig(t){let n=this.config,e=this.parseSnapshot(t);this.config=e,Oe(n.modelOverrides,e.modelOverrides)||this.emit("model_override",Object.fromEntries(e.modelOverrides)),n.samplingRate!==e.samplingRate&&this.emit("sampling_config",{samplingRate:e.samplingRate}),Oe(n.cacheConfig,e.cacheConfig)||this.emit("cache_config",Object.fromEntries(e.cacheConfig)),Oe(n.fallbacks,e.fallbacks)||this.emit("fallback_config",Object.fromEntries(e.fallbacks)),Oe(n.retryPolicies,e.retryPolicies)||this.emit("retry_config",Object.fromEntries(e.retryPolicies)),Oe(n.timeouts,e.timeouts)||this.emit("timeout_config",Object.fromEntries(e.timeouts)),Oe(n.abTests,e.abTests)||this.emit("ab_test_config",Object.fromEntries(e.abTests))}parseSnapshot(t){let n=$t();for(let[e,s]of Object.entries(t))try{let a=typeof s=="string"?JSON.parse(s):s;if(e.startsWith("model_override.")){let o=e.slice(15),d=typeof a=="string"?a:a?.model??a?.value;typeof d=="string"&&n.modelOverrides.set(o,d)}else if(e.startsWith("cache.")){let o=e.slice(6);n.cacheConfig.set(o,{enabled:a?.enabled??!0,ttlSeconds:typeof a?.ttlSeconds=="number"?a.ttlSeconds:300,similarityThreshold:typeof a?.similarityThreshold=="number"?a.similarityThreshold:.85})}else if(e.startsWith("ratelimit.")){let o=e.slice(10);n.rateLimits.set(o,{maxRequests:typeof a?.maxRequests=="number"?a.maxRequests:100,windowSeconds:typeof a?.windowSeconds=="number"?a.windowSeconds:60})}else if(e.startsWith("guardrail.")&&!e.startsWith("guardrail_mode.")){let o=e.slice(10);n.guardrailOverrides.set(o,!!(a?.enabled??a))}else if(e.startsWith("sampling.")){let o=typeof a=="number"?a:a?.rate??a?.sampleRate;typeof o=="number"&&o>=0&&o<=1&&(n.samplingRate=o)}else if(e.startsWith("prompt_version.")){let o=e.slice(15),d=typeof a=="number"?a:a?.version;typeof d=="number"&&n.promptVersions.set(o,d)}else if(e.startsWith("fallback.")){let o=e.slice(9),d=typeof a?.model=="string"?a.model:null,c=Array.isArray(a?.conditions)?a.conditions.filter(u=>typeof u=="string"):[];d&&n.fallbacks.set(o,{model:d,conditions:c})}else if(e.startsWith("retry.")){let o=e.slice(6),d=typeof a?.enabled=="boolean"?a.enabled:!1,c=typeof a?.maxRetries=="number"?a.maxRetries:3,u=typeof a?.backoffMultiplier=="number"?a.backoffMultiplier:2,l=Array.isArray(a?.retryOnStatusCodes)?a.retryOnStatusCodes.filter(i=>typeof i=="number"):[];n.retryPolicies.set(o,{enabled:d,maxRetries:c,backoffMultiplier:u,retryOnStatusCodes:l})}else if(e.startsWith("timeout.")){let o=e.slice(8),d=typeof a?.timeoutMs=="number"?a.timeoutMs:typeof a=="number"?a:null;typeof d=="number"&&d>0&&n.timeouts.set(o,{timeoutMs:d})}else if(e.startsWith("concurrency.")){let o=e.slice(12),d=typeof a=="number"?a:typeof a?.limit=="number"?a.limit:null;typeof d=="number"&&d>0&&n.concurrencyLimits.set(o,d)}else if(e.startsWith("ab_test.")){let o=e.slice(8),d=typeof a?.candidateModel=="string"?a.candidateModel:null,c=typeof a?.splitPercentage=="number"?a.splitPercentage:null;d&&c!==null&&c>=0&&c<=100&&n.abTests.set(o,{candidateModel:d,splitPercentage:c})}}catch{}return n}};var Wt=require("async_hooks"),Jt=require("crypto"),pt=new Wt.AsyncLocalStorage,p=()=>(0,Jt.randomUUID)(),E=()=>pt.getStore();function W(r,t){return pt.run(r,t)}function He(r,t){let n=E(),e={traceId:r.traceId??n?.traceId??p(),spanId:p(),userId:r.userId??n?.userId,sessionId:r.sessionId??n?.sessionId,tags:{...n?.tags,...r.tags},agentId:r.agentId??n?.agentId,agentName:r.agentName??n?.agentName,agentRole:r.agentRole??n?.agentRole,agentFramework:r.agentFramework??n?.agentFramework,parentAgentId:r.agentId?n?.agentId:n?.parentAgentId,conversationTurn:n?.conversationTurn,availableTools:n?.availableTools};return pt.run(e,t)}function Qe(r,t){return He(t??{},r)}var Zt=Qe;var x="1.1.0";function xe(){try{return F()}catch{return null}}var _t=new Set;function le(r){_t.add(r)}function ae(r){_t.delete(r)}function Te(){return _t.size>0}var Xe=!1,Ye=!1,Ut=!1,Vt=!1,Re=null,Ne=null,mt=null,gt=null,Ts=(async()=>{try{Re=await import("openai/resources/chat/completions")}catch{}try{Ne=await import("@anthropic-ai/sdk/resources/messages")}catch{}try{mt=await import("@google/generative-ai")}catch{}try{gt=await import("@google/genai")}catch{}Xt()})();function Ht(r){async function t(n,e){let s=xe();if(!s||Te())return r.call(this,n,e);let a=performance.now(),o=E(),d=p(),c=o?.traceId??p(),u=n?.model??"unknown",l=n?.stream===!0;try{let i=await r.call(this,n,e);if(l){let g=i[Symbol.asyncIterator]?.bind(i);return g&&(i[Symbol.asyncIterator]=function(){let m=g(),h=0,w=0,y="",f;return{async next(){let{value:I,done:k}=await m.next();return k?(s.enqueue({event_id:p(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openai",model:u,operation:"chat",latency_ms:performance.now()-a,ttft_ms:f,stream:!0,input_tokens:h,output_tokens:w,finish_reason:y,status:"success",span_kind:"llm",agent_id:o?.agentId,agent_name:o?.agentName,agent_role:o?.agentRole,environment:s.environment,sdk_version:x}),{value:I,done:!0}):(f||(f=performance.now()-a),I?.usage&&(h=I.usage.prompt_tokens??h,w=I.usage.completion_tokens??w),I?.choices?.[0]?.finish_reason&&(y=I.choices[0].finish_reason),{value:I,done:!1})},[Symbol.asyncIterator](){return this}}}),i}return s.enqueue({event_id:p(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openai",model:i.model??u,operation:"chat",latency_ms:performance.now()-a,stream:!1,input_tokens:i.usage?.prompt_tokens??0,output_tokens:i.usage?.completion_tokens??0,cached_tokens:i.usage?.prompt_tokens_details?.cached_tokens??0,finish_reason:i.choices?.[0]?.finish_reason??"",status:"success",span_kind:"llm",agent_id:o?.agentId,agent_name:o?.agentName,agent_role:o?.agentRole,...s.storePrompts?{prompt_text:s.redactForStorage(n.messages),completion_text:s.redactForStorage(i.choices?.[0]?.message?.content??"")}:{},environment:s.environment,sdk_version:x}),i}catch(i){throw s.enqueue({event_id:p(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openai",model:u,operation:"chat",latency_ms:performance.now()-a,stream:l,input_tokens:0,output_tokens:0,status:"error",error_code:String(i.status??"unknown"),error_message:String(i.message).slice(0,500),span_kind:"llm",environment:s.environment,sdk_version:x}),i}}return t.__zespanAutoPatched=!0,t}function $n(){if(!Xe&&Re)try{let r=Re.Completions;if(!r?.prototype)return;let t=r.prototype.create;if(typeof t=="function"&&!t.__zespanAutoPatched){r.prototype.create=Ht(t),Xe=!0;return}if(typeof t!="function"){if(r.__zespanAutoPatched){Xe=!0;return}let n=r;class e extends n{constructor(...o){if(super(...o),Object.prototype.hasOwnProperty.call(this,"create")&&!this.create?.__zespanAutoPatched){let d=this.create;this.create=Ht(d)}}}e.__zespanAutoPatched=!0;let s=Object.getOwnPropertyDescriptor(Re,"Completions");if(s&&(s.writable!==!1||s.configurable))try{Object.defineProperty(Re,"Completions",{value:e,writable:!0,enumerable:!0,configurable:!0}),Xe=!0}catch{}}}catch{}}function Qt(r){async function t(n,e){let s=xe();if(!s||Te())return r.call(this,n,e);let a=performance.now(),o=E(),d=p(),c=o?.traceId??p(),u=n?.model??"unknown",l=n?.stream===!0;try{let i=await r.call(this,n,e);if(l){let g=i[Symbol.asyncIterator]?.bind(i);return g&&(i[Symbol.asyncIterator]=function(){let m=g(),h=0,w=0,y="",f;return{async next(){let{value:I,done:k}=await m.next();return k?(s.enqueue({event_id:p(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:u,operation:"messages",latency_ms:performance.now()-a,ttft_ms:f,stream:!0,input_tokens:h,output_tokens:w,finish_reason:y,status:"success",span_kind:"llm",agent_id:o?.agentId,agent_name:o?.agentName,agent_role:o?.agentRole,environment:s.environment,sdk_version:x}),{value:I,done:!0}):(f||(f=performance.now()-a),I?.type==="message_delta"&&I?.usage&&(w=I.usage.output_tokens??w),I?.type==="message_start"&&I?.message?.usage&&(h=I.message.usage.input_tokens??h),I?.type==="message_delta"&&I?.delta?.stop_reason&&(y=I.delta.stop_reason),{value:I,done:!1})},[Symbol.asyncIterator](){return this}}}),i}return s.enqueue({event_id:p(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:i.model??u,operation:"messages",latency_ms:performance.now()-a,stream:!1,input_tokens:i.usage?.input_tokens??0,output_tokens:i.usage?.output_tokens??0,finish_reason:i.stop_reason??"",status:"success",span_kind:"llm",agent_id:o?.agentId,agent_name:o?.agentName,agent_role:o?.agentRole,...s.storePrompts?{prompt_text:s.redactForStorage(n.messages),completion_text:s.redactForStorage(i.content?.filter(g=>g.type==="text").map(g=>g.text).join("")??"")}:{},environment:s.environment,sdk_version:x}),i}catch(i){throw s.enqueue({event_id:p(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:u,operation:"messages",latency_ms:performance.now()-a,stream:l,input_tokens:0,output_tokens:0,status:"error",error_code:String(i.status??"unknown"),error_message:String(i.message).slice(0,500),span_kind:"llm",environment:s.environment,sdk_version:x}),i}}return t.__zespanAutoPatched=!0,t}function Wn(){if(!Ye&&Ne)try{let r=Ne.Messages;if(!r?.prototype)return;let t=r.prototype.create;if(typeof t=="function"&&!t.__zespanAutoPatched){r.prototype.create=Qt(t),Ye=!0;return}if(typeof t!="function"){if(r.__zespanAutoPatched){Ye=!0;return}let n=r;class e extends n{constructor(...o){if(super(...o),Object.prototype.hasOwnProperty.call(this,"create")&&!this.create?.__zespanAutoPatched){let d=this.create;this.create=Qt(d)}}}e.__zespanAutoPatched=!0;let s=Object.getOwnPropertyDescriptor(Ne,"Messages");if(s&&(s.writable!==!1||s.configurable))try{Object.defineProperty(Ne,"Messages",{value:e,writable:!0,enumerable:!0,configurable:!0}),Ye=!0}catch{}}}catch{}}function Jn(){if(!Ut&&mt)try{let e=function(s,a){let o=n.call(this,s,a),d=o.generateContent?.bind(o),c=o.generateContentStream?.bind(o);return!d||d.__zespanAutoPatched||(o.generateContent=async u=>{let l=xe();if(!l||Te())return d(u);let i=performance.now(),g=E(),m=p(),h=g?.traceId??p(),w=s.model??"gemini-1.5-flash";try{let y=await d(u),f=y.response?.usageMetadata;return l.enqueue({event_id:p(),project_id:"",trace_id:h,span_id:m,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:w,operation:"generateContent",latency_ms:performance.now()-i,stream:!1,input_tokens:f?.promptTokenCount??0,output_tokens:f?.candidatesTokenCount??0,finish_reason:y.response?.candidates?.[0]?.finishReason??"",status:"success",span_kind:"llm",environment:l.environment,sdk_version:x}),y}catch(y){throw l.enqueue({event_id:p(),project_id:"",trace_id:h,span_id:m,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:w,operation:"generateContent",latency_ms:performance.now()-i,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_message:String(y.message).slice(0,500),span_kind:"llm",environment:l.environment,sdk_version:x}),y}},o.generateContent.__zespanAutoPatched=!0,c&&(o.generateContentStream=async u=>{let l=xe();if(!l||Te())return c(u);let i=performance.now(),g=E(),m=p(),h=g?.traceId??p(),w=s.model??"gemini-1.5-flash",y=await c(u),f=y.stream,I=0,k=0,A;return y.stream=(async function*(){try{for await(let _ of f){A||(A=performance.now()-i);let R=_.usageMetadata;R&&(I=R.promptTokenCount??I,k=R.candidatesTokenCount??k),yield _}l.enqueue({event_id:p(),project_id:"",trace_id:h,span_id:m,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:w,operation:"generateContent",latency_ms:performance.now()-i,ttft_ms:A,stream:!0,input_tokens:I,output_tokens:k,status:"success",span_kind:"llm",environment:l.environment,sdk_version:x})}catch(_){throw l.enqueue({event_id:p(),project_id:"",trace_id:h,span_id:m,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:w,operation:"generateContent",latency_ms:performance.now()-i,ttft_ms:A,stream:!0,input_tokens:I,output_tokens:k,status:"error",error_message:String(_.message).slice(0,500),span_kind:"llm",environment:l.environment,sdk_version:x}),_}})(),y})),o};var r=e;let t=mt?.GoogleGenerativeAI;if(!t?.prototype?.getGenerativeModel||t.prototype.getGenerativeModel.__zespanAutoPatched)return;let n=t.prototype.getGenerativeModel;e.__zespanAutoPatched=!0,t.prototype.getGenerativeModel=e,Ut=!0}catch{}}function Zn(){if(!Vt&&gt)try{let r=gt?.Models;if(!r?.prototype||r.prototype.generateContent?.__zespanAutoPatched)return;let t=r.prototype.generateContent,n=r.prototype.generateContentStream,e=r.prototype.embedContent;r.prototype.generateContent=async function(s){let a=xe();if(!a||Te())return t.call(this,s);let o=performance.now(),d=E(),c=p(),u=d?.traceId??p(),l=s?.model??"gemini";try{let i=await t.call(this,s),g=i?.usageMetadata,m=(i?.candidates?.[0]?.content?.parts??[]).filter(h=>h?.inlineData);return a.enqueue({event_id:p(),project_id:"",trace_id:u,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:l,operation:"generateContent",latency_ms:performance.now()-o,stream:!1,input_tokens:Number(g?.promptTokenCount||0),output_tokens:Number(g?.candidatesTokenCount||0),cached_tokens:Number(g?.cachedContentTokenCount||0),reasoning_tokens:Number(g?.thoughtsTokenCount||0),finish_reason:i?.candidates?.[0]?.finishReason??"",status:"success",span_kind:m.length>0?"image_gen":"llm",...m.length>0?{metadata:{num_images:m.length}}:{},agent_id:d?.agentId,agent_name:d?.agentName,agent_role:d?.agentRole,environment:a.environment,sdk_version:x}),i}catch(i){throw a.enqueue({event_id:p(),project_id:"",trace_id:u,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:l,operation:"generateContent",latency_ms:performance.now()-o,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(i.status??i.code??"unknown"),error_message:String(i.message).slice(0,500),span_kind:"llm",environment:a.environment,sdk_version:x}),i}},r.prototype.generateContent.__zespanAutoPatched=!0,n&&(r.prototype.generateContentStream=async function(s){let a=xe();if(!a||Te())return n.call(this,s);let o=performance.now(),d=E(),c=p(),u=d?.traceId??p(),l=s?.model??"gemini",i=await n.call(this,s);return(async function*(){let g=0,m=0,h=0,w=0,y,f="";try{for await(let I of i){y||(y=performance.now()-o);let k=I?.usageMetadata;k&&(g=Number(k.promptTokenCount||g),m=Number(k.candidatesTokenCount||m),h=Number(k.cachedContentTokenCount||h),w=Number(k.thoughtsTokenCount||w)),I?.candidates?.[0]?.finishReason&&(f=I.candidates[0].finishReason),yield I}a.enqueue({event_id:p(),project_id:"",trace_id:u,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:l,operation:"generateContent",latency_ms:performance.now()-o,ttft_ms:y,stream:!0,input_tokens:g,output_tokens:m,cached_tokens:h,reasoning_tokens:w,finish_reason:f||"stream_end",status:"success",span_kind:"llm",agent_id:d?.agentId,agent_name:d?.agentName,agent_role:d?.agentRole,environment:a.environment,sdk_version:x})}catch(I){throw a.enqueue({event_id:p(),project_id:"",trace_id:u,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:l,operation:"generateContent",latency_ms:performance.now()-o,ttft_ms:y,stream:!0,input_tokens:g,output_tokens:m,status:"error",error_code:String(I.status??I.code??"unknown"),error_message:String(I.message).slice(0,500),span_kind:"llm",environment:a.environment,sdk_version:x}),I}})()},r.prototype.generateContentStream.__zespanAutoPatched=!0),e&&(r.prototype.embedContent=async function(s){let a=xe();if(!a||Te())return e.call(this,s);let o=performance.now(),d=E(),c=p(),u=d?.traceId??p(),l=s?.model??"gemini-embedding";try{let i=await e.call(this,s),g=i?.usageMetadata;return a.enqueue({event_id:p(),project_id:"",trace_id:u,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:l,operation:"embedding",latency_ms:performance.now()-o,stream:!1,input_tokens:Number(g?.promptTokenCount||0),output_tokens:0,status:"success",span_kind:"embedding",agent_id:d?.agentId,agent_name:d?.agentName,agent_role:d?.agentRole,environment:a.environment,sdk_version:x}),i}catch(i){throw a.enqueue({event_id:p(),project_id:"",trace_id:u,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:l,operation:"embedding",latency_ms:performance.now()-o,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(i.status??i.code??"unknown"),error_message:String(i.message).slice(0,500),span_kind:"embedding",environment:a.environment,sdk_version:x}),i}},r.prototype.embedContent.__zespanAutoPatched=!0),Vt=!0}catch{}}function Xt(){$n(),Wn(),Jn(),Zn()}function Me(){Xt()}var Pe=class{apiKey;endpoint;baseURL;environment;storePrompts;redactKeys;sampleRate;debug;enableOTel;prompts;configClient;projectId;batch;_storePromptsDefault;_promptWarningShown=!1;constructor(t){if(!t.apiKey)throw new Error("Zespan: apiKey is required");t.apiKey.startsWith("zsp_")||console.warn("[zespan] API key should start with zsp_ \u2014 check your key"),this.apiKey=t.apiKey,this.baseURL=t.baseURL??"https://api.zespan.com",this.endpoint=t.endpoint??`${this.baseURL.replace(/\/+$/,"")}/v1/ingest`,this.environment=t.environment??"production",this._storePromptsDefault=t.storePrompts===void 0,this.storePrompts=t.storePrompts??!0,this.redactKeys=t.redactKeys??["password","secret","token","api_key"],this.sampleRate=t.sampleRate??1,this.debug=t.debug??!1,this.enableOTel=t.enableOTel??!1,this.projectId=t.projectId,this.prompts=new Ce(this),t.enableZespanPilot!==!1&&t.projectId?this.configClient=new Ve({baseUrl:this.baseURL,apiKey:this.apiKey,projectId:t.projectId}):this.configClient=null,this.batch=new Je(this,{maxSize:t.batchSize??50,flushInterval:t.flushInterval??2e3},this.configClient??void 0),process.once("beforeExit",()=>this.batch.flush()),this.enableOTel&&Ae({endpoint:t.otelEndpoint,serviceName:t.otelServiceName,sampleRate:t.sampleRate,apiKey:this.apiKey,environment:this.environment}),t.autopatch!==!1&&Me()}enqueue(t){Math.random()>this.sampleRate||(this.storePrompts&&this._storePromptsDefault&&!this._promptWarningShown&&(this._promptWarningShown=!0,console.warn("[zespan] Prompt and completion text is being captured by default. PII (emails, phone numbers, SSNs, credit cards) is automatically redacted server-side. To opt out: { storePrompts: false }")),this.batch.push(t))}redactForStorage(t){return Bt(t,this.redactKeys)}resolveGuardrailsUrl(){let t=this.baseURL.replace(/\/+$/,"");return t.endsWith("/v1")?`${t}/guardrails/check`:`${t}/v1/guardrails/check`}async checkGuardrails(t){let n=await fetch(this.resolveGuardrailsUrl(),{method:"POST",headers:{"content-type":"application/json","x-api-key":this.apiKey},body:JSON.stringify(t)});if(!n.ok){let s="";try{s=await n.text()}catch{s=""}throw new Error(`Guardrails check failed (${n.status})${s?`: ${s.slice(0,400)}`:""}`)}let e=await n.json();return{allowed:!!e.allowed,results:Array.isArray(e.results)?e.results:[],modifiedText:typeof e.modifiedText=="string"?e.modifiedText:null}}flush(){return this.batch.flush()}createSpan(t){return ye().startSpan(t.name,{kind:t.kind??ne.SpanKind.INTERNAL,attributes:t.attributes??{}})}async withSpan(t,n,e){let a=ye().startSpan(t,{kind:e?.kind??ne.SpanKind.INTERNAL,attributes:e?.attributes??{}});try{let o=await n(a);return a.setStatus({code:ne.SpanStatusCode.OK}),o}catch(o){throw a.setStatus({code:ne.SpanStatusCode.ERROR,message:o.message}),a.recordException(o),o}finally{a.end()}}},ft=null,et=r=>{ft=new Pe(r)},F=()=>{if(!ft)throw new Error("Call zespan.init() first");return ft},Yt=et;var V=class extends Error{phase;results;constructor(t,n){super(`Guardrail blocked ${t} content`),this.name="GuardrailBlockedError",this.phase=t,this.results=n}};function te(r,t){if(!r)return null;if(r===!0)return{pre:!0,post:!0,failClosed:!1,operation:t};let n=typeof r.pre=="boolean"||typeof r.post=="boolean";return{pre:n?!!r.pre:!0,post:n?!!r.post:!0,failClosed:!!r.failClosed,operation:r.operation??t}}function oe(r,t){return t?.modifiedText?t.modifiedText:r}async function Z(r,t,n){if(!t||n.phase==="pre"&&!t.pre||n.phase==="post"&&!t.post)return null;let e=n.text?.trim();if(!e)return null;try{let s=await r.checkGuardrails({...n,text:e.slice(0,5e4),operation:n.operation??t.operation});if(!s.allowed)throw new V(n.phase,s.results);return s}catch(s){if(s instanceof V||t.failClosed)throw s;return null}}function se(r){if(!Array.isArray(r))return{systemPrompt:void 0,conversationMessages:[]};let t=[],n=[];for(let e of r)if((typeof e?.role=="string"?e.role:e?._getType?.()??"")==="system"){let a=typeof e.content=="string"?e.content:Array.isArray(e.content)?e.content.map(o=>typeof o=="string"?o:o?.text??"").filter(Boolean).join(""):JSON.stringify(e.content??"");a&&t.push(a)}else n.push(e);return{systemPrompt:t.length?t.join(`
3
- `):void 0,conversationMessages:n}}function Un(r){let t={};try{let n=[],e=[];for(let s of r){let a=typeof s?.content=="string"?s.content:Array.isArray(s?.content)?s.content.map(o=>typeof o=="string"?o:o?.text??"").join(" "):"";s?.role==="system"&&n.push(a),e.push(a)}for(let s of n){try{let a=s.match(/You are the (\w+)Agent/i);if(a){t.agent_name=a[1];break}}catch{}try{let a=s.match(/Agent Name:\s*(\w+)/i);if(a){t.agent_name=a[1];break}}catch{}}for(let s of n)try{let a=s.match(/Role:\s*(orchestrator|specialist|planner|executor|critic)/i);if(a?.[1]){t.agent_role=a[1].toLowerCase();break}}catch{}try{r.length>10&&(t.has_memory=!0)}catch{}try{let s=e.join(" ").toLowerCase();(s.includes("think step by step")||s.includes("let's reason")||s.includes("step 1"))&&(t.has_planning=!0)}catch{}}catch{}return t}function re(r,t){let n=Un(r);try{!n.has_planning&&t&&/^o[13]/.test(t)&&(n.has_planning=!0)}catch{}return n}function ie(r){try{let t=r.filter(s=>s?.role==="user").length,n=r[r.length-1],e=typeof n?.role=="string"?n.role:"user";return{conversation_turn:t,message_role:e}}catch{return{conversation_turn:0,message_role:"user"}}}function ce(r){try{return r.map(t=>{try{return t?.type==="function"&&t?.function?{name:String(t.function.name??""),description:t.function.description?String(t.function.description):void 0,parameters_schema:t.function.parameters??void 0,source:"function"}:t?.name?{name:String(t.name),description:t.description?String(t.description):void 0,parameters_schema:t.input_schema??t.parameters??void 0,source:"function"}:null}catch{return null}}).filter(t=>t!==null)}catch{return[]}}function tt(r){try{let t=r?.[0]?.message?.tool_calls??[],n=[],e={};for(let s of t)try{let a=s?.function?.name;if(typeof a=="string"&&a){n.includes(a)||n.push(a);try{e[a]=typeof s.function.arguments=="string"?JSON.parse(s.function.arguments):s.function.arguments??{}}catch{e[a]=s.function?.arguments??{}}}}catch{}return{tools_used:n,tool_call_args:e}}catch{return{tools_used:[],tool_call_args:{}}}}function ke(r){try{let t={};for(let s of r)try{let a=typeof s?.index=="number"?s.index:0;t[a]||(t[a]={name:"",argumentsStr:""}),s?.function?.name&&(t[a].name+=s.function.name),s?.function?.arguments&&(t[a].argumentsStr+=s.function.arguments)}catch{}let n=[],e={};for(let s of Object.values(t))try{let a=s.name;if(a&&!n.includes(a)){n.push(a);try{e[a]=s.argumentsStr?JSON.parse(s.argumentsStr):{}}catch{e[a]=s.argumentsStr}}}catch{}return{tools_used:n,tool_call_args:e}}catch{return{tools_used:[],tool_call_args:{}}}}var tn=require("crypto"),ue=require("@opentelemetry/api");async function Ie(r,t){if(!t||!t.enabled)return r();let n;for(let e=0;e<=t.maxRetries;e++)try{return await r()}catch(s){if(n=s,t.retryOnStatusCodes.length>0&&!t.retryOnStatusCodes.includes(s?.status))throw s;if(e>=t.maxRetries)break;let a=Math.min(1e3*Math.pow(t.backoffMultiplier,e),3e4);await Vn(a)}throw n}function Vn(r){return new Promise(t=>setTimeout(t,r))}var ht=class{constructor(t){this.max=t;this.counter=t}counter;queue=[];acquire(){return this.counter>0?(this.counter--,Promise.resolve()):new Promise(t=>{this.queue.push(t)})}release(){this.queue.length>0?this.queue.shift()():this.counter++}async run(t){await this.acquire();try{return await t()}finally{this.release()}}},en=new Map;function Se(r,t){let n=en.get(r);return n||(n=new ht(t),en.set(r,n)),n}var nt=r=>(0,tn.createHash)("sha256").update(r).digest("hex");function Hn(r,t,n="openai"){return{"gen_ai.system":n,"gen_ai.model":t,"gen_ai.operation.name":"chat","gen_ai.prompt":JSON.stringify(r.messages),"gen_ai.request.max_tokens":r.max_tokens,"gen_ai.request.temperature":r.temperature,"gen_ai.request.top_p":r.top_p}}async function*Qn(r,t){let{client:n,t0:e,traceId:s,spanId:a,parent:o,params:d,otelSpan:c,model:u,agentCtx:l,autoDetected:i,conversation_turn:g,message_role:m,tool_definitions:h,provider:w,operation:y}=t,f=w??"openai",I,k=0,A=0,_=0,R="",S=u,b=[],C="",j=[],{systemPrompt:O,conversationMessages:v}=se(d.messages??[]);try{for await(let D of r){I||(I=performance.now()-e,n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:f,model:S,operation:y,latency_ms:I,ttft_ms:I,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:nt(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(v),...O?{system_prompt:n.redactForStorage(O)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x,finish_reason:"stream_start",...l,span_kind:"llm",tool_definitions:h,conversation_turn:g,message_role:m,metadata:{auto_detected:Object.keys(i).length?i:void 0}}),c&&c.setAttribute("gen_ai.response.time_to_first_token",I));let M=D.choices?.[0]?.delta?.content;if(M&&(A++,C+=M),D.choices?.[0]?.finish_reason&&(R=D.choices[0].finish_reason),D.model&&(S=D.model),D.usage&&(k=Number(D.usage.prompt_tokens||k||0),A=Number(D.usage.completion_tokens||A||0),_=Number(D.usage.prompt_tokens_details?.cached_tokens||_||0)),D.choices?.[0]?.delta?.tool_calls)for(let B of D.choices[0].delta.tool_calls)j.push(B),B.function?.name&&!b.includes(B.function.name)&&b.push(B.function.name);yield D}let{tools_used:P,tool_call_args:N}=ke(j),q=P.length>0?P:b,T=performance.now()-e;n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:f,model:S,operation:y,latency_ms:T,ttft_ms:I,stream:!0,input_tokens:k,output_tokens:A,cached_tokens:_,status:"success",finish_reason:R||"stream_end",tools_used:q,tool_call_args:Object.keys(N).length?N:void 0,prompt_hash:nt(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(v),completion_text:n.redactForStorage(C),...O?{system_prompt:n.redactForStorage(O)}:{}}:{},...q.length>0&&C?{decision_rationale:C}:{},...l,span_kind:"llm",tool_definitions:h,conversation_turn:g,message_role:m,metadata:{usage:{prompt_tokens:k,completion_tokens:A,cached_tokens:_},auto_detected:Object.keys(i).length?i:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),c&&(c.setAttribute("gen_ai.usage.output_tokens",A),c.setAttribute("gen_ai.usage.total_tokens",A),c.setAttribute("gen_ai.response.finish_reason",R||"stream_end"),c.setAttribute("gen_ai.response.latency",T))}catch(P){throw n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:f,model:S,operation:y,latency_ms:performance.now()-e,ttft_ms:I,stream:!0,input_tokens:0,output_tokens:A,cost_usd:0,status:"error",error_code:String(P.status??"unknown"),error_message:String(P.message).slice(0,500),...l,span_kind:"llm",conversation_turn:g,message_role:m,metadata:{auto_detected:Object.keys(i).length?i:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),c&&(c.setStatus({code:ue.SpanStatusCode.ERROR,message:P.message}),c.recordException(P)),P}}function je(r,t={}){let n=r,e=n.chat.completions.create.bind(n.chat.completions),s=te(t.guardrails,"chat"),a=t.providerOverride??"openai",o=t.operation??"chat";return n.chat.completions.create=async(d,c)=>{let u=F(),l=performance.now(),i=E(),g=p(),m=i?.traceId??p(),h=d.model??"gpt-4",w;if(u.configClient){let v=u.configClient.getAbTest(o);if(v)Math.random()<v.splitPercentage/100?(h=v.candidateModel,w={ab_test:!0,ab_variant:"candidate"}):w={ab_test:!0,ab_variant:"control"},d={...d,model:h};else{let P=u.configClient.getModel(o,h);if(P!==h){let N=h;h=P,d={...d,model:P},u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:a,model:P,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:N,override_model:P},environment:u.environment,sdk_version:x})}}}let y=null,f=null,I=i?.agentId?{agent_id:i.agentId,agent_name:i.agentName,agent_role:i.agentRole,agent_framework:i.agentFramework,parent_agent_id:i.parentAgentId}:{},k=re(d.messages??[],d.model),{conversation_turn:A,message_role:_}=ie(d.messages??[]),R=d.tools?.length?ce(d.tools):void 0,S=null,b=u.enableOTel?ue.trace.getTracer("zespan-sdk"):null;b&&(S=b.startSpan(`chat.completions ${h}`,{kind:ue.SpanKind.CLIENT,attributes:Hn(d,h,a)}));let C;if(u.configClient){let v=u.configClient.getTimeout(o);v&&(C=AbortSignal.timeout(v.timeoutMs))}let j=u.configClient?.getRetryPolicy(o)??null,O=u.configClient?.getConcurrencyLimit(o)??null;try{y=await Z(u,s,{text:JSON.stringify(d.messages??[]),phase:"pre",traceId:m,spanId:g,model:h,operation:o,agentName:i?.agentName});let v=()=>Ie(()=>W({traceId:m,spanId:g,userId:i?.userId,sessionId:i?.sessionId,tags:i?.tags},()=>e(d,C?{...c,signal:C}:c)),j),P=await(O!==null?Se(`${u.projectId??"default"}:${o}`,O).run(v):v());if(d.stream===!0)return Qn(P,{client:u,t0:l,traceId:m,spanId:g,parent:i,params:d,otelSpan:S,model:h,agentCtx:I,autoDetected:k,conversation_turn:A,message_role:_,tool_definitions:R,provider:a,operation:o});let{prompt_tokens:q,completion_tokens:T,prompt_tokens_details:D}=P.usage??{},M=D?.cached_tokens??0,B=P.model??d.model,K=P.usage?.completion_tokens_details?.reasoning_tokens,z=P.choices?.[0]?.message?.content||"";f=await Z(u,s,{text:z,phase:"post",traceId:m,spanId:g,model:B,operation:o,agentName:i?.agentName});let U=oe(z,f);U!==z&&typeof P?.choices?.[0]?.message?.content=="string"&&(P.choices[0].message.content=U);let{tools_used:G,tool_call_args:H}=tt(P.choices??[]),{systemPrompt:L,conversationMessages:J}=se(d.messages??[]);return u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:a,model:B,operation:o,latency_ms:performance.now()-l,stream:!1,input_tokens:q??0,output_tokens:T??0,cached_tokens:M,...K?{reasoning_tokens:K}:{},status:"success",finish_reason:P.choices?.[0]?.finish_reason??"",tools_used:G.length>0?G:P.choices?.[0]?.message?.tool_calls?.map(X=>X.function.name)??[],tool_call_args:Object.keys(H).length?H:void 0,prompt_hash:nt(JSON.stringify(d.messages)),...u.storePrompts?{prompt_text:u.redactForStorage(J),completion_text:u.redactForStorage(U),...L?{system_prompt:u.redactForStorage(L)}:{}}:{},...G.length>0&&z?{decision_rationale:z}:{},...I,span_kind:"llm",tool_definitions:R,conversation_turn:A,message_role:_,metadata:{usage:P.usage??null,guardrails:{pre:y?{matched:y.results.length,modified:!!y.modifiedText}:null,post:f?{matched:f.results.length,modified:!!f.modifiedText}:null},auto_detected:Object.keys(k).length?k:void 0,...w??{}},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x}),S&&(S.setAttribute("gen_ai.usage.input_tokens",q??0),S.setAttribute("gen_ai.usage.output_tokens",T??0),S.setAttribute("gen_ai.usage.total_tokens",(q??0)+(T??0)),S.setAttribute("gen_ai.usage.cached_tokens",M),S.setAttribute("gen_ai.response.finish_reason",P.choices?.[0]?.finish_reason??""),S.setAttribute("gen_ai.response.latency",performance.now()-l),S.setStatus({code:ue.SpanStatusCode.OK}),S.end()),P}catch(v){if(v?.name==="TimeoutError"||v?.code==="ABORT_ERR"||C&&C.aborted)throw u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:a,model:d.model,operation:o,latency_ms:performance.now()-l,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:"timeout",error_message:String(v.message).slice(0,500),...I,span_kind:"llm",conversation_turn:A,message_role:_,metadata:{auto_detected:Object.keys(k).length?k:void 0},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x}),S&&(S.setStatus({code:ue.SpanStatusCode.ERROR,message:v.message}),S.recordException(v),S.end()),v;let N=u.configClient?.getFallback(o)??null;if(N&&N.model){let D=String(v.message??"")+String(v.status??"")+String(v.code??"");if(N.conditions.length===0||N.conditions.some(B=>D.toLowerCase().includes(B.toLowerCase()))){let B=h,K={...d,model:N.model};u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:a,model:N.model,operation:o,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:B,fallback_model:N.model,reason:String(v.message).slice(0,200)},environment:u.environment,sdk_version:x});try{let z=await W({traceId:m,spanId:g,userId:i?.userId,sessionId:i?.sessionId,tags:i?.tags},()=>e(K,c)),{prompt_tokens:U,completion_tokens:G,prompt_tokens_details:H}=z.usage??{},L=H?.cached_tokens??0,J=z.model??N.model;return u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:a,model:J,operation:o,latency_ms:performance.now()-l,stream:!1,input_tokens:U??0,output_tokens:G??0,cached_tokens:L,status:"success",finish_reason:z.choices?.[0]?.finish_reason??"",prompt_hash:nt(JSON.stringify(d.messages)),...I,span_kind:"llm",conversation_turn:A,message_role:_,metadata:{usage:z.usage??null,fallback_used:!0,original_model:B,auto_detected:Object.keys(k).length?k:void 0},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x}),S&&(S.setStatus({code:ue.SpanStatusCode.OK}),S.end()),z}catch(z){throw S&&(S.setStatus({code:ue.SpanStatusCode.ERROR,message:z.message}),S.recordException(z),S.end()),z}}}let q=v instanceof V,T=q?"error":v.status===429?"rate_limited":v.status===408?"timeout":"error";throw u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:a,model:d.model,operation:o,latency_ms:performance.now()-l,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:T,error_code:q?"guardrail_blocked":String(v.status??"unknown"),error_message:String(v.message).slice(0,500),...I,span_kind:"llm",conversation_turn:A,message_role:_,metadata:{auto_detected:Object.keys(k).length?k:void 0},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x}),S&&(S.setStatus({code:ue.SpanStatusCode.ERROR,message:v.message}),S.recordException(v),S.end()),v}},r}var nn=require("crypto"),pe=require("@opentelemetry/api");var st=r=>(0,nn.createHash)("sha256").update(r).digest("hex");function Xn(r){let t=Array.isArray(r?.messages)?[...r.messages]:[],n=r?.system;if(typeof n=="string"&&n.trim().length>0)return[{role:"system",content:n},...t];if(Array.isArray(n)&&n.length>0){let e=n.map(s=>typeof s=="string"?s:typeof s?.text=="string"?s.text:"").filter(s=>s.length>0).join(`
4
- `);if(e.length>0)return[{role:"system",content:e},...t]}return t}function Yn(r,t){return{"gen_ai.system":"anthropic","gen_ai.model":t,"gen_ai.operation.name":"chat","gen_ai.prompt":JSON.stringify(r.messages),"gen_ai.request.max_tokens":r.max_tokens,"gen_ai.request.temperature":r.temperature}}async function*es(r,t){let{client:n,t0:e,traceId:s,spanId:a,parent:o,params:d,otelSpan:c,agentCtx:u,tool_definitions:l,autoDetected:i,conversation_turn:g,message_role:m,operation:h,detectionMessages:w}=t,y,f=0,I=0,k=0,A=0,_="",R=d.model,S=[],b="",{systemPrompt:C,conversationMessages:j}=se(w);try{for await(let v of r){if(!y&&v.type==="content_block_start"&&(y=performance.now()-e,n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:R,operation:h,latency_ms:y,ttft_ms:y,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:st(JSON.stringify(w)),...n.storePrompts?{prompt_text:n.redactForStorage(j),...C?{system_prompt:n.redactForStorage(C)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x,finish_reason:"stream_start",...u,span_kind:"llm",tool_definitions:l,conversation_turn:g,message_role:m,metadata:{auto_detected:Object.keys(i).length?i:void 0}}),c&&c.setAttribute("gen_ai.response.time_to_first_token",y)),v.type==="content_block_delta"&&v.delta?.type==="text_delta"&&(A++,b+=v.delta.text||""),v.type==="message_delta"&&v.delta?.stop_reason&&(_=v.delta.stop_reason),v.type==="message_delta"&&v.usage&&(f=Number(v.usage.input_tokens||f||0),A=Number(v.usage.output_tokens||A||0),I=Number(v.usage.cache_read_input_tokens||I||0)),v.type==="message_start"&&v.message?.usage&&(f=Number(v.message.usage.input_tokens||f||0),A=Number(v.message.usage.output_tokens||A||0),I=Number(v.message.usage.cache_read_input_tokens||I||0)),v.type==="content_block_start"&&v.content_block?.type==="tool_use"){let P=v.content_block.name;P&&!S.includes(P)&&S.push(P)}yield v}let O=performance.now()-e;n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:R,operation:h,latency_ms:O,ttft_ms:y,stream:!0,input_tokens:f,output_tokens:A,cached_tokens:I,reasoning_tokens:k,status:"success",finish_reason:_||"stream_end",tools_used:S,prompt_hash:st(JSON.stringify(w)),...n.storePrompts?{prompt_text:n.redactForStorage(j),completion_text:n.redactForStorage(b),...C?{system_prompt:n.redactForStorage(C)}:{}}:{},...u,span_kind:"llm",tool_definitions:l,conversation_turn:g,message_role:m,metadata:{usage:{input_tokens:f,output_tokens:A,cache_read_input_tokens:I,reasoning_tokens:k},auto_detected:Object.keys(i).length?i:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),c&&(c.setAttribute("gen_ai.usage.output_tokens",A),c.setAttribute("gen_ai.response.finish_reason",_||"stream_end"))}catch(O){throw n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:R,operation:h,latency_ms:performance.now()-e,ttft_ms:y,stream:!0,input_tokens:0,output_tokens:A,cost_usd:0,status:"error",error_code:String(O.status??O.type??"unknown"),error_message:String(O.message).slice(0,500),...u,span_kind:"llm",conversation_turn:g,message_role:m,metadata:{auto_detected:Object.keys(i).length?i:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),c&&(c.setStatus({code:pe.SpanStatusCode.ERROR,message:O.message}),c.recordException(O)),O}}function yt(r,t={}){let n=r,e=n.messages.create.bind(n.messages),s=te(t.guardrails,"chat"),a=t.operation??"chat";return n.messages.create=async(o,d)=>{let c=F(),u=performance.now(),l=E(),i=p(),g=l?.traceId??p(),m=o.model??"claude-3-5-sonnet-20241022",h;if(c.configClient){let T=c.configClient.getAbTest(a);if(T)Math.random()<T.splitPercentage/100?(m=T.candidateModel,h={ab_test:!0,ab_variant:"candidate"}):h={ab_test:!0,ab_variant:"control"},o={...o,model:m};else{let D=c.configClient.getModel(a,m);if(D!==m){let M=m;m=D,o={...o,model:D},c.enqueue({event_id:p(),project_id:"",trace_id:g,span_id:i,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:D,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:M,override_model:D},environment:c.environment,sdk_version:x})}}}let w=null,y=null,f=Xn(o),{systemPrompt:I,conversationMessages:k}=se(f),A=re(f,m),{conversation_turn:_,message_role:R}=ie(f),S=l?.agentName??A.agent_name,b=l?.agentRole??A.agent_role,C=l?.agentId||S||b?{agent_id:l?.agentId,agent_name:S,agent_role:b,agent_framework:l?.agentFramework,parent_agent_id:l?.parentAgentId}:{},j=o.tools?.length?ce(o.tools):void 0,O=null,v=c.enableOTel?pe.trace.getTracer("zespan-sdk"):null;v&&(O=v.startSpan(`messages.create ${m}`,{kind:pe.SpanKind.CLIENT,attributes:Yn(o,m)}));let P;if(c.configClient){let T=c.configClient.getTimeout(a);T&&(P=AbortSignal.timeout(T.timeoutMs))}let N=c.configClient?.getRetryPolicy(a)??null,q=c.configClient?.getConcurrencyLimit(a)??null;try{w=await Z(c,s,{text:JSON.stringify(o.messages??[]),phase:"pre",traceId:g,spanId:i,model:m,operation:a,agentName:l?.agentName});let T=()=>Ie(()=>W({traceId:g,spanId:i,userId:l?.userId,sessionId:l?.sessionId,tags:l?.tags,agentId:l?.agentId,agentName:S,agentRole:b,agentFramework:l?.agentFramework,parentAgentId:l?.parentAgentId,conversationTurn:_,availableTools:j},()=>e(o,P?{...d,signal:P}:d)),N),D=await(q!==null?Se(`${c.projectId??"default"}:${a}`,q).run(T):T());if(o.stream===!0)return es(D,{client:c,t0:u,traceId:g,spanId:i,parent:l,params:o,otelSpan:O,agentCtx:C,tool_definitions:j,autoDetected:A,conversation_turn:_,message_role:R,operation:a,detectionMessages:f});let B=D.usage?.input_tokens??0,K=D.usage?.output_tokens??0,z=D.usage?.cache_read_input_tokens??0,U=D.model??o.model,G=D.content?.find($=>$.type==="text")?.text||"",H=(D.content??[]).filter($=>$.type==="tool_use"),L=H.map($=>$.name).filter(Boolean),J={};for(let $ of H)$.name&&(J[$.name]=$.input??{});y=await Z(c,s,{text:G,phase:"post",traceId:g,spanId:i,model:U,operation:a,agentName:l?.agentName});let X=oe(G,y);if(X!==G){let $=D.content?.find(Y=>Y.type==="text");$&&typeof $.text=="string"&&($.text=X)}return c.enqueue({event_id:p(),project_id:"",trace_id:g,span_id:i,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:U,operation:a,latency_ms:performance.now()-u,stream:!1,input_tokens:B,output_tokens:K,cached_tokens:z,status:"success",finish_reason:D.stop_reason??"",tools_used:L.length>0?L:D.content?.filter($=>$.type==="tool_use").map($=>$.name)??[],tool_call_args:Object.keys(J).length?J:void 0,prompt_hash:st(JSON.stringify(f)),...c.storePrompts?{prompt_text:c.redactForStorage(k),completion_text:c.redactForStorage(X),...I?{system_prompt:c.redactForStorage(I)}:{}}:{},...H.length>0&&G?{decision_rationale:G}:{},...C,span_kind:"llm",tool_definitions:j,conversation_turn:_,message_role:R,metadata:{usage:D.usage??null,guardrails:{pre:w?{matched:w.results.length,modified:!!w.modifiedText}:null,post:y?{matched:y.results.length,modified:!!y.modifiedText}:null},auto_detected:Object.keys(A).length?A:void 0,...h??{}},user_id:l?.userId,session_id:l?.sessionId,tags:l?.tags,environment:c.environment,sdk_version:x}),O&&(O.setAttribute("gen_ai.usage.input_tokens",B),O.setAttribute("gen_ai.usage.output_tokens",K),O.setAttribute("gen_ai.usage.cached_tokens",z),O.setAttribute("gen_ai.response.finish_reason",D.stop_reason??""),O.setAttribute("gen_ai.response.latency",performance.now()-u),O.setStatus({code:pe.SpanStatusCode.OK}),O.end()),D}catch(T){if(T?.name==="TimeoutError"||T?.code==="ABORT_ERR"||P&&P.aborted)throw c.enqueue({event_id:p(),project_id:"",trace_id:g,span_id:i,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:o.model,operation:a,latency_ms:performance.now()-u,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:"timeout",error_message:String(T.message).slice(0,500),...C,span_kind:"llm",conversation_turn:_,message_role:R,metadata:{auto_detected:Object.keys(A).length?A:void 0},user_id:l?.userId,session_id:l?.sessionId,tags:l?.tags,environment:c.environment,sdk_version:x}),O&&(O.setStatus({code:pe.SpanStatusCode.ERROR,message:T.message}),O.recordException(T),O.end()),T;let M=c.configClient?.getFallback(a)??null;if(M&&M.model){let z=String(T.message??"")+String(T.status??"")+String(T.code??"");if(M.conditions.length===0||M.conditions.some(G=>z.toLowerCase().includes(G.toLowerCase()))){let G=m,H={...o,model:M.model};c.enqueue({event_id:p(),project_id:"",trace_id:g,span_id:i,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:M.model,operation:a,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:G,fallback_model:M.model,reason:String(T.message).slice(0,200)},environment:c.environment,sdk_version:x});try{let L=await W({traceId:g,spanId:i,userId:l?.userId,sessionId:l?.sessionId,tags:l?.tags},()=>e(H,d)),J=L.usage?.input_tokens??0,X=L.usage?.output_tokens??0,$=L.usage?.cache_read_input_tokens??0,Y=L.model??M.model;return c.enqueue({event_id:p(),project_id:"",trace_id:g,span_id:i,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:Y,operation:a,latency_ms:performance.now()-u,stream:!1,input_tokens:J,output_tokens:X,cached_tokens:$,status:"success",finish_reason:L.stop_reason??"",prompt_hash:st(JSON.stringify(f)),...C,span_kind:"llm",conversation_turn:_,message_role:R,metadata:{usage:L.usage??null,fallback_used:!0,original_model:G,auto_detected:Object.keys(A).length?A:void 0},user_id:l?.userId,session_id:l?.sessionId,tags:l?.tags,environment:c.environment,sdk_version:x}),O&&(O.setStatus({code:pe.SpanStatusCode.OK}),O.end()),L}catch(L){throw O&&(O.setStatus({code:pe.SpanStatusCode.ERROR,message:L.message}),O.recordException(L),O.end()),L}}}let B=T instanceof V,K=B?"error":T.status===429||T.type==="overloaded_error"?"rate_limited":T.status===408?"timeout":"error";throw c.enqueue({event_id:p(),project_id:"",trace_id:g,span_id:i,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:o.model,operation:a,latency_ms:performance.now()-u,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:K,error_code:B?"guardrail_blocked":String(T.status??T.type??"unknown"),error_message:String(T.message).slice(0,500),...C,span_kind:"llm",conversation_turn:_,message_role:R,metadata:{auto_detected:Object.keys(A).length?A:void 0},user_id:l?.userId,session_id:l?.sessionId,tags:l?.tags,environment:c.environment,sdk_version:x}),O&&(O.setStatus({code:pe.SpanStatusCode.ERROR,message:T.message}),O.recordException(T),O.end()),T}},r}var on=require("crypto"),ee=require("@opentelemetry/api");var De=r=>(0,on.createHash)("sha256").update(r).digest("hex");function ot(r){let t=o=>{if(typeof o=="string")return o;if(Array.isArray(o))return o.map(d=>typeof d=="string"?d:typeof d?.text=="string"?d.text:"").filter(Boolean).join(`
1
+ "use strict";var En=Object.create;var We=Object.defineProperty;var Fn=Object.getOwnPropertyDescriptor;var Gn=Object.getOwnPropertyNames;var qn=Object.getPrototypeOf,Kn=Object.prototype.hasOwnProperty;var Ln=(a,t)=>{for(var n in t)We(a,n,{get:t[n],enumerable:!0})},Et=(a,t,n,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Gn(t))!Kn.call(a,s)&&s!==n&&We(a,s,{get:()=>t[s],enumerable:!(e=Fn(t,s))||e.enumerable});return a};var Je=(a,t,n)=>(n=a!=null?En(qn(a)):{},Et(t||!a||!a.__esModule?We(n,"default",{value:a,enumerable:!0}):n,a)),zn=a=>Et(We({},"__esModule",{value:!0}),a);var Is={};Ln(Is,{AgentContext:()=>ze,BaggageSpanProcessor:()=>lt,CREWAI_OTEL_ENV:()=>Nn,GuardrailBlockedError:()=>V,PromptClient:()=>Ce,SpanKind:()=>te.SpanKind,SpanStatusCode:()=>te.SpanStatusCode,ZespanADKCallbackHandler:()=>Ge,ZespanCallbackHandler:()=>Fe,ZespanClient:()=>Pe,ZespanLlamaIndexHandler:()=>Le,attachTraceToAutoGenMessage:()=>jn,autopatch:()=>je,createSpan:()=>ut,extractAgentContext:()=>$e,extractAutoGenContext:()=>$e,extractTraceFromAutoGenMessage:()=>Pn,getCrewAIInstrumentationGuide:()=>Mn,getPydanticAIConfig:()=>Dn,getTracer:()=>ye,getZespanClient:()=>F,getZespanVercelTelemetry:()=>jt,init:()=>nn,initOTel:()=>Re,initZespan:()=>tt,injectAgentContext:()=>Be,injectAutoGenContext:()=>Be,instrumentADK:()=>Tt,instrumentVercelAI:()=>dt,markFrameworkActive:()=>ue,markFrameworkInactive:()=>re,startSpan:()=>Pt,withAgent:()=>Dt,withSpan:()=>pt,withZespan:()=>Ht,withZespanContext:()=>Qe,withZespanTrace:()=>Xe,wrapADKAgent:()=>qe,wrapADKRunner:()=>it,wrapAnthropic:()=>kt,wrapBedrock:()=>gn,wrapGoogle:()=>St,wrapGoogleGenAI:()=>vt,wrapGroq:()=>yn,wrapLiteLLM:()=>kn,wrapMistral:()=>_n,wrapOpenAI:()=>De,wrapOpenRouter:()=>bt,wrapZespanADKAgent:()=>Ot,zespan:()=>ks});module.exports=zn(Is);var Ft=require("zlib"),Ze=class{constructor(t,n,e){this.c=t;this.cfg=n;this.configClient=e??null,this.maxQueueSize=n.maxQueueSize??1e4,this.timer=setInterval(()=>this.flush(),n.flushInterval),this.timer.unref&&this.timer.unref()}queue=[];queueHead=0;timer=null;flushing=!1;consecutiveFlushFailures=0;configClient;maxQueueSize;push(t){this.queue.length-this.queueHead>=this.maxQueueSize&&(this.queueHead++,this.c.debug&&console.warn("[zespan] queue full, dropping oldest event")),this.queue.push(t),this.c.debug&&console.log(`[zespan] event queued: ${t.operation} span_kind=${t.span_kind??"llm"} trace=${t.trace_id?.slice(0,8)} tokens=${t.input_tokens}in/${t.output_tokens}out status=${t.status}`),this.queue.length-this.queueHead>=this.cfg.maxSize&&this.flush()}async flush(){if(this.queue.length-this.queueHead===0||this.flushing)return;this.flushing=!0;let t=this.queue.slice(this.queueHead),n=(0,Ft.gzipSync)(Buffer.concat(t.map(e=>Buffer.from(JSON.stringify(e)+`
2
+ `))));try{let e=await this._post(n,0);e.ok?(this.queueHead+=t.length,this.queueHead>1e3&&(this.queue=this.queue.slice(this.queueHead),this.queueHead=0),this.c.debug&&console.log(`[zespan] flushed ${t.length} event(s) \u2192 ${this.c.endpoint}`),this.consecutiveFlushFailures>0&&this.c.debug&&console.warn("[zespan] ingest recovered",{recoveredBatchSize:t.length,queuedEvents:this.queue.length-this.queueHead,priorFailures:this.consecutiveFlushFailures}),this.consecutiveFlushFailures=0):(this.consecutiveFlushFailures+=1,(this.c.debug||this.consecutiveFlushFailures===1||this.consecutiveFlushFailures%5===0)&&console.error("[zespan] ingest flush failed; retaining events for retry",{retriable:e.retriable,status:e.status??null,error:e.error??null,queuedEvents:this.queue.length-this.queueHead,failedBatchSize:t.length,consecutiveFailures:this.consecutiveFlushFailures}))}finally{this.flushing=!1}}async _post(t,n){let e=s=>new Promise(r=>setTimeout(r,s));try{let s=await fetch(this.c.endpoint,{method:"POST",body:t,headers:{"x-api-key":this.c.apiKey,"content-type":"application/x-ndjson","content-encoding":"gzip"}});if(s.ok){try{let r=await s.json();typeof r?.cv=="number"&&this.configClient&&this.configClient.checkVersion(r.cv)}catch{}return{ok:!0,retriable:!1}}return s.status===429&&n<3?(await e(Number(s.headers.get("retry-after")??5)*1e3),this._post(t,n+1)):s.status>=500&&n<3?(await e(2**n*1e3),this._post(t,n+1)):s.status===429||s.status>=500?(this.c.debug&&console.error("[zespan] retryable ingest failure",{status:s.status,attempt:n}),{ok:!1,retriable:!0,status:s.status}):(console.error("[zespan] non-retriable ingest failure",{status:s.status}),{ok:!1,retriable:!1,status:s.status})}catch(s){return n<3?(await e(2**n*1e3),this._post(t,n+1)):(this.c.debug&&console.error("[zespan] ingest transport error",s),{ok:!1,retriable:!0,error:s instanceof Error?s.message:String(s)})}}};var te=require("@opentelemetry/api"),qt=require("@opentelemetry/sdk-trace-base"),Kt=require("@opentelemetry/exporter-trace-otlp-http"),Lt=require("@opentelemetry/context-async-hooks"),zt=require("@opentelemetry/core"),Ue=null,Gt=null;function Re(a){let t=a.serviceName??"zespan-sdk",n=new Kt.OTLPTraceExporter({url:a.endpoint??"https://localhost:3001/v1/traces",headers:a.apiKey?{"x-api-key":a.apiKey}:void 0}),e=new qt.BatchSpanProcessor(n,{maxQueueSize:100,maxExportBatchSize:10,exportTimeoutMillis:3e4,scheduledDelayMillis:2e3}),{NodeTracerProvider:s}=require("@opentelemetry/sdk-trace-node"),r=new s({resource:{attributes:{"service.name":t,"service.version":"1.0.0","deployment.environment":a.environment??"production"}}});return r.addSpanProcessor(e),r.register({propagator:new zt.W3CTraceContextPropagator}),Ue=te.trace.getTracer(t,"1.0.0"),Gt=new Lt.AsyncHooksContextManager,te.context.setGlobalContextManager(Gt.enable()),{tracer:Ue,provider:r}}function ye(){if(!Ue)throw new Error("OTel not initialized. Call initOTel() first.");return Ue}function ut(a){return ye().startSpan(a.name,{kind:a.kind??te.SpanKind.INTERNAL,attributes:a.attributes??{}})}async function pt(a,t,n){let s=ye().startSpan(a,{kind:n?.kind??te.SpanKind.INTERNAL,attributes:n?.attributes??{}});try{let r=await t(s);return s.setStatus({code:te.SpanStatusCode.OK}),s.end(),r}catch(r){throw s.setStatus({code:te.SpanStatusCode.ERROR,message:r.message}),s.recordException(r),s.end(),r}}var $t=require("crypto"),Bt=new Map;function Bn(a){let t=Bt.get(a);return t||(t=new RegExp(`\\{\\{${a}\\}\\}`,"g"),Bt.set(a,t)),t}var Ce=class{constructor(t){this.client=t}cache=new Map;cacheIndex=new Map;cacheTTL=300*1e3;async get(t,n={}){let{version:e,label:s,cache:r=!0}=n;if(r){let l=this.getCacheKey(t,e,s),_=this.cache.get(l);if(_&&Date.now()-_.timestamp<this.cacheTTL)return _.prompt}let o=new URLSearchParams;e!==void 0&&o.set("version",e.toString()),s&&o.set("label",s);let d=`${this.client.baseURL}/v1/prompts/${encodeURIComponent(t)}?${o}`,c=await fetch(d,{headers:{"x-api-key":this.client.apiKey}});if(!c.ok)throw new Error(`Failed to fetch prompt: ${c.statusText}`);let p=await c.json(),m=(0,$t.createHash)("sha256").update(JSON.stringify(p.prompt)).digest("hex"),i={...p,promptHash:m};if(r){let l=this.getCacheKey(t,e,s);this.cache.set(l,{prompt:i,timestamp:Date.now()});let _=this.cacheIndex.get(t)??new Set;_.add(l),this.cacheIndex.set(t,_)}return i}async list(t){let n=new URLSearchParams;t&&n.set("name",t);let e=`${this.client.baseURL}/v1/prompts?${n}`,s=await fetch(e,{headers:{"x-api-key":this.client.apiKey}});if(!s.ok)throw new Error(`Failed to list prompts: ${s.statusText}`);return(await s.json()).prompts||[]}async create(t){let n=`${this.client.baseURL}/v1/prompts`,e=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":this.client.apiKey},body:JSON.stringify(t)});if(!e.ok)throw new Error(`Failed to create prompt: ${e.statusText}`);let s=await e.json();return this.invalidateCache(t.name),s}async updateLabels(t,n,e){let s=`${this.client.baseURL}/v1/prompts/${encodeURIComponent(t)}/versions/${n}/labels`,r=await fetch(s,{method:"PATCH",headers:{"Content-Type":"application/json","x-api-key":this.client.apiKey},body:JSON.stringify({labels:e})});if(!r.ok)throw new Error(`Failed to update labels: ${r.statusText}`);let o=await r.json();return this.invalidateCache(t),o}compile(t,n){if(t.type==="text"){let e=typeof t.prompt=="string"?t.prompt:t.prompt.content;return Object.entries(n).forEach(([s,r])=>{e=e.replace(Bn(s),r)}),e}return JSON.stringify(t.prompt)}clearCache(t){t?this.invalidateCache(t):(this.cache.clear(),this.cacheIndex.clear())}getCacheKey(t,n,e){return n!==void 0?`${t}:v${n}`:e?`${t}:label:${e}`:`${t}:latest`}invalidateCache(t){let n=this.cacheIndex.get(t);if(n){for(let e of n)this.cache.delete(e);this.cacheIndex.delete(t)}}};var $n="[REDACTED]";var Wt=a=>a.toLowerCase().replace(/[^a-z0-9]/g,""),Wn=a=>{let t=new Set;for(let n of a){let e=Wt(String(n));e&&t.add(e)}return t},Ve=(a,t,n=0,e=new WeakSet)=>{if(n>20)return"[REDACTED_DEPTH_LIMIT]";if(Array.isArray(a))return e.has(a)?"[Circular]":(e.add(a),a.map(o=>Ve(o,t,n+1,e)));if(!a||typeof a!="object")return a;if(e.has(a))return"[Circular]";e.add(a);let s=a,r={};for(let[o,d]of Object.entries(s)){if(t.has(Wt(o))){r[o]=$n;continue}r[o]=Ve(d,t,n+1,e)}return r},Jt=(a,t)=>{if(a==null)return"";let n=Wn(t),e=new WeakSet;if(typeof a=="string")try{let s=JSON.parse(a);return s&&typeof s=="object"?JSON.stringify(Ve(s,n,0,e)):a}catch{return a}return JSON.stringify(Ve(a,n,0,e))};function Zt(){return{modelOverrides:new Map,cacheConfig:new Map,rateLimits:new Map,guardrailOverrides:new Map,samplingRate:1,promptVersions:new Map,fallbacks:new Map,retryPolicies:new Map,timeouts:new Map,concurrencyLimits:new Map,abTests:new Map}}function Jn(a,t){let n=Object.keys(a),e=Object.keys(t);if(n.length!==e.length)return!1;for(let s of n){let r=a[s],o=t[s];if(Array.isArray(r)&&Array.isArray(o)){if(r.length!==o.length)return!1;for(let d=0;d<r.length;d++)if(r[d]!==o[d])return!1;continue}if(r!==o)return!1}return!0}function Ae(a,t){if(a.size!==t.size)return!1;for(let[n,e]of a){let s=t.get(n);if(s===void 0&&!t.has(n))return!1;if(typeof e=="object"&&e!==null&&typeof s=="object"&&s!==null){if(!Jn(e,s))return!1}else if(s!==e)return!1}return!0}var He=class{localVersion=0;config=Zt();listeners=new Map;fetching=!1;baseUrl;apiKey;projectId;constructor(t){this.baseUrl=t.baseUrl.replace(/\/+$/,""),this.apiKey=t.apiKey,this.projectId=t.projectId}checkVersion(t){t>this.localVersion&&!this.fetching&&(this.fetching=!0,this.fetchConfig().then(n=>{n&&(this.localVersion=t,this.applyFullConfig(n))}).catch(()=>{}).finally(()=>{this.fetching=!1}))}getModel(t,n){return this.config.modelOverrides.get(t)??n}getCacheConfig(t){return this.config.cacheConfig.get(t)??null}getSamplingRate(){return this.config.samplingRate}getRuntimeConfig(){return this.config}getLocalVersion(){return this.localVersion}getFallback(t){return this.config.fallbacks.get(t)??null}getRetryPolicy(t){return this.config.retryPolicies.get(t)??null}getTimeout(t){return this.config.timeouts.get(t)??null}getConcurrencyLimit(t){return this.config.concurrencyLimits.get(t)??null}getAbTest(t){return this.config.abTests.get(t)??null}on(t,n){let e=this.listeners.get(t)??[];e.push(n),this.listeners.set(t,e)}emit(t,n){let e=this.listeners.get(t);if(e)for(let s of e)try{s(n)}catch{}}async fetchConfig(){try{let t=`${this.baseUrl}/v1/sdk/config?projectId=${encodeURIComponent(this.projectId)}`,n=await fetch(t,{headers:{"x-api-key":this.apiKey}});return n.ok?(await n.json()).config??null:null}catch{return null}}applyFullConfig(t){let n=this.config,e=this.parseSnapshot(t);this.config=e,Ae(n.modelOverrides,e.modelOverrides)||this.emit("model_override",Object.fromEntries(e.modelOverrides)),n.samplingRate!==e.samplingRate&&this.emit("sampling_config",{samplingRate:e.samplingRate}),Ae(n.cacheConfig,e.cacheConfig)||this.emit("cache_config",Object.fromEntries(e.cacheConfig)),Ae(n.fallbacks,e.fallbacks)||this.emit("fallback_config",Object.fromEntries(e.fallbacks)),Ae(n.retryPolicies,e.retryPolicies)||this.emit("retry_config",Object.fromEntries(e.retryPolicies)),Ae(n.timeouts,e.timeouts)||this.emit("timeout_config",Object.fromEntries(e.timeouts)),Ae(n.abTests,e.abTests)||this.emit("ab_test_config",Object.fromEntries(e.abTests))}parseSnapshot(t){let n=Zt();for(let[e,s]of Object.entries(t))try{let r=typeof s=="string"?JSON.parse(s):s;if(e.startsWith("model_override.")){let o=e.slice(15),d=typeof r=="string"?r:r?.model??r?.value;typeof d=="string"&&n.modelOverrides.set(o,d)}else if(e.startsWith("cache.")){let o=e.slice(6);n.cacheConfig.set(o,{enabled:r?.enabled??!0,ttlSeconds:typeof r?.ttlSeconds=="number"?r.ttlSeconds:300,similarityThreshold:typeof r?.similarityThreshold=="number"?r.similarityThreshold:.85})}else if(e.startsWith("ratelimit.")){let o=e.slice(10);n.rateLimits.set(o,{maxRequests:typeof r?.maxRequests=="number"?r.maxRequests:100,windowSeconds:typeof r?.windowSeconds=="number"?r.windowSeconds:60})}else if(e.startsWith("guardrail.")&&!e.startsWith("guardrail_mode.")){let o=e.slice(10);n.guardrailOverrides.set(o,!!(r?.enabled??r))}else if(e.startsWith("sampling.")){let o=typeof r=="number"?r:r?.rate??r?.sampleRate;typeof o=="number"&&o>=0&&o<=1&&(n.samplingRate=o)}else if(e.startsWith("prompt_version.")){let o=e.slice(15),d=typeof r=="number"?r:r?.version;typeof d=="number"&&n.promptVersions.set(o,d)}else if(e.startsWith("fallback.")){let o=e.slice(9),d=typeof r?.model=="string"?r.model:null,c=Array.isArray(r?.conditions)?r.conditions.filter(p=>typeof p=="string"):[];d&&n.fallbacks.set(o,{model:d,conditions:c})}else if(e.startsWith("retry.")){let o=e.slice(6),d=typeof r?.enabled=="boolean"?r.enabled:!1,c=typeof r?.maxRetries=="number"?r.maxRetries:3,p=typeof r?.backoffMultiplier=="number"?r.backoffMultiplier:2,m=Array.isArray(r?.retryOnStatusCodes)?r.retryOnStatusCodes.filter(i=>typeof i=="number"):[];n.retryPolicies.set(o,{enabled:d,maxRetries:c,backoffMultiplier:p,retryOnStatusCodes:m})}else if(e.startsWith("timeout.")){let o=e.slice(8),d=typeof r?.timeoutMs=="number"?r.timeoutMs:typeof r=="number"?r:null;typeof d=="number"&&d>0&&n.timeouts.set(o,{timeoutMs:d})}else if(e.startsWith("concurrency.")){let o=e.slice(12),d=typeof r=="number"?r:typeof r?.limit=="number"?r.limit:null;typeof d=="number"&&d>0&&n.concurrencyLimits.set(o,d)}else if(e.startsWith("ab_test.")){let o=e.slice(8),d=typeof r?.candidateModel=="string"?r.candidateModel:null,c=typeof r?.splitPercentage=="number"?r.splitPercentage:null;d&&c!==null&&c>=0&&c<=100&&n.abTests.set(o,{candidateModel:d,splitPercentage:c})}}catch{}return n}};var Ut=require("async_hooks"),Vt=require("crypto"),mt=new Ut.AsyncLocalStorage,u=()=>(0,Vt.randomUUID)(),G=()=>mt.getStore();function W(a,t){return mt.run(a,t)}function Qe(a,t){let n=G(),e={traceId:a.traceId??n?.traceId??u(),spanId:u(),userId:a.userId??n?.userId,sessionId:a.sessionId??n?.sessionId,tags:{...n?.tags,...a.tags},agentId:a.agentId??n?.agentId,agentName:a.agentName??n?.agentName,agentRole:a.agentRole??n?.agentRole,agentFramework:a.agentFramework??n?.agentFramework,parentAgentId:a.agentId?n?.agentId:n?.parentAgentId,conversationTurn:n?.conversationTurn,availableTools:n?.availableTools};return mt.run(e,t)}function Xe(a,t){return Qe(t??{},a)}var Ht=Xe;var b="1.1.0";function xe(){try{return F()}catch{return null}}var ft=new Set;function ue(a){ft.add(a)}function re(a){ft.delete(a)}function Te(){return ft.size>0}var Ye=!1,et=!1,Qt=!1,Xt=!1,Ne=null,Me=null,gt=null,_t=null,js=(async()=>{try{Ne=await import("openai/resources/chat/completions")}catch{}try{Me=await import("@anthropic-ai/sdk/resources/messages")}catch{}try{gt=await import("@google/generative-ai")}catch{}try{_t=await import("@google/genai")}catch{}tn()})();function Yt(a){async function t(n,e){let s=xe();if(!s||Te())return a.call(this,n,e);let r=performance.now(),o=G(),d=u(),c=o?.traceId??u(),p=n?.model??"unknown",m=n?.stream===!0;try{let i=await a.call(this,n,e);if(m){let l=i[Symbol.asyncIterator]?.bind(i);return l&&(i[Symbol.asyncIterator]=function(){let _=l(),g=0,w=0,S="",y;return{async next(){let{value:h,done:k}=await _.next();return k?(s.enqueue({event_id:u(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openai",model:p,operation:"chat",latency_ms:performance.now()-r,ttft_ms:y,stream:!0,input_tokens:g,output_tokens:w,finish_reason:S,status:"success",span_kind:"llm",agent_id:o?.agentId,agent_name:o?.agentName,agent_role:o?.agentRole,environment:s.environment,sdk_version:b}),{value:h,done:!0}):(y||(y=performance.now()-r),h?.usage&&(g=h.usage.prompt_tokens??g,w=h.usage.completion_tokens??w),h?.choices?.[0]?.finish_reason&&(S=h.choices[0].finish_reason),{value:h,done:!1})},[Symbol.asyncIterator](){return this}}}),i}return s.enqueue({event_id:u(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openai",model:i.model??p,operation:"chat",latency_ms:performance.now()-r,stream:!1,input_tokens:i.usage?.prompt_tokens??0,output_tokens:i.usage?.completion_tokens??0,cached_tokens:i.usage?.prompt_tokens_details?.cached_tokens??0,finish_reason:i.choices?.[0]?.finish_reason??"",status:"success",span_kind:"llm",agent_id:o?.agentId,agent_name:o?.agentName,agent_role:o?.agentRole,...s.storePrompts?{prompt_text:s.redactForStorage(n.messages),completion_text:s.redactForStorage(i.choices?.[0]?.message?.content??"")}:{},environment:s.environment,sdk_version:b}),i}catch(i){throw s.enqueue({event_id:u(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openai",model:p,operation:"chat",latency_ms:performance.now()-r,stream:m,input_tokens:0,output_tokens:0,status:"error",error_code:String(i.status??"unknown"),error_message:String(i.message).slice(0,500),span_kind:"llm",environment:s.environment,sdk_version:b}),i}}return t.__zespanAutoPatched=!0,t}function Zn(){if(!Ye&&Ne)try{let a=Ne.Completions;if(!a?.prototype)return;let t=a.prototype.create;if(typeof t=="function"&&!t.__zespanAutoPatched){a.prototype.create=Yt(t),Ye=!0;return}if(typeof t!="function"){if(a.__zespanAutoPatched){Ye=!0;return}let n=a;class e extends n{constructor(...o){if(super(...o),Object.prototype.hasOwnProperty.call(this,"create")&&!this.create?.__zespanAutoPatched){let d=this.create;this.create=Yt(d)}}}e.__zespanAutoPatched=!0;let s=Object.getOwnPropertyDescriptor(Ne,"Completions");if(s&&(s.writable!==!1||s.configurable))try{Object.defineProperty(Ne,"Completions",{value:e,writable:!0,enumerable:!0,configurable:!0}),Ye=!0}catch{}}}catch{}}function en(a){async function t(n,e){let s=xe();if(!s||Te())return a.call(this,n,e);let r=performance.now(),o=G(),d=u(),c=o?.traceId??u(),p=n?.model??"unknown",m=n?.stream===!0;try{let i=await a.call(this,n,e);if(m){let l=i[Symbol.asyncIterator]?.bind(i);return l&&(i[Symbol.asyncIterator]=function(){let _=l(),g=0,w=0,S="",y;return{async next(){let{value:h,done:k}=await _.next();return k?(s.enqueue({event_id:u(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:p,operation:"messages",latency_ms:performance.now()-r,ttft_ms:y,stream:!0,input_tokens:g,output_tokens:w,finish_reason:S,status:"success",span_kind:"llm",agent_id:o?.agentId,agent_name:o?.agentName,agent_role:o?.agentRole,environment:s.environment,sdk_version:b}),{value:h,done:!0}):(y||(y=performance.now()-r),h?.type==="message_delta"&&h?.usage&&(w=h.usage.output_tokens??w),h?.type==="message_start"&&h?.message?.usage&&(g=h.message.usage.input_tokens??g),h?.type==="message_delta"&&h?.delta?.stop_reason&&(S=h.delta.stop_reason),{value:h,done:!1})},[Symbol.asyncIterator](){return this}}}),i}return s.enqueue({event_id:u(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:i.model??p,operation:"messages",latency_ms:performance.now()-r,stream:!1,input_tokens:i.usage?.input_tokens??0,output_tokens:i.usage?.output_tokens??0,finish_reason:i.stop_reason??"",status:"success",span_kind:"llm",agent_id:o?.agentId,agent_name:o?.agentName,agent_role:o?.agentRole,...s.storePrompts?{prompt_text:s.redactForStorage(n.messages),completion_text:s.redactForStorage(i.content?.filter(l=>l.type==="text").map(l=>l.text).join("")??"")}:{},environment:s.environment,sdk_version:b}),i}catch(i){throw s.enqueue({event_id:u(),project_id:"",trace_id:c,span_id:d,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:p,operation:"messages",latency_ms:performance.now()-r,stream:m,input_tokens:0,output_tokens:0,status:"error",error_code:String(i.status??"unknown"),error_message:String(i.message).slice(0,500),span_kind:"llm",environment:s.environment,sdk_version:b}),i}}return t.__zespanAutoPatched=!0,t}function Un(){if(!et&&Me)try{let a=Me.Messages;if(!a?.prototype)return;let t=a.prototype.create;if(typeof t=="function"&&!t.__zespanAutoPatched){a.prototype.create=en(t),et=!0;return}if(typeof t!="function"){if(a.__zespanAutoPatched){et=!0;return}let n=a;class e extends n{constructor(...o){if(super(...o),Object.prototype.hasOwnProperty.call(this,"create")&&!this.create?.__zespanAutoPatched){let d=this.create;this.create=en(d)}}}e.__zespanAutoPatched=!0;let s=Object.getOwnPropertyDescriptor(Me,"Messages");if(s&&(s.writable!==!1||s.configurable))try{Object.defineProperty(Me,"Messages",{value:e,writable:!0,enumerable:!0,configurable:!0}),et=!0}catch{}}}catch{}}function Vn(){if(!Qt&&gt)try{let e=function(s,r){let o=n.call(this,s,r),d=o.generateContent?.bind(o),c=o.generateContentStream?.bind(o);return!d||d.__zespanAutoPatched||(o.generateContent=async p=>{let m=xe();if(!m||Te())return d(p);let i=performance.now(),l=G(),_=u(),g=l?.traceId??u(),w=s.model??"gemini-1.5-flash";try{let S=await d(p),y=S.response?.usageMetadata;return m.enqueue({event_id:u(),project_id:"",trace_id:g,span_id:_,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"google",model:w,operation:"generateContent",latency_ms:performance.now()-i,stream:!1,input_tokens:y?.promptTokenCount??0,output_tokens:y?.candidatesTokenCount??0,finish_reason:S.response?.candidates?.[0]?.finishReason??"",status:"success",span_kind:"llm",environment:m.environment,sdk_version:b}),S}catch(S){throw m.enqueue({event_id:u(),project_id:"",trace_id:g,span_id:_,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"google",model:w,operation:"generateContent",latency_ms:performance.now()-i,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_message:String(S.message).slice(0,500),span_kind:"llm",environment:m.environment,sdk_version:b}),S}},o.generateContent.__zespanAutoPatched=!0,c&&(o.generateContentStream=async p=>{let m=xe();if(!m||Te())return c(p);let i=performance.now(),l=G(),_=u(),g=l?.traceId??u(),w=s.model??"gemini-1.5-flash",S=await c(p),y=S.stream,h=0,k=0,A;return S.stream=(async function*(){try{for await(let f of y){A||(A=performance.now()-i);let N=f.usageMetadata;N&&(h=N.promptTokenCount??h,k=N.candidatesTokenCount??k),yield f}m.enqueue({event_id:u(),project_id:"",trace_id:g,span_id:_,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"google",model:w,operation:"generateContent",latency_ms:performance.now()-i,ttft_ms:A,stream:!0,input_tokens:h,output_tokens:k,status:"success",span_kind:"llm",environment:m.environment,sdk_version:b})}catch(f){throw m.enqueue({event_id:u(),project_id:"",trace_id:g,span_id:_,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"google",model:w,operation:"generateContent",latency_ms:performance.now()-i,ttft_ms:A,stream:!0,input_tokens:h,output_tokens:k,status:"error",error_message:String(f.message).slice(0,500),span_kind:"llm",environment:m.environment,sdk_version:b}),f}})(),S})),o};var a=e;let t=gt?.GoogleGenerativeAI;if(!t?.prototype?.getGenerativeModel||t.prototype.getGenerativeModel.__zespanAutoPatched)return;let n=t.prototype.getGenerativeModel;e.__zespanAutoPatched=!0,t.prototype.getGenerativeModel=e,Qt=!0}catch{}}function Hn(){if(!Xt&&_t)try{let a=_t?.Models;if(!a?.prototype||a.prototype.generateContent?.__zespanAutoPatched)return;let t=a.prototype.generateContent,n=a.prototype.generateContentStream,e=a.prototype.embedContent;a.prototype.generateContent=async function(s){let r=xe();if(!r||Te())return t.call(this,s);let o=performance.now(),d=G(),c=u(),p=d?.traceId??u(),m=s?.model??"gemini";try{let i=await t.call(this,s),l=i?.usageMetadata,_=(i?.candidates?.[0]?.content?.parts??[]).filter(g=>g?.inlineData);return r.enqueue({event_id:u(),project_id:"",trace_id:p,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:m,operation:"generateContent",latency_ms:performance.now()-o,stream:!1,input_tokens:Number(l?.promptTokenCount||0),output_tokens:Number(l?.candidatesTokenCount||0),cached_tokens:Number(l?.cachedContentTokenCount||0),reasoning_tokens:Number(l?.thoughtsTokenCount||0),finish_reason:i?.candidates?.[0]?.finishReason??"",status:"success",span_kind:_.length>0?"image_gen":"llm",..._.length>0?{metadata:{num_images:_.length}}:{},agent_id:d?.agentId,agent_name:d?.agentName,agent_role:d?.agentRole,environment:r.environment,sdk_version:b}),i}catch(i){throw r.enqueue({event_id:u(),project_id:"",trace_id:p,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:m,operation:"generateContent",latency_ms:performance.now()-o,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(i.status??i.code??"unknown"),error_message:String(i.message).slice(0,500),span_kind:"llm",environment:r.environment,sdk_version:b}),i}},a.prototype.generateContent.__zespanAutoPatched=!0,n&&(a.prototype.generateContentStream=async function(s){let r=xe();if(!r||Te())return n.call(this,s);let o=performance.now(),d=G(),c=u(),p=d?.traceId??u(),m=s?.model??"gemini",i=await n.call(this,s);return(async function*(){let l=0,_=0,g=0,w=0,S,y="";try{for await(let h of i){S||(S=performance.now()-o);let k=h?.usageMetadata;k&&(l=Number(k.promptTokenCount||l),_=Number(k.candidatesTokenCount||_),g=Number(k.cachedContentTokenCount||g),w=Number(k.thoughtsTokenCount||w)),h?.candidates?.[0]?.finishReason&&(y=h.candidates[0].finishReason),yield h}r.enqueue({event_id:u(),project_id:"",trace_id:p,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:m,operation:"generateContent",latency_ms:performance.now()-o,ttft_ms:S,stream:!0,input_tokens:l,output_tokens:_,cached_tokens:g,reasoning_tokens:w,finish_reason:y||"stream_end",status:"success",span_kind:"llm",agent_id:d?.agentId,agent_name:d?.agentName,agent_role:d?.agentRole,environment:r.environment,sdk_version:b})}catch(h){throw r.enqueue({event_id:u(),project_id:"",trace_id:p,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:m,operation:"generateContent",latency_ms:performance.now()-o,ttft_ms:S,stream:!0,input_tokens:l,output_tokens:_,status:"error",error_code:String(h.status??h.code??"unknown"),error_message:String(h.message).slice(0,500),span_kind:"llm",environment:r.environment,sdk_version:b}),h}})()},a.prototype.generateContentStream.__zespanAutoPatched=!0),e&&(a.prototype.embedContent=async function(s){let r=xe();if(!r||Te())return e.call(this,s);let o=performance.now(),d=G(),c=u(),p=d?.traceId??u(),m=s?.model??"gemini-embedding";try{let i=await e.call(this,s),l=i?.usageMetadata;return r.enqueue({event_id:u(),project_id:"",trace_id:p,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:m,operation:"embedding",latency_ms:performance.now()-o,stream:!1,input_tokens:Number(l?.promptTokenCount||0),output_tokens:0,status:"success",span_kind:"embedding",agent_id:d?.agentId,agent_name:d?.agentName,agent_role:d?.agentRole,environment:r.environment,sdk_version:b}),i}catch(i){throw r.enqueue({event_id:u(),project_id:"",trace_id:p,span_id:c,parent_span_id:d?.spanId,timestamp:new Date().toISOString(),provider:"google",model:m,operation:"embedding",latency_ms:performance.now()-o,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(i.status??i.code??"unknown"),error_message:String(i.message).slice(0,500),span_kind:"embedding",environment:r.environment,sdk_version:b}),i}},a.prototype.embedContent.__zespanAutoPatched=!0),Xt=!0}catch{}}function tn(){Zn(),Un(),Vn(),Hn()}function je(){tn()}var Pe=class{apiKey;endpoint;baseURL;environment;storePrompts;redactKeys;sampleRate;debug;enableOTel;prompts;configClient;projectId;batch;_storePromptsDefault;_promptWarningShown=!1;constructor(t){if(!t.apiKey)throw new Error("Zespan: apiKey is required");t.apiKey.startsWith("zsp_")||console.warn("[zespan] API key should start with zsp_ \u2014 check your key"),this.apiKey=t.apiKey,this.baseURL=t.baseURL??"https://api.zespan.com",this.endpoint=t.endpoint??`${this.baseURL.replace(/\/+$/,"")}/v1/ingest`,this.environment=t.environment??"production",this._storePromptsDefault=t.storePrompts===void 0,this.storePrompts=t.storePrompts??!0,this.redactKeys=t.redactKeys??["password","secret","token","api_key"],this.sampleRate=t.sampleRate??1,this.debug=t.debug??!1,this.enableOTel=t.enableOTel??!1,this.projectId=t.projectId,this.prompts=new Ce(this),t.enableZespanPilot!==!1&&t.projectId?this.configClient=new He({baseUrl:this.baseURL,apiKey:this.apiKey,projectId:t.projectId}):this.configClient=null,this.batch=new Ze(this,{maxSize:t.batchSize??50,flushInterval:t.flushInterval??2e3},this.configClient??void 0),process.once("beforeExit",()=>this.batch.flush()),this.enableOTel&&Re({endpoint:t.otelEndpoint,serviceName:t.otelServiceName,sampleRate:t.sampleRate,apiKey:this.apiKey,environment:this.environment}),t.autopatch!==!1&&je()}enqueue(t){Math.random()>this.sampleRate||(this.storePrompts&&this._storePromptsDefault&&!this._promptWarningShown&&(this._promptWarningShown=!0,console.warn("[zespan] Prompt and completion text is being captured by default. PII (emails, phone numbers, SSNs, credit cards) is automatically redacted server-side. To opt out: { storePrompts: false }")),this.batch.push(t))}redactForStorage(t){return Jt(t,this.redactKeys)}resolveGuardrailsUrl(){let t=this.baseURL.replace(/\/+$/,"");return t.endsWith("/v1")?`${t}/guardrails/check`:`${t}/v1/guardrails/check`}async checkGuardrails(t){let n=await fetch(this.resolveGuardrailsUrl(),{method:"POST",headers:{"content-type":"application/json","x-api-key":this.apiKey},body:JSON.stringify(t)});if(!n.ok){let s="";try{s=await n.text()}catch{s=""}throw new Error(`Guardrails check failed (${n.status})${s?`: ${s.slice(0,400)}`:""}`)}let e=await n.json();return{allowed:!!e.allowed,results:Array.isArray(e.results)?e.results:[],modifiedText:typeof e.modifiedText=="string"?e.modifiedText:null}}flush(){return this.batch.flush()}createSpan(t){return ye().startSpan(t.name,{kind:t.kind??te.SpanKind.INTERNAL,attributes:t.attributes??{}})}async withSpan(t,n,e){let r=ye().startSpan(t,{kind:e?.kind??te.SpanKind.INTERNAL,attributes:e?.attributes??{}});try{let o=await n(r);return r.setStatus({code:te.SpanStatusCode.OK}),o}catch(o){throw r.setStatus({code:te.SpanStatusCode.ERROR,message:o.message}),r.recordException(o),o}finally{r.end()}}},ht=null,tt=a=>{ht=new Pe(a)},F=()=>{if(!ht)throw new Error("Call zespan.init() first");return ht},nn=tt;var V=class extends Error{phase;results;constructor(t,n){super(`Guardrail blocked ${t} content`),this.name="GuardrailBlockedError",this.phase=t,this.results=n}};function ee(a,t){if(!a)return null;if(a===!0)return{pre:!0,post:!0,failClosed:!1,operation:t};let n=typeof a.pre=="boolean"||typeof a.post=="boolean";return{pre:n?!!a.pre:!0,post:n?!!a.post:!0,failClosed:!!a.failClosed,operation:a.operation??t}}function oe(a,t){return t?.modifiedText?t.modifiedText:a}async function Z(a,t,n){if(!t||n.phase==="pre"&&!t.pre||n.phase==="post"&&!t.post)return null;let e=n.text?.trim();if(!e)return null;try{let s=await a.checkGuardrails({...n,text:e.slice(0,5e4),operation:n.operation??t.operation});if(!s.allowed)throw new V(n.phase,s.results);return s}catch(s){if(s instanceof V||t.failClosed)throw s;return null}}function se(a){if(!Array.isArray(a))return{systemPrompt:void 0,conversationMessages:[]};let t=[],n=[];for(let e of a)if((typeof e?.role=="string"?e.role:e?._getType?.()??"")==="system"){let r=typeof e.content=="string"?e.content:Array.isArray(e.content)?e.content.map(o=>typeof o=="string"?o:o?.text??"").filter(Boolean).join(""):JSON.stringify(e.content??"");r&&t.push(r)}else n.push(e);return{systemPrompt:t.length?t.join(`
3
+ `):void 0,conversationMessages:n}}function Qn(a){let t={};try{let n=[],e=[];for(let s of a){let r=typeof s?.content=="string"?s.content:Array.isArray(s?.content)?s.content.map(o=>typeof o=="string"?o:o?.text??"").join(" "):"";s?.role==="system"&&n.push(r),e.push(r)}for(let s of n){try{let r=s.match(/You are the (\w+)Agent/i);if(r){t.agent_name=r[1];break}}catch{}try{let r=s.match(/Agent Name:\s*(\w+)/i);if(r){t.agent_name=r[1];break}}catch{}}for(let s of n)try{let r=s.match(/Role:\s*(orchestrator|specialist|planner|executor|critic)/i);if(r?.[1]){t.agent_role=r[1].toLowerCase();break}}catch{}try{a.length>10&&(t.has_memory=!0)}catch{}try{let s=e.join(" ").toLowerCase();(s.includes("think step by step")||s.includes("let's reason")||s.includes("step 1"))&&(t.has_planning=!0)}catch{}}catch{}return t}function ie(a,t){let n=Qn(a);try{!n.has_planning&&t&&/^o[13]/.test(t)&&(n.has_planning=!0)}catch{}return n}function ce(a){try{let t=a.filter(s=>s?.role==="user").length,n=a[a.length-1],e=typeof n?.role=="string"?n.role:"user";return{conversation_turn:t,message_role:e}}catch{return{conversation_turn:0,message_role:"user"}}}function de(a){try{return a.map(t=>{try{return t?.type==="function"&&t?.function?{name:String(t.function.name??""),description:t.function.description?String(t.function.description):void 0,parameters_schema:t.function.parameters??void 0,source:"function"}:t?.name?{name:String(t.name),description:t.description?String(t.description):void 0,parameters_schema:t.input_schema??t.parameters??void 0,source:"function"}:null}catch{return null}}).filter(t=>t!==null)}catch{return[]}}function nt(a){try{let t=a?.[0]?.message?.tool_calls??[],n=new Set,e={};for(let s of t)try{let r=s?.function?.name;if(typeof r=="string"&&r){n.add(r);try{e[r]=typeof s.function.arguments=="string"?JSON.parse(s.function.arguments):s.function.arguments??{}}catch{e[r]=s.function?.arguments??{}}}}catch{}return{tools_used:Array.from(n),tool_call_args:e}}catch{return{tools_used:[],tool_call_args:{}}}}function ke(a){try{let t={};for(let s of a)try{let r=typeof s?.index=="number"?s.index:0;t[r]||(t[r]={name:"",argumentsStr:""}),s?.function?.name&&(t[r].name+=s.function.name),s?.function?.arguments&&(t[r].argumentsStr+=s.function.arguments)}catch{}let n=new Set,e={};for(let s of Object.values(t))try{let r=s.name;if(r){n.add(r);try{e[r]=s.argumentsStr?JSON.parse(s.argumentsStr):{}}catch{e[r]=s.argumentsStr}}}catch{}return{tools_used:Array.from(n),tool_call_args:e}}catch{return{tools_used:[],tool_call_args:{}}}}var sn=require("crypto"),pe=require("@opentelemetry/api");async function Ie(a,t){if(!t||!t.enabled)return a();let n;for(let e=0;e<=t.maxRetries;e++)try{return await a()}catch(s){if(n=s,t.retryOnStatusCodes.length>0&&!t.retryOnStatusCodes.includes(s?.status))throw s;if(e>=t.maxRetries)break;let r=Math.min(1e3*Math.pow(t.backoffMultiplier,e),3e4);await Xn(r)}throw n}function Xn(a){return new Promise(t=>setTimeout(t,a))}var yt=class{constructor(t,n=1/0){this.max=t;this.maxQueue=n;this.counter=t}counter;queue=[];acquire(){return this.counter>0?(this.counter--,Promise.resolve()):this.queue.length>=this.maxQueue?Promise.reject(new Error(`Semaphore queue full (max ${this.maxQueue})`)):new Promise(t=>{this.queue.push(t)})}release(){this.queue.length>0?this.queue.shift()():this.counter++}async run(t){await this.acquire();try{return await t()}finally{this.release()}}},Oe=new Map,Yn=256;function es(){let a=Oe.keys().next().value;a!==void 0&&Oe.delete(a)}function Se(a,t){let n=Oe.get(a);return n?(Oe.delete(a),Oe.set(a,n),n):(Oe.size>=Yn&&es(),n=new yt(t),Oe.set(a,n),n)}var st=a=>(0,sn.createHash)("sha256").update(a).digest("hex");function ts(a,t,n="openai"){return{"gen_ai.system":n,"gen_ai.model":t,"gen_ai.operation.name":"chat","gen_ai.prompt":JSON.stringify(a.messages),"gen_ai.request.max_tokens":a.max_tokens,"gen_ai.request.temperature":a.temperature,"gen_ai.request.top_p":a.top_p}}async function*ns(a,t){let{client:n,t0:e,traceId:s,spanId:r,parent:o,params:d,otelSpan:c,model:p,agentCtx:m,autoDetected:i,conversation_turn:l,message_role:_,tool_definitions:g,provider:w,operation:S}=t,y=w??"openai",h,k=0,A=0,f=0,N="",v=p,C=[],I="",P=[],{systemPrompt:O,conversationMessages:x}=se(d.messages??[]);try{for await(let D of a){h||(h=performance.now()-e,n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:y,model:v,operation:S,latency_ms:h,ttft_ms:h,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:st(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(x),...O?{system_prompt:n.redactForStorage(O)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b,finish_reason:"stream_start",...m,span_kind:"llm",tool_definitions:g,conversation_turn:l,message_role:_,metadata:{auto_detected:Object.keys(i).length?i:void 0}}),c&&c.setAttribute("gen_ai.response.time_to_first_token",h));let j=D.choices?.[0]?.delta?.content;if(j&&(A++,I+=j),D.choices?.[0]?.finish_reason&&(N=D.choices[0].finish_reason),D.model&&(v=D.model),D.usage&&(k=Number(D.usage.prompt_tokens||k||0),A=Number(D.usage.completion_tokens||A||0),f=Number(D.usage.prompt_tokens_details?.cached_tokens||f||0)),D.choices?.[0]?.delta?.tool_calls)for(let L of D.choices[0].delta.tool_calls)P.push(L),L.function?.name&&!C.includes(L.function.name)&&C.push(L.function.name);yield D}let{tools_used:M,tool_call_args:T}=ke(P),q=M.length>0?M:C,R=performance.now()-e;n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:y,model:v,operation:S,latency_ms:R,ttft_ms:h,stream:!0,input_tokens:k,output_tokens:A,cached_tokens:f,status:"success",finish_reason:N||"stream_end",tools_used:q,tool_call_args:Object.keys(T).length?T:void 0,prompt_hash:st(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(x),completion_text:n.redactForStorage(I),...O?{system_prompt:n.redactForStorage(O)}:{}}:{},...q.length>0&&I?{decision_rationale:I}:{},...m,span_kind:"llm",tool_definitions:g,conversation_turn:l,message_role:_,metadata:{usage:{prompt_tokens:k,completion_tokens:A,cached_tokens:f},auto_detected:Object.keys(i).length?i:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),c&&(c.setAttribute("gen_ai.usage.output_tokens",A),c.setAttribute("gen_ai.usage.total_tokens",A),c.setAttribute("gen_ai.response.finish_reason",N||"stream_end"),c.setAttribute("gen_ai.response.latency",R))}catch(M){throw n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:y,model:v,operation:S,latency_ms:performance.now()-e,ttft_ms:h,stream:!0,input_tokens:0,output_tokens:A,cost_usd:0,status:"error",error_code:String(M.status??"unknown"),error_message:String(M.message).slice(0,500),...m,span_kind:"llm",conversation_turn:l,message_role:_,metadata:{auto_detected:Object.keys(i).length?i:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),c&&(c.setStatus({code:pe.SpanStatusCode.ERROR,message:M.message}),c.recordException(M)),M}}function De(a,t={}){let n=a,e=n.chat.completions.create.bind(n.chat.completions),s=ee(t.guardrails,"chat"),r=t.providerOverride??"openai",o=t.operation??"chat";return n.chat.completions.create=async(d,c)=>{let p=F(),m=performance.now(),i=G(),l=u(),_=i?.traceId??u(),g=d.model??"gpt-4",w;if(p.configClient){let x=p.configClient.getAbTest(o);if(x)Math.random()<x.splitPercentage/100?(g=x.candidateModel,w={ab_test:!0,ab_variant:"candidate"}):w={ab_test:!0,ab_variant:"control"},d={...d,model:g};else{let M=p.configClient.getModel(o,g);if(M!==g){let T=g;g=M,d={...d,model:M},p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:r,model:M,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:T,override_model:M},environment:p.environment,sdk_version:b})}}}let S=null,y=null,h=i?.agentId?{agent_id:i.agentId,agent_name:i.agentName,agent_role:i.agentRole,agent_framework:i.agentFramework,parent_agent_id:i.parentAgentId}:{},k=ie(d.messages??[],d.model),{conversation_turn:A,message_role:f}=ce(d.messages??[]),N=d.tools?.length?de(d.tools):void 0,v=null,C=p.enableOTel?pe.trace.getTracer("zespan-sdk"):null;C&&(v=C.startSpan(`chat.completions ${g}`,{kind:pe.SpanKind.CLIENT,attributes:ts(d,g,r)}));let I;if(p.configClient){let x=p.configClient.getTimeout(o);x&&(I=AbortSignal.timeout(x.timeoutMs))}let P=p.configClient?.getRetryPolicy(o)??null,O=p.configClient?.getConcurrencyLimit(o)??null;try{S=await Z(p,s,{text:JSON.stringify(d.messages??[]),phase:"pre",traceId:_,spanId:l,model:g,operation:o,agentName:i?.agentName});let x=()=>Ie(()=>W({traceId:_,spanId:l,userId:i?.userId,sessionId:i?.sessionId,tags:i?.tags},()=>e(d,I?{...c,signal:I}:c)),P),M=await(O!==null?Se(`${p.projectId??"default"}:${o}`,O).run(x):x());if(d.stream===!0)return ns(M,{client:p,t0:m,traceId:_,spanId:l,parent:i,params:d,otelSpan:v,model:g,agentCtx:h,autoDetected:k,conversation_turn:A,message_role:f,tool_definitions:N,provider:r,operation:o});let{prompt_tokens:q,completion_tokens:R,prompt_tokens_details:D}=M.usage??{},j=D?.cached_tokens??0,L=M.model??d.model,K=M.usage?.completion_tokens_details?.reasoning_tokens,B=M.choices?.[0]?.message?.content||"";y=await Z(p,s,{text:B,phase:"post",traceId:_,spanId:l,model:L,operation:o,agentName:i?.agentName});let U=oe(B,y);U!==B&&typeof M?.choices?.[0]?.message?.content=="string"&&(M.choices[0].message.content=U);let{tools_used:E,tool_call_args:H}=nt(M.choices??[]),{systemPrompt:z,conversationMessages:J}=se(d.messages??[]);return p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:r,model:L,operation:o,latency_ms:performance.now()-m,stream:!1,input_tokens:q??0,output_tokens:R??0,cached_tokens:j,...K?{reasoning_tokens:K}:{},status:"success",finish_reason:M.choices?.[0]?.finish_reason??"",tools_used:E.length>0?E:M.choices?.[0]?.message?.tool_calls?.map(Y=>Y.function.name)??[],tool_call_args:Object.keys(H).length?H:void 0,prompt_hash:st(JSON.stringify(d.messages)),...p.storePrompts?{prompt_text:p.redactForStorage(J),completion_text:p.redactForStorage(U),...z?{system_prompt:p.redactForStorage(z)}:{}}:{},...E.length>0&&B?{decision_rationale:B}:{},...h,span_kind:"llm",tool_definitions:N,conversation_turn:A,message_role:f,metadata:{usage:M.usage??null,guardrails:{pre:S?{matched:S.results.length,modified:!!S.modifiedText}:null,post:y?{matched:y.results.length,modified:!!y.modifiedText}:null},auto_detected:Object.keys(k).length?k:void 0,...w??{}},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b}),v&&(v.setAttribute("gen_ai.usage.input_tokens",q??0),v.setAttribute("gen_ai.usage.output_tokens",R??0),v.setAttribute("gen_ai.usage.total_tokens",(q??0)+(R??0)),v.setAttribute("gen_ai.usage.cached_tokens",j),v.setAttribute("gen_ai.response.finish_reason",M.choices?.[0]?.finish_reason??""),v.setAttribute("gen_ai.response.latency",performance.now()-m),v.setStatus({code:pe.SpanStatusCode.OK}),v.end()),M}catch(x){if(x?.name==="TimeoutError"||x?.code==="ABORT_ERR"||I&&I.aborted)throw p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:r,model:d.model,operation:o,latency_ms:performance.now()-m,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:"timeout",error_message:String(x.message).slice(0,500),...h,span_kind:"llm",conversation_turn:A,message_role:f,metadata:{auto_detected:Object.keys(k).length?k:void 0},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b}),v&&(v.setStatus({code:pe.SpanStatusCode.ERROR,message:x.message}),v.recordException(x),v.end()),x;let T=p.configClient?.getFallback(o)??null;if(T&&T.model){let D=String(x.message??"")+String(x.status??"")+String(x.code??"");if(T.conditions.length===0||T.conditions.some(L=>D.toLowerCase().includes(L.toLowerCase()))){let L=g,K={...d,model:T.model};p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:r,model:T.model,operation:o,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:L,fallback_model:T.model,reason:String(x.message).slice(0,200)},environment:p.environment,sdk_version:b});try{let B=await W({traceId:_,spanId:l,userId:i?.userId,sessionId:i?.sessionId,tags:i?.tags},()=>e(K,c)),{prompt_tokens:U,completion_tokens:E,prompt_tokens_details:H}=B.usage??{},z=H?.cached_tokens??0,J=B.model??T.model;return p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:r,model:J,operation:o,latency_ms:performance.now()-m,stream:!1,input_tokens:U??0,output_tokens:E??0,cached_tokens:z,status:"success",finish_reason:B.choices?.[0]?.finish_reason??"",prompt_hash:st(JSON.stringify(d.messages)),...h,span_kind:"llm",conversation_turn:A,message_role:f,metadata:{usage:B.usage??null,fallback_used:!0,original_model:L,auto_detected:Object.keys(k).length?k:void 0},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b}),v&&(v.setStatus({code:pe.SpanStatusCode.OK}),v.end()),B}catch(B){throw v&&(v.setStatus({code:pe.SpanStatusCode.ERROR,message:B.message}),v.recordException(B),v.end()),B}}}let q=x instanceof V,R=q?"error":x.status===429?"rate_limited":x.status===408?"timeout":"error";throw p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:r,model:d.model,operation:o,latency_ms:performance.now()-m,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:R,error_code:q?"guardrail_blocked":String(x.status??"unknown"),error_message:String(x.message).slice(0,500),...h,span_kind:"llm",conversation_turn:A,message_role:f,metadata:{auto_detected:Object.keys(k).length?k:void 0},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b}),v&&(v.setStatus({code:pe.SpanStatusCode.ERROR,message:x.message}),v.recordException(x),v.end()),x}},a}var on=require("crypto"),me=require("@opentelemetry/api");var ot=a=>(0,on.createHash)("sha256").update(a).digest("hex");function ss(a){let t=Array.isArray(a?.messages)?[...a.messages]:[],n=a?.system;if(typeof n=="string"&&n.trim().length>0)return[{role:"system",content:n},...t];if(Array.isArray(n)&&n.length>0){let e=n.map(s=>typeof s=="string"?s:typeof s?.text=="string"?s.text:"").filter(s=>s.length>0).join(`
4
+ `);if(e.length>0)return[{role:"system",content:e},...t]}return t}function os(a,t){return{"gen_ai.system":"anthropic","gen_ai.model":t,"gen_ai.operation.name":"chat","gen_ai.prompt":JSON.stringify(a.messages),"gen_ai.request.max_tokens":a.max_tokens,"gen_ai.request.temperature":a.temperature}}async function*rs(a,t){let{client:n,t0:e,traceId:s,spanId:r,parent:o,params:d,otelSpan:c,agentCtx:p,tool_definitions:m,autoDetected:i,conversation_turn:l,message_role:_,operation:g,detectionMessages:w}=t,S,y=0,h=0,k=0,A=0,f="",N=d.model,v=new Set,C=[],{systemPrompt:I,conversationMessages:P}=se(w);try{for await(let T of a){if(!S&&T.type==="content_block_start"&&(S=performance.now()-e,n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:N,operation:g,latency_ms:S,ttft_ms:S,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:ot(JSON.stringify(w)),...n.storePrompts?{prompt_text:n.redactForStorage(P),...I?{system_prompt:n.redactForStorage(I)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b,finish_reason:"stream_start",...p,span_kind:"llm",tool_definitions:m,conversation_turn:l,message_role:_,metadata:{auto_detected:Object.keys(i).length?i:void 0}}),c&&c.setAttribute("gen_ai.response.time_to_first_token",S)),T.type==="content_block_delta"&&T.delta?.type==="text_delta"&&(A++,C.push(T.delta.text||"")),T.type==="message_delta"&&T.delta?.stop_reason&&(f=T.delta.stop_reason),T.type==="message_delta"&&T.usage&&(y=Number(T.usage.input_tokens||y||0),A=Number(T.usage.output_tokens||A||0),h=Number(T.usage.cache_read_input_tokens||h||0)),T.type==="message_start"&&T.message?.usage&&(y=Number(T.message.usage.input_tokens||y||0),A=Number(T.message.usage.output_tokens||A||0),h=Number(T.message.usage.cache_read_input_tokens||h||0)),T.type==="content_block_start"&&T.content_block?.type==="tool_use"){let q=T.content_block.name;q&&v.add(q)}yield T}let O=performance.now()-e,x=[...v],M=C.join("");n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:N,operation:g,latency_ms:O,ttft_ms:S,stream:!0,input_tokens:y,output_tokens:A,cached_tokens:h,reasoning_tokens:k,status:"success",finish_reason:f||"stream_end",tools_used:x,prompt_hash:ot(JSON.stringify(w)),...n.storePrompts?{prompt_text:n.redactForStorage(P),completion_text:n.redactForStorage(M),...I?{system_prompt:n.redactForStorage(I)}:{}}:{},...p,span_kind:"llm",tool_definitions:m,conversation_turn:l,message_role:_,metadata:{usage:{input_tokens:y,output_tokens:A,cache_read_input_tokens:h,reasoning_tokens:k},auto_detected:Object.keys(i).length?i:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),c&&(c.setAttribute("gen_ai.usage.output_tokens",A),c.setAttribute("gen_ai.response.finish_reason",f||"stream_end"))}catch(O){throw n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:N,operation:g,latency_ms:performance.now()-e,ttft_ms:S,stream:!0,input_tokens:0,output_tokens:A,cost_usd:0,status:"error",error_code:String(O.status??O.type??"unknown"),error_message:String(O.message).slice(0,500),...p,span_kind:"llm",conversation_turn:l,message_role:_,metadata:{auto_detected:Object.keys(i).length?i:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),c&&(c.setStatus({code:me.SpanStatusCode.ERROR,message:O.message}),c.recordException(O)),O}}function kt(a,t={}){let n=a,e=n.messages.create.bind(n.messages),s=ee(t.guardrails,"chat"),r=t.operation??"chat";return n.messages.create=async(o,d)=>{let c=F(),p=performance.now(),m=G(),i=u(),l=m?.traceId??u(),_=o.model??"claude-3-5-sonnet-20241022",g;if(c.configClient){let R=c.configClient.getAbTest(r);if(R)Math.random()<R.splitPercentage/100?(_=R.candidateModel,g={ab_test:!0,ab_variant:"candidate"}):g={ab_test:!0,ab_variant:"control"},o={...o,model:_};else{let D=c.configClient.getModel(r,_);if(D!==_){let j=_;_=D,o={...o,model:D},c.enqueue({event_id:u(),project_id:"",trace_id:l,span_id:i,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:D,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:j,override_model:D},environment:c.environment,sdk_version:b})}}}let w=null,S=null,y=ss(o),{systemPrompt:h,conversationMessages:k}=se(y),A=ie(y,_),{conversation_turn:f,message_role:N}=ce(y),v=m?.agentName??A.agent_name,C=m?.agentRole??A.agent_role,I=m?.agentId||v||C?{agent_id:m?.agentId,agent_name:v,agent_role:C,agent_framework:m?.agentFramework,parent_agent_id:m?.parentAgentId}:{},P=o.tools?.length?de(o.tools):void 0,O=null,x=c.enableOTel?me.trace.getTracer("zespan-sdk"):null;x&&(O=x.startSpan(`messages.create ${_}`,{kind:me.SpanKind.CLIENT,attributes:os(o,_)}));let M;if(c.configClient){let R=c.configClient.getTimeout(r);R&&(M=AbortSignal.timeout(R.timeoutMs))}let T=c.configClient?.getRetryPolicy(r)??null,q=c.configClient?.getConcurrencyLimit(r)??null;try{w=await Z(c,s,{text:JSON.stringify(o.messages??[]),phase:"pre",traceId:l,spanId:i,model:_,operation:r,agentName:m?.agentName});let R=()=>Ie(()=>W({traceId:l,spanId:i,userId:m?.userId,sessionId:m?.sessionId,tags:m?.tags,agentId:m?.agentId,agentName:v,agentRole:C,agentFramework:m?.agentFramework,parentAgentId:m?.parentAgentId,conversationTurn:f,availableTools:P},()=>e(o,M?{...d,signal:M}:d)),T),D=await(q!==null?Se(`${c.projectId??"default"}:${r}`,q).run(R):R());if(o.stream===!0)return rs(D,{client:c,t0:p,traceId:l,spanId:i,parent:m,params:o,otelSpan:O,agentCtx:I,tool_definitions:P,autoDetected:A,conversation_turn:f,message_role:N,operation:r,detectionMessages:y});let L=D.usage?.input_tokens??0,K=D.usage?.output_tokens??0,B=D.usage?.cache_read_input_tokens??0,U=D.model??o.model,E=D.content?.find($=>$.type==="text")?.text||"",H=(D.content??[]).filter($=>$.type==="tool_use"),z=H.map($=>$.name).filter(Boolean),J={};for(let $ of H)$.name&&(J[$.name]=$.input??{});S=await Z(c,s,{text:E,phase:"post",traceId:l,spanId:i,model:U,operation:r,agentName:m?.agentName});let Y=oe(E,S);if(Y!==E){let $=D.content?.find(ae=>ae.type==="text");$&&typeof $.text=="string"&&($.text=Y)}return c.enqueue({event_id:u(),project_id:"",trace_id:l,span_id:i,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:U,operation:r,latency_ms:performance.now()-p,stream:!1,input_tokens:L,output_tokens:K,cached_tokens:B,status:"success",finish_reason:D.stop_reason??"",tools_used:z.length>0?z:D.content?.filter($=>$.type==="tool_use").map($=>$.name)??[],tool_call_args:Object.keys(J).length?J:void 0,prompt_hash:ot(JSON.stringify(y)),...c.storePrompts?{prompt_text:c.redactForStorage(k),completion_text:c.redactForStorage(Y),...h?{system_prompt:c.redactForStorage(h)}:{}}:{},...H.length>0&&E?{decision_rationale:E}:{},...I,span_kind:"llm",tool_definitions:P,conversation_turn:f,message_role:N,metadata:{usage:D.usage??null,guardrails:{pre:w?{matched:w.results.length,modified:!!w.modifiedText}:null,post:S?{matched:S.results.length,modified:!!S.modifiedText}:null},auto_detected:Object.keys(A).length?A:void 0,...g??{}},user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:c.environment,sdk_version:b}),O&&(O.setAttribute("gen_ai.usage.input_tokens",L),O.setAttribute("gen_ai.usage.output_tokens",K),O.setAttribute("gen_ai.usage.cached_tokens",B),O.setAttribute("gen_ai.response.finish_reason",D.stop_reason??""),O.setAttribute("gen_ai.response.latency",performance.now()-p),O.setStatus({code:me.SpanStatusCode.OK}),O.end()),D}catch(R){if(R?.name==="TimeoutError"||R?.code==="ABORT_ERR"||M&&M.aborted)throw c.enqueue({event_id:u(),project_id:"",trace_id:l,span_id:i,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:o.model,operation:r,latency_ms:performance.now()-p,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:"timeout",error_message:String(R.message).slice(0,500),...I,span_kind:"llm",conversation_turn:f,message_role:N,metadata:{auto_detected:Object.keys(A).length?A:void 0},user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:c.environment,sdk_version:b}),O&&(O.setStatus({code:me.SpanStatusCode.ERROR,message:R.message}),O.recordException(R),O.end()),R;let j=c.configClient?.getFallback(r)??null;if(j&&j.model){let B=String(R.message??"")+String(R.status??"")+String(R.code??"");if(j.conditions.length===0||j.conditions.some(E=>B.toLowerCase().includes(E.toLowerCase()))){let E=_,H={...o,model:j.model};c.enqueue({event_id:u(),project_id:"",trace_id:l,span_id:i,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:j.model,operation:r,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:E,fallback_model:j.model,reason:String(R.message).slice(0,200)},environment:c.environment,sdk_version:b});try{let z=await W({traceId:l,spanId:i,userId:m?.userId,sessionId:m?.sessionId,tags:m?.tags},()=>e(H,d)),J=z.usage?.input_tokens??0,Y=z.usage?.output_tokens??0,$=z.usage?.cache_read_input_tokens??0,ae=z.model??j.model;return c.enqueue({event_id:u(),project_id:"",trace_id:l,span_id:i,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:ae,operation:r,latency_ms:performance.now()-p,stream:!1,input_tokens:J,output_tokens:Y,cached_tokens:$,status:"success",finish_reason:z.stop_reason??"",prompt_hash:ot(JSON.stringify(y)),...I,span_kind:"llm",conversation_turn:f,message_role:N,metadata:{usage:z.usage??null,fallback_used:!0,original_model:E,auto_detected:Object.keys(A).length?A:void 0},user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:c.environment,sdk_version:b}),O&&(O.setStatus({code:me.SpanStatusCode.OK}),O.end()),z}catch(z){throw O&&(O.setStatus({code:me.SpanStatusCode.ERROR,message:z.message}),O.recordException(z),O.end()),z}}}let L=R instanceof V,K=L?"error":R.status===429||R.type==="overloaded_error"?"rate_limited":R.status===408?"timeout":"error";throw c.enqueue({event_id:u(),project_id:"",trace_id:l,span_id:i,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"anthropic",model:o.model,operation:r,latency_ms:performance.now()-p,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:K,error_code:L?"guardrail_blocked":String(R.status??R.type??"unknown"),error_message:String(R.message).slice(0,500),...I,span_kind:"llm",conversation_turn:f,message_role:N,metadata:{auto_detected:Object.keys(A).length?A:void 0},user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:c.environment,sdk_version:b}),O&&(O.setStatus({code:me.SpanStatusCode.ERROR,message:R.message}),O.recordException(R),O.end()),R}},a}var an=require("crypto"),X=require("@opentelemetry/api");var Ee=a=>(0,an.createHash)("sha256").update(a).digest("hex");function rt(a){let t=o=>{if(typeof o=="string")return o;if(Array.isArray(o))return o.map(d=>typeof d=="string"?d:typeof d?.text=="string"?d.text:"").filter(Boolean).join(`
5
5
  `);if(o&&typeof o=="object"){if(typeof o.text=="string")return o.text;if(Array.isArray(o.parts))return o.parts.map(d=>typeof d?.text=="string"?d.text:"").filter(Boolean).join(`
6
- `)}return""},n=r?.contents??r,e=[],s=r?.systemInstruction??r?.system_instruction,a=t(s);if(a.length>0&&e.push({role:"system",content:a}),typeof n=="string")return e.push({role:"user",content:n}),e;if(Array.isArray(n)){for(let o of n){if(typeof o=="string"){e.push({role:"user",content:o});continue}if(o&&typeof o=="object"){let d=typeof o.role=="string"?o.role:"user",c=t(o);c.length>0&&e.push({role:d,content:c})}}return e}if(n&&typeof n=="object"){let o=typeof n.role=="string"?n.role:"user",d=t(n);d.length>0&&e.push({role:o,content:d})}return e}function at(r,t){return{"gen_ai.system":"google","gen_ai.model":t,"gen_ai.operation.name":"chat","gen_ai.prompt":JSON.stringify(r),"gen_ai.request.max_tokens":r.generationConfig?.maxOutputTokens,"gen_ai.request.temperature":r.generationConfig?.temperature,"gen_ai.request.top_p":r.generationConfig?.topP}}function kt(r){try{if(typeof r?.text=="function"){let n=r.text();if(typeof n=="string"&&n.length>0)return n}}catch{}return(r?.candidates?.[0]?.content?.parts??[]).map(n=>typeof n?.text=="string"?n.text:"").filter(Boolean).join("")}async function*sn(r,t){let{client:n,t0:e,traceId:s,spanId:a,parent:o,params:d,modelName:c,otelSpan:u,streamResult:l,agentCtx:i,tool_definitions:g,autoDetected:m,conversation_turn:h,message_role:w,operation:y}=t,f,I=0,k=0,A=0,_=0,R="",S=[],b="";try{for await(let v of r){f||(f=performance.now()-e,n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:y,latency_ms:f,ttft_ms:f,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:De(JSON.stringify(d)),...n.storePrompts?{prompt_text:n.redactForStorage(d)}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x,finish_reason:"stream_start",...i,span_kind:"llm",tool_definitions:g,conversation_turn:h,message_role:w,metadata:{auto_detected:Object.keys(m).length?m:void 0}}),u&&u.setAttribute("gen_ai.response.time_to_first_token",f));let P=(typeof v?.text=="function"?v.text():v?.text)||v?.candidates?.[0]?.content?.parts?.map(T=>T?.text||"").join("")||"";P&&(I++,b+=P),v.candidates?.[0]?.finishReason&&(R=v.candidates[0].finishReason);let N=Array.isArray(v?.functionCalls)?v.functionCalls:v?.functionCalls?[v.functionCalls]:[],q=(v?.candidates?.[0]?.content?.parts??[]).map(T=>T?.functionCall).filter(Boolean);for(let T of[...N,...q])T?.name&&!S.includes(T.name)&&S.push(T.name);yield v}let C=await l?.response;C?.usageMetadata&&(k=Number(C.usageMetadata.promptTokenCount||k||0),I=Number(C.usageMetadata.candidatesTokenCount||I||0),A=Number(C.usageMetadata.cachedContentTokenCount||A||0),_=Number(C.usageMetadata.thoughtsTokenCount||_||0));let j=kt(C);j&&(b=j);let O=performance.now()-e;n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:y,latency_ms:O,ttft_ms:f,stream:!0,input_tokens:k,output_tokens:I,cached_tokens:A,reasoning_tokens:_,status:"success",finish_reason:R||"stream_end",tools_used:S,prompt_hash:De(JSON.stringify(d)),...n.storePrompts?{prompt_text:n.redactForStorage(d),completion_text:n.redactForStorage(b)}:{},...i,span_kind:"llm",tool_definitions:g,conversation_turn:h,message_role:w,metadata:{usage:C?.usageMetadata??{promptTokenCount:k,candidatesTokenCount:I,cachedContentTokenCount:A,thoughtsTokenCount:_},auto_detected:Object.keys(m).length?m:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),u&&(u.setAttribute("gen_ai.completion",b),u.setAttribute("gen_ai.usage.input_tokens",k),u.setAttribute("gen_ai.usage.output_tokens",I),u.setAttribute("gen_ai.usage.total_tokens",k+I),u.setAttribute("gen_ai.usage.cached_tokens",A),u.setAttribute("gen_ai.usage.reasoning_tokens",_),u.setAttribute("gen_ai.response.finish_reason",R||"stream_end"),u.setStatus({code:ee.SpanStatusCode.OK}),u.end())}catch(C){throw n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:y,latency_ms:performance.now()-e,ttft_ms:f,stream:!0,input_tokens:0,output_tokens:I,cost_usd:0,status:"error",error_code:String(C.status??"unknown"),error_message:String(C.message).slice(0,500),...i,span_kind:"llm",conversation_turn:h,message_role:w,metadata:{auto_detected:Object.keys(m).length?m:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),u&&(u.setStatus({code:ee.SpanStatusCode.ERROR,message:C.message}),u.recordException(C),u.end()),C}}function It(r,t={}){let n=r,e=n.getGenerativeModel.bind(n),s=te(t.guardrails,"chat"),a=t.operation??"chat";return n.getGenerativeModel=(o,d)=>{let c=o.model,u=F(),l=!1,i=c,g;if(u.configClient){let f=u.configClient.getAbTest(a);if(f)Math.random()<f.splitPercentage/100?(i=c,c=f.candidateModel,o={...o,model:c},l=!0,g={ab_test:!0,ab_variant:"candidate"}):g={ab_test:!0,ab_variant:"control"};else{let I=u.configClient.getModel(a,c);I!==c&&(i=c,c=I,o={...o,model:I},l=!0)}}let m=e(o,d),h=m.generateContent.bind(m);m.generateContent=async(f,I)=>{let k=F(),A=performance.now(),_=E(),R=p(),S=_?.traceId??p(),b=null,C=null,j=ot(f),O=re(j,c),{conversation_turn:v,message_role:P}=ie(j),N=_?.agentName??O.agent_name,q=_?.agentRole??O.agent_role,T=_?.agentId||N||q?{agent_id:_?.agentId,agent_name:N,agent_role:q,agent_framework:_?.agentFramework,parent_agent_id:_?.parentAgentId}:{},D=f?.tools?.length?ce(f.tools):void 0,M=null,B=k.enableOTel?ee.trace.getTracer("zespan-sdk"):null;B&&(M=B.startSpan(`generateContent ${c}`,{kind:ee.SpanKind.CLIENT,attributes:at(f,c)})),l&&k.enqueue({event_id:p(),project_id:"",trace_id:S,span_id:R,parent_span_id:_?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:i,override_model:c},environment:k.environment,sdk_version:x});try{b=await Z(k,s,{text:JSON.stringify(f??""),phase:"pre",traceId:S,spanId:R,model:c,operation:a,agentName:_?.agentName});let K;if(k.configClient){let Q=k.configClient.getTimeout(a);Q&&(K=AbortSignal.timeout(Q.timeoutMs))}let z=k.configClient?.getRetryPolicy(a)??null,U=k.configClient?.getConcurrencyLimit(a)??null,G=()=>Ie(()=>W({traceId:S,spanId:R,userId:_?.userId,sessionId:_?.sessionId,tags:_?.tags,agentId:_?.agentId,agentName:N,agentRole:q,agentFramework:_?.agentFramework,parentAgentId:_?.parentAgentId,conversationTurn:v,availableTools:D},()=>h(f,K?{...I,signal:K}:I)),z),H=await(U!==null?Se(`${k.projectId??"default"}:${a}`,U).run(G):G()),L=H.response,J=L.usageMetadata?.promptTokenCount??0,X=L.usageMetadata?.candidatesTokenCount??0,$=L.usageMetadata?.cachedContentTokenCount??0,Y=L.usageMetadata?.thoughtsTokenCount??0,he=kt(L),we=(L.candidates?.[0]?.content?.parts??[]).filter(Q=>Q?.functionCall),de=we.map(Q=>Q.functionCall.name).filter(Boolean),me=(L.candidates?.[0]?.content?.parts??[]).filter(Q=>Q?.text&&!Q?.functionCall).map(Q=>Q.text).join(""),ge={};for(let Q of we)Q.functionCall?.name&&(ge[Q.functionCall.name]=Q.functionCall.args??{});C=await Z(k,s,{text:he,phase:"post",traceId:S,spanId:R,model:c,operation:a,agentName:_?.agentName});let be=oe(he,C);return k.enqueue({event_id:p(),project_id:"",trace_id:S,span_id:R,parent_span_id:_?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:a,latency_ms:performance.now()-A,stream:!1,input_tokens:J,output_tokens:X,cached_tokens:$,reasoning_tokens:Y,status:"success",finish_reason:L.candidates?.[0]?.finishReason??"",tools_used:de,tool_call_args:Object.keys(ge).length?ge:void 0,prompt_hash:De(JSON.stringify(f)),...k.storePrompts?{prompt_text:k.redactForStorage(f),completion_text:k.redactForStorage(be)}:{},...de.length>0&&me?{decision_rationale:me}:{},...T,span_kind:"llm",tool_definitions:D,conversation_turn:v,message_role:P,metadata:{usage:L.usageMetadata??null,guardrails:{pre:b?{matched:b.results.length,modified:!!b.modifiedText}:null,post:C?{matched:C.results.length,modified:!!C.modifiedText}:null},auto_detected:Object.keys(O).length?O:void 0,...g??{}},user_id:_?.userId,session_id:_?.sessionId,tags:_?.tags,environment:k.environment,sdk_version:x}),M&&(M.setAttribute("gen_ai.completion",be),M.setAttribute("gen_ai.usage.input_tokens",J),M.setAttribute("gen_ai.usage.output_tokens",X),M.setAttribute("gen_ai.usage.total_tokens",J+X),M.setAttribute("gen_ai.usage.cached_tokens",$),M.setAttribute("gen_ai.usage.reasoning_tokens",Y),M.setAttribute("gen_ai.response.finish_reason",L.candidates?.[0]?.finishReason??""),M.setAttribute("gen_ai.response.latency",performance.now()-A),M.setStatus({code:ee.SpanStatusCode.OK}),M.end()),H}catch(K){let z=K.__signal;if(K?.name==="TimeoutError"||K?.code==="ABORT_ERR")throw k.enqueue({event_id:p(),project_id:"",trace_id:S,span_id:R,parent_span_id:_?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:a,latency_ms:performance.now()-A,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:"timeout",error_message:String(K.message).slice(0,500),...T,span_kind:"llm",conversation_turn:v,message_role:P,metadata:{auto_detected:Object.keys(O).length?O:void 0},user_id:_?.userId,session_id:_?.sessionId,tags:_?.tags,environment:k.environment,sdk_version:x}),M&&(M.setStatus({code:ee.SpanStatusCode.ERROR,message:K.message}),M.recordException(K),M.end()),K;let G=k.configClient?.getFallback(a)??null;if(G&&G.model){let J=String(K.message??"")+String(K.status??"")+String(K.code??"");if(G.conditions.length===0||G.conditions.some($=>J.toLowerCase().includes($.toLowerCase()))){let $=c,Y={...o,model:G.model},he=e(Y,d),we=he.generateContent.bind(he);k.enqueue({event_id:p(),project_id:"",trace_id:S,span_id:R,parent_span_id:_?.spanId,timestamp:new Date().toISOString(),provider:"google",model:G.model,operation:a,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:$,fallback_model:G.model,reason:String(K.message).slice(0,200)},environment:k.environment,sdk_version:x});try{let de=await W({traceId:S,spanId:R,userId:_?.userId,sessionId:_?.sessionId,tags:_?.tags},()=>we(f,I)),me=de.response,ge=me.usageMetadata?.promptTokenCount??0,be=me.usageMetadata?.candidatesTokenCount??0,Q=me.usageMetadata?.cachedContentTokenCount??0;return k.enqueue({event_id:p(),project_id:"",trace_id:S,span_id:R,parent_span_id:_?.spanId,timestamp:new Date().toISOString(),provider:"google",model:G.model,operation:a,latency_ms:performance.now()-A,stream:!1,input_tokens:ge,output_tokens:be,cached_tokens:Q,status:"success",finish_reason:me.candidates?.[0]?.finishReason??"",prompt_hash:De(JSON.stringify(f)),...T,span_kind:"llm",conversation_turn:v,message_role:P,metadata:{usage:me.usageMetadata??null,fallback_used:!0,original_model:$,auto_detected:Object.keys(O).length?O:void 0},user_id:_?.userId,session_id:_?.sessionId,tags:_?.tags,environment:k.environment,sdk_version:x}),M&&(M.setStatus({code:ee.SpanStatusCode.OK}),M.end()),de}catch(de){throw M&&(M.setStatus({code:ee.SpanStatusCode.ERROR,message:de.message}),M.recordException(de),M.end()),de}}}let H=K instanceof V,L=H?"error":K.status===429?"rate_limited":K.status===408?"timeout":"error";throw k.enqueue({event_id:p(),project_id:"",trace_id:S,span_id:R,parent_span_id:_?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:a,latency_ms:performance.now()-A,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:L,error_code:H?"guardrail_blocked":String(K.status??"unknown"),error_message:String(K.message).slice(0,500),...T,span_kind:"llm",conversation_turn:v,message_role:P,metadata:{auto_detected:Object.keys(O).length?O:void 0},user_id:_?.userId,session_id:_?.sessionId,tags:_?.tags,environment:k.environment,sdk_version:x}),M&&(M.setStatus({code:ee.SpanStatusCode.ERROR,message:K.message}),M.recordException(K),M.end()),K}};let w=m.generateContentStream.bind(m);m.generateContentStream=async(f,I)=>{let k=F(),A=performance.now(),_=E(),R=p(),S=_?.traceId??p(),b=ot(f),C=re(b,c),{conversation_turn:j,message_role:O}=ie(b),v=_?.agentName??C.agent_name,P=_?.agentRole??C.agent_role,N=_?.agentId||v||P?{agent_id:_?.agentId,agent_name:v,agent_role:P,agent_framework:_?.agentFramework,parent_agent_id:_?.parentAgentId}:{},q=f?.tools?.length?ce(f.tools):void 0,T=null,D=k.enableOTel?ee.trace.getTracer("zespan-sdk"):null;D&&(T=D.startSpan(`generateContentStream ${c}`,{kind:ee.SpanKind.CLIENT,attributes:at(f,c)}));try{let M=await W({traceId:S,spanId:R,userId:_?.userId,sessionId:_?.sessionId,tags:_?.tags,agentId:_?.agentId,agentName:v,agentRole:P,agentFramework:_?.agentFramework,parentAgentId:_?.parentAgentId,conversationTurn:j,availableTools:q},()=>w(f,I));return T&&T.setAttribute("gen_ai.request.stream",!0),M.stream=sn(M.stream,{client:k,t0:A,traceId:S,spanId:R,parent:_,params:f,modelName:c,otelSpan:T,streamResult:M,agentCtx:N,tool_definitions:q,autoDetected:C,conversation_turn:j,message_role:O,operation:a}),M}catch(M){let B=M instanceof V,K=B?"error":M.status===429?"rate_limited":M.status===408?"timeout":"error";throw k.enqueue({event_id:p(),project_id:"",trace_id:S,span_id:R,parent_span_id:_?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:a,latency_ms:performance.now()-A,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:K,error_code:B?"guardrail_blocked":String(M.status??"unknown"),error_message:String(M.message).slice(0,500),...N,span_kind:"llm",conversation_turn:j,message_role:O,metadata:{auto_detected:Object.keys(C).length?C:void 0},user_id:_?.userId,session_id:_?.sessionId,tags:_?.tags,environment:k.environment,sdk_version:x}),T&&(T.setStatus({code:ee.SpanStatusCode.ERROR,message:M.message}),T.recordException(M),T.end()),M}};let y=m.startChat?.bind(m);return y&&(m.startChat=f=>{let I=y(f),k=I.sendMessage?.bind(I),A=I.sendMessageStream?.bind(I);return k&&(I.sendMessage=async(_,R)=>{let S=F(),b=performance.now(),C=E(),j=p(),O=C?.traceId??p(),v={...f||{},message:_},P=null,N=null,q=ot(v),T=re(q,c),{conversation_turn:D,message_role:M}=ie(q),B=C?.agentName??T.agent_name,K=C?.agentRole??T.agent_role,z=C?.agentId||B||K?{agent_id:C?.agentId,agent_name:B,agent_role:K,agent_framework:C?.agentFramework,parent_agent_id:C?.parentAgentId}:{},U=f?.tools?.length?ce(f.tools):void 0,G=null,H=S.enableOTel?ee.trace.getTracer("zespan-sdk"):null;H&&(G=H.startSpan(`sendMessage ${c}`,{kind:ee.SpanKind.CLIENT,attributes:at(v,c)}));try{P=await Z(S,s,{text:JSON.stringify(v),phase:"pre",traceId:O,spanId:j,model:c,operation:a,agentName:C?.agentName});let L=await W({traceId:O,spanId:j,userId:C?.userId,sessionId:C?.sessionId,tags:C?.tags,agentId:C?.agentId,agentName:B,agentRole:K,agentFramework:C?.agentFramework,parentAgentId:C?.parentAgentId,conversationTurn:D,availableTools:U},()=>k(_,R)),J=L.response,X=J.usageMetadata?.promptTokenCount??0,$=J.usageMetadata?.candidatesTokenCount??0,Y=J.usageMetadata?.cachedContentTokenCount??0,he=J.usageMetadata?.thoughtsTokenCount??0,we=kt(J),de=(J.candidates?.[0]?.content?.parts??[]).filter(Q=>Q?.functionCall),me=de.map(Q=>Q.functionCall.name).filter(Boolean),ge={};for(let Q of de)Q.functionCall?.name&&(ge[Q.functionCall.name]=Q.functionCall.args??{});N=await Z(S,s,{text:we,phase:"post",traceId:O,spanId:j,model:c,operation:a,agentName:C?.agentName});let be=oe(we,N);return S.enqueue({event_id:p(),project_id:"",trace_id:O,span_id:j,parent_span_id:C?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:a,latency_ms:performance.now()-b,stream:!1,input_tokens:X,output_tokens:$,cached_tokens:Y,reasoning_tokens:he,status:"success",finish_reason:J.candidates?.[0]?.finishReason??"",tools_used:me,tool_call_args:Object.keys(ge).length?ge:void 0,prompt_hash:De(JSON.stringify(v)),...S.storePrompts?{prompt_text:S.redactForStorage(v),completion_text:S.redactForStorage(be)}:{},...z,span_kind:"llm",tool_definitions:U,conversation_turn:D,message_role:M,metadata:{usage:J.usageMetadata??null,guardrails:{pre:P?{matched:P.results.length,modified:!!P.modifiedText}:null,post:N?{matched:N.results.length,modified:!!N.modifiedText}:null},auto_detected:Object.keys(T).length?T:void 0},user_id:C?.userId,session_id:C?.sessionId,tags:C?.tags,environment:S.environment,sdk_version:x}),G&&(G.setAttribute("gen_ai.completion",be),G.setAttribute("gen_ai.usage.input_tokens",X),G.setAttribute("gen_ai.usage.output_tokens",$),G.setAttribute("gen_ai.usage.total_tokens",X+$),G.setAttribute("gen_ai.usage.cached_tokens",Y),G.setAttribute("gen_ai.usage.reasoning_tokens",he),G.setAttribute("gen_ai.response.finish_reason",J.candidates?.[0]?.finishReason??""),G.setAttribute("gen_ai.response.latency",performance.now()-b),G.setStatus({code:ee.SpanStatusCode.OK}),G.end()),L}catch(L){let J=L instanceof V,X=J?"error":L.status===429?"rate_limited":L.status===408?"timeout":"error";throw S.enqueue({event_id:p(),project_id:"",trace_id:O,span_id:j,parent_span_id:C?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:a,latency_ms:performance.now()-b,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:X,error_code:J?"guardrail_blocked":String(L.status??"unknown"),error_message:String(L.message).slice(0,500),...z,span_kind:"llm",conversation_turn:D,message_role:M,metadata:{auto_detected:Object.keys(T).length?T:void 0},user_id:C?.userId,session_id:C?.sessionId,tags:C?.tags,environment:S.environment,sdk_version:x}),G&&(G.setStatus({code:ee.SpanStatusCode.ERROR,message:L.message}),G.recordException(L),G.end()),L}}),A&&(I.sendMessageStream=async(_,R)=>{let S=F(),b=performance.now(),C=E(),j=p(),O=C?.traceId??p(),v={...f||{},message:_},P=ot(v),N=re(P,c),{conversation_turn:q,message_role:T}=ie(P),D=C?.agentName??N.agent_name,M=C?.agentRole??N.agent_role,B=C?.agentId||D||M?{agent_id:C?.agentId,agent_name:D,agent_role:M,agent_framework:C?.agentFramework,parent_agent_id:C?.parentAgentId}:{},K=f?.tools?.length?ce(f.tools):void 0,z=null,U=S.enableOTel?ee.trace.getTracer("zespan-sdk"):null;U&&(z=U.startSpan(`sendMessageStream ${c}`,{kind:ee.SpanKind.CLIENT,attributes:at(v,c)}));try{let G=await W({traceId:O,spanId:j,userId:C?.userId,sessionId:C?.sessionId,tags:C?.tags,agentId:C?.agentId,agentName:D,agentRole:M,agentFramework:C?.agentFramework,parentAgentId:C?.parentAgentId,conversationTurn:q,availableTools:K},()=>A(_,R));return z&&z.setAttribute("gen_ai.request.stream",!0),G.stream=sn(G.stream,{client:S,t0:b,traceId:O,spanId:j,parent:C,params:v,modelName:c,otelSpan:z,streamResult:G,agentCtx:B,tool_definitions:K,autoDetected:N,conversation_turn:q,message_role:T,operation:a}),G}catch(G){let H=G instanceof V,L=H?"error":G.status===429?"rate_limited":G.status===408?"timeout":"error";throw S.enqueue({event_id:p(),project_id:"",trace_id:O,span_id:j,parent_span_id:C?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:a,latency_ms:performance.now()-b,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:L,error_code:H?"guardrail_blocked":String(G.status??"unknown"),error_message:String(G.message).slice(0,500),...B,span_kind:"llm",conversation_turn:q,message_role:T,metadata:{auto_detected:Object.keys(N).length?N:void 0},user_id:C?.userId,session_id:C?.sessionId,tags:C?.tags,environment:S.environment,sdk_version:x}),z&&(z.setStatus({code:ee.SpanStatusCode.ERROR,message:G.message}),z.recordException(G),z.end()),G}}),I}),m},r}var dn=require("crypto"),ve=require("@opentelemetry/api");var an=r=>(0,dn.createHash)("sha256").update(r).digest("hex");function rn(r){let t=[];if(r?.systemInstruction){let e=typeof r.systemInstruction=="string"?r.systemInstruction:r.systemInstruction?.parts?.map(s=>s?.text||"").join("")||"";e&&t.push({role:"system",content:e})}let n=r?.contents;if(typeof n=="string")t.push({role:"user",content:n});else if(Array.isArray(n))for(let e of n){if(typeof e=="string"){t.push({role:"user",content:e});continue}let s=e?.role||"user",a=Array.isArray(e?.parts)?e.parts.map(o=>o?.text||"").filter(Boolean).join(""):e?.text||"";a&&t.push({role:s,content:a})}return t}function ts(r){try{if(typeof r?.text=="function")return r.text()||"";if(typeof r?.text=="string")return r.text}catch{}return(r?.candidates?.[0]?.content?.parts??[]).filter(t=>typeof t?.text=="string").map(t=>t.text).join("")}function ns(r){return(r?.candidates?.[0]?.content?.parts??[]).filter(t=>t?.inlineData).length}function cn(r){return{input:Number(r?.promptTokenCount||0),output:Number(r?.candidatesTokenCount||0),cached:Number(r?.cachedContentTokenCount||0),reasoning:Number(r?.thoughtsTokenCount||0)}}function St(r,t={}){let e=r.models;if(!e||e.__zespanPatched)return r;let s=te(t.guardrails,"chat"),a=t.operation??"chat",o=e.generateContent.bind(e),d=e.generateContentStream?.bind(e),c=e.embedContent?.bind(e),u=e.generateVideo?.bind(e);return e.generateContent=async l=>{let i=F(),g=performance.now(),m=E(),h=p(),w=m?.traceId??p(),y=l?.model??"gemini",f=!1,I=y,k;if(i.configClient){let T=i.configClient.getAbTest(a);if(T)Math.random()<T.splitPercentage/100?(I=y,y=T.candidateModel,l={...l,model:y},f=!0,k={ab_test:!0,ab_variant:"candidate"}):k={ab_test:!0,ab_variant:"control"};else{let D=i.configClient.getModel(a,y);D!==y&&(I=y,y=D,l={...l,model:D},f=!0)}}let A=rn(l),_=re(A,y),{conversation_turn:R,message_role:S}=ie(A),b=m?.agentName??_.agent_name,C=m?.agentRole??_.agent_role,j=m?.agentId||b||C?{agent_id:m?.agentId,agent_name:b,agent_role:C,agent_framework:m?.agentFramework,parent_agent_id:m?.parentAgentId}:{},O=l?.tools?.length?ce(l.tools):void 0,v=null,P=i.enableOTel?ve.trace.getTracer("zespan-sdk"):null;P&&(v=P.startSpan(`generateContent ${y}`,{kind:ve.SpanKind.CLIENT,attributes:{"gen_ai.system":"google","gen_ai.model":y,"gen_ai.operation.name":"chat"}})),f&&i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:I,override_model:y},user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:i.environment,sdk_version:x});let N=null,q=null;try{N=await Z(i,s,{text:JSON.stringify(l??""),phase:"pre",traceId:w,spanId:h,model:y,operation:a,agentName:m?.agentName});let T;if(i.configClient){let Y=i.configClient.getTimeout(a);Y&&(T=AbortSignal.timeout(Y.timeoutMs))}let D=i.configClient?.getRetryPolicy(a)??null,M=i.configClient?.getConcurrencyLimit(a)??null,B=()=>Ie(()=>W({traceId:w,spanId:h,userId:m?.userId,sessionId:m?.sessionId,tags:m?.tags,agentId:m?.agentId,agentName:b,agentRole:C,agentFramework:m?.agentFramework,parentAgentId:m?.parentAgentId,conversationTurn:R,availableTools:O},()=>o(T?{...l,fetchOptions:{signal:T}}:l)),D),K=await(M!==null?Se(`${i.projectId??"default"}:${a}`,M).run(B):B()),z=cn(K?.usageMetadata),U=ts(K),G=ns(K),H=G>0,L=(K?.candidates?.[0]?.content?.parts??[]).filter(Y=>Y?.functionCall),J=L.map(Y=>Y.functionCall.name).filter(Boolean),X={};for(let Y of L)Y.functionCall?.name&&(X[Y.functionCall.name]=Y.functionCall.args??{});q=await Z(i,s,{text:U,phase:"post",traceId:w,spanId:h,model:y,operation:a,agentName:m?.agentName});let $=oe(U,q);return i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:a,latency_ms:performance.now()-g,stream:!1,input_tokens:z.input,output_tokens:z.output,cached_tokens:z.cached,reasoning_tokens:z.reasoning,status:"success",finish_reason:K?.candidates?.[0]?.finishReason??"",tools_used:J,tool_call_args:Object.keys(X).length?X:void 0,prompt_hash:an(JSON.stringify(l)),...i.storePrompts?{prompt_text:i.redactForStorage(l),completion_text:i.redactForStorage($)}:{},...J.length>0&&U?{decision_rationale:U}:{},...j,span_kind:H?"image_gen":"llm",tool_definitions:O,conversation_turn:R,message_role:S,metadata:{usage:K?.usageMetadata??null,...H?{num_images:G}:{},guardrails:{pre:N?{matched:N.results.length,modified:!!N.modifiedText}:null,post:q?{matched:q.results.length,modified:!!q.modifiedText}:null},auto_detected:Object.keys(_).length?_:void 0,...k??{}},user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:i.environment,sdk_version:x}),v&&(v.setAttribute("gen_ai.completion",$),v.setAttribute("gen_ai.usage.input_tokens",z.input),v.setAttribute("gen_ai.usage.output_tokens",z.output),v.setAttribute("gen_ai.usage.total_tokens",z.input+z.output),v.setStatus({code:ve.SpanStatusCode.OK}),v.end()),K}catch(T){throw T instanceof V?(v&&(v.setStatus({code:ve.SpanStatusCode.ERROR,message:"Guardrail blocked"}),v.end()),T):(i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:a,latency_ms:performance.now()-g,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(T.status??T.code??"unknown"),error_message:String(T.message).slice(0,500),...j,span_kind:"llm",user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:i.environment,sdk_version:x}),v&&(v.setStatus({code:ve.SpanStatusCode.ERROR,message:T.message}),v.recordException(T),v.end()),T)}},d&&(e.generateContentStream=async l=>{let i=F(),g=performance.now(),m=E(),h=p(),w=m?.traceId??p(),y=l?.model??"gemini";if(i.configClient){let j=i.configClient.getModel(a,y);j!==y&&(y=j,l={...l,model:j})}let f=rn(l),I=re(f,y),{conversation_turn:k,message_role:A}=ie(f),_=m?.agentName??I.agent_name,R=m?.agentRole??I.agent_role,S=m?.agentId||_||R?{agent_id:m?.agentId,agent_name:_,agent_role:R,agent_framework:m?.agentFramework,parent_agent_id:m?.parentAgentId}:{},b=l?.tools?.length?ce(l.tools):void 0,C=await d(l);return(async function*(){let j=0,O=0,v=0,P=0,N,q="",T="",D=[];try{for await(let M of C){N||(N=performance.now()-g);let B=M?.usageMetadata;B&&(j=Number(B.promptTokenCount||j),O=Number(B.candidatesTokenCount||O),v=Number(B.cachedContentTokenCount||v),P=Number(B.thoughtsTokenCount||P));let K=typeof M?.text=="function"?M.text():M?.text||"";K&&(T+=K),M?.candidates?.[0]?.finishReason&&(q=M.candidates[0].finishReason);let z=(M?.candidates?.[0]?.content?.parts??[]).map(U=>U?.functionCall).filter(Boolean);for(let U of z)U?.name&&!D.includes(U.name)&&D.push(U.name);yield M}i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:a,latency_ms:performance.now()-g,ttft_ms:N,stream:!0,input_tokens:j,output_tokens:O,cached_tokens:v,reasoning_tokens:P,status:"success",finish_reason:q||"stream_end",tools_used:D,prompt_hash:an(JSON.stringify(l)),...i.storePrompts?{prompt_text:i.redactForStorage(l),completion_text:i.redactForStorage(T)}:{},...S,span_kind:"llm",tool_definitions:b,conversation_turn:k,message_role:A,user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:i.environment,sdk_version:x})}catch(M){throw i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:a,latency_ms:performance.now()-g,ttft_ms:N,stream:!0,input_tokens:j,output_tokens:O,status:"error",error_code:String(M.status??M.code??"unknown"),error_message:String(M.message).slice(0,500),...S,span_kind:"llm",user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:i.environment,sdk_version:x}),M}})()}),c&&(e.embedContent=async l=>{let i=F(),g=performance.now(),m=E(),h=p(),w=m?.traceId??p(),y=l?.model??"gemini-embedding";try{let f=await c(l),I=cn(f?.usageMetadata);return i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"embedding",latency_ms:performance.now()-g,stream:!1,input_tokens:I.input,output_tokens:0,status:"success",span_kind:"embedding",user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:i.environment,sdk_version:x}),f}catch(f){throw i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"embedding",latency_ms:performance.now()-g,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(f.status??f.code??"unknown"),error_message:String(f.message).slice(0,500),span_kind:"embedding",environment:i.environment,sdk_version:x}),f}}),u&&(e.generateVideo=async l=>{let i=F(),g=performance.now(),m=E(),h=p(),w=m?.traceId??p(),y=l?.model??"veo";try{let f=await u(l);return i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"video_gen",latency_ms:performance.now()-g,stream:!1,input_tokens:0,output_tokens:0,status:"success",span_kind:"video_gen",metadata:{prompt:typeof l?.prompt=="string"?l.prompt.slice(0,500):void 0},user_id:m?.userId,session_id:m?.sessionId,tags:m?.tags,environment:i.environment,sdk_version:x}),f}catch(f){throw i.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:m?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"video_gen",latency_ms:performance.now()-g,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(f.status??f.code??"unknown"),error_message:String(f.message).slice(0,500),span_kind:"video_gen",environment:i.environment,sdk_version:x}),f}}),e.__zespanPatched=!0,r}var ln=require("crypto"),_e=require("@opentelemetry/api");var vt=r=>(0,ln.createHash)("sha256").update(r).digest("hex");function ss(r,t,n,e){let s=Number(r?.usage?.cost);if(Number.isFinite(s))return{cost:s,source:"usage.cost"};let a=r?.headers?.get?.("x-ratelimit-cost"),o=Number.parseFloat(String(a??""));return Number.isFinite(o)?{cost:o,source:"x-ratelimit-cost"}:{cost:0,source:"computed"}}function os(r,t){return{"gen_ai.system":"openrouter","gen_ai.model":t,"gen_ai.operation.name":"chat","gen_ai.prompt":JSON.stringify(r.messages),"gen_ai.request.max_tokens":r.max_tokens,"gen_ai.request.temperature":r.temperature,"gen_ai.request.top_p":r.top_p}}async function*as(r,t){let{client:n,t0:e,traceId:s,spanId:a,parent:o,params:d,otelSpan:c,agentCtx:u,autoDetected:l,conversation_turn:i,message_role:g,tool_definitions:m}=t,h,w=0,y=0,f=0,I=0,k="",A=d.model,_=[],R="",S=[],{systemPrompt:b,conversationMessages:C}=se(d.messages??[]);try{for await(let N of r){if(h||(h=performance.now()-e,n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:A,operation:"chat",latency_ms:h,ttft_ms:h,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:vt(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(C),...b?{system_prompt:n.redactForStorage(b)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x,finish_reason:"stream_start",...u,span_kind:"llm",tool_definitions:m,conversation_turn:i,message_role:g,metadata:{auto_detected:Object.keys(l).length?l:void 0}}),c&&c.setAttribute("gen_ai.response.time_to_first_token",h)),N.choices?.[0]?.delta?.content&&(w++,R+=N.choices[0].delta.content),N.choices?.[0]?.finish_reason&&(k=N.choices[0].finish_reason),N.model&&(A=N.model),N.usage){y=Number(N.usage.prompt_tokens||y||0),w=Number(N.usage.completion_tokens||w||0),f=Number(N.usage.prompt_tokens_details?.cached_tokens||f||0);let q=N.usage.completion_tokens_details||{};I=Number(q.reasoning_tokens||I||0)}if(N.choices?.[0]?.delta?.tool_calls)for(let q of N.choices[0].delta.tool_calls)S.push(q),q.function?.name&&!_.includes(q.function.name)&&_.push(q.function.name);yield N}let{tools_used:j,tool_call_args:O}=ke(S),v=j.length>0?j:_,P=performance.now()-e;n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:A,operation:"chat",latency_ms:P,ttft_ms:h,stream:!0,input_tokens:y,output_tokens:w,cached_tokens:f,reasoning_tokens:I,status:"success",finish_reason:k||"stream_end",tools_used:v,tool_call_args:Object.keys(O).length?O:void 0,prompt_hash:vt(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(C),completion_text:n.redactForStorage(R),...b?{system_prompt:n.redactForStorage(b)}:{}}:{},...u,span_kind:"llm",tool_definitions:m,conversation_turn:i,message_role:g,metadata:{usage:{prompt_tokens:y,completion_tokens:w,cached_tokens:f,reasoning_tokens:I},auto_detected:Object.keys(l).length?l:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),c&&(c.setAttribute("gen_ai.completion",R),c.setAttribute("gen_ai.usage.input_tokens",y),c.setAttribute("gen_ai.usage.output_tokens",w),c.setAttribute("gen_ai.usage.total_tokens",y+w),c.setAttribute("gen_ai.usage.reasoning_tokens",I),c.setAttribute("gen_ai.response.finish_reason",k||"stream_end"),c.setStatus({code:_e.SpanStatusCode.OK}),c.end())}catch(j){throw n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:A,operation:"chat",latency_ms:performance.now()-e,ttft_ms:h,stream:!0,input_tokens:0,output_tokens:w,cost_usd:0,status:"error",error_code:String(j.status??"unknown"),error_message:String(j.message).slice(0,500),...u,span_kind:"llm",conversation_turn:i,message_role:g,metadata:{auto_detected:Object.keys(l).length?l:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),c&&(c.setStatus({code:_e.SpanStatusCode.ERROR,message:j.message}),c.recordException(j),c.end()),j}}function wt(r,t={}){let n=r.chat.completions.create,e=te(t.guardrails,"chat");return r.chat.completions.create=async(s,a)=>{let o=F(),d=performance.now(),c=E(),u=p(),l=c?.traceId??p(),i=s.model??"openrouter\u6A21\u578B",g=null,m=null;if(o.configClient){let _=o.configClient.getModel("chat",i);if(_!==i){let R=i;i=_,s={...s,model:_},o.enqueue({event_id:p(),project_id:"",trace_id:l,span_id:u,parent_span_id:c?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:_,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:R,override_model:_},environment:o.environment,sdk_version:x})}}let h=c?.agentId?{agent_id:c.agentId,agent_name:c.agentName,agent_role:c.agentRole,agent_framework:c.agentFramework,parent_agent_id:c.parentAgentId}:{},w=re(s.messages??[],s.model),{conversation_turn:y,message_role:f}=ie(s.messages??[]),I=s.tools?.length?ce(s.tools):void 0,k=null,A=o.enableOTel?_e.trace.getTracer("zespan-sdk"):null;A&&(k=A.startSpan(`chat.completions ${i}`,{kind:_e.SpanKind.CLIENT,attributes:os(s,i)}));try{g=await Z(o,e,{text:JSON.stringify(s.messages??[]),phase:"pre",traceId:l,spanId:u,model:i,operation:"chat"});let _=await W({traceId:l,spanId:u,userId:c?.userId,sessionId:c?.sessionId,tags:c?.tags},()=>n.call(r.chat.completions,s,a));if(s.stream===!0)return k&&k.setAttribute("gen_ai.request.stream",!0),as(_,{client:o,t0:d,traceId:l,spanId:u,parent:c,params:s,otelSpan:k,agentCtx:h,autoDetected:w,conversation_turn:y,message_role:f,tool_definitions:I});let{prompt_tokens:S,completion_tokens:b,completion_tokens_details:C}=_.usage??{},j=C?.reasoning_tokens??0,O=_.model??s.model,{cost:v,source:P}=ss(_,O,S??0,b??0);_.pricing||(_.pricing={cost_usd:v,source:P});let N=_.choices?.[0]?.message?.content||"";m=await Z(o,e,{text:N,phase:"post",traceId:l,spanId:u,model:O,operation:"chat"});let q=oe(N,m);q!==N&&typeof _?.choices?.[0]?.message?.content=="string"&&(_.choices[0].message.content=q);let{tools_used:T,tool_call_args:D}=tt(_.choices??[]);return o.enqueue({event_id:p(),project_id:"",trace_id:l,span_id:u,parent_span_id:c?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:O,operation:"chat",latency_ms:performance.now()-d,stream:!1,input_tokens:S??0,output_tokens:b??0,cached_tokens:0,cost_usd:v,status:"success",finish_reason:_.choices?.[0]?.finish_reason??"",tools_used:T.length>0?T:_.choices?.[0]?.message?.tool_calls?.map(M=>M.function.name)??[],tool_call_args:Object.keys(D).length?D:void 0,prompt_hash:vt(JSON.stringify(s.messages)),...o.storePrompts?(()=>{let{systemPrompt:M,conversationMessages:B}=se(s.messages??[]);return{prompt_text:o.redactForStorage(B),completion_text:o.redactForStorage(q),...M?{system_prompt:o.redactForStorage(M)}:{}}})():{},...T.length>0&&N?{decision_rationale:N}:{},...h,span_kind:"llm",tool_definitions:I,conversation_turn:y,message_role:f,metadata:{usage:_.usage??null,pricing:_.pricing??{cost_usd:v,source:P},guardrails:{pre:g?{matched:g.results.length,modified:!!g.modifiedText}:null,post:m?{matched:m.results.length,modified:!!m.modifiedText}:null},auto_detected:Object.keys(w).length?w:void 0},user_id:c?.userId,session_id:c?.sessionId,tags:c?.tags,environment:o.environment,sdk_version:x}),k&&(k.setAttribute("gen_ai.usage.input_tokens",S??0),k.setAttribute("gen_ai.usage.output_tokens",b??0),k.setAttribute("gen_ai.usage.total_tokens",(S??0)+(b??0)),k.setAttribute("gen_ai.usage.reasoning_tokens",j),k.setAttribute("gen_ai.completion",_.choices?.[0]?.message?.content||""),k.setAttribute("gen_ai.response.finish_reason",_.choices?.[0]?.finish_reason??""),k.setAttribute("gen_ai.response.latency",performance.now()-d),k.setStatus({code:_e.SpanStatusCode.OK}),k.end()),_}catch(_){let R=_ instanceof V,S=R?"error":_.status===429?"rate_limited":_.status===408?"timeout":"error";throw o.enqueue({event_id:p(),project_id:"",trace_id:l,span_id:u,parent_span_id:c?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:s.model,operation:"chat",latency_ms:performance.now()-d,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:S,error_code:R?"guardrail_blocked":String(_.status??_.code??"unknown"),error_message:String(_.message).slice(0,500),...h,span_kind:"llm",conversation_turn:y,message_role:f,metadata:{auto_detected:Object.keys(w).length?w:void 0},user_id:c?.userId,session_id:c?.sessionId,tags:c?.tags,environment:o.environment,sdk_version:x}),k&&(k.setStatus({code:_e.SpanStatusCode.ERROR,message:_.message}),k.recordException(_),k.end()),_}},r}async function*un(r,t){let{client:n,t0:e,traceId:s,spanId:a,parent:o,model:d,operation:c,input:u}=t,l=0,i=0,g=0,m="",h,w="",y=[],f={},I="",k="",A=u?.messages??[],_=(u?.system??[]).map(S=>S.text??"").filter(Boolean),R=_.length?_.join(`
7
- `):void 0;try{for await(let S of r){if(h||(h=performance.now()-e,n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:d,operation:c,latency_ms:h,ttft_ms:h,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",finish_reason:"stream_start",span_kind:"llm",...n.storePrompts?{prompt_text:n.redactForStorage(A),...R?{system_prompt:n.redactForStorage(R)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x})),"contentBlockStart"in S){let b=S.contentBlockStart?.start?.toolUse;b?.name&&(I=b.name,k="",y.includes(I)||y.push(I))}else if("contentBlockDelta"in S){let b=S.contentBlockDelta?.delta;b?.text&&(w+=b.text),b?.toolUse?.input&&(k+=b.toolUse.input)}else if("contentBlockStop"in S){if(I){try{f[I]=JSON.parse(k)}catch{f[I]=k}I="",k=""}}else"metadata"in S&&S.metadata?.usage?(l=S.metadata.usage.inputTokens??l,i=S.metadata.usage.outputTokens??i,g=S.metadata.usage.cacheReadInputTokens??g):"messageStop"in S&&S.messageStop?.stopReason&&(m=S.messageStop.stopReason);yield S}n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:d,operation:c,latency_ms:performance.now()-e,ttft_ms:h,stream:!0,input_tokens:l,output_tokens:i,cached_tokens:g,cost_usd:0,status:"success",finish_reason:m||"stream_end",span_kind:"llm",tools_used:y.length?y:void 0,tool_call_args:Object.keys(f).length?f:void 0,...y.length>0&&w?{decision_rationale:w}:{},...n.storePrompts?{prompt_text:n.redactForStorage(A),completion_text:n.redactForStorage(w),...R?{system_prompt:n.redactForStorage(R)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x})}catch(S){throw n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:d,operation:c,latency_ms:performance.now()-e,ttft_ms:h,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:String(S.$metadata?.httpStatusCode??S.name??"unknown"),error_message:String(S.message).slice(0,500),user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),S}}function pn(r,t={}){let n=r,e=t.operation??"chat",s=te(t.guardrails,e),a=n.converse?.bind(n);a&&(n.converse=async(c,...u)=>{let l=F(),i=performance.now(),g=E(),m=p(),h=g?.traceId??p(),w=c.modelId??"amazon.nova-lite-v1:0";l.configClient&&(w=l.configClient.getModel(e,w),w!==c.modelId&&(c={...c,modelId:w}));let y=JSON.stringify(c.messages??[]);await Z(l,s,{text:y,phase:"pre",traceId:h,spanId:m,model:w,operation:e,agentName:g?.agentName});try{let f=await W({traceId:h,spanId:m,userId:g?.userId,sessionId:g?.sessionId,tags:g?.tags},()=>a(c,...u)),I=f.usage??{},k=f.output?.message?.content??[],A=k.filter(b=>b.text).map(b=>b.text).join(""),_=k.filter(b=>b.toolUse),R=_.map(b=>b.toolUse?.name).filter(Boolean),S={};for(let b of _)b.toolUse?.name&&(S[b.toolUse.name]=b.toolUse.input??{});return l.enqueue({event_id:p(),project_id:"",trace_id:h,span_id:m,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:w,operation:e,latency_ms:performance.now()-i,stream:!1,input_tokens:Number(I.inputTokens??0),output_tokens:Number(I.outputTokens??0),cached_tokens:Number(I.cacheReadInputTokens??0),status:"success",finish_reason:f.stopReason??"",span_kind:"llm",tools_used:R.length?R:void 0,tool_call_args:Object.keys(S).length?S:void 0,...l.storePrompts?{prompt_text:l.redactForStorage(c.messages??[]),completion_text:l.redactForStorage(A),...(()=>{let b=(c.system??[]).map(C=>C.text??"").filter(Boolean);return b.length?{system_prompt:l.redactForStorage(b.join(`
8
- `))}:{}})()}:{},...R.length>0&&A?{decision_rationale:A}:{},user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:x}),f}catch(f){throw l.enqueue({event_id:p(),project_id:"",trace_id:h,span_id:m,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:w,operation:e,latency_ms:performance.now()-i,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:String(f.$metadata?.httpStatusCode??f.name??"unknown"),error_message:String(f.message).slice(0,500),user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:x}),f}});let o=n.converseStream?.bind(n);o&&(n.converseStream=async(c,...u)=>{let l=F(),i=performance.now(),g=E(),m=p(),h=g?.traceId??p(),w=c.modelId??"amazon.nova-lite-v1:0",y=await W({traceId:h,spanId:m,userId:g?.userId,sessionId:g?.sessionId,tags:g?.tags},()=>o(c,...u));return{...y,stream:un(y.stream,{client:l,t0:i,traceId:h,spanId:m,parent:g,model:w,operation:e,input:c})}});let d=n.send?.bind(n);return d&&(n.send=async(c,...u)=>{if(!(c?.constructor?.name==="ConverseStreamCommand"||c?.$name==="ConverseStream"))return d(c,...u);let i=F(),g=performance.now(),m=E(),h=p(),w=m?.traceId??p(),y=c?.input?.modelId??"amazon.nova-lite-v1:0",f=await W({traceId:w,spanId:h,userId:m?.userId,sessionId:m?.sessionId,tags:m?.tags},()=>d(c,...u));return{...f,stream:un(f.stream,{client:i,t0:g,traceId:w,spanId:h,parent:m,model:y,operation:e,input:c.input})}}),r}function mn(r,t={}){let n=r,e=t.operation??"chat",s=te(t.guardrails,e),a=n.chat.complete.bind(n.chat);n.chat.complete=async(d,...c)=>{let u=F(),l=performance.now(),i=E(),g=p(),m=i?.traceId??p(),h=d.model??"mistral-small-latest";u.configClient&&(h=u.configClient.getModel(e,h),h!==d.model&&(d={...d,model:h}));let w=JSON.stringify(d.messages??[]);await Z(u,s,{text:w,phase:"pre",traceId:m,spanId:g,model:h,operation:e});try{let y=await W({traceId:m,spanId:g,userId:i?.userId,sessionId:i?.sessionId,tags:i?.tags},()=>a(d,...c)),f=y.model??h,I=y.usage??{},k=Number(I.promptTokens??0),A=Number(I.completionTokens??0),_=y.choices?.[0]?.finishReason??"",R=y.choices?.[0]?.message?.content??"",S=y.choices?.[0]?.message?.tool_calls??[],b=S.map(v=>v.function?.name).filter(Boolean),C={};for(let v of S)if(v.function?.name)try{C[v.function.name]=JSON.parse(v.function.arguments??"{}")}catch{C[v.function.name]={}}await Z(u,s,{text:R,phase:"post",traceId:m,spanId:g,model:f,operation:e});let{systemPrompt:j,conversationMessages:O}=se(d.messages??[]);return u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:f,operation:e,latency_ms:performance.now()-l,stream:!1,input_tokens:k,output_tokens:A,status:"success",finish_reason:_,span_kind:"llm",tools_used:b.length?b:void 0,tool_call_args:Object.keys(C).length?C:void 0,...u.storePrompts?{prompt_text:u.redactForStorage(O),completion_text:u.redactForStorage(R),...j?{system_prompt:u.redactForStorage(j)}:{}}:{},...b.length>0&&R?{decision_rationale:R}:{},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x}),y}catch(y){throw u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:h,operation:e,latency_ms:performance.now()-l,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_message:String(y.message).slice(0,500),user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x}),y}};let o=n.chat.stream?.bind(n.chat);return o&&(n.chat.stream=async function*(d,...c){let u=F(),l=performance.now(),i=E(),g=p(),m=i?.traceId??p(),h=d.model??"mistral-small-latest";u.configClient&&(h=u.configClient.getModel(e,h),h!==d.model&&(d={...d,model:h}));let w=0,y=0,f="",I,k="",A=[],_=[],{systemPrompt:R,conversationMessages:S}=se(d.messages??[]);try{let b=await W({traceId:m,spanId:g,userId:i?.userId,sessionId:i?.sessionId,tags:i?.tags},()=>o(d,...c));for await(let v of b){I||(I=performance.now()-l,u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:h,operation:e,latency_ms:I,ttft_ms:I,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",finish_reason:"stream_start",span_kind:"llm",...u.storePrompts?{prompt_text:u.redactForStorage(S),...R?{system_prompt:u.redactForStorage(R)}:{}}:{},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x}));let P=v.data?.choices?.[0]?.delta?.content;if(P&&(y++,k+=P),v.data?.usage&&(w=v.data.usage.promptTokens??w,y=v.data.usage.completionTokens??y),v.data?.choices?.[0]?.finishReason&&(f=v.data.choices[0].finishReason),v.data?.model&&(h=v.data.model),v.data?.choices?.[0]?.delta?.tool_calls)for(let N of v.data.choices[0].delta.tool_calls)_.push(N),N.function?.name&&!A.includes(N.function.name)&&A.push(N.function.name);yield v}let{tools_used:C,tool_call_args:j}=ke(_),O=C.length>0?C:A;u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:h,operation:e,latency_ms:performance.now()-l,ttft_ms:I,stream:!0,input_tokens:w,output_tokens:y,cost_usd:0,status:"success",finish_reason:f||"stream_end",span_kind:"llm",tools_used:O.length?O:void 0,tool_call_args:Object.keys(j).length?j:void 0,...O.length>0&&k?{decision_rationale:k}:{},...u.storePrompts?{prompt_text:u.redactForStorage(S),completion_text:u.redactForStorage(k),...R?{system_prompt:u.redactForStorage(R)}:{}}:{},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x})}catch(b){throw u.enqueue({event_id:p(),project_id:"",trace_id:m,span_id:g,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:h,operation:e,latency_ms:performance.now()-l,ttft_ms:I,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_message:String(b.message).slice(0,500),user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:u.environment,sdk_version:x}),b}}),r}var _n=require("crypto");var gn=r=>(0,_n.createHash)("sha256").update(r).digest("hex");async function*rs(r,t){let{client:n,t0:e,traceId:s,spanId:a,parent:o,params:d,model:c,operation:u}=t,l,i=0,g=0,m=0,h="",w="",y=c,f=[],I=[],{systemPrompt:k,conversationMessages:A}=se(d.messages??[]);try{for await(let b of r){l||(l=performance.now()-e,n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:y,operation:u,latency_ms:l,ttft_ms:l,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:gn(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(A),...k?{system_prompt:n.redactForStorage(k)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x,finish_reason:"stream_start",span_kind:"llm"}));let C=b.choices?.[0]?.delta?.content;if(C&&(g++,w+=C),b.choices?.[0]?.finish_reason&&(h=b.choices[0].finish_reason),b.model&&(y=b.model),b.usage&&(i=Number(b.usage.prompt_tokens||i||0),g=Number(b.usage.completion_tokens||g||0),m=Number(b.usage.prompt_tokens_details?.cached_tokens||m||0)),b.choices?.[0]?.delta?.tool_calls)for(let j of b.choices[0].delta.tool_calls)I.push(j),j.function?.name&&!f.includes(j.function.name)&&f.push(j.function.name);yield b}let{tools_used:_,tool_call_args:R}=ke(I),S=_.length>0?_:f;n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:y,operation:u,latency_ms:performance.now()-e,ttft_ms:l,stream:!0,input_tokens:i,output_tokens:g,cached_tokens:m,status:"success",finish_reason:h||"stream_end",tools_used:S.length?S:void 0,tool_call_args:Object.keys(R).length?R:void 0,...S.length>0&&w?{decision_rationale:w}:{},prompt_hash:gn(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(A),completion_text:n.redactForStorage(w),...k?{system_prompt:n.redactForStorage(k)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x,span_kind:"llm"})}catch(_){throw n.enqueue({event_id:p(),project_id:"",trace_id:s,span_id:a,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:y,operation:u,latency_ms:performance.now()-e,ttft_ms:l,stream:!0,input_tokens:0,output_tokens:g,cost_usd:0,status:"error",error_message:String(_.message).slice(0,500),user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:x}),_}}function fn(r,t={}){let n=r,e=n.chat.completions.create.bind(n.chat.completions),s=t.operation??"chat";return n.chat.completions.create=async(a,...o)=>{let d=F(),c=performance.now(),u=E(),l=p(),i=u?.traceId??p(),g=a.model??"llama-3.3-70b-versatile";d.configClient&&(g=d.configClient.getModel(s,g),g!==a.model&&(a={...a,model:g}));try{let m=await W({traceId:i,spanId:l,userId:u?.userId,sessionId:u?.sessionId,tags:u?.tags},()=>e(a,...o));if(a.stream)return rs(m,{client:d,t0:c,traceId:i,spanId:l,parent:u,params:a,model:g,operation:s});let h=m.usage??{},w=Number(h.prompt_tokens??0),y=Number(h.completion_tokens??0),f=m.choices?.[0]?.finish_reason??"",I=m.choices?.[0]?.message?.content??"",k=m.choices?.[0]?.message?.tool_calls??[],A=k.map(b=>b.function?.name).filter(Boolean),_={};for(let b of k)if(b.function?.name)try{_[b.function.name]=JSON.parse(b.function.arguments??"{}")}catch{_[b.function.name]={}}let{systemPrompt:R,conversationMessages:S}=se(a.messages??[]);return d.enqueue({event_id:p(),project_id:"",trace_id:i,span_id:l,parent_span_id:u?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:g,operation:s,latency_ms:performance.now()-c,stream:!1,input_tokens:w,output_tokens:y,status:"success",finish_reason:f,span_kind:"llm",tools_used:A.length?A:void 0,tool_call_args:Object.keys(_).length?_:void 0,...d.storePrompts?{prompt_text:d.redactForStorage(S),completion_text:d.redactForStorage(I),...R?{system_prompt:d.redactForStorage(R)}:{}}:{},...A.length>0&&I?{decision_rationale:I}:{},user_id:u?.userId,session_id:u?.sessionId,tags:u?.tags,environment:d.environment,sdk_version:x}),m}catch(m){throw d.enqueue({event_id:p(),project_id:"",trace_id:i,span_id:l,parent_span_id:u?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:g,operation:s,latency_ms:performance.now()-c,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_message:String(m.message).slice(0,500),user_id:u?.userId,session_id:u?.sessionId,tags:u?.tags,environment:d.environment,sdk_version:x}),m}},r}function hn(r,t={}){let n=require("openai").default??require("openai"),e=new n({baseURL:r.baseURL,apiKey:r.apiKey??"litellm"});return je(e,{...t,providerOverride:"litellm"})}var Sn=require("@langchain/core/callbacks/base");var vn=require("crypto");var yn=r=>(0,vn.createHash)("sha256").update(r).digest("hex"),kn=["AgentExecutor","ReactAgent","ToolCallingAgent"],In=["DynamicStructuredTool","StructuredTool","DynamicTool","Tool"],Fe=class extends Sn.BaseCallbackHandler{name="ZespanCallbackHandler";guardrailSettings=te(void 0,"chat");runs=new Map;constructor(t={}){super(),this.guardrailSettings=te(t.guardrails,"chat")}detectProvider(t){let n=t.toLowerCase();return/gpt|o1-|o3-|davinci|turbo|whisper|dall-e/i.test(n)?"openai":/claude/i.test(n)?"anthropic":/gemini|palm|bard/i.test(n)?"google":/llama|codellama/i.test(n)?"meta":/mistral|mixtral/i.test(n)?"mistralai":/deepseek/i.test(n)?"deepseek":/command/i.test(n)?"cohere":/qwen/i.test(n)?"alibaba":"langchain"}extractToolCalls(t){try{let n=t?.generations?.[0];if(!Array.isArray(n))return[];let e=n[0]?.message;if(!e)return[];let s=e.tool_calls;if(Array.isArray(s)&&s.length>0)return s.map(d=>({name:d.name??"unknown",args:d.args??{},id:d.id}));let a=e.additional_kwargs?.tool_calls;if(Array.isArray(a)&&a.length>0)return a.map(d=>({name:d.function?.name??"unknown",args:d.function?.arguments?JSON.parse(d.function.arguments):{},id:d.id}));let o=e.additional_kwargs?.function_call;return o?[{name:o.name??"unknown",args:o.arguments?JSON.parse(o.arguments):{}}]:[]}catch{return[]}}detectConversationInfo(t,n){let e=n?._zespan_message_count;if(typeof e=="number"&&e>0)return{turns:e,hasMemory:e>2};let s=n?.invocation_params?.messages;if(Array.isArray(s))return{turns:s.length,hasMemory:s.length>2};let o=(JSON.stringify(t).match(/"role"\s*:/g)||[]).length;return o>0?{turns:o,hasMemory:o>2}:{turns:t.length,hasMemory:!1}}detectAgentFromPrompts(t,n){try{let e=JSON.stringify(t)+JSON.stringify(n?.invocation_params?.messages??[])+JSON.stringify(n?._zespan_structured_messages??[]),s=[/you are (?:a |an |the )?([A-Z][A-Za-z]*(?:[_\s][A-Z][A-Za-z]*){0,3}(?:Agent|Bot|Assistant|AI|Specialist|Expert|Analyzer|Manager|Coordinator))/i,/act as (?:a |an |the )?([A-Z][A-Za-z]*(?:[_\s][A-Z][A-Za-z]*){0,3}(?:Agent|Bot|Assistant|AI))/i,/agent[_\s]?name["'\s:=]+["']?([A-Za-z][A-Za-z_\-]+)/i,/role["'\s:=]+["']?([A-Za-z]+(?:Agent|Bot|Assistant))/i,/name["'\s:=]+["']?([A-Za-z]+Agent)/i];for(let a of s){let o=e.match(a);if(o?.[1])return o[1].trim().replace(/[\s]+/g,"_")}return}catch{return}}detectPlanning(t,n){try{let e=t+" "+JSON.stringify(n);if(![/\bstep\s+\d+[:\s]/i,/\bfirst,?\s+(?:I|we|let)/i,/\bthen,?\s+(?:I|we)/i,/\bfinally,?\s+(?:I|we)/i,/\blet me think/i,/\blet'?s break (?:this |it )?down/i,/\bthink(?:ing)? step by step/i,/\bmy (?:plan|approach|strategy)/i,/\bI'?ll start by/i,/<thinking>/i,/<scratchpad>/i,/\bchain.of.thought/i].some(u=>u.test(e)))return{detected:!1};let o=/(?:step\s+\d+[:\s]|^\d+[\.\)]\s+)(.+)/gim,d=[],c;for(;(c=o.exec(t))!==null&&(c[1]&&d.push(c[1].trim().slice(0,200)),!(d.length>=10)););return{detected:!0,steps:d.length>0?d:void 0}}catch{return{detected:!1}}}extractCompletion(t){let n=t?.generations;if(!Array.isArray(n)||n.length===0)return"";let e=n[0];if(!Array.isArray(e)||e.length===0)return"";let s=e[0];if(typeof s?.text=="string")return s.text;let a=s?.message?.content;return typeof a=="string"?a:Array.isArray(a)?a.map(o=>typeof o?.text=="string"?o.text:"").filter(Boolean).join(`
9
- `):""}async handleChatModelStart(t,n,e,s,a,o,d,c){try{let u=n.map(i=>i.map(g=>{let m=g._getType?.()??g.role??"unknown",h=typeof g.content=="string"?g.content:JSON.stringify(g.content);return`${m}: ${h}`}).join(`
10
- `)),l=n[0]?.map(i=>({role:i._getType?.()??i.role??"unknown",content:typeof i.content=="string"?i.content:JSON.stringify(i.content),tool_calls:i.tool_calls??i.additional_kwargs?.tool_calls}));await this.handleLLMStart(t,u,e,s,{...a,_zespan_structured_messages:l,_zespan_message_count:n[0]?.length??0})}catch{}}async handleLLMStart(t,n,e,s,a){try{let o=E(),d=F(),c=s?this.runs.get(s):void 0,u=p();le(u);let l=c?.traceId??o?.traceId??p(),i=a?.invocation_params?.model??a?.invocation_params?.model_name??t.kwargs?.model??t.kwargs?.modelName??t.id?.[t.id.length-1]??"unknown",g=a?.invocation_params?.stream===!0,m=c?.spanKind==="agent"?c.agentId:void 0,h=c?.spanKind==="agent"?c.agentName:void 0;if(!h){let k=this.detectAgentFromPrompts(n,a);k&&(h=k,m=m??p())}let w=a?.invocation_params?.tools??a?.invocation_params?.functions??[],y=w.map(k=>k.function?.name??k.name??"unknown").filter(Boolean),f=this.detectConversationInfo(n,a),I=await Z(d,this.guardrailSettings,{text:JSON.stringify(n??[]),phase:"pre",traceId:l,spanId:u,model:i,operation:"chat"});this.runs.set(e,{t0:performance.now(),traceId:l,spanId:u,parentSpanId:c?.spanId??o?.spanId,model:i,agentId:m,agentName:h,spanKind:"llm",isStreaming:g,parent:o,prompts:n,structuredMessages:a?._zespan_structured_messages,invocationParams:a?.invocation_params,preGuardrailResult:I,toolsAvailable:y,toolSchemas:d.storePrompts?w:void 0,conversationTurns:f.turns,hasMemory:f.hasMemory})}catch(o){if(o instanceof V)throw o}}async handleLLMNewToken(t,n,e){try{let s=this.runs.get(e);if(!s||s.ttft!==void 0)return;s.ttft=performance.now()-s.t0;let a=F();a.enqueue({event_id:p(),project_id:"",trace_id:s.traceId,span_id:s.spanId,parent_span_id:s.parentSpanId,timestamp:new Date().toISOString(),provider:this.detectProvider(s.model),model:s.model,operation:"chat",latency_ms:s.ttft,ttft_ms:s.ttft,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",span_kind:"llm",agent_id:s.agentId,agent_name:s.agentName,prompt_hash:yn(JSON.stringify(s.prompts)),...a.storePrompts?(()=>{let{systemPrompt:o,conversationMessages:d}=se(s.structuredMessages??[]);return{prompt_text:a.redactForStorage(d.length?d:s.prompts),...o?{system_prompt:a.redactForStorage(o)}:{}}})():{},metadata:{invocation_params:s.invocationParams??null},user_id:s.parent?.userId,session_id:s.parent?.sessionId,tags:s.parent?.tags,environment:a.environment,sdk_version:x,finish_reason:"stream_start"})}catch{}}async handleLLMEnd(t,n){try{let e=this.runs.get(n);if(!e)return;ae(e.spanId),this.runs.delete(n);let s=F(),a=t.llmOutput?.tokenUsage?.promptTokens??t.llmOutput?.usageMetadata?.promptTokenCount??0,o=t.llmOutput?.tokenUsage?.completionTokens??t.llmOutput?.usageMetadata?.candidatesTokenCount??0,d=performance.now()-e.t0,c=this.extractCompletion(t),u=this.extractToolCalls(t),l=t.llmOutput?.tokenUsage?.reasoningTokens??t.llmOutput?.usage?.completion_tokens_details?.reasoning_tokens??t.llmOutput?.reasoningTokens??t.llmOutput?.usageMetadata?.thoughtsTokenCount??0,i=t.llmOutput?.tokenUsage?.cachedTokens??t.llmOutput?.usage?.prompt_tokens_details?.cached_tokens??t.llmOutput?.usageMetadata?.cachedContentTokenCount??0,g=this.detectPlanning(c,e.prompts),m=t.generations?.[0]?.[0]?.generationInfo?.finish_reason??t.generations?.[0]?.[0]?.generationInfo?.finishReason??t.llmOutput?.finish_reason??(e.isStreaming?"stream_end":"stop"),h=await Z(s,this.guardrailSettings,{text:c,phase:"post",traceId:e.traceId,spanId:e.spanId,model:e.model,operation:"chat"}),w=oe(c,h);s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:this.detectProvider(e.model),model:e.model,operation:"chat",latency_ms:d,ttft_ms:e.ttft,stream:e.isStreaming??!1,input_tokens:a,output_tokens:o,status:"success",span_kind:"llm",agent_id:e.agentId,agent_name:e.agentName,finish_reason:m,prompt_hash:yn(JSON.stringify(e.prompts)),tools_defined:e.toolsAvailable?.length?e.toolsAvailable:void 0,tools_used:u.length>0?u.map(y=>y.name):void 0,tool_calls:u.length>0?u:void 0,conversation_turns:e.conversationTurns,has_memory:e.hasMemory,reasoning_tokens:l>0?l:void 0,has_reasoning:l>0?!0:void 0,cached_tokens:i>0?i:void 0,has_planning:g.detected||void 0,planning_steps:g.steps,...s.storePrompts?(()=>{let{systemPrompt:y,conversationMessages:f}=se(e.structuredMessages??[]);return{prompt_text:s.redactForStorage(f.length?f:e.prompts),completion_text:s.redactForStorage(w),...y?{system_prompt:s.redactForStorage(y)}:{}}})():{},metadata:{usage:t?.llmOutput?.tokenUsage??null,llm_output:t?.llmOutput??null,invocation_params:e.invocationParams??null,guardrails:{pre:e.preGuardrailResult?{matched:e.preGuardrailResult.results.length,modified:!!e.preGuardrailResult.modifiedText}:null,post:h?{matched:h.results.length,modified:!!h.modifiedText}:null}},user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}catch{}}async handleLLMError(t,n){try{let e=this.runs.get(n);if(!e)return;ae(e.spanId),this.runs.delete(n);let s=F();s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:this.detectProvider(e.model),model:e.model,operation:"chat",latency_ms:performance.now()-e.t0,ttft_ms:e.ttft,stream:e.isStreaming??!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",span_kind:"llm",agent_id:e.agentId,agent_name:e.agentName,error_code:t instanceof V?"guardrail_blocked":void 0,error_message:String(t.message).slice(0,1e3),user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}catch{}}async handleChainStart(t,n,e,s){try{let a=E(),o=s?this.runs.get(s):void 0,d=p(),c=o?.traceId??a?.traceId??p(),u=Array.isArray(t?.id)?t.id:[],l=u.some(k=>kn.includes(k)),i=!l&&u.some(k=>In.includes(k)),g=l?"agent":i?"tool":"general",m=l?p():void 0,h=l?u.find(k=>kn.includes(k))??void 0:void 0,w=i?t.name??t.kwargs?.name??u.find(k=>In.includes(k)):void 0,y=i?JSON.stringify(n):void 0,f=o?.spanKind==="agent"?o.agentId:void 0,I=o?.spanKind==="agent"?o.agentName:void 0;this.runs.set(e,{t0:performance.now(),traceId:c,spanId:d,parentSpanId:o?.spanId??a?.spanId,model:"",agentId:m??o?.agentId,agentName:h??o?.agentName,spanKind:g,toolName:w,toolInput:y,prompts:[],parent:a,delegatedFromAgentId:f,delegatedFromAgentName:I})}catch{}}async handleChainEnd(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();if(e.spanKind==="tool"){let a=t?.output??t,o=typeof a=="string"?a:JSON.stringify(a);s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:`tool.${e.toolName??"unknown"}`,latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"success",span_kind:"tool",agent_id:e.agentId,agent_name:e.agentName,tools_used:e.toolName?[e.toolName]:[],tool_call_id:e.spanId,tool_call_args:e.toolInput?JSON.parse(e.toolInput):void 0,tool_call_result:o.slice(0,10240),stream:!1,finish_reason:"stop",user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}else s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:"chain",latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"success",span_kind:e.spanKind,agent_id:e.agentId,agent_name:e.agentName,stream:!1,finish_reason:"stop",delegation_from_agent_id:e.delegatedFromAgentId,delegation_from_agent_name:e.delegatedFromAgentName,user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}catch{}}async handleChainError(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:e.spanKind==="tool"?`tool.${e.toolName??"unknown"}`:"chain",latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"error",span_kind:e.spanKind,agent_id:e.agentId,agent_name:e.agentName,tools_used:e.spanKind==="tool"&&e.toolName?[e.toolName]:void 0,tool_call_id:e.spanKind==="tool"?e.spanId:void 0,tool_call_args:e.spanKind==="tool"&&e.toolInput?JSON.parse(e.toolInput):void 0,error_message:String(t?.message??t).slice(0,1e3),stream:!1,delegation_from_agent_id:e.delegatedFromAgentId,delegation_from_agent_name:e.delegatedFromAgentName,user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}catch{}}async handleToolStart(t,n,e,s){try{let a=E(),o=s?this.runs.get(s):void 0,d=p(),c=o?.traceId??a?.traceId??p(),u=t.id?.[t.id.length-1]??"unknown_tool",l=t.name||t.kwargs?.name||u;this.runs.set(e,{t0:performance.now(),traceId:c,spanId:d,parentSpanId:o?.spanId??a?.spanId,model:"",agentId:o?.agentId,agentName:o?.agentName,spanKind:"tool",toolName:l,toolInput:n,prompts:[],parent:a})}catch{}}async handleToolEnd(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F(),o=(typeof t=="string"?t:JSON.stringify(t)).slice(0,10240);s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:`tool.${e.toolName??"unknown"}`,latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"success",span_kind:"tool",agent_id:e.agentId,agent_name:e.agentName,tools_used:e.toolName?[e.toolName]:[],tool_call_id:e.spanId,tool_call_args:e.toolInput?{input:e.toolInput}:void 0,tool_call_result:o,stream:!1,finish_reason:"stop",user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}catch{}}async handleToolError(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:`tool.${e.toolName??"unknown"}`,latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"error",span_kind:"tool",agent_id:e.agentId,agent_name:e.agentName,tools_used:e.toolName?[e.toolName]:[],error_message:String(t?.message??t).slice(0,1e3),stream:!1,user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}catch{}}async handleAgentAction(t,n){try{let e=this.runs.get(n),s=E(),a=F(),o=e?.traceId??s?.traceId??p(),d=p(),c=[t?.tool??"",typeof t?.toolInput=="string"?t.toolInput:JSON.stringify(t?.toolInput??""),t?.log??""].join(" | ");a.enqueue({event_id:p(),project_id:"",trace_id:o,span_id:d,parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:"planning",latency_ms:0,input_tokens:0,output_tokens:0,status:"success",span_kind:"planning",agent_id:e?.agentId,agent_name:e?.agentName,planning_steps:[c],...t?.log?{decision_rationale:t.log}:{},stream:!1,user_id:e?.parent?.userId??s?.userId,session_id:e?.parent?.sessionId??s?.sessionId,tags:e?.parent?.tags??s?.tags,environment:a.environment,sdk_version:x})}catch{}}async handleRetrieverStart(t,n,e,s){try{let a=E(),o=s?this.runs.get(s):void 0,d=p(),c=o?.traceId??a?.traceId??p();this.runs.set(e,{t0:performance.now(),traceId:c,spanId:d,parentSpanId:o?.spanId??a?.spanId,model:"",agentId:o?.agentId,agentName:o?.agentName,spanKind:"retriever",query:n,prompts:[],parent:a})}catch{}}async handleRetrieverEnd(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:"retriever",latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"success",span_kind:"retriever",agent_id:e.agentId,agent_name:e.agentName,stream:!1,finish_reason:"stop",metadata:{"zespan.rag.contexts":Array.isArray(t)?t:[]},user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}catch{}}async handleRetrieverError(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();s.enqueue({event_id:p(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:"retriever",latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"error",span_kind:"retriever",agent_id:e.agentId,agent_name:e.agentName,error_message:String(t?.message??t).slice(0,1e3),stream:!1,user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:x})}catch{}}};function wn(r){let t=r?.model;return typeof t=="string"?t:t&&typeof t=="object"?t.model??t.name??"gemini-2.5-flash":"gemini-2.5-flash"}function is(r){let t=r??{};return{input:Number(t.promptTokenCount??t.inputTokenCount??0),output:Number(t.candidatesTokenCount??t.outputTokenCount??0),cached:Number(t.cachedContentTokenCount??0),reasoning:Number(t.thoughtsTokenCount??t.reasoningTokenCount??0)}}var Ee=class{agentStates=new Map;pendingModelCalls=new Map;toolCallStates=new Map;agentKey(t,n){return`${t}:${n}`}getParentAgentState(t,n){if(n)return this.agentStates.get(this.agentKey(t,n))}beforeAgentCallback=t=>{try{let n=t.invocationId,e=t.agentName,s=t.invocationContext?.agent?.parentAgent?.name,a=E(),o=this.getParentAgentState(n,s),d=o?.traceId??a?.traceId??p(),c=p(),u=o?.spanId??a?.spanId,l=p(),i=wn(t.invocationContext?.agent),g=t.userId||a?.userId,m=t.sessionId||a?.sessionId;this.agentStates.set(this.agentKey(n,e),{t0:performance.now(),traceId:d,spanId:c,parentSpanId:u,agentId:l,agentName:e,model:i,userId:g,sessionId:m,parentAgentId:o?.agentId,parentAgentName:s})}catch{}};afterAgentCallback=t=>{try{let n=t.invocationId,e=t.agentName,s=this.agentKey(n,e),a=this.agentStates.get(s);if(!a)return;this.agentStates.delete(s);let o=!a.parentAgentName,d=F();d.enqueue({event_id:p(),project_id:"",trace_id:a.traceId,span_id:a.spanId,parent_span_id:a.parentSpanId,timestamp:new Date().toISOString(),provider:"google-adk",model:a.model,operation:`agent.${e}`,span_kind:"agent",agent_id:a.agentId,agent_name:e,agent_role:o?"coordinator":"specialist",agent_framework:"google-adk",parent_agent_id:a.parentAgentId,delegation_from_agent_id:a.parentAgentId,delegation_from_agent_name:a.parentAgentName,latency_ms:performance.now()-a.t0,stream:!1,input_tokens:0,output_tokens:0,status:"success",user_id:a.userId,session_id:a.sessionId,environment:d.environment,sdk_version:x})}catch{}};beforeModelCallback=({context:t,request:n})=>{try{let e=t.invocationId,s=t.agentName,a=this.agentStates.get(this.agentKey(e,s)),o=a?.traceId??p(),d=wn(t.invocationContext?.agent),c=n?.config?.systemInstruction,u;if(c){let g=typeof c=="string"?c:(c?.parts??[]).filter(m=>m?.text).map(m=>m.text).join("");g&&(u=g)}let l,i=n?.contents??[];if(i.length){let g=i.map(m=>{let h=m?.role??"user",w=(m?.parts??[]).filter(y=>typeof y?.text=="string"&&!y.thought).map(y=>y.text).join("");return w?`${h}: ${w}`:""}).filter(Boolean).join(`
11
- `);g&&(l=g)}this.pendingModelCalls.set(this.agentKey(e,s),{t0:performance.now(),spanId:p(),traceId:o,parentSpanId:a?.spanId??"",model:d,agentId:a?.agentId,agentName:s,userId:a?.userId??t.userId,sessionId:a?.sessionId??t.sessionId,promptText:l,systemPrompt:u})}catch{}};afterModelCallback=({context:t,response:n})=>{try{let e=t.invocationId,s=t.agentName,a=this.agentKey(e,s),o=this.pendingModelCalls.get(a);if(!o)return;this.pendingModelCalls.delete(a);let{input:d,output:c,cached:u,reasoning:l}=is(n?.usageMetadata),i=n?.content?.parts??[],g=i.filter(w=>typeof w?.text=="string"&&!w.thought).map(w=>w.text).join(""),m=i.filter(w=>w?.functionCall?.name).map(w=>w.functionCall.name),h=F();h.enqueue({event_id:p(),project_id:"",trace_id:o.traceId,span_id:o.spanId,parent_span_id:o.parentSpanId,timestamp:new Date().toISOString(),provider:"google",model:o.model,operation:"chat",span_kind:"llm",agent_id:o.agentId,agent_name:o.agentName,agent_framework:"google-adk",latency_ms:performance.now()-o.t0,stream:!1,input_tokens:d,output_tokens:c,cached_tokens:u||void 0,reasoning_tokens:l||void 0,finish_reason:n?.finishReason??"stop",tools_used:m.length?m:void 0,status:n?.errorCode?"error":"success",error_message:n?.errorMessage,...h.storePrompts&&o.systemPrompt?{system_prompt:h.redactForStorage(o.systemPrompt)}:{},...h.storePrompts&&o.promptText?{prompt_text:h.redactForStorage(o.promptText)}:{},...h.storePrompts&&g?{completion_text:h.redactForStorage(g)}:{},user_id:o.userId,session_id:o.sessionId,environment:h.environment,sdk_version:x})}catch{}};beforeToolCallback=({tool:t,args:n,context:e})=>{try{let s=e.invocationId,a=e.agentName,o=e.functionCallId??p(),d=this.agentStates.get(this.agentKey(s,a));this.toolCallStates.set(o,{t0:performance.now(),spanId:p(),traceId:d?.traceId??p(),parentSpanId:d?.spanId??"",toolName:t?.name??"unknown_tool",args:n??{},agentId:d?.agentId,agentName:a,userId:d?.userId??e.userId,sessionId:d?.sessionId??e.sessionId})}catch{}};afterToolCallback=({tool:t,args:n,context:e,response:s})=>{try{let a=e.functionCallId??"",o=this.toolCallStates.get(a);if(!o)return;this.toolCallStates.delete(a);let d=F();d.enqueue({event_id:p(),project_id:"",trace_id:o.traceId,span_id:o.spanId,parent_span_id:o.parentSpanId,timestamp:new Date().toISOString(),provider:"google-adk",model:"",operation:`tool.${o.toolName}`,span_kind:"tool",agent_id:o.agentId,agent_name:o.agentName,agent_framework:"google-adk",latency_ms:performance.now()-o.t0,stream:!1,input_tokens:0,output_tokens:0,status:"success",tools_used:[o.toolName],tool_call_id:a,tool_call_args:o.args,tool_call_result:JSON.stringify(s??{}).slice(0,10240),user_id:o.userId,session_id:o.sessionId,environment:d.environment,sdk_version:x})}catch{}};get callbacks(){return{beforeAgentCallback:this.beforeAgentCallback,afterAgentCallback:this.afterAgentCallback,beforeModelCallback:this.beforeModelCallback,afterModelCallback:this.afterModelCallback,beforeToolCallback:this.beforeToolCallback,afterToolCallback:this.afterToolCallback}}};var Cn=require("crypto");var bt=r=>(0,Cn.createHash)("sha256").update(typeof r=="string"?r:JSON.stringify(r)).digest("hex");function cs(r){return r?.model??r?.config?.model??r?.llmConfig?.model??r?.generativeModel?.model??"gemini-2.5-flash"}function xn(r){let t=r?.usageMetadata??r?.usage_metadata??{},n=r?.usage??{};return{input:Number(t.inputTokenCount??t.promptTokenCount??n.input_tokens??n.prompt_tokens??0),output:Number(t.outputTokenCount??t.candidatesTokenCount??n.output_tokens??n.completion_tokens??0),cached:Number(t.cachedContentTokenCount??n.cached_tokens??0),reasoning:Number(t.reasoningTokenCount??t.thinking_token_count??n.reasoning_tokens??0)}}function ds(r){if(typeof r?.text=="string")return r.text;if(typeof r?.output=="string")return r.output;let n=(r?.candidates?.[0]?.content?.parts??r?.content?.parts??[]).map(e=>typeof e?.text=="string"?e.text:"").filter(Boolean).join("");return n||(r&&typeof r=="object"?JSON.stringify(r):"")}function ls(r){let t=[];try{let n=r?.candidates?.[0]?.content?.parts??r?.content?.parts??[];for(let e of n)e?.functionCall?.name&&t.push({name:e.functionCall.name,args:e.functionCall.args??{}});for(let e of r?.toolCalls??[])e?.name&&t.push({name:e.name,args:e.args??e.arguments??{}})}catch{}return t}function Tn(r){if(r instanceof V)return"guardrail_blocked";let t=String(r?.message??"").toLowerCase();if(/rate.?limit|quota|429/.test(t))return"rate_limited";if(/context.?length|too.?long|max.?token/.test(t))return"context_length";if(/timeout|timed?.?out/.test(t))return"timeout";if(/safety|blocked|harm/.test(t))return"content_filter"}function Ge(r,t={}){let n=r;if(typeof n?.run!="function")return r;let e=n.run.bind(n),s=te(t.guardrails,"agent"),a=t.agentName??n.name??"ADKAgent",o=t.agentRole??(n.subAgents?.length?"coordinator":"specialist"),d=cs(n);return t.traceSubAgents!==!1&&Array.isArray(n.subAgents)&&(n.subAgents=n.subAgents.map(c=>Ge(c,{...t,agentRole:"specialist",traceSubAgents:!0}))),n.run=async(c,u)=>{let l=F(),i=performance.now(),g=E(),m=p(),h=p(),w=g?.traceId??p(),y=t.sessionId??g?.sessionId,f=typeof c=="string"?c:JSON.stringify(c??"");return W({traceId:w,spanId:h,userId:g?.userId,sessionId:y,tags:g?.tags,agentId:m,agentName:a,agentRole:o,agentFramework:"google-adk",parentAgentId:g?.agentId},async()=>{try{let I=await Z(l,s,{text:f,phase:"pre",traceId:w,spanId:h,model:d,operation:"agent"}),k=await e(c,u),{input:A,output:_,cached:R,reasoning:S}=xn(k),b=ds(k),C=ls(k),j=k?.candidates?.[0]?.finishReason??k?.finish_reason,O=await Z(l,s,{text:b,phase:"post",traceId:w,spanId:h,model:d,operation:"agent"}),v=oe(b,O);return l.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:d,operation:"agent",span_kind:"agent",agent_id:m,agent_name:a,agent_role:o,agent_framework:"google-adk",parent_agent_id:g?.agentId,delegation_from_agent_id:g?.agentId,delegation_from_agent_name:g?.agentName,latency_ms:performance.now()-i,stream:!1,input_tokens:A,output_tokens:_,cached_tokens:R||void 0,reasoning_tokens:S||void 0,status:"success",finish_reason:j,tools_used:C.length?C.map(P=>P.name):void 0,tool_call_args:C.length?Object.fromEntries(C.map(P=>[P.name,P.args])):void 0,prompt_hash:bt(f),...l.storePrompts?{prompt_text:l.redactForStorage(f),completion_text:l.redactForStorage(v)}:{},...C.length>0&&b?{decision_rationale:b}:{},user_id:g?.userId,session_id:y,tags:g?.tags,environment:l.environment,sdk_version:x,metadata:{guardrails:{pre:I?{matched:I.results.length,modified:!!I.modifiedText}:null,post:O?{matched:O.results.length,modified:!!O.modifiedText}:null}}}),k}catch(I){throw l.enqueue({event_id:p(),project_id:"",trace_id:w,span_id:h,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:d,operation:"agent",span_kind:"agent",agent_id:m,agent_name:a,agent_role:o,agent_framework:"google-adk",parent_agent_id:g?.agentId,latency_ms:performance.now()-i,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:Tn(I),error_message:String(I?.message??I).slice(0,500),user_id:g?.userId,session_id:y,tags:g?.tags,environment:l.environment,sdk_version:x}),I}})},r}function rt(r,t={}){let n=r;if(typeof n?.runEphemeral=="function"){let e=n.runEphemeral.bind(n);n.runEphemeral=s=>bn(e(s),s,t)}if(typeof n?.run=="function"){let e=n.run.bind(n);n.run=s=>bn(e(s),s,t)}return r}async function*bn(r,t,n){let e=F(),s=E(),a=s?.traceId??p(),o=p(),d=p(),c=performance.now(),u=n.agentName??"ADKAgent",l=n.agentRole??"coordinator",i=n.model??"gemini-2.5-flash",g=t?.userId??s?.userId,m=n.sessionId??t?.sessionId??s?.sessionId,h=(t?.newMessage?.parts??[]).map(S=>typeof S?.text=="string"?S.text:"").filter(Boolean).join(""),w=new Map,y=new Map,f=new Set,I="",k=0,A=0,_=0,R=0;le(o);try{yield*W({traceId:a,spanId:o,userId:g,sessionId:m,tags:s?.tags,agentId:d,agentName:u,agentRole:l,agentFramework:"google-adk",parentAgentId:s?.agentId},async function*(){for await(let S of r){k++;let b=S.author??u;if(b!=="user"){b!==u&&!f.has(b)&&e.enqueue({event_id:p(),project_id:"",trace_id:a,span_id:p(),parent_span_id:o,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:`handoff.${u}\u2192${b}`,span_kind:"handoff",agent_name:b,agent_role:"specialist",agent_framework:"google-adk",delegation_from_agent_id:d,delegation_from_agent_name:u,delegation_reason:`delegated to ${b}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",user_id:g,session_id:m,tags:s?.tags,environment:e.environment,sdk_version:x}),f.add(b),w.has(b)||(w.set(b,{spanId:p(),agentId:p(),t0:performance.now()}),y.set(b,{input:0,output:0,cached:0,reasoning:0}));let C=w.get(b),j=xn(S);if(j.input>0||j.output>0){let N=y.get(b);N.input+=j.input,N.output+=j.output,N.cached+=j.cached,N.reasoning+=j.reasoning,A+=j.input,_+=j.output,R+=j.cached}let O=S.content?.parts??[];for(let N of O){let q=N?.functionCall;if(!q?.name)continue;let T=p();e.enqueue({event_id:p(),project_id:"",trace_id:a,span_id:T,parent_span_id:C.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:`tool.${q.name}`,span_kind:"tool",agent_id:C.agentId,agent_name:b,agent_framework:"google-adk",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",tools_used:[q.name],tool_call_id:T,tool_call_args:q.args??{},user_id:g,session_id:m,tags:s?.tags,environment:e.environment,sdk_version:x})}let v=O.filter(N=>typeof N?.text=="string"&&!N.thought).map(N=>N.text).join("");if(v&&(I+=v),typeof S.isFinalResponse=="function"?S.isFinalResponse():!!S.isFinalResponse||S.actions?.stateDelta!==void 0||S.turnComplete===!0){let N=O.map(D=>D?.functionCall?.name).filter(Boolean),q=O.filter(D=>typeof D?.text=="string"&&!D.thought).map(D=>D.text).join(""),T=y.get(b)??{input:0,output:0,cached:0,reasoning:0};e.enqueue({event_id:p(),project_id:"",trace_id:a,span_id:C.spanId,parent_span_id:o,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:`agent.${b}`,span_kind:"agent",agent_id:C.agentId,agent_name:b,agent_role:b===u?l:"specialist",agent_framework:"google-adk",parent_agent_id:d,latency_ms:performance.now()-C.t0,stream:!1,input_tokens:T.input,output_tokens:T.output,cached_tokens:T.cached||void 0,reasoning_tokens:T.reasoning||void 0,status:"success",tools_used:N.length?N:void 0,prompt_hash:h?bt(h):void 0,...e.storePrompts&&v?{completion_text:e.redactForStorage(v)}:{},...N.length>0&&q?{decision_rationale:q}:{},user_id:g,session_id:m,tags:s?.tags,environment:e.environment,sdk_version:x}),w.delete(b),y.delete(b)}}yield S}}),e.enqueue({event_id:p(),project_id:"",trace_id:a,span_id:o,parent_span_id:s?.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:"agent.run",span_kind:"agent",agent_id:d,agent_name:u,agent_role:l,agent_framework:"google-adk",parent_agent_id:s?.agentId,latency_ms:performance.now()-c,stream:!1,input_tokens:A,output_tokens:_,cached_tokens:R||void 0,status:"success",prompt_hash:h?bt(h):void 0,...e.storePrompts?{prompt_text:e.redactForStorage(h),completion_text:e.redactForStorage(I)}:{},user_id:g,session_id:m,tags:s?.tags,environment:e.environment,sdk_version:x,metadata:{eventCount:k,agentsThatRan:[...f]}}),ae(o)}catch(S){throw ae(o),e.enqueue({event_id:p(),project_id:"",trace_id:a,span_id:o,parent_span_id:s?.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:"agent.run",span_kind:"agent",agent_id:d,agent_name:u,agent_role:l,agent_framework:"google-adk",parent_agent_id:s?.agentId,latency_ms:performance.now()-c,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:Tn(S),error_message:String(S?.message??S).slice(0,500),user_id:g,session_id:m,tags:s?.tags,environment:e.environment,sdk_version:x}),S}}function Ct(r){let{coordinator:t,runner:n,agentName:e,agentRole:s,model:a,...o}=r,d=Ge(t,{...o,agentName:e??t?.name,agentRole:s??"coordinator",traceSubAgents:!0}),c=rt(n,{agentName:e??t?.name,agentRole:s??"coordinator",model:a});return{coordinator:d,runner:c}}var xt=Ge;var On=require("@opentelemetry/sdk-trace-node"),Ot=require("@opentelemetry/core");function us(){try{return F()}catch{return null}}var At=class{export(t,n){let e=us();if(!e){n({code:Ot.ExportResultCode.SUCCESS});return}try{for(let s of t){let{name:a}=s;if(!a.startsWith("ai."))continue;let o=s.attributes,d=E(),c=s.spanContext().spanId,u=s.spanContext().traceId,l=s.duration[0]*1e3+s.duration[1]/1e6,i=new Date(s.startTime[0]*1e3+s.startTime[1]/1e6).toISOString(),g=s.status.code===2,m={event_id:p(),project_id:"",trace_id:d?.traceId??u,span_id:c,parent_span_id:d?.spanId,timestamp:i,provider:String(o["ai.model.provider"]??"unknown"),model:String(o["ai.model.id"]??"unknown"),latency_ms:l,stream:!1,status:g?"error":"success",environment:e.environment,sdk_version:x};a==="ai.generateText"||a==="ai.generateText.doGenerate"?(ae(c),e.enqueue({...m,operation:"generateText",input_tokens:Number(o["ai.usage.promptTokens"]??0),output_tokens:Number(o["ai.usage.completionTokens"]??0),finish_reason:String(o["ai.response.finishReason"]??""),span_kind:"llm",...e.storePrompts&&o["ai.prompt"]?{prompt_text:e.redactForStorage(String(o["ai.prompt"]))}:{},...e.storePrompts&&o["ai.response.text"]?{completion_text:e.redactForStorage(String(o["ai.response.text"]))}:{}})):a==="ai.streamText"||a==="ai.streamText.doStream"?(ae(c),e.enqueue({...m,operation:"streamText",stream:!0,input_tokens:Number(o["ai.usage.promptTokens"]??0),output_tokens:Number(o["ai.usage.completionTokens"]??0),finish_reason:String(o["ai.response.finishReason"]??""),ttft_ms:o["ai.response.msToFirstChunk"]!==void 0?Number(o["ai.response.msToFirstChunk"]):void 0,span_kind:"llm"})):a==="ai.generateObject"||a==="ai.generateObject.doGenerate"?(ae(c),e.enqueue({...m,operation:"generateObject",input_tokens:Number(o["ai.usage.promptTokens"]??0),output_tokens:Number(o["ai.usage.completionTokens"]??0),span_kind:"general"})):a==="ai.toolCall"?e.enqueue({...m,provider:"vercel-ai",model:"tool",operation:`tool.${String(o["ai.toolCall.name"]??"unknown")}`,input_tokens:0,output_tokens:0,span_kind:"tool",tools_used:o["ai.toolCall.name"]?[String(o["ai.toolCall.name"])]:[]}):(a==="ai.embed"||a==="ai.embedMany")&&e.enqueue({...m,operation:a==="ai.embed"?"embed":"embedMany",input_tokens:Number(o["ai.usage.tokens"]??0),output_tokens:0,span_kind:"embedding"})}}catch{}n({code:Ot.ExportResultCode.SUCCESS})}shutdown(){return Promise.resolve()}},Rt=class{exporter;constructor(t){this.exporter=t}onStart(t,n){t.name?.startsWith("ai.")&&le(t.spanContext().spanId)}onEnd(t){t.name.startsWith("ai.")&&ae(t.spanContext().spanId),this.exporter.export([t],()=>{})}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},it=null,Tt=null;function ct(){return it||(it=new On.NodeTracerProvider,it.addSpanProcessor(new Rt(new At)),Tt=it.getTracer("zespan-vercel-ai")),{tracer:Tt,telemetry:{isEnabled:!0,tracer:Tt}}}function Nt(){return ct().telemetry}function qe(){try{return F()}catch{return null}}function ps(r){let t=r.toLowerCase();return/gpt|o1-|o3-|davinci|turbo|whisper|dall-e/i.test(t)?"openai":/claude/i.test(t)?"anthropic":/gemini|palm|bard/i.test(t)?"google":/llama|codellama/i.test(t)?"meta":/mistral|mixtral/i.test(t)?"mistralai":/deepseek/i.test(t)?"deepseek":/command/i.test(t)?"cohere":/qwen/i.test(t)?"alibaba":"unknown"}var Ke=class{runs=new Map;guardrailSettings;constructor(t={}){this.guardrailSettings=te(t.guardrails,"chat")}_onLLMStart=async t=>{let n=t.id??p(),e=E(),s=p();le(s);let a=t.detail?.llm?.metadata?.model_name??t.detail?.model??"unknown",o=e?.traceId??p(),d=JSON.stringify(t.detail?.messages??t.detail?.prompt??t.detail?.input??""),c;try{let u=qe();u&&d&&(c=await Z(u,this.guardrailSettings,{text:d,phase:"pre",traceId:o,spanId:s,model:a,operation:"chat"}))}catch(u){if(u instanceof V)throw u}this.runs.set(n,{t0:performance.now(),traceId:o,spanId:s,parentSpanId:e?.spanId,model:a,preGuardrailResult:c,promptText:d})};_onLLMEnd=async t=>{let n=this.runs.get(t.id??"");if(!n)return;this.runs.delete(t.id),ae(n.spanId);let e=qe();if(!e)return;let s=t.detail?.response??t.detail?.chunk??{},a=s.usage??s.raw?.usage??{},o=(typeof s.text=="string"?s.text:null)??(typeof s.message?.content=="string"?s.message.content:null)??"",d=o,c;if(o)try{c=await Z(e,this.guardrailSettings,{text:o,phase:"post",traceId:n.traceId,spanId:n.spanId,model:n.model,operation:"chat"}),d=oe(o,c)}catch(l){l instanceof V||(c=void 0)}let u=n.preGuardrailResult;try{e.enqueue({event_id:p(),project_id:"",trace_id:n.traceId,span_id:n.spanId,parent_span_id:n.parentSpanId,timestamp:new Date().toISOString(),provider:ps(n.model),model:n.model,operation:"chat",latency_ms:performance.now()-n.t0,ttft_ms:n.ttft,stream:!1,input_tokens:a.promptTokens??a.prompt_tokens??0,output_tokens:a.completionTokens??a.completion_tokens??0,finish_reason:s.finishReason??s.finish_reason??"",status:"success",span_kind:"llm",agent_id:E()?.agentId,agent_name:E()?.agentName,...e.storePrompts?{prompt_text:e.redactForStorage(n.promptText??""),completion_text:e.redactForStorage(d)}:{},metadata:{guardrails:{pre:u?{matched:u.results.length,modified:!!u.modifiedText}:null,post:c?{matched:c.results.length,modified:!!c.modifiedText}:null}},environment:e.environment,sdk_version:x})}catch{}};_onLLMStream=t=>{let n=this.runs.get(t.id??"");n&&n.ttft===void 0&&(n.ttft=performance.now()-n.t0)};_onToolCall=t=>{let n=qe();if(!n)return;let e=E(),s=t.detail?.toolCall?.name??t.detail?.name??"";try{n.enqueue({event_id:p(),project_id:"",trace_id:e?.traceId??p(),span_id:p(),parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"llamaindex",model:"",operation:`tool.${s||"unknown"}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",span_kind:"tool",tools_used:s?[s]:[],agent_id:e?.agentId,agent_name:e?.agentName,environment:n.environment,sdk_version:x})}catch{}};_onToolResult=t=>{let n=qe();if(!n)return;let e=E(),s=t.detail?.toolCall?.name??t.detail?.name??"",a=t.detail?.result??t.detail?.toolResult??"";try{n.enqueue({event_id:p(),project_id:"",trace_id:e?.traceId??p(),span_id:p(),parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"llamaindex",model:"",operation:`tool.${s||"unknown"}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",span_kind:"tool",tools_used:s?[s]:[],tool_call_result:String(a).slice(0,10240),agent_id:e?.agentId,agent_name:e?.agentName,environment:n.environment,sdk_version:x})}catch{}};_onAgentStart=t=>{let n=t.id??p(),e=E();this.runs.set(`agent-${n}`,{t0:performance.now(),traceId:e?.traceId??p(),spanId:p(),parentSpanId:e?.spanId,model:"agent",agentName:t.detail?.agentName??e?.agentName??""})};_onAgentEnd=t=>{let n=this.runs.get(`agent-${t.id??""}`);if(!n)return;this.runs.delete(`agent-${t.id}`);let e=qe();if(e)try{e.enqueue({event_id:p(),project_id:"",trace_id:n.traceId,span_id:n.spanId,parent_span_id:n.parentSpanId,timestamp:new Date().toISOString(),provider:"llamaindex",model:"agent",operation:"agent",latency_ms:performance.now()-n.t0,stream:!1,input_tokens:0,output_tokens:0,status:"success",span_kind:"agent",agent_name:n.agentName??t.detail?.agentName??"",environment:e.environment,sdk_version:x})}catch{}};attach(t){t.on("llm-start",this._onLLMStart),t.on("llm-end",this._onLLMEnd),t.on("llm-stream",this._onLLMStream),t.on("llm-tool-call",this._onToolCall),t.on("llm-tool-result",this._onToolResult),t.on("agent-start",this._onAgentStart),t.on("agent-end",this._onAgentEnd)}detach(t){t.off("llm-start",this._onLLMStart),t.off("llm-end",this._onLLMEnd),t.off("llm-stream",this._onLLMStream),t.off("llm-tool-call",this._onToolCall),t.off("llm-tool-result",this._onToolResult),t.off("agent-start",this._onAgentStart),t.off("agent-end",this._onAgentEnd)}};function Mt(r){let t=F(),n=E(),e=n?.traceId??p(),s=p(),a=performance.now(),o=n?.agentId?{agent_id:n.agentId,agent_name:n.agentName,agent_role:n.agentRole,agent_framework:n.agentFramework,parent_agent_id:n.parentAgentId,span_kind:r.span_kind??"general"}:{},d={};return{span:{setEvalScore(u,l){d[u]=l},async end(u){let l=performance.now()-a;try{t.enqueue({event_id:p(),project_id:"",trace_id:e,span_id:s,parent_span_id:n?.spanId,timestamp:new Date().toISOString(),provider:r.provider??"custom",model:r.model??"custom",operation:"custom",latency_ms:l,stream:!1,input_tokens:u.input_tokens??0,output_tokens:u.output_tokens??0,cost_usd:u.cost_usd,status:u.status,error_message:u.error_message?.slice(0,500),environment:t.environment,eval_scores:Object.keys(d).length?d:void 0,sdk_version:x,...o})}catch{}}},run:u=>W({traceId:e,spanId:s,userId:n?.userId,sessionId:n?.sessionId,tags:n?.tags,agentId:n?.agentId,agentName:n?.agentName,agentRole:n?.agentRole,agentFramework:n?.agentFramework,parentAgentId:n?.parentAgentId,conversationTurn:n?.conversationTurn,availableTools:n?.availableTools},u)}}var Le=class{agentId;name;role;framework;tools;constructor(t,n){this.agentId=t,this.name=n.name,this.role=n.role??"specialist",this.framework=n.framework??"custom",this.tools=n.tools??[]}logPlan(t){let n=F(),e=E(),s={event_id:p(),project_id:"",trace_id:e?.traceId??p(),span_id:p(),parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"agent",model:"",operation:`${this.name}.plan`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",environment:n.environment,sdk_version:x,agent_id:this.agentId,agent_name:this.name,agent_role:this.role,agent_framework:this.framework,span_kind:"planning",planning_steps:t,user_id:e?.userId,session_id:e?.sessionId,tags:e?.tags};n.enqueue(s)}async traceTool(t,n,e){let s=F(),a=E(),o=p(),d=a?.traceId??p(),c=performance.now(),u=this.tools.find(l=>l.name===t);try{let l=await W({traceId:d,spanId:o,userId:a?.userId,sessionId:a?.sessionId,tags:a?.tags,agentId:this.agentId,agentName:this.name,agentRole:this.role,agentFramework:this.framework},()=>e()),i=typeof l=="string"?l:JSON.stringify(l),g={event_id:p(),project_id:"",trace_id:d,span_id:o,parent_span_id:a?.spanId,timestamp:new Date().toISOString(),provider:"tool",model:"",operation:`tool.${t}`,latency_ms:performance.now()-c,stream:!1,input_tokens:0,output_tokens:0,status:"success",environment:s.environment,sdk_version:x,agent_id:this.agentId,agent_name:this.name,agent_role:this.role,agent_framework:this.framework,span_kind:"tool",tools_used:[t],tool_call_id:o,tool_call_args:n,tool_call_result:i.slice(0,10240),tool_definitions:u?[u]:void 0,user_id:a?.userId,session_id:a?.sessionId,tags:a?.tags};return s.enqueue(g),l}catch(l){let i=l instanceof Error?l.message:String(l),g={event_id:p(),project_id:"",trace_id:d,span_id:o,parent_span_id:a?.spanId,timestamp:new Date().toISOString(),provider:"tool",model:"",operation:`tool.${t}`,latency_ms:performance.now()-c,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_message:i.slice(0,500),environment:s.environment,sdk_version:x,agent_id:this.agentId,agent_name:this.name,agent_role:this.role,agent_framework:this.framework,span_kind:"tool",tools_used:[t],tool_call_id:o,tool_call_args:n,user_id:a?.userId,session_id:a?.sessionId,tags:a?.tags};throw s.enqueue(g),l}}delegateTo(t,n){let e=F(),s=E(),a={event_id:p(),project_id:"",trace_id:s?.traceId??p(),span_id:p(),parent_span_id:s?.spanId,timestamp:new Date().toISOString(),provider:"agent",model:"",operation:`${this.name}.delegate\u2192${t}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",environment:e.environment,sdk_version:x,agent_id:this.agentId,agent_name:this.name,agent_role:this.role,agent_framework:this.framework,span_kind:"handoff",delegation_reason:n,user_id:s?.userId,session_id:s?.sessionId,tags:s?.tags};e.enqueue(a)}};function Pt(r,t){let n=F(),e=E(),s=p(),a=e?.traceId??p(),o=p(),d={event_id:p(),project_id:"",trace_id:a,span_id:o,parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"agent",model:"",operation:`agent.${r.name}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",environment:n.environment,sdk_version:x,agent_id:s,agent_name:r.name,agent_role:r.role??"specialist",agent_framework:r.framework??"custom",parent_agent_id:e?.agentId,span_kind:"agent",tool_definitions:r.tools,delegation_reason:e?.agentId?"delegated":"root",user_id:e?.userId,session_id:e?.sessionId,tags:e?.tags,metadata:r.metadata};return n.enqueue(d),W({traceId:a,spanId:o,userId:e?.userId,sessionId:e?.sessionId,tags:e?.tags,agentId:s,agentName:r.name,agentRole:r.role??"specialist",agentFramework:r.framework??"custom",parentAgentId:e?.agentId,availableTools:r.tools},()=>t(new Le(s,r)))}var An=require("@opentelemetry/api"),dt=class{onStart(t,n){let e=An.propagation.getBaggage(n);e&&e.getAllEntries().forEach(([s,a])=>{t.setAttribute(`baggage.${s}`,a.value)})}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}};var fe=require("@opentelemetry/api");function ze(r,t,n){let e={};t&&(e["agent.delegation.reason"]=t),n&&(e["agent.task"]=n);let s=fe.context.active();if(Object.keys(e).length>0){let a=fe.propagation.getBaggage(s)??fe.propagation.createBaggage();for(let[o,d]of Object.entries(e))a=a.setEntry(o,{value:d});s=fe.propagation.setBaggage(s,a)}fe.propagation.inject(s,r)}function Be(r){return fe.propagation.extract(fe.context.active(),r)}var Rn={OTEL_EXPORTER_OTLP_ENDPOINT:"http://localhost:4318",OTEL_SERVICE_NAME:"crewai-agent"};function Nn(){return`
6
+ `)}return""},n=a?.contents??a,e=[],s=a?.systemInstruction??a?.system_instruction,r=t(s);if(r.length>0&&e.push({role:"system",content:r}),typeof n=="string")return e.push({role:"user",content:n}),e;if(Array.isArray(n)){for(let o of n){if(typeof o=="string"){e.push({role:"user",content:o});continue}if(o&&typeof o=="object"){let d=typeof o.role=="string"?o.role:"user",c=t(o);c.length>0&&e.push({role:d,content:c})}}return e}if(n&&typeof n=="object"){let o=typeof n.role=="string"?n.role:"user",d=t(n);d.length>0&&e.push({role:o,content:d})}return e}function at(a,t){return{"gen_ai.system":"google","gen_ai.model":t,"gen_ai.operation.name":"chat","gen_ai.prompt":JSON.stringify(a),"gen_ai.request.max_tokens":a.generationConfig?.maxOutputTokens,"gen_ai.request.temperature":a.generationConfig?.temperature,"gen_ai.request.top_p":a.generationConfig?.topP}}function It(a){try{if(typeof a?.text=="function"){let n=a.text();if(typeof n=="string"&&n.length>0)return n}}catch{}return(a?.candidates?.[0]?.content?.parts??[]).map(n=>typeof n?.text=="string"?n.text:"").filter(Boolean).join("")}async function*rn(a,t){let{client:n,t0:e,traceId:s,spanId:r,parent:o,params:d,modelName:c,otelSpan:p,streamResult:m,agentCtx:i,tool_definitions:l,autoDetected:_,conversation_turn:g,message_role:w,operation:S}=t,y,h=0,k=0,A=0,f=0,N="",v=[],C="";try{for await(let x of a){y||(y=performance.now()-e,n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:S,latency_ms:y,ttft_ms:y,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:Ee(JSON.stringify(d)),...n.storePrompts?{prompt_text:n.redactForStorage(d)}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b,finish_reason:"stream_start",...i,span_kind:"llm",tool_definitions:l,conversation_turn:g,message_role:w,metadata:{auto_detected:Object.keys(_).length?_:void 0}}),p&&p.setAttribute("gen_ai.response.time_to_first_token",y));let M=(typeof x?.text=="function"?x.text():x?.text)||x?.candidates?.[0]?.content?.parts?.map(R=>R?.text||"").join("")||"";M&&(h++,C+=M),x.candidates?.[0]?.finishReason&&(N=x.candidates[0].finishReason);let T=Array.isArray(x?.functionCalls)?x.functionCalls:x?.functionCalls?[x.functionCalls]:[],q=(x?.candidates?.[0]?.content?.parts??[]).map(R=>R?.functionCall).filter(Boolean);for(let R of[...T,...q])R?.name&&!v.includes(R.name)&&v.push(R.name);yield x}let I=await m?.response;I?.usageMetadata&&(k=Number(I.usageMetadata.promptTokenCount||k||0),h=Number(I.usageMetadata.candidatesTokenCount||h||0),A=Number(I.usageMetadata.cachedContentTokenCount||A||0),f=Number(I.usageMetadata.thoughtsTokenCount||f||0));let P=It(I);P&&(C=P);let O=performance.now()-e;n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:S,latency_ms:O,ttft_ms:y,stream:!0,input_tokens:k,output_tokens:h,cached_tokens:A,reasoning_tokens:f,status:"success",finish_reason:N||"stream_end",tools_used:v,prompt_hash:Ee(JSON.stringify(d)),...n.storePrompts?{prompt_text:n.redactForStorage(d),completion_text:n.redactForStorage(C)}:{},...i,span_kind:"llm",tool_definitions:l,conversation_turn:g,message_role:w,metadata:{usage:I?.usageMetadata??{promptTokenCount:k,candidatesTokenCount:h,cachedContentTokenCount:A,thoughtsTokenCount:f},auto_detected:Object.keys(_).length?_:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),p&&(p.setAttribute("gen_ai.completion",C),p.setAttribute("gen_ai.usage.input_tokens",k),p.setAttribute("gen_ai.usage.output_tokens",h),p.setAttribute("gen_ai.usage.total_tokens",k+h),p.setAttribute("gen_ai.usage.cached_tokens",A),p.setAttribute("gen_ai.usage.reasoning_tokens",f),p.setAttribute("gen_ai.response.finish_reason",N||"stream_end"),p.setStatus({code:X.SpanStatusCode.OK}),p.end())}catch(I){throw n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:S,latency_ms:performance.now()-e,ttft_ms:y,stream:!0,input_tokens:0,output_tokens:h,cost_usd:0,status:"error",error_code:String(I.status??"unknown"),error_message:String(I.message).slice(0,500),...i,span_kind:"llm",conversation_turn:g,message_role:w,metadata:{auto_detected:Object.keys(_).length?_:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),p&&(p.setStatus({code:X.SpanStatusCode.ERROR,message:I.message}),p.recordException(I),p.end()),I}}function St(a,t={}){let n=a,e=n.getGenerativeModel.bind(n),s=ee(t.guardrails,"chat"),r=t.operation??"chat";return n.getGenerativeModel=(o,d)=>{let c=o.model,p=F(),m=!1,i=c,l;if(p.configClient){let y=p.configClient.getAbTest(r);if(y)Math.random()<y.splitPercentage/100?(i=c,c=y.candidateModel,o={...o,model:c},m=!0,l={ab_test:!0,ab_variant:"candidate"}):l={ab_test:!0,ab_variant:"control"};else{let h=p.configClient.getModel(r,c);h!==c&&(i=c,c=h,o={...o,model:h},m=!0)}}let _=e(o,d),g=_.generateContent.bind(_);_.generateContent=async(y,h)=>{let k=F(),A=performance.now(),f=G(),N=u(),v=f?.traceId??u(),C=null,I=null,P=rt(y),O=ie(P,c),{conversation_turn:x,message_role:M}=ce(P),T=f?.agentName??O.agent_name,q=f?.agentRole??O.agent_role,R=f?.agentId||T||q?{agent_id:f?.agentId,agent_name:T,agent_role:q,agent_framework:f?.agentFramework,parent_agent_id:f?.parentAgentId}:{},D=y?.tools?.length?de(y.tools):void 0,j=null,L=k.enableOTel?X.trace.getTracer("zespan-sdk"):null;L&&(j=L.startSpan(`generateContent ${c}`,{kind:X.SpanKind.CLIENT,attributes:at(y,c)})),m&&k.enqueue({event_id:u(),project_id:"",trace_id:v,span_id:N,parent_span_id:f?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:i,override_model:c},environment:k.environment,sdk_version:b});try{C=await Z(k,s,{text:JSON.stringify(y??""),phase:"pre",traceId:v,spanId:N,model:c,operation:r,agentName:f?.agentName});let K;if(k.configClient){let Q=k.configClient.getTimeout(r);Q&&(K=AbortSignal.timeout(Q.timeoutMs))}let B=k.configClient?.getRetryPolicy(r)??null,U=k.configClient?.getConcurrencyLimit(r)??null,E=()=>Ie(()=>W({traceId:v,spanId:N,userId:f?.userId,sessionId:f?.sessionId,tags:f?.tags,agentId:f?.agentId,agentName:T,agentRole:q,agentFramework:f?.agentFramework,parentAgentId:f?.parentAgentId,conversationTurn:x,availableTools:D},()=>g(y,K?{...h,signal:K}:h)),B),H=await(U!==null?Se(`${k.projectId??"default"}:${r}`,U).run(E):E()),z=H.response,J=z.usageMetadata?.promptTokenCount??0,Y=z.usageMetadata?.candidatesTokenCount??0,$=z.usageMetadata?.cachedContentTokenCount??0,ae=z.usageMetadata?.thoughtsTokenCount??0,ne=It(z),we=(z.candidates?.[0]?.content?.parts??[]).filter(Q=>Q?.functionCall),le=we.map(Q=>Q.functionCall.name).filter(Boolean),ge=(z.candidates?.[0]?.content?.parts??[]).filter(Q=>Q?.text&&!Q?.functionCall).map(Q=>Q.text).join(""),_e={};for(let Q of we)Q.functionCall?.name&&(_e[Q.functionCall.name]=Q.functionCall.args??{});I=await Z(k,s,{text:ne,phase:"post",traceId:v,spanId:N,model:c,operation:r,agentName:f?.agentName});let be=oe(ne,I);return k.enqueue({event_id:u(),project_id:"",trace_id:v,span_id:N,parent_span_id:f?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:r,latency_ms:performance.now()-A,stream:!1,input_tokens:J,output_tokens:Y,cached_tokens:$,reasoning_tokens:ae,status:"success",finish_reason:z.candidates?.[0]?.finishReason??"",tools_used:le,tool_call_args:Object.keys(_e).length?_e:void 0,prompt_hash:Ee(JSON.stringify(y)),...k.storePrompts?{prompt_text:k.redactForStorage(y),completion_text:k.redactForStorage(be)}:{},...le.length>0&&ge?{decision_rationale:ge}:{},...R,span_kind:"llm",tool_definitions:D,conversation_turn:x,message_role:M,metadata:{usage:z.usageMetadata??null,guardrails:{pre:C?{matched:C.results.length,modified:!!C.modifiedText}:null,post:I?{matched:I.results.length,modified:!!I.modifiedText}:null},auto_detected:Object.keys(O).length?O:void 0,...l??{}},user_id:f?.userId,session_id:f?.sessionId,tags:f?.tags,environment:k.environment,sdk_version:b}),j&&(j.setAttribute("gen_ai.completion",be),j.setAttribute("gen_ai.usage.input_tokens",J),j.setAttribute("gen_ai.usage.output_tokens",Y),j.setAttribute("gen_ai.usage.total_tokens",J+Y),j.setAttribute("gen_ai.usage.cached_tokens",$),j.setAttribute("gen_ai.usage.reasoning_tokens",ae),j.setAttribute("gen_ai.response.finish_reason",z.candidates?.[0]?.finishReason??""),j.setAttribute("gen_ai.response.latency",performance.now()-A),j.setStatus({code:X.SpanStatusCode.OK}),j.end()),H}catch(K){let B=K.__signal;if(K?.name==="TimeoutError"||K?.code==="ABORT_ERR")throw k.enqueue({event_id:u(),project_id:"",trace_id:v,span_id:N,parent_span_id:f?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:r,latency_ms:performance.now()-A,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:"timeout",error_message:String(K.message).slice(0,500),...R,span_kind:"llm",conversation_turn:x,message_role:M,metadata:{auto_detected:Object.keys(O).length?O:void 0},user_id:f?.userId,session_id:f?.sessionId,tags:f?.tags,environment:k.environment,sdk_version:b}),j&&(j.setStatus({code:X.SpanStatusCode.ERROR,message:K.message}),j.recordException(K),j.end()),K;let E=k.configClient?.getFallback(r)??null;if(E&&E.model){let J=String(K.message??"")+String(K.status??"")+String(K.code??"");if(E.conditions.length===0||E.conditions.some($=>J.toLowerCase().includes($.toLowerCase()))){let $=c,ae={...o,model:E.model},ne=e(ae,d),we=ne.generateContent.bind(ne);k.enqueue({event_id:u(),project_id:"",trace_id:v,span_id:N,parent_span_id:f?.spanId,timestamp:new Date().toISOString(),provider:"google",model:E.model,operation:r,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:$,fallback_model:E.model,reason:String(K.message).slice(0,200)},environment:k.environment,sdk_version:b});try{let le=await W({traceId:v,spanId:N,userId:f?.userId,sessionId:f?.sessionId,tags:f?.tags},()=>we(y,h)),ge=le.response,_e=ge.usageMetadata?.promptTokenCount??0,be=ge.usageMetadata?.candidatesTokenCount??0,Q=ge.usageMetadata?.cachedContentTokenCount??0;return k.enqueue({event_id:u(),project_id:"",trace_id:v,span_id:N,parent_span_id:f?.spanId,timestamp:new Date().toISOString(),provider:"google",model:E.model,operation:r,latency_ms:performance.now()-A,stream:!1,input_tokens:_e,output_tokens:be,cached_tokens:Q,status:"success",finish_reason:ge.candidates?.[0]?.finishReason??"",prompt_hash:Ee(JSON.stringify(y)),...R,span_kind:"llm",conversation_turn:x,message_role:M,metadata:{usage:ge.usageMetadata??null,fallback_used:!0,original_model:$,auto_detected:Object.keys(O).length?O:void 0},user_id:f?.userId,session_id:f?.sessionId,tags:f?.tags,environment:k.environment,sdk_version:b}),j&&(j.setStatus({code:X.SpanStatusCode.OK}),j.end()),le}catch(le){throw j&&(j.setStatus({code:X.SpanStatusCode.ERROR,message:le.message}),j.recordException(le),j.end()),le}}}let H=K instanceof V,z=H?"error":K.status===429?"rate_limited":K.status===408?"timeout":"error";throw k.enqueue({event_id:u(),project_id:"",trace_id:v,span_id:N,parent_span_id:f?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:r,latency_ms:performance.now()-A,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:z,error_code:H?"guardrail_blocked":String(K.status??"unknown"),error_message:String(K.message).slice(0,500),...R,span_kind:"llm",conversation_turn:x,message_role:M,metadata:{auto_detected:Object.keys(O).length?O:void 0},user_id:f?.userId,session_id:f?.sessionId,tags:f?.tags,environment:k.environment,sdk_version:b}),j&&(j.setStatus({code:X.SpanStatusCode.ERROR,message:K.message}),j.recordException(K),j.end()),K}};let w=_.generateContentStream.bind(_);_.generateContentStream=async(y,h)=>{let k=F(),A=performance.now(),f=G(),N=u(),v=f?.traceId??u(),C=rt(y),I=ie(C,c),{conversation_turn:P,message_role:O}=ce(C),x=f?.agentName??I.agent_name,M=f?.agentRole??I.agent_role,T=f?.agentId||x||M?{agent_id:f?.agentId,agent_name:x,agent_role:M,agent_framework:f?.agentFramework,parent_agent_id:f?.parentAgentId}:{},q=y?.tools?.length?de(y.tools):void 0,R=null,D=k.enableOTel?X.trace.getTracer("zespan-sdk"):null;D&&(R=D.startSpan(`generateContentStream ${c}`,{kind:X.SpanKind.CLIENT,attributes:at(y,c)}));try{let j=await W({traceId:v,spanId:N,userId:f?.userId,sessionId:f?.sessionId,tags:f?.tags,agentId:f?.agentId,agentName:x,agentRole:M,agentFramework:f?.agentFramework,parentAgentId:f?.parentAgentId,conversationTurn:P,availableTools:q},()=>w(y,h));return R&&R.setAttribute("gen_ai.request.stream",!0),j.stream=rn(j.stream,{client:k,t0:A,traceId:v,spanId:N,parent:f,params:y,modelName:c,otelSpan:R,streamResult:j,agentCtx:T,tool_definitions:q,autoDetected:I,conversation_turn:P,message_role:O,operation:r}),j}catch(j){let L=j instanceof V,K=L?"error":j.status===429?"rate_limited":j.status===408?"timeout":"error";throw k.enqueue({event_id:u(),project_id:"",trace_id:v,span_id:N,parent_span_id:f?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:r,latency_ms:performance.now()-A,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:K,error_code:L?"guardrail_blocked":String(j.status??"unknown"),error_message:String(j.message).slice(0,500),...T,span_kind:"llm",conversation_turn:P,message_role:O,metadata:{auto_detected:Object.keys(I).length?I:void 0},user_id:f?.userId,session_id:f?.sessionId,tags:f?.tags,environment:k.environment,sdk_version:b}),R&&(R.setStatus({code:X.SpanStatusCode.ERROR,message:j.message}),R.recordException(j),R.end()),j}};let S=_.startChat?.bind(_);return S&&(_.startChat=y=>{let h=S(y),k=h.sendMessage?.bind(h),A=h.sendMessageStream?.bind(h);return k&&(h.sendMessage=async(f,N)=>{let v=F(),C=performance.now(),I=G(),P=u(),O=I?.traceId??u(),x={...y||{},message:f},M=null,T=null,q=rt(x),R=ie(q,c),{conversation_turn:D,message_role:j}=ce(q),L=I?.agentName??R.agent_name,K=I?.agentRole??R.agent_role,B=I?.agentId||L||K?{agent_id:I?.agentId,agent_name:L,agent_role:K,agent_framework:I?.agentFramework,parent_agent_id:I?.parentAgentId}:{},U=y?.tools?.length?de(y.tools):void 0,E=null,H=v.enableOTel?X.trace.getTracer("zespan-sdk"):null;H&&(E=H.startSpan(`sendMessage ${c}`,{kind:X.SpanKind.CLIENT,attributes:at(x,c)}));try{M=await Z(v,s,{text:JSON.stringify(x),phase:"pre",traceId:O,spanId:P,model:c,operation:r,agentName:I?.agentName});let z=await W({traceId:O,spanId:P,userId:I?.userId,sessionId:I?.sessionId,tags:I?.tags,agentId:I?.agentId,agentName:L,agentRole:K,agentFramework:I?.agentFramework,parentAgentId:I?.parentAgentId,conversationTurn:D,availableTools:U},()=>k(f,N)),J=z.response,Y=J.usageMetadata?.promptTokenCount??0,$=J.usageMetadata?.candidatesTokenCount??0,ae=J.usageMetadata?.cachedContentTokenCount??0,ne=J.usageMetadata?.thoughtsTokenCount??0,we=It(J),le=(J.candidates?.[0]?.content?.parts??[]).filter(Q=>Q?.functionCall),ge=le.map(Q=>Q.functionCall.name).filter(Boolean),_e={};for(let Q of le)Q.functionCall?.name&&(_e[Q.functionCall.name]=Q.functionCall.args??{});T=await Z(v,s,{text:we,phase:"post",traceId:O,spanId:P,model:c,operation:r,agentName:I?.agentName});let be=oe(we,T);return v.enqueue({event_id:u(),project_id:"",trace_id:O,span_id:P,parent_span_id:I?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:r,latency_ms:performance.now()-C,stream:!1,input_tokens:Y,output_tokens:$,cached_tokens:ae,reasoning_tokens:ne,status:"success",finish_reason:J.candidates?.[0]?.finishReason??"",tools_used:ge,tool_call_args:Object.keys(_e).length?_e:void 0,prompt_hash:Ee(JSON.stringify(x)),...v.storePrompts?{prompt_text:v.redactForStorage(x),completion_text:v.redactForStorage(be)}:{},...B,span_kind:"llm",tool_definitions:U,conversation_turn:D,message_role:j,metadata:{usage:J.usageMetadata??null,guardrails:{pre:M?{matched:M.results.length,modified:!!M.modifiedText}:null,post:T?{matched:T.results.length,modified:!!T.modifiedText}:null},auto_detected:Object.keys(R).length?R:void 0},user_id:I?.userId,session_id:I?.sessionId,tags:I?.tags,environment:v.environment,sdk_version:b}),E&&(E.setAttribute("gen_ai.completion",be),E.setAttribute("gen_ai.usage.input_tokens",Y),E.setAttribute("gen_ai.usage.output_tokens",$),E.setAttribute("gen_ai.usage.total_tokens",Y+$),E.setAttribute("gen_ai.usage.cached_tokens",ae),E.setAttribute("gen_ai.usage.reasoning_tokens",ne),E.setAttribute("gen_ai.response.finish_reason",J.candidates?.[0]?.finishReason??""),E.setAttribute("gen_ai.response.latency",performance.now()-C),E.setStatus({code:X.SpanStatusCode.OK}),E.end()),z}catch(z){let J=z instanceof V,Y=J?"error":z.status===429?"rate_limited":z.status===408?"timeout":"error";throw v.enqueue({event_id:u(),project_id:"",trace_id:O,span_id:P,parent_span_id:I?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:r,latency_ms:performance.now()-C,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:Y,error_code:J?"guardrail_blocked":String(z.status??"unknown"),error_message:String(z.message).slice(0,500),...B,span_kind:"llm",conversation_turn:D,message_role:j,metadata:{auto_detected:Object.keys(R).length?R:void 0},user_id:I?.userId,session_id:I?.sessionId,tags:I?.tags,environment:v.environment,sdk_version:b}),E&&(E.setStatus({code:X.SpanStatusCode.ERROR,message:z.message}),E.recordException(z),E.end()),z}}),A&&(h.sendMessageStream=async(f,N)=>{let v=F(),C=performance.now(),I=G(),P=u(),O=I?.traceId??u(),x={...y||{},message:f},M=rt(x),T=ie(M,c),{conversation_turn:q,message_role:R}=ce(M),D=I?.agentName??T.agent_name,j=I?.agentRole??T.agent_role,L=I?.agentId||D||j?{agent_id:I?.agentId,agent_name:D,agent_role:j,agent_framework:I?.agentFramework,parent_agent_id:I?.parentAgentId}:{},K=y?.tools?.length?de(y.tools):void 0,B=null,U=v.enableOTel?X.trace.getTracer("zespan-sdk"):null;U&&(B=U.startSpan(`sendMessageStream ${c}`,{kind:X.SpanKind.CLIENT,attributes:at(x,c)}));try{let E=await W({traceId:O,spanId:P,userId:I?.userId,sessionId:I?.sessionId,tags:I?.tags,agentId:I?.agentId,agentName:D,agentRole:j,agentFramework:I?.agentFramework,parentAgentId:I?.parentAgentId,conversationTurn:q,availableTools:K},()=>A(f,N));return B&&B.setAttribute("gen_ai.request.stream",!0),E.stream=rn(E.stream,{client:v,t0:C,traceId:O,spanId:P,parent:I,params:x,modelName:c,otelSpan:B,streamResult:E,agentCtx:L,tool_definitions:K,autoDetected:T,conversation_turn:q,message_role:R,operation:r}),E}catch(E){let H=E instanceof V,z=H?"error":E.status===429?"rate_limited":E.status===408?"timeout":"error";throw v.enqueue({event_id:u(),project_id:"",trace_id:O,span_id:P,parent_span_id:I?.spanId,timestamp:new Date().toISOString(),provider:"google",model:c,operation:r,latency_ms:performance.now()-C,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:z,error_code:H?"guardrail_blocked":String(E.status??"unknown"),error_message:String(E.message).slice(0,500),...L,span_kind:"llm",conversation_turn:q,message_role:R,metadata:{auto_detected:Object.keys(T).length?T:void 0},user_id:I?.userId,session_id:I?.sessionId,tags:I?.tags,environment:v.environment,sdk_version:b}),B&&(B.setStatus({code:X.SpanStatusCode.ERROR,message:E.message}),B.recordException(E),B.end()),E}}),h}),_},a}var un=require("crypto"),ve=require("@opentelemetry/api");var cn=a=>(0,un.createHash)("sha256").update(a).digest("hex");function dn(a){let t=[];if(a?.systemInstruction){let e=typeof a.systemInstruction=="string"?a.systemInstruction:a.systemInstruction?.parts?.map(s=>s?.text||"").join("")||"";e&&t.push({role:"system",content:e})}let n=a?.contents;if(typeof n=="string")t.push({role:"user",content:n});else if(Array.isArray(n))for(let e of n){if(typeof e=="string"){t.push({role:"user",content:e});continue}let s=e?.role||"user",r=Array.isArray(e?.parts)?e.parts.map(o=>o?.text||"").filter(Boolean).join(""):e?.text||"";r&&t.push({role:s,content:r})}return t}function as(a){try{if(typeof a?.text=="function")return a.text()||"";if(typeof a?.text=="string")return a.text}catch{}return(a?.candidates?.[0]?.content?.parts??[]).filter(t=>typeof t?.text=="string").map(t=>t.text).join("")}function is(a){return(a?.candidates?.[0]?.content?.parts??[]).filter(t=>t?.inlineData).length}function ln(a){return{input:Number(a?.promptTokenCount||0),output:Number(a?.candidatesTokenCount||0),cached:Number(a?.cachedContentTokenCount||0),reasoning:Number(a?.thoughtsTokenCount||0)}}function vt(a,t={}){let e=a.models;if(!e||e.__zespanPatched)return a;let s=ee(t.guardrails,"chat"),r=t.operation??"chat",o=e.generateContent.bind(e),d=e.generateContentStream?.bind(e),c=e.embedContent?.bind(e),p=e.generateImages?.bind(e),m=e.generateVideo?.bind(e);return e.generateContent=async i=>{let l=F(),_=performance.now(),g=G(),w=u(),S=g?.traceId??u(),y=i?.model??"gemini",h=!1,k=y,A;if(l.configClient){let D=l.configClient.getAbTest(r);if(D)Math.random()<D.splitPercentage/100?(k=y,y=D.candidateModel,i={...i,model:y},h=!0,A={ab_test:!0,ab_variant:"candidate"}):A={ab_test:!0,ab_variant:"control"};else{let j=l.configClient.getModel(r,y);j!==y&&(k=y,y=j,i={...i,model:j},h=!0)}}let f=dn(i),N=ie(f,y),{conversation_turn:v,message_role:C}=ce(f),I=g?.agentName??N.agent_name,P=g?.agentRole??N.agent_role,O=g?.agentId||I||P?{agent_id:g?.agentId,agent_name:I,agent_role:P,agent_framework:g?.agentFramework,parent_agent_id:g?.parentAgentId}:{},x=i?.tools?.length?de(i.tools):void 0,M=null,T=l.enableOTel?ve.trace.getTracer("zespan-sdk"):null;T&&(M=T.startSpan(`generateContent ${y}`,{kind:ve.SpanKind.CLIENT,attributes:{"gen_ai.system":"google","gen_ai.model":y,"gen_ai.operation.name":"chat"}})),h&&l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:k,override_model:y},user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:b});let q=null,R=null;try{q=await Z(l,s,{text:JSON.stringify(i??""),phase:"pre",traceId:S,spanId:w,model:y,operation:r,agentName:g?.agentName});let D;if(l.configClient){let ne=l.configClient.getTimeout(r);ne&&(D=AbortSignal.timeout(ne.timeoutMs))}let j=l.configClient?.getRetryPolicy(r)??null,L=l.configClient?.getConcurrencyLimit(r)??null,K=()=>Ie(()=>W({traceId:S,spanId:w,userId:g?.userId,sessionId:g?.sessionId,tags:g?.tags,agentId:g?.agentId,agentName:I,agentRole:P,agentFramework:g?.agentFramework,parentAgentId:g?.parentAgentId,conversationTurn:v,availableTools:x},()=>o(D?{...i,fetchOptions:{signal:D}}:i)),j),B=await(L!==null?Se(`${l.projectId??"default"}:${r}`,L).run(K):K()),U=ln(B?.usageMetadata),E=as(B),H=is(B),z=H>0,J=(B?.candidates?.[0]?.content?.parts??[]).filter(ne=>ne?.functionCall),Y=J.map(ne=>ne.functionCall.name).filter(Boolean),$={};for(let ne of J)ne.functionCall?.name&&($[ne.functionCall.name]=ne.functionCall.args??{});R=await Z(l,s,{text:E,phase:"post",traceId:S,spanId:w,model:y,operation:r,agentName:g?.agentName});let ae=oe(E,R);return l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:r,latency_ms:performance.now()-_,stream:!1,input_tokens:U.input,output_tokens:U.output,cached_tokens:U.cached,reasoning_tokens:U.reasoning,status:"success",finish_reason:B?.candidates?.[0]?.finishReason??"",tools_used:Y,tool_call_args:Object.keys($).length?$:void 0,prompt_hash:cn(JSON.stringify(i)),...l.storePrompts?{prompt_text:l.redactForStorage(i),completion_text:l.redactForStorage(ae)}:{},...Y.length>0&&E?{decision_rationale:E}:{},...O,span_kind:z?"image_gen":"llm",tool_definitions:x,conversation_turn:v,message_role:C,metadata:{usage:B?.usageMetadata??null,...z?{num_images:H}:{},guardrails:{pre:q?{matched:q.results.length,modified:!!q.modifiedText}:null,post:R?{matched:R.results.length,modified:!!R.modifiedText}:null},auto_detected:Object.keys(N).length?N:void 0,...A??{}},user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:b}),M&&(M.setAttribute("gen_ai.completion",ae),M.setAttribute("gen_ai.usage.input_tokens",U.input),M.setAttribute("gen_ai.usage.output_tokens",U.output),M.setAttribute("gen_ai.usage.total_tokens",U.input+U.output),M.setStatus({code:ve.SpanStatusCode.OK}),M.end()),B}catch(D){throw D instanceof V?(M&&(M.setStatus({code:ve.SpanStatusCode.ERROR,message:"Guardrail blocked"}),M.end()),D):(l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:r,latency_ms:performance.now()-_,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(D.status??D.code??"unknown"),error_message:String(D.message).slice(0,500),...O,span_kind:"llm",user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:b}),M&&(M.setStatus({code:ve.SpanStatusCode.ERROR,message:D.message}),M.recordException(D),M.end()),D)}},d&&(e.generateContentStream=async i=>{let l=F(),_=performance.now(),g=G(),w=u(),S=g?.traceId??u(),y=i?.model??"gemini";if(l.configClient){let O=l.configClient.getModel(r,y);O!==y&&(y=O,i={...i,model:O})}let h=dn(i),k=ie(h,y),{conversation_turn:A,message_role:f}=ce(h),N=g?.agentName??k.agent_name,v=g?.agentRole??k.agent_role,C=g?.agentId||N||v?{agent_id:g?.agentId,agent_name:N,agent_role:v,agent_framework:g?.agentFramework,parent_agent_id:g?.parentAgentId}:{},I=i?.tools?.length?de(i.tools):void 0,P=await d(i);return(async function*(){let O=0,x=0,M=0,T=0,q,R="",D="",j=[];try{for await(let L of P){q||(q=performance.now()-_);let K=L?.usageMetadata;K&&(O=Number(K.promptTokenCount||O),x=Number(K.candidatesTokenCount||x),M=Number(K.cachedContentTokenCount||M),T=Number(K.thoughtsTokenCount||T));let B=typeof L?.text=="function"?L.text():L?.text||"";B&&(D+=B),L?.candidates?.[0]?.finishReason&&(R=L.candidates[0].finishReason);let U=(L?.candidates?.[0]?.content?.parts??[]).map(E=>E?.functionCall).filter(Boolean);for(let E of U)E?.name&&!j.includes(E.name)&&j.push(E.name);yield L}l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:r,latency_ms:performance.now()-_,ttft_ms:q,stream:!0,input_tokens:O,output_tokens:x,cached_tokens:M,reasoning_tokens:T,status:"success",finish_reason:R||"stream_end",tools_used:j,prompt_hash:cn(JSON.stringify(i)),...l.storePrompts?{prompt_text:l.redactForStorage(i),completion_text:l.redactForStorage(D)}:{},...C,span_kind:"llm",tool_definitions:I,conversation_turn:A,message_role:f,user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:b})}catch(L){throw l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:r,latency_ms:performance.now()-_,ttft_ms:q,stream:!0,input_tokens:O,output_tokens:x,status:"error",error_code:String(L.status??L.code??"unknown"),error_message:String(L.message).slice(0,500),...C,span_kind:"llm",user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:b}),L}})()}),c&&(e.embedContent=async i=>{let l=F(),_=performance.now(),g=G(),w=u(),S=g?.traceId??u(),y=i?.model??"gemini-embedding";try{let h=await c(i),k=ln(h?.usageMetadata);return l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"embedding",latency_ms:performance.now()-_,stream:!1,input_tokens:k.input,output_tokens:0,status:"success",span_kind:"embedding",user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:b}),h}catch(h){throw l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"embedding",latency_ms:performance.now()-_,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(h.status??h.code??"unknown"),error_message:String(h.message).slice(0,500),span_kind:"embedding",environment:l.environment,sdk_version:b}),h}}),p&&(e.generateImages=async i=>{let l=F(),_=performance.now(),g=G(),w=u(),S=g?.traceId??u(),y=i?.model??"imagen";try{let h=await p(i),k=h?.generatedImages?.length??0;return l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"image_gen",latency_ms:performance.now()-_,stream:!1,input_tokens:k,output_tokens:0,status:"success",span_kind:"image_gen",metadata:{prompt:typeof i?.prompt=="string"?i.prompt.slice(0,500):void 0,num_images:k},user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:b}),h}catch(h){throw l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"image_gen",latency_ms:performance.now()-_,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(h.status??h.code??"unknown"),error_message:String(h.message).slice(0,500),span_kind:"image_gen",environment:l.environment,sdk_version:b}),h}}),m&&(e.generateVideo=async i=>{let l=F(),_=performance.now(),g=G(),w=u(),S=g?.traceId??u(),y=i?.model??"veo";try{let h=await m(i);return l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"video_gen",latency_ms:performance.now()-_,stream:!1,input_tokens:0,output_tokens:0,status:"success",span_kind:"video_gen",metadata:{prompt:typeof i?.prompt=="string"?i.prompt.slice(0,500):void 0},user_id:g?.userId,session_id:g?.sessionId,tags:g?.tags,environment:l.environment,sdk_version:b}),h}catch(h){throw l.enqueue({event_id:u(),project_id:"",trace_id:S,span_id:w,parent_span_id:g?.spanId,timestamp:new Date().toISOString(),provider:"google",model:y,operation:"video_gen",latency_ms:performance.now()-_,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:String(h.status??h.code??"unknown"),error_message:String(h.message).slice(0,500),span_kind:"video_gen",environment:l.environment,sdk_version:b}),h}}),e.__zespanPatched=!0,a}var pn=require("crypto"),fe=require("@opentelemetry/api");var wt=a=>(0,pn.createHash)("sha256").update(a).digest("hex");function cs(a,t,n,e){let s=Number(a?.usage?.cost);if(Number.isFinite(s))return{cost:s,source:"usage.cost"};let r=a?.headers?.get?.("x-ratelimit-cost"),o=Number.parseFloat(String(r??""));return Number.isFinite(o)?{cost:o,source:"x-ratelimit-cost"}:{cost:0,source:"computed"}}function ds(a,t){return{"gen_ai.system":"openrouter","gen_ai.model":t,"gen_ai.operation.name":"chat","gen_ai.prompt":JSON.stringify(a.messages),"gen_ai.request.max_tokens":a.max_tokens,"gen_ai.request.temperature":a.temperature,"gen_ai.request.top_p":a.top_p}}async function*ls(a,t){let{client:n,t0:e,traceId:s,spanId:r,parent:o,params:d,otelSpan:c,agentCtx:p,autoDetected:m,conversation_turn:i,message_role:l,tool_definitions:_}=t,g,w=0,S=0,y=0,h=0,k="",A=d.model,f=[],N="",v=[],{systemPrompt:C,conversationMessages:I}=se(d.messages??[]);try{for await(let T of a){if(g||(g=performance.now()-e,n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:A,operation:"chat",latency_ms:g,ttft_ms:g,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:wt(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(I),...C?{system_prompt:n.redactForStorage(C)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b,finish_reason:"stream_start",...p,span_kind:"llm",tool_definitions:_,conversation_turn:i,message_role:l,metadata:{auto_detected:Object.keys(m).length?m:void 0}}),c&&c.setAttribute("gen_ai.response.time_to_first_token",g)),T.choices?.[0]?.delta?.content&&(w++,N+=T.choices[0].delta.content),T.choices?.[0]?.finish_reason&&(k=T.choices[0].finish_reason),T.model&&(A=T.model),T.usage){S=Number(T.usage.prompt_tokens||S||0),w=Number(T.usage.completion_tokens||w||0),y=Number(T.usage.prompt_tokens_details?.cached_tokens||y||0);let q=T.usage.completion_tokens_details||{};h=Number(q.reasoning_tokens||h||0)}if(T.choices?.[0]?.delta?.tool_calls)for(let q of T.choices[0].delta.tool_calls)v.push(q),q.function?.name&&!f.includes(q.function.name)&&f.push(q.function.name);yield T}let{tools_used:P,tool_call_args:O}=ke(v),x=P.length>0?P:f,M=performance.now()-e;n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:A,operation:"chat",latency_ms:M,ttft_ms:g,stream:!0,input_tokens:S,output_tokens:w,cached_tokens:y,reasoning_tokens:h,status:"success",finish_reason:k||"stream_end",tools_used:x,tool_call_args:Object.keys(O).length?O:void 0,prompt_hash:wt(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(I),completion_text:n.redactForStorage(N),...C?{system_prompt:n.redactForStorage(C)}:{}}:{},...p,span_kind:"llm",tool_definitions:_,conversation_turn:i,message_role:l,metadata:{usage:{prompt_tokens:S,completion_tokens:w,cached_tokens:y,reasoning_tokens:h},auto_detected:Object.keys(m).length?m:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),c&&(c.setAttribute("gen_ai.completion",N),c.setAttribute("gen_ai.usage.input_tokens",S),c.setAttribute("gen_ai.usage.output_tokens",w),c.setAttribute("gen_ai.usage.total_tokens",S+w),c.setAttribute("gen_ai.usage.reasoning_tokens",h),c.setAttribute("gen_ai.response.finish_reason",k||"stream_end"),c.setStatus({code:fe.SpanStatusCode.OK}),c.end())}catch(P){throw n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:A,operation:"chat",latency_ms:performance.now()-e,ttft_ms:g,stream:!0,input_tokens:0,output_tokens:w,cost_usd:0,status:"error",error_code:String(P.status??"unknown"),error_message:String(P.message).slice(0,500),...p,span_kind:"llm",conversation_turn:i,message_role:l,metadata:{auto_detected:Object.keys(m).length?m:void 0},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),c&&(c.setStatus({code:fe.SpanStatusCode.ERROR,message:P.message}),c.recordException(P),c.end()),P}}function bt(a,t={}){let n=a.chat.completions.create,e=ee(t.guardrails,"chat");return a.chat.completions.create=async(s,r)=>{let o=F(),d=performance.now(),c=G(),p=u(),m=c?.traceId??u(),i=s.model??"openrouter\u6A21\u578B",l=null,_=null;if(o.configClient){let f=o.configClient.getModel("chat",i);if(f!==i){let N=i;i=f,s={...s,model:f},o.enqueue({event_id:u(),project_id:"",trace_id:m,span_id:p,parent_span_id:c?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:f,operation:"model_override",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",metadata:{original_model:N,override_model:f},environment:o.environment,sdk_version:b})}}let g=c?.agentId?{agent_id:c.agentId,agent_name:c.agentName,agent_role:c.agentRole,agent_framework:c.agentFramework,parent_agent_id:c.parentAgentId}:{},w=ie(s.messages??[],s.model),{conversation_turn:S,message_role:y}=ce(s.messages??[]),h=s.tools?.length?de(s.tools):void 0,k=null,A=o.enableOTel?fe.trace.getTracer("zespan-sdk"):null;A&&(k=A.startSpan(`chat.completions ${i}`,{kind:fe.SpanKind.CLIENT,attributes:ds(s,i)}));try{l=await Z(o,e,{text:JSON.stringify(s.messages??[]),phase:"pre",traceId:m,spanId:p,model:i,operation:"chat"});let f=await W({traceId:m,spanId:p,userId:c?.userId,sessionId:c?.sessionId,tags:c?.tags},()=>n.call(a.chat.completions,s,r));if(s.stream===!0)return k&&k.setAttribute("gen_ai.request.stream",!0),ls(f,{client:o,t0:d,traceId:m,spanId:p,parent:c,params:s,otelSpan:k,agentCtx:g,autoDetected:w,conversation_turn:S,message_role:y,tool_definitions:h});let{prompt_tokens:v,completion_tokens:C,completion_tokens_details:I}=f.usage??{},P=I?.reasoning_tokens??0,O=f.model??s.model,{cost:x,source:M}=cs(f,O,v??0,C??0);f.pricing||(f.pricing={cost_usd:x,source:M});let T=f.choices?.[0]?.message?.content||"";_=await Z(o,e,{text:T,phase:"post",traceId:m,spanId:p,model:O,operation:"chat"});let q=oe(T,_);q!==T&&typeof f?.choices?.[0]?.message?.content=="string"&&(f.choices[0].message.content=q);let{tools_used:R,tool_call_args:D}=nt(f.choices??[]);return o.enqueue({event_id:u(),project_id:"",trace_id:m,span_id:p,parent_span_id:c?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:O,operation:"chat",latency_ms:performance.now()-d,stream:!1,input_tokens:v??0,output_tokens:C??0,cached_tokens:0,cost_usd:x,status:"success",finish_reason:f.choices?.[0]?.finish_reason??"",tools_used:R.length>0?R:f.choices?.[0]?.message?.tool_calls?.map(j=>j.function.name)??[],tool_call_args:Object.keys(D).length?D:void 0,prompt_hash:wt(JSON.stringify(s.messages)),...o.storePrompts?(()=>{let{systemPrompt:j,conversationMessages:L}=se(s.messages??[]);return{prompt_text:o.redactForStorage(L),completion_text:o.redactForStorage(q),...j?{system_prompt:o.redactForStorage(j)}:{}}})():{},...R.length>0&&T?{decision_rationale:T}:{},...g,span_kind:"llm",tool_definitions:h,conversation_turn:S,message_role:y,metadata:{usage:f.usage??null,pricing:f.pricing??{cost_usd:x,source:M},guardrails:{pre:l?{matched:l.results.length,modified:!!l.modifiedText}:null,post:_?{matched:_.results.length,modified:!!_.modifiedText}:null},auto_detected:Object.keys(w).length?w:void 0},user_id:c?.userId,session_id:c?.sessionId,tags:c?.tags,environment:o.environment,sdk_version:b}),k&&(k.setAttribute("gen_ai.usage.input_tokens",v??0),k.setAttribute("gen_ai.usage.output_tokens",C??0),k.setAttribute("gen_ai.usage.total_tokens",(v??0)+(C??0)),k.setAttribute("gen_ai.usage.reasoning_tokens",P),k.setAttribute("gen_ai.completion",f.choices?.[0]?.message?.content||""),k.setAttribute("gen_ai.response.finish_reason",f.choices?.[0]?.finish_reason??""),k.setAttribute("gen_ai.response.latency",performance.now()-d),k.setStatus({code:fe.SpanStatusCode.OK}),k.end()),f}catch(f){let N=f instanceof V,v=N?"error":f.status===429?"rate_limited":f.status===408?"timeout":"error";throw o.enqueue({event_id:u(),project_id:"",trace_id:m,span_id:p,parent_span_id:c?.spanId,timestamp:new Date().toISOString(),provider:"openrouter",model:s.model,operation:"chat",latency_ms:performance.now()-d,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:v,error_code:N?"guardrail_blocked":String(f.status??f.code??"unknown"),error_message:String(f.message).slice(0,500),...g,span_kind:"llm",conversation_turn:S,message_role:y,metadata:{auto_detected:Object.keys(w).length?w:void 0},user_id:c?.userId,session_id:c?.sessionId,tags:c?.tags,environment:o.environment,sdk_version:b}),k&&(k.setStatus({code:fe.SpanStatusCode.ERROR,message:f.message}),k.recordException(f),k.end()),f}},a}async function*mn(a,t){let{client:n,t0:e,traceId:s,spanId:r,parent:o,model:d,operation:c,input:p}=t,m=0,i=0,l=0,_="",g,w=[],S=new Set,y={},h="",k=[],A=p?.messages??[],f=(p?.system??[]).map(v=>v.text??"").filter(Boolean),N=f.length?f.join(`
7
+ `):void 0;try{for await(let I of a){if(g||(g=performance.now()-e,n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:d,operation:c,latency_ms:g,ttft_ms:g,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",finish_reason:"stream_start",span_kind:"llm",...n.storePrompts?{prompt_text:n.redactForStorage(A),...N?{system_prompt:n.redactForStorage(N)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b})),"contentBlockStart"in I){let P=I.contentBlockStart?.start?.toolUse;P?.name&&(h=P.name,k.length=0,S.add(h))}else if("contentBlockDelta"in I){let P=I.contentBlockDelta?.delta;P?.text&&w.push(P.text),P?.toolUse?.input&&k.push(P.toolUse.input)}else if("contentBlockStop"in I){if(h){let P=k.join("");try{y[h]=JSON.parse(P)}catch{y[h]=P}h=""}}else"metadata"in I&&I.metadata?.usage?(m=I.metadata.usage.inputTokens??m,i=I.metadata.usage.outputTokens??i,l=I.metadata.usage.cacheReadInputTokens??l):"messageStop"in I&&I.messageStop?.stopReason&&(_=I.messageStop.stopReason);yield I}let v=[...S],C=w.join("");n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:d,operation:c,latency_ms:performance.now()-e,ttft_ms:g,stream:!0,input_tokens:m,output_tokens:i,cached_tokens:l,cost_usd:0,status:"success",finish_reason:_||"stream_end",span_kind:"llm",tools_used:v.length?v:void 0,tool_call_args:Object.keys(y).length?y:void 0,...v.length>0&&C?{decision_rationale:C}:{},...n.storePrompts?{prompt_text:n.redactForStorage(A),completion_text:n.redactForStorage(C),...N?{system_prompt:n.redactForStorage(N)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b})}catch(v){throw n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:d,operation:c,latency_ms:performance.now()-e,ttft_ms:g,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:String(v.$metadata?.httpStatusCode??v.name??"unknown"),error_message:String(v.message).slice(0,500),user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),v}}function gn(a,t={}){let n=a,e=t.operation??"chat",s=ee(t.guardrails,e),r=n.converse?.bind(n);r&&(n.converse=async(c,...p)=>{let m=F(),i=performance.now(),l=G(),_=u(),g=l?.traceId??u(),w=c.modelId??"amazon.nova-lite-v1:0";m.configClient&&(w=m.configClient.getModel(e,w),w!==c.modelId&&(c={...c,modelId:w}));let S=JSON.stringify(c.messages??[]);await Z(m,s,{text:S,phase:"pre",traceId:g,spanId:_,model:w,operation:e,agentName:l?.agentName});try{let y=await W({traceId:g,spanId:_,userId:l?.userId,sessionId:l?.sessionId,tags:l?.tags},()=>r(c,...p)),h=y.usage??{},k=y.output?.message?.content??[],A=k.filter(C=>C.text).map(C=>C.text).join(""),f=k.filter(C=>C.toolUse),N=f.map(C=>C.toolUse?.name).filter(Boolean),v={};for(let C of f)C.toolUse?.name&&(v[C.toolUse.name]=C.toolUse.input??{});return m.enqueue({event_id:u(),project_id:"",trace_id:g,span_id:_,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:w,operation:e,latency_ms:performance.now()-i,stream:!1,input_tokens:Number(h.inputTokens??0),output_tokens:Number(h.outputTokens??0),cached_tokens:Number(h.cacheReadInputTokens??0),status:"success",finish_reason:y.stopReason??"",span_kind:"llm",tools_used:N.length?N:void 0,tool_call_args:Object.keys(v).length?v:void 0,...m.storePrompts?{prompt_text:m.redactForStorage(c.messages??[]),completion_text:m.redactForStorage(A),...(()=>{let C=(c.system??[]).map(I=>I.text??"").filter(Boolean);return C.length?{system_prompt:m.redactForStorage(C.join(`
8
+ `))}:{}})()}:{},...N.length>0&&A?{decision_rationale:A}:{},user_id:l?.userId,session_id:l?.sessionId,tags:l?.tags,environment:m.environment,sdk_version:b}),y}catch(y){throw m.enqueue({event_id:u(),project_id:"",trace_id:g,span_id:_,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"bedrock",model:w,operation:e,latency_ms:performance.now()-i,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_code:String(y.$metadata?.httpStatusCode??y.name??"unknown"),error_message:String(y.message).slice(0,500),user_id:l?.userId,session_id:l?.sessionId,tags:l?.tags,environment:m.environment,sdk_version:b}),y}});let o=n.converseStream?.bind(n);o&&(n.converseStream=async(c,...p)=>{let m=F(),i=performance.now(),l=G(),_=u(),g=l?.traceId??u(),w=c.modelId??"amazon.nova-lite-v1:0",S=await W({traceId:g,spanId:_,userId:l?.userId,sessionId:l?.sessionId,tags:l?.tags},()=>o(c,...p));return{...S,stream:mn(S.stream,{client:m,t0:i,traceId:g,spanId:_,parent:l,model:w,operation:e,input:c})}});let d=n.send?.bind(n);return d&&(n.send=async(c,...p)=>{if(!(c?.constructor?.name==="ConverseStreamCommand"||c?.$name==="ConverseStream"))return d(c,...p);let i=F(),l=performance.now(),_=G(),g=u(),w=_?.traceId??u(),S=c?.input?.modelId??"amazon.nova-lite-v1:0",y=await W({traceId:w,spanId:g,userId:_?.userId,sessionId:_?.sessionId,tags:_?.tags},()=>d(c,...p));return{...y,stream:mn(y.stream,{client:i,t0:l,traceId:w,spanId:g,parent:_,model:S,operation:e,input:c.input})}}),a}function _n(a,t={}){let n=a,e=t.operation??"chat",s=ee(t.guardrails,e),r=n.chat.complete.bind(n.chat);n.chat.complete=async(d,...c)=>{let p=F(),m=performance.now(),i=G(),l=u(),_=i?.traceId??u(),g=d.model??"mistral-small-latest";p.configClient&&(g=p.configClient.getModel(e,g),g!==d.model&&(d={...d,model:g}));let w=JSON.stringify(d.messages??[]);await Z(p,s,{text:w,phase:"pre",traceId:_,spanId:l,model:g,operation:e});try{let S=await W({traceId:_,spanId:l,userId:i?.userId,sessionId:i?.sessionId,tags:i?.tags},()=>r(d,...c)),y=S.model??g,h=S.usage??{},k=Number(h.promptTokens??0),A=Number(h.completionTokens??0),f=S.choices?.[0]?.finishReason??"",N=S.choices?.[0]?.message?.content??"",v=S.choices?.[0]?.message?.tool_calls??[],C=v.map(x=>x.function?.name).filter(Boolean),I={};for(let x of v)if(x.function?.name)try{I[x.function.name]=JSON.parse(x.function.arguments??"{}")}catch{I[x.function.name]={}}await Z(p,s,{text:N,phase:"post",traceId:_,spanId:l,model:y,operation:e});let{systemPrompt:P,conversationMessages:O}=se(d.messages??[]);return p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:y,operation:e,latency_ms:performance.now()-m,stream:!1,input_tokens:k,output_tokens:A,status:"success",finish_reason:f,span_kind:"llm",tools_used:C.length?C:void 0,tool_call_args:Object.keys(I).length?I:void 0,...p.storePrompts?{prompt_text:p.redactForStorage(O),completion_text:p.redactForStorage(N),...P?{system_prompt:p.redactForStorage(P)}:{}}:{},...C.length>0&&N?{decision_rationale:N}:{},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b}),S}catch(S){throw p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:g,operation:e,latency_ms:performance.now()-m,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_message:String(S.message).slice(0,500),user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b}),S}};let o=n.chat.stream?.bind(n.chat);return o&&(n.chat.stream=async function*(d,...c){let p=F(),m=performance.now(),i=G(),l=u(),_=i?.traceId??u(),g=d.model??"mistral-small-latest";p.configClient&&(g=p.configClient.getModel(e,g),g!==d.model&&(d={...d,model:g}));let w=0,S=0,y="",h,k="",A=[],f=[],{systemPrompt:N,conversationMessages:v}=se(d.messages??[]);try{let C=await W({traceId:_,spanId:l,userId:i?.userId,sessionId:i?.sessionId,tags:i?.tags},()=>o(d,...c));for await(let x of C){h||(h=performance.now()-m,p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:g,operation:e,latency_ms:h,ttft_ms:h,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",finish_reason:"stream_start",span_kind:"llm",...p.storePrompts?{prompt_text:p.redactForStorage(v),...N?{system_prompt:p.redactForStorage(N)}:{}}:{},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b}));let M=x.data?.choices?.[0]?.delta?.content;if(M&&(S++,k+=M),x.data?.usage&&(w=x.data.usage.promptTokens??w,S=x.data.usage.completionTokens??S),x.data?.choices?.[0]?.finishReason&&(y=x.data.choices[0].finishReason),x.data?.model&&(g=x.data.model),x.data?.choices?.[0]?.delta?.tool_calls)for(let T of x.data.choices[0].delta.tool_calls)f.push(T),T.function?.name&&!A.includes(T.function.name)&&A.push(T.function.name);yield x}let{tools_used:I,tool_call_args:P}=ke(f),O=I.length>0?I:A;p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:g,operation:e,latency_ms:performance.now()-m,ttft_ms:h,stream:!0,input_tokens:w,output_tokens:S,cost_usd:0,status:"success",finish_reason:y||"stream_end",span_kind:"llm",tools_used:O.length?O:void 0,tool_call_args:Object.keys(P).length?P:void 0,...O.length>0&&k?{decision_rationale:k}:{},...p.storePrompts?{prompt_text:p.redactForStorage(v),completion_text:p.redactForStorage(k),...N?{system_prompt:p.redactForStorage(N)}:{}}:{},user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b})}catch(C){throw p.enqueue({event_id:u(),project_id:"",trace_id:_,span_id:l,parent_span_id:i?.spanId,timestamp:new Date().toISOString(),provider:"mistral",model:g,operation:e,latency_ms:performance.now()-m,ttft_ms:h,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_message:String(C.message).slice(0,500),user_id:i?.userId,session_id:i?.sessionId,tags:i?.tags,environment:p.environment,sdk_version:b}),C}}),a}var hn=require("crypto");var fn=a=>(0,hn.createHash)("sha256").update(a).digest("hex");async function*us(a,t){let{client:n,t0:e,traceId:s,spanId:r,parent:o,params:d,model:c,operation:p}=t,m,i=0,l=0,_=0,g="",w="",S=c,y=[],h=[],{systemPrompt:k,conversationMessages:A}=se(d.messages??[]);try{for await(let C of a){m||(m=performance.now()-e,n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:S,operation:p,latency_ms:m,ttft_ms:m,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",prompt_hash:fn(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(A),...k?{system_prompt:n.redactForStorage(k)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b,finish_reason:"stream_start",span_kind:"llm"}));let I=C.choices?.[0]?.delta?.content;if(I&&(l++,w+=I),C.choices?.[0]?.finish_reason&&(g=C.choices[0].finish_reason),C.model&&(S=C.model),C.usage&&(i=Number(C.usage.prompt_tokens||i||0),l=Number(C.usage.completion_tokens||l||0),_=Number(C.usage.prompt_tokens_details?.cached_tokens||_||0)),C.choices?.[0]?.delta?.tool_calls)for(let P of C.choices[0].delta.tool_calls)h.push(P),P.function?.name&&!y.includes(P.function.name)&&y.push(P.function.name);yield C}let{tools_used:f,tool_call_args:N}=ke(h),v=f.length>0?f:y;n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:S,operation:p,latency_ms:performance.now()-e,ttft_ms:m,stream:!0,input_tokens:i,output_tokens:l,cached_tokens:_,status:"success",finish_reason:g||"stream_end",tools_used:v.length?v:void 0,tool_call_args:Object.keys(N).length?N:void 0,...v.length>0&&w?{decision_rationale:w}:{},prompt_hash:fn(JSON.stringify(d.messages)),...n.storePrompts?{prompt_text:n.redactForStorage(A),completion_text:n.redactForStorage(w),...k?{system_prompt:n.redactForStorage(k)}:{}}:{},user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b,span_kind:"llm"})}catch(f){throw n.enqueue({event_id:u(),project_id:"",trace_id:s,span_id:r,parent_span_id:o?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:S,operation:p,latency_ms:performance.now()-e,ttft_ms:m,stream:!0,input_tokens:0,output_tokens:l,cost_usd:0,status:"error",error_message:String(f.message).slice(0,500),user_id:o?.userId,session_id:o?.sessionId,tags:o?.tags,environment:n.environment,sdk_version:b}),f}}function yn(a,t={}){let n=a,e=n.chat.completions.create.bind(n.chat.completions),s=t.operation??"chat";return n.chat.completions.create=async(r,...o)=>{let d=F(),c=performance.now(),p=G(),m=u(),i=p?.traceId??u(),l=r.model??"llama-3.3-70b-versatile";d.configClient&&(l=d.configClient.getModel(s,l),l!==r.model&&(r={...r,model:l}));try{let _=await W({traceId:i,spanId:m,userId:p?.userId,sessionId:p?.sessionId,tags:p?.tags},()=>e(r,...o));if(r.stream)return us(_,{client:d,t0:c,traceId:i,spanId:m,parent:p,params:r,model:l,operation:s});let g=_.usage??{},w=Number(g.prompt_tokens??0),S=Number(g.completion_tokens??0),y=_.choices?.[0]?.finish_reason??"",h=_.choices?.[0]?.message?.content??"",k=_.choices?.[0]?.message?.tool_calls??[],A=k.map(C=>C.function?.name).filter(Boolean),f={};for(let C of k)if(C.function?.name)try{f[C.function.name]=JSON.parse(C.function.arguments??"{}")}catch{f[C.function.name]={}}let{systemPrompt:N,conversationMessages:v}=se(r.messages??[]);return d.enqueue({event_id:u(),project_id:"",trace_id:i,span_id:m,parent_span_id:p?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:l,operation:s,latency_ms:performance.now()-c,stream:!1,input_tokens:w,output_tokens:S,status:"success",finish_reason:y,span_kind:"llm",tools_used:A.length?A:void 0,tool_call_args:Object.keys(f).length?f:void 0,...d.storePrompts?{prompt_text:d.redactForStorage(v),completion_text:d.redactForStorage(h),...N?{system_prompt:d.redactForStorage(N)}:{}}:{},...A.length>0&&h?{decision_rationale:h}:{},user_id:p?.userId,session_id:p?.sessionId,tags:p?.tags,environment:d.environment,sdk_version:b}),_}catch(_){throw d.enqueue({event_id:u(),project_id:"",trace_id:i,span_id:m,parent_span_id:p?.spanId,timestamp:new Date().toISOString(),provider:"groq",model:l,operation:s,latency_ms:performance.now()-c,stream:!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",error_message:String(_.message).slice(0,500),user_id:p?.userId,session_id:p?.sessionId,tags:p?.tags,environment:d.environment,sdk_version:b}),_}},a}function kn(a,t={}){let n=require("openai").default??require("openai"),e=new n({baseURL:a.baseURL,apiKey:a.apiKey??"litellm"});return De(e,{...t,providerOverride:"litellm"})}var vn=require("@langchain/core/callbacks/base");var wn=require("crypto");var Ct=a=>(0,wn.createHash)("sha256").update(a).digest("hex"),ps=/\bstep\s+\d+[:\s]|\bfirst,?\s+(?:I|we|let)|\bthen,?\s+(?:I|we)|\bfinally,?\s+(?:I|we)|\blet me think|\blet'?s break (?:this |it )?down|\bthink(?:ing)? step by step|\bmy (?:plan|approach|strategy)|\bI'?ll start by|<thinking>|<scratchpad>|\bchain.of.thought/i,In=["AgentExecutor","ReactAgent","ToolCallingAgent"],Sn=["DynamicStructuredTool","StructuredTool","DynamicTool","Tool"],Fe=class extends vn.BaseCallbackHandler{name="ZespanCallbackHandler";guardrailSettings=ee(void 0,"chat");runs=new Map;constructor(t={}){super(),this.guardrailSettings=ee(t.guardrails,"chat")}detectProvider(t){let n=t.toLowerCase();return/gpt|o1-|o3-|davinci|turbo|whisper|dall-e/i.test(n)?"openai":/claude/i.test(n)?"anthropic":/gemini|palm|bard/i.test(n)?"google":/llama|codellama/i.test(n)?"meta":/mistral|mixtral/i.test(n)?"mistralai":/deepseek/i.test(n)?"deepseek":/command/i.test(n)?"cohere":/qwen/i.test(n)?"alibaba":"langchain"}extractToolCalls(t){try{let n=t?.generations?.[0];if(!Array.isArray(n))return[];let e=n[0]?.message;if(!e)return[];let s=e.tool_calls;if(Array.isArray(s)&&s.length>0)return s.map(d=>({name:d.name??"unknown",args:d.args??{},id:d.id}));let r=e.additional_kwargs?.tool_calls;if(Array.isArray(r)&&r.length>0)return r.map(d=>({name:d.function?.name??"unknown",args:d.function?.arguments?JSON.parse(d.function.arguments):{},id:d.id}));let o=e.additional_kwargs?.function_call;return o?[{name:o.name??"unknown",args:o.arguments?JSON.parse(o.arguments):{}}]:[]}catch{return[]}}detectConversationInfo(t,n,e){let s=n?._zespan_message_count;if(typeof s=="number"&&s>0)return{turns:s,hasMemory:s>2};let r=n?.invocation_params?.messages;if(Array.isArray(r))return{turns:r.length,hasMemory:r.length>2};let d=((e??JSON.stringify(t)).match(/"role"\s*:/g)||[]).length;return d>0?{turns:d,hasMemory:d>2}:{turns:t.length,hasMemory:!1}}detectAgentFromPrompts(t,n,e){try{let s=(e??JSON.stringify(t))+JSON.stringify(n?.invocation_params?.messages??[])+JSON.stringify(n?._zespan_structured_messages??[]),r=[/you are (?:a |an |the )?([A-Z][A-Za-z]*(?:[_\s][A-Z][A-Za-z]*){0,3}(?:Agent|Bot|Assistant|AI|Specialist|Expert|Analyzer|Manager|Coordinator))/i,/act as (?:a |an |the )?([A-Z][A-Za-z]*(?:[_\s][A-Z][A-Za-z]*){0,3}(?:Agent|Bot|Assistant|AI))/i,/agent[_\s]?name["'\s:=]+["']?([A-Za-z][A-Za-z_\-]+)/i,/role["'\s:=]+["']?([A-Za-z]+(?:Agent|Bot|Assistant))/i,/name["'\s:=]+["']?([A-Za-z]+Agent)/i];for(let o of r){let d=s.match(o);if(d?.[1])return d[1].trim().replace(/[\s]+/g,"_")}return}catch{return}}detectPlanning(t,n){try{let e=t+" "+JSON.stringify(n);if(!ps.test(e))return{detected:!1};let r=/(?:step\s+\d+[:\s]|^\d+[\.\)]\s+)(.+)/gim,o=[],d;for(;(d=r.exec(t))!==null&&(d[1]&&o.push(d[1].trim().slice(0,200)),!(o.length>=10)););return{detected:!0,steps:o.length>0?o:void 0}}catch{return{detected:!1}}}extractCompletion(t){let n=t?.generations;if(!Array.isArray(n)||n.length===0)return"";let e=n[0];if(!Array.isArray(e)||e.length===0)return"";let s=e[0];if(typeof s?.text=="string")return s.text;let r=s?.message?.content;return typeof r=="string"?r:Array.isArray(r)?r.map(o=>typeof o?.text=="string"?o.text:"").filter(Boolean).join(`
9
+ `):""}async handleChatModelStart(t,n,e,s,r,o,d,c){try{let p=n.map(i=>i.map(l=>{let _=l._getType?.()??l.role??"unknown",g=typeof l.content=="string"?l.content:JSON.stringify(l.content);return`${_}: ${g}`}).join(`
10
+ `)),m=n[0]?.map(i=>({role:i._getType?.()??i.role??"unknown",content:typeof i.content=="string"?i.content:JSON.stringify(i.content),tool_calls:i.tool_calls??i.additional_kwargs?.tool_calls}));await this.handleLLMStart(t,p,e,s,{...r,_zespan_structured_messages:m,_zespan_message_count:n[0]?.length??0})}catch{}}async handleLLMStart(t,n,e,s,r){try{let o=G(),d=F(),c=s?this.runs.get(s):void 0,p=u();ue(p);let m=c?.traceId??o?.traceId??u(),i=r?.invocation_params?.model??r?.invocation_params?.model_name??t.kwargs?.model??t.kwargs?.modelName??t.id?.[t.id.length-1]??"unknown",l=r?.invocation_params?.stream===!0,_=c?.spanKind==="agent"?c.agentId:void 0,g=c?.spanKind==="agent"?c.agentName:void 0,w=JSON.stringify(n),S=Ct(w);if(!g){let f=this.detectAgentFromPrompts(n,r,w);f&&(g=f,_=_??u())}let y=r?.invocation_params?.tools??r?.invocation_params?.functions??[],h=y.map(f=>f.function?.name??f.name??"unknown").filter(Boolean),k=this.detectConversationInfo(n,r,w),A=await Z(d,this.guardrailSettings,{text:w,phase:"pre",traceId:m,spanId:p,model:i,operation:"chat"});this.runs.set(e,{t0:performance.now(),traceId:m,spanId:p,parentSpanId:c?.spanId??o?.spanId,model:i,agentId:_,agentName:g,spanKind:"llm",isStreaming:l,parent:o,prompts:n,promptHash:S,structuredMessages:r?._zespan_structured_messages,invocationParams:r?.invocation_params,preGuardrailResult:A,toolsAvailable:h,toolSchemas:d.storePrompts?y:void 0,conversationTurns:k.turns,hasMemory:k.hasMemory})}catch(o){if(o instanceof V)throw o}}async handleLLMNewToken(t,n,e){try{let s=this.runs.get(e);if(!s||s.ttft!==void 0)return;s.ttft=performance.now()-s.t0;let r=F();r.enqueue({event_id:u(),project_id:"",trace_id:s.traceId,span_id:s.spanId,parent_span_id:s.parentSpanId,timestamp:new Date().toISOString(),provider:this.detectProvider(s.model),model:s.model,operation:"chat",latency_ms:s.ttft,ttft_ms:s.ttft,stream:!0,input_tokens:0,output_tokens:0,cost_usd:0,status:"success",span_kind:"llm",agent_id:s.agentId,agent_name:s.agentName,prompt_hash:s.promptHash??Ct(JSON.stringify(s.prompts)),...r.storePrompts?(()=>{let{systemPrompt:o,conversationMessages:d}=se(s.structuredMessages??[]);return{prompt_text:r.redactForStorage(d.length?d:s.prompts),...o?{system_prompt:r.redactForStorage(o)}:{}}})():{},metadata:{invocation_params:s.invocationParams??null},user_id:s.parent?.userId,session_id:s.parent?.sessionId,tags:s.parent?.tags,environment:r.environment,sdk_version:b,finish_reason:"stream_start"})}catch{}}async handleLLMEnd(t,n){try{let e=this.runs.get(n);if(!e)return;re(e.spanId),this.runs.delete(n);let s=F(),r=t.llmOutput?.tokenUsage?.promptTokens??t.llmOutput?.usageMetadata?.promptTokenCount??0,o=t.llmOutput?.tokenUsage?.completionTokens??t.llmOutput?.usageMetadata?.candidatesTokenCount??0,d=performance.now()-e.t0,c=this.extractCompletion(t),p=this.extractToolCalls(t),m=t.llmOutput?.tokenUsage?.reasoningTokens??t.llmOutput?.usage?.completion_tokens_details?.reasoning_tokens??t.llmOutput?.reasoningTokens??t.llmOutput?.usageMetadata?.thoughtsTokenCount??0,i=t.llmOutput?.tokenUsage?.cachedTokens??t.llmOutput?.usage?.prompt_tokens_details?.cached_tokens??t.llmOutput?.usageMetadata?.cachedContentTokenCount??0,l=this.detectPlanning(c,e.prompts),_=t.generations?.[0]?.[0]?.generationInfo?.finish_reason??t.generations?.[0]?.[0]?.generationInfo?.finishReason??t.llmOutput?.finish_reason??(e.isStreaming?"stream_end":"stop"),g=await Z(s,this.guardrailSettings,{text:c,phase:"post",traceId:e.traceId,spanId:e.spanId,model:e.model,operation:"chat"}),w=oe(c,g);s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:this.detectProvider(e.model),model:e.model,operation:"chat",latency_ms:d,ttft_ms:e.ttft,stream:e.isStreaming??!1,input_tokens:r,output_tokens:o,status:"success",span_kind:"llm",agent_id:e.agentId,agent_name:e.agentName,finish_reason:_,prompt_hash:e.promptHash??Ct(JSON.stringify(e.prompts)),tools_defined:e.toolsAvailable?.length?e.toolsAvailable:void 0,tools_used:p.length>0?p.map(S=>S.name):void 0,tool_calls:p.length>0?p:void 0,conversation_turns:e.conversationTurns,has_memory:e.hasMemory,reasoning_tokens:m>0?m:void 0,has_reasoning:m>0?!0:void 0,cached_tokens:i>0?i:void 0,has_planning:l.detected||void 0,planning_steps:l.steps,...s.storePrompts?(()=>{let{systemPrompt:S,conversationMessages:y}=se(e.structuredMessages??[]);return{prompt_text:s.redactForStorage(y.length?y:e.prompts),completion_text:s.redactForStorage(w),...S?{system_prompt:s.redactForStorage(S)}:{}}})():{},metadata:{usage:t?.llmOutput?.tokenUsage??null,llm_output:t?.llmOutput??null,invocation_params:e.invocationParams??null,guardrails:{pre:e.preGuardrailResult?{matched:e.preGuardrailResult.results.length,modified:!!e.preGuardrailResult.modifiedText}:null,post:g?{matched:g.results.length,modified:!!g.modifiedText}:null}},user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}catch{}}async handleLLMError(t,n){try{let e=this.runs.get(n);if(!e)return;re(e.spanId),this.runs.delete(n);let s=F();s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:this.detectProvider(e.model),model:e.model,operation:"chat",latency_ms:performance.now()-e.t0,ttft_ms:e.ttft,stream:e.isStreaming??!1,input_tokens:0,output_tokens:0,cost_usd:0,status:"error",span_kind:"llm",agent_id:e.agentId,agent_name:e.agentName,error_code:t instanceof V?"guardrail_blocked":void 0,error_message:String(t.message).slice(0,1e3),user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}catch{}}async handleChainStart(t,n,e,s){try{let r=G(),o=s?this.runs.get(s):void 0,d=u(),c=o?.traceId??r?.traceId??u(),p=Array.isArray(t?.id)?t.id:[],m=p.some(k=>In.includes(k)),i=!m&&p.some(k=>Sn.includes(k)),l=m?"agent":i?"tool":"general",_=m?u():void 0,g=m?p.find(k=>In.includes(k))??void 0:void 0,w=i?t.name??t.kwargs?.name??p.find(k=>Sn.includes(k)):void 0,S=i?JSON.stringify(n):void 0,y=o?.spanKind==="agent"?o.agentId:void 0,h=o?.spanKind==="agent"?o.agentName:void 0;this.runs.set(e,{t0:performance.now(),traceId:c,spanId:d,parentSpanId:o?.spanId??r?.spanId,model:"",agentId:_??o?.agentId,agentName:g??o?.agentName,spanKind:l,toolName:w,toolInput:S,prompts:[],parent:r,delegatedFromAgentId:y,delegatedFromAgentName:h})}catch{}}async handleChainEnd(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();if(e.spanKind==="tool"){let r=t?.output??t,o=typeof r=="string"?r:JSON.stringify(r);s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:`tool.${e.toolName??"unknown"}`,latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"success",span_kind:"tool",agent_id:e.agentId,agent_name:e.agentName,tools_used:e.toolName?[e.toolName]:[],tool_call_id:e.spanId,tool_call_args:e.toolInput?JSON.parse(e.toolInput):void 0,tool_call_result:o.slice(0,10240),stream:!1,finish_reason:"stop",user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}else s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:"chain",latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"success",span_kind:e.spanKind,agent_id:e.agentId,agent_name:e.agentName,stream:!1,finish_reason:"stop",delegation_from_agent_id:e.delegatedFromAgentId,delegation_from_agent_name:e.delegatedFromAgentName,user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}catch{}}async handleChainError(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:e.spanKind==="tool"?`tool.${e.toolName??"unknown"}`:"chain",latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"error",span_kind:e.spanKind,agent_id:e.agentId,agent_name:e.agentName,tools_used:e.spanKind==="tool"&&e.toolName?[e.toolName]:void 0,tool_call_id:e.spanKind==="tool"?e.spanId:void 0,tool_call_args:e.spanKind==="tool"&&e.toolInput?JSON.parse(e.toolInput):void 0,error_message:String(t?.message??t).slice(0,1e3),stream:!1,delegation_from_agent_id:e.delegatedFromAgentId,delegation_from_agent_name:e.delegatedFromAgentName,user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}catch{}}async handleToolStart(t,n,e,s){try{let r=G(),o=s?this.runs.get(s):void 0,d=u(),c=o?.traceId??r?.traceId??u(),p=t.id?.[t.id.length-1]??"unknown_tool",m=t.name||t.kwargs?.name||p;this.runs.set(e,{t0:performance.now(),traceId:c,spanId:d,parentSpanId:o?.spanId??r?.spanId,model:"",agentId:o?.agentId,agentName:o?.agentName,spanKind:"tool",toolName:m,toolInput:n,prompts:[],parent:r})}catch{}}async handleToolEnd(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F(),o=(typeof t=="string"?t:JSON.stringify(t)).slice(0,10240);s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:`tool.${e.toolName??"unknown"}`,latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"success",span_kind:"tool",agent_id:e.agentId,agent_name:e.agentName,tools_used:e.toolName?[e.toolName]:[],tool_call_id:e.spanId,tool_call_args:e.toolInput?{input:e.toolInput}:void 0,tool_call_result:o,stream:!1,finish_reason:"stop",user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}catch{}}async handleToolError(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:`tool.${e.toolName??"unknown"}`,latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"error",span_kind:"tool",agent_id:e.agentId,agent_name:e.agentName,tools_used:e.toolName?[e.toolName]:[],error_message:String(t?.message??t).slice(0,1e3),stream:!1,user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}catch{}}async handleAgentAction(t,n){try{let e=this.runs.get(n),s=G(),r=F(),o=e?.traceId??s?.traceId??u(),d=u(),c=[t?.tool??"",typeof t?.toolInput=="string"?t.toolInput:JSON.stringify(t?.toolInput??""),t?.log??""].join(" | ");r.enqueue({event_id:u(),project_id:"",trace_id:o,span_id:d,parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:"planning",latency_ms:0,input_tokens:0,output_tokens:0,status:"success",span_kind:"planning",agent_id:e?.agentId,agent_name:e?.agentName,planning_steps:[c],...t?.log?{decision_rationale:t.log}:{},stream:!1,user_id:e?.parent?.userId??s?.userId,session_id:e?.parent?.sessionId??s?.sessionId,tags:e?.parent?.tags??s?.tags,environment:r.environment,sdk_version:b})}catch{}}async handleRetrieverStart(t,n,e,s){try{let r=G(),o=s?this.runs.get(s):void 0,d=u(),c=o?.traceId??r?.traceId??u();this.runs.set(e,{t0:performance.now(),traceId:c,spanId:d,parentSpanId:o?.spanId??r?.spanId,model:"",agentId:o?.agentId,agentName:o?.agentName,spanKind:"retriever",query:n,prompts:[],parent:r})}catch{}}async handleRetrieverEnd(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:"retriever",latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"success",span_kind:"retriever",agent_id:e.agentId,agent_name:e.agentName,stream:!1,finish_reason:"stop",metadata:{"zespan.rag.contexts":Array.isArray(t)?t:[]},user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}catch{}}async handleRetrieverError(t,n){try{let e=this.runs.get(n);if(!e)return;this.runs.delete(n);let s=F();s.enqueue({event_id:u(),project_id:"",trace_id:e.traceId,span_id:e.spanId,parent_span_id:e.parentSpanId,timestamp:new Date().toISOString(),provider:"langchain",model:"",operation:"retriever",latency_ms:performance.now()-e.t0,input_tokens:0,output_tokens:0,status:"error",span_kind:"retriever",agent_id:e.agentId,agent_name:e.agentName,error_message:String(t?.message??t).slice(0,1e3),stream:!1,user_id:e.parent?.userId,session_id:e.parent?.sessionId,tags:e.parent?.tags,environment:s.environment,sdk_version:b})}catch{}}};function bn(a){let t=a?.model;return typeof t=="string"?t:t&&typeof t=="object"?t.model??t.name??"gemini-2.5-flash":"gemini-2.5-flash"}function ms(a){let t=a??{};return{input:Number(t.promptTokenCount??t.inputTokenCount??0),output:Number(t.candidatesTokenCount??t.outputTokenCount??0),cached:Number(t.cachedContentTokenCount??0),reasoning:Number(t.thoughtsTokenCount??t.reasoningTokenCount??0)}}var Ge=class{agentStates=new Map;pendingModelCalls=new Map;toolCallStates=new Map;agentKey(t,n){return`${t}:${n}`}getParentAgentState(t,n){if(n)return this.agentStates.get(this.agentKey(t,n))}beforeAgentCallback=t=>{try{let n=t.invocationId,e=t.agentName,s=t.invocationContext?.agent?.parentAgent?.name,r=G(),o=this.getParentAgentState(n,s),d=o?.traceId??r?.traceId??u(),c=u(),p=o?.spanId??r?.spanId,m=u(),i=bn(t.invocationContext?.agent),l=t.userId||r?.userId,_=t.sessionId||r?.sessionId;this.agentStates.set(this.agentKey(n,e),{t0:performance.now(),traceId:d,spanId:c,parentSpanId:p,agentId:m,agentName:e,model:i,userId:l,sessionId:_,parentAgentId:o?.agentId,parentAgentName:s})}catch{}};afterAgentCallback=t=>{try{let n=t.invocationId,e=t.agentName,s=this.agentKey(n,e),r=this.agentStates.get(s);if(!r)return;this.agentStates.delete(s);let o=!r.parentAgentName,d=F();d.enqueue({event_id:u(),project_id:"",trace_id:r.traceId,span_id:r.spanId,parent_span_id:r.parentSpanId,timestamp:new Date().toISOString(),provider:"google-adk",model:r.model,operation:`agent.${e}`,span_kind:"agent",agent_id:r.agentId,agent_name:e,agent_role:o?"coordinator":"specialist",agent_framework:"google-adk",parent_agent_id:r.parentAgentId,delegation_from_agent_id:r.parentAgentId,delegation_from_agent_name:r.parentAgentName,latency_ms:performance.now()-r.t0,stream:!1,input_tokens:0,output_tokens:0,status:"success",user_id:r.userId,session_id:r.sessionId,environment:d.environment,sdk_version:b})}catch{}};beforeModelCallback=({context:t,request:n})=>{try{let e=t.invocationId,s=t.agentName,r=this.agentStates.get(this.agentKey(e,s)),o=r?.traceId??u(),d=bn(t.invocationContext?.agent),c=n?.config?.systemInstruction,p;if(c){let l=typeof c=="string"?c:(c?.parts??[]).filter(_=>_?.text).map(_=>_.text).join("");l&&(p=l)}let m,i=n?.contents??[];if(i.length){let l=i.map(_=>{let g=_?.role??"user",w=(_?.parts??[]).filter(S=>typeof S?.text=="string"&&!S.thought).map(S=>S.text).join("");return w?`${g}: ${w}`:""}).filter(Boolean).join(`
11
+ `);l&&(m=l)}this.pendingModelCalls.set(this.agentKey(e,s),{t0:performance.now(),spanId:u(),traceId:o,parentSpanId:r?.spanId??"",model:d,agentId:r?.agentId,agentName:s,userId:r?.userId??t.userId,sessionId:r?.sessionId??t.sessionId,promptText:m,systemPrompt:p})}catch{}};afterModelCallback=({context:t,response:n})=>{try{let e=t.invocationId,s=t.agentName,r=this.agentKey(e,s),o=this.pendingModelCalls.get(r);if(!o)return;this.pendingModelCalls.delete(r);let{input:d,output:c,cached:p,reasoning:m}=ms(n?.usageMetadata),i=n?.content?.parts??[],l=i.filter(w=>typeof w?.text=="string"&&!w.thought).map(w=>w.text).join(""),_=i.filter(w=>w?.functionCall?.name).map(w=>w.functionCall.name),g=F();g.enqueue({event_id:u(),project_id:"",trace_id:o.traceId,span_id:o.spanId,parent_span_id:o.parentSpanId,timestamp:new Date().toISOString(),provider:"google",model:o.model,operation:"chat",span_kind:"llm",agent_id:o.agentId,agent_name:o.agentName,agent_framework:"google-adk",latency_ms:performance.now()-o.t0,stream:!1,input_tokens:d,output_tokens:c,cached_tokens:p||void 0,reasoning_tokens:m||void 0,finish_reason:n?.finishReason??"stop",tools_used:_.length?_:void 0,status:n?.errorCode?"error":"success",error_message:n?.errorMessage,...g.storePrompts&&o.systemPrompt?{system_prompt:g.redactForStorage(o.systemPrompt)}:{},...g.storePrompts&&o.promptText?{prompt_text:g.redactForStorage(o.promptText)}:{},...g.storePrompts&&l?{completion_text:g.redactForStorage(l)}:{},user_id:o.userId,session_id:o.sessionId,environment:g.environment,sdk_version:b})}catch{}};beforeToolCallback=({tool:t,args:n,context:e})=>{try{let s=e.invocationId,r=e.agentName,o=e.functionCallId??u(),d=this.agentStates.get(this.agentKey(s,r));this.toolCallStates.set(o,{t0:performance.now(),spanId:u(),traceId:d?.traceId??u(),parentSpanId:d?.spanId??"",toolName:t?.name??"unknown_tool",args:n??{},agentId:d?.agentId,agentName:r,userId:d?.userId??e.userId,sessionId:d?.sessionId??e.sessionId})}catch{}};afterToolCallback=({tool:t,args:n,context:e,response:s})=>{try{let r=e.functionCallId??"",o=this.toolCallStates.get(r);if(!o)return;this.toolCallStates.delete(r);let d=F();d.enqueue({event_id:u(),project_id:"",trace_id:o.traceId,span_id:o.spanId,parent_span_id:o.parentSpanId,timestamp:new Date().toISOString(),provider:"google-adk",model:"",operation:`tool.${o.toolName}`,span_kind:"tool",agent_id:o.agentId,agent_name:o.agentName,agent_framework:"google-adk",latency_ms:performance.now()-o.t0,stream:!1,input_tokens:0,output_tokens:0,status:"success",tools_used:[o.toolName],tool_call_id:r,tool_call_args:o.args,tool_call_result:JSON.stringify(s??{}).slice(0,10240),user_id:o.userId,session_id:o.sessionId,environment:d.environment,sdk_version:b})}catch{}};get callbacks(){return{beforeAgentCallback:this.beforeAgentCallback,afterAgentCallback:this.afterAgentCallback,beforeModelCallback:this.beforeModelCallback,afterModelCallback:this.afterModelCallback,beforeToolCallback:this.beforeToolCallback,afterToolCallback:this.afterToolCallback}}};var xn=require("crypto");var xt=a=>(0,xn.createHash)("sha256").update(typeof a=="string"?a:JSON.stringify(a)).digest("hex");function gs(a){return a?.model??a?.config?.model??a?.llmConfig?.model??a?.generativeModel?.model??"gemini-2.5-flash"}function Tn(a){let t=a?.usageMetadata??a?.usage_metadata??{},n=a?.usage??{};return{input:Number(t.inputTokenCount??t.promptTokenCount??n.input_tokens??n.prompt_tokens??0),output:Number(t.outputTokenCount??t.candidatesTokenCount??n.output_tokens??n.completion_tokens??0),cached:Number(t.cachedContentTokenCount??n.cached_tokens??0),reasoning:Number(t.reasoningTokenCount??t.thinking_token_count??n.reasoning_tokens??0)}}function _s(a){if(typeof a?.text=="string")return a.text;if(typeof a?.output=="string")return a.output;let n=(a?.candidates?.[0]?.content?.parts??a?.content?.parts??[]).map(e=>typeof e?.text=="string"?e.text:"").filter(Boolean).join("");return n||(a&&typeof a=="object"?JSON.stringify(a):"")}function fs(a){let t=[];try{let n=a?.candidates?.[0]?.content?.parts??a?.content?.parts??[];for(let e of n)e?.functionCall?.name&&t.push({name:e.functionCall.name,args:e.functionCall.args??{}});for(let e of a?.toolCalls??[])e?.name&&t.push({name:e.name,args:e.args??e.arguments??{}})}catch{}return t}function On(a){if(a instanceof V)return"guardrail_blocked";let t=String(a?.message??"").toLowerCase();if(/rate.?limit|quota|429/.test(t))return"rate_limited";if(/context.?length|too.?long|max.?token/.test(t))return"context_length";if(/timeout|timed?.?out/.test(t))return"timeout";if(/safety|blocked|harm/.test(t))return"content_filter"}function qe(a,t={}){let n=a;if(typeof n?.run!="function")return a;let e=n.run.bind(n),s=ee(t.guardrails,"agent"),r=t.agentName??n.name??"ADKAgent",o=t.agentRole??(n.subAgents?.length?"coordinator":"specialist"),d=gs(n);return t.traceSubAgents!==!1&&Array.isArray(n.subAgents)&&(n.subAgents=n.subAgents.map(c=>qe(c,{...t,agentRole:"specialist",traceSubAgents:!0}))),n.run=async(c,p)=>{let m=F(),i=performance.now(),l=G(),_=u(),g=u(),w=l?.traceId??u(),S=t.sessionId??l?.sessionId,y=typeof c=="string"?c:JSON.stringify(c??"");return W({traceId:w,spanId:g,userId:l?.userId,sessionId:S,tags:l?.tags,agentId:_,agentName:r,agentRole:o,agentFramework:"google-adk",parentAgentId:l?.agentId},async()=>{try{let h=await Z(m,s,{text:y,phase:"pre",traceId:w,spanId:g,model:d,operation:"agent"}),k=await e(c,p),{input:A,output:f,cached:N,reasoning:v}=Tn(k),C=_s(k),I=fs(k),P=k?.candidates?.[0]?.finishReason??k?.finish_reason,O=await Z(m,s,{text:C,phase:"post",traceId:w,spanId:g,model:d,operation:"agent"}),x=oe(C,O);return m.enqueue({event_id:u(),project_id:"",trace_id:w,span_id:g,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:d,operation:"agent",span_kind:"agent",agent_id:_,agent_name:r,agent_role:o,agent_framework:"google-adk",parent_agent_id:l?.agentId,delegation_from_agent_id:l?.agentId,delegation_from_agent_name:l?.agentName,latency_ms:performance.now()-i,stream:!1,input_tokens:A,output_tokens:f,cached_tokens:N||void 0,reasoning_tokens:v||void 0,status:"success",finish_reason:P,tools_used:I.length?I.map(M=>M.name):void 0,tool_call_args:I.length?Object.fromEntries(I.map(M=>[M.name,M.args])):void 0,prompt_hash:xt(y),...m.storePrompts?{prompt_text:m.redactForStorage(y),completion_text:m.redactForStorage(x)}:{},...I.length>0&&C?{decision_rationale:C}:{},user_id:l?.userId,session_id:S,tags:l?.tags,environment:m.environment,sdk_version:b,metadata:{guardrails:{pre:h?{matched:h.results.length,modified:!!h.modifiedText}:null,post:O?{matched:O.results.length,modified:!!O.modifiedText}:null}}}),k}catch(h){throw m.enqueue({event_id:u(),project_id:"",trace_id:w,span_id:g,parent_span_id:l?.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:d,operation:"agent",span_kind:"agent",agent_id:_,agent_name:r,agent_role:o,agent_framework:"google-adk",parent_agent_id:l?.agentId,latency_ms:performance.now()-i,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:On(h),error_message:String(h?.message??h).slice(0,500),user_id:l?.userId,session_id:S,tags:l?.tags,environment:m.environment,sdk_version:b}),h}})},a}function it(a,t={}){let n=a;if(typeof n?.runEphemeral=="function"){let e=n.runEphemeral.bind(n);n.runEphemeral=s=>Cn(e(s),s,t)}if(typeof n?.run=="function"){let e=n.run.bind(n);n.run=s=>Cn(e(s),s,t)}return a}async function*Cn(a,t,n){let e=F(),s=G(),r=s?.traceId??u(),o=u(),d=u(),c=performance.now(),p=n.agentName??"ADKAgent",m=n.agentRole??"coordinator",i=n.model??"gemini-2.5-flash",l=t?.userId??s?.userId,_=n.sessionId??t?.sessionId??s?.sessionId,g=(t?.newMessage?.parts??[]).map(v=>typeof v?.text=="string"?v.text:"").filter(Boolean).join(""),w=new Map,S=new Map,y=new Set,h="",k=0,A=0,f=0,N=0;ue(o);try{yield*W({traceId:r,spanId:o,userId:l,sessionId:_,tags:s?.tags,agentId:d,agentName:p,agentRole:m,agentFramework:"google-adk",parentAgentId:s?.agentId},async function*(){for await(let v of a){k++;let C=v.author??p;if(C!=="user"){C!==p&&!y.has(C)&&e.enqueue({event_id:u(),project_id:"",trace_id:r,span_id:u(),parent_span_id:o,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:`handoff.${p}\u2192${C}`,span_kind:"handoff",agent_name:C,agent_role:"specialist",agent_framework:"google-adk",delegation_from_agent_id:d,delegation_from_agent_name:p,delegation_reason:`delegated to ${C}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",user_id:l,session_id:_,tags:s?.tags,environment:e.environment,sdk_version:b}),y.add(C),w.has(C)||(w.set(C,{spanId:u(),agentId:u(),t0:performance.now()}),S.set(C,{input:0,output:0,cached:0,reasoning:0}));let I=w.get(C),P=Tn(v);if(P.input>0||P.output>0){let T=S.get(C);T.input+=P.input,T.output+=P.output,T.cached+=P.cached,T.reasoning+=P.reasoning,A+=P.input,f+=P.output,N+=P.cached}let O=v.content?.parts??[];for(let T of O){let q=T?.functionCall;if(!q?.name)continue;let R=u();e.enqueue({event_id:u(),project_id:"",trace_id:r,span_id:R,parent_span_id:I.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:`tool.${q.name}`,span_kind:"tool",agent_id:I.agentId,agent_name:C,agent_framework:"google-adk",latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",tools_used:[q.name],tool_call_id:R,tool_call_args:q.args??{},user_id:l,session_id:_,tags:s?.tags,environment:e.environment,sdk_version:b})}let x=O.filter(T=>typeof T?.text=="string"&&!T.thought).map(T=>T.text).join("");if(x&&(h+=x),typeof v.isFinalResponse=="function"?v.isFinalResponse():!!v.isFinalResponse||v.actions?.stateDelta!==void 0||v.turnComplete===!0){let T=O.map(D=>D?.functionCall?.name).filter(Boolean),q=O.filter(D=>typeof D?.text=="string"&&!D.thought).map(D=>D.text).join(""),R=S.get(C)??{input:0,output:0,cached:0,reasoning:0};e.enqueue({event_id:u(),project_id:"",trace_id:r,span_id:I.spanId,parent_span_id:o,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:`agent.${C}`,span_kind:"agent",agent_id:I.agentId,agent_name:C,agent_role:C===p?m:"specialist",agent_framework:"google-adk",parent_agent_id:d,latency_ms:performance.now()-I.t0,stream:!1,input_tokens:R.input,output_tokens:R.output,cached_tokens:R.cached||void 0,reasoning_tokens:R.reasoning||void 0,status:"success",tools_used:T.length?T:void 0,prompt_hash:g?xt(g):void 0,...e.storePrompts&&x?{completion_text:e.redactForStorage(x)}:{},...T.length>0&&q?{decision_rationale:q}:{},user_id:l,session_id:_,tags:s?.tags,environment:e.environment,sdk_version:b}),w.delete(C),S.delete(C)}}yield v}}),e.enqueue({event_id:u(),project_id:"",trace_id:r,span_id:o,parent_span_id:s?.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:"agent.run",span_kind:"agent",agent_id:d,agent_name:p,agent_role:m,agent_framework:"google-adk",parent_agent_id:s?.agentId,latency_ms:performance.now()-c,stream:!1,input_tokens:A,output_tokens:f,cached_tokens:N||void 0,status:"success",prompt_hash:g?xt(g):void 0,...e.storePrompts?{prompt_text:e.redactForStorage(g),completion_text:e.redactForStorage(h)}:{},user_id:l,session_id:_,tags:s?.tags,environment:e.environment,sdk_version:b,metadata:{eventCount:k,agentsThatRan:[...y]}}),re(o)}catch(v){throw re(o),e.enqueue({event_id:u(),project_id:"",trace_id:r,span_id:o,parent_span_id:s?.spanId,timestamp:new Date().toISOString(),provider:"google-adk",model:i,operation:"agent.run",span_kind:"agent",agent_id:d,agent_name:p,agent_role:m,agent_framework:"google-adk",parent_agent_id:s?.agentId,latency_ms:performance.now()-c,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_code:On(v),error_message:String(v?.message??v).slice(0,500),user_id:l,session_id:_,tags:s?.tags,environment:e.environment,sdk_version:b}),v}}function Tt(a){let{coordinator:t,runner:n,agentName:e,agentRole:s,model:r,...o}=a,d=qe(t,{...o,agentName:e??t?.name,agentRole:s??"coordinator",traceSubAgents:!0}),c=it(n,{agentName:e??t?.name,agentRole:s??"coordinator",model:r});return{coordinator:d,runner:c}}var Ot=qe;var An=require("@opentelemetry/sdk-trace-node"),Rt=require("@opentelemetry/core");function hs(){try{return F()}catch{return null}}var Nt=class{export(t,n){let e=hs();if(!e){n({code:Rt.ExportResultCode.SUCCESS});return}try{for(let s of t){let{name:r}=s;if(!r.startsWith("ai."))continue;let o=s.attributes,d=G(),c=s.spanContext().spanId,p=s.spanContext().traceId,m=s.duration[0]*1e3+s.duration[1]/1e6,i=new Date(s.startTime[0]*1e3+s.startTime[1]/1e6).toISOString(),l=s.status.code===2,_={event_id:u(),project_id:"",trace_id:d?.traceId??p,span_id:c,parent_span_id:d?.spanId,timestamp:i,provider:String(o["ai.model.provider"]??"unknown"),model:String(o["ai.model.id"]??"unknown"),latency_ms:m,stream:!1,status:l?"error":"success",environment:e.environment,sdk_version:b};r==="ai.generateText"||r==="ai.generateText.doGenerate"?(re(c),e.enqueue({..._,operation:"generateText",input_tokens:Number(o["ai.usage.promptTokens"]??0),output_tokens:Number(o["ai.usage.completionTokens"]??0),finish_reason:String(o["ai.response.finishReason"]??""),span_kind:"llm",...e.storePrompts&&o["ai.prompt"]?{prompt_text:e.redactForStorage(String(o["ai.prompt"]))}:{},...e.storePrompts&&o["ai.response.text"]?{completion_text:e.redactForStorage(String(o["ai.response.text"]))}:{}})):r==="ai.streamText"||r==="ai.streamText.doStream"?(re(c),e.enqueue({..._,operation:"streamText",stream:!0,input_tokens:Number(o["ai.usage.promptTokens"]??0),output_tokens:Number(o["ai.usage.completionTokens"]??0),finish_reason:String(o["ai.response.finishReason"]??""),ttft_ms:o["ai.response.msToFirstChunk"]!==void 0?Number(o["ai.response.msToFirstChunk"]):void 0,span_kind:"llm"})):r==="ai.generateObject"||r==="ai.generateObject.doGenerate"?(re(c),e.enqueue({..._,operation:"generateObject",input_tokens:Number(o["ai.usage.promptTokens"]??0),output_tokens:Number(o["ai.usage.completionTokens"]??0),span_kind:"general"})):r==="ai.toolCall"?e.enqueue({..._,provider:"vercel-ai",model:"tool",operation:`tool.${String(o["ai.toolCall.name"]??"unknown")}`,input_tokens:0,output_tokens:0,span_kind:"tool",tools_used:o["ai.toolCall.name"]?[String(o["ai.toolCall.name"])]:[]}):(r==="ai.embed"||r==="ai.embedMany")&&e.enqueue({..._,operation:r==="ai.embed"?"embed":"embedMany",input_tokens:Number(o["ai.usage.tokens"]??0),output_tokens:0,span_kind:"embedding"})}}catch{}n({code:Rt.ExportResultCode.SUCCESS})}shutdown(){return Promise.resolve()}},Mt=class{exporter;constructor(t){this.exporter=t}onStart(t,n){t.name?.startsWith("ai.")&&ue(t.spanContext().spanId)}onEnd(t){t.name.startsWith("ai.")&&re(t.spanContext().spanId),this.exporter.export([t],()=>{})}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},ct=null,At=null;function dt(){return ct||(ct=new An.NodeTracerProvider,ct.addSpanProcessor(new Mt(new Nt)),At=ct.getTracer("zespan-vercel-ai")),{tracer:At,telemetry:{isEnabled:!0,tracer:At}}}function jt(){return dt().telemetry}function Ke(){try{return F()}catch{return null}}function ys(a){let t=a.toLowerCase();return/gpt|o1-|o3-|davinci|turbo|whisper|dall-e/i.test(t)?"openai":/claude/i.test(t)?"anthropic":/gemini|palm|bard/i.test(t)?"google":/llama|codellama/i.test(t)?"meta":/mistral|mixtral/i.test(t)?"mistralai":/deepseek/i.test(t)?"deepseek":/command/i.test(t)?"cohere":/qwen/i.test(t)?"alibaba":"unknown"}var Le=class{runs=new Map;guardrailSettings;constructor(t={}){this.guardrailSettings=ee(t.guardrails,"chat")}_onLLMStart=async t=>{let n=t.id??u(),e=G(),s=u();ue(s);let r=t.detail?.llm?.metadata?.model_name??t.detail?.model??"unknown",o=e?.traceId??u(),d=JSON.stringify(t.detail?.messages??t.detail?.prompt??t.detail?.input??""),c;try{let p=Ke();p&&d&&(c=await Z(p,this.guardrailSettings,{text:d,phase:"pre",traceId:o,spanId:s,model:r,operation:"chat"}))}catch(p){if(p instanceof V)throw p}this.runs.set(n,{t0:performance.now(),traceId:o,spanId:s,parentSpanId:e?.spanId,model:r,preGuardrailResult:c,promptText:d})};_onLLMEnd=async t=>{let n=this.runs.get(t.id??"");if(!n)return;this.runs.delete(t.id),re(n.spanId);let e=Ke();if(!e)return;let s=t.detail?.response??t.detail?.chunk??{},r=s.usage??s.raw?.usage??{},o=(typeof s.text=="string"?s.text:null)??(typeof s.message?.content=="string"?s.message.content:null)??"",d=o,c;if(o)try{c=await Z(e,this.guardrailSettings,{text:o,phase:"post",traceId:n.traceId,spanId:n.spanId,model:n.model,operation:"chat"}),d=oe(o,c)}catch(m){m instanceof V||(c=void 0)}let p=n.preGuardrailResult;try{e.enqueue({event_id:u(),project_id:"",trace_id:n.traceId,span_id:n.spanId,parent_span_id:n.parentSpanId,timestamp:new Date().toISOString(),provider:ys(n.model),model:n.model,operation:"chat",latency_ms:performance.now()-n.t0,ttft_ms:n.ttft,stream:!1,input_tokens:r.promptTokens??r.prompt_tokens??0,output_tokens:r.completionTokens??r.completion_tokens??0,finish_reason:s.finishReason??s.finish_reason??"",status:"success",span_kind:"llm",agent_id:G()?.agentId,agent_name:G()?.agentName,...e.storePrompts?{prompt_text:e.redactForStorage(n.promptText??""),completion_text:e.redactForStorage(d)}:{},metadata:{guardrails:{pre:p?{matched:p.results.length,modified:!!p.modifiedText}:null,post:c?{matched:c.results.length,modified:!!c.modifiedText}:null}},environment:e.environment,sdk_version:b})}catch{}};_onLLMStream=t=>{let n=this.runs.get(t.id??"");n&&n.ttft===void 0&&(n.ttft=performance.now()-n.t0)};_onToolCall=t=>{let n=Ke();if(!n)return;let e=G(),s=t.detail?.toolCall?.name??t.detail?.name??"";try{n.enqueue({event_id:u(),project_id:"",trace_id:e?.traceId??u(),span_id:u(),parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"llamaindex",model:"",operation:`tool.${s||"unknown"}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",span_kind:"tool",tools_used:s?[s]:[],agent_id:e?.agentId,agent_name:e?.agentName,environment:n.environment,sdk_version:b})}catch{}};_onToolResult=t=>{let n=Ke();if(!n)return;let e=G(),s=t.detail?.toolCall?.name??t.detail?.name??"",r=t.detail?.result??t.detail?.toolResult??"";try{n.enqueue({event_id:u(),project_id:"",trace_id:e?.traceId??u(),span_id:u(),parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"llamaindex",model:"",operation:`tool.${s||"unknown"}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",span_kind:"tool",tools_used:s?[s]:[],tool_call_result:String(r).slice(0,10240),agent_id:e?.agentId,agent_name:e?.agentName,environment:n.environment,sdk_version:b})}catch{}};_onAgentStart=t=>{let n=t.id??u(),e=G();this.runs.set(`agent-${n}`,{t0:performance.now(),traceId:e?.traceId??u(),spanId:u(),parentSpanId:e?.spanId,model:"agent",agentName:t.detail?.agentName??e?.agentName??""})};_onAgentEnd=t=>{let n=this.runs.get(`agent-${t.id??""}`);if(!n)return;this.runs.delete(`agent-${t.id}`);let e=Ke();if(e)try{e.enqueue({event_id:u(),project_id:"",trace_id:n.traceId,span_id:n.spanId,parent_span_id:n.parentSpanId,timestamp:new Date().toISOString(),provider:"llamaindex",model:"agent",operation:"agent",latency_ms:performance.now()-n.t0,stream:!1,input_tokens:0,output_tokens:0,status:"success",span_kind:"agent",agent_name:n.agentName??t.detail?.agentName??"",environment:e.environment,sdk_version:b})}catch{}};attach(t){t.on("llm-start",this._onLLMStart),t.on("llm-end",this._onLLMEnd),t.on("llm-stream",this._onLLMStream),t.on("llm-tool-call",this._onToolCall),t.on("llm-tool-result",this._onToolResult),t.on("agent-start",this._onAgentStart),t.on("agent-end",this._onAgentEnd)}detach(t){t.off("llm-start",this._onLLMStart),t.off("llm-end",this._onLLMEnd),t.off("llm-stream",this._onLLMStream),t.off("llm-tool-call",this._onToolCall),t.off("llm-tool-result",this._onToolResult),t.off("agent-start",this._onAgentStart),t.off("agent-end",this._onAgentEnd)}};function Pt(a){let t=F(),n=G(),e=n?.traceId??u(),s=u(),r=performance.now(),o=n?.agentId?{agent_id:n.agentId,agent_name:n.agentName,agent_role:n.agentRole,agent_framework:n.agentFramework,parent_agent_id:n.parentAgentId,span_kind:a.span_kind??"general"}:{},d={};return{span:{setEvalScore(p,m){d[p]=m},async end(p){let m=performance.now()-r;try{t.enqueue({event_id:u(),project_id:"",trace_id:e,span_id:s,parent_span_id:n?.spanId,timestamp:new Date().toISOString(),provider:a.provider??"custom",model:a.model??"custom",operation:"custom",latency_ms:m,stream:!1,input_tokens:p.input_tokens??0,output_tokens:p.output_tokens??0,cost_usd:p.cost_usd,status:p.status,error_message:p.error_message?.slice(0,500),environment:t.environment,eval_scores:Object.keys(d).length?d:void 0,sdk_version:b,...o})}catch{}}},run:p=>W({traceId:e,spanId:s,userId:n?.userId,sessionId:n?.sessionId,tags:n?.tags,agentId:n?.agentId,agentName:n?.agentName,agentRole:n?.agentRole,agentFramework:n?.agentFramework,parentAgentId:n?.parentAgentId,conversationTurn:n?.conversationTurn,availableTools:n?.availableTools},p)}}var ze=class{agentId;name;role;framework;tools;constructor(t,n){this.agentId=t,this.name=n.name,this.role=n.role??"specialist",this.framework=n.framework??"custom",this.tools=n.tools??[]}logPlan(t){let n=F(),e=G(),s={event_id:u(),project_id:"",trace_id:e?.traceId??u(),span_id:u(),parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"agent",model:"",operation:`${this.name}.plan`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",environment:n.environment,sdk_version:b,agent_id:this.agentId,agent_name:this.name,agent_role:this.role,agent_framework:this.framework,span_kind:"planning",planning_steps:t,user_id:e?.userId,session_id:e?.sessionId,tags:e?.tags};n.enqueue(s)}async traceTool(t,n,e){let s=F(),r=G(),o=u(),d=r?.traceId??u(),c=performance.now(),p=this.tools.find(m=>m.name===t);try{let m=await W({traceId:d,spanId:o,userId:r?.userId,sessionId:r?.sessionId,tags:r?.tags,agentId:this.agentId,agentName:this.name,agentRole:this.role,agentFramework:this.framework},()=>e()),i=typeof m=="string"?m:JSON.stringify(m),l={event_id:u(),project_id:"",trace_id:d,span_id:o,parent_span_id:r?.spanId,timestamp:new Date().toISOString(),provider:"tool",model:"",operation:`tool.${t}`,latency_ms:performance.now()-c,stream:!1,input_tokens:0,output_tokens:0,status:"success",environment:s.environment,sdk_version:b,agent_id:this.agentId,agent_name:this.name,agent_role:this.role,agent_framework:this.framework,span_kind:"tool",tools_used:[t],tool_call_id:o,tool_call_args:n,tool_call_result:i.slice(0,10240),tool_definitions:p?[p]:void 0,user_id:r?.userId,session_id:r?.sessionId,tags:r?.tags};return s.enqueue(l),m}catch(m){let i=m instanceof Error?m.message:String(m),l={event_id:u(),project_id:"",trace_id:d,span_id:o,parent_span_id:r?.spanId,timestamp:new Date().toISOString(),provider:"tool",model:"",operation:`tool.${t}`,latency_ms:performance.now()-c,stream:!1,input_tokens:0,output_tokens:0,status:"error",error_message:i.slice(0,500),environment:s.environment,sdk_version:b,agent_id:this.agentId,agent_name:this.name,agent_role:this.role,agent_framework:this.framework,span_kind:"tool",tools_used:[t],tool_call_id:o,tool_call_args:n,user_id:r?.userId,session_id:r?.sessionId,tags:r?.tags};throw s.enqueue(l),m}}delegateTo(t,n){let e=F(),s=G(),r={event_id:u(),project_id:"",trace_id:s?.traceId??u(),span_id:u(),parent_span_id:s?.spanId,timestamp:new Date().toISOString(),provider:"agent",model:"",operation:`${this.name}.delegate\u2192${t}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",environment:e.environment,sdk_version:b,agent_id:this.agentId,agent_name:this.name,agent_role:this.role,agent_framework:this.framework,span_kind:"handoff",delegation_reason:n,user_id:s?.userId,session_id:s?.sessionId,tags:s?.tags};e.enqueue(r)}};function Dt(a,t){let n=F(),e=G(),s=u(),r=e?.traceId??u(),o=u(),d={event_id:u(),project_id:"",trace_id:r,span_id:o,parent_span_id:e?.spanId,timestamp:new Date().toISOString(),provider:"agent",model:"",operation:`agent.${a.name}`,latency_ms:0,stream:!1,input_tokens:0,output_tokens:0,status:"success",environment:n.environment,sdk_version:b,agent_id:s,agent_name:a.name,agent_role:a.role??"specialist",agent_framework:a.framework??"custom",parent_agent_id:e?.agentId,span_kind:"agent",tool_definitions:a.tools,delegation_reason:e?.agentId?"delegated":"root",user_id:e?.userId,session_id:e?.sessionId,tags:e?.tags,metadata:a.metadata};return n.enqueue(d),W({traceId:r,spanId:o,userId:e?.userId,sessionId:e?.sessionId,tags:e?.tags,agentId:s,agentName:a.name,agentRole:a.role??"specialist",agentFramework:a.framework??"custom",parentAgentId:e?.agentId,availableTools:a.tools},()=>t(new ze(s,a)))}var Rn=require("@opentelemetry/api"),lt=class{onStart(t,n){let e=Rn.propagation.getBaggage(n);e&&e.getAllEntries().forEach(([s,r])=>{t.setAttribute(`baggage.${s}`,r.value)})}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}};var he=require("@opentelemetry/api");function Be(a,t,n){let e={};t&&(e["agent.delegation.reason"]=t),n&&(e["agent.task"]=n);let s=he.context.active();if(Object.keys(e).length>0){let r=he.propagation.getBaggage(s)??he.propagation.createBaggage();for(let[o,d]of Object.entries(e))r=r.setEntry(o,{value:d});s=he.propagation.setBaggage(s,r)}he.propagation.inject(s,a)}function $e(a){return he.propagation.extract(he.context.active(),a)}var Nn={OTEL_EXPORTER_OTLP_ENDPOINT:"http://localhost:4318",OTEL_SERVICE_NAME:"crewai-agent"};function Mn(){return`
12
12
  pip install openinference-instrumentation-crewai opentelemetry-exporter-otlp-proto-grpc
13
13
 
14
14
  from openinference.instrumentation.crewai import CrewAIInstrumentor
@@ -21,4 +21,4 @@ provider = TracerProvider()
21
21
  provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint="http://localhost:4318")))
22
22
  trace.set_tracer_provider(provider)
23
23
  CrewAIInstrumentor().instrument()
24
- `.trim()}function Mn(r,t){let n={};return ze(n,t),{...r,_zespan_trace:n}}function Pn(r){let t=r._zespan_trace??{};return Be(t)}function jn(r){return{OTEL_EXPORTER_OTLP_ENDPOINT:r,OTEL_EXPORTER_OTLP_PROTOCOL:"http/protobuf",OTEL_SERVICE_NAME:"pydantic-ai-agent",LOGFIRE_SEND_TO_LOGFIRE:"false"}}var ms={init:et,getClient:F,getZespanClient:F,wrapOpenAI:je,wrapAnthropic:yt,wrapGoogle:It,wrapGoogleGenAI:St,wrapOpenRouter:wt,wrapADKAgent:xt,wrapADKRunner:rt,instrumentADK:Ct,startSpan:Mt,withContext:He,withTrace:Qe,withAgent:Pt,initOTel:Ae,getTracer:ye,createSpan:lt,withSpan:ut,PromptClient:Ce,CallbackHandler:Fe,ADKCallbackHandler:Ee,autopatch:Me,markFrameworkActive:le,markFrameworkInactive:ae,instrumentVercelAI:ct,getZespanVercelTelemetry:Nt,ZespanLlamaIndexHandler:Ke};0&&(module.exports={AgentContext,BaggageSpanProcessor,CREWAI_OTEL_ENV,GuardrailBlockedError,PromptClient,SpanKind,SpanStatusCode,ZespanADKCallbackHandler,ZespanCallbackHandler,ZespanClient,ZespanLlamaIndexHandler,attachTraceToAutoGenMessage,autopatch,createSpan,extractAgentContext,extractAutoGenContext,extractTraceFromAutoGenMessage,getCrewAIInstrumentationGuide,getPydanticAIConfig,getTracer,getZespanClient,getZespanVercelTelemetry,init,initOTel,initZespan,injectAgentContext,injectAutoGenContext,instrumentADK,instrumentVercelAI,markFrameworkActive,markFrameworkInactive,startSpan,withAgent,withSpan,withZespan,withZespanContext,withZespanTrace,wrapADKAgent,wrapADKRunner,wrapAnthropic,wrapBedrock,wrapGoogle,wrapGoogleGenAI,wrapGroq,wrapLiteLLM,wrapMistral,wrapOpenAI,wrapOpenRouter,wrapZespanADKAgent,zespan});
24
+ `.trim()}function jn(a,t){let n={};return Be(n,t),{...a,_zespan_trace:n}}function Pn(a){let t=a._zespan_trace??{};return $e(t)}function Dn(a){return{OTEL_EXPORTER_OTLP_ENDPOINT:a,OTEL_EXPORTER_OTLP_PROTOCOL:"http/protobuf",OTEL_SERVICE_NAME:"pydantic-ai-agent",LOGFIRE_SEND_TO_LOGFIRE:"false"}}var ks={init:tt,getClient:F,getZespanClient:F,wrapOpenAI:De,wrapAnthropic:kt,wrapGoogle:St,wrapGoogleGenAI:vt,wrapOpenRouter:bt,wrapADKAgent:Ot,wrapADKRunner:it,instrumentADK:Tt,startSpan:Pt,withContext:Qe,withTrace:Xe,withAgent:Dt,initOTel:Re,getTracer:ye,createSpan:ut,withSpan:pt,PromptClient:Ce,CallbackHandler:Fe,ADKCallbackHandler:Ge,autopatch:je,markFrameworkActive:ue,markFrameworkInactive:re,instrumentVercelAI:dt,getZespanVercelTelemetry:jt,ZespanLlamaIndexHandler:Le};0&&(module.exports={AgentContext,BaggageSpanProcessor,CREWAI_OTEL_ENV,GuardrailBlockedError,PromptClient,SpanKind,SpanStatusCode,ZespanADKCallbackHandler,ZespanCallbackHandler,ZespanClient,ZespanLlamaIndexHandler,attachTraceToAutoGenMessage,autopatch,createSpan,extractAgentContext,extractAutoGenContext,extractTraceFromAutoGenMessage,getCrewAIInstrumentationGuide,getPydanticAIConfig,getTracer,getZespanClient,getZespanVercelTelemetry,init,initOTel,initZespan,injectAgentContext,injectAutoGenContext,instrumentADK,instrumentVercelAI,markFrameworkActive,markFrameworkInactive,startSpan,withAgent,withSpan,withZespan,withZespanContext,withZespanTrace,wrapADKAgent,wrapADKRunner,wrapAnthropic,wrapBedrock,wrapGoogle,wrapGoogleGenAI,wrapGroq,wrapLiteLLM,wrapMistral,wrapOpenAI,wrapOpenRouter,wrapZespanADKAgent,zespan});