@wavequery/conductor
Version:
Modular LLM orchestration framework
50 lines • 1.57 kB
JavaScript
import { EventEmitter } from "events";
export class MemoryStore extends EventEmitter {
constructor(options) {
super();
this.provider = options.provider;
this.namespace = options.namespace || "default";
this.defaultTTL = options.defaultTTL || 3600; // 1 hour default
}
getKey(key) {
return `${this.namespace}:${key}`;
}
async remember(key, value, options = {}) {
const item = {
id: key,
content: value,
metadata: {
timestamp: new Date(),
type: options.type || "generic",
ttl: options.ttl || this.defaultTTL,
tags: options.tags,
},
};
await this.provider.set(this.getKey(key), item);
this.emit("set", key, item);
}
async recall(key) {
const item = await this.provider.get(this.getKey(key));
if (!item)
return null;
this.emit("get", key, item);
return item.content;
}
async forget(key) {
await this.provider.delete(this.getKey(key));
this.emit("delete", key);
}
async searchByType(type) {
const items = await this.provider.search({ type });
return items.map((item) => item.content);
}
async searchByTags(tags) {
const items = await this.provider.search({ tags });
return items.map((item) => item.content);
}
async clear() {
await this.provider.clear();
this.emit("clear");
}
}
//# sourceMappingURL=memory-store.js.map