UNPKG

@langchain/community

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