@sashabogi/foundation 0.1.13 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +632 -238
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +336 -23
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +4 -6
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/fireworks.d.ts +5 -0
- package/dist/providers/fireworks.d.ts.map +1 -1
- package/dist/providers/fireworks.js +18 -0
- package/dist/providers/fireworks.js.map +1 -1
- package/dist/providers/kimi-code.d.ts +5 -0
- package/dist/providers/kimi-code.d.ts.map +1 -1
- package/dist/providers/kimi-code.js +18 -0
- package/dist/providers/kimi-code.js.map +1 -1
- package/dist/providers/zai.d.ts +5 -0
- package/dist/providers/zai.d.ts.map +1 -1
- package/dist/providers/zai.js +18 -0
- package/dist/providers/zai.js.map +1 -1
- package/dist/tools/gaia/index.d.ts +29 -15
- package/dist/tools/gaia/index.d.ts.map +1 -1
- package/dist/tools/gaia/index.js +1206 -274
- package/dist/tools/gaia/index.js.map +1 -1
- package/dist/tools/gaia/storage.d.ts +72 -0
- package/dist/tools/gaia/storage.d.ts.map +1 -0
- package/dist/tools/gaia/storage.js +344 -0
- package/dist/tools/gaia/storage.js.map +1 -0
- package/dist/tools/gaia/test-storage-manual.d.ts +6 -0
- package/dist/tools/gaia/test-storage-manual.d.ts.map +1 -0
- package/dist/tools/gaia/test-storage-manual.js +120 -0
- package/dist/tools/gaia/test-storage-manual.js.map +1 -0
- package/dist/tools/memoria/index.d.ts +25 -0
- package/dist/tools/memoria/index.d.ts.map +1 -0
- package/dist/tools/memoria/index.js +269 -0
- package/dist/tools/memoria/index.js.map +1 -0
- package/dist/tools/memoria/storage.d.ts +72 -0
- package/dist/tools/memoria/storage.d.ts.map +1 -0
- package/dist/tools/memoria/storage.js +344 -0
- package/dist/tools/memoria/storage.js.map +1 -0
- package/dist/tools/memoria/storage.test.d.ts +7 -0
- package/dist/tools/memoria/storage.test.d.ts.map +1 -0
- package/dist/tools/memoria/storage.test.js +350 -0
- package/dist/tools/memoria/storage.test.js.map +1 -0
- package/dist/tools/memoria/test-storage-manual.d.ts +6 -0
- package/dist/tools/memoria/test-storage-manual.d.ts.map +1 -0
- package/dist/tools/memoria/test-storage-manual.js +120 -0
- package/dist/tools/memoria/test-storage-manual.js.map +1 -0
- package/dist/types/index.d.ts +38 -0
- package/dist/types/index.d.ts.map +1 -1
- package/docs/MIGRATION-GUIDE.md +771 -0
- package/package.json +2 -2
- package/packages/ui/dist/assets/index-oiJTDMJ1.css +1 -0
- package/packages/ui/dist/assets/index-oivszLTx.js +352 -0
- package/packages/ui/dist/index.html +2 -2
- package/docs/REFACTORING-PLAN.md +0 -374
- package/docs/TESTING-WITH-NATIVE-SWARM.md +0 -266
- package/packages/ui/dist/assets/index-B7zz_B5Q.js +0 -312
- package/packages/ui/dist/assets/index-fYt-vaxP.css +0 -1
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memoria Storage Layer
|
|
3
|
+
*
|
|
4
|
+
* SQLite + FTS5 storage for Foundation's advanced memory system.
|
|
5
|
+
* Provides 5-tier memory hierarchy with full-text search and BM25 ranking.
|
|
6
|
+
*/
|
|
7
|
+
import Database from 'better-sqlite3';
|
|
8
|
+
import { existsSync, mkdirSync } from 'fs';
|
|
9
|
+
import { dirname } from 'path';
|
|
10
|
+
import { nanoid } from 'nanoid';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// MemoriaStorage Class
|
|
13
|
+
// =============================================================================
|
|
14
|
+
export class MemoriaStorage {
|
|
15
|
+
db;
|
|
16
|
+
dbPath;
|
|
17
|
+
constructor(dbPath) {
|
|
18
|
+
this.dbPath = dbPath;
|
|
19
|
+
// Ensure directory exists
|
|
20
|
+
const dir = dirname(dbPath);
|
|
21
|
+
if (!existsSync(dir)) {
|
|
22
|
+
mkdirSync(dir, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
// Open database
|
|
25
|
+
this.db = new Database(dbPath);
|
|
26
|
+
// Configure for performance
|
|
27
|
+
this.db.pragma('journal_mode = WAL');
|
|
28
|
+
this.db.pragma('synchronous = NORMAL');
|
|
29
|
+
this.db.pragma('cache_size = -64000'); // 64MB cache
|
|
30
|
+
// Initialize schema
|
|
31
|
+
this.initSchema();
|
|
32
|
+
}
|
|
33
|
+
initSchema() {
|
|
34
|
+
// Main memories table
|
|
35
|
+
this.db.exec(`
|
|
36
|
+
CREATE TABLE IF NOT EXISTS memories (
|
|
37
|
+
id TEXT PRIMARY KEY,
|
|
38
|
+
tier TEXT NOT NULL CHECK(tier IN ('session', 'project', 'global', 'note', 'observation')),
|
|
39
|
+
content TEXT NOT NULL,
|
|
40
|
+
tags TEXT NOT NULL,
|
|
41
|
+
related_files TEXT NOT NULL,
|
|
42
|
+
session_id TEXT,
|
|
43
|
+
project_path TEXT,
|
|
44
|
+
created_at INTEGER NOT NULL,
|
|
45
|
+
accessed_at INTEGER NOT NULL,
|
|
46
|
+
access_count INTEGER NOT NULL DEFAULT 0,
|
|
47
|
+
metadata TEXT
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
CREATE INDEX IF NOT EXISTS idx_tier ON memories(tier);
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_session ON memories(session_id) WHERE session_id IS NOT NULL;
|
|
52
|
+
CREATE INDEX IF NOT EXISTS idx_project ON memories(project_path) WHERE project_path IS NOT NULL;
|
|
53
|
+
CREATE INDEX IF NOT EXISTS idx_created ON memories(created_at DESC);
|
|
54
|
+
CREATE INDEX IF NOT EXISTS idx_accessed ON memories(accessed_at DESC);
|
|
55
|
+
`);
|
|
56
|
+
// FTS5 virtual table
|
|
57
|
+
this.db.exec(`
|
|
58
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
|
|
59
|
+
content,
|
|
60
|
+
tags,
|
|
61
|
+
related_files,
|
|
62
|
+
content='memories',
|
|
63
|
+
content_rowid='rowid',
|
|
64
|
+
tokenize='porter unicode61'
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
-- Triggers to keep FTS in sync
|
|
68
|
+
CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
|
|
69
|
+
INSERT INTO memories_fts(rowid, content, tags, related_files)
|
|
70
|
+
VALUES (new.rowid, new.content, new.tags, new.related_files);
|
|
71
|
+
END;
|
|
72
|
+
|
|
73
|
+
CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
|
|
74
|
+
DELETE FROM memories_fts WHERE rowid = old.rowid;
|
|
75
|
+
END;
|
|
76
|
+
|
|
77
|
+
CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
|
|
78
|
+
UPDATE memories_fts SET content = new.content, tags = new.tags, related_files = new.related_files
|
|
79
|
+
WHERE rowid = old.rowid;
|
|
80
|
+
END;
|
|
81
|
+
`);
|
|
82
|
+
// Memory links table
|
|
83
|
+
this.db.exec(`
|
|
84
|
+
CREATE TABLE IF NOT EXISTS memory_links (
|
|
85
|
+
from_memory_id TEXT NOT NULL,
|
|
86
|
+
to_memory_id TEXT NOT NULL,
|
|
87
|
+
link_type TEXT NOT NULL CHECK(link_type IN ('depends_on', 'extends', 'reverts', 'related', 'contradicts')),
|
|
88
|
+
created_at INTEGER NOT NULL,
|
|
89
|
+
PRIMARY KEY (from_memory_id, to_memory_id, link_type),
|
|
90
|
+
FOREIGN KEY (from_memory_id) REFERENCES memories(id) ON DELETE CASCADE,
|
|
91
|
+
FOREIGN KEY (to_memory_id) REFERENCES memories(id) ON DELETE CASCADE
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
CREATE INDEX IF NOT EXISTS idx_link_from ON memory_links(from_memory_id);
|
|
95
|
+
CREATE INDEX IF NOT EXISTS idx_link_to ON memory_links(to_memory_id);
|
|
96
|
+
`);
|
|
97
|
+
// Metadata table
|
|
98
|
+
this.db.exec(`
|
|
99
|
+
CREATE TABLE IF NOT EXISTS metadata (
|
|
100
|
+
key TEXT PRIMARY KEY,
|
|
101
|
+
value TEXT NOT NULL
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
INSERT OR IGNORE INTO metadata (key, value) VALUES ('schema_version', '1');
|
|
105
|
+
`);
|
|
106
|
+
}
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
// Core Memory Operations
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
saveMemory(input) {
|
|
111
|
+
const now = Date.now();
|
|
112
|
+
const memory = {
|
|
113
|
+
id: `mem_${nanoid()}`,
|
|
114
|
+
created_at: now,
|
|
115
|
+
accessed_at: now,
|
|
116
|
+
access_count: 0,
|
|
117
|
+
...input,
|
|
118
|
+
};
|
|
119
|
+
const stmt = this.db.prepare(`
|
|
120
|
+
INSERT INTO memories (id, tier, content, tags, related_files, session_id, project_path, created_at, accessed_at, access_count, metadata)
|
|
121
|
+
VALUES (@id, @tier, @content, @tags, @related_files, @session_id, @project_path, @created_at, @accessed_at, @access_count, @metadata)
|
|
122
|
+
`);
|
|
123
|
+
stmt.run({
|
|
124
|
+
id: memory.id,
|
|
125
|
+
tier: memory.tier,
|
|
126
|
+
content: memory.content,
|
|
127
|
+
tags: JSON.stringify(memory.tags),
|
|
128
|
+
related_files: JSON.stringify(memory.related_files),
|
|
129
|
+
session_id: memory.session_id ?? null,
|
|
130
|
+
project_path: memory.project_path ?? null,
|
|
131
|
+
created_at: memory.created_at,
|
|
132
|
+
accessed_at: memory.accessed_at,
|
|
133
|
+
access_count: memory.access_count,
|
|
134
|
+
metadata: memory.metadata ? JSON.stringify(memory.metadata) : null,
|
|
135
|
+
});
|
|
136
|
+
return memory;
|
|
137
|
+
}
|
|
138
|
+
getMemory(id) {
|
|
139
|
+
const stmt = this.db.prepare(`
|
|
140
|
+
SELECT * FROM memories WHERE id = ?
|
|
141
|
+
`);
|
|
142
|
+
const row = stmt.get(id);
|
|
143
|
+
if (!row)
|
|
144
|
+
return null;
|
|
145
|
+
// Update access tracking
|
|
146
|
+
const updateStmt = this.db.prepare(`
|
|
147
|
+
UPDATE memories
|
|
148
|
+
SET accessed_at = @now, access_count = access_count + 1
|
|
149
|
+
WHERE id = @id
|
|
150
|
+
`);
|
|
151
|
+
updateStmt.run({ id, now: Date.now() });
|
|
152
|
+
return this.rowToMemory(row, Date.now(), row.access_count + 1);
|
|
153
|
+
}
|
|
154
|
+
deleteMemory(id) {
|
|
155
|
+
// Count links that will be deleted
|
|
156
|
+
const countStmt = this.db.prepare(`
|
|
157
|
+
SELECT COUNT(*) as count FROM memory_links
|
|
158
|
+
WHERE from_memory_id = ? OR to_memory_id = ?
|
|
159
|
+
`);
|
|
160
|
+
const { count } = countStmt.get(id, id);
|
|
161
|
+
// Delete memory (CASCADE will handle links)
|
|
162
|
+
const deleteStmt = this.db.prepare(`DELETE FROM memories WHERE id = ?`);
|
|
163
|
+
const result = deleteStmt.run(id);
|
|
164
|
+
return {
|
|
165
|
+
success: result.changes > 0,
|
|
166
|
+
deleted_links: count,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
// Search with FTS5 + Composite Scoring
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
search(options) {
|
|
173
|
+
const { query, tiers, limit = 20, context } = options;
|
|
174
|
+
// Build FTS5 query
|
|
175
|
+
let sql = `
|
|
176
|
+
SELECT
|
|
177
|
+
m.*,
|
|
178
|
+
fts.rank as fts_rank
|
|
179
|
+
FROM memories_fts fts
|
|
180
|
+
JOIN memories m ON m.rowid = fts.rowid
|
|
181
|
+
WHERE memories_fts MATCH ?
|
|
182
|
+
`;
|
|
183
|
+
const params = [query];
|
|
184
|
+
// Filter by tiers
|
|
185
|
+
if (tiers && tiers.length > 0) {
|
|
186
|
+
sql += ` AND m.tier IN (${tiers.map(() => '?').join(',')})`;
|
|
187
|
+
params.push(...tiers);
|
|
188
|
+
}
|
|
189
|
+
sql += ` ORDER BY fts.rank LIMIT ?`;
|
|
190
|
+
params.push(limit * 2); // Get more candidates for rescoring
|
|
191
|
+
const stmt = this.db.prepare(sql);
|
|
192
|
+
const rows = stmt.all(...params);
|
|
193
|
+
// Calculate composite scores
|
|
194
|
+
const now = Date.now();
|
|
195
|
+
const results = rows.map(row => {
|
|
196
|
+
const memory = this.rowToMemory(row);
|
|
197
|
+
// BM25 score from FTS5 (normalize to 0-1)
|
|
198
|
+
const relevance_score = Math.min(1.0, Math.abs(row.fts_rank) / 10);
|
|
199
|
+
// Recency score (exponential decay, 30-day half-life)
|
|
200
|
+
const ageMs = now - memory.created_at;
|
|
201
|
+
const ageDays = ageMs / (1000 * 60 * 60 * 24);
|
|
202
|
+
const recency_score = Math.exp(-ageDays / 30);
|
|
203
|
+
// Tier priority score
|
|
204
|
+
const tier_scores = {
|
|
205
|
+
session: 1.0,
|
|
206
|
+
project: 0.8,
|
|
207
|
+
global: 0.6,
|
|
208
|
+
note: 0.4,
|
|
209
|
+
observation: 0.2,
|
|
210
|
+
};
|
|
211
|
+
const tier_score = tier_scores[memory.tier];
|
|
212
|
+
// File proximity score
|
|
213
|
+
let proximity_score = 0;
|
|
214
|
+
if (context?.current_file && memory.related_files.length > 0) {
|
|
215
|
+
proximity_score = memory.related_files.includes(context.current_file) ? 1.0 : 0;
|
|
216
|
+
}
|
|
217
|
+
// Access frequency score (log scale)
|
|
218
|
+
const max_access = 100; // Assumed max for normalization
|
|
219
|
+
const frequency_score = memory.access_count > 0
|
|
220
|
+
? Math.log(memory.access_count + 1) / Math.log(max_access + 1)
|
|
221
|
+
: 0;
|
|
222
|
+
// Composite score
|
|
223
|
+
const score = relevance_score * 0.40 +
|
|
224
|
+
recency_score * 0.25 +
|
|
225
|
+
tier_score * 0.15 +
|
|
226
|
+
proximity_score * 0.10 +
|
|
227
|
+
frequency_score * 0.10;
|
|
228
|
+
return {
|
|
229
|
+
memory,
|
|
230
|
+
score,
|
|
231
|
+
relevance_score,
|
|
232
|
+
recency_score,
|
|
233
|
+
tier_score,
|
|
234
|
+
proximity_score,
|
|
235
|
+
frequency_score,
|
|
236
|
+
};
|
|
237
|
+
});
|
|
238
|
+
// Sort by composite score and limit
|
|
239
|
+
results.sort((a, b) => b.score - a.score);
|
|
240
|
+
return results.slice(0, limit);
|
|
241
|
+
}
|
|
242
|
+
// ---------------------------------------------------------------------------
|
|
243
|
+
// Cross-Memory Links
|
|
244
|
+
// ---------------------------------------------------------------------------
|
|
245
|
+
createLink(link) {
|
|
246
|
+
const fullLink = {
|
|
247
|
+
...link,
|
|
248
|
+
created_at: Date.now(),
|
|
249
|
+
};
|
|
250
|
+
const stmt = this.db.prepare(`
|
|
251
|
+
INSERT INTO memory_links (from_memory_id, to_memory_id, link_type, created_at)
|
|
252
|
+
VALUES (@from_memory_id, @to_memory_id, @link_type, @created_at)
|
|
253
|
+
ON CONFLICT DO NOTHING
|
|
254
|
+
`);
|
|
255
|
+
stmt.run(fullLink);
|
|
256
|
+
return fullLink;
|
|
257
|
+
}
|
|
258
|
+
getLinks(memoryId) {
|
|
259
|
+
const stmt = this.db.prepare(`
|
|
260
|
+
SELECT m.*, ml.link_type
|
|
261
|
+
FROM memory_links ml
|
|
262
|
+
JOIN memories m ON m.id = ml.to_memory_id
|
|
263
|
+
WHERE ml.from_memory_id = ?
|
|
264
|
+
`);
|
|
265
|
+
const rows = stmt.all(memoryId);
|
|
266
|
+
const links = {
|
|
267
|
+
depends_on: [],
|
|
268
|
+
extends: [],
|
|
269
|
+
reverts: [],
|
|
270
|
+
related: [],
|
|
271
|
+
contradicts: [],
|
|
272
|
+
};
|
|
273
|
+
for (const row of rows) {
|
|
274
|
+
const memory = this.rowToMemory(row);
|
|
275
|
+
links[row.link_type].push(memory);
|
|
276
|
+
}
|
|
277
|
+
return links;
|
|
278
|
+
}
|
|
279
|
+
// ---------------------------------------------------------------------------
|
|
280
|
+
// Statistics
|
|
281
|
+
// ---------------------------------------------------------------------------
|
|
282
|
+
getStats() {
|
|
283
|
+
// Total memories
|
|
284
|
+
const totalStmt = this.db.prepare(`SELECT COUNT(*) as count FROM memories`);
|
|
285
|
+
const { count: total_memories } = totalStmt.get();
|
|
286
|
+
// By tier
|
|
287
|
+
const tierStmt = this.db.prepare(`
|
|
288
|
+
SELECT tier, COUNT(*) as count FROM memories GROUP BY tier
|
|
289
|
+
`);
|
|
290
|
+
const tierRows = tierStmt.all();
|
|
291
|
+
const by_tier = {
|
|
292
|
+
session: 0,
|
|
293
|
+
project: 0,
|
|
294
|
+
global: 0,
|
|
295
|
+
note: 0,
|
|
296
|
+
observation: 0,
|
|
297
|
+
};
|
|
298
|
+
for (const row of tierRows) {
|
|
299
|
+
by_tier[row.tier] = row.count;
|
|
300
|
+
}
|
|
301
|
+
// Total links
|
|
302
|
+
const linksStmt = this.db.prepare(`SELECT COUNT(*) as count FROM memory_links`);
|
|
303
|
+
const { count: total_links } = linksStmt.get();
|
|
304
|
+
// Database size
|
|
305
|
+
const sizeStmt = this.db.prepare(`SELECT page_count * page_size as size FROM pragma_page_count(), pragma_page_size()`);
|
|
306
|
+
const { size } = sizeStmt.get();
|
|
307
|
+
const total_size_mb = size / (1024 * 1024);
|
|
308
|
+
// Oldest/newest memory
|
|
309
|
+
const rangeStmt = this.db.prepare(`
|
|
310
|
+
SELECT MIN(created_at) as oldest, MAX(created_at) as newest FROM memories
|
|
311
|
+
`);
|
|
312
|
+
const { oldest, newest } = rangeStmt.get();
|
|
313
|
+
return {
|
|
314
|
+
total_memories,
|
|
315
|
+
by_tier,
|
|
316
|
+
total_links,
|
|
317
|
+
total_size_mb,
|
|
318
|
+
oldest_memory: oldest ?? 0,
|
|
319
|
+
newest_memory: newest ?? 0,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
// ---------------------------------------------------------------------------
|
|
323
|
+
// Utility
|
|
324
|
+
// ---------------------------------------------------------------------------
|
|
325
|
+
rowToMemory(row, accessed_at, access_count) {
|
|
326
|
+
return {
|
|
327
|
+
id: row.id,
|
|
328
|
+
tier: row.tier,
|
|
329
|
+
content: row.content,
|
|
330
|
+
tags: JSON.parse(row.tags),
|
|
331
|
+
related_files: JSON.parse(row.related_files),
|
|
332
|
+
session_id: row.session_id,
|
|
333
|
+
project_path: row.project_path,
|
|
334
|
+
created_at: row.created_at,
|
|
335
|
+
accessed_at: accessed_at ?? row.accessed_at,
|
|
336
|
+
access_count: access_count ?? row.access_count,
|
|
337
|
+
metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
close() {
|
|
341
|
+
this.db.close();
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/tools/memoria/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.test.d.ts","sourceRoot":"","sources":["../../../src/tools/memoria/storage.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|