{"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"]}