@easynet/agent-memory 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,13 @@
1
- /**
2
- * Ingest from a single URL: local path (PDF/txt/HTML/image) or remote URL.
3
- * Format/media detection is for ingest pipeline only—not use-case routing; routing is config-driven.
4
- * PDF requires pdf-parse; images may use captionFn for caption.
5
- * Chunking is paragraph-based (semantic); we never store image binaries—only caption + URL.
6
- */
7
1
  import type { AgentMemory } from "../core/agent-memory.js";
8
2
  import type { MemoryItem } from "../core/types.js";
9
3
  export interface IngestUrlOptions {
10
- /** Local path (e.g. ./doc.pdf) or remote URL; format detected by content-type/extension. */
11
4
  url: string;
12
5
  namespace: string;
13
6
  type?: "knowledge";
14
- /** Approximate chars per chunk; paragraph-based semantic chunking. Default 800. */
15
7
  chunkSize?: number;
16
8
  metadata?: Record<string, unknown>;
17
- /** For images: generate caption (VLM); we store caption + URL only, never the image binary. */
18
9
  captionFn?: (buffer: Buffer) => Promise<string>;
19
10
  }
20
- /**
21
- * Ingest from local path or remote URL; detect PDF/txt/HTML/image by format, then write as knowledge.
22
- */
23
11
  export declare function ingestUrlToMemory(memory: AgentMemory, options: IngestUrlOptions): Promise<{
24
12
  count: number;
25
13
  firstItem?: MemoryItem;
@@ -1 +1 @@
1
- {"version":3,"file":"url-ingest.d.ts","sourceRoot":"","sources":["../../../src/ingest/url-ingest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,4FAA4F;IAC5F,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,+FAA+F;IAC/F,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAoLD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CA2GpD"}
1
+ {"version":3,"file":"url-ingest.d.ts","sourceRoot":"","sources":["../../../src/ingest/url-ingest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAwBD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAIpD"}
@@ -1,301 +1,22 @@
1
1
  "use strict";
2
- /**
3
- * Ingest from a single URL: local path (PDF/txt/HTML/image) or remote URL.
4
- * Format/media detection is for ingest pipeline only—not use-case routing; routing is config-driven.
5
- * PDF requires pdf-parse; images may use captionFn for caption.
6
- * Chunking is paragraph-based (semantic); we never store image binaries—only caption + URL.
7
- */
8
2
  Object.defineProperty(exports, "__esModule", { value: true });
9
3
  exports.ingestUrlToMemory = ingestUrlToMemory;
10
- const node_path_1 = require("node:path");
11
- function isRemote(url) {
12
- return /^https?:\/\//i.test(url);
4
+ const common_ingest_js_1 = require("./common-ingest.js");
5
+ async function ingestToChunks(options) {
6
+ const common = (await (0, common_ingest_js_1.loadCommonModule)());
7
+ if (typeof common.ingestUrlToChunks !== "function") {
8
+ throw new Error("ingestUrlToMemory requires @easynet/agent-common with ingest exports. Please upgrade @easynet/agent-common.");
9
+ }
10
+ return common.ingestUrlToChunks({
11
+ url: options.url,
12
+ chunkSize: options.chunkSize,
13
+ metadata: options.metadata,
14
+ captionFn: options.captionFn,
15
+ });
13
16
  }
14
- function isFileProtocol(url) {
15
- return url.toLowerCase().startsWith("file://");
16
- }
17
- function getContentTypeFromPath(path) {
18
- const ext = path.replace(/\?.*$/, "").split(".").pop()?.toLowerCase() ?? "";
19
- const map = {
20
- pdf: "application/pdf",
21
- txt: "text/plain",
22
- html: "text/html",
23
- htm: "text/html",
24
- xhtml: "text/html",
25
- png: "image/png",
26
- jpg: "image/jpeg",
27
- jpeg: "image/jpeg",
28
- gif: "image/gif",
29
- webp: "image/webp",
30
- };
31
- return map[ext] ?? "application/octet-stream";
32
- }
33
- async function getResource(url) {
34
- if (isRemote(url)) {
35
- const res = await fetch(url);
36
- if (!res.ok)
37
- throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
38
- const contentType = res.headers.get("content-type")?.split(";")[0].trim() ?? "";
39
- const ab = await res.arrayBuffer();
40
- return { buffer: Buffer.from(ab), contentType };
41
- }
42
- const { readFile } = await import("node:fs/promises");
43
- const path = isFileProtocol(url) ? decodeURIComponent(url.slice(7)) : url;
44
- const buffer = await readFile(path);
45
- const contentType = getContentTypeFromPath(path);
46
- return { buffer, contentType };
47
- }
48
- /**
49
- * Semantic chunking: paragraph-based so chunks respect meaning.
50
- * Splits on double newline; long paragraphs are split by chunkSize.
51
- */
52
- function chunkText(text, chunkSize) {
53
- const trimmed = text.trim();
54
- if (!trimmed)
55
- return [];
56
- const chunks = [];
57
- const paragraphs = trimmed.split(/\n\n+/);
58
- let current = "";
59
- for (const p of paragraphs) {
60
- if (current.length + p.length + 2 <= chunkSize) {
61
- current = current ? `${current}\n\n${p}` : p;
62
- }
63
- else {
64
- if (current)
65
- chunks.push(current);
66
- if (p.length <= chunkSize) {
67
- current = p;
68
- }
69
- else {
70
- for (let i = 0; i < p.length; i += chunkSize) {
71
- chunks.push(p.slice(i, i + chunkSize));
72
- }
73
- current = "";
74
- }
75
- }
76
- }
77
- if (current)
78
- chunks.push(current);
79
- return chunks;
80
- }
81
- function resolveImageUrl(src, baseUrl) {
82
- if (!src?.trim())
83
- return null;
84
- const s = src.trim();
85
- if (/^https?:\/\//i.test(s))
86
- return s;
87
- try {
88
- return new URL(s, baseUrl).href;
89
- }
90
- catch {
91
- return null;
92
- }
93
- }
94
- /** Extract main body content and image URLs from HTML. Uses cheerio when available; else stripHtml + no images. */
95
- async function extractMainContent(html, pageUrl) {
96
- try {
97
- const cheerio = await import("cheerio");
98
- const $ = cheerio.load(html);
99
- $("script, style, nav, footer, header, aside, iframe").remove();
100
- const main = $("article").length > 0
101
- ? $("article").first()
102
- : $("main").length > 0
103
- ? $("main").first()
104
- : $("body");
105
- const textSource = main.length > 0 ? main : $("body");
106
- const text = textSource.text().replace(/\s+/g, " ").trim();
107
- const imageUrls = [];
108
- const imgContainer = main.length > 0 ? main : $("body");
109
- if (imgContainer.length > 0) {
110
- imgContainer.find("img").each((_, el) => {
111
- const resolved = resolveImageUrl($(el).attr("src") ?? undefined, pageUrl);
112
- if (resolved && !imageUrls.includes(resolved))
113
- imageUrls.push(resolved);
114
- });
115
- }
116
- else {
117
- $("img").each((_, el) => {
118
- const resolved = resolveImageUrl($(el).attr("src") ?? undefined, pageUrl);
119
- if (resolved && !imageUrls.includes(resolved))
120
- imageUrls.push(resolved);
121
- });
122
- }
123
- return { text, imageUrls };
124
- }
125
- catch {
126
- return { text: stripHtml(html), imageUrls: [] };
127
- }
128
- }
129
- function stripHtml(html) {
130
- const noScript = html.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, " ");
131
- const noStyle = noScript.replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, " ");
132
- const noTags = noStyle.replace(/<[^>]+>/g, " ");
133
- const decoded = noTags
134
- .replace(/&nbsp;/gi, " ")
135
- .replace(/&amp;/gi, "&")
136
- .replace(/&lt;/gi, "<")
137
- .replace(/&gt;/gi, ">")
138
- .replace(/&quot;/gi, '"');
139
- return decoded.replace(/\s+/g, " ").trim();
140
- }
141
- function isPdf(contentType, url) {
142
- if (contentType.includes("application/pdf"))
143
- return true;
144
- if (/\.pdf(\?|$)/i.test(url))
145
- return true;
146
- return false;
147
- }
148
- function isHtml(contentType, url) {
149
- if (contentType.includes("text/html"))
150
- return true;
151
- if (/\.(html?|xhtml)(\?|$)/i.test(url))
152
- return true;
153
- return false;
154
- }
155
- function isImage(contentType, url) {
156
- if (contentType.startsWith("image/"))
157
- return true;
158
- if (/\.(png|jpe?g|gif|webp)(\?|$)/i.test(url))
159
- return true;
160
- return false;
161
- }
162
- /** Detect image by magic bytes so uploads without extension (e.g. multer temp files) are still treated as images. */
163
- function isImageBuffer(buffer) {
164
- if (buffer.length < 12)
165
- return false;
166
- // PNG: 89 50 4E 47 0D 0A 1A 0A
167
- if (buffer[0] === 0x89 && buffer[1] === 0x50 && buffer[2] === 0x4e && buffer[3] === 0x47)
168
- return true;
169
- // JPEG: FF D8 FF
170
- if (buffer[0] === 0xff && buffer[1] === 0xd8 && buffer[2] === 0xff)
171
- return true;
172
- // GIF: GIF87a or GIF89a
173
- if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46)
174
- return true;
175
- // WebP: RIFF....WEBP
176
- if (buffer[0] === 0x52 && buffer[1] === 0x49 && buffer[2] === 0x46 && buffer[3] === 0x46 && buffer.length >= 12 &&
177
- buffer[8] === 0x57 && buffer[9] === 0x45 && buffer[10] === 0x42 && buffer[11] === 0x50)
178
- return true;
179
- return false;
180
- }
181
- async function extractTextFromPdf(buffer) {
182
- try {
183
- const pdfParse = (await import("pdf-parse")).default;
184
- const data = await pdfParse(buffer);
185
- return typeof data?.text === "string" ? data.text : "";
186
- }
187
- catch (e) {
188
- const err = e;
189
- if (err?.code === "ERR_MODULE_NOT_FOUND" || err?.message?.includes("pdf-parse")) {
190
- throw new Error("PDF support requires pdf-parse: pnpm add pdf-parse");
191
- }
192
- throw e;
193
- }
194
- }
195
- /**
196
- * Ingest from local path or remote URL; detect PDF/txt/HTML/image by format, then write as knowledge.
197
- */
198
17
  async function ingestUrlToMemory(memory, options) {
199
- const { url, namespace, type = "knowledge", chunkSize = 800, metadata = {}, captionFn, } = options;
200
- const { buffer, contentType } = await getResource(url);
201
- const ct = contentType.toLowerCase();
202
- const detectedAsImage = isImage(ct, url) || isImageBuffer(buffer);
203
- let firstItem;
204
- let totalCount = 0;
205
- if (isPdf(ct, url)) {
206
- const text = await extractTextFromPdf(buffer);
207
- const chunks = chunkText(text, chunkSize);
208
- for (const content of chunks) {
209
- if (!content.trim())
210
- continue;
211
- const item = await memory.memorize({
212
- namespace,
213
- type,
214
- content,
215
- metadata: { ...metadata, source: "doc" },
216
- });
217
- if (!firstItem)
218
- firstItem = item;
219
- totalCount += 1;
220
- }
221
- return { count: totalCount, firstItem };
222
- }
223
- if (detectedAsImage) {
224
- const text = captionFn ? await captionFn(buffer) : `(image: ${url})`;
225
- const item = await memory.memorize({
226
- namespace,
227
- type,
228
- content: text,
229
- metadata: { ...metadata, source: "doc" },
230
- });
231
- if (!firstItem)
232
- firstItem = item;
233
- return { count: 1, firstItem };
234
- }
235
- if (isHtml(ct, url)) {
236
- const html = buffer.toString("utf-8");
237
- const pageBase = isRemote(url)
238
- ? url
239
- : url.toLowerCase().startsWith("file://")
240
- ? url
241
- : "file://" + (0, node_path_1.resolve)(url).replace(/\\/g, "/");
242
- const { text: mainText, imageUrls } = await extractMainContent(html, pageBase);
243
- for (const imageUrl of imageUrls) {
244
- let content;
245
- if (captionFn) {
246
- try {
247
- const { buffer: imgBuffer } = await getResource(imageUrl);
248
- const caption = await captionFn(imgBuffer);
249
- content = `[image: ${imageUrl}]: ${caption}`;
250
- }
251
- catch {
252
- content = `[image: ${imageUrl}]`;
253
- }
254
- }
255
- else {
256
- content = `[image: ${imageUrl}]`;
257
- }
258
- const item = await memory.memorize({
259
- namespace,
260
- type,
261
- content,
262
- metadata: { ...metadata, source: "doc" },
263
- });
264
- if (!firstItem)
265
- firstItem = item;
266
- totalCount += 1;
267
- }
268
- const chunks = chunkText(mainText, chunkSize);
269
- for (const content of chunks) {
270
- if (!content.trim())
271
- continue;
272
- const item = await memory.memorize({
273
- namespace,
274
- type,
275
- content,
276
- metadata: { ...metadata, source: "doc" },
277
- });
278
- if (!firstItem)
279
- firstItem = item;
280
- totalCount += 1;
281
- }
282
- return { count: totalCount, firstItem };
283
- }
284
- const text = buffer.toString("utf-8");
285
- const chunks = chunkText(text, chunkSize);
286
- for (const content of chunks) {
287
- if (!content.trim())
288
- continue;
289
- const item = await memory.memorize({
290
- namespace,
291
- type,
292
- content,
293
- metadata: { ...metadata, source: "doc" },
294
- });
295
- if (!firstItem)
296
- firstItem = item;
297
- totalCount += 1;
298
- }
299
- return { count: totalCount, firstItem };
18
+ const { namespace, type = "knowledge" } = options;
19
+ const { chunks } = await ingestToChunks(options);
20
+ return (0, common_ingest_js_1.writeChunksToMemory)(memory, namespace, type, chunks);
300
21
  }
301
22
  //# sourceMappingURL=url-ingest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"url-ingest.js","sourceRoot":"","sources":["../../../src/ingest/url-ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"url-ingest.js","sourceRoot":"","sources":["../../../src/ingest/url-ingest.ts"],"names":[],"mappings":";;AAmCA,8CAOC;AAxCD,yDAAkG;AAWlG,KAAK,UAAU,cAAc,CAAC,OAAyB;IACrD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAA,mCAAgB,GAAE,CAOvC,CAAC;IACF,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,MAAmB,EACnB,OAAyB;IAEzB,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,IAAA,sCAAmB,EAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,11 +1,12 @@
1
1
  /**
2
- * In-memory cross-thread store: namespace-scoped MemoryItems.
3
- * Suitable for dev and single-process; use SQLite/Postgres for production.
2
+ * Adapter: reuse agent-common in-memory store implementation for agent-memory provider contract.
4
3
  */
5
4
  import type { MemoryItem, MemoryProvider, MemoryQueryRequest, MemoryWriteRequest } from "../core/types.js";
6
5
  export declare class InMemoryStoreProvider implements MemoryProvider {
7
- private store;
6
+ private readonly storePromise;
7
+ constructor();
8
8
  private key;
9
+ private getNamespaceItems;
9
10
  write(req: MemoryWriteRequest): Promise<MemoryItem>;
10
11
  query(req: MemoryQueryRequest): Promise<MemoryItem[]>;
11
12
  delete(id: string, namespace: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../../src/providers/in-memory-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAG1B,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,KAAK,CAAiC;IAE9C,OAAO,CAAC,GAAG;IAIL,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBnD,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAYrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQpE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIjE"}
1
+ {"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../../src/providers/in-memory-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAS3G,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;;IAgB1D,OAAO,CAAC,GAAG;YAIG,iBAAiB;IAQzB,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBnD,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAQrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAUpE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMjE"}
@@ -1,16 +1,31 @@
1
1
  "use strict";
2
2
  /**
3
- * In-memory cross-thread store: namespace-scoped MemoryItems.
4
- * Suitable for dev and single-process; use SQLite/Postgres for production.
3
+ * Adapter: reuse agent-common in-memory store implementation for agent-memory provider contract.
5
4
  */
6
5
  Object.defineProperty(exports, "__esModule", { value: true });
7
6
  exports.InMemoryStoreProvider = void 0;
8
7
  const node_crypto_1 = require("node:crypto");
9
8
  class InMemoryStoreProvider {
10
- store = new Map();
9
+ storePromise;
10
+ constructor() {
11
+ this.storePromise = (async () => {
12
+ const common = (await import("@easynet/agent-common"));
13
+ if (typeof common.createMemoryStore !== "function") {
14
+ throw new Error("InMemoryStoreProvider requires @easynet/agent-common with memory exports. Please upgrade @easynet/agent-common.");
15
+ }
16
+ return common.createMemoryStore({ type: "in_memory" });
17
+ })();
18
+ }
11
19
  key(id, namespace) {
12
20
  return `${namespace}:${id}`;
13
21
  }
22
+ async getNamespaceItems(namespace) {
23
+ const store = await this.storePromise;
24
+ const entries = await store.entries({
25
+ prefix: `${namespace}:`,
26
+ });
27
+ return entries.map((entry) => entry.value);
28
+ }
14
29
  async write(req) {
15
30
  const now = new Date().toISOString();
16
31
  const id = (0, node_crypto_1.randomUUID)();
@@ -26,36 +41,36 @@ class InMemoryStoreProvider {
26
41
  updated_at: now,
27
42
  },
28
43
  };
29
- this.store.set(this.key(id, req.namespace), item);
44
+ const store = await this.storePromise;
45
+ await store.set(this.key(id, req.namespace), item);
30
46
  return item;
31
47
  }
32
48
  async query(req) {
33
- const prefix = req.namespace + ":";
34
- const items = [];
35
- for (const [k, v] of this.store) {
36
- if (!k.startsWith(prefix))
37
- continue;
38
- if (req.types && !req.types.includes(v.type))
39
- continue;
40
- items.push(v);
41
- }
42
49
  const topK = req.topK ?? 10;
43
- return items.slice(0, topK);
50
+ const items = await this.getNamespaceItems(req.namespace);
51
+ return items
52
+ .filter((item) => !req.types || req.types.includes(item.type))
53
+ .slice(0, topK);
44
54
  }
45
55
  async delete(id, namespace) {
46
- this.store.delete(this.key(id, namespace));
56
+ const store = await this.storePromise;
57
+ await store.delete(this.key(id, namespace));
47
58
  }
48
59
  async getByKey(namespace, key) {
49
- for (const [, v] of this.store) {
50
- if (v.namespace === namespace && v.metadata?.path === key)
51
- return v;
60
+ const items = await this.getNamespaceItems(namespace);
61
+ for (const item of items) {
62
+ if (item.metadata?.path === key) {
63
+ return item;
64
+ }
52
65
  }
53
66
  return null;
54
67
  }
55
68
  async deleteByKey(namespace, key) {
56
- const item = await this.getByKey(namespace, key);
57
- if (item)
58
- this.store.delete(this.key(item.id, namespace));
69
+ const found = await this.getByKey(namespace, key);
70
+ if (!found)
71
+ return;
72
+ const store = await this.storePromise;
73
+ await store.delete(this.key(found.id, namespace));
59
74
  }
60
75
  }
61
76
  exports.InMemoryStoreProvider = InMemoryStoreProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../../../src/providers/in-memory-store.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAQH,6CAAyC;AAEzC,MAAa,qBAAqB;IACxB,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEtC,GAAG,CAAC,EAAU,EAAE,SAAiB;QACvC,OAAO,GAAG,SAAS,IAAI,EAAE,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAuB;QACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAA,wBAAU,GAAE,CAAC;QACxB,MAAM,IAAI,GAAe;YACvB,EAAE;YACF,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,QAAQ;YAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE;gBACR,GAAG,GAAG,CAAC,QAAQ;gBACf,UAAU,EAAG,GAAG,CAAC,QAAQ,EAAE,UAAqB,IAAI,GAAG;gBACvD,UAAU,EAAE,GAAG;aAChB;SACF,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAuB;QACjC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACnC,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;YACpC,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,SAAiB;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,GAAW;QAC3C,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAK,CAAC,CAAC,QAAQ,EAAE,IAAe,KAAK,GAAG;gBACnE,OAAO,CAAC,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,GAAW;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF;AAtDD,sDAsDC"}
1
+ {"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../../../src/providers/in-memory-store.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  /**
2
- * Mem0 provider: wraps mem0ai (OSS) as a MemoryProvider.
3
- * Use with an initialized Memory instance from mem0ai/oss.
2
+ * Adapter: reuse agent-common mem0 long-term provider via public memory factory.
4
3
  */
5
4
  import type { MemoryItem, MemoryProvider, MemoryQueryRequest, MemoryWriteRequest } from "../core/types.js";
6
5
  /** Simplified mem0ai Memory interface (avoids hard dependency). */
@@ -36,12 +35,14 @@ export interface Mem0ProviderOptions {
36
35
  namespaceToUserId?: (namespace: string) => string;
37
36
  }
38
37
  export declare class Mem0Provider implements MemoryProvider {
39
- private mem0;
40
- private namespaceToUserId;
38
+ private readonly mem0;
39
+ private readonly universal;
40
+ private readonly namespaceToUserId;
41
41
  constructor(options: Mem0ProviderOptions);
42
+ private toMemoryItem;
42
43
  write(req: MemoryWriteRequest): Promise<MemoryItem>;
43
44
  query(req: MemoryQueryRequest): Promise<MemoryItem[]>;
44
- delete(id: string, _namespace: string): Promise<void>;
45
+ delete(id: string, namespace: string): Promise<void>;
45
46
  deleteAllForNamespace(namespace: string): Promise<void>;
46
47
  }
47
48
  //# sourceMappingURL=mem0-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mem0-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/mem0-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAE1B,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,GAAG,CACD,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAChE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAChF,OAAO,CAAC;QACT,OAAO,EAAE,KAAK,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD;AAID,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,iBAAiB,CAAgC;gBAE7C,OAAO,EAAE,mBAAmB;IAUlC,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IA+CnD,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwBrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAM9D"}
1
+ {"version":3,"file":"mem0-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/mem0-provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAmB1B,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,GAAG,CACD,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAClD,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAChE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAChF,OAAO,CAAC;QACT,OAAO,EAAE,KAAK,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD;AAMD,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;gBAEtD,OAAO,EAAE,mBAAmB;IAuCxC,OAAO,CAAC,YAAY;IAoBd,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BnD,KAAK,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAerD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAM9D"}