@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
@@ -11,10 +11,9 @@
11
11
  * LLM preambles.
12
12
  */
13
13
  import { promises as fs } from 'node:fs';
14
- import { getDb } from '@kybernesis/brain-storage-sqlite';
14
+ import { getStorage } from '../../storage.js';
15
15
  import { callClaude } from '../../claude-call.js';
16
16
  import { withRetry } from '../../utils/retry.js';
17
- import { ensureSleepSchema } from '../db.js';
18
17
  function safeParseArray(json) {
19
18
  if (!json)
20
19
  return [];
@@ -30,8 +29,8 @@ function safeParseArray(json) {
30
29
  return [];
31
30
  }
32
31
  }
33
- function markProcessed(db, queueId) {
34
- db.prepare(`UPDATE maintenance_queue SET processed_at = datetime('now') WHERE id = ?`).run(queueId);
32
+ async function markProcessed(t, queueId) {
33
+ await getStorage().repositories.sleep.markQueueProcessed(t, queueId);
35
34
  }
36
35
  function buildSummaryPrompt(content, tier, title, tags, entities, relatedTitles) {
37
36
  const context = [];
@@ -75,51 +74,35 @@ Content:
75
74
  ${content}`;
76
75
  }
77
76
  export async function runSummarizeStep(t, config) {
78
- const timeline = getDb(t, 'timeline');
79
- const sleep = ensureSleepSchema(t);
77
+ const sleepRepo = getStorage().repositories.sleep;
78
+ // Self-sufficiency parity: ensure the sleep schema at entry (standalone-safe).
79
+ await sleepRepo.ensureSchema(t);
80
80
  let summarized = 0;
81
81
  const errors = [];
82
82
  const startTime = Date.now();
83
83
  try {
84
- const pendingItems = sleep.prepare(`
85
- SELECT id as queue_id, item_id
86
- FROM maintenance_queue
87
- WHERE task = 'resummarize' AND processed_at IS NULL
88
- ORDER BY priority DESC
89
- LIMIT ?
90
- `).all(config.maxSummariesPerRun);
84
+ const pendingItems = await sleepRepo.fetchResummarizeQueue(t, config.maxSummariesPerRun);
91
85
  const remaining = config.maxSummariesPerRun - pendingItems.length;
92
- const needsSummary = remaining > 0 ? timeline.prepare(`
93
- SELECT id FROM timeline_events
94
- WHERE (summary IS NULL
95
- OR length(summary) < 50
96
- OR summary LIKE '{%'
97
- OR summary LIKE '# %'
98
- OR length(summary) > 500)
99
- AND (last_enriched IS NULL OR last_enriched < datetime('now', '-3 days'))
100
- ORDER BY priority DESC
101
- LIMIT ?
102
- `).all(remaining) : [];
86
+ const needsSummary = remaining > 0
87
+ ? await getStorage().domain.sleep.fetchStaleSummaryIds(t, remaining)
88
+ : [];
103
89
  const allItemIds = new Set();
104
90
  const queueMap = new Map();
105
91
  for (const p of pendingItems) {
106
92
  allItemIds.add(p.item_id);
107
93
  queueMap.set(p.item_id, p.queue_id);
108
94
  }
109
- for (const n of needsSummary) {
110
- allItemIds.add(n.id.toString());
95
+ for (const id of needsSummary) {
96
+ allItemIds.add(id.toString());
111
97
  }
112
98
  if (allItemIds.size === 0)
113
99
  return { count: 0 };
114
100
  for (const itemId of allItemIds) {
115
101
  try {
116
- const item = timeline.prepare(`
117
- SELECT id, source_path, title, tier, summary, tags_json, entities_json
118
- FROM timeline_events WHERE id = ?
119
- `).get(parseInt(itemId));
102
+ const item = await sleepRepo.getEventForSummary(t, parseInt(itemId));
120
103
  if (!item) {
121
104
  if (queueMap.has(itemId))
122
- markProcessed(sleep, queueMap.get(itemId));
105
+ await markProcessed(t, queueMap.get(itemId));
123
106
  continue;
124
107
  }
125
108
  let content = '';
@@ -138,28 +121,21 @@ export async function runSummarizeStep(t, config) {
138
121
  }
139
122
  catch {
140
123
  if (queueMap.has(itemId))
141
- markProcessed(sleep, queueMap.get(itemId));
124
+ await markProcessed(t, queueMap.get(itemId));
142
125
  continue;
143
126
  }
144
127
  }
145
128
  if (content.length < 20) {
146
129
  if (queueMap.has(itemId))
147
- markProcessed(sleep, queueMap.get(itemId));
130
+ await markProcessed(t, queueMap.get(itemId));
148
131
  continue;
149
132
  }
150
133
  const tags = safeParseArray(item.tags_json);
151
134
  const entities = safeParseArray(item.entities_json);
152
- const edges = sleep.prepare(`
153
- SELECT
154
- CASE WHEN from_path = ? THEN to_path ELSE from_path END as related_path,
155
- shared_tags
156
- FROM memory_edges
157
- WHERE from_path = ? OR to_path = ?
158
- LIMIT 3
159
- `).all(item.source_path, item.source_path, item.source_path);
135
+ const edges = await sleepRepo.getSummaryEdges(t, item.source_path, 3);
160
136
  const relatedTitles = [];
161
137
  for (const edge of edges) {
162
- const related = timeline.prepare(`SELECT title FROM timeline_events WHERE source_path = ?`).get(edge.related_path);
138
+ const related = await getStorage().repositories.timeline.getEventByPath(t, edge.related_path);
163
139
  if (related?.title)
164
140
  relatedTitles.push(related.title);
165
141
  }
@@ -178,24 +154,16 @@ export async function runSummarizeStep(t, config) {
178
154
  .replace(/^for Personal Knowledge System[:\s]*/i, '')
179
155
  .trim();
180
156
  if (newSummary && newSummary.length > 20) {
181
- timeline.prepare(`
182
- UPDATE timeline_events
183
- SET summary = ?, last_enriched = datetime('now')
184
- WHERE id = ?
185
- `).run(newSummary, item.id);
157
+ await sleepRepo.updateEventSummary(t, item.id, newSummary);
186
158
  summarized++;
187
159
  }
188
160
  if (queueMap.has(itemId))
189
- markProcessed(sleep, queueMap.get(itemId));
161
+ await markProcessed(t, queueMap.get(itemId));
190
162
  }
191
163
  catch (err) {
192
164
  errors.push(`summarize ${itemId}: ${String(err)}`);
193
165
  if (queueMap.has(itemId)) {
194
- sleep.prepare(`
195
- UPDATE maintenance_queue
196
- SET processed_at = datetime('now'), error_message = ?
197
- WHERE id = ?
198
- `).run(String(err), queueMap.get(itemId));
166
+ await sleepRepo.markQueueError(t, queueMap.get(itemId), String(err));
199
167
  }
200
168
  }
201
169
  }
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../src/sleep/steps/summarize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../src/sleep/steps/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AASjD,SAAS,cAAc,CAAC,IAAmB;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACzC,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5F,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,CAAgB,EAAE,OAAe;IAC5D,MAAM,UAAU,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAe,EACf,IAAY,EACZ,KAAoB,EACpB,IAAc,EACd,QAAkB,EAClB,aAAuB;IAEvB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5F,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAErF,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO;;;;;;;EAOT,YAAY;;EAEZ,OAAO,EAAE,CAAC;IACV,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;;;EAGT,YAAY;;EAEZ,OAAO,EAAE,CAAC;IACV,CAAC;IAED,OAAO;;;;;;EAMP,YAAY;;EAEZ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,CAAgB,EAChB,MAAmB;IAEnB,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;IAClD,+EAA+E;IAC/E,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAEzF,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC;QAClE,MAAM,YAAY,GAAG,SAAS,GAAG,CAAC;YAChC,CAAC,CAAC,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC;YACpE,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QACjG,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAAC,CAAC;QAEjE,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAE/C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAErE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;wBAAE,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC;oBACxE,SAAS;gBACX,CAAC;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;oBAC3B,IAAI,IAAI,CAAC,KAAK;wBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;wBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvE,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;wBACzD,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAClE,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;4BAAE,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC;wBACxE,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBACxB,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;wBAAE,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC;oBACxE,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAEpD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAEtE,MAAM,aAAa,GAAa,EAAE,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC9F,IAAI,OAAO,EAAE,KAAK;wBAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACxD,CAAC;gBAED,MAAM,MAAM,GAAG,kBAAkB,CAC/B,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CACxE,CAAC;gBAEF,MAAM,YAAY,GAAG,MAAM,SAAS,CAClC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAC5D;oBACE,OAAO,EAAE,CAAC;oBACV,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;wBACxB,OAAO,CAAC,IAAI,CAAC,sCAAsC,OAAO,WAAW,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjG,CAAC;iBACF,CACF,CAAC;gBAEF,MAAM,UAAU,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;qBACpC,OAAO,CAAC,+GAA+G,EAAE,EAAE,CAAC;qBAC5H,OAAO,CAAC,yLAAyL,EAAE,EAAE,CAAC;qBACtM,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;qBAC/B,OAAO,CAAC,uCAAuC,EAAE,EAAE,CAAC;qBACpD,IAAI,EAAE,CAAC;gBAEV,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBACzC,MAAM,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBAC3D,UAAU,EAAE,CAAC;gBACf,CAAC;gBAED,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,MAAM,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,aAAa,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzB,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,OAAO;QACL,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAC/C,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../src/sleep/steps/tag.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAKjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,UAAU,CAC9B,CAAC,EAAE,aAAa,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,SAAS,CAAC,CAmFpB"}
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../src/sleep/steps/tag.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAKjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,UAAU,CAC9B,CAAC,EAAE,aAAa,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,SAAS,CAAC,CAgEpB"}
@@ -7,26 +7,18 @@
7
7
  * stored summary/title.
8
8
  */
9
9
  import { promises as fs } from 'node:fs';
10
- import { getDb } from '@kybernesis/brain-storage-sqlite';
10
+ import { getStorage } from '../../storage.js';
11
11
  import { callClaude } from '../../claude-call.js';
12
12
  import { withRetry } from '../../utils/retry.js';
13
13
  import { extractJsonArray } from '../../utils/extract-json.js';
14
14
  export async function runTagStep(t, config) {
15
15
  if (!config.enableTagging)
16
16
  return { count: 0 };
17
- const db = getDb(t, 'timeline');
18
17
  const staleDate = new Date(Date.now() - config.tagStaleDays * 24 * 60 * 60 * 1000).toISOString();
19
18
  let tagged = 0;
20
19
  const errors = [];
21
20
  try {
22
- const items = db.prepare(`
23
- SELECT id, source_path, title, summary, tags_json, topics_json
24
- FROM timeline_events
25
- WHERE (last_enriched IS NULL OR last_enriched < ?)
26
- OR (tags_json IS NULL OR tags_json = '[]')
27
- ORDER BY priority DESC
28
- LIMIT ?
29
- `).all(staleDate, config.maxTagsPerRun);
21
+ const items = await getStorage().repositories.sleep.fetchTagCandidates(t, staleDate, config.maxTagsPerRun);
30
22
  if (items.length === 0)
31
23
  return { count: 0 };
32
24
  for (const item of items) {
@@ -61,11 +53,7 @@ Example response: ["meeting", "pricing", "strategy", "planning"]`, { model: 'hai
61
53
  ...tags.filter((x) => typeof x === 'string').map(s => s.toLowerCase()),
62
54
  ...existingTopics.map(s => s.toLowerCase()),
63
55
  ])];
64
- db.prepare(`
65
- UPDATE timeline_events
66
- SET tags_json = ?, last_enriched = datetime('now')
67
- WHERE id = ?
68
- `).run(JSON.stringify(allTags), item.id);
56
+ await getStorage().repositories.sleep.updateEventTags(t, item.id, JSON.stringify(allTags));
69
57
  tagged++;
70
58
  }
71
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../../src/sleep/steps/tag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../../src/sleep/steps/tag.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../../src/sleep/steps/tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC/B,CAAC,EAAE,aAAa,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC,CA6FrB"}
1
+ {"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../../src/sleep/steps/tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,WAAW,CAC/B,CAAC,EAAE,aAAa,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC,CA8ErB"}
@@ -8,36 +8,29 @@
8
8
  * edgeCount). A v1 port had AND across these signals, which dropped most
9
9
  * promotions — the port-faithful library carries KAD's OR shape verbatim.
10
10
  */
11
- import { getDb } from '@kybernesis/brain-storage-sqlite';
12
- import { ensureSleepSchema } from '../db.js';
11
+ import { getStorage } from '../../storage.js';
13
12
  export async function runTierStep(t, config) {
14
- const timeline = getDb(t, 'timeline');
15
- const sleep = ensureSleepSchema(t);
13
+ const sleepRepo = getStorage().repositories.sleep;
14
+ // Self-sufficiency parity: the original step ensured the sleep schema at entry,
15
+ // so a standalone call (outside runSleepCycleNow) doesn't hit 'no such table'.
16
+ await sleepRepo.ensureSchema(t);
16
17
  const now = Date.now();
17
18
  const DAY_MS = 24 * 60 * 60 * 1000;
18
19
  let changed = 0;
19
20
  const errors = [];
20
21
  try {
21
- const items = timeline.prepare(`
22
- SELECT id, source_path, priority, decay_score, tier, last_accessed, access_count, is_pinned
23
- FROM timeline_events
24
- LIMIT ?
25
- `).all(config.batchSize);
22
+ const items = await sleepRepo.fetchTierCandidates(t, config.batchSize);
26
23
  for (const item of items) {
27
24
  try {
28
25
  if (item.is_pinned) {
29
26
  if (item.tier !== 'hot') {
30
- updateTier(timeline, sleep, item.id, 'hot', item.tier, 'pinned');
27
+ await updateTier(t, item.id, 'hot', item.tier, 'pinned');
31
28
  changed++;
32
29
  }
33
30
  continue;
34
31
  }
35
- const edgeData = sleep.prepare(`
36
- SELECT COUNT(*) as count, COALESCE(SUM(confidence), 0) as totalConfidence
37
- FROM memory_edges
38
- WHERE from_path = ? OR to_path = ?
39
- `).get(item.source_path, item.source_path);
40
- const relationshipScore = edgeData.totalConfidence;
32
+ const edgeData = await sleepRepo.getEdgeStats(t, item.source_path);
33
+ const relationshipScore = edgeData.total_confidence;
41
34
  const edgeCount = edgeData.count;
42
35
  const daysSinceAccess = item.last_accessed
43
36
  ? (now - new Date(item.last_accessed + 'Z').getTime()) / DAY_MS
@@ -77,7 +70,7 @@ export async function runTierStep(t, config) {
77
70
  else if (newTier === 'archive') {
78
71
  reason = 'low_activity';
79
72
  }
80
- updateTier(timeline, sleep, item.id, newTier, (item.tier || 'warm'), reason);
73
+ await updateTier(t, item.id, newTier, (item.tier || 'warm'), reason);
81
74
  changed++;
82
75
  }
83
76
  }
@@ -92,21 +85,13 @@ export async function runTierStep(t, config) {
92
85
  }
93
86
  return { count: changed, errors: errors.length > 0 ? errors : undefined };
94
87
  }
95
- function updateTier(timeline, sleep, itemId, newTier, oldTier, reason) {
96
- timeline.prepare(`
97
- UPDATE timeline_events SET tier = ? WHERE id = ?
98
- `).run(newTier, itemId);
99
- sleep.prepare(`
100
- INSERT OR REPLACE INTO maintenance_queue
101
- (item_type, item_id, task, priority, created_at)
102
- VALUES ('timeline', ?, 'resummarize', ?, datetime('now'))
103
- `).run(itemId.toString(), newTier === 'hot' ? 2 : newTier === 'warm' ? 1 : 0);
104
- try {
105
- sleep.prepare(`
106
- INSERT INTO tier_transitions (item_id, from_tier, to_tier, reason)
107
- VALUES (?, ?, ?, ?)
108
- `).run(itemId, oldTier, newTier, reason || 'threshold');
109
- }
110
- catch { /* non-critical */ }
88
+ async function updateTier(t, itemId, newTier, oldTier, reason) {
89
+ // Cross-kind, best-effort (decision 2): timeline tier write + sleep queue +
90
+ // sleep transition are separate files; the transition insert is non-critical
91
+ // (impl swallows its error), exactly as the original.
92
+ const sleepRepo = getStorage().repositories.sleep;
93
+ await sleepRepo.updateEventTier(t, itemId, newTier);
94
+ await sleepRepo.enqueueResummarize(t, itemId, newTier === 'hot' ? 2 : newTier === 'warm' ? 1 : 0);
95
+ await sleepRepo.recordTierTransition(t, itemId, oldTier, newTier, reason || 'threshold');
111
96
  }
112
97
  //# sourceMappingURL=tier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tier.js","sourceRoot":"","sources":["../../../src/sleep/steps/tier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tier.js","sourceRoot":"","sources":["../../../src/sleep/steps/tier.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  /**
2
2
  * Sleep checkpoint helpers — port of KAD's sleep/utils/checkpoint.ts.
3
3
  * Tracks which step is in progress so we can see where a crashed run died.
4
+ *
5
+ * Storage untangle (U3a): the sleep_runs UPDATE/SELECT live behind the storage
6
+ * seam (repositories.sleep); these helpers keep the JSON shape (timestamp
7
+ * injection on save, parse on read) and pass strings across the seam.
4
8
  */
5
- import type Database from 'better-sqlite3';
6
- export declare function saveCheckpoint(db: Database.Database, runId: number, step: string, data?: Record<string, unknown>): void;
7
- export declare function getLastCheckpoint(db: Database.Database, runId: number): {
9
+ import type { TenantContext } from '@kybernesis/brain-contracts';
10
+ export declare function saveCheckpoint(t: TenantContext, runId: number, step: string, data?: Record<string, unknown>): Promise<void>;
11
+ export declare function getLastCheckpoint(t: TenantContext, runId: number): Promise<{
8
12
  step: string;
9
13
  data: Record<string, unknown>;
10
- } | null;
14
+ } | null>;
11
15
  //# sourceMappingURL=checkpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../src/sleep/utils/checkpoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAON;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,GACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,CAYxD"}
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../src/sleep/utils/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,wBAAsB,cAAc,CAClC,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,iBAAiB,CACrC,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,CAOjE"}
@@ -1,21 +1,18 @@
1
1
  /**
2
2
  * Sleep checkpoint helpers — port of KAD's sleep/utils/checkpoint.ts.
3
3
  * Tracks which step is in progress so we can see where a crashed run died.
4
+ *
5
+ * Storage untangle (U3a): the sleep_runs UPDATE/SELECT live behind the storage
6
+ * seam (repositories.sleep); these helpers keep the JSON shape (timestamp
7
+ * injection on save, parse on read) and pass strings across the seam.
4
8
  */
5
- export function saveCheckpoint(db, runId, step, data) {
6
- db.prepare(`
7
- UPDATE sleep_runs
8
- SET checkpoint_step = ?,
9
- checkpoint_data = ?
10
- WHERE id = ?
11
- `).run(step, JSON.stringify({ timestamp: new Date().toISOString(), ...data }), runId);
9
+ import { getStorage } from '../../storage.js';
10
+ export async function saveCheckpoint(t, runId, step, data) {
11
+ const dataJson = JSON.stringify({ timestamp: new Date().toISOString(), ...data });
12
+ await getStorage().repositories.sleep.saveCheckpoint(t, runId, step, dataJson);
12
13
  }
13
- export function getLastCheckpoint(db, runId) {
14
- const row = db.prepare(`
15
- SELECT checkpoint_step, checkpoint_data
16
- FROM sleep_runs
17
- WHERE id = ?
18
- `).get(runId);
14
+ export async function getLastCheckpoint(t, runId) {
15
+ const row = await getStorage().repositories.sleep.getLastCheckpoint(t, runId);
19
16
  if (!row || !row.checkpoint_step)
20
17
  return null;
21
18
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../../src/sleep/utils/checkpoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,KAAa,EACb,IAAY,EACZ,IAA8B;IAE9B,EAAE,CAAC,OAAO,CAAC;;;;;GAKV,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,EAAqB,EACrB,KAAa;IAEb,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAItB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAmF,CAAC;IAEhG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,eAAe;QACzB,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;KACjE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../../src/sleep/utils/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,CAAgB,EAChB,KAAa,EACb,IAAY,EACZ,IAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAClF,MAAM,UAAU,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,CAAgB,EAChB,KAAa;IAEb,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9E,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,eAAe;QACzB,IAAI,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;KACjE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Storage seam — the swappable DI point for brain storage (Stage 1).
3
+ *
4
+ * Mirrors the LLM/embedding seam (`setLLMProvider` in claude-call.ts), with ONE
5
+ * deliberate difference: storage is load-bearing, so `getStorage()` NEVER returns
6
+ * null — it auto-defaults to the bundled SQLite provider. This is what lets
7
+ * existing consumers (KAD, KBDE, Arcana) adopt the release by bumping a version
8
+ * with ZERO code changes: they never wired storage before, and they still don't
9
+ * have to. A consumer that wants a different backend calls `setStorageProvider`
10
+ * once at startup (Stage 3, libsql).
11
+ *
12
+ * setStorageProvider(createLibsqlStorageProvider(cfg)); // Stage 3, opt-in
13
+ * getStorage(); // always resolves
14
+ * resetStorageProvider(); // tests / afterEach
15
+ */
16
+ import type { StorageProvider } from '@kybernesis/brain-contracts';
17
+ /** Override the active storage backend (e.g. libsql in Stage 3). */
18
+ export declare function setStorageProvider(p: StorageProvider): void;
19
+ /** Clear the override; the next `getStorage()` re-defaults to SQLite. */
20
+ export declare function resetStorageProvider(): void;
21
+ /** True when an explicit provider has been wired (vs the SQLite auto-default). */
22
+ export declare function storageProviderIsExplicit(): boolean;
23
+ /**
24
+ * The active storage provider. Load-bearing: never null. Falls back to the
25
+ * bundled SQLite provider so brain-core works with zero consumer wiring.
26
+ */
27
+ export declare function getStorage(): StorageProvider;
28
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAKnE,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,CAE3D;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAK5C"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Storage seam — the swappable DI point for brain storage (Stage 1).
3
+ *
4
+ * Mirrors the LLM/embedding seam (`setLLMProvider` in claude-call.ts), with ONE
5
+ * deliberate difference: storage is load-bearing, so `getStorage()` NEVER returns
6
+ * null — it auto-defaults to the bundled SQLite provider. This is what lets
7
+ * existing consumers (KAD, KBDE, Arcana) adopt the release by bumping a version
8
+ * with ZERO code changes: they never wired storage before, and they still don't
9
+ * have to. A consumer that wants a different backend calls `setStorageProvider`
10
+ * once at startup (Stage 3, libsql).
11
+ *
12
+ * setStorageProvider(createLibsqlStorageProvider(cfg)); // Stage 3, opt-in
13
+ * getStorage(); // always resolves
14
+ * resetStorageProvider(); // tests / afterEach
15
+ */
16
+ import { createSqliteStorageProvider } from '@kybernesis/brain-storage-sqlite';
17
+ let _storage = null;
18
+ /** Override the active storage backend (e.g. libsql in Stage 3). */
19
+ export function setStorageProvider(p) {
20
+ _storage = p;
21
+ }
22
+ /** Clear the override; the next `getStorage()` re-defaults to SQLite. */
23
+ export function resetStorageProvider() {
24
+ _storage = null;
25
+ }
26
+ /** True when an explicit provider has been wired (vs the SQLite auto-default). */
27
+ export function storageProviderIsExplicit() {
28
+ return _storage !== null;
29
+ }
30
+ /**
31
+ * The active storage provider. Load-bearing: never null. Falls back to the
32
+ * bundled SQLite provider so brain-core works with zero consumer wiring.
33
+ */
34
+ export function getStorage() {
35
+ if (!_storage) {
36
+ _storage = createSqliteStorageProvider();
37
+ }
38
+ return _storage;
39
+ }
40
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,IAAI,QAAQ,GAA2B,IAAI,CAAC;AAE5C,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAAC,CAAkB;IACnD,QAAQ,GAAG,CAAC,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,oBAAoB;IAClC,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,yBAAyB;IACvC,OAAO,QAAQ,KAAK,IAAI,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,2BAA2B,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,5 +1,12 @@
1
- import type { TenantContext } from '@kybernesis/brain-contracts';
2
- import type { EventType, TimelineEvent, TimelineEventInput } from '@kybernesis/brain-contracts';
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 type { TenantContext, EventType, TimelineEvent, TimelineEventInput } from '@kybernesis/brain-contracts';
8
+ export type { TimelineQuery, TimelineStats } from '@kybernesis/brain-contracts';
9
+ /** Clear the SQLite schema-init cache (test/utility). */
3
10
  export declare function resetTimelineDb(t?: TenantContext): void;
4
11
  export declare function addToTimeline(t: TenantContext, event: TimelineEventInput): Promise<number>;
5
12
  export declare function removeFromTimeline(t: TenantContext, sourcePath: string): Promise<boolean>;
@@ -7,17 +14,7 @@ export declare function updateTimelineEvent(t: TenantContext, id: number, update
7
14
  export declare function deleteTimelineEventById(t: TenantContext, id: number): Promise<boolean>;
8
15
  export declare function getEventById(t: TenantContext, id: number): Promise<TimelineEvent | null>;
9
16
  export declare function getEventByPath(t: TenantContext, sourcePath: string): Promise<TimelineEvent | null>;
10
- export interface TimelineQuery {
11
- start?: string;
12
- end?: string;
13
- type?: EventType;
14
- search?: string;
15
- entities?: string[];
16
- topics?: string[];
17
- limit?: number;
18
- offset?: number;
19
- }
20
- export declare function queryTimeline(t: TenantContext, query?: TimelineQuery): Promise<TimelineEvent[]>;
17
+ export declare function queryTimeline(t: TenantContext, query?: import('@kybernesis/brain-contracts').TimelineQuery): Promise<TimelineEvent[]>;
21
18
  export declare function getRecentActivity(t: TenantContext, limit?: number): Promise<TimelineEvent[]>;
22
19
  export declare function getActivityOnDate(t: TenantContext, date: string): Promise<TimelineEvent[]>;
23
20
  export declare function getActivityInRange(t: TenantContext, start: string, end: string): Promise<TimelineEvent[]>;
@@ -30,15 +27,7 @@ export declare function findRecentDuplicate(t: TenantContext, title: string, wit
30
27
  title: string;
31
28
  } | null>;
32
29
  export declare function incrementTimelineEventCount(t: TenantContext, eventId: number): Promise<void>;
33
- export interface TimelineStats {
34
- totalEvents: number;
35
- byType: Record<EventType, number>;
36
- dateRange: {
37
- earliest: string | null;
38
- latest: string | null;
39
- };
40
- }
41
- export declare function getTimelineStats(t: TenantContext): Promise<TimelineStats>;
30
+ export declare function getTimelineStats(t: TenantContext): Promise<import('@kybernesis/brain-contracts').TimelineStats>;
42
31
  export declare function addConversationToTimeline(t: TenantContext, _conversationId: string, sourcePath: string, startedAt: string, finishedAt: string | undefined, title: string, summary: string, entities: string[], topics: string[], arpMetadata?: {
43
32
  project_id?: string;
44
33
  tags?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}