UNPKG

@langchain/community

Version:
45 lines (44 loc) 1.7 kB
import { __exportAll } from "../../_virtual/_rolldown/runtime.js"; import { mapChatMessagesToStoredMessages, mapStoredMessagesToChatMessages } from "@langchain/core/messages"; import { BaseListChatMessageHistory } from "@langchain/core/chat_history"; import * as cborg from "cborg"; import { Key } from "interface-datastore"; import all from "it-all"; //#region src/stores/message/ipfs_datastore.ts var ipfs_datastore_exports = /* @__PURE__ */ __exportAll({ IPFSDatastoreChatMessageHistory: () => IPFSDatastoreChatMessageHistory }); var IPFSDatastoreChatMessageHistory = class extends BaseListChatMessageHistory { lc_namespace = [ "langchain", "stores", "message", "datastore" ]; sessionId; datastore; constructor({ datastore, sessionId }) { super({ sessionId }); this.datastore = datastore; this.sessionId = sessionId; } async getMessages() { return mapStoredMessagesToChatMessages((await all(this.datastore.query({ prefix: `/${this.sessionId}` }))).map((d) => cborg.decode(d.value))); } async addMessage(message) { await this.addMessages([message]); } async addMessages(messages) { const { length } = await all(this.datastore.queryKeys({ prefix: `/${this.sessionId}` })); const pairs = mapChatMessagesToStoredMessages(messages).map((message, index) => ({ key: new Key(`/${this.sessionId}/${index + length}`), value: cborg.encode(message) })); await all(this.datastore.putMany(pairs)); } async clear() { const keys = this.datastore.queryKeys({ prefix: `/${this.sessionId}` }); await all(this.datastore.deleteMany(keys)); } }; //#endregion export { IPFSDatastoreChatMessageHistory, ipfs_datastore_exports }; //# sourceMappingURL=ipfs_datastore.js.map