UNPKG

@prexo/ai-chat-sdk

Version:

AI Chat SDK for building AI chat applications with Context and History

1 lines 5.07 kB
{"version":3,"sources":["../src/history/in-redis.ts","../src/lib/constants.ts","../src/history/client.ts"],"names":["DEFAULT_CHAT_SESSION_ID","id","InRedisHistory","config","__publicField","redisConfig","client","Redis","params","message","sessionId","sessionTTL","TTL","sessionID","amount","startIndex","endIndex","getHistoryClient","redisUrl","redisToken"],"mappings":"iDAAA,IAAA,CAAA,CAAA,MAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,IAAA,CAAA,YAAA,CAAA,IAAA,CAAA,QAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CCCO,IAAMA,CAAAA,CAA2BC,CAAAA,EACtC,sBAAsBA,CAAAA,EAAU,SAAS,CAAA,CAAA,CAKb,CAAA,IAAA,EAAO,IAAA,CAAK,KAAI,CAAE,QAAA,EAAU,CAAA,EDOnD,IAAMC,CAAAA,CAAN,KAAmD,CAGxD,WAAA,CAAYC,CAAAA,CAA4B,CAFxCC,CAAAA,CAAA,IAAA,CAAO,UAGL,GAAM,CAAE,MAAA,CAAQC,CAAAA,CAAa,OAAAC,CAAO,CAAA,CAAIH,EAExC,GAAIG,CAAAA,CACF,KAAK,MAAA,CAASA,CAAAA,CAAAA,KAAAA,GACLD,CAAAA,CACT,IAAA,CAAK,OAAS,IAAIE,WAAAA,CAAMF,CAAW,CAAA,CAAA,KAEnC,MAAM,IAAI,KAAA,CACR,iFACF,CAEJ,CAEA,MAAM,UAAA,CAAWG,CAAAA,CAIC,CAChB,GAAM,CAAE,QAAAC,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,UAAA,CAAAC,CAAW,CAAA,CAAIH,CAAAA,CACvCI,EAAM,KAAA,CACND,CAAAA,GACFC,EAAMD,CAAAA,CAAAA,CAER,IAAME,EAAYb,CAAAA,CAAwBU,CAAS,EAEnD,MAAM,IAAA,CAAK,OAAO,KAAA,CAAMG,CAAAA,CAAW,KAAK,SAAA,CAAUJ,CAAO,CAAC,CAAA,CACtDE,GACF,MAAM,IAAA,CAAK,OAAO,MAAA,CAAOE,CAAAA,CAAWD,CAAG,EAE3C,CAEA,MAAM,cAAA,CAAe,CAAE,SAAA,CAAAF,CAAU,EAAyC,CACxE,MAAM,KAAK,MAAA,CAAO,GAAA,CAAIA,CAAS,EACjC,CAEA,MAAM,WAAA,CAAY,CAChB,SAAA,CAAAA,CAAAA,CACA,OAAAI,CAAAA,CAAS,EAAA,CACT,WAAAC,CAAAA,CAAa,CACf,EAIuB,CACrB,IAAMF,EAAYb,CAAAA,CAAwBU,CAAS,EAC7CM,CAAAA,CAAWD,CAAAA,CAAaD,CAAAA,CAAS,CAAA,CAMvC,QALiB,MAAM,IAAA,CAAK,OAAO,MAAA,CACjCD,CAAAA,CACAE,EACAC,CACF,CAAA,EACgB,OAAA,EAClB,CACF,EE5DO,IAAMC,EACXT,CAAAA,EACmC,CACnC,IAAMU,CAAAA,CAAWV,CAAAA,EAAQ,KAAA,EAAO,GAAA,CAC1BW,EAAaX,CAAAA,EAAQ,KAAA,EAAO,MAElC,GAAIU,CAAAA,EAAYC,EACd,OAAO,IAAIjB,EAAe,CACxB,MAAA,CAAQ,CACN,GAAA,CAAKgB,CAAAA,CACL,MAAOC,CACT,CACF,CAAC,CAEL","file":"history.cjs","sourcesContent":["import { Redis, type RedisConfigNodejs } from \"@upstash/redis\";\nimport type { Message } from \"ai\";\nimport {\n DEFAULT_CHAT_SESSION_ID,\n DEFAULT_HISTORY_LENGTH,\n DEFAULT_HISTORY_TTL,\n} from \"../lib/constants\";\nimport type { BaseMessageHistory } from \"../types\";\n\nexport type RedisHistoryConfig = {\n config?: RedisConfigNodejs;\n client?: Redis;\n};\n\nexport class InRedisHistory implements BaseMessageHistory {\n public client: Redis;\n\n constructor(config: RedisHistoryConfig) {\n const { config: redisConfig, client } = config;\n\n if (client) {\n this.client = client;\n } else if (redisConfig) {\n this.client = new Redis(redisConfig);\n } else {\n throw new Error(\n \"Redis message stores require either a config object or a pre-configured client.\",\n );\n }\n }\n\n async addMessage(params: {\n message: Message;\n sessionId: string;\n sessionTTL?: number;\n }): Promise<void> {\n const { message, sessionId, sessionTTL } = params;\n let TTL = DEFAULT_HISTORY_TTL;\n if (sessionTTL) {\n TTL = sessionTTL;\n }\n const sessionID = DEFAULT_CHAT_SESSION_ID(sessionId);\n\n await this.client.lpush(sessionID, JSON.stringify(message));\n if (sessionTTL) {\n await this.client.expire(sessionID, TTL);\n }\n }\n\n async deleteMessages({ sessionId }: { sessionId: string }): Promise<void> {\n await this.client.del(sessionId);\n }\n\n async getMessages({\n sessionId,\n amount = DEFAULT_HISTORY_LENGTH,\n startIndex = 0,\n }: {\n sessionId: string;\n amount?: number;\n startIndex?: number;\n }): Promise<Message[]> {\n const sessionID = DEFAULT_CHAT_SESSION_ID(sessionId);\n const endIndex = startIndex + amount - 1;\n const messages = await this.client.lrange<Message>(\n sessionID,\n startIndex,\n endIndex,\n );\n return messages.reverse();\n }\n}\n","// Constants for the AI Chat SDK\nexport const DEFAULT_CHAT_SESSION_ID = (id?: string) =>\n `prexo-chat-session/${id ? id : \"default\"}`;\n\nexport const DEFAULT_HISTORY_LENGTH = 50;\nexport const DEFAULT_HISTORY_TTL = 86_400;\n\nexport const DEFAULT_MSG_ID = `msg-${Date.now().toString()}`;\nexport const DEFAULT_SIMILARITY_THRESHOLD = 0.5;\nexport const DEFAULT_TOP_K = 5;\n","\"use client\";\nimport type { BaseMessageHistory } from \"../types\";\nimport { InRedisHistory } from \"./in-redis\";\n\nexport type GetHistoryClientParams = {\n redis?: {\n url: string;\n token: string;\n };\n};\n\nexport const getHistoryClient = (\n params?: GetHistoryClientParams,\n): BaseMessageHistory | undefined => {\n const redisUrl = params?.redis?.url;\n const redisToken = params?.redis?.token;\n\n if (redisUrl && redisToken) {\n return new InRedisHistory({\n config: {\n url: redisUrl,\n token: redisToken,\n },\n });\n }\n};\n"]}