@kybernesis/brain-storage-sqlite 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/entity-graph.d.ts +12 -0
- package/dist/entity-graph.d.ts.map +1 -0
- package/dist/entity-graph.js +620 -0
- package/dist/entity-graph.js.map +1 -0
- package/dist/fact-store.d.ts +8 -0
- package/dist/fact-store.d.ts.map +1 -0
- package/dist/fact-store.js +222 -0
- package/dist/fact-store.js.map +1 -0
- package/dist/fts-sanitizer.d.ts +30 -0
- package/dist/fts-sanitizer.d.ts.map +1 -0
- package/dist/fts-sanitizer.js +59 -0
- package/dist/fts-sanitizer.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts +16 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +82 -0
- package/dist/provider.js.map +1 -0
- package/dist/sleep-store.d.ts +12 -0
- package/dist/sleep-store.d.ts.map +1 -0
- package/dist/sleep-store.js +35 -0
- package/dist/sleep-store.js.map +1 -0
- package/dist/timeline.d.ts +11 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +351 -0
- package/dist/timeline.js.map +1 -0
- package/package.json +6 -3
package/dist/timeline.js
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TimelineStore (SQLite impl). SQL moved verbatim from brain-core/timeline.ts
|
|
3
|
+
* during the storage-seam migration (G2) — behaviour held constant.
|
|
4
|
+
* ensureSchema creates timeline_events + timeline_fts + the facts TABLE (the
|
|
5
|
+
* facts FTS index is owned by FactStore.ensureFactsTable).
|
|
6
|
+
*/
|
|
7
|
+
import { getDb } from './index.js';
|
|
8
|
+
import { sanitizeFtsQuery } from './fts-sanitizer.js';
|
|
9
|
+
function rowToEvent(row) {
|
|
10
|
+
return {
|
|
11
|
+
id: row.id,
|
|
12
|
+
type: row.type,
|
|
13
|
+
timestamp: row.timestamp,
|
|
14
|
+
end_timestamp: row.end_timestamp ?? undefined,
|
|
15
|
+
title: row.title,
|
|
16
|
+
summary: row.summary ?? undefined,
|
|
17
|
+
source_path: row.source_path,
|
|
18
|
+
entities: JSON.parse(row.entities_json || '[]'),
|
|
19
|
+
topics: JSON.parse(row.topics_json || '[]'),
|
|
20
|
+
priority: row.priority ?? 0.5,
|
|
21
|
+
decay_score: row.decay_score ?? 0.0,
|
|
22
|
+
tier: (row.tier ?? 'warm'),
|
|
23
|
+
tags: JSON.parse(row.tags_json || '[]'),
|
|
24
|
+
last_enriched: row.last_enriched ?? undefined,
|
|
25
|
+
access_count: row.access_count ?? 0,
|
|
26
|
+
is_pinned: (row.is_pinned ?? 0) === 1,
|
|
27
|
+
last_accessed: row.last_accessed ?? undefined,
|
|
28
|
+
project_id: row.project_id ?? undefined,
|
|
29
|
+
classification: row.classification ?? undefined,
|
|
30
|
+
connection_id: row.connection_id ?? undefined,
|
|
31
|
+
source_did: row.source_did ?? undefined,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const initialized = new Set();
|
|
35
|
+
/** Test/utility hook — clears the per-slug schema-init cache. */
|
|
36
|
+
export function resetTimelineSchemaCache(slug) {
|
|
37
|
+
if (slug)
|
|
38
|
+
initialized.delete(slug);
|
|
39
|
+
else
|
|
40
|
+
initialized.clear();
|
|
41
|
+
}
|
|
42
|
+
function ensureSchema(t) {
|
|
43
|
+
if (initialized.has(t.slug))
|
|
44
|
+
return;
|
|
45
|
+
const db = getDb(t, 'timeline');
|
|
46
|
+
db.exec(`
|
|
47
|
+
CREATE TABLE IF NOT EXISTS timeline_events (
|
|
48
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
49
|
+
type TEXT NOT NULL CHECK(type IN ('conversation', 'idea', 'file', 'transcript', 'note', 'intake')),
|
|
50
|
+
timestamp TEXT NOT NULL,
|
|
51
|
+
end_timestamp TEXT,
|
|
52
|
+
title TEXT NOT NULL,
|
|
53
|
+
summary TEXT,
|
|
54
|
+
source_path TEXT NOT NULL UNIQUE,
|
|
55
|
+
entities_json TEXT DEFAULT '[]',
|
|
56
|
+
topics_json TEXT DEFAULT '[]',
|
|
57
|
+
priority REAL DEFAULT 0.5,
|
|
58
|
+
decay_score REAL DEFAULT 0.0,
|
|
59
|
+
tier TEXT DEFAULT 'warm',
|
|
60
|
+
tags_json TEXT DEFAULT '[]',
|
|
61
|
+
last_enriched TEXT,
|
|
62
|
+
access_count INTEGER DEFAULT 0,
|
|
63
|
+
is_pinned INTEGER DEFAULT 0,
|
|
64
|
+
last_accessed TEXT,
|
|
65
|
+
project_id TEXT,
|
|
66
|
+
classification TEXT,
|
|
67
|
+
connection_id TEXT,
|
|
68
|
+
source_did TEXT
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_timestamp ON timeline_events(timestamp);
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_type ON timeline_events(type);
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_source ON timeline_events(source_path);
|
|
74
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_tier ON timeline_events(tier);
|
|
75
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_priority ON timeline_events(priority DESC);
|
|
76
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_last_enriched ON timeline_events(last_enriched);
|
|
77
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_project ON timeline_events(project_id);
|
|
78
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_classification ON timeline_events(classification);
|
|
79
|
+
CREATE INDEX IF NOT EXISTS idx_timeline_connection ON timeline_events(connection_id);
|
|
80
|
+
|
|
81
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS timeline_fts USING fts5(
|
|
82
|
+
title, summary, entities, topics, content='',
|
|
83
|
+
tokenize = 'unicode61 remove_diacritics 2'
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
CREATE TRIGGER IF NOT EXISTS timeline_ai AFTER INSERT ON timeline_events BEGIN
|
|
87
|
+
INSERT INTO timeline_fts(rowid, title, summary, entities, topics)
|
|
88
|
+
VALUES (new.id, new.title, new.summary, new.entities_json, new.topics_json);
|
|
89
|
+
END;
|
|
90
|
+
|
|
91
|
+
CREATE TRIGGER IF NOT EXISTS timeline_ad AFTER DELETE ON timeline_events BEGIN
|
|
92
|
+
INSERT INTO timeline_fts(timeline_fts, rowid, title, summary, entities, topics)
|
|
93
|
+
VALUES ('delete', old.id, old.title, old.summary, old.entities_json, old.topics_json);
|
|
94
|
+
END;
|
|
95
|
+
|
|
96
|
+
CREATE TRIGGER IF NOT EXISTS timeline_au AFTER UPDATE ON timeline_events BEGIN
|
|
97
|
+
INSERT INTO timeline_fts(timeline_fts, rowid, title, summary, entities, topics)
|
|
98
|
+
VALUES ('delete', old.id, old.title, old.summary, old.entities_json, old.topics_json);
|
|
99
|
+
INSERT INTO timeline_fts(rowid, title, summary, entities, topics)
|
|
100
|
+
VALUES (new.id, new.title, new.summary, new.entities_json, new.topics_json);
|
|
101
|
+
END;
|
|
102
|
+
|
|
103
|
+
CREATE TABLE IF NOT EXISTS facts (
|
|
104
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
105
|
+
content TEXT NOT NULL,
|
|
106
|
+
source_path TEXT NOT NULL UNIQUE,
|
|
107
|
+
source_conversation_id TEXT NOT NULL,
|
|
108
|
+
entities_json TEXT DEFAULT '[]',
|
|
109
|
+
timestamp TEXT NOT NULL,
|
|
110
|
+
confidence REAL DEFAULT 0.7,
|
|
111
|
+
category TEXT DEFAULT 'general',
|
|
112
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
113
|
+
is_latest INTEGER DEFAULT 1,
|
|
114
|
+
superseded_by INTEGER,
|
|
115
|
+
expires_at TEXT,
|
|
116
|
+
updated_at TEXT,
|
|
117
|
+
access_count INTEGER DEFAULT 0,
|
|
118
|
+
source_type TEXT DEFAULT 'chat',
|
|
119
|
+
is_retracted INTEGER DEFAULT 0,
|
|
120
|
+
retracted_by TEXT,
|
|
121
|
+
last_reinforced_at TEXT,
|
|
122
|
+
project_id TEXT,
|
|
123
|
+
tags_json TEXT DEFAULT '[]',
|
|
124
|
+
classification TEXT,
|
|
125
|
+
connection_id TEXT,
|
|
126
|
+
source_did TEXT
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
CREATE INDEX IF NOT EXISTS idx_facts_source_conv ON facts(source_conversation_id);
|
|
130
|
+
CREATE INDEX IF NOT EXISTS idx_facts_category ON facts(category);
|
|
131
|
+
CREATE INDEX IF NOT EXISTS idx_facts_timestamp ON facts(timestamp);
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_facts_source_path ON facts(source_path);
|
|
133
|
+
CREATE INDEX IF NOT EXISTS idx_facts_is_latest ON facts(is_latest);
|
|
134
|
+
CREATE INDEX IF NOT EXISTS idx_facts_expires_at ON facts(expires_at);
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_facts_project ON facts(project_id);
|
|
136
|
+
CREATE INDEX IF NOT EXISTS idx_facts_classification ON facts(classification);
|
|
137
|
+
CREATE INDEX IF NOT EXISTS idx_facts_connection ON facts(connection_id);
|
|
138
|
+
`);
|
|
139
|
+
initialized.add(t.slug);
|
|
140
|
+
}
|
|
141
|
+
export const sqliteTimelineStore = {
|
|
142
|
+
async ensureSchema(t) {
|
|
143
|
+
ensureSchema(t);
|
|
144
|
+
},
|
|
145
|
+
async addEvent(t, event) {
|
|
146
|
+
ensureSchema(t);
|
|
147
|
+
const db = getDb(t, 'timeline');
|
|
148
|
+
const result = db.prepare(`
|
|
149
|
+
INSERT INTO timeline_events
|
|
150
|
+
(type, timestamp, end_timestamp, title, summary, source_path,
|
|
151
|
+
entities_json, topics_json,
|
|
152
|
+
project_id, tags_json, classification, connection_id, source_did)
|
|
153
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
154
|
+
ON CONFLICT(source_path) DO UPDATE SET
|
|
155
|
+
type = excluded.type,
|
|
156
|
+
timestamp = excluded.timestamp,
|
|
157
|
+
end_timestamp = excluded.end_timestamp,
|
|
158
|
+
title = excluded.title,
|
|
159
|
+
summary = excluded.summary,
|
|
160
|
+
entities_json = excluded.entities_json,
|
|
161
|
+
topics_json = excluded.topics_json,
|
|
162
|
+
project_id = COALESCE(excluded.project_id, timeline_events.project_id),
|
|
163
|
+
tags_json = COALESCE(excluded.tags_json, timeline_events.tags_json),
|
|
164
|
+
classification = COALESCE(excluded.classification, timeline_events.classification),
|
|
165
|
+
connection_id = COALESCE(excluded.connection_id, timeline_events.connection_id),
|
|
166
|
+
source_did = COALESCE(excluded.source_did, timeline_events.source_did)
|
|
167
|
+
`).run(event.type, event.timestamp, event.end_timestamp ?? null, event.title, event.summary ?? '', event.source_path, JSON.stringify(event.entities), JSON.stringify(event.topics), event.project_id ?? null, event.tags ? JSON.stringify(event.tags) : null, event.classification ?? null, event.connection_id ?? null, event.source_did ?? null);
|
|
168
|
+
return result.lastInsertRowid;
|
|
169
|
+
},
|
|
170
|
+
async removeEventByPath(t, sourcePath) {
|
|
171
|
+
ensureSchema(t);
|
|
172
|
+
const db = getDb(t, 'timeline');
|
|
173
|
+
const result = db.prepare('DELETE FROM timeline_events WHERE source_path = ?').run(sourcePath);
|
|
174
|
+
return result.changes > 0;
|
|
175
|
+
},
|
|
176
|
+
async updateEvent(t, id, updates) {
|
|
177
|
+
ensureSchema(t);
|
|
178
|
+
const db = getDb(t, 'timeline');
|
|
179
|
+
const parts = [];
|
|
180
|
+
const params = [];
|
|
181
|
+
if (updates.title !== undefined) {
|
|
182
|
+
parts.push('title = ?');
|
|
183
|
+
params.push(updates.title);
|
|
184
|
+
}
|
|
185
|
+
if (updates.summary !== undefined) {
|
|
186
|
+
parts.push('summary = ?');
|
|
187
|
+
params.push(updates.summary);
|
|
188
|
+
}
|
|
189
|
+
if (updates.timestamp !== undefined) {
|
|
190
|
+
parts.push('timestamp = ?');
|
|
191
|
+
params.push(updates.timestamp);
|
|
192
|
+
}
|
|
193
|
+
if (updates.end_timestamp !== undefined) {
|
|
194
|
+
parts.push('end_timestamp = ?');
|
|
195
|
+
params.push(updates.end_timestamp);
|
|
196
|
+
}
|
|
197
|
+
if (updates.entities !== undefined) {
|
|
198
|
+
parts.push('entities_json = ?');
|
|
199
|
+
params.push(JSON.stringify(updates.entities));
|
|
200
|
+
}
|
|
201
|
+
if (updates.topics !== undefined) {
|
|
202
|
+
parts.push('topics_json = ?');
|
|
203
|
+
params.push(JSON.stringify(updates.topics));
|
|
204
|
+
}
|
|
205
|
+
if (updates.tags !== undefined) {
|
|
206
|
+
parts.push('tags_json = ?');
|
|
207
|
+
params.push(JSON.stringify(updates.tags));
|
|
208
|
+
}
|
|
209
|
+
if (updates.priority !== undefined) {
|
|
210
|
+
parts.push('priority = ?');
|
|
211
|
+
params.push(updates.priority);
|
|
212
|
+
}
|
|
213
|
+
if (updates.decay_score !== undefined) {
|
|
214
|
+
parts.push('decay_score = ?');
|
|
215
|
+
params.push(updates.decay_score);
|
|
216
|
+
}
|
|
217
|
+
if (updates.tier !== undefined) {
|
|
218
|
+
parts.push('tier = ?');
|
|
219
|
+
params.push(updates.tier);
|
|
220
|
+
}
|
|
221
|
+
if (updates.last_enriched !== undefined) {
|
|
222
|
+
parts.push('last_enriched = ?');
|
|
223
|
+
params.push(updates.last_enriched);
|
|
224
|
+
}
|
|
225
|
+
if (updates.is_pinned !== undefined) {
|
|
226
|
+
parts.push('is_pinned = ?');
|
|
227
|
+
params.push(updates.is_pinned ? 1 : 0);
|
|
228
|
+
}
|
|
229
|
+
if (parts.length === 0)
|
|
230
|
+
return;
|
|
231
|
+
params.push(id);
|
|
232
|
+
db.prepare(`UPDATE timeline_events SET ${parts.join(', ')} WHERE id = ?`).run(...params);
|
|
233
|
+
},
|
|
234
|
+
async deleteEventById(t, id) {
|
|
235
|
+
ensureSchema(t);
|
|
236
|
+
const db = getDb(t, 'timeline');
|
|
237
|
+
const result = db.prepare('DELETE FROM timeline_events WHERE id = ?').run(id);
|
|
238
|
+
return result.changes > 0;
|
|
239
|
+
},
|
|
240
|
+
async getEventById(t, id) {
|
|
241
|
+
ensureSchema(t);
|
|
242
|
+
const db = getDb(t, 'timeline');
|
|
243
|
+
const row = db.prepare('SELECT * FROM timeline_events WHERE id = ?').get(id);
|
|
244
|
+
return row ? rowToEvent(row) : null;
|
|
245
|
+
},
|
|
246
|
+
async getEventByPath(t, sourcePath) {
|
|
247
|
+
ensureSchema(t);
|
|
248
|
+
const db = getDb(t, 'timeline');
|
|
249
|
+
const row = db.prepare('SELECT * FROM timeline_events WHERE source_path = ?').get(sourcePath);
|
|
250
|
+
return row ? rowToEvent(row) : null;
|
|
251
|
+
},
|
|
252
|
+
async query(t, query = {}) {
|
|
253
|
+
ensureSchema(t);
|
|
254
|
+
const db = getDb(t, 'timeline');
|
|
255
|
+
const conditions = [];
|
|
256
|
+
const params = [];
|
|
257
|
+
if (query.start) {
|
|
258
|
+
conditions.push('timestamp >= ?');
|
|
259
|
+
params.push(query.start);
|
|
260
|
+
}
|
|
261
|
+
if (query.end) {
|
|
262
|
+
conditions.push('timestamp <= ?');
|
|
263
|
+
params.push(query.end);
|
|
264
|
+
}
|
|
265
|
+
if (query.type) {
|
|
266
|
+
conditions.push('type = ?');
|
|
267
|
+
params.push(query.type);
|
|
268
|
+
}
|
|
269
|
+
if (query.search) {
|
|
270
|
+
const sanitized = sanitizeFtsQuery(query.search);
|
|
271
|
+
if (sanitized) {
|
|
272
|
+
conditions.push('id IN (SELECT rowid FROM timeline_fts WHERE timeline_fts MATCH ?)');
|
|
273
|
+
params.push(sanitized);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (query.entities && query.entities.length > 0) {
|
|
277
|
+
const entityConds = query.entities.map(() => 'entities_json LIKE ?');
|
|
278
|
+
conditions.push(`(${entityConds.join(' OR ')})`);
|
|
279
|
+
for (const e of query.entities)
|
|
280
|
+
params.push(`%${e.toLowerCase()}%`);
|
|
281
|
+
}
|
|
282
|
+
if (query.topics && query.topics.length > 0) {
|
|
283
|
+
const topicConds = query.topics.map(() => 'topics_json LIKE ?');
|
|
284
|
+
conditions.push(`(${topicConds.join(' OR ')})`);
|
|
285
|
+
for (const topic of query.topics)
|
|
286
|
+
params.push(`%${topic.toLowerCase()}%`);
|
|
287
|
+
}
|
|
288
|
+
let sql = 'SELECT * FROM timeline_events';
|
|
289
|
+
if (conditions.length > 0)
|
|
290
|
+
sql += ' WHERE ' + conditions.join(' AND ');
|
|
291
|
+
sql += ' ORDER BY timestamp DESC';
|
|
292
|
+
sql += ' LIMIT ? OFFSET ?';
|
|
293
|
+
params.push(query.limit ?? 50, query.offset ?? 0);
|
|
294
|
+
const rows = db.prepare(sql).all(...params);
|
|
295
|
+
return rows.map(rowToEvent);
|
|
296
|
+
},
|
|
297
|
+
async findRecentDuplicate(t, title, withinHours) {
|
|
298
|
+
ensureSchema(t);
|
|
299
|
+
const db = getDb(t, 'timeline');
|
|
300
|
+
const cutoff = new Date(Date.now() - withinHours * 60 * 60 * 1000).toISOString();
|
|
301
|
+
const normalized = title.replace(/^\[.*?\]\s*/, '').replace(/\.{3}$/, '').trim().toLowerCase();
|
|
302
|
+
const rows = db.prepare(`
|
|
303
|
+
SELECT id, title FROM timeline_events
|
|
304
|
+
WHERE timestamp >= ?
|
|
305
|
+
ORDER BY timestamp DESC
|
|
306
|
+
LIMIT 100
|
|
307
|
+
`).all(cutoff);
|
|
308
|
+
for (const row of rows) {
|
|
309
|
+
const rowNorm = row.title.replace(/^\[.*?\]\s*/, '').replace(/\.{3}$/, '').trim().toLowerCase();
|
|
310
|
+
if (rowNorm === normalized)
|
|
311
|
+
return row;
|
|
312
|
+
}
|
|
313
|
+
return null;
|
|
314
|
+
},
|
|
315
|
+
async incrementEventCount(t, eventId) {
|
|
316
|
+
ensureSchema(t);
|
|
317
|
+
const db = getDb(t, 'timeline');
|
|
318
|
+
db.prepare(`
|
|
319
|
+
UPDATE timeline_events
|
|
320
|
+
SET access_count = COALESCE(access_count, 0) + 1,
|
|
321
|
+
last_accessed = datetime('now')
|
|
322
|
+
WHERE id = ?
|
|
323
|
+
`).run(eventId);
|
|
324
|
+
},
|
|
325
|
+
async stats(t) {
|
|
326
|
+
ensureSchema(t);
|
|
327
|
+
const db = getDb(t, 'timeline');
|
|
328
|
+
const { count } = db.prepare('SELECT COUNT(*) as count FROM timeline_events').get();
|
|
329
|
+
const byTypeRows = db.prepare('SELECT type, COUNT(*) as count FROM timeline_events GROUP BY type').all();
|
|
330
|
+
const dateRange = db.prepare('SELECT MIN(timestamp) as earliest, MAX(timestamp) as latest FROM timeline_events').get();
|
|
331
|
+
const byType = {
|
|
332
|
+
conversation: 0, idea: 0, file: 0, transcript: 0, note: 0, intake: 0,
|
|
333
|
+
};
|
|
334
|
+
for (const row of byTypeRows) {
|
|
335
|
+
byType[row.type] = row.count;
|
|
336
|
+
}
|
|
337
|
+
return { totalEvents: count, byType, dateRange };
|
|
338
|
+
},
|
|
339
|
+
async findSourcePathsMatching(t, termLower, limit) {
|
|
340
|
+
ensureSchema(t);
|
|
341
|
+
const db = getDb(t, 'timeline');
|
|
342
|
+
const pattern = `%${termLower}%`;
|
|
343
|
+
const rows = db.prepare(`
|
|
344
|
+
SELECT DISTINCT source_path FROM timeline_events
|
|
345
|
+
WHERE LOWER(title) LIKE ? OR LOWER(tags_json) LIKE ? OR LOWER(entities_json) LIKE ?
|
|
346
|
+
LIMIT ?
|
|
347
|
+
`).all(pattern, pattern, pattern, limit);
|
|
348
|
+
return rows.map(r => r.source_path);
|
|
349
|
+
},
|
|
350
|
+
};
|
|
351
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kybernesis/brain-storage-sqlite",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "better-sqlite3 StructuredStore implementation for brain-core",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "David Cruwys (AppyDave)",
|
|
@@ -27,7 +27,10 @@
|
|
|
27
27
|
"README.md"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@kybernesis/brain-contracts": "0.
|
|
30
|
+
"@kybernesis/brain-contracts": "0.5.0"
|
|
31
|
+
},
|
|
32
|
+
"optionalDependencies": {
|
|
33
|
+
"@kybernesis/brain-storage-vec": "0.5.0"
|
|
31
34
|
},
|
|
32
35
|
"peerDependencies": {
|
|
33
36
|
"better-sqlite3": ">=9.0.0"
|
|
@@ -35,7 +38,7 @@
|
|
|
35
38
|
"devDependencies": {
|
|
36
39
|
"@types/better-sqlite3": "^7.6.0",
|
|
37
40
|
"better-sqlite3": "^12.0.0",
|
|
38
|
-
"@kybernesis/brain-testkit": "0.
|
|
41
|
+
"@kybernesis/brain-testkit": "0.5.0"
|
|
39
42
|
},
|
|
40
43
|
"publishConfig": {
|
|
41
44
|
"access": "public"
|