@framers/agentos 0.1.124 → 0.1.126
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/api/AgentOS.d.ts.map +1 -1
- package/dist/api/AgentOS.js +142 -0
- package/dist/api/AgentOS.js.map +1 -1
- package/dist/core/provenance/crypto/AgentKeyManager.d.ts.map +1 -1
- package/dist/core/provenance/crypto/AgentKeyManager.js +9 -3
- package/dist/core/provenance/crypto/AgentKeyManager.js.map +1 -1
- package/dist/core/text-processing/ITextProcessor.d.ts +43 -0
- package/dist/core/text-processing/ITextProcessor.d.ts.map +1 -0
- package/dist/core/text-processing/ITextProcessor.js +6 -0
- package/dist/core/text-processing/ITextProcessor.js.map +1 -0
- package/dist/core/text-processing/TextProcessingPipeline.d.ts +49 -0
- package/dist/core/text-processing/TextProcessingPipeline.d.ts.map +1 -0
- package/dist/core/text-processing/TextProcessingPipeline.js +61 -0
- package/dist/core/text-processing/TextProcessingPipeline.js.map +1 -0
- package/dist/core/text-processing/filters/StopWordFilter.d.ts +30 -0
- package/dist/core/text-processing/filters/StopWordFilter.d.ts.map +1 -0
- package/dist/core/text-processing/filters/StopWordFilter.js +76 -0
- package/dist/core/text-processing/filters/StopWordFilter.js.map +1 -0
- package/dist/core/text-processing/index.d.ts +20 -0
- package/dist/core/text-processing/index.d.ts.map +1 -0
- package/dist/core/text-processing/index.js +24 -0
- package/dist/core/text-processing/index.js.map +1 -0
- package/dist/core/text-processing/lemmatizers/NoOpLemmatizer.d.ts +11 -0
- package/dist/core/text-processing/lemmatizers/NoOpLemmatizer.d.ts.map +1 -0
- package/dist/core/text-processing/lemmatizers/NoOpLemmatizer.js +13 -0
- package/dist/core/text-processing/lemmatizers/NoOpLemmatizer.js.map +1 -0
- package/dist/core/text-processing/lemmatizers/WordNetLemmatizer.d.ts +25 -0
- package/dist/core/text-processing/lemmatizers/WordNetLemmatizer.d.ts.map +1 -0
- package/dist/core/text-processing/lemmatizers/WordNetLemmatizer.js +64 -0
- package/dist/core/text-processing/lemmatizers/WordNetLemmatizer.js.map +1 -0
- package/dist/core/text-processing/normalizers/AccentStripper.d.ts +17 -0
- package/dist/core/text-processing/normalizers/AccentStripper.d.ts.map +1 -0
- package/dist/core/text-processing/normalizers/AccentStripper.js +22 -0
- package/dist/core/text-processing/normalizers/AccentStripper.js.map +1 -0
- package/dist/core/text-processing/normalizers/LowercaseNormalizer.d.ts +11 -0
- package/dist/core/text-processing/normalizers/LowercaseNormalizer.d.ts.map +1 -0
- package/dist/core/text-processing/normalizers/LowercaseNormalizer.js +13 -0
- package/dist/core/text-processing/normalizers/LowercaseNormalizer.js.map +1 -0
- package/dist/core/text-processing/presets.d.ts +22 -0
- package/dist/core/text-processing/presets.d.ts.map +1 -0
- package/dist/core/text-processing/presets.js +45 -0
- package/dist/core/text-processing/presets.js.map +1 -0
- package/dist/core/text-processing/stemmers/NoOpStemmer.d.ts +14 -0
- package/dist/core/text-processing/stemmers/NoOpStemmer.d.ts.map +1 -0
- package/dist/core/text-processing/stemmers/NoOpStemmer.js +16 -0
- package/dist/core/text-processing/stemmers/NoOpStemmer.js.map +1 -0
- package/dist/core/text-processing/stemmers/PorterStemmer.d.ts +31 -0
- package/dist/core/text-processing/stemmers/PorterStemmer.d.ts.map +1 -0
- package/dist/core/text-processing/stemmers/PorterStemmer.js +62 -0
- package/dist/core/text-processing/stemmers/PorterStemmer.js.map +1 -0
- package/dist/core/text-processing/tokenizers/CodeTokenizer.d.ts +25 -0
- package/dist/core/text-processing/tokenizers/CodeTokenizer.d.ts.map +1 -0
- package/dist/core/text-processing/tokenizers/CodeTokenizer.js +75 -0
- package/dist/core/text-processing/tokenizers/CodeTokenizer.js.map +1 -0
- package/dist/core/text-processing/tokenizers/StandardTokenizer.d.ts +22 -0
- package/dist/core/text-processing/tokenizers/StandardTokenizer.d.ts.map +1 -0
- package/dist/core/text-processing/tokenizers/StandardTokenizer.js +37 -0
- package/dist/core/text-processing/tokenizers/StandardTokenizer.js.map +1 -0
- package/dist/core/text-processing/types.d.ts +18 -0
- package/dist/core/text-processing/types.d.ts.map +1 -0
- package/dist/core/text-processing/types.js +6 -0
- package/dist/core/text-processing/types.js.map +1 -0
- package/dist/core/tools/IToolOrchestrator.d.ts +6 -0
- package/dist/core/tools/IToolOrchestrator.d.ts.map +1 -1
- package/dist/core/tools/ToolOrchestrator.d.ts +10 -0
- package/dist/core/tools/ToolOrchestrator.d.ts.map +1 -1
- package/dist/core/tools/ToolOrchestrator.js +25 -0
- package/dist/core/tools/ToolOrchestrator.js.map +1 -1
- package/dist/core/vector-search/HnswIndexSidecar.d.ts +91 -0
- package/dist/core/vector-search/HnswIndexSidecar.d.ts.map +1 -0
- package/dist/core/vector-search/HnswIndexSidecar.js +270 -0
- package/dist/core/vector-search/HnswIndexSidecar.js.map +1 -0
- package/dist/core/vector-search/index.d.ts +7 -0
- package/dist/core/vector-search/index.d.ts.map +1 -0
- package/dist/core/vector-search/index.js +6 -0
- package/dist/core/vector-search/index.js.map +1 -0
- package/dist/core/vector-search/types.d.ts +42 -0
- package/dist/core/vector-search/types.d.ts.map +1 -0
- package/dist/core/vector-search/types.js +6 -0
- package/dist/core/vector-search/types.js.map +1 -0
- package/dist/memory/CognitiveMemoryManager.js +3 -3
- package/dist/memory/CognitiveMemoryManager.js.map +1 -1
- package/dist/memory/consolidation/ConsolidationLoop.js +3 -3
- package/dist/memory/consolidation/ConsolidationLoop.js.map +1 -1
- package/dist/memory/facade/Memory.d.ts +21 -0
- package/dist/memory/facade/Memory.d.ts.map +1 -1
- package/dist/memory/facade/Memory.js +124 -62
- package/dist/memory/facade/Memory.js.map +1 -1
- package/dist/memory/io/ChatGptImporter.d.ts.map +1 -1
- package/dist/memory/io/ChatGptImporter.js +7 -6
- package/dist/memory/io/ChatGptImporter.js.map +1 -1
- package/dist/memory/io/CsvImporter.d.ts +15 -0
- package/dist/memory/io/CsvImporter.d.ts.map +1 -1
- package/dist/memory/io/CsvImporter.js +28 -7
- package/dist/memory/io/CsvImporter.js.map +1 -1
- package/dist/memory/io/JsonExporter.d.ts +14 -0
- package/dist/memory/io/JsonExporter.d.ts.map +1 -1
- package/dist/memory/io/JsonExporter.js +22 -3
- package/dist/memory/io/JsonExporter.js.map +1 -1
- package/dist/memory/io/JsonImporter.d.ts +15 -0
- package/dist/memory/io/JsonImporter.d.ts.map +1 -1
- package/dist/memory/io/JsonImporter.js +35 -16
- package/dist/memory/io/JsonImporter.js.map +1 -1
- package/dist/memory/io/MarkdownImporter.d.ts.map +1 -1
- package/dist/memory/io/MarkdownImporter.js +7 -5
- package/dist/memory/io/MarkdownImporter.js.map +1 -1
- package/dist/memory/io/ObsidianImporter.d.ts.map +1 -1
- package/dist/memory/io/ObsidianImporter.js +9 -23
- package/dist/memory/io/ObsidianImporter.js.map +1 -1
- package/dist/memory/io/SqliteExporter.d.ts.map +1 -1
- package/dist/memory/io/SqliteExporter.js +1 -3
- package/dist/memory/io/SqliteExporter.js.map +1 -1
- package/dist/memory/io/SqliteImporter.d.ts.map +1 -1
- package/dist/memory/io/SqliteImporter.js +10 -11
- package/dist/memory/io/SqliteImporter.js.map +1 -1
- package/dist/memory/store/HnswSidecar.d.ts +7 -0
- package/dist/memory/store/HnswSidecar.d.ts.map +1 -1
- package/dist/memory/store/HnswSidecar.js +7 -0
- package/dist/memory/store/HnswSidecar.js.map +1 -1
- package/dist/memory/store/SqliteBrain.d.ts +14 -2
- package/dist/memory/store/SqliteBrain.d.ts.map +1 -1
- package/dist/memory/store/SqliteBrain.js +37 -34
- package/dist/memory/store/SqliteBrain.js.map +1 -1
- package/dist/memory/store/SqliteKnowledgeGraph.d.ts.map +1 -1
- package/dist/memory/store/SqliteKnowledgeGraph.js +12 -55
- package/dist/memory/store/SqliteKnowledgeGraph.js.map +1 -1
- package/dist/memory/store/SqliteMemoryGraph.d.ts.map +1 -1
- package/dist/memory/store/SqliteMemoryGraph.js +11 -16
- package/dist/memory/store/SqliteMemoryGraph.js.map +1 -1
- package/dist/memory/store/tracePersistence.d.ts +1 -1
- package/dist/memory/store/tracePersistence.d.ts.map +1 -1
- package/dist/memory/store/tracePersistence.js +3 -3
- package/dist/memory/store/tracePersistence.js.map +1 -1
- package/dist/memory/tools/MemoryAddTool.d.ts.map +1 -1
- package/dist/memory/tools/MemoryAddTool.js +2 -7
- package/dist/memory/tools/MemoryAddTool.js.map +1 -1
- package/dist/memory/tools/MemoryMergeTool.d.ts.map +1 -1
- package/dist/memory/tools/MemoryMergeTool.js +2 -3
- package/dist/memory/tools/MemoryMergeTool.js.map +1 -1
- package/dist/memory/tools/MemorySearchTool.d.ts.map +1 -1
- package/dist/memory/tools/MemorySearchTool.js +6 -5
- package/dist/memory/tools/MemorySearchTool.js.map +1 -1
- package/dist/memory/tools/MemoryUpdateTool.d.ts.map +1 -1
- package/dist/memory/tools/MemoryUpdateTool.js +2 -3
- package/dist/memory/tools/MemoryUpdateTool.js.map +1 -1
- package/dist/memory/util/crossPlatformCrypto.d.ts +31 -0
- package/dist/memory/util/crossPlatformCrypto.d.ts.map +1 -0
- package/dist/memory/util/crossPlatformCrypto.js +60 -0
- package/dist/memory/util/crossPlatformCrypto.js.map +1 -0
- package/dist/rag/VectorStoreManager.d.ts.map +1 -1
- package/dist/rag/VectorStoreManager.js +4 -2
- package/dist/rag/VectorStoreManager.js.map +1 -1
- package/dist/rag/implementations/vector_stores/HnswlibVectorStore.d.ts +6 -0
- package/dist/rag/implementations/vector_stores/HnswlibVectorStore.d.ts.map +1 -1
- package/dist/rag/implementations/vector_stores/HnswlibVectorStore.js +9 -0
- package/dist/rag/implementations/vector_stores/HnswlibVectorStore.js.map +1 -1
- package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts +23 -0
- package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts.map +1 -1
- package/dist/rag/implementations/vector_stores/SqlVectorStore.js +109 -5
- package/dist/rag/implementations/vector_stores/SqlVectorStore.js.map +1 -1
- package/dist/rag/search/BM25Index.d.ts +13 -0
- package/dist/rag/search/BM25Index.d.ts.map +1 -1
- package/dist/rag/search/BM25Index.js +14 -20
- package/dist/rag/search/BM25Index.js.map +1 -1
- package/package.json +3 -2
|
@@ -22,8 +22,7 @@
|
|
|
22
22
|
*
|
|
23
23
|
* @module memory/io/CsvImporter
|
|
24
24
|
*/
|
|
25
|
-
import
|
|
26
|
-
import fs from 'node:fs/promises';
|
|
25
|
+
import { sha256 } from '../util/crossPlatformCrypto.js';
|
|
27
26
|
import { v4 as uuidv4 } from 'uuid';
|
|
28
27
|
/**
|
|
29
28
|
* Imports a flat CSV file into a `SqliteBrain`.
|
|
@@ -42,12 +41,33 @@ export class CsvImporter {
|
|
|
42
41
|
const result = { imported: 0, skipped: 0, errors: [] };
|
|
43
42
|
let raw;
|
|
44
43
|
try {
|
|
44
|
+
const fs = await import('node:fs/promises');
|
|
45
45
|
raw = await fs.readFile(sourcePath, 'utf8');
|
|
46
46
|
}
|
|
47
47
|
catch (err) {
|
|
48
48
|
result.errors.push(`Failed to read file: ${String(err)}`);
|
|
49
49
|
return result;
|
|
50
50
|
}
|
|
51
|
+
return this._importCsvContent(raw, result);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Import a CSV string directly into the target brain without filesystem access.
|
|
55
|
+
*
|
|
56
|
+
* @param csvContent - The raw CSV string to parse and import.
|
|
57
|
+
* @returns Import summary with imported/skipped/error counts.
|
|
58
|
+
*/
|
|
59
|
+
async importFromString(csvContent) {
|
|
60
|
+
const result = { imported: 0, skipped: 0, errors: [] };
|
|
61
|
+
return this._importCsvContent(csvContent, result);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parse raw CSV content and import its rows into the brain.
|
|
65
|
+
*
|
|
66
|
+
* @param raw - The raw CSV string (may include BOM).
|
|
67
|
+
* @param result - Mutable `ImportResult` to accumulate counts.
|
|
68
|
+
* @returns The populated `ImportResult`.
|
|
69
|
+
*/
|
|
70
|
+
async _importCsvContent(raw, result) {
|
|
51
71
|
const rows = this._parseCsv(raw.replace(/^\uFEFF/, ''));
|
|
52
72
|
if (rows.length === 0) {
|
|
53
73
|
result.errors.push('CSV import failed: file is empty.');
|
|
@@ -71,10 +91,11 @@ export class CsvImporter {
|
|
|
71
91
|
const deletedIndex = indexOf('deleted');
|
|
72
92
|
const tagsIndex = indexOf('tags');
|
|
73
93
|
const metadataIndex = indexOf('metadata');
|
|
94
|
+
const { dialect } = this.brain.features;
|
|
74
95
|
const checkSql = `SELECT id
|
|
75
96
|
FROM memory_traces
|
|
76
|
-
WHERE
|
|
77
|
-
OR
|
|
97
|
+
WHERE ${dialect.jsonExtract('metadata', '$.import_hash')} = ?
|
|
98
|
+
OR ${dialect.jsonExtract('metadata', '$.content_hash')} = ?
|
|
78
99
|
LIMIT 1`;
|
|
79
100
|
const insertSql = `INSERT INTO memory_traces
|
|
80
101
|
(id, type, scope, content, embedding, strength, created_at, last_accessed,
|
|
@@ -88,7 +109,7 @@ export class CsvImporter {
|
|
|
88
109
|
result.skipped++;
|
|
89
110
|
continue;
|
|
90
111
|
}
|
|
91
|
-
const hash = this._sha256(content);
|
|
112
|
+
const hash = await this._sha256(content);
|
|
92
113
|
const existing = await trx.get(checkSql, [hash, hash]);
|
|
93
114
|
if (existing) {
|
|
94
115
|
result.skipped++;
|
|
@@ -133,8 +154,8 @@ export class CsvImporter {
|
|
|
133
154
|
});
|
|
134
155
|
return result;
|
|
135
156
|
}
|
|
136
|
-
_sha256(content) {
|
|
137
|
-
return
|
|
157
|
+
async _sha256(content) {
|
|
158
|
+
return sha256(content);
|
|
138
159
|
}
|
|
139
160
|
_readCell(row, index) {
|
|
140
161
|
if (index < 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CsvImporter.js","sourceRoot":"","sources":["../../../src/memory/io/CsvImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"CsvImporter.js","sourceRoot":"","sources":["../../../src/memory/io/CsvImporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,20 @@ export declare class JsonExporter {
|
|
|
47
47
|
* omitted from the output. Defaults to `true`.
|
|
48
48
|
*/
|
|
49
49
|
export(outputPath: string, options?: ExportOptions): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Export the full brain state as a JSON string without filesystem access.
|
|
52
|
+
*
|
|
53
|
+
* @param options - Optional export configuration (embeddings, conversations).
|
|
54
|
+
* @returns Pretty-printed JSON string of the full brain payload.
|
|
55
|
+
*/
|
|
56
|
+
exportToString(options?: ExportOptions): Promise<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Build the full export payload from the brain database.
|
|
59
|
+
*
|
|
60
|
+
* @param options - Optional export configuration.
|
|
61
|
+
* @returns The structured payload object ready for serialisation.
|
|
62
|
+
*/
|
|
63
|
+
private _buildPayload;
|
|
50
64
|
/**
|
|
51
65
|
* Serialise a single `memory_traces` row, optionally stripping the embedding.
|
|
52
66
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonExporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/JsonExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"JsonExporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/JsonExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAwE3D;;;;;;;;GAQG;AACH,qBAAa,YAAY;IAIX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC;;OAEG;gBAC0B,KAAK,EAAE,WAAW;IAM/C;;;;;;;;;OASG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE;;;;;OAKG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D;;;;;OAKG;YACW,aAAa;IA+C3B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;CAOvB"}
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
*
|
|
20
20
|
* @module memory/io/JsonExporter
|
|
21
21
|
*/
|
|
22
|
-
import fs from 'node:fs/promises';
|
|
23
22
|
// ---------------------------------------------------------------------------
|
|
24
23
|
// JsonExporter
|
|
25
24
|
// ---------------------------------------------------------------------------
|
|
@@ -53,6 +52,27 @@ export class JsonExporter {
|
|
|
53
52
|
* omitted from the output. Defaults to `true`.
|
|
54
53
|
*/
|
|
55
54
|
async export(outputPath, options) {
|
|
55
|
+
const payload = await this._buildPayload(options);
|
|
56
|
+
const fs = await import('node:fs/promises');
|
|
57
|
+
await fs.writeFile(outputPath, JSON.stringify(payload, null, 2), 'utf8');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Export the full brain state as a JSON string without filesystem access.
|
|
61
|
+
*
|
|
62
|
+
* @param options - Optional export configuration (embeddings, conversations).
|
|
63
|
+
* @returns Pretty-printed JSON string of the full brain payload.
|
|
64
|
+
*/
|
|
65
|
+
async exportToString(options) {
|
|
66
|
+
const payload = await this._buildPayload(options);
|
|
67
|
+
return JSON.stringify(payload, null, 2);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build the full export payload from the brain database.
|
|
71
|
+
*
|
|
72
|
+
* @param options - Optional export configuration.
|
|
73
|
+
* @returns The structured payload object ready for serialisation.
|
|
74
|
+
*/
|
|
75
|
+
async _buildPayload(options) {
|
|
56
76
|
const includeEmbeddings = options?.includeEmbeddings ?? false;
|
|
57
77
|
const includeConversations = options?.includeConversations ?? true;
|
|
58
78
|
// Collect brain_meta as a plain object for the `meta` field.
|
|
@@ -76,7 +96,7 @@ export class JsonExporter {
|
|
|
76
96
|
const conversations = includeConversations
|
|
77
97
|
? await this.brain.all('SELECT * FROM conversations')
|
|
78
98
|
: [];
|
|
79
|
-
|
|
99
|
+
return {
|
|
80
100
|
meta,
|
|
81
101
|
traces,
|
|
82
102
|
nodes,
|
|
@@ -84,7 +104,6 @@ export class JsonExporter {
|
|
|
84
104
|
documents,
|
|
85
105
|
conversations,
|
|
86
106
|
};
|
|
87
|
-
await fs.writeFile(outputPath, JSON.stringify(payload, null, 2), 'utf8');
|
|
88
107
|
}
|
|
89
108
|
// -------------------------------------------------------------------------
|
|
90
109
|
// Private helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonExporter.js","sourceRoot":"","sources":["../../../src/memory/io/JsonExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"JsonExporter.js","sourceRoot":"","sources":["../../../src/memory/io/JsonExporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,21 @@ export declare class JsonImporter {
|
|
|
43
43
|
* @returns `ImportResult` with counts of imported, skipped, and errored items.
|
|
44
44
|
*/
|
|
45
45
|
import(sourcePath: string): Promise<ImportResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Import a JSON string directly into the target brain without filesystem access.
|
|
48
|
+
*
|
|
49
|
+
* @param jsonContent - The JSON string to parse and import.
|
|
50
|
+
* @returns `ImportResult` with counts of imported, skipped, and errored items.
|
|
51
|
+
*/
|
|
52
|
+
importFromString(jsonContent: string): Promise<ImportResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Parse a raw JSON string and import its contents into the brain.
|
|
55
|
+
*
|
|
56
|
+
* @param raw - The raw JSON string to parse.
|
|
57
|
+
* @param result - Mutable `ImportResult` to accumulate counts.
|
|
58
|
+
* @returns The populated `ImportResult`.
|
|
59
|
+
*/
|
|
60
|
+
private _importParsed;
|
|
46
61
|
/**
|
|
47
62
|
* Compute a SHA-256 hex digest of arbitrary string content.
|
|
48
63
|
* Used as a stable dedup key across import operations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/JsonImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"JsonImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/JsonImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsF3D;;;;;;;;;GASG;AACH,qBAAa,YAAY;IAIX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC;;OAEG;gBAC0B,KAAK,EAAE,WAAW;IAM/C;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAgBvD;;;;;OAKG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKlE;;;;;;OAMG;YACW,aAAa;IA4B3B;;;;;;OAMG;YACW,OAAO;IAIrB;;;;;;;;;OASG;YACW,aAAa;IA4D3B;;;;;;;;OAQG;YACW,YAAY;IAsD1B;;;;;;;;;OASG;YACW,YAAY;CAuD3B"}
|
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module memory/io/JsonImporter
|
|
10
10
|
*/
|
|
11
|
-
import
|
|
12
|
-
import crypto from 'node:crypto';
|
|
11
|
+
import { sha256 } from '../util/crossPlatformCrypto.js';
|
|
13
12
|
import { v4 as uuidv4 } from 'uuid';
|
|
14
13
|
// ---------------------------------------------------------------------------
|
|
15
14
|
// JsonImporter
|
|
@@ -55,12 +54,33 @@ export class JsonImporter {
|
|
|
55
54
|
// ---- Load + parse ----
|
|
56
55
|
let raw;
|
|
57
56
|
try {
|
|
57
|
+
const fs = await import('node:fs/promises');
|
|
58
58
|
raw = await fs.readFile(sourcePath, 'utf8');
|
|
59
59
|
}
|
|
60
60
|
catch (err) {
|
|
61
61
|
result.errors.push(`Failed to read file: ${String(err)}`);
|
|
62
62
|
return result;
|
|
63
63
|
}
|
|
64
|
+
return this._importParsed(raw, result);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Import a JSON string directly into the target brain without filesystem access.
|
|
68
|
+
*
|
|
69
|
+
* @param jsonContent - The JSON string to parse and import.
|
|
70
|
+
* @returns `ImportResult` with counts of imported, skipped, and errored items.
|
|
71
|
+
*/
|
|
72
|
+
async importFromString(jsonContent) {
|
|
73
|
+
const result = { imported: 0, skipped: 0, errors: [] };
|
|
74
|
+
return this._importParsed(jsonContent, result);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Parse a raw JSON string and import its contents into the brain.
|
|
78
|
+
*
|
|
79
|
+
* @param raw - The raw JSON string to parse.
|
|
80
|
+
* @param result - Mutable `ImportResult` to accumulate counts.
|
|
81
|
+
* @returns The populated `ImportResult`.
|
|
82
|
+
*/
|
|
83
|
+
async _importParsed(raw, result) {
|
|
64
84
|
let payload;
|
|
65
85
|
try {
|
|
66
86
|
payload = JSON.parse(raw);
|
|
@@ -91,8 +111,8 @@ export class JsonImporter {
|
|
|
91
111
|
* @param content - The string to hash.
|
|
92
112
|
* @returns 64-character lowercase hex string.
|
|
93
113
|
*/
|
|
94
|
-
_sha256(content) {
|
|
95
|
-
return
|
|
114
|
+
async _sha256(content) {
|
|
115
|
+
return sha256(content);
|
|
96
116
|
}
|
|
97
117
|
/**
|
|
98
118
|
* Import memory trace records into `memory_traces`.
|
|
@@ -105,14 +125,15 @@ export class JsonImporter {
|
|
|
105
125
|
* @param result - Mutable `ImportResult` to accumulate counts.
|
|
106
126
|
*/
|
|
107
127
|
async _importTraces(trx, traces, result) {
|
|
108
|
-
const
|
|
128
|
+
const { dialect } = this.brain.features;
|
|
129
|
+
const checkSql = `SELECT id FROM memory_traces WHERE ${dialect.jsonExtract('metadata', '$.import_hash')} = ? LIMIT 1`;
|
|
109
130
|
const insertSql = `INSERT INTO memory_traces
|
|
110
131
|
(id, type, scope, content, embedding, strength, created_at, last_accessed,
|
|
111
132
|
retrieval_count, tags, emotions, metadata, deleted)
|
|
112
133
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
|
|
113
134
|
for (const t of traces) {
|
|
114
135
|
try {
|
|
115
|
-
const hash = this._sha256(t.content);
|
|
136
|
+
const hash = await this._sha256(t.content);
|
|
116
137
|
const existing = await trx.get(checkSql, [hash]);
|
|
117
138
|
if (existing) {
|
|
118
139
|
result.skipped++;
|
|
@@ -164,13 +185,12 @@ export class JsonImporter {
|
|
|
164
185
|
* @param result - Mutable `ImportResult` to accumulate counts.
|
|
165
186
|
*/
|
|
166
187
|
async _importNodes(trx, nodes, result) {
|
|
167
|
-
const
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`;
|
|
188
|
+
const { dialect } = this.brain.features;
|
|
189
|
+
const checkSql = `SELECT id FROM knowledge_nodes WHERE ${dialect.jsonExtract('properties', '$.import_hash')} = ? LIMIT 1`;
|
|
190
|
+
const insertSql = dialect.insertOrIgnore('knowledge_nodes', ['id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?']);
|
|
171
191
|
for (const n of nodes) {
|
|
172
192
|
try {
|
|
173
|
-
const hash = this._sha256(`${n.label ?? ''}::${n.type ?? ''}`);
|
|
193
|
+
const hash = await this._sha256(`${n.label ?? ''}::${n.type ?? ''}`);
|
|
174
194
|
const existing = await trx.get(checkSql, [hash]);
|
|
175
195
|
if (existing) {
|
|
176
196
|
result.skipped++;
|
|
@@ -216,17 +236,16 @@ export class JsonImporter {
|
|
|
216
236
|
* @param result - Mutable `ImportResult` to accumulate counts.
|
|
217
237
|
*/
|
|
218
238
|
async _importEdges(trx, edges, result) {
|
|
219
|
-
const
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`;
|
|
239
|
+
const { dialect } = this.brain.features;
|
|
240
|
+
const checkSql = `SELECT id FROM knowledge_edges WHERE ${dialect.jsonExtract('metadata', '$.import_hash')} = ? LIMIT 1`;
|
|
241
|
+
const insertSql = dialect.insertOrIgnore('knowledge_edges', ['id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?']);
|
|
223
242
|
for (const e of edges) {
|
|
224
243
|
try {
|
|
225
244
|
if (!e.source_id || !e.target_id) {
|
|
226
245
|
result.skipped++;
|
|
227
246
|
continue;
|
|
228
247
|
}
|
|
229
|
-
const hash = this._sha256(`${e.source_id}::${e.target_id}::${e.type ?? ''}`);
|
|
248
|
+
const hash = await this._sha256(`${e.source_id}::${e.target_id}::${e.type ?? ''}`);
|
|
230
249
|
const existing = await trx.get(checkSql, [hash]);
|
|
231
250
|
if (existing) {
|
|
232
251
|
result.skipped++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonImporter.js","sourceRoot":"","sources":["../../../src/memory/io/JsonImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"JsonImporter.js","sourceRoot":"","sources":["../../../src/memory/io/JsonImporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/MarkdownImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"MarkdownImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/MarkdownImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM3D;;;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,WAAW;IAHjD;;OAEG;gBAC4B,KAAK,EAAE,WAAW;IAMjD;;;;;;;;OAQG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAgBtD;;;;;;;;;;;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;CAuE3B"}
|
|
@@ -11,9 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module memory/io/MarkdownImporter
|
|
13
13
|
*/
|
|
14
|
-
import
|
|
15
|
-
import path from 'node:path';
|
|
16
|
-
import crypto from 'node:crypto';
|
|
14
|
+
import { sha256 } from '../util/crossPlatformCrypto.js';
|
|
17
15
|
import { v4 as uuidv4 } from 'uuid';
|
|
18
16
|
import matter from 'gray-matter';
|
|
19
17
|
// ---------------------------------------------------------------------------
|
|
@@ -84,6 +82,8 @@ export class MarkdownImporter {
|
|
|
84
82
|
* @returns Sorted list of absolute file paths.
|
|
85
83
|
*/
|
|
86
84
|
async _collectMarkdownFiles(dir) {
|
|
85
|
+
const fs = await import('node:fs/promises');
|
|
86
|
+
const path = await import('node:path');
|
|
87
87
|
const results = [];
|
|
88
88
|
async function walk(current) {
|
|
89
89
|
let entries;
|
|
@@ -113,6 +113,7 @@ export class MarkdownImporter {
|
|
|
113
113
|
* @param result - Mutable `ImportResult` accumulator.
|
|
114
114
|
*/
|
|
115
115
|
async _processFile(filePath, result) {
|
|
116
|
+
const fs = await import('node:fs/promises');
|
|
116
117
|
let raw;
|
|
117
118
|
try {
|
|
118
119
|
raw = await fs.readFile(filePath, 'utf8');
|
|
@@ -135,9 +136,10 @@ export class MarkdownImporter {
|
|
|
135
136
|
result.skipped++;
|
|
136
137
|
return;
|
|
137
138
|
}
|
|
138
|
-
const hash =
|
|
139
|
+
const hash = await sha256(body);
|
|
139
140
|
// Dedup check.
|
|
140
|
-
const
|
|
141
|
+
const { dialect } = this.brain.features;
|
|
142
|
+
const existing = await this.brain.get(`SELECT id FROM memory_traces WHERE ${dialect.jsonExtract('metadata', '$.import_hash')} = ? LIMIT 1`, [hash]);
|
|
141
143
|
if (existing) {
|
|
142
144
|
result.skipped++;
|
|
143
145
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownImporter.js","sourceRoot":"","sources":["../../../src/memory/io/MarkdownImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"MarkdownImporter.js","sourceRoot":"","sources":["../../../src/memory/io/MarkdownImporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,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,WAAW;IAQ9B;;;;;;;;;;;;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;IAiCjC;;;;;;;;;;;;;;;;OAgBG;YACW,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,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,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,WAAW;IAQ9B;;;;;;;;;;;;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;IAiCjC;;;;;;;;;;;;;;;;OAgBG;YACW,eAAe;CAmG9B"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* @module memory/io/ObsidianImporter
|
|
19
19
|
*/
|
|
20
|
-
import
|
|
20
|
+
import { sha256 } from '../util/crossPlatformCrypto.js';
|
|
21
21
|
import { v4 as uuidv4 } from 'uuid';
|
|
22
22
|
import { MarkdownImporter } from './MarkdownImporter.js';
|
|
23
23
|
// ---------------------------------------------------------------------------
|
|
@@ -156,13 +156,11 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
156
156
|
async _upsertWikiEdge(sourceTraceId, targetLabel, result) {
|
|
157
157
|
try {
|
|
158
158
|
const brainRef = this.brain;
|
|
159
|
+
const { dialect } = brainRef.features;
|
|
159
160
|
// ---- Upsert source knowledge node for the trace ----
|
|
160
161
|
// We use the trace ID itself as the node label so the graph stays navigable.
|
|
161
162
|
const sourceLabel = `trace:${sourceTraceId}`;
|
|
162
|
-
const sourceHash =
|
|
163
|
-
.createHash('sha256')
|
|
164
|
-
.update(`wiki-source::${sourceTraceId}`)
|
|
165
|
-
.digest('hex');
|
|
163
|
+
const sourceHash = await sha256(`wiki-source::${sourceTraceId}`);
|
|
166
164
|
let sourceNodeId;
|
|
167
165
|
const existingSource = await brainRef.get(`SELECT id FROM knowledge_nodes WHERE label = ? LIMIT 1`, [sourceLabel]);
|
|
168
166
|
if (existingSource) {
|
|
@@ -170,9 +168,7 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
170
168
|
}
|
|
171
169
|
else {
|
|
172
170
|
sourceNodeId = `kn_${uuidv4()}`;
|
|
173
|
-
await brainRef.run(
|
|
174
|
-
(id, type, label, properties, embedding, confidence, source, created_at)
|
|
175
|
-
VALUES (?, 'trace', ?, ?, NULL, 1.0, '{}', ?)`, [
|
|
171
|
+
await brainRef.run(dialect.insertOrIgnore('knowledge_nodes', ['id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', "'trace'", '?', '?', 'NULL', '1.0', "'{}'", '?']), [
|
|
176
172
|
sourceNodeId,
|
|
177
173
|
sourceLabel,
|
|
178
174
|
JSON.stringify({ import_hash: sourceHash, trace_id: sourceTraceId }),
|
|
@@ -180,10 +176,7 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
180
176
|
]);
|
|
181
177
|
}
|
|
182
178
|
// ---- Upsert target knowledge node for the wikilink label ----
|
|
183
|
-
const targetHash =
|
|
184
|
-
.createHash('sha256')
|
|
185
|
-
.update(`wiki::${targetLabel}`)
|
|
186
|
-
.digest('hex');
|
|
179
|
+
const targetHash = await sha256(`wiki::${targetLabel}`);
|
|
187
180
|
let targetNodeId;
|
|
188
181
|
const existingTarget = await brainRef.get(`SELECT id FROM knowledge_nodes WHERE label = ? LIMIT 1`, [targetLabel]);
|
|
189
182
|
if (existingTarget) {
|
|
@@ -191,9 +184,7 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
191
184
|
}
|
|
192
185
|
else {
|
|
193
186
|
targetNodeId = `kn_${uuidv4()}`;
|
|
194
|
-
await brainRef.run(
|
|
195
|
-
(id, type, label, properties, embedding, confidence, source, created_at)
|
|
196
|
-
VALUES (?, 'concept', ?, ?, NULL, 1.0, '{}', ?)`, [
|
|
187
|
+
await brainRef.run(dialect.insertOrIgnore('knowledge_nodes', ['id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', "'concept'", '?', '?', 'NULL', '1.0', "'{}'", '?']), [
|
|
197
188
|
targetNodeId,
|
|
198
189
|
targetLabel,
|
|
199
190
|
JSON.stringify({ import_hash: targetHash, obsidian_wikilink: true }),
|
|
@@ -201,17 +192,12 @@ export class ObsidianImporter extends MarkdownImporter {
|
|
|
201
192
|
]);
|
|
202
193
|
}
|
|
203
194
|
// ---- Create the directed edge: source node → target node ----
|
|
204
|
-
const edgeHash =
|
|
205
|
-
.createHash('sha256')
|
|
206
|
-
.update(`${sourceNodeId}::${targetNodeId}::related_to`)
|
|
207
|
-
.digest('hex');
|
|
195
|
+
const edgeHash = await sha256(`${sourceNodeId}::${targetNodeId}::related_to`);
|
|
208
196
|
// Check for existing edge before insert (extra safety beyond OR IGNORE).
|
|
209
197
|
const existingEdge = await brainRef.get(`SELECT id FROM knowledge_edges
|
|
210
|
-
WHERE
|
|
198
|
+
WHERE ${dialect.jsonExtract('metadata', '$.import_hash')} = ? LIMIT 1`, [edgeHash]);
|
|
211
199
|
if (!existingEdge) {
|
|
212
|
-
await brainRef.run(
|
|
213
|
-
(id, source_id, target_id, type, weight, bidirectional, metadata, created_at)
|
|
214
|
-
VALUES (?, ?, ?, 'related_to', 1.0, 0, ?, ?)`, [
|
|
200
|
+
await brainRef.run(dialect.insertOrIgnore('knowledge_edges', ['id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', "'related_to'", '1.0', '0', '?', '?']), [
|
|
215
201
|
`ke_${uuidv4()}`,
|
|
216
202
|
sourceNodeId,
|
|
217
203
|
targetNodeId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObsidianImporter.js","sourceRoot":"","sources":["../../../src/memory/io/ObsidianImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"ObsidianImporter.js","sourceRoot":"","sources":["../../../src/memory/io/ObsidianImporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM3D;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC;;OAEG;gBAC0B,KAAK,EAAE,WAAW;IAM/C;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
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,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM3D;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC;;OAEG;gBAC0B,KAAK,EAAE,WAAW;IAM/C;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1E"}
|
|
@@ -47,9 +47,7 @@ export class SqliteExporter {
|
|
|
47
47
|
* all data including embeddings).
|
|
48
48
|
*/
|
|
49
49
|
async export(outputPath, _options) {
|
|
50
|
-
|
|
51
|
-
// It is an atomic operation from SQLite's perspective.
|
|
52
|
-
await this.brain.exec(`VACUUM INTO '${outputPath.replace(/'/g, "''")}'`);
|
|
50
|
+
await this.brain.features.exporter.exportToFile(outputPath);
|
|
53
51
|
}
|
|
54
52
|
}
|
|
55
53
|
//# sourceMappingURL=SqliteExporter.js.map
|
|
@@ -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,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAEnD,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,QAAwB;QACvD,
|
|
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,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;IAAG,CAAC;IAEnD,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/SqliteImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgD3D;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC;;OAEG;gBAC0B,KAAK,EAAE,WAAW;IAM/C;;;;;;;;OAQG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8BvD;;OAEG;
|
|
1
|
+
{"version":3,"file":"SqliteImporter.d.ts","sourceRoot":"","sources":["../../../src/memory/io/SqliteImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgD3D;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC;;OAEG;gBAC0B,KAAK,EAAE,WAAW;IAM/C;;;;;;;;OAQG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8BvD;;OAEG;YACW,OAAO;IAIrB;;;;;;;;;OASG;YACW,YAAY;IA+E1B;;;;;;;;OAQG;YACW,WAAW;IA+CzB;;;;;;;;;OASG;YACW,WAAW;CAwD1B"}
|