@easynet/agent-memory 1.0.57 → 1.0.59
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 +3 -1
- package/dist/test/integration/real-memory-features.test.js.map +1 -1
- package/dist/test/integration/vlm-llm-live.test.js +1 -1
- package/dist/test/integration/vlm-llm-live.test.js.map +1 -1
- package/dist/test/unit/core/agent-memory.test.js +139 -141
- package/dist/test/unit/core/agent-memory.test.js.map +1 -1
- package/dist/test/unit/core/config.test.js +162 -164
- package/dist/test/unit/core/config.test.js.map +1 -1
- package/dist/test/unit/core/router.test.js +102 -104
- package/dist/test/unit/core/router.test.js.map +1 -1
- package/dist/test/unit/create-agent-memory.test.js +296 -298
- package/dist/test/unit/create-agent-memory.test.js.map +1 -1
- package/dist/test/unit/ingest/url-ingest.test.js +116 -118
- package/dist/test/unit/ingest/url-ingest.test.js.map +1 -1
- package/dist/test/unit/providers/rag-provider.test.js +96 -98
- package/dist/test/unit/providers/rag-provider.test.js.map +1 -1
- package/dist/test/unit/providers/sqlite-store.test.js +94 -96
- package/dist/test/unit/providers/sqlite-store.test.js.map +1 -1
- package/package.json +4 -4
|
@@ -13,12 +13,14 @@ import { join } from "node:path";
|
|
|
13
13
|
import { mkdir, rm, writeFile } from "node:fs/promises";
|
|
14
14
|
import { tmpdir } from "node:os";
|
|
15
15
|
import { randomUUID } from "node:crypto";
|
|
16
|
+
import { createRequire } from "node:module";
|
|
16
17
|
import { pathToFileURL } from "node:url";
|
|
17
18
|
import { createAgentMemoryRegistry } from "../../src/create-agent-memory.js";
|
|
18
19
|
import { SqliteStoreProvider } from "../../src/providers/sqlite-store.js";
|
|
19
20
|
const RUN_REAL = process.env.RUN_REAL_MEMORY_INTEGRATION === "1";
|
|
20
21
|
const RUN_REAL_MEM0 = process.env.RUN_REAL_MEM0_INTEGRATION === "1";
|
|
21
22
|
const MEM0_CONFIG_JSON = process.env.AGENT_MEMORY_MEM0_CONFIG_JSON;
|
|
23
|
+
const require = createRequire(import.meta.url);
|
|
22
24
|
const HAS_WORKING_SQLITE = (() => {
|
|
23
25
|
try {
|
|
24
26
|
// Use the same provider path as production runtime to verify sqlite is actually usable.
|
|
@@ -38,7 +40,7 @@ async function createTempDir(prefix) {
|
|
|
38
40
|
await mkdir(dir, { recursive: true });
|
|
39
41
|
return dir;
|
|
40
42
|
}
|
|
41
|
-
describe("real
|
|
43
|
+
describe("real backend integration", { skip: !RUN_REAL }, () => {
|
|
42
44
|
it("sqlite: thread/cross_thread/knowledge persistence + key APIs", { skip: !HAS_WORKING_SQLITE }, async () => {
|
|
43
45
|
const dir = await createTempDir("agent-memory-real-sqlite");
|
|
44
46
|
const threadDb = join(dir, "thread.sqlite");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-memory-features.test.js","sourceRoot":"","sources":["../../../test/integration/real-memory-features.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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,KAAK,EAAE,EAAE,EAAE,SAAS,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,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAS1E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,GAAG,CAAC;AACjE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,CAAC;AACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;AACnE,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE;IAC/B,IAAI,CAAC;QACH,wFAAwF;QACxF,KAAK,IAAI,mBAAmB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,KAAK,UAAU,MAAM,CAAC,MAAc;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAiC,CAAC;IAC3E,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAc;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"real-memory-features.test.js","sourceRoot":"","sources":["../../../test/integration/real-memory-features.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ const MINIMAL_PNG = Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAA
|
|
|
24
24
|
const baseConfig = {
|
|
25
25
|
stores: [{ id: "default", type: "in_memory" }],
|
|
26
26
|
};
|
|
27
|
-
describe("VLM/LLM
|
|
27
|
+
describe("live VLM/LLM integration", { skip: !RUN_LIVE }, () => {
|
|
28
28
|
it("VLM: memorize image URL with captionFn and recall returns caption", async () => {
|
|
29
29
|
const dir = join(tmpdir(), `agent-memory-vlm-${randomUUID()}`);
|
|
30
30
|
await mkdir(dir, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vlm-llm-live.test.js","sourceRoot":"","sources":["../../../test/integration/vlm-llm-live.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;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;AAC7E,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,CAAC;AAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,wBAAwB,CAAC;AAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,aAAa,CAAC;AACtE,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,wCAAwC,CAAC;AAC/E,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,oBAAoB,CAAC;AAE7D,qDAAqD;AACrD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAC7B,kGAAkG,EAClG,QAAQ,CACT,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAoB,EAAE,CAAC;CACxD,CAAC;AAEF,QAAQ,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC;gBACrD,MAAM,EAAE,UAAU;gBAClB,SAAS;aACV,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"vlm-llm-live.test.js","sourceRoot":"","sources":["../../../test/integration/vlm-llm-live.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;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;AAC7E,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,CAAC;AAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,wBAAwB,CAAC;AAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,aAAa,CAAC;AACtE,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,wCAAwC,CAAC;AAC/E,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,oBAAoB,CAAC;AAE7D,qDAAqD;AACrD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAC7B,kGAAkG,EAClG,QAAQ,CACT,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAoB,EAAE,CAAC;CACxD,CAAC;AAEF,QAAQ,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC;gBACrD,MAAM,EAAE,UAAU;gBAClB,SAAS;aACV,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;YAErD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAChC,eAAe,EACf,WAAW,EACX,aAAa,CAAC,SAAS,CAAC,CACzB,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,eAAe;gBAC1B,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,CAAC;aACR,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,wCAAwC,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACxC,MAAM,CAAC,EAAE,CACP,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EACzC,uDAAuD,CACxD,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;QACjE,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;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,cAAc,GAAG,4BAA4B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC;YACrD,MAAM,EAAE,UAAU;YAClB,cAAc;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QAErD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAChC,eAAe,EACf,cAAc,EACd,+EAA+E,CAChF,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,CAAC,EAAE,CACP,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3D,qDAAqD,CACtD,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACjC,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EACvB,+EAA+E,CAChF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,UAAU,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAExC,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG,4BAA4B,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC;YACrD,MAAM,EAAE,UAAU;YAClB,SAAS;YACT,cAAc;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CACrC,WAAW,EACX,WAAW,EACX,aAAa,CAAC,SAAS,CAAC,CACzB,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACxB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,EAAE,CACP,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAC7D,uCAAuC,CACxC,CAAC;YAEF,yDAAyD;YACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CACpC,WAAW,EACX,cAAc,EACd,yDAAyD,CAC1D,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACvB,MAAM,CAAC,EAAE,CACP,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC/D,+BAA+B,CAChC,CAAC;YAEF,uDAAuD;YACvD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACvC,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,sBAAsB;gBAC7B,IAAI,EAAE,EAAE;aACT,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,mCAAmC,CAAC,CAAC;YAC/E,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAEhC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YAChG,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,mCAAmC,CAAC,CAAC;YAC3D,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,4CAA4C,CAAC,CAAC;YAEvE,wEAAwE;YACxE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACvC,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,iCAAiC;gBACxC,IAAI,EAAE,EAAE;aACT,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,EAAE,CACP,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACrJ,2CAA2C,CAC5C,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC5C,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,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { it } from "node:test";
|
|
2
2
|
import assert from "node:assert";
|
|
3
3
|
import { AgentMemory } from "../../../src/core/agent-memory.js";
|
|
4
4
|
import { InMemoryTraceRecorder } from "../../../src/core/observability.js";
|
|
@@ -32,146 +32,144 @@ class TestMemoryProvider {
|
|
|
32
32
|
return this.deleted.length;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
defaultProviderId: "default",
|
|
41
|
-
});
|
|
42
|
-
const tracer = new InMemoryTraceRecorder();
|
|
43
|
-
const memory = new AgentMemory({
|
|
44
|
-
router,
|
|
45
|
-
traceRecorder: tracer,
|
|
46
|
-
});
|
|
47
|
-
await memory.memorize({
|
|
48
|
-
namespace: "user:1",
|
|
49
|
-
type: "cross_thread",
|
|
50
|
-
content: "Use Chinese and summarize at the end.",
|
|
51
|
-
});
|
|
52
|
-
const result = await memory.recall({
|
|
53
|
-
namespace: "user:1",
|
|
54
|
-
query: "user preferences and cross-session memory",
|
|
55
|
-
topK: 5,
|
|
56
|
-
});
|
|
57
|
-
assert.strictEqual(result.items.length, 1);
|
|
58
|
-
assert.strictEqual(result.items[0].content, "Use Chinese and summarize at the end.");
|
|
59
|
-
assert.ok(result.traceId);
|
|
60
|
-
assert.ok(result.injectedText.includes("cross_thread"));
|
|
61
|
-
assert.strictEqual(tracer.getTraces().length, 1);
|
|
62
|
-
});
|
|
63
|
-
it("memorize without type defaults to cross_thread", async () => {
|
|
64
|
-
const provider = new TestMemoryProvider();
|
|
65
|
-
const router = new MemoryRouter({
|
|
66
|
-
providers: new Map([["default", provider]]),
|
|
67
|
-
defaultProviderId: "default",
|
|
68
|
-
});
|
|
69
|
-
const memory = new AgentMemory({ router });
|
|
70
|
-
const item = await memory.memorize({
|
|
71
|
-
namespace: "user:1",
|
|
72
|
-
content: "I prefer dark mode.",
|
|
73
|
-
});
|
|
74
|
-
assert.strictEqual(item.type, "cross_thread");
|
|
75
|
-
assert.strictEqual(item.content, "I prefer dark mode.");
|
|
76
|
-
});
|
|
77
|
-
it("memorize normalizes common type aliases", async () => {
|
|
78
|
-
const provider = new TestMemoryProvider();
|
|
79
|
-
const router = new MemoryRouter({
|
|
80
|
-
providers: new Map([["default", provider]]),
|
|
81
|
-
defaultProviderId: "default",
|
|
82
|
-
});
|
|
83
|
-
const memory = new AgentMemory({ router });
|
|
84
|
-
const item = await memory.memorize({
|
|
85
|
-
namespace: "user:1",
|
|
86
|
-
type: "cross-thread",
|
|
87
|
-
content: "Alias normalization test",
|
|
88
|
-
});
|
|
89
|
-
assert.strictEqual(item.type, "cross_thread");
|
|
90
|
-
});
|
|
91
|
-
it("memorize throws for unsupported type keyword", async () => {
|
|
92
|
-
const provider = new TestMemoryProvider();
|
|
93
|
-
const router = new MemoryRouter({
|
|
94
|
-
providers: new Map([["default", provider]]),
|
|
95
|
-
defaultProviderId: "default",
|
|
96
|
-
});
|
|
97
|
-
const memory = new AgentMemory({ router });
|
|
98
|
-
await assert.rejects(() => memory.memorize({
|
|
99
|
-
namespace: "user:1",
|
|
100
|
-
type: "invalid_type",
|
|
101
|
-
content: "bad type",
|
|
102
|
-
}), /Unsupported memory type/);
|
|
103
|
-
});
|
|
104
|
-
it("memorize with classifyMemory uses callback for type", async () => {
|
|
105
|
-
const provider = new TestMemoryProvider();
|
|
106
|
-
const router = new MemoryRouter({
|
|
107
|
-
providers: new Map([["default", provider]]),
|
|
108
|
-
defaultProviderId: "default",
|
|
109
|
-
});
|
|
110
|
-
const memory = new AgentMemory({
|
|
111
|
-
router,
|
|
112
|
-
classifyMemory: async (content) => (content.length > 20 ? "knowledge" : "thread"),
|
|
113
|
-
});
|
|
114
|
-
const item1 = await memory.memorize({ namespace: "ns", content: "short" });
|
|
115
|
-
assert.strictEqual(item1.type, "thread");
|
|
116
|
-
const item2 = await memory.memorize({ namespace: "ns", content: "this is a longer content piece" });
|
|
117
|
-
assert.strictEqual(item2.type, "knowledge");
|
|
118
|
-
});
|
|
119
|
-
it("deleteByNamespace", async () => {
|
|
120
|
-
const provider = new TestMemoryProvider();
|
|
121
|
-
const router = new MemoryRouter({
|
|
122
|
-
providers: new Map([["default", provider]]),
|
|
123
|
-
defaultProviderId: "default",
|
|
124
|
-
});
|
|
125
|
-
const memory = new AgentMemory({ router });
|
|
126
|
-
await memory.memorize({
|
|
127
|
-
namespace: "user:2",
|
|
128
|
-
type: "cross_thread",
|
|
129
|
-
content: "Chose option A.",
|
|
130
|
-
});
|
|
131
|
-
const before = await memory.recall({
|
|
132
|
-
namespace: "user:2",
|
|
133
|
-
query: "any",
|
|
134
|
-
topK: 5,
|
|
135
|
-
});
|
|
136
|
-
assert.strictEqual(before.items.length, 1);
|
|
137
|
-
await memory.deleteByNamespace("user:2");
|
|
138
|
-
const after = await memory.recall({
|
|
139
|
-
namespace: "user:2",
|
|
140
|
-
query: "any",
|
|
141
|
-
topK: 5,
|
|
142
|
-
});
|
|
143
|
-
assert.strictEqual(after.items.length, 0);
|
|
144
|
-
});
|
|
145
|
-
it("ttl: writes expires_at and skips expired items on recall", async () => {
|
|
146
|
-
const provider = new TestMemoryProvider();
|
|
147
|
-
const router = new MemoryRouter({
|
|
148
|
-
providers: new Map([["default", provider]]),
|
|
149
|
-
defaultProviderId: "default",
|
|
150
|
-
});
|
|
151
|
-
const memory = new AgentMemory({ router });
|
|
152
|
-
const expired = await memory.memorize({
|
|
153
|
-
namespace: "user:ttl",
|
|
154
|
-
type: "cross_thread",
|
|
155
|
-
content: "This should expire immediately.",
|
|
156
|
-
metadata: { ttl_seconds: 0 },
|
|
157
|
-
});
|
|
158
|
-
assert.ok(typeof expired.metadata.expires_at === "string");
|
|
159
|
-
const alive = await memory.memorize({
|
|
160
|
-
namespace: "user:ttl",
|
|
161
|
-
type: "cross_thread",
|
|
162
|
-
content: "This should stay.",
|
|
163
|
-
metadata: { ttl_seconds: 3600 },
|
|
164
|
-
});
|
|
165
|
-
assert.ok(typeof alive.metadata.expires_at === "string");
|
|
166
|
-
const result = await memory.recall({
|
|
167
|
-
namespace: "user:ttl",
|
|
168
|
-
query: "ttl",
|
|
169
|
-
topK: 10,
|
|
170
|
-
types: ["cross_thread"],
|
|
171
|
-
});
|
|
172
|
-
assert.strictEqual(result.items.length, 1);
|
|
173
|
-
assert.strictEqual(result.items[0]?.content, "This should stay.");
|
|
174
|
-
assert.ok(provider.getDeletedCount() >= 1);
|
|
35
|
+
it("memorize and recall", async () => {
|
|
36
|
+
const provider = new TestMemoryProvider();
|
|
37
|
+
const router = new MemoryRouter({
|
|
38
|
+
providers: new Map([["default", provider]]),
|
|
39
|
+
defaultProviderId: "default",
|
|
175
40
|
});
|
|
41
|
+
const tracer = new InMemoryTraceRecorder();
|
|
42
|
+
const memory = new AgentMemory({
|
|
43
|
+
router,
|
|
44
|
+
traceRecorder: tracer,
|
|
45
|
+
});
|
|
46
|
+
await memory.memorize({
|
|
47
|
+
namespace: "user:1",
|
|
48
|
+
type: "cross_thread",
|
|
49
|
+
content: "Use Chinese and summarize at the end.",
|
|
50
|
+
});
|
|
51
|
+
const result = await memory.recall({
|
|
52
|
+
namespace: "user:1",
|
|
53
|
+
query: "user preferences and cross-session memory",
|
|
54
|
+
topK: 5,
|
|
55
|
+
});
|
|
56
|
+
assert.strictEqual(result.items.length, 1);
|
|
57
|
+
assert.strictEqual(result.items[0].content, "Use Chinese and summarize at the end.");
|
|
58
|
+
assert.ok(result.traceId);
|
|
59
|
+
assert.ok(result.injectedText.includes("cross_thread"));
|
|
60
|
+
assert.strictEqual(tracer.getTraces().length, 1);
|
|
61
|
+
});
|
|
62
|
+
it("memorize without type defaults to cross_thread", async () => {
|
|
63
|
+
const provider = new TestMemoryProvider();
|
|
64
|
+
const router = new MemoryRouter({
|
|
65
|
+
providers: new Map([["default", provider]]),
|
|
66
|
+
defaultProviderId: "default",
|
|
67
|
+
});
|
|
68
|
+
const memory = new AgentMemory({ router });
|
|
69
|
+
const item = await memory.memorize({
|
|
70
|
+
namespace: "user:1",
|
|
71
|
+
content: "I prefer dark mode.",
|
|
72
|
+
});
|
|
73
|
+
assert.strictEqual(item.type, "cross_thread");
|
|
74
|
+
assert.strictEqual(item.content, "I prefer dark mode.");
|
|
75
|
+
});
|
|
76
|
+
it("memorize normalizes common type aliases", async () => {
|
|
77
|
+
const provider = new TestMemoryProvider();
|
|
78
|
+
const router = new MemoryRouter({
|
|
79
|
+
providers: new Map([["default", provider]]),
|
|
80
|
+
defaultProviderId: "default",
|
|
81
|
+
});
|
|
82
|
+
const memory = new AgentMemory({ router });
|
|
83
|
+
const item = await memory.memorize({
|
|
84
|
+
namespace: "user:1",
|
|
85
|
+
type: "cross-thread",
|
|
86
|
+
content: "Alias normalization test",
|
|
87
|
+
});
|
|
88
|
+
assert.strictEqual(item.type, "cross_thread");
|
|
89
|
+
});
|
|
90
|
+
it("memorize throws for unsupported type keyword", async () => {
|
|
91
|
+
const provider = new TestMemoryProvider();
|
|
92
|
+
const router = new MemoryRouter({
|
|
93
|
+
providers: new Map([["default", provider]]),
|
|
94
|
+
defaultProviderId: "default",
|
|
95
|
+
});
|
|
96
|
+
const memory = new AgentMemory({ router });
|
|
97
|
+
await assert.rejects(() => memory.memorize({
|
|
98
|
+
namespace: "user:1",
|
|
99
|
+
type: "invalid_type",
|
|
100
|
+
content: "bad type",
|
|
101
|
+
}), /Unsupported memory type/);
|
|
102
|
+
});
|
|
103
|
+
it("memorize with classifyMemory uses callback for type", async () => {
|
|
104
|
+
const provider = new TestMemoryProvider();
|
|
105
|
+
const router = new MemoryRouter({
|
|
106
|
+
providers: new Map([["default", provider]]),
|
|
107
|
+
defaultProviderId: "default",
|
|
108
|
+
});
|
|
109
|
+
const memory = new AgentMemory({
|
|
110
|
+
router,
|
|
111
|
+
classifyMemory: async (content) => (content.length > 20 ? "knowledge" : "thread"),
|
|
112
|
+
});
|
|
113
|
+
const item1 = await memory.memorize({ namespace: "ns", content: "short" });
|
|
114
|
+
assert.strictEqual(item1.type, "thread");
|
|
115
|
+
const item2 = await memory.memorize({ namespace: "ns", content: "this is a longer content piece" });
|
|
116
|
+
assert.strictEqual(item2.type, "knowledge");
|
|
117
|
+
});
|
|
118
|
+
it("deleteByNamespace", async () => {
|
|
119
|
+
const provider = new TestMemoryProvider();
|
|
120
|
+
const router = new MemoryRouter({
|
|
121
|
+
providers: new Map([["default", provider]]),
|
|
122
|
+
defaultProviderId: "default",
|
|
123
|
+
});
|
|
124
|
+
const memory = new AgentMemory({ router });
|
|
125
|
+
await memory.memorize({
|
|
126
|
+
namespace: "user:2",
|
|
127
|
+
type: "cross_thread",
|
|
128
|
+
content: "Chose option A.",
|
|
129
|
+
});
|
|
130
|
+
const before = await memory.recall({
|
|
131
|
+
namespace: "user:2",
|
|
132
|
+
query: "any",
|
|
133
|
+
topK: 5,
|
|
134
|
+
});
|
|
135
|
+
assert.strictEqual(before.items.length, 1);
|
|
136
|
+
await memory.deleteByNamespace("user:2");
|
|
137
|
+
const after = await memory.recall({
|
|
138
|
+
namespace: "user:2",
|
|
139
|
+
query: "any",
|
|
140
|
+
topK: 5,
|
|
141
|
+
});
|
|
142
|
+
assert.strictEqual(after.items.length, 0);
|
|
143
|
+
});
|
|
144
|
+
it("ttl: writes expires_at and skips expired items on recall", async () => {
|
|
145
|
+
const provider = new TestMemoryProvider();
|
|
146
|
+
const router = new MemoryRouter({
|
|
147
|
+
providers: new Map([["default", provider]]),
|
|
148
|
+
defaultProviderId: "default",
|
|
149
|
+
});
|
|
150
|
+
const memory = new AgentMemory({ router });
|
|
151
|
+
const expired = await memory.memorize({
|
|
152
|
+
namespace: "user:ttl",
|
|
153
|
+
type: "cross_thread",
|
|
154
|
+
content: "This should expire immediately.",
|
|
155
|
+
metadata: { ttl_seconds: 0 },
|
|
156
|
+
});
|
|
157
|
+
assert.ok(typeof expired.metadata.expires_at === "string");
|
|
158
|
+
const alive = await memory.memorize({
|
|
159
|
+
namespace: "user:ttl",
|
|
160
|
+
type: "cross_thread",
|
|
161
|
+
content: "This should stay.",
|
|
162
|
+
metadata: { ttl_seconds: 3600 },
|
|
163
|
+
});
|
|
164
|
+
assert.ok(typeof alive.metadata.expires_at === "string");
|
|
165
|
+
const result = await memory.recall({
|
|
166
|
+
namespace: "user:ttl",
|
|
167
|
+
query: "ttl",
|
|
168
|
+
topK: 10,
|
|
169
|
+
types: ["cross_thread"],
|
|
170
|
+
});
|
|
171
|
+
assert.strictEqual(result.items.length, 1);
|
|
172
|
+
assert.strictEqual(result.items[0]?.content, "This should stay.");
|
|
173
|
+
assert.ok(provider.getDeletedCount() >= 1);
|
|
176
174
|
});
|
|
177
175
|
//# sourceMappingURL=agent-memory.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-memory.test.js","sourceRoot":"","sources":["../../../../test/unit/core/agent-memory.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-memory.test.js","sourceRoot":"","sources":["../../../../test/unit/core/agent-memory.test.ts"],"names":[],"mappings":"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"}
|