@easynet/agent-memory 1.0.34 → 1.0.36
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.
- package/README.md +1 -1
- package/dist/src/config/index.js +10 -18
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/ref.js +3 -8
- package/dist/src/config/ref.js.map +1 -1
- package/dist/src/core/agent-memory.d.ts +2 -0
- package/dist/src/core/agent-memory.d.ts.map +1 -1
- package/dist/src/core/agent-memory.js +71 -20
- package/dist/src/core/agent-memory.js.map +1 -1
- package/dist/src/core/config.js +5 -9
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/observability.js +2 -7
- package/dist/src/core/observability.js.map +1 -1
- package/dist/src/core/policy.js +3 -7
- package/dist/src/core/policy.js.map +1 -1
- package/dist/src/core/privacy.js +1 -5
- package/dist/src/core/privacy.js.map +1 -1
- package/dist/src/core/router.js +1 -5
- package/dist/src/core/router.js.map +1 -1
- package/dist/src/core/types.d.ts +1 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js +7 -12
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/create-agent-memory.d.ts +33 -1
- package/dist/src/create-agent-memory.d.ts.map +1 -1
- package/dist/src/create-agent-memory.helpers.js +14 -21
- package/dist/src/create-agent-memory.helpers.js.map +1 -1
- package/dist/src/create-agent-memory.js +166 -51
- package/dist/src/create-agent-memory.js.map +1 -1
- package/dist/src/index.d.ts +3 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -14
- package/dist/src/index.js.map +1 -1
- package/dist/src/ingest/common-ingest.d.ts +2 -2
- package/dist/src/ingest/common-ingest.d.ts.map +1 -1
- package/dist/src/ingest/common-ingest.js +2 -6
- package/dist/src/ingest/common-ingest.js.map +1 -1
- package/dist/src/ingest/compat-loaders.js +1 -4
- package/dist/src/ingest/compat-loaders.js.map +1 -1
- package/dist/src/ingest/index.js +2 -7
- package/dist/src/ingest/index.js.map +1 -1
- package/dist/src/ingest/pdf-ingest.js +4 -7
- package/dist/src/ingest/pdf-ingest.js.map +1 -1
- package/dist/src/ingest/url-ingest.d.ts +3 -2
- package/dist/src/ingest/url-ingest.d.ts.map +1 -1
- package/dist/src/ingest/url-ingest.js +148 -18
- package/dist/src/ingest/url-ingest.js.map +1 -1
- package/dist/src/integrations/deepagents-adapter.js +2 -6
- package/dist/src/integrations/deepagents-adapter.js.map +1 -1
- package/dist/src/integrations/langgraph.js +2 -6
- package/dist/src/integrations/langgraph.js.map +1 -1
- package/dist/src/internal.d.ts +7 -0
- package/dist/src/internal.d.ts.map +1 -0
- package/dist/src/internal.js +6 -0
- package/dist/src/internal.js.map +1 -0
- package/dist/src/providers/in-memory-store.js +3 -7
- package/dist/src/providers/in-memory-store.js.map +1 -1
- package/dist/src/providers/index.js +5 -14
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/mem0-provider.js +3 -7
- package/dist/src/providers/mem0-provider.js.map +1 -1
- package/dist/src/providers/optional-ctors.js +2 -6
- package/dist/src/providers/optional-ctors.js.map +1 -1
- package/dist/src/providers/rag-provider.js +1 -5
- package/dist/src/providers/rag-provider.js.map +1 -1
- package/dist/src/providers/sqlite-store.js +3 -7
- package/dist/src/providers/sqlite-store.js.map +1 -1
- package/dist/src/register-memory.d.ts +16 -0
- package/dist/src/register-memory.d.ts.map +1 -0
- package/dist/src/register-memory.js +18 -0
- package/dist/src/register-memory.js.map +1 -0
- package/dist/test/core/agent-memory.test.js +76 -45
- package/dist/test/core/agent-memory.test.js.map +1 -1
- package/dist/test/core/config.test.js +114 -119
- package/dist/test/core/config.test.js.map +1 -1
- package/dist/test/core/observability.test.js +20 -25
- package/dist/test/core/observability.test.js.map +1 -1
- package/dist/test/core/policy.test.js +27 -32
- package/dist/test/core/policy.test.js.map +1 -1
- package/dist/test/core/privacy.test.js +24 -29
- package/dist/test/core/privacy.test.js.map +1 -1
- package/dist/test/core/router.test.js +25 -30
- package/dist/test/core/router.test.js.map +1 -1
- package/dist/test/create-agent-memory.test.js +102 -78
- package/dist/test/create-agent-memory.test.js.map +1 -1
- package/dist/test/ingest/url-ingest.test.js +64 -69
- package/dist/test/ingest/url-ingest.test.js.map +1 -1
- package/dist/test/integration/agent-memory-flow.test.js +22 -27
- package/dist/test/integration/agent-memory-flow.test.js.map +1 -1
- package/dist/test/integration/helpers/ollama-live.js +2 -6
- package/dist/test/integration/helpers/ollama-live.js.map +1 -1
- package/dist/test/integration/real-memory-features.test.js +46 -51
- package/dist/test/integration/real-memory-features.test.js.map +1 -1
- package/dist/test/integration/url-ingest-flow.test.js +22 -27
- package/dist/test/integration/url-ingest-flow.test.js.map +1 -1
- package/dist/test/integration/vlm-llm-live.test.js +54 -59
- package/dist/test/integration/vlm-llm-live.test.js.map +1 -1
- package/dist/test/providers/in-memory-store.test.js +16 -21
- package/dist/test/providers/in-memory-store.test.js.map +1 -1
- package/dist/test/providers/mem0-provider.test.js +19 -24
- package/dist/test/providers/mem0-provider.test.js.map +1 -1
- package/dist/test/providers/rag-provider.test.js +27 -32
- package/dist/test/providers/rag-provider.test.js.map +1 -1
- package/dist/test/providers/sqlite-store.test.js +29 -34
- package/dist/test/providers/sqlite-store.test.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-memory-features.test.js","sourceRoot":"","sources":["../../../test/integration/real-memory-features.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"real-memory-features.test.js","sourceRoot":"","sources":["../../../test/integration/real-memory-features.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,42 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Integration tests: createAgentMemory + memorize(url) + recall (full stack).
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
(
|
|
18
|
-
(0, node_test_1.it)("createAgentMemory memorize with url ingests file and recall returns content", async () => {
|
|
19
|
-
const dir = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `agent-memory-integration-${(0, node_crypto_1.randomUUID)()}`);
|
|
20
|
-
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
21
|
-
const filePath = (0, node_path_1.join)(dir, "note.txt");
|
|
4
|
+
import { describe, it } from "node:test";
|
|
5
|
+
import assert from "node:assert";
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
import { writeFile, mkdir, rm } from "node:fs/promises";
|
|
8
|
+
import { tmpdir } from "node:os";
|
|
9
|
+
import { randomUUID } from "node:crypto";
|
|
10
|
+
import { pathToFileURL } from "node:url";
|
|
11
|
+
import { createAgentMemoryRegistry } from "../../src/create-agent-memory.js";
|
|
12
|
+
describe("url ingest integration", () => {
|
|
13
|
+
it("createAgentMemory memorize with url ingests file and recall returns content", async () => {
|
|
14
|
+
const dir = join(tmpdir(), `agent-memory-integration-${randomUUID()}`);
|
|
15
|
+
await mkdir(dir, { recursive: true });
|
|
16
|
+
const filePath = join(dir, "note.txt");
|
|
22
17
|
const content = "Integration chunk one.\n\nIntegration chunk two.";
|
|
23
|
-
await
|
|
24
|
-
const memoryRegistry = await
|
|
18
|
+
await writeFile(filePath, content, "utf-8");
|
|
19
|
+
const memoryRegistry = await createAgentMemoryRegistry({
|
|
25
20
|
config: {
|
|
26
21
|
stores: [{ id: "default", type: "in_memory" }],
|
|
27
22
|
},
|
|
28
23
|
});
|
|
29
24
|
const memory = await memoryRegistry.getAgentMemory();
|
|
30
25
|
try {
|
|
31
|
-
const item = await memory.memorize("test:ingest", "knowledge",
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
const item = await memory.memorize("test:ingest", "knowledge", pathToFileURL(filePath));
|
|
27
|
+
assert.ok(item.id);
|
|
28
|
+
assert.strictEqual(item.type, "knowledge");
|
|
34
29
|
const result = await memory.recall({
|
|
35
30
|
namespace: "test:ingest",
|
|
36
31
|
query: "Integration",
|
|
37
32
|
topK: 10,
|
|
38
33
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
assert.ok(result.items.length >= 1);
|
|
35
|
+
assert.ok(result.injectedText.includes("Integration"));
|
|
36
|
+
assert.ok(result.traceId);
|
|
42
37
|
}
|
|
43
38
|
finally {
|
|
44
|
-
await
|
|
39
|
+
await rm(dir, { recursive: true, force: true }).catch(() => { });
|
|
45
40
|
}
|
|
46
41
|
});
|
|
47
42
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-ingest-flow.test.js","sourceRoot":"","sources":["../../../test/integration/url-ingest-flow.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url-ingest-flow.test.js","sourceRoot":"","sources":["../../../test/integration/url-ingest-flow.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,UAAU,EAAE,EAAE,CAAC,CAAC;QACvE,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,kDAAkD,CAAC;QACnE,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC;YACrD,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;aAC/C;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAChC,aAAa,EACb,WAAW,EACX,aAAa,CAAC,QAAQ,CAAC,CACxB,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAE3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACjC,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,EAAE;aACT,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Live integration tests: real VLM (image caption) and LLM (classify) via Ollama.
|
|
4
3
|
* Run only when RUN_LIVE_INTEGRATION=1. Uses env for endpoints and models.
|
|
@@ -6,19 +5,15 @@
|
|
|
6
5
|
* VLM: AGENT_MEMORY_VLM_URL (default http://localhost:11434), AGENT_MEMORY_VLM_MODEL (default qwen3-vl:2b)
|
|
7
6
|
* LLM: AGENT_MEMORY_LLM_URL (default https://ollama-rtx-4070.easynet.world/), AGENT_MEMORY_LLM_MODEL (default gpt-oss-80k:latest)
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const node_crypto_1 = require("node:crypto");
|
|
19
|
-
const node_url_1 = require("node:url");
|
|
20
|
-
const create_agent_memory_js_1 = require("../../src/create-agent-memory.js");
|
|
21
|
-
const ollama_live_js_1 = require("./helpers/ollama-live.js");
|
|
8
|
+
import { describe, it } from "node:test";
|
|
9
|
+
import assert from "node:assert";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { writeFile, mkdir, rm } from "node:fs/promises";
|
|
12
|
+
import { tmpdir } from "node:os";
|
|
13
|
+
import { randomUUID } from "node:crypto";
|
|
14
|
+
import { pathToFileURL } from "node:url";
|
|
15
|
+
import { createAgentMemoryRegistry } from "../../src/create-agent-memory.js";
|
|
16
|
+
import { createOllamaCaptionFn, createOllamaClassifyMemoryFn, } from "./helpers/ollama-live.js";
|
|
22
17
|
const RUN_LIVE = process.env.RUN_LIVE_INTEGRATION === "1";
|
|
23
18
|
const VLM_URL = process.env.AGENT_MEMORY_VLM_URL ?? "http://localhost:11434";
|
|
24
19
|
const VLM_MODEL = process.env.AGENT_MEMORY_VLM_MODEL ?? "qwen3-vl:2b";
|
|
@@ -29,62 +24,62 @@ const MINIMAL_PNG = Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAA
|
|
|
29
24
|
const baseConfig = {
|
|
30
25
|
stores: [{ id: "default", type: "in_memory" }],
|
|
31
26
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const dir =
|
|
35
|
-
await
|
|
36
|
-
const imagePath =
|
|
37
|
-
await
|
|
27
|
+
describe("VLM/LLM live integration", { skip: !RUN_LIVE }, () => {
|
|
28
|
+
it("VLM: memorize image URL with captionFn and recall returns caption", async () => {
|
|
29
|
+
const dir = join(tmpdir(), `agent-memory-vlm-${randomUUID()}`);
|
|
30
|
+
await mkdir(dir, { recursive: true });
|
|
31
|
+
const imagePath = join(dir, "test.png");
|
|
32
|
+
await writeFile(imagePath, MINIMAL_PNG);
|
|
38
33
|
try {
|
|
39
|
-
const captionFn =
|
|
40
|
-
const memoryRegistry = await
|
|
34
|
+
const captionFn = createOllamaCaptionFn(VLM_URL, VLM_MODEL);
|
|
35
|
+
const memoryRegistry = await createAgentMemoryRegistry({
|
|
41
36
|
config: baseConfig,
|
|
42
37
|
captionFn,
|
|
43
38
|
});
|
|
44
39
|
const memory = await memoryRegistry.getAgentMemory();
|
|
45
|
-
const item = await memory.memorize("test:vlm-live", "knowledge",
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
const item = await memory.memorize("test:vlm-live", "knowledge", pathToFileURL(imagePath));
|
|
41
|
+
assert.ok(item.id);
|
|
42
|
+
assert.strictEqual(item.type, "knowledge");
|
|
48
43
|
const result = await memory.recall({
|
|
49
44
|
namespace: "test:vlm-live",
|
|
50
45
|
query: "image",
|
|
51
46
|
topK: 5,
|
|
52
47
|
});
|
|
53
|
-
|
|
48
|
+
assert.ok(result.items.length >= 1, "recall should return at least one item");
|
|
54
49
|
const content = result.items[0].content;
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
assert.ok(content && !content.startsWith("(image:"), "stored content should be VLM caption, not placeholder");
|
|
51
|
+
assert.ok(content.length > 5, "caption should be non-trivial");
|
|
57
52
|
}
|
|
58
53
|
finally {
|
|
59
|
-
await
|
|
54
|
+
await rm(dir, { recursive: true, force: true }).catch(() => { });
|
|
60
55
|
}
|
|
61
56
|
});
|
|
62
|
-
|
|
63
|
-
const classifyMemory =
|
|
64
|
-
const memoryRegistry = await
|
|
57
|
+
it("LLM: memorize without type uses classifyMemory and recall returns typed item", async () => {
|
|
58
|
+
const classifyMemory = createOllamaClassifyMemoryFn(LLM_URL, LLM_MODEL);
|
|
59
|
+
const memoryRegistry = await createAgentMemoryRegistry({
|
|
65
60
|
config: baseConfig,
|
|
66
61
|
classifyMemory,
|
|
67
62
|
});
|
|
68
63
|
const memory = await memoryRegistry.getAgentMemory();
|
|
69
64
|
const item = await memory.memorize("test:llm-live", "cross_thread", "GET /users returns a list of users. POST /users creates a user. See API docs.");
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
assert.ok(item.id);
|
|
66
|
+
assert.ok(["thread", "cross_thread", "knowledge"].includes(item.type), "type should be one of thread/cross_thread/knowledge");
|
|
72
67
|
const result = await memory.recall({
|
|
73
68
|
namespace: "test:llm-live",
|
|
74
69
|
query: "API",
|
|
75
70
|
topK: 5,
|
|
76
71
|
});
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
assert.strictEqual(result.items.length, 1);
|
|
73
|
+
assert.strictEqual(result.items[0].content, "GET /users returns a list of users. POST /users creates a user. See API docs.");
|
|
79
74
|
});
|
|
80
|
-
|
|
81
|
-
const dir =
|
|
82
|
-
await
|
|
83
|
-
const imagePath =
|
|
84
|
-
await
|
|
85
|
-
const captionFn =
|
|
86
|
-
const classifyMemory =
|
|
87
|
-
const memoryRegistry = await
|
|
75
|
+
it("full use case: VLM + LLM together — image caption, text classify, and recall", async () => {
|
|
76
|
+
const dir = join(tmpdir(), `agent-memory-full-${randomUUID()}`);
|
|
77
|
+
await mkdir(dir, { recursive: true });
|
|
78
|
+
const imagePath = join(dir, "doc.png");
|
|
79
|
+
await writeFile(imagePath, MINIMAL_PNG);
|
|
80
|
+
const captionFn = createOllamaCaptionFn(VLM_URL, VLM_MODEL);
|
|
81
|
+
const classifyMemory = createOllamaClassifyMemoryFn(LLM_URL, LLM_MODEL);
|
|
82
|
+
const memoryRegistry = await createAgentMemoryRegistry({
|
|
88
83
|
config: baseConfig,
|
|
89
84
|
captionFn,
|
|
90
85
|
classifyMemory,
|
|
@@ -92,40 +87,40 @@ const baseConfig = {
|
|
|
92
87
|
const memory = await memoryRegistry.getAgentMemory();
|
|
93
88
|
try {
|
|
94
89
|
// 1) Memorize image — real VLM captions it
|
|
95
|
-
const imageItem = await memory.memorize("test:full", "knowledge",
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
90
|
+
const imageItem = await memory.memorize("test:full", "knowledge", pathToFileURL(imagePath));
|
|
91
|
+
assert.ok(imageItem.id);
|
|
92
|
+
assert.strictEqual(imageItem.type, "knowledge");
|
|
93
|
+
assert.ok(imageItem.content && !imageItem.content.startsWith("(image:"), "VLM must have produced a real caption");
|
|
99
94
|
// 2) Memorize text without type — real LLM classifies it
|
|
100
95
|
const textItem = await memory.memorize("test:full", "cross_thread", "User preference: prefers dark theme and compact layout.");
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
assert.ok(textItem.id);
|
|
97
|
+
assert.ok(["thread", "cross_thread", "knowledge"].includes(textItem.type), "LLM must have classified type");
|
|
103
98
|
// 3) Recall — should return both items (real provider)
|
|
104
99
|
const recallResult = await memory.recall({
|
|
105
100
|
namespace: "test:full",
|
|
106
101
|
query: "preference and image",
|
|
107
102
|
topK: 10,
|
|
108
103
|
});
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
assert.ok(recallResult.items.length >= 2, "recall should return image + text");
|
|
105
|
+
assert.ok(recallResult.traceId);
|
|
111
106
|
const contents = recallResult.items.map((i) => i.content);
|
|
112
107
|
const hasCaption = contents.some((c) => c && !c.startsWith("(image:") && c.length > 5);
|
|
113
108
|
const hasPreference = contents.some((c) => c && c.includes("dark") && c.includes("preference"));
|
|
114
|
-
|
|
115
|
-
|
|
109
|
+
assert.ok(hasCaption, "recall should include VLM caption");
|
|
110
|
+
assert.ok(hasPreference, "recall should include user preference text");
|
|
116
111
|
// 4) Recall again — validate full stack formatting for prompt injection
|
|
117
112
|
const promptResult = await memory.recall({
|
|
118
113
|
namespace: "test:full",
|
|
119
114
|
query: "user preferences and any images",
|
|
120
115
|
topK: 10,
|
|
121
116
|
});
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
117
|
+
assert.ok(promptResult.traceId);
|
|
118
|
+
assert.ok(promptResult.injectedText.length > 0);
|
|
119
|
+
assert.ok(promptResult.injectedText.includes("knowledge") || promptResult.injectedText.includes("cross_thread") || promptResult.injectedText.includes("thread"), "injected text should include type context");
|
|
120
|
+
assert.ok(promptResult.items.length >= 2);
|
|
126
121
|
}
|
|
127
122
|
finally {
|
|
128
|
-
await
|
|
123
|
+
await rm(dir, { recursive: true, force: true }).catch(() => { });
|
|
129
124
|
}
|
|
130
125
|
});
|
|
131
126
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vlm-llm-live.test.js","sourceRoot":"","sources":["../../../test/integration/vlm-llm-live.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vlm-llm-live.test.js","sourceRoot":"","sources":["../../../test/integration/vlm-llm-live.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
-
const in_memory_store_js_1 = require("../../src/providers/in-memory-store.js");
|
|
9
|
-
(0, node_test_1.describe)("InMemoryStoreProvider", () => {
|
|
10
|
-
(0, node_test_1.it)("write and query", async () => {
|
|
11
|
-
const provider = new in_memory_store_js_1.InMemoryStoreProvider();
|
|
1
|
+
import { describe, it } from "node:test";
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import { InMemoryStoreProvider } from "../../src/providers/in-memory-store.js";
|
|
4
|
+
describe("InMemoryStoreProvider", () => {
|
|
5
|
+
it("write and query", async () => {
|
|
6
|
+
const provider = new InMemoryStoreProvider();
|
|
12
7
|
const item = await provider.write({
|
|
13
8
|
namespace: "user:1",
|
|
14
9
|
type: "cross_thread",
|
|
15
10
|
content: "Prefer dark mode.",
|
|
16
11
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
assert.ok(item.id);
|
|
13
|
+
assert.strictEqual(item.type, "cross_thread");
|
|
14
|
+
assert.strictEqual(item.content, "Prefer dark mode.");
|
|
20
15
|
const items = await provider.query({
|
|
21
16
|
namespace: "user:1",
|
|
22
17
|
query: "user preferences",
|
|
23
18
|
topK: 5,
|
|
24
19
|
});
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
assert.strictEqual(items.length, 1);
|
|
21
|
+
assert.strictEqual(items[0].content, "Prefer dark mode.");
|
|
27
22
|
});
|
|
28
|
-
|
|
29
|
-
const provider = new
|
|
23
|
+
it("getByKey and deleteByKey", async () => {
|
|
24
|
+
const provider = new InMemoryStoreProvider();
|
|
30
25
|
await provider.write({
|
|
31
26
|
namespace: "memory:fs",
|
|
32
27
|
type: "cross_thread",
|
|
@@ -34,11 +29,11 @@ const in_memory_store_js_1 = require("../../src/providers/in-memory-store.js");
|
|
|
34
29
|
metadata: { key: "/memories/foo.txt" },
|
|
35
30
|
});
|
|
36
31
|
const found = await provider.getByKey("memory:fs", "/memories/foo.txt");
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
assert.ok(found);
|
|
33
|
+
assert.strictEqual(found.content, "file content");
|
|
39
34
|
await provider.deleteByKey("memory:fs", "/memories/foo.txt");
|
|
40
35
|
const after = await provider.getByKey("memory:fs", "/memories/foo.txt");
|
|
41
|
-
|
|
36
|
+
assert.strictEqual(after, null);
|
|
42
37
|
});
|
|
43
38
|
});
|
|
44
39
|
//# sourceMappingURL=in-memory-store.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-store.test.js","sourceRoot":"","sources":["../../../test/providers/in-memory-store.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"in-memory-store.test.js","sourceRoot":"","sources":["../../../test/providers/in-memory-store.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC;YAChC,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,mBAAmB;SAC7B,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC;YACjC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC7C,MAAM,QAAQ,CAAC,KAAK,CAAC;YACnB,SAAS,EAAE,WAAW;YACtB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;SACvC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QACzE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAElD,MAAM,QAAQ,CAAC,WAAY,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QACzE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_test_1 = require("node:test");
|
|
7
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
-
const mem0_provider_js_1 = require("../../src/providers/mem0-provider.js");
|
|
1
|
+
import { describe, it } from "node:test";
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import { Mem0Provider } from "../../src/providers/mem0-provider.js";
|
|
9
4
|
function createMem0Mock() {
|
|
10
5
|
const rows = [];
|
|
11
6
|
let seq = 0;
|
|
@@ -48,36 +43,36 @@ function createMem0Mock() {
|
|
|
48
43
|
},
|
|
49
44
|
};
|
|
50
45
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const provider = new
|
|
46
|
+
describe("Mem0Provider", () => {
|
|
47
|
+
it("write + query + delete", async () => {
|
|
48
|
+
const provider = new Mem0Provider({ memory: createMem0Mock() });
|
|
54
49
|
const item = await provider.write({
|
|
55
50
|
namespace: "user:1",
|
|
56
51
|
type: "cross_thread",
|
|
57
52
|
content: "User likes black coffee.",
|
|
58
53
|
metadata: { key: "pref:coffee" },
|
|
59
54
|
});
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
55
|
+
assert.strictEqual(item.id, "m-1");
|
|
56
|
+
assert.strictEqual(item.type, "cross_thread");
|
|
57
|
+
assert.strictEqual(item.namespace, "user:1");
|
|
63
58
|
const items = await provider.query({
|
|
64
59
|
namespace: "user:1",
|
|
65
60
|
query: "coffee",
|
|
66
61
|
topK: 5,
|
|
67
62
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
63
|
+
assert.strictEqual(items.length, 1);
|
|
64
|
+
assert.strictEqual(items[0]?.content, "User likes black coffee.");
|
|
65
|
+
assert.strictEqual(items[0]?.metadata?.key, "pref:coffee");
|
|
71
66
|
await provider.delete(item.id, "user:1");
|
|
72
67
|
const after = await provider.query({
|
|
73
68
|
namespace: "user:1",
|
|
74
69
|
query: "coffee",
|
|
75
70
|
topK: 5,
|
|
76
71
|
});
|
|
77
|
-
|
|
72
|
+
assert.strictEqual(after.length, 0);
|
|
78
73
|
});
|
|
79
|
-
|
|
80
|
-
const provider = new
|
|
74
|
+
it("namespaceToUserId isolates data", async () => {
|
|
75
|
+
const provider = new Mem0Provider({
|
|
81
76
|
memory: createMem0Mock(),
|
|
82
77
|
namespaceToUserId: (ns) => `uid:${ns}`,
|
|
83
78
|
});
|
|
@@ -96,15 +91,15 @@ function createMem0Mock() {
|
|
|
96
91
|
query: "prefers",
|
|
97
92
|
topK: 10,
|
|
98
93
|
});
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
assert.strictEqual(alice.length, 1);
|
|
95
|
+
assert.strictEqual(alice[0]?.content, "Alice prefers TypeScript.");
|
|
101
96
|
const bob = await provider.query({
|
|
102
97
|
namespace: "bob",
|
|
103
98
|
query: "prefers",
|
|
104
99
|
topK: 10,
|
|
105
100
|
});
|
|
106
|
-
|
|
107
|
-
|
|
101
|
+
assert.strictEqual(bob.length, 1);
|
|
102
|
+
assert.strictEqual(bob[0]?.content, "Bob prefers Rust.");
|
|
108
103
|
});
|
|
109
104
|
});
|
|
110
105
|
//# sourceMappingURL=mem0-provider.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mem0-provider.test.js","sourceRoot":"","sources":["../../../test/providers/mem0-provider.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mem0-provider.test.js","sourceRoot":"","sources":["../../../test/providers/mem0-provider.test.ts"],"names":[],"mappings":"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"}
|