@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
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Context builder - Format memory and docs into prompt-ready context
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ContextBuilder = void 0;
|
|
7
|
-
class ContextBuilder {
|
|
8
|
-
constructor(config) {
|
|
9
|
-
this.config = config;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Build context string from memory and docs
|
|
13
|
-
*/
|
|
14
|
-
build(memory, docs) {
|
|
15
|
-
if (!this.config.enabled) {
|
|
16
|
-
return "";
|
|
17
|
-
}
|
|
18
|
-
const parts = [];
|
|
19
|
-
// Add memory section
|
|
20
|
-
if (memory.length > 0) {
|
|
21
|
-
parts.push("[MEMORY]");
|
|
22
|
-
const memoryByType = {};
|
|
23
|
-
for (const item of memory) {
|
|
24
|
-
if (!memoryByType[item.type]) {
|
|
25
|
-
memoryByType[item.type] = [];
|
|
26
|
-
}
|
|
27
|
-
memoryByType[item.type].push(item);
|
|
28
|
-
}
|
|
29
|
-
for (const [type, items] of Object.entries(memoryByType)) {
|
|
30
|
-
for (const item of items) {
|
|
31
|
-
parts.push(`- (${type}) ${item.content}`);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
parts.push("");
|
|
35
|
-
}
|
|
36
|
-
// Add docs section
|
|
37
|
-
if (docs.length > 0) {
|
|
38
|
-
parts.push("[DOC EVIDENCE]");
|
|
39
|
-
for (const doc of docs) {
|
|
40
|
-
const sourceParts = [];
|
|
41
|
-
if (doc.source.title)
|
|
42
|
-
sourceParts.push(doc.source.title);
|
|
43
|
-
if (doc.source.section)
|
|
44
|
-
sourceParts.push(`#${doc.source.section}`);
|
|
45
|
-
if (doc.source.page)
|
|
46
|
-
sourceParts.push(`p${doc.source.page}`);
|
|
47
|
-
const sourceStr = sourceParts.length > 0 ? ` (${sourceParts.join(", ")})` : "";
|
|
48
|
-
const citation = doc.citations && doc.citations.length > 0
|
|
49
|
-
? ` [${doc.citations.map(c => c.label).join(", ")}]`
|
|
50
|
-
: "";
|
|
51
|
-
parts.push(`- ${doc.text}${sourceStr}${citation}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
let context = parts.join("\n");
|
|
55
|
-
// Simple token estimation (rough: 1 token ≈ 4 characters)
|
|
56
|
-
const estimatedTokens = context.length / 4;
|
|
57
|
-
if (estimatedTokens > this.config.max_tokens) {
|
|
58
|
-
// Truncate if needed (simple approach: cut from docs first, then memory)
|
|
59
|
-
const maxChars = this.config.max_tokens * 4;
|
|
60
|
-
if (memory.length > 0 && docs.length > 0) {
|
|
61
|
-
// Try to keep memory, truncate docs
|
|
62
|
-
const memoryPart = parts.slice(0, memory.length + 2).join("\n") + "\n\n";
|
|
63
|
-
const memoryPartSize = memoryPart.length;
|
|
64
|
-
const availableForDocs = Math.max(0, maxChars - memoryPartSize - 20); // Reserve for header
|
|
65
|
-
if (availableForDocs > 0) {
|
|
66
|
-
const docsPart = parts.slice(memory.length > 0 ? memory.length + 3 : 1).join("\n");
|
|
67
|
-
const truncatedDocs = docsPart.substring(0, availableForDocs);
|
|
68
|
-
context = memoryPart + "[DOC EVIDENCE]\n" + truncatedDocs;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
// Not enough space, truncate memory only
|
|
72
|
-
const memoryText = parts.slice(1, memory.length + 1).join("\n");
|
|
73
|
-
context = "[MEMORY]\n" + memoryText.substring(0, maxChars - 20);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else if (memory.length > 0) {
|
|
77
|
-
// Only memory, truncate it
|
|
78
|
-
const memoryText = parts.slice(1, memory.length + 1).join("\n");
|
|
79
|
-
context = "[MEMORY]\n" + memoryText.substring(0, maxChars - 20);
|
|
80
|
-
}
|
|
81
|
-
else if (docs.length > 0) {
|
|
82
|
-
// Only docs, truncate them
|
|
83
|
-
const docsText = parts.slice(1).join("\n");
|
|
84
|
-
context = "[DOC EVIDENCE]\n" + docsText.substring(0, maxChars - 20);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return context;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
exports.ContextBuilder = ContextBuilder;
|
|
91
|
-
//# sourceMappingURL=context-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/context/context-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AgentMemory - Main class for agent memory management
|
|
3
|
-
*/
|
|
4
|
-
import { RememberOptions, RecallOptions, RecallResult, FeedbackOptions } from "../types";
|
|
5
|
-
import { DocumentMemoryOptions } from "../types/document";
|
|
6
|
-
export declare class AgentMemory {
|
|
7
|
-
private config;
|
|
8
|
-
private store;
|
|
9
|
-
private retriever;
|
|
10
|
-
private gate;
|
|
11
|
-
private recallEngine;
|
|
12
|
-
private repo;
|
|
13
|
-
private index;
|
|
14
|
-
private embedder;
|
|
15
|
-
private rebuilder;
|
|
16
|
-
private isInMemoryMode;
|
|
17
|
-
private documentProcessor;
|
|
18
|
-
private constructor();
|
|
19
|
-
private initInMemoryMode;
|
|
20
|
-
/**
|
|
21
|
-
* Create AgentMemory instance from YAML configuration file
|
|
22
|
-
*/
|
|
23
|
-
static fromYaml(configPath: string): Promise<AgentMemory>;
|
|
24
|
-
/**
|
|
25
|
-
* Remember - Store memories from messages or text
|
|
26
|
-
*/
|
|
27
|
-
remember(options: RememberOptions): Promise<void>;
|
|
28
|
-
private rememberInMemory;
|
|
29
|
-
private persistEmbeddingsAsync;
|
|
30
|
-
/**
|
|
31
|
-
* Recall - Retrieve memories and documents
|
|
32
|
-
*/
|
|
33
|
-
recall(options: RecallOptions): Promise<RecallResult>;
|
|
34
|
-
private recallInMemory;
|
|
35
|
-
private generateTraceId;
|
|
36
|
-
/**
|
|
37
|
-
* Remember documents - Store document content as memories
|
|
38
|
-
* Supports multi-modal documents (text, PDF, images, etc.)
|
|
39
|
-
*/
|
|
40
|
-
rememberDocument(options: DocumentMemoryOptions): Promise<void>;
|
|
41
|
-
/**
|
|
42
|
-
* Feedback - Provide feedback for memory utility learning (reserved for v0.2+)
|
|
43
|
-
*/
|
|
44
|
-
feedback(options: FeedbackOptions): Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Close resources (SQLite connection, etc.)
|
|
47
|
-
*/
|
|
48
|
-
close(): void;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=agent-memory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-memory.d.ts","sourceRoot":"","sources":["../../src/core/agent-memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EAEhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO1D,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,YAAY,CAA6B;IAGjD,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,cAAc,CAAkB;IAGxC,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,OAAO;IAmBP,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;WACU,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAY/D;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YA6BzC,gBAAgB;YA2BhB,sBAAsB;IAyBpC;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAW7C,cAAc;IAmD5B,OAAO,CAAC,eAAe;IAQvB;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4FrE;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
|
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* AgentMemory - Main class for agent memory management
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AgentMemory = void 0;
|
|
7
|
-
const config_1 = require("../config");
|
|
8
|
-
const adapters_1 = require("../adapters");
|
|
9
|
-
const gate_1 = require("../gate");
|
|
10
|
-
const recall_engine_1 = require("../recall/recall-engine");
|
|
11
|
-
const context_builder_1 = require("../context/context-builder");
|
|
12
|
-
const document_processor_1 = require("../processing/document/document-processor");
|
|
13
|
-
const persistence_1 = require("../persistence");
|
|
14
|
-
const indexing_1 = require("../indexing");
|
|
15
|
-
const embedding_1 = require("../embedding");
|
|
16
|
-
const boot_1 = require("../boot");
|
|
17
|
-
class AgentMemory {
|
|
18
|
-
constructor(config) {
|
|
19
|
-
this.store = null;
|
|
20
|
-
this.retriever = null;
|
|
21
|
-
this.recallEngine = null;
|
|
22
|
-
// Route A (in-memory) components
|
|
23
|
-
this.repo = null;
|
|
24
|
-
this.index = null;
|
|
25
|
-
this.embedder = null;
|
|
26
|
-
this.rebuilder = null;
|
|
27
|
-
this.isInMemoryMode = false;
|
|
28
|
-
this.config = config;
|
|
29
|
-
this.gate = new gate_1.MemoryGate(config);
|
|
30
|
-
this.documentProcessor = new document_processor_1.DocumentProcessor();
|
|
31
|
-
const mem0Mode = config.store.mem0.mode || "platform";
|
|
32
|
-
this.isInMemoryMode = mem0Mode === "in_memory";
|
|
33
|
-
if (this.isInMemoryMode) {
|
|
34
|
-
// Route A: Initialize SQLite + InMemoryIndex
|
|
35
|
-
this.initInMemoryMode();
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
// Original: Platform API mode
|
|
39
|
-
this.store = (0, adapters_1.createMemoryStore)(config);
|
|
40
|
-
this.retriever = (0, adapters_1.createDocRetriever)(config);
|
|
41
|
-
this.recallEngine = new recall_engine_1.RecallEngine(this.store, this.retriever, config);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
initInMemoryMode() {
|
|
45
|
-
if (!this.config.persistence?.sqlite) {
|
|
46
|
-
throw new Error("persistence.sqlite is required for in_memory mode");
|
|
47
|
-
}
|
|
48
|
-
if (!this.config.embedding) {
|
|
49
|
-
throw new Error("embedding configuration is required for in_memory mode");
|
|
50
|
-
}
|
|
51
|
-
// Initialize SQLite repository
|
|
52
|
-
this.repo = new persistence_1.SqliteMemoryRepo({
|
|
53
|
-
path: this.config.persistence.sqlite.path,
|
|
54
|
-
wal: this.config.persistence.sqlite.wal !== false,
|
|
55
|
-
});
|
|
56
|
-
// Initialize in-memory index
|
|
57
|
-
this.index = new indexing_1.InMemoryIndex();
|
|
58
|
-
// Initialize embedder
|
|
59
|
-
this.embedder = (0, embedding_1.createEmbedder)(this.config.embedding);
|
|
60
|
-
// Initialize boot rebuilder
|
|
61
|
-
if (this.config.boot?.rebuild?.enabled !== false) {
|
|
62
|
-
this.rebuilder = new boot_1.BootRebuilder(this.repo, this.index, this.embedder, {
|
|
63
|
-
batchSize: this.config.boot?.rebuild?.batch_size,
|
|
64
|
-
onModelMismatch: this.config.boot?.rebuild?.on_model_mismatch,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Create AgentMemory instance from YAML configuration file
|
|
70
|
-
*/
|
|
71
|
-
static async fromYaml(configPath) {
|
|
72
|
-
const config = await (0, config_1.loadConfig)(configPath);
|
|
73
|
-
const instance = new AgentMemory(config);
|
|
74
|
-
// If in-memory mode, rebuild index on startup
|
|
75
|
-
if (instance.isInMemoryMode && instance.rebuilder) {
|
|
76
|
-
await instance.rebuilder.rebuild();
|
|
77
|
-
}
|
|
78
|
-
return instance;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Remember - Store memories from messages or text
|
|
82
|
-
*/
|
|
83
|
-
async remember(options) {
|
|
84
|
-
// Process through MemoryGate
|
|
85
|
-
const items = await this.gate.process({
|
|
86
|
-
messages: options.messages,
|
|
87
|
-
text: options.text,
|
|
88
|
-
actor: options.actor,
|
|
89
|
-
scope: options.scope,
|
|
90
|
-
hint: options.hint,
|
|
91
|
-
});
|
|
92
|
-
if (items.length === 0) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
if (this.isInMemoryMode) {
|
|
96
|
-
// Route A: Write to SQLite first, then index
|
|
97
|
-
await this.rememberInMemory(items, options);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
// Original: Write to platform API
|
|
101
|
-
if (!this.store) {
|
|
102
|
-
throw new Error("Store not initialized");
|
|
103
|
-
}
|
|
104
|
-
await this.store.add(items, {
|
|
105
|
-
actor: options.actor,
|
|
106
|
-
scope: options.scope,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
async rememberInMemory(items, options) {
|
|
111
|
-
if (!this.repo || !this.index || !this.embedder) {
|
|
112
|
-
throw new Error("In-memory components not initialized");
|
|
113
|
-
}
|
|
114
|
-
// 1. Write to SQLite (source of truth)
|
|
115
|
-
const toIndex = [];
|
|
116
|
-
for (const item of items) {
|
|
117
|
-
const { inserted } = await this.repo.upsertMemory(item);
|
|
118
|
-
if (inserted) {
|
|
119
|
-
toIndex.push(item);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (toIndex.length === 0) {
|
|
123
|
-
return; // All items were duplicates
|
|
124
|
-
}
|
|
125
|
-
// 2. Compute embeddings asynchronously (don't block)
|
|
126
|
-
this.persistEmbeddingsAsync(toIndex).catch((error) => {
|
|
127
|
-
console.error("Failed to persist embeddings:", error);
|
|
128
|
-
});
|
|
129
|
-
// 3. Add to in-memory index (for immediate recall)
|
|
130
|
-
await this.index.add(toIndex);
|
|
131
|
-
}
|
|
132
|
-
async persistEmbeddingsAsync(items) {
|
|
133
|
-
if (!this.repo || !this.index || !this.embedder || items.length === 0) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
const texts = items.map((item) => item.content);
|
|
138
|
-
const embeddings = await this.embedder.embed(texts);
|
|
139
|
-
for (let i = 0; i < items.length; i++) {
|
|
140
|
-
const item = items[i];
|
|
141
|
-
const embedding = embeddings[i];
|
|
142
|
-
// Save to SQLite
|
|
143
|
-
await this.repo.saveEmbedding(item.id, this.embedder.model, this.embedder.dim, embedding);
|
|
144
|
-
// Add to index
|
|
145
|
-
await this.index.addEmbedding(item.id, embedding);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
catch (error) {
|
|
149
|
-
console.error("Failed to persist embeddings:", error);
|
|
150
|
-
// Mark as failed in SQLite (optional)
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Recall - Retrieve memories and documents
|
|
155
|
-
*/
|
|
156
|
-
async recall(options) {
|
|
157
|
-
if (this.isInMemoryMode) {
|
|
158
|
-
return this.recallInMemory(options);
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
if (!this.recallEngine) {
|
|
162
|
-
throw new Error("Recall engine not initialized");
|
|
163
|
-
}
|
|
164
|
-
return this.recallEngine.recall(options);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
async recallInMemory(options) {
|
|
168
|
-
if (!this.repo || !this.index || !this.embedder) {
|
|
169
|
-
throw new Error("In-memory components not initialized");
|
|
170
|
-
}
|
|
171
|
-
const topK = options.topK || 10;
|
|
172
|
-
// 1. Embed query
|
|
173
|
-
const queryEmbedding = (await this.embedder.embed([options.query]))[0];
|
|
174
|
-
// 2. Search in-memory index
|
|
175
|
-
const { ids } = await this.index.search(queryEmbedding, topK, {
|
|
176
|
-
actor: options.actor,
|
|
177
|
-
scope: options.scope,
|
|
178
|
-
});
|
|
179
|
-
// 3. Load full items from SQLite (source of truth)
|
|
180
|
-
const memory = await this.repo.loadByIds(ids);
|
|
181
|
-
// 4. Build context
|
|
182
|
-
const contextBuilder = new context_builder_1.ContextBuilder(this.config.recall?.context || {
|
|
183
|
-
enabled: true,
|
|
184
|
-
template: "default",
|
|
185
|
-
max_tokens: 1400,
|
|
186
|
-
});
|
|
187
|
-
// Get docs if enabled
|
|
188
|
-
let docs = [];
|
|
189
|
-
if (options.includeDocs !== false && this.retriever) {
|
|
190
|
-
try {
|
|
191
|
-
docs = await this.retriever.search(options.query, {
|
|
192
|
-
scope: options.scope,
|
|
193
|
-
topK,
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
console.error("Failed to retrieve documents:", error);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
const context = contextBuilder.build(memory, docs);
|
|
201
|
-
return {
|
|
202
|
-
memory,
|
|
203
|
-
docs,
|
|
204
|
-
context,
|
|
205
|
-
traceId: this.generateTraceId(),
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
generateTraceId() {
|
|
209
|
-
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
|
|
210
|
-
const r = (Math.random() * 16) | 0;
|
|
211
|
-
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
212
|
-
return v.toString(16);
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Remember documents - Store document content as memories
|
|
217
|
-
* Supports multi-modal documents (text, PDF, images, etc.)
|
|
218
|
-
*/
|
|
219
|
-
async rememberDocument(options) {
|
|
220
|
-
const { document, actor, scope, autoChunk = true, chunkSize, chunkOverlap, extractMetadata = false, tags = [], } = options;
|
|
221
|
-
// Process documents into chunks
|
|
222
|
-
const chunks = autoChunk
|
|
223
|
-
? this.documentProcessor.processDocument(document, {
|
|
224
|
-
chunkSize,
|
|
225
|
-
chunkOverlap,
|
|
226
|
-
})
|
|
227
|
-
: Array.isArray(document)
|
|
228
|
-
? document
|
|
229
|
-
: [document];
|
|
230
|
-
// Convert chunks to memory items
|
|
231
|
-
const memoryItems = [];
|
|
232
|
-
for (const chunk of chunks) {
|
|
233
|
-
// Convert chunk to memory items
|
|
234
|
-
const items = this.documentProcessor.chunksToMemoryItems([chunk], actor, scope, tags);
|
|
235
|
-
memoryItems.push(...items);
|
|
236
|
-
// Extract metadata if requested
|
|
237
|
-
if (extractMetadata) {
|
|
238
|
-
const metaItems = this.documentProcessor.extractMetadataAsMemories(chunk, actor, scope);
|
|
239
|
-
memoryItems.push(...metaItems);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
if (memoryItems.length === 0) {
|
|
243
|
-
return;
|
|
244
|
-
}
|
|
245
|
-
// Process through MemoryGate for redaction and deduplication
|
|
246
|
-
// Documents already have structure, so we apply light processing
|
|
247
|
-
// Use gate's internal components for redaction and deduplication only
|
|
248
|
-
const gateInternal = this.gate;
|
|
249
|
-
const redactor = gateInternal.redactor;
|
|
250
|
-
const deduplicator = gateInternal.deduplicator;
|
|
251
|
-
// Apply redaction to content
|
|
252
|
-
const redactedItems = memoryItems.map((item) => ({
|
|
253
|
-
...item,
|
|
254
|
-
content: redactor.redact(item.content),
|
|
255
|
-
}));
|
|
256
|
-
// Filter out items with too little content after redaction
|
|
257
|
-
const validItems = redactedItems.filter((item) => item.content.trim().length >= 10);
|
|
258
|
-
// Apply deduplication
|
|
259
|
-
const finalItems = deduplicator.dedupe(validItems);
|
|
260
|
-
if (finalItems.length === 0) {
|
|
261
|
-
return;
|
|
262
|
-
}
|
|
263
|
-
// Store memories
|
|
264
|
-
if (this.isInMemoryMode) {
|
|
265
|
-
await this.rememberInMemory(finalItems, {
|
|
266
|
-
actor,
|
|
267
|
-
scope,
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
if (!this.store) {
|
|
272
|
-
throw new Error("Store not initialized");
|
|
273
|
-
}
|
|
274
|
-
await this.store.add(finalItems, {
|
|
275
|
-
actor,
|
|
276
|
-
scope,
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Feedback - Provide feedback for memory utility learning (reserved for v0.2+)
|
|
282
|
-
*/
|
|
283
|
-
async feedback(options) {
|
|
284
|
-
// Placeholder for future implementation
|
|
285
|
-
console.warn("feedback() is not yet implemented in v0.1");
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Close resources (SQLite connection, etc.)
|
|
289
|
-
*/
|
|
290
|
-
close() {
|
|
291
|
-
if (this.repo) {
|
|
292
|
-
this.repo.close();
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
exports.AgentMemory = AgentMemory;
|
|
297
|
-
//# sourceMappingURL=agent-memory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-memory.js","sourceRoot":"","sources":["../../src/core/agent-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Embedding provider interface and implementations
|
|
3
|
-
*/
|
|
4
|
-
export interface Embedder {
|
|
5
|
-
model: string;
|
|
6
|
-
dim: number;
|
|
7
|
-
embed(texts: string[]): Promise<Float32Array[]>;
|
|
8
|
-
}
|
|
9
|
-
export interface EmbedderConfig {
|
|
10
|
-
provider: "ollama" | "openai";
|
|
11
|
-
model: string;
|
|
12
|
-
dim: number;
|
|
13
|
-
base_url?: string;
|
|
14
|
-
api_key?: string;
|
|
15
|
-
concurrency?: number;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Ollama Embedder
|
|
19
|
-
*/
|
|
20
|
-
export declare class OllamaEmbedder implements Embedder {
|
|
21
|
-
readonly model: string;
|
|
22
|
-
readonly dim: number;
|
|
23
|
-
private baseUrl;
|
|
24
|
-
private concurrency;
|
|
25
|
-
private queue;
|
|
26
|
-
private running;
|
|
27
|
-
constructor(config: EmbedderConfig);
|
|
28
|
-
embed(texts: string[]): Promise<Float32Array[]>;
|
|
29
|
-
private embedOne;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* OpenAI Embedder
|
|
33
|
-
*/
|
|
34
|
-
export declare class OpenAIEmbedder implements Embedder {
|
|
35
|
-
readonly model: string;
|
|
36
|
-
readonly dim: number;
|
|
37
|
-
private apiKey;
|
|
38
|
-
private baseUrl;
|
|
39
|
-
private concurrency;
|
|
40
|
-
private running;
|
|
41
|
-
constructor(config: EmbedderConfig);
|
|
42
|
-
embed(texts: string[]): Promise<Float32Array[]>;
|
|
43
|
-
private embedBatch;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Create embedder from config
|
|
47
|
-
*/
|
|
48
|
-
export declare function createEmbedder(config: EmbedderConfig): Embedder;
|
|
49
|
-
//# sourceMappingURL=embedder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/embedding/embedder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,OAAO,CAAK;gBAER,MAAM,EAAE,cAAc;IAO5B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAevC,QAAQ;CAoCvB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAK;gBAER,MAAM,EAAE,cAAc;IAW5B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YA4BvC,UAAU;CA6BzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAS/D"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Embedding provider interface and implementations
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.OpenAIEmbedder = exports.OllamaEmbedder = void 0;
|
|
7
|
-
exports.createEmbedder = createEmbedder;
|
|
8
|
-
/**
|
|
9
|
-
* Ollama Embedder
|
|
10
|
-
*/
|
|
11
|
-
class OllamaEmbedder {
|
|
12
|
-
constructor(config) {
|
|
13
|
-
this.queue = [];
|
|
14
|
-
this.running = 0;
|
|
15
|
-
this.model = config.model;
|
|
16
|
-
this.dim = config.dim;
|
|
17
|
-
this.baseUrl = config.base_url || "http://localhost:11434";
|
|
18
|
-
this.concurrency = config.concurrency || 4;
|
|
19
|
-
}
|
|
20
|
-
async embed(texts) {
|
|
21
|
-
const results = [];
|
|
22
|
-
const promises = [];
|
|
23
|
-
for (const text of texts) {
|
|
24
|
-
const promise = this.embedOne(text).then((vector) => {
|
|
25
|
-
results.push(vector);
|
|
26
|
-
});
|
|
27
|
-
promises.push(promise);
|
|
28
|
-
}
|
|
29
|
-
await Promise.all(promises);
|
|
30
|
-
return results;
|
|
31
|
-
}
|
|
32
|
-
async embedOne(text) {
|
|
33
|
-
// Wait for available slot
|
|
34
|
-
while (this.running >= this.concurrency) {
|
|
35
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
36
|
-
}
|
|
37
|
-
this.running++;
|
|
38
|
-
try {
|
|
39
|
-
const response = await fetch(`${this.baseUrl}/api/embeddings`, {
|
|
40
|
-
method: "POST",
|
|
41
|
-
headers: {
|
|
42
|
-
"Content-Type": "application/json",
|
|
43
|
-
},
|
|
44
|
-
body: JSON.stringify({
|
|
45
|
-
model: this.model,
|
|
46
|
-
prompt: text,
|
|
47
|
-
}),
|
|
48
|
-
});
|
|
49
|
-
if (!response.ok) {
|
|
50
|
-
const error = await response.text();
|
|
51
|
-
throw new Error(`Ollama embedding error: ${response.status} ${error}`);
|
|
52
|
-
}
|
|
53
|
-
const result = await response.json();
|
|
54
|
-
const embedding = result.embedding || result.embedding || [];
|
|
55
|
-
if (!Array.isArray(embedding) || embedding.length !== this.dim) {
|
|
56
|
-
throw new Error(`Invalid embedding dimension: expected ${this.dim}, got ${embedding.length}`);
|
|
57
|
-
}
|
|
58
|
-
return new Float32Array(embedding);
|
|
59
|
-
}
|
|
60
|
-
finally {
|
|
61
|
-
this.running--;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
exports.OllamaEmbedder = OllamaEmbedder;
|
|
66
|
-
/**
|
|
67
|
-
* OpenAI Embedder
|
|
68
|
-
*/
|
|
69
|
-
class OpenAIEmbedder {
|
|
70
|
-
constructor(config) {
|
|
71
|
-
this.running = 0;
|
|
72
|
-
if (!config.api_key) {
|
|
73
|
-
throw new Error("OpenAI API key is required");
|
|
74
|
-
}
|
|
75
|
-
this.model = config.model;
|
|
76
|
-
this.dim = config.dim;
|
|
77
|
-
this.apiKey = config.api_key;
|
|
78
|
-
this.baseUrl = config.base_url || "https://api.openai.com/v1";
|
|
79
|
-
this.concurrency = config.concurrency || 4;
|
|
80
|
-
}
|
|
81
|
-
async embed(texts) {
|
|
82
|
-
const results = [];
|
|
83
|
-
const batches = [];
|
|
84
|
-
const batchSize = 100; // OpenAI allows up to 2048 inputs per request
|
|
85
|
-
// Batch texts
|
|
86
|
-
for (let i = 0; i < texts.length; i += batchSize) {
|
|
87
|
-
batches.push(texts.slice(i, i + batchSize));
|
|
88
|
-
}
|
|
89
|
-
// Process batches with concurrency control
|
|
90
|
-
for (const batch of batches) {
|
|
91
|
-
while (this.running >= this.concurrency) {
|
|
92
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
93
|
-
}
|
|
94
|
-
this.running++;
|
|
95
|
-
try {
|
|
96
|
-
const vectors = await this.embedBatch(batch);
|
|
97
|
-
results.push(...vectors);
|
|
98
|
-
}
|
|
99
|
-
finally {
|
|
100
|
-
this.running--;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return results;
|
|
104
|
-
}
|
|
105
|
-
async embedBatch(texts) {
|
|
106
|
-
const response = await fetch(`${this.baseUrl}/embeddings`, {
|
|
107
|
-
method: "POST",
|
|
108
|
-
headers: {
|
|
109
|
-
"Content-Type": "application/json",
|
|
110
|
-
Authorization: `Bearer ${this.apiKey}`,
|
|
111
|
-
},
|
|
112
|
-
body: JSON.stringify({
|
|
113
|
-
model: this.model,
|
|
114
|
-
input: texts,
|
|
115
|
-
}),
|
|
116
|
-
});
|
|
117
|
-
if (!response.ok) {
|
|
118
|
-
const error = await response.text();
|
|
119
|
-
throw new Error(`OpenAI embedding error: ${response.status} ${error}`);
|
|
120
|
-
}
|
|
121
|
-
const result = await response.json();
|
|
122
|
-
const embeddings = result.data || [];
|
|
123
|
-
return embeddings.map((item) => {
|
|
124
|
-
const embedding = item.embedding || [];
|
|
125
|
-
if (!Array.isArray(embedding) || embedding.length !== this.dim) {
|
|
126
|
-
throw new Error(`Invalid embedding dimension: expected ${this.dim}, got ${embedding.length}`);
|
|
127
|
-
}
|
|
128
|
-
return new Float32Array(embedding);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
exports.OpenAIEmbedder = OpenAIEmbedder;
|
|
133
|
-
/**
|
|
134
|
-
* Create embedder from config
|
|
135
|
-
*/
|
|
136
|
-
function createEmbedder(config) {
|
|
137
|
-
switch (config.provider) {
|
|
138
|
-
case "ollama":
|
|
139
|
-
return new OllamaEmbedder(config);
|
|
140
|
-
case "openai":
|
|
141
|
-
return new OpenAIEmbedder(config);
|
|
142
|
-
default:
|
|
143
|
-
throw new Error(`Unsupported embedding provider: ${config.provider}`);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
//# sourceMappingURL=embedder.js.map
|