@framers/agentos 0.2.11 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ingest-router/executors/EntityExtractor.d.ts +23 -0
- package/dist/ingest-router/executors/EntityExtractor.d.ts.map +1 -0
- package/dist/ingest-router/executors/EntityExtractor.js +69 -0
- package/dist/ingest-router/executors/EntityExtractor.js.map +1 -0
- package/dist/ingest-router/executors/EntityLinkingIngestExecutor.d.ts +46 -0
- package/dist/ingest-router/executors/EntityLinkingIngestExecutor.d.ts.map +1 -0
- package/dist/ingest-router/executors/EntityLinkingIngestExecutor.js +45 -0
- package/dist/ingest-router/executors/EntityLinkingIngestExecutor.js.map +1 -0
- package/dist/ingest-router/executors/RawChunksIngestExecutor.d.ts +36 -0
- package/dist/ingest-router/executors/RawChunksIngestExecutor.d.ts.map +1 -0
- package/dist/ingest-router/executors/RawChunksIngestExecutor.js +33 -0
- package/dist/ingest-router/executors/RawChunksIngestExecutor.js.map +1 -0
- package/dist/ingest-router/executors/SkipIngestExecutor.d.ts +20 -0
- package/dist/ingest-router/executors/SkipIngestExecutor.d.ts.map +1 -0
- package/dist/ingest-router/executors/SkipIngestExecutor.js +28 -0
- package/dist/ingest-router/executors/SkipIngestExecutor.js.map +1 -0
- package/dist/ingest-router/executors/SummarizedIngestExecutor.d.ts +68 -0
- package/dist/ingest-router/executors/SummarizedIngestExecutor.d.ts.map +1 -0
- package/dist/ingest-router/executors/SummarizedIngestExecutor.js +56 -0
- package/dist/ingest-router/executors/SummarizedIngestExecutor.js.map +1 -0
- package/dist/ingest-router/executors/entity-types.d.ts +55 -0
- package/dist/ingest-router/executors/entity-types.d.ts.map +1 -0
- package/dist/ingest-router/executors/entity-types.js +17 -0
- package/dist/ingest-router/executors/entity-types.js.map +1 -0
- package/dist/ingest-router/executors/index.d.ts +37 -0
- package/dist/ingest-router/executors/index.d.ts.map +1 -0
- package/dist/ingest-router/executors/index.js +37 -0
- package/dist/ingest-router/executors/index.js.map +1 -0
- package/dist/ingest-router/index.d.ts +2 -0
- package/dist/ingest-router/index.d.ts.map +1 -1
- package/dist/ingest-router/index.js +14 -0
- package/dist/ingest-router/index.js.map +1 -1
- package/dist/memory/AgentMemory.js +1 -1
- package/dist/memory/AgentMemory.js.map +1 -1
- package/dist/memory/CognitiveMemoryManager.js +4 -4
- package/dist/memory/CognitiveMemoryManager.js.map +1 -1
- package/dist/memory/archive/IMemoryArchive.d.ts +2 -2
- package/dist/memory/archive/SqlStorageMemoryArchive.d.ts +17 -13
- package/dist/memory/archive/SqlStorageMemoryArchive.d.ts.map +1 -1
- package/dist/memory/archive/SqlStorageMemoryArchive.js +36 -28
- package/dist/memory/archive/SqlStorageMemoryArchive.js.map +1 -1
- package/dist/memory/core/config.d.ts +4 -4
- package/dist/memory/core/config.d.ts.map +1 -1
- package/dist/memory/index.d.ts +3 -3
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -3
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/io/ChatGptImporter.d.ts +5 -5
- package/dist/memory/io/ChatGptImporter.d.ts.map +1 -1
- package/dist/memory/io/ChatGptImporter.js +9 -7
- package/dist/memory/io/ChatGptImporter.js.map +1 -1
- package/dist/memory/io/CsvImporter.d.ts +4 -4
- package/dist/memory/io/CsvImporter.d.ts.map +1 -1
- package/dist/memory/io/CsvImporter.js +11 -8
- package/dist/memory/io/CsvImporter.js.map +1 -1
- package/dist/memory/io/JsonExporter.d.ts +5 -5
- package/dist/memory/io/JsonExporter.d.ts.map +1 -1
- package/dist/memory/io/JsonExporter.js +13 -12
- package/dist/memory/io/JsonExporter.js.map +1 -1
- package/dist/memory/io/JsonImporter.d.ts +5 -5
- package/dist/memory/io/JsonImporter.d.ts.map +1 -1
- package/dist/memory/io/JsonImporter.js +50 -34
- package/dist/memory/io/JsonImporter.js.map +1 -1
- package/dist/memory/io/MarkdownExporter.d.ts +4 -4
- package/dist/memory/io/MarkdownExporter.d.ts.map +1 -1
- package/dist/memory/io/MarkdownExporter.js +1 -1
- package/dist/memory/io/MarkdownExporter.js.map +1 -1
- package/dist/memory/io/MarkdownImporter.d.ts +6 -6
- package/dist/memory/io/MarkdownImporter.d.ts.map +1 -1
- package/dist/memory/io/MarkdownImporter.js +8 -7
- package/dist/memory/io/MarkdownImporter.js.map +1 -1
- package/dist/memory/io/ObsidianImporter.d.ts +4 -4
- package/dist/memory/io/ObsidianImporter.d.ts.map +1 -1
- package/dist/memory/io/ObsidianImporter.js +15 -10
- package/dist/memory/io/ObsidianImporter.js.map +1 -1
- package/dist/memory/io/SqliteExporter.d.ts +5 -5
- package/dist/memory/io/SqliteExporter.d.ts.map +1 -1
- package/dist/memory/io/SqliteExporter.js +3 -3
- package/dist/memory/io/SqliteExporter.js.map +1 -1
- package/dist/memory/io/SqliteImporter.d.ts +4 -4
- package/dist/memory/io/SqliteImporter.d.ts.map +1 -1
- package/dist/memory/io/SqliteImporter.js +23 -16
- package/dist/memory/io/SqliteImporter.js.map +1 -1
- package/dist/memory/io/facade/Memory.d.ts +58 -10
- package/dist/memory/io/facade/Memory.d.ts.map +1 -1
- package/dist/memory/io/facade/Memory.js +124 -50
- package/dist/memory/io/facade/Memory.js.map +1 -1
- package/dist/memory/io/facade/types.d.ts +1 -1
- package/dist/memory/io/index.d.ts +2 -2
- package/dist/memory/io/index.js +2 -2
- package/dist/memory/io/tools/MemoryAddTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryAddTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryAddTool.js +2 -2
- package/dist/memory/io/tools/MemoryAddTool.js.map +1 -1
- package/dist/memory/io/tools/MemoryDeleteTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryDeleteTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryDeleteTool.js +1 -1
- package/dist/memory/io/tools/MemoryDeleteTool.js.map +1 -1
- package/dist/memory/io/tools/MemoryMergeTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryMergeTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryMergeTool.js +4 -3
- package/dist/memory/io/tools/MemoryMergeTool.js.map +1 -1
- package/dist/memory/io/tools/MemoryReflectTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryReflectTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryReflectTool.js.map +1 -1
- package/dist/memory/io/tools/MemorySearchTool.d.ts +2 -2
- package/dist/memory/io/tools/MemorySearchTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemorySearchTool.js.map +1 -1
- package/dist/memory/io/tools/MemoryUpdateTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryUpdateTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryUpdateTool.js +5 -4
- package/dist/memory/io/tools/MemoryUpdateTool.js.map +1 -1
- package/dist/memory/pipeline/consolidation/ConsolidationLoop.d.ts +3 -3
- package/dist/memory/pipeline/consolidation/ConsolidationLoop.d.ts.map +1 -1
- package/dist/memory/pipeline/consolidation/ConsolidationLoop.js +22 -17
- package/dist/memory/pipeline/consolidation/ConsolidationLoop.js.map +1 -1
- package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.d.ts +3 -3
- package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.d.ts.map +1 -1
- package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.js +15 -12
- package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.js.map +1 -1
- package/dist/memory/retrieval/graph/index.d.ts +0 -1
- package/dist/memory/retrieval/graph/index.d.ts.map +1 -1
- package/dist/memory/retrieval/graph/index.js +4 -1
- package/dist/memory/retrieval/graph/index.js.map +1 -1
- package/dist/memory/retrieval/store/{SqliteBrain.d.ts → Brain.d.ts} +111 -23
- package/dist/memory/retrieval/store/Brain.d.ts.map +1 -0
- package/dist/memory/retrieval/store/{SqliteBrain.js → Brain.js} +367 -76
- package/dist/memory/retrieval/store/Brain.js.map +1 -0
- package/dist/memory/retrieval/store/HnswSidecar.d.ts +1 -1
- package/dist/memory/retrieval/store/HnswSidecar.js +1 -1
- package/dist/memory/retrieval/store/MemoryStore.d.ts +6 -6
- package/dist/memory/retrieval/store/MemoryStore.d.ts.map +1 -1
- package/dist/memory/retrieval/store/MemoryStore.js +10 -9
- package/dist/memory/retrieval/store/MemoryStore.js.map +1 -1
- package/dist/memory/retrieval/store/{SqliteKnowledgeGraph.d.ts → SqlKnowledgeGraph.d.ts} +12 -12
- package/dist/memory/retrieval/store/SqlKnowledgeGraph.d.ts.map +1 -0
- package/dist/memory/retrieval/store/{SqliteKnowledgeGraph.js → SqlKnowledgeGraph.js} +83 -64
- package/dist/memory/retrieval/store/SqlKnowledgeGraph.js.map +1 -0
- package/dist/memory/retrieval/store/{SqliteMemoryGraph.d.ts → SqlMemoryGraph.d.ts} +11 -11
- package/dist/memory/retrieval/store/SqlMemoryGraph.d.ts.map +1 -0
- package/dist/memory/retrieval/store/{SqliteMemoryGraph.js → SqlMemoryGraph.js} +26 -24
- package/dist/memory/retrieval/store/SqlMemoryGraph.js.map +1 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts +31 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts.map +1 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.js +423 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.js.map +1 -0
- package/dist/memory-router/backends/EntityRetrievalRanker.d.ts +54 -0
- package/dist/memory-router/backends/EntityRetrievalRanker.d.ts.map +1 -0
- package/dist/memory-router/backends/EntityRetrievalRanker.js +39 -0
- package/dist/memory-router/backends/EntityRetrievalRanker.js.map +1 -0
- package/dist/memory-router/backends/index.d.ts +16 -0
- package/dist/memory-router/backends/index.d.ts.map +1 -0
- package/dist/memory-router/backends/index.js +16 -0
- package/dist/memory-router/backends/index.js.map +1 -0
- package/dist/memory-router/index.d.ts +2 -0
- package/dist/memory-router/index.d.ts.map +1 -1
- package/dist/memory-router/index.js +4 -0
- package/dist/memory-router/index.js.map +1 -1
- package/dist/rag/utils/vectorMath.d.ts +1 -1
- package/dist/rag/utils/vectorMath.js +1 -1
- package/dist/rag/vector-search/HnswIndexSidecar.d.ts +1 -1
- package/dist/rag/vector-search/HnswIndexSidecar.js +1 -1
- package/package.json +2 -2
- package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.d.ts +0 -10
- package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.d.ts.map +0 -1
- package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.js +0 -10
- package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.js.map +0 -1
- package/dist/memory/retrieval/store/SqliteBrain.d.ts.map +0 -1
- package/dist/memory/retrieval/store/SqliteBrain.js.map +0 -1
- package/dist/memory/retrieval/store/SqliteKnowledgeGraph.d.ts.map +0 -1
- package/dist/memory/retrieval/store/SqliteKnowledgeGraph.js.map +0 -1
- package/dist/memory/retrieval/store/SqliteMemoryGraph.d.ts.map +0 -1
- package/dist/memory/retrieval/store/SqliteMemoryGraph.js.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileoverview Markdown importer for AgentOS memory brain.
|
|
3
3
|
*
|
|
4
4
|
* Recursively walks a directory of Markdown files and inserts each file as a
|
|
5
|
-
* memory trace in the target `
|
|
5
|
+
* memory trace in the target `Brain`. Front-matter fields (parsed via
|
|
6
6
|
* `gray-matter`) are mapped to trace columns; the document body becomes the
|
|
7
7
|
* trace content.
|
|
8
8
|
*
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @module memory/io/MarkdownImporter
|
|
13
13
|
*/
|
|
14
14
|
import type { ImportOptions, ImportResult } from './facade/types.js';
|
|
15
|
-
import type {
|
|
15
|
+
import type { Brain } from '../retrieval/store/Brain.js';
|
|
16
16
|
/**
|
|
17
17
|
* Parsed front-matter fields extracted from a Markdown trace file.
|
|
18
18
|
* All fields are optional — the importer falls back to safe defaults.
|
|
@@ -27,7 +27,7 @@ interface TraceFrontmatter {
|
|
|
27
27
|
[key: string]: unknown;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
* Imports Markdown files from a directory into a `
|
|
30
|
+
* Imports Markdown files from a directory into a `Brain`.
|
|
31
31
|
*
|
|
32
32
|
* **Usage:**
|
|
33
33
|
* ```ts
|
|
@@ -37,11 +37,11 @@ interface TraceFrontmatter {
|
|
|
37
37
|
* ```
|
|
38
38
|
*/
|
|
39
39
|
export declare class MarkdownImporter {
|
|
40
|
-
protected readonly brain:
|
|
40
|
+
protected readonly brain: Brain;
|
|
41
41
|
/**
|
|
42
|
-
* @param brain - The target `
|
|
42
|
+
* @param brain - The target `Brain` to import into.
|
|
43
43
|
*/
|
|
44
|
-
constructor(brain:
|
|
44
|
+
constructor(brain: Brain);
|
|
45
45
|
/**
|
|
46
46
|
* Recursively walk `sourceDir`, parse every `.md` file, and insert traces.
|
|
47
47
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/MarkdownImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"MarkdownImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/MarkdownImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAMzD;;;GAGG;AACH,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAIf,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK;IAH3C;;OAEG;gBAC4B,KAAK,EAAE,KAAK;IAM3C;;;;;;;;OAQG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAgB9F;;;;;;;;;;;OAWG;cACa,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;OAKG;YACW,qBAAqB;IA2BnC;;;;;OAKG;YACW,YAAY;YAiFZ,eAAe;CAO9B"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileoverview Markdown importer for AgentOS memory brain.
|
|
3
3
|
*
|
|
4
4
|
* Recursively walks a directory of Markdown files and inserts each file as a
|
|
5
|
-
* memory trace in the target `
|
|
5
|
+
* memory trace in the target `Brain`. Front-matter fields (parsed via
|
|
6
6
|
* `gray-matter`) are mapped to trace columns; the document body becomes the
|
|
7
7
|
* trace content.
|
|
8
8
|
*
|
|
@@ -18,7 +18,7 @@ import matter from 'gray-matter';
|
|
|
18
18
|
// MarkdownImporter
|
|
19
19
|
// ---------------------------------------------------------------------------
|
|
20
20
|
/**
|
|
21
|
-
* Imports Markdown files from a directory into a `
|
|
21
|
+
* Imports Markdown files from a directory into a `Brain`.
|
|
22
22
|
*
|
|
23
23
|
* **Usage:**
|
|
24
24
|
* ```ts
|
|
@@ -29,7 +29,7 @@ import matter from 'gray-matter';
|
|
|
29
29
|
*/
|
|
30
30
|
export class MarkdownImporter {
|
|
31
31
|
/**
|
|
32
|
-
* @param brain - The target `
|
|
32
|
+
* @param brain - The target `Brain` to import into.
|
|
33
33
|
*/
|
|
34
34
|
constructor(brain) {
|
|
35
35
|
this.brain = brain;
|
|
@@ -140,7 +140,7 @@ export class MarkdownImporter {
|
|
|
140
140
|
// Dedup check.
|
|
141
141
|
const { dialect } = this.brain.features;
|
|
142
142
|
if (options?.dedup ?? true) {
|
|
143
|
-
const existing = await this.brain.get(`SELECT id FROM memory_traces WHERE ${dialect.jsonExtract('metadata', '$.import_hash')} = ? LIMIT 1`, [hash]);
|
|
143
|
+
const existing = await this.brain.get(`SELECT id FROM memory_traces WHERE brain_id = ? AND ${dialect.jsonExtract('metadata', '$.import_hash')} = ? LIMIT 1`, [this.brain.brainId, hash]);
|
|
144
144
|
if (existing) {
|
|
145
145
|
result.skipped++;
|
|
146
146
|
return;
|
|
@@ -151,9 +151,10 @@ export class MarkdownImporter {
|
|
|
151
151
|
const meta = { import_hash: hash, source_file: filePath };
|
|
152
152
|
try {
|
|
153
153
|
await this.brain.run(`INSERT INTO memory_traces
|
|
154
|
-
(id, type, scope, content, embedding, strength, created_at, last_accessed,
|
|
154
|
+
(brain_id, id, type, scope, content, embedding, strength, created_at, last_accessed,
|
|
155
155
|
retrieval_count, tags, emotions, metadata, deleted)
|
|
156
|
-
VALUES (?, ?, ?, ?, NULL, ?, ?, NULL, 0, ?, '{}', ?, 0)`, [
|
|
156
|
+
VALUES (?, ?, ?, ?, ?, NULL, ?, ?, NULL, 0, ?, '{}', ?, 0)`, [
|
|
157
|
+
this.brain.brainId,
|
|
157
158
|
traceId,
|
|
158
159
|
typeof fm.type === 'string' ? fm.type : 'episodic',
|
|
159
160
|
typeof fm.scope === 'string' ? fm.scope : 'user',
|
|
@@ -172,7 +173,7 @@ export class MarkdownImporter {
|
|
|
172
173
|
}
|
|
173
174
|
}
|
|
174
175
|
async _resolveTraceId(preferredId) {
|
|
175
|
-
const existing = await this.brain.get('SELECT id FROM memory_traces WHERE id = ? LIMIT 1', [preferredId]);
|
|
176
|
+
const existing = await this.brain.get('SELECT id FROM memory_traces WHERE brain_id = ? AND id = ? LIMIT 1', [this.brain.brainId, preferredId]);
|
|
176
177
|
return existing ? `mt_${uuidv4()}` : preferredId;
|
|
177
178
|
}
|
|
178
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownImporter.js","sourceRoot":"","sources":["../../../src/memory/io/MarkdownImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,MAAM,MAAM,aAAa,CAAC;AAsBjC,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;OAEG;IACH,YAA+B,
|
|
1
|
+
{"version":3,"file":"MarkdownImporter.js","sourceRoot":"","sources":["../../../src/memory/io/MarkdownImporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* @module memory/io/ObsidianImporter
|
|
19
19
|
*/
|
|
20
20
|
import type { ImportResult } from './facade/types.js';
|
|
21
|
-
import type {
|
|
21
|
+
import type { Brain } from '../retrieval/store/Brain.js';
|
|
22
22
|
import { MarkdownImporter } from './MarkdownImporter.js';
|
|
23
23
|
/**
|
|
24
24
|
* Parsed front-matter fields (same shape as MarkdownImporter expects).
|
|
@@ -33,7 +33,7 @@ interface TraceFrontmatter {
|
|
|
33
33
|
[key: string]: unknown;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* Imports an Obsidian vault (directory of Markdown files) into a `
|
|
36
|
+
* Imports an Obsidian vault (directory of Markdown files) into a `Brain`.
|
|
37
37
|
*
|
|
38
38
|
* **Usage:**
|
|
39
39
|
* ```ts
|
|
@@ -43,9 +43,9 @@ interface TraceFrontmatter {
|
|
|
43
43
|
*/
|
|
44
44
|
export declare class ObsidianImporter extends MarkdownImporter {
|
|
45
45
|
/**
|
|
46
|
-
* @param brain - The target `
|
|
46
|
+
* @param brain - The target `Brain` to import into.
|
|
47
47
|
*/
|
|
48
|
-
constructor(brain:
|
|
48
|
+
constructor(brain: Brain);
|
|
49
49
|
/**
|
|
50
50
|
* Post-process a successfully imported Markdown file:
|
|
51
51
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObsidianImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/ObsidianImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ObsidianImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/ObsidianImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA6BzD;;GAEG;AACH,UAAU,gBAAgB;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD;;OAEG;gBACS,KAAK,EAAE,KAAK;IAQxB;;;;;;;;;;;;OAYG;cACsB,WAAW,CAClC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,gBAAgB,EAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAuChB;;;;;;;;OAQG;YACW,mBAAmB;IAkCjC;;;;;;;;;;;;;;;;OAgBG;YACW,eAAe;CAuG9B"}
|
|
@@ -43,7 +43,7 @@ const HASHTAG_RE = /(?<![[#])#([\w-]+)/g;
|
|
|
43
43
|
// ObsidianImporter
|
|
44
44
|
// ---------------------------------------------------------------------------
|
|
45
45
|
/**
|
|
46
|
-
* Imports an Obsidian vault (directory of Markdown files) into a `
|
|
46
|
+
* Imports an Obsidian vault (directory of Markdown files) into a `Brain`.
|
|
47
47
|
*
|
|
48
48
|
* **Usage:**
|
|
49
49
|
* ```ts
|
|
@@ -53,7 +53,7 @@ const HASHTAG_RE = /(?<![[#])#([\w-]+)/g;
|
|
|
53
53
|
*/
|
|
54
54
|
export class ObsidianImporter extends MarkdownImporter {
|
|
55
55
|
/**
|
|
56
|
-
* @param brain - The target `
|
|
56
|
+
* @param brain - The target `Brain` to import into.
|
|
57
57
|
*/
|
|
58
58
|
constructor(brain) {
|
|
59
59
|
super(brain);
|
|
@@ -119,7 +119,8 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
119
119
|
async _mergeTagsIntoTrace(traceId, newTags, result) {
|
|
120
120
|
try {
|
|
121
121
|
const brainRef = this.brain;
|
|
122
|
-
const
|
|
122
|
+
const brainId = brainRef.brainId;
|
|
123
|
+
const row = await brainRef.get('SELECT tags FROM memory_traces WHERE brain_id = ? AND id = ?', [brainId, traceId]);
|
|
123
124
|
if (!row)
|
|
124
125
|
return;
|
|
125
126
|
let existing = [];
|
|
@@ -130,7 +131,7 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
130
131
|
existing = [];
|
|
131
132
|
}
|
|
132
133
|
const merged = Array.from(new Set([...existing, ...newTags]));
|
|
133
|
-
await brainRef.run('UPDATE memory_traces SET tags = ? WHERE id = ?', [JSON.stringify(merged), traceId]);
|
|
134
|
+
await brainRef.run('UPDATE memory_traces SET tags = ? WHERE brain_id = ? AND id = ?', [JSON.stringify(merged), brainId, traceId]);
|
|
134
135
|
}
|
|
135
136
|
catch (err) {
|
|
136
137
|
result.errors.push(`Tag merge error for trace ${traceId}: ${String(err)}`);
|
|
@@ -157,18 +158,20 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
157
158
|
try {
|
|
158
159
|
const brainRef = this.brain;
|
|
159
160
|
const { dialect } = brainRef.features;
|
|
161
|
+
const brainId = brainRef.brainId;
|
|
160
162
|
// ---- Upsert source knowledge node for the trace ----
|
|
161
163
|
// We use the trace ID itself as the node label so the graph stays navigable.
|
|
162
164
|
const sourceLabel = `trace:${sourceTraceId}`;
|
|
163
165
|
const sourceHash = await sha256(`wiki-source::${sourceTraceId}`);
|
|
164
166
|
let sourceNodeId;
|
|
165
|
-
const existingSource = await brainRef.get(`SELECT id FROM knowledge_nodes WHERE label = ? LIMIT 1`, [sourceLabel]);
|
|
167
|
+
const existingSource = await brainRef.get(`SELECT id FROM knowledge_nodes WHERE brain_id = ? AND label = ? LIMIT 1`, [brainId, sourceLabel]);
|
|
166
168
|
if (existingSource) {
|
|
167
169
|
sourceNodeId = existingSource.id;
|
|
168
170
|
}
|
|
169
171
|
else {
|
|
170
172
|
sourceNodeId = `kn_${uuidv4()}`;
|
|
171
|
-
await brainRef.run(dialect.insertOrIgnore('knowledge_nodes', ['id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', "'trace'", '?', '?', 'NULL', '1.0', "'{}'", '?']), [
|
|
173
|
+
await brainRef.run(dialect.insertOrIgnore('knowledge_nodes', ['brain_id', 'id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', '?', "'trace'", '?', '?', 'NULL', '1.0', "'{}'", '?']), [
|
|
174
|
+
brainId,
|
|
172
175
|
sourceNodeId,
|
|
173
176
|
sourceLabel,
|
|
174
177
|
JSON.stringify({ import_hash: sourceHash, trace_id: sourceTraceId }),
|
|
@@ -178,13 +181,14 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
178
181
|
// ---- Upsert target knowledge node for the wikilink label ----
|
|
179
182
|
const targetHash = await sha256(`wiki::${targetLabel}`);
|
|
180
183
|
let targetNodeId;
|
|
181
|
-
const existingTarget = await brainRef.get(`SELECT id FROM knowledge_nodes WHERE label = ? LIMIT 1`, [targetLabel]);
|
|
184
|
+
const existingTarget = await brainRef.get(`SELECT id FROM knowledge_nodes WHERE brain_id = ? AND label = ? LIMIT 1`, [brainId, targetLabel]);
|
|
182
185
|
if (existingTarget) {
|
|
183
186
|
targetNodeId = existingTarget.id;
|
|
184
187
|
}
|
|
185
188
|
else {
|
|
186
189
|
targetNodeId = `kn_${uuidv4()}`;
|
|
187
|
-
await brainRef.run(dialect.insertOrIgnore('knowledge_nodes', ['id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', "'concept'", '?', '?', 'NULL', '1.0', "'{}'", '?']), [
|
|
190
|
+
await brainRef.run(dialect.insertOrIgnore('knowledge_nodes', ['brain_id', 'id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', '?', "'concept'", '?', '?', 'NULL', '1.0', "'{}'", '?']), [
|
|
191
|
+
brainId,
|
|
188
192
|
targetNodeId,
|
|
189
193
|
targetLabel,
|
|
190
194
|
JSON.stringify({ import_hash: targetHash, obsidian_wikilink: true }),
|
|
@@ -195,9 +199,10 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
195
199
|
const edgeHash = await sha256(`${sourceNodeId}::${targetNodeId}::related_to`);
|
|
196
200
|
// Check for existing edge before insert (extra safety beyond OR IGNORE).
|
|
197
201
|
const existingEdge = await brainRef.get(`SELECT id FROM knowledge_edges
|
|
198
|
-
WHERE ${dialect.jsonExtract('metadata', '$.import_hash')} = ? LIMIT 1`, [edgeHash]);
|
|
202
|
+
WHERE brain_id = ? AND ${dialect.jsonExtract('metadata', '$.import_hash')} = ? LIMIT 1`, [brainId, edgeHash]);
|
|
199
203
|
if (!existingEdge) {
|
|
200
|
-
await brainRef.run(dialect.insertOrIgnore('knowledge_edges', ['id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', "'related_to'", '1.0', '0', '?', '?']), [
|
|
204
|
+
await brainRef.run(dialect.insertOrIgnore('knowledge_edges', ['brain_id', 'id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', "'related_to'", '1.0', '0', '?', '?']), [
|
|
205
|
+
brainId,
|
|
201
206
|
`ke_${uuidv4()}`,
|
|
202
207
|
sourceNodeId,
|
|
203
208
|
targetNodeId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObsidianImporter.js","sourceRoot":"","sources":["../../../src/memory/io/ObsidianImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAE5D;;;GAGG;AACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAmBzC,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IACpD;;OAEG;IACH,YAAY,
|
|
1
|
+
{"version":3,"file":"ObsidianImporter.js","sourceRoot":"","sources":["../../../src/memory/io/ObsidianImporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview SQLite exporter for AgentOS memory brain.
|
|
3
3
|
*
|
|
4
|
-
* Provides a full-fidelity backup of the `
|
|
4
|
+
* Provides a full-fidelity backup of the `Brain` SQLite file by copying
|
|
5
5
|
* the database file to a specified output path. This is the highest-fidelity
|
|
6
6
|
* export format — it preserves all tables, indexes, and metadata exactly.
|
|
7
7
|
*
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* @module memory/io/SqliteExporter
|
|
12
12
|
*/
|
|
13
13
|
import type { ExportOptions } from './facade/types.js';
|
|
14
|
-
import type {
|
|
14
|
+
import type { Brain } from '../retrieval/store/Brain.js';
|
|
15
15
|
/**
|
|
16
|
-
* Exports a `
|
|
16
|
+
* Exports a `Brain` as a portable SQLite file.
|
|
17
17
|
*
|
|
18
18
|
* **Usage:**
|
|
19
19
|
* ```ts
|
|
@@ -24,9 +24,9 @@ import type { SqliteBrain } from '../retrieval/store/SqliteBrain.js';
|
|
|
24
24
|
export declare class SqliteExporter {
|
|
25
25
|
private readonly brain;
|
|
26
26
|
/**
|
|
27
|
-
* @param brain - The `
|
|
27
|
+
* @param brain - The `Brain` instance to export.
|
|
28
28
|
*/
|
|
29
|
-
constructor(brain:
|
|
29
|
+
constructor(brain: Brain);
|
|
30
30
|
/**
|
|
31
31
|
* Copy the brain database to `outputPath`.
|
|
32
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteExporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/SqliteExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"SqliteExporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/SqliteExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAMzD;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC;;OAEG;gBAC0B,KAAK,EAAE,KAAK;IAMzC;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview SQLite exporter for AgentOS memory brain.
|
|
3
3
|
*
|
|
4
|
-
* Provides a full-fidelity backup of the `
|
|
4
|
+
* Provides a full-fidelity backup of the `Brain` SQLite file by copying
|
|
5
5
|
* the database file to a specified output path. This is the highest-fidelity
|
|
6
6
|
* export format — it preserves all tables, indexes, and metadata exactly.
|
|
7
7
|
*
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// SqliteExporter
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
16
16
|
/**
|
|
17
|
-
* Exports a `
|
|
17
|
+
* Exports a `Brain` as a portable SQLite file.
|
|
18
18
|
*
|
|
19
19
|
* **Usage:**
|
|
20
20
|
* ```ts
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
*/
|
|
25
25
|
export class SqliteExporter {
|
|
26
26
|
/**
|
|
27
|
-
* @param brain - The `
|
|
27
|
+
* @param brain - The `Brain` instance to export.
|
|
28
28
|
*/
|
|
29
29
|
constructor(brain) {
|
|
30
30
|
this.brain = brain;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteExporter.js","sourceRoot":"","sources":["../../../src/memory/io/SqliteExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IACzB;;OAEG;IACH,YAA6B,
|
|
1
|
+
{"version":3,"file":"SqliteExporter.js","sourceRoot":"","sources":["../../../src/memory/io/SqliteExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IACzB;;OAEG;IACH,YAA6B,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,QAAwB;QACvD,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Opens a source SQLite file via `@framers/sql-storage-adapter` (supporting
|
|
5
5
|
* better-sqlite3, sql.js, IndexedDB, etc.) and merges traces, knowledge
|
|
6
|
-
* nodes, and edges into the target `
|
|
6
|
+
* nodes, and edges into the target `Brain`.
|
|
7
7
|
*
|
|
8
8
|
* ## Merge strategy
|
|
9
9
|
* - **memory_traces**: deduplicated by SHA-256 of `content`.
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
* @module memory/io/SqliteImporter
|
|
20
20
|
*/
|
|
21
21
|
import type { ImportOptions, ImportResult } from './facade/types.js';
|
|
22
|
-
import type {
|
|
22
|
+
import type { Brain } from '../retrieval/store/Brain.js';
|
|
23
23
|
/**
|
|
24
|
-
* Merges a source SQLite brain file into a target `
|
|
24
|
+
* Merges a source SQLite brain file into a target `Brain`.
|
|
25
25
|
*
|
|
26
26
|
* Uses `@framers/sql-storage-adapter` to open the source file, enabling
|
|
27
27
|
* cross-platform operation (better-sqlite3, sql.js, IndexedDB).
|
|
@@ -34,7 +34,7 @@ import type { SqliteBrain } from '../retrieval/store/SqliteBrain.js';
|
|
|
34
34
|
*/
|
|
35
35
|
export declare class SqliteImporter {
|
|
36
36
|
private readonly brain;
|
|
37
|
-
constructor(brain:
|
|
37
|
+
constructor(brain: Brain);
|
|
38
38
|
/**
|
|
39
39
|
* Open `sourcePath` via StorageAdapter, read all tables, and merge
|
|
40
40
|
* their contents into the target brain.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/SqliteImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"SqliteImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/SqliteImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAkDzD;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC;;;;;;OAMG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;YAkCjF,OAAO;YAIP,YAAY;YAgFZ,WAAW;YAiDX,WAAW;YA0DX,eAAe;CAU9B"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Opens a source SQLite file via `@framers/sql-storage-adapter` (supporting
|
|
5
5
|
* better-sqlite3, sql.js, IndexedDB, etc.) and merges traces, knowledge
|
|
6
|
-
* nodes, and edges into the target `
|
|
6
|
+
* nodes, and edges into the target `Brain`.
|
|
7
7
|
*
|
|
8
8
|
* ## Merge strategy
|
|
9
9
|
* - **memory_traces**: deduplicated by SHA-256 of `content`.
|
|
@@ -25,7 +25,7 @@ import { resolveStorageAdapter } from '@framers/sql-storage-adapter';
|
|
|
25
25
|
// SqliteImporter
|
|
26
26
|
// ---------------------------------------------------------------------------
|
|
27
27
|
/**
|
|
28
|
-
* Merges a source SQLite brain file into a target `
|
|
28
|
+
* Merges a source SQLite brain file into a target `Brain`.
|
|
29
29
|
*
|
|
30
30
|
* Uses `@framers/sql-storage-adapter` to open the source file, enabling
|
|
31
31
|
* cross-platform operation (better-sqlite3, sql.js, IndexedDB).
|
|
@@ -91,21 +91,23 @@ export class SqliteImporter {
|
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
93
|
const { dialect } = this.brain.features;
|
|
94
|
+
const brainId = this.brain.brainId;
|
|
94
95
|
const checkSql = `SELECT id, created_at, tags
|
|
95
96
|
FROM memory_traces
|
|
96
|
-
WHERE
|
|
97
|
-
|
|
97
|
+
WHERE brain_id = ?
|
|
98
|
+
AND (${dialect.jsonExtract('metadata', '$.import_hash')} = ?
|
|
99
|
+
OR content = ?)
|
|
98
100
|
LIMIT 1`;
|
|
99
101
|
const insertSql = `INSERT INTO memory_traces
|
|
100
|
-
(id, type, scope, content, embedding, strength, created_at, last_accessed,
|
|
102
|
+
(brain_id, id, type, scope, content, embedding, strength, created_at, last_accessed,
|
|
101
103
|
retrieval_count, tags, emotions, metadata, deleted)
|
|
102
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
|
|
103
|
-
const updateTimestampSql = `UPDATE memory_traces SET created_at = ?, tags = ? WHERE id = ?`;
|
|
104
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
|
|
105
|
+
const updateTimestampSql = `UPDATE memory_traces SET created_at = ?, tags = ? WHERE brain_id = ? AND id = ?`;
|
|
104
106
|
for (const row of sourceRows) {
|
|
105
107
|
try {
|
|
106
108
|
const hash = await this._sha256(row.content);
|
|
107
109
|
if (options?.dedup ?? true) {
|
|
108
|
-
const existing = await trx.get(checkSql, [hash, row.content]);
|
|
110
|
+
const existing = await trx.get(checkSql, [brainId, hash, row.content]);
|
|
109
111
|
if (existing) {
|
|
110
112
|
const newerAt = Math.max(existing.created_at, row.created_at);
|
|
111
113
|
let existingTags = [];
|
|
@@ -119,7 +121,7 @@ export class SqliteImporter {
|
|
|
119
121
|
}
|
|
120
122
|
catch { /* ignore */ }
|
|
121
123
|
const merged = Array.from(new Set([...existingTags, ...sourceTags]));
|
|
122
|
-
await trx.run(updateTimestampSql, [newerAt, JSON.stringify(merged), existing.id]);
|
|
124
|
+
await trx.run(updateTimestampSql, [newerAt, JSON.stringify(merged), brainId, existing.id]);
|
|
123
125
|
result.skipped++;
|
|
124
126
|
continue;
|
|
125
127
|
}
|
|
@@ -132,6 +134,7 @@ export class SqliteImporter {
|
|
|
132
134
|
meta['import_hash'] = hash;
|
|
133
135
|
const id = await this._resolveTraceId(trx, row.id ?? `mt_${uuidv4()}`);
|
|
134
136
|
await trx.run(insertSql, [
|
|
137
|
+
brainId,
|
|
135
138
|
id,
|
|
136
139
|
row.type ?? 'episodic',
|
|
137
140
|
row.scope ?? 'user',
|
|
@@ -161,17 +164,19 @@ export class SqliteImporter {
|
|
|
161
164
|
catch {
|
|
162
165
|
return;
|
|
163
166
|
}
|
|
164
|
-
const checkSql = `SELECT id FROM knowledge_nodes WHERE label = ? AND type = ? LIMIT 1`;
|
|
167
|
+
const checkSql = `SELECT id FROM knowledge_nodes WHERE brain_id = ? AND label = ? AND type = ? LIMIT 1`;
|
|
165
168
|
const { dialect } = this.brain.features;
|
|
166
|
-
const
|
|
169
|
+
const brainId = this.brain.brainId;
|
|
170
|
+
const insertSql = dialect.insertOrIgnore('knowledge_nodes', ['brain_id', 'id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?', '?']);
|
|
167
171
|
for (const row of sourceRows) {
|
|
168
172
|
try {
|
|
169
|
-
const existing = await trx.get(checkSql, [row.label ?? '', row.type ?? '']);
|
|
173
|
+
const existing = await trx.get(checkSql, [brainId, row.label ?? '', row.type ?? '']);
|
|
170
174
|
if (existing) {
|
|
171
175
|
result.skipped++;
|
|
172
176
|
continue;
|
|
173
177
|
}
|
|
174
178
|
await trx.run(insertSql, [
|
|
179
|
+
brainId,
|
|
175
180
|
row.id ?? `kn_${uuidv4()}`,
|
|
176
181
|
row.type ?? 'concept',
|
|
177
182
|
row.label ?? '',
|
|
@@ -197,22 +202,24 @@ export class SqliteImporter {
|
|
|
197
202
|
return;
|
|
198
203
|
}
|
|
199
204
|
const checkSql = `SELECT id FROM knowledge_edges
|
|
200
|
-
WHERE source_id = ? AND target_id = ? AND type = ?
|
|
205
|
+
WHERE brain_id = ? AND source_id = ? AND target_id = ? AND type = ?
|
|
201
206
|
LIMIT 1`;
|
|
202
207
|
const { dialect } = this.brain.features;
|
|
203
|
-
const
|
|
208
|
+
const brainId = this.brain.brainId;
|
|
209
|
+
const insertSql = dialect.insertOrIgnore('knowledge_edges', ['brain_id', 'id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?', '?']);
|
|
204
210
|
for (const row of sourceRows) {
|
|
205
211
|
try {
|
|
206
212
|
if (!row.source_id || !row.target_id) {
|
|
207
213
|
result.skipped++;
|
|
208
214
|
continue;
|
|
209
215
|
}
|
|
210
|
-
const existing = await trx.get(checkSql, [row.source_id, row.target_id, row.type ?? '']);
|
|
216
|
+
const existing = await trx.get(checkSql, [brainId, row.source_id, row.target_id, row.type ?? '']);
|
|
211
217
|
if (existing) {
|
|
212
218
|
result.skipped++;
|
|
213
219
|
continue;
|
|
214
220
|
}
|
|
215
221
|
await trx.run(insertSql, [
|
|
222
|
+
brainId,
|
|
216
223
|
row.id ?? `ke_${uuidv4()}`,
|
|
217
224
|
row.source_id,
|
|
218
225
|
row.target_id,
|
|
@@ -230,7 +237,7 @@ export class SqliteImporter {
|
|
|
230
237
|
}
|
|
231
238
|
}
|
|
232
239
|
async _resolveTraceId(trx, preferredId) {
|
|
233
|
-
const existing = await trx.get('SELECT id FROM memory_traces WHERE id = ? LIMIT 1', [preferredId]);
|
|
240
|
+
const existing = await trx.get('SELECT id FROM memory_traces WHERE brain_id = ? AND id = ? LIMIT 1', [this.brain.brainId, preferredId]);
|
|
234
241
|
return existing ? `mt_${uuidv4()}` : preferredId;
|
|
235
242
|
}
|
|
236
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteImporter.js","sourceRoot":"","sources":["../../../src/memory/io/SqliteImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AA4CrE,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAc;IACzB,YAA6B,
|
|
1
|
+
{"version":3,"file":"SqliteImporter.js","sourceRoot":"","sources":["../../../src/memory/io/SqliteImporter.ts"],"names":[],"mappings":"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"}
|