{"version":3,"file":"astradb.cjs","names":["BaseListChatMessageHistory","DataAPIClient","storedMessages: StoredMessage[]","message: BaseMessage"],"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,yDAA2B;CACxE,eAAe;EAAC;EAAa;EAAU;EAAW;CAAU;CAE5D,AAAQ;CAER,AAAQ;CAER,YAAY,EAAE,YAAY,WAA2C,EAAE;EACrE,OAAO;EACP,KAAK,YAAY;EACjB,KAAK,aAAa;CACnB;;;;;;;;;;;;;;;CAgBD,aAAa,WAAW,EACtB,OACA,UACA,gBACA,WACA,WAC+B,EAAsC;EACrE,MAAM,SAAS,IAAIC,qCAAc,OAAO,EAAE,QAAQ,CAAC,aAAc,EAAE;EACnE,MAAM,KAAK,OAAO,GAAG,UAAU,EAAE,UAAW,EAAC;EAC7C,MAAM,aAAa,MAAM,GAAG,WAAW,eAAe;AACtD,SAAO,IAAI,0BAA0B;GAAE;GAAY;EAAW;CAC/D;CAED,MAAM,cAAsC;EAC1C,MAAM,OAAO,KAAK,WAAW,KAAK,EAChC,WAAW,KAAK,UACjB,EAAC;EAEF,MAAM,YAAY,MAAM,KAAK,SAAS;EAEtC,MAAM,aAAa,UAAU,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,UAAU;EAEtE,MAAMC,iBAAkC,WAAW,IAAI,CAAC,SAAS;GAC/D,MAAM,IAAI;GACV,MAAM,IAAI;EACX,GAAE;AAEH,wEAAuC,eAAe;CACvD;CAED,MAAM,WAAWC,SAAqC;EACpD,MAAM,0EAA2C,CAAC,OAAQ,EAAC;EAC3D,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;EAEhC,MAAM,KAAK,WAAW,UAAU;GAC9B,WAAW,KAAK;GAChB,WAAW,KAAK,KAAK;GACrB;GACA;EACD,EAAC;CACH;CAED,MAAM,QAAuB;EAC3B,MAAM,KAAK,WAAW,WAAW,EAC/B,WAAW,KAAK,UACjB,EAAC;CACH;AACF"}