@easynet/agent-memory 1.0.56 → 1.0.58
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/dist/test/integration/real-memory-features.test.js +144 -146
- package/dist/test/integration/real-memory-features.test.js.map +1 -1
- package/dist/test/integration/vlm-llm-live.test.js +88 -90
- package/dist/test/integration/vlm-llm-live.test.js.map +1 -1
- package/dist/test/unit/core/agent-memory.test.d.ts.map +1 -0
- package/dist/test/unit/core/agent-memory.test.js +175 -0
- package/dist/test/unit/core/agent-memory.test.js.map +1 -0
- package/dist/test/unit/core/config.test.d.ts.map +1 -0
- package/dist/test/unit/core/config.test.js +292 -0
- package/dist/test/unit/core/config.test.js.map +1 -0
- package/dist/test/unit/core/observability.test.d.ts.map +1 -0
- package/dist/test/{core → unit/core}/observability.test.js +1 -1
- package/dist/test/unit/core/observability.test.js.map +1 -0
- package/dist/test/unit/core/policy.test.d.ts.map +1 -0
- package/dist/test/{core → unit/core}/policy.test.js +1 -1
- package/dist/test/unit/core/policy.test.js.map +1 -0
- package/dist/test/unit/core/privacy.test.d.ts.map +1 -0
- package/dist/test/{core → unit/core}/privacy.test.js +1 -1
- package/dist/test/unit/core/privacy.test.js.map +1 -0
- package/dist/test/unit/core/router.test.d.ts.map +1 -0
- package/dist/test/unit/core/router.test.js +138 -0
- package/dist/test/unit/core/router.test.js.map +1 -0
- package/dist/test/unit/create-agent-memory.test.d.ts.map +1 -0
- package/dist/test/unit/create-agent-memory.test.js +369 -0
- package/dist/test/unit/create-agent-memory.test.js.map +1 -0
- package/dist/test/unit/ingest/url-ingest.test.d.ts.map +1 -0
- package/dist/test/unit/ingest/url-ingest.test.js +135 -0
- package/dist/test/unit/ingest/url-ingest.test.js.map +1 -0
- package/dist/test/unit/providers/in-memory-store.test.d.ts.map +1 -0
- package/dist/test/{providers → unit/providers}/in-memory-store.test.js +1 -1
- package/dist/test/unit/providers/in-memory-store.test.js.map +1 -0
- package/dist/test/unit/providers/mem0-provider.test.d.ts.map +1 -0
- package/dist/test/{providers → unit/providers}/mem0-provider.test.js +1 -1
- package/dist/test/unit/providers/mem0-provider.test.js.map +1 -0
- package/dist/test/unit/providers/rag-provider.test.d.ts.map +1 -0
- package/dist/test/unit/providers/rag-provider.test.js +106 -0
- package/dist/test/unit/providers/rag-provider.test.js.map +1 -0
- package/dist/test/unit/providers/sqlite-store.test.d.ts.map +1 -0
- package/dist/test/unit/providers/sqlite-store.test.js +113 -0
- package/dist/test/unit/providers/sqlite-store.test.js.map +1 -0
- package/package.json +8 -8
- package/dist/test/core/agent-memory.test.d.ts.map +0 -1
- package/dist/test/core/agent-memory.test.js +0 -177
- package/dist/test/core/agent-memory.test.js.map +0 -1
- package/dist/test/core/config.test.d.ts.map +0 -1
- package/dist/test/core/config.test.js +0 -294
- package/dist/test/core/config.test.js.map +0 -1
- package/dist/test/core/observability.test.d.ts.map +0 -1
- package/dist/test/core/observability.test.js.map +0 -1
- package/dist/test/core/policy.test.d.ts.map +0 -1
- package/dist/test/core/policy.test.js.map +0 -1
- package/dist/test/core/privacy.test.d.ts.map +0 -1
- package/dist/test/core/privacy.test.js.map +0 -1
- package/dist/test/core/router.test.d.ts.map +0 -1
- package/dist/test/core/router.test.js +0 -140
- package/dist/test/core/router.test.js.map +0 -1
- package/dist/test/create-agent-memory.test.d.ts.map +0 -1
- package/dist/test/create-agent-memory.test.js +0 -371
- package/dist/test/create-agent-memory.test.js.map +0 -1
- package/dist/test/ingest/url-ingest.test.d.ts.map +0 -1
- package/dist/test/ingest/url-ingest.test.js +0 -137
- package/dist/test/ingest/url-ingest.test.js.map +0 -1
- package/dist/test/providers/in-memory-store.test.d.ts.map +0 -1
- package/dist/test/providers/in-memory-store.test.js.map +0 -1
- package/dist/test/providers/mem0-provider.test.d.ts.map +0 -1
- package/dist/test/providers/mem0-provider.test.js.map +0 -1
- package/dist/test/providers/rag-provider.test.d.ts.map +0 -1
- package/dist/test/providers/rag-provider.test.js +0 -108
- package/dist/test/providers/rag-provider.test.js.map +0 -1
- package/dist/test/providers/sqlite-store.test.d.ts.map +0 -1
- package/dist/test/providers/sqlite-store.test.js +0 -115
- package/dist/test/providers/sqlite-store.test.js.map +0 -1
- /package/dist/test/{core → unit/core}/agent-memory.test.d.ts +0 -0
- /package/dist/test/{core → unit/core}/config.test.d.ts +0 -0
- /package/dist/test/{core → unit/core}/observability.test.d.ts +0 -0
- /package/dist/test/{core → unit/core}/policy.test.d.ts +0 -0
- /package/dist/test/{core → unit/core}/privacy.test.d.ts +0 -0
- /package/dist/test/{core → unit/core}/router.test.d.ts +0 -0
- /package/dist/test/{create-agent-memory.test.d.ts → unit/create-agent-memory.test.d.ts} +0 -0
- /package/dist/test/{ingest → unit/ingest}/url-ingest.test.d.ts +0 -0
- /package/dist/test/{providers → unit/providers}/in-memory-store.test.d.ts +0 -0
- /package/dist/test/{providers → unit/providers}/mem0-provider.test.d.ts +0 -0
- /package/dist/test/{providers → unit/providers}/rag-provider.test.d.ts +0 -0
- /package/dist/test/{providers → unit/providers}/sqlite-store.test.d.ts +0 -0
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { describe, it } from "node:test";
|
|
2
|
-
import assert from "node:assert";
|
|
3
|
-
import { MemoryRouter } from "../../src/core/router.js";
|
|
4
|
-
import { randomUUID } from "node:crypto";
|
|
5
|
-
function makeProvider() {
|
|
6
|
-
const store = new Map();
|
|
7
|
-
return {
|
|
8
|
-
async write(req) {
|
|
9
|
-
const item = {
|
|
10
|
-
id: randomUUID(),
|
|
11
|
-
type: req.type,
|
|
12
|
-
namespace: req.namespace,
|
|
13
|
-
scope: req.scope ?? "global",
|
|
14
|
-
content: req.content,
|
|
15
|
-
metadata: { ...req.metadata, created_at: new Date().toISOString(), updated_at: new Date().toISOString() },
|
|
16
|
-
};
|
|
17
|
-
store.set(item.id, item);
|
|
18
|
-
return item;
|
|
19
|
-
},
|
|
20
|
-
async query(req) {
|
|
21
|
-
return [...store.values()].filter((i) => i.namespace === req.namespace).slice(0, req.topK ?? 10);
|
|
22
|
-
},
|
|
23
|
-
async delete(id, namespace) {
|
|
24
|
-
for (const [k, v] of store) {
|
|
25
|
-
if (v.id === id && v.namespace === namespace)
|
|
26
|
-
store.delete(k);
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
describe("MemoryRouter", () => {
|
|
32
|
-
it("routeWrite uses defaultProvider when no rules match", () => {
|
|
33
|
-
const defaultP = makeProvider();
|
|
34
|
-
const router = new MemoryRouter({
|
|
35
|
-
providers: new Map([["default", defaultP]]),
|
|
36
|
-
defaultProviderId: "default",
|
|
37
|
-
rules: [],
|
|
38
|
-
});
|
|
39
|
-
const ids = router.routeWrite({
|
|
40
|
-
namespace: "user:1",
|
|
41
|
-
type: "knowledge",
|
|
42
|
-
content: "x",
|
|
43
|
-
});
|
|
44
|
-
assert.deepStrictEqual(ids, ["default"]);
|
|
45
|
-
});
|
|
46
|
-
it("routeWrite matches rule by type and routes to provider", () => {
|
|
47
|
-
const defaultP = makeProvider();
|
|
48
|
-
const ragP = makeProvider();
|
|
49
|
-
const router = new MemoryRouter({
|
|
50
|
-
providers: new Map([
|
|
51
|
-
["default", defaultP],
|
|
52
|
-
["rag", ragP],
|
|
53
|
-
]),
|
|
54
|
-
defaultProviderId: "default",
|
|
55
|
-
rules: [
|
|
56
|
-
{ types: ["knowledge"], providerId: "rag" },
|
|
57
|
-
{ types: ["cross_thread"], providerId: "mem0" },
|
|
58
|
-
],
|
|
59
|
-
});
|
|
60
|
-
const idsKnowledge = router.routeWrite({
|
|
61
|
-
namespace: "ns",
|
|
62
|
-
type: "knowledge",
|
|
63
|
-
content: "doc",
|
|
64
|
-
});
|
|
65
|
-
assert.deepStrictEqual(idsKnowledge, ["rag"]);
|
|
66
|
-
const idsCrossThread = router.routeWrite({
|
|
67
|
-
namespace: "ns",
|
|
68
|
-
type: "cross_thread",
|
|
69
|
-
content: "pref",
|
|
70
|
-
});
|
|
71
|
-
assert.deepStrictEqual(idsCrossThread, ["mem0"]);
|
|
72
|
-
});
|
|
73
|
-
it("routeQuery matches rule by req.types", () => {
|
|
74
|
-
const defaultP = makeProvider();
|
|
75
|
-
const ragP = makeProvider();
|
|
76
|
-
const router = new MemoryRouter({
|
|
77
|
-
providers: new Map([
|
|
78
|
-
["default", defaultP],
|
|
79
|
-
["rag", ragP],
|
|
80
|
-
]),
|
|
81
|
-
defaultProviderId: "default",
|
|
82
|
-
rules: [{ types: ["knowledge"], providerId: "rag" }],
|
|
83
|
-
});
|
|
84
|
-
const ids = router.routeQuery({
|
|
85
|
-
namespace: "ns",
|
|
86
|
-
query: "q",
|
|
87
|
-
types: ["knowledge"],
|
|
88
|
-
});
|
|
89
|
-
assert.deepStrictEqual(ids, ["rag"]);
|
|
90
|
-
});
|
|
91
|
-
it("write and query flow", async () => {
|
|
92
|
-
const defaultP = makeProvider();
|
|
93
|
-
const router = new MemoryRouter({
|
|
94
|
-
providers: new Map([["default", defaultP]]),
|
|
95
|
-
defaultProviderId: "default",
|
|
96
|
-
});
|
|
97
|
-
const item = await router.write({
|
|
98
|
-
namespace: "user:1",
|
|
99
|
-
type: "cross_thread",
|
|
100
|
-
content: "hello",
|
|
101
|
-
});
|
|
102
|
-
assert.ok(item.id);
|
|
103
|
-
assert.strictEqual(item.content, "hello");
|
|
104
|
-
const items = await router.query({
|
|
105
|
-
namespace: "user:1",
|
|
106
|
-
query: "any",
|
|
107
|
-
topK: 5,
|
|
108
|
-
});
|
|
109
|
-
assert.strictEqual(items.length, 1);
|
|
110
|
-
assert.strictEqual(items[0].content, "hello");
|
|
111
|
-
});
|
|
112
|
-
it("write fans out to multiple providers for one type", async () => {
|
|
113
|
-
const p1 = makeProvider();
|
|
114
|
-
const p2 = makeProvider();
|
|
115
|
-
const router = new MemoryRouter({
|
|
116
|
-
providers: new Map([
|
|
117
|
-
["p1", p1],
|
|
118
|
-
["p2", p2],
|
|
119
|
-
]),
|
|
120
|
-
defaultProviderId: "p1",
|
|
121
|
-
rules: [
|
|
122
|
-
{ types: ["cross_thread"], providerId: "p1" },
|
|
123
|
-
{ types: ["cross_thread"], providerId: "p2" },
|
|
124
|
-
],
|
|
125
|
-
});
|
|
126
|
-
await router.write({
|
|
127
|
-
namespace: "user:multi",
|
|
128
|
-
type: "cross_thread",
|
|
129
|
-
content: "fanout write",
|
|
130
|
-
});
|
|
131
|
-
const items = await router.query({
|
|
132
|
-
namespace: "user:multi",
|
|
133
|
-
query: "fanout",
|
|
134
|
-
types: ["cross_thread"],
|
|
135
|
-
topK: 10,
|
|
136
|
-
});
|
|
137
|
-
assert.strictEqual(items.length, 2);
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
//# sourceMappingURL=router.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.test.js","sourceRoot":"","sources":["../../../test/core/router.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-agent-memory.test.d.ts","sourceRoot":"","sources":["../../test/create-agent-memory.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,371 +0,0 @@
|
|
|
1
|
-
import { describe, it } from "node:test";
|
|
2
|
-
import assert from "node:assert";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { writeFile, mkdir, rm } from "node:fs/promises";
|
|
5
|
-
import { tmpdir } from "node:os";
|
|
6
|
-
import { randomUUID } from "node:crypto";
|
|
7
|
-
import { pathToFileURL } from "node:url";
|
|
8
|
-
import { createAgentMemory, createAgentMemoryRegistry } from "../src/create-agent-memory.js";
|
|
9
|
-
describe("createAgentMemory", () => {
|
|
10
|
-
it("memorize with content and type delegates to core memory", async () => {
|
|
11
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
12
|
-
config: {
|
|
13
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
17
|
-
const item = await memory.memorize("user:1", "cross_thread", "User likes cats.");
|
|
18
|
-
assert.ok(item.id);
|
|
19
|
-
assert.strictEqual(item.content, "User likes cats.");
|
|
20
|
-
assert.strictEqual(item.type, "cross_thread");
|
|
21
|
-
const result = await memory.recall({
|
|
22
|
-
namespace: "user:1",
|
|
23
|
-
query: "cats",
|
|
24
|
-
topK: 5,
|
|
25
|
-
});
|
|
26
|
-
assert.strictEqual(result.items.length, 1);
|
|
27
|
-
});
|
|
28
|
-
it("memorize supports auto type when type is omitted", async () => {
|
|
29
|
-
const memory = await createAgentMemory({
|
|
30
|
-
config: {
|
|
31
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
32
|
-
},
|
|
33
|
-
classifyMemory: async (content) => (content.includes("manual") ? "knowledge" : "cross_thread"),
|
|
34
|
-
});
|
|
35
|
-
const item = await memory.memorize("user:auto", "Product manual summary");
|
|
36
|
-
assert.strictEqual(item.type, "knowledge");
|
|
37
|
-
});
|
|
38
|
-
it("memorize supports positional parameters", async () => {
|
|
39
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
40
|
-
config: {
|
|
41
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
45
|
-
const item = await memory.memorize("user:positional", "knowledge", "Positional call.");
|
|
46
|
-
assert.ok(item.id);
|
|
47
|
-
assert.strictEqual(item.type, "knowledge");
|
|
48
|
-
assert.strictEqual(item.content, "Positional call.");
|
|
49
|
-
});
|
|
50
|
-
it("memorize with url ingests file and stores chunks", async () => {
|
|
51
|
-
const dir = join(tmpdir(), `ingest-wrapper-${randomUUID()}`);
|
|
52
|
-
await mkdir(dir, { recursive: true });
|
|
53
|
-
const filePath = join(dir, "note.txt");
|
|
54
|
-
await writeFile(filePath, "Chunk one.\n\nChunk two.", "utf-8");
|
|
55
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
56
|
-
config: {
|
|
57
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
58
|
-
},
|
|
59
|
-
});
|
|
60
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
61
|
-
try {
|
|
62
|
-
const item = await memory.memorize("test", "knowledge", pathToFileURL(filePath));
|
|
63
|
-
assert.ok(item.id);
|
|
64
|
-
assert.strictEqual(item.type, "knowledge");
|
|
65
|
-
const result = await memory.recall({
|
|
66
|
-
namespace: "test",
|
|
67
|
-
query: "Chunk",
|
|
68
|
-
topK: 10,
|
|
69
|
-
});
|
|
70
|
-
assert.ok(result.items.length >= 1);
|
|
71
|
-
}
|
|
72
|
-
finally {
|
|
73
|
-
await rm(dir, { recursive: true, force: true }).catch(() => { });
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
it("memorize with url supports classifier when type is omitted", async () => {
|
|
77
|
-
const dir = join(tmpdir(), `ingest-auto-url-${randomUUID()}`);
|
|
78
|
-
await mkdir(dir, { recursive: true });
|
|
79
|
-
const filePath = join(dir, "preference.txt");
|
|
80
|
-
await writeFile(filePath, "User preference: always answer in short bullets.", "utf-8");
|
|
81
|
-
const memory = await createAgentMemory({
|
|
82
|
-
config: {
|
|
83
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
84
|
-
},
|
|
85
|
-
classifyMemory: async (content) => (content.includes("preference") ? "cross_thread" : "knowledge"),
|
|
86
|
-
});
|
|
87
|
-
try {
|
|
88
|
-
const item = await memory.memorize("user:url-auto", pathToFileURL(filePath));
|
|
89
|
-
assert.strictEqual(item.type, "cross_thread");
|
|
90
|
-
}
|
|
91
|
-
finally {
|
|
92
|
-
await rm(dir, { recursive: true, force: true }).catch(() => { });
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
it("memorize without url and without content throws", async () => {
|
|
96
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
97
|
-
config: {
|
|
98
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
102
|
-
await assert.rejects(() => memory
|
|
103
|
-
.memorize("test", "knowledge", new URL("http://127.0.0.1:9/not-found.txt")), /request failed|fetch failed|ECONNREFUSED|Failed to fetch/);
|
|
104
|
-
});
|
|
105
|
-
it("memorize delegates to extended memorize", async () => {
|
|
106
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
107
|
-
config: {
|
|
108
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
112
|
-
const item = await memory.memorize("user:1", "cross_thread", "Written via write.");
|
|
113
|
-
assert.ok(item.id);
|
|
114
|
-
assert.strictEqual(item.content, "Written via write.");
|
|
115
|
-
const result = await memory.recall({
|
|
116
|
-
namespace: "user:1",
|
|
117
|
-
query: "any",
|
|
118
|
-
topK: 5,
|
|
119
|
-
});
|
|
120
|
-
assert.strictEqual(result.items.length, 1);
|
|
121
|
-
});
|
|
122
|
-
it("recall delegates to underlying memory", async () => {
|
|
123
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
124
|
-
config: {
|
|
125
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
129
|
-
await memory.memorize("ns", "knowledge", "Delegation test.");
|
|
130
|
-
const recallResult = await memory.recall({
|
|
131
|
-
namespace: "ns",
|
|
132
|
-
query: "Delegation",
|
|
133
|
-
topK: 5,
|
|
134
|
-
});
|
|
135
|
-
assert.strictEqual(recallResult.items.length, 1);
|
|
136
|
-
const promptResult = await memory.recall({
|
|
137
|
-
namespace: "ns",
|
|
138
|
-
query: "test",
|
|
139
|
-
topK: 5,
|
|
140
|
-
});
|
|
141
|
-
assert.strictEqual(promptResult.items.length, 1);
|
|
142
|
-
assert.ok(promptResult.traceId);
|
|
143
|
-
});
|
|
144
|
-
it("supports extension provider via local module path", async () => {
|
|
145
|
-
const dir = join(tmpdir(), `memory-ext-${randomUUID()}`);
|
|
146
|
-
await mkdir(dir, { recursive: true });
|
|
147
|
-
const extPath = join(dir, "provider.mjs");
|
|
148
|
-
await writeFile(extPath, `
|
|
149
|
-
export function createMemoryProvider() {
|
|
150
|
-
const rows = [];
|
|
151
|
-
return {
|
|
152
|
-
async write(req) {
|
|
153
|
-
const now = new Date().toISOString();
|
|
154
|
-
const item = {
|
|
155
|
-
id: "ext-" + (rows.length + 1),
|
|
156
|
-
type: req.type,
|
|
157
|
-
namespace: req.namespace,
|
|
158
|
-
scope: req.scope ?? "global",
|
|
159
|
-
content: req.content,
|
|
160
|
-
metadata: { created_at: now, updated_at: now, ...(req.metadata ?? {}) },
|
|
161
|
-
};
|
|
162
|
-
rows.push(item);
|
|
163
|
-
return item;
|
|
164
|
-
},
|
|
165
|
-
async query(req) {
|
|
166
|
-
return rows.filter((r) => r.namespace === req.namespace);
|
|
167
|
-
},
|
|
168
|
-
async delete(id, namespace) {
|
|
169
|
-
const idx = rows.findIndex((r) => r.id === id && r.namespace === namespace);
|
|
170
|
-
if (idx >= 0) rows.splice(idx, 1);
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
`, "utf-8");
|
|
175
|
-
try {
|
|
176
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
177
|
-
config: {
|
|
178
|
-
stores: [
|
|
179
|
-
{
|
|
180
|
-
id: "ext",
|
|
181
|
-
type: "extension",
|
|
182
|
-
options: { package: extPath },
|
|
183
|
-
},
|
|
184
|
-
],
|
|
185
|
-
},
|
|
186
|
-
});
|
|
187
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
188
|
-
const item = await memory.memorize("ext:ns", "knowledge", "Extension provider content");
|
|
189
|
-
assert.strictEqual(item.id, "ext-1");
|
|
190
|
-
const result = await memory.recall({
|
|
191
|
-
namespace: "ext:ns",
|
|
192
|
-
query: "Extension",
|
|
193
|
-
topK: 5,
|
|
194
|
-
});
|
|
195
|
-
assert.strictEqual(result.items.length, 1);
|
|
196
|
-
assert.strictEqual(result.items[0]?.content, "Extension provider content");
|
|
197
|
-
}
|
|
198
|
-
finally {
|
|
199
|
-
await rm(dir, { recursive: true, force: true }).catch(() => { });
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
it("llamaindex provider falls back to knowledge type when metadata.type is missing", async () => {
|
|
203
|
-
class FakeKnowledgeProvider {
|
|
204
|
-
async remember(req) {
|
|
205
|
-
return {
|
|
206
|
-
id: "k-1",
|
|
207
|
-
content: req.content ?? "",
|
|
208
|
-
metadata: req.metadata,
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
async recall() {
|
|
212
|
-
return [
|
|
213
|
-
{
|
|
214
|
-
id: "k-1",
|
|
215
|
-
content: "knowledge-content",
|
|
216
|
-
metadata: {},
|
|
217
|
-
},
|
|
218
|
-
];
|
|
219
|
-
}
|
|
220
|
-
async forget() { }
|
|
221
|
-
}
|
|
222
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
223
|
-
config: {
|
|
224
|
-
stores: [{ id: "k", type: "llamaindex", options: {} }],
|
|
225
|
-
},
|
|
226
|
-
overrides: {
|
|
227
|
-
providerCtors: {
|
|
228
|
-
llamaindex: FakeKnowledgeProvider,
|
|
229
|
-
},
|
|
230
|
-
},
|
|
231
|
-
});
|
|
232
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
233
|
-
const result = await memory.recall({
|
|
234
|
-
namespace: "user:1",
|
|
235
|
-
query: "k",
|
|
236
|
-
topK: 5,
|
|
237
|
-
});
|
|
238
|
-
assert.strictEqual(result.items.length, 1);
|
|
239
|
-
assert.strictEqual(result.items[0]?.type, "knowledge");
|
|
240
|
-
});
|
|
241
|
-
it("sqlite_vec provider falls back to cross_thread type when metadata.type is missing", async () => {
|
|
242
|
-
class FakeLongTermProvider {
|
|
243
|
-
async remember(req) {
|
|
244
|
-
return {
|
|
245
|
-
id: "lt-1",
|
|
246
|
-
content: req.content ?? "",
|
|
247
|
-
metadata: req.metadata,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
async recall() {
|
|
251
|
-
return [
|
|
252
|
-
{
|
|
253
|
-
id: "lt-1",
|
|
254
|
-
content: "longterm-content",
|
|
255
|
-
metadata: {},
|
|
256
|
-
},
|
|
257
|
-
];
|
|
258
|
-
}
|
|
259
|
-
async forget() { }
|
|
260
|
-
}
|
|
261
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
262
|
-
config: {
|
|
263
|
-
stores: [{ id: "lt", type: "sqlite_vec", options: { dbPath: ":memory:", dimensions: 1024 } }],
|
|
264
|
-
},
|
|
265
|
-
overrides: {
|
|
266
|
-
providerCtors: {
|
|
267
|
-
sqliteVec: FakeLongTermProvider,
|
|
268
|
-
},
|
|
269
|
-
},
|
|
270
|
-
});
|
|
271
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
272
|
-
const result = await memory.recall({
|
|
273
|
-
namespace: "user:1",
|
|
274
|
-
query: "lt",
|
|
275
|
-
topK: 5,
|
|
276
|
-
});
|
|
277
|
-
assert.strictEqual(result.items.length, 1);
|
|
278
|
-
assert.strictEqual(result.items[0]?.type, "cross_thread");
|
|
279
|
-
});
|
|
280
|
-
it("llamaindex provider gets VLM model from overrides into context", async () => {
|
|
281
|
-
class FakeKnowledgeProviderWithContext {
|
|
282
|
-
options;
|
|
283
|
-
constructor(options) {
|
|
284
|
-
this.options = options;
|
|
285
|
-
}
|
|
286
|
-
async remember(req) {
|
|
287
|
-
const context = this.options.context;
|
|
288
|
-
const agentModel = context?.agentModel;
|
|
289
|
-
const vlm = agentModel?.vlm;
|
|
290
|
-
return {
|
|
291
|
-
id: "k-vlm-1",
|
|
292
|
-
content: req.content ?? "",
|
|
293
|
-
metadata: {
|
|
294
|
-
...(req.metadata ?? {}),
|
|
295
|
-
vlm_model_id: typeof vlm?.id === "string" ? vlm.id : undefined,
|
|
296
|
-
},
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
async recall() {
|
|
300
|
-
return [];
|
|
301
|
-
}
|
|
302
|
-
async forget() { }
|
|
303
|
-
}
|
|
304
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
305
|
-
config: {
|
|
306
|
-
stores: [{ id: "k", type: "llamaindex", options: {} }],
|
|
307
|
-
vlm: { useAgentModel: true },
|
|
308
|
-
},
|
|
309
|
-
overrides: {
|
|
310
|
-
agentModelVlm: { id: "vlm-demo", provider: "openai", model: "gpt-4o-mini" },
|
|
311
|
-
providerCtors: {
|
|
312
|
-
llamaindex: FakeKnowledgeProviderWithContext,
|
|
313
|
-
},
|
|
314
|
-
},
|
|
315
|
-
});
|
|
316
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
317
|
-
const item = await memory.memorize("user:vlm", "knowledge", "Image summary.");
|
|
318
|
-
assert.strictEqual(item.metadata?.vlm_model_id, "vlm-demo");
|
|
319
|
-
});
|
|
320
|
-
it("supports session compaction from config", async () => {
|
|
321
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
322
|
-
config: {
|
|
323
|
-
stores: [{ id: "default", type: "in_memory" }],
|
|
324
|
-
memory: {
|
|
325
|
-
thread: {
|
|
326
|
-
sessionCompaction: {
|
|
327
|
-
enabled: true,
|
|
328
|
-
maxTokens: 8,
|
|
329
|
-
keepRecentTurns: 1,
|
|
330
|
-
summaryKey: "__summary__",
|
|
331
|
-
checkEveryTurns: 1,
|
|
332
|
-
},
|
|
333
|
-
},
|
|
334
|
-
},
|
|
335
|
-
},
|
|
336
|
-
summarizeSessionTurns: async ({ oldTurns }) => `summary(${oldTurns.length})`,
|
|
337
|
-
});
|
|
338
|
-
const memory = await memoryRegistry.getAgentMemory();
|
|
339
|
-
await memory.memorize("session:demo", "thread", "A".repeat(40));
|
|
340
|
-
await memory.memorize("session:demo", "thread", "B".repeat(40));
|
|
341
|
-
const summary = await memory.getByKey("session:demo", "__summary__");
|
|
342
|
-
assert.ok(summary);
|
|
343
|
-
assert.strictEqual(summary?.type, "thread");
|
|
344
|
-
assert.strictEqual(summary?.content, "summary(1)");
|
|
345
|
-
});
|
|
346
|
-
it("rejects provider key in typed store config blocks", async () => {
|
|
347
|
-
await assert.rejects(async () => {
|
|
348
|
-
const memoryRegistry = await createAgentMemoryRegistry({
|
|
349
|
-
config: {
|
|
350
|
-
memory: {
|
|
351
|
-
thread: { store: { type: "in_memory" } },
|
|
352
|
-
cross_thread: {
|
|
353
|
-
store: {
|
|
354
|
-
type: "mem0",
|
|
355
|
-
config: {
|
|
356
|
-
vectorStore: {
|
|
357
|
-
provider: "qdrant",
|
|
358
|
-
config: { host: "localhost", port: 6333 },
|
|
359
|
-
},
|
|
360
|
-
},
|
|
361
|
-
},
|
|
362
|
-
},
|
|
363
|
-
knowledge: { store: { type: "in_memory" } },
|
|
364
|
-
},
|
|
365
|
-
},
|
|
366
|
-
});
|
|
367
|
-
await memoryRegistry.getAgentMemory();
|
|
368
|
-
}, /provider.*type/i);
|
|
369
|
-
});
|
|
370
|
-
});
|
|
371
|
-
//# sourceMappingURL=create-agent-memory.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-agent-memory.test.js","sourceRoot":"","sources":["../../test/create-agent-memory.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url-ingest.test.d.ts","sourceRoot":"","sources":["../../../test/ingest/url-ingest.test.ts"],"names":[],"mappings":""}
|