paprflare-sdk 0.0.2 → 0.0.3
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 +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -375,6 +375,10 @@ declare class PaprFlare {
|
|
|
375
375
|
*/
|
|
376
376
|
clearCache(): Promise<void>;
|
|
377
377
|
}
|
|
378
|
+
/**
|
|
379
|
+
* Type guard to check if response is streaming
|
|
380
|
+
*/
|
|
381
|
+
declare function isStreamingResponse(response: ChatResponse | StreamingChatResponse): response is StreamingChatResponse;
|
|
378
382
|
/**
|
|
379
383
|
* Create structured output helper
|
|
380
384
|
*/
|
|
@@ -970,4 +974,4 @@ declare class ThreadPool {
|
|
|
970
974
|
cleanupAll(maxAge?: number): void;
|
|
971
975
|
}
|
|
972
976
|
|
|
973
|
-
export { type AnthropicConfig, AnthropicProvider, type Artifact, type ArtifactMetadata, type CacheConfig, CacheManager, type CacheOptions, type ChatConfig, type ChatResponse, type ChatState, type CloudConfig, type Conversation, type DatabaseAdapter, DatabaseManager, DrizzleAdapter, type GoogleConfig, GoogleProvider, type ICache, MemoryAdapter, MemoryCache, type Message, type OpenAIConfig, OpenAIProvider, PaprFlare, type PaprFlareClientConfig, PaprFlareError, type PaprFlareMode, PrismaAdapter, type ProviderCallback, type ProviderConfig, ProviderError, RateLimitError, RedisCache, type SarvamConfig, SarvamProvider, type SelfManagedConfig, type StreamEvent, StreamWriter, type StreamingChatResponse, type Thread, type ThreadEvent, ThreadManager, ThreadPool, TokenCounter, type TokenUsage, type Tool, type ToolCall, type ToolResult, type UsePaprFlareConfig, ValidationError, batchStream, chunk, collectStream, countMessageTokens, countTokens, createAnthropicProvider, createCacheKey, createGoogleProvider, createOpenAIProvider, createSarvamProvider, createStreamWriter, debounce, deepMerge, filterStream, formatMessages, generateId, getTokenCounter, isPlainObject, measureTime, mergeStreams, parseSSEStream, pipeToResponse, retry, safeJsonParse, sleep, streamToArray, structuredOutput, takeStream, throttle, toReadableStream, transformStream };
|
|
977
|
+
export { type AnthropicConfig, AnthropicProvider, type Artifact, type ArtifactMetadata, type CacheConfig, CacheManager, type CacheOptions, type ChatConfig, type ChatResponse, type ChatState, type CloudConfig, type Conversation, type DatabaseAdapter, DatabaseManager, DrizzleAdapter, type GoogleConfig, GoogleProvider, type ICache, MemoryAdapter, MemoryCache, type Message, type OpenAIConfig, OpenAIProvider, PaprFlare, type PaprFlareClientConfig, PaprFlareError, type PaprFlareMode, PrismaAdapter, type ProviderCallback, type ProviderConfig, ProviderError, RateLimitError, RedisCache, type SarvamConfig, SarvamProvider, type SelfManagedConfig, type StreamEvent, StreamWriter, type StreamingChatResponse, type Thread, type ThreadEvent, ThreadManager, ThreadPool, TokenCounter, type TokenUsage, type Tool, type ToolCall, type ToolResult, type UsePaprFlareConfig, ValidationError, batchStream, chunk, collectStream, countMessageTokens, countTokens, createAnthropicProvider, createCacheKey, createGoogleProvider, createOpenAIProvider, createSarvamProvider, createStreamWriter, debounce, deepMerge, filterStream, formatMessages, generateId, getTokenCounter, isPlainObject, isStreamingResponse, measureTime, mergeStreams, parseSSEStream, pipeToResponse, retry, safeJsonParse, sleep, streamToArray, structuredOutput, takeStream, throttle, toReadableStream, transformStream };
|
package/dist/index.d.ts
CHANGED
|
@@ -375,6 +375,10 @@ declare class PaprFlare {
|
|
|
375
375
|
*/
|
|
376
376
|
clearCache(): Promise<void>;
|
|
377
377
|
}
|
|
378
|
+
/**
|
|
379
|
+
* Type guard to check if response is streaming
|
|
380
|
+
*/
|
|
381
|
+
declare function isStreamingResponse(response: ChatResponse | StreamingChatResponse): response is StreamingChatResponse;
|
|
378
382
|
/**
|
|
379
383
|
* Create structured output helper
|
|
380
384
|
*/
|
|
@@ -970,4 +974,4 @@ declare class ThreadPool {
|
|
|
970
974
|
cleanupAll(maxAge?: number): void;
|
|
971
975
|
}
|
|
972
976
|
|
|
973
|
-
export { type AnthropicConfig, AnthropicProvider, type Artifact, type ArtifactMetadata, type CacheConfig, CacheManager, type CacheOptions, type ChatConfig, type ChatResponse, type ChatState, type CloudConfig, type Conversation, type DatabaseAdapter, DatabaseManager, DrizzleAdapter, type GoogleConfig, GoogleProvider, type ICache, MemoryAdapter, MemoryCache, type Message, type OpenAIConfig, OpenAIProvider, PaprFlare, type PaprFlareClientConfig, PaprFlareError, type PaprFlareMode, PrismaAdapter, type ProviderCallback, type ProviderConfig, ProviderError, RateLimitError, RedisCache, type SarvamConfig, SarvamProvider, type SelfManagedConfig, type StreamEvent, StreamWriter, type StreamingChatResponse, type Thread, type ThreadEvent, ThreadManager, ThreadPool, TokenCounter, type TokenUsage, type Tool, type ToolCall, type ToolResult, type UsePaprFlareConfig, ValidationError, batchStream, chunk, collectStream, countMessageTokens, countTokens, createAnthropicProvider, createCacheKey, createGoogleProvider, createOpenAIProvider, createSarvamProvider, createStreamWriter, debounce, deepMerge, filterStream, formatMessages, generateId, getTokenCounter, isPlainObject, measureTime, mergeStreams, parseSSEStream, pipeToResponse, retry, safeJsonParse, sleep, streamToArray, structuredOutput, takeStream, throttle, toReadableStream, transformStream };
|
|
977
|
+
export { type AnthropicConfig, AnthropicProvider, type Artifact, type ArtifactMetadata, type CacheConfig, CacheManager, type CacheOptions, type ChatConfig, type ChatResponse, type ChatState, type CloudConfig, type Conversation, type DatabaseAdapter, DatabaseManager, DrizzleAdapter, type GoogleConfig, GoogleProvider, type ICache, MemoryAdapter, MemoryCache, type Message, type OpenAIConfig, OpenAIProvider, PaprFlare, type PaprFlareClientConfig, PaprFlareError, type PaprFlareMode, PrismaAdapter, type ProviderCallback, type ProviderConfig, ProviderError, RateLimitError, RedisCache, type SarvamConfig, SarvamProvider, type SelfManagedConfig, type StreamEvent, StreamWriter, type StreamingChatResponse, type Thread, type ThreadEvent, ThreadManager, ThreadPool, TokenCounter, type TokenUsage, type Tool, type ToolCall, type ToolResult, type UsePaprFlareConfig, ValidationError, batchStream, chunk, collectStream, countMessageTokens, countTokens, createAnthropicProvider, createCacheKey, createGoogleProvider, createOpenAIProvider, createSarvamProvider, createStreamWriter, debounce, deepMerge, filterStream, formatMessages, generateId, getTokenCounter, isPlainObject, isStreamingResponse, measureTime, mergeStreams, parseSSEStream, pipeToResponse, retry, safeJsonParse, sleep, streamToArray, structuredOutput, takeStream, throttle, toReadableStream, transformStream };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
'use strict';var ae=require('ioredis'),lruCache=require('lru-cache'),tiktoken=require('tiktoken'),nanoid=require('nanoid'),Y=require('fast-json-stable-stringify'),te=require('eventemitter3'),eventsourceParser=require('eventsource-parser');require('zod');var ne=require('p-queue'),asyncMutex=require('async-mutex'),F=require('@anthropic-ai/sdk'),generativeAi=require('@google/generative-ai'),$=require('openai');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ae__default=/*#__PURE__*/_interopDefault(ae);var Y__default=/*#__PURE__*/_interopDefault(Y);var te__default=/*#__PURE__*/_interopDefault(te);var ne__default=/*#__PURE__*/_interopDefault(ne);var F__default=/*#__PURE__*/_interopDefault(F);var $__default=/*#__PURE__*/_interopDefault($);var E="cl100k_base",Z={"gpt-4":"cl100k_base","gpt-4-turbo":"cl100k_base","gpt-3.5-turbo":"cl100k_base","claude-3":"cl100k_base","claude-3.5":"cl100k_base"},w=class{encoding;cache;maxCacheSize;constructor(t,e=1e4){let r=t&&Z[t]||E;this.encoding=tiktoken.get_encoding(r),this.cache=new Map,this.maxCacheSize=e;}countTokens(t){let e=this.cache.get(t);if(e!==void 0)return e;let r=this.encoding.encode(t).length;if(this.cache.size>=this.maxCacheSize){let a=this.cache.keys().next().value;this.cache.delete(a);}return this.cache.set(t,r),r}countMessageTokens(t){let e=0;for(let r of t){if(e+=this.countTokens(r.role),e+=this.countTokens(r.content),r.toolCalls)for(let a of r.toolCalls)e+=this.countTokens(a.name),e+=this.countTokens(JSON.stringify(a.arguments));e+=4;}return e+=3,e}estimateCost(t,e,r){let a={"gpt-4-turbo":{input:1e-5,output:29999999999999997e-21},"gpt-3.5-turbo":{input:5e-7,output:15e-7},"claude-3-opus":{input:14999999999999999e-21,output:75e-6},"claude-3-sonnet":{input:3e-6,output:14999999999999999e-21}},n=a[r]||a["gpt-3.5-turbo"];return t*n.input+e*n.output}clearCache(){this.cache.clear();}dispose(){this.encoding.free(),this.cache.clear();}},C=null;function _(s){return C||(C=new w(s)),C}function me(s,t){return _(t).countTokens(s)}function de(s,t){return _(t).countMessageTokens(s)}function f(s){let t=nanoid.nanoid();return s?`${s}_${t}`:t}function O(s){return Y__default.default(s)}function I(s){return s.map(t=>({...t,id:t.id||f("msg"),timestamp:t.timestamp||Date.now()}))}async function G(s,t){let e,r=t.initialDelay;for(let a=1;a<=t.maxAttempts;a++)try{return await s()}catch(n){if(e=n,a===t.maxAttempts)throw e;t.onRetry&&t.onRetry(a,e),await ee(Math.min(r,t.maxDelay)),r*=t.backoffMultiplier;}throw e}function ee(s){return new Promise(t=>setTimeout(t,s))}function ge(s,t){let e=[];for(let r=0;r<s.length;r+=t)e.push(s.slice(r,r+t));return e}function fe(s,t){let e;return (...r)=>{clearTimeout(e),e=setTimeout(()=>s(...r),t);}}function ve(s,t){let e;return (...r)=>{e||(s(...r),e=true,setTimeout(()=>e=false,t));}}function ye(s){try{return JSON.parse(s)}catch{return null}}function b(s){return typeof s=="object"&&s!==null&&s.constructor===Object}function D(s,...t){if(!t.length)return s;let e=t.shift();if(b(s)&&b(e))for(let r in e)b(e[r])?(s[r]||Object.assign(s,{[r]:{}}),D(s[r],e[r])):Object.assign(s,{[r]:e[r]});return D(s,...t)}async function Ce(s){let t=[];for await(let e of s)t.push(e);return t}async function we(s){let t=performance.now(),e=await s(),r=performance.now()-t;return {result:e,duration:r}}var g=class extends te__default.default{constructor(e=false){super();this.debug=e;}events=[];currentText="";currentToolCall=null;currentArtifact=null;metadata={};closed=false;writeText(e){if(this.closed)throw new Error("StreamWriter is closed");this.currentText+=e;let r={type:"text-delta",delta:e};this.emitEvent(r);}startToolCall(e,r){if(this.closed)throw new Error("StreamWriter is closed");let a=r||f("tool");this.currentToolCall={id:a,name:e,arguments:{}};let n={type:"tool-call-start",toolCall:this.currentToolCall};this.emitEvent(n);}writeToolCallDelta(e){if(this.closed)throw new Error("StreamWriter is closed");if(!this.currentToolCall)throw new Error("No active tool call");let r={type:"tool-call-delta",toolCallId:this.currentToolCall.id,delta:e};this.emitEvent(r);}endToolCall(e){if(this.closed)throw new Error("StreamWriter is closed");if(!this.currentToolCall)throw new Error("No active tool call");this.currentToolCall.arguments=e;let r={type:"tool-call-end",toolCall:this.currentToolCall};this.emitEvent(r),this.currentToolCall=null;}writeToolResult(e,r,a){if(this.closed)throw new Error("StreamWriter is closed");let n={type:"tool-result",result:{toolCallId:e,result:r,error:a}};this.emitEvent(n);}startArtifact(e,r){if(this.closed)throw new Error("StreamWriter is closed");let a=r?.id||f("artifact");this.currentArtifact={id:a,type:e,language:r?.language,title:r?.title,description:r?.description,content:""};let n={type:"artifact-start",artifact:{id:this.currentArtifact.id,type:this.currentArtifact.type,language:this.currentArtifact.language,title:this.currentArtifact.title,description:this.currentArtifact.description}};this.emitEvent(n);}writeArtifactDelta(e){if(this.closed)throw new Error("StreamWriter is closed");if(!this.currentArtifact)throw new Error("No active artifact");this.currentArtifact.content+=e;let r={type:"artifact-delta",delta:e};this.emitEvent(r);}endArtifact(e){if(this.closed)throw new Error("StreamWriter is closed");if(!this.currentArtifact)throw new Error("No active artifact");e&&(this.currentArtifact.metadata=e);let r={type:"artifact-end",artifact:this.currentArtifact};this.emitEvent(r),this.currentArtifact=null;}writeMetadata(e){if(this.closed)throw new Error("StreamWriter is closed");this.metadata={...this.metadata,...e};let r={type:"metadata",metadata:e};this.emitEvent(r);}writeUsage(e){if(this.closed)throw new Error("StreamWriter is closed");let r={type:"usage",usage:e};this.emitEvent(r);}writeError(e){if(this.closed)throw new Error("StreamWriter is closed");let r={type:"error",error:e};this.emitEvent(r);}done(e){if(this.closed)return;let a={type:"done",finalMessage:{id:e?.id||f("msg"),role:e?.role||"assistant",content:e?.content||this.currentText,metadata:{...this.metadata,...e?.metadata},timestamp:Date.now(),...e?.toolCalls&&{toolCalls:e.toolCalls},...e?.toolResults&&{toolResults:e.toolResults}}};this.emitEvent(a),this.closed=true,this.emit("close");}getEvents(){return [...this.events]}async*toGenerator(){let e=[],r=null,a=false,n=
|
|
1
|
+
'use strict';var ae=require('ioredis'),lruCache=require('lru-cache'),tiktoken=require('tiktoken'),nanoid=require('nanoid'),Y=require('fast-json-stable-stringify'),te=require('eventemitter3'),eventsourceParser=require('eventsource-parser');require('zod');var ne=require('p-queue'),asyncMutex=require('async-mutex'),F=require('@anthropic-ai/sdk'),generativeAi=require('@google/generative-ai'),$=require('openai');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ae__default=/*#__PURE__*/_interopDefault(ae);var Y__default=/*#__PURE__*/_interopDefault(Y);var te__default=/*#__PURE__*/_interopDefault(te);var ne__default=/*#__PURE__*/_interopDefault(ne);var F__default=/*#__PURE__*/_interopDefault(F);var $__default=/*#__PURE__*/_interopDefault($);var E="cl100k_base",Z={"gpt-4":"cl100k_base","gpt-4-turbo":"cl100k_base","gpt-3.5-turbo":"cl100k_base","claude-3":"cl100k_base","claude-3.5":"cl100k_base"},w=class{encoding;cache;maxCacheSize;constructor(t,e=1e4){let r=t&&Z[t]||E;this.encoding=tiktoken.get_encoding(r),this.cache=new Map,this.maxCacheSize=e;}countTokens(t){let e=this.cache.get(t);if(e!==void 0)return e;let r=this.encoding.encode(t).length;if(this.cache.size>=this.maxCacheSize){let a=this.cache.keys().next().value;this.cache.delete(a);}return this.cache.set(t,r),r}countMessageTokens(t){let e=0;for(let r of t){if(e+=this.countTokens(r.role),e+=this.countTokens(r.content),r.toolCalls)for(let a of r.toolCalls)e+=this.countTokens(a.name),e+=this.countTokens(JSON.stringify(a.arguments));e+=4;}return e+=3,e}estimateCost(t,e,r){let a={"gpt-4-turbo":{input:1e-5,output:29999999999999997e-21},"gpt-3.5-turbo":{input:5e-7,output:15e-7},"claude-3-opus":{input:14999999999999999e-21,output:75e-6},"claude-3-sonnet":{input:3e-6,output:14999999999999999e-21}},n=a[r]||a["gpt-3.5-turbo"];return t*n.input+e*n.output}clearCache(){this.cache.clear();}dispose(){this.encoding.free(),this.cache.clear();}},C=null;function _(s){return C||(C=new w(s)),C}function me(s,t){return _(t).countTokens(s)}function de(s,t){return _(t).countMessageTokens(s)}function f(s){let t=nanoid.nanoid();return s?`${s}_${t}`:t}function O(s){return Y__default.default(s)}function I(s){return s.map(t=>({...t,id:t.id||f("msg"),timestamp:t.timestamp||Date.now()}))}async function G(s,t){let e,r=t.initialDelay;for(let a=1;a<=t.maxAttempts;a++)try{return await s()}catch(n){if(e=n,a===t.maxAttempts)throw e;t.onRetry&&t.onRetry(a,e),await ee(Math.min(r,t.maxDelay)),r*=t.backoffMultiplier;}throw e}function ee(s){return new Promise(t=>setTimeout(t,s))}function ge(s,t){let e=[];for(let r=0;r<s.length;r+=t)e.push(s.slice(r,r+t));return e}function fe(s,t){let e;return (...r)=>{clearTimeout(e),e=setTimeout(()=>s(...r),t);}}function ve(s,t){let e;return (...r)=>{e||(s(...r),e=true,setTimeout(()=>e=false,t));}}function ye(s){try{return JSON.parse(s)}catch{return null}}function b(s){return typeof s=="object"&&s!==null&&s.constructor===Object}function D(s,...t){if(!t.length)return s;let e=t.shift();if(b(s)&&b(e))for(let r in e)b(e[r])?(s[r]||Object.assign(s,{[r]:{}}),D(s[r],e[r])):Object.assign(s,{[r]:e[r]});return D(s,...t)}async function Ce(s){let t=[];for await(let e of s)t.push(e);return t}async function we(s){let t=performance.now(),e=await s(),r=performance.now()-t;return {result:e,duration:r}}var g=class extends te__default.default{constructor(e=false){super();this.debug=e;}events=[];currentText="";currentToolCall=null;currentArtifact=null;metadata={};closed=false;writeText(e){if(this.closed)throw new Error("StreamWriter is closed");this.currentText+=e;let r={type:"text-delta",delta:e};this.emitEvent(r);}startToolCall(e,r){if(this.closed)throw new Error("StreamWriter is closed");let a=r||f("tool");this.currentToolCall={id:a,name:e,arguments:{}};let n={type:"tool-call-start",toolCall:this.currentToolCall};this.emitEvent(n);}writeToolCallDelta(e){if(this.closed)throw new Error("StreamWriter is closed");if(!this.currentToolCall)throw new Error("No active tool call");let r={type:"tool-call-delta",toolCallId:this.currentToolCall.id,delta:e};this.emitEvent(r);}endToolCall(e){if(this.closed)throw new Error("StreamWriter is closed");if(!this.currentToolCall)throw new Error("No active tool call");this.currentToolCall.arguments=e;let r={type:"tool-call-end",toolCall:this.currentToolCall};this.emitEvent(r),this.currentToolCall=null;}writeToolResult(e,r,a){if(this.closed)throw new Error("StreamWriter is closed");let n={type:"tool-result",result:{toolCallId:e,result:r,error:a}};this.emitEvent(n);}startArtifact(e,r){if(this.closed)throw new Error("StreamWriter is closed");let a=r?.id||f("artifact");this.currentArtifact={id:a,type:e,language:r?.language,title:r?.title,description:r?.description,content:""};let n={type:"artifact-start",artifact:{id:this.currentArtifact.id,type:this.currentArtifact.type,language:this.currentArtifact.language,title:this.currentArtifact.title,description:this.currentArtifact.description}};this.emitEvent(n);}writeArtifactDelta(e){if(this.closed)throw new Error("StreamWriter is closed");if(!this.currentArtifact)throw new Error("No active artifact");this.currentArtifact.content+=e;let r={type:"artifact-delta",delta:e};this.emitEvent(r);}endArtifact(e){if(this.closed)throw new Error("StreamWriter is closed");if(!this.currentArtifact)throw new Error("No active artifact");e&&(this.currentArtifact.metadata=e);let r={type:"artifact-end",artifact:this.currentArtifact};this.emitEvent(r),this.currentArtifact=null;}writeMetadata(e){if(this.closed)throw new Error("StreamWriter is closed");this.metadata={...this.metadata,...e};let r={type:"metadata",metadata:e};this.emitEvent(r);}writeUsage(e){if(this.closed)throw new Error("StreamWriter is closed");let r={type:"usage",usage:e};this.emitEvent(r);}writeError(e){if(this.closed)throw new Error("StreamWriter is closed");let r={type:"error",error:e};this.emitEvent(r);}done(e){if(this.closed)return;let a={type:"done",finalMessage:{id:e?.id||f("msg"),role:e?.role||"assistant",content:e?.content||this.currentText,metadata:{...this.metadata,...e?.metadata},timestamp:Date.now(),...e?.toolCalls&&{toolCalls:e.toolCalls},...e?.toolResults&&{toolResults:e.toolResults}}};this.emitEvent(a),this.closed=true,this.emit("close");}getEvents(){return [...this.events]}async*toGenerator(){let e=[],r=null,a=false,n=o=>{r?(r({value:o,done:false}),r=null):e.push(o);},i=()=>{a=true,r&&(r({value:void 0,done:true}),r=null);};this.on("event",n),this.on("close",i);try{for(;!a||e.length>0;)e.length>0?yield e.shift():a||await new Promise(o=>{r=c=>{c.done||e.push(c.value),o();};});}finally{this.off("event",n),this.off("close",i);}}emitEvent(e){this.events.push(e),this.emit("event",e),this.debug&&console.log("[StreamWriter]",e.type,e);}isClosed(){return this.closed}reset(){this.events=[],this.currentText="",this.currentToolCall=null,this.currentArtifact=null,this.metadata={},this.closed=false,this.removeAllListeners();}};function ke(s=false){return new g(s)}async function*Re(s){let t=s.getReader(),e=new TextDecoder,r="",a=eventsourceParser.createParser({onEvent:n=>{r=n.data;},onRetry:n=>{}});try{for(;;){let{done:n,value:i}=await t.read();if(n)break;let o=e.decode(i,{stream:!0});if(a.feed(o),r)try{let c=JSON.parse(r);c.type&&(yield c),r="";}catch{continue}}a.reset({consume:!0});}finally{t.releaseLock();}}function x(s){let t=new TextEncoder;return new ReadableStream({async start(e){try{for await(let r of s){let a=`data: ${JSON.stringify(r)}
|
|
2
2
|
|
|
3
|
-
`;e.enqueue(t.encode(a));}e.close();}catch(r){e.error(r);}}})}async function N(s,t){let e=x(s),r={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(t.node&&t.node.res){let a=t.node.res;Object.entries(r).forEach(([
|
|
4
|
-
`);for(let c of
|
|
5
|
-
`);n=c.pop()||"";for(let m of c){if(!m.trim()||!m.startsWith("data: "))continue;let l=m.slice(6);if(l==="[DONE]"){e.done(),yield*e.toGenerator();return}try{let d=JSON.parse(l);if(d.choices&&d.choices[0]){let u=d.choices[0].delta;if(u?.content&&e.writeText(u.content),d.choices[0].finish_reason){e.done(),yield*e.toGenerator();return}}d.usage&&e.writeUsage({promptTokens:d.usage.prompt_tokens||0,completionTokens:d.usage.completion_tokens||0,totalTokens:d.usage.total_tokens||0}),yield*e.toGenerator();}catch(d){console.error("Failed to parse Sarvam chunk:",d);}}}}finally{r.releaseLock();}}formatMessages(t){return t.map(e=>({role:e.role,content:e.content}))}};function
|
|
3
|
+
`;e.enqueue(t.encode(a));}e.close();}catch(r){e.error(r);}}})}async function N(s,t){let e=x(s),r={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(t.node&&t.node.res){let a=t.node.res;Object.entries(r).forEach(([o,c])=>{a.setHeader(o,c);});let n=e.getReader(),i=new TextDecoder;try{for(;;){let{done:o,value:c}=await n.read();if(o)break;let m=i.decode(c,{stream:!0});a.write(m);}}finally{a.end();}}else {if(t instanceof Response||typeof t.body<"u")return;{Object.entries(r).forEach(([i,o])=>{t.setHeader(i,o);});let a=e.getReader(),n=new TextDecoder;try{for(;;){let{done:i,value:o}=await a.read();if(i)break;let c=n.decode(o,{stream:!0});t.write(c);}}finally{t.end();}}}}async function*U(...s){let t=s.map(async r=>{let a=[];for await(let n of r)a.push(n);return a}),e=await Promise.all(t);for(let r of e)for(let a of r)yield a;}async function*Pe(s,t){for await(let e of s){let r=t(e);r!==null&&(yield r);}}async function*Ae(s,t){for await(let e of s)t(e)&&(yield e);}async function T(s){let t=[];for await(let e of s)t.push(e);return t}async function*Ee(s,t){let e=0;for await(let r of s){if(e>=t)break;yield r,e++;}}async function*_e(s,t,e){let r=[],a=null,n=async()=>{if(r.length>0){let i=[...r];return r=[],i}return null};try{for await(let o of s)if(r.push(o),a&&(clearTimeout(a),a=null),r.length>=t){let c=await n();c&&(yield c);}else e&&(a=setTimeout(async()=>{let c=await n();},e));let i=await n();i&&(yield i);}finally{a&&clearTimeout(a);}}var p=class extends Error{constructor(e,r,a,n){super(e);this.code=r;this.statusCode=a;this.details=n;this.name="PaprFlareError";}},L=class extends p{constructor(e,r){super(e,"RATE_LIMIT_ERROR",429);this.retryAfter=r;}},q=class extends p{constructor(t,e){super(t,"VALIDATION_ERROR",400,e);}},h=class extends p{constructor(e,r,a){super(e,"PROVIDER_ERROR",a);this.provider=r;}};var k=class{client;keyPrefix;defaultTTL;constructor(t){this.client=new ae__default.default({host:t.host,port:t.port,password:t.password,db:t.db||0,retryStrategy:e=>Math.min(e*50,2e3),maxRetriesPerRequest:3,enableReadyCheck:true,lazyConnect:false}),this.keyPrefix=t.keyPrefix||"paprflare:",this.defaultTTL=t.ttl||3600,this.client.on("error",e=>{console.error("Redis cache error:",e);});}getKey(t){return `${this.keyPrefix}${t}`}async get(t){try{return await this.client.get(this.getKey(t))}catch(e){return console.error("Redis get error:",e),null}}async set(t,e,r){try{let a=r||this.defaultTTL;await this.client.setex(this.getKey(t),a,e);}catch(a){console.error("Redis set error:",a);}}async delete(t){try{await this.client.del(this.getKey(t));}catch(e){console.error("Redis delete error:",e);}}async clear(){try{let t=await this.client.keys(`${this.keyPrefix}*`);t.length>0&&await this.client.del(...t);}catch(t){console.error("Redis clear error:",t);}}async has(t){try{return await this.client.exists(this.getKey(t))===1}catch(e){return console.error("Redis has error:",e),false}}async disconnect(){await this.client.quit();}},S=class{cache;constructor(t){this.cache=new lruCache.LRUCache({max:t?.maxSize||1e3,ttl:t?.maxAge||36e5,updateAgeOnGet:true,updateAgeOnHas:true});}async get(t){return this.cache.get(t)||null}async set(t,e){this.cache.set(t,e);}async delete(t){this.cache.delete(t);}async clear(){this.cache.clear();}async has(t){return this.cache.has(t)}},v=class{cache;enabled;constructor(t){this.enabled=true,t.type==="redis"?this.cache=new k({...t.redis,ttl:t.ttl}):this.cache=new S(t.memory);}generateCacheKey(t,e){let r={messages:t.map(a=>({role:a.role,content:a.content,toolCalls:a.toolCalls})),model:e.model,temperature:e.temperature,maxTokens:e.maxTokens,tools:e.tools?.map(a=>a.name)};return O(r)}async getCachedResponse(t,e){if(!this.enabled||e.cache?.enabled===false)return null;let r=e.cache?.key||this.generateCacheKey(t,e),a=await this.cache.get(r);if(a)try{return JSON.parse(a)}catch(n){return console.error("Cache parse error:",n),await this.cache.delete(r),null}return null}async cacheResponse(t,e,r){if(!this.enabled||e.cache?.enabled===false)return;let a=e.cache?.key||this.generateCacheKey(t,e),n=e.cache?.ttl;await this.cache.set(a,JSON.stringify(r),n);}async invalidate(t,e){let r=this.generateCacheKey(t,e);await this.cache.delete(r);}async clearAll(){await this.cache.clear();}disable(){this.enabled=false;}enable(){this.enabled=true;}};var K=class{mode;cloudConfig;providerCallback;cacheManager;queue;mutex;defaultRetryConfig;constructor(t){this.mode=t.mode,this.mutex=new asyncMutex.Mutex;let e=t.rateLimit||{};if(this.queue=new ne__default.default({concurrency:e.maxConcurrent||100,interval:e.interval||1e3,intervalCap:e.intervalCap||100,timeout:3e4}),this.defaultRetryConfig=t.defaultRetry||{maxAttempts:3,initialDelay:1e3,maxDelay:1e4,backoffMultiplier:2},t.mode==="cloud"){if(!t.cloud)throw new p("Cloud config is required for cloud mode","INVALID_CONFIG");this.cloudConfig=t.cloud;}else {if(!t.selfManaged?.provider)throw new p("Provider callback is required for self-managed mode","INVALID_CONFIG");this.providerCallback=t.selfManaged.provider,t.selfManaged.cache&&(this.cacheManager=new v(t.selfManaged.cache));}}async chat(t,e={}){let r=I(t);if(this.validateConfig(e),this.cacheManager&&e.cache?.enabled!==false){let a=await this.cacheManager.getCachedResponse(r,e);if(a)return e.stream?this.createStreamingResponse(this.eventsToGenerator(a)):this.eventsToResponse(a)}return this.queue.add(async()=>this.executeChat(r,e))}async executeChat(t,e){let r=e.retry||this.defaultRetryConfig;return G(async()=>this.mode==="cloud"?this.executeCloudChat(t,e):this.executeSelfManagedChat(t,e),{...r,onRetry:(a,n)=>{console.warn(`[PaprFlare] Retry attempt ${a}/${r.maxAttempts}:`,n.message);}})}async executeCloudChat(t,e){let r=await fetch(`${this.cloudConfig.baseURL||"https://api.paprflare.in"}/v1/chat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.cloudConfig.apiKey}`,"X-PaprFlare-Region":this.cloudConfig.region||"in-mumbai"},body:JSON.stringify({messages:t,...e})});if(!r.ok)throw new p(`Cloud API error: ${r.statusText}`,"CLOUD_API_ERROR",r.status);if(e.stream){let a=this.parseCloudStream(r.body);return this.createStreamingResponse(a)}else return await r.json()}async executeSelfManagedChat(t,e){if(!this.providerCallback)throw new p("Provider callback not configured","INVALID_CONFIG");if(e.output?.schema)return this.executeStructuredOutput(t,e);let r=this.providerCallback(t,e);if(e.stream){if(this.cacheManager&&e.cache?.enabled!==false){let a=[],n=this.cacheStream(r,a);return await n.next().then(()=>{this.cacheManager.cacheResponse(t,e,a);}),this.createStreamingResponse(n)}return this.createStreamingResponse(r)}else {let a=await T(r);return this.cacheManager&&e.cache?.enabled!==false&&await this.cacheManager.cacheResponse(t,e,a),this.eventsToResponse(a)}}async executeStructuredOutput(t,e){let r=e.output.schema,a=this.providerCallback(t,{...e,stream:false}),n=await T(a),i=n.filter(o=>o.type==="text-delta").map(o=>o.type==="text-delta"?o.delta:"").join("");try{let o=JSON.parse(i),c=r.parse(o),m=n.find(d=>d.type==="done");return {message:m&&m.type==="done"?m.finalMessage:{id:f("msg"),role:"assistant",content:JSON.stringify(c),timestamp:Date.now()},usage:n.find(d=>d.type==="usage"&&"usage"in d)?.usage}}catch(o){throw new p(`Structured output validation failed: ${o}`,"VALIDATION_ERROR",400,o)}}createStreamingResponse(t){return {stream:t,toReadableStream:()=>x(t),pipeToResponse:async e=>{await N(t,e);},mergeStreams:(...e)=>U(t,...e)}}async*parseCloudStream(t){let e=t.getReader(),r=new TextDecoder;try{for(;;){let{done:a,value:n}=await e.read();if(a)break;let o=r.decode(n,{stream:!0}).split(`
|
|
4
|
+
`);for(let c of o)if(c.startsWith("data: ")){let m=c.slice(6);if(m==="[DONE]")break;try{yield JSON.parse(m);}catch(l){console.error("Failed to parse event:",l);}}}}finally{e.releaseLock();}}async*cacheStream(t,e){for await(let r of t)e.push(r),yield r;}async*eventsToGenerator(t){for(let e of t)yield e;}eventsToResponse(t){let e=t.find(a=>a.type==="done"),r=t.find(a=>a.type==="usage");if(!e||e.type!=="done")throw new p("No completion event found in response","INVALID_RESPONSE");return {message:e.finalMessage,usage:r&&r.type==="usage"?r.usage:void 0}}validateConfig(t){if(t.temperature!==void 0&&(t.temperature<0||t.temperature>2))throw new p("Temperature must be between 0 and 2","VALIDATION_ERROR",400);if(t.maxTokens!==void 0&&t.maxTokens<1)throw new p("Max tokens must be greater than 0","VALIDATION_ERROR",400);t.output?.schema&&!t.stream&&(t.stream=false);}getQueueStats(){return {size:this.queue.size,pending:this.queue.pending,concurrency:this.queue.concurrency}}async clearCache(){this.cacheManager&&await this.cacheManager.clearAll();}};function Xe(s){return "stream"in s}function Ye(s){return {schema:s,mode:"json"}}var M=class{client;defaultModel;constructor(t){this.client=new F__default.default({apiKey:t.apiKey,baseURL:t.baseURL,timeout:t.timeout||3e4,maxRetries:t.maxRetries||3,defaultHeaders:t.headers}),this.defaultModel=t.model||"claude-3-5-sonnet-20241022";}createCallback(){return (t,e)=>this.streamChat(t,e)}async*streamChat(t,e){let r=new g;try{let a=t.find(l=>l.role==="system"),n=t.filter(l=>l.role!=="system"),i=await this.client.messages.stream({model:e.model||this.defaultModel,messages:this.formatMessages(n),max_tokens:e.maxTokens||4096,temperature:e.temperature,top_p:e.topP,stop_sequences:e.stop,...a&&{system:a.content},...e.tools&&{tools:this.formatTools(e.tools)}}),o=null,c="";i.on("text",l=>{r.writeText(l);}),i.on("contentBlock",l=>{l.content_block?.type==="tool_use"&&(o=l.content_block,c="",r.startToolCall(o.name,o.id));}),i.on("contentBlock",l=>{l.delta?.type==="input_json_delta"&&(c+=l.delta.partial_json,r.writeToolCallDelta(l.delta.partial_json));}),i.on("abort",()=>{if(o&&c){try{let l=JSON.parse(o.input||c);r.endToolCall(l);}catch{}o=null,c="";}}),i.on("end",()=>{r.done();}),i.on("error",l=>{r.writeError(l.message||"Unknown error");});for await(let l of i)yield*r.toGenerator();let m=await i.finalMessage();m.usage&&r.writeUsage({promptTokens:m.usage.input_tokens,completionTokens:m.usage.output_tokens,totalTokens:m.usage.input_tokens+m.usage.output_tokens}),yield*r.toGenerator();}catch(a){throw a instanceof F__default.default.APIError?new h(a.message,"anthropic",a.status):new h(`Anthropic provider error: ${a.message}`,"anthropic")}}formatMessages(t){return t.map(e=>{let r=[];if(e.content&&r.push({type:"text",text:e.content}),e.toolCalls)for(let a of e.toolCalls)r.push({type:"tool_use",id:a.id,name:a.name,input:a.arguments});if(e.toolResults)for(let a of e.toolResults)r.push({type:"tool_result",tool_use_id:a.toolCallId,content:JSON.stringify(a.result),...a.error&&{is_error:true}});return {role:e.role==="assistant"?"assistant":"user",content:r.length===1&&r[0].type==="text"?r[0].text:r}})}formatTools(t){return t?t.map(e=>({name:e.name,description:e.description,input_schema:{type:"object",properties:{},required:[]}})):[]}};function nt(s){return new M(s).createCallback()}var R=class{client;defaultModel;constructor(t){this.client=new generativeAi.GoogleGenerativeAI(t.apiKey),this.defaultModel=t.model||"gemini-pro";}createCallback(){return (t,e)=>this.streamChat(t,e)}async*streamChat(t,e){let r=new g;try{let a=this.client.getGenerativeModel({model:e.model||this.defaultModel,generationConfig:{temperature:e.temperature,maxOutputTokens:e.maxTokens,topP:e.topP,stopSequences:e.stop}}),n=this.formatMessages(t),i=n[n.length-1],o;n.length>1?o=await a.startChat({history:n.slice(0,-1)}).sendMessageStream(i.parts):o=await a.generateContentStream(n[0]?.parts??[]);for await(let m of o.stream){let l=m.text();l&&r.writeText(l);let d=m.functionCalls();if(d)for(let u of d)r.startToolCall(u.name,u.name),r.endToolCall(u.args);yield*r.toGenerator();}let c=await o.response;c.usageMetadata&&r.writeUsage({promptTokens:c.usageMetadata.promptTokenCount||0,completionTokens:c.usageMetadata.candidatesTokenCount||0,totalTokens:c.usageMetadata.totalTokenCount||0}),r.done(),yield*r.toGenerator();}catch(a){throw new h(`Google provider error: ${a.message}`,"google")}}formatMessages(t){return t.filter(r=>r.role!=="system").map(r=>({role:r.role==="assistant"?"model":"user",parts:[{text:r.content}]}))}formatTools(t){return t?t.map(e=>({name:e.name,description:e.description,parameters:{type:"object",properties:{},required:[]}})):[]}};function dt(s){return new R(s).createCallback()}var P=class{client;defaultModel;constructor(t){this.client=new $__default.default({apiKey:t.apiKey,baseURL:t.baseURL,organization:t.organization,timeout:t.timeout||3e4,maxRetries:t.maxRetries||3,defaultHeaders:t.headers}),this.defaultModel=t.model||"gpt-4-turbo-preview";}createCallback(){return (t,e)=>this.streamChat(t,e)}async getFinalChatCompletion(t){let e=[...t].reverse().find(r=>r.usage!=null);return e?.usage?{usage:e.usage}:null}async*streamChat(t,e){let r=new g;try{let a=await this.client.chat.completions.create({model:e.model||this.defaultModel,messages:this.formatMessages(t),temperature:e.temperature,max_tokens:e.maxTokens,top_p:e.topP,frequency_penalty:e.frequencyPenalty,presence_penalty:e.presencePenalty,stop:e.stop,stream:!0,stream_options:{include_usage:!0},...e.tools&&{tools:this.formatTools(e.tools),tool_choice:e.toolChoice}}),n=null,i="",o=null,c=[];for await(let l of a){c.push(l);let d=l.choices[0]?.delta;if(d){if(d.content&&r.writeText(d.content),d.tool_calls)for(let u of d.tool_calls){let V=u.index;if(u.id){if(o&&i){try{let H=JSON.parse(i);r.endToolCall(H);}catch{}i="";}n=V,o=u,r.startToolCall(u.function?.name||"",u.id);}u.function?.arguments&&(i+=u.function.arguments,r.writeToolCallDelta(u.function.arguments));}if(l.choices[0]?.finish_reason&&o&&i)try{let u=JSON.parse(i);r.endToolCall(u);}catch{}yield*r.toGenerator();}}let m=await this.getFinalChatCompletion(c);m?.usage&&r.writeUsage({promptTokens:m.usage.prompt_tokens,completionTokens:m.usage.completion_tokens,totalTokens:m.usage.total_tokens}),r.done(),yield*r.toGenerator();}catch(a){throw a instanceof $__default.default.APIError?new h(a.message,"openai",a.status):new h(`OpenAI provider error: ${a.message}`,"openai")}}formatMessages(t){return t.map(e=>({role:e.role,content:e.content,...e.toolCalls&&{tool_calls:e.toolCalls.map(r=>({id:r.id,type:"function",function:{name:r.name,arguments:JSON.stringify(r.arguments)}}))},...e.toolResults&&e.role==="tool"&&{tool_call_id:e.toolResults[0]?.toolCallId}}))}formatTools(t){return t?t.map(e=>({type:"function",function:{name:e.name,description:e.description,parameters:{type:"object",properties:{},required:[]}}})):[]}};function vt(s){return new P(s).createCallback()}var A=class{config;baseURL;constructor(t){this.config=t,this.baseURL=t.baseURL||"https://api.sarvam.ai/v1";}createCallback(){return (t,e)=>this.streamChat(t,e)}async*streamChat(t,e){let r=new g;try{let a=await fetch(`${this.baseURL}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,...this.config.headers},body:JSON.stringify({model:e.model||this.config.model||"sarvam-1",messages:this.formatMessages(t),language:this.config.language||"hi",temperature:e.temperature,max_tokens:e.maxTokens,stream:!0})});if(!a.ok){let n=await a.json().catch(()=>({}));throw new h(n.error?.message||"Sarvam AI API error","sarvam",a.status)}yield*this.parseStream(a.body,r);}catch(a){throw a instanceof h?a:new h(`Sarvam provider error: ${a}`,"sarvam")}}async*parseStream(t,e){let r=t.getReader(),a=new TextDecoder,n="";try{for(;;){let{done:i,value:o}=await r.read();if(i)break;n+=a.decode(o,{stream:!0});let c=n.split(`
|
|
5
|
+
`);n=c.pop()||"";for(let m of c){if(!m.trim()||!m.startsWith("data: "))continue;let l=m.slice(6);if(l==="[DONE]"){e.done(),yield*e.toGenerator();return}try{let d=JSON.parse(l);if(d.choices&&d.choices[0]){let u=d.choices[0].delta;if(u?.content&&e.writeText(u.content),d.choices[0].finish_reason){e.done(),yield*e.toGenerator();return}}d.usage&&e.writeUsage({promptTokens:d.usage.prompt_tokens||0,completionTokens:d.usage.completion_tokens||0,totalTokens:d.usage.total_tokens||0}),yield*e.toGenerator();}catch(d){console.error("Failed to parse Sarvam chunk:",d);}}}}finally{r.releaseLock();}}formatMessages(t){return t.map(e=>({role:e.role,content:e.content}))}};function xt(s){return new A(s).createCallback()}var W=class{constructor(t,e){this.db=t;this.schema=e;}async createConversation(t,e){let[r]=await this.db.insert(this.schema.conversations).values({userId:t,metadata:e||{}}).returning();return r.id}async getConversation(t){let[e]=await this.db.select().from(this.schema.conversations).where(this.schema.conversations.id.eq(t));return e||null}async listConversations(t,e=50){return await this.db.select().from(this.schema.conversations).where(this.schema.conversations.userId.eq(t)).orderBy(this.schema.conversations.updatedAt.desc()).limit(e)}async deleteConversation(t){await this.db.delete(this.schema.conversations).where(this.schema.conversations.id.eq(t));}async saveMessage(t,e){await this.db.insert(this.schema.messages).values({id:e.id,conversationId:t,role:e.role,content:e.content,toolCalls:e.toolCalls||[],toolResults:e.toolResults||[],metadata:e.metadata||{},timestamp:e.timestamp||Date.now()});}async getMessages(t,e=100){return await this.db.select().from(this.schema.messages).where(this.schema.messages.conversationId.eq(t)).orderBy(this.schema.messages.timestamp.asc()).limit(e)}async updateMessage(t,e){await this.db.update(this.schema.messages).set(e).where(this.schema.messages.id.eq(t));}async updateConversationMetadata(t,e){await this.db.update(this.schema.conversations).set({metadata:e,updatedAt:new Date}).where(this.schema.conversations.id.eq(t));}};var j=class{constructor(t){this.adapter=t;}async startConversation(t,e){let r=await this.adapter.createConversation(t,{systemPrompt:e});return e&&await this.adapter.saveMessage(r,{id:`sys_${Date.now()}`,role:"system",content:e,timestamp:Date.now()}),r}async addMessage(t,e){await this.adapter.saveMessage(t,e);}async getConversationHistory(t,e){return await this.adapter.getMessages(t,e)}async deleteConversation(t){await this.adapter.deleteConversation(t);}async getUserConversations(t){return await this.adapter.listConversations(t)}};var J=class{conversations=new Map;messages=new Map;async createConversation(t,e){let r=`conv_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,a={id:r,userId:t,metadata:e||{},createdAt:new Date,updatedAt:new Date};return this.conversations.set(r,a),this.messages.set(r,[]),r}async getConversation(t){return this.conversations.get(t)||null}async listConversations(t,e=50){return Array.from(this.conversations.values()).filter(r=>r.userId===t).sort((r,a)=>a.updatedAt.getTime()-r.updatedAt.getTime()).slice(0,e)}async deleteConversation(t){this.conversations.delete(t),this.messages.delete(t);}async saveMessage(t,e){let r=this.messages.get(t)||[];r.push(e),this.messages.set(t,r);let a=this.conversations.get(t);a&&(a.updatedAt=new Date);}async getMessages(t,e=100){return (this.messages.get(t)||[]).slice(-e)}async updateMessage(t,e){for(let r of this.messages.values()){let a=r.findIndex(n=>n.id===t);if(a!==-1){r[a]={...r[a],...e};break}}}async updateConversationMetadata(t,e){let r=this.conversations.get(t);r&&(r.metadata={...r.metadata,...e},r.updatedAt=new Date);}};var z=class{constructor(t){this.prisma=t;}async createConversation(t,e){return (await this.prisma.conversation.create({data:{userId:t,metadata:e||{}}})).id}async getConversation(t){return await this.prisma.conversation.findUnique({where:{id:t}})}async listConversations(t,e=50){return await this.prisma.conversation.findMany({where:{userId:t},orderBy:{updatedAt:"desc"},take:e})}async deleteConversation(t){await this.prisma.conversation.delete({where:{id:t}});}async saveMessage(t,e){await this.prisma.message.create({data:{id:e.id,conversationId:t,role:e.role,content:e.content,toolCalls:e.toolCalls||[],toolResults:e.toolResults||[],metadata:e.metadata||{},timestamp:e.timestamp||Date.now()}});}async getMessages(t,e=100){return (await this.prisma.message.findMany({where:{conversationId:t},orderBy:{timestamp:"asc"},take:e})).map(a=>({id:a.id,role:a.role,content:a.content,toolCalls:a.toolCalls,toolResults:a.toolResults,metadata:a.metadata,timestamp:a.timestamp}))}async updateMessage(t,e){await this.prisma.message.update({where:{id:t},data:e});}async updateConversationMetadata(t,e){await this.prisma.conversation.update({where:{id:t},data:{metadata:e,updatedAt:new Date}});}};var y=class extends te__default.default{constructor(e){super();this.client=e;}threads=new Map;async createThread(e,r,a){let n=f("thread"),i={id:n,userId:e,messages:[],config:r,metadata:a||{},createdAt:Date.now(),updatedAt:Date.now(),status:"active"};return this.threads.set(n,i),n}getThread(e){return this.threads.get(e)||null}getUserThreads(e){return Array.from(this.threads.values()).filter(r=>r.userId===e).sort((r,a)=>a.updatedAt-r.updatedAt)}async addMessage(e,r){let a=this.threads.get(e);if(!a)throw new Error(`Thread ${e} not found`);let n={...r,id:r.id||f("msg"),timestamp:r.timestamp||Date.now()};a.messages.push(n),a.updatedAt=Date.now(),this.emit("event",{type:"message-added",threadId:e,message:n});}deleteThread(e){this.threads.delete(e);}clearThread(e){let r=this.threads.get(e);r&&(r.messages=[],r.updatedAt=Date.now());}updateThreadStatus(e,r){let a=this.threads.get(e);a&&(a.status=r,a.updatedAt=Date.now(),this.emit("event",{type:"status-changed",threadId:e,status:r}));}updateThreadMetadata(e,r){let a=this.threads.get(e);a&&(a.metadata={...a.metadata,...r},a.updatedAt=Date.now());}getStats(){let e=Array.from(this.threads.values());return {total:e.length,active:e.filter(r=>r.status==="active").length,paused:e.filter(r=>r.status==="paused").length,completed:e.filter(r=>r.status==="completed").length,error:e.filter(r=>r.status==="error").length}}cleanup(e=36e5){let r=Date.now(),a=[];for(let[n,i]of this.threads.entries())i.status!=="active"&&r-i.updatedAt>e&&a.push(n);for(let n of a)this.deleteThread(n);}};var B=class{constructor(t){this.client=t;}managers=new Map;getManager(t){return this.managers.has(t)||this.managers.set(t,new y(this.client)),this.managers.get(t)}removeManager(t){let e=this.managers.get(t);e&&(e.removeAllListeners(),this.managers.delete(t));}getAllActiveThreads(){let t=[];for(let e of this.managers.values()){let r=Array.from(e.threads.values());t.push(...r.filter(a=>a.status==="active"));}return t}cleanupAll(t=36e5){for(let e of this.managers.values())e.cleanup(t);}};exports.AnthropicProvider=M;exports.CacheManager=v;exports.DatabaseManager=j;exports.DrizzleAdapter=W;exports.GoogleProvider=R;exports.MemoryAdapter=J;exports.MemoryCache=S;exports.OpenAIProvider=P;exports.PaprFlare=K;exports.PaprFlareError=p;exports.PrismaAdapter=z;exports.ProviderError=h;exports.RateLimitError=L;exports.RedisCache=k;exports.SarvamProvider=A;exports.StreamWriter=g;exports.ThreadManager=y;exports.ThreadPool=B;exports.TokenCounter=w;exports.ValidationError=q;exports.batchStream=_e;exports.chunk=ge;exports.collectStream=T;exports.countMessageTokens=de;exports.countTokens=me;exports.createAnthropicProvider=nt;exports.createCacheKey=O;exports.createGoogleProvider=dt;exports.createOpenAIProvider=vt;exports.createSarvamProvider=xt;exports.createStreamWriter=ke;exports.debounce=fe;exports.deepMerge=D;exports.filterStream=Ae;exports.formatMessages=I;exports.generateId=f;exports.getTokenCounter=_;exports.isPlainObject=b;exports.isStreamingResponse=Xe;exports.measureTime=we;exports.mergeStreams=U;exports.parseSSEStream=Re;exports.pipeToResponse=N;exports.retry=G;exports.safeJsonParse=ye;exports.sleep=ee;exports.streamToArray=Ce;exports.structuredOutput=Ye;exports.takeStream=Ee;exports.throttle=ve;exports.toReadableStream=x;exports.transformStream=Pe;//# sourceMappingURL=index.js.map
|
|
6
6
|
//# sourceMappingURL=index.js.map
|