@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
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* @module memory/io/SqliteImporter
|
|
20
20
|
*/
|
|
21
21
|
import Database from 'better-sqlite3';
|
|
22
|
-
import
|
|
22
|
+
import { sha256 as crossSha256 } from '../util/crossPlatformCrypto.js';
|
|
23
23
|
import { v4 as uuidv4 } from 'uuid';
|
|
24
24
|
// ---------------------------------------------------------------------------
|
|
25
25
|
// SqliteImporter
|
|
@@ -82,8 +82,8 @@ export class SqliteImporter {
|
|
|
82
82
|
/**
|
|
83
83
|
* SHA-256 of an arbitrary string (hex output).
|
|
84
84
|
*/
|
|
85
|
-
_sha256(s) {
|
|
86
|
-
return
|
|
85
|
+
async _sha256(s) {
|
|
86
|
+
return crossSha256(s);
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
89
|
* Merge `memory_traces` from source into target.
|
|
@@ -104,9 +104,10 @@ export class SqliteImporter {
|
|
|
104
104
|
// Table might not exist in an incompatible source.
|
|
105
105
|
return;
|
|
106
106
|
}
|
|
107
|
+
const { dialect } = this.brain.features;
|
|
107
108
|
const checkSql = `SELECT id, created_at, tags
|
|
108
109
|
FROM memory_traces
|
|
109
|
-
WHERE
|
|
110
|
+
WHERE ${dialect.jsonExtract('metadata', '$.import_hash')} = ?
|
|
110
111
|
OR content = ?
|
|
111
112
|
LIMIT 1`;
|
|
112
113
|
const insertSql = `INSERT INTO memory_traces
|
|
@@ -116,7 +117,7 @@ export class SqliteImporter {
|
|
|
116
117
|
const updateTimestampSql = `UPDATE memory_traces SET created_at = ?, tags = ? WHERE id = ?`;
|
|
117
118
|
for (const row of sourceRows) {
|
|
118
119
|
try {
|
|
119
|
-
const hash = this._sha256(row.content);
|
|
120
|
+
const hash = await this._sha256(row.content);
|
|
120
121
|
const existing = await trx.get(checkSql, [hash, row.content]);
|
|
121
122
|
if (existing) {
|
|
122
123
|
// Keep the newer timestamp and union the tags.
|
|
@@ -183,9 +184,8 @@ export class SqliteImporter {
|
|
|
183
184
|
return;
|
|
184
185
|
}
|
|
185
186
|
const checkSql = `SELECT id FROM knowledge_nodes WHERE label = ? AND type = ? LIMIT 1`;
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`;
|
|
187
|
+
const { dialect } = this.brain.features;
|
|
188
|
+
const insertSql = dialect.insertOrIgnore('knowledge_nodes', ['id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?']);
|
|
189
189
|
for (const row of sourceRows) {
|
|
190
190
|
try {
|
|
191
191
|
const existing = await trx.get(checkSql, [row.label ?? '', row.type ?? '']);
|
|
@@ -231,9 +231,8 @@ export class SqliteImporter {
|
|
|
231
231
|
const checkSql = `SELECT id FROM knowledge_edges
|
|
232
232
|
WHERE source_id = ? AND target_id = ? AND type = ?
|
|
233
233
|
LIMIT 1`;
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`;
|
|
234
|
+
const { dialect } = this.brain.features;
|
|
235
|
+
const insertSql = dialect.insertOrIgnore('knowledge_edges', ['id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?']);
|
|
237
236
|
for (const row of sourceRows) {
|
|
238
237
|
try {
|
|
239
238
|
if (!row.source_id || !row.target_id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteImporter.js","sourceRoot":"","sources":["../../../src/memory/io/SqliteImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"SqliteImporter.js","sourceRoot":"","sources":["../../../src/memory/io/SqliteImporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
* Auto-activates when trace count exceeds threshold (default: 1000).
|
|
10
10
|
* Below that, brute-force cosine in the Memory facade is fast enough.
|
|
11
11
|
*
|
|
12
|
+
* NOTE: The generalized version of this pattern is now available at
|
|
13
|
+
* `core/vector-search/HnswIndexSidecar`. This Memory-specific version
|
|
14
|
+
* will be migrated to delegate to the shared module in a future update.
|
|
15
|
+
* New code should use `HnswIndexSidecar` from `core/vector-search/` directly.
|
|
16
|
+
*
|
|
12
17
|
* Architecture:
|
|
13
18
|
* ```
|
|
14
19
|
* ~/.wunderland/agents/{name}/
|
|
@@ -16,6 +21,8 @@
|
|
|
16
21
|
* └── brain.hnsw ← HNSW index (rebuildable)
|
|
17
22
|
* brain.hnsw.map.json ← label↔id mapping
|
|
18
23
|
* ```
|
|
24
|
+
*
|
|
25
|
+
* @see core/vector-search/HnswIndexSidecar for the shared generalized version
|
|
19
26
|
*/
|
|
20
27
|
export interface HnswSidecarConfig {
|
|
21
28
|
/** Path to brain.sqlite — HNSW file will be at same dir with .hnsw extension. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HnswSidecar.d.ts","sourceRoot":"","sources":["../../../src/memory/store/HnswSidecar.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"HnswSidecar.d.ts","sourceRoot":"","sources":["../../../src/memory/store/HnswSidecar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC9B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IAErD,4DAA4D;IAC5D,OAAO,CAAC,SAAS,CAAkC;IACnD,4DAA4D;IAC5D,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAwB;gBAElC,MAAM,EAAE,iBAAiB;IAYrC,gEAAgE;IAChE,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,2CAA2C;IAC3C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAMD;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B;;;;;;;OAOG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBlF;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE;IAqB3D;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAa7B;;;;;OAKG;IACG,eAAe,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjF;;;OAGG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,OAAO,IAAI,IAAI;IAkBf,gEAAgE;YAClD,cAAc;IAe5B,wCAAwC;YAC1B,aAAa;IAuB3B,yCAAyC;IACzC,OAAO,CAAC,WAAW;CAepB"}
|
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
* Auto-activates when trace count exceeds threshold (default: 1000).
|
|
10
10
|
* Below that, brute-force cosine in the Memory facade is fast enough.
|
|
11
11
|
*
|
|
12
|
+
* NOTE: The generalized version of this pattern is now available at
|
|
13
|
+
* `core/vector-search/HnswIndexSidecar`. This Memory-specific version
|
|
14
|
+
* will be migrated to delegate to the shared module in a future update.
|
|
15
|
+
* New code should use `HnswIndexSidecar` from `core/vector-search/` directly.
|
|
16
|
+
*
|
|
12
17
|
* Architecture:
|
|
13
18
|
* ```
|
|
14
19
|
* ~/.wunderland/agents/{name}/
|
|
@@ -16,6 +21,8 @@
|
|
|
16
21
|
* └── brain.hnsw ← HNSW index (rebuildable)
|
|
17
22
|
* brain.hnsw.map.json ← label↔id mapping
|
|
18
23
|
* ```
|
|
24
|
+
*
|
|
25
|
+
* @see core/vector-search/HnswIndexSidecar for the shared generalized version
|
|
19
26
|
*/
|
|
20
27
|
import { existsSync, unlinkSync, writeFileSync, readFileSync } from 'node:fs';
|
|
21
28
|
import { join, dirname } from 'node:path';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HnswSidecar.js","sourceRoot":"","sources":["../../../src/memory/store/HnswSidecar.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"HnswSidecar.js","sourceRoot":"","sources":["../../../src/memory/store/HnswSidecar.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
*
|
|
29
29
|
* @module memory/store/SqliteBrain
|
|
30
30
|
*/
|
|
31
|
-
import type { StorageAdapter, StorageRunResult, StorageParameters } from '@framers/sql-storage-adapter';
|
|
31
|
+
import type { StorageAdapter, StorageRunResult, StorageParameters, StorageFeatures } from '@framers/sql-storage-adapter';
|
|
32
32
|
/**
|
|
33
33
|
* Unified cross-platform connection manager for a single agent's persistent brain.
|
|
34
34
|
*
|
|
@@ -60,10 +60,16 @@ export declare class SqliteBrain {
|
|
|
60
60
|
* Not exposed publicly — consumers use the async proxy methods instead.
|
|
61
61
|
*/
|
|
62
62
|
private readonly _adapter;
|
|
63
|
+
/**
|
|
64
|
+
* Platform-aware feature bundle (dialect, FTS, BLOB codec, exporter).
|
|
65
|
+
* Created by `createStorageFeatures(adapter)` during `open()`.
|
|
66
|
+
*/
|
|
67
|
+
private readonly _features;
|
|
63
68
|
/**
|
|
64
69
|
* Private constructor — use `SqliteBrain.open(dbPath)` instead.
|
|
65
70
|
*
|
|
66
|
-
* @param adapter
|
|
71
|
+
* @param adapter - A fully initialised StorageAdapter instance.
|
|
72
|
+
* @param features - Platform-aware feature bundle.
|
|
67
73
|
*/
|
|
68
74
|
private constructor();
|
|
69
75
|
/**
|
|
@@ -131,6 +137,12 @@ export declare class SqliteBrain {
|
|
|
131
137
|
* (which needs direct adapter access for the target brain).
|
|
132
138
|
*/
|
|
133
139
|
get adapter(): StorageAdapter;
|
|
140
|
+
/**
|
|
141
|
+
* Platform-aware feature bundle (dialect, FTS, BLOB codec, exporter).
|
|
142
|
+
* Consumers use this to generate cross-platform SQL instead of hardcoding
|
|
143
|
+
* SQLite-specific syntax.
|
|
144
|
+
*/
|
|
145
|
+
get features(): StorageFeatures;
|
|
134
146
|
/**
|
|
135
147
|
* Execute all DDL statements inside a single transaction.
|
|
136
148
|
* `CREATE TABLE IF NOT EXISTS` is idempotent, so re-running on an existing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteBrain.d.ts","sourceRoot":"","sources":["../../../src/memory/store/SqliteBrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"SqliteBrain.d.ts","sourceRoot":"","sources":["../../../src/memory/store/SqliteBrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAsOtC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,WAAW;IACtB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAM5C;;;;;OAKG;IACH,OAAO;IASP;;;;;;;;;;;;;;;;OAgBG;WACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA+BvD;;;;;;OAMG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI7E;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIlF;;;;;;OAMG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI7E;;;;OAIG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC;;;;;;;;OAQG;IACG,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzE;;;;;OAKG;IACH,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,eAAe,CAE9B;IAMD;;;;OAIG;YACW,WAAW;IAwBzB;;;OAGG;YACW,SAAS;IAkBvB;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IASvD;;;;;;;;OAQG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD;;;;;;;;;;;;OAYG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhE;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
*
|
|
29
29
|
* @module memory/store/SqliteBrain
|
|
30
30
|
*/
|
|
31
|
-
import { resolveStorageAdapter } from '@framers/sql-storage-adapter';
|
|
31
|
+
import { resolveStorageAdapter, createStorageFeatures } from '@framers/sql-storage-adapter';
|
|
32
32
|
// ---------------------------------------------------------------------------
|
|
33
33
|
// Constants
|
|
34
34
|
// ---------------------------------------------------------------------------
|
|
@@ -73,22 +73,8 @@ CREATE TABLE IF NOT EXISTS memory_traces (
|
|
|
73
73
|
deleted INTEGER NOT NULL DEFAULT 0
|
|
74
74
|
);
|
|
75
75
|
`;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
* Uses the Porter tokenizer for morphological stemming.
|
|
79
|
-
*
|
|
80
|
-
* Linked to `memory_traces` via the external content mechanism so that
|
|
81
|
-
* content is not duplicated on disk.
|
|
82
|
-
*/
|
|
83
|
-
const DDL_MEMORY_TRACES_FTS = `
|
|
84
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS memory_traces_fts USING fts5(
|
|
85
|
-
content,
|
|
86
|
-
tags,
|
|
87
|
-
content='memory_traces',
|
|
88
|
-
content_rowid='rowid',
|
|
89
|
-
tokenize='porter ascii'
|
|
90
|
-
);
|
|
91
|
-
`;
|
|
76
|
+
// FTS index DDL is now generated dynamically by features.fts.createIndex()
|
|
77
|
+
// to support both SQLite FTS5 and Postgres tsvector/GIN.
|
|
92
78
|
/**
|
|
93
79
|
* Knowledge graph nodes (semantic network).
|
|
94
80
|
* Each node represents a real-world entity or concept the agent has learned about.
|
|
@@ -286,10 +272,12 @@ export class SqliteBrain {
|
|
|
286
272
|
/**
|
|
287
273
|
* Private constructor — use `SqliteBrain.open(dbPath)` instead.
|
|
288
274
|
*
|
|
289
|
-
* @param adapter
|
|
275
|
+
* @param adapter - A fully initialised StorageAdapter instance.
|
|
276
|
+
* @param features - Platform-aware feature bundle.
|
|
290
277
|
*/
|
|
291
|
-
constructor(adapter) {
|
|
278
|
+
constructor(adapter, features) {
|
|
292
279
|
this._adapter = adapter;
|
|
280
|
+
this._features = features;
|
|
293
281
|
}
|
|
294
282
|
// ---------------------------------------------------------------------------
|
|
295
283
|
// Async factory
|
|
@@ -317,16 +305,16 @@ export class SqliteBrain {
|
|
|
317
305
|
priority: ['better-sqlite3', 'sqljs', 'indexeddb'],
|
|
318
306
|
quiet: true,
|
|
319
307
|
});
|
|
320
|
-
const
|
|
321
|
-
|
|
322
|
-
//
|
|
323
|
-
|
|
324
|
-
if (
|
|
325
|
-
await adapter.exec(
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
308
|
+
const features = createStorageFeatures(adapter);
|
|
309
|
+
const brain = new SqliteBrain(adapter, features);
|
|
310
|
+
// Step 1: WAL mode — dialect returns null for non-SQLite adapters.
|
|
311
|
+
const walPragma = features.dialect.pragma('journal_mode', 'WAL');
|
|
312
|
+
if (walPragma)
|
|
313
|
+
await adapter.exec(walPragma);
|
|
314
|
+
// Step 2: Foreign key enforcement — dialect returns null for Postgres (enforced by default).
|
|
315
|
+
const fkPragma = features.dialect.pragma('foreign_keys', 'ON');
|
|
316
|
+
if (fkPragma)
|
|
317
|
+
await adapter.exec(fkPragma);
|
|
330
318
|
// Step 3: Apply full schema in a single transaction for atomicity.
|
|
331
319
|
await brain._initSchema();
|
|
332
320
|
// Step 4: Seed brain_meta defaults if this is a fresh database.
|
|
@@ -395,6 +383,14 @@ export class SqliteBrain {
|
|
|
395
383
|
get adapter() {
|
|
396
384
|
return this._adapter;
|
|
397
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* Platform-aware feature bundle (dialect, FTS, BLOB codec, exporter).
|
|
388
|
+
* Consumers use this to generate cross-platform SQL instead of hardcoding
|
|
389
|
+
* SQLite-specific syntax.
|
|
390
|
+
*/
|
|
391
|
+
get features() {
|
|
392
|
+
return this._features;
|
|
393
|
+
}
|
|
398
394
|
// ---------------------------------------------------------------------------
|
|
399
395
|
// Private init helpers
|
|
400
396
|
// ---------------------------------------------------------------------------
|
|
@@ -416,8 +412,14 @@ export class SqliteBrain {
|
|
|
416
412
|
await trx.exec(DDL_RETRIEVAL_FEEDBACK);
|
|
417
413
|
await trx.exec(DDL_CONVERSATIONS);
|
|
418
414
|
await trx.exec(DDL_MESSAGES);
|
|
419
|
-
//
|
|
420
|
-
|
|
415
|
+
// FTS index via feature abstraction (FTS5 on SQLite, tsvector/GIN on Postgres)
|
|
416
|
+
const ftsDdl = this._features.fts.createIndex({
|
|
417
|
+
table: 'memory_traces_fts',
|
|
418
|
+
columns: ['content', 'tags'],
|
|
419
|
+
contentTable: 'memory_traces',
|
|
420
|
+
tokenizer: 'porter ascii',
|
|
421
|
+
});
|
|
422
|
+
await trx.exec(ftsDdl);
|
|
421
423
|
});
|
|
422
424
|
}
|
|
423
425
|
/**
|
|
@@ -425,9 +427,10 @@ export class SqliteBrain {
|
|
|
425
427
|
* Uses INSERT OR IGNORE to be idempotent on subsequent opens.
|
|
426
428
|
*/
|
|
427
429
|
async _seedMeta() {
|
|
430
|
+
const { dialect } = this._features;
|
|
428
431
|
await this._adapter.transaction(async (trx) => {
|
|
429
|
-
await trx.run('
|
|
430
|
-
await trx.run('
|
|
432
|
+
await trx.run(dialect.insertOrIgnore('brain_meta', ['key', 'value'], ['?', '?']), ['schema_version', SCHEMA_VERSION]);
|
|
433
|
+
await trx.run(dialect.insertOrIgnore('brain_meta', ['key', 'value'], ['?', '?']), ['created_at', Date.now().toString()]);
|
|
431
434
|
});
|
|
432
435
|
}
|
|
433
436
|
// ---------------------------------------------------------------------------
|
|
@@ -453,7 +456,7 @@ export class SqliteBrain {
|
|
|
453
456
|
* @param value - The string value to store.
|
|
454
457
|
*/
|
|
455
458
|
async setMeta(key, value) {
|
|
456
|
-
await this._adapter.run('
|
|
459
|
+
await this._adapter.run(this._features.dialect.insertOrReplace('brain_meta', ['key', 'value'], ['?', '?'], 'key'), [key, value]);
|
|
457
460
|
}
|
|
458
461
|
/**
|
|
459
462
|
* Check whether a given embedding dimension is compatible with this brain.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteBrain.js","sourceRoot":"","sources":["../../../src/memory/store/SqliteBrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;
|
|
1
|
+
{"version":3,"file":"SqliteBrain.js","sourceRoot":"","sources":["../../../src/memory/store/SqliteBrain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteKnowledgeGraph.d.ts","sourceRoot":"","sources":["../../../src/memory/store/SqliteKnowledgeGraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqliteKnowledgeGraph.d.ts","sourceRoot":"","sources":["../../../src/memory/store/SqliteKnowledgeGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,48 +18,7 @@
|
|
|
18
18
|
*
|
|
19
19
|
* @module memory/store/SqliteKnowledgeGraph
|
|
20
20
|
*/
|
|
21
|
-
import
|
|
22
|
-
// ---------------------------------------------------------------------------
|
|
23
|
-
// Embedding helpers
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
/**
|
|
26
|
-
* Serialize a number[] embedding into a Buffer (Float32 little-endian)
|
|
27
|
-
* for storage in an SQLite BLOB column.
|
|
28
|
-
*/
|
|
29
|
-
function embeddingToBlob(vec) {
|
|
30
|
-
const buf = Buffer.alloc(vec.length * 4);
|
|
31
|
-
for (let i = 0; i < vec.length; i++) {
|
|
32
|
-
buf.writeFloatLE(vec[i], i * 4);
|
|
33
|
-
}
|
|
34
|
-
return buf;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Deserialize a BLOB (Float32 little-endian) back into a number[] embedding.
|
|
38
|
-
*/
|
|
39
|
-
function blobToEmbedding(blob) {
|
|
40
|
-
const count = blob.length / 4;
|
|
41
|
-
const vec = new Array(count);
|
|
42
|
-
for (let i = 0; i < count; i++) {
|
|
43
|
-
vec[i] = blob.readFloatLE(i * 4);
|
|
44
|
-
}
|
|
45
|
-
return vec;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Compute cosine similarity between two equal-length vectors.
|
|
49
|
-
* Returns 0 if either vector has zero magnitude.
|
|
50
|
-
*/
|
|
51
|
-
function cosineSimilarity(a, b) {
|
|
52
|
-
let dot = 0;
|
|
53
|
-
let magA = 0;
|
|
54
|
-
let magB = 0;
|
|
55
|
-
for (let i = 0; i < a.length; i++) {
|
|
56
|
-
dot += a[i] * b[i];
|
|
57
|
-
magA += a[i] * a[i];
|
|
58
|
-
magB += b[i] * b[i];
|
|
59
|
-
}
|
|
60
|
-
const denom = Math.sqrt(magA) * Math.sqrt(magB);
|
|
61
|
-
return denom === 0 ? 0 : dot / denom;
|
|
62
|
-
}
|
|
21
|
+
import { uuid } from '../util/crossPlatformCrypto.js';
|
|
63
22
|
// ---------------------------------------------------------------------------
|
|
64
23
|
// SqliteKnowledgeGraph
|
|
65
24
|
// ---------------------------------------------------------------------------
|
|
@@ -122,7 +81,7 @@ export class SqliteKnowledgeGraph {
|
|
|
122
81
|
*/
|
|
123
82
|
async upsertEntity(entity) {
|
|
124
83
|
const now = new Date().toISOString();
|
|
125
|
-
const id = entity.id ??
|
|
84
|
+
const id = entity.id ?? uuid();
|
|
126
85
|
// Check if the entity already exists to preserve createdAt.
|
|
127
86
|
const existing = await this.brain.get('SELECT * FROM knowledge_nodes WHERE id = ?', [id]);
|
|
128
87
|
const createdAt = existing
|
|
@@ -137,11 +96,10 @@ export class SqliteKnowledgeGraph {
|
|
|
137
96
|
_updatedAt: now,
|
|
138
97
|
};
|
|
139
98
|
const embeddingBlob = entity.embedding
|
|
140
|
-
?
|
|
99
|
+
? this.brain.features.blobCodec.encode(entity.embedding)
|
|
141
100
|
: null;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
101
|
+
const { dialect } = this.brain.features;
|
|
102
|
+
await this.brain.run(dialect.insertOrReplace('knowledge_nodes', ['id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?'], 'id'), [
|
|
145
103
|
id,
|
|
146
104
|
entity.type,
|
|
147
105
|
entity.label,
|
|
@@ -248,7 +206,7 @@ export class SqliteKnowledgeGraph {
|
|
|
248
206
|
*/
|
|
249
207
|
async upsertRelation(relation) {
|
|
250
208
|
const now = new Date().toISOString();
|
|
251
|
-
const id = relation.id ??
|
|
209
|
+
const id = relation.id ?? uuid();
|
|
252
210
|
// Preserve createdAt if edge already exists.
|
|
253
211
|
const existing = await this.brain.get('SELECT * FROM knowledge_edges WHERE id = ?', [id]);
|
|
254
212
|
const createdAt = existing
|
|
@@ -263,9 +221,8 @@ export class SqliteKnowledgeGraph {
|
|
|
263
221
|
_validFrom: relation.validFrom,
|
|
264
222
|
_validTo: relation.validTo,
|
|
265
223
|
};
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
224
|
+
const { dialect } = this.brain.features;
|
|
225
|
+
await this.brain.run(dialect.insertOrReplace('knowledge_edges', ['id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?'], 'id'), [
|
|
269
226
|
id,
|
|
270
227
|
relation.sourceId,
|
|
271
228
|
relation.targetId,
|
|
@@ -336,7 +293,7 @@ export class SqliteKnowledgeGraph {
|
|
|
336
293
|
*/
|
|
337
294
|
async recordMemory(memory) {
|
|
338
295
|
const now = new Date().toISOString();
|
|
339
|
-
const id =
|
|
296
|
+
const id = uuid();
|
|
340
297
|
const memFields = {
|
|
341
298
|
_props: {},
|
|
342
299
|
_updatedAt: now,
|
|
@@ -356,7 +313,7 @@ export class SqliteKnowledgeGraph {
|
|
|
356
313
|
_lastAccessedAt: now,
|
|
357
314
|
};
|
|
358
315
|
const embeddingBlob = memory.embedding
|
|
359
|
-
?
|
|
316
|
+
? this.brain.features.blobCodec.encode(memory.embedding)
|
|
360
317
|
: null;
|
|
361
318
|
const source = {
|
|
362
319
|
type: 'conversation',
|
|
@@ -961,7 +918,7 @@ export class SqliteKnowledgeGraph {
|
|
|
961
918
|
type: row.type,
|
|
962
919
|
label: row.label,
|
|
963
920
|
properties: extended._props ?? {},
|
|
964
|
-
embedding: row.embedding ?
|
|
921
|
+
embedding: row.embedding ? this.brain.features.blobCodec.decode(row.embedding) : undefined,
|
|
965
922
|
confidence: row.confidence,
|
|
966
923
|
source,
|
|
967
924
|
createdAt: new Date(row.created_at).toISOString(),
|
|
@@ -1021,7 +978,7 @@ export class SqliteKnowledgeGraph {
|
|
|
1021
978
|
valence: fields._valence,
|
|
1022
979
|
importance: row.confidence,
|
|
1023
980
|
entityIds: fields._entityIds ?? [],
|
|
1024
|
-
embedding: row.embedding ?
|
|
981
|
+
embedding: row.embedding ? this.brain.features.blobCodec.decode(row.embedding) : undefined,
|
|
1025
982
|
occurredAt: fields._occurredAt ?? new Date(row.created_at).toISOString(),
|
|
1026
983
|
durationMs: fields._durationMs,
|
|
1027
984
|
outcome: fields._outcome,
|