@adaline/gateway 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -83,7 +83,6 @@ declare class QueueTaskTimeoutError extends GatewayBaseError {
83
83
  }
84
84
 
85
85
  interface Cache<T> {
86
- getCacheKey(data: any): string;
87
86
  get(key: string): Promise<T | undefined>;
88
87
  set(key: string, value: T): Promise<void>;
89
88
  delete(key: string): Promise<void>;
@@ -93,7 +92,6 @@ interface Cache<T> {
93
92
  declare class LRUCache<T extends object> implements Cache<T> {
94
93
  private cache;
95
94
  constructor(maxEntries?: number);
96
- getCacheKey(data: any): string;
97
95
  get(key: string): Promise<T | undefined>;
98
96
  set(key: string, value: T): Promise<void>;
99
97
  delete(key: string): Promise<void>;
package/dist/index.d.ts CHANGED
@@ -83,7 +83,6 @@ declare class QueueTaskTimeoutError extends GatewayBaseError {
83
83
  }
84
84
 
85
85
  interface Cache<T> {
86
- getCacheKey(data: any): string;
87
86
  get(key: string): Promise<T | undefined>;
88
87
  set(key: string, value: T): Promise<void>;
89
88
  delete(key: string): Promise<void>;
@@ -93,7 +92,6 @@ interface Cache<T> {
93
92
  declare class LRUCache<T extends object> implements Cache<T> {
94
93
  private cache;
95
94
  constructor(maxEntries?: number);
96
- getCacheKey(data: any): string;
97
95
  get(key: string): Promise<T | undefined>;
98
96
  set(key: string, value: T): Promise<void>;
99
97
  delete(key: string): Promise<void>;
package/dist/index.js CHANGED
@@ -3,39 +3,39 @@
3
3
  var zod = require('zod');
4
4
  var types = require('@adaline/types');
5
5
  var proxyAgent = require('proxy-agent');
6
- var U = require('axios');
6
+ var V = require('axios');
7
+ var xe = require('crypto-js/sha256.js');
7
8
  var lruCache = require('lru-cache');
8
- var Me = require('crypto-js/sha256.js');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
- var U__default = /*#__PURE__*/_interopDefault(U);
13
- var Me__default = /*#__PURE__*/_interopDefault(Me);
12
+ var V__default = /*#__PURE__*/_interopDefault(V);
13
+ var xe__default = /*#__PURE__*/_interopDefault(xe);
14
14
 
15
- var ge=Object.defineProperty,be=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var Te=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var z=(a,t)=>(t=Symbol[a])?t:Symbol.for("Symbol."+a);var $=(a,t,e)=>t in a?ge(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,x=(a,t)=>{for(var e in t||(t={}))Te.call(t,e)&&$(a,e,t[e]);if(N)for(var e of N(t))we.call(t,e)&&$(a,e,t[e]);return a},D=(a,t)=>be(a,Re(t));var m=(a,t,e)=>new Promise((o,n)=>{var s=r=>{try{d(e.next(r));}catch(c){n(c);}},p=r=>{try{d(e.throw(r));}catch(c){n(c);}},d=r=>r.done?o(r.value):Promise.resolve(r.value).then(s,p);d((e=e.apply(a,t)).next());}),h=function(a,t){this[0]=a,this[1]=t;},q=(a,t,e)=>{var o=(p,d,r,c)=>{try{var i=e[p](d),u=(d=i.value)instanceof h,G=i.done;Promise.resolve(u?d[0]:d).then(y=>u?o(p==="return"?p:"next",d[1]?{done:y.done,value:y.value}:y,r,c):r({value:y,done:G})).catch(y=>o("throw",y,r,c));}catch(y){c(y);}},n=p=>s[p]=d=>new Promise((r,c)=>o(p,d,r,c)),s={};return e=e.apply(a,t),s[z("asyncIterator")]=()=>s,n("next"),n("throw"),n("return"),s};var k=(a,t,e)=>(t=a[z("asyncIterator")])?t.call(a):(a=a[z("iterator")](),t={},e=(o,n)=>(n=a[o])&&(t[o]=s=>new Promise((p,d,r)=>(s=n.call(a,s),r=s.done,Promise.resolve(s.value).then(c=>p({value:c,done:r}),d)))),e("next"),e("return"),t);var f=class a extends Error{constructor(t,e=500,o){super(t),this.name="GatewayError",this.status=e,this.data=o,Error.captureStackTrace&&Error.captureStackTrace(this,a);}};var ke="HttpClientError",H=class a extends types.GatewayBaseError{constructor({info:t,cause:e}){super({info:t,cause:e},ke),this.info=t,this.cause=e,Object.setPrototypeOf(this,new.target.prototype);}static isHttpClientError(t){return t instanceof a}},Ee="HttpRequestError",g=class a extends types.GatewayBaseError{constructor(t,e=500,o,n){super({info:t,cause:{status:e,headers:o,data:n}},Ee),this.info=t,this.cause={status:e,headers:o,data:n},Object.setPrototypeOf(this,new.target.prototype);}static isHttpRequestError(t){return t instanceof a}};var F=a=>{let t={};return a&&(typeof a=="object"||a instanceof Headers)&&Object.entries(a).forEach(([e,o])=>{Array.isArray(o)?t[e]=o.join(", "):typeof o=="string"?t[e]=o:t[e]="";}),t},J=a=>{var s,p,d;let t=(a==null?void 0:a.message)||"An unexpected error occurred",e=((s=a==null?void 0:a.response)==null?void 0:s.status)||500,o=F((p=a==null?void 0:a.response)==null?void 0:p.headers)||{},n=((d=a==null?void 0:a.response)==null?void 0:d.data)||{};return new g(t,e,o,n)},j=class{constructor(t){this.isNodeEnvironment=()=>typeof process!="undefined"&&process.versions!=null&&process.versions.node!=null;let{axiosInstance:e,timeoutInMilliseconds:o}=t;this.client=e||U__default.default.create();let n=zod.z.number().int().positive().optional();if(this.defaultTimeout=n.parse(o),this.client.defaults.timeout=this.defaultTimeout,t.proxyUrl)if(t.proxyUrl.startsWith("http://"))process.env.HTTP_PROXY=t.proxyUrl,this.httpProxyAgent=new proxyAgent.ProxyAgent;else if(t.proxyUrl.startsWith("https://"))process.env.HTTPS_PROXY=t.proxyUrl,this.httpsProxyAgent=new proxyAgent.ProxyAgent({rejectUnauthorized:!1});else throw new H({info:"Invalid proxy URL, only http and https proxies are supported",cause:{proxyUrl:t.proxyUrl}})}makeRequest(p,d,r){return m(this,arguments,function*(t,e,o,n={},s){try{let c=D(x(x({},t==="get"||t==="delete"?{params:o}:{data:o}),n),{timeout:s||this.defaultTimeout});if(this.httpProxyAgent?c.httpsAgent=this.httpProxyAgent:this.httpsProxyAgent&&(c.httpsAgent=this.httpsProxyAgent),t==="get"||t==="delete"){let i=yield this.client[t](e,c);return {data:i.data,headers:F(i.headers),status:{code:i.status,text:i.statusText}}}else {let i=yield this.client[t](e,c.data,D(x({},c),{params:c.params}));return {data:i.data,headers:F(i.headers),status:{code:i.status,text:i.statusText}}}}catch(c){throw U__default.default.isAxiosError(c)?J(c):new H({info:"An unexpected error occurred",cause:c})}})}stream(t,e,o,n,s){return q(this,null,function*(){try{if(this.isNodeEnvironment()){let i=yield new h(this.client.request({method:e,url:t,headers:n,data:o,responseType:"stream",signal:s==null?void 0:s.abortSignal}));try{for(var p=k(i.data),d,r,c;d=!(r=yield new h(p.next())).done;d=!1){let u=r.value;yield u.toString();}}catch(r){c=[r];}finally{try{d&&(r=p.return)&&(yield new h(r.call(p)));}finally{if(c)throw c[0]}}}else {let i={method:e,headers:new Headers(x({},n)),body:e!=="get"?JSON.stringify(o):void 0,signal:s==null?void 0:s.abortSignal},u=yield new h(fetch(t,i));if(!u.ok){let G=yield new h(u.json());throw new g(`Request failed with status ${u.status}`,u.status,F(u.headers),G)}if(u.body){let G=u.body.getReader();for(;;){let{done:y,value:w}=yield new h(G.read());if(y){yield new TextDecoder().decode(w,{stream:!0});break}yield new TextDecoder().decode(w,{stream:!0});}}else throw new g("Cannot stream the body of the response.",500,{},u)}}catch(i){throw g.isHttpRequestError(i)?i:(i==null?void 0:i.name)==="AbortError"?new g("AbortError",408,{},{}):(i==null?void 0:i.name)==="CanceledError"?new g("AbortError",408,{},{}):U__default.default.isAxiosError(i)?J(i):new H({info:"An unexpected error occurred",cause:i})}})}get(t,e,o){return m(this,null,function*(){return this.makeRequest("get",t,e||{},{headers:o})})}post(t,e,o){return m(this,null,function*(){return this.makeRequest("post",t,e||{},{headers:o})})}put(t,e,o){return m(this,null,function*(){return this.makeRequest("put",t,e||{},{headers:o})})}delete(t,e,o){return m(this,null,function*(){return this.makeRequest("delete",t,e||{},{headers:o})})}patch(t,e,o){return m(this,null,function*(){return this.makeRequest("patch",t,e||{},{headers:o})})}};var He="QueueTaskTimeoutError",Q=class a extends types.GatewayBaseError{constructor({info:t,cause:e}){super({info:t,cause:e},He),this.info=t,this.cause=e,Object.setPrototypeOf(this,new.target.prototype);}static isQueueTaskTimeoutError(t){return t instanceof a}};var X=zod.z.object({maxConcurrentTasks:zod.z.number().int().positive(),retryCount:zod.z.number().int().positive(),timeout:zod.z.number().int().positive(),retry:zod.z.object({initialDelay:zod.z.number().int().positive(),exponentialFactor:zod.z.number().int().positive()})});var v=a=>a instanceof f?a:a instanceof Error?new f(a.message):new f(a),S=()=>typeof window!="undefined"&&typeof window.document!="undefined"&&typeof navigator!="undefined";var ve={error:"color: red",warn:"color: yellow",info:"color: green"},xe=(a,t,...e)=>{if(S())S()&&console.log(`%c[${a.toUpperCase()}] [${t}]`,ve[a],...e);else switch(a){case"error":console.error(...e);break;case"warn":console.warn(...e);break;default:console.log(...e);}},Se=(a,t,...e)=>{var o;S()||((o=process==null?void 0:process.env)==null?void 0:o.DEBUG)==="true"&&xe(a,t,...e);},b=(a,t,...e)=>m(void 0,null,function*(){let o=[];a.forEach(n=>{let s=n[t];if(typeof s=="function")try{let p=s(...e);p instanceof Promise&&o.push(p);}catch(p){Se("error",`SAFELY_INVOKE_CALLBACKS:${String(t)}:`,p);}}),yield Promise.allSettled(o);}),Z=a=>new Promise(t=>setTimeout(t,a));var P=class{constructor(t){this.activeTasks=0;this.queue=[];this.options=t;}enqueue(t){this.queue.push(t),this.processQueue();}withTimeout(t){return new Promise((e,o)=>{let n=setTimeout(()=>o(new Q({info:"Queue task timeout",cause:new Error("Queue task timeout")})),this.options.timeout);t.execute(t.request).then(s=>{clearTimeout(n),e(s);}).catch(s=>{clearTimeout(n),o(s);});})}executeWithRetry(t,e){return m(this,null,function*(){try{return yield this.withTimeout(t)}catch(o){if(e===0)throw o;let n=!0,s=this.options.retry.initialDelay*Math.pow(this.options.retry.exponentialFactor,this.options.retryCount-e);if(g.isHttpRequestError(o)){if(o.cause.status===429){let p=M.safeParse(t.request);if(p.success){let d=p.data.model.getRetryDelay(o.cause.headers);n=d.shouldRetry,d.delayMs>0&&(s=d.delayMs);}}o.cause.status>=500&&o.cause.status<600;}if(n)return yield Z(s),this.executeWithRetry(t,e-1);throw o}})}processQueue(){return m(this,null,function*(){if(this.activeTasks>=this.options.maxConcurrentTasks)return;let t=this.queue.shift();if(t){this.activeTasks+=1;try{let e=yield this.executeWithRetry(t,this.options.retryCount);t.resolve(e);}catch(e){t.reject(e);}finally{this.activeTasks-=1,this.processQueue();}}})}};var O=class{constructor(t=1e3){this.cache=new lruCache.LRUCache({max:t,allowStale:!1,updateAgeOnGet:!1});}getCacheKey(t){return Me__default.default(`${t.prefix}:${t.url}:${t.modelName}:${JSON.stringify(t.data)}`).toString()}get(t){return m(this,null,function*(){return new Promise((e,o)=>{e(this.cache.get(t));})})}set(t,e){return m(this,null,function*(){return new Promise((o,n)=>{this.cache.set(t,e),o();})})}delete(t){return m(this,null,function*(){return new Promise((e,o)=>{this.cache.delete(t),e();})})}clear(){return m(this,null,function*(){return new Promise((t,e)=>{this.cache.clear(),t();})})}};var te=zod.z.object({queueOptions:X.partial().optional(),dangerouslyAllowBrowser:zod.z.boolean().optional(),httpClient:zod.z.custom().optional(),completeChatCache:zod.z.custom().optional(),completeChatCallbacks:zod.z.array(zod.z.custom()).nonempty().optional(),getEmbeddingsCache:zod.z.custom().optional(),getEmbeddingsCallbacks:zod.z.array(zod.z.custom()).nonempty().optional(),streamChatCallbacks:zod.z.array(zod.z.custom()).nonempty().optional()}),Ae=zod.z.object({enableCache:zod.z.boolean().optional().default(!0),metadataForCallbacks:zod.z.any().optional()}),M=zod.z.object({model:zod.z.custom(),config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional(),options:Ae.optional()}),Fe=zod.z.object({metadataForCallbacks:zod.z.any().optional()}),ae=zod.z.object({model:zod.z.custom(),config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional(),options:Fe.optional()}),je=zod.z.object({enableCache:zod.z.boolean().optional().default(!0),metadataForCallbacks:zod.z.any().optional()}),L=zod.z.object({model:zod.z.custom(),config:types.Config(),embeddingRequests:types.EmbeddingRequests(),options:je.optional()});var re=zod.z.object({cache:zod.z.custom(),model:zod.z.custom(),config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional(),enableCache:zod.z.boolean(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),Et=zod.z.object({request:zod.z.object({config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional()}),response:types.ChatResponse,cached:zod.z.boolean(),latencyInMs:zod.z.number().int().positive(),metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});function ie(a,t){return m(this,null,function*(){let e=re.parse(a),o=a.callbacks||[];try{b(o,"onChatStart",a.metadataForCallbacks);let n={config:e.config,messages:e.messages,tools:e.tools},s={url:yield e.model.getCompleteChatUrl(e.config,e.messages,e.tools),headers:yield e.model.getCompleteChatHeaders(e.config,e.messages,e.tools),data:yield e.model.getCompleteChatData(e.config,e.messages,e.tools)},p=a.cache.getCacheKey({prefix:"complete-chat",url:s.url,modelName:e.model.modelSchema.name,data:n});if(e.enableCache){let u=yield a.cache.get(p);if(u)return u.cached=!0,b(o,"onChatCached",a.metadataForCallbacks,u),u}let d=Date.now(),r=yield t.post(s.url,s.data,s.headers),c=Date.now()-d,i={request:n,response:e.model.transformCompleteChatResponse(r.data),cached:!1,latencyInMs:c,metadataForCallbacks:a.metadataForCallbacks,provider:{request:s,response:r}};return e.enableCache&&(yield a.cache.set(p,i)),b(o,"onChatComplete",a.metadataForCallbacks,i),i}catch(n){let s;throw g.isHttpRequestError(n)||n instanceof f?s=n:s=v(n),b(o,"onChatError",a.metadataForCallbacks,s),s}})}var ce=zod.z.object({cache:zod.z.custom(),model:zod.z.custom(),config:types.Config(),embeddingRequests:types.EmbeddingRequests(),enableCache:zod.z.boolean(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),It=zod.z.object({request:zod.z.object({config:types.Config(),embeddingRequests:types.EmbeddingRequests()}),response:types.EmbeddingResponse,cached:zod.z.boolean(),latencyInMs:zod.z.number().int().positive(),metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});function de(a,t){return m(this,null,function*(){let e=ce.parse(a),o=a.callbacks||[];try{b(o,"onGetEmbeddingsStart",a.metadataForCallbacks);let n={config:e.config,embeddingRequests:e.embeddingRequests},s={url:yield e.model.getGetEmbeddingsUrl(e.config,e.embeddingRequests),headers:yield e.model.getGetEmbeddingsHeaders(e.config,e.embeddingRequests),data:yield e.model.getGetEmbeddingsData(e.config,e.embeddingRequests)},p=a.cache.getCacheKey({prefix:"get-embeddings",url:s.url,modelName:e.model.modelSchema.name,data:n});if(e.enableCache){let u=yield a.cache.get(p);if(u)return u.cached=!0,b(o,"onGetEmbeddingsCached",a.metadataForCallbacks,u),u}let d=Date.now(),r=yield t.post(s.url,s.data,s.headers),c=Date.now()-d,i={request:n,response:e.model.transformGetEmbeddingsResponse(r.data),cached:!1,latencyInMs:c,metadataForCallbacks:a.metadataForCallbacks,provider:{request:s,response:r}};return e.enableCache&&(yield a.cache.set(p,i)),b(o,"onGetEmbeddingsComplete",a.metadataForCallbacks,i),i}catch(n){let s;throw g.isHttpRequestError(n)||n instanceof f?s=n:s=v(n),b(o,"onGetEmbeddingsError",a.metadataForCallbacks,s),s}})}var he=zod.z.object({model:zod.z.custom(),config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),Zt=zod.z.object({request:zod.z.object({config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional()}),response:types.PartialChatResponse,metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});function Ce(a,t){return q(this,null,function*(){let e=he.parse(a),o=a.callbacks||[],n={config:e.config,messages:e.messages,tools:e.tools};try{b(o,"onStreamStart",a.metadataForCallbacks);let y={url:yield new h(e.model.getStreamChatUrl(e.config,e.messages,e.tools)),headers:yield new h(e.model.getStreamChatHeaders(e.config,e.messages,e.tools)),data:yield new h(e.model.getStreamChatData(e.config,e.messages,e.tools))},w="",A=!0;try{for(var c=k(t.stream(y.url,"post",y.data,y.headers)),i,u,G;i=!(u=yield new h(c.next())).done;i=!1){let I=u.value;try{for(var s=k(e.model.transformStreamChatResponseChunk(I,w)),p,d,r;p=!(d=yield new h(s.next())).done;p=!1){let fe=d.value;let K={request:n,response:fe.partialResponse,metadataForCallbacks:a.metadataForCallbacks,provider:{request:y,response:I}};b(o,A?"onStreamFirstResponse":"onStreamNewResponse",a.metadataForCallbacks,K),A&&(A=!1),yield K;}}catch(d){r=[d];}finally{try{p&&(d=s.return)&&(yield new h(d.call(s)));}finally{if(r)throw r[0]}}}}catch(u){G=[u];}finally{try{i&&(u=c.return)&&(yield new h(u.call(c)));}finally{if(G)throw G[0]}}b(o,"onStreamEnd",a.metadataForCallbacks);}catch(y){let w;throw y instanceof f?w=y:w=v(y),b(o,"onStreamError",a.metadataForCallbacks,w),w}})}var B=class{constructor(t){var o,n,s,p;if(!t.dangerouslyAllowBrowser&&S())throw new f(`It looks like you're running in a browser-like environment.
15
+ var be=Object.defineProperty,Re=Object.defineProperties;var Te=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var we=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable;var D=(a,t)=>(t=Symbol[a])?t:Symbol.for("Symbol."+a);var W=(a,t,e)=>t in a?be(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,x=(a,t)=>{for(var e in t||(t={}))we.call(t,e)&&W(a,e,t[e]);if(N)for(var e of N(t))ke.call(t,e)&&W(a,e,t[e]);return a},U=(a,t)=>Re(a,Te(t));var m=(a,t,e)=>new Promise((s,n)=>{var o=r=>{try{d(e.next(r));}catch(c){n(c);}},p=r=>{try{d(e.throw(r));}catch(c){n(c);}},d=r=>r.done?s(r.value):Promise.resolve(r.value).then(o,p);d((e=e.apply(a,t)).next());}),h=function(a,t){this[0]=a,this[1]=t;},q=(a,t,e)=>{var s=(p,d,r,c)=>{try{var i=e[p](d),u=(d=i.value)instanceof h,G=i.done;Promise.resolve(u?d[0]:d).then(y=>u?s(p==="return"?p:"next",d[1]?{done:y.done,value:y.value}:y,r,c):r({value:y,done:G})).catch(y=>s("throw",y,r,c));}catch(y){c(y);}},n=p=>o[p]=d=>new Promise((r,c)=>s(p,d,r,c)),o={};return e=e.apply(a,t),o[D("asyncIterator")]=()=>o,n("next"),n("throw"),n("return"),o};var k=(a,t,e)=>(t=a[D("asyncIterator")])?t.call(a):(a=a[D("iterator")](),t={},e=(s,n)=>(n=a[s])&&(t[s]=o=>new Promise((p,d,r)=>(o=n.call(a,o),r=o.done,Promise.resolve(o.value).then(c=>p({value:c,done:r}),d)))),e("next"),e("return"),t);var f=class a extends Error{constructor(t,e=500,s){super(t),this.name="GatewayError",this.status=e,this.data=s,Error.captureStackTrace&&Error.captureStackTrace(this,a);}};var Ee="HttpClientError",H=class a extends types.GatewayBaseError{constructor({info:t,cause:e}){super({info:t,cause:e},Ee),this.info=t,this.cause=e,Object.setPrototypeOf(this,new.target.prototype);}static isHttpClientError(t){return t instanceof a}},Ge="HttpRequestError",g=class a extends types.GatewayBaseError{constructor(t,e=500,s,n){super({info:t,cause:{status:e,headers:s,data:n}},Ge),this.info=t,this.cause={status:e,headers:s,data:n},Object.setPrototypeOf(this,new.target.prototype);}static isHttpRequestError(t){return t instanceof a}};var F=a=>{let t={};return a&&(typeof a=="object"||a instanceof Headers)&&Object.entries(a).forEach(([e,s])=>{Array.isArray(s)?t[e]=s.join(", "):typeof s=="string"?t[e]=s:t[e]="";}),t},X=a=>{var o,p,d;let t=(a==null?void 0:a.message)||"An unexpected error occurred",e=((o=a==null?void 0:a.response)==null?void 0:o.status)||500,s=F((p=a==null?void 0:a.response)==null?void 0:p.headers)||{},n=((d=a==null?void 0:a.response)==null?void 0:d.data)||{};return new g(t,e,s,n)},j=class{constructor(t){this.isNodeEnvironment=()=>typeof process!="undefined"&&process.versions!=null&&process.versions.node!=null;let{axiosInstance:e,timeoutInMilliseconds:s}=t;this.client=e||V__default.default.create();let n=zod.z.number().int().positive().optional();if(this.defaultTimeout=n.parse(s),this.client.defaults.timeout=this.defaultTimeout,t.proxyUrl)if(t.proxyUrl.startsWith("http://"))process.env.HTTP_PROXY=t.proxyUrl,this.httpProxyAgent=new proxyAgent.ProxyAgent;else if(t.proxyUrl.startsWith("https://"))process.env.HTTPS_PROXY=t.proxyUrl,this.httpsProxyAgent=new proxyAgent.ProxyAgent({rejectUnauthorized:!1});else throw new H({info:"Invalid proxy URL, only http and https proxies are supported",cause:{proxyUrl:t.proxyUrl}})}makeRequest(p,d,r){return m(this,arguments,function*(t,e,s,n={},o){try{let c=U(x(x({},t==="get"||t==="delete"?{params:s}:{data:s}),n),{timeout:o||this.defaultTimeout});if(this.httpProxyAgent?c.httpsAgent=this.httpProxyAgent:this.httpsProxyAgent&&(c.httpsAgent=this.httpsProxyAgent),t==="get"||t==="delete"){let i=yield this.client[t](e,c);return {data:i.data,headers:F(i.headers),status:{code:i.status,text:i.statusText}}}else {let i=yield this.client[t](e,c.data,U(x({},c),{params:c.params}));return {data:i.data,headers:F(i.headers),status:{code:i.status,text:i.statusText}}}}catch(c){throw V__default.default.isAxiosError(c)?X(c):new H({info:"An unexpected error occurred",cause:c})}})}stream(t,e,s,n,o){return q(this,null,function*(){try{if(this.isNodeEnvironment()){let i=yield new h(this.client.request({method:e,url:t,headers:n,data:s,responseType:"stream",signal:o==null?void 0:o.abortSignal}));try{for(var p=k(i.data),d,r,c;d=!(r=yield new h(p.next())).done;d=!1){let u=r.value;yield u.toString();}}catch(r){c=[r];}finally{try{d&&(r=p.return)&&(yield new h(r.call(p)));}finally{if(c)throw c[0]}}}else {let i={method:e,headers:new Headers(x({},n)),body:e!=="get"?JSON.stringify(s):void 0,signal:o==null?void 0:o.abortSignal},u=yield new h(fetch(t,i));if(!u.ok){let G=yield new h(u.json());throw new g(`Request failed with status ${u.status}`,u.status,F(u.headers),G)}if(u.body){let G=u.body.getReader();for(;;){let{done:y,value:w}=yield new h(G.read());if(y){yield new TextDecoder().decode(w,{stream:!0});break}yield new TextDecoder().decode(w,{stream:!0});}}else throw new g("Cannot stream the body of the response.",500,{},u)}}catch(i){throw g.isHttpRequestError(i)?i:(i==null?void 0:i.name)==="AbortError"?new g("AbortError",408,{},{}):(i==null?void 0:i.name)==="CanceledError"?new g("AbortError",408,{},{}):V__default.default.isAxiosError(i)?X(i):new H({info:"An unexpected error occurred",cause:i})}})}get(t,e,s){return m(this,null,function*(){return this.makeRequest("get",t,e||{},{headers:s})})}post(t,e,s){return m(this,null,function*(){return this.makeRequest("post",t,e||{},{headers:s})})}put(t,e,s){return m(this,null,function*(){return this.makeRequest("put",t,e||{},{headers:s})})}delete(t,e,s){return m(this,null,function*(){return this.makeRequest("delete",t,e||{},{headers:s})})}patch(t,e,s){return m(this,null,function*(){return this.makeRequest("patch",t,e||{},{headers:s})})}};var ve="QueueTaskTimeoutError",Q=class a extends types.GatewayBaseError{constructor({info:t,cause:e}){super({info:t,cause:e},ve),this.info=t,this.cause=e,Object.setPrototypeOf(this,new.target.prototype);}static isQueueTaskTimeoutError(t){return t instanceof a}};var Z=zod.z.object({maxConcurrentTasks:zod.z.number().int().positive(),retryCount:zod.z.number().int().positive(),timeout:zod.z.number().int().positive(),retry:zod.z.object({initialDelay:zod.z.number().int().positive(),exponentialFactor:zod.z.number().int().positive()})});var I=(a,t)=>xe__default.default(a+JSON.stringify(t)).toString(),v=a=>a instanceof f?a:a instanceof Error?new f(a.message):new f(a),S=()=>typeof window!="undefined"&&typeof window.document!="undefined"&&typeof navigator!="undefined";var Se={error:"color: red",warn:"color: yellow",info:"color: green"},Pe=(a,t,...e)=>{if(S())S()&&console.log(`%c[${a.toUpperCase()}] [${t}]`,Se[a],...e);else switch(a){case"error":console.error(...e);break;case"warn":console.warn(...e);break;default:console.log(...e);}},Me=(a,t,...e)=>{var s;S()||((s=process==null?void 0:process.env)==null?void 0:s.DEBUG)==="true"&&Pe(a,t,...e);},b=(a,t,...e)=>m(void 0,null,function*(){let s=[];a.forEach(n=>{let o=n[t];if(typeof o=="function")try{let p=o(...e);p instanceof Promise&&s.push(p);}catch(p){Me("error",`SAFELY_INVOKE_CALLBACKS:${String(t)}:`,p);}}),yield Promise.allSettled(s);}),_=a=>new Promise(t=>setTimeout(t,a));var P=class{constructor(t){this.activeTasks=0;this.queue=[];this.options=t;}enqueue(t){this.queue.push(t),this.processQueue();}withTimeout(t){return new Promise((e,s)=>{let n=setTimeout(()=>s(new Q({info:"Queue task timeout",cause:new Error("Queue task timeout")})),this.options.timeout);t.execute(t.request).then(o=>{clearTimeout(n),e(o);}).catch(o=>{clearTimeout(n),s(o);});})}executeWithRetry(t,e){return m(this,null,function*(){try{return yield this.withTimeout(t)}catch(s){if(e===0)throw s;let n=!0,o=this.options.retry.initialDelay*Math.pow(this.options.retry.exponentialFactor,this.options.retryCount-e);if(g.isHttpRequestError(s)){if(s.cause.status===429){let p=M.safeParse(t.request);if(p.success){let d=p.data.model.getRetryDelay(s.cause.headers);n=d.shouldRetry,d.delayMs>0&&(o=d.delayMs);}}s.cause.status>=500&&s.cause.status<600;}if(n)return yield _(o),this.executeWithRetry(t,e-1);throw s}})}processQueue(){return m(this,null,function*(){if(this.activeTasks>=this.options.maxConcurrentTasks)return;let t=this.queue.shift();if(t){this.activeTasks+=1;try{let e=yield this.executeWithRetry(t,this.options.retryCount);t.resolve(e);}catch(e){t.reject(e);}finally{this.activeTasks-=1,this.processQueue();}}})}};var O=class{constructor(t=1e3){this.cache=new lruCache.LRUCache({max:t,allowStale:!1,updateAgeOnGet:!1});}get(t){return m(this,null,function*(){return new Promise((e,s)=>{e(this.cache.get(t));})})}set(t,e){return m(this,null,function*(){return new Promise((s,n)=>{this.cache.set(t,e),s();})})}delete(t){return m(this,null,function*(){return new Promise((e,s)=>{this.cache.delete(t),e();})})}clear(){return m(this,null,function*(){return new Promise((t,e)=>{this.cache.clear(),t();})})}};var ae=zod.z.object({queueOptions:Z.partial().optional(),dangerouslyAllowBrowser:zod.z.boolean().optional(),httpClient:zod.z.custom().optional(),completeChatCache:zod.z.custom().optional(),completeChatCallbacks:zod.z.array(zod.z.custom()).nonempty().optional(),getEmbeddingsCache:zod.z.custom().optional(),getEmbeddingsCallbacks:zod.z.array(zod.z.custom()).nonempty().optional(),streamChatCallbacks:zod.z.array(zod.z.custom()).nonempty().optional()}),Fe=zod.z.object({enableCache:zod.z.boolean().optional().default(!0),metadataForCallbacks:zod.z.any().optional()}),M=zod.z.object({model:zod.z.custom(),config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional(),options:Fe.optional()}),je=zod.z.object({metadataForCallbacks:zod.z.any().optional()}),se=zod.z.object({model:zod.z.custom(),config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional(),options:je.optional()}),Qe=zod.z.object({enableCache:zod.z.boolean().optional().default(!0),metadataForCallbacks:zod.z.any().optional()}),B=zod.z.object({model:zod.z.custom(),config:types.Config(),embeddingRequests:types.EmbeddingRequests(),options:Qe.optional()});var ie=zod.z.object({cache:zod.z.custom(),model:zod.z.custom(),config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional(),enableCache:zod.z.boolean(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),Gt=zod.z.object({request:zod.z.object({config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional()}),response:types.ChatResponse,cached:zod.z.boolean(),latencyInMs:zod.z.number().int().positive(),metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});function pe(a,t){return m(this,null,function*(){let e=ie.parse(a),s=a.callbacks||[];try{b(s,"onChatStart",a.metadataForCallbacks);let n={config:e.config,messages:e.messages,tools:e.tools},o={url:yield e.model.getCompleteChatUrl(e.config,e.messages,e.tools),headers:yield e.model.getCompleteChatHeaders(e.config,e.messages,e.tools),data:yield e.model.getCompleteChatData(e.config,e.messages,e.tools)},p=I(`complete-chat:${o.url}:${e.model.modelSchema.name}`,n);if(e.enableCache){let u=yield a.cache.get(p);if(u)return u.cached=!0,b(s,"onChatCached",a.metadataForCallbacks,u),u}let d=Date.now(),r=yield t.post(o.url,o.data,o.headers),c=Date.now()-d,i={request:n,response:e.model.transformCompleteChatResponse(r.data),cached:!1,latencyInMs:c,metadataForCallbacks:a.metadataForCallbacks,provider:{request:o,response:r}};return e.enableCache&&(yield a.cache.set(p,i)),b(s,"onChatComplete",a.metadataForCallbacks,i),i}catch(n){let o;throw g.isHttpRequestError(n)||n instanceof f?o=n:o=v(n),b(s,"onChatError",a.metadataForCallbacks,o),o}})}var de=zod.z.object({cache:zod.z.custom(),model:zod.z.custom(),config:types.Config(),embeddingRequests:types.EmbeddingRequests(),enableCache:zod.z.boolean(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),zt=zod.z.object({request:zod.z.object({config:types.Config(),embeddingRequests:types.EmbeddingRequests()}),response:types.EmbeddingResponse,cached:zod.z.boolean(),latencyInMs:zod.z.number().int().positive(),metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});function me(a,t){return m(this,null,function*(){let e=de.parse(a),s=a.callbacks||[];try{b(s,"onGetEmbeddingsStart",a.metadataForCallbacks);let n={config:e.config,embeddingRequests:e.embeddingRequests},o={url:yield e.model.getGetEmbeddingsUrl(e.config,e.embeddingRequests),headers:yield e.model.getGetEmbeddingsHeaders(e.config,e.embeddingRequests),data:yield e.model.getGetEmbeddingsData(e.config,e.embeddingRequests)},p=I(`get-embeddings:${o.url}:${e.model.modelSchema.name}`,n);if(e.enableCache){let u=yield a.cache.get(p);if(u)return u.cached=!0,b(s,"onGetEmbeddingsCached",a.metadataForCallbacks,u),u}let d=Date.now(),r=yield t.post(o.url,o.data,o.headers),c=Date.now()-d,i={request:n,response:e.model.transformGetEmbeddingsResponse(r.data),cached:!1,latencyInMs:c,metadataForCallbacks:a.metadataForCallbacks,provider:{request:o,response:r}};return e.enableCache&&(yield a.cache.set(p,i)),b(s,"onGetEmbeddingsComplete",a.metadataForCallbacks,i),i}catch(n){let o;throw g.isHttpRequestError(n)||n instanceof f?o=n:o=v(n),b(s,"onGetEmbeddingsError",a.metadataForCallbacks,o),o}})}var Ce=zod.z.object({model:zod.z.custom(),config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional(),callbacks:zod.z.array(zod.z.custom()).nonempty().optional(),metadataForCallbacks:zod.z.any().optional()}),_t=zod.z.object({request:zod.z.object({config:types.Config(),messages:zod.z.array(types.Message()),tools:zod.z.array(types.Tool()).optional()}),response:types.PartialChatResponse,metadataForCallbacks:zod.z.any().optional(),provider:zod.z.object({request:zod.z.any(),response:zod.z.any()})});function fe(a,t){return q(this,null,function*(){let e=Ce.parse(a),s=a.callbacks||[],n={config:e.config,messages:e.messages,tools:e.tools};try{b(s,"onStreamStart",a.metadataForCallbacks);let y={url:yield new h(e.model.getStreamChatUrl(e.config,e.messages,e.tools)),headers:yield new h(e.model.getStreamChatHeaders(e.config,e.messages,e.tools)),data:yield new h(e.model.getStreamChatData(e.config,e.messages,e.tools))},w="",A=!0;try{for(var c=k(t.stream(y.url,"post",y.data,y.headers)),i,u,G;i=!(u=yield new h(c.next())).done;i=!1){let z=u.value;try{for(var o=k(e.model.transformStreamChatResponseChunk(z,w)),p,d,r;p=!(d=yield new h(o.next())).done;p=!1){let ge=d.value;let $={request:n,response:ge.partialResponse,metadataForCallbacks:a.metadataForCallbacks,provider:{request:y,response:z}};b(s,A?"onStreamFirstResponse":"onStreamNewResponse",a.metadataForCallbacks,$),A&&(A=!1),yield $;}}catch(d){r=[d];}finally{try{p&&(d=o.return)&&(yield new h(d.call(o)));}finally{if(r)throw r[0]}}}}catch(u){G=[u];}finally{try{i&&(u=c.return)&&(yield new h(u.call(c)));}finally{if(G)throw G[0]}}b(s,"onStreamEnd",a.metadataForCallbacks);}catch(y){let w;throw y instanceof f?w=y:w=v(y),b(s,"onStreamError",a.metadataForCallbacks,w),w}})}var K=class{constructor(t){var s,n,o,p;if(!t.dangerouslyAllowBrowser&&S())throw new f(`It looks like you're running in a browser-like environment.
16
16
 
17
17
  This is disabled by default, as it risks exposing your provider secrets to attackers.
18
18
  If you understand the risks and have appropriate mitigation in place,
19
19
  you can set the \`dangerouslyAllowBrowser\` option to \`true\`.
20
- `);this.options=te.parse(t);let e={maxConcurrentTasks:((o=this.options.queueOptions)==null?void 0:o.maxConcurrentTasks)||4,retryCount:((n=this.options.queueOptions)==null?void 0:n.retryCount)||3,retry:((s=this.options.queueOptions)==null?void 0:s.retry)||{initialDelay:1e3,exponentialFactor:2},timeout:((p=this.options.queueOptions)==null?void 0:p.timeout)||9e4};this.queues={completeChat:new P(e),getEmbeddings:new P(e)},this.httpClient=t.httpClient||new j({timeoutInMilliseconds:e.timeout*.9}),this.caches={completeChat:t.completeChatCache||new O,getEmbeddings:t.getEmbeddingsCache||new O};}completeChat(t){return m(this,null,function*(){let e=M.parse(t);return new Promise((o,n)=>{let s={request:e,cache:this.caches.completeChat,resolve:o,reject:n,execute:this.executeCompleteChat.bind(this)};this.queues.completeChat.enqueue(s);})})}executeCompleteChat(t){return m(this,null,function*(){var o,n,s;let e=M.parse(t);return ie({cache:this.caches.completeChat,model:e.model,config:e.config,messages:e.messages,tools:e.tools,enableCache:(n=(o=e.options)==null?void 0:o.enableCache)!=null?n:!0,callbacks:this.options.completeChatCallbacks,metadataForCallbacks:(s=e.options)==null?void 0:s.metadataForCallbacks},this.httpClient)})}streamChat(t){return q(this,null,function*(){var e,d;try{let r=ae.parse(t);try{for(var o=k(Ce({model:r.model,config:r.config,messages:r.messages,tools:r.tools,callbacks:this.options.streamChatCallbacks,metadataForCallbacks:(e=r.options)==null?void 0:e.metadataForCallbacks},this.httpClient)),n,s,p;n=!(s=yield new h(o.next())).done;n=!1){let c=s.value;yield c;}}catch(s){p=[s];}finally{try{n&&(s=o.return)&&(yield new h(s.call(o)));}finally{if(p)throw p[0]}}}catch(r){throw r instanceof f?r:new f(r==null?void 0:r.message,500,(d=r==null?void 0:r.response)==null?void 0:d.data)}})}getEmbeddings(t){return m(this,null,function*(){let e=L.parse(t);return new Promise((o,n)=>{let s={request:e,cache:this.caches.getEmbeddings,resolve:o,reject:n,execute:this.executeGetEmbeddingsTask.bind(this)};this.queues.getEmbeddings.enqueue(s);})})}executeGetEmbeddingsTask(t){return m(this,null,function*(){var o,n,s;let e=L.parse(t);return de({cache:this.caches.getEmbeddings,model:e.model,config:e.config,embeddingRequests:e.embeddingRequests,enableCache:(n=(o=e.options)==null?void 0:o.enableCache)!=null?n:!0,callbacks:this.options.getEmbeddingsCallbacks,metadataForCallbacks:(s=e.options)==null?void 0:s.metadataForCallbacks},this.httpClient)})}};B.GatewayError=f;
20
+ `);this.options=ae.parse(t);let e={maxConcurrentTasks:((s=this.options.queueOptions)==null?void 0:s.maxConcurrentTasks)||4,retryCount:((n=this.options.queueOptions)==null?void 0:n.retryCount)||3,retry:((o=this.options.queueOptions)==null?void 0:o.retry)||{initialDelay:1e3,exponentialFactor:2},timeout:((p=this.options.queueOptions)==null?void 0:p.timeout)||9e4};this.queues={completeChat:new P(e),getEmbeddings:new P(e)},this.httpClient=t.httpClient||new j({timeoutInMilliseconds:e.timeout*.9}),this.caches={completeChat:t.completeChatCache||new O,getEmbeddings:t.getEmbeddingsCache||new O};}completeChat(t){return m(this,null,function*(){let e=M.parse(t);return new Promise((s,n)=>{let o={request:e,cache:this.caches.completeChat,resolve:s,reject:n,execute:this.executeCompleteChat.bind(this)};this.queues.completeChat.enqueue(o);})})}executeCompleteChat(t){return m(this,null,function*(){var s,n,o;let e=M.parse(t);return pe({cache:this.caches.completeChat,model:e.model,config:e.config,messages:e.messages,tools:e.tools,enableCache:(n=(s=e.options)==null?void 0:s.enableCache)!=null?n:!0,callbacks:this.options.completeChatCallbacks,metadataForCallbacks:(o=e.options)==null?void 0:o.metadataForCallbacks},this.httpClient)})}streamChat(t){return q(this,null,function*(){var e,d;try{let r=se.parse(t);try{for(var s=k(fe({model:r.model,config:r.config,messages:r.messages,tools:r.tools,callbacks:this.options.streamChatCallbacks,metadataForCallbacks:(e=r.options)==null?void 0:e.metadataForCallbacks},this.httpClient)),n,o,p;n=!(o=yield new h(s.next())).done;n=!1){let c=o.value;yield c;}}catch(o){p=[o];}finally{try{n&&(o=s.return)&&(yield new h(o.call(s)));}finally{if(p)throw p[0]}}}catch(r){throw r instanceof f?r:new f(r==null?void 0:r.message,500,(d=r==null?void 0:r.response)==null?void 0:d.data)}})}getEmbeddings(t){return m(this,null,function*(){let e=B.parse(t);return new Promise((s,n)=>{let o={request:e,cache:this.caches.getEmbeddings,resolve:s,reject:n,execute:this.executeGetEmbeddingsTask.bind(this)};this.queues.getEmbeddings.enqueue(o);})})}executeGetEmbeddingsTask(t){return m(this,null,function*(){var s,n,o;let e=B.parse(t);return me({cache:this.caches.getEmbeddings,model:e.model,config:e.config,embeddingRequests:e.embeddingRequests,enableCache:(n=(s=e.options)==null?void 0:s.enableCache)!=null?n:!0,callbacks:this.options.getEmbeddingsCallbacks,metadataForCallbacks:(o=e.options)==null?void 0:o.metadataForCallbacks},this.httpClient)})}};K.GatewayError=f;
21
21
 
22
- exports.CompleteChatHandlerRequest = re;
23
- exports.CompleteChatHandlerResponse = Et;
24
- exports.Gateway = B;
22
+ exports.CompleteChatHandlerRequest = ie;
23
+ exports.CompleteChatHandlerResponse = Gt;
24
+ exports.Gateway = K;
25
25
  exports.GatewayError = f;
26
- exports.GetEmbeddingsHandlerRequest = ce;
27
- exports.GetEmbeddingsHandlerResponse = It;
26
+ exports.GetEmbeddingsHandlerRequest = de;
27
+ exports.GetEmbeddingsHandlerResponse = zt;
28
28
  exports.HttpClientError = H;
29
29
  exports.HttpRequestError = g;
30
30
  exports.IsomorphicHttpClient = j;
31
31
  exports.LRUCache = O;
32
- exports.QueueOptions = X;
32
+ exports.QueueOptions = Z;
33
33
  exports.QueueTaskTimeoutError = Q;
34
34
  exports.SimpleQueue = P;
35
- exports.StreamChatHandlerRequest = he;
36
- exports.StreamChatHandlerResponse = Zt;
37
- exports.handleCompleteChat = ie;
38
- exports.handleGetEmbeddings = de;
39
- exports.handleStreamChat = Ce;
35
+ exports.StreamChatHandlerRequest = Ce;
36
+ exports.StreamChatHandlerResponse = _t;
37
+ exports.handleCompleteChat = pe;
38
+ exports.handleGetEmbeddings = me;
39
+ exports.handleStreamChat = fe;
40
40
  //# sourceMappingURL=index.js.map
41
41
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors/errors.ts","../src/plugins/http-client/http-client.error.ts","../src/plugins/http-client/isomorphic.http-client.ts","../src/plugins/queue/queue.error.ts","../src/plugins/queue/queue.interface.ts","../src/utils/utils.ts","../src/plugins/queue/simple.queue.ts","../src/plugins/cache/lru.cache.ts","../src/gateway.types.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/gateway.ts"],"names":["GatewayError","_GatewayError","message","status","data","HttpClientErrorLiteral","HttpClientError","_HttpClientError","GatewayBaseError","info","cause","error","HttpRequestErrorLiteral","HttpRequestError","_HttpRequestError","headers","convertHeadersToRecord","headerRecord","key","value","axiosToHttpRequestError","_a","_b","_c","IsomorphicHttpClient","config","axiosInstance","timeoutInMilliseconds","axios","Timeout","z","ProxyAgent","_0","_1","_2","__async","method","url","dataOrParams","additionalConfig","__spreadProps","__spreadValues","resp","options","__asyncGenerator","response","__await","iter","__forAwait","more","temp","chunk","fetchConfig","text","reader","done","params","QueueTaskTimeoutErrorLiteral","QueueTaskTimeoutError","_QueueTaskTimeoutError","QueueOptions","castToError","err","isRunningInBrowser","logColors","verbose","level","action","args","debug","safelyInvokeCallbacks","callbacks","name","promises","callback","func","result","delay","ms","resolve","SimpleQueue","task","reject","timeout","retryRemaining","shouldRetry","delayMs","taskRequest","GatewayCompleteChatRequest","retryDelay","LRUCache","maxEntries","LRU","sha256","GatewayOptions","GatewayCompleteChatRequestOptions","Config","Message","Tool","GatewayStreamChatRequestOptions","GatewayStreamChatRequest","GatewayGetEmbeddingsRequestOptions","GatewayGetEmbeddingsRequest","EmbeddingRequests","CompleteChatHandlerRequest","CompleteChatHandlerResponse","ChatResponse","handleCompleteChat","request","client","providerData","providerRequest","cacheKey","cachedResponse","now","providerResponse","latencyInMs","safeError","GetEmbeddingsHandlerRequest","GetEmbeddingsHandlerResponse","EmbeddingResponse","handleGetEmbeddings","StreamChatHandlerRequest","StreamChatHandlerResponse","PartialChatResponse","handleStreamChat","stable","buffer","isFirstResponse","transformed","streamResponse","Gateway","_d","queueOptions"],"mappings":"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","file":"index.js","sourcesContent":["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 { GatewayBaseError } from \"@adaline/types\";\n\nconst HttpClientErrorLiteral = \"HttpClientError\" as const;\nclass HttpClientError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, HttpClientErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpClientError(error: unknown): error is HttpClientError {\n return error instanceof HttpClientError;\n }\n}\n\nconst HttpRequestErrorLiteral = \"HttpRequestError\" as const;\nclass HttpRequestError extends GatewayBaseError {\n readonly info: string;\n readonly cause: { \n status: number;\n headers: Record<string, string>;\n data: unknown;\n };\n\n constructor(message: string, status: number = 500, headers: Record<string, string>, data: unknown) {\n super({ info: message, cause: { status, headers, data } }, HttpRequestErrorLiteral);\n this.info = message;\n this.cause = { status, headers, data } ;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpRequestError(error: unknown): error is HttpRequestError {\n return error instanceof HttpRequestError;\n }\n}\n\nexport { HttpClientError, HttpRequestError };","import { HttpClientError, HttpRequestError } from \"./http-client.error\";\n\nimport { z } from \"zod\";\nimport { ProxyAgent } from \"proxy-agent\";\nimport axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\";\n\nimport { HttpClient, HttpClientResponse } from \"./http-client.interface\";\n\ninterface HttpClientConfig {\n timeoutInMilliseconds?: number;\n axiosInstance?: AxiosInstance;\n proxyUrl?: string;\n}\n\nconst convertHeadersToRecord = (headers: any): Record<string, string> => {\n const headerRecord: Record<string, string> = {};\n if (headers && (typeof headers === \"object\" || headers instanceof Headers)) {\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 axiosToHttpRequestError = (error: AxiosError): HttpRequestError => {\n const message = error?.message || \"An unexpected error occurred\";\n const status = error?.response?.status || 500;\n const headers = convertHeadersToRecord(error?.response?.headers) || {};\n const data = error?.response?.data || {};\n return new HttpRequestError(message, status, headers, data);\n};\n\nclass IsomorphicHttpClient implements HttpClient {\n private defaultTimeout?: number;\n private client: AxiosInstance;\n private httpProxyAgent?: ProxyAgent;\n private httpsProxyAgent?: ProxyAgent;\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 if (config.proxyUrl) {\n if (config.proxyUrl.startsWith(\"http://\")) {\n // TODO: check how to properly set this\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.HTTP_PROXY = config.proxyUrl;\n this.httpProxyAgent = new ProxyAgent();\n } else if (config.proxyUrl.startsWith(\"https://\")) {\n // TODO: check how to properly set this\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.HTTPS_PROXY = config.proxyUrl;\n this.httpsProxyAgent = new ProxyAgent({\n rejectUnauthorized: false, // Don't check SSL cert\n });\n } else {\n throw new HttpClientError({ \n info: \"Invalid proxy URL, only http and https proxies are supported\", \n cause: { proxyUrl: config.proxyUrl } \n });\n }\n }\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\n if (this.httpProxyAgent) {\n config.httpsAgent = this.httpProxyAgent;\n } else if (this.httpsProxyAgent) {\n config.httpsAgent = this.httpsProxyAgent;\n }\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 axiosToHttpRequestError(error);\n // \n // TODO: change error info to be more specific\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\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 // TODO: should streaming need proxy-agent?\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 HttpRequestError(\n `Request failed with status ${response.status}`,\n response.status,\n convertHeadersToRecord(response.headers),\n text\n );\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 // TODO: are there available headers in response? most likely not but check once\n throw new HttpRequestError(\"Cannot stream the body of the response.\", 500, {}, response);\n }\n }\n } catch (error: any) {\n // TODO: make errors in parity with complete-chat\n // TODO: fix errors for 400 bad requests -- can happen in various ways but actual HTTP error is not being thrown, some self reference problem\n if (HttpRequestError.isHttpRequestError(error)) throw error;\n if (error?.name === \"AbortError\") throw new HttpRequestError(\"AbortError\", 408, {}, {}); // TODO: need for headers, data?\n if (error?.name === \"CanceledError\") throw new HttpRequestError(\"AbortError\", 408, {}, {}); // TODO: need for headers, data?\n // TODO: how to convert non-axios errors to HttpRequestError for fetch aka browser environment\n if (axios.isAxiosError(error)) throw axiosToHttpRequestError(error);\n // TODO: change error info to be more specific\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\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}\n\nexport { IsomorphicHttpClient };\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst QueueTaskTimeoutErrorLiteral = \"QueueTaskTimeoutError\" as const;\nclass QueueTaskTimeoutError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, QueueTaskTimeoutErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isQueueTaskTimeoutError(error: unknown): error is QueueTaskTimeoutError {\n return error instanceof QueueTaskTimeoutError;\n }\n}\n\nexport { QueueTaskTimeoutError };\n","import { z } from \"zod\";\n\nimport { type Cache } from \"../cache\";\n\ntype QueueTask<Request, Response> = {\n request: Request;\n cache: Cache<Response>;\n resolve: (value: Response) => void;\n reject: (error: any) => void;\n execute: (request: Request) => Promise<Response>;\n};\n\ninterface Queue<Request, Response> {\n enqueue(task: QueueTask<Request, Response>): void;\n}\n\nconst QueueOptions = z.object({\n maxConcurrentTasks: z.number().int().positive(),\n retryCount: z.number().int().positive(),\n timeout: z.number().int().positive(),\n retry: z.object({\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n }),\n});\ntype QueueOptionsType = z.infer<typeof QueueOptions>;\n\nexport { \n QueueOptions,\n type Queue, \n type QueueOptionsType, \n type QueueTask \n};\n","import { GatewayError } from \"../errors/errors\";\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 isRunningInBrowser,\n safelyInvokeCallbacks,\n type Prettify,\n};\n","import { Queue, QueueOptionsType, QueueTask } from \"./queue.interface\";\nimport { QueueTaskTimeoutError } from \"./queue.error\";\nimport { GatewayCompleteChatRequest } from \"../../gateway.types\";\nimport { HttpRequestError } from \"./../http-client\";\nimport { delay } from \"../../utils\";\n\nclass SimpleQueue<Request, Response> implements Queue<Request, Response> {\n private options: QueueOptionsType;\n private activeTasks = 0;\n private queue: QueueTask<Request, Response>[] = [];\n\n constructor(options: QueueOptionsType) {\n this.options = options;\n }\n\n public enqueue(task: QueueTask<Request, Response>): void {\n this.queue.push(task);\n this.processQueue();\n }\n\n private withTimeout(task: QueueTask<Request, Response>): Promise<Response> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(\n new QueueTaskTimeoutError({ \n info: \"Queue task timeout\", \n cause: new Error(\"Queue task timeout\")\n })\n ),\n this.options.timeout\n );\n\n task\n .execute(task.request)\n .then((result) => {\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeout);\n reject(error);\n });\n });\n }\n\n private async executeWithRetry(task: QueueTask<Request, Response>, retryRemaining: number): Promise<Response> {\n try {\n return await this.withTimeout(task);\n } catch (error) {\n if (retryRemaining === 0) {\n throw error;\n }\n\n let shouldRetry = true;\n let delayMs =\n this.options.retry.initialDelay * Math.pow(this.options.retry.exponentialFactor, this.options.retryCount - retryRemaining);\n if (HttpRequestError.isHttpRequestError(error)) {\n // rate limiting error\n if (error.cause.status === 429) {\n const taskRequest = GatewayCompleteChatRequest.safeParse(task.request);\n if (taskRequest.success) {\n const retryDelay = taskRequest.data.model.getRetryDelay(error.cause.headers);\n shouldRetry = retryDelay.shouldRetry;\n // valid delayMs is returned from model\n if (retryDelay.delayMs > 0) {\n delayMs = retryDelay.delayMs;\n }\n }\n }\n\n if (error.cause.status >= 500 && error.cause.status < 600) {\n // implement retry logic for 500 errors\n // else defaults to exponential backoff\n }\n } else {\n // implement retry logic for non http-request errors\n // else defaults to exponential backoff\n }\n\n if (!shouldRetry) {\n throw error;\n } else {\n await delay(delayMs);\n return this.executeWithRetry(task, retryRemaining - 1);\n }\n }\n }\n\n private async processQueue() {\n if (this.activeTasks >= this.options.maxConcurrentTasks) return;\n\n const task = this.queue.shift();\n if (!task) return;\n\n this.activeTasks += 1;\n\n try {\n const response: Response = await this.executeWithRetry(task, this.options.retryCount);\n task.resolve(response);\n } catch (error) {\n task.reject(error);\n } finally {\n this.activeTasks -= 1;\n this.processQueue();\n }\n }\n}\n\nexport { SimpleQueue };\n","import { LRUCache as LRU } from \"lru-cache\";\nimport sha256 from \"crypto-js/sha256.js\";\n\nimport { type Cache } from \"./cache.interface\";\n\nclass LRUCache<T extends object> implements Cache<T> {\n private cache: LRU<string, T>;\n\n constructor(maxEntries: number = 1000) {\n this.cache = new LRU<string, T>({ \n max: maxEntries,\n allowStale: false,\n updateAgeOnGet: false,\n });\n }\n\n getCacheKey(data: any): string {\n return sha256(`${data.prefix}:${data.url}:${data.modelName}:${JSON.stringify(data.data)}`).toString();\n }\n\n async get(key: string): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n resolve(this.cache.get(key));\n });\n }\n\n async set(key: string, value: T): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.set(key, value);\n resolve();\n });\n }\n\n async delete(key: string): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.delete(key);\n resolve();\n });\n }\n\n async clear(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.clear();\n resolve();\n });\n }\n}\n\nexport { LRUCache, type Cache };","import { z } from \"zod\";\n\nimport { ChatModelV1, EmbeddingModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, EmbeddingRequests } from \"@adaline/types\";\n\nimport { HttpClient, Cache, QueueOptions } from \"./plugins\";\nimport { \n CompleteChatHandlerResponseType, \n GetEmbeddingsHandlerResponseType, \n CompleteChatCallbackType, \n StreamChatCallbackType,\n GetEmbeddingsCallbackType,\n} from \"./handlers\";\n\n// TODO: add caller provided queue(s)\nconst GatewayOptions = z.object({\n queueOptions: QueueOptions.partial().optional(),\n dangerouslyAllowBrowser: z.boolean().optional(),\n httpClient: z.custom<HttpClient>().optional(),\n completeChatCache: z.custom<Cache<CompleteChatHandlerResponseType>>().optional(),\n completeChatCallbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n getEmbeddingsCache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>().optional(),\n getEmbeddingsCallbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n streamChatCallbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n});\ntype GatewayOptionsType = z.infer<typeof GatewayOptions>;\n\nconst GatewayCompleteChatRequestOptions = z.object({\n enableCache: z.boolean().optional().default(true),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayCompleteChatRequestOptionsType = z.infer<typeof GatewayCompleteChatRequestOptions>;\n\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 metadataForCallbacks: z.any().optional(),\n});\ntype GatewayStreamChatRequestOptionsType = z.infer<typeof GatewayStreamChatRequestOptions>;\n\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 enableCache: z.boolean().optional().default(true),\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 GatewayCompleteChatRequestType,\n type GatewayCompleteChatRequestOptionsType,\n type GatewayStreamChatRequestType,\n type GatewayStreamChatRequestOptionsType,\n type GatewayGetEmbeddingsRequestType,\n type GatewayGetEmbeddingsRequestOptionsType,\n};","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, ChatResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError, Cache } from \"../../plugins\";\n\nconst CompleteChatHandlerRequest = z.object({\n cache: z.custom<Cache<CompleteChatHandlerResponseType>>(),\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n enableCache: z.boolean(),\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 request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: ChatResponse,\n cached: z.boolean(),\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 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 // TODO: which other errors should we handle?\n onChatError?: (metadata?: M, error?: GatewayError | HttpRequestError) => 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, HttpRequestError } from \"../../plugins\";\nimport { castToError, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerRequest,\n CompleteChatHandlerRequestType,\n CompleteChatHandlerResponseType,\n} from \"./complete-chat.types\";\n\nasync function handleCompleteChat(request: CompleteChatHandlerRequestType, client: HttpClient): Promise<CompleteChatHandlerResponseType> {\n const data = CompleteChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n\n try {\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n const providerRequest = {\n url: await data.model.getCompleteChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getCompleteChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getCompleteChatData(data.config, data.messages, data.tools),\n };\n\n const cacheKey = request.cache.getCacheKey({\n prefix: \"complete-chat\",\n url: providerRequest.url,\n modelName: data.model.modelSchema.name,\n data: providerData,\n });\n if (data.enableCache) {\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n return cachedResponse;\n }\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: providerData,\n response: data.model.transformCompleteChatResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\n }\n\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n // TODO: maybe handle other types of errors from model object ?\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else 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, EmbeddingResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError, Cache } from \"../../plugins\";\n\nconst GetEmbeddingsHandlerRequest = z.object({\n cache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>(),\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n enableCache: z.boolean(),\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: EmbeddingResponse,\n cached: z.boolean(),\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 // TODO: which other errors should we handle?\n onGetEmbeddingsError?: (metadata?: M, error?: GatewayError | HttpRequestError) => 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, HttpRequestError } 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 try {\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n };\n\n const providerRequest = {\n url: await data.model.getGetEmbeddingsUrl(data.config, data.embeddingRequests),\n headers: await data.model.getGetEmbeddingsHeaders(data.config, data.embeddingRequests),\n data: await data.model.getGetEmbeddingsData(data.config, data.embeddingRequests),\n };\n\n const cacheKey = request.cache.getCacheKey({\n prefix: \"get-embeddings\",\n url: providerRequest.url,\n modelName: data.model.modelSchema.name,\n data: providerData,\n });\n if (data.enableCache) {\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n return cachedResponse;\n }\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: providerData,\n response: data.model.transformGetEmbeddingsResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\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 // TODO: maybe handle other types of errors from model object ?\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else 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, PartialChatResponse } 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: PartialChatResponse,\n metadataForCallbacks: z.any().optional(),\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: await data.model.getStreamChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getStreamChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getStreamChatData(data.config, data.messages, data.tools),\n };\n\n let buffer = \"\";\n let isFirstResponse = true;\n for await (\n const chunk of client.stream(\n providerRequest.url, \n \"post\", \n providerRequest.data, \n providerRequest.headers\n )\n ) {\n for await (const transformed of data.model.transformStreamChatResponseChunk(chunk as string, buffer)) {\n // if (transformed.partialResponse.partialMessages.length > 0) {\n const streamResponse = {\n request: stable,\n response: transformed.partialResponse,\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 { GatewayError } from \"./errors\";\nimport {\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestType,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestType,\n GatewayOptions,\n GatewayOptionsType,\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, Cache, LRUCache, Queue, QueueTask, SimpleQueue } from \"./plugins\";\nimport { isRunningInBrowser } from \"./utils\";\n\nclass Gateway {\n private options: GatewayOptionsType;\n private httpClient: HttpClient;\n private queues: {\n completeChat: Queue<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType>;\n getEmbeddings: Queue<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType>;\n };\n private caches: {\n completeChat: Cache<CompleteChatHandlerResponseType>;\n getEmbeddings: Cache<GetEmbeddingsHandlerResponseType>;\n };\n\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 const queueOptions = {\n maxConcurrentTasks: this.options.queueOptions?.maxConcurrentTasks || 4,\n retryCount: this.options.queueOptions?.retryCount || 3,\n retry: this.options.queueOptions?.retry || {\n initialDelay: 1000,\n exponentialFactor: 2,\n },\n timeout: this.options.queueOptions?.timeout || 90000,\n };\n\n // TODO: different queueOptions for each queue ?\n this.queues = {\n completeChat: new SimpleQueue(queueOptions),\n getEmbeddings: new SimpleQueue(queueOptions),\n };\n\n // TODO: current implementation is that httpClient timeout is 90% of queue timeout, make it configurable ?\n // TODO: different httpClient for each queue ?\n this.httpClient = options.httpClient || new IsomorphicHttpClient({ timeoutInMilliseconds: (queueOptions.timeout * 0.90) });\n\n this.caches = {\n completeChat: options.completeChatCache || new LRUCache<CompleteChatHandlerResponseType>(),\n getEmbeddings: options.getEmbeddingsCache || new LRUCache<GetEmbeddingsHandlerResponseType>(),\n };\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 // cache: this.caches.completeChat,\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 completeChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return new Promise<CompleteChatHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType> = {\n request: data,\n cache: this.caches.completeChat,\n resolve,\n reject,\n execute: this.executeCompleteChat.bind(this),\n };\n this.queues.completeChat.enqueue(task);\n });\n }\n\n private async executeCompleteChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return handleCompleteChat(\n {\n cache: this.caches.completeChat,\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.completeChatCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\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.streamChatCallbacks,\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 async getEmbeddings(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return new Promise<GetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType> = {\n request: data,\n cache: this.caches.getEmbeddings,\n resolve,\n reject,\n execute: this.executeGetEmbeddingsTask.bind(this),\n };\n this.queues.getEmbeddings.enqueue(task);\n });\n }\n\n private async executeGetEmbeddingsTask(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return handleGetEmbeddings(\n {\n cache: this.caches.getEmbeddings,\n model: data.model,\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.getEmbeddingsCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\n );\n }\n\n static GatewayError = GatewayError;\n}\n\nexport { Gateway, type GatewayOptionsType };\n"]}
1
+ {"version":3,"sources":["../src/errors/errors.ts","../src/plugins/http-client/http-client.error.ts","../src/plugins/http-client/isomorphic.http-client.ts","../src/plugins/queue/queue.error.ts","../src/plugins/queue/queue.interface.ts","../src/utils/utils.ts","../src/plugins/queue/simple.queue.ts","../src/plugins/cache/lru.cache.ts","../src/gateway.types.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/gateway.ts"],"names":["GatewayError","_GatewayError","message","status","data","HttpClientErrorLiteral","HttpClientError","_HttpClientError","GatewayBaseError","info","cause","error","HttpRequestErrorLiteral","HttpRequestError","_HttpRequestError","headers","convertHeadersToRecord","headerRecord","key","value","axiosToHttpRequestError","_a","_b","_c","IsomorphicHttpClient","config","axiosInstance","timeoutInMilliseconds","axios","Timeout","z","ProxyAgent","_0","_1","_2","__async","method","url","dataOrParams","additionalConfig","__spreadProps","__spreadValues","resp","options","__asyncGenerator","response","__await","iter","__forAwait","more","temp","chunk","fetchConfig","text","reader","done","params","QueueTaskTimeoutErrorLiteral","QueueTaskTimeoutError","_QueueTaskTimeoutError","QueueOptions","getCacheKeyHash","prefix","object","sha256","castToError","err","isRunningInBrowser","logColors","verbose","level","action","args","debug","safelyInvokeCallbacks","callbacks","name","promises","callback","func","result","delay","ms","resolve","SimpleQueue","task","reject","timeout","retryRemaining","shouldRetry","delayMs","taskRequest","GatewayCompleteChatRequest","retryDelay","LRUCache","maxEntries","LRU","GatewayOptions","GatewayCompleteChatRequestOptions","Config","Message","Tool","GatewayStreamChatRequestOptions","GatewayStreamChatRequest","GatewayGetEmbeddingsRequestOptions","GatewayGetEmbeddingsRequest","EmbeddingRequests","CompleteChatHandlerRequest","CompleteChatHandlerResponse","ChatResponse","handleCompleteChat","request","client","providerData","providerRequest","cacheKey","cachedResponse","now","providerResponse","latencyInMs","safeError","GetEmbeddingsHandlerRequest","GetEmbeddingsHandlerResponse","EmbeddingResponse","handleGetEmbeddings","StreamChatHandlerRequest","StreamChatHandlerResponse","PartialChatResponse","handleStreamChat","stable","buffer","isFirstResponse","transformed","streamResponse","Gateway","_d","queueOptions"],"mappings":"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","file":"index.js","sourcesContent":["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 { GatewayBaseError } from \"@adaline/types\";\n\nconst HttpClientErrorLiteral = \"HttpClientError\" as const;\nclass HttpClientError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, HttpClientErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpClientError(error: unknown): error is HttpClientError {\n return error instanceof HttpClientError;\n }\n}\n\nconst HttpRequestErrorLiteral = \"HttpRequestError\" as const;\nclass HttpRequestError extends GatewayBaseError {\n readonly info: string;\n readonly cause: { \n status: number;\n headers: Record<string, string>;\n data: unknown;\n };\n\n constructor(message: string, status: number = 500, headers: Record<string, string>, data: unknown) {\n super({ info: message, cause: { status, headers, data } }, HttpRequestErrorLiteral);\n this.info = message;\n this.cause = { status, headers, data } ;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpRequestError(error: unknown): error is HttpRequestError {\n return error instanceof HttpRequestError;\n }\n}\n\nexport { HttpClientError, HttpRequestError };","import { HttpClientError, HttpRequestError } from \"./http-client.error\";\n\nimport { z } from \"zod\";\nimport { ProxyAgent } from \"proxy-agent\";\nimport axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\";\n\nimport { HttpClient, HttpClientResponse } from \"./http-client.interface\";\n\ninterface HttpClientConfig {\n timeoutInMilliseconds?: number;\n axiosInstance?: AxiosInstance;\n proxyUrl?: string;\n}\n\nconst convertHeadersToRecord = (headers: any): Record<string, string> => {\n const headerRecord: Record<string, string> = {};\n if (headers && (typeof headers === \"object\" || headers instanceof Headers)) {\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 axiosToHttpRequestError = (error: AxiosError): HttpRequestError => {\n const message = error?.message || \"An unexpected error occurred\";\n const status = error?.response?.status || 500;\n const headers = convertHeadersToRecord(error?.response?.headers) || {};\n const data = error?.response?.data || {};\n return new HttpRequestError(message, status, headers, data);\n};\n\nclass IsomorphicHttpClient implements HttpClient {\n private defaultTimeout?: number;\n private client: AxiosInstance;\n private httpProxyAgent?: ProxyAgent;\n private httpsProxyAgent?: ProxyAgent;\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 if (config.proxyUrl) {\n if (config.proxyUrl.startsWith(\"http://\")) {\n // TODO: check how to properly set this\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.HTTP_PROXY = config.proxyUrl;\n this.httpProxyAgent = new ProxyAgent();\n } else if (config.proxyUrl.startsWith(\"https://\")) {\n // TODO: check how to properly set this\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.HTTPS_PROXY = config.proxyUrl;\n this.httpsProxyAgent = new ProxyAgent({\n rejectUnauthorized: false, // Don't check SSL cert\n });\n } else {\n throw new HttpClientError({ \n info: \"Invalid proxy URL, only http and https proxies are supported\", \n cause: { proxyUrl: config.proxyUrl } \n });\n }\n }\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\n if (this.httpProxyAgent) {\n config.httpsAgent = this.httpProxyAgent;\n } else if (this.httpsProxyAgent) {\n config.httpsAgent = this.httpsProxyAgent;\n }\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 axiosToHttpRequestError(error);\n // \n // TODO: change error info to be more specific\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\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 // TODO: should streaming need proxy-agent?\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 HttpRequestError(\n `Request failed with status ${response.status}`,\n response.status,\n convertHeadersToRecord(response.headers),\n text\n );\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 // TODO: are there available headers in response? most likely not but check once\n throw new HttpRequestError(\"Cannot stream the body of the response.\", 500, {}, response);\n }\n }\n } catch (error: any) {\n // TODO: make errors in parity with complete-chat\n // TODO: fix errors for 400 bad requests -- can happen in various ways but actual HTTP error is not being thrown, some self reference problem\n if (HttpRequestError.isHttpRequestError(error)) throw error;\n if (error?.name === \"AbortError\") throw new HttpRequestError(\"AbortError\", 408, {}, {}); // TODO: need for headers, data?\n if (error?.name === \"CanceledError\") throw new HttpRequestError(\"AbortError\", 408, {}, {}); // TODO: need for headers, data?\n // TODO: how to convert non-axios errors to HttpRequestError for fetch aka browser environment\n if (axios.isAxiosError(error)) throw axiosToHttpRequestError(error);\n // TODO: change error info to be more specific\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\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}\n\nexport { IsomorphicHttpClient };\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst QueueTaskTimeoutErrorLiteral = \"QueueTaskTimeoutError\" as const;\nclass QueueTaskTimeoutError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, QueueTaskTimeoutErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isQueueTaskTimeoutError(error: unknown): error is QueueTaskTimeoutError {\n return error instanceof QueueTaskTimeoutError;\n }\n}\n\nexport { QueueTaskTimeoutError };\n","import { z } from \"zod\";\n\nimport { type Cache } from \"../cache\";\n\ntype QueueTask<Request, Response> = {\n request: Request;\n cache: Cache<Response>;\n resolve: (value: Response) => void;\n reject: (error: any) => void;\n execute: (request: Request) => Promise<Response>;\n};\n\ninterface Queue<Request, Response> {\n enqueue(task: QueueTask<Request, Response>): void;\n}\n\nconst QueueOptions = z.object({\n maxConcurrentTasks: z.number().int().positive(),\n retryCount: z.number().int().positive(),\n timeout: z.number().int().positive(),\n retry: z.object({\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n }),\n});\ntype QueueOptionsType = z.infer<typeof QueueOptions>;\n\nexport { \n QueueOptions,\n type Queue, \n type QueueOptionsType, \n type QueueTask \n};\n","import sha256 from \"crypto-js/sha256.js\";\n\nimport { GatewayError } from \"../errors/errors\";\n\nconst getCacheKeyHash = (prefix: string, object: object): string => {\n return sha256(prefix + 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 getCacheKeyHash,\n isRunningInBrowser,\n safelyInvokeCallbacks,\n type Prettify,\n};\n","import { Queue, QueueOptionsType, QueueTask } from \"./queue.interface\";\nimport { QueueTaskTimeoutError } from \"./queue.error\";\nimport { GatewayCompleteChatRequest } from \"../../gateway.types\";\nimport { HttpRequestError } from \"./../http-client\";\nimport { delay } from \"../../utils\";\n\nclass SimpleQueue<Request, Response> implements Queue<Request, Response> {\n private options: QueueOptionsType;\n private activeTasks = 0;\n private queue: QueueTask<Request, Response>[] = [];\n\n constructor(options: QueueOptionsType) {\n this.options = options;\n }\n\n public enqueue(task: QueueTask<Request, Response>): void {\n this.queue.push(task);\n this.processQueue();\n }\n\n private withTimeout(task: QueueTask<Request, Response>): Promise<Response> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(\n new QueueTaskTimeoutError({ \n info: \"Queue task timeout\", \n cause: new Error(\"Queue task timeout\")\n })\n ),\n this.options.timeout\n );\n\n task\n .execute(task.request)\n .then((result) => {\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeout);\n reject(error);\n });\n });\n }\n\n private async executeWithRetry(task: QueueTask<Request, Response>, retryRemaining: number): Promise<Response> {\n try {\n return await this.withTimeout(task);\n } catch (error) {\n if (retryRemaining === 0) {\n throw error;\n }\n\n let shouldRetry = true;\n let delayMs =\n this.options.retry.initialDelay * Math.pow(this.options.retry.exponentialFactor, this.options.retryCount - retryRemaining);\n if (HttpRequestError.isHttpRequestError(error)) {\n // rate limiting error\n if (error.cause.status === 429) {\n const taskRequest = GatewayCompleteChatRequest.safeParse(task.request);\n if (taskRequest.success) {\n const retryDelay = taskRequest.data.model.getRetryDelay(error.cause.headers);\n shouldRetry = retryDelay.shouldRetry;\n // valid delayMs is returned from model\n if (retryDelay.delayMs > 0) {\n delayMs = retryDelay.delayMs;\n }\n }\n }\n\n if (error.cause.status >= 500 && error.cause.status < 600) {\n // implement retry logic for 500 errors\n // else defaults to exponential backoff\n }\n } else {\n // implement retry logic for non http-request errors\n // else defaults to exponential backoff\n }\n\n if (!shouldRetry) {\n throw error;\n } else {\n await delay(delayMs);\n return this.executeWithRetry(task, retryRemaining - 1);\n }\n }\n }\n\n private async processQueue() {\n if (this.activeTasks >= this.options.maxConcurrentTasks) return;\n\n const task = this.queue.shift();\n if (!task) return;\n\n this.activeTasks += 1;\n\n try {\n const response: Response = await this.executeWithRetry(task, this.options.retryCount);\n task.resolve(response);\n } catch (error) {\n task.reject(error);\n } finally {\n this.activeTasks -= 1;\n this.processQueue();\n }\n }\n}\n\nexport { SimpleQueue };\n","import { LRUCache as LRU } from \"lru-cache\";\n\nimport { type Cache } from \"./cache.interface\";\n\nclass LRUCache<T extends object> implements Cache<T> {\n private cache: LRU<string, T>;\n\n constructor(maxEntries: number = 1000) {\n this.cache = new LRU<string, T>({ \n max: maxEntries,\n allowStale: false,\n updateAgeOnGet: false,\n });\n }\n\n async get(key: string): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n resolve(this.cache.get(key));\n });\n }\n\n async set(key: string, value: T): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.set(key, value);\n resolve();\n });\n }\n\n async delete(key: string): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.delete(key);\n resolve();\n });\n }\n\n async clear(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.clear();\n resolve();\n });\n }\n}\n\nexport { LRUCache, type Cache };","import { z } from \"zod\";\n\nimport { ChatModelV1, EmbeddingModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, EmbeddingRequests } from \"@adaline/types\";\n\nimport { HttpClient, Cache, QueueOptions } from \"./plugins\";\nimport { \n CompleteChatHandlerResponseType, \n GetEmbeddingsHandlerResponseType, \n CompleteChatCallbackType, \n StreamChatCallbackType,\n GetEmbeddingsCallbackType,\n} from \"./handlers\";\n\n// TODO: add caller provided queue(s)\nconst GatewayOptions = z.object({\n queueOptions: QueueOptions.partial().optional(),\n dangerouslyAllowBrowser: z.boolean().optional(),\n httpClient: z.custom<HttpClient>().optional(),\n completeChatCache: z.custom<Cache<CompleteChatHandlerResponseType>>().optional(),\n completeChatCallbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n getEmbeddingsCache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>().optional(),\n getEmbeddingsCallbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n streamChatCallbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n});\ntype GatewayOptionsType = z.infer<typeof GatewayOptions>;\n\nconst GatewayCompleteChatRequestOptions = z.object({\n enableCache: z.boolean().optional().default(true),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayCompleteChatRequestOptionsType = z.infer<typeof GatewayCompleteChatRequestOptions>;\n\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 metadataForCallbacks: z.any().optional(),\n});\ntype GatewayStreamChatRequestOptionsType = z.infer<typeof GatewayStreamChatRequestOptions>;\n\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 enableCache: z.boolean().optional().default(true),\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 GatewayCompleteChatRequestType,\n type GatewayCompleteChatRequestOptionsType,\n type GatewayStreamChatRequestType,\n type GatewayStreamChatRequestOptionsType,\n type GatewayGetEmbeddingsRequestType,\n type GatewayGetEmbeddingsRequestOptionsType,\n};","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, ChatResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError, Cache } from \"../../plugins\";\n\nconst CompleteChatHandlerRequest = z.object({\n cache: z.custom<Cache<CompleteChatHandlerResponseType>>(),\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n enableCache: z.boolean(),\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 request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: ChatResponse,\n cached: z.boolean(),\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 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 // TODO: which other errors should we handle?\n onChatError?: (metadata?: M, error?: GatewayError | HttpRequestError) => 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, HttpRequestError } from \"../../plugins\";\nimport { castToError, getCacheKeyHash, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerRequest,\n CompleteChatHandlerRequestType,\n CompleteChatHandlerResponseType,\n} from \"./complete-chat.types\";\n\nasync function handleCompleteChat(request: CompleteChatHandlerRequestType, client: HttpClient): Promise<CompleteChatHandlerResponseType> {\n const data = CompleteChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n\n try {\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n const providerRequest = {\n url: await data.model.getCompleteChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getCompleteChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getCompleteChatData(data.config, data.messages, data.tools),\n };\n\n const cacheKey = getCacheKeyHash(`complete-chat:${providerRequest.url}:${data.model.modelSchema.name}`, providerData);\n if (data.enableCache) {\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n return cachedResponse;\n }\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: providerData,\n response: data.model.transformCompleteChatResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\n }\n\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n // TODO: maybe handle other types of errors from model object ?\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else 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, EmbeddingResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError, Cache } from \"../../plugins\";\n\nconst GetEmbeddingsHandlerRequest = z.object({\n cache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>(),\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n enableCache: z.boolean(),\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: EmbeddingResponse,\n cached: z.boolean(),\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 // TODO: which other errors should we handle?\n onGetEmbeddingsError?: (metadata?: M, error?: GatewayError | HttpRequestError) => 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, HttpRequestError } from \"../../plugins\";\nimport { castToError, getCacheKeyHash, 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 try {\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n };\n\n const providerRequest = {\n url: await data.model.getGetEmbeddingsUrl(data.config, data.embeddingRequests),\n headers: await data.model.getGetEmbeddingsHeaders(data.config, data.embeddingRequests),\n data: await data.model.getGetEmbeddingsData(data.config, data.embeddingRequests),\n };\n\n const cacheKey = getCacheKeyHash(`get-embeddings:${providerRequest.url}:${data.model.modelSchema.name}`, providerData);\n if (data.enableCache) {\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n return cachedResponse;\n }\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: providerData,\n response: data.model.transformGetEmbeddingsResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\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 // TODO: maybe handle other types of errors from model object ?\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else 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, PartialChatResponse } 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: PartialChatResponse,\n metadataForCallbacks: z.any().optional(),\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: await data.model.getStreamChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getStreamChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getStreamChatData(data.config, data.messages, data.tools),\n };\n\n let buffer = \"\";\n let isFirstResponse = true;\n for await (\n const chunk of client.stream(\n providerRequest.url, \n \"post\", \n providerRequest.data, \n providerRequest.headers\n )\n ) {\n for await (const transformed of data.model.transformStreamChatResponseChunk(chunk as string, buffer)) {\n // if (transformed.partialResponse.partialMessages.length > 0) {\n const streamResponse = {\n request: stable,\n response: transformed.partialResponse,\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 { GatewayError } from \"./errors\";\nimport {\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestType,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestType,\n GatewayOptions,\n GatewayOptionsType,\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, Cache, LRUCache, Queue, QueueTask, SimpleQueue } from \"./plugins\";\nimport { isRunningInBrowser } from \"./utils\";\n\nclass Gateway {\n private options: GatewayOptionsType;\n private httpClient: HttpClient;\n private queues: {\n completeChat: Queue<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType>;\n getEmbeddings: Queue<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType>;\n };\n private caches: {\n completeChat: Cache<CompleteChatHandlerResponseType>;\n getEmbeddings: Cache<GetEmbeddingsHandlerResponseType>;\n };\n\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 const queueOptions = {\n maxConcurrentTasks: this.options.queueOptions?.maxConcurrentTasks || 4,\n retryCount: this.options.queueOptions?.retryCount || 3,\n retry: this.options.queueOptions?.retry || {\n initialDelay: 1000,\n exponentialFactor: 2,\n },\n timeout: this.options.queueOptions?.timeout || 90000,\n };\n\n // TODO: different queueOptions for each queue ?\n this.queues = {\n completeChat: new SimpleQueue(queueOptions),\n getEmbeddings: new SimpleQueue(queueOptions),\n };\n\n // TODO: current implementation is that httpClient timeout is 90% of queue timeout, make it configurable ?\n // TODO: different httpClient for each queue ?\n this.httpClient = options.httpClient || new IsomorphicHttpClient({ timeoutInMilliseconds: (queueOptions.timeout * 0.90) });\n\n this.caches = {\n completeChat: options.completeChatCache || new LRUCache<CompleteChatHandlerResponseType>(),\n getEmbeddings: options.getEmbeddingsCache || new LRUCache<GetEmbeddingsHandlerResponseType>(),\n };\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 // cache: this.caches.completeChat,\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 completeChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return new Promise<CompleteChatHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType> = {\n request: data,\n cache: this.caches.completeChat,\n resolve,\n reject,\n execute: this.executeCompleteChat.bind(this),\n };\n this.queues.completeChat.enqueue(task);\n });\n }\n\n private async executeCompleteChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return handleCompleteChat(\n {\n cache: this.caches.completeChat,\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.completeChatCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\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.streamChatCallbacks,\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 async getEmbeddings(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return new Promise<GetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType> = {\n request: data,\n cache: this.caches.getEmbeddings,\n resolve,\n reject,\n execute: this.executeGetEmbeddingsTask.bind(this),\n };\n this.queues.getEmbeddings.enqueue(task);\n });\n }\n\n private async executeGetEmbeddingsTask(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return handleGetEmbeddings(\n {\n cache: this.caches.getEmbeddings,\n model: data.model,\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.getEmbeddingsCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\n );\n }\n\n static GatewayError = GatewayError;\n}\n\nexport { Gateway, type GatewayOptionsType };\n"]}
package/dist/index.mjs CHANGED
@@ -1,17 +1,17 @@
1
- import { z as z$1 } from 'zod';
1
+ import { z } from 'zod';
2
2
  import { Config, Message, Tool, EmbeddingRequests, ChatResponse, EmbeddingResponse, PartialChatResponse, GatewayBaseError } from '@adaline/types';
3
3
  import { ProxyAgent } from 'proxy-agent';
4
- import U from 'axios';
4
+ import V from 'axios';
5
+ import xe from 'crypto-js/sha256.js';
5
6
  import { LRUCache } from 'lru-cache';
6
- import Me from 'crypto-js/sha256.js';
7
7
 
8
- var ge=Object.defineProperty,be=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var Te=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var z=(a,t)=>(t=Symbol[a])?t:Symbol.for("Symbol."+a);var $=(a,t,e)=>t in a?ge(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,x=(a,t)=>{for(var e in t||(t={}))Te.call(t,e)&&$(a,e,t[e]);if(N)for(var e of N(t))we.call(t,e)&&$(a,e,t[e]);return a},D=(a,t)=>be(a,Re(t));var m=(a,t,e)=>new Promise((o,n)=>{var s=r=>{try{d(e.next(r));}catch(c){n(c);}},p=r=>{try{d(e.throw(r));}catch(c){n(c);}},d=r=>r.done?o(r.value):Promise.resolve(r.value).then(s,p);d((e=e.apply(a,t)).next());}),h=function(a,t){this[0]=a,this[1]=t;},q=(a,t,e)=>{var o=(p,d,r,c)=>{try{var i=e[p](d),u=(d=i.value)instanceof h,G=i.done;Promise.resolve(u?d[0]:d).then(y=>u?o(p==="return"?p:"next",d[1]?{done:y.done,value:y.value}:y,r,c):r({value:y,done:G})).catch(y=>o("throw",y,r,c));}catch(y){c(y);}},n=p=>s[p]=d=>new Promise((r,c)=>o(p,d,r,c)),s={};return e=e.apply(a,t),s[z("asyncIterator")]=()=>s,n("next"),n("throw"),n("return"),s};var k=(a,t,e)=>(t=a[z("asyncIterator")])?t.call(a):(a=a[z("iterator")](),t={},e=(o,n)=>(n=a[o])&&(t[o]=s=>new Promise((p,d,r)=>(s=n.call(a,s),r=s.done,Promise.resolve(s.value).then(c=>p({value:c,done:r}),d)))),e("next"),e("return"),t);var f=class a extends Error{constructor(t,e=500,o){super(t),this.name="GatewayError",this.status=e,this.data=o,Error.captureStackTrace&&Error.captureStackTrace(this,a);}};var ke="HttpClientError",H=class a extends GatewayBaseError{constructor({info:t,cause:e}){super({info:t,cause:e},ke),this.info=t,this.cause=e,Object.setPrototypeOf(this,new.target.prototype);}static isHttpClientError(t){return t instanceof a}},Ee="HttpRequestError",g=class a extends GatewayBaseError{constructor(t,e=500,o,n){super({info:t,cause:{status:e,headers:o,data:n}},Ee),this.info=t,this.cause={status:e,headers:o,data:n},Object.setPrototypeOf(this,new.target.prototype);}static isHttpRequestError(t){return t instanceof a}};var F=a=>{let t={};return a&&(typeof a=="object"||a instanceof Headers)&&Object.entries(a).forEach(([e,o])=>{Array.isArray(o)?t[e]=o.join(", "):typeof o=="string"?t[e]=o:t[e]="";}),t},J=a=>{var s,p,d;let t=(a==null?void 0:a.message)||"An unexpected error occurred",e=((s=a==null?void 0:a.response)==null?void 0:s.status)||500,o=F((p=a==null?void 0:a.response)==null?void 0:p.headers)||{},n=((d=a==null?void 0:a.response)==null?void 0:d.data)||{};return new g(t,e,o,n)},j=class{constructor(t){this.isNodeEnvironment=()=>typeof process!="undefined"&&process.versions!=null&&process.versions.node!=null;let{axiosInstance:e,timeoutInMilliseconds:o}=t;this.client=e||U.create();let n=z$1.number().int().positive().optional();if(this.defaultTimeout=n.parse(o),this.client.defaults.timeout=this.defaultTimeout,t.proxyUrl)if(t.proxyUrl.startsWith("http://"))process.env.HTTP_PROXY=t.proxyUrl,this.httpProxyAgent=new ProxyAgent;else if(t.proxyUrl.startsWith("https://"))process.env.HTTPS_PROXY=t.proxyUrl,this.httpsProxyAgent=new ProxyAgent({rejectUnauthorized:!1});else throw new H({info:"Invalid proxy URL, only http and https proxies are supported",cause:{proxyUrl:t.proxyUrl}})}makeRequest(p,d,r){return m(this,arguments,function*(t,e,o,n={},s){try{let c=D(x(x({},t==="get"||t==="delete"?{params:o}:{data:o}),n),{timeout:s||this.defaultTimeout});if(this.httpProxyAgent?c.httpsAgent=this.httpProxyAgent:this.httpsProxyAgent&&(c.httpsAgent=this.httpsProxyAgent),t==="get"||t==="delete"){let i=yield this.client[t](e,c);return {data:i.data,headers:F(i.headers),status:{code:i.status,text:i.statusText}}}else {let i=yield this.client[t](e,c.data,D(x({},c),{params:c.params}));return {data:i.data,headers:F(i.headers),status:{code:i.status,text:i.statusText}}}}catch(c){throw U.isAxiosError(c)?J(c):new H({info:"An unexpected error occurred",cause:c})}})}stream(t,e,o,n,s){return q(this,null,function*(){try{if(this.isNodeEnvironment()){let i=yield new h(this.client.request({method:e,url:t,headers:n,data:o,responseType:"stream",signal:s==null?void 0:s.abortSignal}));try{for(var p=k(i.data),d,r,c;d=!(r=yield new h(p.next())).done;d=!1){let u=r.value;yield u.toString();}}catch(r){c=[r];}finally{try{d&&(r=p.return)&&(yield new h(r.call(p)));}finally{if(c)throw c[0]}}}else {let i={method:e,headers:new Headers(x({},n)),body:e!=="get"?JSON.stringify(o):void 0,signal:s==null?void 0:s.abortSignal},u=yield new h(fetch(t,i));if(!u.ok){let G=yield new h(u.json());throw new g(`Request failed with status ${u.status}`,u.status,F(u.headers),G)}if(u.body){let G=u.body.getReader();for(;;){let{done:y,value:w}=yield new h(G.read());if(y){yield new TextDecoder().decode(w,{stream:!0});break}yield new TextDecoder().decode(w,{stream:!0});}}else throw new g("Cannot stream the body of the response.",500,{},u)}}catch(i){throw g.isHttpRequestError(i)?i:(i==null?void 0:i.name)==="AbortError"?new g("AbortError",408,{},{}):(i==null?void 0:i.name)==="CanceledError"?new g("AbortError",408,{},{}):U.isAxiosError(i)?J(i):new H({info:"An unexpected error occurred",cause:i})}})}get(t,e,o){return m(this,null,function*(){return this.makeRequest("get",t,e||{},{headers:o})})}post(t,e,o){return m(this,null,function*(){return this.makeRequest("post",t,e||{},{headers:o})})}put(t,e,o){return m(this,null,function*(){return this.makeRequest("put",t,e||{},{headers:o})})}delete(t,e,o){return m(this,null,function*(){return this.makeRequest("delete",t,e||{},{headers:o})})}patch(t,e,o){return m(this,null,function*(){return this.makeRequest("patch",t,e||{},{headers:o})})}};var He="QueueTaskTimeoutError",Q=class a extends GatewayBaseError{constructor({info:t,cause:e}){super({info:t,cause:e},He),this.info=t,this.cause=e,Object.setPrototypeOf(this,new.target.prototype);}static isQueueTaskTimeoutError(t){return t instanceof a}};var X=z$1.object({maxConcurrentTasks:z$1.number().int().positive(),retryCount:z$1.number().int().positive(),timeout:z$1.number().int().positive(),retry:z$1.object({initialDelay:z$1.number().int().positive(),exponentialFactor:z$1.number().int().positive()})});var v=a=>a instanceof f?a:a instanceof Error?new f(a.message):new f(a),S=()=>typeof window!="undefined"&&typeof window.document!="undefined"&&typeof navigator!="undefined";var ve={error:"color: red",warn:"color: yellow",info:"color: green"},xe=(a,t,...e)=>{if(S())S()&&console.log(`%c[${a.toUpperCase()}] [${t}]`,ve[a],...e);else switch(a){case"error":console.error(...e);break;case"warn":console.warn(...e);break;default:console.log(...e);}},Se=(a,t,...e)=>{var o;S()||((o=process==null?void 0:process.env)==null?void 0:o.DEBUG)==="true"&&xe(a,t,...e);},b=(a,t,...e)=>m(void 0,null,function*(){let o=[];a.forEach(n=>{let s=n[t];if(typeof s=="function")try{let p=s(...e);p instanceof Promise&&o.push(p);}catch(p){Se("error",`SAFELY_INVOKE_CALLBACKS:${String(t)}:`,p);}}),yield Promise.allSettled(o);}),Z=a=>new Promise(t=>setTimeout(t,a));var P=class{constructor(t){this.activeTasks=0;this.queue=[];this.options=t;}enqueue(t){this.queue.push(t),this.processQueue();}withTimeout(t){return new Promise((e,o)=>{let n=setTimeout(()=>o(new Q({info:"Queue task timeout",cause:new Error("Queue task timeout")})),this.options.timeout);t.execute(t.request).then(s=>{clearTimeout(n),e(s);}).catch(s=>{clearTimeout(n),o(s);});})}executeWithRetry(t,e){return m(this,null,function*(){try{return yield this.withTimeout(t)}catch(o){if(e===0)throw o;let n=!0,s=this.options.retry.initialDelay*Math.pow(this.options.retry.exponentialFactor,this.options.retryCount-e);if(g.isHttpRequestError(o)){if(o.cause.status===429){let p=M.safeParse(t.request);if(p.success){let d=p.data.model.getRetryDelay(o.cause.headers);n=d.shouldRetry,d.delayMs>0&&(s=d.delayMs);}}o.cause.status>=500&&o.cause.status<600;}if(n)return yield Z(s),this.executeWithRetry(t,e-1);throw o}})}processQueue(){return m(this,null,function*(){if(this.activeTasks>=this.options.maxConcurrentTasks)return;let t=this.queue.shift();if(t){this.activeTasks+=1;try{let e=yield this.executeWithRetry(t,this.options.retryCount);t.resolve(e);}catch(e){t.reject(e);}finally{this.activeTasks-=1,this.processQueue();}}})}};var O=class{constructor(t=1e3){this.cache=new LRUCache({max:t,allowStale:!1,updateAgeOnGet:!1});}getCacheKey(t){return Me(`${t.prefix}:${t.url}:${t.modelName}:${JSON.stringify(t.data)}`).toString()}get(t){return m(this,null,function*(){return new Promise((e,o)=>{e(this.cache.get(t));})})}set(t,e){return m(this,null,function*(){return new Promise((o,n)=>{this.cache.set(t,e),o();})})}delete(t){return m(this,null,function*(){return new Promise((e,o)=>{this.cache.delete(t),e();})})}clear(){return m(this,null,function*(){return new Promise((t,e)=>{this.cache.clear(),t();})})}};var te=z$1.object({queueOptions:X.partial().optional(),dangerouslyAllowBrowser:z$1.boolean().optional(),httpClient:z$1.custom().optional(),completeChatCache:z$1.custom().optional(),completeChatCallbacks:z$1.array(z$1.custom()).nonempty().optional(),getEmbeddingsCache:z$1.custom().optional(),getEmbeddingsCallbacks:z$1.array(z$1.custom()).nonempty().optional(),streamChatCallbacks:z$1.array(z$1.custom()).nonempty().optional()}),Ae=z$1.object({enableCache:z$1.boolean().optional().default(!0),metadataForCallbacks:z$1.any().optional()}),M=z$1.object({model:z$1.custom(),config:Config(),messages:z$1.array(Message()),tools:z$1.array(Tool()).optional(),options:Ae.optional()}),Fe=z$1.object({metadataForCallbacks:z$1.any().optional()}),ae=z$1.object({model:z$1.custom(),config:Config(),messages:z$1.array(Message()),tools:z$1.array(Tool()).optional(),options:Fe.optional()}),je=z$1.object({enableCache:z$1.boolean().optional().default(!0),metadataForCallbacks:z$1.any().optional()}),L=z$1.object({model:z$1.custom(),config:Config(),embeddingRequests:EmbeddingRequests(),options:je.optional()});var re=z$1.object({cache:z$1.custom(),model:z$1.custom(),config:Config(),messages:z$1.array(Message()),tools:z$1.array(Tool()).optional(),enableCache:z$1.boolean(),callbacks:z$1.array(z$1.custom()).nonempty().optional(),metadataForCallbacks:z$1.any().optional()}),Et=z$1.object({request:z$1.object({config:Config(),messages:z$1.array(Message()),tools:z$1.array(Tool()).optional()}),response:ChatResponse,cached:z$1.boolean(),latencyInMs:z$1.number().int().positive(),metadataForCallbacks:z$1.any().optional(),provider:z$1.object({request:z$1.any(),response:z$1.any()})});function ie(a,t){return m(this,null,function*(){let e=re.parse(a),o=a.callbacks||[];try{b(o,"onChatStart",a.metadataForCallbacks);let n={config:e.config,messages:e.messages,tools:e.tools},s={url:yield e.model.getCompleteChatUrl(e.config,e.messages,e.tools),headers:yield e.model.getCompleteChatHeaders(e.config,e.messages,e.tools),data:yield e.model.getCompleteChatData(e.config,e.messages,e.tools)},p=a.cache.getCacheKey({prefix:"complete-chat",url:s.url,modelName:e.model.modelSchema.name,data:n});if(e.enableCache){let u=yield a.cache.get(p);if(u)return u.cached=!0,b(o,"onChatCached",a.metadataForCallbacks,u),u}let d=Date.now(),r=yield t.post(s.url,s.data,s.headers),c=Date.now()-d,i={request:n,response:e.model.transformCompleteChatResponse(r.data),cached:!1,latencyInMs:c,metadataForCallbacks:a.metadataForCallbacks,provider:{request:s,response:r}};return e.enableCache&&(yield a.cache.set(p,i)),b(o,"onChatComplete",a.metadataForCallbacks,i),i}catch(n){let s;throw g.isHttpRequestError(n)||n instanceof f?s=n:s=v(n),b(o,"onChatError",a.metadataForCallbacks,s),s}})}var ce=z$1.object({cache:z$1.custom(),model:z$1.custom(),config:Config(),embeddingRequests:EmbeddingRequests(),enableCache:z$1.boolean(),callbacks:z$1.array(z$1.custom()).nonempty().optional(),metadataForCallbacks:z$1.any().optional()}),It=z$1.object({request:z$1.object({config:Config(),embeddingRequests:EmbeddingRequests()}),response:EmbeddingResponse,cached:z$1.boolean(),latencyInMs:z$1.number().int().positive(),metadataForCallbacks:z$1.any().optional(),provider:z$1.object({request:z$1.any(),response:z$1.any()})});function de(a,t){return m(this,null,function*(){let e=ce.parse(a),o=a.callbacks||[];try{b(o,"onGetEmbeddingsStart",a.metadataForCallbacks);let n={config:e.config,embeddingRequests:e.embeddingRequests},s={url:yield e.model.getGetEmbeddingsUrl(e.config,e.embeddingRequests),headers:yield e.model.getGetEmbeddingsHeaders(e.config,e.embeddingRequests),data:yield e.model.getGetEmbeddingsData(e.config,e.embeddingRequests)},p=a.cache.getCacheKey({prefix:"get-embeddings",url:s.url,modelName:e.model.modelSchema.name,data:n});if(e.enableCache){let u=yield a.cache.get(p);if(u)return u.cached=!0,b(o,"onGetEmbeddingsCached",a.metadataForCallbacks,u),u}let d=Date.now(),r=yield t.post(s.url,s.data,s.headers),c=Date.now()-d,i={request:n,response:e.model.transformGetEmbeddingsResponse(r.data),cached:!1,latencyInMs:c,metadataForCallbacks:a.metadataForCallbacks,provider:{request:s,response:r}};return e.enableCache&&(yield a.cache.set(p,i)),b(o,"onGetEmbeddingsComplete",a.metadataForCallbacks,i),i}catch(n){let s;throw g.isHttpRequestError(n)||n instanceof f?s=n:s=v(n),b(o,"onGetEmbeddingsError",a.metadataForCallbacks,s),s}})}var he=z$1.object({model:z$1.custom(),config:Config(),messages:z$1.array(Message()),tools:z$1.array(Tool()).optional(),callbacks:z$1.array(z$1.custom()).nonempty().optional(),metadataForCallbacks:z$1.any().optional()}),Zt=z$1.object({request:z$1.object({config:Config(),messages:z$1.array(Message()),tools:z$1.array(Tool()).optional()}),response:PartialChatResponse,metadataForCallbacks:z$1.any().optional(),provider:z$1.object({request:z$1.any(),response:z$1.any()})});function Ce(a,t){return q(this,null,function*(){let e=he.parse(a),o=a.callbacks||[],n={config:e.config,messages:e.messages,tools:e.tools};try{b(o,"onStreamStart",a.metadataForCallbacks);let y={url:yield new h(e.model.getStreamChatUrl(e.config,e.messages,e.tools)),headers:yield new h(e.model.getStreamChatHeaders(e.config,e.messages,e.tools)),data:yield new h(e.model.getStreamChatData(e.config,e.messages,e.tools))},w="",A=!0;try{for(var c=k(t.stream(y.url,"post",y.data,y.headers)),i,u,G;i=!(u=yield new h(c.next())).done;i=!1){let I=u.value;try{for(var s=k(e.model.transformStreamChatResponseChunk(I,w)),p,d,r;p=!(d=yield new h(s.next())).done;p=!1){let fe=d.value;let K={request:n,response:fe.partialResponse,metadataForCallbacks:a.metadataForCallbacks,provider:{request:y,response:I}};b(o,A?"onStreamFirstResponse":"onStreamNewResponse",a.metadataForCallbacks,K),A&&(A=!1),yield K;}}catch(d){r=[d];}finally{try{p&&(d=s.return)&&(yield new h(d.call(s)));}finally{if(r)throw r[0]}}}}catch(u){G=[u];}finally{try{i&&(u=c.return)&&(yield new h(u.call(c)));}finally{if(G)throw G[0]}}b(o,"onStreamEnd",a.metadataForCallbacks);}catch(y){let w;throw y instanceof f?w=y:w=v(y),b(o,"onStreamError",a.metadataForCallbacks,w),w}})}var B=class{constructor(t){var o,n,s,p;if(!t.dangerouslyAllowBrowser&&S())throw new f(`It looks like you're running in a browser-like environment.
8
+ var be=Object.defineProperty,Re=Object.defineProperties;var Te=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var we=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable;var D=(a,t)=>(t=Symbol[a])?t:Symbol.for("Symbol."+a);var W=(a,t,e)=>t in a?be(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,x=(a,t)=>{for(var e in t||(t={}))we.call(t,e)&&W(a,e,t[e]);if(N)for(var e of N(t))ke.call(t,e)&&W(a,e,t[e]);return a},U=(a,t)=>Re(a,Te(t));var m=(a,t,e)=>new Promise((s,n)=>{var o=r=>{try{d(e.next(r));}catch(c){n(c);}},p=r=>{try{d(e.throw(r));}catch(c){n(c);}},d=r=>r.done?s(r.value):Promise.resolve(r.value).then(o,p);d((e=e.apply(a,t)).next());}),h=function(a,t){this[0]=a,this[1]=t;},q=(a,t,e)=>{var s=(p,d,r,c)=>{try{var i=e[p](d),u=(d=i.value)instanceof h,G=i.done;Promise.resolve(u?d[0]:d).then(y=>u?s(p==="return"?p:"next",d[1]?{done:y.done,value:y.value}:y,r,c):r({value:y,done:G})).catch(y=>s("throw",y,r,c));}catch(y){c(y);}},n=p=>o[p]=d=>new Promise((r,c)=>s(p,d,r,c)),o={};return e=e.apply(a,t),o[D("asyncIterator")]=()=>o,n("next"),n("throw"),n("return"),o};var k=(a,t,e)=>(t=a[D("asyncIterator")])?t.call(a):(a=a[D("iterator")](),t={},e=(s,n)=>(n=a[s])&&(t[s]=o=>new Promise((p,d,r)=>(o=n.call(a,o),r=o.done,Promise.resolve(o.value).then(c=>p({value:c,done:r}),d)))),e("next"),e("return"),t);var f=class a extends Error{constructor(t,e=500,s){super(t),this.name="GatewayError",this.status=e,this.data=s,Error.captureStackTrace&&Error.captureStackTrace(this,a);}};var Ee="HttpClientError",H=class a extends GatewayBaseError{constructor({info:t,cause:e}){super({info:t,cause:e},Ee),this.info=t,this.cause=e,Object.setPrototypeOf(this,new.target.prototype);}static isHttpClientError(t){return t instanceof a}},Ge="HttpRequestError",g=class a extends GatewayBaseError{constructor(t,e=500,s,n){super({info:t,cause:{status:e,headers:s,data:n}},Ge),this.info=t,this.cause={status:e,headers:s,data:n},Object.setPrototypeOf(this,new.target.prototype);}static isHttpRequestError(t){return t instanceof a}};var F=a=>{let t={};return a&&(typeof a=="object"||a instanceof Headers)&&Object.entries(a).forEach(([e,s])=>{Array.isArray(s)?t[e]=s.join(", "):typeof s=="string"?t[e]=s:t[e]="";}),t},X=a=>{var o,p,d;let t=(a==null?void 0:a.message)||"An unexpected error occurred",e=((o=a==null?void 0:a.response)==null?void 0:o.status)||500,s=F((p=a==null?void 0:a.response)==null?void 0:p.headers)||{},n=((d=a==null?void 0:a.response)==null?void 0:d.data)||{};return new g(t,e,s,n)},j=class{constructor(t){this.isNodeEnvironment=()=>typeof process!="undefined"&&process.versions!=null&&process.versions.node!=null;let{axiosInstance:e,timeoutInMilliseconds:s}=t;this.client=e||V.create();let n=z.number().int().positive().optional();if(this.defaultTimeout=n.parse(s),this.client.defaults.timeout=this.defaultTimeout,t.proxyUrl)if(t.proxyUrl.startsWith("http://"))process.env.HTTP_PROXY=t.proxyUrl,this.httpProxyAgent=new ProxyAgent;else if(t.proxyUrl.startsWith("https://"))process.env.HTTPS_PROXY=t.proxyUrl,this.httpsProxyAgent=new ProxyAgent({rejectUnauthorized:!1});else throw new H({info:"Invalid proxy URL, only http and https proxies are supported",cause:{proxyUrl:t.proxyUrl}})}makeRequest(p,d,r){return m(this,arguments,function*(t,e,s,n={},o){try{let c=U(x(x({},t==="get"||t==="delete"?{params:s}:{data:s}),n),{timeout:o||this.defaultTimeout});if(this.httpProxyAgent?c.httpsAgent=this.httpProxyAgent:this.httpsProxyAgent&&(c.httpsAgent=this.httpsProxyAgent),t==="get"||t==="delete"){let i=yield this.client[t](e,c);return {data:i.data,headers:F(i.headers),status:{code:i.status,text:i.statusText}}}else {let i=yield this.client[t](e,c.data,U(x({},c),{params:c.params}));return {data:i.data,headers:F(i.headers),status:{code:i.status,text:i.statusText}}}}catch(c){throw V.isAxiosError(c)?X(c):new H({info:"An unexpected error occurred",cause:c})}})}stream(t,e,s,n,o){return q(this,null,function*(){try{if(this.isNodeEnvironment()){let i=yield new h(this.client.request({method:e,url:t,headers:n,data:s,responseType:"stream",signal:o==null?void 0:o.abortSignal}));try{for(var p=k(i.data),d,r,c;d=!(r=yield new h(p.next())).done;d=!1){let u=r.value;yield u.toString();}}catch(r){c=[r];}finally{try{d&&(r=p.return)&&(yield new h(r.call(p)));}finally{if(c)throw c[0]}}}else {let i={method:e,headers:new Headers(x({},n)),body:e!=="get"?JSON.stringify(s):void 0,signal:o==null?void 0:o.abortSignal},u=yield new h(fetch(t,i));if(!u.ok){let G=yield new h(u.json());throw new g(`Request failed with status ${u.status}`,u.status,F(u.headers),G)}if(u.body){let G=u.body.getReader();for(;;){let{done:y,value:w}=yield new h(G.read());if(y){yield new TextDecoder().decode(w,{stream:!0});break}yield new TextDecoder().decode(w,{stream:!0});}}else throw new g("Cannot stream the body of the response.",500,{},u)}}catch(i){throw g.isHttpRequestError(i)?i:(i==null?void 0:i.name)==="AbortError"?new g("AbortError",408,{},{}):(i==null?void 0:i.name)==="CanceledError"?new g("AbortError",408,{},{}):V.isAxiosError(i)?X(i):new H({info:"An unexpected error occurred",cause:i})}})}get(t,e,s){return m(this,null,function*(){return this.makeRequest("get",t,e||{},{headers:s})})}post(t,e,s){return m(this,null,function*(){return this.makeRequest("post",t,e||{},{headers:s})})}put(t,e,s){return m(this,null,function*(){return this.makeRequest("put",t,e||{},{headers:s})})}delete(t,e,s){return m(this,null,function*(){return this.makeRequest("delete",t,e||{},{headers:s})})}patch(t,e,s){return m(this,null,function*(){return this.makeRequest("patch",t,e||{},{headers:s})})}};var ve="QueueTaskTimeoutError",Q=class a extends GatewayBaseError{constructor({info:t,cause:e}){super({info:t,cause:e},ve),this.info=t,this.cause=e,Object.setPrototypeOf(this,new.target.prototype);}static isQueueTaskTimeoutError(t){return t instanceof a}};var Z=z.object({maxConcurrentTasks:z.number().int().positive(),retryCount:z.number().int().positive(),timeout:z.number().int().positive(),retry:z.object({initialDelay:z.number().int().positive(),exponentialFactor:z.number().int().positive()})});var I=(a,t)=>xe(a+JSON.stringify(t)).toString(),v=a=>a instanceof f?a:a instanceof Error?new f(a.message):new f(a),S=()=>typeof window!="undefined"&&typeof window.document!="undefined"&&typeof navigator!="undefined";var Se={error:"color: red",warn:"color: yellow",info:"color: green"},Pe=(a,t,...e)=>{if(S())S()&&console.log(`%c[${a.toUpperCase()}] [${t}]`,Se[a],...e);else switch(a){case"error":console.error(...e);break;case"warn":console.warn(...e);break;default:console.log(...e);}},Me=(a,t,...e)=>{var s;S()||((s=process==null?void 0:process.env)==null?void 0:s.DEBUG)==="true"&&Pe(a,t,...e);},b=(a,t,...e)=>m(void 0,null,function*(){let s=[];a.forEach(n=>{let o=n[t];if(typeof o=="function")try{let p=o(...e);p instanceof Promise&&s.push(p);}catch(p){Me("error",`SAFELY_INVOKE_CALLBACKS:${String(t)}:`,p);}}),yield Promise.allSettled(s);}),_=a=>new Promise(t=>setTimeout(t,a));var P=class{constructor(t){this.activeTasks=0;this.queue=[];this.options=t;}enqueue(t){this.queue.push(t),this.processQueue();}withTimeout(t){return new Promise((e,s)=>{let n=setTimeout(()=>s(new Q({info:"Queue task timeout",cause:new Error("Queue task timeout")})),this.options.timeout);t.execute(t.request).then(o=>{clearTimeout(n),e(o);}).catch(o=>{clearTimeout(n),s(o);});})}executeWithRetry(t,e){return m(this,null,function*(){try{return yield this.withTimeout(t)}catch(s){if(e===0)throw s;let n=!0,o=this.options.retry.initialDelay*Math.pow(this.options.retry.exponentialFactor,this.options.retryCount-e);if(g.isHttpRequestError(s)){if(s.cause.status===429){let p=M.safeParse(t.request);if(p.success){let d=p.data.model.getRetryDelay(s.cause.headers);n=d.shouldRetry,d.delayMs>0&&(o=d.delayMs);}}s.cause.status>=500&&s.cause.status<600;}if(n)return yield _(o),this.executeWithRetry(t,e-1);throw s}})}processQueue(){return m(this,null,function*(){if(this.activeTasks>=this.options.maxConcurrentTasks)return;let t=this.queue.shift();if(t){this.activeTasks+=1;try{let e=yield this.executeWithRetry(t,this.options.retryCount);t.resolve(e);}catch(e){t.reject(e);}finally{this.activeTasks-=1,this.processQueue();}}})}};var O=class{constructor(t=1e3){this.cache=new LRUCache({max:t,allowStale:!1,updateAgeOnGet:!1});}get(t){return m(this,null,function*(){return new Promise((e,s)=>{e(this.cache.get(t));})})}set(t,e){return m(this,null,function*(){return new Promise((s,n)=>{this.cache.set(t,e),s();})})}delete(t){return m(this,null,function*(){return new Promise((e,s)=>{this.cache.delete(t),e();})})}clear(){return m(this,null,function*(){return new Promise((t,e)=>{this.cache.clear(),t();})})}};var ae=z.object({queueOptions:Z.partial().optional(),dangerouslyAllowBrowser:z.boolean().optional(),httpClient:z.custom().optional(),completeChatCache:z.custom().optional(),completeChatCallbacks:z.array(z.custom()).nonempty().optional(),getEmbeddingsCache:z.custom().optional(),getEmbeddingsCallbacks:z.array(z.custom()).nonempty().optional(),streamChatCallbacks:z.array(z.custom()).nonempty().optional()}),Fe=z.object({enableCache:z.boolean().optional().default(!0),metadataForCallbacks:z.any().optional()}),M=z.object({model:z.custom(),config:Config(),messages:z.array(Message()),tools:z.array(Tool()).optional(),options:Fe.optional()}),je=z.object({metadataForCallbacks:z.any().optional()}),se=z.object({model:z.custom(),config:Config(),messages:z.array(Message()),tools:z.array(Tool()).optional(),options:je.optional()}),Qe=z.object({enableCache:z.boolean().optional().default(!0),metadataForCallbacks:z.any().optional()}),B=z.object({model:z.custom(),config:Config(),embeddingRequests:EmbeddingRequests(),options:Qe.optional()});var ie=z.object({cache:z.custom(),model:z.custom(),config:Config(),messages:z.array(Message()),tools:z.array(Tool()).optional(),enableCache:z.boolean(),callbacks:z.array(z.custom()).nonempty().optional(),metadataForCallbacks:z.any().optional()}),Gt=z.object({request:z.object({config:Config(),messages:z.array(Message()),tools:z.array(Tool()).optional()}),response:ChatResponse,cached:z.boolean(),latencyInMs:z.number().int().positive(),metadataForCallbacks:z.any().optional(),provider:z.object({request:z.any(),response:z.any()})});function pe(a,t){return m(this,null,function*(){let e=ie.parse(a),s=a.callbacks||[];try{b(s,"onChatStart",a.metadataForCallbacks);let n={config:e.config,messages:e.messages,tools:e.tools},o={url:yield e.model.getCompleteChatUrl(e.config,e.messages,e.tools),headers:yield e.model.getCompleteChatHeaders(e.config,e.messages,e.tools),data:yield e.model.getCompleteChatData(e.config,e.messages,e.tools)},p=I(`complete-chat:${o.url}:${e.model.modelSchema.name}`,n);if(e.enableCache){let u=yield a.cache.get(p);if(u)return u.cached=!0,b(s,"onChatCached",a.metadataForCallbacks,u),u}let d=Date.now(),r=yield t.post(o.url,o.data,o.headers),c=Date.now()-d,i={request:n,response:e.model.transformCompleteChatResponse(r.data),cached:!1,latencyInMs:c,metadataForCallbacks:a.metadataForCallbacks,provider:{request:o,response:r}};return e.enableCache&&(yield a.cache.set(p,i)),b(s,"onChatComplete",a.metadataForCallbacks,i),i}catch(n){let o;throw g.isHttpRequestError(n)||n instanceof f?o=n:o=v(n),b(s,"onChatError",a.metadataForCallbacks,o),o}})}var de=z.object({cache:z.custom(),model:z.custom(),config:Config(),embeddingRequests:EmbeddingRequests(),enableCache:z.boolean(),callbacks:z.array(z.custom()).nonempty().optional(),metadataForCallbacks:z.any().optional()}),zt=z.object({request:z.object({config:Config(),embeddingRequests:EmbeddingRequests()}),response:EmbeddingResponse,cached:z.boolean(),latencyInMs:z.number().int().positive(),metadataForCallbacks:z.any().optional(),provider:z.object({request:z.any(),response:z.any()})});function me(a,t){return m(this,null,function*(){let e=de.parse(a),s=a.callbacks||[];try{b(s,"onGetEmbeddingsStart",a.metadataForCallbacks);let n={config:e.config,embeddingRequests:e.embeddingRequests},o={url:yield e.model.getGetEmbeddingsUrl(e.config,e.embeddingRequests),headers:yield e.model.getGetEmbeddingsHeaders(e.config,e.embeddingRequests),data:yield e.model.getGetEmbeddingsData(e.config,e.embeddingRequests)},p=I(`get-embeddings:${o.url}:${e.model.modelSchema.name}`,n);if(e.enableCache){let u=yield a.cache.get(p);if(u)return u.cached=!0,b(s,"onGetEmbeddingsCached",a.metadataForCallbacks,u),u}let d=Date.now(),r=yield t.post(o.url,o.data,o.headers),c=Date.now()-d,i={request:n,response:e.model.transformGetEmbeddingsResponse(r.data),cached:!1,latencyInMs:c,metadataForCallbacks:a.metadataForCallbacks,provider:{request:o,response:r}};return e.enableCache&&(yield a.cache.set(p,i)),b(s,"onGetEmbeddingsComplete",a.metadataForCallbacks,i),i}catch(n){let o;throw g.isHttpRequestError(n)||n instanceof f?o=n:o=v(n),b(s,"onGetEmbeddingsError",a.metadataForCallbacks,o),o}})}var Ce=z.object({model:z.custom(),config:Config(),messages:z.array(Message()),tools:z.array(Tool()).optional(),callbacks:z.array(z.custom()).nonempty().optional(),metadataForCallbacks:z.any().optional()}),_t=z.object({request:z.object({config:Config(),messages:z.array(Message()),tools:z.array(Tool()).optional()}),response:PartialChatResponse,metadataForCallbacks:z.any().optional(),provider:z.object({request:z.any(),response:z.any()})});function fe(a,t){return q(this,null,function*(){let e=Ce.parse(a),s=a.callbacks||[],n={config:e.config,messages:e.messages,tools:e.tools};try{b(s,"onStreamStart",a.metadataForCallbacks);let y={url:yield new h(e.model.getStreamChatUrl(e.config,e.messages,e.tools)),headers:yield new h(e.model.getStreamChatHeaders(e.config,e.messages,e.tools)),data:yield new h(e.model.getStreamChatData(e.config,e.messages,e.tools))},w="",A=!0;try{for(var c=k(t.stream(y.url,"post",y.data,y.headers)),i,u,G;i=!(u=yield new h(c.next())).done;i=!1){let z=u.value;try{for(var o=k(e.model.transformStreamChatResponseChunk(z,w)),p,d,r;p=!(d=yield new h(o.next())).done;p=!1){let ge=d.value;let $={request:n,response:ge.partialResponse,metadataForCallbacks:a.metadataForCallbacks,provider:{request:y,response:z}};b(s,A?"onStreamFirstResponse":"onStreamNewResponse",a.metadataForCallbacks,$),A&&(A=!1),yield $;}}catch(d){r=[d];}finally{try{p&&(d=o.return)&&(yield new h(d.call(o)));}finally{if(r)throw r[0]}}}}catch(u){G=[u];}finally{try{i&&(u=c.return)&&(yield new h(u.call(c)));}finally{if(G)throw G[0]}}b(s,"onStreamEnd",a.metadataForCallbacks);}catch(y){let w;throw y instanceof f?w=y:w=v(y),b(s,"onStreamError",a.metadataForCallbacks,w),w}})}var K=class{constructor(t){var s,n,o,p;if(!t.dangerouslyAllowBrowser&&S())throw new f(`It looks like you're running in a browser-like environment.
9
9
 
10
10
  This is disabled by default, as it risks exposing your provider secrets to attackers.
11
11
  If you understand the risks and have appropriate mitigation in place,
12
12
  you can set the \`dangerouslyAllowBrowser\` option to \`true\`.
13
- `);this.options=te.parse(t);let e={maxConcurrentTasks:((o=this.options.queueOptions)==null?void 0:o.maxConcurrentTasks)||4,retryCount:((n=this.options.queueOptions)==null?void 0:n.retryCount)||3,retry:((s=this.options.queueOptions)==null?void 0:s.retry)||{initialDelay:1e3,exponentialFactor:2},timeout:((p=this.options.queueOptions)==null?void 0:p.timeout)||9e4};this.queues={completeChat:new P(e),getEmbeddings:new P(e)},this.httpClient=t.httpClient||new j({timeoutInMilliseconds:e.timeout*.9}),this.caches={completeChat:t.completeChatCache||new O,getEmbeddings:t.getEmbeddingsCache||new O};}completeChat(t){return m(this,null,function*(){let e=M.parse(t);return new Promise((o,n)=>{let s={request:e,cache:this.caches.completeChat,resolve:o,reject:n,execute:this.executeCompleteChat.bind(this)};this.queues.completeChat.enqueue(s);})})}executeCompleteChat(t){return m(this,null,function*(){var o,n,s;let e=M.parse(t);return ie({cache:this.caches.completeChat,model:e.model,config:e.config,messages:e.messages,tools:e.tools,enableCache:(n=(o=e.options)==null?void 0:o.enableCache)!=null?n:!0,callbacks:this.options.completeChatCallbacks,metadataForCallbacks:(s=e.options)==null?void 0:s.metadataForCallbacks},this.httpClient)})}streamChat(t){return q(this,null,function*(){var e,d;try{let r=ae.parse(t);try{for(var o=k(Ce({model:r.model,config:r.config,messages:r.messages,tools:r.tools,callbacks:this.options.streamChatCallbacks,metadataForCallbacks:(e=r.options)==null?void 0:e.metadataForCallbacks},this.httpClient)),n,s,p;n=!(s=yield new h(o.next())).done;n=!1){let c=s.value;yield c;}}catch(s){p=[s];}finally{try{n&&(s=o.return)&&(yield new h(s.call(o)));}finally{if(p)throw p[0]}}}catch(r){throw r instanceof f?r:new f(r==null?void 0:r.message,500,(d=r==null?void 0:r.response)==null?void 0:d.data)}})}getEmbeddings(t){return m(this,null,function*(){let e=L.parse(t);return new Promise((o,n)=>{let s={request:e,cache:this.caches.getEmbeddings,resolve:o,reject:n,execute:this.executeGetEmbeddingsTask.bind(this)};this.queues.getEmbeddings.enqueue(s);})})}executeGetEmbeddingsTask(t){return m(this,null,function*(){var o,n,s;let e=L.parse(t);return de({cache:this.caches.getEmbeddings,model:e.model,config:e.config,embeddingRequests:e.embeddingRequests,enableCache:(n=(o=e.options)==null?void 0:o.enableCache)!=null?n:!0,callbacks:this.options.getEmbeddingsCallbacks,metadataForCallbacks:(s=e.options)==null?void 0:s.metadataForCallbacks},this.httpClient)})}};B.GatewayError=f;
13
+ `);this.options=ae.parse(t);let e={maxConcurrentTasks:((s=this.options.queueOptions)==null?void 0:s.maxConcurrentTasks)||4,retryCount:((n=this.options.queueOptions)==null?void 0:n.retryCount)||3,retry:((o=this.options.queueOptions)==null?void 0:o.retry)||{initialDelay:1e3,exponentialFactor:2},timeout:((p=this.options.queueOptions)==null?void 0:p.timeout)||9e4};this.queues={completeChat:new P(e),getEmbeddings:new P(e)},this.httpClient=t.httpClient||new j({timeoutInMilliseconds:e.timeout*.9}),this.caches={completeChat:t.completeChatCache||new O,getEmbeddings:t.getEmbeddingsCache||new O};}completeChat(t){return m(this,null,function*(){let e=M.parse(t);return new Promise((s,n)=>{let o={request:e,cache:this.caches.completeChat,resolve:s,reject:n,execute:this.executeCompleteChat.bind(this)};this.queues.completeChat.enqueue(o);})})}executeCompleteChat(t){return m(this,null,function*(){var s,n,o;let e=M.parse(t);return pe({cache:this.caches.completeChat,model:e.model,config:e.config,messages:e.messages,tools:e.tools,enableCache:(n=(s=e.options)==null?void 0:s.enableCache)!=null?n:!0,callbacks:this.options.completeChatCallbacks,metadataForCallbacks:(o=e.options)==null?void 0:o.metadataForCallbacks},this.httpClient)})}streamChat(t){return q(this,null,function*(){var e,d;try{let r=se.parse(t);try{for(var s=k(fe({model:r.model,config:r.config,messages:r.messages,tools:r.tools,callbacks:this.options.streamChatCallbacks,metadataForCallbacks:(e=r.options)==null?void 0:e.metadataForCallbacks},this.httpClient)),n,o,p;n=!(o=yield new h(s.next())).done;n=!1){let c=o.value;yield c;}}catch(o){p=[o];}finally{try{n&&(o=s.return)&&(yield new h(o.call(s)));}finally{if(p)throw p[0]}}}catch(r){throw r instanceof f?r:new f(r==null?void 0:r.message,500,(d=r==null?void 0:r.response)==null?void 0:d.data)}})}getEmbeddings(t){return m(this,null,function*(){let e=B.parse(t);return new Promise((s,n)=>{let o={request:e,cache:this.caches.getEmbeddings,resolve:s,reject:n,execute:this.executeGetEmbeddingsTask.bind(this)};this.queues.getEmbeddings.enqueue(o);})})}executeGetEmbeddingsTask(t){return m(this,null,function*(){var s,n,o;let e=B.parse(t);return me({cache:this.caches.getEmbeddings,model:e.model,config:e.config,embeddingRequests:e.embeddingRequests,enableCache:(n=(s=e.options)==null?void 0:s.enableCache)!=null?n:!0,callbacks:this.options.getEmbeddingsCallbacks,metadataForCallbacks:(o=e.options)==null?void 0:o.metadataForCallbacks},this.httpClient)})}};K.GatewayError=f;
14
14
 
15
- export { re as CompleteChatHandlerRequest, Et as CompleteChatHandlerResponse, B as Gateway, f as GatewayError, ce as GetEmbeddingsHandlerRequest, It as GetEmbeddingsHandlerResponse, H as HttpClientError, g as HttpRequestError, j as IsomorphicHttpClient, O as LRUCache, X as QueueOptions, Q as QueueTaskTimeoutError, P as SimpleQueue, he as StreamChatHandlerRequest, Zt as StreamChatHandlerResponse, ie as handleCompleteChat, de as handleGetEmbeddings, Ce as handleStreamChat };
15
+ export { ie as CompleteChatHandlerRequest, Gt as CompleteChatHandlerResponse, K as Gateway, f as GatewayError, de as GetEmbeddingsHandlerRequest, zt as GetEmbeddingsHandlerResponse, H as HttpClientError, g as HttpRequestError, j as IsomorphicHttpClient, O as LRUCache, Z as QueueOptions, Q as QueueTaskTimeoutError, P as SimpleQueue, Ce as StreamChatHandlerRequest, _t as StreamChatHandlerResponse, pe as handleCompleteChat, me as handleGetEmbeddings, fe as handleStreamChat };
16
16
  //# sourceMappingURL=index.mjs.map
17
17
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors/errors.ts","../src/plugins/http-client/http-client.error.ts","../src/plugins/http-client/isomorphic.http-client.ts","../src/plugins/queue/queue.error.ts","../src/plugins/queue/queue.interface.ts","../src/utils/utils.ts","../src/plugins/queue/simple.queue.ts","../src/plugins/cache/lru.cache.ts","../src/gateway.types.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/gateway.ts"],"names":["GatewayError","_GatewayError","message","status","data","HttpClientErrorLiteral","HttpClientError","_HttpClientError","GatewayBaseError","info","cause","error","HttpRequestErrorLiteral","HttpRequestError","_HttpRequestError","headers","convertHeadersToRecord","headerRecord","key","value","axiosToHttpRequestError","_a","_b","_c","IsomorphicHttpClient","config","axiosInstance","timeoutInMilliseconds","axios","Timeout","z","ProxyAgent","_0","_1","_2","__async","method","url","dataOrParams","additionalConfig","__spreadProps","__spreadValues","resp","options","__asyncGenerator","response","__await","iter","__forAwait","more","temp","chunk","fetchConfig","text","reader","done","params","QueueTaskTimeoutErrorLiteral","QueueTaskTimeoutError","_QueueTaskTimeoutError","QueueOptions","castToError","err","isRunningInBrowser","logColors","verbose","level","action","args","debug","safelyInvokeCallbacks","callbacks","name","promises","callback","func","result","delay","ms","resolve","SimpleQueue","task","reject","timeout","retryRemaining","shouldRetry","delayMs","taskRequest","GatewayCompleteChatRequest","retryDelay","LRUCache","maxEntries","LRU","sha256","GatewayOptions","GatewayCompleteChatRequestOptions","Config","Message","Tool","GatewayStreamChatRequestOptions","GatewayStreamChatRequest","GatewayGetEmbeddingsRequestOptions","GatewayGetEmbeddingsRequest","EmbeddingRequests","CompleteChatHandlerRequest","CompleteChatHandlerResponse","ChatResponse","handleCompleteChat","request","client","providerData","providerRequest","cacheKey","cachedResponse","now","providerResponse","latencyInMs","safeError","GetEmbeddingsHandlerRequest","GetEmbeddingsHandlerResponse","EmbeddingResponse","handleGetEmbeddings","StreamChatHandlerRequest","StreamChatHandlerResponse","PartialChatResponse","handleStreamChat","stable","buffer","isFirstResponse","transformed","streamResponse","Gateway","_d","queueOptions"],"mappings":"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","file":"index.mjs","sourcesContent":["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 { GatewayBaseError } from \"@adaline/types\";\n\nconst HttpClientErrorLiteral = \"HttpClientError\" as const;\nclass HttpClientError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, HttpClientErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpClientError(error: unknown): error is HttpClientError {\n return error instanceof HttpClientError;\n }\n}\n\nconst HttpRequestErrorLiteral = \"HttpRequestError\" as const;\nclass HttpRequestError extends GatewayBaseError {\n readonly info: string;\n readonly cause: { \n status: number;\n headers: Record<string, string>;\n data: unknown;\n };\n\n constructor(message: string, status: number = 500, headers: Record<string, string>, data: unknown) {\n super({ info: message, cause: { status, headers, data } }, HttpRequestErrorLiteral);\n this.info = message;\n this.cause = { status, headers, data } ;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpRequestError(error: unknown): error is HttpRequestError {\n return error instanceof HttpRequestError;\n }\n}\n\nexport { HttpClientError, HttpRequestError };","import { HttpClientError, HttpRequestError } from \"./http-client.error\";\n\nimport { z } from \"zod\";\nimport { ProxyAgent } from \"proxy-agent\";\nimport axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\";\n\nimport { HttpClient, HttpClientResponse } from \"./http-client.interface\";\n\ninterface HttpClientConfig {\n timeoutInMilliseconds?: number;\n axiosInstance?: AxiosInstance;\n proxyUrl?: string;\n}\n\nconst convertHeadersToRecord = (headers: any): Record<string, string> => {\n const headerRecord: Record<string, string> = {};\n if (headers && (typeof headers === \"object\" || headers instanceof Headers)) {\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 axiosToHttpRequestError = (error: AxiosError): HttpRequestError => {\n const message = error?.message || \"An unexpected error occurred\";\n const status = error?.response?.status || 500;\n const headers = convertHeadersToRecord(error?.response?.headers) || {};\n const data = error?.response?.data || {};\n return new HttpRequestError(message, status, headers, data);\n};\n\nclass IsomorphicHttpClient implements HttpClient {\n private defaultTimeout?: number;\n private client: AxiosInstance;\n private httpProxyAgent?: ProxyAgent;\n private httpsProxyAgent?: ProxyAgent;\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 if (config.proxyUrl) {\n if (config.proxyUrl.startsWith(\"http://\")) {\n // TODO: check how to properly set this\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.HTTP_PROXY = config.proxyUrl;\n this.httpProxyAgent = new ProxyAgent();\n } else if (config.proxyUrl.startsWith(\"https://\")) {\n // TODO: check how to properly set this\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.HTTPS_PROXY = config.proxyUrl;\n this.httpsProxyAgent = new ProxyAgent({\n rejectUnauthorized: false, // Don't check SSL cert\n });\n } else {\n throw new HttpClientError({ \n info: \"Invalid proxy URL, only http and https proxies are supported\", \n cause: { proxyUrl: config.proxyUrl } \n });\n }\n }\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\n if (this.httpProxyAgent) {\n config.httpsAgent = this.httpProxyAgent;\n } else if (this.httpsProxyAgent) {\n config.httpsAgent = this.httpsProxyAgent;\n }\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 axiosToHttpRequestError(error);\n // \n // TODO: change error info to be more specific\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\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 // TODO: should streaming need proxy-agent?\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 HttpRequestError(\n `Request failed with status ${response.status}`,\n response.status,\n convertHeadersToRecord(response.headers),\n text\n );\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 // TODO: are there available headers in response? most likely not but check once\n throw new HttpRequestError(\"Cannot stream the body of the response.\", 500, {}, response);\n }\n }\n } catch (error: any) {\n // TODO: make errors in parity with complete-chat\n // TODO: fix errors for 400 bad requests -- can happen in various ways but actual HTTP error is not being thrown, some self reference problem\n if (HttpRequestError.isHttpRequestError(error)) throw error;\n if (error?.name === \"AbortError\") throw new HttpRequestError(\"AbortError\", 408, {}, {}); // TODO: need for headers, data?\n if (error?.name === \"CanceledError\") throw new HttpRequestError(\"AbortError\", 408, {}, {}); // TODO: need for headers, data?\n // TODO: how to convert non-axios errors to HttpRequestError for fetch aka browser environment\n if (axios.isAxiosError(error)) throw axiosToHttpRequestError(error);\n // TODO: change error info to be more specific\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\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}\n\nexport { IsomorphicHttpClient };\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst QueueTaskTimeoutErrorLiteral = \"QueueTaskTimeoutError\" as const;\nclass QueueTaskTimeoutError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, QueueTaskTimeoutErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isQueueTaskTimeoutError(error: unknown): error is QueueTaskTimeoutError {\n return error instanceof QueueTaskTimeoutError;\n }\n}\n\nexport { QueueTaskTimeoutError };\n","import { z } from \"zod\";\n\nimport { type Cache } from \"../cache\";\n\ntype QueueTask<Request, Response> = {\n request: Request;\n cache: Cache<Response>;\n resolve: (value: Response) => void;\n reject: (error: any) => void;\n execute: (request: Request) => Promise<Response>;\n};\n\ninterface Queue<Request, Response> {\n enqueue(task: QueueTask<Request, Response>): void;\n}\n\nconst QueueOptions = z.object({\n maxConcurrentTasks: z.number().int().positive(),\n retryCount: z.number().int().positive(),\n timeout: z.number().int().positive(),\n retry: z.object({\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n }),\n});\ntype QueueOptionsType = z.infer<typeof QueueOptions>;\n\nexport { \n QueueOptions,\n type Queue, \n type QueueOptionsType, \n type QueueTask \n};\n","import { GatewayError } from \"../errors/errors\";\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 isRunningInBrowser,\n safelyInvokeCallbacks,\n type Prettify,\n};\n","import { Queue, QueueOptionsType, QueueTask } from \"./queue.interface\";\nimport { QueueTaskTimeoutError } from \"./queue.error\";\nimport { GatewayCompleteChatRequest } from \"../../gateway.types\";\nimport { HttpRequestError } from \"./../http-client\";\nimport { delay } from \"../../utils\";\n\nclass SimpleQueue<Request, Response> implements Queue<Request, Response> {\n private options: QueueOptionsType;\n private activeTasks = 0;\n private queue: QueueTask<Request, Response>[] = [];\n\n constructor(options: QueueOptionsType) {\n this.options = options;\n }\n\n public enqueue(task: QueueTask<Request, Response>): void {\n this.queue.push(task);\n this.processQueue();\n }\n\n private withTimeout(task: QueueTask<Request, Response>): Promise<Response> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(\n new QueueTaskTimeoutError({ \n info: \"Queue task timeout\", \n cause: new Error(\"Queue task timeout\")\n })\n ),\n this.options.timeout\n );\n\n task\n .execute(task.request)\n .then((result) => {\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeout);\n reject(error);\n });\n });\n }\n\n private async executeWithRetry(task: QueueTask<Request, Response>, retryRemaining: number): Promise<Response> {\n try {\n return await this.withTimeout(task);\n } catch (error) {\n if (retryRemaining === 0) {\n throw error;\n }\n\n let shouldRetry = true;\n let delayMs =\n this.options.retry.initialDelay * Math.pow(this.options.retry.exponentialFactor, this.options.retryCount - retryRemaining);\n if (HttpRequestError.isHttpRequestError(error)) {\n // rate limiting error\n if (error.cause.status === 429) {\n const taskRequest = GatewayCompleteChatRequest.safeParse(task.request);\n if (taskRequest.success) {\n const retryDelay = taskRequest.data.model.getRetryDelay(error.cause.headers);\n shouldRetry = retryDelay.shouldRetry;\n // valid delayMs is returned from model\n if (retryDelay.delayMs > 0) {\n delayMs = retryDelay.delayMs;\n }\n }\n }\n\n if (error.cause.status >= 500 && error.cause.status < 600) {\n // implement retry logic for 500 errors\n // else defaults to exponential backoff\n }\n } else {\n // implement retry logic for non http-request errors\n // else defaults to exponential backoff\n }\n\n if (!shouldRetry) {\n throw error;\n } else {\n await delay(delayMs);\n return this.executeWithRetry(task, retryRemaining - 1);\n }\n }\n }\n\n private async processQueue() {\n if (this.activeTasks >= this.options.maxConcurrentTasks) return;\n\n const task = this.queue.shift();\n if (!task) return;\n\n this.activeTasks += 1;\n\n try {\n const response: Response = await this.executeWithRetry(task, this.options.retryCount);\n task.resolve(response);\n } catch (error) {\n task.reject(error);\n } finally {\n this.activeTasks -= 1;\n this.processQueue();\n }\n }\n}\n\nexport { SimpleQueue };\n","import { LRUCache as LRU } from \"lru-cache\";\nimport sha256 from \"crypto-js/sha256.js\";\n\nimport { type Cache } from \"./cache.interface\";\n\nclass LRUCache<T extends object> implements Cache<T> {\n private cache: LRU<string, T>;\n\n constructor(maxEntries: number = 1000) {\n this.cache = new LRU<string, T>({ \n max: maxEntries,\n allowStale: false,\n updateAgeOnGet: false,\n });\n }\n\n getCacheKey(data: any): string {\n return sha256(`${data.prefix}:${data.url}:${data.modelName}:${JSON.stringify(data.data)}`).toString();\n }\n\n async get(key: string): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n resolve(this.cache.get(key));\n });\n }\n\n async set(key: string, value: T): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.set(key, value);\n resolve();\n });\n }\n\n async delete(key: string): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.delete(key);\n resolve();\n });\n }\n\n async clear(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.clear();\n resolve();\n });\n }\n}\n\nexport { LRUCache, type Cache };","import { z } from \"zod\";\n\nimport { ChatModelV1, EmbeddingModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, EmbeddingRequests } from \"@adaline/types\";\n\nimport { HttpClient, Cache, QueueOptions } from \"./plugins\";\nimport { \n CompleteChatHandlerResponseType, \n GetEmbeddingsHandlerResponseType, \n CompleteChatCallbackType, \n StreamChatCallbackType,\n GetEmbeddingsCallbackType,\n} from \"./handlers\";\n\n// TODO: add caller provided queue(s)\nconst GatewayOptions = z.object({\n queueOptions: QueueOptions.partial().optional(),\n dangerouslyAllowBrowser: z.boolean().optional(),\n httpClient: z.custom<HttpClient>().optional(),\n completeChatCache: z.custom<Cache<CompleteChatHandlerResponseType>>().optional(),\n completeChatCallbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n getEmbeddingsCache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>().optional(),\n getEmbeddingsCallbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n streamChatCallbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n});\ntype GatewayOptionsType = z.infer<typeof GatewayOptions>;\n\nconst GatewayCompleteChatRequestOptions = z.object({\n enableCache: z.boolean().optional().default(true),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayCompleteChatRequestOptionsType = z.infer<typeof GatewayCompleteChatRequestOptions>;\n\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 metadataForCallbacks: z.any().optional(),\n});\ntype GatewayStreamChatRequestOptionsType = z.infer<typeof GatewayStreamChatRequestOptions>;\n\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 enableCache: z.boolean().optional().default(true),\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 GatewayCompleteChatRequestType,\n type GatewayCompleteChatRequestOptionsType,\n type GatewayStreamChatRequestType,\n type GatewayStreamChatRequestOptionsType,\n type GatewayGetEmbeddingsRequestType,\n type GatewayGetEmbeddingsRequestOptionsType,\n};","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, ChatResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError, Cache } from \"../../plugins\";\n\nconst CompleteChatHandlerRequest = z.object({\n cache: z.custom<Cache<CompleteChatHandlerResponseType>>(),\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n enableCache: z.boolean(),\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 request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: ChatResponse,\n cached: z.boolean(),\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 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 // TODO: which other errors should we handle?\n onChatError?: (metadata?: M, error?: GatewayError | HttpRequestError) => 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, HttpRequestError } from \"../../plugins\";\nimport { castToError, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerRequest,\n CompleteChatHandlerRequestType,\n CompleteChatHandlerResponseType,\n} from \"./complete-chat.types\";\n\nasync function handleCompleteChat(request: CompleteChatHandlerRequestType, client: HttpClient): Promise<CompleteChatHandlerResponseType> {\n const data = CompleteChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n\n try {\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n const providerRequest = {\n url: await data.model.getCompleteChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getCompleteChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getCompleteChatData(data.config, data.messages, data.tools),\n };\n\n const cacheKey = request.cache.getCacheKey({\n prefix: \"complete-chat\",\n url: providerRequest.url,\n modelName: data.model.modelSchema.name,\n data: providerData,\n });\n if (data.enableCache) {\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n return cachedResponse;\n }\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: providerData,\n response: data.model.transformCompleteChatResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\n }\n\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n // TODO: maybe handle other types of errors from model object ?\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else 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, EmbeddingResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError, Cache } from \"../../plugins\";\n\nconst GetEmbeddingsHandlerRequest = z.object({\n cache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>(),\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n enableCache: z.boolean(),\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: EmbeddingResponse,\n cached: z.boolean(),\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 // TODO: which other errors should we handle?\n onGetEmbeddingsError?: (metadata?: M, error?: GatewayError | HttpRequestError) => 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, HttpRequestError } 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 try {\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n };\n\n const providerRequest = {\n url: await data.model.getGetEmbeddingsUrl(data.config, data.embeddingRequests),\n headers: await data.model.getGetEmbeddingsHeaders(data.config, data.embeddingRequests),\n data: await data.model.getGetEmbeddingsData(data.config, data.embeddingRequests),\n };\n\n const cacheKey = request.cache.getCacheKey({\n prefix: \"get-embeddings\",\n url: providerRequest.url,\n modelName: data.model.modelSchema.name,\n data: providerData,\n });\n if (data.enableCache) {\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n return cachedResponse;\n }\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: providerData,\n response: data.model.transformGetEmbeddingsResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\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 // TODO: maybe handle other types of errors from model object ?\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else 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, PartialChatResponse } 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: PartialChatResponse,\n metadataForCallbacks: z.any().optional(),\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: await data.model.getStreamChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getStreamChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getStreamChatData(data.config, data.messages, data.tools),\n };\n\n let buffer = \"\";\n let isFirstResponse = true;\n for await (\n const chunk of client.stream(\n providerRequest.url, \n \"post\", \n providerRequest.data, \n providerRequest.headers\n )\n ) {\n for await (const transformed of data.model.transformStreamChatResponseChunk(chunk as string, buffer)) {\n // if (transformed.partialResponse.partialMessages.length > 0) {\n const streamResponse = {\n request: stable,\n response: transformed.partialResponse,\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 { GatewayError } from \"./errors\";\nimport {\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestType,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestType,\n GatewayOptions,\n GatewayOptionsType,\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, Cache, LRUCache, Queue, QueueTask, SimpleQueue } from \"./plugins\";\nimport { isRunningInBrowser } from \"./utils\";\n\nclass Gateway {\n private options: GatewayOptionsType;\n private httpClient: HttpClient;\n private queues: {\n completeChat: Queue<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType>;\n getEmbeddings: Queue<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType>;\n };\n private caches: {\n completeChat: Cache<CompleteChatHandlerResponseType>;\n getEmbeddings: Cache<GetEmbeddingsHandlerResponseType>;\n };\n\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 const queueOptions = {\n maxConcurrentTasks: this.options.queueOptions?.maxConcurrentTasks || 4,\n retryCount: this.options.queueOptions?.retryCount || 3,\n retry: this.options.queueOptions?.retry || {\n initialDelay: 1000,\n exponentialFactor: 2,\n },\n timeout: this.options.queueOptions?.timeout || 90000,\n };\n\n // TODO: different queueOptions for each queue ?\n this.queues = {\n completeChat: new SimpleQueue(queueOptions),\n getEmbeddings: new SimpleQueue(queueOptions),\n };\n\n // TODO: current implementation is that httpClient timeout is 90% of queue timeout, make it configurable ?\n // TODO: different httpClient for each queue ?\n this.httpClient = options.httpClient || new IsomorphicHttpClient({ timeoutInMilliseconds: (queueOptions.timeout * 0.90) });\n\n this.caches = {\n completeChat: options.completeChatCache || new LRUCache<CompleteChatHandlerResponseType>(),\n getEmbeddings: options.getEmbeddingsCache || new LRUCache<GetEmbeddingsHandlerResponseType>(),\n };\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 // cache: this.caches.completeChat,\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 completeChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return new Promise<CompleteChatHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType> = {\n request: data,\n cache: this.caches.completeChat,\n resolve,\n reject,\n execute: this.executeCompleteChat.bind(this),\n };\n this.queues.completeChat.enqueue(task);\n });\n }\n\n private async executeCompleteChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return handleCompleteChat(\n {\n cache: this.caches.completeChat,\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.completeChatCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\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.streamChatCallbacks,\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 async getEmbeddings(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return new Promise<GetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType> = {\n request: data,\n cache: this.caches.getEmbeddings,\n resolve,\n reject,\n execute: this.executeGetEmbeddingsTask.bind(this),\n };\n this.queues.getEmbeddings.enqueue(task);\n });\n }\n\n private async executeGetEmbeddingsTask(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return handleGetEmbeddings(\n {\n cache: this.caches.getEmbeddings,\n model: data.model,\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.getEmbeddingsCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\n );\n }\n\n static GatewayError = GatewayError;\n}\n\nexport { Gateway, type GatewayOptionsType };\n"]}
1
+ {"version":3,"sources":["../src/errors/errors.ts","../src/plugins/http-client/http-client.error.ts","../src/plugins/http-client/isomorphic.http-client.ts","../src/plugins/queue/queue.error.ts","../src/plugins/queue/queue.interface.ts","../src/utils/utils.ts","../src/plugins/queue/simple.queue.ts","../src/plugins/cache/lru.cache.ts","../src/gateway.types.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/gateway.ts"],"names":["GatewayError","_GatewayError","message","status","data","HttpClientErrorLiteral","HttpClientError","_HttpClientError","GatewayBaseError","info","cause","error","HttpRequestErrorLiteral","HttpRequestError","_HttpRequestError","headers","convertHeadersToRecord","headerRecord","key","value","axiosToHttpRequestError","_a","_b","_c","IsomorphicHttpClient","config","axiosInstance","timeoutInMilliseconds","axios","Timeout","z","ProxyAgent","_0","_1","_2","__async","method","url","dataOrParams","additionalConfig","__spreadProps","__spreadValues","resp","options","__asyncGenerator","response","__await","iter","__forAwait","more","temp","chunk","fetchConfig","text","reader","done","params","QueueTaskTimeoutErrorLiteral","QueueTaskTimeoutError","_QueueTaskTimeoutError","QueueOptions","getCacheKeyHash","prefix","object","sha256","castToError","err","isRunningInBrowser","logColors","verbose","level","action","args","debug","safelyInvokeCallbacks","callbacks","name","promises","callback","func","result","delay","ms","resolve","SimpleQueue","task","reject","timeout","retryRemaining","shouldRetry","delayMs","taskRequest","GatewayCompleteChatRequest","retryDelay","LRUCache","maxEntries","LRU","GatewayOptions","GatewayCompleteChatRequestOptions","Config","Message","Tool","GatewayStreamChatRequestOptions","GatewayStreamChatRequest","GatewayGetEmbeddingsRequestOptions","GatewayGetEmbeddingsRequest","EmbeddingRequests","CompleteChatHandlerRequest","CompleteChatHandlerResponse","ChatResponse","handleCompleteChat","request","client","providerData","providerRequest","cacheKey","cachedResponse","now","providerResponse","latencyInMs","safeError","GetEmbeddingsHandlerRequest","GetEmbeddingsHandlerResponse","EmbeddingResponse","handleGetEmbeddings","StreamChatHandlerRequest","StreamChatHandlerResponse","PartialChatResponse","handleStreamChat","stable","buffer","isFirstResponse","transformed","streamResponse","Gateway","_d","queueOptions"],"mappings":"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","file":"index.mjs","sourcesContent":["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 { GatewayBaseError } from \"@adaline/types\";\n\nconst HttpClientErrorLiteral = \"HttpClientError\" as const;\nclass HttpClientError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, HttpClientErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpClientError(error: unknown): error is HttpClientError {\n return error instanceof HttpClientError;\n }\n}\n\nconst HttpRequestErrorLiteral = \"HttpRequestError\" as const;\nclass HttpRequestError extends GatewayBaseError {\n readonly info: string;\n readonly cause: { \n status: number;\n headers: Record<string, string>;\n data: unknown;\n };\n\n constructor(message: string, status: number = 500, headers: Record<string, string>, data: unknown) {\n super({ info: message, cause: { status, headers, data } }, HttpRequestErrorLiteral);\n this.info = message;\n this.cause = { status, headers, data } ;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpRequestError(error: unknown): error is HttpRequestError {\n return error instanceof HttpRequestError;\n }\n}\n\nexport { HttpClientError, HttpRequestError };","import { HttpClientError, HttpRequestError } from \"./http-client.error\";\n\nimport { z } from \"zod\";\nimport { ProxyAgent } from \"proxy-agent\";\nimport axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\";\n\nimport { HttpClient, HttpClientResponse } from \"./http-client.interface\";\n\ninterface HttpClientConfig {\n timeoutInMilliseconds?: number;\n axiosInstance?: AxiosInstance;\n proxyUrl?: string;\n}\n\nconst convertHeadersToRecord = (headers: any): Record<string, string> => {\n const headerRecord: Record<string, string> = {};\n if (headers && (typeof headers === \"object\" || headers instanceof Headers)) {\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 axiosToHttpRequestError = (error: AxiosError): HttpRequestError => {\n const message = error?.message || \"An unexpected error occurred\";\n const status = error?.response?.status || 500;\n const headers = convertHeadersToRecord(error?.response?.headers) || {};\n const data = error?.response?.data || {};\n return new HttpRequestError(message, status, headers, data);\n};\n\nclass IsomorphicHttpClient implements HttpClient {\n private defaultTimeout?: number;\n private client: AxiosInstance;\n private httpProxyAgent?: ProxyAgent;\n private httpsProxyAgent?: ProxyAgent;\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 if (config.proxyUrl) {\n if (config.proxyUrl.startsWith(\"http://\")) {\n // TODO: check how to properly set this\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.HTTP_PROXY = config.proxyUrl;\n this.httpProxyAgent = new ProxyAgent();\n } else if (config.proxyUrl.startsWith(\"https://\")) {\n // TODO: check how to properly set this\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n process.env.HTTPS_PROXY = config.proxyUrl;\n this.httpsProxyAgent = new ProxyAgent({\n rejectUnauthorized: false, // Don't check SSL cert\n });\n } else {\n throw new HttpClientError({ \n info: \"Invalid proxy URL, only http and https proxies are supported\", \n cause: { proxyUrl: config.proxyUrl } \n });\n }\n }\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\n if (this.httpProxyAgent) {\n config.httpsAgent = this.httpProxyAgent;\n } else if (this.httpsProxyAgent) {\n config.httpsAgent = this.httpsProxyAgent;\n }\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 axiosToHttpRequestError(error);\n // \n // TODO: change error info to be more specific\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\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 // TODO: should streaming need proxy-agent?\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 HttpRequestError(\n `Request failed with status ${response.status}`,\n response.status,\n convertHeadersToRecord(response.headers),\n text\n );\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 // TODO: are there available headers in response? most likely not but check once\n throw new HttpRequestError(\"Cannot stream the body of the response.\", 500, {}, response);\n }\n }\n } catch (error: any) {\n // TODO: make errors in parity with complete-chat\n // TODO: fix errors for 400 bad requests -- can happen in various ways but actual HTTP error is not being thrown, some self reference problem\n if (HttpRequestError.isHttpRequestError(error)) throw error;\n if (error?.name === \"AbortError\") throw new HttpRequestError(\"AbortError\", 408, {}, {}); // TODO: need for headers, data?\n if (error?.name === \"CanceledError\") throw new HttpRequestError(\"AbortError\", 408, {}, {}); // TODO: need for headers, data?\n // TODO: how to convert non-axios errors to HttpRequestError for fetch aka browser environment\n if (axios.isAxiosError(error)) throw axiosToHttpRequestError(error);\n // TODO: change error info to be more specific\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\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}\n\nexport { IsomorphicHttpClient };\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst QueueTaskTimeoutErrorLiteral = \"QueueTaskTimeoutError\" as const;\nclass QueueTaskTimeoutError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, QueueTaskTimeoutErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isQueueTaskTimeoutError(error: unknown): error is QueueTaskTimeoutError {\n return error instanceof QueueTaskTimeoutError;\n }\n}\n\nexport { QueueTaskTimeoutError };\n","import { z } from \"zod\";\n\nimport { type Cache } from \"../cache\";\n\ntype QueueTask<Request, Response> = {\n request: Request;\n cache: Cache<Response>;\n resolve: (value: Response) => void;\n reject: (error: any) => void;\n execute: (request: Request) => Promise<Response>;\n};\n\ninterface Queue<Request, Response> {\n enqueue(task: QueueTask<Request, Response>): void;\n}\n\nconst QueueOptions = z.object({\n maxConcurrentTasks: z.number().int().positive(),\n retryCount: z.number().int().positive(),\n timeout: z.number().int().positive(),\n retry: z.object({\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n }),\n});\ntype QueueOptionsType = z.infer<typeof QueueOptions>;\n\nexport { \n QueueOptions,\n type Queue, \n type QueueOptionsType, \n type QueueTask \n};\n","import sha256 from \"crypto-js/sha256.js\";\n\nimport { GatewayError } from \"../errors/errors\";\n\nconst getCacheKeyHash = (prefix: string, object: object): string => {\n return sha256(prefix + 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 getCacheKeyHash,\n isRunningInBrowser,\n safelyInvokeCallbacks,\n type Prettify,\n};\n","import { Queue, QueueOptionsType, QueueTask } from \"./queue.interface\";\nimport { QueueTaskTimeoutError } from \"./queue.error\";\nimport { GatewayCompleteChatRequest } from \"../../gateway.types\";\nimport { HttpRequestError } from \"./../http-client\";\nimport { delay } from \"../../utils\";\n\nclass SimpleQueue<Request, Response> implements Queue<Request, Response> {\n private options: QueueOptionsType;\n private activeTasks = 0;\n private queue: QueueTask<Request, Response>[] = [];\n\n constructor(options: QueueOptionsType) {\n this.options = options;\n }\n\n public enqueue(task: QueueTask<Request, Response>): void {\n this.queue.push(task);\n this.processQueue();\n }\n\n private withTimeout(task: QueueTask<Request, Response>): Promise<Response> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(\n new QueueTaskTimeoutError({ \n info: \"Queue task timeout\", \n cause: new Error(\"Queue task timeout\")\n })\n ),\n this.options.timeout\n );\n\n task\n .execute(task.request)\n .then((result) => {\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeout);\n reject(error);\n });\n });\n }\n\n private async executeWithRetry(task: QueueTask<Request, Response>, retryRemaining: number): Promise<Response> {\n try {\n return await this.withTimeout(task);\n } catch (error) {\n if (retryRemaining === 0) {\n throw error;\n }\n\n let shouldRetry = true;\n let delayMs =\n this.options.retry.initialDelay * Math.pow(this.options.retry.exponentialFactor, this.options.retryCount - retryRemaining);\n if (HttpRequestError.isHttpRequestError(error)) {\n // rate limiting error\n if (error.cause.status === 429) {\n const taskRequest = GatewayCompleteChatRequest.safeParse(task.request);\n if (taskRequest.success) {\n const retryDelay = taskRequest.data.model.getRetryDelay(error.cause.headers);\n shouldRetry = retryDelay.shouldRetry;\n // valid delayMs is returned from model\n if (retryDelay.delayMs > 0) {\n delayMs = retryDelay.delayMs;\n }\n }\n }\n\n if (error.cause.status >= 500 && error.cause.status < 600) {\n // implement retry logic for 500 errors\n // else defaults to exponential backoff\n }\n } else {\n // implement retry logic for non http-request errors\n // else defaults to exponential backoff\n }\n\n if (!shouldRetry) {\n throw error;\n } else {\n await delay(delayMs);\n return this.executeWithRetry(task, retryRemaining - 1);\n }\n }\n }\n\n private async processQueue() {\n if (this.activeTasks >= this.options.maxConcurrentTasks) return;\n\n const task = this.queue.shift();\n if (!task) return;\n\n this.activeTasks += 1;\n\n try {\n const response: Response = await this.executeWithRetry(task, this.options.retryCount);\n task.resolve(response);\n } catch (error) {\n task.reject(error);\n } finally {\n this.activeTasks -= 1;\n this.processQueue();\n }\n }\n}\n\nexport { SimpleQueue };\n","import { LRUCache as LRU } from \"lru-cache\";\n\nimport { type Cache } from \"./cache.interface\";\n\nclass LRUCache<T extends object> implements Cache<T> {\n private cache: LRU<string, T>;\n\n constructor(maxEntries: number = 1000) {\n this.cache = new LRU<string, T>({ \n max: maxEntries,\n allowStale: false,\n updateAgeOnGet: false,\n });\n }\n\n async get(key: string): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n resolve(this.cache.get(key));\n });\n }\n\n async set(key: string, value: T): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.set(key, value);\n resolve();\n });\n }\n\n async delete(key: string): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.delete(key);\n resolve();\n });\n }\n\n async clear(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.cache.clear();\n resolve();\n });\n }\n}\n\nexport { LRUCache, type Cache };","import { z } from \"zod\";\n\nimport { ChatModelV1, EmbeddingModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, EmbeddingRequests } from \"@adaline/types\";\n\nimport { HttpClient, Cache, QueueOptions } from \"./plugins\";\nimport { \n CompleteChatHandlerResponseType, \n GetEmbeddingsHandlerResponseType, \n CompleteChatCallbackType, \n StreamChatCallbackType,\n GetEmbeddingsCallbackType,\n} from \"./handlers\";\n\n// TODO: add caller provided queue(s)\nconst GatewayOptions = z.object({\n queueOptions: QueueOptions.partial().optional(),\n dangerouslyAllowBrowser: z.boolean().optional(),\n httpClient: z.custom<HttpClient>().optional(),\n completeChatCache: z.custom<Cache<CompleteChatHandlerResponseType>>().optional(),\n completeChatCallbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n getEmbeddingsCache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>().optional(),\n getEmbeddingsCallbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n streamChatCallbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n});\ntype GatewayOptionsType = z.infer<typeof GatewayOptions>;\n\nconst GatewayCompleteChatRequestOptions = z.object({\n enableCache: z.boolean().optional().default(true),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayCompleteChatRequestOptionsType = z.infer<typeof GatewayCompleteChatRequestOptions>;\n\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 metadataForCallbacks: z.any().optional(),\n});\ntype GatewayStreamChatRequestOptionsType = z.infer<typeof GatewayStreamChatRequestOptions>;\n\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 enableCache: z.boolean().optional().default(true),\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 GatewayCompleteChatRequestType,\n type GatewayCompleteChatRequestOptionsType,\n type GatewayStreamChatRequestType,\n type GatewayStreamChatRequestOptionsType,\n type GatewayGetEmbeddingsRequestType,\n type GatewayGetEmbeddingsRequestOptionsType,\n};","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { Config, Message, Tool, ChatResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError, Cache } from \"../../plugins\";\n\nconst CompleteChatHandlerRequest = z.object({\n cache: z.custom<Cache<CompleteChatHandlerResponseType>>(),\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n enableCache: z.boolean(),\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 request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: ChatResponse,\n cached: z.boolean(),\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 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 // TODO: which other errors should we handle?\n onChatError?: (metadata?: M, error?: GatewayError | HttpRequestError) => 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, HttpRequestError } from \"../../plugins\";\nimport { castToError, getCacheKeyHash, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerRequest,\n CompleteChatHandlerRequestType,\n CompleteChatHandlerResponseType,\n} from \"./complete-chat.types\";\n\nasync function handleCompleteChat(request: CompleteChatHandlerRequestType, client: HttpClient): Promise<CompleteChatHandlerResponseType> {\n const data = CompleteChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n\n try {\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n const providerRequest = {\n url: await data.model.getCompleteChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getCompleteChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getCompleteChatData(data.config, data.messages, data.tools),\n };\n\n const cacheKey = getCacheKeyHash(`complete-chat:${providerRequest.url}:${data.model.modelSchema.name}`, providerData);\n if (data.enableCache) {\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n return cachedResponse;\n }\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: providerData,\n response: data.model.transformCompleteChatResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\n }\n\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n // TODO: maybe handle other types of errors from model object ?\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else 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, EmbeddingResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError, Cache } from \"../../plugins\";\n\nconst GetEmbeddingsHandlerRequest = z.object({\n cache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>(),\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n enableCache: z.boolean(),\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: EmbeddingResponse,\n cached: z.boolean(),\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 // TODO: which other errors should we handle?\n onGetEmbeddingsError?: (metadata?: M, error?: GatewayError | HttpRequestError) => 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, HttpRequestError } from \"../../plugins\";\nimport { castToError, getCacheKeyHash, 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 try {\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n };\n\n const providerRequest = {\n url: await data.model.getGetEmbeddingsUrl(data.config, data.embeddingRequests),\n headers: await data.model.getGetEmbeddingsHeaders(data.config, data.embeddingRequests),\n data: await data.model.getGetEmbeddingsData(data.config, data.embeddingRequests),\n };\n\n const cacheKey = getCacheKeyHash(`get-embeddings:${providerRequest.url}:${data.model.modelSchema.name}`, providerData);\n if (data.enableCache) {\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n return cachedResponse;\n }\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: providerData,\n response: data.model.transformGetEmbeddingsResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\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 // TODO: maybe handle other types of errors from model object ?\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else 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, PartialChatResponse } 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: PartialChatResponse,\n metadataForCallbacks: z.any().optional(),\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: await data.model.getStreamChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getStreamChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getStreamChatData(data.config, data.messages, data.tools),\n };\n\n let buffer = \"\";\n let isFirstResponse = true;\n for await (\n const chunk of client.stream(\n providerRequest.url, \n \"post\", \n providerRequest.data, \n providerRequest.headers\n )\n ) {\n for await (const transformed of data.model.transformStreamChatResponseChunk(chunk as string, buffer)) {\n // if (transformed.partialResponse.partialMessages.length > 0) {\n const streamResponse = {\n request: stable,\n response: transformed.partialResponse,\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 { GatewayError } from \"./errors\";\nimport {\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestType,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestType,\n GatewayOptions,\n GatewayOptionsType,\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, Cache, LRUCache, Queue, QueueTask, SimpleQueue } from \"./plugins\";\nimport { isRunningInBrowser } from \"./utils\";\n\nclass Gateway {\n private options: GatewayOptionsType;\n private httpClient: HttpClient;\n private queues: {\n completeChat: Queue<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType>;\n getEmbeddings: Queue<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType>;\n };\n private caches: {\n completeChat: Cache<CompleteChatHandlerResponseType>;\n getEmbeddings: Cache<GetEmbeddingsHandlerResponseType>;\n };\n\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 const queueOptions = {\n maxConcurrentTasks: this.options.queueOptions?.maxConcurrentTasks || 4,\n retryCount: this.options.queueOptions?.retryCount || 3,\n retry: this.options.queueOptions?.retry || {\n initialDelay: 1000,\n exponentialFactor: 2,\n },\n timeout: this.options.queueOptions?.timeout || 90000,\n };\n\n // TODO: different queueOptions for each queue ?\n this.queues = {\n completeChat: new SimpleQueue(queueOptions),\n getEmbeddings: new SimpleQueue(queueOptions),\n };\n\n // TODO: current implementation is that httpClient timeout is 90% of queue timeout, make it configurable ?\n // TODO: different httpClient for each queue ?\n this.httpClient = options.httpClient || new IsomorphicHttpClient({ timeoutInMilliseconds: (queueOptions.timeout * 0.90) });\n\n this.caches = {\n completeChat: options.completeChatCache || new LRUCache<CompleteChatHandlerResponseType>(),\n getEmbeddings: options.getEmbeddingsCache || new LRUCache<GetEmbeddingsHandlerResponseType>(),\n };\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 // cache: this.caches.completeChat,\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 completeChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return new Promise<CompleteChatHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType> = {\n request: data,\n cache: this.caches.completeChat,\n resolve,\n reject,\n execute: this.executeCompleteChat.bind(this),\n };\n this.queues.completeChat.enqueue(task);\n });\n }\n\n private async executeCompleteChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n const data = GatewayCompleteChatRequest.parse(request);\n return handleCompleteChat(\n {\n cache: this.caches.completeChat,\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.completeChatCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\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.streamChatCallbacks,\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 async getEmbeddings(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return new Promise<GetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType> = {\n request: data,\n cache: this.caches.getEmbeddings,\n resolve,\n reject,\n execute: this.executeGetEmbeddingsTask.bind(this),\n };\n this.queues.getEmbeddings.enqueue(task);\n });\n }\n\n private async executeGetEmbeddingsTask(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return handleGetEmbeddings(\n {\n cache: this.caches.getEmbeddings,\n model: data.model,\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.getEmbeddingsCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient\n );\n }\n\n static GatewayError = GatewayError;\n}\n\nexport { Gateway, type GatewayOptionsType };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaline/gateway",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "private": false,
@@ -63,9 +63,9 @@
63
63
  "tsup": "^8.2.2",
64
64
  "tsup-node": "^0.1.0",
65
65
  "@adaline/provider": "0.9.0",
66
+ "@adaline/tsconfig": "0.6.0",
66
67
  "@adaline/types": "0.7.0",
67
- "eslint-config-adaline": "0.3.0",
68
- "@adaline/tsconfig": "0.6.0"
68
+ "eslint-config-adaline": "0.3.0"
69
69
  },
70
70
  "scripts": {
71
71
  "clean": "rimraf node_modules .turbo dist",