promptlayer 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/claude-agents.js +1 -1
- package/dist/claude-agents.js.map +1 -1
- package/dist/esm/{chunk-7Y65WGSZ.js → chunk-KDVM55TG.js} +2 -2
- package/dist/esm/{chunk-7Y65WGSZ.js.map → chunk-KDVM55TG.js.map} +1 -1
- package/dist/esm/claude-agents.js +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/openai-agents.js +1 -1
- package/dist/esm/openai-agents.js.map +1 -1
- package/dist/index.d.mts +98 -1
- package/dist/index.d.ts +98 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/openai-agents.js +1 -1
- package/dist/openai-agents.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{G as u}from"./chunk-KDVM55TG.js";import a from"fs";import n from"path";import{fileURLToPath as l}from"url";var c=[".claude-plugin/plugin.json","setup.sh","hooks/hooks.json","hooks/lib.sh","hooks/session_start.sh","hooks/user_prompt_submit.sh","hooks/post_tool_use.sh","hooks/stop_hook.sh","hooks/session_end.sh","hooks/py/__init__.py","hooks/py/cli.py","hooks/py/context.py","hooks/py/handlers.py","hooks/py/otlp.py","hooks/py/settings.py","hooks/py/state.py","hooks/py/stop_parser.py","hooks/py/traceparent.py"],i=n.join("vendor","claude-agents","trace");function g(){let e=Error.prepareStackTrace;try{Error.prepareStackTrace=(r,s)=>s;let t=new Error().stack,o=t==null?void 0:t.map(r=>r.getFileName()).find(r=>r&&!r.startsWith("node:"));if(!o)throw new Error("PromptLayer Claude Agents could not determine its current module path.");return n.dirname(o.startsWith("file://")?l(o):o)}finally{Error.prepareStackTrace=e}}function d(){if(process.platform==="win32")throw new Error("PromptLayer Claude Agents integration does not support Windows. Use Linux or macOS.")}function y(){let e=g();return[n.resolve(e,"..","..","..",i),n.resolve(e,"..",i),n.resolve(e,"..","..",i)]}function P(e){let t=c.filter(o=>!a.existsSync(n.join(e,o)));if(t.length>0)throw new Error(`PromptLayer Claude Agents vendored plugin is incomplete. Missing: ${t.join(", ")}`)}function f(){for(let e of y())if(!(!a.existsSync(e)||!a.statSync(e).isDirectory()))return P(e),e;throw new Error("PromptLayer Claude Agents vendored plugin was not found in the installed package.")}function h(e={}){var p;d();let t=f(),o=u(e.apiKey),r=(p=e.traceparent)==null?void 0:p.trim(),s={TRACE_TO_PROMPTLAYER:"true",PROMPTLAYER_API_KEY:o};return r&&(s.PROMPTLAYER_TRACEPARENT=r),{plugin:{type:"local",path:t},env:s}}export{h as getClaudeConfig};
|
|
2
2
|
//# sourceMappingURL=claude-agents.js.map
|
package/dist/esm/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{A as
|
|
2
|
-
HTTP error! status: ${e.status}`),N.FAILED)).catch(e=>(console.error("Error exporting spans:",e),N.FAILED))}shutdown(){return Promise.resolve()}},Ot=J;import*as St from"@opentelemetry/api";import{SimpleSpanProcessor as At}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider as Ct}from"@opentelemetry/sdk-trace-node";var b=(o="promptlayer-tracer")=>St.trace.getTracer(o),Tt=(o,t,r)=>{let e=new Ct,i=new Ot(o,t,r),a=new At(i);e.addSpanProcessor(a),e.register()};var Nt=b(),B=(o,t,r,e="",i="openai")=>{let a={construct:(s,u)=>{let n=Reflect.construct(s,u);return Object.defineProperties(n,{function_name:{value:e,writable:!0},provider:{value:i}}),new Proxy(n,a)},get:(s,u,n)=>{let l=s[u],d=`${Reflect.get(s,"function_name")}.${u.toString()}`;return typeof l=="object"?(Object.defineProperties(l,{function_name:{value:d,writable:!0},provider:{value:i}}),new Proxy(l,a)):typeof l=="function"?(...h)=>{var S,m,I,T,w,L;let O=new Date().toISOString(),M=Reflect.get(s,"provider"),g=(S=h[0])==null?void 0:S.return_pl_id,_=(m=h[0])==null?void 0:m.pl_tags,D=(I=h[0])==null?void 0:I.pl_warn_on_error;return(T=h[0])==null||delete T.return_pl_id,(w=h[0])==null||delete w.pl_tags,(L=h[0])==null||delete L.pl_warn_on_error,Nt.startActiveSpan(`${M}.${d}`,p=>R(null,null,function*(){try{p.setAttribute("function_input",JSON.stringify(h));let c=Reflect.apply(l,s,h),U=p.spanContext().spanId;return c instanceof Promise?new Promise((E,j)=>{c.then(y=>R(null,null,function*(){let v=yield et(o,t,{api_key:o,provider_type:M,function_name:d,request_start_time:O,request_end_time:new Date().toISOString(),request_response:y,kwargs:h[0],return_pl_id:g,tags:_,span_id:U},!D);p.setAttribute("function_output",JSON.stringify(v)),p.setAttribute("response_status","success"),p.end(),E(v)})).catch(y=>{p.recordException(y),p.setAttribute("response_status","error"),p.end(),j(y)})}):(p.setAttribute("function_output",JSON.stringify(c)),p.setAttribute("response_status","success"),p.end(),c)}catch(c){throw p.recordException(c),p.setAttribute("response_status","error"),p.end(),c}}))}:Reflect.get(s,u,n)}};return new Proxy(r,a)};import*as K from"@opentelemetry/api";var kt=(o,t,r)=>function(...e){let i=b(),a=s=>{try{r&&Object.entries(r).forEach(([n,l])=>{s.setAttribute(n,l)}),s.setAttribute("function_input",JSON.stringify(e));let u=t(...e);return u instanceof Promise?u.then(n=>(s.setAttribute("function_output",JSON.stringify(n)),s.setStatus({code:K.SpanStatusCode.OK}),n)).catch(n=>{throw Pt(s,n,e),n}).finally(()=>s.end()):(s.setAttribute("function_output",JSON.stringify(u)),s.setStatus({code:K.SpanStatusCode.OK}),s.end(),u)}catch(u){throw Pt(s,u,e),u}};return i.startActiveSpan(o,a)},Pt=(o,t,r)=>{o.setAttribute("function_input",JSON.stringify(r)),o.setStatus({code:K.SpanStatusCode.ERROR,message:t instanceof Error?t.message:"Unknown error"}),o.end()};var x=class{constructor(t,r,e=!0){this.get=(t,r)=>at(this.apiKey,this.baseURL,t,r,this.throwOnError);this.publish=t=>ut(this.apiKey,this.baseURL,t,this.throwOnError);this.all=t=>pt(this.apiKey,this.baseURL,t,this.throwOnError);this.apiKey=t,this.baseURL=r,this.throwOnError=e}};var Kt=(o,t,r,e=!0)=>{if(!(r.metadata instanceof Object))throw new Error("Please provide a dictionary of metadata.");for(let[i,a]of Object.entries(r.metadata))if(typeof i!="string"||typeof a!="string")throw new Error("Please provide a dictionary of metadata with key value pair of strings.");return rt(o,t,r,e)},xt=(o,t,r,e=!0)=>{if(typeof r.score!="number")throw new Error("Score must be a number");if(r.score<0||r.score>100)throw new Error("Score must be a number between 0 and 100.");return ot(o,t,r,e)},qt=(o,t,r,e=!0)=>{if(!(r.prompt_input_variables instanceof Object))throw new Error("Prompt template input variable dictionary not provided.");return nt(o,t,r,e)},Mt=(o,t,r,e=!0)=>st(o,t,r,e),q=class{constructor(t,r,e=!0){this.group=t=>Mt(this.apiKey,this.baseURL,t,this.throwOnError);this.metadata=t=>Kt(this.apiKey,this.baseURL,t,this.throwOnError);this.prompt=t=>qt(this.apiKey,this.baseURL,t,this.throwOnError);this.score=t=>xt(this.apiKey,this.baseURL,t,this.throwOnError);this.apiKey=t,this.baseURL=r,this.throwOnError=e}};function Dt(o){if(o&&typeof o=="object"&&"status"in o&&typeof o.status=="number")return o.status}function jt(o){return o&&typeof o=="object"&&o.constructor?o.constructor.name:""}function It(o){let t=Dt(o),r=jt(o),e=o instanceof Error?o.message.toLowerCase():String(o).toLowerCase();return t===429||/ratelimit/i.test(r)?"PROVIDER_RATE_LIMIT":/timeout/i.test(r)?"PROVIDER_TIMEOUT":t===401||/authentication/i.test(r)?"PROVIDER_AUTH_ERROR":e.includes("quota")?"PROVIDER_QUOTA_LIMIT":e.includes("timeout")||e.includes("timed out")?"PROVIDER_TIMEOUT":t!==void 0?"PROVIDER_ERROR":"UNKNOWN_ERROR"}import*as Ut from"@opentelemetry/api";var Wt={openai:lt,anthropic:ft,"openai.azure":ht,google:Rt,vertexai:wt,"amazon.bedrock":Et,"anthropic.bedrock":yt,mistral:bt},Vt=o=>{if(!o||typeof o!="object"||Array.isArray(o))return!1;let t=["status","value","error_message","raw_error_message","is_output_node"];return Object.values(o).every(e=>typeof e!="object"||e===null?!1:t.every(i=>i in e))},Lt=class{constructor({apiKey:t=$("PROMPTLAYER_API_KEY"),baseURL:r=$("PROMPTLAYER_BASE_URL"),enableTracing:e=!1,throwOnError:i=!0}={}){if(t===void 0)throw new Error("PromptLayer API key not provided. Please set the PROMPTLAYER_API_KEY environment variable or pass the api_key parameter.");this.apiKey=t,this.baseURL=r||"https://api.promptlayer.com",this.enableTracing=e,this.throwOnError=i,this.templates=new x(t,this.baseURL,this.throwOnError),this.group=new C(t,this.baseURL,this.throwOnError),this.track=new q(t,this.baseURL,this.throwOnError),this.wrapWithSpan=kt,e&&Tt(e,t,this.baseURL)}get Anthropic(){try{let t=Q("@anthropic-ai/sdk").default;return B(this.apiKey,this.baseURL,t,"anthropic","anthropic")}catch(t){console.error("To use the Anthropic module, you must install the @anthropic-ai/sdk package.")}}get OpenAI(){try{let t=Q("openai").default;return B(this.apiKey,this.baseURL,t,"openai","openai")}catch(t){console.error("To use the OpenAI module, you must install the @openai/api package.")}}run(O){return R(this,arguments,function*({promptName:t,promptVersion:r,promptReleaseLabel:e,inputVariables:i,tags:a,metadata:s,groupId:u,modelParameterOverrides:n,stream:l=!1,provider:d,model:h}){return b().startActiveSpan("PromptLayer Run",g=>R(this,null,function*(){try{let _={promptName:t,promptVersion:r,promptReleaseLabel:e,inputVariables:i,tags:a,metadata:s,groupId:u,modelParameterOverrides:n,stream:l};g.setAttribute("function_input",JSON.stringify(_));let D=i,S={label:e,version:r,metadata_filters:s,provider:d,model:h,model_parameter_overrides:n};i&&(S.input_variables=i);let m=yield this.templates.get(t,S);if(!m)throw new Error(`Cannot proceed: prompt template '${t}' could not be fetched. Check the warnings above for the actual error.`);let I=m.prompt_template;if(!m.llm_kwargs){let f=`Prompt '${t}' does not have any LLM kwargs associated with it. Please set your model parameters in the registry in the PromptLayer dashboard.`;if(this.throwOnError)throw new Error(f);console.warn(`WARNING: ${f}`)}let T=m.metadata;if(!T)throw new Error(`Prompt '${t}' does not have any metadata associated with it.`);let w=T.model;if(!w)throw new Error(`Prompt '${t}' does not have a model parameters associated with it.`);let L=m.custom_provider,p=new Date().toISOString(),{provider_type:c,kwargs:U}=gt(m,L,n,l),E=c;if(c==="openai"||c==="openai.azure"){let f=w.api_type;E=`${c}:${f}`}w.name.startsWith("gemini")?E="google":w.name.startsWith("claude")&&(E="anthropic");let j=_t(E,I),{function_name:y,stream_function:v}=j,z=Wt[c];if(!z)throw new Error(`No request function found for provider: ${c}`);let W=f=>{let V=new Date().toISOString();return mt(this.baseURL,P({function_name:y,provider_type:c,args:[],kwargs:U,tags:a,request_start_time:p,request_end_time:V,api_key:this.apiKey,metadata:s,prompt_id:m.id,prompt_version:m.version,prompt_input_variables:D,group_id:u,return_prompt_blueprint:!0,span_id:g.spanContext().spanId},f),this.throwOnError)},A;try{A=yield z(m,U)}catch(f){let V=It(f),vt=f instanceof Error?f.message:String(f);throw yield W({request_response:{},status:"ERROR",error_type:V,error_message:vt}),f}if(l)return X(A,W,v,s||m.metadata);let H=yield W({request_response:A}),Y={request_id:H.request_id,raw_response:A,prompt_blueprint:H.prompt_blueprint};return g.setAttribute("function_output",JSON.stringify(Y)),Y}catch(_){throw g.setStatus({code:Ut.SpanStatusCode.ERROR,message:_ instanceof Error?_.message:"Unknown error"}),_}finally{g.end()}}))})}runWorkflow(u){return R(this,arguments,function*({workflowName:t,inputVariables:r={},metadata:e={},workflowLabelName:i=null,workflowVersion:a=null,returnAllOutputs:s=!1}){try{let n=yield ct({workflow_name:t,input_variables:r,metadata:e,workflow_label_name:i,workflow_version_number:a,return_all_outputs:s,api_key:this.apiKey,baseURL:this.baseURL});if(!s&&Vt(n)){let d=Object.values(n).filter(O=>O.is_output_node===!0);if(d.length===0)throw new Error(JSON.stringify(n,null,2));if(!d.some(O=>O.status==="SUCCESS"))throw new Error(JSON.stringify(n,null,2))}return n}catch(n){throw n instanceof Error?(console.error("Error running workflow:",n.message),new Error(`Error running workflow: ${n.message}`)):(console.error("Unknown error running workflow:",n),new Error("Unknown error running workflow"))}})}logRequest(t){return R(this,null,function*(){return dt(this.apiKey,this.baseURL,t,this.throwOnError)})}};export{Lt as PromptLayer};
|
|
1
|
+
import{A as ye,B as Oe,C as ve,D as Te,E as Ue,F as X,a as S,b as V,c as le,d as u,e as ae,g as w,h as C,i as ce,j as pe,k as ue,l as me,m as de,n as he,o as fe,p as Se,q as Re,r as ge,s as U,t as ke,u as we,v as Ce,w as be,x as Pe,y as _e,z as Ee}from"./chunk-KDVM55TG.js";var B=class{constructor(e,o,r=!0){this.create=()=>he(this.apiKey,this.baseURL,this.throwOnError);this.apiKey=e,this.baseURL=o,this.throwOnError=r}};import{SpanKind as I,SpanStatusCode as Q}from"@opentelemetry/api";import{ExportResultCode as D}from"@opentelemetry/core";var ee=class{constructor(e,o,r){this.apiKey=o,this.baseURL=r,this.enableTracing=e,this.url=`${this.baseURL}/spans-bulk`}attributesToObject(e){return e?Object.fromEntries(Object.entries(e)):{}}spanKindToString(e){return{[I.INTERNAL]:"SpanKind.INTERNAL",[I.SERVER]:"SpanKind.SERVER",[I.CLIENT]:"SpanKind.CLIENT",[I.PRODUCER]:"SpanKind.PRODUCER",[I.CONSUMER]:"SpanKind.CONSUMER"}[e]||"SpanKind.INTERNAL"}statusCodeToString(e){return{[Q.ERROR]:"StatusCode.ERROR",[Q.OK]:"StatusCode.OK",[Q.UNSET]:"StatusCode.UNSET"}[e]||"StatusCode.UNSET"}toNanoseconds(e){return(BigInt(e[0])*BigInt(1e9)+BigInt(e[1])).toString()}export(e){if(!this.enableTracing)return Promise.resolve(D.SUCCESS);let o=e.map(r=>{var a;return{name:r.name,context:{trace_id:r.spanContext().traceId,span_id:r.spanContext().spanId,trace_state:((a=r.spanContext().traceState)==null?void 0:a.serialize())||""},kind:this.spanKindToString(r.kind),parent_id:r.parentSpanId||null,start_time:this.toNanoseconds(r.startTime),end_time:this.toNanoseconds(r.endTime),status:{status_code:this.statusCodeToString(r.status.code),description:r.status.message},attributes:this.attributesToObject(r.attributes),events:r.events.map(l=>({name:l.name,timestamp:this.toNanoseconds(l.time),attributes:this.attributesToObject(l.attributes)})),links:r.links.map(l=>({context:l.context,attributes:this.attributesToObject(l.attributes)})),resource:{attributes:V(S({},r.resource.attributes),{"service.name":"prompt-layer-js"}),schema_url:""}}});return C(this.url,{method:"POST",headers:S({"Content-Type":"application/json","X-API-KEY":this.apiKey||""},w()),body:JSON.stringify({spans:o})}).then(r=>r.ok?D.SUCCESS:(console.error(`Error exporting spans
|
|
2
|
+
HTTP error! status: ${r.status}`),D.FAILED)).catch(r=>(console.error("Error exporting spans:",r),D.FAILED))}shutdown(){return Promise.resolve()}},Ie=ee;import*as Le from"@opentelemetry/api";import{SimpleSpanProcessor as ze}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider as Ye}from"@opentelemetry/sdk-trace-node";var O=(t="promptlayer-tracer")=>Le.trace.getTracer(t),Ae=(t,e,o)=>{let r=new Ye,a=new Ie(t,e,o),l=new ze(a);r.addSpanProcessor(l),r.register()};var Ze=O(),te=(t,e,o,r="",a="openai")=>{let l={construct:(i,s)=>{let n=Reflect.construct(i,s);return Object.defineProperties(n,{function_name:{value:r,writable:!0},provider:{value:a}}),new Proxy(n,l)},get:(i,s,n)=>{let p=i[s],g=`${Reflect.get(i,"function_name")}.${s.toString()}`;return typeof p=="object"?(Object.defineProperties(p,{function_name:{value:g,writable:!0},provider:{value:a}}),new Proxy(p,l)):typeof p=="function"?(...d)=>{var v,f,x,T,_,N;let k=new Date().toISOString(),c=Reflect.get(i,"provider"),b=(v=d[0])==null?void 0:v.return_pl_id,P=(f=d[0])==null?void 0:f.pl_tags,z=(x=d[0])==null?void 0:x.pl_warn_on_error;return(T=d[0])==null||delete T.return_pl_id,(_=d[0])==null||delete _.pl_tags,(N=d[0])==null||delete N.pl_warn_on_error,Ze.startActiveSpan(`${c}.${g}`,m=>u(null,null,function*(){try{m.setAttribute("function_input",JSON.stringify(d));let h=Reflect.apply(p,i,d),K=m.spanContext().spanId;return h instanceof Promise?new Promise((E,Y)=>{h.then(y=>u(null,null,function*(){let M=yield ce(t,e,{api_key:t,provider_type:c,function_name:g,request_start_time:k,request_end_time:new Date().toISOString(),request_response:y,kwargs:d[0],return_pl_id:b,tags:P,span_id:K},!z);m.setAttribute("function_output",JSON.stringify(M)),m.setAttribute("response_status","success"),m.end(),E(M)})).catch(y=>{m.recordException(y),m.setAttribute("response_status","error"),m.end(),Y(y)})}):(m.setAttribute("function_output",JSON.stringify(h)),m.setAttribute("response_status","success"),m.end(),h)}catch(h){throw m.recordException(h),m.setAttribute("response_status","error"),m.end(),h}}))}:Reflect.get(i,s,n)}};return new Proxy(o,l)};var L=t=>Object.fromEntries(Object.entries(t).filter(([,e])=>e!==void 0)),A=t=>u(null,null,function*(){var r;if(((r=t.headers.get("content-type"))!=null?r:"").includes("application/json"))return t.json();let o=yield t.text();if(!o)return{};try{return JSON.parse(o)}catch(a){return{message:o}}}),xe=t=>t instanceof Blob?t:t instanceof Uint8Array?new Blob([t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)],{type:"application/zip"}):new Blob([t],{type:"application/zip"});var j=t=>`${t}/api/public/v2/skill-collections`,F=(t,e)=>`${j(t)}/${encodeURIComponent(e)}`,Ne=(t,e)=>`${F(t,e)}/versions`;var re=t=>"zipFile"in t;var Ke=["claude_code","openai","openclaw"],Me=(t,e)=>{if(!t){if(e==="publishing")throw new Error("provider is required when publishing a skill collection.");return}if(!Ke.includes(t))throw new Error(`provider must be one of: ${Ke.join(", ")}.`)},qe=(t,e,o,r,a=!0)=>u(null,null,function*(){let l=new URL(F(e,o));Object.entries(r||{}).forEach(([s,n])=>{n!==void 0&&l.searchParams.append(s,String(n))});let i=yield C(l,{headers:S({"X-API-KEY":t},w())});if(i.status!==200){let s=yield A(i),n=s.message||s.error||"Failed to pull skill collection";if(a)throw new Error(n);return U(s,"WARNING: While pulling a skill collection PromptLayer had the following error"),null}return(r==null?void 0:r.format)==="zip"?i.arrayBuffer():yield i.json()}),Ve=(t,e,o,r=!0)=>u(null,null,function*(){Me(o.provider,"publishing");let a=re(o)?(()=>{var p;let s=new FormData,n=L({name:o.name,folder_id:o.folderId,provider:o.provider,commit_message:o.commitMessage});return s.append("files",xe(o.zipFile),(p=o.fileName)!=null?p:"skill-collection.zip"),s.append("json",JSON.stringify(n)),s})():JSON.stringify(L({name:o.name,folder_id:o.folderId,provider:o.provider,files:o.files,commit_message:o.commitMessage})),l=re(o)?yield C(j(e),{method:"POST",headers:S({"X-API-KEY":t},w()),body:a}):yield C(j(e),{method:"POST",headers:S({"Content-Type":"application/json","X-API-KEY":t},w()),body:a}),i=yield A(l);if(l.status!==201){let s=i.message||i.error||"Failed to publish skill collection";if(r)throw new Error(s);return U(i,"WARNING: While publishing a skill collection PromptLayer had the following error"),null}return i}),Be=(t,e,o,r,a=!0)=>u(null,null,function*(){let l=yield C(F(e,o),{method:"PATCH",headers:S({"Content-Type":"application/json","X-API-KEY":t},w()),body:JSON.stringify(L(r))}),i=yield A(l);if(l.status!==200){let s=i.message||i.error||"Failed to update skill collection";if(a)throw new Error(s);return U(i,"WARNING: While updating a skill collection PromptLayer had the following error"),null}return i}),De=(t,e,o,r,a=!0)=>u(null,null,function*(){Me(r.provider,"updating");let l=L({file_updates:r.fileUpdates,moves:r.moves,deletes:r.deletes,commit_message:r.commitMessage,release_label:r.releaseLabel,provider:r.provider}),i=yield C(Ne(e,o),{method:"POST",headers:S({"Content-Type":"application/json","X-API-KEY":t},w()),body:JSON.stringify(l)}),s=yield A(i);if(i.status!==201){let n=s.message||s.error||"Failed to save skill collection version";if(a)throw new Error(n);return U(s,"WARNING: While saving a skill collection version PromptLayer had the following error"),null}return s});var oe=t=>Array.isArray(t)&&t.length>0,He=t=>oe(t.fileUpdates)||oe(t.moves)||oe(t.deletes)||t.commitMessage!==void 0||t.releaseLabel!==void 0||t.provider!==void 0,Xe=(t,e,o)=>{var r;return V(S({},t!=null?t:{}),{success:(r=t==null?void 0:t.success)!=null?r:!0,skill_collection:e,version:o})},W=class{constructor(e,o,r=!0){this.pull=(e,o)=>qe(this.apiKey,this.baseURL,e,o,this.throwOnError);this.publish=e=>Ve(this.apiKey,this.baseURL,e,this.throwOnError);this.update=(e,o)=>u(this,null,function*(){var p,g,d,k;let r=o.name!==void 0,a=He(o);if(!r&&!a)throw new Error("At least one of name, fileUpdates, moves, deletes, commitMessage, releaseLabel, or provider must be provided.");let l=e,i=null,s,n=null;if(r){let c=yield Be(this.apiKey,this.baseURL,e,{name:o.name},this.throwOnError);if(!c)return null;i=c,s=c.skill_collection,n=(p=c.version)!=null?p:null,l=String(c.skill_collection.id)}if(a){let c=yield De(this.apiKey,this.baseURL,l,{fileUpdates:o.fileUpdates,moves:o.moves,deletes:o.deletes,commitMessage:o.commitMessage,releaseLabel:o.releaseLabel,provider:o.provider},this.throwOnError);if(!c)return null;i=c,s=(g=c.skill_collection)!=null?g:s,n=(d=c.version)!=null?d:n}if(!s){let c=yield this.pull(l);if(!c)return null;if(c instanceof ArrayBuffer)throw new Error("Expected JSON skill collection response but received binary data.");i=c,s=c.skill_collection,n=(k=c.version)!=null?k:n}return Xe(i,s,n)});this.apiKey=e,this.baseURL=o,this.throwOnError=r}};import*as $ from"@opentelemetry/api";var Fe=(t,e,o)=>function(...r){let a=O(),l=i=>{try{o&&Object.entries(o).forEach(([n,p])=>{i.setAttribute(n,p)}),i.setAttribute("function_input",JSON.stringify(r));let s=e(...r);return s instanceof Promise?s.then(n=>(i.setAttribute("function_output",JSON.stringify(n)),i.setStatus({code:$.SpanStatusCode.OK}),n)).catch(n=>{throw je(i,n,r),n}).finally(()=>i.end()):(i.setAttribute("function_output",JSON.stringify(s)),i.setStatus({code:$.SpanStatusCode.OK}),i.end(),s)}catch(s){throw je(i,s,r),s}};return a.startActiveSpan(t,l)},je=(t,e,o)=>{t.setAttribute("function_input",JSON.stringify(o)),t.setStatus({code:$.SpanStatusCode.ERROR,message:e instanceof Error?e.message:"Unknown error"}),t.end()};var J=class{constructor(e,o,r=!0){this.get=(e,o)=>fe(this.apiKey,this.baseURL,e,o,this.throwOnError);this.publish=e=>Se(this.apiKey,this.baseURL,e,this.throwOnError);this.all=e=>Re(this.apiKey,this.baseURL,e,this.throwOnError);this.apiKey=e,this.baseURL=o,this.throwOnError=r}};var Qe=(t,e,o,r=!0)=>{if(!(o.metadata instanceof Object))throw new Error("Please provide a dictionary of metadata.");for(let[a,l]of Object.entries(o.metadata))if(typeof a!="string"||typeof l!="string")throw new Error("Please provide a dictionary of metadata with key value pair of strings.");return pe(t,e,o,r)},et=(t,e,o,r=!0)=>{if(typeof o.score!="number")throw new Error("Score must be a number");if(o.score<0||o.score>100)throw new Error("Score must be a number between 0 and 100.");return ue(t,e,o,r)},tt=(t,e,o,r=!0)=>{if(!(o.prompt_input_variables instanceof Object))throw new Error("Prompt template input variable dictionary not provided.");return me(t,e,o,r)},rt=(t,e,o,r=!0)=>de(t,e,o,r),G=class{constructor(e,o,r=!0){this.group=e=>rt(this.apiKey,this.baseURL,e,this.throwOnError);this.metadata=e=>Qe(this.apiKey,this.baseURL,e,this.throwOnError);this.prompt=e=>tt(this.apiKey,this.baseURL,e,this.throwOnError);this.score=e=>et(this.apiKey,this.baseURL,e,this.throwOnError);this.apiKey=e,this.baseURL=o,this.throwOnError=r}};function ot(t){if(t&&typeof t=="object"&&"status"in t&&typeof t.status=="number")return t.status}function it(t){return t&&typeof t=="object"&&t.constructor?t.constructor.name:""}function We(t){let e=ot(t),o=it(t),r=t instanceof Error?t.message.toLowerCase():String(t).toLowerCase();return e===429||/ratelimit/i.test(o)?"PROVIDER_RATE_LIMIT":/timeout/i.test(o)?"PROVIDER_TIMEOUT":e===401||/authentication/i.test(o)?"PROVIDER_AUTH_ERROR":r.includes("quota")?"PROVIDER_QUOTA_LIMIT":r.includes("timeout")||r.includes("timed out")?"PROVIDER_TIMEOUT":e!==void 0?"PROVIDER_ERROR":"UNKNOWN_ERROR"}import*as Je from"@opentelemetry/api";var nt={openai:we,anthropic:be,"openai.azure":Ce,google:_e,vertexai:Oe,"amazon.bedrock":ve,"anthropic.bedrock":Te,mistral:Ue},st=t=>{if(!t||typeof t!="object"||Array.isArray(t))return!1;let e=["status","value","error_message","raw_error_message","is_output_node"];return Object.values(t).every(r=>typeof r!="object"||r===null?!1:e.every(a=>a in r))},$e=class{constructor({apiKey:e=X("PROMPTLAYER_API_KEY"),baseURL:o=X("PROMPTLAYER_BASE_URL"),enableTracing:r=!1,throwOnError:a=!0}={}){if(e===void 0)throw new Error("PromptLayer API key not provided. Please set the PROMPTLAYER_API_KEY environment variable or pass the api_key parameter.");this.apiKey=e,this.baseURL=o||"https://api.promptlayer.com",this.enableTracing=r,this.throwOnError=a,this.templates=new J(e,this.baseURL,this.throwOnError),this.skills=new W(e,this.baseURL,this.throwOnError),this.group=new B(e,this.baseURL,this.throwOnError),this.track=new G(e,this.baseURL,this.throwOnError),this.wrapWithSpan=Fe,r&&Ae(r,e,this.baseURL)}get Anthropic(){try{let e=le("@anthropic-ai/sdk").default;return te(this.apiKey,this.baseURL,e,"anthropic","anthropic")}catch(e){console.error("To use the Anthropic module, you must install the @anthropic-ai/sdk package.")}}get OpenAI(){try{let e=le("openai").default;return te(this.apiKey,this.baseURL,e,"openai","openai")}catch(e){console.error("To use the OpenAI module, you must install the @openai/api package.")}}run(k){return u(this,arguments,function*({promptName:e,promptVersion:o,promptReleaseLabel:r,inputVariables:a,tags:l,metadata:i,groupId:s,modelParameterOverrides:n,stream:p=!1,provider:g,model:d}){return O().startActiveSpan("PromptLayer Run",b=>u(this,null,function*(){try{let P={promptName:e,promptVersion:o,promptReleaseLabel:r,inputVariables:a,tags:l,metadata:i,groupId:s,modelParameterOverrides:n,stream:p};b.setAttribute("function_input",JSON.stringify(P));let z=a,v={label:r,version:o,metadata_filters:i,provider:g,model:d,model_parameter_overrides:n};a&&(v.input_variables=a);let f=yield this.templates.get(e,v);if(!f)throw new Error(`Cannot proceed: prompt template '${e}' could not be fetched. Check the warnings above for the actual error.`);let x=f.prompt_template;if(!f.llm_kwargs){let R=`Prompt '${e}' does not have any LLM kwargs associated with it. Please set your model parameters in the registry in the PromptLayer dashboard.`;if(this.throwOnError)throw new Error(R);console.warn(`WARNING: ${R}`)}let T=f.metadata;if(!T)throw new Error(`Prompt '${e}' does not have any metadata associated with it.`);let _=T.model;if(!_)throw new Error(`Prompt '${e}' does not have a model parameters associated with it.`);let N=f.custom_provider,m=new Date().toISOString(),{provider_type:h,kwargs:K}=Ee(f,N,n,p),E=h;if(h==="openai"||h==="openai.azure"){let R=_.api_type;E=`${h}:${R}`}_.name.startsWith("gemini")?E="google":_.name.startsWith("claude")&&(E="anthropic");let Y=ye(E,x),{function_name:y,stream_function:M}=Y,ie=nt[h];if(!ie)throw new Error(`No request function found for provider: ${h}`);let Z=R=>{let H=new Date().toISOString();return ke(this.baseURL,S({function_name:y,provider_type:h,args:[],kwargs:K,tags:l,request_start_time:m,request_end_time:H,api_key:this.apiKey,metadata:i,prompt_id:f.id,prompt_version:f.version,prompt_input_variables:z,group_id:s,return_prompt_blueprint:!0,span_id:b.spanContext().spanId},R),this.throwOnError)},q;try{q=yield ie(f,K)}catch(R){let H=We(R),Ge=R instanceof Error?R.message:String(R);throw yield Z({request_response:{},status:"ERROR",error_type:H,error_message:Ge}),R}if(p)return ae(q,Z,M,i||f.metadata);let ne=yield Z({request_response:q}),se={request_id:ne.request_id,raw_response:q,prompt_blueprint:ne.prompt_blueprint};return b.setAttribute("function_output",JSON.stringify(se)),se}catch(P){throw b.setStatus({code:Je.SpanStatusCode.ERROR,message:P instanceof Error?P.message:"Unknown error"}),P}finally{b.end()}}))})}runWorkflow(s){return u(this,arguments,function*({workflowName:e,inputVariables:o={},metadata:r={},workflowLabelName:a=null,workflowVersion:l=null,returnAllOutputs:i=!1}){try{let n=yield ge({workflow_name:e,input_variables:o,metadata:r,workflow_label_name:a,workflow_version_number:l,return_all_outputs:i,api_key:this.apiKey,baseURL:this.baseURL});if(!i&&st(n)){let g=Object.values(n).filter(k=>k.is_output_node===!0);if(g.length===0)throw new Error(JSON.stringify(n,null,2));if(!g.some(k=>k.status==="SUCCESS"))throw new Error(JSON.stringify(n,null,2))}return n}catch(n){throw n instanceof Error?(console.error("Error running workflow:",n.message),new Error(`Error running workflow: ${n.message}`)):(console.error("Unknown error running workflow:",n),new Error("Unknown error running workflow"))}})}logRequest(e){return u(this,null,function*(){return Pe(this.apiKey,this.baseURL,e,this.throwOnError)})}};export{$e as PromptLayer};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/groups.ts","../../src/span-exporter.ts","../../src/tracing.ts","../../src/promptlayer.ts","../../src/span-wrapper.ts","../../src/templates.ts","../../src/track.ts","../../src/utils/errors.ts","../../src/index.ts"],"sourcesContent":["import { promptLayerCreateGroup } from \"@/utils/utils\";\n\nexport class GroupManager {\n apiKey: string;\n baseURL: string;\n throwOnError: boolean;\n\n constructor(apiKey: string, baseURL: string, throwOnError: boolean = true) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.throwOnError = throwOnError;\n }\n\n create = () =>\n promptLayerCreateGroup(this.apiKey, this.baseURL, this.throwOnError);\n}\n","import { fetchWithRetry, getCommonHeaders } from \"@/utils/utils\";\nimport { Attributes, SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { ExportResultCode } from \"@opentelemetry/core\";\nimport { ReadableSpan, SpanExporter } from \"@opentelemetry/sdk-trace-base\";\n\nclass PromptLayerSpanExporter implements SpanExporter {\n private apiKey: string;\n private baseURL: string;\n private enableTracing: boolean;\n private url: string;\n\n constructor(enableTracing: boolean, apiKey: string, baseURL: string) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.enableTracing = enableTracing;\n this.url = `${this.baseURL}/spans-bulk`;\n }\n\n private attributesToObject(\n attributes: Attributes | undefined\n ): Record<string, any> {\n if (!attributes) return {};\n return Object.fromEntries(Object.entries(attributes));\n }\n\n private spanKindToString(kind: SpanKind): string {\n const kindMap: Record<SpanKind, string> = {\n [SpanKind.INTERNAL]: \"SpanKind.INTERNAL\",\n [SpanKind.SERVER]: \"SpanKind.SERVER\",\n [SpanKind.CLIENT]: \"SpanKind.CLIENT\",\n [SpanKind.PRODUCER]: \"SpanKind.PRODUCER\",\n [SpanKind.CONSUMER]: \"SpanKind.CONSUMER\",\n };\n return kindMap[kind] || \"SpanKind.INTERNAL\";\n }\n\n private statusCodeToString(code: SpanStatusCode): string {\n const statusMap: Record<SpanStatusCode, string> = {\n [SpanStatusCode.ERROR]: \"StatusCode.ERROR\",\n [SpanStatusCode.OK]: \"StatusCode.OK\",\n [SpanStatusCode.UNSET]: \"StatusCode.UNSET\",\n };\n return statusMap[code] || \"StatusCode.UNSET\";\n }\n\n private toNanoseconds(time: [number, number]): string {\n return (BigInt(time[0]) * BigInt(1e9) + BigInt(time[1])).toString();\n }\n\n export(spans: ReadableSpan[]): Promise<ExportResultCode> {\n if (!this.enableTracing) {\n return Promise.resolve(ExportResultCode.SUCCESS);\n }\n\n const requestData = spans.map((span) => ({\n name: span.name,\n context: {\n trace_id: span.spanContext().traceId,\n span_id: span.spanContext().spanId,\n trace_state: span.spanContext().traceState?.serialize() || \"\",\n },\n kind: this.spanKindToString(span.kind),\n parent_id: span.parentSpanId || null,\n start_time: this.toNanoseconds(span.startTime),\n end_time: this.toNanoseconds(span.endTime),\n status: {\n status_code: this.statusCodeToString(span.status.code),\n description: span.status.message,\n },\n attributes: this.attributesToObject(span.attributes),\n events: span.events.map((event) => ({\n name: event.name,\n timestamp: this.toNanoseconds(event.time),\n attributes: this.attributesToObject(event.attributes),\n })),\n links: span.links.map((link) => ({\n context: link.context,\n attributes: this.attributesToObject(link.attributes),\n })),\n resource: {\n attributes: {\n ...span.resource.attributes,\n \"service.name\": \"prompt-layer-js\",\n },\n schema_url: \"\",\n },\n }));\n\n return fetchWithRetry(this.url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": this.apiKey || \"\",\n ...getCommonHeaders(),\n },\n body: JSON.stringify({\n spans: requestData,\n }),\n })\n .then((response) => {\n if (!response.ok) {\n console.error(\n `Error exporting spans\\nHTTP error! status: ${response.status}`\n );\n return ExportResultCode.FAILED;\n }\n return ExportResultCode.SUCCESS;\n })\n .catch((error) => {\n console.error(\"Error exporting spans:\", error);\n return ExportResultCode.FAILED;\n });\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n}\n\nexport default PromptLayerSpanExporter;\n","import PromptLayerSpanExporter from \"@/span-exporter\";\nimport * as opentelemetry from \"@opentelemetry/api\";\nimport { SimpleSpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { NodeTracerProvider } from \"@opentelemetry/sdk-trace-node\";\n\nexport const getTracer = (name: string = \"promptlayer-tracer\") => {\n return opentelemetry.trace.getTracer(name);\n};\n\nexport const setupTracing = (\n enableTracing: boolean,\n apiKey: string,\n baseURL: string\n) => {\n const provider = new NodeTracerProvider();\n const exporter = new PromptLayerSpanExporter(enableTracing, apiKey, baseURL);\n const processor = new SimpleSpanProcessor(exporter);\n provider.addSpanProcessor(processor);\n provider.register();\n};\n","import { getTracer } from \"@/tracing\";\nimport { promptlayerApiHandler } from \"@/utils/utils\";\n\nconst tracer = getTracer();\n\nexport const promptLayerBase = (\n apiKey: string,\n baseURL: string,\n llm: object,\n function_name = \"\",\n provider = \"openai\"\n) => {\n const handler: ProxyHandler<any> = {\n construct: (target, args) => {\n const newTarget = Reflect.construct(target, args);\n Object.defineProperties(newTarget, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(newTarget, handler);\n },\n get: (target, prop, receiver) => {\n const value = target[prop];\n const function_name = `${Reflect.get(\n target,\n \"function_name\"\n )}.${prop.toString()}`;\n\n if (typeof value === \"object\") {\n Object.defineProperties(value, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(value, handler);\n }\n\n if (typeof value === \"function\") {\n return (...args: any[]) => {\n const request_start_time = new Date().toISOString();\n const provider_type = Reflect.get(target, \"provider\");\n const return_pl_id = args[0]?.return_pl_id;\n const pl_tags = args[0]?.pl_tags;\n const pl_warn_on_error = args[0]?.pl_warn_on_error;\n delete args[0]?.return_pl_id;\n delete args[0]?.pl_tags;\n delete args[0]?.pl_warn_on_error;\n\n return tracer.startActiveSpan(\n `${provider_type}.${function_name}`,\n async (span: any) => {\n try {\n span.setAttribute(\"function_input\", JSON.stringify(args));\n const response = Reflect.apply(value, target, args);\n const spanId = span.spanContext().spanId;\n\n if (response instanceof Promise) {\n return new Promise((resolve, reject) => {\n response\n .then(async (request_response) => {\n const response = await promptlayerApiHandler(\n apiKey,\n baseURL,\n {\n api_key: apiKey,\n provider_type,\n function_name,\n request_start_time,\n request_end_time: new Date().toISOString(),\n request_response,\n kwargs: args[0],\n return_pl_id,\n tags: pl_tags,\n span_id: spanId,\n },\n !pl_warn_on_error\n );\n\n span.setAttribute(\n \"function_output\",\n JSON.stringify(response)\n );\n span.setAttribute(\"response_status\", \"success\");\n span.end();\n resolve(response);\n })\n .catch((error) => {\n span.recordException(error);\n span.setAttribute(\"response_status\", \"error\");\n span.end();\n reject(error);\n });\n });\n }\n\n span.setAttribute(\"function_output\", JSON.stringify(response));\n span.setAttribute(\"response_status\", \"success\");\n span.end();\n return response;\n } catch (error) {\n span.recordException(error);\n span.setAttribute(\"response_status\", \"error\");\n span.end();\n throw error;\n }\n }\n );\n };\n }\n\n return Reflect.get(target, prop, receiver);\n },\n };\n\n return new Proxy(llm, handler);\n};\n","import * as opentelemetry from '@opentelemetry/api';\nimport { getTracer } from '@/tracing';\n\nexport const wrapWithSpan = (functionName: string, func: Function, attributes?: Record<string, any>) => {\n return function (...args: any[]) {\n const tracer = getTracer();\n\n const wrapperFunction = (span: opentelemetry.Span) => {\n try {\n if (attributes) {\n Object.entries(attributes).forEach(([key, value]) => {\n span.setAttribute(key, value);\n });\n }\n\n span.setAttribute('function_input', JSON.stringify(args));\n const result = func(...args);\n\n if (result instanceof Promise) {\n return result.then((resolvedResult) => {\n span.setAttribute('function_output', JSON.stringify(resolvedResult));\n span.setStatus({ code: opentelemetry.SpanStatusCode.OK });\n return resolvedResult;\n }).catch((error) => {\n handleError(span, error, args);\n throw error;\n }).finally(() => span.end());\n } else {\n span.setAttribute('function_output', JSON.stringify(result));\n span.setStatus({ code: opentelemetry.SpanStatusCode.OK });\n span.end();\n return result;\n }\n } catch (error) {\n handleError(span, error, args);\n throw error;\n }\n };\n\n return tracer.startActiveSpan(functionName, wrapperFunction);\n };\n};\n\nconst handleError = (span: opentelemetry.Span, error: any, args: any[]) => {\n span.setAttribute('function_input', JSON.stringify(args));\n span.setStatus({\n code: opentelemetry.SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Unknown error',\n });\n span.end();\n}\n","import {\n GetPromptTemplateParams,\n Pagination,\n PublishPromptTemplate,\n} from \"@/types\";\nimport {\n getAllPromptTemplates,\n getPromptTemplate,\n publishPromptTemplate,\n} from \"@/utils/utils\";\n\nexport class TemplateManager {\n apiKey: string;\n baseURL: string;\n throwOnError: boolean;\n\n constructor(apiKey: string, baseURL: string, throwOnError: boolean = true) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.throwOnError = throwOnError;\n }\n\n get = (promptName: string, params?: Partial<GetPromptTemplateParams>) =>\n getPromptTemplate(\n this.apiKey,\n this.baseURL,\n promptName,\n params,\n this.throwOnError\n );\n\n publish = (body: PublishPromptTemplate) =>\n publishPromptTemplate(this.apiKey, this.baseURL, body, this.throwOnError);\n\n all = (params?: Pagination) =>\n getAllPromptTemplates(this.apiKey, this.baseURL, params, this.throwOnError);\n}\n","import { TrackGroup, TrackMetadata, TrackPrompt, TrackScore } from \"@/types\";\nimport {\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n} from \"@/utils/utils\";\n\nconst metadata = (\n apiKey: string,\n baseURL: string,\n body: TrackMetadata,\n throwOnError: boolean = true\n): Promise<boolean> => {\n if (!(body.metadata instanceof Object)) {\n throw new Error(\"Please provide a dictionary of metadata.\");\n }\n for (const [key, value] of Object.entries(body.metadata)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Please provide a dictionary of metadata with key value pair of strings.\"\n );\n }\n }\n return promptLayerTrackMetadata(apiKey, baseURL, body, throwOnError);\n};\n\nconst score = (\n apiKey: string,\n baseURL: string,\n body: TrackScore,\n throwOnError: boolean = true\n): Promise<boolean> => {\n if (typeof body.score !== \"number\") {\n throw new Error(\"Score must be a number\");\n }\n if (body.score < 0 || body.score > 100) {\n throw new Error(\"Score must be a number between 0 and 100.\");\n }\n return promptLayerTrackScore(apiKey, baseURL, body, throwOnError);\n};\n\nconst prompt = (\n apiKey: string,\n baseURL: string,\n body: TrackPrompt,\n throwOnError: boolean = true\n): Promise<boolean> => {\n if (!(body.prompt_input_variables instanceof Object)) {\n throw new Error(\"Prompt template input variable dictionary not provided.\");\n }\n return promptLayerTrackPrompt(apiKey, baseURL, body, throwOnError);\n};\n\nconst group = (\n apiKey: string,\n baseURL: string,\n body: TrackGroup,\n throwOnError: boolean = true\n) => promptLayerTrackGroup(apiKey, baseURL, body, throwOnError);\n\nexport class TrackManager {\n apiKey: string;\n baseURL: string;\n throwOnError: boolean;\n\n constructor(apiKey: string, baseURL: string, throwOnError: boolean = true) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.throwOnError = throwOnError;\n }\n\n group = (body: TrackGroup) =>\n group(this.apiKey, this.baseURL, body, this.throwOnError);\n\n metadata = (body: TrackMetadata) =>\n metadata(this.apiKey, this.baseURL, body, this.throwOnError);\n\n prompt = (body: TrackPrompt) =>\n prompt(this.apiKey, this.baseURL, body, this.throwOnError);\n\n score = (body: TrackScore) =>\n score(this.apiKey, this.baseURL, body, this.throwOnError);\n}\n","export enum ErrorType {\n PROVIDER_RATE_LIMIT = \"PROVIDER_RATE_LIMIT\",\n PROVIDER_QUOTA_LIMIT = \"PROVIDER_QUOTA_LIMIT\",\n PROVIDER_TIMEOUT = \"PROVIDER_TIMEOUT\",\n PROVIDER_AUTH_ERROR = \"PROVIDER_AUTH_ERROR\",\n PROVIDER_ERROR = \"PROVIDER_ERROR\",\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n}\n\nfunction getStatusCode(error: unknown): number | undefined {\n if (\n error &&\n typeof error === \"object\" &&\n \"status\" in error &&\n typeof (error as any).status === \"number\"\n ) {\n return (error as any).status;\n }\n return undefined;\n}\n\nfunction getClassName(error: unknown): string {\n if (error && typeof error === \"object\" && error.constructor) {\n return error.constructor.name;\n }\n return \"\";\n}\n\nexport function categorizeError(error: unknown): ErrorType {\n const statusCode = getStatusCode(error);\n const className = getClassName(error);\n const message =\n error instanceof Error\n ? error.message.toLowerCase()\n : String(error).toLowerCase();\n\n if (statusCode === 429 || /ratelimit/i.test(className)) {\n return ErrorType.PROVIDER_RATE_LIMIT;\n }\n\n if (/timeout/i.test(className)) {\n return ErrorType.PROVIDER_TIMEOUT;\n }\n\n if (statusCode === 401 || /authentication/i.test(className)) {\n return ErrorType.PROVIDER_AUTH_ERROR;\n }\n\n if (message.includes(\"quota\")) {\n return ErrorType.PROVIDER_QUOTA_LIMIT;\n }\n\n if (message.includes(\"timeout\") || message.includes(\"timed out\")) {\n return ErrorType.PROVIDER_TIMEOUT;\n }\n\n if (statusCode !== undefined) {\n return ErrorType.PROVIDER_ERROR;\n }\n\n return ErrorType.UNKNOWN_ERROR;\n}\n","import { GroupManager } from \"@/groups\";\nimport { promptLayerBase } from \"@/promptlayer\";\nimport { wrapWithSpan } from \"@/span-wrapper\";\nimport { TemplateManager } from \"@/templates\";\nimport { getTracer, setupTracing } from \"@/tracing\";\nimport { TrackManager } from \"@/track\";\nimport {\n GetPromptTemplateParams,\n LogRequest,\n RunRequest,\n WorkflowRequest,\n WorkflowResponse,\n} from \"@/types\";\nimport {\n amazonBedrockRequest,\n anthropicBedrockRequest,\n anthropicRequest,\n azureOpenAIRequest,\n configureProviderSettings,\n getProviderConfig,\n googleRequest,\n mistralRequest,\n openaiRequest,\n readEnv,\n runWorkflowRequest,\n trackRequest,\n utilLogRequest,\n vertexaiRequest,\n} from \"@/utils/utils\";\nimport { categorizeError } from \"@/utils/errors\";\nimport { streamResponse } from \"@/utils/streaming\";\nimport * as opentelemetry from \"@opentelemetry/api\";\n\nconst MAP_PROVIDER_TO_FUNCTION: Record<string, any> = {\n openai: openaiRequest,\n anthropic: anthropicRequest,\n \"openai.azure\": azureOpenAIRequest,\n google: googleRequest,\n vertexai: vertexaiRequest,\n \"amazon.bedrock\": amazonBedrockRequest,\n \"anthropic.bedrock\": anthropicBedrockRequest,\n mistral: mistralRequest,\n};\n\nexport interface ClientOptions {\n apiKey?: string;\n enableTracing?: boolean;\n workspaceId?: number;\n throwOnError?: boolean;\n baseURL?: string;\n}\n\nconst isWorkflowResultsDict = (obj: any): boolean => {\n if (!obj || typeof obj !== \"object\" || Array.isArray(obj)) {\n return false;\n }\n\n const REQUIRED_KEYS = [\n \"status\",\n \"value\",\n \"error_message\",\n \"raw_error_message\",\n \"is_output_node\",\n ];\n const values = Object.values(obj);\n\n return values.every((val) => {\n if (typeof val !== \"object\" || val === null) return false;\n return REQUIRED_KEYS.every((key) => key in val);\n });\n};\n\nexport class PromptLayer {\n apiKey: string;\n baseURL: string;\n templates: TemplateManager;\n group: GroupManager;\n track: TrackManager;\n enableTracing: boolean;\n throwOnError: boolean;\n wrapWithSpan: typeof wrapWithSpan;\n\n constructor({\n apiKey = readEnv(\"PROMPTLAYER_API_KEY\"),\n baseURL = readEnv(\"PROMPTLAYER_BASE_URL\"),\n enableTracing = false,\n throwOnError = true,\n }: ClientOptions = {}) {\n if (apiKey === undefined) {\n throw new Error(\n \"PromptLayer API key not provided. Please set the PROMPTLAYER_API_KEY environment variable or pass the api_key parameter.\"\n );\n }\n\n this.apiKey = apiKey;\n this.baseURL = baseURL || \"https://api.promptlayer.com\";\n this.enableTracing = enableTracing;\n this.throwOnError = throwOnError;\n this.templates = new TemplateManager(\n apiKey,\n this.baseURL,\n this.throwOnError\n );\n this.group = new GroupManager(apiKey, this.baseURL, this.throwOnError);\n this.track = new TrackManager(apiKey, this.baseURL, this.throwOnError);\n this.wrapWithSpan = wrapWithSpan;\n\n if (enableTracing) {\n setupTracing(enableTracing, apiKey, this.baseURL);\n }\n }\n\n get Anthropic() {\n try {\n const module = require(\"@anthropic-ai/sdk\").default;\n return promptLayerBase(\n this.apiKey,\n this.baseURL,\n module,\n \"anthropic\",\n \"anthropic\"\n );\n } catch (e) {\n console.error(\n \"To use the Anthropic module, you must install the @anthropic-ai/sdk package.\"\n );\n }\n }\n\n get OpenAI() {\n try {\n const module = require(\"openai\").default;\n return promptLayerBase(\n this.apiKey,\n this.baseURL,\n module,\n \"openai\",\n \"openai\"\n );\n } catch (e) {\n console.error(\n \"To use the OpenAI module, you must install the @openai/api package.\"\n );\n }\n }\n\n async run({\n promptName,\n promptVersion,\n promptReleaseLabel,\n inputVariables,\n tags,\n metadata,\n groupId,\n modelParameterOverrides,\n stream = false,\n provider,\n model,\n }: RunRequest) {\n const tracer = getTracer();\n\n return tracer.startActiveSpan(\"PromptLayer Run\", async (span) => {\n try {\n const functionInput = {\n promptName,\n promptVersion,\n promptReleaseLabel,\n inputVariables,\n tags,\n metadata,\n groupId,\n modelParameterOverrides,\n stream,\n };\n span.setAttribute(\"function_input\", JSON.stringify(functionInput));\n\n const prompt_input_variables = inputVariables;\n const templateGetParams: GetPromptTemplateParams = {\n label: promptReleaseLabel,\n version: promptVersion,\n metadata_filters: metadata,\n provider,\n model,\n model_parameter_overrides: modelParameterOverrides,\n };\n if (inputVariables) templateGetParams.input_variables = inputVariables;\n\n const promptBlueprint = await this.templates.get(\n promptName,\n templateGetParams\n );\n\n if (!promptBlueprint) {\n throw new Error(\n `Cannot proceed: prompt template '${promptName}' could not be fetched. ` +\n `Check the warnings above for the actual error.`\n );\n }\n\n const promptTemplate = promptBlueprint.prompt_template;\n if (!promptBlueprint!.llm_kwargs) {\n const errorMessage = `Prompt '${promptName}' does not have any LLM kwargs associated with it. Please set your model parameters in the registry in the PromptLayer dashboard.`;\n if (this.throwOnError) {\n throw new Error(errorMessage);\n } else {\n console.warn(`WARNING: ${errorMessage}`);\n }\n }\n\n const promptBlueprintMetadata = promptBlueprint!.metadata;\n if (!promptBlueprintMetadata) {\n throw new Error(\n `Prompt '${promptName}' does not have any metadata associated with it.`\n );\n }\n\n const promptBlueprintModel = promptBlueprintMetadata.model;\n if (!promptBlueprintModel) {\n throw new Error(\n `Prompt '${promptName}' does not have a model parameters associated with it.`\n );\n }\n\n const customProvider = promptBlueprint!.custom_provider;\n const request_start_time = new Date().toISOString();\n\n const { provider_type, kwargs } = configureProviderSettings(\n promptBlueprint,\n customProvider,\n modelParameterOverrides,\n stream\n );\n\n let provider_type_config = provider_type;\n if (provider_type === \"openai\" || provider_type === \"openai.azure\") {\n const api_type = promptBlueprintModel.api_type;\n provider_type_config = `${provider_type}:${api_type}`;\n }\n\n if (promptBlueprintModel.name.startsWith(\"gemini\")) {\n provider_type_config = \"google\";\n } else if (promptBlueprintModel.name.startsWith(\"claude\")) {\n provider_type_config = \"anthropic\";\n }\n\n const config = getProviderConfig(provider_type_config, promptTemplate);\n const { function_name, stream_function } = config;\n\n const request_function = MAP_PROVIDER_TO_FUNCTION[provider_type];\n if (!request_function) {\n throw new Error(\n `No request function found for provider: ${provider_type}`\n );\n }\n\n const _trackRequest = (body: object) => {\n const request_end_time = new Date().toISOString();\n return trackRequest(\n this.baseURL,\n {\n function_name,\n provider_type,\n args: [],\n kwargs,\n tags,\n request_start_time,\n request_end_time,\n api_key: this.apiKey,\n metadata,\n prompt_id: promptBlueprint!.id,\n prompt_version: promptBlueprint!.version,\n prompt_input_variables,\n group_id: groupId,\n return_prompt_blueprint: true,\n span_id: span.spanContext().spanId,\n ...body,\n },\n this.throwOnError\n );\n };\n\n let response: any;\n try {\n response = await request_function(promptBlueprint!, kwargs);\n } catch (llmError: unknown) {\n const errorType = categorizeError(llmError);\n const errorMessage =\n llmError instanceof Error ? llmError.message : String(llmError);\n await _trackRequest({\n request_response: {},\n status: \"ERROR\",\n error_type: errorType,\n error_message: errorMessage,\n });\n throw llmError;\n }\n\n if (stream)\n return streamResponse(\n response,\n _trackRequest,\n stream_function,\n metadata || promptBlueprint!.metadata\n );\n const requestLog = await _trackRequest({ request_response: response });\n\n const functionOutput = {\n request_id: requestLog.request_id,\n raw_response: response,\n prompt_blueprint: requestLog.prompt_blueprint,\n };\n span.setAttribute(\"function_output\", JSON.stringify(functionOutput));\n\n return functionOutput;\n } catch (error) {\n span.setStatus({\n code: opentelemetry.SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : \"Unknown error\",\n });\n throw error;\n } finally {\n span.end();\n }\n });\n }\n\n async runWorkflow({\n workflowName,\n inputVariables = {},\n metadata = {},\n workflowLabelName = null,\n workflowVersion = null, // This is the version number, not the version ID\n returnAllOutputs = false,\n }: WorkflowRequest): Promise<WorkflowResponse> {\n try {\n const result = await runWorkflowRequest({\n workflow_name: workflowName,\n input_variables: inputVariables,\n metadata,\n workflow_label_name: workflowLabelName,\n workflow_version_number: workflowVersion,\n return_all_outputs: returnAllOutputs,\n api_key: this.apiKey,\n baseURL: this.baseURL,\n });\n\n if (!returnAllOutputs) {\n if (isWorkflowResultsDict(result)) {\n const nodeValues = Object.values(result);\n\n const outputNodes = nodeValues.filter(\n (node: any) => node.is_output_node === true\n );\n\n if (outputNodes.length === 0) {\n throw new Error(JSON.stringify(result, null, 2));\n }\n\n const anyOutputSuccess = outputNodes.some(\n (node: any) => node.status === \"SUCCESS\"\n );\n if (!anyOutputSuccess) {\n throw new Error(JSON.stringify(result, null, 2));\n }\n }\n }\n\n return result;\n } catch (error) {\n if (error instanceof Error) {\n console.error(\"Error running workflow:\", error.message);\n throw new Error(`Error running workflow: ${error.message}`);\n } else {\n console.error(\"Unknown error running workflow:\", error);\n throw new Error(\"Unknown error running workflow\");\n }\n }\n }\n\n async logRequest(body: LogRequest) {\n return utilLogRequest(this.apiKey, this.baseURL, body, this.throwOnError);\n }\n}\n"],"mappings":"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","names":["GroupManager","apiKey","baseURL","throwOnError","promptLayerCreateGroup","SpanKind","SpanStatusCode","ExportResultCode","PromptLayerSpanExporter","enableTracing","apiKey","baseURL","attributes","kind","SpanKind","code","SpanStatusCode","time","spans","ExportResultCode","requestData","span","_a","event","link","__spreadProps","__spreadValues","fetchWithRetry","getCommonHeaders","response","error","span_exporter_default","opentelemetry","SimpleSpanProcessor","NodeTracerProvider","getTracer","name","setupTracing","enableTracing","apiKey","baseURL","provider","exporter","span_exporter_default","processor","tracer","getTracer","promptLayerBase","apiKey","baseURL","llm","function_name","provider","handler","target","args","newTarget","prop","receiver","value","_a","_b","_c","_d","_e","_f","request_start_time","provider_type","return_pl_id","pl_tags","pl_warn_on_error","span","__async","response","spanId","resolve","reject","request_response","promptlayerApiHandler","error","opentelemetry","wrapWithSpan","functionName","func","attributes","args","tracer","getTracer","wrapperFunction","span","key","value","result","resolvedResult","error","handleError","TemplateManager","apiKey","baseURL","throwOnError","promptName","params","getPromptTemplate","body","publishPromptTemplate","getAllPromptTemplates","metadata","apiKey","baseURL","body","throwOnError","key","value","promptLayerTrackMetadata","score","promptLayerTrackScore","prompt","promptLayerTrackPrompt","group","promptLayerTrackGroup","TrackManager","getStatusCode","error","getClassName","categorizeError","statusCode","className","message","opentelemetry","MAP_PROVIDER_TO_FUNCTION","openaiRequest","anthropicRequest","azureOpenAIRequest","googleRequest","vertexaiRequest","amazonBedrockRequest","anthropicBedrockRequest","mistralRequest","isWorkflowResultsDict","obj","REQUIRED_KEYS","val","key","PromptLayer","apiKey","readEnv","baseURL","enableTracing","throwOnError","TemplateManager","GroupManager","TrackManager","wrapWithSpan","setupTracing","module","promptLayerBase","e","_0","__async","promptName","promptVersion","promptReleaseLabel","inputVariables","tags","metadata","groupId","modelParameterOverrides","stream","provider","model","getTracer","span","functionInput","prompt_input_variables","templateGetParams","promptBlueprint","promptTemplate","errorMessage","promptBlueprintMetadata","promptBlueprintModel","customProvider","request_start_time","provider_type","kwargs","configureProviderSettings","provider_type_config","api_type","config","getProviderConfig","function_name","stream_function","request_function","_trackRequest","body","request_end_time","trackRequest","__spreadValues","response","llmError","errorType","categorizeError","streamResponse","requestLog","functionOutput","error","workflowName","workflowLabelName","workflowVersion","returnAllOutputs","result","runWorkflowRequest","outputNodes","node","utilLogRequest"]}
|
|
1
|
+
{"version":3,"sources":["../../src/groups.ts","../../src/span-exporter.ts","../../src/tracing.ts","../../src/promptlayer.ts","../../src/utils/skills/helpers.ts","../../src/utils/endpoints.ts","../../src/utils/skills/types.ts","../../src/utils/skills/requests.ts","../../src/skills.ts","../../src/span-wrapper.ts","../../src/templates.ts","../../src/track.ts","../../src/utils/errors.ts","../../src/index.ts"],"sourcesContent":["import { promptLayerCreateGroup } from \"@/utils/utils\";\n\nexport class GroupManager {\n apiKey: string;\n baseURL: string;\n throwOnError: boolean;\n\n constructor(apiKey: string, baseURL: string, throwOnError: boolean = true) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.throwOnError = throwOnError;\n }\n\n create = () =>\n promptLayerCreateGroup(this.apiKey, this.baseURL, this.throwOnError);\n}\n","import { fetchWithRetry, getCommonHeaders } from \"@/utils/utils\";\nimport { Attributes, SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { ExportResultCode } from \"@opentelemetry/core\";\nimport { ReadableSpan, SpanExporter } from \"@opentelemetry/sdk-trace-base\";\n\nclass PromptLayerSpanExporter implements SpanExporter {\n private apiKey: string;\n private baseURL: string;\n private enableTracing: boolean;\n private url: string;\n\n constructor(enableTracing: boolean, apiKey: string, baseURL: string) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.enableTracing = enableTracing;\n this.url = `${this.baseURL}/spans-bulk`;\n }\n\n private attributesToObject(\n attributes: Attributes | undefined\n ): Record<string, any> {\n if (!attributes) return {};\n return Object.fromEntries(Object.entries(attributes));\n }\n\n private spanKindToString(kind: SpanKind): string {\n const kindMap: Record<SpanKind, string> = {\n [SpanKind.INTERNAL]: \"SpanKind.INTERNAL\",\n [SpanKind.SERVER]: \"SpanKind.SERVER\",\n [SpanKind.CLIENT]: \"SpanKind.CLIENT\",\n [SpanKind.PRODUCER]: \"SpanKind.PRODUCER\",\n [SpanKind.CONSUMER]: \"SpanKind.CONSUMER\",\n };\n return kindMap[kind] || \"SpanKind.INTERNAL\";\n }\n\n private statusCodeToString(code: SpanStatusCode): string {\n const statusMap: Record<SpanStatusCode, string> = {\n [SpanStatusCode.ERROR]: \"StatusCode.ERROR\",\n [SpanStatusCode.OK]: \"StatusCode.OK\",\n [SpanStatusCode.UNSET]: \"StatusCode.UNSET\",\n };\n return statusMap[code] || \"StatusCode.UNSET\";\n }\n\n private toNanoseconds(time: [number, number]): string {\n return (BigInt(time[0]) * BigInt(1e9) + BigInt(time[1])).toString();\n }\n\n export(spans: ReadableSpan[]): Promise<ExportResultCode> {\n if (!this.enableTracing) {\n return Promise.resolve(ExportResultCode.SUCCESS);\n }\n\n const requestData = spans.map((span) => ({\n name: span.name,\n context: {\n trace_id: span.spanContext().traceId,\n span_id: span.spanContext().spanId,\n trace_state: span.spanContext().traceState?.serialize() || \"\",\n },\n kind: this.spanKindToString(span.kind),\n parent_id: span.parentSpanId || null,\n start_time: this.toNanoseconds(span.startTime),\n end_time: this.toNanoseconds(span.endTime),\n status: {\n status_code: this.statusCodeToString(span.status.code),\n description: span.status.message,\n },\n attributes: this.attributesToObject(span.attributes),\n events: span.events.map((event) => ({\n name: event.name,\n timestamp: this.toNanoseconds(event.time),\n attributes: this.attributesToObject(event.attributes),\n })),\n links: span.links.map((link) => ({\n context: link.context,\n attributes: this.attributesToObject(link.attributes),\n })),\n resource: {\n attributes: {\n ...span.resource.attributes,\n \"service.name\": \"prompt-layer-js\",\n },\n schema_url: \"\",\n },\n }));\n\n return fetchWithRetry(this.url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": this.apiKey || \"\",\n ...getCommonHeaders(),\n },\n body: JSON.stringify({\n spans: requestData,\n }),\n })\n .then((response) => {\n if (!response.ok) {\n console.error(\n `Error exporting spans\\nHTTP error! status: ${response.status}`\n );\n return ExportResultCode.FAILED;\n }\n return ExportResultCode.SUCCESS;\n })\n .catch((error) => {\n console.error(\"Error exporting spans:\", error);\n return ExportResultCode.FAILED;\n });\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n}\n\nexport default PromptLayerSpanExporter;\n","import PromptLayerSpanExporter from \"@/span-exporter\";\nimport * as opentelemetry from \"@opentelemetry/api\";\nimport { SimpleSpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { NodeTracerProvider } from \"@opentelemetry/sdk-trace-node\";\n\nexport const getTracer = (name: string = \"promptlayer-tracer\") => {\n return opentelemetry.trace.getTracer(name);\n};\n\nexport const setupTracing = (\n enableTracing: boolean,\n apiKey: string,\n baseURL: string\n) => {\n const provider = new NodeTracerProvider();\n const exporter = new PromptLayerSpanExporter(enableTracing, apiKey, baseURL);\n const processor = new SimpleSpanProcessor(exporter);\n provider.addSpanProcessor(processor);\n provider.register();\n};\n","import { getTracer } from \"@/tracing\";\nimport { promptlayerApiHandler } from \"@/utils/utils\";\n\nconst tracer = getTracer();\n\nexport const promptLayerBase = (\n apiKey: string,\n baseURL: string,\n llm: object,\n function_name = \"\",\n provider = \"openai\"\n) => {\n const handler: ProxyHandler<any> = {\n construct: (target, args) => {\n const newTarget = Reflect.construct(target, args);\n Object.defineProperties(newTarget, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(newTarget, handler);\n },\n get: (target, prop, receiver) => {\n const value = target[prop];\n const function_name = `${Reflect.get(\n target,\n \"function_name\"\n )}.${prop.toString()}`;\n\n if (typeof value === \"object\") {\n Object.defineProperties(value, {\n function_name: {\n value: function_name,\n writable: true,\n },\n provider: {\n value: provider,\n },\n });\n return new Proxy(value, handler);\n }\n\n if (typeof value === \"function\") {\n return (...args: any[]) => {\n const request_start_time = new Date().toISOString();\n const provider_type = Reflect.get(target, \"provider\");\n const return_pl_id = args[0]?.return_pl_id;\n const pl_tags = args[0]?.pl_tags;\n const pl_warn_on_error = args[0]?.pl_warn_on_error;\n delete args[0]?.return_pl_id;\n delete args[0]?.pl_tags;\n delete args[0]?.pl_warn_on_error;\n\n return tracer.startActiveSpan(\n `${provider_type}.${function_name}`,\n async (span: any) => {\n try {\n span.setAttribute(\"function_input\", JSON.stringify(args));\n const response = Reflect.apply(value, target, args);\n const spanId = span.spanContext().spanId;\n\n if (response instanceof Promise) {\n return new Promise((resolve, reject) => {\n response\n .then(async (request_response) => {\n const response = await promptlayerApiHandler(\n apiKey,\n baseURL,\n {\n api_key: apiKey,\n provider_type,\n function_name,\n request_start_time,\n request_end_time: new Date().toISOString(),\n request_response,\n kwargs: args[0],\n return_pl_id,\n tags: pl_tags,\n span_id: spanId,\n },\n !pl_warn_on_error\n );\n\n span.setAttribute(\n \"function_output\",\n JSON.stringify(response)\n );\n span.setAttribute(\"response_status\", \"success\");\n span.end();\n resolve(response);\n })\n .catch((error) => {\n span.recordException(error);\n span.setAttribute(\"response_status\", \"error\");\n span.end();\n reject(error);\n });\n });\n }\n\n span.setAttribute(\"function_output\", JSON.stringify(response));\n span.setAttribute(\"response_status\", \"success\");\n span.end();\n return response;\n } catch (error) {\n span.recordException(error);\n span.setAttribute(\"response_status\", \"error\");\n span.end();\n throw error;\n }\n }\n );\n };\n }\n\n return Reflect.get(target, prop, receiver);\n },\n };\n\n return new Proxy(llm, handler);\n};\n","import { SkillCollectionZipSource } from \"@/types\";\n\nexport const omitUndefined = <T extends Record<string, unknown>>(\n obj: T,\n): Partial<T> =>\n Object.fromEntries(\n Object.entries(obj).filter(([, value]) => value !== undefined),\n ) as Partial<T>;\n\nexport const parseSkillResponseData = async (\n response: Response,\n): Promise<any> => {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return response.json();\n }\n\n const text = await response.text();\n if (!text) {\n return {};\n }\n\n try {\n return JSON.parse(text);\n } catch {\n return { message: text };\n }\n};\n\nexport const toZipBlob = (source: SkillCollectionZipSource): Blob => {\n if (source instanceof Blob) {\n return source;\n }\n\n if (source instanceof Uint8Array) {\n return new Blob(\n [\n source.buffer.slice(\n source.byteOffset,\n source.byteOffset + source.byteLength,\n ) as ArrayBuffer,\n ],\n { type: \"application/zip\" },\n );\n }\n\n return new Blob([source], { type: \"application/zip\" });\n};\n","export const skillCollectionsEndpoint = (baseURL: string): string =>\n `${baseURL}/api/public/v2/skill-collections`;\n\nexport const skillCollectionEndpoint = (\n baseURL: string,\n identifier: string\n): string => `${skillCollectionsEndpoint(baseURL)}/${encodeURIComponent(identifier)}`;\n\nexport const skillCollectionVersionsEndpoint = (\n baseURL: string,\n identifier: string\n): string => `${skillCollectionEndpoint(baseURL, identifier)}/versions`;\n","import {\n CreateSkillCollection,\n InitialSkillFileUpdate,\n PublishSkillCollection,\n PublishSkillCollectionFromZip,\n PullSkillCollectionResponse,\n SaveSkillCollectionVersion,\n SkillFileMove,\n SkillFileUpdate,\n UpdateSkillCollection,\n} from \"@/types\";\n\nexport interface CreateSkillCollectionRequestBody {\n name: CreateSkillCollection[\"name\"];\n folder_id?: CreateSkillCollection[\"folderId\"];\n provider: CreateSkillCollection[\"provider\"];\n files?: InitialSkillFileUpdate[];\n commit_message?: CreateSkillCollection[\"commitMessage\"];\n}\n\nexport interface SaveSkillCollectionVersionRequestBody {\n file_updates?: SkillFileUpdate[];\n moves?: SkillFileMove[];\n deletes?: SaveSkillCollectionVersion[\"deletes\"];\n commit_message?: SaveSkillCollectionVersion[\"commitMessage\"];\n release_label?: SaveSkillCollectionVersion[\"releaseLabel\"];\n provider?: SaveSkillCollectionVersion[\"provider\"];\n}\n\nexport type UpdateSkillCollectionRequestBody = Pick<UpdateSkillCollection, \"name\">;\n\nexport type PullSkillCollectionResult =\n | PullSkillCollectionResponse\n | ArrayBuffer\n | null;\n\nexport const isZipPublishRequest = (\n body: PublishSkillCollection\n): body is PublishSkillCollectionFromZip => \"zipFile\" in body;\n","import {\n PublishSkillCollection,\n SkillCollectionProvider,\n PublishSkillCollectionResponse,\n PullSkillCollectionParams,\n PullSkillCollectionResponse,\n SaveSkillCollectionVersion,\n UpdateSkillCollectionResponse,\n} from \"@/types\";\nimport {\n fetchWithRetry,\n getCommonHeaders,\n warnOnBadResponse,\n} from \"@/utils/utils\";\nimport {\n skillCollectionEndpoint,\n skillCollectionsEndpoint,\n skillCollectionVersionsEndpoint,\n} from \"@/utils/endpoints\";\nimport {\n omitUndefined,\n parseSkillResponseData,\n toZipBlob,\n} from \"./helpers\";\nimport {\n CreateSkillCollectionRequestBody,\n isZipPublishRequest,\n PullSkillCollectionResult,\n SaveSkillCollectionVersionRequestBody,\n UpdateSkillCollectionRequestBody,\n} from \"./types\";\n\nconst SKILL_COLLECTION_PROVIDERS: SkillCollectionProvider[] = [\n \"claude_code\",\n \"openai\",\n \"openclaw\",\n];\n\nconst assertValidSkillCollectionProvider = (\n provider: string | undefined,\n operation: \"publishing\" | \"updating\"\n) => {\n if (!provider) {\n if (operation === \"publishing\") {\n throw new Error(\"provider is required when publishing a skill collection.\");\n }\n return;\n }\n\n if (!SKILL_COLLECTION_PROVIDERS.includes(provider as SkillCollectionProvider)) {\n throw new Error(\n `provider must be one of: ${SKILL_COLLECTION_PROVIDERS.join(\", \")}.`\n );\n }\n};\n\nexport const pullSkillCollection = async (\n apiKey: string,\n baseURL: string,\n identifier: string,\n params?: Partial<PullSkillCollectionParams>,\n throwOnError: boolean = true\n): Promise<PullSkillCollectionResult> => {\n const url = new URL(skillCollectionEndpoint(baseURL, identifier));\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value !== undefined) {\n url.searchParams.append(key, String(value));\n }\n });\n\n const response = await fetchWithRetry(url, {\n headers: { \"X-API-KEY\": apiKey, ...getCommonHeaders() },\n });\n\n if (response.status !== 200) {\n const data = await parseSkillResponseData(response);\n const errorMessage =\n data.message || data.error || \"Failed to pull skill collection\";\n if (throwOnError) {\n throw new Error(errorMessage);\n }\n\n warnOnBadResponse(\n data,\n \"WARNING: While pulling a skill collection PromptLayer had the following error\"\n );\n return null;\n }\n\n if (params?.format === \"zip\") {\n return response.arrayBuffer();\n }\n\n return (await response.json()) as PullSkillCollectionResponse;\n};\n\nexport const publishSkillCollection = async (\n apiKey: string,\n baseURL: string,\n body: PublishSkillCollection,\n throwOnError: boolean = true\n): Promise<PublishSkillCollectionResponse | null> => {\n assertValidSkillCollectionProvider(body.provider, \"publishing\");\n\n const publishBody = isZipPublishRequest(body)\n ? (() => {\n const formData = new FormData();\n const jsonBody = omitUndefined({\n name: body.name,\n folder_id: body.folderId,\n provider: body.provider,\n commit_message: body.commitMessage,\n });\n\n formData.append(\n \"files\",\n toZipBlob(body.zipFile),\n body.fileName ?? \"skill-collection.zip\"\n );\n formData.append(\"json\", JSON.stringify(jsonBody));\n return formData;\n })()\n : JSON.stringify(\n omitUndefined({\n name: body.name,\n folder_id: body.folderId,\n provider: body.provider,\n files: body.files,\n commit_message: body.commitMessage,\n }) as CreateSkillCollectionRequestBody\n );\n\n const response = isZipPublishRequest(body)\n ? await fetchWithRetry(skillCollectionsEndpoint(baseURL), {\n method: \"POST\",\n headers: {\n \"X-API-KEY\": apiKey,\n ...getCommonHeaders(),\n },\n body: publishBody,\n })\n : await fetchWithRetry(skillCollectionsEndpoint(baseURL), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": apiKey,\n ...getCommonHeaders(),\n },\n body: publishBody,\n });\n\n const data = await parseSkillResponseData(response);\n if (response.status !== 201) {\n const errorMessage =\n data.message || data.error || \"Failed to publish skill collection\";\n if (throwOnError) {\n throw new Error(errorMessage);\n }\n\n warnOnBadResponse(\n data,\n \"WARNING: While publishing a skill collection PromptLayer had the following error\"\n );\n return null;\n }\n\n return data as PublishSkillCollectionResponse;\n};\n\nexport const updateSkillCollection = async (\n apiKey: string,\n baseURL: string,\n identifier: string,\n body: UpdateSkillCollectionRequestBody,\n throwOnError: boolean = true\n): Promise<UpdateSkillCollectionResponse | null> => {\n const response = await fetchWithRetry(skillCollectionEndpoint(baseURL, identifier), {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": apiKey,\n ...getCommonHeaders(),\n },\n body: JSON.stringify(omitUndefined(body)),\n });\n\n const data = await parseSkillResponseData(response);\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to update skill collection\";\n if (throwOnError) {\n throw new Error(errorMessage);\n }\n\n warnOnBadResponse(\n data,\n \"WARNING: While updating a skill collection PromptLayer had the following error\"\n );\n return null;\n }\n\n return data as UpdateSkillCollectionResponse;\n};\n\nexport const saveSkillCollectionVersion = async (\n apiKey: string,\n baseURL: string,\n identifier: string,\n body: SaveSkillCollectionVersion,\n throwOnError: boolean = true\n): Promise<UpdateSkillCollectionResponse | null> => {\n assertValidSkillCollectionProvider(body.provider, \"updating\");\n\n const requestBody: SaveSkillCollectionVersionRequestBody = omitUndefined({\n file_updates: body.fileUpdates,\n moves: body.moves,\n deletes: body.deletes,\n commit_message: body.commitMessage,\n release_label: body.releaseLabel,\n provider: body.provider,\n });\n\n const response = await fetchWithRetry(\n skillCollectionVersionsEndpoint(baseURL, identifier),\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": apiKey,\n ...getCommonHeaders(),\n },\n body: JSON.stringify(requestBody),\n }\n );\n\n const data = await parseSkillResponseData(response);\n if (response.status !== 201) {\n const errorMessage =\n data.message || data.error || \"Failed to save skill collection version\";\n if (throwOnError) {\n throw new Error(errorMessage);\n }\n\n warnOnBadResponse(\n data,\n \"WARNING: While saving a skill collection version PromptLayer had the following error\"\n );\n return null;\n }\n\n return data as UpdateSkillCollectionResponse;\n};\n","import {\n PublishSkillCollection,\n PublishSkillCollectionResponse,\n PullSkillCollectionParams,\n PullSkillCollectionResponse,\n SkillCollection,\n SkillCollectionVersion,\n UpdateSkillCollection,\n UpdateSkillCollectionResponse,\n} from \"@/types\";\nimport {\n publishSkillCollection,\n pullSkillCollection,\n saveSkillCollectionVersion,\n updateSkillCollection,\n} from \"@/utils/skills\";\n\nconst hasItems = <T>(value?: T[]): boolean =>\n Array.isArray(value) && value.length > 0;\n\nconst hasVersionUpdates = (body: UpdateSkillCollection): boolean =>\n hasItems(body.fileUpdates) ||\n hasItems(body.moves) ||\n hasItems(body.deletes) ||\n body.commitMessage !== undefined ||\n body.releaseLabel !== undefined ||\n body.provider !== undefined;\n\nconst normalizeUpdateResponse = (\n response: Partial<UpdateSkillCollectionResponse> | Partial<PullSkillCollectionResponse> | null,\n skillCollection: SkillCollection,\n version: SkillCollectionVersion | null\n): UpdateSkillCollectionResponse => ({\n ...(response ?? {}),\n success: response?.success ?? true,\n skill_collection: skillCollection,\n version,\n});\n\nexport class SkillManager {\n apiKey: string;\n baseURL: string;\n throwOnError: boolean;\n\n constructor(apiKey: string, baseURL: string, throwOnError: boolean = true) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.throwOnError = throwOnError;\n }\n\n pull = (identifier: string, params?: Partial<PullSkillCollectionParams>) =>\n pullSkillCollection(\n this.apiKey,\n this.baseURL,\n identifier,\n params,\n this.throwOnError\n );\n\n publish = (body: PublishSkillCollection): Promise<PublishSkillCollectionResponse | null> =>\n publishSkillCollection(this.apiKey, this.baseURL, body, this.throwOnError);\n\n update = async (\n identifier: string,\n body: UpdateSkillCollection\n ): Promise<UpdateSkillCollectionResponse | null> => {\n const renameRequested = body.name !== undefined;\n const versionUpdatesRequested = hasVersionUpdates(body);\n\n if (!renameRequested && !versionUpdatesRequested) {\n throw new Error(\n \"At least one of name, fileUpdates, moves, deletes, commitMessage, releaseLabel, or provider must be provided.\"\n );\n }\n\n let effectiveIdentifier = identifier;\n let latestResponse:\n | Partial<UpdateSkillCollectionResponse>\n | Partial<PullSkillCollectionResponse>\n | null = null;\n let skillCollection: SkillCollection | undefined;\n let version: SkillCollectionVersion | null = null;\n\n if (renameRequested) {\n const renameResponse = await updateSkillCollection(\n this.apiKey,\n this.baseURL,\n identifier,\n { name: body.name },\n this.throwOnError\n );\n if (!renameResponse) {\n return null;\n }\n\n latestResponse = renameResponse;\n skillCollection = renameResponse.skill_collection;\n version = renameResponse.version ?? null;\n effectiveIdentifier = String(renameResponse.skill_collection.id);\n }\n\n if (versionUpdatesRequested) {\n const versionResponse = await saveSkillCollectionVersion(\n this.apiKey,\n this.baseURL,\n effectiveIdentifier,\n {\n fileUpdates: body.fileUpdates,\n moves: body.moves,\n deletes: body.deletes,\n commitMessage: body.commitMessage,\n releaseLabel: body.releaseLabel,\n provider: body.provider,\n },\n this.throwOnError\n );\n if (!versionResponse) {\n return null;\n }\n\n latestResponse = versionResponse;\n skillCollection = versionResponse.skill_collection ?? skillCollection;\n version = versionResponse.version ?? version;\n }\n\n if (!skillCollection) {\n const pullResponse = await this.pull(effectiveIdentifier);\n if (!pullResponse) {\n return null;\n }\n if (pullResponse instanceof ArrayBuffer) {\n throw new Error(\"Expected JSON skill collection response but received binary data.\");\n }\n\n latestResponse = pullResponse;\n skillCollection = pullResponse.skill_collection;\n version = pullResponse.version ?? version;\n }\n\n return normalizeUpdateResponse(latestResponse, skillCollection, version);\n };\n}\n","import * as opentelemetry from '@opentelemetry/api';\nimport { getTracer } from '@/tracing';\n\nexport const wrapWithSpan = (functionName: string, func: Function, attributes?: Record<string, any>) => {\n return function (...args: any[]) {\n const tracer = getTracer();\n\n const wrapperFunction = (span: opentelemetry.Span) => {\n try {\n if (attributes) {\n Object.entries(attributes).forEach(([key, value]) => {\n span.setAttribute(key, value);\n });\n }\n\n span.setAttribute('function_input', JSON.stringify(args));\n const result = func(...args);\n\n if (result instanceof Promise) {\n return result.then((resolvedResult) => {\n span.setAttribute('function_output', JSON.stringify(resolvedResult));\n span.setStatus({ code: opentelemetry.SpanStatusCode.OK });\n return resolvedResult;\n }).catch((error) => {\n handleError(span, error, args);\n throw error;\n }).finally(() => span.end());\n } else {\n span.setAttribute('function_output', JSON.stringify(result));\n span.setStatus({ code: opentelemetry.SpanStatusCode.OK });\n span.end();\n return result;\n }\n } catch (error) {\n handleError(span, error, args);\n throw error;\n }\n };\n\n return tracer.startActiveSpan(functionName, wrapperFunction);\n };\n};\n\nconst handleError = (span: opentelemetry.Span, error: any, args: any[]) => {\n span.setAttribute('function_input', JSON.stringify(args));\n span.setStatus({\n code: opentelemetry.SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Unknown error',\n });\n span.end();\n}\n","import {\n GetPromptTemplateParams,\n Pagination,\n PublishPromptTemplate,\n} from \"@/types\";\nimport {\n getAllPromptTemplates,\n getPromptTemplate,\n publishPromptTemplate,\n} from \"@/utils/utils\";\n\nexport class TemplateManager {\n apiKey: string;\n baseURL: string;\n throwOnError: boolean;\n\n constructor(apiKey: string, baseURL: string, throwOnError: boolean = true) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.throwOnError = throwOnError;\n }\n\n get = (promptName: string, params?: Partial<GetPromptTemplateParams>) =>\n getPromptTemplate(\n this.apiKey,\n this.baseURL,\n promptName,\n params,\n this.throwOnError\n );\n\n publish = (body: PublishPromptTemplate) =>\n publishPromptTemplate(this.apiKey, this.baseURL, body, this.throwOnError);\n\n all = (params?: Pagination) =>\n getAllPromptTemplates(this.apiKey, this.baseURL, params, this.throwOnError);\n}\n","import { TrackGroup, TrackMetadata, TrackPrompt, TrackScore } from \"@/types\";\nimport {\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n} from \"@/utils/utils\";\n\nconst metadata = (\n apiKey: string,\n baseURL: string,\n body: TrackMetadata,\n throwOnError: boolean = true\n): Promise<boolean> => {\n if (!(body.metadata instanceof Object)) {\n throw new Error(\"Please provide a dictionary of metadata.\");\n }\n for (const [key, value] of Object.entries(body.metadata)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Please provide a dictionary of metadata with key value pair of strings.\"\n );\n }\n }\n return promptLayerTrackMetadata(apiKey, baseURL, body, throwOnError);\n};\n\nconst score = (\n apiKey: string,\n baseURL: string,\n body: TrackScore,\n throwOnError: boolean = true\n): Promise<boolean> => {\n if (typeof body.score !== \"number\") {\n throw new Error(\"Score must be a number\");\n }\n if (body.score < 0 || body.score > 100) {\n throw new Error(\"Score must be a number between 0 and 100.\");\n }\n return promptLayerTrackScore(apiKey, baseURL, body, throwOnError);\n};\n\nconst prompt = (\n apiKey: string,\n baseURL: string,\n body: TrackPrompt,\n throwOnError: boolean = true\n): Promise<boolean> => {\n if (!(body.prompt_input_variables instanceof Object)) {\n throw new Error(\"Prompt template input variable dictionary not provided.\");\n }\n return promptLayerTrackPrompt(apiKey, baseURL, body, throwOnError);\n};\n\nconst group = (\n apiKey: string,\n baseURL: string,\n body: TrackGroup,\n throwOnError: boolean = true\n) => promptLayerTrackGroup(apiKey, baseURL, body, throwOnError);\n\nexport class TrackManager {\n apiKey: string;\n baseURL: string;\n throwOnError: boolean;\n\n constructor(apiKey: string, baseURL: string, throwOnError: boolean = true) {\n this.apiKey = apiKey;\n this.baseURL = baseURL;\n this.throwOnError = throwOnError;\n }\n\n group = (body: TrackGroup) =>\n group(this.apiKey, this.baseURL, body, this.throwOnError);\n\n metadata = (body: TrackMetadata) =>\n metadata(this.apiKey, this.baseURL, body, this.throwOnError);\n\n prompt = (body: TrackPrompt) =>\n prompt(this.apiKey, this.baseURL, body, this.throwOnError);\n\n score = (body: TrackScore) =>\n score(this.apiKey, this.baseURL, body, this.throwOnError);\n}\n","export enum ErrorType {\n PROVIDER_RATE_LIMIT = \"PROVIDER_RATE_LIMIT\",\n PROVIDER_QUOTA_LIMIT = \"PROVIDER_QUOTA_LIMIT\",\n PROVIDER_TIMEOUT = \"PROVIDER_TIMEOUT\",\n PROVIDER_AUTH_ERROR = \"PROVIDER_AUTH_ERROR\",\n PROVIDER_ERROR = \"PROVIDER_ERROR\",\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n}\n\nfunction getStatusCode(error: unknown): number | undefined {\n if (\n error &&\n typeof error === \"object\" &&\n \"status\" in error &&\n typeof (error as any).status === \"number\"\n ) {\n return (error as any).status;\n }\n return undefined;\n}\n\nfunction getClassName(error: unknown): string {\n if (error && typeof error === \"object\" && error.constructor) {\n return error.constructor.name;\n }\n return \"\";\n}\n\nexport function categorizeError(error: unknown): ErrorType {\n const statusCode = getStatusCode(error);\n const className = getClassName(error);\n const message =\n error instanceof Error\n ? error.message.toLowerCase()\n : String(error).toLowerCase();\n\n if (statusCode === 429 || /ratelimit/i.test(className)) {\n return ErrorType.PROVIDER_RATE_LIMIT;\n }\n\n if (/timeout/i.test(className)) {\n return ErrorType.PROVIDER_TIMEOUT;\n }\n\n if (statusCode === 401 || /authentication/i.test(className)) {\n return ErrorType.PROVIDER_AUTH_ERROR;\n }\n\n if (message.includes(\"quota\")) {\n return ErrorType.PROVIDER_QUOTA_LIMIT;\n }\n\n if (message.includes(\"timeout\") || message.includes(\"timed out\")) {\n return ErrorType.PROVIDER_TIMEOUT;\n }\n\n if (statusCode !== undefined) {\n return ErrorType.PROVIDER_ERROR;\n }\n\n return ErrorType.UNKNOWN_ERROR;\n}\n","import { GroupManager } from \"@/groups\";\nimport { promptLayerBase } from \"@/promptlayer\";\nimport { SkillManager } from \"@/skills\";\nimport { wrapWithSpan } from \"@/span-wrapper\";\nimport { TemplateManager } from \"@/templates\";\nimport { getTracer, setupTracing } from \"@/tracing\";\nimport { TrackManager } from \"@/track\";\nimport {\n CreateSkillCollection,\n CreateSkillCollectionResponse,\n GetPromptTemplateParams,\n InitialSkillFileUpdate,\n LogRequest,\n PublishSkillCollection,\n PublishSkillCollectionFromZip,\n PublishSkillCollectionResponse,\n PullSkillCollectionParams,\n PullSkillCollectionResponse,\n RunRequest,\n SaveSkillCollectionVersion,\n SkillCollection,\n SkillCollectionVersion,\n SkillFileMove,\n SkillFileUpdate,\n UpdateSkillCollection,\n UpdateSkillCollectionResponse,\n WorkflowRequest,\n WorkflowResponse,\n} from \"@/types\";\nimport {\n amazonBedrockRequest,\n anthropicBedrockRequest,\n anthropicRequest,\n azureOpenAIRequest,\n configureProviderSettings,\n getProviderConfig,\n googleRequest,\n mistralRequest,\n openaiRequest,\n readEnv,\n runWorkflowRequest,\n trackRequest,\n utilLogRequest,\n vertexaiRequest,\n} from \"@/utils/utils\";\nimport { categorizeError } from \"@/utils/errors\";\nimport { streamResponse } from \"@/utils/streaming\";\nimport * as opentelemetry from \"@opentelemetry/api\";\n\nconst MAP_PROVIDER_TO_FUNCTION: Record<string, any> = {\n openai: openaiRequest,\n anthropic: anthropicRequest,\n \"openai.azure\": azureOpenAIRequest,\n google: googleRequest,\n vertexai: vertexaiRequest,\n \"amazon.bedrock\": amazonBedrockRequest,\n \"anthropic.bedrock\": anthropicBedrockRequest,\n mistral: mistralRequest,\n};\n\nexport interface ClientOptions {\n apiKey?: string;\n enableTracing?: boolean;\n workspaceId?: number;\n throwOnError?: boolean;\n baseURL?: string;\n}\n\nconst isWorkflowResultsDict = (obj: any): boolean => {\n if (!obj || typeof obj !== \"object\" || Array.isArray(obj)) {\n return false;\n }\n\n const REQUIRED_KEYS = [\n \"status\",\n \"value\",\n \"error_message\",\n \"raw_error_message\",\n \"is_output_node\",\n ];\n const values = Object.values(obj);\n\n return values.every((val) => {\n if (typeof val !== \"object\" || val === null) return false;\n return REQUIRED_KEYS.every((key) => key in val);\n });\n};\n\nexport class PromptLayer {\n apiKey: string;\n baseURL: string;\n templates: TemplateManager;\n skills: SkillManager;\n group: GroupManager;\n track: TrackManager;\n enableTracing: boolean;\n throwOnError: boolean;\n wrapWithSpan: typeof wrapWithSpan;\n\n constructor({\n apiKey = readEnv(\"PROMPTLAYER_API_KEY\"),\n baseURL = readEnv(\"PROMPTLAYER_BASE_URL\"),\n enableTracing = false,\n throwOnError = true,\n }: ClientOptions = {}) {\n if (apiKey === undefined) {\n throw new Error(\n \"PromptLayer API key not provided. Please set the PROMPTLAYER_API_KEY environment variable or pass the api_key parameter.\"\n );\n }\n\n this.apiKey = apiKey;\n this.baseURL = baseURL || \"https://api.promptlayer.com\";\n this.enableTracing = enableTracing;\n this.throwOnError = throwOnError;\n this.templates = new TemplateManager(\n apiKey,\n this.baseURL,\n this.throwOnError\n );\n this.skills = new SkillManager(apiKey, this.baseURL, this.throwOnError);\n this.group = new GroupManager(apiKey, this.baseURL, this.throwOnError);\n this.track = new TrackManager(apiKey, this.baseURL, this.throwOnError);\n this.wrapWithSpan = wrapWithSpan;\n\n if (enableTracing) {\n setupTracing(enableTracing, apiKey, this.baseURL);\n }\n }\n\n get Anthropic() {\n try {\n const module = require(\"@anthropic-ai/sdk\").default;\n return promptLayerBase(\n this.apiKey,\n this.baseURL,\n module,\n \"anthropic\",\n \"anthropic\"\n );\n } catch (e) {\n console.error(\n \"To use the Anthropic module, you must install the @anthropic-ai/sdk package.\"\n );\n }\n }\n\n get OpenAI() {\n try {\n const module = require(\"openai\").default;\n return promptLayerBase(\n this.apiKey,\n this.baseURL,\n module,\n \"openai\",\n \"openai\"\n );\n } catch (e) {\n console.error(\n \"To use the OpenAI module, you must install the @openai/api package.\"\n );\n }\n }\n\n async run({\n promptName,\n promptVersion,\n promptReleaseLabel,\n inputVariables,\n tags,\n metadata,\n groupId,\n modelParameterOverrides,\n stream = false,\n provider,\n model,\n }: RunRequest) {\n const tracer = getTracer();\n\n return tracer.startActiveSpan(\"PromptLayer Run\", async (span) => {\n try {\n const functionInput = {\n promptName,\n promptVersion,\n promptReleaseLabel,\n inputVariables,\n tags,\n metadata,\n groupId,\n modelParameterOverrides,\n stream,\n };\n span.setAttribute(\"function_input\", JSON.stringify(functionInput));\n\n const prompt_input_variables = inputVariables;\n const templateGetParams: GetPromptTemplateParams = {\n label: promptReleaseLabel,\n version: promptVersion,\n metadata_filters: metadata,\n provider,\n model,\n model_parameter_overrides: modelParameterOverrides,\n };\n if (inputVariables) templateGetParams.input_variables = inputVariables;\n\n const promptBlueprint = await this.templates.get(\n promptName,\n templateGetParams\n );\n\n if (!promptBlueprint) {\n throw new Error(\n `Cannot proceed: prompt template '${promptName}' could not be fetched. ` +\n `Check the warnings above for the actual error.`\n );\n }\n\n const promptTemplate = promptBlueprint.prompt_template;\n if (!promptBlueprint!.llm_kwargs) {\n const errorMessage = `Prompt '${promptName}' does not have any LLM kwargs associated with it. Please set your model parameters in the registry in the PromptLayer dashboard.`;\n if (this.throwOnError) {\n throw new Error(errorMessage);\n } else {\n console.warn(`WARNING: ${errorMessage}`);\n }\n }\n\n const promptBlueprintMetadata = promptBlueprint!.metadata;\n if (!promptBlueprintMetadata) {\n throw new Error(\n `Prompt '${promptName}' does not have any metadata associated with it.`\n );\n }\n\n const promptBlueprintModel = promptBlueprintMetadata.model;\n if (!promptBlueprintModel) {\n throw new Error(\n `Prompt '${promptName}' does not have a model parameters associated with it.`\n );\n }\n\n const customProvider = promptBlueprint!.custom_provider;\n const request_start_time = new Date().toISOString();\n\n const { provider_type, kwargs } = configureProviderSettings(\n promptBlueprint,\n customProvider,\n modelParameterOverrides,\n stream\n );\n\n let provider_type_config = provider_type;\n if (provider_type === \"openai\" || provider_type === \"openai.azure\") {\n const api_type = promptBlueprintModel.api_type;\n provider_type_config = `${provider_type}:${api_type}`;\n }\n\n if (promptBlueprintModel.name.startsWith(\"gemini\")) {\n provider_type_config = \"google\";\n } else if (promptBlueprintModel.name.startsWith(\"claude\")) {\n provider_type_config = \"anthropic\";\n }\n\n const config = getProviderConfig(provider_type_config, promptTemplate);\n const { function_name, stream_function } = config;\n\n const request_function = MAP_PROVIDER_TO_FUNCTION[provider_type];\n if (!request_function) {\n throw new Error(\n `No request function found for provider: ${provider_type}`\n );\n }\n\n const _trackRequest = (body: object) => {\n const request_end_time = new Date().toISOString();\n return trackRequest(\n this.baseURL,\n {\n function_name,\n provider_type,\n args: [],\n kwargs,\n tags,\n request_start_time,\n request_end_time,\n api_key: this.apiKey,\n metadata,\n prompt_id: promptBlueprint!.id,\n prompt_version: promptBlueprint!.version,\n prompt_input_variables,\n group_id: groupId,\n return_prompt_blueprint: true,\n span_id: span.spanContext().spanId,\n ...body,\n },\n this.throwOnError\n );\n };\n\n let response: any;\n try {\n response = await request_function(promptBlueprint!, kwargs);\n } catch (llmError: unknown) {\n const errorType = categorizeError(llmError);\n const errorMessage =\n llmError instanceof Error ? llmError.message : String(llmError);\n await _trackRequest({\n request_response: {},\n status: \"ERROR\",\n error_type: errorType,\n error_message: errorMessage,\n });\n throw llmError;\n }\n\n if (stream)\n return streamResponse(\n response,\n _trackRequest,\n stream_function,\n metadata || promptBlueprint!.metadata\n );\n const requestLog = await _trackRequest({ request_response: response });\n\n const functionOutput = {\n request_id: requestLog.request_id,\n raw_response: response,\n prompt_blueprint: requestLog.prompt_blueprint,\n };\n span.setAttribute(\"function_output\", JSON.stringify(functionOutput));\n\n return functionOutput;\n } catch (error) {\n span.setStatus({\n code: opentelemetry.SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : \"Unknown error\",\n });\n throw error;\n } finally {\n span.end();\n }\n });\n }\n\n async runWorkflow({\n workflowName,\n inputVariables = {},\n metadata = {},\n workflowLabelName = null,\n workflowVersion = null, // This is the version number, not the version ID\n returnAllOutputs = false,\n }: WorkflowRequest): Promise<WorkflowResponse> {\n try {\n const result = await runWorkflowRequest({\n workflow_name: workflowName,\n input_variables: inputVariables,\n metadata,\n workflow_label_name: workflowLabelName,\n workflow_version_number: workflowVersion,\n return_all_outputs: returnAllOutputs,\n api_key: this.apiKey,\n baseURL: this.baseURL,\n });\n\n if (!returnAllOutputs) {\n if (isWorkflowResultsDict(result)) {\n const nodeValues = Object.values(result);\n\n const outputNodes = nodeValues.filter(\n (node: any) => node.is_output_node === true\n );\n\n if (outputNodes.length === 0) {\n throw new Error(JSON.stringify(result, null, 2));\n }\n\n const anyOutputSuccess = outputNodes.some(\n (node: any) => node.status === \"SUCCESS\"\n );\n if (!anyOutputSuccess) {\n throw new Error(JSON.stringify(result, null, 2));\n }\n }\n }\n\n return result;\n } catch (error) {\n if (error instanceof Error) {\n console.error(\"Error running workflow:\", error.message);\n throw new Error(`Error running workflow: ${error.message}`);\n } else {\n console.error(\"Unknown error running workflow:\", error);\n throw new Error(\"Unknown error running workflow\");\n }\n }\n }\n\n async logRequest(body: LogRequest) {\n return utilLogRequest(this.apiKey, this.baseURL, body, this.throwOnError);\n }\n}\n\nexport type {\n CreateSkillCollection,\n CreateSkillCollectionResponse,\n InitialSkillFileUpdate,\n PublishSkillCollection,\n PublishSkillCollectionFromZip,\n PublishSkillCollectionResponse,\n PullSkillCollectionParams,\n PullSkillCollectionResponse,\n SaveSkillCollectionVersion,\n SkillCollection,\n SkillCollectionVersion,\n SkillFileMove,\n SkillFileUpdate,\n UpdateSkillCollection,\n UpdateSkillCollectionResponse,\n};\n"],"mappings":"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","names":["GroupManager","apiKey","baseURL","throwOnError","promptLayerCreateGroup","SpanKind","SpanStatusCode","ExportResultCode","PromptLayerSpanExporter","enableTracing","apiKey","baseURL","attributes","kind","SpanKind","code","SpanStatusCode","time","spans","ExportResultCode","requestData","span","_a","event","link","__spreadProps","__spreadValues","fetchWithRetry","getCommonHeaders","response","error","span_exporter_default","opentelemetry","SimpleSpanProcessor","NodeTracerProvider","getTracer","name","setupTracing","enableTracing","apiKey","baseURL","provider","exporter","span_exporter_default","processor","tracer","getTracer","promptLayerBase","apiKey","baseURL","llm","function_name","provider","handler","target","args","newTarget","prop","receiver","value","_a","_b","_c","_d","_e","_f","request_start_time","provider_type","return_pl_id","pl_tags","pl_warn_on_error","span","__async","response","spanId","resolve","reject","request_response","promptlayerApiHandler","error","omitUndefined","obj","value","parseSkillResponseData","response","__async","_a","text","e","toZipBlob","source","skillCollectionsEndpoint","baseURL","skillCollectionEndpoint","identifier","skillCollectionVersionsEndpoint","isZipPublishRequest","body","SKILL_COLLECTION_PROVIDERS","assertValidSkillCollectionProvider","provider","operation","pullSkillCollection","apiKey","baseURL","identifier","params","throwOnError","__async","url","skillCollectionEndpoint","key","value","response","fetchWithRetry","__spreadValues","getCommonHeaders","data","parseSkillResponseData","errorMessage","warnOnBadResponse","publishSkillCollection","body","publishBody","isZipPublishRequest","_a","formData","jsonBody","omitUndefined","toZipBlob","skillCollectionsEndpoint","updateSkillCollection","saveSkillCollectionVersion","requestBody","skillCollectionVersionsEndpoint","hasItems","value","hasVersionUpdates","body","normalizeUpdateResponse","response","skillCollection","version","_a","__spreadProps","__spreadValues","SkillManager","apiKey","baseURL","throwOnError","identifier","params","pullSkillCollection","publishSkillCollection","__async","_b","_c","_d","renameRequested","versionUpdatesRequested","effectiveIdentifier","latestResponse","renameResponse","updateSkillCollection","versionResponse","saveSkillCollectionVersion","pullResponse","opentelemetry","wrapWithSpan","functionName","func","attributes","args","tracer","getTracer","wrapperFunction","span","key","value","result","resolvedResult","error","handleError","TemplateManager","apiKey","baseURL","throwOnError","promptName","params","getPromptTemplate","body","publishPromptTemplate","getAllPromptTemplates","metadata","apiKey","baseURL","body","throwOnError","key","value","promptLayerTrackMetadata","score","promptLayerTrackScore","prompt","promptLayerTrackPrompt","group","promptLayerTrackGroup","TrackManager","getStatusCode","error","getClassName","categorizeError","statusCode","className","message","opentelemetry","MAP_PROVIDER_TO_FUNCTION","openaiRequest","anthropicRequest","azureOpenAIRequest","googleRequest","vertexaiRequest","amazonBedrockRequest","anthropicBedrockRequest","mistralRequest","isWorkflowResultsDict","obj","REQUIRED_KEYS","val","key","PromptLayer","apiKey","readEnv","baseURL","enableTracing","throwOnError","TemplateManager","SkillManager","GroupManager","TrackManager","wrapWithSpan","setupTracing","module","promptLayerBase","_0","__async","promptName","promptVersion","promptReleaseLabel","inputVariables","tags","metadata","groupId","modelParameterOverrides","stream","provider","model","getTracer","span","functionInput","prompt_input_variables","templateGetParams","promptBlueprint","promptTemplate","errorMessage","promptBlueprintMetadata","promptBlueprintModel","customProvider","request_start_time","provider_type","kwargs","configureProviderSettings","provider_type_config","api_type","config","getProviderConfig","function_name","stream_function","request_function","_trackRequest","body","request_end_time","trackRequest","__spreadValues","response","llmError","errorType","categorizeError","streamResponse","requestLog","functionOutput","error","workflowName","workflowLabelName","workflowVersion","returnAllOutputs","result","runWorkflowRequest","outputNodes","node","utilLogRequest"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{F as V,G as F,a as g,d,f as T,g as L,h as C}from"./chunk-KDVM55TG.js";var ot=1,at=3,p=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Q=e=>typeof e=="string"||typeof e=="number"||typeof e=="boolean",st=e=>e.replace(/[^a-zA-Z0-9_.-]/g,"_"),S=e=>e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:Array.isArray(e)?e.map(t=>S(t)):p(e)?Object.fromEntries(Object.entries(e).map(([t,n])=>[t,S(n)])):String(e),_=e=>{let t=n=>Array.isArray(n)?n.map(r=>t(r)):p(n)?Object.keys(n).sort().reduce((r,o)=>(r[o]=t(n[o]),r),{}):n;return JSON.stringify(t(S(e)))},l=(e,t,n)=>{n!=null&&n!==""&&(e[t]=String(n))},K=(e,t,n)=>{if(n!=null&&n!==""){let r=Number(n);Number.isNaN(r)||(e[t]=r)}},m=(e,t,n,r)=>{r&&n!==void 0&&n!==null&&(e[t]=_(n))},b=(e,t,n)=>{t.forEach((r,o)=>{Object.entries(r).forEach(([a,s])=>{n[`${e}.${o}.${a}`]=Q(s)?s:_(s)})})},Z=e=>Array.isArray(e)?e.map(t=>{var a,s,i,c,u;if(!p(t))return null;let n=p(t.function)?t.function:null,r=(s=(a=n==null?void 0:n.name)!=null?a:t.name)!=null?s:"tool",o=(c=(i=n==null?void 0:n.arguments)!=null?i:t.arguments)!=null?c:{};if(typeof o=="string")try{o=JSON.parse(o)}catch(R){o=o}return{id:String((u=t.id)!=null?u:""),type:"tool_call",name:String(r),arguments:S(o)}}).filter(t=>t!==null):[],H=e=>{var n,r;let t=(r=(n=e.call_id)!=null?n:e.callId)!=null?r:e.id;return t!=null?String(t):void 0},it=e=>{if(e==null)return;if(typeof e=="string")return e;if(Array.isArray(e)){let n=y(e);return n!=null?n:_(e)}if(p(e)){let n=y([e]);return n!=null?n:_(e)}let t=y(e);return t!==void 0?t:_(e)},B=e=>{var n,r,o;let t=(n=e.arguments)!=null?n:{};if(typeof t=="string")try{t=JSON.parse(t)}catch(a){t=t}return{role:"assistant",tool_calls:[{id:(r=H(e))!=null?r:"",type:"tool_call",name:String((o=e.name)!=null?o:"tool"),arguments:S(t)}]}},$=(e,t)=>{var a;let n=H(e),r=it((a=t!=null?t:e.output)!=null?a:e.content);if(!n&&!r)return null;let o={role:"tool"};return n&&(o.tool_call_id=n),r!==void 0&&(o.content=r),o};function y(e){if(e!=null){if(typeof e=="string")return e;if(Array.isArray(e)){let t=e.map(n=>{var o;if(!p(n))return null;let r=n.type;if(r==="text"||r==="input_text"||r==="output_text"){let a=(o=n.text)!=null?o:n.content;return a!=null?String(a):null}return null}).filter(n=>n!==null);return t.length>0?t.join(`
|
|
2
2
|
`):void 0}return String(e)}}var J=e=>Array.isArray(e)?e.map(t=>{if(!p(t))return null;let n={};t.role!==void 0&&(n.role=String(t.role));let r=y(t.content);r&&(n.content=r);let o=Z(t.tool_calls);return o.length>0&&(n.tool_calls=o),t.tool_call_id&&(n.tool_call_id=String(t.tool_call_id)),Object.keys(n).length>0?n:null}).filter(t=>t!==null):[],v=e=>{let t={},n=e.role,r=y(e.content),o=Z(e.tool_calls);return n!=null?t.role=String(n):(r||o.length>0)&&(t.role="assistant"),r&&(t.content=r),o.length>0&&(t.tool_calls=o),e.tool_call_id&&(t.tool_call_id=String(e.tool_call_id)),Object.keys(t).length>0?t:null},ct=new Set(["function_call","computer_call","shell_call","apply_patch_call","custom_tool_call","mcp_call"]),pt=new Set(["function_call_output","function_call_result","computer_call_output","computer_call_result","shell_call_output","apply_patch_call_output","custom_tool_call_output"]),D=e=>typeof e=="string"?[{role:"user",content:e}]:Array.isArray(e)?e.flatMap(t=>{if(!p(t))return[];if(t.type==="message_output_item"&&p(t.rawItem)){let r=v(t.rawItem);return r?[r]:[]}if(t.type==="tool_call_item"&&p(t.rawItem)){let r=B(t.rawItem);return r?[r]:[]}if(t.type==="tool_call_output_item"&&p(t.rawItem)){let r=$(t.rawItem,t.output);return r?[r]:[]}if(typeof t.type=="string"&&ct.has(t.type)){let r=B(t);return r?[r]:[]}if(typeof t.type=="string"&&pt.has(t.type)){let r=$(t);return r?[r]:[]}let n=v(t);return n?[n]:[]}).filter(t=>t!==null):[],W=(e,t)=>{var n,r;p(t)&&(K(e,"gen_ai.usage.input_tokens",(n=t.input_tokens)!=null?n:t.prompt_tokens),K(e,"gen_ai.usage.output_tokens",(r=t.output_tokens)!=null?r:t.completion_tokens))},ut=(e,t)=>{let n={"gen_ai.provider.name":"openai.responses"};return l(n,"gen_ai.request.model",e.model),W(n,e.usage),b("gen_ai.prompt",J(e.input),n),b("gen_ai.completion",J(e.output),n),m(n,"openai_agents.model_config_json",e.model_config,t),m(n,"openai_agents.generation.raw_input_json",e.input,t),m(n,"openai_agents.generation.raw_output_json",e.output,t),n},lt=(e,t)=>{var a,s,i;let n={"gen_ai.provider.name":"openai.responses"},r=p(e._response)?e._response:{},o=p(r.usage)?r.usage:void 0;return l(n,"gen_ai.request.model",r.model),l(n,"gen_ai.response.model",r.model),l(n,"gen_ai.response.id",(s=(a=e.response_id)!=null?a:r.id)!=null?s:r.response_id),W(n,o),b("gen_ai.prompt",D((i=e._input)!=null?i:r.input),n),b("gen_ai.completion",D(r.output),n),m(n,"openai_agents.response.raw_json",r,t),l(n,"openai_agents.response.object",r.object),n},dt=(e,t)=>{let n={node_type:"CODE_EXECUTION",tool_name:e.name,"openai_agents.function.name":e.name};return l(n,"function_input",e.input),l(n,"function_output",e.output),l(n,"openai_agents.function.input",e.input),l(n,"openai_agents.function.output",e.output),m(n,"openai_agents.function.mcp_data_json",e.mcp_data,t),n},gt=(e,t)=>{let n={"openai_agents.agent.name":e.name};return l(n,"openai_agents.agent.output_type",e.output_type),m(n,"openai_agents.agent.handoffs_json",e.handoffs,t),m(n,"openai_agents.agent.tools_json",e.tools,t),n},mt=e=>{let t={};return l(t,"openai_agents.handoff.from_agent",e.from_agent),l(t,"openai_agents.handoff.to_agent",e.to_agent),t},ft=e=>({"openai_agents.guardrail.name":e.name,"openai_agents.guardrail.triggered":e.triggered}),_t=(e,t)=>{let n={"openai_agents.custom.name":e.name};return m(n,"openai_agents.custom.data_json",e.data,t),n},yt=(e,t)=>t?{"openai_agents.raw_json":_(e)}:{},X=()=>T,E=e=>e.spanData.type==="generation"||e.spanData.type==="response"?at:ot,P=e=>{switch(e.spanData.type){case"function":return`Function: ${e.spanData.name}`;case"agent":return`Agent: ${e.spanData.name}`;case"guardrail":return`Guardrail: ${e.spanData.name}`;case"custom":return String(e.spanData.name);default:return e.spanData.type.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}},w=(e,t)=>{let n={"promptlayer.telemetry.source":"openai-agents-js","promptlayer.telemetry.source_version":X(),"openai_agents.trace_id_original":e.traceId,"openai_agents.workflow_name":e.name};return e.groupId&&(n["openai_agents.group_id"]=e.groupId),p(e.metadata)&&(Object.entries(e.metadata).forEach(([r,o])=>{Q(o)&&(n[`openai_agents.metadata.${st(r)}`]=o)}),m(n,"openai_agents.metadata_json",e.metadata,t)),n},k=e=>{let t={"promptlayer.telemetry.source":"openai-agents-js","promptlayer.telemetry.source_version":X(),"openai_agents.span_id_original":e.spanId,"openai_agents.span_type":e.spanData.type};return e.parentId&&(t["openai_agents.parent_id_original"]=e.parentId),t},Y=(e,t)=>{switch(e.type){case"generation":return ut(e,t);case"response":return lt(e,t);case"function":return dt(e,t);case"agent":return gt(e,t);case"handoff":return mt(e);case"guardrail":return ft(e);case"custom":return _t(e,t);default:return yt(e,t)}},h=0,q=1,G=2;var M=e=>typeof e=="string"?{stringValue:e}:typeof e=="boolean"?{boolValue:e}:typeof e=="number"?Number.isInteger(e)?{intValue:String(e)}:{doubleValue:e}:e===null?{stringValue:"null"}:Array.isArray(e)?{arrayValue:{values:e.map(t=>M(t))}}:{kvlistValue:{values:Object.entries(e).map(([t,n])=>({key:t,value:M(n)}))}},U=e=>Object.entries(e).map(([t,n])=>({key:t,value:M(n)})),tt=(e,{serviceName:t="promptlayer-openai-agents-js",scopeName:n="promptlayer.integrations.openai_agents",scopeVersion:r=T}={})=>({resourceSpans:[{resource:{attributes:U({"service.name":t})},scopeSpans:[{scope:{name:n,version:r},spans:e.map(o=>{var s,i;let a={traceId:o.traceId,spanId:o.spanId,name:o.name,kind:o.kind,startTimeUnixNano:o.startTimeUnixNano,endTimeUnixNano:(s=o.endTimeUnixNano)!=null?s:o.startTimeUnixNano,attributes:U(o.attributes),events:((i=o.events)!=null?i:[]).map(c=>{var u;return{name:c.name,timeUnixNano:c.timeUnixNano,attributes:U((u=c.attributes)!=null?u:{})}}),links:[]};return o.parentSpanId&&(a.parentSpanId=o.parentSpanId),o.traceState&&(a.traceState=o.traceState),o.status&&(a.status=g({code:o.status.code},o.status.message?{message:o.status.message}:{})),a})}]}]});import{createHash as St}from"crypto";var At=/^[0-9a-f]{32}$/i,j=e=>St("sha256").update(e,"utf8").digest("hex"),x=e=>{let t=e.startsWith("trace_")?e.slice(6):e;return At.test(t)?t.toLowerCase():j(e).slice(0,32)},N=e=>j(e).slice(0,16),z=e=>j(`${e}:root`).slice(0,16);var It=/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{1,9}))?(Z|[+-]\d{2}:\d{2})?$/,f=()=>(BigInt(Date.now())*BigInt(1e6)).toString(),A=e=>{if(!e)return;let t=It.exec(e);if(!t){let i=Date.parse(e);return Number.isNaN(i)?void 0:(BigInt(i)*BigInt(1e6)).toString()}let[,n,r="",o="Z"]=t,a=Date.parse(`${n}${o}`);if(Number.isNaN(a))return;let s=BigInt((r+"000000000").slice(0,9));return(BigInt(a)*BigInt(1e6)+s).toString()},et=(...e)=>{let t=e.filter(n=>n!==void 0);return t.length===0?f():t.reduce((n,r)=>BigInt(r)<BigInt(n)?r:n)},nt=(...e)=>{let t=e.filter(n=>n!==void 0);return t.length===0?f():t.reduce((n,r)=>BigInt(r)>BigInt(n)?r:n)};var O=e=>{let t=e.length;for(;t>0&&e.charCodeAt(t-1)===47;)t-=1;return e.slice(0,t)};var Tt=/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})$/i,bt="0".repeat(32),ht="0".repeat(16),I=class{constructor({apiKey:t,baseURL:n,includeRawPayloads:r=!0}){this.traceStates=new Map;this.completedTraceQueue=new Map;this.pendingExports=new Map;this.apiKey=t,this.baseURL=O(n),this.includeRawPayloads=r}start(){}onTraceStart(t){return d(this,null,function*(){var o;if(this.traceStates.has(t.traceId))return;let n=this.resolveUpstreamTraceContext(t.metadata),r=(o=n==null?void 0:n.traceId)!=null?o:x(t.traceId);this.traceStates.set(t.traceId,{rootSpan:{traceId:r,spanId:z(t.traceId),name:t.name||"OpenAI Agents Trace",kind:1,startTimeUnixNano:f(),parentSpanId:n==null?void 0:n.parentSpanId,traceState:n==null?void 0:n.traceState,attributes:w(t,this.includeRawPayloads),status:{code:h},events:[]},spans:new Map})})}onTraceEnd(t){return d(this,null,function*(){let n=this.traceStates.get(t.traceId);if(!n)return;let r=Array.from(n.spans.values()).sort((c,u)=>BigInt(c.startTimeUnixNano)<BigInt(u.startTimeUnixNano)?-1:1),o=r.map(c=>c.startTimeUnixNano),a=r.map(c=>{var u;return(u=c.endTimeUnixNano)!=null?u:c.startTimeUnixNano}),s=nt(f(),...a);n.rootSpan.startTimeUnixNano=et(n.rootSpan.startTimeUnixNano,...o),n.rootSpan.endTimeUnixNano=s;let i=tt([n.rootSpan,...r]);this.traceStates.delete(t.traceId),this.completedTraceQueue.set(t.traceId,i),this.startExportForTrace(t.traceId)})}onSpanStart(t){return d(this,null,function*(){var a;let n=this.ensureTraceStateForSpan(t),r=n.spans.get(t.spanId),o=r!=null?r:this.createSpanRecord(t,n.rootSpan.spanId);o.traceId=n.rootSpan.traceId,o.traceState=n.rootSpan.traceState,o.name=P(t),o.kind=E(t),o.startTimeUnixNano=(a=A(t.startedAt))!=null?a:o.startTimeUnixNano,o.parentSpanId=t.parentId?N(t.parentId):n.rootSpan.spanId,o.attributes=g(g({},o.attributes),k(t)),n.spans.set(t.spanId,o)})}onSpanEnd(t){return d(this,null,function*(){var o,a,s,i;let n=this.ensureTraceStateForSpan(t),r=(o=n.spans.get(t.spanId))!=null?o:this.createSpanRecord(t,n.rootSpan.spanId);r.attributes=g(g({},r.attributes),Y(t.spanData,this.includeRawPayloads)),r.endTimeUnixNano=(s=(a=A(t.endedAt))!=null?a:r.endTimeUnixNano)!=null?s:f(),r.status=this.statusForSpan(t),t.error&&(r.events=[...(i=r.events)!=null?i:[],{name:"exception",timeUnixNano:r.endTimeUnixNano,attributes:{"exception.type":"OpenAIAgentsError","exception.message":t.error.message,"openai_agents.error_json":JSON.stringify(t.error)}}]),n.spans.set(t.spanId,r)})}shutdown(){return d(this,null,function*(){yield this.forceFlush()})}forceFlush(){return d(this,null,function*(){for(let t=0;t<2;t+=1){for(let n of this.completedTraceQueue.keys())this.startExportForTrace(n);if(this.pendingExports.size===0||(yield Promise.all(Array.from(this.pendingExports.values())),this.completedTraceQueue.size===0))return}})}traceLikeFromSpan(t){var o,a,s,i,c;let n=this.asRecord(t.traceMetadata),r=this.asRecord(n==null?void 0:n.metadata);return{traceId:t.traceId,name:(a=(o=this.readString(n==null?void 0:n.workflow_name))!=null?o:this.readString(n==null?void 0:n.workflowName))!=null?a:"OpenAI Agents Trace",groupId:(i=(s=this.readString(n==null?void 0:n.group_id))!=null?s:this.readString(n==null?void 0:n.groupId))!=null?i:null,metadata:(c=r!=null?r:n)!=null?c:{}}}ensureTraceStateForSpan(t){var i,c;let n=this.traceStates.get(t.traceId);if(n)return n;let r=this.traceLikeFromSpan(t),o=this.resolveUpstreamTraceContext(r.metadata),s={rootSpan:{traceId:(i=o==null?void 0:o.traceId)!=null?i:x(t.traceId),spanId:z(t.traceId),name:r.name,kind:1,startTimeUnixNano:(c=A(t.startedAt))!=null?c:f(),parentSpanId:o==null?void 0:o.parentSpanId,traceState:o==null?void 0:o.traceState,attributes:w(r,this.includeRawPayloads),status:{code:h},events:[]},spans:new Map};return this.traceStates.set(t.traceId,s),s}createSpanRecord(t,n){var r,o,a,s;return{traceId:(o=(r=this.traceStates.get(t.traceId))==null?void 0:r.rootSpan.traceId)!=null?o:x(t.traceId),spanId:N(t.spanId),parentSpanId:t.parentId?N(t.parentId):n,name:P(t),kind:E(t),startTimeUnixNano:(a=A(t.startedAt))!=null?a:f(),traceState:(s=this.traceStates.get(t.traceId))==null?void 0:s.rootSpan.traceState,attributes:g({},k(t)),status:{code:h},events:[]}}statusForSpan(t){return t.error?{code:G,message:t.error.message}:{code:q}}exportPayload(t){return d(this,null,function*(){let n=yield C(`${this.baseURL}/v1/traces`,{method:"POST",headers:g({"Content-Type":"application/json","X-API-KEY":this.apiKey,"X-PromptLayer-Integration":"openai-agents-js"},L()),body:JSON.stringify(t)});if(!n.ok)throw new Error(`Failed to export OpenAI Agents traces: ${n.status} ${n.statusText}`)})}startExportForTrace(t){if(this.pendingExports.has(t))return;let n=this.completedTraceQueue.get(t);if(!n)return;let r=this.exportPayload(n).then(()=>{this.completedTraceQueue.delete(t)}).catch(o=>{console.error(`Failed to export OpenAI Agents trace '${t}'.`,o)}).finally(()=>{this.pendingExports.delete(t)});this.pendingExports.set(t,r)}resolveUpstreamTraceContext(t){let n=this.asRecord(t);if(!n)return null;let r=n.traceparent;if(typeof r!="string"||!r.trim())return null;let o=r.trim().match(Tt);if(!o)return null;let[,a,s,i]=o,c=a.toLowerCase(),u=s.toLowerCase(),R=i.toLowerCase();if(c==="ff"||u===bt||R===ht)return null;let rt=typeof n.tracestate=="string"&&n.tracestate.trim()?n.tracestate.trim():void 0;return{traceId:u,parentSpanId:R,traceState:rt}}asRecord(t){return!t||typeof t!="object"||Array.isArray(t)?null:t}readString(t){return typeof t=="string"&&t.trim()?t:void 0}};var xt=e=>{var t;return O((t=e!=null?e:V("PROMPTLAYER_BASE_URL"))!=null?t:"https://api.promptlayer.com")},Nt=(...o)=>d(null,[...o],function*({apiKey:e,baseURL:t,exclusive:n=!0,includeRawPayloads:r=!0}={}){let a=F(e),s=yield import("@openai/agents"),i=new I({apiKey:a,baseURL:xt(t),includeRawPayloads:r});return n?s.setTraceProcessors([i]):s.addTraceProcessor(i),i});export{I as PromptLayerOpenAIAgentsProcessor,Nt as instrumentOpenAIAgents};
|
|
3
3
|
//# sourceMappingURL=openai-agents.js.map
|