{"version":3,"file":"ipfs_datastore.cjs","names":["BaseListChatMessageHistory","message: BaseMessage","messages: BaseMessage[]","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,yDAA2B;CAC9E,AAAS,eAAe;EAAC;EAAa;EAAU;EAAW;CAAY;CAEvE,AAAS;CAET,AAAiB;CAEjB,YAAY,EAAE,WAAW,WAAiD,EAAE;EAC1E,MAAM,EAAE,UAAW,EAAC;EAEpB,KAAK,YAAY;EACjB,KAAK,YAAY;CAClB;CAED,MAAM,cAAsC;EAC1C,MAAM,OAAO,0BACX,KAAK,UAAU,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,WAAW,CAAE,EAAC,CACvD;EACD,MAAM,WAAW,KAAK,IAAI,CAAC,MAAM,MAAM,OAAO,EAAE,MAAM,CAAC;AAEvD,wEAAuC,SAAS;CACjD;CAED,MAAM,WAAWC,SAAqC;EACpD,MAAM,KAAK,YAAY,CAAC,OAAQ,EAAC;CAClC;CAED,MAAM,YAAYC,UAAwC;EACxD,MAAM,EAAE,QAAQ,GAAG,0BACjB,KAAK,UAAU,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,WAAW,CAAE,EAAC,CAC3D;EACD,MAAM,oFAAqD,SAAS;EAEpE,MAAM,QAAQ,mBAAmB,IAAI,CAAC,SAAS,WAAW;GACxD,KAAK,IAAIC,wBAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,QAAQ,QAAQ;GACnD,OAAO,MAAM,OAAO,QAAQ;EAC7B,GAAE;EAEH,0BAAU,KAAK,UAAU,QAAQ,MAAM,CAAC;CACzC;CAED,MAAM,QAAuB;EAC3B,MAAM,OAAO,KAAK,UAAU,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,WAAW,CAAE,EAAC;EAEvE,0BAAU,KAAK,UAAU,WAAW,KAAK,CAAC;CAC3C;AACF"}