@framers/agentos 0.1.105 → 0.1.107
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 +80 -0
- package/dist/api/AgentOS.d.ts.map +1 -1
- package/dist/api/AgentOS.js +128 -9
- package/dist/api/AgentOS.js.map +1 -1
- package/dist/api/AgentOSOrchestrator.d.ts.map +1 -1
- package/dist/api/AgentOSOrchestrator.js +32 -4
- package/dist/api/AgentOSOrchestrator.js.map +1 -1
- package/dist/api/agent.js +1 -1
- package/dist/api/agent.js.map +1 -1
- package/dist/api/streamText.d.ts.map +1 -1
- package/dist/api/streamText.js +5 -1
- package/dist/api/streamText.js.map +1 -1
- package/dist/memory/AgentMemory.d.ts +62 -16
- package/dist/memory/AgentMemory.d.ts.map +1 -1
- package/dist/memory/AgentMemory.js +236 -28
- package/dist/memory/AgentMemory.js.map +1 -1
- package/dist/memory/consolidation/ConsolidationLoop.d.ts.map +1 -1
- package/dist/memory/consolidation/ConsolidationLoop.js +32 -9
- package/dist/memory/consolidation/ConsolidationLoop.js.map +1 -1
- package/dist/memory/extension/MemoryToolsExtension.d.ts +53 -0
- package/dist/memory/extension/MemoryToolsExtension.d.ts.map +1 -0
- package/dist/memory/extension/MemoryToolsExtension.js +54 -0
- package/dist/memory/extension/MemoryToolsExtension.js.map +1 -0
- package/dist/memory/extension/StandaloneMemoryExtension.d.ts +27 -0
- package/dist/memory/extension/StandaloneMemoryExtension.d.ts.map +1 -0
- package/dist/memory/extension/StandaloneMemoryExtension.js +122 -0
- package/dist/memory/extension/StandaloneMemoryExtension.js.map +1 -0
- package/dist/memory/facade/Memory.d.ts +45 -0
- package/dist/memory/facade/Memory.d.ts.map +1 -1
- package/dist/memory/facade/Memory.js +296 -137
- package/dist/memory/facade/Memory.js.map +1 -1
- package/dist/memory/facade/types.d.ts +12 -8
- package/dist/memory/facade/types.d.ts.map +1 -1
- package/dist/memory/feedback/RetrievalFeedbackSignal.d.ts +14 -5
- package/dist/memory/feedback/RetrievalFeedbackSignal.d.ts.map +1 -1
- package/dist/memory/feedback/RetrievalFeedbackSignal.js +131 -20
- package/dist/memory/feedback/RetrievalFeedbackSignal.js.map +1 -1
- package/dist/memory/index.d.ts +7 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +5 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/integration/StandaloneMemoryBridge.d.ts +55 -0
- package/dist/memory/integration/StandaloneMemoryBridge.d.ts.map +1 -0
- package/dist/memory/integration/StandaloneMemoryBridge.js +398 -0
- package/dist/memory/integration/StandaloneMemoryBridge.js.map +1 -0
- package/dist/memory/io/CsvImporter.d.ts +51 -0
- package/dist/memory/io/CsvImporter.d.ts.map +1 -0
- package/dist/memory/io/CsvImporter.js +229 -0
- package/dist/memory/io/CsvImporter.js.map +1 -0
- package/dist/memory/io/index.d.ts +2 -0
- package/dist/memory/io/index.d.ts.map +1 -1
- package/dist/memory/io/index.js +2 -0
- package/dist/memory/io/index.js.map +1 -1
- package/dist/memory/store/tracePersistence.d.ts +68 -0
- package/dist/memory/store/tracePersistence.d.ts.map +1 -0
- package/dist/memory/store/tracePersistence.js +159 -0
- package/dist/memory/store/tracePersistence.js.map +1 -0
- package/dist/memory/tools/MemoryAddTool.d.ts.map +1 -1
- package/dist/memory/tools/MemoryAddTool.js +18 -6
- 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 +41 -13
- 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 +24 -4
- 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 +38 -16
- package/dist/memory/tools/MemoryUpdateTool.js.map +1 -1
- package/dist/orchestration/builders/nodes.d.ts +6 -0
- package/dist/orchestration/builders/nodes.d.ts.map +1 -1
- package/dist/orchestration/builders/nodes.js +13 -2
- package/dist/orchestration/builders/nodes.js.map +1 -1
- package/dist/orchestration/runtime/GraphRuntime.d.ts.map +1 -1
- package/dist/orchestration/runtime/GraphRuntime.js +15 -34
- package/dist/orchestration/runtime/GraphRuntime.js.map +1 -1
- package/dist/orchestration/runtime/NodeExecutor.d.ts.map +1 -1
- package/dist/orchestration/runtime/NodeExecutor.js +2 -16
- package/dist/orchestration/runtime/NodeExecutor.js.map +1 -1
- package/dist/orchestration/runtime/StateManager.d.ts.map +1 -1
- package/dist/orchestration/runtime/StateManager.js +15 -3
- package/dist/orchestration/runtime/StateManager.js.map +1 -1
- package/dist/orchestration/runtime/safeExpressionEvaluator.d.ts +38 -0
- package/dist/orchestration/runtime/safeExpressionEvaluator.d.ts.map +1 -0
- package/dist/orchestration/runtime/safeExpressionEvaluator.js +184 -0
- package/dist/orchestration/runtime/safeExpressionEvaluator.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview CSV importer for AgentOS memory brain.
|
|
3
|
+
*
|
|
4
|
+
* Imports flat CSV files into a target `SqliteBrain`. A header row is
|
|
5
|
+
* required and must include a `content` column. Optional columns map onto
|
|
6
|
+
* `memory_traces` fields when present.
|
|
7
|
+
*
|
|
8
|
+
* Supported optional columns:
|
|
9
|
+
* - `id`
|
|
10
|
+
* - `type`
|
|
11
|
+
* - `scope`
|
|
12
|
+
* - `strength`
|
|
13
|
+
* - `created_at` / `createdAt`
|
|
14
|
+
* - `last_accessed`
|
|
15
|
+
* - `retrieval_count`
|
|
16
|
+
* - `deleted`
|
|
17
|
+
* - `tags` (JSON array, comma-separated, or pipe-separated)
|
|
18
|
+
* - `metadata` (JSON object)
|
|
19
|
+
*
|
|
20
|
+
* Deduplication uses SHA-256 of the `content` field and stores the hash in
|
|
21
|
+
* `metadata.import_hash`.
|
|
22
|
+
*
|
|
23
|
+
* @module memory/io/CsvImporter
|
|
24
|
+
*/
|
|
25
|
+
import crypto from 'node:crypto';
|
|
26
|
+
import fs from 'node:fs/promises';
|
|
27
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
28
|
+
/**
|
|
29
|
+
* Imports a flat CSV file into a `SqliteBrain`.
|
|
30
|
+
*/
|
|
31
|
+
export class CsvImporter {
|
|
32
|
+
constructor(brain) {
|
|
33
|
+
this.brain = brain;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Read, parse, and import a CSV file.
|
|
37
|
+
*
|
|
38
|
+
* @param sourcePath - Absolute or relative path to the CSV file.
|
|
39
|
+
* @returns Import summary with imported/skipped/error counts.
|
|
40
|
+
*/
|
|
41
|
+
async import(sourcePath) {
|
|
42
|
+
const result = { imported: 0, skipped: 0, errors: [] };
|
|
43
|
+
let raw;
|
|
44
|
+
try {
|
|
45
|
+
raw = await fs.readFile(sourcePath, 'utf8');
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
result.errors.push(`Failed to read file: ${String(err)}`);
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
const rows = this._parseCsv(raw.replace(/^\uFEFF/, ''));
|
|
52
|
+
if (rows.length === 0) {
|
|
53
|
+
result.errors.push('CSV import failed: file is empty.');
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
const [headerRow, ...dataRows] = rows;
|
|
57
|
+
const header = headerRow.map((cell) => cell.trim().toLowerCase());
|
|
58
|
+
const contentIndex = header.indexOf('content');
|
|
59
|
+
if (contentIndex === -1) {
|
|
60
|
+
result.errors.push('CSV import failed: missing required "content" column.');
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
const indexOf = (name) => header.indexOf(name);
|
|
64
|
+
const idIndex = indexOf('id');
|
|
65
|
+
const typeIndex = indexOf('type');
|
|
66
|
+
const scopeIndex = indexOf('scope');
|
|
67
|
+
const strengthIndex = indexOf('strength');
|
|
68
|
+
const createdAtIndex = Math.max(indexOf('created_at'), indexOf('createdat'));
|
|
69
|
+
const lastAccessedIndex = indexOf('last_accessed');
|
|
70
|
+
const retrievalCountIndex = indexOf('retrieval_count');
|
|
71
|
+
const deletedIndex = indexOf('deleted');
|
|
72
|
+
const tagsIndex = indexOf('tags');
|
|
73
|
+
const metadataIndex = indexOf('metadata');
|
|
74
|
+
const checkStmt = this.brain.db.prepare(`SELECT id
|
|
75
|
+
FROM memory_traces
|
|
76
|
+
WHERE json_extract(metadata, '$.import_hash') = ?
|
|
77
|
+
OR json_extract(metadata, '$.content_hash') = ?
|
|
78
|
+
LIMIT 1`);
|
|
79
|
+
const insertStmt = this.brain.db.prepare(`INSERT INTO memory_traces
|
|
80
|
+
(id, type, scope, content, embedding, strength, created_at, last_accessed,
|
|
81
|
+
retrieval_count, tags, emotions, metadata, deleted)
|
|
82
|
+
VALUES (?, ?, ?, ?, NULL, ?, ?, ?, ?, ?, '{}', ?, ?)`);
|
|
83
|
+
this.brain.db.transaction(() => {
|
|
84
|
+
for (const row of dataRows) {
|
|
85
|
+
try {
|
|
86
|
+
const content = (row[contentIndex] ?? '').trim();
|
|
87
|
+
if (!content) {
|
|
88
|
+
result.skipped++;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const hash = this._sha256(content);
|
|
92
|
+
if (checkStmt.get(hash, hash)) {
|
|
93
|
+
result.skipped++;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
let metadata = {};
|
|
97
|
+
const rawMetadata = metadataIndex >= 0 ? row[metadataIndex] ?? '' : '';
|
|
98
|
+
if (rawMetadata.trim()) {
|
|
99
|
+
try {
|
|
100
|
+
metadata = JSON.parse(rawMetadata);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
result.errors.push(`CSV metadata parse error for content "${content.slice(0, 40)}..."`);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
metadata.import_hash = hash;
|
|
108
|
+
const rawCreatedAt = createdAtIndex >= 0 ? row[createdAtIndex] ?? '' : '';
|
|
109
|
+
const rawLastAccessed = lastAccessedIndex >= 0 ? row[lastAccessedIndex] ?? '' : '';
|
|
110
|
+
const rawRetrievalCount = retrievalCountIndex >= 0 ? row[retrievalCountIndex] ?? '' : '';
|
|
111
|
+
const rawStrength = strengthIndex >= 0 ? row[strengthIndex] ?? '' : '';
|
|
112
|
+
const rawDeleted = deletedIndex >= 0 ? row[deletedIndex] ?? '' : '';
|
|
113
|
+
insertStmt.run(this._readCell(row, idIndex) || `mt_${uuidv4()}`, this._readCell(row, typeIndex) || 'episodic', this._readCell(row, scopeIndex) || 'user', content, this._toNumber(rawStrength) ?? 1.0, this._toInteger(rawCreatedAt) ?? Date.now(), this._toInteger(rawLastAccessed) ?? null, this._toInteger(rawRetrievalCount) ?? 0, JSON.stringify(this._parseTags(tagsIndex >= 0 ? row[tagsIndex] ?? '' : '')), JSON.stringify(metadata), this._toInteger(rawDeleted) ?? 0);
|
|
114
|
+
result.imported++;
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
result.errors.push(`CSV trace import error: ${String(err)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
})();
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
_sha256(content) {
|
|
124
|
+
return crypto.createHash('sha256').update(content, 'utf8').digest('hex');
|
|
125
|
+
}
|
|
126
|
+
_readCell(row, index) {
|
|
127
|
+
if (index < 0)
|
|
128
|
+
return '';
|
|
129
|
+
return (row[index] ?? '').trim();
|
|
130
|
+
}
|
|
131
|
+
_toNumber(value) {
|
|
132
|
+
if (!value.trim())
|
|
133
|
+
return null;
|
|
134
|
+
const parsed = Number(value);
|
|
135
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
136
|
+
}
|
|
137
|
+
_toInteger(value) {
|
|
138
|
+
const parsed = this._toNumber(value);
|
|
139
|
+
return parsed === null ? null : Math.trunc(parsed);
|
|
140
|
+
}
|
|
141
|
+
_parseTags(raw) {
|
|
142
|
+
const value = raw.trim();
|
|
143
|
+
if (!value)
|
|
144
|
+
return [];
|
|
145
|
+
if (value.startsWith('[')) {
|
|
146
|
+
try {
|
|
147
|
+
const parsed = JSON.parse(value);
|
|
148
|
+
if (Array.isArray(parsed)) {
|
|
149
|
+
return parsed.filter((tag) => typeof tag === 'string');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const separator = value.includes('|') ? '|' : ',';
|
|
157
|
+
return value
|
|
158
|
+
.split(separator)
|
|
159
|
+
.map((tag) => tag.trim())
|
|
160
|
+
.filter(Boolean);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Small RFC4180-ish CSV parser that supports quoted fields, escaped quotes,
|
|
164
|
+
* and embedded newlines inside quoted cells.
|
|
165
|
+
*/
|
|
166
|
+
_parseCsv(input) {
|
|
167
|
+
const rows = [];
|
|
168
|
+
let row = [];
|
|
169
|
+
let field = '';
|
|
170
|
+
let inQuotes = false;
|
|
171
|
+
const pushField = () => {
|
|
172
|
+
row.push(field);
|
|
173
|
+
field = '';
|
|
174
|
+
};
|
|
175
|
+
const pushRow = () => {
|
|
176
|
+
if (row.length === 1 && row[0] === '' && rows.length > 0) {
|
|
177
|
+
row = [];
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
rows.push(row);
|
|
181
|
+
row = [];
|
|
182
|
+
};
|
|
183
|
+
for (let i = 0; i < input.length; i++) {
|
|
184
|
+
const char = input[i];
|
|
185
|
+
if (inQuotes) {
|
|
186
|
+
if (char === '"') {
|
|
187
|
+
if (input[i + 1] === '"') {
|
|
188
|
+
field += '"';
|
|
189
|
+
i++;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
inQuotes = false;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
field += char;
|
|
197
|
+
}
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (char === '"') {
|
|
201
|
+
inQuotes = true;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (char === ',') {
|
|
205
|
+
pushField();
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
if (char === '\r') {
|
|
209
|
+
if (input[i + 1] === '\n')
|
|
210
|
+
i++;
|
|
211
|
+
pushField();
|
|
212
|
+
pushRow();
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (char === '\n') {
|
|
216
|
+
pushField();
|
|
217
|
+
pushRow();
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
field += char;
|
|
221
|
+
}
|
|
222
|
+
pushField();
|
|
223
|
+
if (row.length > 0) {
|
|
224
|
+
pushRow();
|
|
225
|
+
}
|
|
226
|
+
return rows;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=CsvImporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CsvImporter.js","sourceRoot":"","sources":["../../../src/memory/io/CsvImporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - `ObsidianImporter` — extends `MarkdownImporter` with wikilink → edge parsing.
|
|
17
17
|
* - `SqliteImporter` — merges another SQLite brain file (smart dedup + tag union).
|
|
18
18
|
* - `ChatGptImporter` — parses ChatGPT's `conversations.json` export format.
|
|
19
|
+
* - `CsvImporter` — imports flat CSV files with a required `content` column.
|
|
19
20
|
*
|
|
20
21
|
* @module memory/io
|
|
21
22
|
*/
|
|
@@ -28,4 +29,5 @@ export { ObsidianImporter } from './ObsidianImporter.js';
|
|
|
28
29
|
export { SqliteExporter } from './SqliteExporter.js';
|
|
29
30
|
export { SqliteImporter } from './SqliteImporter.js';
|
|
30
31
|
export { ChatGptImporter } from './ChatGptImporter.js';
|
|
32
|
+
export { CsvImporter } from './CsvImporter.js';
|
|
31
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/io/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/memory/io/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/memory/io/index.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - `ObsidianImporter` — extends `MarkdownImporter` with wikilink → edge parsing.
|
|
17
17
|
* - `SqliteImporter` — merges another SQLite brain file (smart dedup + tag union).
|
|
18
18
|
* - `ChatGptImporter` — parses ChatGPT's `conversations.json` export format.
|
|
19
|
+
* - `CsvImporter` — imports flat CSV files with a required `content` column.
|
|
19
20
|
*
|
|
20
21
|
* @module memory/io
|
|
21
22
|
*/
|
|
@@ -28,4 +29,5 @@ export { ObsidianImporter } from './ObsidianImporter.js';
|
|
|
28
29
|
export { SqliteExporter } from './SqliteExporter.js';
|
|
29
30
|
export { SqliteImporter } from './SqliteImporter.js';
|
|
30
31
|
export { ChatGptImporter } from './ChatGptImporter.js';
|
|
32
|
+
export { CsvImporter } from './CsvImporter.js';
|
|
31
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/io/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/memory/io/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Shared helpers for persisting trace metadata in SQLite-first
|
|
3
|
+
* memory paths.
|
|
4
|
+
*
|
|
5
|
+
* The Phase 1 memory facade stores core retrieval counters in dedicated
|
|
6
|
+
* columns, but richer decay state is persisted inside `memory_traces.metadata`
|
|
7
|
+
* to avoid a schema expansion. These helpers keep that JSON contract
|
|
8
|
+
* consistent across the facade, consolidation loop, feedback loop, and
|
|
9
|
+
* agent-facing memory tools.
|
|
10
|
+
*
|
|
11
|
+
* @module memory/store/tracePersistence
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Default stability for traces that do not yet have an explicit persisted
|
|
15
|
+
* decay state.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_TRACE_STABILITY_MS = 86400000;
|
|
18
|
+
/**
|
|
19
|
+
* Default reinforcement interval for traces that do not yet have an explicit
|
|
20
|
+
* persisted decay state.
|
|
21
|
+
*/
|
|
22
|
+
export declare const DEFAULT_TRACE_REINFORCEMENT_INTERVAL_MS = 86400000;
|
|
23
|
+
/**
|
|
24
|
+
* Persisted decay state stored under `metadata.decay`.
|
|
25
|
+
*/
|
|
26
|
+
export interface PersistedDecayState {
|
|
27
|
+
stability: number;
|
|
28
|
+
accessCount: number;
|
|
29
|
+
reinforcementInterval: number;
|
|
30
|
+
nextReinforcementAt?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse a raw `metadata` JSON string into a plain object.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseTraceMetadata(raw: string | null | undefined): Record<string, unknown>;
|
|
36
|
+
/**
|
|
37
|
+
* Read the persisted decay state from a metadata object, applying defaults
|
|
38
|
+
* when fields are absent.
|
|
39
|
+
*/
|
|
40
|
+
export declare function readPersistedDecayState(metadata: Record<string, unknown>, retrievalCount?: number): PersistedDecayState;
|
|
41
|
+
/**
|
|
42
|
+
* Merge a decay state payload into an existing metadata object.
|
|
43
|
+
*/
|
|
44
|
+
export declare function withPersistedDecayState(metadata: Record<string, unknown>, state: PersistedDecayState): Record<string, unknown>;
|
|
45
|
+
/**
|
|
46
|
+
* Build initial metadata for a newly inserted memory trace.
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildInitialTraceMetadata(baseMetadata?: Record<string, unknown>, options?: {
|
|
49
|
+
contentHash?: string;
|
|
50
|
+
entities?: string[];
|
|
51
|
+
scopeId?: string;
|
|
52
|
+
stability?: number;
|
|
53
|
+
accessCount?: number;
|
|
54
|
+
reinforcementInterval?: number;
|
|
55
|
+
nextReinforcementAt?: number;
|
|
56
|
+
}): Record<string, unknown>;
|
|
57
|
+
/**
|
|
58
|
+
* Compute a SHA-256 hex digest for trace content.
|
|
59
|
+
*/
|
|
60
|
+
export declare function sha256Hex(content: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Convert free-form natural language into a conservative FTS5 query.
|
|
63
|
+
*
|
|
64
|
+
* This avoids syntax errors when callers pass punctuation-heavy questions such
|
|
65
|
+
* as "What are my workflow preferences?" into a raw `MATCH` clause.
|
|
66
|
+
*/
|
|
67
|
+
export declare function buildNaturalLanguageFtsQuery(query: string): string;
|
|
68
|
+
//# sourceMappingURL=tracePersistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracePersistence.d.ts","sourceRoot":"","sources":["../../../src/memory/store/tracePersistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;GAGG;AACH,eAAO,MAAM,0BAA0B,WAAa,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,uCAAuC,WAAa,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AA8CD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS1F;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,cAAc,SAAI,GACjB,mBAAmB,CAWrB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,mBAAmB,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAC1C,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBzB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBlE"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Shared helpers for persisting trace metadata in SQLite-first
|
|
3
|
+
* memory paths.
|
|
4
|
+
*
|
|
5
|
+
* The Phase 1 memory facade stores core retrieval counters in dedicated
|
|
6
|
+
* columns, but richer decay state is persisted inside `memory_traces.metadata`
|
|
7
|
+
* to avoid a schema expansion. These helpers keep that JSON contract
|
|
8
|
+
* consistent across the facade, consolidation loop, feedback loop, and
|
|
9
|
+
* agent-facing memory tools.
|
|
10
|
+
*
|
|
11
|
+
* @module memory/store/tracePersistence
|
|
12
|
+
*/
|
|
13
|
+
import crypto from 'node:crypto';
|
|
14
|
+
/**
|
|
15
|
+
* Default stability for traces that do not yet have an explicit persisted
|
|
16
|
+
* decay state.
|
|
17
|
+
*/
|
|
18
|
+
export const DEFAULT_TRACE_STABILITY_MS = 86400000;
|
|
19
|
+
/**
|
|
20
|
+
* Default reinforcement interval for traces that do not yet have an explicit
|
|
21
|
+
* persisted decay state.
|
|
22
|
+
*/
|
|
23
|
+
export const DEFAULT_TRACE_REINFORCEMENT_INTERVAL_MS = 86400000;
|
|
24
|
+
const FTS_STOP_WORDS = new Set([
|
|
25
|
+
'a',
|
|
26
|
+
'an',
|
|
27
|
+
'and',
|
|
28
|
+
'are',
|
|
29
|
+
'as',
|
|
30
|
+
'at',
|
|
31
|
+
'be',
|
|
32
|
+
'by',
|
|
33
|
+
'for',
|
|
34
|
+
'from',
|
|
35
|
+
'how',
|
|
36
|
+
'i',
|
|
37
|
+
'in',
|
|
38
|
+
'is',
|
|
39
|
+
'it',
|
|
40
|
+
'me',
|
|
41
|
+
'my',
|
|
42
|
+
'of',
|
|
43
|
+
'on',
|
|
44
|
+
'or',
|
|
45
|
+
'our',
|
|
46
|
+
'the',
|
|
47
|
+
'to',
|
|
48
|
+
'us',
|
|
49
|
+
'we',
|
|
50
|
+
'what',
|
|
51
|
+
'when',
|
|
52
|
+
'where',
|
|
53
|
+
'who',
|
|
54
|
+
'why',
|
|
55
|
+
'with',
|
|
56
|
+
'you',
|
|
57
|
+
'your',
|
|
58
|
+
]);
|
|
59
|
+
function isRecord(value) {
|
|
60
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
61
|
+
}
|
|
62
|
+
function finiteNumber(value) {
|
|
63
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parse a raw `metadata` JSON string into a plain object.
|
|
67
|
+
*/
|
|
68
|
+
export function parseTraceMetadata(raw) {
|
|
69
|
+
if (!raw)
|
|
70
|
+
return {};
|
|
71
|
+
try {
|
|
72
|
+
const parsed = JSON.parse(raw);
|
|
73
|
+
return isRecord(parsed) ? parsed : {};
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return {};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Read the persisted decay state from a metadata object, applying defaults
|
|
81
|
+
* when fields are absent.
|
|
82
|
+
*/
|
|
83
|
+
export function readPersistedDecayState(metadata, retrievalCount = 0) {
|
|
84
|
+
const decay = isRecord(metadata.decay) ? metadata.decay : {};
|
|
85
|
+
const nextReinforcementAt = finiteNumber(decay.nextReinforcementAt);
|
|
86
|
+
return {
|
|
87
|
+
stability: finiteNumber(decay.stability) ?? DEFAULT_TRACE_STABILITY_MS,
|
|
88
|
+
accessCount: finiteNumber(decay.accessCount) ?? retrievalCount,
|
|
89
|
+
reinforcementInterval: finiteNumber(decay.reinforcementInterval) ?? DEFAULT_TRACE_REINFORCEMENT_INTERVAL_MS,
|
|
90
|
+
...(nextReinforcementAt !== undefined ? { nextReinforcementAt } : {}),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Merge a decay state payload into an existing metadata object.
|
|
95
|
+
*/
|
|
96
|
+
export function withPersistedDecayState(metadata, state) {
|
|
97
|
+
const nextDecay = {
|
|
98
|
+
stability: state.stability,
|
|
99
|
+
accessCount: state.accessCount,
|
|
100
|
+
reinforcementInterval: state.reinforcementInterval,
|
|
101
|
+
};
|
|
102
|
+
if (state.nextReinforcementAt !== undefined) {
|
|
103
|
+
nextDecay.nextReinforcementAt = state.nextReinforcementAt;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
...metadata,
|
|
107
|
+
decay: nextDecay,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Build initial metadata for a newly inserted memory trace.
|
|
112
|
+
*/
|
|
113
|
+
export function buildInitialTraceMetadata(baseMetadata = {}, options) {
|
|
114
|
+
const metadata = { ...baseMetadata };
|
|
115
|
+
if (options?.contentHash !== undefined) {
|
|
116
|
+
metadata.content_hash = options.contentHash;
|
|
117
|
+
}
|
|
118
|
+
if (options?.entities !== undefined) {
|
|
119
|
+
metadata.entities = options.entities;
|
|
120
|
+
}
|
|
121
|
+
if (options?.scopeId !== undefined) {
|
|
122
|
+
metadata.scopeId = options.scopeId;
|
|
123
|
+
}
|
|
124
|
+
return withPersistedDecayState(metadata, {
|
|
125
|
+
stability: options?.stability ?? DEFAULT_TRACE_STABILITY_MS,
|
|
126
|
+
accessCount: options?.accessCount ?? 0,
|
|
127
|
+
reinforcementInterval: options?.reinforcementInterval ?? DEFAULT_TRACE_REINFORCEMENT_INTERVAL_MS,
|
|
128
|
+
...(options?.nextReinforcementAt !== undefined
|
|
129
|
+
? { nextReinforcementAt: options.nextReinforcementAt }
|
|
130
|
+
: {}),
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Compute a SHA-256 hex digest for trace content.
|
|
135
|
+
*/
|
|
136
|
+
export function sha256Hex(content) {
|
|
137
|
+
return crypto.createHash('sha256').update(content, 'utf8').digest('hex');
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Convert free-form natural language into a conservative FTS5 query.
|
|
141
|
+
*
|
|
142
|
+
* This avoids syntax errors when callers pass punctuation-heavy questions such
|
|
143
|
+
* as "What are my workflow preferences?" into a raw `MATCH` clause.
|
|
144
|
+
*/
|
|
145
|
+
export function buildNaturalLanguageFtsQuery(query) {
|
|
146
|
+
const trimmed = query.trim();
|
|
147
|
+
if (!trimmed)
|
|
148
|
+
return '';
|
|
149
|
+
const rawTokens = Array.from(new Set((trimmed.match(/[\p{L}\p{N}_]+/gu) ?? [])
|
|
150
|
+
.map((token) => token.toLowerCase())
|
|
151
|
+
.filter(Boolean)));
|
|
152
|
+
if (rawTokens.length === 0) {
|
|
153
|
+
return '';
|
|
154
|
+
}
|
|
155
|
+
const filteredTokens = rawTokens.filter((token) => token.length > 1 && !FTS_STOP_WORDS.has(token));
|
|
156
|
+
const tokens = filteredTokens.length > 0 ? filteredTokens : rawTokens;
|
|
157
|
+
return tokens.map((token) => `${token}*`).join(' OR ');
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=tracePersistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracePersistence.js","sourceRoot":"","sources":["../../../src/memory/store/tracePersistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryAddTool.d.ts","sourceRoot":"","sources":["../../../src/memory/tools/MemoryAddTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryAddTool.d.ts","sourceRoot":"","sources":["../../../src/memory/tools/MemoryAddTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAc3D;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAc,YAAW,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC;IA2D9D,OAAO,CAAC,QAAQ,CAAC,KAAK;IA1DlC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,mBAAmB;IAE9B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,gBAAgB;IAE7B,oDAAoD;IACpD,QAAQ,CAAC,WAAW,gBAAgB;IAEpC;;;OAGG;IACH,QAAQ,CAAC,WAAW,6GACwF;IAE5G,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,YAAY;IAE7B;;;OAGG;IACH,QAAQ,CAAC,cAAc,QAAQ;IAE/B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAwBpC;IAEF;;OAEG;gBAC0B,KAAK,EAAE,WAAW;IAM/C;;;;;;;;;;;;;;;OAeG;IACG,OAAO,CACX,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;CA0CjD"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module memory/tools/MemoryAddTool
|
|
12
12
|
*/
|
|
13
|
+
import { buildInitialTraceMetadata, sha256Hex } from '../store/tracePersistence.js';
|
|
13
14
|
// ---------------------------------------------------------------------------
|
|
14
15
|
// Counter for unique ID generation within the process lifetime
|
|
15
16
|
// ---------------------------------------------------------------------------
|
|
@@ -112,12 +113,23 @@ export class MemoryAddTool {
|
|
|
112
113
|
const type = args.type ?? 'episodic';
|
|
113
114
|
const scope = args.scope ?? 'user';
|
|
114
115
|
const tags = JSON.stringify(args.tags ?? []);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
const metadata = JSON.stringify(buildInitialTraceMetadata({}, { contentHash: sha256Hex(args.content) }));
|
|
117
|
+
this.brain.db.transaction(() => {
|
|
118
|
+
this.brain.db
|
|
119
|
+
.prepare(`INSERT INTO memory_traces
|
|
120
|
+
(id, type, scope, content, embedding, strength, created_at,
|
|
121
|
+
last_accessed, retrieval_count, tags, emotions, metadata, deleted)
|
|
122
|
+
VALUES (?, ?, ?, ?, NULL, 1.0, ?, NULL, 0, ?, '{}', ?, 0)`)
|
|
123
|
+
.run(traceId, type, scope, args.content, now, tags, metadata);
|
|
124
|
+
this.brain.db
|
|
125
|
+
.prepare(`INSERT INTO memory_traces_fts (rowid, content, tags)
|
|
126
|
+
VALUES (
|
|
127
|
+
(SELECT rowid FROM memory_traces WHERE id = ?),
|
|
128
|
+
?,
|
|
129
|
+
?
|
|
130
|
+
)`)
|
|
131
|
+
.run(traceId, args.content, tags);
|
|
132
|
+
})();
|
|
121
133
|
return { success: true, output: { traceId } };
|
|
122
134
|
}
|
|
123
135
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryAddTool.js","sourceRoot":"","sources":["../../../src/memory/tools/MemoryAddTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"MemoryAddTool.js","sourceRoot":"","sources":["../../../src/memory/tools/MemoryAddTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryMergeTool.d.ts","sourceRoot":"","sources":["../../../src/memory/tools/MemoryMergeTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryMergeTool.d.ts","sourceRoot":"","sources":["../../../src/memory/tools/MemoryMergeTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA4B3D;;;;;;GAMG;AACH,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,YAAW,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IA4CpE,OAAO,CAAC,QAAQ,CAAC,KAAK;IA3ClC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,qBAAqB;IAEhC,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,kBAAkB;IAE/B,mCAAmC;IACnC,QAAQ,CAAC,WAAW,oBAAoB;IAExC,8BAA8B;IAC9B,QAAQ,CAAC,WAAW,SAGsE;IAE1F,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,YAAY;IAE7B,wCAAwC;IACxC,QAAQ,CAAC,cAAc,QAAQ;IAE/B,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAgBpC;IAEF;;OAEG;gBAC0B,KAAK,EAAE,WAAW;IAM/C;;;;;;;;;;;;;;;OAeG;IACG,OAAO,CACX,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;CAsInD"}
|