{"version":3,"file":"ipfs_datastore.cjs","names":["BaseListChatMessageHistory","Key"],"sources":["../../../src/stores/message/ipfs_datastore.ts"],"sourcesContent":["import { BaseListChatMessageHistory } from \"@langchain/core/chat_history\";\nimport {\n  type BaseMessage,\n  mapChatMessagesToStoredMessages,\n  mapStoredMessagesToChatMessages,\n} from \"@langchain/core/messages\";\nimport * as cborg from \"cborg\";\nimport { type Datastore, Key } from \"interface-datastore\";\nimport all from \"it-all\";\n\nexport interface IPFSDatastoreChatMessageHistoryInput {\n  sessionId: string;\n}\n\nexport interface IPFSDatastoreChatMessageHistoryProps {\n  datastore: Datastore;\n  sessionId: string;\n}\n\nexport class IPFSDatastoreChatMessageHistory extends BaseListChatMessageHistory {\n  readonly lc_namespace = [\"langchain\", \"stores\", \"message\", \"datastore\"];\n\n  readonly sessionId: string;\n\n  private readonly datastore: Datastore;\n\n  constructor({ datastore, sessionId }: IPFSDatastoreChatMessageHistoryProps) {\n    super({ sessionId });\n\n    this.datastore = datastore;\n    this.sessionId = sessionId;\n  }\n\n  async getMessages(): Promise<BaseMessage[]> {\n    const data = await all(\n      this.datastore.query({ prefix: `/${this.sessionId}` })\n    );\n    const messages = data.map((d) => cborg.decode(d.value));\n\n    return mapStoredMessagesToChatMessages(messages);\n  }\n\n  async addMessage(message: BaseMessage): Promise<void> {\n    await this.addMessages([message]);\n  }\n\n  async addMessages(messages: BaseMessage[]): Promise<void> {\n    const { length } = await all(\n      this.datastore.queryKeys({ prefix: `/${this.sessionId}` })\n    );\n    const serializedMessages = mapChatMessagesToStoredMessages(messages);\n\n    const pairs = serializedMessages.map((message, index) => ({\n      key: new Key(`/${this.sessionId}/${index + length}`),\n      value: cborg.encode(message),\n    }));\n\n    await all(this.datastore.putMany(pairs));\n  }\n\n  async clear(): Promise<void> {\n    const keys = this.datastore.queryKeys({ prefix: `/${this.sessionId}` });\n\n    await all(this.datastore.deleteMany(keys));\n  }\n}\n"],"mappings":";;;;;;;;;;;AAmBA,IAAa,kCAAb,cAAqDA,6BAAAA,2BAA2B;CAC9E,eAAwB;EAAC;EAAa;EAAU;EAAW;EAAY;CAEvE;CAEA;CAEA,YAAY,EAAE,WAAW,aAAmD;AAC1E,QAAM,EAAE,WAAW,CAAC;AAEpB,OAAK,YAAY;AACjB,OAAK,YAAY;;CAGnB,MAAM,cAAsC;AAM1C,UAAA,GAAA,yBAAA,kCALa,OAAA,GAAA,OAAA,SACX,KAAK,UAAU,MAAM,EAAE,QAAQ,IAAI,KAAK,aAAa,CAAC,CACvD,EACqB,KAAK,MAAM,MAAM,OAAO,EAAE,MAAM,CAAC,CAEP;;CAGlD,MAAM,WAAW,SAAqC;AACpD,QAAM,KAAK,YAAY,CAAC,QAAQ,CAAC;;CAGnC,MAAM,YAAY,UAAwC;EACxD,MAAM,EAAE,WAAW,OAAA,GAAA,OAAA,SACjB,KAAK,UAAU,UAAU,EAAE,QAAQ,IAAI,KAAK,aAAa,CAAC,CAC3D;EAGD,MAAM,SAAA,GAAA,yBAAA,iCAFqD,SAAS,CAEnC,KAAK,SAAS,WAAW;GACxD,KAAK,IAAIC,oBAAAA,IAAI,IAAI,KAAK,UAAU,GAAG,QAAQ,SAAS;GACpD,OAAO,MAAM,OAAO,QAAQ;GAC7B,EAAE;AAEH,SAAA,GAAA,OAAA,SAAU,KAAK,UAAU,QAAQ,MAAM,CAAC;;CAG1C,MAAM,QAAuB;EAC3B,MAAM,OAAO,KAAK,UAAU,UAAU,EAAE,QAAQ,IAAI,KAAK,aAAa,CAAC;AAEvE,SAAA,GAAA,OAAA,SAAU,KAAK,UAAU,WAAW,KAAK,CAAC"}