@langchain/community
Version:
Third-party integrations for LangChain.js
45 lines (44 loc) • 1.7 kB
JavaScript
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