{"version":3,"file":"astradb.cjs","names":["BaseListChatMessageHistory","DataAPIClient"],"sources":["../../../src/stores/message/astradb.ts"],"sourcesContent":["import { BaseListChatMessageHistory } from \"@langchain/core/chat_history\";\nimport {\n  BaseMessage,\n  StoredMessage,\n  mapChatMessagesToStoredMessages,\n  mapStoredMessagesToChatMessages,\n} from \"@langchain/core/messages\";\nimport { DataAPIClient, Collection } from \"@datastax/astra-db-ts\";\n\nexport interface AstraDBChatMessageHistoryInput {\n  token: string;\n  endpoint: string;\n  collectionName: string;\n  namespace?: string;\n  sessionId: string;\n}\n\nexport interface AstraDBChatMessageHistoryProps {\n  collection: Collection;\n  sessionId: string;\n}\n\n/**\n * Class for storing chat message history with Astra DB. It extends the\n * BaseListChatMessageHistory class and provides methods to get, add, and\n * clear messages.\n * @example\n *\n * ```typescript\n * const client = new AstraDB(\n *   process.env.ASTRA_DB_APPLICATION_TOKEN,\n *   process.env.ASTRA_DB_ENDPOINT,\n *   process.env.ASTRA_DB_NAMESPACE\n * );\n *\n * const collection = await client.collection(\"test_chat\");\n *\n * const chatHistory = new AstraDBChatMessageHistory({\n *   collection,\n *   sessionId: \"YOUR_SESSION_ID\",\n * });\n *\n * const messages = await chatHistory.getMessages();\n *\n * await chatHistory.clear();\n */\nexport class AstraDBChatMessageHistory extends BaseListChatMessageHistory {\n  lc_namespace = [\"langchain\", \"stores\", \"message\", \"astradb\"];\n\n  private sessionId: string;\n\n  private collection: Collection;\n\n  constructor({ collection, sessionId }: AstraDBChatMessageHistoryProps) {\n    super();\n    this.sessionId = sessionId;\n    this.collection = collection;\n  }\n\n  /**\n   * async initializer function to return a new instance of AstraDBChatMessageHistory in a single step\n   * @param AstraDBChatMessageHistoryInput\n   * @returns Promise<AstraDBChatMessageHistory>\n   *\n   * @example\n   * const chatHistory = await AstraDBChatMessageHistory.initialize({\n   *  token: process.env.ASTRA_DB_APPLICATION_TOKEN,\n   *  endpoint: process.env.ASTRA_DB_ENDPOINT,\n   *  namespace: process.env.ASTRA_DB_NAMESPACE,\n   *  collectionName:\"test_chat\",\n   *  sessionId: \"YOUR_SESSION_ID\"\n   * });\n   */\n  static async initialize({\n    token,\n    endpoint,\n    collectionName,\n    namespace,\n    sessionId,\n  }: AstraDBChatMessageHistoryInput): Promise<AstraDBChatMessageHistory> {\n    const client = new DataAPIClient(token, { caller: [\"langchainjs\"] });\n    const db = client.db(endpoint, { namespace });\n    const collection = await db.collection(collectionName);\n    return new AstraDBChatMessageHistory({ collection, sessionId });\n  }\n\n  async getMessages(): Promise<BaseMessage[]> {\n    const docs = this.collection.find({\n      sessionId: this.sessionId,\n    });\n\n    const docsArray = await docs.toArray();\n\n    const sortedDocs = docsArray.sort((a, b) => a.timestamp - b.timestamp);\n\n    const storedMessages: StoredMessage[] = sortedDocs.map((doc) => ({\n      type: doc.type,\n      data: doc.data,\n    }));\n\n    return mapStoredMessagesToChatMessages(storedMessages);\n  }\n\n  async addMessage(message: BaseMessage): Promise<void> {\n    const messages = mapChatMessagesToStoredMessages([message]);\n    const { type, data } = messages[0];\n\n    await this.collection.insertOne({\n      sessionId: this.sessionId,\n      timestamp: Date.now(),\n      type,\n      data,\n    });\n  }\n\n  async clear(): Promise<void> {\n    await this.collection.deleteMany({\n      sessionId: this.sessionId,\n    });\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAa,4BAAb,MAAa,kCAAkCA,6BAAAA,2BAA2B;CACxE,eAAe;EAAC;EAAa;EAAU;EAAW;EAAU;CAE5D;CAEA;CAEA,YAAY,EAAE,YAAY,aAA6C;AACrE,SAAO;AACP,OAAK,YAAY;AACjB,OAAK,aAAa;;;;;;;;;;;;;;;;CAiBpB,aAAa,WAAW,EACtB,OACA,UACA,gBACA,WACA,aACqE;AAIrE,SAAO,IAAI,0BAA0B;GAAE,YADpB,MAFJ,IAAIC,sBAAAA,cAAc,OAAO,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAClD,GAAG,UAAU,EAAE,WAAW,CAAC,CACjB,WAAW,eAAe;GACH;GAAW,CAAC;;CAGjE,MAAM,cAAsC;AAc1C,UAAA,GAAA,yBAAA,kCATkB,MAJL,KAAK,WAAW,KAAK,EAChC,WAAW,KAAK,WACjB,CAAC,CAE2B,SAAS,EAET,MAAM,GAAG,MAAM,EAAE,YAAY,EAAE,UAAU,CAEnB,KAAK,SAAS;GAC/D,MAAM,IAAI;GACV,MAAM,IAAI;GACX,EAAE,CAEmD;;CAGxD,MAAM,WAAW,SAAqC;EAEpD,MAAM,EAAE,MAAM,UAAA,GAAA,yBAAA,iCADmC,CAAC,QAAQ,CAAC,CAC3B;AAEhC,QAAM,KAAK,WAAW,UAAU;GAC9B,WAAW,KAAK;GAChB,WAAW,KAAK,KAAK;GACrB;GACA;GACD,CAAC;;CAGJ,MAAM,QAAuB;AAC3B,QAAM,KAAK,WAAW,WAAW,EAC/B,WAAW,KAAK,WACjB,CAAC"}