@adaline/gateway 0.1.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/LICENSE +19 -0
- package/README.md +7 -0
- package/dist/index.d.mts +4021 -0
- package/dist/index.d.ts +4021 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +18 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +78 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var zod = require('zod');
|
|
4
|
+
var Bt = require('crypto-js/sha256.js');
|
|
5
|
+
var Ce = require('axios');
|
|
6
|
+
|
|
7
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
|
|
9
|
+
var Bt__default = /*#__PURE__*/_interopDefault(Bt);
|
|
10
|
+
var Ce__default = /*#__PURE__*/_interopDefault(Ce);
|
|
11
|
+
|
|
12
|
+
var mt=Object.create;var ee=Object.defineProperty,pt=Object.defineProperties,ct=Object.getOwnPropertyDescriptor,ut=Object.getOwnPropertyDescriptors,yt=Object.getOwnPropertyNames,fe=Object.getOwnPropertySymbols,Ct=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty,gt=Object.prototype.propertyIsEnumerable;var _=(e,a)=>(a=Symbol[e])?a:Symbol.for("Symbol."+e);var he=(e,a,t)=>a in e?ee(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t,M=(e,a)=>{for(var t in a||(a={}))Te.call(a,t)&&he(e,t,a[t]);if(fe)for(var t of fe(a))gt.call(a,t)&&he(e,t,a[t]);return e},j=(e,a)=>pt(e,ut(a));var bt=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(a,t)=>(typeof require!="undefined"?require:a)[t]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var ft=(e,a)=>()=>(a||e((a={exports:{}}).exports,a),a.exports);var ht=(e,a,t,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of yt(a))!Te.call(e,s)&&s!==t&&ee(e,s,{get:()=>a[s],enumerable:!(o=ct(a,s))||o.enumerable});return e};var J=(e,a,t)=>(t=e!=null?mt(Ct(e)):{},ht(!e||!e.__esModule?ee(t,"default",{value:e,enumerable:!0}):t,e));var C=(e,a,t)=>new Promise((o,s)=>{var r=d=>{try{m(t.next(d));}catch(c){s(c);}},i=d=>{try{m(t.throw(d));}catch(c){s(c);}},m=d=>d.done?o(d.value):Promise.resolve(d.value).then(r,i);m((t=t.apply(e,a)).next());}),f=function(e,a){this[0]=e,this[1]=a;},A=(e,a,t)=>{var o=(i,m,d,c)=>{try{var p=t[i](m),T=(m=p.value)instanceof f,O=p.done;Promise.resolve(T?m[0]:m).then(g=>T?o(i==="return"?i:"next",m[1]?{done:g.done,value:g.value}:g,d,c):d({value:g,done:O})).catch(g=>o("throw",g,d,c));}catch(g){c(g);}},s=i=>r[i]=m=>new Promise((d,c)=>o(i,m,d,c)),r={};return t=t.apply(e,a),r[_("asyncIterator")]=()=>r,s("next"),s("throw"),s("return"),r};var I=(e,a,t)=>(a=e[_("asyncIterator")])?a.call(e):(e=e[_("iterator")](),a={},t=(o,s)=>(s=e[o])&&(a[o]=r=>new Promise((i,m,d)=>(r=s.call(e,r),d=r.done,Promise.resolve(r.value).then(c=>i({value:c,done:d}),m)))),t("next"),t("return"),a);var U=ft(l=>{var n=bt("zod"),Re="system",we="user",H="assistant",ke="tool",ze=[Re,we,H,ke],Ee=n.z.enum(ze),ve=[H],Ge=n.z.enum(ve),Q="image",te="base64",qe=n.z.object({type:n.z.literal(te),base64:n.z.string()}),ae="url",xe=n.z.object({type:n.z.literal(ae),url:n.z.string()}),Tt=n.z.discriminatedUnion("type",[qe,xe]),Me=["low","medium","high","auto"],He=n.z.enum(Me),Y=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(Q),detail:He,value:Tt,metadata:e}),D="text",ne=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(D),value:n.z.string(),metadata:e}),q="partial-text",oe=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(q),value:n.z.string(),metadata:e}),F="tool-call",re=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(F),index:n.z.number().int().nonnegative(),id:n.z.string().min(1),name:n.z.string().min(1),arguments:n.z.string(),metadata:e}),w="partial-tool-call",se=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(w),index:n.z.number().int().nonnegative(),id:n.z.string().optional(),name:n.z.string().optional(),arguments:n.z.string().optional(),metadata:e}),W="tool-response",ie=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(W),index:n.z.number().int().nonnegative(),id:n.z.string().min(1),name:n.z.string().min(1),data:n.z.string(),metadata:e}),Se=[D,Q,F,W],Rt=n.z.enum(Se),Pe=(e=n.z.undefined(),a=n.z.undefined(),t=n.z.undefined(),o=n.z.undefined())=>n.z.discriminatedUnion("modality",[ne(e),Y(a),re(t),ie(o)]),je=[q,w],wt=n.z.enum(je),Ie=(e=n.z.undefined(),a=n.z.undefined())=>n.z.discriminatedUnion("modality",[oe(e),se(a)]),Fe="token",kt=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(Fe),value:n.z.array(n.z.number().int().nonnegative()),metadata:e}),V=(e=Ee,a=n.z.undefined(),t=n.z.undefined(),o=n.z.undefined(),s=n.z.undefined(),r=n.z.undefined())=>n.z.object({role:e,content:n.z.array(Pe(a,t,o,s)),metadata:r}),le=(e=Ge,a=n.z.undefined(),t=n.z.undefined(),o=n.z.undefined())=>n.z.object({role:e,partialContent:Ie(a,t),metadata:o}),zt=(e,a)=>V().parse({role:e,content:[ne().parse({modality:D,value:a})]}),Et=(e,a,t)=>V().parse({role:e,content:[Y().parse({modality:Q,detail:t,value:{type:ae,url:a}})]}),vt=(e,a,t)=>V().parse({role:e,content:[Y().parse({modality:Q,detail:t,value:{type:te,base64:a}})]}),Gt=(e,a,t,o,s)=>V().parse({role:e,content:[re().parse({modality:F,index:a,id:t,name:o,arguments:s})]}),qt=(e,a,t,o,s)=>V().parse({role:e,content:[ie().parse({modality:W,index:a,id:t,name:o,data:s})]}),xt=(e,a)=>le().parse({role:e,partialContent:oe().parse({modality:q,value:a})}),Mt=(e,a,t,o,s)=>le().parse({role:e,partialContent:se().parse({modality:w,index:a,id:t,name:o,arguments:s})}),Ht=(e,a)=>{if(a.length===0)return e;let t=e,o=a[0].partialContent.modality,s={modality:q,value:""},r={modality:w,index:0,id:"",name:"",arguments:""};if(a.forEach(i=>{if(i.partialContent.modality===o){if(i.partialContent.modality===q)s.value+=i.partialContent.value;else if(i.partialContent.modality===w)if(r.index==i.partialContent.index)r.id+=i.partialContent.id||"",r.name+=i.partialContent.name||"",r.arguments+=i.partialContent.arguments||"";else {let m={modality:F,index:r.index,id:r.id,name:r.name,arguments:r.arguments};t.push({role:H,content:[m]}),r={modality:w,index:i.partialContent.index,id:i.partialContent.id||"",name:i.partialContent.name||"",arguments:i.partialContent.arguments||""};}}else {if(o===q){let m={modality:D,value:s.value};t.push({role:H,content:[m]}),s={modality:q,value:""};}else if(o===w){let m={modality:F,index:r.index,id:r.id,name:r.name,arguments:r.arguments};t.push({role:H,content:[m]}),r={modality:w,index:0,id:"",name:"",arguments:""};}o=i.partialContent.modality,i.partialContent.modality===q?s.value+=i.partialContent.value:i.partialContent.modality===w&&(r={modality:w,index:i.partialContent.index,id:i.partialContent.id||"",name:i.partialContent.name||"",arguments:i.partialContent.arguments||""});}}),o===q){let i={modality:D,value:s.value};t.push({role:H,content:[i]});}else if(o===w){let i={modality:F,index:r.index,id:r.id,name:r.name,arguments:r.arguments};t.push({role:H,content:[i]});}return t},St=(e=n.z.record(n.z.string(),n.z.any()).optional())=>e,Le="function",Pt=["object","array","number","string","boolean","null"],Oe=n.z.enum(["object","array","number","string","boolean","null"]),Ae=n.z.object({anyOf:n.z.array(n.z.any()).optional(),type:Oe.optional(),default:n.z.any().optional(),title:n.z.string().optional(),description:n.z.string().max(4096).optional(),properties:n.z.record(n.z.any()).optional(),required:n.z.array(n.z.string()).optional(),minItems:n.z.number().int().min(0).optional(),maxItems:n.z.number().int().optional(),items:n.z.record(n.z.any()).optional(),enum:n.z.array(n.z.union([n.z.string(),n.z.number(),n.z.boolean(),n.z.null()])).optional(),minimum:n.z.number().optional(),maximum:n.z.number().optional(),minLength:n.z.number().int().min(0).optional(),maxLength:n.z.number().int().optional()}),jt=n.z.object({type:n.z.enum(["object"]),title:n.z.string().optional(),$defs:n.z.record(n.z.any()).optional(),properties:n.z.record(Ae).optional(),required:n.z.array(n.z.string()).optional()}),De=n.z.object({name:n.z.string().regex(/^[a-zA-Z0-9_]{1,64}$/).max(64),description:n.z.string().max(4096),parameters:n.z.any(),strict:n.z.boolean().optional()}),It=["function"],Ve=n.z.enum(["function"]),Qe=n.z.object({type:Ve,definition:n.z.object({schema:De})}),Ue=[Le],Ft=n.z.enum(Ue),Lt=(e=n.z.undefined())=>n.z.discriminatedUnion("type",[Qe.extend({metadata:e})]),Be="float",Ne=n.z.object({index:n.z.number().int().nonnegative(),embedding:n.z.array(n.z.number())}),Ke="base64",$e=n.z.object({index:n.z.number().int().nonnegative(),embedding:n.z.string().base64()}),Ot=n.z.discriminatedUnion("encodingFormat",[n.z.object({encodingFormat:n.z.literal(Be),embeddings:n.z.array(Ne)}),n.z.object({encodingFormat:n.z.literal(Ke),embeddings:n.z.array($e)})]),de="text",me="token",Je=[de,me],At=n.z.enum(Je),Ye=n.z.array(n.z.string().min(1)),We=n.z.array(n.z.array(n.z.number().int().nonnegative())),Dt=(e=n.z.undefined())=>n.z.discriminatedUnion("modality",[n.z.object({modality:n.z.literal(de),metadata:e,requests:Ye}),n.z.object({modality:n.z.literal(me),metadata:e,requests:We})]);l.AssistantRoleLiteral=H;l.Base64Embedding=$e;l.Base64EmbeddingLiteral=Ke;l.Base64ImageContentTypeLiteral=te;l.Base64ImageContentValue=qe;l.Config=St;l.Content=Pe;l.EmbeddingModalityEnum=At;l.EmbeddingModalityLiterals=Je;l.EmbeddingRequests=Dt;l.EmbeddingTextModalityLiteral=de;l.EmbeddingTokenModalityLiteral=me;l.Embeddings=Ot;l.FloatEmbedding=Ne;l.FloatEmbeddingLiteral=Be;l.Function=De;l.FunctionParameter=Ae;l.FunctionParameterTypes=Pt;l.FunctionParameterTypesLiteral=Oe;l.FunctionParameters=jt;l.FunctionTool=Qe;l.FunctionToolLiteral=Le;l.ImageContent=Y;l.ImageContentDetails=Me;l.ImageContentDetailsLiteral=He;l.ImageModalityLiteral=Q;l.Message=V;l.ModalityEnum=Rt;l.ModalityLiterals=Se;l.PartialContent=Ie;l.PartialMessage=le;l.PartialModalityEnum=wt;l.PartialModalityLiterals=je;l.PartialRoleEnum=Ge;l.PartialRoleLiterals=ve;l.PartialTextContent=oe;l.PartialTextModalityLiteral=q;l.PartialToolCallContent=se;l.PartialToolCallModalityLiteral=w;l.RoleEnum=Ee;l.RoleLiterals=ze;l.SystemRoleLiteral=Re;l.TextContent=ne;l.TextEmbeddingRequests=Ye;l.TextModalityLiteral=D;l.TokenContent=kt;l.TokenEmbeddingRequests=We;l.TokenModalityLiteral=Fe;l.Tool=Lt;l.ToolCallContent=re;l.ToolCallModalityLiteral=F;l.ToolEnum=Ft;l.ToolLiterals=Ue;l.ToolResponseContent=ie;l.ToolResponseModalityLiteral=W;l.ToolRoleLiteral=ke;l.ToolTypes=It;l.ToolTypesLiteral=Ve;l.UrlImageContentTypeLiteral=ae;l.UrlImageContentValue=xe;l.UserRoleLiteral=we;l.createBase64ImageMessage=vt;l.createPartialTextMessage=xt;l.createPartialToolCallMessage=Mt;l.createTextMessage=zt;l.createToolCallMessage=Gt;l.createToolResponseMessage=qt;l.createUrlImageMessage=Et;l.mergePartialMessages=Ht;});var u=class e extends Error{constructor(a,t=500,o){super(a),this.name="GatewayError",this.status=t,this.data=o,Error.captureStackTrace&&Error.captureStackTrace(this,e);}};var k=J(U());var Xe=zod.z.object({dangerouslyAllowBrowser:zod.z.boolean().optional(),httpClient:zod.z.custom().optional(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional()}),Vt=zod.z.object({queuePriority:zod.z.number().int().positive().optional(),metadataForCallbacks:zod.z.any().optional()}),pe=zod.z.object({model:zod.z.custom(),config:(0, k.Config)(),messages:zod.z.array((0, k.Message)()),tools:zod.z.array((0, k.Tool)()).optional(),options:Vt.optional()}),Qt=zod.z.object({queuePriority:zod.z.number().int().positive().optional(),metadataForCallbacks:zod.z.any().optional()}),Ze=zod.z.object({model:zod.z.custom(),config:(0, k.Config)(),messages:zod.z.array((0, k.Message)()),tools:zod.z.array((0, k.Tool)()).optional(),options:Qt.optional()}),Ut=zod.z.object({queuePriority:zod.z.number().int().positive().optional(),metadataForCallbacks:zod.z.any().optional()}),ce=zod.z.object({model:zod.z.custom(),config:(0, k.Config)(),embeddingRequests:(0, k.EmbeddingRequests)(),options:Ut.optional()});var _e=e=>e.status===429;var ue=e=>Bt__default.default(JSON.stringify(e)).toString(),S=e=>e instanceof u?e:e instanceof Error?new u(e.message):new u(e),B=()=>typeof window!="undefined"&&typeof window.document!="undefined"&&typeof navigator!="undefined";var Nt={error:"color: red",warn:"color: yellow",info:"color: green"},Kt=(e,a,...t)=>{if(B())B()&&console.log(`%c[${e.toUpperCase()}] [${a}]`,Nt[e],...t);else switch(e){case"error":console.error(...t);break;case"warn":console.warn(...t);break;default:console.log(...t);}},$t=(e,a,...t)=>{var o;B()||((o=process==null?void 0:process.env)==null?void 0:o.DEBUG)==="true"&&Kt(e,a,...t);},R=(e,a,...t)=>C(void 0,null,function*(){let o=[];e.forEach(s=>{let r=s[a];if(typeof r=="function")try{let i=r(...t);i instanceof Promise&&o.push(i);}catch(i){$t("error",`SAFELY_INVOKE_CALLBACKS:${String(a)}:`,i);}}),yield Promise.allSettled(o);}),ye=e=>new Promise(a=>setTimeout(a,e)),et=(e,a,t,o)=>{let s=0,r=e*o;for(let i=0;i<e;i++)s+=a*Math.pow(t,i);return s+r},tt=e=>e===408||e===409||e>=500;var x=J(U());var at=zod.z.object({model:zod.z.custom(),config:(0, x.Config)(),messages:zod.z.array((0, x.Message)()),tools:zod.z.array((0, x.Tool)()).optional(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),la=zod.z.object({request:zod.z.object({config:(0, x.Config)(),messages:zod.z.array((0, x.Message)()),tools:zod.z.array((0, x.Tool)()).optional()}),response:zod.z.array((0, x.Message)()),latencyInMs:zod.z.number().int().positive(),metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});var L={};function Jt(e){let a=JSON.stringify(e);return new Blob([a]).size}function Yt(e){let a=Object.entries(e).sort((o,s)=>o[1].time-s[1].time).slice(Math.floor(Object.keys(e).length/2)),t={};for(let[o,s]of a)t[o]=s;return t}function nt(e,a){return C(this,null,function*(){let t=at.parse(e),o=e.callbacks||[],s={config:t.config,messages:t.messages,tools:t.tools},r=ue(s);if(L[r])return R(o,"onChatCached",e.metadataForCallbacks,L[r].data),L[r].data;Jt(L)>200*1024*1024&&(L=Yt(L));try{R(o,"onChatStart",e.metadataForCallbacks);let i={url:t.model.getCompleteChatUrl(t.config,t.messages,t.tools),headers:t.model.getCompleteChatHeaders(t.config,t.messages,t.tools),data:t.model.getCompleteChatData(t.config,t.messages,t.tools)},m=Date.now(),d=yield a.post(i.url,i.data,i.headers),c=Date.now()-m,p={request:s,response:t.model.transformCompleteChatResponse(d.data),latencyInMs:c,metadataForCallbacks:e.metadataForCallbacks,provider:{request:i,response:d}};R(o,"onChatComplete",e.metadataForCallbacks,p);let T=ue(s);return L[T]={data:p,time:Date.now()},p}catch(i){let m;throw i instanceof u?m=i:m=S(i),R(o,"onChatError",e.metadataForCallbacks,m),m}})}var P=J(U());var ot=zod.z.object({model:zod.z.custom(),config:(0, P.Config)(),embeddingRequests:(0, P.EmbeddingRequests)(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),ha=zod.z.object({request:zod.z.object({config:(0, P.Config)(),embeddingRequests:(0, P.EmbeddingRequests)()}),response:P.Embeddings,latencyInMs:zod.z.number().int().positive(),metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});function rt(e,a){return C(this,null,function*(){let t=ot.parse(e),o=e.callbacks||[],s={config:t.config,embeddingRequests:t.embeddingRequests};try{R(o,"onGetEmbeddingsStart",e.metadataForCallbacks);let r={url:t.model.getGetEmbeddingsUrl(t.config,t.embeddingRequests),headers:t.model.getGetEmbeddingsHeaders(t.config,t.embeddingRequests),data:t.model.getGetEmbeddingsData(t.config,t.embeddingRequests)},i=Date.now(),m=yield a.post(r.url,r.data,r.headers),d=Date.now()-i,c={request:s,response:t.model.transformGetEmbeddingsResponse(m.data),latencyInMs:d,metadataForCallbacks:e.metadataForCallbacks,provider:{request:r,response:m}};return R(o,"onGetEmbeddingsComplete",e.metadataForCallbacks,c),c}catch(r){let i;throw r instanceof u?i=r:i=S(r),R(o,"onGetEmbeddingsError",e.metadataForCallbacks,i),i}})}var E=J(U());var st=zod.z.object({model:zod.z.custom(),config:(0, E.Config)(),messages:zod.z.array((0, E.Message)()),tools:zod.z.array((0, E.Tool)()).optional(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),Ma=zod.z.object({request:zod.z.object({config:(0, E.Config)(),messages:zod.z.array((0, E.Message)()),tools:zod.z.array((0, E.Tool)()).optional()}),response:zod.z.array((0, E.PartialMessage)()),metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});function it(e,a){return A(this,null,function*(){let t=st.parse(e),o=e.callbacks||[],s={config:t.config,messages:t.messages,tools:t.tools};try{R(o,"onStreamStart",e.metadataForCallbacks);let g={url:t.model.getStreamChatUrl(t.config,t.messages,t.tools),headers:t.model.getStreamChatHeaders(t.config,t.messages,t.tools),data:t.model.getStreamChatData(t.config,t.messages,t.tools)},G="",$=!0;try{for(var c=I(a.stream(g.url,"post",g.data,g.headers)),p,T,O;p=!(T=yield new f(c.next())).done;p=!1){let X=T.value;try{for(var r=I(t.model.transformStreamChatResponseChunk(X,G)),i,m,d;i=!(m=yield new f(r.next())).done;i=!1){let Z=m.value;if(Z.partialMessages.length>0){let be={request:s,response:Z.partialMessages,metadataForCallbacks:e.metadataForCallbacks,provider:{request:g,response:X}};R(o,$?"onStreamFirstResponse":"onStreamNewResponse",e.metadataForCallbacks,be),$&&($=!1),yield be;}else G=Z.buffer;}}catch(m){d=[m];}finally{try{i&&(m=r.return)&&(yield new f(m.call(r)));}finally{if(d)throw d[0]}}}}catch(T){O=[T];}finally{try{p&&(T=c.return)&&(yield new f(T.call(c)));}finally{if(O)throw O[0]}}R(o,"onStreamEnd",e.metadataForCallbacks);}catch(g){let G;throw g instanceof u?G=g:G=S(g),R(o,"onStreamError",e.metadataForCallbacks,G),G}})}var v=class e extends Error{constructor(a,t=500,o){super(a),this.name="IsomorphicHttpClientError",this.status=t,this.data=o,Error.captureStackTrace&&Error.captureStackTrace(this,e);}},lt=e=>{let a={};return e&&typeof e=="object"&&Object.entries(e).forEach(([t,o])=>{Array.isArray(o)?a[t]=o.join(", "):typeof o=="string"?a[t]=o:a[t]="";}),a},dt=e=>{var m,d;let a="An unexpected error occurred",o={},s=(e==null?void 0:e.message)||a,r=((m=e==null?void 0:e.response)==null?void 0:m.status)||500,i=((d=e==null?void 0:e.response)==null?void 0:d.data)||o;return new v(s,r,i)},N=class{constructor(a){this.isNodeEnvironment=()=>typeof process!="undefined"&&process.versions!=null&&process.versions.node!=null;let{axiosInstance:t,timeoutInMilliseconds:o}=a;this.client=t||Ce__default.default.create();let s=zod.z.number().int().positive().optional();this.defaultTimeout=s.parse(o),this.client.defaults.timeout=this.defaultTimeout;}makeRequest(i,m,d){return C(this,arguments,function*(a,t,o,s={},r){try{let c=j(M(M({},a==="get"||a==="delete"?{params:o}:{data:o}),s),{timeout:r||this.defaultTimeout});if(a==="get"||a==="delete"){let p=yield this.client[a](t,c);return {data:p.data,headers:lt(p.headers),status:{code:p.status,text:p.statusText}}}else {let p=yield this.client[a](t,c.data,j(M({},c),{params:c.params}));return {data:p.data,headers:lt(p.headers),status:{code:p.status,text:p.statusText}}}}catch(c){throw Ce__default.default.isAxiosError(c)?dt(c):new v(c instanceof Error?c.message:"An unexpected error occurred.",500)}})}stream(a,t,o,s,r){return A(this,null,function*(){try{if(this.isNodeEnvironment()){let p=yield new f(this.client.request({method:t,url:a,headers:s,data:o,responseType:"stream",signal:r==null?void 0:r.abortSignal}));try{for(var i=I(p.data),m,d,c;m=!(d=yield new f(i.next())).done;m=!1){let T=d.value;yield T.toString();}}catch(d){c=[d];}finally{try{m&&(d=i.return)&&(yield new f(d.call(i)));}finally{if(c)throw c[0]}}}else {let p={method:t,headers:new Headers(M({},s)),body:t!=="get"?JSON.stringify(o):void 0,signal:r==null?void 0:r.abortSignal},T=yield new f(fetch(a,p));if(!T.ok){let O=yield new f(T.json());throw new v(`Request failed with status ${T.status}`,T.status,O)}if(T.body){let O=T.body.getReader();for(;;){let{done:g,value:G}=yield new f(O.read());if(g){yield new TextDecoder().decode(G,{stream:!0});break}yield new TextDecoder().decode(G,{stream:!0});}}else throw new v("Cannot stream the body of the response.",500,T)}}catch(p){throw p instanceof v?p:(p==null?void 0:p.name)==="AbortError"?new v("AbortError",408):(p==null?void 0:p.name)==="CanceledError"?new v("AbortError",408):Ce__default.default.isAxiosError(p)?dt(p):new v(p instanceof Error?p.message:"An unexpected error occurred.",500)}})}get(a,t,o){return C(this,null,function*(){return this.makeRequest("get",a,t||{},{headers:o})})}post(a,t,o){return C(this,null,function*(){return this.makeRequest("post",a,t||{},{headers:o})})}put(a,t,o){return C(this,null,function*(){return this.makeRequest("put",a,t||{},{headers:o})})}delete(a,t,o){return C(this,null,function*(){return this.makeRequest("delete",a,t||{},{headers:o})})}patch(a,t,o){return C(this,null,function*(){return this.makeRequest("patch",a,t||{},{headers:o})})}};N.IsomorphicHttpClientError=v;var K=class{constructor(a){this.queue=[];this.isProcessing=!1;this.maxRetries=2;this.tokensPerMinute=25e5;this.timeout=6e4*55;this.backOffInitialDelay=5e3;this.backOffMultiplier=1.1;this.shouldRetry=tt;this.maxRetries=a.maxRetries||this.maxRetries,this.timeout=a.timeout||this.timeout,this.tokensPerMinute=a.tokensPerMinute||this.tokensPerMinute,this.backOffInitialDelay=a.backOffInitialDelay||this.backOffInitialDelay,this.backOffMultiplier=a.backOffMultiplier||this.backOffMultiplier,this.rateLimitRetryTimeout=a.rateLimitRetryTimeout||et(this.maxRetries,this.backOffInitialDelay,this.backOffMultiplier,1e4),this.shouldRetry=a.shouldRetry||this.shouldRetry;}enqueue(a){this.queue.push(a),this.processQueue();}calculateBackoff(a){return this.backOffInitialDelay*Math.pow(this.backOffMultiplier,a)}processQueue(){return C(this,null,function*(){if(this.isProcessing)return;this.isProcessing=!0;let a=this.timeout,t=this.rateLimitRetryTimeout;for(;this.queue.length>0;){let o=[],s=0;for(this.queue.sort((r,i)=>(r.queuePriority||0)-(i.queuePriority||0));this.queue.length>0&&s+this.queue[0].inputTokens<=this.tokensPerMinute;){let r=this.queue.shift();if(!r)break;s+=r.inputTokens,o.push(j(M({},r),{attemptTime:Date.now()}));}yield Promise.all(o.map(r=>C(this,null,function*(){let i=Date.now();if(i-r.queueTime>a){r.reject(new u("Main timeout exceeded.",408,r.request));return}return this.execute(r).catch(m=>C(this,null,function*(){console.log(`
|
|
13
|
+
|
|
14
|
+
`),console.log("Error",m),console.log(`
|
|
15
|
+
|
|
16
|
+
`);let d=S(m);_e(d)&&i-r.attemptTime<t?(yield ye(this.calculateBackoff(r.tryCount)),this.queue.push(j(M({},r),{tryCount:r.tryCount,attemptTime:r.attemptTime}))):this.shouldRetry(d.status)&&r.tryCount<this.maxRetries?this.queue.push(j(M({},r),{tryCount:r.tryCount+1,attemptTime:i})):r.reject(d);}))}))),yield ye(0);}this.isProcessing=!1;})}execute(a){return C(this,null,function*(){let t=a.execute({modelIndex:a.modelIndex,data:a.request,resolve:a.resolve,reject:a.reject});return t instanceof Promise?t:Promise.reject(new u("Unsupported task execution result type in Queue.",500,a.request))})}};var ge=class{constructor(a){if(!a.dangerouslyAllowBrowser&&B())throw new u(`It looks like you're running in a browser-like environment.
|
|
17
|
+
|
|
18
|
+
This is disabled by default, as it risks exposing your provider secrets to attackers.
|
|
19
|
+
If you understand the risks and have appropriate mitigation in place,
|
|
20
|
+
you can set the \`dangerouslyAllowBrowser\` option to \`true\`.
|
|
21
|
+
`);this.options=Xe.parse(a),this.httpClient=a.httpClient||new N({timeoutInMilliseconds:6e4}),this.completeQueue=new K({}),this.embeddingQueue=new K({});}completeChat(a){return C(this,null,function*(){let t=pe.parse(a);return new Promise((o,s)=>{var i;let r={tryCount:0,modelIndex:0,inputTokens:t.model.getTokenCount(t.messages),queueTime:Date.now(),attemptTime:0,request:a,queuePriority:(i=t.options)==null?void 0:i.queuePriority,resolve:o,execute:this.executeCompleteChatTask.bind(this),reject:s};this.completeQueue.enqueue(r);})})}executeCompleteChatTask(a){return C(this,null,function*(){var t,o;try{let s=pe.parse(a.data),r=yield nt({model:s.model,config:s.config,messages:s.messages,tools:s.tools,metadataForCallbacks:(t=s.options)==null?void 0:t.metadataForCallbacks},this.httpClient);a.resolve(r);}catch(s){throw s instanceof u?s:new u(s==null?void 0:s.message,500,(o=s==null?void 0:s.response)==null?void 0:o.data)}})}streamChat(a){return A(this,null,function*(){var t,m;try{let d=Ze.parse(a);try{for(var o=I(it({model:d.model,config:d.config,messages:d.messages,tools:d.tools,metadataForCallbacks:(t=d.options)==null?void 0:t.metadataForCallbacks},this.httpClient)),s,r,i;s=!(r=yield new f(o.next())).done;s=!1){let c=r.value;yield c;}}catch(r){i=[r];}finally{try{s&&(r=o.return)&&(yield new f(r.call(o)));}finally{if(i)throw i[0]}}}catch(d){throw d instanceof u?d:new u(d==null?void 0:d.message,500,(m=d==null?void 0:d.response)==null?void 0:m.data)}})}getEmbeddings(a){return C(this,null,function*(){let t=ce.parse(a);return new Promise((o,s)=>{var i;let r={tryCount:0,modelIndex:0,inputTokens:t.model.getTokenCount(t.embeddingRequests),queueTime:Date.now(),attemptTime:0,request:a,queuePriority:(i=t.options)==null?void 0:i.queuePriority,resolve:o,execute:this.executeGetEmbeddingsTask.bind(this),reject:s};this.embeddingQueue.enqueue(r);})})}executeGetEmbeddingsTask(a){return C(this,null,function*(){var t;try{let o=ce.parse(a.data),s=yield rt({model:o.model,config:o.config,embeddingRequests:o.embeddingRequests},this.httpClient);a.resolve(s);}catch(o){throw o instanceof u?o:new u(o==null?void 0:o.message,500,(t=o==null?void 0:o.response)==null?void 0:t.data)}})}};ge.GatewayError=u;
|
|
22
|
+
|
|
23
|
+
exports.CompleteChatHandlerRequest = at;
|
|
24
|
+
exports.CompleteChatHandlerResponse = la;
|
|
25
|
+
exports.Gateway = ge;
|
|
26
|
+
exports.GatewayError = u;
|
|
27
|
+
exports.GetEmbeddingsHandlerRequest = ot;
|
|
28
|
+
exports.GetEmbeddingsHandlerResponse = ha;
|
|
29
|
+
exports.IsomorphicHttpClient = N;
|
|
30
|
+
exports.IsomorphicHttpClientError = v;
|
|
31
|
+
exports.SimpleQueue = K;
|
|
32
|
+
exports.StreamChatHandlerRequest = st;
|
|
33
|
+
exports.StreamChatHandlerResponse = Ma;
|
|
34
|
+
exports.handleCompleteChat = nt;
|
|
35
|
+
exports.handleGetEmbeddings = rt;
|
|
36
|
+
exports.handleStreamChat = it;
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/types/src/message/roles.ts","../../../packages/types/src/message/content/image-content.ts","../../../packages/types/src/message/content/text-content.ts","../../../packages/types/src/message/content/tool-call-content.ts","../../../packages/types/src/message/content/tool-response-content.ts","../../../packages/types/src/message/content/content.ts","../../../packages/types/src/message/content/token-content.ts","../../../packages/types/src/message/message.ts","../../../packages/types/src/utils/create-message.ts","../../../packages/types/src/utils/merge-partial-messages.ts","../../../packages/types/src/config/config.ts","../../../packages/types/src/tool/function-tool.ts","../../../packages/types/src/tool/tool.ts","../../../packages/types/src/embedding/embeddings.ts","../../../packages/types/src/embedding/embedding-requests.ts","../src/errors/errors.ts","../src/gateway.types.ts","../src/utils/tokens.ts","../src/utils/utils.ts","../src/handlers/complete-chat/complete-chat.types.ts","../src/handlers/complete-chat/complete-chat.handler.ts","../src/handlers/get-embeddings/get-embeddings.types.ts","../src/handlers/get-embeddings/get-embeddings.handler.ts","../src/handlers/stream-chat/stream-chat.types.ts","../src/handlers/stream-chat/stream-chat.handler.ts","../src/plugins/http-client/isomorphic.http-client.ts","../src/plugins/queue/simple.queue.ts","../src/gateway.ts"],"names":["SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","RoleLiterals","RoleEnum","z","PartialRoleLiterals","PartialRoleEnum","ImageModalityLiteral","Base64ImageContentTypeLiteral","Base64ImageContentValue","UrlImageContentTypeLiteral","UrlImageContentValue","ImageContentValue","ImageContentDetails","ImageContentDetailsLiteral","ImageContent","Metadata","TextModalityLiteral","TextContent","PartialTextModalityLiteral","PartialTextContent","ToolCallModalityLiteral","ToolCallContent","PartialToolCallModalityLiteral","PartialToolCallContent","ToolResponseModalityLiteral","ToolResponseContent","ModalityLiterals","ModalityEnum","Content","TextContentMetadata","ImageContentMetadata","ToolCallContentMetadata","ToolResponseContentMetadata","PartialModalityLiterals","PartialModalityEnum","PartialContent","PartialTextContentMetadata","PartialToolCallContentMetadata","TokenModalityLiteral","TokenContent","Message","Role","MessageMetadata","PartialMessage","createTextMessage","role","content","createUrlImageMessage","url","detail","createBase64ImageMessage","base64","createToolCallMessage","index","id","name","args","createToolResponseMessage","data","createPartialTextMessage","createPartialToolCallMessage","mergePartialMessages","messages","partialMessages","mergedMessages","lastMessageModality","lastTextContent","lastToolCallContent","message","toolCallContent","textContent","Config","FunctionToolLiteral","FunctionParameterTypes","FunctionParameterTypesLiteral","FunctionParameter","FunctionParameters","Function","ToolTypes","ToolTypesLiteral","FunctionTool","ToolLiterals","ToolEnum","Tool","FunctionToolMetadata","FloatEmbeddingLiteral","FloatEmbedding","Base64EmbeddingLiteral","Base64Embedding","Embeddings","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","EmbeddingModalityLiterals","EmbeddingModalityEnum","TextEmbeddingRequests","TokenEmbeddingRequests","EmbeddingRequests","GatewayError","_GatewayError","status","import_types","GatewayOptions","GatewayCompleteChatRequestOptions","GatewayCompleteChatRequest","GatewayStreamChatRequestOptions","GatewayStreamChatRequest","GatewayGetEmbeddingsRequestOptions","GatewayGetEmbeddingsRequest","isRateLimited","error","generateHash","object","sha256","castToError","err","isRunningInBrowser","logColors","verbose","level","action","debug","_a","safelyInvokeCallbacks","callbacks","__async","promises","callback","func","result","delay","ms","resolve","calcRateLimitRetryTimeout","maxRetries","backOffInitialDelay","backOffMultiplier","executionTimePerAttempt","totalDelayTime","totalExecutionTime","defaultShouldRetry","CompleteChatHandlerRequest","CompleteChatHandlerResponse","cache","calculateCacheSize","cacheString","purgeOldCacheEntries","sortedEntries","a","b","newCache","key","value","handleCompleteChat","request","client","stable","hash","providerRequest","now","providerResponse","latencyInMs","response","safeError","GetEmbeddingsHandlerRequest","GetEmbeddingsHandlerResponse","handleGetEmbeddings","StreamChatHandlerRequest","StreamChatHandlerResponse","handleStreamChat","__asyncGenerator","buffer","isFirstResponse","iter","__forAwait","more","temp","__await","chunk","transformed","streamResponse","IsomorphicHttpClientError","_IsomorphicHttpClientError","convertHeadersToRecord","headers","headerRecord","parseAxiosError","_b","defaultMessage","defaultData","IsomorphicHttpClient","config","axiosInstance","timeoutInMilliseconds","axios","Timeout","_0","_1","_2","method","dataOrParams","additionalConfig","__spreadProps","__spreadValues","resp","options","fetchConfig","text","reader","done","params","SimpleQueue","task","retryCount","mt","rt","batch","batchTokenCount","next","executionResult","Gateway","reject"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\nconst SystemRoleLiteral = \"system\" as const;\nconst UserRoleLiteral = \"user\" as const;\nconst AssistantRoleLiteral = \"assistant\" as const;\nconst ToolRoleLiteral = \"tool\" as const;\n\nconst RoleLiterals = [SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral] as const;\nconst RoleEnum = z.enum(RoleLiterals);\ntype RoleEnumType = z.infer<typeof RoleEnum>;\n\nconst PartialRoleLiterals = [AssistantRoleLiteral] as const;\nconst PartialRoleEnum = z.enum(PartialRoleLiterals);\ntype PartialRoleEnumType = z.infer<typeof PartialRoleEnum>;\n\nexport { \n UserRoleLiteral,\n ToolRoleLiteral, \n SystemRoleLiteral, \n AssistantRoleLiteral, \n RoleEnum, \n RoleLiterals, \n PartialRoleEnum, \n PartialRoleLiterals, \n type RoleEnumType,\n type PartialRoleEnumType, \n};\n","import { z } from \"zod\";\n\nconst ImageModalityLiteral = \"image\" as const;\n\nconst Base64ImageContentTypeLiteral = \"base64\" as const;\nconst Base64ImageContentValue = z.object({\n type: z.literal(Base64ImageContentTypeLiteral),\n base64: z.string(),\n});\ntype Base64ImageContentValueType = z.infer<typeof Base64ImageContentValue>;\n\nconst UrlImageContentTypeLiteral = \"url\" as const;\nconst UrlImageContentValue = z.object({\n type: z.literal(UrlImageContentTypeLiteral),\n url: z.string(),\n});\ntype UrlImageContentValueType = z.infer<typeof UrlImageContentValue>;\n\nconst ImageContentValue = z.discriminatedUnion(\"type\", [Base64ImageContentValue, UrlImageContentValue]);\ntype ImageContentValueType = z.infer<typeof ImageContentValue>;\n\nconst ImageContentDetails = [\"low\", \"medium\", \"high\", \"auto\"] as const;\nconst ImageContentDetailsLiteral = z.enum(ImageContentDetails);\ntype ImageContentDetailsLiteralType = z.infer<typeof ImageContentDetailsLiteral>;\nconst ImageContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ImageModalityLiteral),\n detail: ImageContentDetailsLiteral,\n value: ImageContentValue,\n metadata: Metadata,\n });\ntype ImageContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ImageContent<M>>>;\n\nexport {\n Base64ImageContentValue,\n ImageContent,\n ImageContentDetails,\n ImageContentDetailsLiteral,\n ImageModalityLiteral,\n UrlImageContentValue,\n UrlImageContentTypeLiteral,\n Base64ImageContentTypeLiteral,\n type Base64ImageContentValueType,\n type ImageContentDetailsLiteralType,\n type ImageContentType,\n type ImageContentValueType,\n type UrlImageContentValueType,\n};\n","import { z } from \"zod\";\n\nconst TextModalityLiteral = \"text\" as const;\n\nconst TextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(TextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype TextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof TextContent<M>>>;\n\nconst PartialTextModalityLiteral = \"partial-text\" as const;\n\n// text value can already be an empty string, so we don't need to make it optional\n// const PartialTextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n// TextContent(Metadata).merge(z.object({\n// modality: z.literal(PartialTextModalityLiteral),\n// }));\nconst PartialTextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialTextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype PartialTextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialTextContent<M>>>;\n\nexport { \n TextContent, \n PartialTextContent,\n TextModalityLiteral,\n PartialTextModalityLiteral,\n type TextContentType,\n type PartialTextContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolCallModalityLiteral = \"tool-call\" as const;\n\nconst ToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n arguments: z.string(),\n metadata: Metadata,\n });\ntype ToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolCallContent<M>>>;\n\nconst PartialToolCallModalityLiteral = \"partial-tool-call\" as const;\n\n// const PartialToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n// ToolCallContent(Metadata).partial({\n// id: true,\n// name: true,\n// arguments: true,\n// }).merge(z.object({\n// modality: z.literal(PartialToolCallModalityLiteral),\n// }));\nconst PartialToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n arguments: z.string().optional(),\n metadata: Metadata,\n });\ntype PartialToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolCallContent<M>>>;\n\nexport { \n ToolCallContent, \n PartialToolCallContent,\n ToolCallModalityLiteral, \n PartialToolCallModalityLiteral,\n type ToolCallContentType, \n type PartialToolCallContentType \n};\n","import { z } from \"zod\";\n\nconst ToolResponseModalityLiteral = \"tool-response\" as const;\n\nconst ToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n data: z.string(),\n metadata: Metadata,\n });\ntype ToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolResponseContent<M>>>;\n\nexport { ToolResponseContent, ToolResponseModalityLiteral, type ToolResponseContentType };\n","import { z } from \"zod\";\n\nimport { ImageContent, ImageModalityLiteral } from \"./image-content\";\nimport { TextContent, TextModalityLiteral, PartialTextContent, PartialTextModalityLiteral } from \"./text-content\";\nimport { ToolCallContent, ToolCallModalityLiteral, PartialToolCallContent, PartialToolCallModalityLiteral } from \"./tool-call-content\";\nimport { ToolResponseContent, ToolResponseModalityLiteral } from \"./tool-response-content\";\n\nconst ModalityLiterals = [TextModalityLiteral, ImageModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral] as const;\nconst ModalityEnum = z.enum(ModalityLiterals);\ntype ModalityEnumType = z.infer<typeof ModalityEnum>;\n\nconst Content = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM\n) =>\n z.discriminatedUnion(\"modality\", [\n TextContent(TextContentMetadata),\n ImageContent(ImageContentMetadata),\n ToolCallContent(ToolCallContentMetadata),\n ToolResponseContent(ToolResponseContentMetadata),\n ]);\ntype ContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Content<TCM, ICM, CCM, RCM>>>;\n\nconst PartialModalityLiterals = [PartialTextModalityLiteral, PartialToolCallModalityLiteral] as const;\nconst PartialModalityEnum = z.enum(PartialModalityLiterals);\ntype PartialModalityEnumType = z.infer<typeof PartialModalityEnum>;\n\nconst PartialContent = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n PartialTextContentMetadata: TCM = z.undefined() as TCM,\n PartialToolCallContentMetadata: CCM = z.undefined() as CCM,\n) => \n z.discriminatedUnion(\"modality\", [\n PartialTextContent(PartialTextContentMetadata),\n PartialToolCallContent(PartialToolCallContentMetadata),\n ]);\ntype PartialContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialContent<TCM, CCM>>>;\n\n\nexport { \n Content, \n ModalityEnum, \n ModalityLiterals, \n type ContentType, \n type ModalityEnumType,\n PartialContent,\n PartialModalityEnum,\n PartialModalityLiterals,\n type PartialContentType,\n type PartialModalityEnumType,\n};\n","import { z } from \"zod\";\n\nconst TokenModalityLiteral = \"token\" as const;\n\nconst TokenContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(TokenModalityLiteral),\n value: z.array(z.number().int().nonnegative()),\n metadata: Metadata,\n });\ntype TokenContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof TokenContent<M>>>;\n\nexport { \n TokenContent, \n TokenModalityLiteral,\n type TokenContentType,\n};\n","import { z } from \"zod\";\n\nimport { Content, PartialContent } from \"./content\";\nimport { RoleEnum, PartialRoleEnum } from \"./roles\";\n\nconst Message = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = RoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n MessageMetadata: MM = z.undefined() as MM\n) =>\n z.object({\n role: Role,\n content: z.array(Content(TextContentMetadata, ImageContentMetadata, ToolCallContentMetadata, ToolResponseContentMetadata)),\n metadata: MessageMetadata,\n });\ntype MessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Message<R, TCM, ICM, CCM, RCM, MM>>>;\n\n// const PartialMessage = <\n// R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n// TCM extends z.ZodTypeAny = z.ZodUndefined,\n// CCM extends z.ZodTypeAny = z.ZodUndefined,\n// MM extends z.ZodTypeAny = z.ZodUndefined,\n// >(\n// Role: R = PartialRoleEnum as unknown as R,\n// TextContentMetadata: TCM = z.undefined() as TCM,\n// ToolCallContentMetadata: CCM = z.undefined() as CCM,\n// MessageMetadata: MM = z.undefined() as MM,\n// ) => Message(\n// Role, \n// TextContentMetadata, \n// undefined, \n// ToolCallContentMetadata, \n// undefined, \n// MessageMetadata\n// ).omit({ content: true }).merge(z.object({\n// partialContent: PartialContent(TextContentMetadata, ToolCallContentMetadata),\n// }));\nconst PartialMessage = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = PartialRoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n MessageMetadata: MM = z.undefined() as MM,\n) => z.object({\n role: Role,\n partialContent: PartialContent(TextContentMetadata, ToolCallContentMetadata),\n metadata: MessageMetadata,\n});\ntype PartialMessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialMessage<R, TCM, CCM, MM>>>;\n\nexport { \n Message, \n PartialMessage,\n type MessageType,\n type PartialMessageType,\n};\n","import { \n RoleEnumType,\n TextContent,\n TextModalityLiteral,\n ImageContent,\n ImageModalityLiteral,\n ImageContentDetailsLiteralType,\n UrlImageContentTypeLiteral,\n Base64ImageContentTypeLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n Message,\n MessageType,\n PartialTextContent,\n PartialTextModalityLiteral,\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n PartialMessage,\n PartialMessageType,\n} from \"./../message\";\n\nconst createTextMessage = (role: RoleEnumType, content: string): MessageType => {\n return Message().parse({\n role: role,\n content: [TextContent().parse({\n modality: TextModalityLiteral,\n value: content\n })]\n });\n};\n\n const createUrlImageMessage = (role: RoleEnumType, url: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: UrlImageContentTypeLiteral,\n url: url\n }\n })]\n });\n};\n\nconst createBase64ImageMessage = (role: RoleEnumType, base64: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: base64\n }\n })]\n });\n};\n\nconst createToolCallMessage = (role: RoleEnumType, index: number, id: string, name: string, args: string): MessageType => {\n return Message().parse({\n role: role,\n content: [ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args\n })]\n });\n};\n\nconst createToolResponseMessage = (role: RoleEnumType, index: number, id: string, name: string, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data\n })]\n });\n};\n\nconst createPartialTextMessage = (role: RoleEnumType, content: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialTextContent().parse({\n modality: PartialTextModalityLiteral,\n value: content\n })\n });\n};\n\nconst createPartialToolCallMessage = (role: RoleEnumType, index: number, id?: string, name?: string, args?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolCallContent().parse({\n modality: PartialToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args\n })\n });\n};\n\nexport {\n createTextMessage,\n createUrlImageMessage,\n createBase64ImageMessage,\n createToolCallMessage,\n createToolResponseMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n};","import { \n AssistantRoleLiteral,\n TextModalityLiteral,\n ToolCallModalityLiteral,\n TextContentType,\n ToolCallContentType,\n MessageType, \n PartialTextModalityLiteral,\n PartialToolCallModalityLiteral,\n PartialTextContentType, \n PartialToolCallContentType,\n PartialMessageType \n} from \"./../message\";\n\n\n// TODO: add role sense, currently just assumes 'assistant' role\nconst mergePartialMessages = (messages: MessageType[], partialMessages: PartialMessageType[]): MessageType[] => {\n if (partialMessages.length === 0) { return messages }\n\n const mergedMessages: MessageType[] = messages;\n\n let lastMessageModality: \n typeof PartialTextModalityLiteral | \n typeof PartialToolCallModalityLiteral = partialMessages[0].partialContent.modality;\n\n let lastTextContent: PartialTextContentType = {\n modality: PartialTextModalityLiteral,\n value: \"\"\n };\n\n let lastToolCallContent: PartialToolCallContentType = {\n modality: PartialToolCallModalityLiteral,\n index: 0,\n id: \"\",\n name: \"\",\n arguments: \"\"\n };\n\n partialMessages.forEach((message) => {\n // last message and current message are of the same modality, merge them\n if (message.partialContent.modality === lastMessageModality) {\n // always merge text content\n if (message.partialContent.modality === PartialTextModalityLiteral) {\n lastTextContent.value += message.partialContent.value;\n } else if (message.partialContent.modality === PartialToolCallModalityLiteral) {\n // same tool call index, merge tool call index\n if (lastToolCallContent.index == message.partialContent.index) {\n lastToolCallContent.id += message.partialContent.id || \"\";\n lastToolCallContent.name += message.partialContent.name || \"\";\n lastToolCallContent.arguments += message.partialContent.arguments || \"\";\n } else {\n // different tool call index, push last tool call\n const toolCallContent: ToolCallContentType = {\n modality: ToolCallModalityLiteral,\n index: lastToolCallContent.index,\n id: lastToolCallContent.id as string,\n name: lastToolCallContent.name as string,\n arguments: lastToolCallContent.arguments as string,\n };\n mergedMessages.push({\n role: AssistantRoleLiteral,\n content: [toolCallContent]\n });\n // reset last tool call to current message\n lastToolCallContent = {\n modality: PartialToolCallModalityLiteral,\n index: message.partialContent.index,\n id: message.partialContent.id || \"\",\n name: message.partialContent.name || \"\",\n arguments: message.partialContent.arguments || \"\",\n };\n }\n }\n } else {\n // last message and current message are of different modalities, push last message\n if (lastMessageModality === PartialTextModalityLiteral) {\n const textContent: TextContentType = {\n modality: TextModalityLiteral,\n value: lastTextContent.value,\n };\n mergedMessages.push({\n role: AssistantRoleLiteral,\n content: [textContent]\n } as MessageType);\n // reset last text content to blank message\n lastTextContent = {\n modality: PartialTextModalityLiteral,\n value: \"\",\n };\n } else if (lastMessageModality === PartialToolCallModalityLiteral) {\n // push last tool call\n const toolCallContent: ToolCallContentType = {\n modality: ToolCallModalityLiteral,\n index: lastToolCallContent.index,\n id: lastToolCallContent.id as string,\n name: lastToolCallContent.name as string,\n arguments: lastToolCallContent.arguments as string,\n };\n mergedMessages.push({\n role: AssistantRoleLiteral,\n content: [toolCallContent]\n });\n // reset last tool call to blank message\n lastToolCallContent = {\n modality: PartialToolCallModalityLiteral,\n index: 0,\n id: \"\",\n name: \"\",\n arguments: \"\",\n };\n }\n\n // update last message modality and content\n lastMessageModality = message.partialContent.modality;\n if (message.partialContent.modality === PartialTextModalityLiteral) {\n lastTextContent.value += message.partialContent.value;\n } else if (message.partialContent.modality === PartialToolCallModalityLiteral) {\n lastToolCallContent = {\n modality: PartialToolCallModalityLiteral,\n index: message.partialContent.index,\n id: message.partialContent.id || \"\",\n name: message.partialContent.name || \"\",\n arguments: message.partialContent.arguments || \"\",\n };\n }\n }\n })\n\n if (lastMessageModality === PartialTextModalityLiteral) {\n const textContent: TextContentType = {\n modality: TextModalityLiteral,\n value: lastTextContent.value,\n };\n mergedMessages.push({\n role: AssistantRoleLiteral,\n content: [textContent]\n } as MessageType);\n } else if (lastMessageModality === PartialToolCallModalityLiteral) {\n // push last tool call\n const toolCallContent: ToolCallContentType = {\n modality: ToolCallModalityLiteral,\n index: lastToolCallContent.index,\n id: lastToolCallContent.id as string,\n name: lastToolCallContent.name as string,\n arguments: lastToolCallContent.arguments as string,\n };\n mergedMessages.push({\n role: AssistantRoleLiteral,\n content: [toolCallContent]\n });\n }\n\n return mergedMessages;\n};\n\nexport { mergePartialMessages };\n","import { z } from \"zod\";\n\n// TODO: rename to MessageConfig or something, has to be relevant for language model only\nconst Config = <\nC extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>\n>(\n Config: C = z.record(z.string(), z.any()).optional() as unknown as C\n) => Config;\ntype ConfigType<\n C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>\n> = z.infer<ReturnType<typeof Config<C>>>;\n\nexport { \n Config, \n type ConfigType \n};","// import { JSONSchema7 } from \"json-schema\";\n// import { Validator } from \"jsonschema\";\nimport { z } from \"zod\";\n\nconst FunctionToolLiteral = \"function\" as const;\n\n// // TODO: fix 'name' property not allowed in JSONSchema7\n// const FunctionTool = z.object({\n// type: z.literal(FunctionToolLiteral),\n// definition: z.object({\n// schema: z.object({}).refine((schema) => {\n// const validator = new Validator();\n// return validator.validate(schema, { type: \"object\" }).valid;\n// }),\n// }),\n// callback: z.function().args(z.string().min(0)).returns(z.promise(z.any())).optional(),\n// });\n\n// const FunctionTool = z.object({\n// type: z.literal(FunctionToolLiteral),\n// definition: z.object({\n// schema: z.object({}),\n// }),\n// callback: z.function().args(z.string().min(0)).returns(z.promise(z.any())).optional(),\n// });\n// type FunctionToolType = z.infer<typeof FunctionTool>;\n\nconst FunctionParameterTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"];\nconst FunctionParameterTypesLiteral = z.enum([\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"]);\ntype FunctionParameterTypesType = z.infer<typeof FunctionParameterTypesLiteral>;\n\n// TODO: make a proper fix here\nconst FunctionParameter = z.object({\n anyOf: z.array(z.any()).optional(),\n type: FunctionParameterTypesLiteral.optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n});\ntype FunctionParameterType = z.infer<typeof FunctionParameter>;\n\nconst FunctionParameters = z.object({\n type: z.enum([\"object\"]),\n title: z.string().optional(),\n $defs: z.record(z.any()).optional(),\n properties: z.record(FunctionParameter).optional(),\n required: z.array(z.string()).optional(),\n});\ntype FunctionParametersType = z.infer<typeof FunctionParameters>;\n\nconst Function = z.object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n parameters: z.any(),\n strict: z.boolean().optional(),\n});\ntype FunctionType = z.infer<typeof Function>;\n\nconst ToolTypes = [\"function\"];\nconst ToolTypesLiteral = z.enum([\"function\"]);\ntype ToolTypesType = z.infer<typeof ToolTypesLiteral>;\n\nconst FunctionTool = z.object({\n type: ToolTypesLiteral,\n definition: z.object({\n schema: Function, // TODO: convert to union with more tool types\n }),\n});\ntype FunctionToolType = z.infer<typeof FunctionTool>;\n\n// const Tools = z.array(Tool).nonempty().optional();\n// type ToolsType = z.infer<typeof Tools>;\n\nexport {\n Function,\n FunctionParameter,\n FunctionParameters,\n FunctionParameterTypes,\n FunctionParameterTypesLiteral,\n ToolTypes,\n ToolTypesLiteral,\n type FunctionParametersType,\n type FunctionParameterType,\n type FunctionParameterTypesType,\n type FunctionType,\n type ToolTypesType,\n};\n\nexport { FunctionTool, FunctionToolLiteral, type FunctionToolType };\n","import { z } from \"zod\";\n\nimport { FunctionTool, FunctionToolLiteral } from \"./function-tool\";\n\nconst ToolLiterals = [FunctionToolLiteral] as const;\nconst ToolEnum = z.enum(ToolLiterals);\ntype ToolEnumType = z.infer<typeof ToolEnum>;\n\nconst Tool = <FTM extends z.ZodTypeAny>(FunctionToolMetadata: FTM = z.undefined() as FTM) =>\n z.discriminatedUnion(\"type\", [FunctionTool.extend({ metadata: FunctionToolMetadata })]);\ntype ToolType<FTM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof Tool<FTM>>>;\n\nexport { Tool, ToolEnum, ToolLiterals, type ToolEnumType, type ToolType };\n","import { z } from \"zod\";\n\nconst FloatEmbeddingLiteral = \"float\" as const;\nconst FloatEmbedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.array(z.number()),\n});\ntype FloatEmbeddingType = z.infer<typeof FloatEmbedding>;\n\nconst Base64EmbeddingLiteral = \"base64\" as const;\nconst Base64Embedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.string().base64(),\n});\ntype Base64EmbeddingType = z.infer<typeof Base64Embedding>;\n\nconst Embeddings = z.discriminatedUnion(\"encodingFormat\", [\n z.object({\n encodingFormat: z.literal(FloatEmbeddingLiteral),\n embeddings: z.array(FloatEmbedding),\n }),\n z.object({\n encodingFormat: z.literal(Base64EmbeddingLiteral),\n embeddings: z.array(Base64Embedding),\n }),\n]);\ntype EmbeddingsType = z.infer<typeof Embeddings>;\n\nexport {\n FloatEmbedding,\n Base64Embedding,\n Embeddings,\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n type FloatEmbeddingType,\n type Base64EmbeddingType,\n type EmbeddingsType,\n};","import { z } from \"zod\";\n\nconst EmbeddingTextModalityLiteral = \"text\" as const;\nconst EmbeddingTokenModalityLiteral = \"token\" as const;\n\nconst EmbeddingModalityLiterals = [EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral] as const;\nconst EmbeddingModalityEnum = z.enum(EmbeddingModalityLiterals);\ntype EmbeddingModalityEnumType = z.infer<typeof EmbeddingModalityEnum>;\n\nconst TextEmbeddingRequests = z.array(z.string().min(1));\ntype TextEmbeddingRequestsType = z.infer<typeof TextEmbeddingRequests>;\n\nconst TokenEmbeddingRequests = z.array(z.array(z.number().int().nonnegative())); //TODO: check if zero or negative values are allowed\ntype TokenEmbeddingRequestsType = z.infer<typeof TokenEmbeddingRequests>;\n\nconst EmbeddingRequests = <\nM extends z.ZodTypeAny = z.ZodUndefined\n>(\n Metadata: M = z.undefined() as M\n) => z.discriminatedUnion(\"modality\", [\n z.object({\n modality: z.literal(EmbeddingTextModalityLiteral),\n metadata: Metadata,\n requests: TextEmbeddingRequests,\n }),\n z.object({\n modality: z.literal(EmbeddingTokenModalityLiteral),\n metadata: Metadata,\n requests: TokenEmbeddingRequests,\n }),\n]);\ntype EmbeddingRequestsType<\n M extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof EmbeddingRequests<M>>>;\n\nexport {\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n EmbeddingModalityLiterals,\n EmbeddingModalityEnum,\n TextEmbeddingRequests,\n TokenEmbeddingRequests,\n EmbeddingRequests,\n type EmbeddingRequestsType,\n type EmbeddingModalityEnumType,\n type TextEmbeddingRequestsType,\n type TokenEmbeddingRequestsType,\n};","class GatewayError extends Error {\n status: number;\n data: unknown;\n\n constructor(message: string, status: number = 500, data?: unknown) {\n super(message);\n this.name = \"GatewayError\";\n this.status = status;\n this.data = data;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GatewayError);\n }\n }\n}\n\nexport { GatewayError };\n","import { z } from \"zod\";\n\nimport { ChatModelV1, EmbeddingModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, EmbeddingRequests } from \"@adaline/types\";\n\nimport { CompleteChatCallbackType, StreamChatCallbackType } from \"./handlers\";\nimport { HttpClient } from \"./plugins\";\n\n// TODO: union of all callback types\ntype GatewayCallbackType<M = any> = CompleteChatCallbackType<M> | StreamChatCallbackType<M>;\n\nconst GatewayOptions = z.object({\n // timeout: z.number().int().positive().optional(), // TODO: move to queueOptions\n // tokensPerMinute: z.number().int().positive().optional(), // TODO: move to queueOptions\n dangerouslyAllowBrowser: z.boolean().optional(),\n httpClient: z.custom<HttpClient>().optional(),\n // queue: z.custom<Queue<any, any>>().optional(), // TODO: what's the use case for this?\n callbacks: z.array(z.custom<GatewayCallbackType>()).nonempty().optional(),\n});\ntype GatewayOptionsType = z.infer<typeof GatewayOptions>;\n\nconst GatewayCompleteChatRequestOptions = z.object({\n queuePriority: z.number().int().positive().optional(),\n // TODO: add callbacks, use these if provided else GatewayOptions.callbacks\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayCompleteChatRequestOptionsType = z.infer<typeof GatewayCompleteChatRequestOptions>;\n\n// TODO: add generic for config, messages, tools\nconst GatewayCompleteChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n options: GatewayCompleteChatRequestOptions.optional(),\n});\ntype GatewayCompleteChatRequestType = z.infer<typeof GatewayCompleteChatRequest>;\n\nconst GatewayStreamChatRequestOptions = z.object({\n queuePriority: z.number().int().positive().optional(),\n // TODO: add callbacks, use these if provided else GatewayOptions.callbacks\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayStreamChatRequestOptionsType = z.infer<typeof GatewayStreamChatRequestOptions>;\n\n// TODO: add generic for config, messages, tools\n// TODO: add abort signal\nconst GatewayStreamChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n options: GatewayStreamChatRequestOptions.optional(),\n});\ntype GatewayStreamChatRequestType = z.infer<typeof GatewayStreamChatRequest>;\n\nconst GatewayGetEmbeddingsRequestOptions = z.object({\n queuePriority: z.number().int().positive().optional(),\n // TODO: add callbacks, use these if provided else GatewayOptions.callbacks\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayGetEmbeddingsRequestOptionsType = z.infer<typeof GatewayGetEmbeddingsRequestOptions>;\n\nconst GatewayGetEmbeddingsRequest = z.object({\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n options: GatewayGetEmbeddingsRequestOptions.optional(),\n});\ntype GatewayGetEmbeddingsRequestType = z.infer<typeof GatewayGetEmbeddingsRequest>;\n\nexport {\n GatewayOptions,\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestOptions,\n GatewayStreamChatRequest,\n GatewayStreamChatRequestOptions,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestOptions,\n type GatewayOptionsType,\n type GatewayCallbackType,\n type GatewayCompleteChatRequestType,\n type GatewayCompleteChatRequestOptionsType,\n type GatewayStreamChatRequestType,\n type GatewayStreamChatRequestOptionsType,\n type GatewayGetEmbeddingsRequestType,\n type GatewayGetEmbeddingsRequestOptionsType,\n};","import { GatewayError } from \"../errors/errors\";\n\n// const getTokens = (messages: MessageType[]): number => {\n// return messages.reduce((acc, message) => {\n// return acc + message.content.map((content) => (content.modality === \"text\" ? content.value : \"\")).join(\" \").length;\n// }, 0);\n// };\n\nconst isRateLimited = (error: GatewayError): boolean => {\n return error.status === 429;\n};\n\nexport { isRateLimited };\n","import sha256 from \"crypto-js/sha256.js\";\n\nimport { GatewayError } from \"../errors/errors\";\n\nconst generateHash = (object: object): string => {\n return sha256(JSON.stringify(object)).toString();\n};\n\nconst castToError = (err: any): GatewayError => {\n if (err instanceof GatewayError) return err;\n if (err instanceof Error) return new GatewayError(err.message as string);\n return new GatewayError(err);\n};\n\nconst isRunningInBrowser = () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof navigator !== \"undefined\";\n};\n\nconst logLevels = {\n error: 0,\n warn: 1,\n info: 2,\n};\n\nconst logColors = {\n error: \"color: red\",\n warn: \"color: yellow\",\n info: \"color: green\",\n};\n\nconst verbose = (level: keyof typeof logLevels, action: string, ...args: any[]) => {\n if (!isRunningInBrowser()) {\n // Node.js environment\n switch (level) {\n case \"error\":\n console.error(...args);\n break;\n case \"warn\":\n console.warn(...args);\n break;\n default:\n console.log(...args);\n }\n } else if (isRunningInBrowser()) {\n // Browser environment\n console.log(`%c[${level.toUpperCase()}] [${action}]`, logColors[level], ...args);\n }\n};\n\nconst debug = (level: keyof typeof logLevels, action: string, ...args: any[]) => {\n if (isRunningInBrowser()) return;\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n if (process?.env?.DEBUG !== \"true\") return;\n verbose(level, action, ...args);\n};\n\ntype Prettify<T> = {\n [K in keyof T]: T[K];\n} & unknown;\n\ninterface BaseCallback {\n [key: string]: (...args: any[]) => void | Promise<void>;\n}\n\ntype ArgumentsType<T> = T extends (...args: infer A) => any ? A : never;\n\nconst safelyInvokeCallbacks = async <T extends BaseCallback, K extends keyof T>(\n callbacks: T[],\n name: keyof T,\n ...args: ArgumentsType<T[K]>\n): Promise<void> => {\n const promises: Promise<void>[] = [];\n\n callbacks.forEach((callback) => {\n const func = callback[name];\n if (typeof func === \"function\") {\n try {\n const result = func(...args);\n if (result instanceof Promise) {\n promises.push(result);\n }\n } catch (error) {\n debug(\"error\", `SAFELY_INVOKE_CALLBACKS:${String(name)}:`, error);\n }\n }\n });\n\n await Promise.allSettled(promises);\n};\n\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst calcRateLimitRetryTimeout = (\n maxRetries: number,\n backOffInitialDelay: number,\n backOffMultiplier: number,\n executionTimePerAttempt: number\n): number => {\n let totalDelayTime = 0;\n const totalExecutionTime = maxRetries * executionTimePerAttempt;\n\n for (let i = 0; i < maxRetries; i++) {\n totalDelayTime += backOffInitialDelay * Math.pow(backOffMultiplier, i);\n }\n\n return totalDelayTime + totalExecutionTime;\n};\n\nconst defaultShouldRetry = (status: number) => {\n // Rate limit errors are handled separately.\n\n // Retry on request timeouts.\n if (status === 408) return true;\n // Retry on lock timeouts.\n if (status === 409) return true;\n // Retry internal errors.\n if (status >= 500) return true;\n\n return false;\n};\n\nexport {\n calcRateLimitRetryTimeout,\n castToError,\n debug,\n defaultShouldRetry,\n delay,\n generateHash,\n isRunningInBrowser,\n safelyInvokeCallbacks,\n type Prettify,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\n\nconst CompleteChatHandlerRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n callbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype CompleteChatHandlerRequestType = z.infer<typeof CompleteChatHandlerRequest>;\n\nconst CompleteChatHandlerResponse = z.object({\n // TODO: why is this request object needed? caller can track their own request object\n request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: z.array(Message()),\n latencyInMs: z.number().int().positive(),\n metadataForCallbacks: z.any().optional(),\n // TODO: what is this and why is it needed?\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype CompleteChatHandlerResponseType = z.infer<typeof CompleteChatHandlerResponse>;\n\ntype CompleteChatCallbackType<M = any> = {\n onChatStart?: (metadata?: M) => Promise<void> | void;\n onChatCached?: (metadata?: M, response?: CompleteChatHandlerResponseType) => Promise<void> | void;\n onChatComplete?: (metadata?: M, response?: CompleteChatHandlerResponseType) => Promise<void> | void;\n onChatError?: (metadata?: M, error?: GatewayError) => Promise<void> | void;\n};\n\nexport {\n CompleteChatHandlerRequest,\n CompleteChatHandlerResponse,\n type CompleteChatCallbackType,\n type CompleteChatHandlerRequestType,\n type CompleteChatHandlerResponseType,\n};\n","import { GatewayError } from \"../../errors/errors\";\nimport { HttpClient } from \"../../plugins\";\nimport { castToError, generateHash, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerRequest,\n CompleteChatHandlerRequestType,\n CompleteChatHandlerResponseType,\n} from \"./complete-chat.types\";\n\ntype Cache = Record<\n string,\n {\n data: CompleteChatHandlerResponseType;\n time: number;\n }\n>;\n\nlet cache: Cache = {};\n\nfunction calculateCacheSize(cache: Cache) {\n const cacheString = JSON.stringify(cache);\n return new Blob([cacheString]).size; // Blob size in bytes\n}\n\nfunction purgeOldCacheEntries(cache: Cache) {\n // Convert cache object to an array to sort and slice\n const sortedEntries = Object.entries(cache)\n .sort((a, b) => a[1].time - b[1].time) // Sort by timestamp\n .slice(Math.floor(Object.keys(cache).length / 2)); // Remove the oldest 50%\n\n // Convert array back to object\n const newCache: Cache = {};\n for (const [key, value] of sortedEntries) {\n newCache[key] = value;\n }\n\n return newCache;\n}\n\nasync function handleCompleteChat(request: CompleteChatHandlerRequestType, client: HttpClient): Promise<CompleteChatHandlerResponseType> {\n const data = CompleteChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n\n const stable = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n const hash = generateHash(stable);\n\n if (cache[hash]) {\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatCached\",\n request.metadataForCallbacks,\n cache[hash].data\n );\n return cache[hash].data;\n }\n\n if (calculateCacheSize(cache) > 200 * 1024 * 1024) {\n // 200 MB in bytes\n cache = purgeOldCacheEntries(cache);\n }\n\n try {\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(callbacks, \"onChatStart\", request.metadataForCallbacks);\n\n const providerRequest = {\n url: data.model.getCompleteChatUrl(data.config, data.messages, data.tools),\n headers: data.model.getCompleteChatHeaders(data.config, data.messages, data.tools),\n data: data.model.getCompleteChatData(data.config, data.messages, data.tools),\n };\n\n const now = Date.now();\n const providerResponse = await client.post(providerRequest.url, providerRequest.data, providerRequest.headers);\n const latencyInMs = Date.now() - now;\n\n const response: CompleteChatHandlerResponseType = {\n request: stable,\n response: data.model.transformCompleteChatResponse(providerResponse.data),\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatComplete\",\n request.metadataForCallbacks,\n response\n );\n\n const hash = generateHash(stable);\n cache[hash] = {\n data: response,\n time: Date.now(),\n };\n return response;\n } catch (error) {\n let safeError: GatewayError;\n\n if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n }\n}\n\nexport { handleCompleteChat };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelV1 } from \"@adaline/provider\";\nimport { Config, EmbeddingRequests, Embeddings } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\n\nconst GetEmbeddingsHandlerRequest = z.object({\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n callbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GetEmbeddingsHandlerRequestType = z.infer<typeof GetEmbeddingsHandlerRequest>;\n\nconst GetEmbeddingsHandlerResponse = z.object({\n request: z.object({\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n }),\n response: Embeddings,\n latencyInMs: z.number().int().positive(),\n metadataForCallbacks: z.any().optional(),\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype GetEmbeddingsHandlerResponseType = z.infer<typeof GetEmbeddingsHandlerResponse>;\n\ntype GetEmbeddingsCallbackType<M = any> = {\n onGetEmbeddingsStart?: (metadata?: M) => Promise<void> | void;\n onGetEmbeddingsCached?: (metadata?: M, response?: GetEmbeddingsHandlerResponseType) => Promise<void> | void;\n onGetEmbeddingsComplete?: (metadata?: M, response?: GetEmbeddingsHandlerResponseType) => Promise<void> | void;\n onGetEmbeddingsError?: (metadata?: M, error?: GatewayError) => Promise<void> | void;\n};\n\nexport {\n GetEmbeddingsHandlerRequest,\n GetEmbeddingsHandlerResponse,\n type GetEmbeddingsHandlerRequestType,\n type GetEmbeddingsHandlerResponseType,\n type GetEmbeddingsCallbackType,\n};\n","import { GatewayError } from \"../../errors/errors\";\nimport { HttpClient } from \"../../plugins\";\nimport { castToError, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n GetEmbeddingsCallbackType,\n GetEmbeddingsHandlerRequest,\n GetEmbeddingsHandlerRequestType,\n GetEmbeddingsHandlerResponseType,\n} from \"./get-embeddings.types\";\n\nasync function handleGetEmbeddings(request: GetEmbeddingsHandlerRequestType, client: HttpClient): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GetEmbeddingsHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n\n const stable = {\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n };\n\n try {\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(callbacks, \"onGetEmbeddingsStart\", request.metadataForCallbacks);\n\n const providerRequest = {\n url: data.model.getGetEmbeddingsUrl(data.config, data.embeddingRequests),\n headers: data.model.getGetEmbeddingsHeaders(data.config, data.embeddingRequests),\n data: data.model.getGetEmbeddingsData(data.config, data.embeddingRequests),\n };\n\n const now = Date.now();\n const providerResponse = await client.post(providerRequest.url, providerRequest.data, providerRequest.headers);\n const latencyInMs = Date.now() - now;\n\n const response: GetEmbeddingsHandlerResponseType = {\n request: stable,\n response: data.model.transformGetEmbeddingsResponse(providerResponse.data),\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n let safeError: GatewayError;\n\n if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n }\n}\n\nexport { handleGetEmbeddings };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, PartialMessage } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\n\n// TODO: abort signal\nconst StreamChatHandlerRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n callbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype StreamChatHandlerRequestType = z.infer<typeof StreamChatHandlerRequest>;\n\nconst StreamChatHandlerResponse = z.object({\n request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: z.array(PartialMessage()),\n metadataForCallbacks: z.any().optional(),\n // TODO: what is this and why is it needed?\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype StreamChatHandlerResponseType = z.infer<typeof StreamChatHandlerResponse>;\n\ntype StreamChatCallbackType<M = any> = {\n onStreamStart?: (metadata?: M) => Promise<void> | void;\n onStreamFirstResponse?: (metadata?: M, response?: StreamChatHandlerResponseType, chunk?: unknown) => Promise<void> | void;\n onStreamNewResponse?: (metadata?: M, response?: StreamChatHandlerResponseType, chunk?: unknown) => Promise<void> | void;\n onStreamEnd?: (metadata?: M, response?: StreamChatHandlerResponseType) => Promise<void> | void;\n onStreamError?: (metadata?: M, error?: GatewayError) => Promise<void> | void;\n};\n\nexport { \n StreamChatHandlerRequest, \n StreamChatHandlerResponse, \n type StreamChatCallbackType, \n type StreamChatHandlerRequestType, \n type StreamChatHandlerResponseType \n};","import { GatewayError } from \"../../errors/errors\";\nimport { HttpClient } from \"../../plugins\";\nimport { castToError, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n StreamChatCallbackType,\n StreamChatHandlerRequest,\n StreamChatHandlerRequestType,\n StreamChatHandlerResponseType,\n} from \"./stream-chat.types\";\n\nasync function* handleStreamChat<M>(\n request: StreamChatHandlerRequestType,\n client: HttpClient\n): AsyncGenerator<StreamChatHandlerResponseType, void, unknown> {\n const data = StreamChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n\n const stable = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n try {\n safelyInvokeCallbacks<StreamChatCallbackType, keyof StreamChatCallbackType>(callbacks, \"onStreamStart\", request.metadataForCallbacks);\n\n const providerRequest = {\n url: data.model.getStreamChatUrl(data.config, data.messages, data.tools),\n headers: data.model.getStreamChatHeaders(data.config, data.messages, data.tools),\n data: data.model.getStreamChatData(data.config, data.messages, data.tools),\n };\n\n let buffer = \"\";\n let isFirstResponse = true;\n // TODO: fix headers type, how to handle 'undefined'\n for await (\n const chunk of client.stream(\n providerRequest.url, \n \"post\", \n providerRequest.data, \n providerRequest.headers as Record<string, string>\n )\n ) {\n for await (const transformed of data.model.transformStreamChatResponseChunk(chunk as string, buffer)) {\n if (transformed.partialMessages.length > 0) {\n const streamResponse = {\n request: stable,\n response: transformed.partialMessages,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: chunk,\n },\n };\n\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n isFirstResponse ? \"onStreamFirstResponse\" : \"onStreamNewResponse\",\n request.metadataForCallbacks,\n streamResponse\n );\n\n if (isFirstResponse) {\n isFirstResponse = false;\n }\n\n yield streamResponse;\n } else {\n buffer = transformed.buffer;\n }\n }\n }\n\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n \"onStreamEnd\",\n request.metadataForCallbacks\n );\n } catch (error) {\n let safeError: GatewayError;\n\n if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n \"onStreamError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n }\n}\n\nexport { handleStreamChat };","import axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport { z } from \"zod\";\n\nimport { HttpClient, HttpClientResponse } from \"./http-client.interface\";\n\ninterface HttpClientConfig {\n timeoutInMilliseconds?: number;\n axiosInstance?: AxiosInstance;\n}\n\nclass IsomorphicHttpClientError extends Error {\n status: number;\n data: unknown;\n\n constructor(message: string, status: number = 500, data?: unknown) {\n super(message);\n this.name = \"IsomorphicHttpClientError\";\n this.status = status;\n this.data = data;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, IsomorphicHttpClientError);\n }\n }\n}\n\nconst convertHeadersToRecord = (headers: any): Record<string, string> => {\n const headerRecord: Record<string, string> = {};\n\n if (headers && typeof headers === \"object\") {\n Object.entries(headers).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n headerRecord[key] = value.join(\", \");\n } else if (typeof value === \"string\") {\n headerRecord[key] = value;\n } else {\n headerRecord[key] = \"\";\n }\n });\n }\n\n return headerRecord;\n};\n\nconst parseAxiosError = (error: AxiosError): IsomorphicHttpClientError => {\n const defaultMessage = \"An unexpected error occurred\";\n const defaultStatus = 500;\n const defaultData = {};\n\n const message = error?.message || defaultMessage;\n const status = error?.response?.status || defaultStatus;\n const data = error?.response?.data || defaultData;\n\n return new IsomorphicHttpClientError(message, status, data);\n};\n\nclass IsomorphicHttpClient implements HttpClient {\n private defaultTimeout?: number;\n private client: AxiosInstance;\n\n constructor(config: HttpClientConfig) {\n const { axiosInstance, timeoutInMilliseconds } = config;\n this.client = axiosInstance || axios.create();\n\n const Timeout = z.number().int().positive().optional();\n this.defaultTimeout = Timeout.parse(timeoutInMilliseconds);\n\n this.client.defaults.timeout = this.defaultTimeout;\n }\n\n isNodeEnvironment = (): boolean => {\n return typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\n };\n\n private async makeRequest<T>(\n method: \"get\" | \"post\" | \"put\" | \"delete\" | \"patch\",\n url: string,\n dataOrParams: Record<string, unknown>,\n additionalConfig: AxiosRequestConfig = {},\n timeoutInMilliseconds?: number\n ): Promise<HttpClientResponse<T>> {\n try {\n const config: AxiosRequestConfig = {\n ...(method === \"get\" || method === \"delete\" ? { params: dataOrParams } : { data: dataOrParams }),\n ...additionalConfig,\n timeout: timeoutInMilliseconds || this.defaultTimeout,\n };\n if (method === \"get\" || method === \"delete\") {\n const resp = await this.client[method]<T>(url, config);\n return {\n data: resp.data,\n headers: convertHeadersToRecord(resp.headers),\n status: {\n code: resp.status,\n text: resp.statusText,\n },\n };\n } else {\n const resp = await this.client[method]<T>(url, config.data, {\n ...config,\n params: config.params,\n });\n return {\n data: resp.data,\n headers: convertHeadersToRecord(resp.headers),\n status: {\n code: resp.status,\n text: resp.statusText,\n },\n };\n }\n } catch (error) {\n if (axios.isAxiosError(error)) throw parseAxiosError(error);\n throw new IsomorphicHttpClientError(error instanceof Error ? error.message : \"An unexpected error occurred.\", 500);\n }\n }\n\n async *stream<T>(\n url: string,\n method: \"get\" | \"post\",\n data?: Record<string, unknown>,\n headers?: Record<string, string>, // TODO: remove 'undefined', fix in stream-chat.handler.ts\n options?: {\n abortSignal?: AbortSignal;\n }\n ): AsyncGenerator<T, void, unknown> {\n try {\n if (this.isNodeEnvironment()) {\n const response = await this.client.request({\n method,\n url,\n headers,\n data,\n responseType: \"stream\",\n signal: options?.abortSignal,\n });\n\n for await (const chunk of response.data) {\n const decodedChunk = chunk.toString();\n yield decodedChunk as unknown as T;\n }\n } else {\n const fetchConfig: RequestInit = {\n method,\n headers: new Headers({\n ...headers,\n }),\n body: method !== \"get\" ? JSON.stringify(data) : undefined,\n signal: options?.abortSignal,\n };\n const response = await fetch(url, fetchConfig);\n\n if (!response.ok) {\n const text: any = await response.json();\n throw new IsomorphicHttpClientError(`Request failed with status ${response.status}`, response.status, text);\n }\n\n if (response.body) {\n const reader = response.body.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n const decodedValue = new TextDecoder().decode(value, { stream: true });\n yield decodedValue as unknown as T;\n break;\n }\n\n const decodedValue = new TextDecoder().decode(value, { stream: true });\n yield decodedValue as unknown as T;\n }\n } else {\n throw new IsomorphicHttpClientError(\"Cannot stream the body of the response.\", 500, response);\n }\n }\n } catch (error: any) {\n if (error instanceof IsomorphicHttpClientError) throw error;\n if (error?.name === \"AbortError\") throw new IsomorphicHttpClientError(\"AbortError\", 408);\n if (error?.name === \"CanceledError\") throw new IsomorphicHttpClientError(\"AbortError\", 408);\n if (axios.isAxiosError(error)) throw parseAxiosError(error);\n throw new IsomorphicHttpClientError(error instanceof Error ? error.message : \"An unexpected error occurred.\", 500);\n }\n }\n\n async get<T>(\n url: string,\n params?: Record<string, unknown>,\n headers?: Record<string, string | undefined>\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest<T>(\"get\", url, params || {}, { headers });\n }\n\n async post<T>(url: string, data?: Record<string, unknown>, headers?: Record<string, string | undefined>): Promise<HttpClientResponse<T>> {\n return this.makeRequest<T>(\"post\", url, data || {}, { headers });\n }\n\n async put<T>(url: string, data?: Record<string, unknown>, headers?: Record<string, string | undefined>): Promise<HttpClientResponse<T>> {\n return this.makeRequest<T>(\"put\", url, data || {}, { headers });\n }\n\n async delete<T>(\n url: string,\n params?: Record<string, unknown>,\n headers?: Record<string, string | undefined>\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest<T>(\"delete\", url, params || {}, { headers });\n }\n\n async patch<T>(\n url: string,\n data?: Record<string, unknown>,\n headers?: Record<string, string | undefined>\n ): Promise<HttpClientResponse<T>> {\n return this.makeRequest<T>(\"patch\", url, data || {}, { headers });\n }\n\n static IsomorphicHttpClientError = IsomorphicHttpClientError;\n}\n\nexport { IsomorphicHttpClient, IsomorphicHttpClientError };\n","// TODO: Handling streaming requests\n// TODO: Batch tokens should map to providers and not just the model array\n\nimport { GatewayError } from \"../../errors\";\nimport { calcRateLimitRetryTimeout, castToError, defaultShouldRetry, delay, isRateLimited } from \"../../utils\";\nimport { Queue, Task } from \"./queue.interface\";\n\ntype QueueOptions = {\n maxRetries?: number;\n tokensPerMinute?: number;\n timeout?: number;\n backOffInitialDelay?: number;\n backOffMultiplier?: number;\n rateLimitRetryTimeout?: number;\n shouldRetry?: (status: number) => boolean;\n};\n\nclass SimpleQueue<Req, Res> implements Queue<Req, Res> {\n private queue: Array<Task<Req, Res>> = [];\n private isProcessing: boolean = false;\n private maxRetries: number = 2;\n private tokensPerMinute: number = 2500000;\n private timeout: number = 60000 * 55; // 55 minutes\n private backOffInitialDelay: number = 5000; // 5 second\n private backOffMultiplier: number = 1.1;\n private rateLimitRetryTimeout: number;\n private shouldRetry = defaultShouldRetry;\n\n constructor(options: QueueOptions) {\n this.maxRetries = options.maxRetries || this.maxRetries;\n this.timeout = options.timeout || this.timeout;\n this.tokensPerMinute = options.tokensPerMinute || this.tokensPerMinute;\n this.backOffInitialDelay = options.backOffInitialDelay || this.backOffInitialDelay;\n this.backOffMultiplier = options.backOffMultiplier || this.backOffMultiplier;\n this.rateLimitRetryTimeout =\n options.rateLimitRetryTimeout || calcRateLimitRetryTimeout(this.maxRetries, this.backOffInitialDelay, this.backOffMultiplier, 10000);\n this.shouldRetry = options.shouldRetry || this.shouldRetry;\n }\n\n enqueue(task: Task<Req, Res>) {\n this.queue.push(task);\n this.processQueue();\n }\n\n private calculateBackoff(retryCount: number): number {\n return this.backOffInitialDelay * Math.pow(this.backOffMultiplier, retryCount);\n }\n\n private async processQueue(): Promise<void> {\n if (this.isProcessing) return;\n this.isProcessing = true;\n\n const mt = this.timeout;\n const rt = this.rateLimitRetryTimeout;\n\n while (this.queue.length > 0) {\n const batch: Array<(typeof this.queue)[number]> = [];\n let batchTokenCount = 0;\n\n this.queue.sort((a, b) => (a.queuePriority || 0) - (b.queuePriority || 0));\n\n while (this.queue.length > 0 && batchTokenCount + this.queue[0].inputTokens <= this.tokensPerMinute) {\n const next = this.queue.shift();\n if (!next) break;\n batchTokenCount += next.inputTokens;\n batch.push({\n ...next,\n attemptTime: Date.now(),\n });\n }\n\n await Promise.all(\n batch.map(async (task) => {\n const now = Date.now();\n\n if (now - task.queueTime > mt) {\n task.reject(new GatewayError(\"Main timeout exceeded.\", 408, task.request));\n return;\n }\n\n return this.execute(task).catch(async (error: any) => {\n console.log(\"\\n\\n\");\n console.log(\"Error\", error);\n console.log(\"\\n\\n\");\n const safeError = castToError(error);\n if (isRateLimited(safeError) && now - task.attemptTime < rt) {\n // For rate limit errors, retry without incrementing the try count and with a delay\n await delay(this.calculateBackoff(task.tryCount));\n this.queue.push({\n ...task,\n tryCount: task.tryCount, // Not incrementing for rate limit errors\n attemptTime: task.attemptTime, // Not updating the attempt time for rate limit errors\n });\n } else if (this.shouldRetry(safeError.status) && task.tryCount < this.maxRetries) {\n // For other errors, retry with incremented try count and the same model\n this.queue.push({\n ...task,\n tryCount: task.tryCount + 1, // Increment the try count\n attemptTime: now, // Reset the attempt time\n });\n // } else if (task.modelIndex + 1 < task.models.length) {\n // // If retries are exhausted and there are more models to fallback to, reset the try count, update the modelIndex, and re-queue\n // this.queue.push({\n // ...task,\n // tryCount: 1, // Reset the try count for the new model\n // modelIndex: task.modelIndex + 1, // Move to the next model as a fallback\n // inputTokens: getTokens(task.models[task.modelIndex + 1], task.messages), // Update the input tokens for the new model\n // attemptTime: now, // Reset the attempt time for the new model\n // });\n } else {\n // Max retries reached, reject the promise\n task.reject(safeError);\n }\n });\n })\n );\n\n // Allow the event loop to run before processing the next batch\n await delay(0);\n }\n\n this.isProcessing = false;\n }\n\n private async execute<Req, Res>(task: Task<Req, Res>): Promise<void> {\n const executionResult = task.execute({\n modelIndex: task.modelIndex,\n data: task.request,\n resolve: task.resolve,\n reject: task.reject,\n });\n\n // used for complete requests\n if (executionResult instanceof Promise) return executionResult;\n\n // TODO: handle async generator\n // will have to update the Task interface to take a callback function\n // create a queue in the *streamChat method in Router\n // const chunkQueue: StreamChatResponseType<M>[] = [];\n // let resolveChunkPromise: (value: StreamChatResponseType<M> | PromiseLike<StreamChatResponseType<M>>) => void;\n // let chunkPromise = new Promise<StreamChatResponseType<M>>(resolve => resolveChunkPromise = resolve);\n // try {\n // while (true) {\n // if (chunkQueue.length === 0) {\n // await chunkPromise;\n // }\n\n // while (chunkQueue.length > 0) {\n // const chunk = chunkQueue.shift();\n // yield chunk; // Yield the chunk from the queue.\n // }\n // }\n // } finally {\n // }\n // will have to give consideration to what happens when we retry\n // do we want to start the stream from the beginning or continue from where we left off?\n // not sure if we can even start from where we left off given the limitation of the provider\n\n return Promise.reject(new GatewayError(\"Unsupported task execution result type in Queue.\", 500, task.request));\n }\n}\n\nexport { SimpleQueue };\n","import { GatewayError } from \"./errors\";\nimport {\n GatewayCallbackType,\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestType,\n // GatewayStreamChatRequestOptions\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestType,\n GatewayOptions,\n GatewayOptionsType,\n // GatewayCompleteChatRequestOptions,\n GatewayStreamChatRequest,\n GatewayStreamChatRequestType,\n} from \"./gateway.types\";\nimport { CompleteChatHandlerResponseType, GetEmbeddingsHandlerResponseType, StreamChatHandlerResponseType } from \"./handlers\";\nimport { handleCompleteChat } from \"./handlers/complete-chat/complete-chat.handler\";\nimport { handleGetEmbeddings } from \"./handlers/get-embeddings/get-embeddings.handler\";\nimport { handleStreamChat } from \"./handlers/stream-chat/stream-chat.handler\";\nimport { HttpClient, IsomorphicHttpClient, Queue, SimpleQueue, Task } from \"./plugins\";\nimport { isRunningInBrowser } from \"./utils\";\n\nclass Gateway {\n private options: GatewayOptionsType;\n // private timeout: number = 1200000 * 2;\n // private tokensPerMinute: number = 60000;\n\n private httpClient: HttpClient;\n private completeQueue: Queue<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType>;\n private embeddingQueue: Queue<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType>;\n constructor(options: GatewayOptionsType) {\n if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n throw new GatewayError(\n \"It looks like you're running in a browser-like environment.\\n\\n\" +\n \"This is disabled by default, as it risks exposing your provider secrets to attackers.\\n\" +\n \"If you understand the risks and have appropriate mitigation in place,\\n\" +\n \"you can set the `dangerouslyAllowBrowser` option to `true`.\\n\"\n );\n }\n\n this.options = GatewayOptions.parse(options);\n\n this.httpClient = options.httpClient || new IsomorphicHttpClient({ timeoutInMilliseconds: 60000 }); // TODO: recheck, 60 seconds is arbitrary\n\n // TODO: get from queueOptions after queue can respect them\n // this.timeout = this.options.timeout || this.timeout;\n // this.tokensPerMinute = this.options.tokensPerMinute || this.tokensPerMinute;\n // TODO: pass queueOptions here if available or a whole queue instance\n this.completeQueue = new SimpleQueue({});\n this.embeddingQueue = new SimpleQueue({});\n }\n\n // TODO: Promise should return GatewayCompleteChatResponseType for consistency\n async completeChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return new Promise<CompleteChatHandlerResponseType>((resolve, reject) => {\n const task: Task<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType> = {\n tryCount: 0,\n modelIndex: 0,\n inputTokens: data.model.getTokenCount(data.messages),\n queueTime: Date.now(),\n attemptTime: 0,\n request: request,\n queuePriority: data.options?.queuePriority,\n resolve,\n execute: this.executeCompleteChatTask.bind(this),\n reject,\n };\n this.completeQueue.enqueue(task);\n });\n }\n\n private async executeCompleteChatTask(request: {\n modelIndex: number;\n data: GatewayCompleteChatRequestType;\n resolve: (value: CompleteChatHandlerResponseType) => void;\n reject: (error: GatewayError) => void;\n }): Promise<void> {\n try {\n const data = GatewayCompleteChatRequest.parse(request.data);\n const response = await handleCompleteChat(\n {\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n // callbacks: this.options.callbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\n );\n\n request.resolve(response);\n } catch (error) {\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n }\n }\n\n async *streamChat(request: GatewayStreamChatRequestType): AsyncGenerator<StreamChatHandlerResponseType, void, unknown> {\n try {\n const data = GatewayStreamChatRequest.parse(request);\n\n for await (const streamResponse of handleStreamChat(\n {\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n // callbacks: this.options.callbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\n )) {\n yield streamResponse as StreamChatHandlerResponseType;\n }\n } catch (error) {\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n }\n }\n\n async getEmbeddings(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return new Promise<GetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: Task<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType> = {\n tryCount: 0,\n modelIndex: 0,\n inputTokens: data.model.getTokenCount(data.embeddingRequests),\n queueTime: Date.now(),\n attemptTime: 0,\n request: request,\n queuePriority: data.options?.queuePriority,\n resolve,\n execute: this.executeGetEmbeddingsTask.bind(this),\n reject,\n };\n this.embeddingQueue.enqueue(task);\n });\n }\n\n private async executeGetEmbeddingsTask(request: {\n modelIndex: number;\n data: GatewayGetEmbeddingsRequestType;\n resolve: (value: GetEmbeddingsHandlerResponseType) => void;\n reject: (error: GatewayError) => void;\n }): Promise<void> {\n try {\n const data = GatewayGetEmbeddingsRequest.parse(request.data);\n const response = await handleGetEmbeddings(\n {\n model: data.model,\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n },\n this.httpClient\n );\n\n request.resolve(response);\n } catch (error) {\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n }\n }\n\n static GatewayError = GatewayError;\n}\n\nexport { Gateway, type GatewayCallbackType, type GatewayOptionsType };\n"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import Bt from 'crypto-js/sha256.js';
|
|
3
|
+
import Ce from 'axios';
|
|
4
|
+
|
|
5
|
+
var mt=Object.create;var ee=Object.defineProperty,pt=Object.defineProperties,ct=Object.getOwnPropertyDescriptor,ut=Object.getOwnPropertyDescriptors,yt=Object.getOwnPropertyNames,fe=Object.getOwnPropertySymbols,Ct=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty,gt=Object.prototype.propertyIsEnumerable;var _=(e,a)=>(a=Symbol[e])?a:Symbol.for("Symbol."+e);var he=(e,a,t)=>a in e?ee(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t,M=(e,a)=>{for(var t in a||(a={}))Te.call(a,t)&&he(e,t,a[t]);if(fe)for(var t of fe(a))gt.call(a,t)&&he(e,t,a[t]);return e},j=(e,a)=>pt(e,ut(a));var bt=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(a,t)=>(typeof require!="undefined"?require:a)[t]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var ft=(e,a)=>()=>(a||e((a={exports:{}}).exports,a),a.exports);var ht=(e,a,t,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of yt(a))!Te.call(e,s)&&s!==t&&ee(e,s,{get:()=>a[s],enumerable:!(o=ct(a,s))||o.enumerable});return e};var J=(e,a,t)=>(t=e!=null?mt(Ct(e)):{},ht(!e||!e.__esModule?ee(t,"default",{value:e,enumerable:!0}):t,e));var C=(e,a,t)=>new Promise((o,s)=>{var r=d=>{try{m(t.next(d));}catch(c){s(c);}},i=d=>{try{m(t.throw(d));}catch(c){s(c);}},m=d=>d.done?o(d.value):Promise.resolve(d.value).then(r,i);m((t=t.apply(e,a)).next());}),f=function(e,a){this[0]=e,this[1]=a;},A=(e,a,t)=>{var o=(i,m,d,c)=>{try{var p=t[i](m),T=(m=p.value)instanceof f,O=p.done;Promise.resolve(T?m[0]:m).then(g=>T?o(i==="return"?i:"next",m[1]?{done:g.done,value:g.value}:g,d,c):d({value:g,done:O})).catch(g=>o("throw",g,d,c));}catch(g){c(g);}},s=i=>r[i]=m=>new Promise((d,c)=>o(i,m,d,c)),r={};return t=t.apply(e,a),r[_("asyncIterator")]=()=>r,s("next"),s("throw"),s("return"),r};var I=(e,a,t)=>(a=e[_("asyncIterator")])?a.call(e):(e=e[_("iterator")](),a={},t=(o,s)=>(s=e[o])&&(a[o]=r=>new Promise((i,m,d)=>(r=s.call(e,r),d=r.done,Promise.resolve(r.value).then(c=>i({value:c,done:d}),m)))),t("next"),t("return"),a);var U=ft(l=>{var n=bt("zod"),Re="system",we="user",H="assistant",ke="tool",ze=[Re,we,H,ke],Ee=n.z.enum(ze),ve=[H],Ge=n.z.enum(ve),Q="image",te="base64",qe=n.z.object({type:n.z.literal(te),base64:n.z.string()}),ae="url",xe=n.z.object({type:n.z.literal(ae),url:n.z.string()}),Tt=n.z.discriminatedUnion("type",[qe,xe]),Me=["low","medium","high","auto"],He=n.z.enum(Me),Y=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(Q),detail:He,value:Tt,metadata:e}),D="text",ne=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(D),value:n.z.string(),metadata:e}),q="partial-text",oe=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(q),value:n.z.string(),metadata:e}),F="tool-call",re=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(F),index:n.z.number().int().nonnegative(),id:n.z.string().min(1),name:n.z.string().min(1),arguments:n.z.string(),metadata:e}),w="partial-tool-call",se=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(w),index:n.z.number().int().nonnegative(),id:n.z.string().optional(),name:n.z.string().optional(),arguments:n.z.string().optional(),metadata:e}),W="tool-response",ie=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(W),index:n.z.number().int().nonnegative(),id:n.z.string().min(1),name:n.z.string().min(1),data:n.z.string(),metadata:e}),Se=[D,Q,F,W],Rt=n.z.enum(Se),Pe=(e=n.z.undefined(),a=n.z.undefined(),t=n.z.undefined(),o=n.z.undefined())=>n.z.discriminatedUnion("modality",[ne(e),Y(a),re(t),ie(o)]),je=[q,w],wt=n.z.enum(je),Ie=(e=n.z.undefined(),a=n.z.undefined())=>n.z.discriminatedUnion("modality",[oe(e),se(a)]),Fe="token",kt=(e=n.z.undefined())=>n.z.object({modality:n.z.literal(Fe),value:n.z.array(n.z.number().int().nonnegative()),metadata:e}),V=(e=Ee,a=n.z.undefined(),t=n.z.undefined(),o=n.z.undefined(),s=n.z.undefined(),r=n.z.undefined())=>n.z.object({role:e,content:n.z.array(Pe(a,t,o,s)),metadata:r}),le=(e=Ge,a=n.z.undefined(),t=n.z.undefined(),o=n.z.undefined())=>n.z.object({role:e,partialContent:Ie(a,t),metadata:o}),zt=(e,a)=>V().parse({role:e,content:[ne().parse({modality:D,value:a})]}),Et=(e,a,t)=>V().parse({role:e,content:[Y().parse({modality:Q,detail:t,value:{type:ae,url:a}})]}),vt=(e,a,t)=>V().parse({role:e,content:[Y().parse({modality:Q,detail:t,value:{type:te,base64:a}})]}),Gt=(e,a,t,o,s)=>V().parse({role:e,content:[re().parse({modality:F,index:a,id:t,name:o,arguments:s})]}),qt=(e,a,t,o,s)=>V().parse({role:e,content:[ie().parse({modality:W,index:a,id:t,name:o,data:s})]}),xt=(e,a)=>le().parse({role:e,partialContent:oe().parse({modality:q,value:a})}),Mt=(e,a,t,o,s)=>le().parse({role:e,partialContent:se().parse({modality:w,index:a,id:t,name:o,arguments:s})}),Ht=(e,a)=>{if(a.length===0)return e;let t=e,o=a[0].partialContent.modality,s={modality:q,value:""},r={modality:w,index:0,id:"",name:"",arguments:""};if(a.forEach(i=>{if(i.partialContent.modality===o){if(i.partialContent.modality===q)s.value+=i.partialContent.value;else if(i.partialContent.modality===w)if(r.index==i.partialContent.index)r.id+=i.partialContent.id||"",r.name+=i.partialContent.name||"",r.arguments+=i.partialContent.arguments||"";else {let m={modality:F,index:r.index,id:r.id,name:r.name,arguments:r.arguments};t.push({role:H,content:[m]}),r={modality:w,index:i.partialContent.index,id:i.partialContent.id||"",name:i.partialContent.name||"",arguments:i.partialContent.arguments||""};}}else {if(o===q){let m={modality:D,value:s.value};t.push({role:H,content:[m]}),s={modality:q,value:""};}else if(o===w){let m={modality:F,index:r.index,id:r.id,name:r.name,arguments:r.arguments};t.push({role:H,content:[m]}),r={modality:w,index:0,id:"",name:"",arguments:""};}o=i.partialContent.modality,i.partialContent.modality===q?s.value+=i.partialContent.value:i.partialContent.modality===w&&(r={modality:w,index:i.partialContent.index,id:i.partialContent.id||"",name:i.partialContent.name||"",arguments:i.partialContent.arguments||""});}}),o===q){let i={modality:D,value:s.value};t.push({role:H,content:[i]});}else if(o===w){let i={modality:F,index:r.index,id:r.id,name:r.name,arguments:r.arguments};t.push({role:H,content:[i]});}return t},St=(e=n.z.record(n.z.string(),n.z.any()).optional())=>e,Le="function",Pt=["object","array","number","string","boolean","null"],Oe=n.z.enum(["object","array","number","string","boolean","null"]),Ae=n.z.object({anyOf:n.z.array(n.z.any()).optional(),type:Oe.optional(),default:n.z.any().optional(),title:n.z.string().optional(),description:n.z.string().max(4096).optional(),properties:n.z.record(n.z.any()).optional(),required:n.z.array(n.z.string()).optional(),minItems:n.z.number().int().min(0).optional(),maxItems:n.z.number().int().optional(),items:n.z.record(n.z.any()).optional(),enum:n.z.array(n.z.union([n.z.string(),n.z.number(),n.z.boolean(),n.z.null()])).optional(),minimum:n.z.number().optional(),maximum:n.z.number().optional(),minLength:n.z.number().int().min(0).optional(),maxLength:n.z.number().int().optional()}),jt=n.z.object({type:n.z.enum(["object"]),title:n.z.string().optional(),$defs:n.z.record(n.z.any()).optional(),properties:n.z.record(Ae).optional(),required:n.z.array(n.z.string()).optional()}),De=n.z.object({name:n.z.string().regex(/^[a-zA-Z0-9_]{1,64}$/).max(64),description:n.z.string().max(4096),parameters:n.z.any(),strict:n.z.boolean().optional()}),It=["function"],Ve=n.z.enum(["function"]),Qe=n.z.object({type:Ve,definition:n.z.object({schema:De})}),Ue=[Le],Ft=n.z.enum(Ue),Lt=(e=n.z.undefined())=>n.z.discriminatedUnion("type",[Qe.extend({metadata:e})]),Be="float",Ne=n.z.object({index:n.z.number().int().nonnegative(),embedding:n.z.array(n.z.number())}),Ke="base64",$e=n.z.object({index:n.z.number().int().nonnegative(),embedding:n.z.string().base64()}),Ot=n.z.discriminatedUnion("encodingFormat",[n.z.object({encodingFormat:n.z.literal(Be),embeddings:n.z.array(Ne)}),n.z.object({encodingFormat:n.z.literal(Ke),embeddings:n.z.array($e)})]),de="text",me="token",Je=[de,me],At=n.z.enum(Je),Ye=n.z.array(n.z.string().min(1)),We=n.z.array(n.z.array(n.z.number().int().nonnegative())),Dt=(e=n.z.undefined())=>n.z.discriminatedUnion("modality",[n.z.object({modality:n.z.literal(de),metadata:e,requests:Ye}),n.z.object({modality:n.z.literal(me),metadata:e,requests:We})]);l.AssistantRoleLiteral=H;l.Base64Embedding=$e;l.Base64EmbeddingLiteral=Ke;l.Base64ImageContentTypeLiteral=te;l.Base64ImageContentValue=qe;l.Config=St;l.Content=Pe;l.EmbeddingModalityEnum=At;l.EmbeddingModalityLiterals=Je;l.EmbeddingRequests=Dt;l.EmbeddingTextModalityLiteral=de;l.EmbeddingTokenModalityLiteral=me;l.Embeddings=Ot;l.FloatEmbedding=Ne;l.FloatEmbeddingLiteral=Be;l.Function=De;l.FunctionParameter=Ae;l.FunctionParameterTypes=Pt;l.FunctionParameterTypesLiteral=Oe;l.FunctionParameters=jt;l.FunctionTool=Qe;l.FunctionToolLiteral=Le;l.ImageContent=Y;l.ImageContentDetails=Me;l.ImageContentDetailsLiteral=He;l.ImageModalityLiteral=Q;l.Message=V;l.ModalityEnum=Rt;l.ModalityLiterals=Se;l.PartialContent=Ie;l.PartialMessage=le;l.PartialModalityEnum=wt;l.PartialModalityLiterals=je;l.PartialRoleEnum=Ge;l.PartialRoleLiterals=ve;l.PartialTextContent=oe;l.PartialTextModalityLiteral=q;l.PartialToolCallContent=se;l.PartialToolCallModalityLiteral=w;l.RoleEnum=Ee;l.RoleLiterals=ze;l.SystemRoleLiteral=Re;l.TextContent=ne;l.TextEmbeddingRequests=Ye;l.TextModalityLiteral=D;l.TokenContent=kt;l.TokenEmbeddingRequests=We;l.TokenModalityLiteral=Fe;l.Tool=Lt;l.ToolCallContent=re;l.ToolCallModalityLiteral=F;l.ToolEnum=Ft;l.ToolLiterals=Ue;l.ToolResponseContent=ie;l.ToolResponseModalityLiteral=W;l.ToolRoleLiteral=ke;l.ToolTypes=It;l.ToolTypesLiteral=Ve;l.UrlImageContentTypeLiteral=ae;l.UrlImageContentValue=xe;l.UserRoleLiteral=we;l.createBase64ImageMessage=vt;l.createPartialTextMessage=xt;l.createPartialToolCallMessage=Mt;l.createTextMessage=zt;l.createToolCallMessage=Gt;l.createToolResponseMessage=qt;l.createUrlImageMessage=Et;l.mergePartialMessages=Ht;});var u=class e extends Error{constructor(a,t=500,o){super(a),this.name="GatewayError",this.status=t,this.data=o,Error.captureStackTrace&&Error.captureStackTrace(this,e);}};var k=J(U());var Xe=z.object({dangerouslyAllowBrowser:z.boolean().optional(),httpClient:z.custom().optional(),callbacks:z.array(z.custom()).nonempty().optional()}),Vt=z.object({queuePriority:z.number().int().positive().optional(),metadataForCallbacks:z.any().optional()}),pe=z.object({model:z.custom(),config:(0, k.Config)(),messages:z.array((0, k.Message)()),tools:z.array((0, k.Tool)()).optional(),options:Vt.optional()}),Qt=z.object({queuePriority:z.number().int().positive().optional(),metadataForCallbacks:z.any().optional()}),Ze=z.object({model:z.custom(),config:(0, k.Config)(),messages:z.array((0, k.Message)()),tools:z.array((0, k.Tool)()).optional(),options:Qt.optional()}),Ut=z.object({queuePriority:z.number().int().positive().optional(),metadataForCallbacks:z.any().optional()}),ce=z.object({model:z.custom(),config:(0, k.Config)(),embeddingRequests:(0, k.EmbeddingRequests)(),options:Ut.optional()});var _e=e=>e.status===429;var ue=e=>Bt(JSON.stringify(e)).toString(),S=e=>e instanceof u?e:e instanceof Error?new u(e.message):new u(e),B=()=>typeof window!="undefined"&&typeof window.document!="undefined"&&typeof navigator!="undefined";var Nt={error:"color: red",warn:"color: yellow",info:"color: green"},Kt=(e,a,...t)=>{if(B())B()&&console.log(`%c[${e.toUpperCase()}] [${a}]`,Nt[e],...t);else switch(e){case"error":console.error(...t);break;case"warn":console.warn(...t);break;default:console.log(...t);}},$t=(e,a,...t)=>{var o;B()||((o=process==null?void 0:process.env)==null?void 0:o.DEBUG)==="true"&&Kt(e,a,...t);},R=(e,a,...t)=>C(void 0,null,function*(){let o=[];e.forEach(s=>{let r=s[a];if(typeof r=="function")try{let i=r(...t);i instanceof Promise&&o.push(i);}catch(i){$t("error",`SAFELY_INVOKE_CALLBACKS:${String(a)}:`,i);}}),yield Promise.allSettled(o);}),ye=e=>new Promise(a=>setTimeout(a,e)),et=(e,a,t,o)=>{let s=0,r=e*o;for(let i=0;i<e;i++)s+=a*Math.pow(t,i);return s+r},tt=e=>e===408||e===409||e>=500;var x=J(U());var at=z.object({model:z.custom(),config:(0, x.Config)(),messages:z.array((0, x.Message)()),tools:z.array((0, x.Tool)()).optional(),callbacks:z.array(z.custom()).nonempty().optional(),metadataForCallbacks:z.any().optional()}),la=z.object({request:z.object({config:(0, x.Config)(),messages:z.array((0, x.Message)()),tools:z.array((0, x.Tool)()).optional()}),response:z.array((0, x.Message)()),latencyInMs:z.number().int().positive(),metadataForCallbacks:z.any().optional(),provider:z.object({request:z.any(),response:z.any()})});var L={};function Jt(e){let a=JSON.stringify(e);return new Blob([a]).size}function Yt(e){let a=Object.entries(e).sort((o,s)=>o[1].time-s[1].time).slice(Math.floor(Object.keys(e).length/2)),t={};for(let[o,s]of a)t[o]=s;return t}function nt(e,a){return C(this,null,function*(){let t=at.parse(e),o=e.callbacks||[],s={config:t.config,messages:t.messages,tools:t.tools},r=ue(s);if(L[r])return R(o,"onChatCached",e.metadataForCallbacks,L[r].data),L[r].data;Jt(L)>200*1024*1024&&(L=Yt(L));try{R(o,"onChatStart",e.metadataForCallbacks);let i={url:t.model.getCompleteChatUrl(t.config,t.messages,t.tools),headers:t.model.getCompleteChatHeaders(t.config,t.messages,t.tools),data:t.model.getCompleteChatData(t.config,t.messages,t.tools)},m=Date.now(),d=yield a.post(i.url,i.data,i.headers),c=Date.now()-m,p={request:s,response:t.model.transformCompleteChatResponse(d.data),latencyInMs:c,metadataForCallbacks:e.metadataForCallbacks,provider:{request:i,response:d}};R(o,"onChatComplete",e.metadataForCallbacks,p);let T=ue(s);return L[T]={data:p,time:Date.now()},p}catch(i){let m;throw i instanceof u?m=i:m=S(i),R(o,"onChatError",e.metadataForCallbacks,m),m}})}var P=J(U());var ot=z.object({model:z.custom(),config:(0, P.Config)(),embeddingRequests:(0, P.EmbeddingRequests)(),callbacks:z.array(z.custom()).nonempty().optional(),metadataForCallbacks:z.any().optional()}),ha=z.object({request:z.object({config:(0, P.Config)(),embeddingRequests:(0, P.EmbeddingRequests)()}),response:P.Embeddings,latencyInMs:z.number().int().positive(),metadataForCallbacks:z.any().optional(),provider:z.object({request:z.any(),response:z.any()})});function rt(e,a){return C(this,null,function*(){let t=ot.parse(e),o=e.callbacks||[],s={config:t.config,embeddingRequests:t.embeddingRequests};try{R(o,"onGetEmbeddingsStart",e.metadataForCallbacks);let r={url:t.model.getGetEmbeddingsUrl(t.config,t.embeddingRequests),headers:t.model.getGetEmbeddingsHeaders(t.config,t.embeddingRequests),data:t.model.getGetEmbeddingsData(t.config,t.embeddingRequests)},i=Date.now(),m=yield a.post(r.url,r.data,r.headers),d=Date.now()-i,c={request:s,response:t.model.transformGetEmbeddingsResponse(m.data),latencyInMs:d,metadataForCallbacks:e.metadataForCallbacks,provider:{request:r,response:m}};return R(o,"onGetEmbeddingsComplete",e.metadataForCallbacks,c),c}catch(r){let i;throw r instanceof u?i=r:i=S(r),R(o,"onGetEmbeddingsError",e.metadataForCallbacks,i),i}})}var E=J(U());var st=z.object({model:z.custom(),config:(0, E.Config)(),messages:z.array((0, E.Message)()),tools:z.array((0, E.Tool)()).optional(),callbacks:z.array(z.custom()).nonempty().optional(),metadataForCallbacks:z.any().optional()}),Ma=z.object({request:z.object({config:(0, E.Config)(),messages:z.array((0, E.Message)()),tools:z.array((0, E.Tool)()).optional()}),response:z.array((0, E.PartialMessage)()),metadataForCallbacks:z.any().optional(),provider:z.object({request:z.any(),response:z.any()})});function it(e,a){return A(this,null,function*(){let t=st.parse(e),o=e.callbacks||[],s={config:t.config,messages:t.messages,tools:t.tools};try{R(o,"onStreamStart",e.metadataForCallbacks);let g={url:t.model.getStreamChatUrl(t.config,t.messages,t.tools),headers:t.model.getStreamChatHeaders(t.config,t.messages,t.tools),data:t.model.getStreamChatData(t.config,t.messages,t.tools)},G="",$=!0;try{for(var c=I(a.stream(g.url,"post",g.data,g.headers)),p,T,O;p=!(T=yield new f(c.next())).done;p=!1){let X=T.value;try{for(var r=I(t.model.transformStreamChatResponseChunk(X,G)),i,m,d;i=!(m=yield new f(r.next())).done;i=!1){let Z=m.value;if(Z.partialMessages.length>0){let be={request:s,response:Z.partialMessages,metadataForCallbacks:e.metadataForCallbacks,provider:{request:g,response:X}};R(o,$?"onStreamFirstResponse":"onStreamNewResponse",e.metadataForCallbacks,be),$&&($=!1),yield be;}else G=Z.buffer;}}catch(m){d=[m];}finally{try{i&&(m=r.return)&&(yield new f(m.call(r)));}finally{if(d)throw d[0]}}}}catch(T){O=[T];}finally{try{p&&(T=c.return)&&(yield new f(T.call(c)));}finally{if(O)throw O[0]}}R(o,"onStreamEnd",e.metadataForCallbacks);}catch(g){let G;throw g instanceof u?G=g:G=S(g),R(o,"onStreamError",e.metadataForCallbacks,G),G}})}var v=class e extends Error{constructor(a,t=500,o){super(a),this.name="IsomorphicHttpClientError",this.status=t,this.data=o,Error.captureStackTrace&&Error.captureStackTrace(this,e);}},lt=e=>{let a={};return e&&typeof e=="object"&&Object.entries(e).forEach(([t,o])=>{Array.isArray(o)?a[t]=o.join(", "):typeof o=="string"?a[t]=o:a[t]="";}),a},dt=e=>{var m,d;let a="An unexpected error occurred",o={},s=(e==null?void 0:e.message)||a,r=((m=e==null?void 0:e.response)==null?void 0:m.status)||500,i=((d=e==null?void 0:e.response)==null?void 0:d.data)||o;return new v(s,r,i)},N=class{constructor(a){this.isNodeEnvironment=()=>typeof process!="undefined"&&process.versions!=null&&process.versions.node!=null;let{axiosInstance:t,timeoutInMilliseconds:o}=a;this.client=t||Ce.create();let s=z.number().int().positive().optional();this.defaultTimeout=s.parse(o),this.client.defaults.timeout=this.defaultTimeout;}makeRequest(i,m,d){return C(this,arguments,function*(a,t,o,s={},r){try{let c=j(M(M({},a==="get"||a==="delete"?{params:o}:{data:o}),s),{timeout:r||this.defaultTimeout});if(a==="get"||a==="delete"){let p=yield this.client[a](t,c);return {data:p.data,headers:lt(p.headers),status:{code:p.status,text:p.statusText}}}else {let p=yield this.client[a](t,c.data,j(M({},c),{params:c.params}));return {data:p.data,headers:lt(p.headers),status:{code:p.status,text:p.statusText}}}}catch(c){throw Ce.isAxiosError(c)?dt(c):new v(c instanceof Error?c.message:"An unexpected error occurred.",500)}})}stream(a,t,o,s,r){return A(this,null,function*(){try{if(this.isNodeEnvironment()){let p=yield new f(this.client.request({method:t,url:a,headers:s,data:o,responseType:"stream",signal:r==null?void 0:r.abortSignal}));try{for(var i=I(p.data),m,d,c;m=!(d=yield new f(i.next())).done;m=!1){let T=d.value;yield T.toString();}}catch(d){c=[d];}finally{try{m&&(d=i.return)&&(yield new f(d.call(i)));}finally{if(c)throw c[0]}}}else {let p={method:t,headers:new Headers(M({},s)),body:t!=="get"?JSON.stringify(o):void 0,signal:r==null?void 0:r.abortSignal},T=yield new f(fetch(a,p));if(!T.ok){let O=yield new f(T.json());throw new v(`Request failed with status ${T.status}`,T.status,O)}if(T.body){let O=T.body.getReader();for(;;){let{done:g,value:G}=yield new f(O.read());if(g){yield new TextDecoder().decode(G,{stream:!0});break}yield new TextDecoder().decode(G,{stream:!0});}}else throw new v("Cannot stream the body of the response.",500,T)}}catch(p){throw p instanceof v?p:(p==null?void 0:p.name)==="AbortError"?new v("AbortError",408):(p==null?void 0:p.name)==="CanceledError"?new v("AbortError",408):Ce.isAxiosError(p)?dt(p):new v(p instanceof Error?p.message:"An unexpected error occurred.",500)}})}get(a,t,o){return C(this,null,function*(){return this.makeRequest("get",a,t||{},{headers:o})})}post(a,t,o){return C(this,null,function*(){return this.makeRequest("post",a,t||{},{headers:o})})}put(a,t,o){return C(this,null,function*(){return this.makeRequest("put",a,t||{},{headers:o})})}delete(a,t,o){return C(this,null,function*(){return this.makeRequest("delete",a,t||{},{headers:o})})}patch(a,t,o){return C(this,null,function*(){return this.makeRequest("patch",a,t||{},{headers:o})})}};N.IsomorphicHttpClientError=v;var K=class{constructor(a){this.queue=[];this.isProcessing=!1;this.maxRetries=2;this.tokensPerMinute=25e5;this.timeout=6e4*55;this.backOffInitialDelay=5e3;this.backOffMultiplier=1.1;this.shouldRetry=tt;this.maxRetries=a.maxRetries||this.maxRetries,this.timeout=a.timeout||this.timeout,this.tokensPerMinute=a.tokensPerMinute||this.tokensPerMinute,this.backOffInitialDelay=a.backOffInitialDelay||this.backOffInitialDelay,this.backOffMultiplier=a.backOffMultiplier||this.backOffMultiplier,this.rateLimitRetryTimeout=a.rateLimitRetryTimeout||et(this.maxRetries,this.backOffInitialDelay,this.backOffMultiplier,1e4),this.shouldRetry=a.shouldRetry||this.shouldRetry;}enqueue(a){this.queue.push(a),this.processQueue();}calculateBackoff(a){return this.backOffInitialDelay*Math.pow(this.backOffMultiplier,a)}processQueue(){return C(this,null,function*(){if(this.isProcessing)return;this.isProcessing=!0;let a=this.timeout,t=this.rateLimitRetryTimeout;for(;this.queue.length>0;){let o=[],s=0;for(this.queue.sort((r,i)=>(r.queuePriority||0)-(i.queuePriority||0));this.queue.length>0&&s+this.queue[0].inputTokens<=this.tokensPerMinute;){let r=this.queue.shift();if(!r)break;s+=r.inputTokens,o.push(j(M({},r),{attemptTime:Date.now()}));}yield Promise.all(o.map(r=>C(this,null,function*(){let i=Date.now();if(i-r.queueTime>a){r.reject(new u("Main timeout exceeded.",408,r.request));return}return this.execute(r).catch(m=>C(this,null,function*(){console.log(`
|
|
6
|
+
|
|
7
|
+
`),console.log("Error",m),console.log(`
|
|
8
|
+
|
|
9
|
+
`);let d=S(m);_e(d)&&i-r.attemptTime<t?(yield ye(this.calculateBackoff(r.tryCount)),this.queue.push(j(M({},r),{tryCount:r.tryCount,attemptTime:r.attemptTime}))):this.shouldRetry(d.status)&&r.tryCount<this.maxRetries?this.queue.push(j(M({},r),{tryCount:r.tryCount+1,attemptTime:i})):r.reject(d);}))}))),yield ye(0);}this.isProcessing=!1;})}execute(a){return C(this,null,function*(){let t=a.execute({modelIndex:a.modelIndex,data:a.request,resolve:a.resolve,reject:a.reject});return t instanceof Promise?t:Promise.reject(new u("Unsupported task execution result type in Queue.",500,a.request))})}};var ge=class{constructor(a){if(!a.dangerouslyAllowBrowser&&B())throw new u(`It looks like you're running in a browser-like environment.
|
|
10
|
+
|
|
11
|
+
This is disabled by default, as it risks exposing your provider secrets to attackers.
|
|
12
|
+
If you understand the risks and have appropriate mitigation in place,
|
|
13
|
+
you can set the \`dangerouslyAllowBrowser\` option to \`true\`.
|
|
14
|
+
`);this.options=Xe.parse(a),this.httpClient=a.httpClient||new N({timeoutInMilliseconds:6e4}),this.completeQueue=new K({}),this.embeddingQueue=new K({});}completeChat(a){return C(this,null,function*(){let t=pe.parse(a);return new Promise((o,s)=>{var i;let r={tryCount:0,modelIndex:0,inputTokens:t.model.getTokenCount(t.messages),queueTime:Date.now(),attemptTime:0,request:a,queuePriority:(i=t.options)==null?void 0:i.queuePriority,resolve:o,execute:this.executeCompleteChatTask.bind(this),reject:s};this.completeQueue.enqueue(r);})})}executeCompleteChatTask(a){return C(this,null,function*(){var t,o;try{let s=pe.parse(a.data),r=yield nt({model:s.model,config:s.config,messages:s.messages,tools:s.tools,metadataForCallbacks:(t=s.options)==null?void 0:t.metadataForCallbacks},this.httpClient);a.resolve(r);}catch(s){throw s instanceof u?s:new u(s==null?void 0:s.message,500,(o=s==null?void 0:s.response)==null?void 0:o.data)}})}streamChat(a){return A(this,null,function*(){var t,m;try{let d=Ze.parse(a);try{for(var o=I(it({model:d.model,config:d.config,messages:d.messages,tools:d.tools,metadataForCallbacks:(t=d.options)==null?void 0:t.metadataForCallbacks},this.httpClient)),s,r,i;s=!(r=yield new f(o.next())).done;s=!1){let c=r.value;yield c;}}catch(r){i=[r];}finally{try{s&&(r=o.return)&&(yield new f(r.call(o)));}finally{if(i)throw i[0]}}}catch(d){throw d instanceof u?d:new u(d==null?void 0:d.message,500,(m=d==null?void 0:d.response)==null?void 0:m.data)}})}getEmbeddings(a){return C(this,null,function*(){let t=ce.parse(a);return new Promise((o,s)=>{var i;let r={tryCount:0,modelIndex:0,inputTokens:t.model.getTokenCount(t.embeddingRequests),queueTime:Date.now(),attemptTime:0,request:a,queuePriority:(i=t.options)==null?void 0:i.queuePriority,resolve:o,execute:this.executeGetEmbeddingsTask.bind(this),reject:s};this.embeddingQueue.enqueue(r);})})}executeGetEmbeddingsTask(a){return C(this,null,function*(){var t;try{let o=ce.parse(a.data),s=yield rt({model:o.model,config:o.config,embeddingRequests:o.embeddingRequests},this.httpClient);a.resolve(s);}catch(o){throw o instanceof u?o:new u(o==null?void 0:o.message,500,(t=o==null?void 0:o.response)==null?void 0:t.data)}})}};ge.GatewayError=u;
|
|
15
|
+
|
|
16
|
+
export { at as CompleteChatHandlerRequest, la as CompleteChatHandlerResponse, ge as Gateway, u as GatewayError, ot as GetEmbeddingsHandlerRequest, ha as GetEmbeddingsHandlerResponse, N as IsomorphicHttpClient, v as IsomorphicHttpClientError, K as SimpleQueue, st as StreamChatHandlerRequest, Ma as StreamChatHandlerResponse, nt as handleCompleteChat, rt as handleGetEmbeddings, it as handleStreamChat };
|
|
17
|
+
//# sourceMappingURL=index.mjs.map
|
|
18
|
+
//# sourceMappingURL=index.mjs.map
|