@easynet/agent-memory 0.0.2 → 1.0.1
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 +89 -224
- package/dist/src/core/agent-memory.d.ts +41 -0
- package/dist/src/core/agent-memory.d.ts.map +1 -0
- package/dist/src/core/agent-memory.js +127 -0
- package/dist/src/core/agent-memory.js.map +1 -0
- package/dist/src/core/config.d.ts +78 -0
- package/dist/src/core/config.d.ts.map +1 -0
- package/dist/src/core/config.js +41 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/observability.d.ts +22 -0
- package/dist/src/core/observability.d.ts.map +1 -0
- package/dist/src/core/observability.js +33 -0
- package/dist/src/core/observability.js.map +1 -0
- package/dist/src/core/policy.d.ts +47 -0
- package/dist/src/core/policy.d.ts.map +1 -0
- package/dist/src/core/policy.js +73 -0
- package/dist/src/core/policy.js.map +1 -0
- package/dist/src/core/privacy.d.ts +23 -0
- package/dist/src/core/privacy.d.ts.map +1 -0
- package/dist/src/core/privacy.js +45 -0
- package/dist/src/core/privacy.js.map +1 -0
- package/dist/src/core/router.d.ts +35 -0
- package/dist/src/core/router.d.ts.map +1 -0
- package/dist/src/core/router.js +86 -0
- package/dist/src/core/router.js.map +1 -0
- package/dist/src/core/types.d.ts +82 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +7 -0
- package/dist/{adapters → src/core}/types.js.map +1 -1
- package/dist/src/create-agent-memory.d.ts +47 -0
- package/dist/src/create-agent-memory.d.ts.map +1 -0
- package/dist/src/create-agent-memory.js +148 -0
- package/dist/src/create-agent-memory.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +13 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/ingest/pdf-ingest.d.ts +27 -0
- package/dist/src/ingest/pdf-ingest.d.ts.map +1 -0
- package/dist/src/ingest/pdf-ingest.js +89 -0
- package/dist/src/ingest/pdf-ingest.js.map +1 -0
- package/dist/src/ingest/url-ingest.d.ts +27 -0
- package/dist/src/ingest/url-ingest.d.ts.map +1 -0
- package/dist/src/ingest/url-ingest.js +301 -0
- package/dist/src/ingest/url-ingest.js.map +1 -0
- package/dist/src/integrations/deepagents-adapter.d.ts +42 -0
- package/dist/src/integrations/deepagents-adapter.d.ts.map +1 -0
- package/dist/src/integrations/deepagents-adapter.js +146 -0
- package/dist/src/integrations/deepagents-adapter.js.map +1 -0
- package/dist/src/integrations/langchain.d.ts +27 -0
- package/dist/src/integrations/langchain.d.ts.map +1 -0
- package/dist/src/integrations/langchain.js +28 -0
- package/dist/src/integrations/langchain.js.map +1 -0
- package/dist/src/integrations/langgraph.d.ts +23 -0
- package/dist/src/integrations/langgraph.d.ts.map +1 -0
- package/dist/src/integrations/langgraph.js +30 -0
- package/dist/src/integrations/langgraph.js.map +1 -0
- package/dist/src/providers/in-memory-store.d.ts +15 -0
- package/dist/src/providers/in-memory-store.d.ts.map +1 -0
- package/dist/src/providers/in-memory-store.js +62 -0
- package/dist/src/providers/in-memory-store.js.map +1 -0
- package/dist/src/providers/mem0-provider.d.ts +47 -0
- package/dist/src/providers/mem0-provider.d.ts.map +1 -0
- package/dist/src/providers/mem0-provider.js +99 -0
- package/dist/src/providers/mem0-provider.js.map +1 -0
- package/dist/src/providers/rag-provider.d.ts +27 -0
- package/dist/src/providers/rag-provider.d.ts.map +1 -0
- package/dist/src/providers/rag-provider.js +58 -0
- package/dist/src/providers/rag-provider.js.map +1 -0
- package/dist/src/providers/sqlite-store.d.ts +21 -0
- package/dist/src/providers/sqlite-store.d.ts.map +1 -0
- package/dist/src/providers/sqlite-store.js +142 -0
- package/dist/src/providers/sqlite-store.js.map +1 -0
- package/dist/test/core/agent-memory.test.d.ts +2 -0
- package/dist/test/core/agent-memory.test.d.ts.map +1 -0
- package/dist/test/core/agent-memory.test.js +119 -0
- package/dist/test/core/agent-memory.test.js.map +1 -0
- package/dist/test/core/config.test.d.ts +2 -0
- package/dist/test/core/config.test.d.ts.map +1 -0
- package/dist/test/core/config.test.js +48 -0
- package/dist/test/core/config.test.js.map +1 -0
- package/dist/test/core/observability.test.d.ts +2 -0
- package/dist/test/core/observability.test.d.ts.map +1 -0
- package/dist/test/core/observability.test.js +53 -0
- package/dist/test/core/observability.test.js.map +1 -0
- package/dist/test/core/policy.test.d.ts +2 -0
- package/dist/test/core/policy.test.d.ts.map +1 -0
- package/dist/test/core/policy.test.js +42 -0
- package/dist/test/core/policy.test.js.map +1 -0
- package/dist/test/core/privacy.test.d.ts +2 -0
- package/dist/test/core/privacy.test.d.ts.map +1 -0
- package/dist/test/core/privacy.test.js +44 -0
- package/dist/test/core/privacy.test.js.map +1 -0
- package/dist/test/core/router.test.d.ts +2 -0
- package/dist/test/core/router.test.d.ts.map +1 -0
- package/dist/test/core/router.test.js +118 -0
- package/dist/test/core/router.test.js.map +1 -0
- package/dist/test/create-agent-memory.test.d.ts +2 -0
- package/dist/test/create-agent-memory.test.d.ts.map +1 -0
- package/dist/test/create-agent-memory.test.js +122 -0
- package/dist/test/create-agent-memory.test.js.map +1 -0
- package/dist/test/ingest/url-ingest.test.d.ts +2 -0
- package/dist/test/ingest/url-ingest.test.d.ts.map +1 -0
- package/dist/test/ingest/url-ingest.test.js +142 -0
- package/dist/test/ingest/url-ingest.test.js.map +1 -0
- package/dist/test/integration/agent-memory-flow.test.d.ts +5 -0
- package/dist/test/integration/agent-memory-flow.test.d.ts.map +1 -0
- package/dist/test/integration/agent-memory-flow.test.js +80 -0
- package/dist/test/integration/agent-memory-flow.test.js.map +1 -0
- package/dist/test/integration/helpers/ollama-live.d.ts +16 -0
- package/dist/test/integration/helpers/ollama-live.d.ts.map +1 -0
- package/dist/test/integration/helpers/ollama-live.js +101 -0
- package/dist/test/integration/helpers/ollama-live.js.map +1 -0
- package/dist/test/integration/url-ingest-flow.test.d.ts +5 -0
- package/dist/test/integration/url-ingest-flow.test.d.ts.map +1 -0
- package/dist/test/integration/url-ingest-flow.test.js +50 -0
- package/dist/test/integration/url-ingest-flow.test.js.map +1 -0
- package/dist/test/integration/vlm-llm-live.test.d.ts +9 -0
- package/dist/test/integration/vlm-llm-live.test.d.ts.map +1 -0
- package/dist/test/integration/vlm-llm-live.test.js +141 -0
- package/dist/test/integration/vlm-llm-live.test.js.map +1 -0
- package/dist/test/providers/in-memory-store.test.d.ts +2 -0
- package/dist/test/providers/in-memory-store.test.d.ts.map +1 -0
- package/dist/test/providers/in-memory-store.test.js +44 -0
- package/dist/test/providers/in-memory-store.test.js.map +1 -0
- package/dist/test/providers/rag-provider.test.d.ts +2 -0
- package/dist/test/providers/rag-provider.test.d.ts.map +1 -0
- package/dist/test/providers/rag-provider.test.js +113 -0
- package/dist/test/providers/rag-provider.test.js.map +1 -0
- package/dist/test/providers/sqlite-store.test.d.ts +2 -0
- package/dist/test/providers/sqlite-store.test.d.ts.map +1 -0
- package/dist/test/providers/sqlite-store.test.js +119 -0
- package/dist/test/providers/sqlite-store.test.js.map +1 -0
- package/package.json +79 -39
- package/bin/chat +0 -11
- package/dist/adapters/index.d.ts +0 -8
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -29
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/mem0/mem0-store.d.ts +0 -29
- package/dist/adapters/mem0/mem0-store.d.ts.map +0 -1
- package/dist/adapters/mem0/mem0-store.js +0 -174
- package/dist/adapters/mem0/mem0-store.js.map +0 -1
- package/dist/adapters/rag-http/rag-http-retriever.d.ts +0 -18
- package/dist/adapters/rag-http/rag-http-retriever.d.ts.map +0 -1
- package/dist/adapters/rag-http/rag-http-retriever.js +0 -71
- package/dist/adapters/rag-http/rag-http-retriever.js.map +0 -1
- package/dist/adapters/types.d.ts +0 -25
- package/dist/adapters/types.d.ts.map +0 -1
- package/dist/adapters/types.js +0 -6
- package/dist/boot/boot-rebuilder.d.ts +0 -26
- package/dist/boot/boot-rebuilder.d.ts.map +0 -1
- package/dist/boot/boot-rebuilder.js +0 -112
- package/dist/boot/boot-rebuilder.js.map +0 -1
- package/dist/boot/index.d.ts +0 -3
- package/dist/boot/index.d.ts.map +0 -1
- package/dist/boot/index.js +0 -6
- package/dist/boot/index.js.map +0 -1
- package/dist/cli/chat-split.d.ts +0 -22
- package/dist/cli/chat-split.d.ts.map +0 -1
- package/dist/cli/chat-split.js +0 -187
- package/dist/cli/chat-split.js.map +0 -1
- package/dist/cli/chat.d.ts +0 -19
- package/dist/cli/chat.d.ts.map +0 -1
- package/dist/cli/chat.js +0 -266
- package/dist/cli/chat.js.map +0 -1
- package/dist/cli/commands/command-handler.d.ts +0 -32
- package/dist/cli/commands/command-handler.d.ts.map +0 -1
- package/dist/cli/commands/command-handler.js +0 -143
- package/dist/cli/commands/command-handler.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -8
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/ui/display-manager.d.ts +0 -18
- package/dist/cli/ui/display-manager.d.ts.map +0 -1
- package/dist/cli/ui/display-manager.js +0 -69
- package/dist/cli/ui/display-manager.js.map +0 -1
- package/dist/cli/ui/screen-layout.d.ts +0 -12
- package/dist/cli/ui/screen-layout.d.ts.map +0 -1
- package/dist/cli/ui/screen-layout.js +0 -125
- package/dist/cli/ui/screen-layout.js.map +0 -1
- package/dist/config/index.d.ts +0 -2
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -6
- package/dist/config/index.js.map +0 -1
- package/dist/config/loader.d.ts +0 -9
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js +0 -107
- package/dist/config/loader.js.map +0 -1
- package/dist/context/context-builder.d.ts +0 -18
- package/dist/context/context-builder.d.ts.map +0 -1
- package/dist/context/context-builder.js +0 -91
- package/dist/context/context-builder.js.map +0 -1
- package/dist/core/agent-memory.d.ts +0 -50
- package/dist/core/agent-memory.d.ts.map +0 -1
- package/dist/core/agent-memory.js +0 -297
- package/dist/core/agent-memory.js.map +0 -1
- package/dist/embedding/embedder.d.ts +0 -49
- package/dist/embedding/embedder.d.ts.map +0 -1
- package/dist/embedding/embedder.js +0 -146
- package/dist/embedding/embedder.js.map +0 -1
- package/dist/embedding/index.d.ts +0 -3
- package/dist/embedding/index.d.ts.map +0 -1
- package/dist/embedding/index.js +0 -8
- package/dist/embedding/index.js.map +0 -1
- package/dist/gate/deduplicator.d.ts +0 -22
- package/dist/gate/deduplicator.d.ts.map +0 -1
- package/dist/gate/deduplicator.js +0 -74
- package/dist/gate/deduplicator.js.map +0 -1
- package/dist/gate/extractor.d.ts +0 -33
- package/dist/gate/extractor.d.ts.map +0 -1
- package/dist/gate/extractor.js +0 -122
- package/dist/gate/extractor.js.map +0 -1
- package/dist/gate/index.d.ts +0 -3
- package/dist/gate/index.d.ts.map +0 -1
- package/dist/gate/index.js +0 -6
- package/dist/gate/index.js.map +0 -1
- package/dist/gate/memory-gate.d.ts +0 -27
- package/dist/gate/memory-gate.d.ts.map +0 -1
- package/dist/gate/memory-gate.js +0 -86
- package/dist/gate/memory-gate.js.map +0 -1
- package/dist/gate/redactor.d.ts +0 -14
- package/dist/gate/redactor.d.ts.map +0 -1
- package/dist/gate/redactor.js +0 -24
- package/dist/gate/redactor.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -24
- package/dist/index.js.map +0 -1
- package/dist/indexing/in-memory-index.d.ts +0 -67
- package/dist/indexing/in-memory-index.d.ts.map +0 -1
- package/dist/indexing/in-memory-index.js +0 -135
- package/dist/indexing/in-memory-index.js.map +0 -1
- package/dist/indexing/index.d.ts +0 -3
- package/dist/indexing/index.d.ts.map +0 -1
- package/dist/indexing/index.js +0 -6
- package/dist/indexing/index.js.map +0 -1
- package/dist/persistence/database/schema.d.ts +0 -6
- package/dist/persistence/database/schema.d.ts.map +0 -1
- package/dist/persistence/database/schema.js +0 -75
- package/dist/persistence/database/schema.js.map +0 -1
- package/dist/persistence/index.d.ts +0 -3
- package/dist/persistence/index.d.ts.map +0 -1
- package/dist/persistence/index.js +0 -6
- package/dist/persistence/index.js.map +0 -1
- package/dist/persistence/repository/embedding-operations.d.ts +0 -17
- package/dist/persistence/repository/embedding-operations.d.ts.map +0 -1
- package/dist/persistence/repository/embedding-operations.js +0 -58
- package/dist/persistence/repository/embedding-operations.js.map +0 -1
- package/dist/persistence/repository/memory-operations.d.ts +0 -28
- package/dist/persistence/repository/memory-operations.d.ts.map +0 -1
- package/dist/persistence/repository/memory-operations.js +0 -87
- package/dist/persistence/repository/memory-operations.js.map +0 -1
- package/dist/persistence/repository/meta-operations.d.ts +0 -15
- package/dist/persistence/repository/meta-operations.d.ts.map +0 -1
- package/dist/persistence/repository/meta-operations.js +0 -20
- package/dist/persistence/repository/meta-operations.js.map +0 -1
- package/dist/persistence/sqlite-repo.d.ts +0 -58
- package/dist/persistence/sqlite-repo.d.ts.map +0 -1
- package/dist/persistence/sqlite-repo.js +0 -81
- package/dist/persistence/sqlite-repo.js.map +0 -1
- package/dist/persistence/utils/hash.d.ts +0 -8
- package/dist/persistence/utils/hash.d.ts.map +0 -1
- package/dist/persistence/utils/hash.js +0 -48
- package/dist/persistence/utils/hash.js.map +0 -1
- package/dist/persistence/utils/serialization.d.ts +0 -33
- package/dist/persistence/utils/serialization.d.ts.map +0 -1
- package/dist/persistence/utils/serialization.js +0 -85
- package/dist/persistence/utils/serialization.js.map +0 -1
- package/dist/processing/document/document-processor.d.ts +0 -30
- package/dist/processing/document/document-processor.d.ts.map +0 -1
- package/dist/processing/document/document-processor.js +0 -158
- package/dist/processing/document/document-processor.js.map +0 -1
- package/dist/processing/document/index.d.ts +0 -3
- package/dist/processing/document/index.d.ts.map +0 -1
- package/dist/processing/document/index.js +0 -6
- package/dist/processing/document/index.js.map +0 -1
- package/dist/ranker/ranker.d.ts +0 -26
- package/dist/ranker/ranker.d.ts.map +0 -1
- package/dist/ranker/ranker.js +0 -40
- package/dist/ranker/ranker.js.map +0 -1
- package/dist/recall/recall-engine.d.ts +0 -19
- package/dist/recall/recall-engine.d.ts.map +0 -1
- package/dist/recall/recall-engine.js +0 -79
- package/dist/recall/recall-engine.js.map +0 -1
- package/dist/types/config.d.ts +0 -821
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -128
- package/dist/types/config.js.map +0 -1
- package/dist/types/document.d.ts +0 -37
- package/dist/types/document.d.ts.map +0 -1
- package/dist/types/document.js +0 -6
- package/dist/types/document.js.map +0 -1
- package/dist/types/index.d.ts +0 -86
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-live.js","sourceRoot":"","sources":["../../../../test/integration/helpers/ollama-live.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-ingest-flow.test.d.ts","sourceRoot":"","sources":["../../../test/integration/url-ingest-flow.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Integration tests: createAgentMemory + memorize(url) + recall (full stack).
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const node_test_1 = require("node:test");
|
|
10
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
11
|
+
const node_path_1 = require("node:path");
|
|
12
|
+
const promises_1 = require("node:fs/promises");
|
|
13
|
+
const node_os_1 = require("node:os");
|
|
14
|
+
const node_crypto_1 = require("node:crypto");
|
|
15
|
+
const create_agent_memory_js_1 = require("../../src/create-agent-memory.js");
|
|
16
|
+
(0, node_test_1.describe)("url ingest integration", () => {
|
|
17
|
+
(0, node_test_1.it)("createAgentMemory memorize with url ingests file and recall returns content", async () => {
|
|
18
|
+
const dir = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `agent-memory-integration-${(0, node_crypto_1.randomUUID)()}`);
|
|
19
|
+
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
20
|
+
const filePath = (0, node_path_1.join)(dir, "note.txt");
|
|
21
|
+
const content = "Integration chunk one.\n\nIntegration chunk two.";
|
|
22
|
+
await (0, promises_1.writeFile)(filePath, content, "utf-8");
|
|
23
|
+
const memory = await (0, create_agent_memory_js_1.createAgentMemory)({
|
|
24
|
+
config: {
|
|
25
|
+
providers: [{ id: "default", type: "in_memory" }],
|
|
26
|
+
router: { defaultProvider: "default", rules: [] },
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
try {
|
|
30
|
+
const item = await memory.memorize({
|
|
31
|
+
namespace: "test:ingest",
|
|
32
|
+
url: filePath,
|
|
33
|
+
});
|
|
34
|
+
node_assert_1.default.ok(item.id);
|
|
35
|
+
node_assert_1.default.strictEqual(item.type, "knowledge");
|
|
36
|
+
const result = await memory.recall({
|
|
37
|
+
namespace: "test:ingest",
|
|
38
|
+
query: "Integration",
|
|
39
|
+
topK: 10,
|
|
40
|
+
});
|
|
41
|
+
node_assert_1.default.ok(result.items.length >= 1);
|
|
42
|
+
node_assert_1.default.ok(result.injectedText.includes("Integration"));
|
|
43
|
+
node_assert_1.default.ok(result.traceId);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
await (0, promises_1.rm)(dir, { recursive: true, force: true }).catch(() => { });
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=url-ingest-flow.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-ingest-flow.test.js","sourceRoot":"","sources":["../../../test/integration/url-ingest-flow.test.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAEH,yCAAyC;AACzC,8DAAiC;AACjC,yCAAiC;AACjC,+CAAwD;AACxD,qCAAiC;AACjC,6CAAyC;AACzC,6EAAqE;AAErE,IAAA,oBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAA,cAAE,EAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,GAAG,GAAG,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,4BAA4B,IAAA,wBAAU,GAAE,EAAE,CAAC,CAAC;QACvE,MAAM,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,kDAAkD,CAAC;QACnE,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,IAAA,0CAAiB,EAAC;YACrC,MAAM,EAAE;gBACN,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBACjD,MAAM,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;aAClD;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;gBACjC,SAAS,EAAE,aAAa;gBACxB,GAAG,EAAE,QAAQ;aACd,CAAC,CAAC;YACH,qBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,qBAAM,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,qBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YACpC,qBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;YACvD,qBAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,MAAM,IAAA,aAAE,EAAC,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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live integration tests: real VLM (image caption) and LLM (classify) via Ollama.
|
|
3
|
+
* Run only when RUN_LIVE_INTEGRATION=1. Uses env for endpoints and models.
|
|
4
|
+
*
|
|
5
|
+
* VLM: AGENT_MEMORY_VLM_URL (default http://localhost:11434), AGENT_MEMORY_VLM_MODEL (default qwen3-vl:2b)
|
|
6
|
+
* LLM: AGENT_MEMORY_LLM_URL (default https://ollama-rtx-4070.easynet.world/), AGENT_MEMORY_LLM_MODEL (default gpt-oss-80k:latest)
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=vlm-llm-live.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vlm-llm-live.test.d.ts","sourceRoot":"","sources":["../../../test/integration/vlm-llm-live.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Live integration tests: real VLM (image caption) and LLM (classify) via Ollama.
|
|
4
|
+
* Run only when RUN_LIVE_INTEGRATION=1. Uses env for endpoints and models.
|
|
5
|
+
*
|
|
6
|
+
* VLM: AGENT_MEMORY_VLM_URL (default http://localhost:11434), AGENT_MEMORY_VLM_MODEL (default qwen3-vl:2b)
|
|
7
|
+
* LLM: AGENT_MEMORY_LLM_URL (default https://ollama-rtx-4070.easynet.world/), AGENT_MEMORY_LLM_MODEL (default gpt-oss-80k:latest)
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const node_test_1 = require("node:test");
|
|
14
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
15
|
+
const node_path_1 = require("node:path");
|
|
16
|
+
const promises_1 = require("node:fs/promises");
|
|
17
|
+
const node_os_1 = require("node:os");
|
|
18
|
+
const node_crypto_1 = require("node:crypto");
|
|
19
|
+
const create_agent_memory_js_1 = require("../../src/create-agent-memory.js");
|
|
20
|
+
const ollama_live_js_1 = require("./helpers/ollama-live.js");
|
|
21
|
+
const RUN_LIVE = process.env.RUN_LIVE_INTEGRATION === "1";
|
|
22
|
+
const VLM_URL = process.env.AGENT_MEMORY_VLM_URL ?? "http://localhost:11434";
|
|
23
|
+
const VLM_MODEL = process.env.AGENT_MEMORY_VLM_MODEL ?? "qwen3-vl:2b";
|
|
24
|
+
const LLM_URL = process.env.AGENT_MEMORY_LLM_URL ?? "https://ollama-rtx-4070.easynet.world/";
|
|
25
|
+
const LLM_MODEL = process.env.AGENT_MEMORY_LLM_MODEL ?? "gpt-oss-80k:latest";
|
|
26
|
+
/** Minimal 1x1 PNG (valid image for VLM caption). */
|
|
27
|
+
const MINIMAL_PNG = Buffer.from("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==", "base64");
|
|
28
|
+
const baseConfig = {
|
|
29
|
+
providers: [{ id: "default", type: "in_memory" }],
|
|
30
|
+
router: { defaultProvider: "default", rules: [] },
|
|
31
|
+
};
|
|
32
|
+
(0, node_test_1.describe)("VLM/LLM live integration", { skip: !RUN_LIVE }, () => {
|
|
33
|
+
(0, node_test_1.it)("VLM: memorize image URL with captionFn and recall returns caption", async () => {
|
|
34
|
+
const dir = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `agent-memory-vlm-${(0, node_crypto_1.randomUUID)()}`);
|
|
35
|
+
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
36
|
+
const imagePath = (0, node_path_1.join)(dir, "test.png");
|
|
37
|
+
await (0, promises_1.writeFile)(imagePath, MINIMAL_PNG);
|
|
38
|
+
try {
|
|
39
|
+
const captionFn = (0, ollama_live_js_1.createOllamaCaptionFn)(VLM_URL, VLM_MODEL);
|
|
40
|
+
const memory = await (0, create_agent_memory_js_1.createAgentMemory)({
|
|
41
|
+
config: baseConfig,
|
|
42
|
+
captionFn,
|
|
43
|
+
});
|
|
44
|
+
const item = await memory.memorize({
|
|
45
|
+
namespace: "test:vlm-live",
|
|
46
|
+
url: imagePath,
|
|
47
|
+
});
|
|
48
|
+
node_assert_1.default.ok(item.id);
|
|
49
|
+
node_assert_1.default.strictEqual(item.type, "knowledge");
|
|
50
|
+
const result = await memory.recall({
|
|
51
|
+
namespace: "test:vlm-live",
|
|
52
|
+
query: "image",
|
|
53
|
+
topK: 5,
|
|
54
|
+
});
|
|
55
|
+
node_assert_1.default.ok(result.items.length >= 1, "recall should return at least one item");
|
|
56
|
+
const content = result.items[0].content;
|
|
57
|
+
node_assert_1.default.ok(content && !content.startsWith("(image:"), "stored content should be VLM caption, not placeholder");
|
|
58
|
+
node_assert_1.default.ok(content.length > 5, "caption should be non-trivial");
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
await (0, promises_1.rm)(dir, { recursive: true, force: true }).catch(() => { });
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
(0, node_test_1.it)("LLM: memorize without type uses classifyMemory and recall returns typed item", async () => {
|
|
65
|
+
const classifyMemory = (0, ollama_live_js_1.createOllamaClassifyMemoryFn)(LLM_URL, LLM_MODEL);
|
|
66
|
+
const memory = await (0, create_agent_memory_js_1.createAgentMemory)({
|
|
67
|
+
config: baseConfig,
|
|
68
|
+
classifyMemory,
|
|
69
|
+
});
|
|
70
|
+
const item = await memory.memorize({
|
|
71
|
+
namespace: "test:llm-live",
|
|
72
|
+
content: "GET /users returns a list of users. POST /users creates a user. See API docs.",
|
|
73
|
+
});
|
|
74
|
+
node_assert_1.default.ok(item.id);
|
|
75
|
+
node_assert_1.default.ok(["thread", "cross_thread", "knowledge"].includes(item.type), "type should be one of thread/cross_thread/knowledge");
|
|
76
|
+
const result = await memory.recall({
|
|
77
|
+
namespace: "test:llm-live",
|
|
78
|
+
query: "API",
|
|
79
|
+
topK: 5,
|
|
80
|
+
});
|
|
81
|
+
node_assert_1.default.strictEqual(result.items.length, 1);
|
|
82
|
+
node_assert_1.default.strictEqual(result.items[0].content, "GET /users returns a list of users. POST /users creates a user. See API docs.");
|
|
83
|
+
});
|
|
84
|
+
(0, node_test_1.it)("full use case: VLM + LLM together — image caption, text classify, recall and retrieveForPrompt", async () => {
|
|
85
|
+
const dir = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `agent-memory-full-${(0, node_crypto_1.randomUUID)()}`);
|
|
86
|
+
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
87
|
+
const imagePath = (0, node_path_1.join)(dir, "doc.png");
|
|
88
|
+
await (0, promises_1.writeFile)(imagePath, MINIMAL_PNG);
|
|
89
|
+
const captionFn = (0, ollama_live_js_1.createOllamaCaptionFn)(VLM_URL, VLM_MODEL);
|
|
90
|
+
const classifyMemory = (0, ollama_live_js_1.createOllamaClassifyMemoryFn)(LLM_URL, LLM_MODEL);
|
|
91
|
+
const memory = await (0, create_agent_memory_js_1.createAgentMemory)({
|
|
92
|
+
config: baseConfig,
|
|
93
|
+
captionFn,
|
|
94
|
+
classifyMemory,
|
|
95
|
+
});
|
|
96
|
+
try {
|
|
97
|
+
// 1) Memorize image — real VLM captions it
|
|
98
|
+
const imageItem = await memory.memorize({
|
|
99
|
+
namespace: "test:full",
|
|
100
|
+
url: imagePath,
|
|
101
|
+
});
|
|
102
|
+
node_assert_1.default.ok(imageItem.id);
|
|
103
|
+
node_assert_1.default.strictEqual(imageItem.type, "knowledge");
|
|
104
|
+
node_assert_1.default.ok(imageItem.content && !imageItem.content.startsWith("(image:"), "VLM must have produced a real caption");
|
|
105
|
+
// 2) Memorize text without type — real LLM classifies it
|
|
106
|
+
const textItem = await memory.memorize({
|
|
107
|
+
namespace: "test:full",
|
|
108
|
+
content: "User preference: prefers dark theme and compact layout.",
|
|
109
|
+
});
|
|
110
|
+
node_assert_1.default.ok(textItem.id);
|
|
111
|
+
node_assert_1.default.ok(["thread", "cross_thread", "knowledge"].includes(textItem.type), "LLM must have classified type");
|
|
112
|
+
// 3) Recall — should return both items (real provider)
|
|
113
|
+
const recallResult = await memory.recall({
|
|
114
|
+
namespace: "test:full",
|
|
115
|
+
query: "preference and image",
|
|
116
|
+
topK: 10,
|
|
117
|
+
});
|
|
118
|
+
node_assert_1.default.ok(recallResult.items.length >= 2, "recall should return image + text");
|
|
119
|
+
node_assert_1.default.ok(recallResult.traceId);
|
|
120
|
+
const contents = recallResult.items.map((i) => i.content);
|
|
121
|
+
const hasCaption = contents.some((c) => c && !c.startsWith("(image:") && c.length > 5);
|
|
122
|
+
const hasPreference = contents.some((c) => c && c.includes("dark") && c.includes("preference"));
|
|
123
|
+
node_assert_1.default.ok(hasCaption, "recall should include VLM caption");
|
|
124
|
+
node_assert_1.default.ok(hasPreference, "recall should include user preference text");
|
|
125
|
+
// 4) retrieveForPrompt — full stack formatting for prompt injection
|
|
126
|
+
const promptResult = await memory.retrieveForPrompt({
|
|
127
|
+
namespace: "test:full",
|
|
128
|
+
query: "user preferences and any images",
|
|
129
|
+
topK: 10,
|
|
130
|
+
});
|
|
131
|
+
node_assert_1.default.ok(promptResult.traceId);
|
|
132
|
+
node_assert_1.default.ok(promptResult.injectedText.length > 0);
|
|
133
|
+
node_assert_1.default.ok(promptResult.injectedText.includes("knowledge") || promptResult.injectedText.includes("cross_thread") || promptResult.injectedText.includes("thread"), "injected text should include type context");
|
|
134
|
+
node_assert_1.default.ok(promptResult.items.length >= 2);
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
await (0, promises_1.rm)(dir, { recursive: true, force: true }).catch(() => { });
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=vlm-llm-live.test.js.map
|
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-store.test.d.ts","sourceRoot":"","sources":["../../../test/providers/in-memory-store.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
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 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();
|
|
12
|
+
const item = await provider.write({
|
|
13
|
+
namespace: "user:1",
|
|
14
|
+
type: "cross_thread",
|
|
15
|
+
content: "Prefer dark mode.",
|
|
16
|
+
});
|
|
17
|
+
node_assert_1.default.ok(item.id);
|
|
18
|
+
node_assert_1.default.strictEqual(item.type, "cross_thread");
|
|
19
|
+
node_assert_1.default.strictEqual(item.content, "Prefer dark mode.");
|
|
20
|
+
const items = await provider.query({
|
|
21
|
+
namespace: "user:1",
|
|
22
|
+
query: "user preferences",
|
|
23
|
+
topK: 5,
|
|
24
|
+
});
|
|
25
|
+
node_assert_1.default.strictEqual(items.length, 1);
|
|
26
|
+
node_assert_1.default.strictEqual(items[0].content, "Prefer dark mode.");
|
|
27
|
+
});
|
|
28
|
+
(0, node_test_1.it)("getByKey and deleteByKey", async () => {
|
|
29
|
+
const provider = new in_memory_store_js_1.InMemoryStoreProvider();
|
|
30
|
+
await provider.write({
|
|
31
|
+
namespace: "memory:fs",
|
|
32
|
+
type: "cross_thread",
|
|
33
|
+
content: "file content",
|
|
34
|
+
metadata: { path: "/memories/foo.txt" },
|
|
35
|
+
});
|
|
36
|
+
const found = await provider.getByKey("memory:fs", "/memories/foo.txt");
|
|
37
|
+
node_assert_1.default.ok(found);
|
|
38
|
+
node_assert_1.default.strictEqual(found.content, "file content");
|
|
39
|
+
await provider.deleteByKey("memory:fs", "/memories/foo.txt");
|
|
40
|
+
const after = await provider.getByKey("memory:fs", "/memories/foo.txt");
|
|
41
|
+
node_assert_1.default.strictEqual(after, null);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=in-memory-store.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-store.test.js","sourceRoot":"","sources":["../../../test/providers/in-memory-store.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAyC;AACzC,8DAAiC;AACjC,+EAA+E;AAE/E,IAAA,oBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAA,cAAE,EAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,QAAQ,GAAG,IAAI,0CAAqB,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,qBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,qBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9C,qBAAM,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,qBAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpC,qBAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,IAAI,0CAAqB,EAAE,CAAC;QAC7C,MAAM,QAAQ,CAAC,KAAK,CAAC;YACnB,SAAS,EAAE,WAAW;YACtB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACxC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QACzE,qBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACjB,qBAAM,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,qBAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rag-provider.test.d.ts","sourceRoot":"","sources":["../../../test/providers/rag-provider.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
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 rag_provider_js_1 = require("../../src/providers/rag-provider.js");
|
|
9
|
+
(0, node_test_1.describe)("RAGProvider", () => {
|
|
10
|
+
(0, node_test_1.it)("write and query without embed or search", async () => {
|
|
11
|
+
const provider = new rag_provider_js_1.RAGProvider();
|
|
12
|
+
const item = await provider.write({
|
|
13
|
+
namespace: "user:1",
|
|
14
|
+
type: "knowledge",
|
|
15
|
+
content: "Doc about API.",
|
|
16
|
+
});
|
|
17
|
+
node_assert_1.default.ok(item.id);
|
|
18
|
+
node_assert_1.default.strictEqual(item.type, "knowledge");
|
|
19
|
+
node_assert_1.default.strictEqual(item.content, "Doc about API.");
|
|
20
|
+
const items = await provider.query({
|
|
21
|
+
namespace: "user:1",
|
|
22
|
+
query: "API",
|
|
23
|
+
topK: 5,
|
|
24
|
+
});
|
|
25
|
+
node_assert_1.default.strictEqual(items.length, 1);
|
|
26
|
+
node_assert_1.default.strictEqual(items[0].content, "Doc about API.");
|
|
27
|
+
});
|
|
28
|
+
(0, node_test_1.it)("write with embed stores embedding", async () => {
|
|
29
|
+
const embed = async (text) => text.split("").map((_, i) => (i % 2) * 0.5);
|
|
30
|
+
const provider = new rag_provider_js_1.RAGProvider({ embed });
|
|
31
|
+
const item = await provider.write({
|
|
32
|
+
namespace: "ns",
|
|
33
|
+
type: "knowledge",
|
|
34
|
+
content: "hello",
|
|
35
|
+
});
|
|
36
|
+
node_assert_1.default.ok(item.embedding);
|
|
37
|
+
node_assert_1.default.ok(Array.isArray(item.embedding));
|
|
38
|
+
});
|
|
39
|
+
(0, node_test_1.it)("query with custom search uses search results", async () => {
|
|
40
|
+
const provider = new rag_provider_js_1.RAGProvider({
|
|
41
|
+
search: async (namespace, _query, topK) => {
|
|
42
|
+
return [
|
|
43
|
+
{
|
|
44
|
+
item: {
|
|
45
|
+
id: "s1",
|
|
46
|
+
type: "knowledge",
|
|
47
|
+
namespace,
|
|
48
|
+
scope: "global",
|
|
49
|
+
content: "search result",
|
|
50
|
+
metadata: { created_at: "", updated_at: "" },
|
|
51
|
+
},
|
|
52
|
+
score: 0.9,
|
|
53
|
+
},
|
|
54
|
+
].slice(0, topK);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
await provider.write({
|
|
58
|
+
namespace: "ns",
|
|
59
|
+
type: "knowledge",
|
|
60
|
+
content: "stored",
|
|
61
|
+
});
|
|
62
|
+
const items = await provider.query({
|
|
63
|
+
namespace: "ns",
|
|
64
|
+
query: "q",
|
|
65
|
+
topK: 3,
|
|
66
|
+
});
|
|
67
|
+
node_assert_1.default.strictEqual(items.length, 1);
|
|
68
|
+
node_assert_1.default.strictEqual(items[0].content, "search result");
|
|
69
|
+
});
|
|
70
|
+
(0, node_test_1.it)("delete removes item", async () => {
|
|
71
|
+
const provider = new rag_provider_js_1.RAGProvider();
|
|
72
|
+
const item = await provider.write({
|
|
73
|
+
namespace: "ns",
|
|
74
|
+
type: "knowledge",
|
|
75
|
+
content: "to delete",
|
|
76
|
+
});
|
|
77
|
+
const before = await provider.query({
|
|
78
|
+
namespace: "ns",
|
|
79
|
+
query: "x",
|
|
80
|
+
topK: 10,
|
|
81
|
+
});
|
|
82
|
+
node_assert_1.default.strictEqual(before.length, 1);
|
|
83
|
+
await provider.delete(item.id, "ns");
|
|
84
|
+
const after = await provider.query({
|
|
85
|
+
namespace: "ns",
|
|
86
|
+
query: "x",
|
|
87
|
+
topK: 10,
|
|
88
|
+
});
|
|
89
|
+
node_assert_1.default.strictEqual(after.length, 0);
|
|
90
|
+
});
|
|
91
|
+
(0, node_test_1.it)("query filters by types", async () => {
|
|
92
|
+
const provider = new rag_provider_js_1.RAGProvider();
|
|
93
|
+
await provider.write({
|
|
94
|
+
namespace: "ns",
|
|
95
|
+
type: "knowledge",
|
|
96
|
+
content: "doc",
|
|
97
|
+
});
|
|
98
|
+
await provider.write({
|
|
99
|
+
namespace: "ns",
|
|
100
|
+
type: "cross_thread",
|
|
101
|
+
content: "pref",
|
|
102
|
+
});
|
|
103
|
+
const items = await provider.query({
|
|
104
|
+
namespace: "ns",
|
|
105
|
+
query: "x",
|
|
106
|
+
topK: 5,
|
|
107
|
+
types: ["knowledge"],
|
|
108
|
+
});
|
|
109
|
+
node_assert_1.default.strictEqual(items.length, 1);
|
|
110
|
+
node_assert_1.default.strictEqual(items[0].type, "knowledge");
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=rag-provider.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rag-provider.test.js","sourceRoot":"","sources":["../../../test/providers/rag-provider.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-store.test.d.ts","sourceRoot":"","sources":["../../../test/providers/sqlite-store.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
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 sqlite_store_js_1 = require("../../src/providers/sqlite-store.js");
|
|
9
|
+
const hasSqlite = (() => {
|
|
10
|
+
try {
|
|
11
|
+
require("better-sqlite3");
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
})();
|
|
18
|
+
(0, node_test_1.describe)("SqliteStoreProvider", { skip: !hasSqlite }, () => {
|
|
19
|
+
(0, node_test_1.it)("write and query without embed", async () => {
|
|
20
|
+
const provider = new sqlite_store_js_1.SqliteStoreProvider({ dbPath: ":memory:" });
|
|
21
|
+
const item = await provider.write({
|
|
22
|
+
namespace: "user:1",
|
|
23
|
+
type: "cross_thread",
|
|
24
|
+
content: "Prefer dark mode.",
|
|
25
|
+
});
|
|
26
|
+
node_assert_1.default.ok(item.id);
|
|
27
|
+
node_assert_1.default.strictEqual(item.type, "cross_thread");
|
|
28
|
+
node_assert_1.default.strictEqual(item.content, "Prefer dark mode.");
|
|
29
|
+
const items = await provider.query({
|
|
30
|
+
namespace: "user:1",
|
|
31
|
+
query: "user preferences",
|
|
32
|
+
topK: 5,
|
|
33
|
+
});
|
|
34
|
+
node_assert_1.default.strictEqual(items.length, 1);
|
|
35
|
+
node_assert_1.default.strictEqual(items[0].content, "Prefer dark mode.");
|
|
36
|
+
});
|
|
37
|
+
(0, node_test_1.it)("write and query with embed", async () => {
|
|
38
|
+
const embed = async (text) => text.split("").map((_, i) => (i % 3) * 0.1);
|
|
39
|
+
const provider = new sqlite_store_js_1.SqliteStoreProvider({
|
|
40
|
+
dbPath: ":memory:",
|
|
41
|
+
embed,
|
|
42
|
+
});
|
|
43
|
+
await provider.write({
|
|
44
|
+
namespace: "ns",
|
|
45
|
+
type: "knowledge",
|
|
46
|
+
content: "alpha",
|
|
47
|
+
});
|
|
48
|
+
await provider.write({
|
|
49
|
+
namespace: "ns",
|
|
50
|
+
type: "knowledge",
|
|
51
|
+
content: "beta",
|
|
52
|
+
});
|
|
53
|
+
const items = await provider.query({
|
|
54
|
+
namespace: "ns",
|
|
55
|
+
query: "alpha",
|
|
56
|
+
topK: 2,
|
|
57
|
+
});
|
|
58
|
+
node_assert_1.default.strictEqual(items.length, 2);
|
|
59
|
+
node_assert_1.default.strictEqual(items[0].content, "alpha");
|
|
60
|
+
});
|
|
61
|
+
(0, node_test_1.it)("getByKey and deleteByKey", async () => {
|
|
62
|
+
const provider = new sqlite_store_js_1.SqliteStoreProvider({ dbPath: ":memory:" });
|
|
63
|
+
await provider.write({
|
|
64
|
+
namespace: "memory:fs",
|
|
65
|
+
type: "cross_thread",
|
|
66
|
+
content: "file content",
|
|
67
|
+
metadata: { path: "/memories/foo.txt" },
|
|
68
|
+
});
|
|
69
|
+
const found = await provider.getByKey("memory:fs", "/memories/foo.txt");
|
|
70
|
+
node_assert_1.default.ok(found);
|
|
71
|
+
node_assert_1.default.strictEqual(found.content, "file content");
|
|
72
|
+
await provider.deleteByKey("memory:fs", "/memories/foo.txt");
|
|
73
|
+
const after = await provider.getByKey("memory:fs", "/memories/foo.txt");
|
|
74
|
+
node_assert_1.default.strictEqual(after, null);
|
|
75
|
+
});
|
|
76
|
+
(0, node_test_1.it)("delete by id", async () => {
|
|
77
|
+
const provider = new sqlite_store_js_1.SqliteStoreProvider({ dbPath: ":memory:" });
|
|
78
|
+
const item = await provider.write({
|
|
79
|
+
namespace: "user:1",
|
|
80
|
+
type: "thread",
|
|
81
|
+
content: "to delete",
|
|
82
|
+
});
|
|
83
|
+
const before = await provider.query({
|
|
84
|
+
namespace: "user:1",
|
|
85
|
+
query: "any",
|
|
86
|
+
topK: 10,
|
|
87
|
+
});
|
|
88
|
+
node_assert_1.default.strictEqual(before.length, 1);
|
|
89
|
+
await provider.delete(item.id, "user:1");
|
|
90
|
+
const after = await provider.query({
|
|
91
|
+
namespace: "user:1",
|
|
92
|
+
query: "any",
|
|
93
|
+
topK: 10,
|
|
94
|
+
});
|
|
95
|
+
node_assert_1.default.strictEqual(after.length, 0);
|
|
96
|
+
});
|
|
97
|
+
(0, node_test_1.it)("query with types filter", async () => {
|
|
98
|
+
const provider = new sqlite_store_js_1.SqliteStoreProvider({ dbPath: ":memory:" });
|
|
99
|
+
await provider.write({
|
|
100
|
+
namespace: "ns",
|
|
101
|
+
type: "knowledge",
|
|
102
|
+
content: "doc",
|
|
103
|
+
});
|
|
104
|
+
await provider.write({
|
|
105
|
+
namespace: "ns",
|
|
106
|
+
type: "cross_thread",
|
|
107
|
+
content: "pref",
|
|
108
|
+
});
|
|
109
|
+
const items = await provider.query({
|
|
110
|
+
namespace: "ns",
|
|
111
|
+
query: "x",
|
|
112
|
+
topK: 5,
|
|
113
|
+
types: ["knowledge"],
|
|
114
|
+
});
|
|
115
|
+
node_assert_1.default.strictEqual(items.length, 1);
|
|
116
|
+
node_assert_1.default.strictEqual(items[0].type, "knowledge");
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=sqlite-store.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-store.test.js","sourceRoot":"","sources":["../../../test/providers/sqlite-store.test.ts"],"names":[],"mappings":"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"}
|