UNPKG

@langchain/community

Version:
1 lines 3.03 kB
{"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"}