@kybernesis/brain-core 0.2.0 → 0.6.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.
Files changed (80) hide show
  1. package/dist/entity-graph.d.ts +11 -13
  2. package/dist/entity-graph.d.ts.map +1 -1
  3. package/dist/entity-graph.js +36 -548
  4. package/dist/entity-graph.js.map +1 -1
  5. package/dist/fact-retrieval.d.ts.map +1 -1
  6. package/dist/fact-retrieval.js +45 -116
  7. package/dist/fact-retrieval.js.map +1 -1
  8. package/dist/fact-store.d.ts +5 -0
  9. package/dist/fact-store.d.ts.map +1 -1
  10. package/dist/fact-store.js +17 -157
  11. package/dist/fact-store.js.map +1 -1
  12. package/dist/fts-sanitizer.d.ts +7 -28
  13. package/dist/fts-sanitizer.d.ts.map +1 -1
  14. package/dist/fts-sanitizer.js +7 -57
  15. package/dist/fts-sanitizer.js.map +1 -1
  16. package/dist/hybrid-search.d.ts +6 -1
  17. package/dist/hybrid-search.d.ts.map +1 -1
  18. package/dist/hybrid-search.js +47 -97
  19. package/dist/hybrid-search.js.map +1 -1
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/ops.d.ts.map +1 -1
  25. package/dist/ops.js +10 -34
  26. package/dist/ops.js.map +1 -1
  27. package/dist/sleep/db.d.ts +12 -12
  28. package/dist/sleep/db.d.ts.map +1 -1
  29. package/dist/sleep/db.js +12 -110
  30. package/dist/sleep/db.js.map +1 -1
  31. package/dist/sleep/index.d.ts.map +1 -1
  32. package/dist/sleep/index.js +29 -45
  33. package/dist/sleep/index.js.map +1 -1
  34. package/dist/sleep/steps/consolidate.d.ts.map +1 -1
  35. package/dist/sleep/steps/consolidate.js +5 -36
  36. package/dist/sleep/steps/consolidate.js.map +1 -1
  37. package/dist/sleep/steps/decay.d.ts.map +1 -1
  38. package/dist/sleep/steps/decay.js +12 -41
  39. package/dist/sleep/steps/decay.js.map +1 -1
  40. package/dist/sleep/steps/entity-hygiene.d.ts.map +1 -1
  41. package/dist/sleep/steps/entity-hygiene.js +22 -64
  42. package/dist/sleep/steps/entity-hygiene.js.map +1 -1
  43. package/dist/sleep/steps/link.d.ts.map +1 -1
  44. package/dist/sleep/steps/link.js +18 -36
  45. package/dist/sleep/steps/link.js.map +1 -1
  46. package/dist/sleep/steps/observe.d.ts.map +1 -1
  47. package/dist/sleep/steps/observe.js +5 -28
  48. package/dist/sleep/steps/observe.js.map +1 -1
  49. package/dist/sleep/steps/reasoning.d.ts.map +1 -1
  50. package/dist/sleep/steps/reasoning.js +3 -9
  51. package/dist/sleep/steps/reasoning.js.map +1 -1
  52. package/dist/sleep/steps/summarize.d.ts.map +1 -1
  53. package/dist/sleep/steps/summarize.js +21 -53
  54. package/dist/sleep/steps/summarize.js.map +1 -1
  55. package/dist/sleep/steps/tag.d.ts.map +1 -1
  56. package/dist/sleep/steps/tag.js +3 -15
  57. package/dist/sleep/steps/tag.js.map +1 -1
  58. package/dist/sleep/steps/tier.d.ts.map +1 -1
  59. package/dist/sleep/steps/tier.js +18 -33
  60. package/dist/sleep/steps/tier.js.map +1 -1
  61. package/dist/sleep/utils/checkpoint.d.ts +8 -4
  62. package/dist/sleep/utils/checkpoint.d.ts.map +1 -1
  63. package/dist/sleep/utils/checkpoint.js +10 -13
  64. package/dist/sleep/utils/checkpoint.js.map +1 -1
  65. package/dist/storage.d.ts +28 -0
  66. package/dist/storage.d.ts.map +1 -0
  67. package/dist/storage.js +40 -0
  68. package/dist/storage.js.map +1 -0
  69. package/dist/timeline.d.ts +11 -22
  70. package/dist/timeline.d.ts.map +1 -1
  71. package/dist/timeline.js +24 -310
  72. package/dist/timeline.js.map +1 -1
  73. package/dist/user-profile.d.ts.map +1 -1
  74. package/dist/user-profile.js +11 -57
  75. package/dist/user-profile.js.map +1 -1
  76. package/dist/vectors.d.ts +8 -10
  77. package/dist/vectors.d.ts.map +1 -1
  78. package/dist/vectors.js +22 -72
  79. package/dist/vectors.js.map +1 -1
  80. package/package.json +6 -6
package/dist/timeline.js CHANGED
@@ -1,291 +1,37 @@
1
- import { getDb } from '@kybernesis/brain-storage-sqlite';
2
- import { sanitizeFtsQuery } from './fts-sanitizer.js';
3
- function rowToEvent(row) {
4
- return {
5
- id: row.id,
6
- type: row.type,
7
- timestamp: row.timestamp,
8
- end_timestamp: row.end_timestamp ?? undefined,
9
- title: row.title,
10
- summary: row.summary ?? undefined,
11
- source_path: row.source_path,
12
- entities: JSON.parse(row.entities_json || '[]'),
13
- topics: JSON.parse(row.topics_json || '[]'),
14
- priority: row.priority ?? 0.5,
15
- decay_score: row.decay_score ?? 0.0,
16
- tier: (row.tier ?? 'warm'),
17
- tags: JSON.parse(row.tags_json || '[]'),
18
- last_enriched: row.last_enriched ?? undefined,
19
- access_count: row.access_count ?? 0,
20
- is_pinned: (row.is_pinned ?? 0) === 1,
21
- last_accessed: row.last_accessed ?? undefined,
22
- project_id: row.project_id ?? undefined,
23
- classification: row.classification ?? undefined,
24
- connection_id: row.connection_id ?? undefined,
25
- source_did: row.source_did ?? undefined,
26
- };
27
- }
28
- // ─── Schema initialization ────────────────────────────────────────────────────
29
- const initialized = new Set();
30
- function ensureSchema(t) {
31
- if (initialized.has(t.slug))
32
- return;
33
- const db = getDb(t, 'timeline');
34
- db.exec(`
35
- CREATE TABLE IF NOT EXISTS timeline_events (
36
- id INTEGER PRIMARY KEY AUTOINCREMENT,
37
- type TEXT NOT NULL CHECK(type IN ('conversation', 'idea', 'file', 'transcript', 'note', 'intake')),
38
- timestamp TEXT NOT NULL,
39
- end_timestamp TEXT,
40
- title TEXT NOT NULL,
41
- summary TEXT,
42
- source_path TEXT NOT NULL UNIQUE,
43
- entities_json TEXT DEFAULT '[]',
44
- topics_json TEXT DEFAULT '[]',
45
- priority REAL DEFAULT 0.5,
46
- decay_score REAL DEFAULT 0.0,
47
- tier TEXT DEFAULT 'warm',
48
- tags_json TEXT DEFAULT '[]',
49
- last_enriched TEXT,
50
- access_count INTEGER DEFAULT 0,
51
- is_pinned INTEGER DEFAULT 0,
52
- last_accessed TEXT,
53
- project_id TEXT,
54
- classification TEXT,
55
- connection_id TEXT,
56
- source_did TEXT
57
- );
58
-
59
- CREATE INDEX IF NOT EXISTS idx_timeline_timestamp ON timeline_events(timestamp);
60
- CREATE INDEX IF NOT EXISTS idx_timeline_type ON timeline_events(type);
61
- CREATE INDEX IF NOT EXISTS idx_timeline_source ON timeline_events(source_path);
62
- CREATE INDEX IF NOT EXISTS idx_timeline_tier ON timeline_events(tier);
63
- CREATE INDEX IF NOT EXISTS idx_timeline_priority ON timeline_events(priority DESC);
64
- CREATE INDEX IF NOT EXISTS idx_timeline_last_enriched ON timeline_events(last_enriched);
65
- CREATE INDEX IF NOT EXISTS idx_timeline_project ON timeline_events(project_id);
66
- CREATE INDEX IF NOT EXISTS idx_timeline_classification ON timeline_events(classification);
67
- CREATE INDEX IF NOT EXISTS idx_timeline_connection ON timeline_events(connection_id);
68
-
69
- CREATE VIRTUAL TABLE IF NOT EXISTS timeline_fts USING fts5(
70
- title, summary, entities, topics, content='',
71
- tokenize = 'unicode61 remove_diacritics 2'
72
- );
73
-
74
- CREATE TRIGGER IF NOT EXISTS timeline_ai AFTER INSERT ON timeline_events BEGIN
75
- INSERT INTO timeline_fts(rowid, title, summary, entities, topics)
76
- VALUES (new.id, new.title, new.summary, new.entities_json, new.topics_json);
77
- END;
78
-
79
- CREATE TRIGGER IF NOT EXISTS timeline_ad AFTER DELETE ON timeline_events BEGIN
80
- INSERT INTO timeline_fts(timeline_fts, rowid, title, summary, entities, topics)
81
- VALUES ('delete', old.id, old.title, old.summary, old.entities_json, old.topics_json);
82
- END;
83
-
84
- CREATE TRIGGER IF NOT EXISTS timeline_au AFTER UPDATE ON timeline_events BEGIN
85
- INSERT INTO timeline_fts(timeline_fts, rowid, title, summary, entities, topics)
86
- VALUES ('delete', old.id, old.title, old.summary, old.entities_json, old.topics_json);
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 TABLE IF NOT EXISTS facts (
92
- id INTEGER PRIMARY KEY AUTOINCREMENT,
93
- content TEXT NOT NULL,
94
- source_path TEXT NOT NULL UNIQUE,
95
- source_conversation_id TEXT NOT NULL,
96
- entities_json TEXT DEFAULT '[]',
97
- timestamp TEXT NOT NULL,
98
- confidence REAL DEFAULT 0.7,
99
- category TEXT DEFAULT 'general',
100
- created_at TEXT DEFAULT (datetime('now')),
101
- is_latest INTEGER DEFAULT 1,
102
- superseded_by INTEGER,
103
- expires_at TEXT,
104
- updated_at TEXT,
105
- access_count INTEGER DEFAULT 0,
106
- source_type TEXT DEFAULT 'chat',
107
- is_retracted INTEGER DEFAULT 0,
108
- retracted_by TEXT,
109
- last_reinforced_at TEXT,
110
- project_id TEXT,
111
- tags_json TEXT DEFAULT '[]',
112
- classification TEXT,
113
- connection_id TEXT,
114
- source_did TEXT
115
- );
116
-
117
- CREATE INDEX IF NOT EXISTS idx_facts_source_conv ON facts(source_conversation_id);
118
- CREATE INDEX IF NOT EXISTS idx_facts_category ON facts(category);
119
- CREATE INDEX IF NOT EXISTS idx_facts_timestamp ON facts(timestamp);
120
- CREATE INDEX IF NOT EXISTS idx_facts_source_path ON facts(source_path);
121
- CREATE INDEX IF NOT EXISTS idx_facts_is_latest ON facts(is_latest);
122
- CREATE INDEX IF NOT EXISTS idx_facts_expires_at ON facts(expires_at);
123
- CREATE INDEX IF NOT EXISTS idx_facts_project ON facts(project_id);
124
- CREATE INDEX IF NOT EXISTS idx_facts_classification ON facts(classification);
125
- CREATE INDEX IF NOT EXISTS idx_facts_connection ON facts(connection_id);
126
- `);
127
- initialized.add(t.slug);
128
- }
1
+ /**
2
+ * Timeline events public API. Storage now lives behind the seam
3
+ * (getStorage().repositories.timeline); these are thin, signature-stable delegators plus
4
+ * the higher-level orchestrators (conversation/idea/activity helpers) that
5
+ * compose the store methods (Stage 1, G2).
6
+ */
7
+ import { resetTimelineSchemaCache } from '@kybernesis/brain-storage-sqlite';
8
+ import { getStorage } from './storage.js';
9
+ /** Clear the SQLite schema-init cache (test/utility). */
129
10
  export function resetTimelineDb(t) {
130
- if (t) {
131
- initialized.delete(t.slug);
132
- }
133
- else {
134
- initialized.clear();
135
- }
11
+ resetTimelineSchemaCache(t?.slug);
136
12
  }
137
- // ─── Event operations ─────────────────────────────────────────────────────────
13
+ // ─── Event operations (delegated) ─────────────────────────────────────────────
138
14
  export async function addToTimeline(t, event) {
139
- ensureSchema(t);
140
- const db = getDb(t, 'timeline');
141
- const result = db.prepare(`
142
- INSERT INTO timeline_events
143
- (type, timestamp, end_timestamp, title, summary, source_path,
144
- entities_json, topics_json,
145
- project_id, tags_json, classification, connection_id, source_did)
146
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
147
- ON CONFLICT(source_path) DO UPDATE SET
148
- type = excluded.type,
149
- timestamp = excluded.timestamp,
150
- end_timestamp = excluded.end_timestamp,
151
- title = excluded.title,
152
- summary = excluded.summary,
153
- entities_json = excluded.entities_json,
154
- topics_json = excluded.topics_json,
155
- project_id = COALESCE(excluded.project_id, timeline_events.project_id),
156
- tags_json = COALESCE(excluded.tags_json, timeline_events.tags_json),
157
- classification = COALESCE(excluded.classification, timeline_events.classification),
158
- connection_id = COALESCE(excluded.connection_id, timeline_events.connection_id),
159
- source_did = COALESCE(excluded.source_did, timeline_events.source_did)
160
- `).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);
161
- return result.lastInsertRowid;
15
+ return getStorage().repositories.timeline.addEvent(t, event);
162
16
  }
163
17
  export async function removeFromTimeline(t, sourcePath) {
164
- ensureSchema(t);
165
- const db = getDb(t, 'timeline');
166
- const result = db.prepare('DELETE FROM timeline_events WHERE source_path = ?').run(sourcePath);
167
- return result.changes > 0;
18
+ return getStorage().repositories.timeline.removeEventByPath(t, sourcePath);
168
19
  }
169
20
  export async function updateTimelineEvent(t, id, updates) {
170
- ensureSchema(t);
171
- const db = getDb(t, 'timeline');
172
- const parts = [];
173
- const params = [];
174
- if (updates.title !== undefined) {
175
- parts.push('title = ?');
176
- params.push(updates.title);
177
- }
178
- if (updates.summary !== undefined) {
179
- parts.push('summary = ?');
180
- params.push(updates.summary);
181
- }
182
- if (updates.timestamp !== undefined) {
183
- parts.push('timestamp = ?');
184
- params.push(updates.timestamp);
185
- }
186
- if (updates.end_timestamp !== undefined) {
187
- parts.push('end_timestamp = ?');
188
- params.push(updates.end_timestamp);
189
- }
190
- if (updates.entities !== undefined) {
191
- parts.push('entities_json = ?');
192
- params.push(JSON.stringify(updates.entities));
193
- }
194
- if (updates.topics !== undefined) {
195
- parts.push('topics_json = ?');
196
- params.push(JSON.stringify(updates.topics));
197
- }
198
- if (updates.tags !== undefined) {
199
- parts.push('tags_json = ?');
200
- params.push(JSON.stringify(updates.tags));
201
- }
202
- if (updates.priority !== undefined) {
203
- parts.push('priority = ?');
204
- params.push(updates.priority);
205
- }
206
- if (updates.decay_score !== undefined) {
207
- parts.push('decay_score = ?');
208
- params.push(updates.decay_score);
209
- }
210
- if (updates.tier !== undefined) {
211
- parts.push('tier = ?');
212
- params.push(updates.tier);
213
- }
214
- if (updates.last_enriched !== undefined) {
215
- parts.push('last_enriched = ?');
216
- params.push(updates.last_enriched);
217
- }
218
- if (updates.is_pinned !== undefined) {
219
- parts.push('is_pinned = ?');
220
- params.push(updates.is_pinned ? 1 : 0);
221
- }
222
- if (parts.length === 0)
223
- return;
224
- params.push(id);
225
- db.prepare(`UPDATE timeline_events SET ${parts.join(', ')} WHERE id = ?`).run(...params);
21
+ return getStorage().repositories.timeline.updateEvent(t, id, updates);
226
22
  }
227
23
  export async function deleteTimelineEventById(t, id) {
228
- ensureSchema(t);
229
- const db = getDb(t, 'timeline');
230
- const result = db.prepare('DELETE FROM timeline_events WHERE id = ?').run(id);
231
- return result.changes > 0;
24
+ return getStorage().repositories.timeline.deleteEventById(t, id);
232
25
  }
233
26
  export async function getEventById(t, id) {
234
- ensureSchema(t);
235
- const db = getDb(t, 'timeline');
236
- const row = db.prepare('SELECT * FROM timeline_events WHERE id = ?').get(id);
237
- return row ? rowToEvent(row) : null;
27
+ return getStorage().repositories.timeline.getEventById(t, id);
238
28
  }
239
29
  export async function getEventByPath(t, sourcePath) {
240
- ensureSchema(t);
241
- const db = getDb(t, 'timeline');
242
- const row = db.prepare('SELECT * FROM timeline_events WHERE source_path = ?').get(sourcePath);
243
- return row ? rowToEvent(row) : null;
30
+ return getStorage().repositories.timeline.getEventByPath(t, sourcePath);
244
31
  }
32
+ // ─── Query operations ─────────────────────────────────────────────────────────
245
33
  export async function queryTimeline(t, query = {}) {
246
- ensureSchema(t);
247
- const db = getDb(t, 'timeline');
248
- const conditions = [];
249
- const params = [];
250
- if (query.start) {
251
- conditions.push('timestamp >= ?');
252
- params.push(query.start);
253
- }
254
- if (query.end) {
255
- conditions.push('timestamp <= ?');
256
- params.push(query.end);
257
- }
258
- if (query.type) {
259
- conditions.push('type = ?');
260
- params.push(query.type);
261
- }
262
- if (query.search) {
263
- const sanitized = sanitizeFtsQuery(query.search);
264
- if (sanitized) {
265
- conditions.push('id IN (SELECT rowid FROM timeline_fts WHERE timeline_fts MATCH ?)');
266
- params.push(sanitized);
267
- }
268
- }
269
- if (query.entities && query.entities.length > 0) {
270
- const entityConds = query.entities.map(() => 'entities_json LIKE ?');
271
- conditions.push(`(${entityConds.join(' OR ')})`);
272
- for (const e of query.entities)
273
- params.push(`%${e.toLowerCase()}%`);
274
- }
275
- if (query.topics && query.topics.length > 0) {
276
- const topicConds = query.topics.map(() => 'topics_json LIKE ?');
277
- conditions.push(`(${topicConds.join(' OR ')})`);
278
- for (const topic of query.topics)
279
- params.push(`%${topic.toLowerCase()}%`);
280
- }
281
- let sql = 'SELECT * FROM timeline_events';
282
- if (conditions.length > 0)
283
- sql += ' WHERE ' + conditions.join(' AND ');
284
- sql += ' ORDER BY timestamp DESC';
285
- sql += ' LIMIT ? OFFSET ?';
286
- params.push(query.limit ?? 50, query.offset ?? 0);
287
- const rows = db.prepare(sql).all(...params);
288
- return rows.map(rowToEvent);
34
+ return getStorage().repositories.timeline.query(t, query);
289
35
  }
290
36
  export async function getRecentActivity(t, limit = 20) {
291
37
  return queryTimeline(t, { limit });
@@ -304,48 +50,16 @@ export async function searchTimeline(t, searchQuery, options = {}) {
304
50
  }
305
51
  // ─── Deduplication ────────────────────────────────────────────────────────────
306
52
  export async function findRecentDuplicate(t, title, withinHours) {
307
- ensureSchema(t);
308
- const db = getDb(t, 'timeline');
309
- const cutoff = new Date(Date.now() - withinHours * 60 * 60 * 1000).toISOString();
310
- const normalized = title.replace(/^\[.*?\]\s*/, '').replace(/\.{3}$/, '').trim().toLowerCase();
311
- const rows = db.prepare(`
312
- SELECT id, title FROM timeline_events
313
- WHERE timestamp >= ?
314
- ORDER BY timestamp DESC
315
- LIMIT 100
316
- `).all(cutoff);
317
- for (const row of rows) {
318
- const rowNorm = row.title.replace(/^\[.*?\]\s*/, '').replace(/\.{3}$/, '').trim().toLowerCase();
319
- if (rowNorm === normalized)
320
- return row;
321
- }
322
- return null;
53
+ return getStorage().repositories.timeline.findRecentDuplicate(t, title, withinHours);
323
54
  }
324
55
  export async function incrementTimelineEventCount(t, eventId) {
325
- ensureSchema(t);
326
- const db = getDb(t, 'timeline');
327
- db.prepare(`
328
- UPDATE timeline_events
329
- SET access_count = COALESCE(access_count, 0) + 1,
330
- last_accessed = datetime('now')
331
- WHERE id = ?
332
- `).run(eventId);
56
+ return getStorage().repositories.timeline.incrementEventCount(t, eventId);
333
57
  }
58
+ // ─── Stats ────────────────────────────────────────────────────────────────────
334
59
  export async function getTimelineStats(t) {
335
- ensureSchema(t);
336
- const db = getDb(t, 'timeline');
337
- const { count } = db.prepare('SELECT COUNT(*) as count FROM timeline_events').get();
338
- const byTypeRows = db.prepare('SELECT type, COUNT(*) as count FROM timeline_events GROUP BY type').all();
339
- const dateRange = db.prepare('SELECT MIN(timestamp) as earliest, MAX(timestamp) as latest FROM timeline_events').get();
340
- const byType = {
341
- conversation: 0, idea: 0, file: 0, transcript: 0, note: 0, intake: 0,
342
- };
343
- for (const row of byTypeRows) {
344
- byType[row.type] = row.count;
345
- }
346
- return { totalEvents: count, byType, dateRange };
60
+ return getStorage().repositories.timeline.stats(t);
347
61
  }
348
- // ─── Helpers ──────────────────────────────────────────────────────────────────
62
+ // ─── Helpers / orchestrators ──────────────────────────────────────────────────
349
63
  export async function addConversationToTimeline(t, _conversationId, sourcePath, startedAt, finishedAt, title, summary, entities, topics, arpMetadata, eventType = 'conversation') {
350
64
  return addToTimeline(t, {
351
65
  type: eventType,
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA4BtD,SAAS,UAAU,CAAC,GAAgB;IAClC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAiB;QAC3B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC7C,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;QACjC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;QAC/C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;QAC3C,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG;QAC7B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG;QACnC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAA0B;QACnD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;QACvC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC7C,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC;QACnC,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC;QACrC,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC7C,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;QACvC,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,SAAS;QAC/C,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;QAC7C,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;KACxC,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;AAEtC,SAAS,YAAY,CAAC,CAAgB;IACpC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO;IACpC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEhC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FP,CAAC,CAAC;IAEH,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAiB;IAC/C,IAAI,CAAC,EAAE,CAAC;QACN,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAgB,EAAE,KAAyB;IAC7E,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;GAmBzB,CAAC,CAAC,GAAG,CACJ,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,IAAI,EAAE,EACnB,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5B,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAC9C,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,UAAU,IAAI,IAAI,CACzB,CAAC;IAEF,OAAO,MAAM,CAAC,eAAyB,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,CAAgB,EAAE,UAAkB;IAC3E,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/F,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,CAAgB,EAChB,EAAU,EACV,OAAyD;IAEzD,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IACzF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAC/F,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAAC,CAAC;IACrG,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAAC,CAAC;IACjH,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAAC,CAAC;IACvH,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IACjH,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAAC,CAAC;IAC3G,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC;IAClG,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAAC,CAAC;IAC3G,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IACtF,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAAC,CAAC;IACjH,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAE7G,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,EAAE,CAAC,OAAO,CAAC,8BAA8B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,CAAgB,EAAE,EAAU;IACxE,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAgB,EAAE,EAAU;IAC7D,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,EAAE,CAA4B,CAAC;IACxG,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,CAAgB,EAAE,UAAkB;IACvE,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,UAAU,CAA4B,CAAC;IACzH,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC;AAeD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAgB,EAAE,QAAuB,EAAE;IAC7E,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEhC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IACjF,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAEzE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YACrF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACrE,UAAU,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAChE,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,GAAG,GAAG,+BAA+B,CAAC;IAC1C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,GAAG,IAAI,0BAA0B,CAAC;IAClC,GAAG,IAAI,mBAAmB,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAElD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAkB,CAAC;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,CAAgB,EAAE,KAAK,GAAG,EAAE;IAClE,OAAO,aAAa,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,CAAgB,EAAE,IAAY;IACpE,OAAO,aAAa,CAAC,CAAC,EAAE;QACtB,KAAK,EAAE,GAAG,IAAI,gBAAgB;QAC9B,GAAG,EAAE,GAAG,IAAI,gBAAgB;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,CAAgB,EAAE,KAAa,EAAE,GAAW;IACnF,OAAO,aAAa,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,CAAgB,EAChB,WAAmB,EACnB,UAAgD,EAAE;IAElD,OAAO,aAAa,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,CAAgB,EAChB,KAAa,EACb,WAAmB;IAEnB,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAEjF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE/F,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;GAKvB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAyC,CAAC;IAEvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAChG,IAAI,OAAO,KAAK,UAAU;YAAE,OAAO,GAAG,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,CAAgB,EAAE,OAAe;IACjF,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAChC,EAAE,CAAC,OAAO,CAAC;;;;;GAKV,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,CAAgB;IACrD,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAEhC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAuB,CAAC;IACzG,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,EAA4C,CAAC;IACnJ,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,EAAwD,CAAC;IAE7K,MAAM,MAAM,GAA8B;QACxC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;KACrE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAiB,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACnD,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,CAAgB,EAChB,eAAuB,EACvB,UAAkB,EAClB,SAAiB,EACjB,UAA8B,EAC9B,KAAa,EACb,OAAe,EACf,QAAkB,EAClB,MAAgB,EAChB,WAMC,EACD,YAAuB,cAAc;IAErC,OAAO,aAAa,CAAC,CAAC,EAAE;QACtB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,SAAS;QACpB,aAAa,EAAE,UAAU;QACzB,KAAK;QACL,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,QAAQ;QACR,MAAM;QACN,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,GAAG;QAChB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,WAAW,EAAE,IAAI;QACvB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,CAAC;QACf,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAChB,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,cAAc,EAAE,WAAW,CAAC,cAAc;YAC1C,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,UAAU,EAAE,WAAW,CAAC,UAAU;SACnC,CAAC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,CAAgB,EAChB,OAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,KAAa,EACb,WAAmB,EACnB,IAAc;IAEd,OAAO,aAAa,CAAC,CAAC,EAAE;QACtB,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,SAAS;QACpB,KAAK;QACL,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,UAAU;QACvB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,GAAG;QAChB,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-profile.d.ts","sourceRoot":"","sources":["../src/user-profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAKjE,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAID,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBhF;AA4DD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI,CAQrE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAQzE;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAMtD;AAID,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAyBnE"}
1
+ {"version":3,"file":"user-profile.d.ts","sourceRoot":"","sources":["../src/user-profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAIjE,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAID,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBhF;AAaD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI,CAQrE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAQzE;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAMtD;AAID,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAyBnE"}
@@ -6,20 +6,20 @@
6
6
  */
7
7
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
8
8
  import { dirname } from 'node:path';
9
- import { getDb } from '@kybernesis/brain-storage-sqlite';
10
9
  import { ensureFactsTable } from './fact-store.js';
10
+ import { getStorage } from './storage.js';
11
11
  // ─── Generation ───────────────────────────────────────────────────────────────
12
12
  export async function generateUserProfile(t) {
13
13
  await ensureFactsTable(t);
14
- const db = getDb(t, 'timeline');
15
- const identity = queryFacts(db, 'biographical', 15);
16
- const preferences = queryFacts(db, 'preference', 10);
17
- const relationships = queryFacts(db, 'relationship', 10);
18
- const current_plans = queryFacts(db, 'plan', 5);
19
- const recent_events = queryRecentFacts(db, 'event', 5);
14
+ const facts = getStorage().repositories.facts;
15
+ const identity = await facts.getFactContentsByCategory(t, 'biographical', 15, 'frecency');
16
+ const preferences = await facts.getFactContentsByCategory(t, 'preference', 10, 'frecency');
17
+ const relationships = await facts.getFactContentsByCategory(t, 'relationship', 10, 'frecency');
18
+ const current_plans = await facts.getFactContentsByCategory(t, 'plan', 5, 'frecency');
19
+ const recent_events = await facts.getFactContentsByCategory(t, 'event', 5, 'recent');
20
20
  const totalFacts = identity.length + preferences.length + relationships.length
21
21
  + current_plans.length + recent_events.length;
22
- const top_entities = queryTopEntities(t);
22
+ const top_entities = await queryTopEntities(t);
23
23
  return {
24
24
  generated_at: new Date().toISOString(),
25
25
  fact_count: totalFacts,
@@ -27,56 +27,10 @@ export async function generateUserProfile(t) {
27
27
  top_entities,
28
28
  };
29
29
  }
30
- function queryFacts(db, category, limit) {
30
+ async function queryTopEntities(t) {
31
31
  try {
32
- const rows = db.prepare(`
33
- SELECT content FROM facts
34
- WHERE category = ?
35
- AND is_latest = 1
36
- AND (expires_at IS NULL OR expires_at > datetime('now'))
37
- ORDER BY confidence DESC, access_count DESC
38
- LIMIT ?
39
- `).all(category, limit);
40
- return rows.map((r) => r.content);
41
- }
42
- catch {
43
- // access_count column may not exist yet
44
- try {
45
- const rows = db.prepare(`
46
- SELECT content FROM facts
47
- WHERE category = ?
48
- AND is_latest = 1
49
- AND (expires_at IS NULL OR expires_at > datetime('now'))
50
- ORDER BY confidence DESC
51
- LIMIT ?
52
- `).all(category, limit);
53
- return rows.map((r) => r.content);
54
- }
55
- catch {
56
- return [];
57
- }
58
- }
59
- }
60
- function queryRecentFacts(db, category, limit) {
61
- try {
62
- const rows = db.prepare(`
63
- SELECT content FROM facts
64
- WHERE category = ?
65
- AND is_latest = 1
66
- AND (expires_at IS NULL OR expires_at > datetime('now'))
67
- ORDER BY timestamp DESC
68
- LIMIT ?
69
- `).all(category, limit);
70
- return rows.map((r) => r.content);
71
- }
72
- catch {
73
- return [];
74
- }
75
- }
76
- function queryTopEntities(t) {
77
- try {
78
- const db = getDb(t, 'entityGraph');
79
- return db.prepare('SELECT name, type, mention_count FROM entities ORDER BY mention_count DESC LIMIT 10').all();
32
+ const entities = await getStorage().repositories.entities.getMostMentionedEntities(t, { limit: 10 });
33
+ return entities.map((e) => ({ name: e.name, type: e.type, mention_count: e.mention_count }));
80
34
  }
81
35
  catch {
82
36
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"user-profile.js","sourceRoot":"","sources":["../src/user-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-profile.js","sourceRoot":"","sources":["../src/user-profile.ts"],"names":[],"mappings":"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"}
package/dist/vectors.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Vector indexing + semantic search — port of KAD's vectors.ts.
2
+ * Vector indexing + semantic search — public API.
3
3
  *
4
- * Brain-core owns the operations; brain-storage-vec owns the connection
5
- * + sqlite-vec extension. Embeddings are injected via setEmbeddingProvider
6
- * (same pattern as setLLMProvider see ADR-0009): the library has no
7
- * default backend, the app wires one at startup. When no provider is set,
8
- * indexChunk is a no-op and semanticSearch returns [].
4
+ * Embeddings are injected via setEmbeddingProvider (same pattern as
5
+ * setLLMProvider — see ADR-0009): the library has no default backend, the app
6
+ * wires one at startup. When no provider is set, indexChunk is a no-op and
7
+ * semanticSearch returns [].
9
8
  *
10
- * KAD's default backend is OpenAI text-embedding-3-small (1536-dim). Other
11
- * backends (Voyage, local) can be wired identically.
9
+ * Persistence now lives behind the storage seam (getStorage().repositories.vectors); this
10
+ * module owns the embedding orchestration and maps store rows to SearchResult.
11
+ * The vector backend (sqlite-vec today, libsql native in Stage 3) is swappable.
12
12
  */
13
13
  import type { TenantContext } from '@kybernesis/brain-contracts';
14
14
  import { EMBEDDING_DIM } from '@kybernesis/brain-contracts';
@@ -52,6 +52,4 @@ export declare function vectorStats(t: TenantContext): Promise<{
52
52
  count: number;
53
53
  available: boolean;
54
54
  }>;
55
- /** Reset the cached storage module — for tests where we need a clean state. */
56
- export declare function _resetVecStorageCache(): void;
57
55
  //# sourceMappingURL=vectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,aAAa,EAA2C,MAAM,6BAA6B,CAAC;AAErG,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;CAC/C;AAID,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAmB;AACnF,wBAAgB,sBAAsB,IAAI,IAAI,CAAsB;AACpE,wBAAgB,kBAAkB,IAAI,OAAO,CAA+B;AAI5E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAC9B,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAoC3B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAUD,wBAAsB,cAAc,CAClC,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,OAAO,CAAC,YAAY,EAAE,CAAC,CAwCzB;AAED,wBAAsB,WAAW,CAC/B,CAAC,EAAE,aAAa,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAUhD;AA2BD,+EAA+E;AAC/E,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C"}
1
+ {"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,aAAa,EAA2C,MAAM,6BAA6B,CAAC;AAGrG,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;CAC/C;AAID,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAmB;AACnF,wBAAgB,sBAAsB,IAAI,IAAI,CAAsB;AACpE,wBAAgB,kBAAkB,IAAI,OAAO,CAA+B;AAI5E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAC9B,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,wBAAsB,cAAc,CAClC,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BzB;AAED,wBAAsB,WAAW,CAC/B,CAAC,EAAE,aAAa,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAMhD"}