@easynet/agent-memory 1.0.58 → 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.
@@ -7,18 +7,20 @@
7
7
  * Optional mem0 live test:
8
8
  * RUN_REAL_MEMORY_INTEGRATION=1 RUN_REAL_MEM0_INTEGRATION=1 AGENT_MEMORY_MEM0_CONFIG_JSON='{"vectorStore":{"provider":"qdrant","config":{"host":"localhost","port":6333}}}' pnpm -C agent-memory test:integration
9
9
  */
10
- import { it } from "node:test";
10
+ import { describe, it } from "node:test";
11
11
  import assert from "node:assert";
12
12
  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,157 +40,159 @@ async function createTempDir(prefix) {
38
40
  await mkdir(dir, { recursive: true });
39
41
  return dir;
40
42
  }
41
- it("sqlite: thread/cross_thread/knowledge persistence + key APIs", { skip: !HAS_WORKING_SQLITE }, async () => {
42
- const dir = await createTempDir("agent-memory-real-sqlite");
43
- const threadDb = join(dir, "thread.sqlite");
44
- const crossDb = join(dir, "cross.sqlite");
45
- const knowledgeDb = join(dir, "knowledge.sqlite");
46
- const notePath = join(dir, "guide.txt");
47
- await writeFile(notePath, "TypeScript coding standards. Keep APIs small and explicit.", "utf8");
48
- const memoryRegistry = await createAgentMemoryRegistry({
49
- config: {
50
- stores: {
51
- thread: { id: "thread_sqlite", type: "sqlite", options: { dbPath: threadDb } },
52
- cross_thread: { id: "cross_sqlite", type: "sqlite", options: { dbPath: crossDb } },
53
- knowledge: { id: "knowledge_sqlite", type: "sqlite", options: { dbPath: knowledgeDb } },
54
- },
55
- memory: {
56
- thread: { storeId: "thread_sqlite" },
57
- cross_thread: { storeId: "cross_sqlite" },
58
- knowledge: { storeId: "knowledge_sqlite" },
43
+ describe("real backend integration", { skip: !RUN_REAL }, () => {
44
+ it("sqlite: thread/cross_thread/knowledge persistence + key APIs", { skip: !HAS_WORKING_SQLITE }, async () => {
45
+ const dir = await createTempDir("agent-memory-real-sqlite");
46
+ const threadDb = join(dir, "thread.sqlite");
47
+ const crossDb = join(dir, "cross.sqlite");
48
+ const knowledgeDb = join(dir, "knowledge.sqlite");
49
+ const notePath = join(dir, "guide.txt");
50
+ await writeFile(notePath, "TypeScript coding standards. Keep APIs small and explicit.", "utf8");
51
+ const memoryRegistry = await createAgentMemoryRegistry({
52
+ config: {
53
+ stores: {
54
+ thread: { id: "thread_sqlite", type: "sqlite", options: { dbPath: threadDb } },
55
+ cross_thread: { id: "cross_sqlite", type: "sqlite", options: { dbPath: crossDb } },
56
+ knowledge: { id: "knowledge_sqlite", type: "sqlite", options: { dbPath: knowledgeDb } },
57
+ },
58
+ memory: {
59
+ thread: { storeId: "thread_sqlite" },
60
+ cross_thread: { storeId: "cross_sqlite" },
61
+ knowledge: { storeId: "knowledge_sqlite" },
62
+ },
59
63
  },
60
- },
64
+ });
65
+ const memory = await memoryRegistry.getAgentMemory();
66
+ try {
67
+ await memory.memorize("user:real", "thread", "Current session asks for concise answers.");
68
+ await memory.memorize("user:real", "cross_thread", "User prefers zh-CN output.");
69
+ await memory.memorize("user:real", "knowledge", "Project stack includes TypeScript.", {
70
+ key: "doc://stack",
71
+ source: "manual",
72
+ });
73
+ await memory.memorize("user:real", "knowledge", pathToFileURL(notePath), {
74
+ key: "doc://guide",
75
+ source: "file",
76
+ });
77
+ const all = await memory.recall({
78
+ namespace: "user:real",
79
+ query: "TypeScript and preference",
80
+ types: ["thread", "cross_thread", "knowledge"],
81
+ topK: 20,
82
+ });
83
+ assert.ok(all.items.length >= 3, "should recall entries from all memory types");
84
+ const byKey = await memory.getByKey("user:real", "doc://stack");
85
+ assert.ok(byKey, "getByKey should return persisted knowledge item");
86
+ assert.strictEqual(byKey?.type, "knowledge");
87
+ await memory.deleteByKey("user:real", "doc://stack");
88
+ const deleted = await memory.getByKey("user:real", "doc://stack");
89
+ assert.strictEqual(deleted, null);
90
+ const threadCount = (await openDb(threadDb))
91
+ .prepare("SELECT COUNT(*) as c FROM memory_items WHERE namespace = ?")
92
+ .get("user:real").c;
93
+ const crossCount = (await openDb(crossDb))
94
+ .prepare("SELECT COUNT(*) as c FROM memory_items WHERE namespace = ?")
95
+ .get("user:real").c;
96
+ const knowledgeCount = (await openDb(knowledgeDb))
97
+ .prepare("SELECT COUNT(*) as c FROM memory_items WHERE namespace = ?")
98
+ .get("user:real").c;
99
+ assert.ok(threadCount >= 1, "thread sqlite DB should contain rows");
100
+ assert.ok(crossCount >= 1, "cross_thread sqlite DB should contain rows");
101
+ assert.ok(knowledgeCount >= 1, "knowledge sqlite DB should contain rows");
102
+ await memory.deleteByNamespace("user:real");
103
+ const afterDelete = await memory.recall({
104
+ namespace: "user:real",
105
+ query: "anything",
106
+ types: ["thread", "cross_thread", "knowledge"],
107
+ topK: 20,
108
+ });
109
+ assert.strictEqual(afterDelete.items.length, 0);
110
+ }
111
+ finally {
112
+ await rm(dir, { recursive: true, force: true }).catch(() => { });
113
+ }
61
114
  });
62
- const memory = await memoryRegistry.getAgentMemory();
63
- try {
64
- await memory.memorize("user:real", "thread", "Current session asks for concise answers.");
65
- await memory.memorize("user:real", "cross_thread", "User prefers zh-CN output.");
66
- await memory.memorize("user:real", "knowledge", "Project stack includes TypeScript.", {
67
- key: "doc://stack",
68
- source: "manual",
115
+ it("thread compaction: writes summary into real sqlite", { skip: !HAS_WORKING_SQLITE }, async () => {
116
+ const dir = await createTempDir("agent-memory-real-compaction");
117
+ const threadDb = join(dir, "thread.sqlite");
118
+ const memoryRegistry = await createAgentMemoryRegistry({
119
+ config: {
120
+ stores: {
121
+ thread: { id: "thread_sqlite", type: "sqlite", options: { dbPath: threadDb } },
122
+ cross_thread: { id: "cross_sqlite", type: "sqlite", options: { dbPath: join(dir, "cross.sqlite") } },
123
+ knowledge: { id: "knowledge_sqlite", type: "sqlite", options: { dbPath: join(dir, "knowledge.sqlite") } },
124
+ },
125
+ memory: {
126
+ thread: {
127
+ storeId: "thread_sqlite",
128
+ sessionCompaction: {
129
+ enabled: true,
130
+ maxTokens: 8,
131
+ keepRecentTurns: 1,
132
+ summaryKey: "__summary__",
133
+ checkEveryTurns: 1,
134
+ },
135
+ },
136
+ cross_thread: { storeId: "cross_sqlite" },
137
+ knowledge: { storeId: "knowledge_sqlite" },
138
+ },
139
+ },
140
+ summarizeSessionTurns: async ({ oldTurns }) => `summary(${oldTurns.length})`,
69
141
  });
70
- await memory.memorize("user:real", "knowledge", pathToFileURL(notePath), {
71
- key: "doc://guide",
72
- source: "file",
142
+ const memory = await memoryRegistry.getAgentMemory();
143
+ try {
144
+ await memory.memorize("session:real", "thread", "A".repeat(40));
145
+ await memory.memorize("session:real", "thread", "B".repeat(40));
146
+ const summary = await memory.getByKey("session:real", "__summary__");
147
+ assert.ok(summary, "summary should be stored after compaction");
148
+ assert.strictEqual(summary?.type, "thread");
149
+ assert.strictEqual(summary?.content, "summary(1)");
150
+ const summaryCount = (await openDb(threadDb))
151
+ .prepare("SELECT COUNT(*) as c FROM memory_items WHERE namespace = ? AND path_key = ?")
152
+ .get("session:real", "__summary__").c;
153
+ assert.strictEqual(summaryCount, 1);
154
+ }
155
+ finally {
156
+ await rm(dir, { recursive: true, force: true }).catch(() => { });
157
+ }
158
+ });
159
+ it("mem0 live: cross_thread write/query with real backend", { skip: !RUN_REAL_MEM0 || !MEM0_CONFIG_JSON }, async () => {
160
+ const { Memory } = (await import("mem0ai/oss"));
161
+ const mem0 = new Memory(JSON.parse(MEM0_CONFIG_JSON));
162
+ const memoryRegistry = await createAgentMemoryRegistry({
163
+ config: {
164
+ stores: {
165
+ thread: { id: "thread_sqlite", type: "sqlite", options: { dbPath: ":memory:" } },
166
+ cross_thread: { id: "mem0", type: "mem0" },
167
+ knowledge: { id: "knowledge_sqlite", type: "sqlite", options: { dbPath: ":memory:" } },
168
+ },
169
+ memory: {
170
+ thread: { storeId: "thread_sqlite" },
171
+ cross_thread: { storeId: "mem0" },
172
+ knowledge: { storeId: "knowledge_sqlite" },
173
+ },
174
+ },
175
+ overrides: { mem0 },
73
176
  });
74
- const all = await memory.recall({
75
- namespace: "user:real",
76
- query: "TypeScript and preference",
77
- types: ["thread", "cross_thread", "knowledge"],
78
- topK: 20,
177
+ const memory = await memoryRegistry.getAgentMemory();
178
+ const namespace = `user:mem0:${randomUUID()}`;
179
+ await memory.memorize(namespace, "cross_thread", "User prefers concise answers and markdown lists.");
180
+ const recalled = await memory.recall({
181
+ namespace,
182
+ query: "What format does the user prefer?",
183
+ types: ["cross_thread"],
184
+ topK: 5,
79
185
  });
80
- assert.ok(all.items.length >= 3, "should recall entries from all memory types");
81
- const byKey = await memory.getByKey("user:real", "doc://stack");
82
- assert.ok(byKey, "getByKey should return persisted knowledge item");
83
- assert.strictEqual(byKey?.type, "knowledge");
84
- await memory.deleteByKey("user:real", "doc://stack");
85
- const deleted = await memory.getByKey("user:real", "doc://stack");
86
- assert.strictEqual(deleted, null);
87
- const threadCount = (await openDb(threadDb))
88
- .prepare("SELECT COUNT(*) as c FROM memory_items WHERE namespace = ?")
89
- .get("user:real").c;
90
- const crossCount = (await openDb(crossDb))
91
- .prepare("SELECT COUNT(*) as c FROM memory_items WHERE namespace = ?")
92
- .get("user:real").c;
93
- const knowledgeCount = (await openDb(knowledgeDb))
94
- .prepare("SELECT COUNT(*) as c FROM memory_items WHERE namespace = ?")
95
- .get("user:real").c;
96
- assert.ok(threadCount >= 1, "thread sqlite DB should contain rows");
97
- assert.ok(crossCount >= 1, "cross_thread sqlite DB should contain rows");
98
- assert.ok(knowledgeCount >= 1, "knowledge sqlite DB should contain rows");
99
- await memory.deleteByNamespace("user:real");
186
+ assert.ok(recalled.items.length >= 1, "mem0 recall should return at least one item");
187
+ assert.ok(recalled.items.some((item) => item.content.toLowerCase().includes("concise")), "mem0 recall should include inserted preference");
188
+ await memory.deleteByNamespace(namespace);
100
189
  const afterDelete = await memory.recall({
101
- namespace: "user:real",
102
- query: "anything",
103
- types: ["thread", "cross_thread", "knowledge"],
104
- topK: 20,
190
+ namespace,
191
+ query: "format",
192
+ types: ["cross_thread"],
193
+ topK: 5,
105
194
  });
106
195
  assert.strictEqual(afterDelete.items.length, 0);
107
- }
108
- finally {
109
- await rm(dir, { recursive: true, force: true }).catch(() => { });
110
- }
111
- });
112
- it("thread compaction: writes summary into real sqlite", { skip: !HAS_WORKING_SQLITE }, async () => {
113
- const dir = await createTempDir("agent-memory-real-compaction");
114
- const threadDb = join(dir, "thread.sqlite");
115
- const memoryRegistry = await createAgentMemoryRegistry({
116
- config: {
117
- stores: {
118
- thread: { id: "thread_sqlite", type: "sqlite", options: { dbPath: threadDb } },
119
- cross_thread: { id: "cross_sqlite", type: "sqlite", options: { dbPath: join(dir, "cross.sqlite") } },
120
- knowledge: { id: "knowledge_sqlite", type: "sqlite", options: { dbPath: join(dir, "knowledge.sqlite") } },
121
- },
122
- memory: {
123
- thread: {
124
- storeId: "thread_sqlite",
125
- sessionCompaction: {
126
- enabled: true,
127
- maxTokens: 8,
128
- keepRecentTurns: 1,
129
- summaryKey: "__summary__",
130
- checkEveryTurns: 1,
131
- },
132
- },
133
- cross_thread: { storeId: "cross_sqlite" },
134
- knowledge: { storeId: "knowledge_sqlite" },
135
- },
136
- },
137
- summarizeSessionTurns: async ({ oldTurns }) => `summary(${oldTurns.length})`,
138
- });
139
- const memory = await memoryRegistry.getAgentMemory();
140
- try {
141
- await memory.memorize("session:real", "thread", "A".repeat(40));
142
- await memory.memorize("session:real", "thread", "B".repeat(40));
143
- const summary = await memory.getByKey("session:real", "__summary__");
144
- assert.ok(summary, "summary should be stored after compaction");
145
- assert.strictEqual(summary?.type, "thread");
146
- assert.strictEqual(summary?.content, "summary(1)");
147
- const summaryCount = (await openDb(threadDb))
148
- .prepare("SELECT COUNT(*) as c FROM memory_items WHERE namespace = ? AND path_key = ?")
149
- .get("session:real", "__summary__").c;
150
- assert.strictEqual(summaryCount, 1);
151
- }
152
- finally {
153
- await rm(dir, { recursive: true, force: true }).catch(() => { });
154
- }
155
- });
156
- it("mem0 live: cross_thread write/query with real backend", { skip: !RUN_REAL_MEM0 || !MEM0_CONFIG_JSON }, async () => {
157
- const { Memory } = (await import("mem0ai/oss"));
158
- const mem0 = new Memory(JSON.parse(MEM0_CONFIG_JSON));
159
- const memoryRegistry = await createAgentMemoryRegistry({
160
- config: {
161
- stores: {
162
- thread: { id: "thread_sqlite", type: "sqlite", options: { dbPath: ":memory:" } },
163
- cross_thread: { id: "mem0", type: "mem0" },
164
- knowledge: { id: "knowledge_sqlite", type: "sqlite", options: { dbPath: ":memory:" } },
165
- },
166
- memory: {
167
- thread: { storeId: "thread_sqlite" },
168
- cross_thread: { storeId: "mem0" },
169
- knowledge: { storeId: "knowledge_sqlite" },
170
- },
171
- },
172
- overrides: { mem0 },
173
- });
174
- const memory = await memoryRegistry.getAgentMemory();
175
- const namespace = `user:mem0:${randomUUID()}`;
176
- await memory.memorize(namespace, "cross_thread", "User prefers concise answers and markdown lists.");
177
- const recalled = await memory.recall({
178
- namespace,
179
- query: "What format does the user prefer?",
180
- types: ["cross_thread"],
181
- topK: 5,
182
- });
183
- assert.ok(recalled.items.length >= 1, "mem0 recall should return at least one item");
184
- assert.ok(recalled.items.some((item) => item.content.toLowerCase().includes("concise")), "mem0 recall should include inserted preference");
185
- await memory.deleteByNamespace(namespace);
186
- const afterDelete = await memory.recall({
187
- namespace,
188
- query: "format",
189
- types: ["cross_thread"],
190
- topK: 5,
191
196
  });
192
- assert.strictEqual(afterDelete.items.length, 0);
193
197
  });
194
198
  //# sourceMappingURL=real-memory-features.test.js.map
@@ -1 +1 @@
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
+ {"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,aAAa,CAAC;AAC5C,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,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,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,0BAA0B,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,8DAA8D,EAAE,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAE,EAAE,KAAK,IAAI,EAAE;QAC3G,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,0BAA0B,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACxC,MAAM,SAAS,CACb,QAAQ,EACR,4DAA4D,EAC5D,MAAM,CACP,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC;YACrD,MAAM,EAAE;gBACN,MAAM,EAAE;oBACN,MAAM,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;oBAC9E,YAAY,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;oBAClF,SAAS,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;iBACxF;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;oBACpC,YAAY,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;oBACzC,SAAS,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;iBAC3C;aACF;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,2CAA2C,CAAC,CAAC;YAC1F,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,cAAc,EAAE,4BAA4B,CAAC,CAAC;YACjF,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,oCAAoC,EAAE;gBACpF,GAAG,EAAE,aAAa;gBAClB,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE;gBACvE,GAAG,EAAE,aAAa;gBAClB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBAC9B,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,2BAA2B;gBAClC,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC;gBAC9C,IAAI,EAAE,EAAE;aACT,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,6CAA6C,CAAC,CAAC;YAEhF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAChE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAC;YACpE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAE7C,MAAM,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAClE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAElC,MAAM,WAAW,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACzC,OAAO,CAAC,4DAA4D,CAAC;iBACrE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;iBACvC,OAAO,CAAC,4DAA4D,CAAC;iBACrE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,cAAc,GAAG,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;iBAC/C,OAAO,CAAC,4DAA4D,CAAC;iBACrE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEtB,MAAM,CAAC,EAAE,CAAC,WAAW,IAAI,CAAC,EAAE,sCAAsC,CAAC,CAAC;YACpE,MAAM,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,4CAA4C,CAAC,CAAC;YACzE,MAAM,CAAC,EAAE,CAAC,cAAc,IAAI,CAAC,EAAE,yCAAyC,CAAC,CAAC;YAE1E,MAAM,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACtC,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC;gBAC9C,IAAI,EAAE,EAAE;aACT,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClD,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,oDAAoD,EAAE,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAE,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,8BAA8B,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAE5C,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC;YACrD,MAAM,EAAE;gBACN,MAAM,EAAE;oBACN,MAAM,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;oBAC9E,YAAY,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE;oBACpG,SAAS,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE,EAAE;iBAC1G;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE;wBACN,OAAO,EAAE,eAAe;wBACxB,iBAAiB,EAAE;4BACjB,OAAO,EAAE,IAAI;4BACb,SAAS,EAAE,CAAC;4BACZ,eAAe,EAAE,CAAC;4BAClB,UAAU,EAAE,aAAa;4BACzB,eAAe,EAAE,CAAC;yBACnB;qBACF;oBACD,YAAY,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;oBACzC,SAAS,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;iBAC3C;aACF;YACD,qBAAqB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,WAAW,QAAQ,CAAC,MAAM,GAAG;SAC7E,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YACrE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,2CAA2C,CAAC,CAAC;YAChE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAEnD,MAAM,YAAY,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;iBAC1C,OAAO,CAAC,6EAA6E,CAAC;iBACtF,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACtC,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,CACA,uDAAuD,EACvD,EAAE,IAAI,EAAE,CAAC,aAAa,IAAI,CAAC,gBAAgB,EAAE,EAC7C,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAE7C,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,MAAM,CACrB,IAAI,CAAC,KAAK,CAAC,gBAA0B,CAA4B,CAChD,CAAC;QACpB,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC;YACrD,MAAM,EAAE;gBACN,MAAM,EAAE;oBACN,MAAM,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;oBAChF,YAAY,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;oBAC1C,SAAS,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;iBACvF;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;oBACpC,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;oBACjC,SAAS,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;iBAC3C;aACF;YACD,SAAS,EAAE,EAAE,IAAI,EAAE;SACpB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QAErD,MAAM,SAAS,GAAG,aAAa,UAAU,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,kDAAkD,CAAC,CAAC;QAErG,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,SAAS;YACT,KAAK,EAAE,mCAAmC;YAC1C,KAAK,EAAE,CAAC,cAAc,CAAC;YACvB,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,6CAA6C,CAAC,CAAC;QACrF,MAAM,CAAC,EAAE,CACP,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAC7E,gDAAgD,CACjD,CAAC;QAEF,MAAM,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACtC,SAAS;YACT,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,CAAC,cAAc,CAAC;YACvB,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * VLM: AGENT_MEMORY_VLM_URL (default http://localhost:11434), AGENT_MEMORY_VLM_MODEL (default qwen3-vl:2b)
6
6
  * LLM: AGENT_MEMORY_LLM_URL (default https://ollama-rtx-4070.easynet.world/), AGENT_MEMORY_LLM_MODEL (default gpt-oss-80k:latest)
7
7
  */
8
- import { it } from "node:test";
8
+ import { describe, it } from "node:test";
9
9
  import assert from "node:assert";
10
10
  import { join } from "node:path";
11
11
  import { writeFile, mkdir, rm } from "node:fs/promises";
@@ -24,102 +24,104 @@ const MINIMAL_PNG = Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAA
24
24
  const baseConfig = {
25
25
  stores: [{ id: "default", type: "in_memory" }],
26
26
  };
27
- it("VLM: memorize image URL with captionFn and recall returns caption", async () => {
28
- const dir = join(tmpdir(), `agent-memory-vlm-${randomUUID()}`);
29
- await mkdir(dir, { recursive: true });
30
- const imagePath = join(dir, "test.png");
31
- await writeFile(imagePath, MINIMAL_PNG);
32
- try {
33
- const captionFn = createOllamaCaptionFn(VLM_URL, VLM_MODEL);
27
+ describe("live VLM/LLM 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);
33
+ try {
34
+ const captionFn = createOllamaCaptionFn(VLM_URL, VLM_MODEL);
35
+ const memoryRegistry = await createAgentMemoryRegistry({
36
+ config: baseConfig,
37
+ captionFn,
38
+ });
39
+ const memory = await memoryRegistry.getAgentMemory();
40
+ const item = await memory.memorize("test:vlm-live", "knowledge", pathToFileURL(imagePath));
41
+ assert.ok(item.id);
42
+ assert.strictEqual(item.type, "knowledge");
43
+ const result = await memory.recall({
44
+ namespace: "test:vlm-live",
45
+ query: "image",
46
+ topK: 5,
47
+ });
48
+ assert.ok(result.items.length >= 1, "recall should return at least one item");
49
+ const content = result.items[0].content;
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");
52
+ }
53
+ finally {
54
+ await rm(dir, { recursive: true, force: true }).catch(() => { });
55
+ }
56
+ });
57
+ it("LLM: memorize without type uses classifyMemory and recall returns typed item", async () => {
58
+ const classifyMemory = createOllamaClassifyMemoryFn(LLM_URL, LLM_MODEL);
34
59
  const memoryRegistry = await createAgentMemoryRegistry({
35
60
  config: baseConfig,
36
- captionFn,
61
+ classifyMemory,
37
62
  });
38
63
  const memory = await memoryRegistry.getAgentMemory();
39
- const item = await memory.memorize("test:vlm-live", "knowledge", pathToFileURL(imagePath));
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.");
40
65
  assert.ok(item.id);
41
- assert.strictEqual(item.type, "knowledge");
66
+ assert.ok(["thread", "cross_thread", "knowledge"].includes(item.type), "type should be one of thread/cross_thread/knowledge");
42
67
  const result = await memory.recall({
43
- namespace: "test:vlm-live",
44
- query: "image",
68
+ namespace: "test:llm-live",
69
+ query: "API",
45
70
  topK: 5,
46
71
  });
47
- assert.ok(result.items.length >= 1, "recall should return at least one item");
48
- const content = result.items[0].content;
49
- assert.ok(content && !content.startsWith("(image:"), "stored content should be VLM caption, not placeholder");
50
- assert.ok(content.length > 5, "caption should be non-trivial");
51
- }
52
- finally {
53
- await rm(dir, { recursive: true, force: true }).catch(() => { });
54
- }
55
- });
56
- it("LLM: memorize without type uses classifyMemory and recall returns typed item", async () => {
57
- const classifyMemory = createOllamaClassifyMemoryFn(LLM_URL, LLM_MODEL);
58
- const memoryRegistry = await createAgentMemoryRegistry({
59
- config: baseConfig,
60
- classifyMemory,
61
- });
62
- const memory = await memoryRegistry.getAgentMemory();
63
- 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.");
64
- assert.ok(item.id);
65
- assert.ok(["thread", "cross_thread", "knowledge"].includes(item.type), "type should be one of thread/cross_thread/knowledge");
66
- const result = await memory.recall({
67
- namespace: "test:llm-live",
68
- query: "API",
69
- topK: 5,
70
- });
71
- assert.strictEqual(result.items.length, 1);
72
- assert.strictEqual(result.items[0].content, "GET /users returns a list of users. POST /users creates a user. See API docs.");
73
- });
74
- it("full use case: VLM + LLM together — image caption, text classify, and recall", async () => {
75
- const dir = join(tmpdir(), `agent-memory-full-${randomUUID()}`);
76
- await mkdir(dir, { recursive: true });
77
- const imagePath = join(dir, "doc.png");
78
- await writeFile(imagePath, MINIMAL_PNG);
79
- const captionFn = createOllamaCaptionFn(VLM_URL, VLM_MODEL);
80
- const classifyMemory = createOllamaClassifyMemoryFn(LLM_URL, LLM_MODEL);
81
- const memoryRegistry = await createAgentMemoryRegistry({
82
- config: baseConfig,
83
- captionFn,
84
- classifyMemory,
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.");
85
74
  });
86
- const memory = await memoryRegistry.getAgentMemory();
87
- try {
88
- // 1) Memorize image real VLM captions it
89
- const imageItem = await memory.memorize("test:full", "knowledge", pathToFileURL(imagePath));
90
- assert.ok(imageItem.id);
91
- assert.strictEqual(imageItem.type, "knowledge");
92
- assert.ok(imageItem.content && !imageItem.content.startsWith("(image:"), "VLM must have produced a real caption");
93
- // 2) Memorize text without type — real LLM classifies it
94
- const textItem = await memory.memorize("test:full", "cross_thread", "User preference: prefers dark theme and compact layout.");
95
- assert.ok(textItem.id);
96
- assert.ok(["thread", "cross_thread", "knowledge"].includes(textItem.type), "LLM must have classified type");
97
- // 3) Recall — should return both items (real provider)
98
- const recallResult = await memory.recall({
99
- namespace: "test:full",
100
- query: "preference and image",
101
- topK: 10,
102
- });
103
- assert.ok(recallResult.items.length >= 2, "recall should return image + text");
104
- assert.ok(recallResult.traceId);
105
- const contents = recallResult.items.map((i) => i.content);
106
- const hasCaption = contents.some((c) => c && !c.startsWith("(image:") && c.length > 5);
107
- const hasPreference = contents.some((c) => c && c.includes("dark") && c.includes("preference"));
108
- assert.ok(hasCaption, "recall should include VLM caption");
109
- assert.ok(hasPreference, "recall should include user preference text");
110
- // 4) Recall again — validate full stack formatting for prompt injection
111
- const promptResult = await memory.recall({
112
- namespace: "test:full",
113
- query: "user preferences and any images",
114
- topK: 10,
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({
83
+ config: baseConfig,
84
+ captionFn,
85
+ classifyMemory,
115
86
  });
116
- assert.ok(promptResult.traceId);
117
- assert.ok(promptResult.injectedText.length > 0);
118
- assert.ok(promptResult.injectedText.includes("knowledge") || promptResult.injectedText.includes("cross_thread") || promptResult.injectedText.includes("thread"), "injected text should include type context");
119
- assert.ok(promptResult.items.length >= 2);
120
- }
121
- finally {
122
- await rm(dir, { recursive: true, force: true }).catch(() => { });
123
- }
87
+ const memory = await memoryRegistry.getAgentMemory();
88
+ try {
89
+ // 1) Memorize image real VLM captions it
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");
94
+ // 2) Memorize text without type — real LLM classifies it
95
+ const textItem = await memory.memorize("test:full", "cross_thread", "User preference: prefers dark theme and compact layout.");
96
+ assert.ok(textItem.id);
97
+ assert.ok(["thread", "cross_thread", "knowledge"].includes(textItem.type), "LLM must have classified type");
98
+ // 3) Recall — should return both items (real provider)
99
+ const recallResult = await memory.recall({
100
+ namespace: "test:full",
101
+ query: "preference and image",
102
+ topK: 10,
103
+ });
104
+ assert.ok(recallResult.items.length >= 2, "recall should return image + text");
105
+ assert.ok(recallResult.traceId);
106
+ const contents = recallResult.items.map((i) => i.content);
107
+ const hasCaption = contents.some((c) => c && !c.startsWith("(image:") && c.length > 5);
108
+ const hasPreference = contents.some((c) => c && c.includes("dark") && c.includes("preference"));
109
+ assert.ok(hasCaption, "recall should include VLM caption");
110
+ assert.ok(hasPreference, "recall should include user preference text");
111
+ // 4) Recall again — validate full stack formatting for prompt injection
112
+ const promptResult = await memory.recall({
113
+ namespace: "test:full",
114
+ query: "user preferences and any images",
115
+ topK: 10,
116
+ });
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);
121
+ }
122
+ finally {
123
+ await rm(dir, { recursive: true, force: true }).catch(() => { });
124
+ }
125
+ });
124
126
  });
125
127
  //# sourceMappingURL=vlm-llm-live.test.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"vlm-llm-live.test.js","sourceRoot":"","sources":["../../../test/integration/vlm-llm-live.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easynet/agent-memory",
3
- "version": "1.0.58",
3
+ "version": "1.0.59",
4
4
  "description": "Unified memory layer for LangChain / LangGraph / DeepAgents",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",