@agentshouse/mdruntime 0.1.0-c069136dcb4e8 → 0.1.0-c09bf842921ff

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 (111) hide show
  1. package/README.md +1 -1
  2. package/dist/adapter.d.ts +51 -22
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +3 -10
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +21 -56
  7. package/dist/bootstrap.d.ts +2 -2
  8. package/dist/bootstrap.d.ts.map +1 -1
  9. package/dist/bootstrap.js +9 -8
  10. package/dist/chain.d.ts +2 -1
  11. package/dist/chain.d.ts.map +1 -1
  12. package/dist/client.d.ts +9 -5
  13. package/dist/client.d.ts.map +1 -1
  14. package/dist/client.js +2 -1
  15. package/dist/collection.d.ts +2 -1
  16. package/dist/collection.d.ts.map +1 -1
  17. package/dist/compile.d.ts +1 -6
  18. package/dist/compile.d.ts.map +1 -1
  19. package/dist/compile.js +90 -277
  20. package/dist/connection.d.ts +8 -7
  21. package/dist/connection.d.ts.map +1 -1
  22. package/dist/connection.js +362 -313
  23. package/dist/context.d.ts +2 -0
  24. package/dist/context.d.ts.map +1 -0
  25. package/dist/context.js +7 -0
  26. package/dist/conversation.d.ts +14 -8
  27. package/dist/conversation.d.ts.map +1 -1
  28. package/dist/conversation.js +85 -67
  29. package/dist/durability.d.ts +6 -0
  30. package/dist/durability.d.ts.map +1 -1
  31. package/dist/entry.d.ts +2 -2
  32. package/dist/entry.d.ts.map +1 -1
  33. package/dist/entry.js +16 -7
  34. package/dist/host.d.ts +3 -6
  35. package/dist/host.d.ts.map +1 -1
  36. package/dist/host.js +16 -23
  37. package/dist/identity.d.ts +0 -1
  38. package/dist/identity.d.ts.map +1 -1
  39. package/dist/identity.js +0 -3
  40. package/dist/index.d.ts +10 -7
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3 -1
  43. package/dist/job.d.ts +14 -0
  44. package/dist/job.d.ts.map +1 -0
  45. package/dist/job.js +28 -0
  46. package/dist/live.d.ts +2 -1
  47. package/dist/live.d.ts.map +1 -1
  48. package/dist/live.js +10 -7
  49. package/dist/memory.d.ts +8 -4
  50. package/dist/memory.d.ts.map +1 -1
  51. package/dist/memory.js +116 -66
  52. package/dist/messages.d.ts +2 -2
  53. package/dist/messages.d.ts.map +1 -1
  54. package/dist/messages.js +15 -16
  55. package/dist/model.d.ts +2 -7
  56. package/dist/model.d.ts.map +1 -1
  57. package/dist/model.js +0 -3
  58. package/dist/observation.d.ts +2 -2
  59. package/dist/observation.d.ts.map +1 -1
  60. package/dist/observation.js +7 -2
  61. package/dist/query.d.ts +4 -209
  62. package/dist/query.d.ts.map +1 -1
  63. package/dist/query.js +3 -505
  64. package/dist/reach.d.ts +7 -7
  65. package/dist/reach.d.ts.map +1 -1
  66. package/dist/reach.js +33 -44
  67. package/dist/react.d.ts +3 -1
  68. package/dist/react.d.ts.map +1 -1
  69. package/dist/readiness.d.ts +0 -2
  70. package/dist/readiness.d.ts.map +1 -1
  71. package/dist/refresh.d.ts +2 -1
  72. package/dist/refresh.d.ts.map +1 -1
  73. package/dist/refresh.js +25 -1
  74. package/dist/replica.d.ts +8 -5
  75. package/dist/replica.d.ts.map +1 -1
  76. package/dist/replica.js +27 -9
  77. package/dist/room-draft.d.ts +4 -3
  78. package/dist/room-draft.d.ts.map +1 -1
  79. package/dist/room-draft.js +65 -52
  80. package/dist/rows.d.ts +14 -21
  81. package/dist/rows.d.ts.map +1 -1
  82. package/dist/rows.js +48 -184
  83. package/dist/save.d.ts.map +1 -1
  84. package/dist/save.js +1 -1
  85. package/dist/search.d.ts +12 -63
  86. package/dist/search.d.ts.map +1 -1
  87. package/dist/search.js +9 -52
  88. package/dist/store.d.ts +5 -7
  89. package/dist/store.d.ts.map +1 -1
  90. package/dist/store.js +11 -15
  91. package/dist/stored.d.ts +3 -4
  92. package/dist/stored.d.ts.map +1 -1
  93. package/dist/stored.js +90 -126
  94. package/dist/tables.d.ts +8 -6
  95. package/dist/tables.d.ts.map +1 -1
  96. package/dist/tables.js +22 -13
  97. package/dist/validation.d.ts.map +1 -1
  98. package/dist/validation.js +7 -4
  99. package/dist/windows.d.ts +1 -12
  100. package/dist/windows.d.ts.map +1 -1
  101. package/dist/windows.js +2 -75
  102. package/dist/wire.d.ts +9 -4
  103. package/dist/wire.d.ts.map +1 -1
  104. package/dist/wire.js +3 -1
  105. package/package.json +2 -2
  106. package/dist/fulltext.d.ts +0 -27
  107. package/dist/fulltext.d.ts.map +0 -1
  108. package/dist/fulltext.js +0 -370
  109. package/dist/words.d.ts +0 -19
  110. package/dist/words.d.ts.map +0 -1
  111. package/dist/words.js +0 -156
package/dist/stored.js CHANGED
@@ -1,16 +1,17 @@
1
+ import { sql } from '@agentshouse/mdmodel';
1
2
  import { composedOf } from './collection.js';
2
- import { indexDocument, unindexAll, unindexDocuments } from './fulltext.js';
3
- import { described, derived } from './rows.js';
3
+ import { described, derived, heldOf } from './rows.js';
4
4
  export const REPLICA_TABLES = [
5
- 'CREATE TABLE replica_keys (key INTEGER PRIMARY KEY AUTOINCREMENT, locator TEXT NOT NULL, transfer TEXT NOT NULL, fingerprint TEXT NOT NULL, rederiving INTEGER, searching INTEGER)',
5
+ 'CREATE TABLE replica_keys (key INTEGER PRIMARY KEY AUTOINCREMENT, locator TEXT NOT NULL, transfer TEXT NOT NULL, fingerprint TEXT NOT NULL, rederiving INTEGER)',
6
6
  'CREATE TABLE replica_rooms (locator TEXT PRIMARY KEY, key INTEGER NOT NULL, record TEXT NOT NULL) WITHOUT ROWID',
7
- 'CREATE TABLE replica_entries (id INTEGER PRIMARY KEY, key INTEGER NOT NULL, layer INTEGER NOT NULL, path TEXT NOT NULL, visible INTEGER NOT NULL, present INTEGER NOT NULL, queried INTEGER NOT NULL, binary TEXT, revision TEXT, file_id TEXT, change TEXT, written TEXT, type TEXT, declared TEXT, folder TEXT NOT NULL, fields TEXT, content TEXT)',
7
+ 'CREATE TABLE replica_models (identity TEXT NOT NULL, version TEXT NOT NULL, schema TEXT NOT NULL, PRIMARY KEY (identity, version)) WITHOUT ROWID',
8
+ 'CREATE TABLE replica_entries (id INTEGER PRIMARY KEY, key INTEGER NOT NULL, layer INTEGER NOT NULL, path TEXT NOT NULL, visible INTEGER NOT NULL, present INTEGER NOT NULL, queried INTEGER NOT NULL, binary TEXT, revision TEXT, file_id TEXT, change TEXT, written TEXT, type TEXT, declared TEXT, folder TEXT NOT NULL, fields TEXT, links TEXT, content TEXT)',
8
9
  'CREATE UNIQUE INDEX replica_entries_path ON replica_entries (key, layer, path)',
9
10
  'CREATE INDEX replica_entries_visible ON replica_entries (key, visible, present, path, binary)',
10
11
  'CREATE INDEX replica_entries_folder ON replica_entries (key, folder, path)',
11
12
  'CREATE INDEX replica_entries_type ON replica_entries (key, type, visible, present, queried, folder)',
12
13
  'CREATE INDEX replica_entries_key ON replica_entries (key)',
13
- 'CREATE TABLE replica_values (doc INTEGER NOT NULL, keys TEXT NOT NULL, places TEXT NOT NULL, item INTEGER NOT NULL, kind TEXT NOT NULL, value, size INTEGER, PRIMARY KEY (doc, keys, places, item)) WITHOUT ROWID',
14
+ sql.VALUE_TABLE,
14
15
  'CREATE TABLE replica_links (doc INTEGER NOT NULL, key INTEGER NOT NULL, kind TEXT NOT NULL, keys TEXT NOT NULL, places TEXT NOT NULL, target TEXT NOT NULL, field TEXT NOT NULL, PRIMARY KEY (doc, kind, keys, places, target)) WITHOUT ROWID',
15
16
  'CREATE INDEX replica_links_target ON replica_links (key, target, kind, keys)',
16
17
  'CREATE TABLE replica_folders (key INTEGER NOT NULL, layer INTEGER NOT NULL, path TEXT NOT NULL, present INTEGER NOT NULL, PRIMARY KEY (key, layer, path)) WITHOUT ROWID',
@@ -29,8 +30,7 @@ const ABSENT = {
29
30
  queried: false,
30
31
  folder: '',
31
32
  fields: null,
32
- values: [],
33
- links: [],
33
+ links: null,
34
34
  };
35
35
  function text(value) {
36
36
  return typeof value === 'string' ? value : null;
@@ -51,17 +51,11 @@ function dropDerived(connection, doc) {
51
51
  connection.run('DELETE FROM replica_values WHERE doc = ?', [doc]);
52
52
  connection.run('DELETE FROM replica_links WHERE doc = ?', [doc]);
53
53
  }
54
- function scalarText(value) {
55
- if (value === Infinity)
56
- return 'Infinity';
57
- if (value === -Infinity)
58
- return '-Infinity';
59
- return JSON.stringify(value);
60
- }
61
- function writeDerived(connection, doc, key, made) {
54
+ function writeDerived(connection, doc, key, path, held, composition) {
55
+ const made = derived(path, held, composition);
62
56
  if (made.values.length > 0) {
63
- const rows = made.values.map((value) => `[${JSON.stringify(value.keys)},${JSON.stringify(value.places)},${value.item},${JSON.stringify(value.kind)},${scalarText(value.value)},${JSON.stringify(value.size)}]`);
64
- connection.run('INSERT INTO replica_values (doc, keys, places, item, kind, value, size) SELECT ?, value ->> 0, value ->> 1, value ->> 2, value ->> 3, value ->> 4, value ->> 5 FROM json_each(?)', [doc, `[${rows.join(',')}]`]);
57
+ const inserted = sql.insertedValues(doc, made.values);
58
+ connection.run(inserted.sql, inserted.bind);
65
59
  }
66
60
  if (made.links.length > 0) {
67
61
  connection.run('INSERT OR IGNORE INTO replica_links (doc, key, kind, keys, places, target, field) SELECT ?, ?, value ->> 0, value ->> 1, value ->> 2, value ->> 3, value ->> 4 FROM json_each(?)', [
@@ -75,27 +69,15 @@ function entryId(connection, key, layer, path) {
75
69
  const [row] = connection.rows('SELECT id FROM replica_entries WHERE key = ? AND layer = ? AND path = ?', [key, layer, path]);
76
70
  return row === undefined ? null : number(row.id);
77
71
  }
78
- function words() {
79
- return { dropped: [], made: [] };
80
- }
81
- function wordsWritten(connection, owed) {
82
- unindexDocuments(connection, owed.dropped);
83
- for (const { id, path, content } of owed.made)
84
- indexDocument(connection, id, path, content);
85
- }
86
- function removeEntry(connection, key, layer, path, owed) {
72
+ function removeEntry(connection, key, layer, path) {
87
73
  const id = entryId(connection, key, layer, path);
88
74
  if (id === null)
89
75
  return;
90
76
  dropDerived(connection, id);
91
- owed.dropped.push(id);
92
77
  connection.run('DELETE FROM replica_entries WHERE id = ?', [id]);
93
78
  }
94
- function heldIds(connection, sql, bind) {
95
- return connection.rows(sql, bind).map((row) => number(row.id));
96
- }
97
79
  function insertEntry(connection, key, layer, entry, present, made) {
98
- connection.run('INSERT INTO replica_entries (key, layer, path, visible, present, queried, content, binary, revision, file_id, change, written, type, declared, folder, fields) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [
80
+ connection.run('INSERT INTO replica_entries (key, layer, path, visible, present, queried, content, binary, revision, file_id, change, written, type, declared, folder, fields, links) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [
99
81
  key,
100
82
  layer,
101
83
  entry.path,
@@ -112,26 +94,24 @@ function insertEntry(connection, key, layer, entry, present, made) {
112
94
  made.declared,
113
95
  made.folder,
114
96
  made.fields,
97
+ made.links,
115
98
  ]);
116
99
  }
117
100
  function textOf(entry) {
118
101
  return entry.binary === null ? entry.content : null;
119
102
  }
120
- function putEntry(connection, key, layer, entry, present, composition, owed, searched = true) {
121
- removeEntry(connection, key, layer, entry.path, owed);
103
+ function putEntry(connection, key, layer, entry, present, composition) {
104
+ removeEntry(connection, key, layer, entry.path);
122
105
  const content = textOf(entry);
123
- const made = present ? derived(entry.path, content, composition) : ABSENT;
124
- insertEntry(connection, key, layer, entry, present, made);
106
+ insertEntry(connection, key, layer, entry, present, present ? described(entry.path, content, entry.facts) : ABSENT);
125
107
  if (!present)
126
108
  return;
127
109
  const id = entryId(connection, key, layer, entry.path);
128
- writeDerived(connection, id, key, made);
129
- if (searched && content !== null && made.queried)
130
- owed.made.push({ id, path: entry.path, content });
110
+ writeDerived(connection, id, key, entry.path, heldOf(entry.path, content, entry.facts), composition);
131
111
  }
132
- function placeEntry(connection, key, entry, owed) {
133
- removeEntry(connection, key, CONFIRMED, entry.path, owed);
134
- insertEntry(connection, key, CONFIRMED, entry, true, described(entry.path, textOf(entry)));
112
+ function placeEntry(connection, key, entry) {
113
+ removeEntry(connection, key, CONFIRMED, entry.path);
114
+ insertEntry(connection, key, CONFIRMED, entry, true, described(entry.path, textOf(entry), entry.facts));
135
115
  }
136
116
  function revealed(connection, key, touched) {
137
117
  if (touched.length === 0)
@@ -140,7 +120,7 @@ function revealed(connection, key, touched) {
140
120
  }
141
121
  function newKey(connection, locator, transfer, fingerprint, built) {
142
122
  const owed = built ? null : 0;
143
- connection.run('INSERT INTO replica_keys (locator, transfer, fingerprint, rederiving, searching) VALUES (?, ?, ?, ?, ?)', [locator, transfer, fingerprint, owed, owed]);
123
+ connection.run('INSERT INTO replica_keys (locator, transfer, fingerprint, rederiving) VALUES (?, ?, ?, ?)', [locator, transfer, fingerprint, owed]);
144
124
  const [row] = connection.rows('SELECT last_insert_rowid() AS key');
145
125
  return number(row.key);
146
126
  }
@@ -153,25 +133,20 @@ function recomposed(connection, key, fingerprint) {
153
133
  }
154
134
  export function entered(connection, locator, composition, rows) {
155
135
  const key = newKey(connection, locator, '', composedOf(composition).fingerprint, true);
156
- const owed = words();
157
- for (const entry of rows) {
158
- putEntry(connection, key, CONFIRMED, entry, true, composition, owed, false);
159
- }
160
- wordsWritten(connection, owed);
136
+ for (const entry of rows)
137
+ putEntry(connection, key, CONFIRMED, entry, true, composition);
161
138
  return key;
162
139
  }
163
140
  export function stage(connection, request) {
164
141
  const key = request.key ??
165
142
  newKey(connection, request.locator, request.transfer, request.fingerprint, false);
166
143
  recomposed(connection, key, request.fingerprint);
167
- connection.run('UPDATE replica_keys SET rederiving = coalesce(rederiving, last), searching = coalesce(searching, last) FROM (SELECT coalesce(max(id), 0) AS last FROM replica_entries) WHERE key = ?', [key]);
168
- const owed = words();
144
+ connection.run('UPDATE replica_keys SET rederiving = coalesce(rederiving, last) FROM (SELECT coalesce(max(id), 0) AS last FROM replica_entries) WHERE key = ?', [key]);
169
145
  for (const entry of request.entries)
170
- placeEntry(connection, key, entry, owed);
146
+ placeEntry(connection, key, entry);
171
147
  for (const path of request.folders) {
172
148
  connection.run('INSERT OR REPLACE INTO replica_folders (key, layer, path, present) VALUES (?, ?, ?, 1)', [key, CONFIRMED, path]);
173
149
  }
174
- wordsWritten(connection, owed);
175
150
  return key;
176
151
  }
177
152
  export function refreshing(connection, request) {
@@ -180,9 +155,8 @@ export function refreshing(connection, request) {
180
155
  return null;
181
156
  recomposed(connection, request.key, request.composed.fingerprint);
182
157
  const composition = request.composed.composition;
183
- const owed = words();
184
158
  for (const entry of request.entries) {
185
- putEntry(connection, request.key, REFRESHED, entry, true, composition, owed);
159
+ putEntry(connection, request.key, REFRESHED, entry, true, composition);
186
160
  }
187
161
  for (const path of request.removals) {
188
162
  putEntry(connection, request.key, REFRESHED, {
@@ -193,7 +167,8 @@ export function refreshing(connection, request) {
193
167
  fileId: null,
194
168
  change: null,
195
169
  written: null,
196
- }, false, composition, owed);
170
+ facts: null,
171
+ }, false, composition);
197
172
  }
198
173
  for (const [list, present] of [
199
174
  [request.folders, 1],
@@ -203,11 +178,9 @@ export function refreshing(connection, request) {
203
178
  connection.run('INSERT OR REPLACE INTO replica_folders (key, layer, path, present) VALUES (?, ?, ?, ?)', [request.key, REFRESHED, path, present]);
204
179
  }
205
180
  }
206
- wordsWritten(connection, owed);
207
181
  return null;
208
182
  }
209
183
  function dropLayer(connection, key, layer) {
210
- unindexDocuments(connection, heldIds(connection, 'SELECT id FROM replica_entries WHERE key = ? AND layer = ?', [key, layer]));
211
184
  for (const table of ['replica_values', 'replica_links']) {
212
185
  connection.run(`DELETE FROM ${table} WHERE doc IN (SELECT id FROM replica_entries WHERE key = ? AND layer = ?)`, [key, layer]);
213
186
  }
@@ -226,7 +199,6 @@ function refreshedPaths(connection, key) {
226
199
  function applyRefresh(connection, key) {
227
200
  const touched = refreshedPaths(connection, key);
228
201
  const replaced = `SELECT c.id FROM replica_entries c JOIN replica_entries r ON r.key = c.key AND r.layer = ${REFRESHED} AND r.path = c.path WHERE c.key = ? AND c.layer = ${CONFIRMED}`;
229
- unindexDocuments(connection, heldIds(connection, replaced, [key]));
230
202
  for (const table of ['replica_values', 'replica_links']) {
231
203
  connection.run(`DELETE FROM ${table} WHERE doc IN (${replaced})`, [key]);
232
204
  }
@@ -274,35 +246,47 @@ function commitRoom(connection, room) {
274
246
  for (const path of applyRefresh(connection, room.key))
275
247
  touched.add(path);
276
248
  }
277
- const owed = words();
278
249
  for (const entry of room.confirmed?.set ?? []) {
279
- putEntry(connection, room.key, CONFIRMED, entry, true, composition, owed);
250
+ putEntry(connection, room.key, CONFIRMED, entry, true, composition);
280
251
  touched.add(entry.path);
281
252
  }
282
253
  for (const path of room.confirmed?.removed ?? []) {
283
- removeEntry(connection, room.key, CONFIRMED, path, owed);
254
+ removeEntry(connection, room.key, CONFIRMED, path);
284
255
  touched.add(path);
285
256
  }
286
257
  for (const entry of room.overlay?.set ?? []) {
287
- putEntry(connection, room.key, OVERLAY, entry, entry.present, composition, owed);
258
+ putEntry(connection, room.key, OVERLAY, entry, entry.present, composition);
288
259
  touched.add(entry.path);
289
260
  }
290
261
  for (const path of room.overlay?.cleared ?? []) {
291
- removeEntry(connection, room.key, OVERLAY, path, owed);
262
+ removeEntry(connection, room.key, OVERLAY, path);
292
263
  touched.add(path);
293
264
  }
294
265
  const changed = [...touched];
295
266
  revealed(connection, room.key, changed);
296
267
  if (room.record !== undefined) {
297
- connection.run('INSERT OR REPLACE INTO replica_rooms (locator, key, record) VALUES (?, ?, ?)', [
298
- room.locator,
299
- room.key,
300
- room.record,
301
- ]);
268
+ connection.run(KEEP_MODEL, [room.record, room.record, room.record, room.record]);
269
+ connection.run(`INSERT OR REPLACE INTO replica_rooms (locator, key, record) VALUES (?, ?, ${MODEL_LEFT})`, [room.locator, room.key, room.record, room.record, room.record]);
302
270
  }
303
- wordsWritten(connection, owed);
304
271
  return room.published === undefined ? changed : null;
305
272
  }
273
+ const SCHEMA = '$.model.snapshot.schema';
274
+ const KEEP_MODEL = `INSERT OR IGNORE INTO replica_models (identity, version, schema)
275
+ SELECT json_extract(?, '$.model.snapshot.identity'), json_extract(?, '$.model.snapshot.version'),
276
+ json_extract(?, '${SCHEMA}')
277
+ WHERE json_type(?, '${SCHEMA}') = 'text'`;
278
+ const MODEL_LEFT = `CASE WHEN json_type(?, '${SCHEMA}') = 'text' THEN json_set(?, '${SCHEMA}', json('null')) ELSE ? END`;
279
+ const UNHELD_MODELS = `DELETE FROM replica_models WHERE NOT EXISTS (
280
+ SELECT 1 FROM replica_rooms r
281
+ WHERE json_extract(r.record, '$.model.snapshot.identity') = replica_models.identity
282
+ AND json_extract(r.record, '$.model.snapshot.version') = replica_models.version
283
+ )`;
284
+ const HELD_RECORDS = `SELECT r.locator, r.key, CASE WHEN m.schema IS NULL THEN r.record
285
+ ELSE json_set(r.record, '${SCHEMA}', m.schema) END AS record
286
+ FROM replica_rooms r
287
+ LEFT JOIN replica_models m
288
+ ON m.identity = json_extract(r.record, '$.model.snapshot.identity')
289
+ AND m.version = json_extract(r.record, '$.model.snapshot.version')`;
306
290
  export function commit(connection, rooms) {
307
291
  const counted = {};
308
292
  const changed = {};
@@ -312,12 +296,11 @@ export function commit(connection, rooms) {
312
296
  counted[room.locator] = counts(connection, [
313
297
  { key: room.key, roots: room.roots ?? rootsOf(connection, room.locator) },
314
298
  ])[0];
315
- const [held] = connection.rows('SELECT rederiving, searching FROM replica_keys WHERE key = ?', [
316
- room.key,
317
- ]);
318
- indexed[room.locator] =
319
- held !== undefined && held.rederiving === null && held.searching === null;
299
+ const [held] = connection.rows('SELECT rederiving FROM replica_keys WHERE key = ?', [room.key]);
300
+ indexed[room.locator] = held !== undefined && held.rederiving === null;
320
301
  }
302
+ if (rooms.some((room) => room.record !== undefined))
303
+ connection.run(UNHELD_MODELS);
321
304
  return { counts: counted, changed, indexed };
322
305
  }
323
306
  function rootsOf(connection, locator) {
@@ -332,6 +315,7 @@ export function fenceRooms(connection, locators) {
332
315
  }
333
316
  connection.run('DELETE FROM replica_rooms WHERE locator = ?', [locator]);
334
317
  }
318
+ connection.run(UNHELD_MODELS);
335
319
  return null;
336
320
  }
337
321
  export function abandon(connection, locator) {
@@ -355,7 +339,6 @@ export function erase(connection, locator, limit) {
355
339
  return { remaining: false };
356
340
  const key = number(held.key);
357
341
  const batch = 'SELECT id FROM replica_entries WHERE key = ? ORDER BY id LIMIT ?';
358
- unindexDocuments(connection, heldIds(connection, batch, [key, limit]));
359
342
  for (const table of ['replica_values', 'replica_links']) {
360
343
  connection.run(`DELETE FROM ${table} WHERE doc IN (${batch})`, [key, limit]);
361
344
  }
@@ -375,40 +358,31 @@ function cursor(value) {
375
358
  export function rederive(connection, key, composed, bytes, ms, floor) {
376
359
  const started = performance.now();
377
360
  recomposed(connection, key, composed.fingerprint);
378
- const [held] = connection.rows('SELECT rederiving, searching FROM replica_keys WHERE key = ?', [
379
- key,
380
- ]);
361
+ const [held] = connection.rows('SELECT rederiving FROM replica_keys WHERE key = ?', [key]);
381
362
  const deriving = cursor(held?.rederiving);
382
- const searching = cursor(held?.searching);
383
- if (deriving === null && searching === null)
363
+ if (deriving === null)
384
364
  return { done: true, text: 0 };
385
365
  const composition = composed.composition;
386
- let last = Math.min(deriving ?? Infinity, searching ?? Infinity);
366
+ let last = deriving;
387
367
  let spent = 0;
388
368
  let built = 0;
389
369
  let read = false;
390
- const late = () => spent >= floor && performance.now() - started >= ms;
391
- const owed = [];
392
370
  reading: for (;;) {
393
- const rows = connection.rows('SELECT id, path, content FROM replica_entries WHERE key = ? AND present = 1 AND id > ? ORDER BY id LIMIT ?', [key, last, DERIVED_ROWS]);
371
+ const rows = connection.rows('SELECT id, path, type, fields, links, octet_length(content) AS size FROM replica_entries WHERE key = ? AND present = 1 AND id > ? ORDER BY id LIMIT ?', [key, last, DERIVED_ROWS]);
394
372
  for (const row of rows) {
395
373
  const id = number(row.id);
396
374
  const path = text(row.path);
397
- const content = text(row.content);
398
- const owedRows = deriving !== null && id > deriving;
399
- const owedWords = searching !== null && id > searching && content !== null;
400
- if (owedRows) {
401
- const made = derived(path, content, composition);
402
- dropDerived(connection, id);
403
- writeDerived(connection, id, key, made);
404
- }
405
- if (owedWords && described(path, content).queried)
406
- owed.push({ id, path, content });
407
- else if (owedRows)
408
- built += content?.length ?? 0;
375
+ const size = row.size === null ? 0 : number(row.size);
376
+ dropDerived(connection, id);
377
+ writeDerived(connection, id, key, path, {
378
+ type: text(row.type),
379
+ fields: json(row.fields),
380
+ links: json(row.links) ?? [],
381
+ }, composition);
382
+ built += size;
409
383
  last = id;
410
- spent += ENTRY_WEIGHT + (content?.length ?? 0);
411
- if (spent >= bytes || late())
384
+ spent += ENTRY_WEIGHT + size;
385
+ if (spent >= bytes || (spent >= floor && performance.now() - started >= ms))
412
386
  break reading;
413
387
  }
414
388
  if (rows.length < DERIVED_ROWS) {
@@ -416,23 +390,8 @@ export function rederive(connection, key, composed, bytes, ms, floor) {
416
390
  break;
417
391
  }
418
392
  }
419
- let searched = last;
420
- for (const [at, { id, path, content }] of owed.entries()) {
421
- indexDocument(connection, id, path, content);
422
- built += content.length;
423
- const next = owed[at + 1];
424
- if (next !== undefined && late()) {
425
- searched = next.id - 1;
426
- break;
427
- }
428
- }
429
- const done = read && searched === last;
430
- connection.run('UPDATE replica_keys SET rederiving = ?, searching = ? WHERE key = ?', [
431
- deriving === null || read ? null : Math.max(deriving, last),
432
- searching === null || done ? null : Math.max(searching, searched),
433
- key,
434
- ]);
435
- return { done, text: built };
393
+ connection.run('UPDATE replica_keys SET rederiving = ? WHERE key = ?', [read ? null : last, key]);
394
+ return { done: read, text: built };
436
395
  }
437
396
  function heldEntry(row) {
438
397
  return {
@@ -444,9 +403,20 @@ function heldEntry(row) {
444
403
  change: json(row.change),
445
404
  written: text(row.written),
446
405
  type: text(row.type),
406
+ facts: factsHeld(row),
407
+ };
408
+ }
409
+ function factsHeld(row) {
410
+ const type = text(row.declared);
411
+ if (type === null)
412
+ return null;
413
+ return {
414
+ type,
415
+ fields: json(row.fields) ?? {},
416
+ links: json(row.links) ?? [],
447
417
  };
448
418
  }
449
- const ENTRY_COLUMNS = 'e.path, e.content, e.binary, e.revision, e.file_id, e.change, e.written, e.type';
419
+ const ENTRY_COLUMNS = 'e.path, e.content, e.binary, e.revision, e.file_id, e.change, e.written, e.type, e.declared, e.fields, e.links';
450
420
  function unrefreshed(alias) {
451
421
  return `NOT EXISTS (SELECT 1 FROM replica_entries r WHERE r.key = ${alias}.key AND r.layer = ${REFRESHED} AND r.path = ${alias}.path)`;
452
422
  }
@@ -491,16 +461,12 @@ export function typed(connection, key, view, list) {
491
461
  binary: number(row.binary) === 1,
492
462
  }));
493
463
  }
494
- export function referrers(connection, key, view, targets, kinds) {
464
+ export function referrers(connection, key, view, targets) {
495
465
  if (targets.length === 0)
496
466
  return [];
497
467
  return connection
498
- .rows(`SELECT DISTINCT e.path, l.target, l.kind FROM replica_links l JOIN replica_entries e ON e.id = l.doc WHERE l.key = ? AND l.target IN (SELECT value FROM json_each(?)) AND l.kind IN (SELECT value FROM json_each(?)) AND ${viewed(view, 'e')}`, [key, paths(targets), JSON.stringify(kinds)])
499
- .map((row) => ({
500
- path: text(row.path),
501
- target: text(row.target),
502
- kind: text(row.kind),
503
- }));
468
+ .rows(`SELECT DISTINCT e.path, l.target FROM replica_links l JOIN replica_entries e ON e.id = l.doc WHERE l.key = ? AND l.target IN (SELECT value FROM json_each(?)) AND ${viewed(view, 'e')}`, [key, paths(targets)])
469
+ .map((row) => ({ path: text(row.path), target: text(row.target) }));
504
470
  }
505
471
  export function files(connection, key, view, after, limit) {
506
472
  return pathOrdered(connection, 'e.path, e.revision', key, view, ' AND e.content IS NOT NULL AND e.revision IS NOT NULL', after, limit).map((row) => ({ path: text(row.path), revision: text(row.revision) }));
@@ -517,19 +483,18 @@ export function opened(connection) {
517
483
  facts[text(row.name)] = text(row.value);
518
484
  }
519
485
  return {
520
- rooms: connection.rows('SELECT locator, key, record FROM replica_rooms').map((row) => ({
486
+ rooms: connection.rows(HELD_RECORDS).map((row) => ({
521
487
  locator: text(row.locator),
522
488
  key: number(row.key),
523
489
  record: text(row.record),
524
490
  })),
525
491
  keys: connection
526
- .rows('SELECT key, locator, transfer, rederiving, searching FROM replica_keys')
492
+ .rows('SELECT key, locator, transfer, rederiving FROM replica_keys')
527
493
  .map((row) => ({
528
494
  key: number(row.key),
529
495
  locator: text(row.locator),
530
496
  transfer: text(row.transfer),
531
497
  rederiving: cursor(row.rederiving),
532
- searching: cursor(row.searching),
533
498
  })),
534
499
  facts,
535
500
  presentation: connection.rows('SELECT app, value FROM replica_presentation').map((row) => ({
@@ -556,5 +521,4 @@ export function ended(connection) {
556
521
  if (table !== undefined)
557
522
  connection.run(`DELETE FROM ${table}`);
558
523
  }
559
- unindexAll(connection);
560
524
  }
package/dist/tables.d.ts CHANGED
@@ -1,13 +1,11 @@
1
1
  import { type QueryAnswer, type QueryRoom } from './compile.js';
2
2
  import type { Composed } from './collection.js';
3
- import { type SearchAsk } from './fulltext.js';
3
+ import type { UnsentWork } from './durability.js';
4
4
  import { type ConversationWrite, type HeldConversation, type MessageWindow } from './messages.js';
5
5
  import type { Plan } from './query.js';
6
- import type { SearchWindow } from './search.js';
7
6
  import { type Committed, type CountedRoom, type HeldEntry, type ReplicaOpened, type Referrer, type RoomCommit, type StoredEntry, type TypedEntry, type View } from './stored.js';
8
7
  export type { Committed, CountedRoom, HeldEntry, OverlayEntry, ReplicaOpened, Referrer, RoomCommit, StoredEntry, TypedEntry, View, } from './stored.js';
9
8
  export type { QueryAnswer, QueryRoom } from './compile.js';
10
- export type { SearchAsk } from './fulltext.js';
11
9
  export type { ConversationWrite, HeldConversation, MessageWindow } from './messages.js';
12
10
  export type Value = string | number | bigint | Uint8Array | null;
13
11
  export type Row = Readonly<Record<string, Value>>;
@@ -36,6 +34,10 @@ export interface SqliteStatement {
36
34
  }
37
35
  export interface SqliteDatabase {
38
36
  readonly pointer: number;
37
+ createFunction(name: string, run: (context: number, ...values: Value[]) => Value, options: {
38
+ readonly arity: number;
39
+ readonly deterministic: true;
40
+ }): unknown;
39
41
  exec(options: {
40
42
  readonly sql: string;
41
43
  readonly bind: readonly Value[];
@@ -107,7 +109,6 @@ export type AuthoredWrite = {
107
109
  readonly writes: readonly AuthoredRows[];
108
110
  readonly files: readonly StoredFile[];
109
111
  readonly whole: boolean;
110
- readonly discards?: readonly string[];
111
112
  };
112
113
  export interface RuntimeRequests {
113
114
  readonly 'authored.queues': Asked<Nothing, HeldQueues>;
@@ -115,6 +116,7 @@ export interface RuntimeRequests {
115
116
  readonly 'authored.chatDrafts': Asked<Nothing, readonly string[]>;
116
117
  readonly 'authored.calls': Asked<Nothing, readonly string[]>;
117
118
  readonly 'authored.fences': Asked<Nothing, readonly string[]>;
119
+ readonly 'authored.unsent': Asked<Nothing, readonly UnsentWork[]>;
118
120
  readonly 'authored.fact': Asked<{
119
121
  readonly name: AuthoredFact;
120
122
  }, string | null>;
@@ -175,7 +177,6 @@ export interface RuntimeRequests {
175
177
  readonly key: number;
176
178
  readonly view: View;
177
179
  readonly targets: readonly string[];
178
- readonly kinds: readonly string[];
179
180
  }, readonly Referrer[]>;
180
181
  readonly 'replica.files': Asked<{
181
182
  readonly key: number;
@@ -200,7 +201,6 @@ export interface RuntimeRequests {
200
201
  readonly 'replica.counts': Asked<{
201
202
  readonly rooms: readonly CountedRoom[];
202
203
  }, readonly number[]>;
203
- readonly 'replica.search': Asked<SearchAsk, SearchWindow>;
204
204
  readonly 'replica.stage': Asked<{
205
205
  readonly locator: string;
206
206
  readonly transfer: string;
@@ -294,9 +294,11 @@ export interface RuntimeRequests {
294
294
  readonly conversation: string;
295
295
  readonly limit: number;
296
296
  readonly before: readonly [string, string] | null;
297
+ readonly phrase: string | null;
297
298
  }, MessageWindow>;
298
299
  readonly 'conversation.count': Asked<{
299
300
  readonly conversation: string;
301
+ readonly phrase: string | null;
300
302
  }, number>;
301
303
  readonly 'conversation.turn': Asked<{
302
304
  readonly conversation: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"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"}